@bastani/atomic 0.9.9-alpha.1 → 0.9.9-alpha.3
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/CHANGELOG.md +18 -0
- package/dist/builtin/cursor/CHANGELOG.md +12 -0
- package/dist/builtin/cursor/package.json +3 -3
- package/dist/builtin/intercom/CHANGELOG.md +14 -0
- package/dist/builtin/intercom/README.md +10 -3
- package/dist/builtin/intercom/broker/client.ts +2 -0
- package/dist/builtin/intercom/broker/send-handler.ts +22 -20
- package/dist/builtin/intercom/foreground-detach-handoff.ts +3 -1
- package/dist/builtin/intercom/inbound-idle-queue.ts +82 -0
- package/dist/builtin/intercom/index-heavy.ts +47 -37
- package/dist/builtin/intercom/intercom-tool.ts +6 -4
- package/dist/builtin/intercom/intercom-utils.ts +30 -0
- package/dist/builtin/intercom/lifecycle.ts +8 -5
- package/dist/builtin/intercom/package.json +3 -3
- package/dist/builtin/intercom/reply-tracker.ts +19 -19
- package/dist/builtin/intercom/session-target.ts +68 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +7 -4
- package/dist/builtin/intercom/source-ownership.ts +34 -0
- package/dist/builtin/intercom/subagent-relay.ts +45 -20
- package/dist/builtin/intercom/terminal-ordering-barrier.ts +111 -0
- package/dist/builtin/intercom/types.ts +5 -0
- package/dist/builtin/mcp/CHANGELOG.md +13 -0
- package/dist/builtin/mcp/package.json +4 -4
- package/dist/builtin/subagents/CHANGELOG.md +13 -0
- package/dist/builtin/subagents/package.json +5 -5
- package/dist/builtin/subagents/src/runs/background/notify.ts +53 -9
- package/dist/builtin/subagents/src/shared/types-config.ts +1 -0
- package/dist/builtin/web-access/CHANGELOG.md +13 -0
- package/dist/builtin/web-access/package.json +3 -3
- package/dist/builtin/web-access/web-search-tool.ts +1 -2
- package/dist/builtin/workflows/CHANGELOG.md +13 -0
- package/dist/builtin/workflows/package.json +3 -3
- package/dist/builtin/workflows/src/extension/workflow-tool.ts +18 -2
- package/dist/builtin/workflows/src/shared/serializable.ts +1 -1
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/internal-intercom-broker.d.ts.map +1 -1
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -1
- package/dist/bun/split-loader.d.ts.map +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/project-trust.d.ts.map +1 -1
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/config-self-update.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/core/agent-session-accessors.d.ts.map +1 -1
- package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +9 -0
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-message-queue.d.ts +4 -1
- package/dist/core/agent-session-message-queue.d.ts.map +1 -1
- package/dist/core/agent-session-message-queue.js +35 -0
- package/dist/core/agent-session-message-queue.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +2 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-skill-block.d.ts.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
- package/dist/core/async/format.d.ts.map +1 -1
- package/dist/core/async/job-manager.d.ts.map +1 -1
- package/dist/core/async/session-manager.d.ts.map +1 -1
- package/dist/core/async/types.d.ts.map +1 -1
- package/dist/core/atomic-guide-command.d.ts.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage.d.ts +4 -0
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
- package/dist/core/compaction/compaction-parameters.d.ts.map +1 -1
- package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
- package/dist/core/compaction/compaction-types.d.ts.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/deleted-ranges.d.ts.map +1 -1
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/range-planner.d.ts.map +1 -1
- package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/context-window.d.ts.map +1 -1
- package/dist/core/copilot-anthropic-sse-repair.d.ts.map +1 -1
- package/dist/core/copilot-errors.d.ts.map +1 -1
- package/dist/core/copilot-gemini-payload-sanitizer.d.ts.map +1 -1
- package/dist/core/copilot-gemini-reasoning.d.ts.map +1 -1
- package/dist/core/copilot-gemini-tool-arguments.d.ts.map +1 -1
- package/dist/core/copilot-hosts.d.ts.map +1 -1
- package/dist/core/copilot-model-catalog.d.ts.map +1 -1
- package/dist/core/copilot-model-static-fallbacks.d.ts.map +1 -1
- package/dist/core/copilot-model-synthesis.d.ts.map +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/template-script.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/api-types.d.ts +3 -1
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/command-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-types.d.ts.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +4 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-discovery.d.ts.map +1 -1
- package/dist/core/extensions/loader-resources.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +1 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/message-types.d.ts +3 -0
- package/dist/core/extensions/message-types.d.ts.map +1 -1
- package/dist/core/extensions/message-types.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-handlers.d.ts.map +1 -1
- package/dist/core/extensions/runner-project-trust.d.ts.map +1 -1
- package/dist/core/extensions/runner-registries.d.ts.map +1 -1
- package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
- package/dist/core/extensions/runner-ui.d.ts.map +1 -1
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +1 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +3 -1
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/session-events.d.ts.map +1 -1
- package/dist/core/extensions/tool-events.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/flattened-tool-arguments.d.ts.map +1 -1
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/model-registry-auth.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.d.ts.map +1 -1
- package/dist/core/model-registry-builtins.js.map +1 -1
- package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
- package/dist/core/model-registry-custom-loader.js.map +1 -1
- package/dist/core/model-registry-dynamic.d.ts.map +1 -1
- package/dist/core/model-registry-loader.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.d.ts +65 -13
- package/dist/core/model-registry-schemas.d.ts.map +1 -1
- package/dist/core/model-registry-schemas.js +5 -1
- package/dist/core/model-registry-schemas.js.map +1 -1
- package/dist/core/model-registry-types.d.ts.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-resolver-cli.d.ts.map +1 -1
- package/dist/core/model-resolver-defaults.d.ts.map +1 -1
- package/dist/core/model-resolver-initial.d.ts.map +1 -1
- package/dist/core/model-resolver-patterns.d.ts.map +1 -1
- package/dist/core/model-resolver-scope.d.ts.map +1 -1
- package/dist/core/model-resolver-types.d.ts.map +1 -1
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -1
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
- package/dist/core/package-manager-command.d.ts.map +1 -1
- package/dist/core/package-manager-constants.d.ts.map +1 -1
- package/dist/core/package-manager-env.d.ts.map +1 -1
- package/dist/core/package-manager-git.d.ts.map +1 -1
- package/dist/core/package-manager-manifest.d.ts.map +1 -1
- package/dist/core/package-manager-npm.d.ts.map +1 -1
- package/dist/core/package-manager-operations.d.ts.map +1 -1
- package/dist/core/package-manager-paths.d.ts.map +1 -1
- package/dist/core/package-manager-progress.d.ts.map +1 -1
- package/dist/core/package-manager-resolver.d.ts.map +1 -1
- package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -1
- package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
- package/dist/core/package-manager-resource-files.d.ts.map +1 -1
- package/dist/core/package-manager-resource-patterns.d.ts.map +1 -1
- package/dist/core/package-manager-settings.d.ts.map +1 -1
- package/dist/core/package-manager-source.d.ts.map +1 -1
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/prompt-templates-async.d.ts.map +1 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/provider-attribution.d.ts.map +1 -1
- package/dist/core/provider-context-usage.d.ts.map +1 -1
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resource-loader-assets.d.ts.map +1 -1
- package/dist/core/resource-loader-context-files.d.ts.map +1 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-discovery.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-helpers.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-package-resources.d.ts.map +1 -1
- package/dist/core/resource-loader-paths.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-source-info.d.ts.map +1 -1
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/sdk-exports.d.ts.map +1 -1
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-entry-normalization.d.ts.map +1 -1
- package/dist/core/session-manager-archive.d.ts.map +1 -1
- package/dist/core/session-manager-classification.d.ts.map +1 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-history.d.ts.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-migrations.d.ts.map +1 -1
- package/dist/core/session-manager-paths.d.ts.map +1 -1
- package/dist/core/session-manager-storage.d.ts.map +1 -1
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-validation.d.ts.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-internals.d.ts.map +1 -1
- package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-merge.d.ts.map +1 -1
- package/dist/core/settings-storage.d.ts.map +1 -1
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/skills-async.d.ts.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/thinking-blocks.d.ts.map +1 -1
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/tools/artifact-protocol.d.ts.map +1 -1
- package/dist/core/tools/artifacts.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/config.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/index.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/inline-input.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/key-router.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/row-intent.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/contract.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/derivations.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/focus.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/selectors/projections.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/state/state.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/tool/format-answer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/tool/types.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/tool/validate-questionnaire.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/component-binding.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/option-list-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-box-renderer.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-layout-decider.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/stateful-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/tab-components.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -1
- package/dist/core/tools/bash-async-execution.d.ts.map +1 -1
- package/dist/core/tools/bash-async-jobs.d.ts.map +1 -1
- package/dist/core/tools/bash-async-output.d.ts.map +1 -1
- package/dist/core/tools/bash-interceptor.d.ts.map +1 -1
- package/dist/core/tools/bash-leading-cd.d.ts.map +1 -1
- package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/block-resolver.d.ts.map +1 -1
- package/dist/core/tools/conflict-registry.d.ts.map +1 -1
- package/dist/core/tools/directory-tree.d.ts.map +1 -1
- package/dist/core/tools/edit-diff-preserve.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/fetch-url.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/glob-path-utils.d.ts.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/apply.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/block.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/diff-preview.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/fs.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/index.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/input.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/messages.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/mismatch.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/normalize.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/parser.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/patcher.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/prefixes.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/recovery.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/snapshots.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/stream.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/tokenizer.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/types.d.ts.map +1 -1
- package/dist/core/tools/hashline.d.ts.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/notebook.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/oversized-tool-result.d.ts.map +1 -1
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/read-document-extract.d.ts.map +1 -1
- package/dist/core/tools/read-selectors.d.ts.map +1 -1
- package/dist/core/tools/read-url.d.ts.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/resource-selectors.d.ts.map +1 -1
- package/dist/core/tools/search-details.d.ts.map +1 -1
- package/dist/core/tools/search-line-ranges.d.ts.map +1 -1
- package/dist/core/tools/search-native.d.ts.map +1 -1
- package/dist/core/tools/search.d.ts.map +1 -1
- package/dist/core/tools/structured-output.d.ts.map +1 -1
- package/dist/core/tools/todos-execute.d.ts.map +1 -1
- package/dist/core/tools/todos-locks.d.ts.map +1 -1
- package/dist/core/tools/todos-model.d.ts.map +1 -1
- package/dist/core/tools/todos-mutations.d.ts.map +1 -1
- package/dist/core/tools/todos-paths.d.ts.map +1 -1
- package/dist/core/tools/todos-render.d.ts.map +1 -1
- package/dist/core/tools/todos-storage.d.ts.map +1 -1
- package/dist/core/tools/todos-types.d.ts.map +1 -1
- package/dist/core/tools/todos-types.js +1 -1
- package/dist/core/tools/todos-types.js.map +1 -1
- package/dist/core/tools/todos.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +6 -2
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/tool-limits.d.ts.map +1 -1
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/url-ip-guards.d.ts.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/typebox-compat.d.ts +12 -0
- package/dist/core/typebox-compat.d.ts.map +1 -0
- package/dist/core/typebox-compat.js +10 -0
- package/dist/core/typebox-compat.js.map +1 -0
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/main-app-mode.d.ts.map +1 -1
- package/dist/main-deferred-startup.d.ts.map +1 -1
- package/dist/main-early-input.d.ts.map +1 -1
- package/dist/main-session-options.d.ts.map +1 -1
- package/dist/main-session.d.ts.map +1 -1
- package/dist/main-stdio.d.ts.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/migrations-config-values.d.ts.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/interactive/chat-input-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-banner.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/context-window-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-delete.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-header.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-tree.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-utils.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-component.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-content.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-help.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-label-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-model.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector-viewport.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/working-status.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-child-ordering.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-extension-widgets.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-queueing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-resource-paths.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/model-search.d.ts.map +1 -1
- package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -1
- package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -1
- package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/tui-theme.d.ts.map +1 -1
- package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/rpc/jsonl.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-input.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-responses.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/package-manager-cli-parser.d.ts.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/rpc-entry.d.ts.map +1 -1
- package/dist/utils/ansi.d.ts.map +1 -1
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/deprecation.d.ts.map +1 -1
- package/dist/utils/event-loop.d.ts.map +1 -1
- package/dist/utils/exif-orientation.d.ts.map +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/fs-watch.d.ts.map +1 -1
- package/dist/utils/git-env.d.ts.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/html.d.ts.map +1 -1
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-process.d.ts.map +1 -1
- package/dist/utils/image-resize-core.d.ts.map +1 -1
- package/dist/utils/image-resize-worker.d.ts.map +1 -1
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/json.d.ts.map +1 -1
- package/dist/utils/markit.d.ts.map +1 -1
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/module-require.d.ts.map +1 -1
- package/dist/utils/open-browser.d.ts.map +1 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/pi-user-agent.d.ts.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/sleep.d.ts.map +1 -1
- package/dist/utils/split-launcher.d.ts.map +1 -1
- package/dist/utils/syntax-highlight.d.ts.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/windows-self-update.d.ts.map +1 -1
- package/docs/custom-provider.md +7 -1
- package/docs/extensions.md +19 -4
- package/docs/subagents.md +2 -0
- package/docs/workflows.md +2 -2
- package/examples/extensions/README.md +3 -1
- package/examples/extensions/subagent/schemas.ts +1 -1
- package/examples/extensions/tic-tac-toe.ts +1 -2
- package/examples/extensions/todo.ts +1 -2
- package/npm-shrinkwrap.json +214 -98
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-selectors.d.ts","sourceRoot":"","sources":["../../../src/core/tools/resource-selectors.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, mkdirSync, readFileSync, realpathSync, rmSync, writeFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\nimport { deflateRawSync, gunzipSync, gzipSync, inflateRawSync } from \"node:zlib\";\nimport { loadNativeSearchBinding } from \"./search-native.ts\";\n\nexport interface ArchiveSelector { archivePath: string; memberPath: string }\nexport interface SqliteSelector { databasePath: string; table?: string; rowId?: string; query?: string; limit?: number; offset?: number; where?: string; order?: string; schema?: boolean; sampleRows?: number }\nexport interface InternalResourceRouter {\n\tread?: (url: string) => string | Buffer | undefined | Promise<string | Buffer | undefined>;\n\twrite?: (url: string, content: string) => void | Promise<void>;\n\tresolve?: (url: string) => string | undefined | Promise<string | undefined>;\n}\nexport interface InternalResourceContext { internalRouter?: InternalResourceRouter; internalResourceRouter?: InternalResourceRouter; resolveInternalUrl?: (url: string) => string | undefined | Promise<string | undefined> }\ntype SqliteValue = string | number | boolean | null;\ninterface SqliteQuery { all(...params: SqliteValue[]): Record<string, SqliteValue>[]; get?(...params: SqliteValue[]): Record<string, SqliteValue> | undefined; iterate?(): Iterable<Record<string, SqliteValue>>; run(...params: SqliteValue[]): { changes?: number; lastInsertRowid?: number | bigint } }\ninterface SqliteDatabase { query(sql: string): SqliteQuery; close(): void }\ntype SqliteDatabaseConstructor = new (path: string, options?: { readonly?: boolean }) => SqliteDatabase;\nfunction sqliteDatabase(): SqliteDatabaseConstructor {\n\ttry { return (createRequire(import.meta.url)(\"bun:sqlite\") as { Database: SqliteDatabaseConstructor }).Database; }\n\tcatch { throw new Error(\"SQLite selectors require Atomic's Bun runtime with bun:sqlite support.\"); }\n}\nfunction existingSqliteFile(path: string): boolean | undefined { if (!existsSync(path)) return undefined; return readFileSync(path).subarray(0, 16).toString(\"binary\") === \"SQLite format 3\\0\"; }\nexport function sqliteSelectorForPath(value: string, cwd: string): SqliteSelector | undefined { const selector = parseSqliteSelector(value); if (!selector) return undefined; const absolute = resolveContainedLocalPath(cwd, selector.databasePath, \"SQLite selector\"); if (existingSqliteFile(absolute) !== true) return undefined; return { ...selector, databasePath: absolute }; }\n\nconst MAX_TAR_ARCHIVE_BYTES = 256 * 1024 * 1024;\nconst MAX_ARCHIVE_MEMBER_BYTES = 64 * 1024 * 1024;\nconst MAX_ARCHIVE_DIRECTORY_ENTRIES = 500;\n\nexport function parseArchiveSelector(value: string): ArchiveSelector | undefined {\n\tconst match = value.match(/^(.+\\.(?:zip|jar|tar|tgz|tar\\.gz|gz)):(.*)$/i);\n\treturn match ? { archivePath: match[1] ?? \"\", memberPath: match[2] ?? \"\" } : undefined;\n}\nexport function resolveArchiveSelector(selector: ArchiveSelector, cwd: string): ArchiveSelector {\n\treturn { ...selector, archivePath: resolveContainedLocalPath(cwd, selector.archivePath, \"Archive selector\") };\n}\nexport function parseSqliteSelector(value: string): SqliteSelector | undefined {\n\tconst match = value.match(/^(.+\\.(?:sqlite3?|db3?))(?:\\?q=(.+)|:([^:?]+)(?:\\?(.+))?(?::([^:?]+))?)?$/i);\n\tif (!match) return undefined;\n\tconst params = new URLSearchParams(match[4] ?? \"\");\n\tconst limit = Number.parseInt(params.get(\"limit\") ?? \"\", 10);\n\tconst offset = Number.parseInt(params.get(\"offset\") ?? \"\", 10);\n\tconst sampleRows = Number.parseInt(params.get(\"sampleRows\") ?? params.get(\"sample_rows\") ?? \"\", 10);\n\treturn { databasePath: match[1] ?? \"\", query: match[2] ? decodeURIComponent(match[2]) : undefined, table: match[3], rowId: match[5] ?? params.get(\"id\") ?? undefined, limit: Number.isFinite(limit) ? Math.max(0, Math.min(500, limit)) : undefined, offset: Number.isFinite(offset) ? Math.max(0, offset) : undefined, where: params.get(\"where\") ?? undefined, order: params.get(\"order\") ?? undefined, schema: params.get(\"schema\") === \"true\" || params.get(\"schema\") === \"1\", sampleRows: Number.isFinite(sampleRows) ? Math.max(0, Math.min(100, sampleRows)) : undefined };\n}\n\nfunction isZipArchive(path: string): boolean { return /\\.(?:zip|jar)$/i.test(path); }\nfunction isGzipTar(path: string): boolean { return /\\.(?:tgz|tar\\.gz|gz)$/i.test(path); }\nfunction crc32(data: Buffer): number {\n\tlet crc = ~0;\n\tfor (const byte of data) { crc ^= byte; for (let i = 0; i < 8; i++) crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); }\n\treturn ~crc >>> 0;\n}\nfunction assertZipRange(buf: Buffer, offset: number, length: number, label: string): void {\n\tif (!Number.isSafeInteger(offset) || !Number.isSafeInteger(length) || offset < 0 || length < 0 || offset > buf.length - length) throw new Error(`Invalid zip entry bounds: ${label}`);\n}\nfunction zipEntryPayload(buf: Buffer, label: string, name: string, localOffset: number, compressedSize: number): Buffer {\n\tif (compressedSize > MAX_ARCHIVE_MEMBER_BYTES) throw new Error(`Archive member compressed data too large: ${name}`);\n\tassertZipRange(buf, localOffset, 30, label);\n\tif (buf.readUInt32LE(localOffset) !== 0x04034b50) throw new Error(`Invalid zip local header: ${label}`);\n\tconst localNameLen = buf.readUInt16LE(localOffset + 26), localExtraLen = buf.readUInt16LE(localOffset + 28), start = localOffset + 30 + localNameLen + localExtraLen;\n\tassertZipRange(buf, start, compressedSize, label);\n\treturn buf.subarray(start, start + compressedSize);\n}\nexport function readZipEntriesFromBuffer(buf: Buffer, label: string): Map<string, Buffer> {\n\tconst entries = new Map<string, Buffer>();\n\tlet eocd = -1; for (let i = buf.length - 22; i >= 0; i--) if (buf.readUInt32LE(i) === 0x06054b50) { eocd = i; break; }\n\tif (eocd < 0) throw new Error(`Invalid zip archive: ${label}`);\n\tlet ptr = buf.readUInt32LE(eocd + 16); const total = buf.readUInt16LE(eocd + 10);\n\tfor (let n = 0; n < total; n++) {\n\t\tassertZipRange(buf, ptr, 46, label);\n\t\tif (buf.readUInt32LE(ptr) !== 0x02014b50) throw new Error(`Invalid zip central directory: ${label}`);\n\t\tconst method = buf.readUInt16LE(ptr + 10), compressedSize = buf.readUInt32LE(ptr + 20), size = buf.readUInt32LE(ptr + 24), nameLen = buf.readUInt16LE(ptr + 28), extraLen = buf.readUInt16LE(ptr + 30), commentLen = buf.readUInt16LE(ptr + 32), localOffset = buf.readUInt32LE(ptr + 42);\n\t\tassertZipRange(buf, ptr + 46, nameLen + extraLen + commentLen, label);\n\t\tconst name = buf.subarray(ptr + 46, ptr + 46 + nameLen).toString(); ptr += 46 + nameLen + extraLen + commentLen;\n\t\tif (name.endsWith(\"/\")) continue;\n\t\tif (size > MAX_ARCHIVE_MEMBER_BYTES) throw new Error(`Archive member too large: ${name}`);\n\t\tconst data = zipEntryPayload(buf, label, name, localOffset, compressedSize);\n\t\tentries.set(name, method === 0 ? Buffer.from(data) : method === 8 ? inflateRawSync(data, { maxOutputLength: MAX_ARCHIVE_MEMBER_BYTES }) : (() => { throw new Error(`Unsupported zip compression method ${method} for ${name}`); })());\n\t}\n\treturn entries;\n}\nexport function readZipEntries(path: string): Map<string, Buffer> { return readZipEntriesFromBuffer(readFileSync(path), path); }\nfunction writeZipEntries(path: string, entries: Map<string, Buffer>): void {\n\tconst locals: Buffer[] = [], centrals: Buffer[] = []; let offset = 0;\n\tfor (const [name, data] of entries) {\n\t\tconst nameBuf = Buffer.from(name), compressed = deflateRawSync(data), crc = crc32(data);\n\t\tconst local = Buffer.alloc(30); local.writeUInt32LE(0x04034b50, 0); local.writeUInt16LE(20, 4); local.writeUInt16LE(8, 8); local.writeUInt32LE(crc, 14); local.writeUInt32LE(compressed.length, 18); local.writeUInt32LE(data.length, 22); local.writeUInt16LE(nameBuf.length, 26);\n\t\tlocals.push(local, nameBuf, compressed);\n\t\tconst central = Buffer.alloc(46); central.writeUInt32LE(0x02014b50, 0); central.writeUInt16LE(20, 4); central.writeUInt16LE(20, 6); central.writeUInt16LE(8, 10); central.writeUInt32LE(crc, 16); central.writeUInt32LE(compressed.length, 20); central.writeUInt32LE(data.length, 24); central.writeUInt16LE(nameBuf.length, 28); central.writeUInt32LE(offset, 42);\n\t\tcentrals.push(central, nameBuf); offset += local.length + nameBuf.length + compressed.length;\n\t}\n\tconst centralSize = centrals.reduce((sum, part) => sum + part.length, 0); const eocd = Buffer.alloc(22);\n\teocd.writeUInt32LE(0x06054b50, 0); eocd.writeUInt16LE(entries.size, 8); eocd.writeUInt16LE(entries.size, 10); eocd.writeUInt32LE(centralSize, 12); eocd.writeUInt32LE(offset, 16);\n\twriteFileSync(path, Buffer.concat([...locals, ...centrals, eocd]));\n}\nfunction parseTar(path: string): Map<string, Buffer> {\n\tconst raw = readFileSync(path);\n\tif (raw.length > MAX_TAR_ARCHIVE_BYTES) throw new Error(`Archive too large: ${path}`);\n\tconst buf = isGzipTar(path) ? gunzipSync(raw, { maxOutputLength: MAX_TAR_ARCHIVE_BYTES }) : raw;\n\tif (buf.length > MAX_TAR_ARCHIVE_BYTES) throw new Error(`Archive too large: ${path}`);\n\tconst entries = new Map<string, Buffer>();\n\tfor (let offset = 0; offset + 512 <= buf.length;) {\n\t\tconst header = buf.subarray(offset, offset + 512);\n\t\tif (header.every((byte) => byte === 0)) break;\n\t\tconst name = header.subarray(0, 100).toString().replace(/\\0.*$/, \"\");\n\t\tconst prefix = header.subarray(345, 500).toString().replace(/\\0.*$/, \"\");\n\t\tconst fullName = prefix ? `${prefix}/${name}` : name;\n\t\tconst size = Number.parseInt(header.subarray(124, 136).toString().replace(/\\0.*$/, \"\").trim() || \"0\", 8);\n\t\tconst type = String.fromCharCode(header[156] ?? 48);\n\t\tconst dataStart = offset + 512;\n\t\tif (type !== \"5\" && fullName) {\n\t\t\tif (size > MAX_ARCHIVE_MEMBER_BYTES) throw new Error(`Archive member too large: ${fullName}`);\n\t\t\tentries.set(fullName, Buffer.from(buf.subarray(dataStart, dataStart + size)));\n\t\t}\n\t\toffset = dataStart + Math.ceil(size / 512) * 512;\n\t}\n\treturn entries;\n}\nfunction tarHeader(name: string, size: number): Buffer {\n\tconst header = Buffer.alloc(512); const nameBytes = Buffer.from(name); nameBytes.copy(header, 0, 0, Math.min(100, nameBytes.length));\n\theader.write(\"0000644\\0\", 100); header.write(\"0000000\\0\", 108); header.write(\"0000000\\0\", 116); header.write(size.toString(8).padStart(11, \"0\") + \"\\0\", 124); header.write(\"00000000000\\0\", 136); header.fill(0x20, 148, 156); header[156] = 48; header.write(\"ustar\\0\", 257); header.write(\"00\", 263);\n\tlet sum = 0; for (const byte of header) sum += byte; header.write(sum.toString(8).padStart(6, \"0\") + \"\\0 \", 148); return header;\n}\nfunction writeTar(path: string, entries: Map<string, Buffer>): void {\n\tconst parts: Buffer[] = []; for (const [name, data] of entries) { parts.push(tarHeader(name, data.length), data); const pad = (512 - (data.length % 512)) % 512; if (pad) parts.push(Buffer.alloc(pad)); }\n\tparts.push(Buffer.alloc(1024)); const out = Buffer.concat(parts); writeFileSync(path, isGzipTar(path) ? gzipSync(out) : out);\n}\nfunction listArchiveDirectory(names: Iterable<string>, memberPath: string): string {\n\tconst prefix = memberPath ? `${memberPath.replace(/\\/+$/g, \"\")}/` : \"\";\n\tconst children = new Set<string>();\n\tfor (const name of names) { if (!name.startsWith(prefix) || name === prefix) continue; const rest = name.slice(prefix.length); const [first, ...more] = rest.split(\"/\"); if (first) children.add(more.length > 0 ? `${first}/` : first); }\n\treturn [...children].sort().slice(0, MAX_ARCHIVE_DIRECTORY_ENTRIES).join(\"\\n\");\n}\n\nfunction readZipSelector(path: string, memberPath: string): string {\n\tconst buf = readFileSync(path); let eocd = -1; for (let i = buf.length - 22; i >= 0; i--) if (buf.readUInt32LE(i) === 0x06054b50) { eocd = i; break; }\n\tif (eocd < 0) throw new Error(`Invalid zip archive: ${path}`);\n\tlet ptr = buf.readUInt32LE(eocd + 16); const total = buf.readUInt16LE(eocd + 10), names: string[] = [];\n\tfor (let n = 0; n < total; n++) {\n\t\tassertZipRange(buf, ptr, 46, path);\n\t\tif (buf.readUInt32LE(ptr) !== 0x02014b50) throw new Error(`Invalid zip central directory: ${path}`);\n\t\tconst method = buf.readUInt16LE(ptr + 10), compressedSize = buf.readUInt32LE(ptr + 20), size = buf.readUInt32LE(ptr + 24), nameLen = buf.readUInt16LE(ptr + 28), extraLen = buf.readUInt16LE(ptr + 30), commentLen = buf.readUInt16LE(ptr + 32), localOffset = buf.readUInt32LE(ptr + 42);\n\t\tassertZipRange(buf, ptr + 46, nameLen + extraLen + commentLen, path);\n\t\tconst name = buf.subarray(ptr + 46, ptr + 46 + nameLen).toString(); ptr += 46 + nameLen + extraLen + commentLen; if (name.endsWith(\"/\")) continue; names.push(name); if (memberPath && name !== memberPath) continue;\n\t\tif (!memberPath) continue; if (size > MAX_ARCHIVE_MEMBER_BYTES) throw new Error(`Archive member too large: ${memberPath}`);\n\t\tconst data = zipEntryPayload(buf, path, name, localOffset, compressedSize);\n\t\treturn (method === 0 ? Buffer.from(data) : method === 8 ? inflateRawSync(data, { maxOutputLength: MAX_ARCHIVE_MEMBER_BYTES }) : (() => { throw new Error(`Unsupported zip compression method ${method} for ${name}`); })()).toString(\"utf8\");\n\t}\n\tconst listing = listArchiveDirectory(names, memberPath);\n\tif (listing) return listing;\n\tif (!memberPath) return \"\";\n\tthrow new Error(`Archive member not found: ${memberPath}`);\n}\n\nexport function readArchiveSelector(selector: ArchiveSelector): string {\n\tif (isZipArchive(selector.archivePath)) return readZipSelector(selector.archivePath, selector.memberPath);\n\tconst entries = parseTar(selector.archivePath);\n\tif (!selector.memberPath) return listArchiveDirectory(entries.keys(), \"\");\n\tconst data = entries.get(selector.memberPath); if (data) { if (data.length > MAX_ARCHIVE_MEMBER_BYTES) throw new Error(`Archive member too large: ${selector.memberPath}`); return data.toString(\"utf8\"); }\n\tconst listing = listArchiveDirectory(entries.keys(), selector.memberPath); if (listing) return listing;\n\tthrow new Error(`Archive member not found: ${selector.memberPath}`);\n}\nfunction validateArchiveMemberPath(memberPath: string): void { if (!memberPath || memberPath.startsWith(\"/\") || memberPath.endsWith(\"/\") || memberPath.split(\"/\").includes(\"..\")) throw new Error(`Invalid archive member path: ${memberPath}`); }\nfunction writeZipEntrySelective(path: string, memberPath: string, data: Buffer): void {\n\tconst source = existsSync(path) ? readFileSync(path) : Buffer.alloc(0); const locals: Buffer[] = [], centrals: Buffer[] = []; let offset = 0;\n\tif (source.length > 0) {\n\t\tlet eocd = -1; for (let i = source.length - 22; i >= 0; i--) if (source.readUInt32LE(i) === 0x06054b50) { eocd = i; break; }\n\t\tif (eocd < 0) throw new Error(`Invalid zip archive: ${path}`);\n\t\tlet ptr = source.readUInt32LE(eocd + 16); const total = source.readUInt16LE(eocd + 10);\n\t\tfor (let n = 0; n < total; n++) {\n\t\t\tassertZipRange(source, ptr, 46, path);\n\t\t\tconst start = ptr, flags = source.readUInt16LE(ptr + 8), nameLen = source.readUInt16LE(ptr + 28), extraLen = source.readUInt16LE(ptr + 30), commentLen = source.readUInt16LE(ptr + 32), localOffset = source.readUInt32LE(ptr + 42), compressedSize = source.readUInt32LE(ptr + 20);\n\t\t\tassertZipRange(source, ptr + 46, nameLen + extraLen + commentLen, path);\n\t\t\tconst name = source.subarray(ptr + 46, ptr + 46 + nameLen).toString(); ptr += 46 + nameLen + extraLen + commentLen; if (name === memberPath) continue;\n\t\t\tif ((flags & 0x0008) !== 0) throw new Error(`Unsupported zip data descriptor during selective write: ${name}`);\n\t\t\tassertZipRange(source, localOffset, 30, path);\n\t\t\tconst localNameLen = source.readUInt16LE(localOffset + 26), localExtraLen = source.readUInt16LE(localOffset + 28), localEnd = localOffset + 30 + localNameLen + localExtraLen + compressedSize;\n\t\t\tassertZipRange(source, localOffset, localEnd - localOffset, path);\n\t\t\tconst local = source.subarray(localOffset, localEnd), central = Buffer.from(source.subarray(start, ptr)); central.writeUInt32LE(offset, 42); locals.push(local); centrals.push(central); offset += local.length;\n\t\t}\n\t}\n\tconst tmp = `${path}.atomic-entry-${Date.now()}`; writeZipEntries(tmp, new Map([[memberPath, data]])); const built = readFileSync(tmp); rmSync(tmp, { force: true });\n\tconst eocdStart = built.length - 22, localLen = built.readUInt32LE(eocdStart + 16), centralSizeOne = built.readUInt32LE(eocdStart + 12); const central = Buffer.from(built.subarray(localLen, localLen + centralSizeOne)); central.writeUInt32LE(offset, 42); locals.push(built.subarray(0, localLen)); centrals.push(central); offset += localLen;\n\tconst centralSize = centrals.reduce((sum, part) => sum + part.length, 0), eocd = Buffer.alloc(22); eocd.writeUInt32LE(0x06054b50, 0); eocd.writeUInt16LE(centrals.length, 8); eocd.writeUInt16LE(centrals.length, 10); eocd.writeUInt32LE(centralSize, 12); eocd.writeUInt32LE(offset, 16); writeFileSync(path, Buffer.concat([...locals, ...centrals, eocd]));\n}\n\nexport function writeArchiveSelector(selector: ArchiveSelector, content: string): void {\n\tvalidateArchiveMemberPath(selector.memberPath); mkdirSync(dirname(selector.archivePath), { recursive: true });\n\tif (isZipArchive(selector.archivePath)) { writeZipEntrySelective(selector.archivePath, selector.memberPath, Buffer.from(content)); return; }\n\tconst entries = existsSync(selector.archivePath) ? parseTar(selector.archivePath) : new Map<string, Buffer>();\n\tentries.set(selector.memberPath, Buffer.from(content)); writeTar(selector.archivePath, entries);\n}\nconst SEARCH_LINE_LIMIT = 512;\nfunction truncateSearchLine(line: string): string {\n\treturn line.length > SEARCH_LINE_LIMIT ? `${line.slice(0, SEARCH_LINE_LIMIT)}… [truncated]` : line;\n}\nfunction stripExtendedRegexWhitespace(pattern: string): string {\n\tlet out = \"\", escaped = false, inClass = false, inComment = false;\n\tfor (const ch of pattern) {\n\t\tif (inComment) { if (ch === \"\\n\" || ch === \"\\r\") inComment = false; continue; }\n\t\tif (escaped) { out += ch; escaped = false; continue; }\n\t\tif (ch === \"\\\\\") { out += ch; escaped = true; continue; }\n\t\tif (ch === \"[\") inClass = true; else if (ch === \"]\") inClass = false;\n\t\tif (!inClass && ch === \"#\") { inComment = true; continue; }\n\t\tif (!inClass && /\\s/.test(ch)) continue;\n\t\tout += ch;\n\t}\n\treturn out;\n}\n\nfunction normalizeSearchPattern(pattern: string, ignoreCase: boolean): { pattern: string; flags: string } {\n\tconst match = pattern.match(/^\\(\\?([imsUx-]+)\\)([\\s\\S]*)$/);\n\tconst flags = new Set<string>(); if (ignoreCase) flags.add(\"i\");\n\tif (match) { const inline = match[1] ?? \"\"; for (const flag of inline) { if (flag === \"i\" || flag === \"m\" || flag === \"s\") flags.add(flag); } return { pattern: inline.includes(\"x\") ? stripExtendedRegexWhitespace(match[2] ?? \"\") : match[2] ?? \"\", flags: [...flags].join(\"\") }; }\n\treturn { pattern, flags: [...flags].join(\"\") };\n}\n\nfunction searchTextSelectorLines(label: string, text: string, pattern: string, ignoreCase: boolean, literal: boolean, contextBefore = 1, contextAfter = 3): string[] {\n\tconst normalized = normalizeSearchPattern(pattern, ignoreCase);\n\tif (!literal && !normalized.pattern.includes(\"\\n\") && !pattern.includes(\"\\\\n\")) try { const native = loadNativeSearchBinding()?.search?.(text, { pattern: normalized.pattern, ignoreCase: normalized.flags.includes(\"i\"), multiline: normalized.flags.includes(\"m\") || normalized.flags.includes(\"s\"), contextBefore, contextAfter }); if (native && !native.error) return native.matches.flatMap((match) => [...(match.contextBefore ?? []).map((line) => `${label}-${line.lineNumber}- ${truncateSearchLine(line.line)}`), `${label}:${match.lineNumber}: ${truncateSearchLine(match.line)}`, ...(match.contextAfter ?? []).map((line) => `${label}-${line.lineNumber}- ${truncateSearchLine(line.line)}`)]); } catch {}\n\tconst matcher = literal ? undefined : new RegExp(normalized.pattern, normalized.flags);\n\tconst needle = normalized.flags.includes(\"i\") ? normalized.pattern.toLowerCase() : normalized.pattern;\n\tconst lines = text.split(\"\\n\");\n\tconst matchLines = new Set<number>();\n\tlines.forEach((line, index) => { const haystack = normalized.flags.includes(\"i\") ? line.toLowerCase() : line; if (matcher ? matcher.test(line) : haystack.includes(needle)) matchLines.add(index + 1); });\n\tif (matchLines.size === 0 && matcher) { const match = new RegExp(normalized.pattern, normalized.flags).exec(text); if (match?.[0]) { const start = text.slice(0, match.index).split(\"\\n\").length; for (let line = start; line < start + match[0].split(\"\\n\").length; line++) matchLines.add(line); } }\n\tconst outputLines = new Set<number>();\n\tfor (const line of matchLines) for (let n = Math.max(1, line - contextBefore); n <= Math.min(lines.length, line + contextAfter); n++) outputLines.add(n);\n\treturn [...outputLines].sort((a, b) => a - b).map((line) => `${label}${matchLines.has(line) ? \":\" : \"-\"}${line}${matchLines.has(line) ? \":\" : \"-\"} ${truncateSearchLine(lines[line - 1] ?? \"\")}`);\n}\n\nexport function searchArchiveSelector(selector: ArchiveSelector, pattern: string, ignoreCase = false, literal = false, contextBefore = 1, contextAfter = 3): string {\n\tif (isZipArchive(selector.archivePath) && selector.memberPath) return searchTextSelectorLines(`${selector.archivePath}:${selector.memberPath}`, readArchiveSelector(selector), pattern, ignoreCase, literal, contextBefore, contextAfter).join(\"\\n\");\n\tconst entries = isZipArchive(selector.archivePath) ? readZipEntries(selector.archivePath) : parseTar(selector.archivePath); const out: string[] = [];\n\tfor (const [name, data] of entries) { if (selector.memberPath && name !== selector.memberPath) continue; out.push(...searchTextSelectorLines(`${selector.archivePath}:${name}`, data.toString(\"utf8\"), pattern, ignoreCase, literal, contextBefore, contextAfter)); }\n\treturn out.join(\"\\n\");\n}\n\nfunction routerFromContext(context?: InternalResourceContext): InternalResourceRouter | undefined { return context?.internalRouter ?? context?.internalResourceRouter; }\nasync function resolveViaRouter(value: string, cwd: string, context?: InternalResourceContext): Promise<string | undefined> {\n\tconst router = routerFromContext(context); const routed = await router?.resolve?.(value); if (routed) return routed;\n\tconst resolved = await context?.resolveInternalUrl?.(value); if (resolved) return resolved;\n\treturn resolveInternalSelector(value, cwd);\n}\nfunction isContained(root: string, candidate: string): boolean {\n\tconst rel = relative(root, candidate);\n\treturn rel === \"\" || (!rel.startsWith(\"..\") && !isAbsolute(rel));\n}\nfunction nearestExistingAncestor(pathValue: string): string {\n\tlet current = pathValue;\n\twhile (!existsSync(current)) { const parent = dirname(current); if (parent === current) return current; current = parent; }\n\treturn current;\n}\nfunction realpathExisting(pathValue: string): string { return realpathSync.native(nearestExistingAncestor(pathValue)); }\nfunction resolveContainedPath(root: string, pathValue: string, label: string): string {\n\tconst lexicalRoot = resolve(root), resolved = resolve(root, pathValue);\n\tif (!isContained(lexicalRoot, resolved)) throw new Error(`${label} escapes the workspace: ${pathValue}`);\n\tif (!isContained(realpathExisting(lexicalRoot), realpathExisting(resolved))) throw new Error(`${label} escapes the workspace: ${pathValue}`);\n\treturn resolved;\n}\nfunction resolveContainedLocalPath(cwd: string, pathValue: string, label = \"local:// resource\"): string { return resolveContainedPath(cwd, pathValue, label); }\n\nfunction fallbackInternalPath(value: string, cwd: string): string | undefined {\n\tconst skill = value.match(/^skill:\\/\\/([^/]+)\\/?(.*)$/); if (skill) { const name = skill[1] ?? \"\", rest = skill[2] || \"SKILL.md\"; return [\".agents/skills\", \"packages/subagents/skills\", \"packages/workflows/skills\"].map((base) => resolveContainedPath(resolveContainedLocalPath(cwd, base, \"skill:// resource\"), `${name}/${rest}`, \"skill:// resource\")).find((candidate) => existsSync(candidate)); }\n\tconst local = value.match(/^local:\\/\\/(.+)$/); if (local) return resolveContainedLocalPath(cwd, local[1] ?? \"\");\n\treturn undefined;\n}\nexport function resolveInternalSelector(value: string, cwd: string): string | undefined { return fallbackInternalPath(value, cwd); }\nexport async function readInternalSelector(value: string, cwd: string, context?: InternalResourceContext): Promise<string> {\n\tconst router = routerFromContext(context); const routed = await router?.read?.(value); if (typeof routed === \"string\") return routed; if (Buffer.isBuffer(routed)) return routed.toString(\"utf8\");\n\tconst resolved = await resolveViaRouter(value, cwd, context); if (!resolved || !existsSync(resolved)) throw new Error(`Internal resource not found or no session router supports it: ${value}`); return readFileSync(resolved, \"utf8\");\n}\nexport async function writeInternalSelector(value: string, cwd: string, content: string, context?: InternalResourceContext): Promise<void> {\n\tconst router = routerFromContext(context); if (router?.write) { await router.write(value, content); return; }\n\tconst resolved = await resolveViaRouter(value, cwd, context); if (!resolved) throw new Error(`Unsupported writable internal resource without a session router: ${value}`); mkdirSync(dirname(resolved), { recursive: true }); writeFileSync(resolved, content);\n}\nexport async function searchInternalSelector(value: string, cwd: string, pattern: string, ignoreCase = false, literal = false, context?: InternalResourceContext, contextBefore = 1, contextAfter = 3): Promise<string> {\n\treturn searchTextSelectorLines(value, await readInternalSelector(value, cwd, context), pattern, ignoreCase, literal, contextBefore, contextAfter).join(\"\\n\");\n}\nfunction shellQuote(value: string): string { return `'${value.replace(/'/g, `'\\\\''`)}'`; }\nexport async function expandShellInternalUrls(text: string, cwd: string, context?: InternalResourceContext, quote = false): Promise<string> {\n\tlet output = text; const matches = [...new Set(text.match(/[a-z][a-z0-9+.-]*:\\/\\/[^\\s'\"`$)]+/gi) ?? [])];\n\tfor (const match of matches) { const resolved = await resolveViaRouter(match, cwd, context); if (resolved) output = output.split(match).join(quote ? shellQuote(resolved) : resolved); }\n\treturn output;\n}\n\nconst ROW_COUNT_PROBE_CAP = 50_000;\nconst MAX_RAW_QUERY_ROWS = 1000;\n\nfunction quoteSqliteIdent(value: string): string { return `\"${value.replace(/\"/g, '\"\"')}\"`; }\nfunction formatSqliteOrder(order: string | undefined): string {\n\tif (!order) return \"\";\n\treturn order.split(\",\").map((part) => {\n\t\tconst [column, direction] = part.split(\":\");\n\t\tif (!column || !/^[A-Za-z_][\\w$]*$/.test(column)) throw new Error(`Invalid SQLite order column: ${part}`);\n\t\tconst dir = direction?.toLowerCase() === \"desc\" ? \"desc\" : \"asc\";\n\t\treturn `${quoteSqliteIdent(column)} ${dir}`;\n\t}).join(\", \");\n}\nconst FORBIDDEN_WHERE_KEYWORDS = new Set([\"limit\", \"offset\", \"union\", \"intersect\", \"except\", \"attach\", \"detach\", \"pragma\", \"select\", \"load_extension\"]);\nfunction validateSqliteWhere(where: string | undefined): string | undefined {\n\tconst trimmed = where?.trim(); if (!trimmed) return undefined;\n\tlet quote = \"\", token = \"\";\n\tconst flush = () => { const lower = token.toLowerCase(); if (token && (FORBIDDEN_WHERE_KEYWORDS.has(lower) || lower.startsWith(\"pragma_\") || lower.startsWith(\"sqlite_\"))) throw new Error(\"Invalid SQLite where filter\"); token = \"\"; };\n\tfor (let i = 0; i < trimmed.length; i++) { const ch = trimmed[i], next = trimmed[i + 1]; if (quote === \"'\") { if (ch === \"'\" && next === \"'\") { i++; continue; } if (ch === \"'\") quote = \"\"; continue; } if (quote === \"\\\"\") { if (ch === \"\\\"\" && next === \"\\\"\") { i++; continue; } if (ch === \"\\\"\") { quote = \"\"; flush(); continue; } if (ch && /[A-Za-z0-9_]/.test(ch)) { token += ch; continue; } flush(); token = ch; continue; } if (ch === \"'\" || ch === \"\\\"\") { flush(); quote = ch; continue; } if (ch === \";\" || ch === \"-\" && next === \"-\" || ch === \"/\" && next === \"*\" || ch === \"*\" && next === \"/\") throw new Error(\"Invalid SQLite where filter\"); if (ch && /[A-Za-z0-9_]/.test(ch)) { token += ch; continue; } flush(); }\n\tflush();\n\treturn trimmed;\n}\nfunction rowsToJsonLines(rows: Record<string, SqliteValue>[]): string { return rows.map((row) => JSON.stringify(row)).join(\"\\n\"); }\n\nconst FORBIDDEN_RAW_QUERY_KEYWORDS = new Set([\"attach\", \"detach\", \"pragma\", \"insert\", \"update\", \"delete\", \"drop\", \"alter\", \"create\", \"replace\", \"vacuum\", \"reindex\", \"load_extension\", \"union\", \"intersect\", \"except\"]);\nfunction validateRawSqliteQuery(query: string): string {\n\tconst trimmed = query.trim(); if (!trimmed) throw new Error(\"SQLite raw query must not be empty\"); if (!/^select\\b/i.test(trimmed)) throw new Error(\"Invalid raw SQLite query\");\n\tlet quote = \"\", token = \"\";\n\tconst flush = () => { const lower = token.toLowerCase(); if (lower && (FORBIDDEN_RAW_QUERY_KEYWORDS.has(lower) || lower.startsWith(\"sqlite_\") || lower.startsWith(\"pragma_\"))) throw new Error(\"Invalid raw SQLite query\"); token = \"\"; };\n\tfor (let i = 0; i < trimmed.length; i++) { const ch = trimmed[i], next = trimmed[i + 1]; if (quote === \"'\") { if (ch === \"'\" && next === \"'\") { i++; continue; } if (ch === \"'\") quote = \"\"; continue; } if (quote === \"\\\"\") { if (ch === \"\\\"\" && next === \"\\\"\") { i++; continue; } if (ch === \"\\\"\") { quote = \"\"; flush(); continue; } if (ch && /[A-Za-z0-9_]/.test(ch)) { token += ch; continue; } flush(); token = ch; continue; } if (ch === \"'\" || ch === \"\\\"\") { flush(); quote = ch; continue; } if (ch === \";\" || ch === \"-\" && next === \"-\" || ch === \"/\" && next === \"*\" || ch === \"*\" && next === \"/\") throw new Error(\"Invalid raw SQLite query\"); if (ch && /[A-Za-z0-9_]/.test(ch)) { token += ch; continue; } flush(); }\n\tflush();\n\tif (quote) throw new Error(\"Invalid raw SQLite query\");\n\treturn trimmed;\n}\n\nfunction readRawSqliteRows(query: SqliteQuery): Record<string, SqliteValue>[] { const rows: Record<string, SqliteValue>[] = []; const iterable = query.iterate?.(); if (!iterable) return query.all().slice(0, MAX_RAW_QUERY_ROWS); for (const row of iterable) { if (rows.length >= MAX_RAW_QUERY_ROWS) break; rows.push(row); } return rows; }\n\nfunction sqliteTableColumns(db: SqliteDatabase, table: string): string[] { return (db.query(`pragma table_info(${quoteSqliteIdent(table)})`).all() as Array<{ name?: string }>).map((row) => String(row.name ?? \"\")).filter(Boolean); }\n\nfunction boundedSqliteRowCount(db: SqliteDatabase, table: string): string | number { const row = db.query(`select count(*) as count from (select 1 from ${quoteSqliteIdent(table)} limit ${ROW_COUNT_PROBE_CAP + 1})`).all()[0]; const count = Number(row?.count ?? 0); return count > ROW_COUNT_PROBE_CAP ? `${ROW_COUNT_PROBE_CAP}+` : count; }\nfunction normalizeSqliteWriteValue(value: unknown, column: string): SqliteValue {\n\tif (value === null || typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") return value;\n\tthrow new Error(`SQLite column '${column}' only accepts JSON scalar values or null`);\n}\n\nfunction sqlitePrimaryKey(db: SqliteDatabase, table: string): string { return (db.query(`pragma table_info(${quoteSqliteIdent(table)})`).all() as Array<{ name?: string; pk?: number }>).find((row) => row.pk === 1)?.name ?? \"rowid\"; }\nexport function readSqliteSelector(selector: SqliteSelector): string {\n\tconst Database = sqliteDatabase();\n\tconst db = new Database(selector.databasePath, { readonly: true });\n\ttry {\n\t\tif (selector.query) return rowsToJsonLines(readRawSqliteRows(db.query(validateRawSqliteQuery(selector.query))));\n\t\tif (!selector.table) {\n\t\t\tconst tables = db.query(\"select name from sqlite_master where type='table' and name not like 'sqlite_%' order by name\").all().slice(0, 500);\n\t\t\treturn tables.map((row) => { const name = String(row.name ?? \"\"); return JSON.stringify({ table: name, rows: boundedSqliteRowCount(db, name) }); }).join(\"\\n\");\n\t\t}\n\t\tconst schemaRows = db.query(`pragma table_info(${quoteSqliteIdent(selector.table)})`).all();\n\t\tif (selector.schema) return rowsToJsonLines(schemaRows);\n\t\tconst key = sqlitePrimaryKey(db, selector.table);\n\t\tconst where = selector.rowId ? `${quoteSqliteIdent(key)} = ?` : validateSqliteWhere(selector.where);\n\t\tconst order = formatSqliteOrder(selector.order);\n\t\tconst isQuery = selector.limit !== undefined || selector.offset !== undefined || selector.where || selector.order;\n\t\tconst limit = selector.sampleRows ?? selector.limit ?? (isQuery ? 20 : 5);\n\t\tconst offset = selector.offset ?? 0;\n\t\tconst sql = [`select * from ${quoteSqliteIdent(selector.table)}`, where ? `where ${where}` : \"\", order ? `order by ${order}` : \"\", \"limit ? offset ?\"].filter(Boolean).join(\" \");\n\t\tconst rows = selector.rowId ? db.query(sql).all(selector.rowId, limit, offset) : db.query(sql).all(limit, offset);\n\t\tif (selector.rowId || isQuery || selector.sampleRows !== undefined) return rowsToJsonLines(rows);\n\t\treturn [`# ${selector.table}`, \"Schema:\", rowsToJsonLines(schemaRows), \"Rows:\", rowsToJsonLines(rows)].join(\"\\n\");\n\t} finally { db.close(); }\n}\nfunction stripJson5Comments(input: string): string {\n\tlet out = \"\", quote = \"\", escaped = false;\n\tfor (let i = 0; i < input.length; i++) { const ch = input[i]!, next = input[i + 1]; if (escaped) { out += ch; escaped = false; continue; } if (quote) { out += ch; if (ch === \"\\\\\") escaped = true; else if (ch === quote) quote = \"\"; continue; } if (ch === '\"' || ch === \"'\") { quote = ch; out += ch; continue; } if (ch === \"/\" && next === \"/\") { while (i < input.length && input[i] !== \"\\n\") i++; out += \"\\n\"; continue; } if (ch === \"/\" && next === \"*\") { i += 2; while (i < input.length && !(input[i] === \"*\" && input[i + 1] === \"/\")) i++; i++; continue; } out += ch; }\n\treturn out;\n}\nfunction parseLooseJsonObject(content: string): Record<string, SqliteValue> {\n\tconst trimmed = stripJson5Comments(content.trim());\n\tif (!trimmed) throw new Error(\"SQLite write content must be a JSON object; empty content only deletes a row when a row id is present.\");\n\tlet parsed: unknown;\n\ttry { parsed = JSON.parse(trimmed); } catch {\n\t\tconst normalized = trimmed.replace(/([{,]\\s*)([A-Za-z_$][\\w$]*)\\s*:/g, '$1\"$2\":').replace(/:\\s*\\+(-?\\d+(?:\\.\\d+)?)/g, \":$1\").replace(/(:\\s*)0x[0-9a-fA-F]+/g, (match, prefix: string) => `${prefix}${Number.parseInt(match.slice(prefix.length + 2), 16)}`).replace(/'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)'/g, (_match, body: string) => JSON.stringify(body.replace(/\\\\'/g, \"'\"))).replace(/,\\s*([}\\]])/g, \"$1\");\n\t\tparsed = JSON.parse(normalized);\n\t}\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) throw new Error(\"SQLite write content must be a JSON object.\");\n\treturn Object.fromEntries(Object.entries(parsed as Record<string, unknown>).map(([column, value]) => [column, normalizeSqliteWriteValue(value, column)]));\n}\nexport function writeSqliteSelector(selector: SqliteSelector, content: string): string {\n\tif (!selector.table) throw new Error(\"SQLite write target must include a table name\"); if (!existsSync(selector.databasePath)) throw new Error(`SQLite database does not exist: ${selector.databasePath}`); if (content.trim() === \"\") { if (!selector.rowId) throw new Error(\"SQLite empty content deletes a row only when a row id is present.\"); const Database = sqliteDatabase(); const db = new Database(selector.databasePath); try { const table = selector.table; const result = db.query(`delete from ${quoteSqliteIdent(table)} where ${quoteSqliteIdent(sqlitePrimaryKey(db, table))} = ?`).run(selector.rowId); return (result.changes ?? 0) > 0 ? `Deleted row '${selector.rowId}' in ${table}` : `No row deleted for '${selector.rowId}' in ${table}`; } finally { db.close(); } } const data = parseLooseJsonObject(content); const Database = sqliteDatabase(); const db = new Database(selector.databasePath);\n\ttry { const table = selector.table; const quotedTable = quoteSqliteIdent(table); const key = sqlitePrimaryKey(db, table); const quotedKey = quoteSqliteIdent(key); const validColumns = new Set(sqliteTableColumns(db, table)); if (!selector.rowId && key !== \"id\" && Object.hasOwn(data, \"id\") && !Object.hasOwn(data, key)) { data[key] = data.id; delete data.id; } const columns = Object.keys(data); for (const column of columns) if (!validColumns.has(column)) throw new Error(`SQLite table '${table}' has no column named '${column}'`); if (columns.length === 0) { if (!selector.rowId) { db.query(`insert into ${quotedTable} default values`).run(); return `Inserted row into ${table}`; } throw new Error(\"SQLite update content must include at least one column.\"); } if (!selector.rowId) { const quoted = columns.map(quoteSqliteIdent).join(\", \"); db.query(`insert into ${quotedTable} (${quoted}) values (${columns.map(() => \"?\").join(\", \")})`).run(...columns.map((column) => data[column])); return `Inserted row into ${table}`; } const assignments = columns.map((column) => `${quoteSqliteIdent(column)} = ?`).join(\", \"); const result = db.query(`update ${quotedTable} set ${assignments} where ${quotedKey} = ?`).run(...columns.map((column) => data[column]), selector.rowId); return (result.changes ?? 0) > 0 ? `Updated row '${selector.rowId}' in ${table}` : `No row updated for '${selector.rowId}' in ${table}`; } finally { db.close(); }\n}\nexport function searchSqliteSelector(selector: SqliteSelector, pattern: string, ignoreCase = false, contextBefore = 1, contextAfter = 3): string {\n\tconst normalized = normalizeSearchPattern(pattern, ignoreCase);\n\tconst matcher = new RegExp(normalized.pattern, normalized.flags);\n\tif (!selector.table || selector.query) return searchTextSelectorLines(`${selector.databasePath}:${selector.table ?? \"tables\"}`, readSqliteSelector(selector), pattern, ignoreCase, false, contextBefore, contextAfter).join(\"\\n\");\n\tconst Database = sqliteDatabase();\n\tconst db = new Database(selector.databasePath, { readonly: true });\n\ttry {\n\t\tconst key = sqlitePrimaryKey(db, selector.table);\n\t\tconst where = selector.rowId ? `${quoteSqliteIdent(key)} = ?` : validateSqliteWhere(selector.where);\n\t\tconst order = formatSqliteOrder(selector.order);\n\t\tconst limit = selector.sampleRows ?? selector.limit ?? 1000;\n\t\tconst offset = selector.offset ?? 0;\n\t\tconst rowIdAlias = \"__atomic_rowid__\";\n\t\tconst selectList = key === \"rowid\" ? `rowid as ${quoteSqliteIdent(rowIdAlias)}, *` : \"*\";\n\t\tconst sql = [`select ${selectList} from ${quoteSqliteIdent(selector.table)}`, where ? `where ${where}` : \"\", order ? `order by ${order}` : \"\", \"limit ? offset ?\"].filter(Boolean).join(\" \");\n\t\tconst rows = selector.rowId ? db.query(sql).all(selector.rowId, limit, offset) : db.query(sql).all(limit, offset);\n\t\treturn rows.map((rawRow, index) => {\n\t\t\tconst row = rawRow as Record<string, unknown>;\n\t\t\tconst rowKey = key === \"rowid\" ? row[rowIdAlias] : row[key];\n\t\t\tif (key === \"rowid\") delete row[rowIdAlias];\n\t\t\treturn { row, key: String(rowKey ?? offset + index + 1) };\n\t\t}).filter(({ row }) => matcher.test(JSON.stringify(row))).map(({ row, key }) => `${selector.databasePath}:${selector.table}:${key}: ${truncateSearchLine(JSON.stringify(row))}`).join(\"\\n\");\n\t} finally { db.close(); }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"resource-selectors.d.ts","sourceRoot":"","sources":["../../../src/core/tools/resource-selectors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-details.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC3F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,iBAAiB,CAQpK"
|
|
1
|
+
{"version":3,"file":"search-details.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search-details.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC3F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,iBAAiB,CAQpK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-line-ranges.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search-line-ranges.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,SAAS,CAuB9E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAMtG;AAQD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EAAE,aAAa,SAAI,EAAE,YAAY,SAAI,GAAG,MAAM,CAevJ"
|
|
1
|
+
{"version":3,"file":"search-line-ranges.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search-line-ranges.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,SAAS,CAuB9E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAMtG;AAQD,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,eAAe,EAAE,GAAG,SAAS,EAAE,aAAa,SAAI,EAAE,YAAY,SAAI,GAAG,MAAM,CAevJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-native.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search-native.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,GAAG;IACpB,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChE,IAAI,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,uBAAuB,KAAK,sBAAsB,CAAC;IACpG,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,KAAK,OAAO,CAAC;IAC5I,qBAAqB,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACxH,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,kBAAkB,CAAC;IAChD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,iBAAiB,GAAG,QAAQ,GAAG,WAAW,CAAC,CAAC;AAChL,MAAM,MAAM,sBAAsB,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAIlJ,wBAAgB,6BAA6B,IAAI,IAAI,CAEpD;AAED,wBAAgB,uBAAuB,IAAI,aAAa,GAAG,IAAI,CAe9D;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAE/D"
|
|
1
|
+
{"version":3,"file":"search-native.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search-native.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAuD,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAKhH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,QAAA,MAAM,YAAY;;;;;;;EAYiB,CAAC;AACpC,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAAE,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA2N3I,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,OAAO,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAyMpE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC,OAAO,YAAY,CAAC,CAEzG","sourcesContent":["import { existsSync } from \"node:fs\";\nimport { readFile as fsReadFile, stat as fsStat } from \"node:fs/promises\";\nimport { dirname, join, resolve as resolvePath } from \"node:path\";\nimport type { AgentTool } from \"@earendil-works/pi-agent-core\";\nimport { Text } from \"@earendil-works/pi-tui\";\nimport { type Static, Type } from \"typebox\";\nimport type { ToolDefinition, ToolRenderResultOptions } from \"../extensions/types.ts\";\nimport {\n\tcreateGrepToolDefinition,\n\ttype GrepToolOptions,\n} from \"./grep.ts\";\nimport { normalizePathLikeInput, splitPathLikeGlob } from \"./glob-path-utils.ts\";\nimport { createHashlineSnapshotStore, recordHashlineSnapshot, type HashlineSnapshotStore } from \"./hashline.ts\";\nimport { invalidArgText, shortenPath, str } from \"./render-utils.ts\";\nimport { resolveToCwd } from \"./path-utils.ts\";\nimport { parseArchiveSelector, readArchiveSelector, resolveArchiveSelector, resolveInternalSelector, searchArchiveSelector, searchInternalSelector, searchSqliteSelector, sqliteSelectorForPath, type InternalResourceContext, type SqliteSelector } from \"./resource-selectors.ts\";\nimport { DEFAULT_MAX_BYTES, formatSize, truncateHead } from \"./truncate.ts\";\nimport { buildSearchDetails, type SearchToolDetails } from \"./search-details.ts\";\nimport { filterSearchOutputByLineRange, splitLineRangeSelector, type SearchLineRange } from \"./search-line-ranges.ts\";\nimport { wrapToolDefinition } from \"./tool-definition-wrapper.ts\";\nexport type { SearchToolDetails } from \"./search-details.ts\";\nconst searchSchema = Type.Object({\n\tpattern: Type.String({ description: \"Regex pattern. Whitespace-only patterns are rejected; otherwise the pattern is preserved verbatim.\" }),\n\tpaths: Type.Optional(\n\t\tType.Union([\n\t\t\tType.String({ description: \"File, directory, glob, internal URL, or <file>:<lines> selector to search. Omitted or empty searches the workspace root.\" }),\n\t\t\tType.Array(Type.String({ description: \"File, directory, glob, internal URL, or <file>:<lines> selector to search.\" })),\n\t\t]),\n\t),\n\ti: Type.Optional(Type.Boolean({ description: \"Case-insensitive search.\" })),\n\tgitignore: Type.Optional(Type.Boolean({ description: \"Respect gitignore.\" })),\n\tcase: Type.Optional(Type.Boolean({ description: \"Set false for case-insensitive search (oh-my-pi compatibility).\" })),\n\tskip: Type.Optional(Type.Union([Type.Number({ description: \"Files to skip before collecting results; use to paginate when the previous call hit the file limit.\" }), Type.Null()])),\n}, { additionalProperties: false });\nexport type SearchToolInput = Static<typeof searchSchema>;\nexport type SearchToolOptions = GrepToolOptions & { hashlineStore?: HashlineSnapshotStore; contextBefore?: number; contextAfter?: number };\nfunction delimiterInExistingSearchGlobRoot(value: string, cwd: string): boolean { const selector = splitLineRangeSelector(value); const parsed = splitPathLikeGlob(selector.path); return !!parsed.glob && /[;,\\s]/.test(parsed.basePath) && existsSync(resolveToCwd(parsed.basePath, cwd)); }\nfunction archiveSelectorExists(value: string, cwd: string): boolean { const archive = parseArchiveSelector(value); if (!archive) return false; const resolved = resolveArchiveSelector(archive, cwd); if (!existsSync(resolved.archivePath)) return false; if (!resolved.memberPath) return true; try { readArchiveSelector(resolved); return true; } catch { return false; } }\nfunction searchPathResolvable(value: string, cwd: string): boolean { const selector = splitLineRangeSelector(value), archive = parseArchiveSelector(selector.path); if (archive) return archiveSelectorExists(selector.path, cwd); const sqlite = sqliteSelectorForPath(selector.path, cwd); return !!sqlite || /^(?:skill|agent|artifact|history|issue|local|memory|pr|conflict|omp|rule|mcp|vault):\\/\\//.test(selector.path) || existsSync(resolveToCwd(splitPathLikeGlob(selector.path).basePath, cwd)); }\n\nfunction normalizePaths(pathsValue: string | string[] | undefined, cwd: string): string[] {\n\tconst inputs = Array.isArray(pathsValue) ? (pathsValue.length > 0 ? pathsValue : [\".\"]) : pathsValue === undefined ? [\".\"] : [pathsValue];\n\tconst expanded: string[] = [];\n\tfor (const input of inputs) {\n\t\tconst raw = normalizePathLikeInput(input);\n\t\tif (raw === \"\") { expanded.push(\".\"); continue; }\n\t\tconst resourceLike = /^[a-z]+:\\/\\//i.test(raw) || /^[^:]+\\.(?:zip|jar|tar|tgz|gz|sqlite|db):/i.test(raw);\n\t\tif (existsSync(resolveToCwd(splitLineRangeSelector(raw).path, cwd)) || delimiterInExistingSearchGlobRoot(raw, cwd) || archiveSelectorExists(raw, cwd)) { expanded.push(raw); continue; }\n\t\tconst chunks = raw.split(/[;\\s]+/).map(normalizePathLikeInput).filter(Boolean);\n\t\tconst parts = chunks.flatMap((chunk) => searchPathResolvable(chunk, cwd) ? [chunk] : chunk.split(\",\").map(normalizePathLikeInput).filter(Boolean));\n\t\tconst commaOrSemicolon = /[;,]/.test(raw), canSplit = commaOrSemicolon ? parts.some((part) => searchPathResolvable(part, cwd)) : parts.every((part) => searchPathResolvable(part, cwd));\n\t\tif (parts.length > 1 && canSplit) expanded.push(...parts);\n\t\telse if (resourceLike) expanded.push(raw);\n\t\telse expanded.push(raw);\n\t}\n\treturn expanded;\n}\n\ninterface SearchTarget {\n\tpath: string;\n\tglob?: string;\n\tlineRanges?: SearchLineRange[];\n\tarchive?: ReturnType<typeof parseArchiveSelector>;\n\tsqlite?: SqliteSelector;\n\tinternal?: string;\n}\n\ninterface SearchOutputGroup {\n\tpath: string;\n\tlines: string[];\n}\n\ninterface PagedSearchOutputGroup {\n\ttargetPath: string;\n\tvirtual: boolean;\n\tgroup: SearchOutputGroup;\n}\n\nconst DEFAULT_LIMIT = 20, INTERNAL_SKIP_LIMIT = 2000, MULTI_FILE_PER_FILE_MATCHES = 20, SINGLE_FILE_MATCHES = 200;\n\nfunction normalizeSkip(skip: number | null | undefined): number {\n\tif (skip === undefined || skip === null) return 0;\n\tif (!Number.isFinite(skip) || skip < 0) throw new Error(\"Skip must be a non-negative number\");\n\treturn Math.floor(skip);\n}\nfunction markFileLimit(details: SearchToolDetails, limit: number): void {\n\tdetails.fileLimitReached = true;\n\tdetails.meta = { ...(details.meta ?? {}), limits: { ...(details.meta?.limits ?? {}), fileLimit: limit } };\n}\nfunction fileLimitDetails(limit: number): SearchToolDetails { const details: SearchToolDetails = {}; markFileLimit(details, limit); return details; }\nfunction continuationHint(limit: number, skip: number): string { return `[${limit} matching files shown. Use skip=${skip + limit} to view more.]`; }\nfunction internalCapHint(): string { return `[Search collected the first ${INTERNAL_SKIP_LIMIT} matches before pagination; refine the pattern or path for later results.]`; }\nfunction hasFileLimit(details: unknown): boolean { return typeof details === \"object\" && details !== null && (details as { fileLimitReached?: unknown }).fileLimitReached === true; }\n\nfunction isResourceSelector(value: string): boolean {\n\treturn /^[^:]+\\.(zip|jar|tar|tgz|gz|sqlite|db):/i.test(value) || /^[a-z]+:\\/\\//i.test(value) || value.startsWith(\"skill://\");\n}\n\nfunction normalizeSearchTargets(pathsValue: string | string[] | undefined, cwd: string): SearchTarget[] {\n\treturn normalizePaths(pathsValue, cwd).map((searchPath) => {\n\t\tconst directSqlite = sqliteSelectorForPath(searchPath, cwd);\n\t\tif (directSqlite?.rowId) return { path: searchPath, sqlite: directSqlite };\n\t\tif (archiveSelectorExists(searchPath, cwd)) { const archive = parseArchiveSelector(searchPath)!; return { path: searchPath, archive }; }\n\t\tconst selector = splitLineRangeSelector(searchPath);\n\t\tconst sqliteDirect = sqliteSelectorForPath(selector.path, cwd);\n\t\tif (sqliteDirect) return { path: selector.path, lineRanges: selector.lineRanges, sqlite: sqliteDirect };\n\t\tconst archive = parseArchiveSelector(selector.path);\n\t\tif (archive) return { path: selector.path, lineRanges: selector.lineRanges, archive };\n\t\tif (selector.path.startsWith(\"local://\")) { const sourcePath = resolveInternalSelector(selector.path, cwd); if (sourcePath) { const parsed = splitPathLikeGlob(sourcePath); return { path: parsed.basePath, glob: parsed.glob, lineRanges: selector.lineRanges }; } }\n\t\tif (/^(?:skill|agent|artifact|history|issue|local|memory|pr|conflict|omp|rule|mcp|vault):\\/\\//.test(selector.path)) return { path: selector.path, lineRanges: selector.lineRanges, internal: selector.path };\n\t\tif (isResourceSelector(selector.path)) throw new Error(`Search resource selectors are not supported by this filesystem backend: ${searchPath}`);\n\t\tconst parsed = splitPathLikeGlob(selector.path);\n\t\treturn { path: parsed.basePath, glob: parsed.glob, lineRanges: selector.lineRanges };\n\t});\n}\n\n\nfunction stripExtendedRegexWhitespace(pattern: string): string { let out = \"\", escaped = false, inClass = false, inComment = false; for (const ch of pattern) { if (inComment) { if (ch === \"\\n\" || ch === \"\\r\") inComment = false; continue; } if (escaped) { out += ch; escaped = false; continue; } if (ch === \"\\\\\") { out += ch; escaped = true; continue; } if (ch === \"[\") inClass = true; else if (ch === \"]\") inClass = false; if (!inClass && ch === \"#\") { inComment = true; continue; } if (!inClass && /\\s/.test(ch)) continue; out += ch; } return out; }\nfunction normalizeInlineSearchPattern(pattern: string, ignoreCase: boolean): { pattern: string; flags: string } { const match = pattern.match(/^\\(\\?([imsUx-]+)\\)([\\s\\S]*)$/), flags = new Set<string>(); if (ignoreCase) flags.add(\"i\"); if (match) { const inline = match[1] ?? \"\"; for (const flag of inline) if (flag === \"i\" || flag === \"m\" || flag === \"s\") flags.add(flag); return { pattern: inline.includes(\"x\") ? stripExtendedRegexWhitespace(match[2] ?? \"\") : match[2] ?? \"\", flags: [...flags].join(\"\") }; } return { pattern, flags: [...flags].join(\"\") }; }\n\nasync function searchFileLineRanges(target: SearchTarget, cwd: string, pattern: string, ignoreCase: boolean, contextBefore = 1, contextAfter = 3): Promise<string | undefined> {\n\tif (!target.lineRanges?.length || target.glob || target.archive || target.sqlite || target.internal) return undefined;\n\tconst absolutePath = resolveToCwd(target.path, cwd);\n\tif (!await fsStat(absolutePath).then((stat) => stat.isFile()).catch(() => false)) return undefined;\n\tconst source = (await fsReadFile(absolutePath, \"utf8\")).split(\"\\n\");\n\tconst normalized = normalizeInlineSearchPattern(pattern, ignoreCase);\n\tlet regex: RegExp;\n\ttry { regex = new RegExp(normalized.pattern, normalized.flags); } catch { return undefined; }\n\tconst matchLines = new Set<number>();\n\tsource.forEach((line, index) => { regex.lastIndex = 0; if (regex.test(line)) matchLines.add(index + 1); });\n\tconst outputLines = new Set<number>();\n\tfor (const line of matchLines) for (let n = Math.max(1, line - contextBefore); n <= Math.min(source.length, line + contextAfter); n++) outputLines.add(n);\n\tconst text = [...outputLines].sort((a, b) => a - b).map((n) => `${target.path}${matchLines.has(n) ? \":\" : \"-\"}${n}${matchLines.has(n) ? \":\" : \"-\"} ${source[n - 1] ?? \"\"}`).join(\"\\n\") || \"No matches found\";\n\treturn filterSearchOutputByLineRange(text, target.lineRanges, contextBefore, contextAfter);\n}\n\nfunction groupSearchOutput(text: string): SearchOutputGroup[] {\n\tconst groups: SearchOutputGroup[] = [];\n\tconst byPath = new Map<string, SearchOutputGroup>();\n\tfor (const line of text.split(\"\\n\")) {\n\t\tconst match = line.match(/^(.+?)(?::[^:]+: |:\\d+: |-\\d+- )/);\n\t\tif (!match) continue;\n\t\tconst filePath = match[1]!;\n\t\tlet current = byPath.get(filePath);\n\t\tif (!current) { current = { path: filePath, lines: [] }; byPath.set(filePath, current); groups.push(current); }\n\t\tif (!current.lines.includes(line)) current.lines.push(line);\n\t}\n\treturn groups;\n}\nfunction isVirtualSearchTarget(target: SearchTarget | undefined): boolean { return !!(target?.archive || target?.sqlite || target?.internal); }\n\n\nasync function addHashlineHeadersToSearchOutput(text: string, cwd: string, targetPath: string, hashlineStore: HashlineSnapshotStore): Promise<string> {\n\tconst groups = groupSearchOutput(text);\n\tif (groups.length === 0) return text;\n\tconst searchRoot = resolveToCwd(targetPath, cwd);\n\tconst targetIsFile = await fsStat(searchRoot).then((stat) => stat.isFile()).catch(() => false);\n\tconst rendered: string[] = [];\n\tlet lastDir = \"\";\n\tfor (const group of groups) {\n\t\tlet absolutePath = targetIsFile ? searchRoot : join(searchRoot, group.path);\n\t\ttry {\n\t\t\tawait fsReadFile(absolutePath);\n\t\t} catch {\n\t\t\tabsolutePath = resolvePath(cwd, group.path);\n\t\t}\n\t\ttry {\n\t\t\tconst content = await fsReadFile(absolutePath, \"utf-8\");\n\t\t\tconst snapshot = recordHashlineSnapshot(absolutePath, cwd, content, hashlineStore);\n\t\t\tconst dir = dirname(snapshot.displayPath);\n\t\t\tif (dir !== \".\" && dir !== lastDir) {\n\t\t\t\trendered.push(`# ${dir}/`);\n\t\t\t\tlastDir = dir;\n\t\t\t}\n\t\t\trendered.push(`[${snapshot.displayPath}#${snapshot.tag}]`);\n\t\t\tfor (const line of group.lines) {\n\t\t\t\tconst match = line.match(/^.+?(?::(\\d+): |-(\\d+)- )(.*)$/);\n\t\t\t\tif (match) rendered.push(`${match[1] ? \"*\" : \" \"}${match[1] ?? match[2]}:${match[3] ?? \"\"}`);\n\t\t\t}\n\t\t} catch {\n\t\t\trendered.push(...group.lines);\n\t\t}\n\t}\n\treturn rendered.join(\"\\n\");\n}\n\nfunction applyDefaultSearchContext(text: string, before = 1, after = 3): string {\n\tconst groups = groupSearchOutput(text);\n\tif (groups.length === 0) return text;\n\tconst output: string[] = [];\n\tfor (const group of groups) {\n\t\tconst byLine = new Map<number, { line: string; isMatch: boolean }>();\n\t\tfor (const line of group.lines) {\n\t\t\tconst match = line.match(/^(.+?)(?::(\\d+): |-(\\d+)- )(.*)$/);\n\t\t\tif (!match) continue;\n\t\t\tconst number = Number.parseInt(match[2] ?? match[3] ?? \"0\", 10);\n\t\t\tconst isMatch = match[2] !== undefined;\n\t\t\tconst existing = byLine.get(number);\n\t\t\tif (!existing || (isMatch && !existing.isMatch)) byLine.set(number, { line, isMatch });\n\t\t}\n\t\tconst matchNumbers = [...byLine.values()].filter((item) => item.isMatch).map((item) => Number.parseInt(item.line.match(/(?::(\\d+): |-(\\d+)- )/)?.[1] ?? item.line.match(/-(\\d+)- /)?.[1] ?? \"0\", 10));\n\t\tfor (const [number, item] of [...byLine.entries()].sort((a, b) => a[0] - b[0])) {\n\t\t\tif (item.isMatch || matchNumbers.some((lineNumber) => number >= lineNumber - before && number <= lineNumber + after)) output.push(item.line);\n\t\t}\n\t}\n\treturn output.join(\"\\n\");\n}\n\nfunction isSearchMatchLine(line: string): boolean { return /:\\d+: /.test(line); }\nfunction sliceGroupLinesByMatchCount(lines: readonly string[], matchLimit: number): string[] {\n\tif (matchLimit <= 0) return [];\n\tlet matches = 0; const output: string[] = [];\n\tfor (const line of lines) {\n\t\tif (isSearchMatchLine(line)) { if (matches >= matchLimit) break; matches++; }\n\t\toutput.push(line);\n\t}\n\treturn output;\n}\nfunction formatSearchGroups(groups: SearchOutputGroup[], limit: number, perFileLimit = 20): string {\n\treturn groups.slice(0, Math.max(0, limit)).flatMap((group) => sliceGroupLinesByMatchCount(group.lines, perFileLimit)).join(\"\\n\");\n}\n\nfunction dedupeRenderedSearchOutput(content: string): string {\n\tconst out: string[] = [], seen = new Set<string>(); let header = \"\", sawContinuationHint = false, sawCapHint = false;\n\tfor (const line of content.split(\"\\n\")) {\n\t\tconst h = line.match(/^\\[([^\\]#]+)#[0-9A-F]{4}\\]$/); if (h) header = h[1]!;\n\t\tif (/^\\[\\d+ matching files shown\\. Use skip=\\d+ to view more\\.\\]$/.test(line)) { if (sawContinuationHint) continue; sawContinuationHint = true; }\n\t\tif (line.startsWith(\"[Search collected the first \")) { if (sawCapHint) continue; sawCapHint = true; }\n\t\tconst m = header ? line.match(/^[* ]?(\\d+):/) : undefined;\n\t\tconst key = m ? `${header}:${m[1]}` : \"\"; if (key && seen.has(key)) continue; if (key) seen.add(key); out.push(line);\n\t}\n\treturn out.join(\"\\n\");\n}\nfunction formatSearchCall(\n\targs: { pattern: string; path?: string; paths?: string | string[]; glob?: string; limit?: number } | undefined,\n\ttheme: typeof import(\"../../modes/interactive/theme/theme.ts\").theme,\n): string {\n\tconst pattern = str(args?.pattern);\n\tconst rawPaths = Array.isArray(args?.paths) ? args.paths.join(\", \") : args?.paths;\n\tconst rawPath = str(args?.path ?? rawPaths);\n\tconst path = rawPath !== null ? shortenPath(rawPath || \".\") : null;\n\tconst glob = str(args?.glob);\n\tconst limit = args?.limit;\n\tconst invalidArg = invalidArgText(theme);\n\tlet text =\n\t\ttheme.fg(\"toolTitle\", theme.bold(\"search\")) +\n\t\t\" \" +\n\t\t(pattern === null ? invalidArg : theme.fg(\"accent\", `/${pattern || \"\"}/`)) +\n\t\ttheme.fg(\"toolOutput\", ` in ${path === null ? invalidArg : path}`);\n\tif (glob) text += theme.fg(\"toolOutput\", ` (${glob})`);\n\tif (limit !== undefined) text += theme.fg(\"toolOutput\", ` limit ${limit}`);\n\treturn text;\n}\n\nexport function createSearchToolDefinition(\n\tcwd: string,\n\toptions?: SearchToolOptions,\n): ToolDefinition<typeof searchSchema, SearchToolDetails | undefined> {\n\tconst grepDefinition = createGrepToolDefinition(cwd, { ...options, nativeCache: false });\n\tconst hashlineStore = options?.hashlineStore ?? createHashlineSnapshotStore();\n\treturn {\n\t\t...grepDefinition,\n\t\tname: \"search\",\n\t\tlabel: \"search\",\n\t\tdescription: \"Search file contents with a regex across files, directories, globs, and internal URLs.\",\n\t\tpromptSnippet: \"Search file contents with regex patterns.\",\n\t\tparameters: searchSchema,\n\t\tasync execute(toolCallId, params, signal, onUpdate, ctx) {\n\t\t\tconst resourceCtx = ctx as InternalResourceContext | undefined;\n\t\t\tif (params.pattern.trim() === \"\") throw new Error(\"Pattern must not be empty\");\n\t\t\tconst targets = normalizeSearchTargets(params.paths, cwd);\n\t\t\tconst ignoreCase = params.i === true || params.case === false;\n\t\t\tconst contextBefore = options?.contextBefore ?? 1, contextAfter = options?.contextAfter ?? 3, searchContext = Math.max(contextBefore, contextAfter);\n\t\t\tconst isSingleFileSearch = targets.length === 1 && await fsStat(resolveToCwd(targets[0]!.path, cwd)).then((stat) => stat.isFile()).catch(() => false);\n\t\t\tconst limit = isSingleFileSearch ? SINGLE_FILE_MATCHES : DEFAULT_LIMIT;\n\t\t\tlet skip = normalizeSkip(params.skip);\n\t\t\tconst singleFileSkipIgnored = skip > 0 && isSingleFileSearch;\n\t\t\tif (singleFileSkipIgnored) skip = 0;\n\t\t\tfor (const target of targets) {\n\t\t\t\tif (target.archive || target.sqlite || target.internal) continue;\n\t\t\t\tif (target.lineRanges && !await fsStat(resolveToCwd(target.path, cwd)).then((stat) => stat.isFile()).catch(() => false)) {\n\t\t\t\t\tthrow new Error(\"Line-range search selectors are only supported for single files\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst results: Awaited<ReturnType<typeof grepDefinition.execute>>[] = [];\n\t\t\tconst groups: PagedSearchOutputGroup[] = [];\n\t\t\tconst skippedMissingPaths: string[] = [];\n\t\t\tconst scopePath = targets.map((target) => target.path).join(\", \") || \".\";\n\t\t\tlet pageFullWithMore = false, internalSearchCapped = false;\n\t\t\tlet remaining = limit;\n\t\t\tconst targetHasMatch = async (target: SearchTarget): Promise<boolean> => {\n\t\t\t\tif (target.archive || target.sqlite || target.internal) {\n\t\t\t\t\tconst archive = target.archive ? resolveArchiveSelector(target.archive, cwd) : undefined;\n\t\t\t\t\tconst text = archive ? searchArchiveSelector(archive, params.pattern, ignoreCase, false, contextBefore, contextAfter) : target.sqlite ? searchSqliteSelector(target.sqlite, params.pattern, ignoreCase, contextBefore, contextAfter) : await searchInternalSelector(target.internal!, cwd, params.pattern, ignoreCase, false, resourceCtx, contextBefore, contextAfter);\n\t\t\t\t\treturn groupSearchOutput(filterSearchOutputByLineRange(text, target.lineRanges, contextBefore, contextAfter)).length > 0;\n\t\t\t\t}\n\t\t\t\tconst ranged = await searchFileLineRanges(target, cwd, params.pattern, ignoreCase, contextBefore, contextAfter);\n\t\t\t\tif (ranged !== undefined) return groupSearchOutput(ranged).length > 0;\n\t\t\t\tconst probe = await grepDefinition.execute(toolCallId, { pattern: params.pattern, path: target.path, glob: target.glob, ignoreCase, literal: false, context: 0, limit: 1, gitignore: params.gitignore }, signal, undefined, ctx);\n\t\t\t\treturn probe.content.some((item) => item.type === \"text\" && item.text && item.text !== \"No matches found\");\n\t\t\t};\n\t\t\tfor (const target of targets) {\n\t\t\t\tif (skip === 0 && remaining <= 0) { if (!target.archive && !target.sqlite && !target.internal && targets.length > 1 && await fsStat(resolveToCwd(target.path, cwd)).then(() => false).catch(() => true)) { skippedMissingPaths.push(target.path); continue; } if (await targetHasMatch(target)) { pageFullWithMore = true; break; } continue; }\n\t\t\t\tif (target.archive || target.sqlite || target.internal) {\n\t\t\t\t\tconst archive = target.archive ? resolveArchiveSelector(target.archive, cwd) : undefined;\n\t\t\t\t\tlet text = archive ? searchArchiveSelector(archive, params.pattern, ignoreCase, false, contextBefore, contextAfter) : target.sqlite ? searchSqliteSelector(target.sqlite, params.pattern, ignoreCase, contextBefore, contextAfter) : await searchInternalSelector(target.internal!, cwd, params.pattern, ignoreCase, false, resourceCtx, contextBefore, contextAfter);\n\t\t\t\t\tif (archive && target.archive) text = text.split(archive.archivePath).join(target.archive.archivePath); if (target.sqlite) text = text.split(target.sqlite.databasePath).join(target.path.match(/^(.+?\\.(?:sqlite3?|db3?))/i)?.[1] ?? target.sqlite.databasePath); text = text || \"No matches found\";\n\t\t\t\t\ttext = filterSearchOutputByLineRange(text, target.lineRanges, contextBefore, contextAfter);\n\t\t\t\t\tconst outputGroups = groupSearchOutput(text);\n\t\t\t\t\tif (skip > 0) groups.push(...outputGroups.map((group) => ({ targetPath: target.path, virtual: isVirtualSearchTarget(target), group })) );\n\t\t\t\t\telse if (outputGroups.length > 0) {\n\t\t\t\t\t\tconst hadMore = outputGroups.length > remaining;\n\t\t\t\t\t\ttext = formatSearchGroups(outputGroups, remaining);\n\t\t\t\t\t\tif (hadMore) { text += `\\n\\n${continuationHint(limit, skip)}`; pageFullWithMore = true; }\n\t\t\t\t\t\tremaining -= Math.min(remaining, outputGroups.length);\n\t\t\t\t\t} else if (text && text !== \"No matches found\") {\n\t\t\t\t\t\tremaining--;\n\t\t\t\t\t} else text = \"No matches found\";\n\t\t\t\t\tif (skip === 0) results.push({ content: [{ type: \"text\" as const, text }], details: undefined });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (targets.length > 1 && await fsStat(resolveToCwd(target.path, cwd)).then(() => false).catch(() => true)) {\n\t\t\t\t\tskippedMissingPaths.push(target.path);\n\t\t\t\t\tresults.push({ content: [{ type: \"text\" as const, text: \"No matches found\" }], details: undefined });\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst rangedText = await searchFileLineRanges(target, cwd, params.pattern, ignoreCase, contextBefore, contextAfter);\n\t\t\t\tif (rangedText !== undefined) {\n\t\t\t\t\tlet text = applyDefaultSearchContext(rangedText, contextBefore, contextAfter) || \"No matches found\";\n\t\t\t\t\tconst result = { content: [{ type: \"text\" as const, text }], details: undefined as SearchToolDetails | undefined };\n\t\t\t\t\tresults.push(result);\n\t\t\t\t\tconst outputGroups = groupSearchOutput(text);\n\t\t\t\t\tif (skip > 0) groups.push(...outputGroups.map((group) => ({ targetPath: target.path, virtual: false, group })));\n\t\t\t\t\telse if (!isSingleFileSearch && outputGroups.length > 0) { const hadMore = outputGroups.length > remaining; text = formatSearchGroups(outputGroups, remaining); if (hadMore) { result.details = fileLimitDetails(limit); pageFullWithMore = true; } remaining -= Math.min(remaining, outputGroups.length); result.content = [{ type: \"text\", text }]; }\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst result = await grepDefinition.execute(\n\t\t\t\t\ttoolCallId,\n\t\t\t\t\t{\n\t\t\t\t\t\tpattern: params.pattern,\n\t\t\t\t\t\tpath: target.path,\n\t\t\t\t\t\tglob: target.glob,\n\t\t\t\t\t\tignoreCase,\n\t\t\t\t\t\tliteral: false,\n\t\t\t\t\t\tcontext: searchContext,\n\t\t\t\t\t\tmaxCountPerFile: isSingleFileSearch ? SINGLE_FILE_MATCHES : MULTI_FILE_PER_FILE_MATCHES,\n\t\t\t\t\t\tlimit: INTERNAL_SKIP_LIMIT,\n\t\t\t\t\t\tgitignore: params.gitignore,\n\t\t\t\t\t},\n\t\t\t\t\tsignal,\n\t\t\t\t\tonUpdate,\n\t\t\t\t\tctx,\n\t\t\t\t);\n\t\t\t\tresults.push(result);\n\t\t\t\tif (result.details?.matchLimitReached) internalSearchCapped = true;\n\t\t\t\tlet text = result.content\n\t\t\t\t\t.map((item) => (item.type === \"text\" ? item.text : undefined))\n\t\t\t\t\t.filter((text): text is string => typeof text === \"string\")\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\ttext = filterSearchOutputByLineRange(text, target.lineRanges, contextBefore, contextAfter);\n\t\t\t\tif (text !== \"No matches found\") text = applyDefaultSearchContext(text, contextBefore, contextAfter) || \"No matches found\";\n\t\t\t\tconst outputGroups = groupSearchOutput(text);\n\t\t\t\tif (skip > 0) groups.push(...outputGroups.map((group) => ({ targetPath: target.path, virtual: false, group })) );\n\t\t\t\telse if (!isSingleFileSearch && outputGroups.length > 0) {\n\t\t\t\t\tconst hadMore = outputGroups.length > remaining;\n\t\t\t\t\ttext = formatSearchGroups(outputGroups, remaining);\n\t\t\t\t\tif (hadMore) { result.details = { ...(result.details ?? {}), ...fileLimitDetails(limit) }; pageFullWithMore = true; }\n\t\t\t\t\tremaining -= Math.min(remaining, outputGroups.length);\n\t\t\t\t}\n\t\t\t\tresult.content = [{ type: \"text\", text }];\n\t\t\t}\n\n\t\t\tconst details: SearchToolDetails = {};\n\t\t\tfor (const result of results) {\n\t\t\t\tif (result.details?.truncation) details.truncation = result.details.truncation;\n\t\t\t\tif (result.details?.matchLimitReached) details.matchLimitReached = result.details.matchLimitReached;\n\t\t\t\tif (hasFileLimit(result.details)) markFileLimit(details, limit);\n\t\t\t\tif (result.details?.linesTruncated) details.linesTruncated = true;\n\t\t\t}\n\n\t\t\tif (skip > 0) {\n\t\t\t\tconst renderedPages: string[] = [];\n\t\t\t\tlet remainingMatches = limit;\n\t\t\t\tfor (const item of groups.slice(skip)) {\n\t\t\t\t\tif (remainingMatches <= 0) break;\n\t\t\t\t\tconst raw = formatSearchGroups([item.group], 1);\n\t\t\t\t\tremainingMatches--;\n\t\t\t\t\tif (raw) renderedPages.push(item.virtual ? raw : await addHashlineHeadersToSearchOutput(raw, cwd, item.targetPath, hashlineStore));\n\t\t\t\t}\n\t\t\t\tconst hasMorePages = groups.slice(skip + limit).length > 0;\n\t\t\t\tconst cappedBeforeRequestedPage = internalSearchCapped && skip >= groups.length;\n\t\t\t\tconst capNotice = internalSearchCapped && !hasMorePages ? `\\n\\n${internalCapHint()}` : \"\";\n\t\t\t\tconst output = `${renderedPages.join(\"\\n\\n\") || `No more results (skip=${skip})`}${hasMorePages ? `\\n\\n${continuationHint(limit, skip)}` : \"\"}${capNotice}`;\n\t\t\t\tif (hasMorePages || cappedBeforeRequestedPage || capNotice) markFileLimit(details, limit);\n\t\t\t\tconst truncation = truncateHead(output, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\t\tlet content = truncation.content;\n\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t\tcontent += `\\n\\n[${formatSize(DEFAULT_MAX_BYTES)} combined output limit reached]`;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: content }],\n\t\t\t\t\tdetails: buildSearchDetails(details, content, cwd, scopePath, skippedMissingPaths),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (results.length === 1) {\n\t\t\t\tconst result = results[0]!;\n\t\t\t\tlet text = result.content\n\t\t\t\t\t.map((item) => (item.type === \"text\" ? item.text : undefined))\n\t\t\t\t\t.filter((value): value is string => typeof value === \"string\")\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\ttext = filterSearchOutputByLineRange(text, targets[0]?.lineRanges, contextBefore, contextAfter);\n\t\t\t\tif (!isVirtualSearchTarget(targets[0]) && text !== \"No matches found\") text = applyDefaultSearchContext(text, contextBefore, contextAfter) || \"No matches found\";\n\t\t\t\tconst skipNotice = singleFileSkipIgnored ? \"\\n\\n[skip is ignored for single-file search; refine the pattern/path or search a directory to page matching files.]\" : \"\";\n\t\t\t\tif (isSingleFileSearch && text !== \"No matches found\") text = formatSearchGroups(groupSearchOutput(text), limit, limit);\n\t\t\t\tif (text && text !== \"No matches found\") {\n\t\t\t\t\tconst renderedText = isVirtualSearchTarget(targets[0]) ? text : await addHashlineHeadersToSearchOutput(text, cwd, targets[0]?.path ?? \".\", hashlineStore);\n\t\t\t\t\tconst pagedText = `${hasFileLimit(result.details) ? `${renderedText}\\n\\n${continuationHint(limit, skip)}` : renderedText}${skipNotice}`;\n\t\t\t\t\tconst truncation = truncateHead(pagedText, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\t\t\tif (truncation.truncated) return { ...result, content: [{ type: \"text\", text: `${truncation.content}\\n\\n[${formatSize(DEFAULT_MAX_BYTES)} combined output limit reached]` }], details: buildSearchDetails({ ...(result.details ?? {}), truncation }, truncation.content, cwd, scopePath, skippedMissingPaths) };\n\t\t\t\t\treturn { ...result, content: [{ type: \"text\", text: pagedText }], details: buildSearchDetails(result.details, pagedText, cwd, scopePath, skippedMissingPaths) };\n\t\t\t\t}\n\t\t\t\treturn { ...result, details: buildSearchDetails(result.details, text || \"No matches found\", cwd, scopePath, skippedMissingPaths) };\n\t\t\t}\n\n\t\t\tconst renderedResults = await Promise.all(results.map(async (result, index) => {\n\t\t\t\tlet text = result.content\n\t\t\t\t\t.map((item) => (item.type === \"text\" ? item.text : undefined))\n\t\t\t\t\t.filter((value): value is string => typeof value === \"string\" && value.length > 0)\n\t\t\t\t\t.join(\"\\n\");\n\t\t\t\ttext = filterSearchOutputByLineRange(text, targets[index]?.lineRanges, contextBefore, contextAfter);\n\t\t\t\tif (!isVirtualSearchTarget(targets[index]) && text !== \"No matches found\") text = applyDefaultSearchContext(text, contextBefore, contextAfter);\n\t\t\t\tif (!text || text === \"No matches found\") return `# ${targets[index]?.path ?? \".\"}\\n${text}`;\n\t\t\t\treturn isVirtualSearchTarget(targets[index]) ? text : await addHashlineHeadersToSearchOutput(text, cwd, targets[index]?.path ?? \".\", hashlineStore);\n\t\t\t}));\n\t\t\tconst content = dedupeRenderedSearchOutput(`${renderedResults.join(\"\\n\\n\")}${skippedMissingPaths.length > 0 ? `\\n\\n[Skipped missing paths: ${skippedMissingPaths.join(\", \")}]` : \"\"}${pageFullWithMore ? `\\n\\n${continuationHint(limit, skip)}` : \"\"}${internalSearchCapped && !pageFullWithMore ? `\\n\\n${internalCapHint()}` : \"\"}`);\n\t\t\tif (pageFullWithMore || internalSearchCapped) markFileLimit(details, limit);\n\t\t\tconst truncation = truncateHead(content, { maxLines: Number.MAX_SAFE_INTEGER });\n\t\t\tlet output = truncation.content;\n\t\t\tif (truncation.truncated) {\n\t\t\t\tdetails.truncation = truncation;\n\t\t\t\toutput += `\\n\\n[${formatSize(DEFAULT_MAX_BYTES)} combined output limit reached]`;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: output }],\n\t\t\t\tdetails: buildSearchDetails(details, output, cwd, scopePath, skippedMissingPaths),\n\t\t\t};\n\t\t},\n\t\trenderCall(args, theme, context) {\n\t\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\t\ttext.setText(formatSearchCall(args, theme));\n\t\t\treturn text;\n\t\t},\n\t\trenderResult(result, options: ToolRenderResultOptions, theme, context) {\n\t\t\treturn grepDefinition.renderResult?.(result, options, theme, context) ?? new Text(\"\", 0, 0);\n\t\t},\n\t};\n}\n\nexport function createSearchTool(cwd: string, options?: SearchToolOptions): AgentTool<typeof searchSchema> {\n\treturn wrapToolDefinition(createSearchToolDefinition(cwd, options));\n}\n"]}
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/core/tools/search.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAA2B,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAEN,KAAK,eAAe,EACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAuD,KAAK,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAKhH,OAAO,EAAsB,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,QAAA,MAAM,YAAY;;;;;;;EAYiB,CAAC;AACpC,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAC1D,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG;IAAE,aAAa,CAAC,EAAE,qBAAqB,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AA2N3I,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,iBAAiB,GACzB,cAAc,CAAC,OAAO,YAAY,EAAE,iBAAiB,GAAG,SAAS,CAAC,CAyMpE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC,OAAO,YAAY,CAAC,CAEzG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../../src/core/tools/structured-output.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEzE,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,EAAE,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/D,MAAM,WAAW,uBAAuB,CAAC,MAAM,GAAG,OAAO;IACxD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC3C,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B,CAAC,UAAU,SAAS,OAAO;IACtE,6BAA6B;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,6DAA6D;IAC7D,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAyBD,wBAAgB,6BAA6B,CAAC,MAAM,GAAG,OAAO,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAEjG;AAED,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,OAAO,EACpE,OAAO,EAAE,2BAA2B,CAAC,UAAU,CAAC,GAC9C,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAgChD"
|
|
1
|
+
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../../../src/core/tools/structured-output.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAc,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEzE,eAAO,MAAM,2BAA2B,sBAAsB,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,EAAE,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE/D,MAAM,WAAW,uBAAuB,CAAC,MAAM,GAAG,OAAO;IACxD,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC3C,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,2BAA2B,CAAC,UAAU,SAAS,OAAO;IACtE,6BAA6B;IAC7B,MAAM,EAAE,UAAU,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,uBAAuB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,6DAA6D;IAC7D,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAyBD,wBAAgB,6BAA6B,CAAC,MAAM,GAAG,OAAO,KAAK,uBAAuB,CAAC,MAAM,CAAC,CAEjG;AAED,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,OAAO,EACpE,OAAO,EAAE,2BAA2B,CAAC,UAAU,CAAC,GAC9C,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAgChD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-execute.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAkB/D,OAAO,EAKN,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,kBAAkB,CAAC;AA8N1B,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAuB3C"
|
|
1
|
+
{"version":3,"file":"todos-execute.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-execute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAkB/D,OAAO,EAKN,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,kBAAkB,CAAC;AA8N1B,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAuB3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-locks.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-locks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,kBAAkB,CAAC;AA6E1B,wBAAsB,YAAY,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,EACrB,EAAE,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAQjC"
|
|
1
|
+
{"version":3,"file":"todos-locks.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-locks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,kBAAkB,CAAC;AA6E1B,wBAAsB,YAAY,CAAC,CAAC,EACnC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,EACrB,EAAE,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GACvC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAQjC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-model.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,cAAc,UAAU,CAAC;AAGtC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAM7E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAInE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAUrE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG;IACjE,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,WAAW,EAAE,eAAe,EAAE,CAAC;CAC/B,CAgBA"
|
|
1
|
+
{"version":3,"file":"todos-model.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,eAAO,MAAM,cAAc,UAAU,CAAC;AAGtC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAM7E;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAE3D;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAInE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE,CAUrE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG;IACjE,aAAa,EAAE,eAAe,EAAE,CAAC;IACjC,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,WAAW,EAAE,eAAe,EAAE,CAAC;CAC/B,CAgBA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-mutations.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-mutations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAExE,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,EACrB,KAAK,UAAQ,GACX,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CA6B1C;AAED,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,EACrB,KAAK,UAAQ,GACX,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CA2B1C;AAED,wBAAsB,UAAU,CAC/B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAiB1C"
|
|
1
|
+
{"version":3,"file":"todos-mutations.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-mutations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAK/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAExE,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,EACrB,KAAK,UAAQ,GACX,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CA6B1C;AAED,wBAAsB,qBAAqB,CAC1C,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,EACrB,KAAK,UAAQ,GACX,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CA2B1C;AAED,wBAAsB,UAAU,CAC/B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,gBAAgB,GACnB,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAiB1C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-paths.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-paths.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE"
|
|
1
|
+
{"version":3,"file":"todos-paths.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-paths.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAEhE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-render.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAStE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErG,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAG9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,CAe1E;AAiHD,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAavE;AAED,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,EACxC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAChD,KAAK,EAAE,KAAK,GACV,IAAI,CAyCN"
|
|
1
|
+
{"version":3,"file":"todos-render.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAStE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAErG,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAG9D;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,CAe1E;AAiHD,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAavE;AAED,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,EACxC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,uBAAuB,EAChD,KAAK,EAAE,KAAK,GACV,IAAI,CAyCN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-storage.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-storage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiIpE,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,iBAEpD;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAG5F;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,iBAErE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA+B5E;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG/F;AAED,wBAAsB,cAAc,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAKrB"
|
|
1
|
+
{"version":3,"file":"todos-storage.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-storage.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAiIpE,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,iBAEpD;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAG5F;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,iBAErE;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOtE;AAED,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA+B5E;AAED,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAG/F;AAED,wBAAsB,cAAc,CACnC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,CAAC,CAKrB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-types.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"todos-types.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,UAAW,SAAQ,eAAe;IAClD,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,UAAU;;;;;;;;EAsBrB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;AAEvD,MAAM,MAAM,UAAU,GACnB,MAAM,GACN,UAAU,GACV,KAAK,GACL,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,SAAS,CAAC;AAEb,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;AAExE,MAAM,MAAM,eAAe,GACxB;IACA,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CACd,GACD;IACA,MAAM,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEL,MAAM,WAAW,kBAAkB;IAClC,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC;AAE5D,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,kBAAkB,CAEpG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos-types.js","sourceRoot":"","sources":["../../../src/core/tools/todos-types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"todos-types.js","sourceRoot":"","sources":["../../../src/core/tools/todos-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAsBlD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IACrC,MAAM,EAAE,UAAU,CAAC;QAClB,MAAM;QACN,UAAU;QACV,KAAK;QACL,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,SAAS;KACA,CAAC;IACX,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC,CAAC;IAC3F,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC,CAAC;IAClF,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;IAClE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,6DAA6D;KAC1E,CAAC,CACF;IACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,uCAAuC,EAAE,CAAC,CAAC;CAC5F,CAAC,CAAC;AAoCH,MAAM,UAAU,oBAAoB,CAAI,MAA8B;IACrE,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,CAAC;AAC3E,CAAC","sourcesContent":["import { type Static, Type } from \"typebox\";\nimport { StringEnum } from \"../typebox-compat.ts\";\n\nexport interface TodoFrontMatter {\n\tid: string;\n\ttitle: string;\n\ttags: string[];\n\tstatus: string;\n\tcreated_at: string;\n\tassigned_to_session?: string;\n}\n\nexport interface TodoRecord extends TodoFrontMatter {\n\tbody: string;\n}\n\nexport interface LockInfo {\n\tid: string;\n\tpid: number;\n\tsession?: string | null;\n\tcreated_at: string;\n}\n\nexport const TodoParams = Type.Object({\n\taction: StringEnum([\n\t\t\"list\",\n\t\t\"list-all\",\n\t\t\"get\",\n\t\t\"create\",\n\t\t\"update\",\n\t\t\"append\",\n\t\t\"delete\",\n\t\t\"claim\",\n\t\t\"release\",\n\t] as const),\n\tid: Type.Optional(Type.String({ description: \"Todo id (TODO-<hex> or raw hex filename)\" })),\n\ttitle: Type.Optional(Type.String({ description: \"Short summary shown in lists\" })),\n\tstatus: Type.Optional(Type.String({ description: \"Todo status\" })),\n\ttags: Type.Optional(Type.Array(Type.String({ description: \"Todo tag\" }))),\n\tbody: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Long-form details (markdown). Update replaces; append adds.\",\n\t\t}),\n\t),\n\tforce: Type.Optional(Type.Boolean({ description: \"Override another session's assignment\" })),\n});\n\nexport type TodoToolParams = Static<typeof TodoParams>;\n\nexport type TodoAction =\n\t| \"list\"\n\t| \"list-all\"\n\t| \"get\"\n\t| \"create\"\n\t| \"update\"\n\t| \"append\"\n\t| \"delete\"\n\t| \"claim\"\n\t| \"release\";\n\nexport type TodoRecordAction = Exclude<TodoAction, \"list\" | \"list-all\">;\n\nexport type TodoToolDetails =\n\t| {\n\t\t\taction: \"list\" | \"list-all\";\n\t\t\ttodos: TodoFrontMatter[];\n\t\t\tcurrentSessionId?: string;\n\t\t\terror?: string;\n\t }\n\t| {\n\t\t\taction: TodoRecordAction;\n\t\t\ttodo?: TodoRecord;\n\t\t\terror?: string;\n\t };\n\nexport interface TodoOperationError {\n\terror: string;\n}\n\nexport type TodoOperationResult<T> = T | TodoOperationError;\n\nexport function isTodoOperationError<T>(result: TodoOperationResult<T>): result is TodoOperationError {\n\treturn typeof result === \"object\" && result !== null && \"error\" in result;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpE,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAE3C,CAAC;AAEF,wBAAgB,wBAAwB,CACvC,GAAG,GAAE,MAAsB,GACzB,cAAc,CAAC,OAAO,UAAU,EAAE,eAAe,CAAC,CAiBpD"
|
|
1
|
+
{"version":3,"file":"todos.d.ts","sourceRoot":"","sources":["../../../src/core/tools/todos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI7D,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpE,eAAO,MAAM,uBAAuB,EAAE,MAAM,EAE3C,CAAC;AAEF,wBAAgB,wBAAwB,CACvC,GAAG,GAAE,MAAsB,GACzB,cAAc,CAAC,OAAO,UAAU,EAAE,eAAe,CAAC,CAiBpD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-definition-wrapper.d.ts","sourceRoot":"","sources":["../../../src/core/tools/tool-definition-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tool-definition-wrapper.d.ts","sourceRoot":"","sources":["../../../src/core/tools/tool-definition-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAU,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE/E,OAAO,QAAQ,+BAA+B,CAAC;IAC9C,UAAU,SAAS,CAAC,WAAW,SAAS,OAAO,GAAG,OAAO,EAAE,QAAQ,GAAG,GAAG;QACxE,qGAAqG;QACrG,kBAAkB,CAAC,EAAE,MAAM,CAAC;KAC5B;CACD;AAKD,oEAAoE;AACpE,wBAAgB,kBAAkB,CAAC,OAAO,SAAS,OAAO,EAAE,QAAQ,GAAG,OAAO,EAC7E,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,EAC7C,UAAU,CAAC,EAAE,MAAM,gBAAgB,GACjC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAc9B;AAED,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAClC,WAAW,EAAE,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAC/C,UAAU,CAAC,EAAE,MAAM,gBAAgB,GACjC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAE/B;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,SAAS,OAAO,GAAG,OAAO,EAAE,QAAQ,GAAG,OAAO,EACtG,IAAI,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,GAChC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAcnC"}
|
|
@@ -6,7 +6,9 @@ export function wrapToolDefinition(definition, ctxFactory) {
|
|
|
6
6
|
description: definition.description,
|
|
7
7
|
parameters: definition.parameters,
|
|
8
8
|
maxResultSizeChars: definition.maxResultSizeChars,
|
|
9
|
-
prepareArguments: definition.prepareArguments
|
|
9
|
+
prepareArguments: definition.prepareArguments
|
|
10
|
+
? (args) => definition.prepareArguments?.(args)
|
|
11
|
+
: undefined,
|
|
10
12
|
executionMode: definition.executionMode,
|
|
11
13
|
execute: (toolCallId, params, signal, onUpdate) => definition.execute(toolCallId, params, signal, onUpdate, ctxFactory?.()),
|
|
12
14
|
};
|
|
@@ -28,7 +30,9 @@ export function createToolDefinitionFromAgentTool(tool) {
|
|
|
28
30
|
description: tool.description,
|
|
29
31
|
parameters: tool.parameters,
|
|
30
32
|
maxResultSizeChars: tool.maxResultSizeChars,
|
|
31
|
-
prepareArguments: tool.prepareArguments
|
|
33
|
+
prepareArguments: tool.prepareArguments
|
|
34
|
+
? (args) => tool.prepareArguments?.(args)
|
|
35
|
+
: undefined,
|
|
32
36
|
executionMode: tool.executionMode,
|
|
33
37
|
execute: async (toolCallId, params, signal, onUpdate) => tool.execute(toolCallId, params, signal, onUpdate),
|
|
34
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-definition-wrapper.js","sourceRoot":"","sources":["../../../src/core/tools/tool-definition-wrapper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool-definition-wrapper.js","sourceRoot":"","sources":["../../../src/core/tools/tool-definition-wrapper.ts"],"names":[],"mappings":"AAcA,oEAAoE;AACpE,MAAM,UAAU,kBAAkB,CACjC,UAA6C,EAC7C,UAAmC;IAEnC,OAAO;QACN,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,WAAW,EAAE,UAAU,CAAC,WAAW;QACnC,UAAU,EAAE,UAAU,CAAC,UAAU;QACjC,kBAAkB,EAAE,UAAU,CAAC,kBAAkB;QACjD,gBAAgB,EAAE,UAAU,CAAC,gBAAgB;YAC5C,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAA8B;YAC5E,CAAC,CAAC,SAAS;QACZ,aAAa,EAAE,UAAU,CAAC,aAAa;QACvC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CACjD,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,MAAyB,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAsB,CAAC;KAChH,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAClC,WAA+C,EAC/C,UAAmC;IAEnC,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AACpF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAChD,IAAkC;IAElC,OAAO;QACN,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACtC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAoB;YAC5D,CAAC,CAAC,SAAS;QACZ,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CACvD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,MAA+B,EAAE,MAAM,EAAE,QAAQ,CAAC;KAC5E,CAAC;AACH,CAAC","sourcesContent":["import type { AgentTool } from \"@earendil-works/pi-agent-core\";\nimport type { Static, TSchema } from \"typebox\";\nimport type { ExtensionContext, ToolDefinition } from \"../extensions/types.ts\";\n\ndeclare module \"@earendil-works/pi-agent-core\" {\n\tinterface AgentTool<TParameters extends TSchema = TSchema, TDetails = any> {\n\t\t/** Optional per-tool character cap for model-visible result persistence. Use Infinity to opt out. */\n\t\tmaxResultSizeChars?: number;\n\t}\n}\n\ntype PiToolParams<TParams extends TSchema> = Parameters<AgentTool<TParams>[\"execute\"]>[1];\ntype PiPreparedParams<TParams extends TSchema> = ReturnType<NonNullable<AgentTool<TParams>[\"prepareArguments\"]>>;\n\n/** Wrap a ToolDefinition into an AgentTool for the core runtime. */\nexport function wrapToolDefinition<TParams extends TSchema, TDetails = unknown>(\n\tdefinition: ToolDefinition<TParams, TDetails>,\n\tctxFactory?: () => ExtensionContext,\n): AgentTool<TParams, TDetails> {\n\treturn {\n\t\tname: definition.name,\n\t\tlabel: definition.label,\n\t\tdescription: definition.description,\n\t\tparameters: definition.parameters,\n\t\tmaxResultSizeChars: definition.maxResultSizeChars,\n\t\tprepareArguments: definition.prepareArguments\n\t\t\t? (args) => definition.prepareArguments?.(args) as PiPreparedParams<TParams>\n\t\t\t: undefined,\n\t\texecutionMode: definition.executionMode,\n\t\texecute: (toolCallId, params, signal, onUpdate) =>\n\t\t\tdefinition.execute(toolCallId, params as Static<TParams>, signal, onUpdate, ctxFactory?.() as ExtensionContext),\n\t};\n}\n\n/** Wrap multiple ToolDefinitions into AgentTools for the core runtime. */\nexport function wrapToolDefinitions(\n\tdefinitions: ToolDefinition<TSchema, unknown>[],\n\tctxFactory?: () => ExtensionContext,\n): AgentTool<TSchema, unknown>[] {\n\treturn definitions.map((definition) => wrapToolDefinition(definition, ctxFactory));\n}\n\n/**\n * Synthesize a minimal ToolDefinition from an AgentTool.\n *\n * This keeps AgentSession's internal registry definition-first even when a caller\n * provides plain AgentTool overrides that do not include prompt metadata or renderers.\n */\nexport function createToolDefinitionFromAgentTool<TParams extends TSchema = TSchema, TDetails = unknown>(\n\ttool: AgentTool<TParams, TDetails>,\n): ToolDefinition<TParams, TDetails> {\n\treturn {\n\t\tname: tool.name,\n\t\tlabel: tool.label,\n\t\tdescription: tool.description,\n\t\tparameters: tool.parameters,\n\t\tmaxResultSizeChars: tool.maxResultSizeChars,\n\t\tprepareArguments: tool.prepareArguments\n\t\t\t? (args) => tool.prepareArguments?.(args) as Static<TParams>\n\t\t\t: undefined,\n\t\texecutionMode: tool.executionMode,\n\t\texecute: async (toolCallId, params, signal, onUpdate) =>\n\t\t\ttool.execute(toolCallId, params as PiToolParams<TParams>, signal, onUpdate),\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-limits.d.ts","sourceRoot":"","sources":["../../../src/core/tools/tool-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAEpD,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAElE,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,OAAO,CAAC"
|
|
1
|
+
{"version":3,"file":"tool-limits.d.ts","sourceRoot":"","sources":["../../../src/core/tools/tool-limits.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,6BAA6B,QAAS,CAAC;AAEpD,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAElD,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,uBAAuB,CAAC;AACzD,eAAO,MAAM,4BAA4B,wBAAwB,CAAC;AAElE,0EAA0E;AAC1E,eAAO,MAAM,kBAAkB,OAAO,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../src/core/tools/truncate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,iBAAiB,QAAY,CAAC;AAC3C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAChC,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IACtC,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,eAAe,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,qBAAqB,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAkF/F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAyE/F;AAuBD;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA6B,GACrC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAKzC"
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../src/core/tools/truncate.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,eAAO,MAAM,iBAAiB,QAAY,CAAC;AAC3C,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAChC,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;IACtC,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,yFAAyF;IACzF,eAAe,EAAE,OAAO,CAAC;IACzB,2EAA2E;IAC3E,qBAAqB,EAAE,OAAO,CAAC;IAC/B,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IACjC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAaD;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAkF/F;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAyE/F;AAuBD;;;GAGG;AACH,wBAAgB,YAAY,CAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAA6B,GACrC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,OAAO,CAAA;CAAE,CAKzC"}
|