@xiaoso/dsh-tool-plus 0.1.6 → 0.1.7-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_NOTICES.md +9 -3
- package/lib/{abort-Cwwm4Err.mjs → abort-Caqff3M6.mjs} +2 -2
- package/lib/alibaba-coding-plan-DTupMiAi.mjs +73 -0
- package/lib/alibaba-token-plan-CHGyWOfX.mjs +46 -0
- package/lib/alibaba-token-plan-Dj3OZhEE.mjs +82 -0
- package/lib/{amazon-bedrock-TVMpUTRG.mjs → amazon-bedrock-DbFSYXfJ.mjs} +117 -38
- package/lib/{anthropic-BL6LFDQS.mjs → anthropic-CTJ3IQVa.mjs} +675 -166
- package/lib/anthropic-CXfWlp-x.mjs +105 -0
- package/lib/{aws-credentials-B20dliS7.mjs → anthropic-wire-CKuhDwZ1.mjs} +74 -14
- package/lib/{api-key-login-CIDnXeYd.mjs → api-key-validation-CGCJFbFr.mjs} +27 -68
- package/lib/{azure-openai-responses-BkhsLmN3.mjs → azure-openai-responses-ChFbWaGj.mjs} +27 -16
- package/lib/{browser-render-CmgvSNte.mjs → browser-render-9o0Rknop.mjs} +4 -4
- package/lib/bun-shim.mjs +71 -2
- package/lib/{bundled-references-ChZSPDFw.mjs → bundled-references-DY3EJxZV.mjs} +6 -5
- package/lib/cline-pass-Bwg3esu9.mjs +44 -0
- package/lib/cloudflare-ai-gateway-BupNXyKK.mjs +35 -0
- package/lib/cloudflare-ai-gateway-EWo0VkP5.mjs +44 -0
- package/lib/collapse-DOR8sOGf.mjs +2304 -0
- package/lib/coreweave-C82HrLpb.mjs +31 -0
- package/lib/coreweave-Ct8cF-da.mjs +14 -0
- package/lib/{cursor-B6HcmplF.mjs → cursor-B95LzVWV.mjs} +11 -3
- package/lib/{cursor-CRpLpaZ3.mjs → cursor-DJV_dcgB.mjs} +887 -1784
- package/lib/{cursor-B8m6SqAH.mjs → cursor-LKGjucn2.mjs} +48 -38
- package/lib/cursor-proto-B8Wj8bv9.mjs +10513 -0
- package/lib/{deterministic-id-D-yIV_eI.mjs → deterministic-id-CUEIMSqR.mjs} +1 -1
- package/lib/devin-BMTdx_hx.mjs +316 -0
- package/lib/{devin-DUAfvBsW.mjs → devin-DSp0Rw_E.mjs} +172 -86
- package/lib/devin-ExGIghmx.mjs +69 -0
- package/lib/devin-proto-Br8fdyNl.mjs +2888 -0
- package/lib/{dom-CawWi8fa.mjs → dom-DG3sPESc.mjs} +8 -8
- package/lib/effort-BdtQMN-_.mjs +23 -0
- package/lib/{error-C-f_Wnw4.mjs → error-CORgGg5a.mjs} +275 -154
- package/lib/{event-stream-Dh2guZxS.mjs → event-stream-ulcDenZD.mjs} +20 -4
- package/lib/{gemini-headers-DKUShltF.mjs → gemini-headers-Co9cVvex.mjs} +2 -2
- package/lib/{github-copilot-suDymKrx.mjs → github-copilot-Dstq1D3s.mjs} +69 -29
- package/lib/github-copilot-headers-DOh1gt_w.mjs +312 -0
- package/lib/gitlab-duo-DSCMrU0m.mjs +11 -0
- package/lib/google-CtsKkOQK.mjs +38 -0
- package/lib/google-antigravity-z-5KsEci.mjs +252 -0
- package/lib/{google-auth-DYJLM792.mjs → google-auth-ieLBaneO.mjs} +4 -4
- package/lib/{google-gemini-cli-8BT513Ul.mjs → google-gemini-cli-C6NE5mWz.mjs} +28 -54
- package/lib/{google-gemini-cli-D6cSmfvB.mjs → google-gemini-cli-CAIPSl7e.mjs} +23 -29
- package/lib/google-oauth-shared-DhMllAkt.mjs +53 -0
- package/lib/{google-shared-CVbHK5vZ.mjs → google-shared-B0aNCYEH.mjs} +140 -44
- package/lib/{google-validation-Cgbn3tWJ.mjs → google-validation-BEkNs-Bx.mjs} +1 -1
- package/lib/{google-vertex-Bui-ypAe.mjs → google-vertex-Bbd1tYNc.mjs} +8 -8
- package/lib/hosts-00rjRzUD.mjs +203 -0
- package/lib/id-AL5obQzR.mjs +71 -0
- package/lib/{idle-iterator-CYAxUkSD.mjs → idle-iterator-DlUkEfzW.mjs} +3 -3
- package/lib/index.mjs +598 -5275
- package/lib/kilo-ChJL54wq.mjs +81 -0
- package/lib/kimi-C2c_Zq8A.mjs +67 -0
- package/lib/{launch-BmgEUycu.mjs → launch-DKDH71En.mjs} +1 -1
- package/lib/markit-CmRfm4E2.mjs +9885 -0
- package/lib/models-DnXMYGcJ.mjs +381604 -0
- package/lib/muse-code-Di1VZmB1.mjs +143 -0
- package/lib/{ollama-Df9ce-Cp.mjs → ollama-B8ic3sEp.mjs} +15 -30
- package/lib/{openai-codex-CAVI3Me-.mjs → openai-codex-DuJNC99x.mjs} +29 -99
- package/lib/{openai-codex-responses-BcnOotRB.mjs → openai-codex-responses-BL29nh9K.mjs} +204 -116
- package/lib/{openai-completions-Bq4WT47M.mjs → openai-completions-BK2f2dBv.mjs} +152 -82
- package/lib/openai-configuration-update-xMYUjaK_.mjs +150 -0
- package/lib/{openai-reasoning-fallback-DXsfiSXO.mjs → openai-reasoning-fallback-BdB3RCbj.mjs} +106 -12
- package/lib/{openai-responses-Mq_-PjvE.mjs → openai-responses-CGQPlIIy.mjs} +76 -82
- package/lib/{perplexity-XgLF73E7.mjs → perplexity-TBjz3VMB.mjs} +52 -9
- package/lib/{pkce-BlQikGPu.mjs → pkce-BYjmugmw.mjs} +1 -1
- package/lib/protobuf-aab1UGVn.mjs +717 -0
- package/lib/{provider-response-C6vcbQyO.mjs → provider-response-SqKSkkUc.mjs} +1 -1
- package/lib/{proxy-D9lm7ONA.mjs → proxy-5nWqRL1f.mjs} +45 -5
- package/lib/{readability-Cpm-ocau.mjs → readability-uGhqb4GC.mjs} +2 -2
- package/lib/reference-CtvM4zLU.mjs +114 -0
- package/lib/{request-debug-HJMoJncL.mjs → request-debug-NQN0BjHH.mjs} +1 -1
- package/lib/{sanitize-text-CfcXzw5X.mjs → sanitize-text-BCf5KmCf.mjs} +1 -1
- package/lib/{scrapers-Cg5w77td.mjs → scrapers-BpqEnqNM.mjs} +12 -12
- package/lib/{src-BcD0_rQR.mjs → src-BwW51vA5.mjs} +979 -388
- package/lib/{sse-debug-CYdjOC96.mjs → sse-debug-B-tkLCPW.mjs} +1 -1
- package/lib/{stream-Bjq8wjfr.mjs → stream-B_7qN-bA.mjs} +3802 -2623
- package/lib/stream-markup-healing-DKT1lnkW.mjs +267 -0
- package/lib/{strict-tool-validation-imVLUcbI.mjs → strict-tool-validation-CBTz1dAA.mjs} +2 -2
- package/lib/taxonomy-DSIM99rS.mjs +15392 -0
- package/lib/{stream-markup-healing-DZ6bVDxH.mjs → thinking-CiLa2LFB.mjs} +31 -186
- package/lib/{turndown-DN7ByzEI.mjs → turndown-DrX1M4WG.mjs} +4 -4
- package/lib/{type-guards-B9VVjRDK.mjs → type-guards-CttAANEx.mjs} +1 -1
- package/lib/types/client/BashPlusCard.d.ts +53 -0
- package/lib/types/client/ToolPlusSection.d.ts +36 -0
- package/lib/types/client/forms.d.ts +42 -0
- package/lib/types/client/index.d.ts +29 -0
- package/lib/types/client/locales.d.ts +19 -0
- package/lib/types/client/rm-safe-status-text.d.ts +15 -0
- package/lib/types/client/rows.d.ts +107 -0
- package/lib/types/client/web-connection-rpc.d.ts +22 -0
- package/lib/types/config/fields.d.ts +85 -0
- package/lib/types/config/omp-settings.d.ts +21 -0
- package/lib/types/config/settings.d.ts +212 -0
- package/lib/types/config/truncate.d.ts +27 -0
- package/lib/types/host/browser-probe-rpc.d.ts +29 -0
- package/lib/types/index.d.ts +6 -0
- package/lib/types/tools/ast-edit/adapter/index.d.ts +26 -0
- package/lib/types/tools/ast-edit/adapter/sdk.d.ts +49 -0
- package/lib/types/tools/ast-grep/adapter/index.d.ts +31 -0
- package/lib/types/tools/ast-grep/adapter/sdk.d.ts +44 -0
- package/lib/types/tools/bash/adapter/spill.d.ts +34 -0
- package/lib/types/tools/bash/background.d.ts +40 -0
- package/lib/types/tools/bash/bash-executor.d.ts +102 -0
- package/lib/types/tools/bash/bash-interceptor.d.ts +33 -0
- package/lib/types/tools/bash/cd-workdir.d.ts +35 -0
- package/lib/types/tools/bash/logger.d.ts +18 -0
- package/lib/types/tools/bash/non-interactive-env.d.ts +5 -0
- package/lib/types/tools/bash/render.d.ts +46 -0
- package/lib/types/tools/bash/rm-safe-status.d.ts +62 -0
- package/lib/types/tools/bash/rm-safe.d.ts +18 -0
- package/lib/types/tools/bash/sanitize-text.d.ts +34 -0
- package/lib/types/tools/bash/shell-snapshot.d.ts +31 -0
- package/lib/types/tools/bash/shell-tokenize.d.ts +60 -0
- package/lib/types/tools/bash/streaming-output.d.ts +32 -0
- package/lib/types/tools/bash/trash-cli-main.d.ts +1 -0
- package/lib/types/tools/bash/trash-cli.d.ts +77 -0
- package/lib/types/tools/bash/types.d.ts +107 -0
- package/lib/types/tools/bash/which.d.ts +20 -0
- package/lib/types/tools/bash/windows-shell.d.ts +31 -0
- package/lib/types/tools/bash/yield.d.ts +71 -0
- package/lib/types/tools/edit/adapter/index.d.ts +57 -0
- package/lib/types/tools/edit/adapter/tools/auto-generated-guard.d.ts +10 -0
- package/lib/types/tools/edit/adapter/tools/output-meta.d.ts +34 -0
- package/lib/types/tools/edit/adapter/tools/plan-mode-guard.d.ts +21 -0
- package/lib/types/tools/glob/adapter/index.d.ts +52 -0
- package/lib/types/tools/grep/adapter/index.d.ts +53 -0
- package/lib/types/tools/grep/adapter/match-path.d.ts +1 -0
- package/lib/types/tools/hashline/native/diff-preview.d.ts +37 -0
- package/lib/types/tools/hashline/native/index.d.ts +109 -0
- package/lib/types/tools/hashline/native/normalize.d.ts +29 -0
- package/lib/types/tools/hashline/native/policy.d.ts +98 -0
- package/lib/types/tools/hashline/native/writer.d.ts +42 -0
- package/lib/types/tools/omp/browser/launch.d.ts +28 -0
- package/lib/types/tools/omp/browser/readable.d.ts +17 -0
- package/lib/types/tools/omp/config/settings-schema.d.ts +12 -0
- package/lib/types/tools/omp/config/settings.d.ts +59 -0
- package/lib/types/tools/omp/edit/apply-patch/parser.d.ts +34 -0
- package/lib/types/tools/omp/edit/details.d.ts +54 -0
- package/lib/types/tools/omp/edit/diff.d.ts +60 -0
- package/lib/types/tools/omp/edit/dispatch.d.ts +43 -0
- package/lib/types/tools/omp/edit/file-snapshot-store.d.ts +81 -0
- package/lib/types/tools/omp/edit/hashline/execute.d.ts +40 -0
- package/lib/types/tools/omp/edit/hashline/params.d.ts +6 -0
- package/lib/types/tools/omp/edit/modes/apply-patch.d.ts +25 -0
- package/lib/types/tools/omp/edit/modes/patch.d.ts +109 -0
- package/lib/types/tools/omp/edit/modes/replace.d.ts +151 -0
- package/lib/types/tools/omp/edit/normalize.d.ts +31 -0
- package/lib/types/tools/omp/edit/notebook.d.ts +50 -0
- package/lib/types/tools/omp/edit/read-file.d.ts +2 -0
- package/lib/types/tools/omp/edit/snapshot-details.d.ts +33 -0
- package/lib/types/tools/omp/extensibility/skills.d.ts +22 -0
- package/lib/types/tools/omp/internal-urls/index.d.ts +100 -0
- package/lib/types/tools/omp/internal-urls/local-protocol.d.ts +12 -0
- package/lib/types/tools/omp/internal-urls/parse.d.ts +31 -0
- package/lib/types/tools/omp/internal-urls/types.d.ts +189 -0
- package/lib/types/tools/omp/internal-urls/xd-protocol.d.ts +19 -0
- package/lib/types/tools/omp/markit/converters/docx.d.ts +6 -0
- package/lib/types/tools/omp/markit/converters/epub.d.ts +15 -0
- package/lib/types/tools/omp/markit/converters/pdf/index.d.ts +7 -0
- package/lib/types/tools/omp/markit/converters/pptx.d.ts +57 -0
- package/lib/types/tools/omp/markit/converters/xlsx.d.ts +25 -0
- package/lib/types/tools/omp/markit/index.d.ts +2 -0
- package/lib/types/tools/omp/markit/registry.d.ts +16 -0
- package/lib/types/tools/omp/markit/types.d.ts +30 -0
- package/lib/types/tools/omp/sdk.d.ts +103 -0
- package/lib/types/tools/omp/session/agent-storage.d.ts +154 -0
- package/lib/types/tools/omp/session/streaming-output.d.ts +244 -0
- package/lib/types/tools/omp/task/spawn-policy.d.ts +22 -0
- package/lib/types/tools/omp/tools/approval.d.ts +62 -0
- package/lib/types/tools/omp/tools/ast-edit.d.ts +73 -0
- package/lib/types/tools/omp/tools/ast-grep.d.ts +61 -0
- package/lib/types/tools/omp/tools/auto-generated-guard.d.ts +20 -0
- package/lib/types/tools/omp/tools/conflict-detect.d.ts +237 -0
- package/lib/types/tools/omp/tools/fetch.d.ts +103 -0
- package/lib/types/tools/omp/tools/file-recorder.d.ts +13 -0
- package/lib/types/tools/omp/tools/fs-cache-invalidation.d.ts +15 -0
- package/lib/types/tools/omp/tools/glob.d.ts +86 -0
- package/lib/types/tools/omp/tools/grep.d.ts +102 -0
- package/lib/types/tools/omp/tools/grouped-file-output.d.ts +70 -0
- package/lib/types/tools/omp/tools/index.d.ts +23 -0
- package/lib/types/tools/omp/tools/list-limit.d.ts +12 -0
- package/lib/types/tools/omp/tools/match-line-format.d.ts +11 -0
- package/lib/types/tools/omp/tools/output-meta.d.ts +160 -0
- package/lib/types/tools/omp/tools/path-utils.d.ts +326 -0
- package/lib/types/tools/omp/tools/plan-mode-guard.d.ts +33 -0
- package/lib/types/tools/omp/tools/read-archive.d.ts +16 -0
- package/lib/types/tools/omp/tools/read-format.d.ts +104 -0
- package/lib/types/tools/omp/tools/read-path-resolution.d.ts +19 -0
- package/lib/types/tools/omp/tools/read-selector.d.ts +27 -0
- package/lib/types/tools/omp/tools/read-sqlite.d.ts +16 -0
- package/lib/types/tools/omp/tools/read-summary.d.ts +15 -0
- package/lib/types/tools/omp/tools/read.d.ts +70 -0
- package/lib/types/tools/omp/tools/render-utils.d.ts +28 -0
- package/lib/types/tools/omp/tools/report-tool-issue.d.ts +149 -0
- package/lib/types/tools/omp/tools/resolve.d.ts +127 -0
- package/lib/types/tools/omp/tools/sqlite-reader.d.ts +114 -0
- package/lib/types/tools/omp/tools/tool-errors.d.ts +33 -0
- package/lib/types/tools/omp/tools/tool-result.d.ts +33 -0
- package/lib/types/tools/omp/tools/tool-timeouts.d.ts +57 -0
- package/lib/types/tools/omp/tools/write.d.ts +53 -0
- package/lib/types/tools/omp/tools/writethrough.d.ts +24 -0
- package/lib/types/tools/omp/utils/block-context.d.ts +35 -0
- package/lib/types/tools/omp/utils/cpuprofile.d.ts +51 -0
- package/lib/types/tools/omp/utils/edit-mode.d.ts +13 -0
- package/lib/types/tools/omp/utils/file-display-mode.d.ts +27 -0
- package/lib/types/tools/omp/utils/image-loading.d.ts +51 -0
- package/lib/types/tools/omp/utils/image-resize.d.ts +42 -0
- package/lib/types/tools/omp/utils/lang-from-path.d.ts +9 -0
- package/lib/types/tools/omp/utils/markit-cache.d.ts +23 -0
- package/lib/types/tools/omp/utils/markit.d.ts +30 -0
- package/lib/types/tools/omp/utils/profile-tree.d.ts +47 -0
- package/lib/types/tools/omp/utils/sample-profile.d.ts +67 -0
- package/lib/types/tools/omp/utils/sixel.d.ts +21 -0
- package/lib/types/tools/omp/utils/tools-manager.d.ts +11 -0
- package/lib/types/tools/omp/utils/turndown.d.ts +15 -0
- package/lib/types/tools/omp/utils/zip.d.ts +129 -0
- package/lib/types/tools/omp/web/browser-render.d.ts +50 -0
- package/lib/types/tools/omp/web/parallel.d.ts +68 -0
- package/lib/types/tools/omp/web/scrapers/artifacthub.d.ts +6 -0
- package/lib/types/tools/omp/web/scrapers/arxiv.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/aur.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/biorxiv.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/bluesky.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/brew.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/cheatsh.d.ts +8 -0
- package/lib/types/tools/omp/web/scrapers/chocolatey.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/choosealicense.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/cisa-kev.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/clojars.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/coingecko.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/crates-io.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/crossref.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/devto.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/discogs.d.ts +8 -0
- package/lib/types/tools/omp/web/scrapers/discourse.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/dockerhub.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/docs-rs.d.ts +9 -0
- package/lib/types/tools/omp/web/scrapers/fdroid.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/firefox-addons.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/flathub.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/github-gist.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/github.d.ts +34 -0
- package/lib/types/tools/omp/web/scrapers/gitlab.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/go-pkg.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/hackage.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/hackernews.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/hex.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/huggingface.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/iacr.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/index.d.ts +84 -0
- package/lib/types/tools/omp/web/scrapers/jetbrains-marketplace.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/lemmy.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/lobsters.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/mastodon.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/maven.d.ts +6 -0
- package/lib/types/tools/omp/web/scrapers/mdn.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/metacpan.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/musicbrainz.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/npm.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/nuget.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/nvd.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/ollama.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/open-vsx.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/opencorporates.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/openlibrary.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/orcid.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/osv.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/packagist.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/pub-dev.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/pubmed.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/pypi.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/rawg.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/readthedocs.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/reddit.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/repology.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/rfc.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/rubygems.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/searchcode.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/sec-edgar.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/semantic-scholar.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/snapcraft.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/sourcegraph.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/spdx.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/spotify.d.ts +8 -0
- package/lib/types/tools/omp/web/scrapers/stackoverflow.d.ts +6 -0
- package/lib/types/tools/omp/web/scrapers/terraform.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/tldr.d.ts +7 -0
- package/lib/types/tools/omp/web/scrapers/twitter.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/types.d.ts +90 -0
- package/lib/types/tools/omp/web/scrapers/utils.d.ts +26 -0
- package/lib/types/tools/omp/web/scrapers/vimeo.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/vscode-marketplace.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/w3c.d.ts +2 -0
- package/lib/types/tools/omp/web/scrapers/wikidata.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/wikipedia.d.ts +5 -0
- package/lib/types/tools/omp/web/scrapers/youtube.d.ts +5 -0
- package/lib/types/tools/omp/web/search/providers/utils.d.ts +49 -0
- package/lib/types/tools/omp/web/search/types.d.ts +501 -0
- package/lib/types/tools/omp/web/search/utils.d.ts +4 -0
- package/lib/types/tools/omp/workspace-tree.d.ts +42 -0
- package/lib/types/tools/read/adapter/index.d.ts +49 -0
- package/lib/types/tools/read/adapter/internal-urls/artifact-protocol.d.ts +15 -0
- package/lib/types/tools/read/adapter/internal-urls/registry-helpers.d.ts +44 -0
- package/lib/types/tools/read/adapter/registry/agent-registry.d.ts +29 -0
- package/lib/types/tools/shared/auto-generated-guard.dsh.d.ts +16 -0
- package/lib/types/tools/shared/browser-detect.d.ts +54 -0
- package/lib/types/tools/shared/browser-rpc-channel.d.ts +40 -0
- package/lib/types/tools/shared/bun-ffi-shim.d.ts +13 -0
- package/lib/types/tools/shared/bun-named-shim.d.ts +42 -0
- package/lib/types/tools/shared/bun-shim.d.ts +138 -0
- package/lib/types/tools/shared/bun-sqlite-shim.d.ts +49 -0
- package/lib/types/tools/shared/fs-promises-shim.d.ts +15 -0
- package/lib/types/tools/shared/image-bridge.d.ts +98 -0
- package/lib/types/tools/shared/omp-prompt.d.ts +47 -0
- package/lib/types/tools/shared/sandbox-policy.d.ts +38 -0
- package/lib/types/tools/shared/session-state.d.ts +51 -0
- package/lib/types/tools/shared/tool-errors.d.ts +33 -0
- package/lib/types/tools/shared/win-path-fixes.d.ts +16 -0
- package/lib/types/tools/write/adapter/index.d.ts +31 -0
- package/lib/{types-DX_bvuus.mjs → types-PVueGi9S.mjs} +2 -2
- package/lib/{utils-C-dSORPa.mjs → utils-B7A3Eu4L.mjs} +2364 -2676
- package/lib/{utils-Cp2Mxf_U.mjs → utils-CUPhpw9A.mjs} +413 -134
- package/lib/{utils-CQHPEQ3W.mjs → utils-DeWqNWV8.mjs} +2 -2
- package/lib/{vision-guard-mBmtAHx0.mjs → vision-guard-_XwsL1DF.mjs} +14 -29
- package/lib/xai-oauth-CXhnz0gO.mjs +210 -0
- package/lib/{xiaomi-7mE345KX.mjs → xiaomi-psoUItal.mjs} +8 -37
- package/lib/{zai-CeNpMV3W.mjs → zai-ApJ8HBgT.mjs} +8 -71
- package/lib/{zip-BK7UHCwX.mjs → zip-Kd602XNe.mjs} +1 -1
- package/package.json +12 -12
- package/presets/package.json +1 -1
- package/presets/tool-plus-ptc/agent.cordis.yml +1 -1
- package/presets/tool-plus-standard/agent.cordis.yml +1 -1
- package/scripts/patch-pi-natives.mjs +108 -108
- package/lib/agent_pb-Rizyt9Zg.mjs +0 -805
- package/lib/anthropic-CDmj476p.mjs +0 -262
- package/lib/api_server_pb-CDZgLMta.mjs +0 -252
- package/lib/callback-server-CFJK-jvK.mjs +0 -398
- package/lib/codex-P1dGpX7G.mjs +0 -54
- package/lib/device-code-CuXTWYwY.mjs +0 -51
- package/lib/devin-BcQwht1W.mjs +0 -114
- package/lib/devin-BvMfGevz.mjs +0 -95
- package/lib/github-copilot-B3kQl0g0.mjs +0 -104
- package/lib/gitlab-duo-BriUTP8k.mjs +0 -155
- package/lib/gitlab-duo-workflow-wK5Ljzmc.mjs +0 -91
- package/lib/google-CE5tFDod.mjs +0 -30
- package/lib/google-antigravity-C1jgNljz.mjs +0 -198
- package/lib/google-oauth-shared-BLVTvokk.mjs +0 -147
- package/lib/grammar-D-NqNUxQ.mjs +0 -49
- package/lib/identity-HNO1Oe9B.mjs +0 -219
- package/lib/kimi-DgcUpPtK.mjs +0 -236
- package/lib/markit-DtGoRE6M.mjs +0 -1417
- package/lib/minimax-code-Y3h5li9N.mjs +0 -53
- package/lib/models-DRA2c_8U.mjs +0 -104660
- package/lib/opencode-BsVw9rCD.mjs +0 -38
- package/lib/to-binary-B1BEBIPC.mjs +0 -6002
- package/lib/wafer-BlhWLweO.mjs +0 -17
- package/lib/xai-oauth-5pORHUrg.mjs +0 -446
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { D as
|
|
4
|
-
|
|
5
|
-
import "./identity-HNO1Oe9B.mjs";
|
|
6
|
-
//#region node_modules/.pnpm/@oh-my-pi+pi-ai@17.3.5/node_modules/@oh-my-pi/pi-ai/src/dialect/thinking.ts
|
|
3
|
+
import { D as FencedThinkingScanner, O as partialSuffixOverlapAny } from "./utils-CUPhpw9A.mjs";
|
|
4
|
+
//#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/dialect/thinking.ts
|
|
7
5
|
/**
|
|
8
6
|
* Every dialect's in-band thinking section in its canonical `renderThinking`
|
|
9
7
|
* form (see the sibling `./*.ts` scanners). {@link ThinkingInbandScanner} heals
|
|
@@ -18,7 +16,8 @@ import "./identity-HNO1Oe9B.mjs";
|
|
|
18
16
|
const TAGS = [
|
|
19
17
|
{
|
|
20
18
|
open: "<think>",
|
|
21
|
-
close: "</think>"
|
|
19
|
+
close: "</think>",
|
|
20
|
+
impliedOpen: true
|
|
22
21
|
},
|
|
23
22
|
{
|
|
24
23
|
open: "<thinking>",
|
|
@@ -47,7 +46,10 @@ const TAGS = [
|
|
|
47
46
|
}
|
|
48
47
|
];
|
|
49
48
|
const OPENS = TAGS.map((tag) => tag.open);
|
|
49
|
+
const IMPLIED_OPEN_TAGS = TAGS.filter((tag) => tag.impliedOpen);
|
|
50
|
+
const IMPLIED_OPEN_DELIMITERS = [...OPENS, ...IMPLIED_OPEN_TAGS.map((tag) => tag.close)];
|
|
50
51
|
var ThinkingInbandScanner = class {
|
|
52
|
+
#impliedOpen;
|
|
51
53
|
#buffer = "";
|
|
52
54
|
#closeTag = "";
|
|
53
55
|
#thinking = "";
|
|
@@ -63,6 +65,9 @@ var ThinkingInbandScanner = class {
|
|
|
63
65
|
* stream — or one indented ≤3 spaces, as CommonMark allows — is recognized.
|
|
64
66
|
*/
|
|
65
67
|
#lineIndent = 0;
|
|
68
|
+
constructor(options = {}) {
|
|
69
|
+
this.#impliedOpen = options.impliedOpen === true;
|
|
70
|
+
}
|
|
66
71
|
feed(text) {
|
|
67
72
|
if (text.length === 0) return [];
|
|
68
73
|
this.#buffer += text;
|
|
@@ -127,7 +132,7 @@ var ThinkingInbandScanner = class {
|
|
|
127
132
|
if (this.#emitCode(final, events)) continue;
|
|
128
133
|
break;
|
|
129
134
|
}
|
|
130
|
-
const hit = scanVisible(this.#buffer, final);
|
|
135
|
+
const hit = scanVisible(this.#buffer, final, this.#impliedOpen);
|
|
131
136
|
if (hit.kind === "none") {
|
|
132
137
|
this.#emitText(this.#buffer, events);
|
|
133
138
|
this.#buffer = "";
|
|
@@ -138,6 +143,11 @@ var ThinkingInbandScanner = class {
|
|
|
138
143
|
this.#buffer = this.#buffer.slice(hit.index);
|
|
139
144
|
break;
|
|
140
145
|
}
|
|
146
|
+
if (hit.kind === "impliedClose") {
|
|
147
|
+
this.#buffer = this.#buffer.slice(hit.index + hit.tag.close.length);
|
|
148
|
+
events.push({ type: "impliedThinkingEnd" });
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
141
151
|
if (hit.kind === "code") {
|
|
142
152
|
const fenced = hit.ticks >= 3 && this.#lineIndent >= 0 && this.#lineIndent <= 3;
|
|
143
153
|
this.#emitText(this.#buffer.slice(hit.index, hit.index + hit.ticks), events);
|
|
@@ -217,14 +227,16 @@ var ThinkingInbandScanner = class {
|
|
|
217
227
|
};
|
|
218
228
|
/**
|
|
219
229
|
* Walk idle visible text for the earliest boundary: a leaked reasoning-tag open,
|
|
220
|
-
* a
|
|
221
|
-
*
|
|
230
|
+
* a bare close of an implied-open tag (when `impliedOpen`), a Markdown
|
|
231
|
+
* code-span/fence opener (a backtick run), or — when more chunks may follow — a
|
|
232
|
+
* held partial delimiter at the buffer tail.
|
|
222
233
|
*
|
|
223
234
|
* Reasoning tags win at any position so the gemini ` ```thinking ` fence is
|
|
224
235
|
* healed instead of being read as a code fence. Backtick runs enter code mode so
|
|
225
236
|
* a literal `<think>` inside inline code or a fenced block stays visible text.
|
|
226
237
|
*/
|
|
227
|
-
function scanVisible(buffer, final) {
|
|
238
|
+
function scanVisible(buffer, final, impliedOpen) {
|
|
239
|
+
const delimiters = impliedOpen ? IMPLIED_OPEN_DELIMITERS : OPENS;
|
|
228
240
|
for (let i = 0; i < buffer.length; i++) {
|
|
229
241
|
const tag = TAGS.find((candidate) => buffer.startsWith(candidate.open, i));
|
|
230
242
|
if (tag) return {
|
|
@@ -232,9 +244,17 @@ function scanVisible(buffer, final) {
|
|
|
232
244
|
index: i,
|
|
233
245
|
tag
|
|
234
246
|
};
|
|
247
|
+
if (impliedOpen) {
|
|
248
|
+
const closed = IMPLIED_OPEN_TAGS.find((candidate) => buffer.startsWith(candidate.close, i));
|
|
249
|
+
if (closed) return {
|
|
250
|
+
kind: "impliedClose",
|
|
251
|
+
index: i,
|
|
252
|
+
tag: closed
|
|
253
|
+
};
|
|
254
|
+
}
|
|
235
255
|
if (!final) {
|
|
236
256
|
const rest = buffer.slice(i);
|
|
237
|
-
if (
|
|
257
|
+
if (delimiters.some((delimiter) => delimiter.length > rest.length && delimiter.startsWith(rest))) return {
|
|
238
258
|
kind: "hold",
|
|
239
259
|
index: i
|
|
240
260
|
};
|
|
@@ -313,179 +333,4 @@ function isAllBackticks(text) {
|
|
|
313
333
|
return text.length > 0;
|
|
314
334
|
}
|
|
315
335
|
//#endregion
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Streaming-safe filters for leaked chat-template tool-call and thinking markup.
|
|
319
|
-
*
|
|
320
|
-
* Hosted models sometimes leak raw template markup into visible `content` instead
|
|
321
|
-
* of returning structured events. Tool-call healing delegates to the same
|
|
322
|
-
* dialect scanners used by owned in-band tool calling; this file keeps the
|
|
323
|
-
* provider-facing compatibility wrapper and model/provider gating.
|
|
324
|
-
*/
|
|
325
|
-
const KIMI_SECTION_END = "<|tool_calls_section_end|>";
|
|
326
|
-
const DSML_TOOL_CALLS_CLOSE_FULLWIDTH = "</|DSML|tool_calls>";
|
|
327
|
-
const DSML_TOOL_CALLS_CLOSE_ASCII = "</|DSML|tool_calls>";
|
|
328
|
-
/**
|
|
329
|
-
* State machine that consumes streamed visible text and emits cleaned text,
|
|
330
|
-
* thinking deltas, and reconstructed tool calls.
|
|
331
|
-
*
|
|
332
|
-
* A {@link ThinkingInbandScanner} always heals leaked reasoning idioms
|
|
333
|
-
* (`<think>`, `<thinking>`, ` ```thinking `, Gemma/Harmony channels, …) out of
|
|
334
|
-
* the visible channel. For Kimi / DeepSeek-DSML the provider tool-call grammar
|
|
335
|
-
* runs first and its cleaned text is piped through that thinking healer, so a
|
|
336
|
-
* model can leak tool-call markup and reasoning in the same stream.
|
|
337
|
-
*
|
|
338
|
-
* Feed only one stream channel (usually `delta.content` / `message.content`).
|
|
339
|
-
* Mixing reasoning and visible text into the same instance can corrupt held-back
|
|
340
|
-
* partial tag buffers.
|
|
341
|
-
*/
|
|
342
|
-
var StreamMarkupHealing = class {
|
|
343
|
-
#pattern;
|
|
344
|
-
/** Provider tool-call grammar (Kimi tokens / DSML envelope); absent for plain text streams. */
|
|
345
|
-
#toolScanner;
|
|
346
|
-
/** Always-on healer for leaked reasoning idioms in the visible text channel. */
|
|
347
|
-
#thinkingScanner = new ThinkingInbandScanner();
|
|
348
|
-
#sectionTerminated = false;
|
|
349
|
-
#completed = [];
|
|
350
|
-
constructor(options) {
|
|
351
|
-
this.#pattern = options.pattern;
|
|
352
|
-
this.#toolScanner = options.pattern === "kimi" ? createInbandScanner("kimi") : options.pattern === "dsml" ? createInbandScanner("xml", { xmlTagset: "dsml" }) : void 0;
|
|
353
|
-
}
|
|
354
|
-
get pattern() {
|
|
355
|
-
return this.#pattern;
|
|
356
|
-
}
|
|
357
|
-
/**
|
|
358
|
-
* Feed a chunk and return visible text only. Reconstructed tool calls are
|
|
359
|
-
* stored for {@link drainCompleted}; thinking blocks are intentionally not
|
|
360
|
-
* returned by this compatibility helper. Use {@link feedEvents} when the caller
|
|
361
|
-
* needs ordered text/thinking/tool-call events.
|
|
362
|
-
*/
|
|
363
|
-
feed(text) {
|
|
364
|
-
let clean = "";
|
|
365
|
-
for (const event of this.feedEvents(text)) if (event.type === "text") clean += event.text;
|
|
366
|
-
else if (event.type === "toolCall") this.#completed.push(event.call);
|
|
367
|
-
return clean;
|
|
368
|
-
}
|
|
369
|
-
/** Feed a chunk and return cleaned text/thinking/tool-call events in stream order. */
|
|
370
|
-
feedEvents(text) {
|
|
371
|
-
if (text.length === 0) return [];
|
|
372
|
-
this.#markSectionClosed(text);
|
|
373
|
-
if (!this.#toolScanner) return this.#convertScannerEvents(this.#thinkingScanner.feed(text));
|
|
374
|
-
return this.#convertScannerEvents(this.#healThinking(this.#toolScanner.feed(text)));
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Feed a chunk and return cleaned events, excluding synthesized tool calls.
|
|
378
|
-
* Used when the upstream chunk also carries structured `tool_calls`, keeping
|
|
379
|
-
* that structured payload as the single source of truth while preserving
|
|
380
|
-
* adjacent text and thinking events.
|
|
381
|
-
*/
|
|
382
|
-
feedEventsWithoutCalls(text) {
|
|
383
|
-
const events = this.feedEvents(text);
|
|
384
|
-
let out;
|
|
385
|
-
for (let i = 0; i < events.length; i++) {
|
|
386
|
-
const event = events[i];
|
|
387
|
-
if (event.type === "toolCall") out ??= events.slice(0, i);
|
|
388
|
-
else if (out) out.push(event);
|
|
389
|
-
}
|
|
390
|
-
return out ?? events;
|
|
391
|
-
}
|
|
392
|
-
/** Drain accumulated tool calls from calls to {@link feed}. */
|
|
393
|
-
drainCompleted() {
|
|
394
|
-
if (this.#completed.length === 0) return [];
|
|
395
|
-
return this.#completed.splice(0, this.#completed.length);
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Flush held-back stream-end fragments as ordered events. Partial tool-call
|
|
399
|
-
* sections/envelopes are dropped by the delegated scanners; unterminated
|
|
400
|
-
* thinking blocks are emitted as thinking, matching the previous MiniMax parser
|
|
401
|
-
* behavior.
|
|
402
|
-
*/
|
|
403
|
-
flushEvents() {
|
|
404
|
-
const tail = this.#toolScanner ? this.#healThinking(this.#toolScanner.flush()) : [];
|
|
405
|
-
tail.push(...this.#thinkingScanner.flush());
|
|
406
|
-
return this.#convertScannerEvents(tail);
|
|
407
|
-
}
|
|
408
|
-
/** Flush held-back text only. Reconstructed calls are retained for {@link drainCompleted}. */
|
|
409
|
-
flushPending() {
|
|
410
|
-
let clean = "";
|
|
411
|
-
for (const event of this.flushEvents()) if (event.type === "text") clean += event.text;
|
|
412
|
-
else if (event.type === "toolCall") this.#completed.push(event.call);
|
|
413
|
-
return clean;
|
|
414
|
-
}
|
|
415
|
-
/** True once any configured tool-call section/envelope has fully closed. */
|
|
416
|
-
get sectionClosed() {
|
|
417
|
-
return this.#sectionTerminated;
|
|
418
|
-
}
|
|
419
|
-
#markSectionClosed(text) {
|
|
420
|
-
if (this.#sectionTerminated || !this.#toolScanner) return;
|
|
421
|
-
if (this.#pattern === "kimi") {
|
|
422
|
-
this.#sectionTerminated = text.includes(KIMI_SECTION_END);
|
|
423
|
-
return;
|
|
424
|
-
}
|
|
425
|
-
this.#sectionTerminated = text.includes(DSML_TOOL_CALLS_CLOSE_FULLWIDTH) || text.includes(DSML_TOOL_CALLS_CLOSE_ASCII);
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Re-scan the tool scanner's visible text through the always-on thinking
|
|
429
|
-
* healer: `text` events are healed for leaked reasoning idioms, while the tool
|
|
430
|
-
* scanner's own thinking / tool-call events pass through in stream order.
|
|
431
|
-
*/
|
|
432
|
-
#healThinking(toolEvents) {
|
|
433
|
-
const out = [];
|
|
434
|
-
for (const event of toolEvents) if (event.type === "text") out.push(...this.#thinkingScanner.feed(event.text));
|
|
435
|
-
else out.push(event);
|
|
436
|
-
return out;
|
|
437
|
-
}
|
|
438
|
-
#convertScannerEvents(events) {
|
|
439
|
-
const out = [];
|
|
440
|
-
for (const event of events) switch (event.type) {
|
|
441
|
-
case "text":
|
|
442
|
-
out.push({
|
|
443
|
-
type: "text",
|
|
444
|
-
text: event.text
|
|
445
|
-
});
|
|
446
|
-
break;
|
|
447
|
-
case "thinkingDelta":
|
|
448
|
-
if (event.delta.length > 0) out.push({
|
|
449
|
-
type: "thinking",
|
|
450
|
-
thinking: event.delta
|
|
451
|
-
});
|
|
452
|
-
break;
|
|
453
|
-
case "toolEnd": out.push({
|
|
454
|
-
type: "toolCall",
|
|
455
|
-
call: {
|
|
456
|
-
id: generateHealedToolCallId(),
|
|
457
|
-
name: event.name,
|
|
458
|
-
arguments: JSON.stringify(event.arguments)
|
|
459
|
-
}
|
|
460
|
-
});
|
|
461
|
-
}
|
|
462
|
-
return out;
|
|
463
|
-
}
|
|
464
|
-
};
|
|
465
|
-
function generateHealedToolCallId() {
|
|
466
|
-
return `call_${crypto.randomUUID().replace(/-/g, "").slice(0, 24)}`;
|
|
467
|
-
}
|
|
468
|
-
/** Cheap model/provider gate for Kimi-K2 chat-template token leaks. */
|
|
469
|
-
function modelMayLeakKimiToolCalls(provider, modelId) {
|
|
470
|
-
if (provider === "kimi-code" || provider === "moonshot") return true;
|
|
471
|
-
return /kimi[-/_.]?k2/i.test(modelId);
|
|
472
|
-
}
|
|
473
|
-
/** Cheap model/provider gate for DeepSeek DSML envelope leaks. */
|
|
474
|
-
function modelMayLeakDsmlToolCalls(provider, modelId) {
|
|
475
|
-
if (!isDeepseekModelIdOrName(modelId)) return false;
|
|
476
|
-
return provider === "ollama" || provider === "ollama-cloud" || provider === "nvidia" || provider === "deepseek" || provider === "fireworks" || provider === "nanogpt" || provider === "opencode-go" || provider === "openrouter";
|
|
477
|
-
}
|
|
478
|
-
/**
|
|
479
|
-
* Pick the leaked-markup healer for an OpenAI-compatible / Ollama visible-text
|
|
480
|
-
* stream. Kimi chat-template tokens and DeepSeek DSML envelopes need their
|
|
481
|
-
* dedicated tool-call grammars; every other model uses `"thinking"`. All three
|
|
482
|
-
* patterns run the generic {@link ThinkingInbandScanner}, so leaked reasoning
|
|
483
|
-
* idioms (e.g. a Gemini ` ```thinking ` fence on OpenRouter) are always healed.
|
|
484
|
-
*/
|
|
485
|
-
function getStreamMarkupHealingPattern(provider, modelId) {
|
|
486
|
-
if (modelMayLeakKimiToolCalls(provider, modelId)) return "kimi";
|
|
487
|
-
if (modelMayLeakDsmlToolCalls(provider, modelId)) return "dsml";
|
|
488
|
-
return "thinking";
|
|
489
|
-
}
|
|
490
|
-
//#endregion
|
|
491
|
-
export { getStreamMarkupHealingPattern as n, StreamMarkupHealing as t };
|
|
336
|
+
export { ThinkingInbandScanner as t };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
3
|
import { r as __exportAll } from "./fs-promises-shim-Bx0fpxuk.mjs";
|
|
4
|
-
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@
|
|
4
|
+
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@18.1.17/node_modules/@oh-my-pi/pi-utils/src/turndown/gfm.ts
|
|
5
5
|
function descendantElements(node, name) {
|
|
6
6
|
const matches = [];
|
|
7
7
|
for (const child of Array.from(node.children)) {
|
|
@@ -98,7 +98,7 @@ const gfm = (service) => {
|
|
|
98
98
|
taskListItems(service);
|
|
99
99
|
};
|
|
100
100
|
//#endregion
|
|
101
|
-
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@
|
|
101
|
+
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@18.1.17/node_modules/@oh-my-pi/pi-utils/src/turndown/html.ts
|
|
102
102
|
const VOID_ELEMENTS = {
|
|
103
103
|
AREA: true,
|
|
104
104
|
BASE: true,
|
|
@@ -284,7 +284,7 @@ function parseHtmlFragment(html) {
|
|
|
284
284
|
const stack = [root];
|
|
285
285
|
for (const token of htmlTokens(html)) {
|
|
286
286
|
const parent = stack[stack.length - 1] ?? root;
|
|
287
|
-
if (token.startsWith("<!--") ||
|
|
287
|
+
if (token.startsWith("<!--") || token.startsWith("<!")) continue;
|
|
288
288
|
if (!token.startsWith("<")) {
|
|
289
289
|
parent.append(new HtmlText(decodeEntities(token)));
|
|
290
290
|
continue;
|
|
@@ -317,7 +317,7 @@ function serializeNode(node) {
|
|
|
317
317
|
return Array.from(node.childNodes).map(serializeNode).join("");
|
|
318
318
|
}
|
|
319
319
|
//#endregion
|
|
320
|
-
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@
|
|
320
|
+
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@18.1.17/node_modules/@oh-my-pi/pi-utils/src/turndown/service.ts
|
|
321
321
|
const BLOCK_ELEMENTS = {
|
|
322
322
|
ADDRESS: true,
|
|
323
323
|
ARTICLE: true,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@
|
|
3
|
+
//#region node_modules/.pnpm/@oh-my-pi+pi-utils@18.1.17/node_modules/@oh-my-pi/pi-utils/src/type-guards.ts
|
|
4
4
|
function isRecord(value) {
|
|
5
5
|
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
6
6
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tool-plus settings card — a collapsible disclosure card in the Plugins
|
|
3
|
+
* settings tab styled against the app's `--dsw-alias-*` design tokens and the
|
|
4
|
+
* official card interaction (header button with unsaved badge + rotating
|
|
5
|
+
* chevron, smooth expand/collapse respecting reduced-motion, staged edits that
|
|
6
|
+
* survive collapsing, one Save write, nothing rendered while the namespace is
|
|
7
|
+
* unavailable). Copy is fully localized through the slot-injected `t` seat
|
|
8
|
+
* (`locale: 'tool-plus'`), which re-renders on a locale switch.
|
|
9
|
+
*
|
|
10
|
+
* The card edits the FLAT settings surface (OMP `bash*`-style scalar keys) —
|
|
11
|
+
* the client scope only writes scalar fields — grouped as timeouts,
|
|
12
|
+
* backgrounding, output, completion truncation (subdivided into byte and line
|
|
13
|
+
* settings), and behavior. Field definitions, defaults, and copy keys come
|
|
14
|
+
* from the single-source field table (`src/config/fields.ts`), shared with
|
|
15
|
+
* the Tool Plus settings section.
|
|
16
|
+
* @module @xiaoso/dsh-tool-plus/client
|
|
17
|
+
*/
|
|
18
|
+
import { type ReactNode } from 'react';
|
|
19
|
+
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
20
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
|
|
21
|
+
import type { OutputRetentionMode, OutputTruncateStrategy } from '../config/settings.ts';
|
|
22
|
+
/** The flat, scalar-editable fields this card edits (mirrors the settings schema). */
|
|
23
|
+
export interface BashPlusSettings {
|
|
24
|
+
enableRunInBackground?: boolean;
|
|
25
|
+
autoBackgroundMs?: number;
|
|
26
|
+
defaultTimeoutMs?: number;
|
|
27
|
+
maxTimeoutMs?: number;
|
|
28
|
+
outputMaxBytes?: number;
|
|
29
|
+
outputSinkTailBytes?: number;
|
|
30
|
+
outputSinkHeadBytes?: number;
|
|
31
|
+
minimizerEnabled?: boolean;
|
|
32
|
+
interceptorEnabled?: boolean;
|
|
33
|
+
nonInteractiveEnv?: boolean;
|
|
34
|
+
snapshotEnabled?: boolean;
|
|
35
|
+
useShellCommandWrapper?: boolean;
|
|
36
|
+
maxBackgroundJobs?: number;
|
|
37
|
+
outputTruncateStrategy?: OutputTruncateStrategy;
|
|
38
|
+
outputTruncateTriggerBytes?: number;
|
|
39
|
+
outputTruncateTriggerLines?: number;
|
|
40
|
+
outputTruncateByteMode?: OutputRetentionMode;
|
|
41
|
+
outputTruncateByteHeadBytes?: number;
|
|
42
|
+
outputTruncateByteTailBytes?: number;
|
|
43
|
+
outputTruncateLineMode?: OutputRetentionMode;
|
|
44
|
+
outputTruncateLineHeadLines?: number;
|
|
45
|
+
outputTruncateLineTailLines?: number;
|
|
46
|
+
}
|
|
47
|
+
/** Business face the slot registration injects: the bound scope. */
|
|
48
|
+
export interface BashPlusCardFace {
|
|
49
|
+
scope: SettingsScope<BashPlusSettings>;
|
|
50
|
+
}
|
|
51
|
+
/** Props the renderer binds: runtime seat, the `t` locale seat, and the scope face. */
|
|
52
|
+
export type BashPlusCardProps = PropsRuntime<'settings.plugin.item'> & PropsLocale<'tool-plus'> & BashPlusCardFace;
|
|
53
|
+
export declare function BashPlusCard(props: BashPlusCardProps): ReactNode;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Plus settings section — the plugin's own page in the Settings panel,
|
|
3
|
+
* registered into the `settings.section` slot (nav id `tool-plus`). The page
|
|
4
|
+
* renders one tab per tool (Bash / Read / Write & Edit / Grep /
|
|
5
|
+
* Ast Edit / Read Image); switching a tab shows that tool's configurable
|
|
6
|
+
* fields, while tools without global settings show a placeholder. Only the
|
|
7
|
+
* active tool's panel is rendered; the shared staged form over the
|
|
8
|
+
* `tool-plus` namespace lives at the page level, so drafts survive switching
|
|
9
|
+
* without keeping hidden panels mounted — the same flat schema the Bash card
|
|
10
|
+
* edits, from the same single-source field table.
|
|
11
|
+
*
|
|
12
|
+
* `action`-kind fields (e.g. 探测浏览器) are not part of the staged form:
|
|
13
|
+
* they run a host RPC endpoint over the official Connection channel
|
|
14
|
+
* (`/tool-plus`), with per-field running/result state kept at the page level.
|
|
15
|
+
*
|
|
16
|
+
* Tab chrome mirrors the official Plugins settings section
|
|
17
|
+
* (ui-settings-plugins): `role="tablist"` + tab/panel roles, aria wiring,
|
|
18
|
+
* and arrow/Home/End keyboard roaming.
|
|
19
|
+
*
|
|
20
|
+
* The page is pinned to the host settings pane: the heading, intro and tablist
|
|
21
|
+
* stay put, the save bar sits at the bottom, and the tab panel is the only
|
|
22
|
+
* scroller — so the scrollbar spans just the band between them.
|
|
23
|
+
* @module @xiaoso/dsh-tool-plus/client
|
|
24
|
+
*/
|
|
25
|
+
import { type ReactNode } from 'react';
|
|
26
|
+
import type { InjectFace, PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
27
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
|
|
28
|
+
import { type ToolSettingsValue } from './forms.ts';
|
|
29
|
+
/** Registration-side face: the bound settings scope. */
|
|
30
|
+
export interface ToolPlusSectionInjected {
|
|
31
|
+
scope: SettingsScope<ToolSettingsValue>;
|
|
32
|
+
}
|
|
33
|
+
/** Props the renderer binds for the section (owner + locale + injected face). */
|
|
34
|
+
export type ToolPlusSectionProps = PropsRuntime<'settings.section'> & PropsLocale<'tool-plus'> & InjectFace<ToolPlusSectionInjected>;
|
|
35
|
+
/** Render the Tool Plus settings section. */
|
|
36
|
+
export declare function ToolPlusSection(props: ToolPlusSectionProps): ReactNode;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic staged-form model over the plugin's flat settings namespace,
|
|
3
|
+
* shared by the Bash card and the Tool Plus settings section. A form stages
|
|
4
|
+
* what the user types and writes it only on save; field definitions come from
|
|
5
|
+
* the single-source table (`src/config/fields.ts`), so every surface renders
|
|
6
|
+
* the same fields with the same defaults.
|
|
7
|
+
* @module @xiaoso/dsh-tool-plus/client
|
|
8
|
+
*/
|
|
9
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
|
|
10
|
+
import type { CardShell } from '@deepseek-ai/dsh-client-ui-settings-plugins/client';
|
|
11
|
+
import type { ToolPlusField } from '../config/fields.ts';
|
|
12
|
+
import { type NumberControl, type SelectControl, type ToggleControl } from './rows.tsx';
|
|
13
|
+
/** The flat settings document shape this form edits. */
|
|
14
|
+
export type ToolSettingsValue = Record<string, number | boolean | string | undefined>;
|
|
15
|
+
/** One group of controls (a Bash subgroup or a whole tool's section). */
|
|
16
|
+
export interface ToolFormGroup {
|
|
17
|
+
group: string;
|
|
18
|
+
numbers: NumberControl[];
|
|
19
|
+
selects: SelectControl[];
|
|
20
|
+
toggles: ToggleControl[];
|
|
21
|
+
}
|
|
22
|
+
/** The form state a settings surface renders. */
|
|
23
|
+
export interface ToolForm {
|
|
24
|
+
shell: CardShell;
|
|
25
|
+
/** Controls grouped by `ToolPlusField.group`, in first-appearance order. */
|
|
26
|
+
groups: ToolFormGroup[];
|
|
27
|
+
actions: {
|
|
28
|
+
edit: (field: string, text: string) => void;
|
|
29
|
+
resetField: (field: string) => void;
|
|
30
|
+
save: () => Promise<void>;
|
|
31
|
+
discard: () => void;
|
|
32
|
+
};
|
|
33
|
+
editSelect: (field: string, value: string) => void;
|
|
34
|
+
onToggle: (field: string, checked: boolean) => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Stage edits over the bound scope; only a Save writes the document.
|
|
38
|
+
* @param scope - bound settings scope for the `tool-plus` namespace.
|
|
39
|
+
* @param fields - the fields this surface edits (single-source table slice).
|
|
40
|
+
* @returns the form state and its write actions.
|
|
41
|
+
*/
|
|
42
|
+
export declare function useToolForm(scope: SettingsScope<ToolSettingsValue>, fields: readonly ToolPlusField[]): ToolForm;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-plus settings card, browser half. Registers the plugin's card into the
|
|
3
|
+
* Plugins settings surface's `settings.plugin.item` slot — keyed by the
|
|
4
|
+
* `tool-plus` namespace, so the configurable tab pairs it with the Host-side
|
|
5
|
+
* namespace of the same name — binds that namespace's settings scope for
|
|
6
|
+
* reads and writes, and registers the card's locale dictionaries.
|
|
7
|
+
*
|
|
8
|
+
* Only officially exported APIs are used (`dsh-client-ui-slots` slot
|
|
9
|
+
* registry, `dsh-client-locale` dictionary registration, `dsh-client-ui-settings`
|
|
10
|
+
* scope contract and binder, and the published
|
|
11
|
+
* `dsh-client-ui-settings-plugins` slot-type declaration); the card itself is
|
|
12
|
+
* this package's own, not a copy of any non-exported card internals.
|
|
13
|
+
*
|
|
14
|
+
* @module @xiaoso/dsh-tool-plus/client
|
|
15
|
+
*/
|
|
16
|
+
import type { Context as ClientContext } from '@deepseek-ai/cordis';
|
|
17
|
+
/**
|
|
18
|
+
* Settings namespace of this plugin, spelled here because a client package
|
|
19
|
+
* must not depend on a Host package — official convention: the browser half
|
|
20
|
+
* spells the same value the Host plugin registers (src/config/settings.ts).
|
|
21
|
+
*/
|
|
22
|
+
export declare const BASH_PLUS_CLIENT_NS = "tool-plus";
|
|
23
|
+
/** Required services (cordis fiber inject): slots + locale + the settings scope binder. */
|
|
24
|
+
export declare const inject: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Mount the tool-plus settings card.
|
|
27
|
+
* @param ctx - the browser plugin context.
|
|
28
|
+
*/
|
|
29
|
+
export declare function apply(ctx: ClientContext): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale bundles for the bash-plus settings card. zh is the source of truth
|
|
3
|
+
* for the key set; en is checked complete against it — both dictionaries are
|
|
4
|
+
* `Record<BashPlusLocaleKey, string>`, so a missing or extra key in either is
|
|
5
|
+
* a compile error (the official registration enforces bilingual balance).
|
|
6
|
+
* @module @xiaoso/dsh-tool-plus/client
|
|
7
|
+
*/
|
|
8
|
+
export type BashPlusLocaleKey = 'title' | 'description' | 'nav' | 'pageTitle' | 'pageDescription' | 'tabBash' | 'tabRead' | 'tabWriteEdit' | 'tabGrep' | 'tabGlob' | 'tabAstGrep' | 'tabAstEdit' | 'tabReadImage' | 'groupTiming' | 'groupOutput' | 'groupTruncation' | 'groupBehavior' | 'groupReading' | 'groupSummary' | 'groupImages' | 'groupEditMode' | 'groupGuard' | 'groupGrep' | 'groupSearchDefaults' | 'groupFetch' | 'groupAst' | 'noConfigTitle' | 'noConfigHint' | 'readSummarizeEnabled' | 'readSummarizeEnabledHint' | 'readSummarizeProse' | 'readSummarizeProseHint' | 'readSummarizeMinBodyLines' | 'readSummarizeMinBodyLinesHint' | 'readSummarizeMinCommentLines' | 'readSummarizeMinCommentLinesHint' | 'readSummarizeMinTotalLines' | 'readSummarizeMinTotalLinesHint' | 'readSummarizeUnfoldUntil' | 'readSummarizeUnfoldUntilHint' | 'readSummarizeUnfoldLimit' | 'readSummarizeUnfoldLimitHint' | 'editBlockAutoGenerated' | 'editBlockAutoGeneratedHint' | 'readDefaultLimit' | 'readDefaultLimitHint' | 'readLineNumbers' | 'readLineNumbersHint' | 'readRenderMarkdown' | 'readRenderMarkdownHint' | 'readConcurrentSafe' | 'readConcurrentSafeHint' | 'editMode' | 'editModeHint' | 'editFuzzyMatch' | 'editFuzzyMatchHint' | 'editFuzzyThreshold' | 'editFuzzyThresholdHint' | 'editEnforceSeenLines' | 'editEnforceSeenLinesHint' | 'grepContextBefore' | 'grepContextBeforeHint' | 'grepContextAfter' | 'grepContextAfterHint' | 'grepCaseDefault' | 'grepCaseDefaultHint' | 'grepGitignoreDefault' | 'grepGitignoreDefaultHint' | 'globGitignoreDefault' | 'globGitignoreDefaultHint' | 'globHiddenDefault' | 'globHiddenDefaultHint' | 'astGrepEnabled' | 'astGrepEnabledHint' | 'astEditEnabled' | 'astEditEnabledHint' | 'optReplace' | 'optPatch' | 'optHashline' | 'optApplyPatch' | 'fetchEnabled' | 'fetchEnabledHint' | 'fetchMaxTimeoutSeconds' | 'fetchMaxTimeoutSecondsHint' | 'fetchReader' | 'fetchReaderHint' | 'browserReaderEnabled' | 'browserReaderEnabledHint' | 'browserProbe' | 'browserProbeHint' | 'browserProbeRunning' | 'browserProbeNone' | 'browserProbeFailed' | 'browserProbeUnavailable' | 'optReaderAuto' | 'optReaderNative' | 'optReaderTrafilatura' | 'optReaderLynx' | 'optReaderParallel' | 'optReaderJina' | 'optReaderBrowser' | 'imagesAutoResize' | 'imagesAutoResizeHint' | 'imagesBlockImages' | 'imagesBlockImagesHint' | 'imagesExcludeWebp' | 'imagesExcludeWebpHint' | 'imagesInputMaxBytes' | 'imagesInputMaxBytesHint' | 'imagesResizeMaxSide' | 'imagesResizeMaxSideHint' | 'imagesResizeMaxBytes' | 'imagesResizeMaxBytesHint' | 'imagesResizeMinSide' | 'imagesResizeMinSideHint' | 'imagesResizeJpegQuality' | 'imagesResizeJpegQualityHint' | 'autoBackgroundMs' | 'autoBackgroundMsHint' | 'defaultTimeoutMs' | 'defaultTimeoutMsHint' | 'maxTimeoutMs' | 'maxTimeoutMsHint' | 'maxBackgroundJobs' | 'maxBackgroundJobsHint' | 'outputMaxBytes' | 'outputMaxBytesHint' | 'outputSinkTailBytes' | 'outputSinkTailBytesHint' | 'outputSinkHeadBytes' | 'outputSinkHeadBytesHint' | 'minimizerEnabled' | 'minimizerEnabledHint' | 'enableRunInBackground' | 'enableRunInBackgroundHint' | 'interceptorEnabled' | 'interceptorEnabledHint' | 'nonInteractiveEnv' | 'nonInteractiveEnvHint' | 'snapshotEnabled' | 'snapshotEnabledHint' | 'rmSafe' | 'rmSafeHint' | 'rmSafeStatusInjected' | 'rmSafeStatusInjectedUnverified' | 'rmSafeStatusFailed' | 'rmSafeReasonSnapshotUnavailable' | 'rmSafeReasonCliMissing' | 'rmSafeReasonSnapshotWriteFailed' | 'rmSafeReasonRuntimeNotEffective' | 'useShellCommandWrapper' | 'useShellCommandWrapperHint' | 'outputTruncateStrategy' | 'outputTruncateStrategyHint' | 'outputTruncateTriggerBytes' | 'outputTruncateTriggerBytesHint' | 'outputTruncateTriggerLines' | 'outputTruncateTriggerLinesHint' | 'outputTruncateByteMode' | 'outputTruncateByteModeHint' | 'outputTruncateByteHeadBytes' | 'outputTruncateByteHeadBytesHint' | 'outputTruncateByteTailBytes' | 'outputTruncateByteTailBytesHint' | 'outputTruncateLineMode' | 'outputTruncateLineModeHint' | 'outputTruncateLineHeadLines' | 'outputTruncateLineHeadLinesHint' | 'outputTruncateLineTailLines' | 'outputTruncateLineTailLinesHint' | 'optBytes' | 'optLines' | 'optHead' | 'optTail' | 'optMiddle' | 'overridden' | 'reset' | 'readOnly' | 'expand' | 'collapse' | 'save' | 'saving' | 'discard' | 'unsaved' | 'saveFailed' | 'invalidNumber' | 'appliesTo';
|
|
9
|
+
/** Simplified Chinese copy. */
|
|
10
|
+
export declare const zh: Record<BashPlusLocaleKey, string>;
|
|
11
|
+
/** English copy. */
|
|
12
|
+
export declare const en: Record<BashPlusLocaleKey, string>;
|
|
13
|
+
/** Merge this plugin's namespace into the slot locale table (official pattern). */
|
|
14
|
+
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
15
|
+
interface LocaleNamespaceMap {
|
|
16
|
+
/** This plugin's own settings-card copy. */
|
|
17
|
+
'tool-plus': BashPlusLocaleKey;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rmSafe/status 结果 → 本地化文案的纯映射(无 React/DOM 依赖,可单测)。
|
|
3
|
+
* @module @xiaoso/dsh-tool-plus/client/rm-safe-status-text
|
|
4
|
+
*/
|
|
5
|
+
import type { RmSafeStatusValue } from '../tools/shared/browser-rpc-channel.ts';
|
|
6
|
+
import type { BashPlusLocaleKey } from './locales.ts';
|
|
7
|
+
/** Locale key of one rmSafe failure reason. */
|
|
8
|
+
export declare function rmSafeReasonKey(reason: Extract<RmSafeStatusValue, {
|
|
9
|
+
status: 'failed';
|
|
10
|
+
}>['reason']): BashPlusLocaleKey;
|
|
11
|
+
/**
|
|
12
|
+
* Localized text of one rmSafe/status result. `disabled` maps to the empty
|
|
13
|
+
* string — the caller decides not to surface it.
|
|
14
|
+
*/
|
|
15
|
+
export declare function rmSafeStatusText(t: (key: BashPlusLocaleKey) => string, value: RmSafeStatusValue): string;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared settings-row controls for the tool-plus settings surfaces: number
|
|
3
|
+
* input, select pill, and toggle switch rows, styled against the app's
|
|
4
|
+
* `--dsw-alias-*` design tokens. Extracted from the Bash card so the Plugins
|
|
5
|
+
* card and the Tool Plus settings section render identical controls.
|
|
6
|
+
* @module @xiaoso/dsh-tool-plus/client
|
|
7
|
+
*/
|
|
8
|
+
import { type ReactNode } from 'react';
|
|
9
|
+
import type { BashPlusLocaleKey } from './locales.ts';
|
|
10
|
+
/** One rendered number control. */
|
|
11
|
+
export interface NumberControl {
|
|
12
|
+
field: string;
|
|
13
|
+
labelKey: BashPlusLocaleKey;
|
|
14
|
+
hintKey: BashPlusLocaleKey;
|
|
15
|
+
text: string;
|
|
16
|
+
overridden: boolean;
|
|
17
|
+
invalid: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** One rendered select control. */
|
|
20
|
+
export interface SelectControl {
|
|
21
|
+
field: string;
|
|
22
|
+
labelKey: BashPlusLocaleKey;
|
|
23
|
+
hintKey: BashPlusLocaleKey;
|
|
24
|
+
options: readonly {
|
|
25
|
+
value: string;
|
|
26
|
+
labelKey: BashPlusLocaleKey;
|
|
27
|
+
}[];
|
|
28
|
+
value: string;
|
|
29
|
+
overridden: boolean;
|
|
30
|
+
}
|
|
31
|
+
/** One rendered toggle control. */
|
|
32
|
+
export interface ToggleControl {
|
|
33
|
+
field: string;
|
|
34
|
+
labelKey: BashPlusLocaleKey;
|
|
35
|
+
hintKey: BashPlusLocaleKey;
|
|
36
|
+
checked: boolean;
|
|
37
|
+
overridden: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** One rendered action control (button that calls a host RPC endpoint). */
|
|
40
|
+
export interface ActionControl {
|
|
41
|
+
field: string;
|
|
42
|
+
labelKey: BashPlusLocaleKey;
|
|
43
|
+
hintKey: BashPlusLocaleKey;
|
|
44
|
+
actionKey: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Shared row control CSS, keyed by `data-plugin-css` and injected once.
|
|
48
|
+
*
|
|
49
|
+
* Motion discipline: every moving control animates transform/opacity only
|
|
50
|
+
* (GPU-composited); color transitions fire on hover/focus state changes
|
|
51
|
+
* only. Everything is disabled under prefers-reduced-motion. All colors are
|
|
52
|
+
* `--dsw-alias-*` host tokens (or color-mix of them), so light/dark themes
|
|
53
|
+
* adapt automatically.
|
|
54
|
+
*/
|
|
55
|
+
export declare const SETTINGS_ROWS_CSS = "\n.tp-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--dsw-alias-border-l1);transition:background .16s ease}\n.tp-row:last-child{border-bottom:none}\n.tp-rowText{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;padding-right:24px}\n.tp-rowTitle{font-size:14px;font-weight:400;line-height:22px;color:var(--dsw-alias-label-primary)}\n.tp-rowDesc{font-size:12px;font-weight:400;line-height:18px;color:var(--dsw-alias-label-tertiary)}\n.tp-badges{display:inline-flex;align-items:center;gap:8px}\n.tp-badge{display:inline-flex;align-items:center;gap:6px;padding:1px 0;font-size:11px;line-height:17px;white-space:nowrap;font-weight:500;color:var(--dsw-alias-label-tertiary)}\n.tp-badge::before{content:'';flex:none;width:5px;height:5px;border-radius:999px;background:var(--dsw-alias-state-business-primary)}\n.tp-reset{position:relative;border:none;background:none;padding:2px 0;font:inherit;font-size:12px;line-height:1.5;color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color .16s ease}\n.tp-reset::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;border-radius:1px;background:currentColor;opacity:0;transform:scaleX(.6);transform-origin:left center;transition:opacity .16s ease,transform .2s cubic-bezier(.22,1,.36,1)}\n.tp-reset:hover:not(:disabled){color:var(--dsw-alias-label-primary)}\n.tp-reset:hover:not(:disabled)::after{opacity:.6;transform:scaleX(1)}\n.tp-reset:disabled{cursor:default}\n.tp-reset:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px;border-radius:2px}\n.tp-input{flex:none;width:128px;height:34px;padding:0 11px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-1);font:inherit;font-size:13px;line-height:1.5;color:var(--dsw-alias-label-primary);box-sizing:border-box;transition:border-color .16s ease}\n.tp-input:hover:not(:disabled):not(:focus-visible){border-color:var(--dsw-alias-border-l3)}\n.tp-input:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px;border-color:var(--dsw-alias-border-l3)}\n.tp-input:disabled{color:var(--dsw-alias-label-tertiary);cursor:default}\n.tp-input.tp-invalid{border-color:var(--dsw-alias-label-error)}\n.tp-input.tp-invalid:focus-visible{outline-color:var(--dsw-alias-state-error-primary)}\n.tp-invalidText{color:var(--dsw-alias-label-error);animation:tp-soft-in .18s ease both}\n.tp-selectAnchor{display:inline-flex;flex-shrink:0}\n.tp-selectTrigger{display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border:1px solid var(--dsw-alias-border-l2);border-radius:999px;background:var(--dsw-alias-bg-module-platform);font:inherit;font-size:13px;line-height:20px;color:var(--dsw-alias-label-primary);cursor:pointer;flex-shrink:0;transition:background .16s ease,border-color .16s ease,transform .1s ease}\n.tp-selectTrigger:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l3)}\n.tp-selectTrigger:active:not(:disabled){transform:scale(.97)}\n.tp-selectTrigger:disabled{opacity:.55;cursor:default}\n.tp-selectTrigger:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px}\n.tp-selectChevron{flex:none;color:var(--dsw-alias-label-tertiary);display:inline-flex;transition:transform .2s cubic-bezier(.22,1,.36,1)}\n.tp-selectTrigger[aria-expanded=\"true\"] .tp-selectChevron{transform:rotate(180deg)}\n.tp-switch{position:relative;width:40px;height:24px;flex:none}\n.tp-switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;z-index:1}\n.tp-switchTrack{position:absolute;inset:0;border-radius:999px;background:var(--dsw-alias-border-l2);transition:background .18s ease;pointer-events:none}\n.tp-row:hover .tp-switchTrack{background:var(--dsw-alias-border-l3)}\n.tp-switch input:checked+.tp-switchTrack{background:var(--dsw-alias-brand-primary)}\n.tp-row:hover .tp-switch input:checked+.tp-switchTrack{background:var(--dsw-alias-brand-primary)}\n.tp-switch input:focus-visible+.tp-switchTrack{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:2px}\n.tp-thumb{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:999px;background:var(--dsw-alias-bg-layer-3);box-shadow:0 1px 3px rgba(0,0,0,.14),0 1px 1px rgba(0,0,0,.08);transition:transform .2s cubic-bezier(.34,1.3,.5,1);transform-origin:left center;pointer-events:none}\n.tp-switch input:checked~.tp-thumb{transform:translateX(16px);transform-origin:right center}\n.tp-switch input:active:not(:disabled)~.tp-thumb{transform:scaleX(1.2)}\n.tp-switch input:checked:active:not(:disabled)~.tp-thumb{transform:translateX(16px) scaleX(1.2)}\n.tp-switch input:disabled{cursor:default}\n.tp-switch input:disabled~.tp-switchTrack,.tp-switch input:disabled~.tp-thumb{opacity:.45}\n.tp-actionField{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-bottom:1px solid var(--dsw-alias-border-l1)}\n.tp-actionField:last-child{border-bottom:none}\n.tp-actionHead{display:flex;align-items:center;gap:12px}\n.tp-actionInfo{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}\n.tp-actionTitle{font-size:14px;font-weight:400;line-height:22px;color:var(--dsw-alias-label-primary)}\n.tp-actionDesc{font-size:12px;font-weight:400;line-height:18px;color:var(--dsw-alias-label-tertiary)}\n.tp-actionButton{appearance:none;flex:none;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-1);padding:5px 14px;font:inherit;font-size:13px;line-height:1.5;color:var(--dsw-alias-label-primary);cursor:pointer;transition:background .16s ease,border-color .16s ease,transform .1s ease}\n.tp-actionButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);border-color:var(--dsw-alias-border-l3)}\n.tp-actionButton:active:not(:disabled){transform:scale(.97)}\n.tp-actionButton:disabled{opacity:.55;cursor:default}\n.tp-actionButton:focus-visible{outline:2px solid var(--dsw-alias-state-business-primary);outline-offset:1px}\n.tp-actionResult{margin:0;font-size:12px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;animation:tp-soft-in .22s cubic-bezier(.22,1,.36,1) both}\n.tp-actionResult[data-state=\"ok\"]{color:var(--dsw-alias-label-secondary)}\n.tp-actionResult[data-state=\"error\"]{color:var(--dsw-alias-label-error)}\n@keyframes tp-soft-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion: reduce){\n .tp-row,.tp-reset,.tp-reset::after,.tp-input,.tp-selectTrigger,.tp-selectChevron,.tp-switchTrack,.tp-thumb,.tp-actionButton{transition:none}\n .tp-invalidText,.tp-actionResult{animation:none}\n}\n";
|
|
56
|
+
export declare function injectSettingsRowsCss(): void;
|
|
57
|
+
declare function hasOwn(obj: unknown, key: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Number row: same left-text / right-control anatomy as toggle and select
|
|
60
|
+
* rows, with the input right-aligned at a fixed width. The title is wired to
|
|
61
|
+
* the input (htmlFor), so clicking the title focuses the input; the
|
|
62
|
+
* description and the rest of the row are inert — each side manages its own
|
|
63
|
+
* interaction.
|
|
64
|
+
*/
|
|
65
|
+
export declare function NumberRow(props: {
|
|
66
|
+
t: (key: BashPlusLocaleKey) => string;
|
|
67
|
+
control: NumberControl;
|
|
68
|
+
disabled: boolean;
|
|
69
|
+
onEdit: (field: string, text: string) => void;
|
|
70
|
+
onReset: (field: string) => void;
|
|
71
|
+
}): ReactNode;
|
|
72
|
+
/** Select row: Title + desc stacked on left, selector pill on right. */
|
|
73
|
+
export declare function SelectRow(props: {
|
|
74
|
+
t: (key: BashPlusLocaleKey) => string;
|
|
75
|
+
control: SelectControl;
|
|
76
|
+
disabled: boolean;
|
|
77
|
+
open: boolean;
|
|
78
|
+
onOpenChange: (field: string | null) => void;
|
|
79
|
+
onEdit: (field: string, value: string) => void;
|
|
80
|
+
onReset: (field: string) => void;
|
|
81
|
+
}): ReactNode;
|
|
82
|
+
/** Toggle row: Title + desc stacked on left, switch on right. */
|
|
83
|
+
export declare function ToggleRow(props: {
|
|
84
|
+
t: (key: BashPlusLocaleKey) => string;
|
|
85
|
+
control: ToggleControl;
|
|
86
|
+
disabled: boolean;
|
|
87
|
+
onToggle: (field: string, checked: boolean) => void;
|
|
88
|
+
onReset: (field: string) => void;
|
|
89
|
+
}): ReactNode;
|
|
90
|
+
/**
|
|
91
|
+
* Action row: Title + desc stacked on left, a button on the right that calls
|
|
92
|
+
* the host RPC endpoint named by `control.actionKey` (via the Connection
|
|
93
|
+
* channel; the caller owns the RPC). The result line renders below, colored
|
|
94
|
+
* by outcome (`ok` / `error`).
|
|
95
|
+
*/
|
|
96
|
+
export declare function ActionRow(props: {
|
|
97
|
+
t: (key: BashPlusLocaleKey) => string;
|
|
98
|
+
control: ActionControl;
|
|
99
|
+
disabled: boolean;
|
|
100
|
+
running: boolean;
|
|
101
|
+
result: {
|
|
102
|
+
ok: boolean;
|
|
103
|
+
text: string;
|
|
104
|
+
} | null;
|
|
105
|
+
onRun: (actionKey: string) => void;
|
|
106
|
+
}): ReactNode;
|
|
107
|
+
export { hasOwn };
|