@cjhyy/code-shell-core 0.7.1 → 0.8.1
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 +36 -23
- package/dist/agent/agent-definition-registry.d.ts +2 -2
- package/dist/agent/agent-definition-registry.js +47 -10
- package/dist/agent/agent-definition.d.ts +5 -0
- package/dist/agent/agent-definition.js +14 -0
- package/dist/automation/index.d.ts +7 -4
- package/dist/automation/index.js +4 -2
- package/dist/automation/runner.js +3 -1
- package/dist/automation/scheduler.d.ts +57 -1
- package/dist/automation/scheduler.js +123 -23
- package/dist/automation/store.d.ts +6 -2
- package/dist/automation/store.js +7 -3
- package/dist/capabilities/index.d.ts +109 -0
- package/dist/capabilities/index.js +80 -0
- package/dist/capability-control/disabled-lists.d.ts +2 -1
- package/dist/capability-control/disabled-lists.js +3 -5
- package/dist/capability-control/overlay.d.ts +14 -1
- package/dist/capability-control/overlay.js +40 -0
- package/dist/capability-control/service.js +6 -4
- package/dist/cli/agent-server-stdio.d.ts +1 -1
- package/dist/cli/agent-server-stdio.js +66 -6
- package/dist/cli/agent-server-tcp.js +7 -3
- package/dist/context/compaction.d.ts +39 -3
- package/dist/context/compaction.js +151 -39
- package/dist/context/manager.d.ts +17 -1
- package/dist/context/manager.js +36 -1
- package/dist/credentials/access.d.ts +3 -1
- package/dist/credentials/access.js +24 -3
- package/dist/credentials/index.d.ts +1 -1
- package/dist/credentials/index.js +1 -1
- package/dist/credentials/oauth.d.ts +4 -1
- package/dist/credentials/oauth.js +14 -0
- package/dist/credentials/store.d.ts +15 -1
- package/dist/credentials/store.js +17 -4
- package/dist/credentials/types.d.ts +24 -0
- package/dist/credentials/use-credential-tool.js +15 -1
- package/dist/engine/auxiliary-pipeline.d.ts +40 -0
- package/dist/engine/auxiliary-pipeline.js +181 -0
- package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
- package/dist/{settings → engine}/disk-defaults.js +5 -2
- package/dist/engine/dynamic-tool-defs.d.ts +4 -0
- package/dist/engine/dynamic-tool-defs.js +4 -0
- package/dist/engine/engine.d.ts +254 -195
- package/dist/engine/engine.js +1812 -2041
- package/dist/engine/file-history-hook.d.ts +11 -0
- package/dist/engine/file-history-hook.js +31 -0
- package/dist/engine/goal-judge-context.d.ts +9 -0
- package/dist/engine/goal-judge-context.js +234 -0
- package/dist/engine/injected-context-cache.d.ts +6 -0
- package/dist/engine/injected-context-cache.js +13 -0
- package/dist/engine/input-attachments.d.ts +1 -1
- package/dist/engine/model-facade.d.ts +3 -3
- package/dist/engine/model-facade.js +15 -14
- package/dist/engine/permission-controller.d.ts +55 -0
- package/dist/engine/permission-controller.js +148 -0
- package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
- package/dist/engine/prompt-cache-diagnostics.js +178 -0
- package/dist/engine/run-accounting.d.ts +41 -0
- package/dist/engine/run-accounting.js +126 -0
- package/dist/engine/run-context.d.ts +44 -0
- package/dist/engine/run-context.js +88 -0
- package/dist/engine/run-environment.d.ts +30 -0
- package/dist/engine/run-environment.js +77 -0
- package/dist/engine/run-finalize.d.ts +58 -0
- package/dist/engine/run-finalize.js +245 -0
- package/dist/engine/run-goal.d.ts +58 -0
- package/dist/engine/run-goal.js +188 -0
- package/dist/engine/run-image-input.d.ts +1 -1
- package/dist/engine/run-image-input.js +5 -3
- package/dist/engine/run-session-open.d.ts +41 -0
- package/dist/engine/run-session-open.js +186 -0
- package/dist/engine/run-setup.d.ts +42 -0
- package/dist/engine/run-setup.js +58 -0
- package/dist/engine/run-tooling.d.ts +125 -0
- package/dist/engine/run-tooling.js +283 -0
- package/dist/engine/run-types.d.ts +139 -0
- package/dist/engine/run-types.js +12 -0
- package/dist/engine/run-workspace.d.ts +50 -0
- package/dist/engine/run-workspace.js +114 -0
- package/dist/engine/steer-queue.d.ts +1 -1
- package/dist/engine/subagent-spawner.d.ts +32 -0
- package/dist/engine/subagent-spawner.js +287 -0
- package/dist/engine/tool-summary.d.ts +2 -2
- package/dist/engine/tool-summary.js +2 -2
- package/dist/engine/turn-loop.d.ts +49 -10
- package/dist/engine/turn-loop.js +370 -104
- package/dist/engine/types.d.ts +30 -3
- package/dist/engine/types.js +1 -1
- package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +76 -4
- package/dist/goal/lifecycle.js +482 -0
- package/dist/hooks/events.d.ts +24 -10
- package/dist/hooks/goal-stop-hook.d.ts +17 -28
- package/dist/hooks/goal-stop-hook.js +110 -465
- package/dist/hooks/registry.js +1 -1
- package/dist/index.d.ts +48 -108
- package/dist/index.extension.d.ts +51 -0
- package/dist/index.extension.js +39 -0
- package/dist/index.internal.d.ts +86 -0
- package/dist/index.internal.js +92 -0
- package/dist/index.js +34 -123
- package/dist/links/cli.d.ts +48 -0
- package/dist/links/cli.js +617 -0
- package/dist/links/http.d.ts +40 -0
- package/dist/links/http.js +166 -0
- package/dist/links/index.d.ts +4 -0
- package/dist/links/index.js +3 -0
- package/dist/links/link-action-tool.d.ts +5 -0
- package/dist/links/link-action-tool.js +241 -0
- package/dist/links/providers.d.ts +8 -0
- package/dist/links/providers.js +665 -0
- package/dist/links/types.d.ts +44 -0
- package/dist/llm/client-base.d.ts +7 -0
- package/dist/llm/client-base.js +60 -0
- package/dist/llm/model-pool.d.ts +1 -1
- package/dist/llm/model-pool.js +1 -1
- package/dist/llm/providers/anthropic.d.ts +1 -0
- package/dist/llm/providers/anthropic.js +9 -0
- package/dist/llm/providers/openai.d.ts +1 -0
- package/dist/llm/providers/openai.js +17 -0
- package/dist/model-catalog/index.js +15 -2
- package/dist/model-catalog/resolve.d.ts +13 -1
- package/dist/model-catalog/resolve.js +37 -2
- package/dist/model-catalog/types.d.ts +74 -48
- package/dist/model-catalog/types.js +16 -5
- package/dist/model-catalog/upsert.d.ts +3 -1
- package/dist/model-catalog/upsert.js +9 -0
- package/dist/onboarding.d.ts +0 -1
- package/dist/onboarding.js +1 -22
- package/dist/panel-apps/bindings.d.ts +24 -0
- package/dist/panel-apps/bindings.js +69 -0
- package/dist/panel-apps/github-archive.d.ts +21 -0
- package/dist/panel-apps/github-archive.js +98 -0
- package/dist/panel-apps/index.d.ts +4 -0
- package/dist/panel-apps/index.js +4 -0
- package/dist/panel-apps/installer.d.ts +68 -0
- package/dist/panel-apps/installer.js +622 -0
- package/dist/panel-apps/manifest.d.ts +364 -0
- package/dist/panel-apps/manifest.js +189 -0
- package/dist/panel-apps/paths.d.ts +13 -0
- package/dist/panel-apps/paths.js +38 -0
- package/dist/panel-apps/registry.d.ts +51 -0
- package/dist/panel-apps/registry.js +99 -0
- package/dist/panel-apps/runtime.d.ts +80 -0
- package/dist/panel-apps/runtime.js +154 -0
- package/dist/plugins/gitOps.js +8 -1
- package/dist/plugins/installedPlugins.d.ts +2 -1
- package/dist/plugins/installedPlugins.js +146 -8
- package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
- package/dist/plugins/installer/codex/convertAgents.js +62 -8
- package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
- package/dist/plugins/installer/codex/convertCommands.js +35 -12
- package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
- package/dist/plugins/installer/codex/convertHooks.js +82 -0
- package/dist/plugins/installer/codex/convertSkills.js +41 -6
- package/dist/plugins/installer/install.d.ts +7 -1
- package/dist/plugins/installer/install.js +21 -87
- package/dist/plugins/installer/installFromArchive.d.ts +26 -4
- package/dist/plugins/installer/installFromArchive.js +44 -27
- package/dist/plugins/installer/installFromNpm.d.ts +31 -0
- package/dist/plugins/installer/installFromNpm.js +273 -0
- package/dist/plugins/installer/loadPluginAgents.js +17 -4
- package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
- package/dist/plugins/installer/loadPluginMcp.js +245 -35
- package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
- package/dist/plugins/installer/normalizeManifest.js +306 -0
- package/dist/plugins/installer/npmTar.d.ts +13 -0
- package/dist/plugins/installer/npmTar.js +321 -0
- package/dist/plugins/installer/parseSource.d.ts +11 -0
- package/dist/plugins/installer/parseSource.js +48 -0
- package/dist/plugins/installer/preview.d.ts +101 -0
- package/dist/plugins/installer/preview.js +336 -0
- package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
- package/dist/plugins/installer/projectPluginSource.js +140 -0
- package/dist/plugins/installer/types.d.ts +775 -0
- package/dist/plugins/installer/types.js +100 -0
- package/dist/plugins/installer/unzip.d.ts +11 -0
- package/dist/plugins/installer/unzip.js +123 -9
- package/dist/plugins/installer/update.d.ts +2 -2
- package/dist/plugins/installer/update.js +43 -4
- package/dist/plugins/loadPluginHooks.d.ts +19 -2
- package/dist/plugins/loadPluginHooks.js +97 -86
- package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
- package/dist/plugins/pluginAutomationTemplates.js +50 -0
- package/dist/plugins/pluginCatalog.d.ts +45 -0
- package/dist/plugins/pluginCatalog.js +87 -0
- package/dist/plugins/pluginCommandHook.d.ts +6 -0
- package/dist/plugins/pluginCommandHook.js +25 -8
- package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
- package/dist/plugins/pluginCommandsLoader.js +181 -7
- package/dist/plugins/pluginContent.d.ts +10 -1
- package/dist/plugins/pluginContent.js +87 -30
- package/dist/plugins/pluginHookApproval.d.ts +30 -0
- package/dist/plugins/pluginHookApproval.js +160 -0
- package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
- package/dist/plugins/pluginHookIntegrity.js +361 -0
- package/dist/plugins/pluginInstaller.js +71 -12
- package/dist/plugins/pluginMcpApproval.d.ts +19 -0
- package/dist/plugins/pluginMcpApproval.js +110 -0
- package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
- package/dist/plugins/pluginMcpIntegrity.js +74 -0
- package/dist/plugins/types.d.ts +30 -0
- package/dist/plugins/varRewrite.d.ts +9 -5
- package/dist/plugins/varRewrite.js +26 -17
- package/dist/preset/index.d.ts +11 -8
- package/dist/preset/index.js +62 -203
- package/dist/product/define.js +9 -3
- package/dist/product/types.d.ts +0 -2
- package/dist/profile/activation.d.ts +36 -0
- package/dist/profile/activation.js +57 -0
- package/dist/profile/catalog-store.d.ts +77 -0
- package/dist/profile/catalog-store.js +346 -0
- package/dist/profile/catalog.d.ts +54 -0
- package/dist/profile/catalog.js +152 -0
- package/dist/profile/index.d.ts +7 -0
- package/dist/profile/index.js +7 -0
- package/dist/profile/requirements.d.ts +76 -0
- package/dist/profile/requirements.js +117 -0
- package/dist/profile/resolve.d.ts +11 -0
- package/dist/profile/resolve.js +41 -0
- package/dist/profile/store.d.ts +17 -0
- package/dist/profile/store.js +167 -0
- package/dist/profile/types.d.ts +321 -0
- package/dist/profile/types.js +104 -0
- package/dist/prompt/composer.d.ts +46 -7
- package/dist/prompt/composer.js +78 -48
- package/dist/prompt/instruction-scanner.d.ts +6 -5
- package/dist/prompt/instruction-scanner.js +8 -23
- package/dist/prompt/section-loader.d.ts +2 -2
- package/dist/prompt/section-loader.js +7 -4
- package/dist/prompt/sections/browser.md +10 -9
- package/dist/prompt/sections/harness-base.md +9 -0
- package/dist/protocol/chat-session-manager.d.ts +64 -1
- package/dist/protocol/chat-session-manager.js +104 -0
- package/dist/protocol/chat-session.d.ts +61 -10
- package/dist/protocol/chat-session.js +135 -25
- package/dist/protocol/client.d.ts +33 -3
- package/dist/protocol/client.js +96 -5
- package/dist/protocol/index.d.ts +2 -2
- package/dist/protocol/index.js +2 -2
- package/dist/protocol/mobile-remote-types.d.ts +406 -0
- package/dist/protocol/mobile-remote-types.js +1 -0
- package/dist/protocol/server.d.ts +127 -3
- package/dist/protocol/server.js +1309 -182
- package/dist/protocol/types.d.ts +152 -34
- package/dist/protocol/types.js +16 -0
- package/dist/run/ArtifactTracker.d.ts +6 -1
- package/dist/run/ArtifactTracker.js +29 -21
- package/dist/run/EngineRunner.d.ts +2 -0
- package/dist/run/EngineRunner.js +1 -0
- package/dist/run/RunManager.d.ts +26 -0
- package/dist/run/RunManager.js +82 -11
- package/dist/run/factory.d.ts +3 -0
- package/dist/run/factory.js +2 -0
- package/dist/runtime/safe-spawn.d.ts +6 -0
- package/dist/runtime/safe-spawn.js +8 -13
- package/dist/services/auto-dream.d.ts +13 -1
- package/dist/services/auto-dream.js +56 -8
- package/dist/services/dream-consolidation.js +10 -1
- package/dist/services/memory-orchestrator.js +6 -2
- package/dist/services/oauth.js +4 -1
- package/dist/services/session-memory.d.ts +4 -4
- package/dist/services/session-memory.js +13 -10
- package/dist/session/memory.d.ts +26 -7
- package/dist/session/memory.js +79 -21
- package/dist/session/session-manager.d.ts +182 -28
- package/dist/session/session-manager.js +910 -130
- package/dist/session/session-message.d.ts +22 -0
- package/dist/session/session-message.js +1 -0
- package/dist/session/transcript.d.ts +46 -5
- package/dist/session/transcript.js +159 -3
- package/dist/settings/feature-flags.d.ts +40 -0
- package/dist/settings/feature-flags.js +40 -0
- package/dist/settings/manager.d.ts +39 -1
- package/dist/settings/manager.js +102 -41
- package/dist/settings/migrate-config.js +4 -2
- package/dist/settings/schema.d.ts +511 -177
- package/dist/settings/schema.js +98 -25
- package/dist/skills/scanner.d.ts +6 -2
- package/dist/skills/scanner.js +160 -9
- package/dist/sources/adapter.d.ts +14 -0
- package/dist/sources/adapter.js +7 -0
- package/dist/sources/adapters/local-files.d.ts +10 -0
- package/dist/sources/adapters/local-files.js +127 -0
- package/dist/sources/adapters/mcp-resource.d.ts +17 -0
- package/dist/sources/adapters/mcp-resource.js +41 -0
- package/dist/sources/adapters/mock.d.ts +3 -0
- package/dist/sources/adapters/mock.js +29 -0
- package/dist/sources/binding.d.ts +6 -0
- package/dist/sources/binding.js +24 -0
- package/dist/sources/catalog.d.ts +6 -0
- package/dist/sources/catalog.js +64 -0
- package/dist/sources/context-summary.d.ts +8 -0
- package/dist/sources/context-summary.js +13 -0
- package/dist/sources/credential-status.d.ts +2 -0
- package/dist/sources/credential-status.js +13 -0
- package/dist/sources/index.d.ts +10 -0
- package/dist/sources/index.js +10 -0
- package/dist/sources/resolve.d.ts +28 -0
- package/dist/sources/resolve.js +47 -0
- package/dist/sources/truncate-utf8.d.ts +7 -0
- package/dist/sources/truncate-utf8.js +18 -0
- package/dist/sources/types.d.ts +71 -0
- package/dist/sources/types.js +26 -0
- package/dist/testing/fetch-stub.d.ts +32 -0
- package/dist/testing/fetch-stub.js +24 -0
- package/dist/themes/image.d.ts +18 -0
- package/dist/themes/image.js +117 -0
- package/dist/themes/index.d.ts +4 -0
- package/dist/themes/index.js +4 -0
- package/dist/themes/installer.d.ts +50 -0
- package/dist/themes/installer.js +290 -0
- package/dist/themes/manifest.d.ts +102 -0
- package/dist/themes/manifest.js +86 -0
- package/dist/themes/paths.d.ts +14 -0
- package/dist/themes/paths.js +33 -0
- package/dist/tool-system/browser-bridge.d.ts +53 -11
- package/dist/tool-system/browser-bridge.js +8 -9
- package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
- package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
- package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
- package/dist/tool-system/builtin/agent-notifications.js +291 -101
- package/dist/tool-system/builtin/agent-output-file.js +1 -3
- package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
- package/dist/tool-system/builtin/agent-progress.js +83 -0
- package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
- package/dist/tool-system/builtin/agent-registry.js +178 -9
- package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
- package/dist/tool-system/builtin/agent.d.ts +2 -0
- package/dist/tool-system/builtin/agent.js +274 -33
- package/dist/tool-system/builtin/background-jobs.d.ts +55 -2
- package/dist/tool-system/builtin/background-jobs.js +96 -4
- package/dist/tool-system/builtin/background-work.d.ts +6 -0
- package/dist/tool-system/builtin/background-work.js +8 -1
- package/dist/tool-system/builtin/bash.js +5 -2
- package/dist/tool-system/builtin/browser-tools.d.ts +6 -3
- package/dist/tool-system/builtin/browser-tools.js +89 -23
- package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
- package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
- package/dist/tool-system/builtin/edit.js +2 -6
- package/dist/tool-system/builtin/file-cache.d.ts +2 -0
- package/dist/tool-system/builtin/file-cache.js +4 -0
- package/dist/tool-system/builtin/generate-image.js +17 -10
- package/dist/tool-system/builtin/generate-video.js +26 -7
- package/dist/tool-system/builtin/grep.js +2 -2
- package/dist/tool-system/builtin/image-uploader.js +7 -1
- package/dist/tool-system/builtin/index.d.ts +32 -7
- package/dist/tool-system/builtin/index.js +237 -167
- package/dist/tool-system/builtin/memory.d.ts +6 -0
- package/dist/tool-system/builtin/memory.js +36 -15
- package/dist/tool-system/builtin/panel.d.ts +9 -0
- package/dist/tool-system/builtin/panel.js +314 -0
- package/dist/tool-system/builtin/read.js +5 -1
- package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
- package/dist/tool-system/builtin/send-message-to-session.js +67 -0
- package/dist/tool-system/builtin/sources.d.ts +8 -0
- package/dist/tool-system/builtin/sources.js +137 -0
- package/dist/tool-system/builtin/tool-search.js +7 -2
- package/dist/tool-system/builtin/update-automation-memory.js +2 -0
- package/dist/tool-system/builtin/web-fetch.js +17 -13
- package/dist/tool-system/builtin/web-search.js +1 -3
- package/dist/tool-system/capability-module.d.ts +93 -0
- package/dist/tool-system/capability-module.js +53 -0
- package/dist/tool-system/context.d.ts +77 -19
- package/dist/tool-system/executor.js +75 -50
- package/dist/tool-system/external-tool-exposure.d.ts +60 -0
- package/dist/tool-system/external-tool-exposure.js +304 -0
- package/dist/tool-system/mcp-manager.d.ts +11 -1
- package/dist/tool-system/mcp-manager.js +19 -4
- package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
- package/dist/tool-system/mcp-tool-policy.js +34 -0
- package/dist/tool-system/panel-bridge.d.ts +53 -0
- package/dist/tool-system/panel-bridge.js +1 -0
- package/dist/tool-system/path-policy.js +99 -2
- package/dist/tool-system/permission.d.ts +26 -0
- package/dist/tool-system/permission.js +46 -0
- package/dist/tool-system/registry.d.ts +12 -1
- package/dist/tool-system/registry.js +31 -7
- package/dist/tool-system/sandbox/index.js +3 -8
- package/dist/tool-system/sandbox/seatbelt.js +2 -6
- package/dist/tool-system/session-tool-host.d.ts +139 -0
- package/dist/tool-system/session-tool-host.js +167 -0
- package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
- package/dist/tool-system/testing/tool-registry-harness.js +51 -0
- package/dist/tool-system/validation.d.ts +14 -7
- package/dist/tool-system/validation.js +701 -7
- package/dist/types.d.ts +186 -20
- package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
- package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
- package/dist/utils/file-mutex.d.ts +65 -0
- package/dist/utils/file-mutex.js +145 -0
- package/dist/utils/json.d.ts +2 -4
- package/dist/utils/json.js +2 -4
- package/dist/utils/lockfile.d.ts +30 -1
- package/dist/utils/lockfile.js +2 -2
- package/dist/utils/secret-scrubber.d.ts +8 -0
- package/dist/utils/secret-scrubber.js +227 -0
- package/dist/utils/toolDisplay.js +1 -1
- package/package.json +20 -5
- package/THIRD_PARTY_NOTICES.md +0 -206
- package/dist/arena/arena.d.ts +0 -45
- package/dist/arena/arena.js +0 -362
- package/dist/arena/context/context-tools.d.ts +0 -16
- package/dist/arena/context/context-tools.js +0 -272
- package/dist/arena/context/within-root.d.ts +0 -7
- package/dist/arena/context/within-root.js +0 -15
- package/dist/arena/detect-mode.d.ts +0 -20
- package/dist/arena/detect-mode.js +0 -78
- package/dist/arena/digest-builder.d.ts +0 -25
- package/dist/arena/digest-builder.js +0 -120
- package/dist/arena/index.d.ts +0 -29
- package/dist/arena/index.js +0 -29
- package/dist/arena/iterate/convergence.d.ts +0 -25
- package/dist/arena/iterate/convergence.js +0 -103
- package/dist/arena/iterate/formats/index.d.ts +0 -22
- package/dist/arena/iterate/formats/index.js +0 -283
- package/dist/arena/iterate/index.d.ts +0 -11
- package/dist/arena/iterate/index.js +0 -9
- package/dist/arena/iterate/iterative-arena.d.ts +0 -23
- package/dist/arena/iterate/iterative-arena.js +0 -237
- package/dist/arena/iterate/parse.d.ts +0 -42
- package/dist/arena/iterate/parse.js +0 -123
- package/dist/arena/iterate/phases/argue.d.ts +0 -22
- package/dist/arena/iterate/phases/argue.js +0 -165
- package/dist/arena/iterate/phases/revise.d.ts +0 -16
- package/dist/arena/iterate/phases/revise.js +0 -62
- package/dist/arena/iterate/phases/tournament.d.ts +0 -34
- package/dist/arena/iterate/phases/tournament.js +0 -113
- package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
- package/dist/arena/iterate/tools/web-tools.js +0 -54
- package/dist/arena/iterate/types.d.ts +0 -152
- package/dist/arena/iterate/types.js +0 -8
- package/dist/arena/ledger.d.ts +0 -47
- package/dist/arena/ledger.js +0 -159
- package/dist/arena/lenses/architecture.d.ts +0 -5
- package/dist/arena/lenses/architecture.js +0 -22
- package/dist/arena/lenses/engineering.d.ts +0 -5
- package/dist/arena/lenses/engineering.js +0 -22
- package/dist/arena/lenses/general.d.ts +0 -5
- package/dist/arena/lenses/general.js +0 -20
- package/dist/arena/lenses/index.d.ts +0 -16
- package/dist/arena/lenses/index.js +0 -47
- package/dist/arena/lenses/product.d.ts +0 -5
- package/dist/arena/lenses/product.js +0 -22
- package/dist/arena/model-presets.d.ts +0 -23
- package/dist/arena/model-presets.js +0 -44
- package/dist/arena/phases/adjudication.d.ts +0 -25
- package/dist/arena/phases/adjudication.js +0 -142
- package/dist/arena/phases/build-consensus.d.ts +0 -30
- package/dist/arena/phases/build-consensus.js +0 -85
- package/dist/arena/phases/claim-registry.d.ts +0 -26
- package/dist/arena/phases/claim-registry.js +0 -60
- package/dist/arena/phases/cross-review.d.ts +0 -47
- package/dist/arena/phases/cross-review.js +0 -224
- package/dist/arena/phases/debate-rounds.d.ts +0 -28
- package/dist/arena/phases/debate-rounds.js +0 -161
- package/dist/arena/phases/participant-research.d.ts +0 -39
- package/dist/arena/phases/participant-research.js +0 -316
- package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
- package/dist/arena/phases/planning-detail-expansion.js +0 -120
- package/dist/arena/planner.d.ts +0 -28
- package/dist/arena/planner.js +0 -312
- package/dist/arena/providers/docs.d.ts +0 -7
- package/dist/arena/providers/docs.js +0 -111
- package/dist/arena/providers/git.d.ts +0 -8
- package/dist/arena/providers/git.js +0 -174
- package/dist/arena/providers/index.d.ts +0 -32
- package/dist/arena/providers/index.js +0 -132
- package/dist/arena/providers/none.d.ts +0 -7
- package/dist/arena/providers/none.js +0 -11
- package/dist/arena/providers/repo.d.ts +0 -7
- package/dist/arena/providers/repo.js +0 -258
- package/dist/arena/render/session.d.ts +0 -17
- package/dist/arena/render/session.js +0 -190
- package/dist/arena/render/terminal.d.ts +0 -34
- package/dist/arena/render/terminal.js +0 -286
- package/dist/arena/strategies/discussion.d.ts +0 -25
- package/dist/arena/strategies/discussion.js +0 -143
- package/dist/arena/strategies/index.d.ts +0 -15
- package/dist/arena/strategies/index.js +0 -28
- package/dist/arena/strategies/language-wrapper.d.ts +0 -17
- package/dist/arena/strategies/language-wrapper.js +0 -102
- package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
- package/dist/arena/strategies/lens-wrapper.js +0 -236
- package/dist/arena/strategies/planning.d.ts +0 -30
- package/dist/arena/strategies/planning.js +0 -225
- package/dist/arena/strategies/review.d.ts +0 -26
- package/dist/arena/strategies/review.js +0 -168
- package/dist/arena/strategies/utils.d.ts +0 -36
- package/dist/arena/strategies/utils.js +0 -603
- package/dist/arena/tools/selector.d.ts +0 -17
- package/dist/arena/tools/selector.js +0 -61
- package/dist/arena/transitions.d.ts +0 -53
- package/dist/arena/transitions.js +0 -97
- package/dist/arena/types.d.ts +0 -518
- package/dist/arena/types.js +0 -27
- package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
- package/dist/cc-orchestrator/agent-adapter.js +0 -143
- package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
- package/dist/cc-orchestrator/cc-capability.js +0 -53
- package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
- package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
- package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
- package/dist/cc-orchestrator/codex-session-history.js +0 -247
- package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
- package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
- package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
- package/dist/cc-orchestrator/external-agent-changes.js +0 -231
- package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
- package/dist/cc-orchestrator/external-agent-driver.js +0 -284
- package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
- package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
- package/dist/cc-orchestrator/index.d.ts +0 -8
- package/dist/cc-orchestrator/index.js +0 -8
- package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
- package/dist/cc-orchestrator/relevance-judge.js +0 -29
- package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
- package/dist/cc-orchestrator/session-discovery.js +0 -125
- package/dist/cc-orchestrator/session-history.d.ts +0 -54
- package/dist/cc-orchestrator/session-history.js +0 -150
- package/dist/cron/cron-runtime.d.ts +0 -2
- package/dist/cron/cron-runtime.js +0 -2
- package/dist/cron/cron-store.d.ts +0 -2
- package/dist/cron/cron-store.js +0 -2
- package/dist/cron/scheduler.d.ts +0 -7
- package/dist/cron/scheduler.js +0 -7
- package/dist/engine/goal.js +0 -206
- package/dist/external-agents/config.d.ts +0 -2
- package/dist/external-agents/config.js +0 -15
- package/dist/external-agents/types.d.ts +0 -31
- package/dist/git/parse-log.d.ts +0 -13
- package/dist/git/parse-log.js +0 -21
- package/dist/git/utils.d.ts +0 -49
- package/dist/git/utils.js +0 -161
- package/dist/git/worktree/crud.d.ts +0 -72
- package/dist/git/worktree/crud.js +0 -235
- package/dist/git/worktree/diff.d.ts +0 -14
- package/dist/git/worktree/diff.js +0 -82
- package/dist/git/worktree/git-exec.d.ts +0 -7
- package/dist/git/worktree/git-exec.js +0 -87
- package/dist/git/worktree/index.d.ts +0 -5
- package/dist/git/worktree/index.js +0 -5
- package/dist/git/worktree/query.d.ts +0 -43
- package/dist/git/worktree/query.js +0 -128
- package/dist/git/worktree/slug.d.ts +0 -11
- package/dist/git/worktree/slug.js +0 -58
- package/dist/git/worktree.d.ts +0 -1
- package/dist/git/worktree.js +0 -5
- package/dist/lsp/client.d.ts +0 -41
- package/dist/lsp/client.js +0 -186
- package/dist/lsp/manager.d.ts +0 -40
- package/dist/lsp/manager.js +0 -155
- package/dist/lsp/root-path.d.ts +0 -9
- package/dist/lsp/root-path.js +0 -12
- package/dist/lsp/servers.d.ts +0 -16
- package/dist/lsp/servers.js +0 -60
- package/dist/prompt/sections/coding.md +0 -35
- package/dist/quota/credentials.d.ts +0 -3
- package/dist/quota/credentials.js +0 -80
- package/dist/quota/index.d.ts +0 -36
- package/dist/quota/index.js +0 -155
- package/dist/quota/types.d.ts +0 -48
- package/dist/quota/types.js +0 -13
- package/dist/review/review-prompt.d.ts +0 -28
- package/dist/review/review-prompt.js +0 -81
- package/dist/state.d.ts +0 -160
- package/dist/state.js +0 -267
- package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
- package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
- package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
- package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
- package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
- package/dist/tool-system/builtin/apply-patch/index.js +0 -105
- package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
- package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
- package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
- package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
- package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
- package/dist/tool-system/builtin/apply-patch/types.js +0 -13
- package/dist/tool-system/builtin/arena.d.ts +0 -31
- package/dist/tool-system/builtin/arena.js +0 -416
- package/dist/tool-system/builtin/brief.d.ts +0 -6
- package/dist/tool-system/builtin/brief.js +0 -41
- package/dist/tool-system/builtin/check-quota.d.ts +0 -15
- package/dist/tool-system/builtin/check-quota.js +0 -34
- package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
- package/dist/tool-system/builtin/drive-claude-code.js +0 -698
- package/dist/tool-system/builtin/lsp.d.ts +0 -7
- package/dist/tool-system/builtin/lsp.js +0 -144
- package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
- package/dist/tool-system/builtin/notebook-edit.js +0 -127
- package/dist/tool-system/builtin/worktree.d.ts +0 -11
- package/dist/tool-system/builtin/worktree.js +0 -363
- /package/dist/{external-agents → links}/types.js +0 -0
- /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
- /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { SessionWorkspace } from "../../types.js";
|
|
2
|
-
import { type WorktreeDiffSummary } from "./diff.js";
|
|
3
|
-
export interface WorktreeWorkspaceOwner {
|
|
4
|
-
sessionId: string;
|
|
5
|
-
workspace?: SessionWorkspace;
|
|
6
|
-
}
|
|
7
|
-
export interface ListWorktreesFastOptions {
|
|
8
|
-
currentSessionId?: string;
|
|
9
|
-
workspaceOwners?: WorktreeWorkspaceOwner[];
|
|
10
|
-
owners?: WorktreeWorkspaceOwner[];
|
|
11
|
-
prefix?: string;
|
|
12
|
-
signal?: AbortSignal;
|
|
13
|
-
}
|
|
14
|
-
export interface ListWorktreesOptions extends ListWorktreesFastOptions {
|
|
15
|
-
includeDiffSummary?: boolean;
|
|
16
|
-
}
|
|
17
|
-
export interface WorktreeInfo {
|
|
18
|
-
path: string;
|
|
19
|
-
branch: string;
|
|
20
|
-
head: string;
|
|
21
|
-
isMain?: boolean;
|
|
22
|
-
isManaged?: boolean;
|
|
23
|
-
diff?: WorktreeDiffSummary;
|
|
24
|
-
occupiedBySessionIds?: string[];
|
|
25
|
-
occupiedByOtherSession?: boolean;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Find the canonical git root (resolves worktree -> main repo).
|
|
29
|
-
*/
|
|
30
|
-
export declare function findGitRoot(cwd: string, signal?: AbortSignal): Promise<string>;
|
|
31
|
-
export declare function findMainWorktreeRoot(cwd: string, signal?: AbortSignal): Promise<string>;
|
|
32
|
-
export declare function findWorktreeForBranch(cwd: string, branch: string, signal?: AbortSignal): Promise<string | undefined>;
|
|
33
|
-
export declare function assertBranchNotCheckedOut(cwd: string, branch: string, signal?: AbortSignal): Promise<void>;
|
|
34
|
-
export declare function branchExists(cwd: string, branch: string, signal?: AbortSignal): Promise<boolean>;
|
|
35
|
-
export declare function isGitWorktreeRoot(cwd: string, signal?: AbortSignal): Promise<boolean>;
|
|
36
|
-
export declare function currentBranch(cwd: string, signal?: AbortSignal): Promise<string | undefined>;
|
|
37
|
-
export declare function listWorktreesFast(cwd: string, opts?: ListWorktreesFastOptions): Promise<WorktreeInfo[]>;
|
|
38
|
-
/**
|
|
39
|
-
* List active worktrees. Kept for internal/test compatibility; use
|
|
40
|
-
* listWorktreesFast for UI lists that should not block on diff work.
|
|
41
|
-
*/
|
|
42
|
-
export declare function listWorktrees(cwd: string, opts?: ListWorktreesOptions): Promise<WorktreeInfo[]>;
|
|
43
|
-
export declare function ownersForWorktree(path: string, owners: WorktreeWorkspaceOwner[]): string[];
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { existsSync } from "node:fs";
|
|
2
|
-
import { dirname, join, resolve } from "node:path";
|
|
3
|
-
import { getWorktreeDiff } from "./diff.js";
|
|
4
|
-
import { execGit, gitOutput, normalizeBranchName } from "./git-exec.js";
|
|
5
|
-
import { isManagedWorktreeBranch } from "./slug.js";
|
|
6
|
-
/**
|
|
7
|
-
* Find the canonical git root (resolves worktree -> main repo).
|
|
8
|
-
*/
|
|
9
|
-
export async function findGitRoot(cwd, signal) {
|
|
10
|
-
return await findMainWorktreeRoot(cwd, signal);
|
|
11
|
-
}
|
|
12
|
-
export async function findMainWorktreeRoot(cwd, signal) {
|
|
13
|
-
const commonDir = (await execGit(cwd, ["rev-parse", "--path-format=absolute", "--git-common-dir"], 5000, signal)).trim();
|
|
14
|
-
return dirname(commonDir);
|
|
15
|
-
}
|
|
16
|
-
export async function findWorktreeForBranch(cwd, branch, signal) {
|
|
17
|
-
const normalized = normalizeBranchName(branch);
|
|
18
|
-
return (await listWorktreesFast(cwd, { signal })).find((entry) => entry.branch === normalized)
|
|
19
|
-
?.path;
|
|
20
|
-
}
|
|
21
|
-
export async function assertBranchNotCheckedOut(cwd, branch, signal) {
|
|
22
|
-
const existingPath = await findWorktreeForBranch(cwd, branch, signal);
|
|
23
|
-
if (existingPath) {
|
|
24
|
-
throw new Error(`branch ${normalizeBranchName(branch)} already checked out at ${existingPath}`);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
export async function branchExists(cwd, branch, signal) {
|
|
28
|
-
const out = await gitOutput(cwd, ["branch", "--list", normalizeBranchName(branch)], 10000, signal);
|
|
29
|
-
return (out?.trim().length ?? 0) > 0;
|
|
30
|
-
}
|
|
31
|
-
export async function isGitWorktreeRoot(cwd, signal) {
|
|
32
|
-
if (!existsSync(join(cwd, ".git")))
|
|
33
|
-
return false;
|
|
34
|
-
try {
|
|
35
|
-
const inside = (await execGit(cwd, ["rev-parse", "--is-inside-work-tree"], 5000, signal)).trim();
|
|
36
|
-
if (inside !== "true")
|
|
37
|
-
return false;
|
|
38
|
-
const topLevel = (await execGit(cwd, ["rev-parse", "--path-format=absolute", "--show-toplevel"], 5000, signal)).trim();
|
|
39
|
-
return resolve(topLevel) === resolve(cwd);
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
if (signal?.aborted)
|
|
43
|
-
throw error;
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
export async function currentBranch(cwd, signal) {
|
|
48
|
-
const branch = (await gitOutput(cwd, ["branch", "--show-current"], 5000, signal))?.trim();
|
|
49
|
-
return branch || undefined;
|
|
50
|
-
}
|
|
51
|
-
export async function listWorktreesFast(cwd, opts = {}) {
|
|
52
|
-
let raw;
|
|
53
|
-
try {
|
|
54
|
-
raw = (await execGit(cwd, ["worktree", "list", "--porcelain"], 10000, opts.signal)).trim();
|
|
55
|
-
}
|
|
56
|
-
catch (error) {
|
|
57
|
-
if (opts.signal?.aborted)
|
|
58
|
-
throw error;
|
|
59
|
-
return [];
|
|
60
|
-
}
|
|
61
|
-
if (!raw)
|
|
62
|
-
return [];
|
|
63
|
-
const entries = [];
|
|
64
|
-
let current = { path: "", branch: "", head: "" };
|
|
65
|
-
for (const line of raw.split("\n")) {
|
|
66
|
-
if (line.startsWith("worktree ")) {
|
|
67
|
-
if (current.path)
|
|
68
|
-
entries.push(current);
|
|
69
|
-
current = { path: line.slice(9), branch: "", head: "" };
|
|
70
|
-
}
|
|
71
|
-
else if (line.startsWith("HEAD ")) {
|
|
72
|
-
current.head = line.slice(5, 13);
|
|
73
|
-
}
|
|
74
|
-
else if (line.startsWith("branch ")) {
|
|
75
|
-
current.branch = normalizeBranchName(line.slice(7));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
if (current.path)
|
|
79
|
-
entries.push(current);
|
|
80
|
-
let mainRoot = "";
|
|
81
|
-
try {
|
|
82
|
-
mainRoot = await findMainWorktreeRoot(cwd, opts.signal);
|
|
83
|
-
}
|
|
84
|
-
catch (error) {
|
|
85
|
-
if (opts.signal?.aborted)
|
|
86
|
-
throw error;
|
|
87
|
-
mainRoot = entries[0]?.path ?? "";
|
|
88
|
-
}
|
|
89
|
-
const owners = opts.workspaceOwners ?? opts.owners ?? [];
|
|
90
|
-
return entries.map((entry) => {
|
|
91
|
-
const ownerIds = ownersForWorktree(entry.path, owners);
|
|
92
|
-
return {
|
|
93
|
-
...entry,
|
|
94
|
-
...(mainRoot ? { isMain: resolve(entry.path) === resolve(mainRoot) } : {}),
|
|
95
|
-
isManaged: Boolean(entry.branch) && isManagedWorktreeBranch(entry.branch, opts.prefix),
|
|
96
|
-
...(ownerIds.length > 0
|
|
97
|
-
? {
|
|
98
|
-
occupiedBySessionIds: ownerIds,
|
|
99
|
-
occupiedByOtherSession: ownerIds.some((id) => id !== opts.currentSessionId),
|
|
100
|
-
}
|
|
101
|
-
: {}),
|
|
102
|
-
};
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* List active worktrees. Kept for internal/test compatibility; use
|
|
107
|
-
* listWorktreesFast for UI lists that should not block on diff work.
|
|
108
|
-
*/
|
|
109
|
-
export async function listWorktrees(cwd, opts = {}) {
|
|
110
|
-
const entries = await listWorktreesFast(cwd, opts);
|
|
111
|
-
if (!opts.includeDiffSummary)
|
|
112
|
-
return entries;
|
|
113
|
-
return Promise.all(entries.map(async (entry) => ({
|
|
114
|
-
...entry,
|
|
115
|
-
diff: await getWorktreeDiff(entry.path),
|
|
116
|
-
})));
|
|
117
|
-
}
|
|
118
|
-
export function ownersForWorktree(path, owners) {
|
|
119
|
-
const target = resolve(path);
|
|
120
|
-
return owners
|
|
121
|
-
.filter((owner) => {
|
|
122
|
-
const workspace = owner.workspace;
|
|
123
|
-
if (!workspace)
|
|
124
|
-
return false;
|
|
125
|
-
return resolve(workspace.root) === target;
|
|
126
|
-
})
|
|
127
|
-
.map((owner) => owner.sessionId);
|
|
128
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export declare const DEFAULT_WORKTREE_BRANCH_PREFIX = "worktree/";
|
|
2
|
-
export declare const HISTORICAL_WORKTREE_BRANCH_PREFIX = "worktree/";
|
|
3
|
-
/**
|
|
4
|
-
* Validate worktree slug to prevent path traversal attacks.
|
|
5
|
-
*/
|
|
6
|
-
export declare function validateWorktreeSlug(slug: string): void;
|
|
7
|
-
export declare function normalizeWorktreeBranchPrefix(prefix?: string | undefined): string;
|
|
8
|
-
export declare function isValidWorktreeBranchPrefix(prefix: string): boolean;
|
|
9
|
-
export declare function applyPrefix(prefix: string | undefined, slug: string, sessionId: string): string;
|
|
10
|
-
export declare function managedBranchPrefixes(prefix?: string): string[];
|
|
11
|
-
export declare function isManagedWorktreeBranch(branch: string, prefix?: string): boolean;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
export const DEFAULT_WORKTREE_BRANCH_PREFIX = "worktree/";
|
|
2
|
-
export const HISTORICAL_WORKTREE_BRANCH_PREFIX = "worktree/";
|
|
3
|
-
/**
|
|
4
|
-
* Validate worktree slug to prevent path traversal attacks.
|
|
5
|
-
*/
|
|
6
|
-
export function validateWorktreeSlug(slug) {
|
|
7
|
-
if (slug.trim().length === 0)
|
|
8
|
-
throw new Error("Worktree slug cannot be empty");
|
|
9
|
-
if (slug.length > 64)
|
|
10
|
-
throw new Error("Worktree slug too long (max 64 chars)");
|
|
11
|
-
if (/[^a-zA-Z0-9._-]/.test(slug))
|
|
12
|
-
throw new Error("Worktree slug contains invalid characters");
|
|
13
|
-
if (slug.startsWith(".") || slug.includes(".."))
|
|
14
|
-
throw new Error("Worktree slug cannot start with '.' or contain '..'");
|
|
15
|
-
}
|
|
16
|
-
export function normalizeWorktreeBranchPrefix(prefix = DEFAULT_WORKTREE_BRANCH_PREFIX) {
|
|
17
|
-
const raw = (prefix ?? DEFAULT_WORKTREE_BRANCH_PREFIX).trim();
|
|
18
|
-
if (!isValidWorktreeBranchPrefix(raw)) {
|
|
19
|
-
throw new Error(`Invalid worktree branch prefix: ${prefix ?? ""}`);
|
|
20
|
-
}
|
|
21
|
-
return raw.endsWith("/") ? raw : `${raw}/`;
|
|
22
|
-
}
|
|
23
|
-
export function isValidWorktreeBranchPrefix(prefix) {
|
|
24
|
-
const raw = prefix.trim();
|
|
25
|
-
if (!raw)
|
|
26
|
-
return false;
|
|
27
|
-
if (raw.startsWith("/") || raw.includes("//"))
|
|
28
|
-
return false;
|
|
29
|
-
if (raw.includes("..") || raw.includes("@{"))
|
|
30
|
-
return false;
|
|
31
|
-
if (/[\x00-\x20~^:?*[\]\\]/.test(raw))
|
|
32
|
-
return false;
|
|
33
|
-
const withoutTrailingSlash = raw.endsWith("/") ? raw.slice(0, -1) : raw;
|
|
34
|
-
if (!withoutTrailingSlash)
|
|
35
|
-
return false;
|
|
36
|
-
return withoutTrailingSlash.split("/").every((part) => {
|
|
37
|
-
if (!part)
|
|
38
|
-
return false;
|
|
39
|
-
if (part.startsWith(".") || part.endsWith("."))
|
|
40
|
-
return false;
|
|
41
|
-
if (part.endsWith(".lock"))
|
|
42
|
-
return false;
|
|
43
|
-
return true;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
export function applyPrefix(prefix, slug, sessionId) {
|
|
47
|
-
validateWorktreeSlug(slug);
|
|
48
|
-
return `${normalizeWorktreeBranchPrefix(prefix)}${slug}-${sessionId.slice(0, 8)}`;
|
|
49
|
-
}
|
|
50
|
-
export function managedBranchPrefixes(prefix) {
|
|
51
|
-
const configured = normalizeWorktreeBranchPrefix(prefix);
|
|
52
|
-
return configured === HISTORICAL_WORKTREE_BRANCH_PREFIX
|
|
53
|
-
? [configured]
|
|
54
|
-
: [configured, HISTORICAL_WORKTREE_BRANCH_PREFIX];
|
|
55
|
-
}
|
|
56
|
-
export function isManagedWorktreeBranch(branch, prefix) {
|
|
57
|
-
return managedBranchPrefixes(prefix).some((candidate) => branch.startsWith(candidate));
|
|
58
|
-
}
|
package/dist/git/worktree.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./worktree/index.js";
|
package/dist/git/worktree.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
// Compatibility barrel for the pre-split worktree module. The split made the
|
|
2
|
-
// query/create APIs async because they now share the async git executor; all
|
|
3
|
-
// in-repo callers await them, so this barrel intentionally does not add sync
|
|
4
|
-
// wrappers.
|
|
5
|
-
export * from "./worktree/index.js";
|
package/dist/lsp/client.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LSP client — JSON-RPC over stdio communication with language servers.
|
|
3
|
-
*/
|
|
4
|
-
import { EventEmitter } from "node:events";
|
|
5
|
-
export interface LSPRequest {
|
|
6
|
-
method: string;
|
|
7
|
-
params?: Record<string, unknown>;
|
|
8
|
-
}
|
|
9
|
-
export interface LSPResponse {
|
|
10
|
-
id: number;
|
|
11
|
-
result?: unknown;
|
|
12
|
-
error?: {
|
|
13
|
-
code: number;
|
|
14
|
-
message: string;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
export interface LSPNotification {
|
|
18
|
-
method: string;
|
|
19
|
-
params?: Record<string, unknown>;
|
|
20
|
-
}
|
|
21
|
-
export declare class LSPClient extends EventEmitter {
|
|
22
|
-
private readonly command;
|
|
23
|
-
private readonly args;
|
|
24
|
-
private readonly cwd?;
|
|
25
|
-
private process;
|
|
26
|
-
private nextId;
|
|
27
|
-
private pending;
|
|
28
|
-
private buffer;
|
|
29
|
-
private contentLength;
|
|
30
|
-
private initialized;
|
|
31
|
-
constructor(command: string, args?: string[], cwd?: string | undefined);
|
|
32
|
-
start(): Promise<void>;
|
|
33
|
-
initialize(rootUri: string): Promise<unknown>;
|
|
34
|
-
request(method: string, params?: Record<string, unknown>): Promise<unknown>;
|
|
35
|
-
notify(method: string, params?: Record<string, unknown>): Promise<void>;
|
|
36
|
-
shutdown(): Promise<void>;
|
|
37
|
-
get isInitialized(): boolean;
|
|
38
|
-
get isAlive(): boolean;
|
|
39
|
-
private handleData;
|
|
40
|
-
private rejectAll;
|
|
41
|
-
}
|
package/dist/lsp/client.js
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LSP client — JSON-RPC over stdio communication with language servers.
|
|
3
|
-
*/
|
|
4
|
-
import { spawn } from "node:child_process";
|
|
5
|
-
import { EventEmitter } from "node:events";
|
|
6
|
-
export class LSPClient extends EventEmitter {
|
|
7
|
-
command;
|
|
8
|
-
args;
|
|
9
|
-
cwd;
|
|
10
|
-
process;
|
|
11
|
-
nextId = 1;
|
|
12
|
-
pending = new Map();
|
|
13
|
-
// The LSP framing uses byte-counted Content-Length, so we buffer bytes,
|
|
14
|
-
// not characters. Joining chunks as strings (`data.toString()` + string
|
|
15
|
-
// concat) can split a multibyte UTF-8 codepoint across chunks and de-
|
|
16
|
-
// synchronize against Content-Length. Stay in Buffer-land until we've
|
|
17
|
-
// sliced out exactly the right body length.
|
|
18
|
-
buffer = Buffer.alloc(0);
|
|
19
|
-
contentLength = -1;
|
|
20
|
-
initialized = false;
|
|
21
|
-
constructor(command, args = [], cwd) {
|
|
22
|
-
super();
|
|
23
|
-
this.command = command;
|
|
24
|
-
this.args = args;
|
|
25
|
-
this.cwd = cwd;
|
|
26
|
-
}
|
|
27
|
-
async start() {
|
|
28
|
-
this.process = spawn(this.command, this.args, {
|
|
29
|
-
cwd: this.cwd,
|
|
30
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
31
|
-
});
|
|
32
|
-
this.process.stdout?.on("data", (data) => this.handleData(data));
|
|
33
|
-
this.process.stderr?.on("data", (_data) => {
|
|
34
|
-
// LSP servers often log to stderr — ignore
|
|
35
|
-
});
|
|
36
|
-
this.process.on("exit", (code) => {
|
|
37
|
-
this.emit("exit", code);
|
|
38
|
-
this.rejectAll(new Error(`LSP server exited with code ${code}`));
|
|
39
|
-
});
|
|
40
|
-
// Don't keep the event loop alive solely for the LSP child.
|
|
41
|
-
// Call after listeners are wired so event registration doesn't re-ref.
|
|
42
|
-
this.process.unref();
|
|
43
|
-
}
|
|
44
|
-
async initialize(rootUri) {
|
|
45
|
-
const result = await this.request("initialize", {
|
|
46
|
-
processId: process.pid,
|
|
47
|
-
rootUri,
|
|
48
|
-
capabilities: {
|
|
49
|
-
textDocument: {
|
|
50
|
-
definition: { dynamicRegistration: false },
|
|
51
|
-
references: { dynamicRegistration: false },
|
|
52
|
-
hover: { contentFormat: ["plaintext", "markdown"] },
|
|
53
|
-
documentSymbol: { dynamicRegistration: false },
|
|
54
|
-
completion: { dynamicRegistration: false },
|
|
55
|
-
},
|
|
56
|
-
workspace: {
|
|
57
|
-
symbol: { dynamicRegistration: false },
|
|
58
|
-
},
|
|
59
|
-
},
|
|
60
|
-
});
|
|
61
|
-
await this.notify("initialized", {});
|
|
62
|
-
this.initialized = true;
|
|
63
|
-
return result;
|
|
64
|
-
}
|
|
65
|
-
async request(method, params) {
|
|
66
|
-
if (!this.process?.stdin)
|
|
67
|
-
throw new Error("LSP server not started");
|
|
68
|
-
const id = this.nextId++;
|
|
69
|
-
const message = { jsonrpc: "2.0", id, method, params };
|
|
70
|
-
const content = JSON.stringify(message);
|
|
71
|
-
const header = `Content-Length: ${Buffer.byteLength(content)}\r\n\r\n`;
|
|
72
|
-
return new Promise((resolve, reject) => {
|
|
73
|
-
const timer = setTimeout(() => {
|
|
74
|
-
if (this.pending.has(id)) {
|
|
75
|
-
this.pending.delete(id);
|
|
76
|
-
reject(new Error(`LSP request "${method}" timed out`));
|
|
77
|
-
}
|
|
78
|
-
}, 30000);
|
|
79
|
-
// Don't let the timer keep the event loop alive by itself
|
|
80
|
-
timer.unref?.();
|
|
81
|
-
this.pending.set(id, {
|
|
82
|
-
resolve: (value) => { clearTimeout(timer); resolve(value); },
|
|
83
|
-
reject: (err) => { clearTimeout(timer); reject(err); },
|
|
84
|
-
});
|
|
85
|
-
this.process.stdin.write(header + content);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
async notify(method, params) {
|
|
89
|
-
if (!this.process?.stdin)
|
|
90
|
-
throw new Error("LSP server not started");
|
|
91
|
-
const message = { jsonrpc: "2.0", method, params };
|
|
92
|
-
const content = JSON.stringify(message);
|
|
93
|
-
const header = `Content-Length: ${Buffer.byteLength(content)}\r\n\r\n`;
|
|
94
|
-
this.process.stdin.write(header + content);
|
|
95
|
-
}
|
|
96
|
-
async shutdown() {
|
|
97
|
-
if (!this.process)
|
|
98
|
-
return;
|
|
99
|
-
try {
|
|
100
|
-
await this.request("shutdown", {});
|
|
101
|
-
await this.notify("exit", {});
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
// Force kill
|
|
105
|
-
}
|
|
106
|
-
this.process.stdout?.removeAllListeners();
|
|
107
|
-
this.process.stderr?.removeAllListeners();
|
|
108
|
-
this.process.removeAllListeners();
|
|
109
|
-
this.process.kill();
|
|
110
|
-
this.process = undefined;
|
|
111
|
-
// Drain pending requests
|
|
112
|
-
for (const { reject } of this.pending.values()) {
|
|
113
|
-
reject(new Error("LSP server shut down"));
|
|
114
|
-
}
|
|
115
|
-
this.pending.clear();
|
|
116
|
-
}
|
|
117
|
-
get isInitialized() {
|
|
118
|
-
return this.initialized;
|
|
119
|
-
}
|
|
120
|
-
get isAlive() {
|
|
121
|
-
return this.process !== undefined && !this.process.killed;
|
|
122
|
-
}
|
|
123
|
-
handleData(data) {
|
|
124
|
-
// Append the new chunk as bytes. Buffer.concat avoids the UTF-8
|
|
125
|
-
// boundary corruption that string concatenation produces — a
|
|
126
|
-
// multibyte codepoint split across two TCP/pipe chunks decodes to
|
|
127
|
-
// U+FFFD, mangles the buffer length count, and breaks framing.
|
|
128
|
-
this.buffer = Buffer.concat([this.buffer, data]);
|
|
129
|
-
while (true) {
|
|
130
|
-
if (this.contentLength < 0) {
|
|
131
|
-
// Search for the header terminator in bytes, not chars.
|
|
132
|
-
const headerEnd = this.buffer.indexOf("\r\n\r\n");
|
|
133
|
-
if (headerEnd < 0)
|
|
134
|
-
break;
|
|
135
|
-
// Headers are ASCII per spec, so toString("ascii") is safe and
|
|
136
|
-
// avoids paying for a UTF-8 decode on the framing band.
|
|
137
|
-
const header = this.buffer.slice(0, headerEnd).toString("ascii");
|
|
138
|
-
const match = header.match(/Content-Length:\s*(\d+)/i);
|
|
139
|
-
if (!match) {
|
|
140
|
-
this.buffer = this.buffer.subarray(headerEnd + 4);
|
|
141
|
-
continue;
|
|
142
|
-
}
|
|
143
|
-
this.contentLength = parseInt(match[1], 10);
|
|
144
|
-
this.buffer = this.buffer.subarray(headerEnd + 4);
|
|
145
|
-
}
|
|
146
|
-
// Content-Length is a BYTE count — compare against the buffer's
|
|
147
|
-
// byte length, not its character length. Pre-fix this compared
|
|
148
|
-
// string lengths; with multibyte responses (e.g. CJK identifiers,
|
|
149
|
-
// emoji in diagnostics) we'd block waiting for bytes that had
|
|
150
|
-
// already arrived.
|
|
151
|
-
if (this.buffer.length < this.contentLength)
|
|
152
|
-
break;
|
|
153
|
-
const bodyBytes = this.buffer.subarray(0, this.contentLength);
|
|
154
|
-
this.buffer = this.buffer.subarray(this.contentLength);
|
|
155
|
-
this.contentLength = -1;
|
|
156
|
-
// Decode the full body in one shot — at this point we have the
|
|
157
|
-
// exact byte count, so the UTF-8 boundary issue is fully gone.
|
|
158
|
-
const content = bodyBytes.toString("utf8");
|
|
159
|
-
try {
|
|
160
|
-
const message = JSON.parse(content);
|
|
161
|
-
if ("id" in message && this.pending.has(message.id)) {
|
|
162
|
-
const { resolve, reject } = this.pending.get(message.id);
|
|
163
|
-
this.pending.delete(message.id);
|
|
164
|
-
if (message.error) {
|
|
165
|
-
reject(new Error(`LSP error: ${message.error.message}`));
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
resolve(message.result);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else if ("method" in message && !("id" in message)) {
|
|
172
|
-
this.emit("notification", message);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
catch {
|
|
176
|
-
// Skip malformed messages
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
rejectAll(error) {
|
|
181
|
-
for (const { reject } of this.pending.values()) {
|
|
182
|
-
reject(error);
|
|
183
|
-
}
|
|
184
|
-
this.pending.clear();
|
|
185
|
-
}
|
|
186
|
-
}
|
package/dist/lsp/manager.d.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LSP Server Manager — manages lifecycle of language server instances.
|
|
3
|
-
* Lazy initialization: servers start only when needed.
|
|
4
|
-
*/
|
|
5
|
-
import { LSPClient } from "./client.js";
|
|
6
|
-
type ServerState = "stopped" | "starting" | "ready" | "error";
|
|
7
|
-
export declare class LSPServerManager {
|
|
8
|
-
private servers;
|
|
9
|
-
private rootUri;
|
|
10
|
-
constructor(cwd: string);
|
|
11
|
-
/**
|
|
12
|
-
* Get or start a language server by name.
|
|
13
|
-
*/
|
|
14
|
-
getClient(serverName: string): Promise<LSPClient | undefined>;
|
|
15
|
-
/**
|
|
16
|
-
* Start a specific language server.
|
|
17
|
-
*/
|
|
18
|
-
private startServer;
|
|
19
|
-
/**
|
|
20
|
-
* Check if any LSP server is connected.
|
|
21
|
-
*/
|
|
22
|
-
isConnected(): boolean;
|
|
23
|
-
/**
|
|
24
|
-
* List server statuses.
|
|
25
|
-
*/
|
|
26
|
-
listServers(): Array<{
|
|
27
|
-
name: string;
|
|
28
|
-
language: string;
|
|
29
|
-
state: ServerState;
|
|
30
|
-
error?: string;
|
|
31
|
-
}>;
|
|
32
|
-
/**
|
|
33
|
-
* Shutdown all servers.
|
|
34
|
-
*/
|
|
35
|
-
shutdownAll(): Promise<void>;
|
|
36
|
-
}
|
|
37
|
-
export declare function isCommandAvailable(command: string, env?: NodeJS.ProcessEnv): boolean;
|
|
38
|
-
export declare function initializeLSPManager(cwd: string): LSPServerManager;
|
|
39
|
-
export declare function getLSPManager(): LSPServerManager | undefined;
|
|
40
|
-
export {};
|
package/dist/lsp/manager.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LSP Server Manager — manages lifecycle of language server instances.
|
|
3
|
-
* Lazy initialization: servers start only when needed.
|
|
4
|
-
*/
|
|
5
|
-
import { LSPClient } from "./client.js";
|
|
6
|
-
import { BUILTIN_LSP_SERVERS } from "./servers.js";
|
|
7
|
-
import { accessSync, constants, statSync } from "node:fs";
|
|
8
|
-
import { delimiter, join } from "node:path";
|
|
9
|
-
import { pathToFileURL } from "node:url";
|
|
10
|
-
import { rootUriToPath } from "./root-path.js";
|
|
11
|
-
import { commandCandidateNames } from "../utils/exec.js";
|
|
12
|
-
export class LSPServerManager {
|
|
13
|
-
servers = new Map();
|
|
14
|
-
rootUri;
|
|
15
|
-
constructor(cwd) {
|
|
16
|
-
this.rootUri = pathToFileURL(cwd).href;
|
|
17
|
-
// Register all built-in servers
|
|
18
|
-
for (const config of BUILTIN_LSP_SERVERS) {
|
|
19
|
-
this.servers.set(config.name, { config, client: undefined, state: "stopped" });
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Get or start a language server by name.
|
|
24
|
-
*/
|
|
25
|
-
async getClient(serverName) {
|
|
26
|
-
const managed = this.servers.get(serverName);
|
|
27
|
-
if (!managed)
|
|
28
|
-
return undefined;
|
|
29
|
-
if (managed.state === "ready" && managed.client?.isAlive) {
|
|
30
|
-
return managed.client;
|
|
31
|
-
}
|
|
32
|
-
if (managed.state === "starting") {
|
|
33
|
-
// Wait for it to be ready
|
|
34
|
-
await new Promise((r) => setTimeout(r, 2000));
|
|
35
|
-
return managed.client;
|
|
36
|
-
}
|
|
37
|
-
// Try to start
|
|
38
|
-
return this.startServer(serverName);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Start a specific language server.
|
|
42
|
-
*/
|
|
43
|
-
async startServer(name) {
|
|
44
|
-
const managed = this.servers.get(name);
|
|
45
|
-
if (!managed)
|
|
46
|
-
return undefined;
|
|
47
|
-
// Check if command is available
|
|
48
|
-
if (!isCommandAvailable(managed.config.command)) {
|
|
49
|
-
managed.state = "error";
|
|
50
|
-
managed.error = `${managed.config.command} not found. Install: ${managed.config.installHint}`;
|
|
51
|
-
return undefined;
|
|
52
|
-
}
|
|
53
|
-
managed.state = "starting";
|
|
54
|
-
try {
|
|
55
|
-
const client = new LSPClient(managed.config.command, managed.config.args, rootUriToPath(this.rootUri));
|
|
56
|
-
await client.start();
|
|
57
|
-
await client.initialize(this.rootUri);
|
|
58
|
-
managed.client = client;
|
|
59
|
-
managed.state = "ready";
|
|
60
|
-
return client;
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
managed.state = "error";
|
|
64
|
-
managed.error = err.message;
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Check if any LSP server is connected.
|
|
70
|
-
*/
|
|
71
|
-
isConnected() {
|
|
72
|
-
for (const server of this.servers.values()) {
|
|
73
|
-
if (server.state === "ready" && server.client?.isAlive)
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* List server statuses.
|
|
80
|
-
*/
|
|
81
|
-
listServers() {
|
|
82
|
-
return [...this.servers.values()].map((s) => ({
|
|
83
|
-
name: s.config.name,
|
|
84
|
-
language: s.config.language,
|
|
85
|
-
state: s.state,
|
|
86
|
-
error: s.error,
|
|
87
|
-
}));
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Shutdown all servers.
|
|
91
|
-
*/
|
|
92
|
-
async shutdownAll() {
|
|
93
|
-
for (const server of this.servers.values()) {
|
|
94
|
-
if (server.client?.isAlive) {
|
|
95
|
-
try {
|
|
96
|
-
await server.client.shutdown();
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
// Force killed
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
server.state = "stopped";
|
|
103
|
-
server.client = undefined;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
export function isCommandAvailable(command, env = process.env) {
|
|
108
|
-
const trimmed = command.trim();
|
|
109
|
-
if (!trimmed)
|
|
110
|
-
return false;
|
|
111
|
-
const hasPathSeparator = trimmed.includes("/") || trimmed.includes("\\");
|
|
112
|
-
// A bare command with whitespace is not executable via spawn(command, args)
|
|
113
|
-
// anyway. Reject it up front so a configured command can never be interpreted
|
|
114
|
-
// as shell syntax such as `pylsp; touch /tmp/pwned`.
|
|
115
|
-
if (!hasPathSeparator && /\s/.test(trimmed))
|
|
116
|
-
return false;
|
|
117
|
-
if (hasPathSeparator) {
|
|
118
|
-
return candidateCommandNames(trimmed, env).some(isExecutableFile);
|
|
119
|
-
}
|
|
120
|
-
for (const dir of (env.PATH ?? "").split(delimiter)) {
|
|
121
|
-
if (!dir)
|
|
122
|
-
continue;
|
|
123
|
-
for (const name of candidateCommandNames(trimmed, env)) {
|
|
124
|
-
if (isExecutableFile(join(dir, name)))
|
|
125
|
-
return true;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
function candidateCommandNames(command, env) {
|
|
131
|
-
return commandCandidateNames(command, env);
|
|
132
|
-
}
|
|
133
|
-
function isExecutableFile(filePath) {
|
|
134
|
-
try {
|
|
135
|
-
const st = statSync(filePath);
|
|
136
|
-
if (!st.isFile())
|
|
137
|
-
return false;
|
|
138
|
-
if (process.platform !== "win32") {
|
|
139
|
-
accessSync(filePath, constants.X_OK);
|
|
140
|
-
}
|
|
141
|
-
return true;
|
|
142
|
-
}
|
|
143
|
-
catch {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
// Singleton
|
|
148
|
-
let _manager;
|
|
149
|
-
export function initializeLSPManager(cwd) {
|
|
150
|
-
_manager = new LSPServerManager(cwd);
|
|
151
|
-
return _manager;
|
|
152
|
-
}
|
|
153
|
-
export function getLSPManager() {
|
|
154
|
-
return _manager;
|
|
155
|
-
}
|
package/dist/lsp/root-path.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Convert a `file://` root URI to a platform filesystem path.
|
|
3
|
-
*
|
|
4
|
-
* The LSP manager used `rootUri.replace("file://", "")`, which only strips the
|
|
5
|
-
* first occurrence and leaves percent-encoding intact, and on Windows turns
|
|
6
|
-
* `file:///C:/x` into the invalid `/C:/x`. fileURLToPath does the proper
|
|
7
|
-
* platform conversion (drive letters, percent-decoding, UNC).
|
|
8
|
-
*/
|
|
9
|
-
export declare function rootUriToPath(rootUri: string): string;
|