super-dsh 0.3.0-a → 0.3.0-d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -22
- package/cordis.patch.yml +3 -3
- package/package.json +20 -8
- package/superd-hub/dist/bundle-setup.d.ts +17 -2
- package/superd-hub/dist/bundle-setup.js +158 -2
- package/superd-hub/dist/spawn-world.js +2 -5
- package/superd-hub/dist/world-resolution.d.ts +6 -0
- package/superd-hub/dist/world-resolution.js +39 -0
- package/superd-hub/package.json +19 -2
- package/superd-hub/scripts/register-companion.mjs +100 -0
- package/bundles/better-dsh.tgz +0 -0
- package/bundles/manifest.json +0 -10
- package/node_modules/better-dsh/LICENSE +0 -24
- package/node_modules/better-dsh/README.md +0 -323
- package/node_modules/better-dsh/THIRD_PARTY_NOTICES.md +0 -52
- package/node_modules/better-dsh/cordis.patch.yml +0 -139
- package/node_modules/better-dsh/docs/00_adr/0001-bridge-tool-layer-not-service-layer.md +0 -14
- package/node_modules/better-dsh/docs/00_adr/0002-masking-is-presentation-only.md +0 -15
- package/node_modules/better-dsh/docs/10_plans/2026-09-23-remote-execution-framework.md +0 -236
- package/node_modules/better-dsh/docs/10_plans/2026-09-23-remote-framework-impl.md +0 -2083
- package/node_modules/better-dsh/docs/10_plans/2026-09-26-lsp-ast-reminder.md +0 -64
- package/node_modules/better-dsh/docs/10_plans/A2A-messaging-channel-test-archive.md +0 -256
- package/node_modules/better-dsh/docs/10_plans/code-mode-vs-rlm-ipython-comparison.md +0 -137
- package/node_modules/better-dsh/docs/10_plans/dashr-blueprint-review.md +0 -201
- package/node_modules/better-dsh/docs/10_plans/dashr-blueprint.md +0 -561
- package/node_modules/better-dsh/docs/10_plans/dashr-compaction-window-and-archive.md +0 -307
- package/node_modules/better-dsh/docs/10_plans/dashr-profile-layer-feasibility.md +0 -367
- package/node_modules/better-dsh/docs/10_plans/dashr-sandbox-escalation-semantics-gap.md +0 -171
- package/node_modules/better-dsh/docs/10_plans/dashr-security-sandbox-analysis.md +0 -187
- package/node_modules/better-dsh/docs/10_plans/dashr-surface-invariant-and-omp-imports.md +0 -97
- package/node_modules/better-dsh/docs/10_plans/ipython-kernel-interactive-interface-test-report.md +0 -152
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft.md +0 -146
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft_v3.md +0 -50
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-IPython-Control-Prompt-draft_v4.md +0 -79
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/Dash-vs-PrimeAgent-systemprompt-toolcatalog-comparison.md +0 -138
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/RLM-system-prompt-injection-gap-report.md +0 -161
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/V0.1.5-development-plan.md +0 -109
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/actinoable-surface-to-llm-in-agent-runtime_dsh.md +0 -50
- package/node_modules/better-dsh/docs/10_plans/kernel-refactoring/actinoable-surface-to-llm-in-agent-runtime_prime.md +0 -113
- package/node_modules/better-dsh/docs/10_plans/recallable-compaction.md +0 -147
- package/node_modules/better-dsh/docs/10_plans/spike-tag-repro.mjs +0 -102
- package/node_modules/better-dsh/docs/10_plans/upstream-analysis.md +0 -128
- package/node_modules/better-dsh/docs/20_specs/agent/spec.md +0 -54
- package/node_modules/better-dsh/docs/20_specs/ast/spec.md +0 -57
- package/node_modules/better-dsh/docs/20_specs/compaction-recall/spec.md +0 -46
- package/node_modules/better-dsh/docs/20_specs/ctx/spec.md +0 -107
- package/node_modules/better-dsh/docs/20_specs/dsh/spec.md +0 -47
- package/node_modules/better-dsh/docs/20_specs/dvc/spec.md +0 -106
- package/node_modules/better-dsh/docs/20_specs/escalation-guidance/spec.md +0 -44
- package/node_modules/better-dsh/docs/20_specs/fs-scheme-resolution/spec.md +0 -37
- package/node_modules/better-dsh/docs/20_specs/hash-edit/spec.md +0 -41
- package/node_modules/better-dsh/docs/20_specs/http-read/spec.md +0 -73
- package/node_modules/better-dsh/docs/20_specs/kernel-provisioning/spec.md +0 -53
- package/node_modules/better-dsh/docs/20_specs/lsp/spec.md +0 -121
- package/node_modules/better-dsh/docs/20_specs/mobile-layout/spec.md +0 -108
- package/node_modules/better-dsh/docs/20_specs/model-failover/spec.md +0 -20
- package/node_modules/better-dsh/docs/20_specs/plugins-page-components/spec.md +0 -79
- package/node_modules/better-dsh/docs/20_specs/preact-ui-shell/spec.md +0 -22
- package/node_modules/better-dsh/docs/20_specs/repl-dispatch-resilience/spec.md +0 -21
- package/node_modules/better-dsh/docs/20_specs/skill/spec.md +0 -58
- package/node_modules/better-dsh/docs/20_specs/tool-surface/spec.md +0 -222
- package/node_modules/better-dsh/docs/20_specs/url-schema/spec.md +0 -148
- package/node_modules/better-dsh/docs/20_specs/web-trust-fence/spec.md +0 -43
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-06-write/345/267/245/345/205/267sandbox/345/215/207/347/272/247/351/200/217/344/274/240bug/345/244/215/345/217/221/345/217/212/346/214/202/350/265/267-/344/272/213/344/273/266/346/212/245/345/221/212.md +0 -176
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-08-hashline-edit-E_RANGE_UNVERIFIED/350/267/250/350/275/256/344/274/232/350/257/235/351/224/256/345/244/261/346/225/210-/350/257/212/346/226/255/346/212/245/345/221/212.md +0 -226
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-11-control-prompt-into-eval-description/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -222
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-fs-scheme-resolution-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -81
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-grammar-matrix/344/270/216catalog-centralize-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -234
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-recallable-context-design/351/252/214/350/257/201/346/212/245/345/221/212.md +0 -160
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-recallable-context-/345/256/236/346/265/213/345/211/247/346/234/254.md +0 -44
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-recallable-context-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -89
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-12-url-schemes-/345/205/255scheme/345/206/222/347/203/237/344/270/216/350/276/271/347/225/214/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -198
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-13-hashline-off/344/270/213scheme/345/217/257/350/276/276/346/200/247/345/267/245/345/205/267/351/235/242/344/270/215/345/257/271/347/247/260-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -246
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-13-preact-ui-shell/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -50
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-14-4999-skill/346/270/205/345/215/225/344/270/216lsp-gate/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -63
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-17-plugins/351/241/265/345/205/255/347/273/204/344/273/266/346/213/206/345/210/206/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -76
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-22-4988/345/217/214/345/271/263/351/235/242/345/220/257/345/212/250/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -76
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-22-better-dsh/347/273/204/344/273/266/347/203/255/346/217/222/346/213/224/344/270/216/344/276/235/350/265/226/347/272/247/350/201/224/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -134
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-23-remote-framework/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -92
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-23-remote-framework/347/254/254/344/270/200/344/272/272/347/247/260/345/244/215/346/265/213/346/212/245/345/221/212.md +0 -125
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-23-ssh/345/267/245/345/205/267assisted-pty/344/274/232/350/257/235framing/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -207
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-24-v0.1.7-rc.1/345/257/271/351/275/220/350/275/256-compaction/344/270/216failover/350/256/276/347/275/256/351/235/242/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -65
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-27-lsp-ast-reminder-4999/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -53
- package/node_modules/better-dsh/docs/50_test-reports/2026-09-28-ctx-scheme/351/225/277/344/274/232/350/257/235utility/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -155
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-01-v0.2.4d-web-password-gate/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -105
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-02-better-dsh-schemastery/344/276/235/350/265/226/345/243/260/346/230/216/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -62
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-02-ctx-navigation/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -137
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-02-v0.2.0-rc.2/345/257/271/351/275/220/350/275/256/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -38
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-ast-engine-deomp-4999/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -325
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-better-dsh-tool-surface-repl-dvc-browser-ast-lsp-4999/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -185
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-docs-packaging-trim/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -82
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-physical-import/344/270/216llm-completion-ast/347/233/270/345/257/271/350/267/257/345/276/204/344/277/256/345/244/215/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -101
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-pnpm11/345/271/264/351/276/204/351/227/250/351/224/201/346/226/207/344/273/266/347/233/270/344/275/215/345/256/236/350/257/201.md +0 -54
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-remote-BYO-PTY-label/351/207/215/346/236/204/347/254/254/344/270/200/344/272/272/347/247/260/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -447
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-schemastery-cosmokit/346/272/220/347/240/201/345/206/205/350/201/224/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -63
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-03-zero-npm-runtime-deps/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -82
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-04-ast-engine-deomp-0.2.5-d/345/217/221/345/270/203/351/252/214/346/224/266/346/212/245/345/221/212.md +0 -220
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-04-ast_grep/344/270/216ast_edit/345/245/221/347/272/246/344/270/216/350/276/271/347/225/214/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -151
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-06-authentication-only-web-admission-4999.md +0 -63
- package/node_modules/better-dsh/docs/50_test-reports/2026-10-07-better-dsh-welcome-self-contained-4999.md +0 -52
- package/node_modules/better-dsh/docs/50_test-reports/REPL-/345/267/245/345/205/267/350/260/203/347/224/250-/346/210/252/346/226/255/350/257/212/346/226/255.md +0 -110
- package/node_modules/better-dsh/docs/50_test-reports/kernel-provisioning.md +0 -44
- package/node_modules/better-dsh/docs/50_test-reports/repl-kernel-provisioning-test-report.md +0 -87
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.2-alpha.5-local-test-report.md +0 -81
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.2-alpha.5-report.md +0 -93
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.3-alpha.2-local-test-report.md +0 -44
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.3-alpha.2-report.md +0 -110
- package/node_modules/better-dsh/docs/50_test-reports/upstream-dsh-0.1.5-rc.2-local-test-report.md +0 -79
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8-improved-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -142
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -193
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8b-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -96
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8c-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -127
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8d-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -150
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.8e-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -224
- package/node_modules/better-dsh/docs/50_test-reports/v0.1.9a-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -168
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.0b-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -123
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -110
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1b-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -86
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1c-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -66
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1d-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -67
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1e-P1-/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -136
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1ef-dev-audit-report.md +0 -73
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.1f-plugin-shipped-ui-patches/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -102
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.3b-hashline-content-locator/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -73
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.3c-mobile-wave/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -47
- package/node_modules/better-dsh/docs/50_test-reports/v0.2.4-ios-focus-zoom-suppression/345/256/236/346/265/213/346/212/245/345/221/212.md +0 -158
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/SKILL.md +0 -147
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch01-user-guide.md +0 -123
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch02-plugin-basics.md +0 -127
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch03-plugin-framework-practice.md +0 -120
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch04-cordis-fundamentals.md +0 -129
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch05-cordis-api.md +0 -115
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch06-architecture.md +0 -109
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch07-capability-seams.md +0 -97
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch08-internals-pipelines.md +0 -111
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch09-api-gateway.md +0 -106
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch10-config-catalog.md +0 -97
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch11-tool-catalog.md +0 -121
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch12-persistence-catalog.md +0 -109
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch13-subsystems-core-session.md +0 -106
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch14-subsystems-agent-loop.md +0 -111
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch15-subsystems-tool-execution.md +0 -106
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch16-subsystems-session-data.md +0 -132
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch17-subsystems-llm-streaming.md +0 -128
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch18-subsystems-web-ui.md +0 -142
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch19-cookbook.md +0 -149
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch20-development-testing.md +0 -87
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch21-postmortems.md +0 -82
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/chapters/ch22-i18n.md +0 -86
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/cheatsheet.md +0 -67
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/glossary.md +0 -57
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/skill/patterns.md +0 -88
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/AGENTS.md +0 -75
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/agent-lifecycle.md +0 -84
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/agent-lifecycle.zh.md +0 -86
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/api-gateway.md +0 -164
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/api-gateway.zh.md +0 -164
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/architecture.md +0 -150
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/architecture.zh.md +0 -154
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/capability-seams.md +0 -543
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/capability-seams.zh.md +0 -545
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/config-catalog.md +0 -3473
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/config-catalog.zh.md +0 -3474
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-package.md +0 -117
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-package.zh.md +0 -119
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-remote-api.md +0 -197
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-remote-api.zh.md +0 -197
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-settings-card.md +0 -102
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-settings-card.zh.md +0 -102
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-tool.md +0 -101
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-tool.zh.md +0 -103
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-vendored-package.md +0 -59
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-a-vendored-package.zh.md +0 -59
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-an-llm-adapter.md +0 -43
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/adding-an-llm-adapter.zh.md +0 -43
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/extension-cookbook.md +0 -132
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/extension-cookbook.zh.md +0 -136
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/maintaining-dsh-code-review.md +0 -64
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/maintaining-dsh-code-review.zh.md +0 -64
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/responding-to-pr-review-on-a-stack.md +0 -32
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +0 -32
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/context.md +0 -364
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/context.zh.md +0 -366
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/events.md +0 -207
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/events.zh.md +0 -209
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/fiber.md +0 -375
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/fiber.zh.md +0 -377
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/inherited.md +0 -39
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/registry.md +0 -152
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/registry.zh.md +0 -154
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/service.md +0 -102
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-api/service.zh.md +0 -104
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-primer.md +0 -45
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-primer.zh.md +0 -51
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/01-first-plugin.md +0 -95
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/01-first-plugin.zh.md +0 -95
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/02-lifecycle-and-effects.md +0 -98
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +0 -98
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/03-services.md +0 -98
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/03-services.zh.md +0 -98
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/04-events.md +0 -144
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/04-events.zh.md +0 -144
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/05-config.md +0 -84
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/05-config.zh.md +0 -84
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/06-composition-and-hmr.md +0 -113
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/06-composition-and-hmr.zh.md +0 -113
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/07-into-the-harness.md +0 -108
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/07-into-the-harness.zh.md +0 -108
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/index.md +0 -60
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/cordis-tutorial/index.zh.md +0 -62
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/deepseek-llm-api-wire-extensions.md +0 -163
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/deepseek-llm-api-wire-extensions.zh.md +0 -163
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/defensive-patterns.md +0 -33
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/defensive-patterns.zh.md +0 -35
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/development.md +0 -167
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/development.zh.md +0 -173
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/event-producer-consumer.md +0 -86
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/event-producer-consumer.zh.md +0 -88
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/glossary.md +0 -45
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/glossary.zh.md +0 -45
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/graph-atlas.md +0 -22
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/graph-atlas.zh.md +0 -24
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/README.md +0 -60
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/README.zh.md +0 -62
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/style-samples.md +0 -87
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/terminology.md +0 -214
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-prompt.md +0 -263
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-rules.md +0 -69
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/i18n/translation-rules.zh.md +0 -69
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/module-graph.md +0 -1411
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/module-graph.zh.md +0 -1413
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/persistence-catalog.md +0 -1075
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/persistence-catalog.zh.md +0 -1077
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0001-acp-default-export-drops-inject.md +0 -113
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +0 -113
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +0 -47
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +0 -47
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0003-web-agent-gui-feedback-loop.md +0 -53
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +0 -53
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +0 -55
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +0 -55
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/README.md +0 -18
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/postmortem/README.zh.md +0 -18
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/rescope.md +0 -53
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/rescope.zh.md +0 -53
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/README.md +0 -61
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/README.zh.md +0 -61
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/agent-team.md +0 -207
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/agent-team.zh.md +0 -207
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/approval.md +0 -170
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/approval.zh.md +0 -170
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/attachment.md +0 -351
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/attachment.zh.md +0 -351
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/client-modules.md +0 -168
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/client-modules.zh.md +0 -168
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/code-runtime.md +0 -195
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/code-runtime.zh.md +0 -195
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/commands.md +0 -219
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/commands.zh.md +0 -219
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/compaction.md +0 -238
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/compaction.zh.md +0 -238
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/conversation.md +0 -258
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/conversation.zh.md +0 -258
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/core.md +0 -1209
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/core.zh.md +0 -1219
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/credentials.md +0 -329
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/credentials.zh.md +0 -329
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/extensions.md +0 -382
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/extensions.zh.md +0 -382
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/feedback.md +0 -266
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/feedback.zh.md +0 -266
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/filesystem.md +0 -505
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/filesystem.zh.md +0 -505
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/goal.md +0 -277
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/goal.zh.md +0 -277
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/invariants.md +0 -88
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/invariants.zh.md +0 -88
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/jobs.md +0 -290
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/jobs.zh.md +0 -290
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/llm-streaming.md +0 -1080
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/llm-streaming.zh.md +0 -1086
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/lsp.md +0 -202
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/lsp.zh.md +0 -202
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/permission-presets.md +0 -131
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/permission-presets.zh.md +0 -131
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/persistence.md +0 -395
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/persistence.zh.md +0 -395
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/plan.md +0 -87
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/plan.zh.md +0 -87
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/sandbox.md +0 -220
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/sandbox.zh.md +0 -220
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/schedule.md +0 -192
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/schedule.zh.md +0 -192
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/scope.md +0 -59
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/scope.zh.md +0 -59
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-projection.md +0 -354
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-projection.zh.md +0 -354
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-query.md +0 -509
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-query.zh.md +0 -509
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-reference.md +0 -219
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-reference.zh.md +0 -219
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-telemetry.md +0 -194
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-telemetry.zh.md +0 -194
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-title.md +0 -204
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session-title.zh.md +0 -204
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session.md +0 -1155
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/session.zh.md +0 -1159
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/settings.md +0 -405
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/settings.zh.md +0 -405
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/shell.md +0 -303
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/shell.zh.md +0 -303
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/skills.md +0 -354
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/skills.zh.md +0 -354
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/slots.md +0 -175
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/slots.zh.md +0 -175
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/spill.md +0 -117
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/spill.zh.md +0 -117
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/storage.md +0 -260
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/storage.zh.md +0 -260
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subagent.md +0 -766
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subagent.zh.md +0 -770
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subprocess.md +0 -324
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/subprocess.zh.md +0 -324
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/system-prompt.md +0 -220
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/system-prompt.zh.md +0 -220
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/terminal.md +0 -184
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/terminal.zh.md +0 -184
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/todo.md +0 -32
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/todo.zh.md +0 -32
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/token-meter.md +0 -105
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/token-meter.zh.md +0 -105
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/tools.md +0 -720
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/tools.zh.md +0 -720
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/typert.md +0 -343
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/typert.zh.md +0 -343
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/user-questions.md +0 -178
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/user-questions.zh.md +0 -178
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-client.md +0 -95
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-client.zh.md +0 -95
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-server.md +0 -154
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web-server.zh.md +0 -154
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web.md +0 -206
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/web.zh.md +0 -206
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/webhook.md +0 -70
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/webhook.zh.md +0 -70
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workflow.md +0 -278
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workflow.zh.md +0 -278
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workspace.md +0 -321
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/subsystems/workspace.zh.md +0 -321
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/testing.md +0 -54
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/testing.zh.md +0 -54
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-catalog.md +0 -2225
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-catalog.zh.md +0 -2233
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-execution-pipeline.md +0 -62
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/tool-execution-pipeline.zh.md +0 -64
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/config.md +0 -106
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/config.zh.md +0 -106
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/index.md +0 -144
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/index.zh.md +0 -144
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/publish.md +0 -183
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/publish.zh.md +0 -183
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/tool.md +0 -52
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/basic/tool.zh.md +0 -52
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/events.md +0 -143
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/events.zh.md +0 -143
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/index.md +0 -137
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/index.zh.md +0 -137
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/service.md +0 -148
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/framework/service.zh.md +0 -150
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/dynamic-cordis.md +0 -15
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/dynamic-cordis.zh.md +0 -15
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/index.md +0 -155
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/index.zh.md +0 -155
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/llm-adapter.md +0 -189
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/develop/practice/llm-adapter.zh.md +0 -189
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/github-review.md +0 -102
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/github-review.zh.md +0 -102
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/index.md +0 -30
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/index.zh.md +0 -30
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/mcp-memory.md +0 -101
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/mcp-memory.zh.md +0 -101
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/network-proxy.md +0 -85
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/network-proxy.zh.md +0 -85
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/providers.md +0 -190
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/providers.zh.md +0 -190
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/python-sdk.md +0 -150
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/python-sdk.zh.md +0 -150
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/schedule.md +0 -21
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/guide/schedule.zh.md +0 -21
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/index.md +0 -11
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/user/index.zh.md +0 -11
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/web-styling.md +0 -29
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/docs/web-styling.zh.md +0 -29
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/site-pages-map.txt +0 -234
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src/site-pages.json +0 -232
- package/node_modules/better-dsh/docs/80_upstream-docs-and-skills/dsh-dev-skill/src-README.md +0 -63
- package/node_modules/better-dsh/docs/dev-test-environment-notes.md +0 -137
- package/node_modules/better-dsh/docs/distro-blueprint.md +0 -81
- package/node_modules/better-dsh/docs/dsh-webUI-with-rlm-mode.png +0 -0
- package/node_modules/better-dsh/docs/repositioning-and-rebranding.md +0 -102
- package/node_modules/better-dsh/docs/specs/agent/spec.md +0 -54
- package/node_modules/better-dsh/docs/specs/ast/spec.md +0 -57
- package/node_modules/better-dsh/docs/specs/ast-engine-deomp/spec.md +0 -170
- package/node_modules/better-dsh/docs/specs/authentication-only-web-admission/spec.md +0 -51
- package/node_modules/better-dsh/docs/specs/compaction-recall/spec.md +0 -46
- package/node_modules/better-dsh/docs/specs/ctx/spec.md +0 -179
- package/node_modules/better-dsh/docs/specs/docs-packaging-trim/spec.md +0 -110
- package/node_modules/better-dsh/docs/specs/dsh/spec.md +0 -47
- package/node_modules/better-dsh/docs/specs/dvc/spec.md +0 -106
- package/node_modules/better-dsh/docs/specs/escalation-guidance/spec.md +0 -44
- package/node_modules/better-dsh/docs/specs/fs-scheme-resolution/spec.md +0 -37
- package/node_modules/better-dsh/docs/specs/hash-edit/spec.md +0 -41
- package/node_modules/better-dsh/docs/specs/http-read/spec.md +0 -73
- package/node_modules/better-dsh/docs/specs/kernel-provisioning/spec.md +0 -53
- package/node_modules/better-dsh/docs/specs/lsp/spec.md +0 -121
- package/node_modules/better-dsh/docs/specs/mobile-layout/spec.md +0 -108
- package/node_modules/better-dsh/docs/specs/model-failover/spec.md +0 -20
- package/node_modules/better-dsh/docs/specs/model-picker-ios-blur/spec.md +0 -168
- package/node_modules/better-dsh/docs/specs/plugins-page-components/spec.md +0 -79
- package/node_modules/better-dsh/docs/specs/preact-ui-shell/spec.md +0 -22
- package/node_modules/better-dsh/docs/specs/remote-pty-label/spec.md +0 -126
- package/node_modules/better-dsh/docs/specs/repl-dispatch-resilience/spec.md +0 -21
- package/node_modules/better-dsh/docs/specs/skill/spec.md +0 -58
- package/node_modules/better-dsh/docs/specs/tool-surface/spec.md +0 -222
- package/node_modules/better-dsh/docs/specs/url-schema/spec.md +0 -148
- package/node_modules/better-dsh/docs/specs/web-trust-fence/spec.md +0 -43
- package/node_modules/better-dsh/docs/specs/welcome-self-contained/spec.md +0 -13
- package/node_modules/better-dsh/docs/specs/zero-npm-runtime-deps/spec.md +0 -85
- package/node_modules/better-dsh/docs/superpowers/plans/2026-10-02-ctx-navigation.md +0 -319
- package/node_modules/better-dsh/docs/superpowers/plans/2026-10-03-ast-engine-deomp.md +0 -1214
- package/node_modules/better-dsh/docs/superpowers/plans/2026-10-03-docs-packaging-trim.md +0 -181
- package/node_modules/better-dsh/docs/superpowers/specs/2026-10-02-ctx-navigation-design.md +0 -209
- package/node_modules/better-dsh/docs/upstream-dsh-0.1.5-rc.2-report.md +0 -156
- package/node_modules/better-dsh/dsh-docs/AGENTS.md +0 -75
- package/node_modules/better-dsh/dsh-docs/agent-lifecycle.md +0 -84
- package/node_modules/better-dsh/dsh-docs/agent-lifecycle.zh.md +0 -86
- package/node_modules/better-dsh/dsh-docs/api-gateway.md +0 -164
- package/node_modules/better-dsh/dsh-docs/api-gateway.zh.md +0 -164
- package/node_modules/better-dsh/dsh-docs/architecture.md +0 -150
- package/node_modules/better-dsh/dsh-docs/architecture.zh.md +0 -154
- package/node_modules/better-dsh/dsh-docs/capability-seams.md +0 -543
- package/node_modules/better-dsh/dsh-docs/capability-seams.zh.md +0 -545
- package/node_modules/better-dsh/dsh-docs/config-catalog.md +0 -3473
- package/node_modules/better-dsh/dsh-docs/config-catalog.zh.md +0 -3474
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-package.md +0 -117
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-package.zh.md +0 -119
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-remote-api.md +0 -197
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-remote-api.zh.md +0 -197
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-session-format-version.md +0 -109
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-session-format-version.zh.md +0 -109
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-settings-card.md +0 -102
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-settings-card.zh.md +0 -102
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-tool.md +0 -101
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-tool.zh.md +0 -103
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-vendored-package.md +0 -59
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-a-vendored-package.zh.md +0 -59
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-an-llm-adapter.md +0 -43
- package/node_modules/better-dsh/dsh-docs/cookbook/adding-an-llm-adapter.zh.md +0 -43
- package/node_modules/better-dsh/dsh-docs/cookbook/extension-cookbook.md +0 -132
- package/node_modules/better-dsh/dsh-docs/cookbook/extension-cookbook.zh.md +0 -136
- package/node_modules/better-dsh/dsh-docs/cookbook/maintaining-dsh-code-review.md +0 -64
- package/node_modules/better-dsh/dsh-docs/cookbook/maintaining-dsh-code-review.zh.md +0 -64
- package/node_modules/better-dsh/dsh-docs/cookbook/responding-to-pr-review-on-a-stack.md +0 -32
- package/node_modules/better-dsh/dsh-docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +0 -32
- package/node_modules/better-dsh/dsh-docs/cordis-api/context.md +0 -364
- package/node_modules/better-dsh/dsh-docs/cordis-api/context.zh.md +0 -366
- package/node_modules/better-dsh/dsh-docs/cordis-api/events.md +0 -207
- package/node_modules/better-dsh/dsh-docs/cordis-api/events.zh.md +0 -209
- package/node_modules/better-dsh/dsh-docs/cordis-api/fiber.md +0 -375
- package/node_modules/better-dsh/dsh-docs/cordis-api/fiber.zh.md +0 -377
- package/node_modules/better-dsh/dsh-docs/cordis-api/inherited.md +0 -39
- package/node_modules/better-dsh/dsh-docs/cordis-api/registry.md +0 -152
- package/node_modules/better-dsh/dsh-docs/cordis-api/registry.zh.md +0 -154
- package/node_modules/better-dsh/dsh-docs/cordis-api/service.md +0 -102
- package/node_modules/better-dsh/dsh-docs/cordis-api/service.zh.md +0 -104
- package/node_modules/better-dsh/dsh-docs/cordis-primer.md +0 -45
- package/node_modules/better-dsh/dsh-docs/cordis-primer.zh.md +0 -51
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/01-first-plugin.md +0 -95
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/01-first-plugin.zh.md +0 -95
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/02-lifecycle-and-effects.md +0 -98
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +0 -98
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/03-services.md +0 -98
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/03-services.zh.md +0 -98
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/04-events.md +0 -144
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/04-events.zh.md +0 -144
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/05-config.md +0 -84
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/05-config.zh.md +0 -84
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/06-composition-and-hmr.md +0 -113
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/06-composition-and-hmr.zh.md +0 -113
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/07-into-the-harness.md +0 -108
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/07-into-the-harness.zh.md +0 -108
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/index.md +0 -60
- package/node_modules/better-dsh/dsh-docs/cordis-tutorial/index.zh.md +0 -62
- package/node_modules/better-dsh/dsh-docs/deepseek-llm-api-wire-extensions.md +0 -163
- package/node_modules/better-dsh/dsh-docs/deepseek-llm-api-wire-extensions.zh.md +0 -163
- package/node_modules/better-dsh/dsh-docs/defensive-patterns.md +0 -33
- package/node_modules/better-dsh/dsh-docs/defensive-patterns.zh.md +0 -35
- package/node_modules/better-dsh/dsh-docs/development.md +0 -167
- package/node_modules/better-dsh/dsh-docs/development.zh.md +0 -173
- package/node_modules/better-dsh/dsh-docs/event-producer-consumer.md +0 -86
- package/node_modules/better-dsh/dsh-docs/event-producer-consumer.zh.md +0 -88
- package/node_modules/better-dsh/dsh-docs/glossary.md +0 -45
- package/node_modules/better-dsh/dsh-docs/glossary.zh.md +0 -45
- package/node_modules/better-dsh/dsh-docs/graph-atlas.md +0 -22
- package/node_modules/better-dsh/dsh-docs/graph-atlas.zh.md +0 -24
- package/node_modules/better-dsh/dsh-docs/i18n/README.md +0 -60
- package/node_modules/better-dsh/dsh-docs/i18n/README.zh.md +0 -62
- package/node_modules/better-dsh/dsh-docs/i18n/style-samples.md +0 -87
- package/node_modules/better-dsh/dsh-docs/i18n/terminology.md +0 -214
- package/node_modules/better-dsh/dsh-docs/i18n/translation-prompt.md +0 -263
- package/node_modules/better-dsh/dsh-docs/i18n/translation-rules.md +0 -69
- package/node_modules/better-dsh/dsh-docs/i18n/translation-rules.zh.md +0 -69
- package/node_modules/better-dsh/dsh-docs/module-graph.md +0 -1411
- package/node_modules/better-dsh/dsh-docs/module-graph.zh.md +0 -1413
- package/node_modules/better-dsh/dsh-docs/persistence-catalog.md +0 -1075
- package/node_modules/better-dsh/dsh-docs/persistence-catalog.zh.md +0 -1077
- package/node_modules/better-dsh/dsh-docs/postmortem/0001-acp-default-export-drops-inject.md +0 -113
- package/node_modules/better-dsh/dsh-docs/postmortem/0001-acp-default-export-drops-inject.zh.md +0 -113
- package/node_modules/better-dsh/dsh-docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +0 -47
- package/node_modules/better-dsh/dsh-docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +0 -47
- package/node_modules/better-dsh/dsh-docs/postmortem/0003-web-agent-gui-feedback-loop.md +0 -53
- package/node_modules/better-dsh/dsh-docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +0 -53
- package/node_modules/better-dsh/dsh-docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +0 -55
- package/node_modules/better-dsh/dsh-docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +0 -55
- package/node_modules/better-dsh/dsh-docs/postmortem/README.md +0 -18
- package/node_modules/better-dsh/dsh-docs/postmortem/README.zh.md +0 -18
- package/node_modules/better-dsh/dsh-docs/rescope.md +0 -53
- package/node_modules/better-dsh/dsh-docs/rescope.zh.md +0 -53
- package/node_modules/better-dsh/dsh-docs/session-format-status.md +0 -47
- package/node_modules/better-dsh/dsh-docs/session-format-status.zh.md +0 -47
- package/node_modules/better-dsh/dsh-docs/subsystems/README.md +0 -61
- package/node_modules/better-dsh/dsh-docs/subsystems/README.zh.md +0 -61
- package/node_modules/better-dsh/dsh-docs/subsystems/agent-team.md +0 -207
- package/node_modules/better-dsh/dsh-docs/subsystems/agent-team.zh.md +0 -207
- package/node_modules/better-dsh/dsh-docs/subsystems/approval.md +0 -170
- package/node_modules/better-dsh/dsh-docs/subsystems/approval.zh.md +0 -170
- package/node_modules/better-dsh/dsh-docs/subsystems/attachment.md +0 -351
- package/node_modules/better-dsh/dsh-docs/subsystems/attachment.zh.md +0 -351
- package/node_modules/better-dsh/dsh-docs/subsystems/client-modules.md +0 -168
- package/node_modules/better-dsh/dsh-docs/subsystems/client-modules.zh.md +0 -168
- package/node_modules/better-dsh/dsh-docs/subsystems/client-resources.md +0 -91
- package/node_modules/better-dsh/dsh-docs/subsystems/client-resources.zh.md +0 -91
- package/node_modules/better-dsh/dsh-docs/subsystems/code-runtime.md +0 -195
- package/node_modules/better-dsh/dsh-docs/subsystems/code-runtime.zh.md +0 -195
- package/node_modules/better-dsh/dsh-docs/subsystems/commands.md +0 -219
- package/node_modules/better-dsh/dsh-docs/subsystems/commands.zh.md +0 -219
- package/node_modules/better-dsh/dsh-docs/subsystems/compaction.md +0 -238
- package/node_modules/better-dsh/dsh-docs/subsystems/compaction.zh.md +0 -238
- package/node_modules/better-dsh/dsh-docs/subsystems/conversation.md +0 -258
- package/node_modules/better-dsh/dsh-docs/subsystems/conversation.zh.md +0 -258
- package/node_modules/better-dsh/dsh-docs/subsystems/core.md +0 -1209
- package/node_modules/better-dsh/dsh-docs/subsystems/core.zh.md +0 -1219
- package/node_modules/better-dsh/dsh-docs/subsystems/credentials.md +0 -329
- package/node_modules/better-dsh/dsh-docs/subsystems/credentials.zh.md +0 -329
- package/node_modules/better-dsh/dsh-docs/subsystems/extensions.md +0 -382
- package/node_modules/better-dsh/dsh-docs/subsystems/extensions.zh.md +0 -382
- package/node_modules/better-dsh/dsh-docs/subsystems/feedback.md +0 -266
- package/node_modules/better-dsh/dsh-docs/subsystems/feedback.zh.md +0 -266
- package/node_modules/better-dsh/dsh-docs/subsystems/filesystem.md +0 -505
- package/node_modules/better-dsh/dsh-docs/subsystems/filesystem.zh.md +0 -505
- package/node_modules/better-dsh/dsh-docs/subsystems/goal.md +0 -277
- package/node_modules/better-dsh/dsh-docs/subsystems/goal.zh.md +0 -277
- package/node_modules/better-dsh/dsh-docs/subsystems/invariants.md +0 -88
- package/node_modules/better-dsh/dsh-docs/subsystems/invariants.zh.md +0 -88
- package/node_modules/better-dsh/dsh-docs/subsystems/jobs.md +0 -290
- package/node_modules/better-dsh/dsh-docs/subsystems/jobs.zh.md +0 -290
- package/node_modules/better-dsh/dsh-docs/subsystems/llm-streaming.md +0 -1080
- package/node_modules/better-dsh/dsh-docs/subsystems/llm-streaming.zh.md +0 -1086
- package/node_modules/better-dsh/dsh-docs/subsystems/lsp.md +0 -202
- package/node_modules/better-dsh/dsh-docs/subsystems/lsp.zh.md +0 -202
- package/node_modules/better-dsh/dsh-docs/subsystems/permission-presets.md +0 -131
- package/node_modules/better-dsh/dsh-docs/subsystems/permission-presets.zh.md +0 -131
- package/node_modules/better-dsh/dsh-docs/subsystems/persistence.md +0 -395
- package/node_modules/better-dsh/dsh-docs/subsystems/persistence.zh.md +0 -395
- package/node_modules/better-dsh/dsh-docs/subsystems/plan.md +0 -87
- package/node_modules/better-dsh/dsh-docs/subsystems/plan.zh.md +0 -87
- package/node_modules/better-dsh/dsh-docs/subsystems/sandbox.md +0 -220
- package/node_modules/better-dsh/dsh-docs/subsystems/sandbox.zh.md +0 -220
- package/node_modules/better-dsh/dsh-docs/subsystems/schedule.md +0 -192
- package/node_modules/better-dsh/dsh-docs/subsystems/schedule.zh.md +0 -192
- package/node_modules/better-dsh/dsh-docs/subsystems/scope.md +0 -59
- package/node_modules/better-dsh/dsh-docs/subsystems/scope.zh.md +0 -59
- package/node_modules/better-dsh/dsh-docs/subsystems/session-projection.md +0 -354
- package/node_modules/better-dsh/dsh-docs/subsystems/session-projection.zh.md +0 -354
- package/node_modules/better-dsh/dsh-docs/subsystems/session-query.md +0 -509
- package/node_modules/better-dsh/dsh-docs/subsystems/session-query.zh.md +0 -509
- package/node_modules/better-dsh/dsh-docs/subsystems/session-reference.md +0 -219
- package/node_modules/better-dsh/dsh-docs/subsystems/session-reference.zh.md +0 -219
- package/node_modules/better-dsh/dsh-docs/subsystems/session-telemetry.md +0 -194
- package/node_modules/better-dsh/dsh-docs/subsystems/session-telemetry.zh.md +0 -194
- package/node_modules/better-dsh/dsh-docs/subsystems/session-title.md +0 -204
- package/node_modules/better-dsh/dsh-docs/subsystems/session-title.zh.md +0 -204
- package/node_modules/better-dsh/dsh-docs/subsystems/session.md +0 -1155
- package/node_modules/better-dsh/dsh-docs/subsystems/session.zh.md +0 -1159
- package/node_modules/better-dsh/dsh-docs/subsystems/settings.md +0 -405
- package/node_modules/better-dsh/dsh-docs/subsystems/settings.zh.md +0 -405
- package/node_modules/better-dsh/dsh-docs/subsystems/shell.md +0 -303
- package/node_modules/better-dsh/dsh-docs/subsystems/shell.zh.md +0 -303
- package/node_modules/better-dsh/dsh-docs/subsystems/sidebar-right.md +0 -148
- package/node_modules/better-dsh/dsh-docs/subsystems/sidebar-right.zh.md +0 -148
- package/node_modules/better-dsh/dsh-docs/subsystems/skills.md +0 -354
- package/node_modules/better-dsh/dsh-docs/subsystems/skills.zh.md +0 -354
- package/node_modules/better-dsh/dsh-docs/subsystems/slots.md +0 -175
- package/node_modules/better-dsh/dsh-docs/subsystems/slots.zh.md +0 -175
- package/node_modules/better-dsh/dsh-docs/subsystems/spill.md +0 -117
- package/node_modules/better-dsh/dsh-docs/subsystems/spill.zh.md +0 -117
- package/node_modules/better-dsh/dsh-docs/subsystems/storage.md +0 -260
- package/node_modules/better-dsh/dsh-docs/subsystems/storage.zh.md +0 -260
- package/node_modules/better-dsh/dsh-docs/subsystems/subagent.md +0 -766
- package/node_modules/better-dsh/dsh-docs/subsystems/subagent.zh.md +0 -770
- package/node_modules/better-dsh/dsh-docs/subsystems/subprocess.md +0 -324
- package/node_modules/better-dsh/dsh-docs/subsystems/subprocess.zh.md +0 -324
- package/node_modules/better-dsh/dsh-docs/subsystems/system-prompt.md +0 -220
- package/node_modules/better-dsh/dsh-docs/subsystems/system-prompt.zh.md +0 -220
- package/node_modules/better-dsh/dsh-docs/subsystems/terminal.md +0 -184
- package/node_modules/better-dsh/dsh-docs/subsystems/terminal.zh.md +0 -184
- package/node_modules/better-dsh/dsh-docs/subsystems/todo.md +0 -32
- package/node_modules/better-dsh/dsh-docs/subsystems/todo.zh.md +0 -32
- package/node_modules/better-dsh/dsh-docs/subsystems/token-meter.md +0 -105
- package/node_modules/better-dsh/dsh-docs/subsystems/token-meter.zh.md +0 -105
- package/node_modules/better-dsh/dsh-docs/subsystems/tools.md +0 -720
- package/node_modules/better-dsh/dsh-docs/subsystems/tools.zh.md +0 -720
- package/node_modules/better-dsh/dsh-docs/subsystems/typert.md +0 -343
- package/node_modules/better-dsh/dsh-docs/subsystems/typert.zh.md +0 -343
- package/node_modules/better-dsh/dsh-docs/subsystems/user-questions.md +0 -178
- package/node_modules/better-dsh/dsh-docs/subsystems/user-questions.zh.md +0 -178
- package/node_modules/better-dsh/dsh-docs/subsystems/web-client.md +0 -95
- package/node_modules/better-dsh/dsh-docs/subsystems/web-client.zh.md +0 -95
- package/node_modules/better-dsh/dsh-docs/subsystems/web-server.md +0 -154
- package/node_modules/better-dsh/dsh-docs/subsystems/web-server.zh.md +0 -154
- package/node_modules/better-dsh/dsh-docs/subsystems/web.md +0 -206
- package/node_modules/better-dsh/dsh-docs/subsystems/web.zh.md +0 -206
- package/node_modules/better-dsh/dsh-docs/subsystems/webhook.md +0 -70
- package/node_modules/better-dsh/dsh-docs/subsystems/webhook.zh.md +0 -70
- package/node_modules/better-dsh/dsh-docs/subsystems/workflow.md +0 -278
- package/node_modules/better-dsh/dsh-docs/subsystems/workflow.zh.md +0 -278
- package/node_modules/better-dsh/dsh-docs/subsystems/workspace.md +0 -321
- package/node_modules/better-dsh/dsh-docs/subsystems/workspace.zh.md +0 -321
- package/node_modules/better-dsh/dsh-docs/testing.md +0 -54
- package/node_modules/better-dsh/dsh-docs/testing.zh.md +0 -54
- package/node_modules/better-dsh/dsh-docs/tool-catalog.md +0 -2225
- package/node_modules/better-dsh/dsh-docs/tool-catalog.zh.md +0 -2233
- package/node_modules/better-dsh/dsh-docs/tool-execution-pipeline.md +0 -62
- package/node_modules/better-dsh/dsh-docs/tool-execution-pipeline.zh.md +0 -64
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/config.md +0 -106
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/config.zh.md +0 -106
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/index.md +0 -144
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/index.zh.md +0 -144
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/publish.md +0 -183
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/publish.zh.md +0 -183
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/tool.md +0 -52
- package/node_modules/better-dsh/dsh-docs/user/develop/basic/tool.zh.md +0 -52
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/events.md +0 -143
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/events.zh.md +0 -143
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/index.md +0 -137
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/index.zh.md +0 -137
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/service.md +0 -148
- package/node_modules/better-dsh/dsh-docs/user/develop/framework/service.zh.md +0 -150
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/dynamic-cordis.md +0 -15
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/dynamic-cordis.zh.md +0 -15
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/index.md +0 -155
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/index.zh.md +0 -155
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/llm-adapter.md +0 -189
- package/node_modules/better-dsh/dsh-docs/user/develop/practice/llm-adapter.zh.md +0 -189
- package/node_modules/better-dsh/dsh-docs/user/guide/github-review.md +0 -102
- package/node_modules/better-dsh/dsh-docs/user/guide/github-review.zh.md +0 -102
- package/node_modules/better-dsh/dsh-docs/user/guide/index.md +0 -30
- package/node_modules/better-dsh/dsh-docs/user/guide/index.zh.md +0 -30
- package/node_modules/better-dsh/dsh-docs/user/guide/mcp-memory.md +0 -101
- package/node_modules/better-dsh/dsh-docs/user/guide/mcp-memory.zh.md +0 -101
- package/node_modules/better-dsh/dsh-docs/user/guide/network-proxy.md +0 -85
- package/node_modules/better-dsh/dsh-docs/user/guide/network-proxy.zh.md +0 -85
- package/node_modules/better-dsh/dsh-docs/user/guide/providers.md +0 -190
- package/node_modules/better-dsh/dsh-docs/user/guide/providers.zh.md +0 -190
- package/node_modules/better-dsh/dsh-docs/user/guide/python-sdk.md +0 -150
- package/node_modules/better-dsh/dsh-docs/user/guide/python-sdk.zh.md +0 -150
- package/node_modules/better-dsh/dsh-docs/user/guide/schedule.md +0 -21
- package/node_modules/better-dsh/dsh-docs/user/guide/schedule.zh.md +0 -21
- package/node_modules/better-dsh/dsh-docs/user/index.md +0 -11
- package/node_modules/better-dsh/dsh-docs/user/index.zh.md +0 -11
- package/node_modules/better-dsh/dsh-docs/web-styling.md +0 -29
- package/node_modules/better-dsh/dsh-docs/web-styling.zh.md +0 -29
- package/node_modules/better-dsh/eval-description.md +0 -33
- package/node_modules/better-dsh/lib/BrowserWebSocketTransport-D1aFReu_.js +0 -4
- package/node_modules/better-dsh/lib/BrowserWebSocketTransport-wm99h94r.js +0 -39
- package/node_modules/better-dsh/lib/LaunchOptions-B874eBu2.js +0 -4
- package/node_modules/better-dsh/lib/LaunchOptions-kGXcZOe0.js +0 -17
- package/node_modules/better-dsh/lib/NodeWebSocketTransport-BRLjmu2R.js +0 -4
- package/node_modules/better-dsh/lib/NodeWebSocketTransport-D9ysYGLM.js +0 -3634
- package/node_modules/better-dsh/lib/ast-assets/ast-grep.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-bash.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-c.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-cpp.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-css.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-go.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-html.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-javascript.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-json.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-python.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-ruby.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-rust.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-tsx.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-typescript.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter-yaml.wasm +0 -0
- package/node_modules/better-dsh/lib/ast-assets/tree-sitter.wasm +0 -0
- package/node_modules/better-dsh/lib/bidi-BalpKaJc.js +0 -16106
- package/node_modules/better-dsh/lib/bundle-delivery.d.ts +0 -20
- package/node_modules/better-dsh/lib/bundle-delivery.js +0 -209
- package/node_modules/better-dsh/lib/chunk-DQxbwPpZ.js +0 -30
- package/node_modules/better-dsh/lib/client/index.js +0 -712
- package/node_modules/better-dsh/lib/compaction/index.d.ts +0 -57
- package/node_modules/better-dsh/lib/compaction/index.js +0 -145
- package/node_modules/better-dsh/lib/failover/index.d.ts +0 -59
- package/node_modules/better-dsh/lib/failover/index.js +0 -147
- package/node_modules/better-dsh/lib/fs-aware/sandbox-plugin.d.ts +0 -71
- package/node_modules/better-dsh/lib/fs-aware/sandbox-plugin.js +0 -249
- package/node_modules/better-dsh/lib/hmr.d.ts +0 -32
- package/node_modules/better-dsh/lib/hmr.js +0 -49
- package/node_modules/better-dsh/lib/index-DTDXUe6m.d.ts +0 -208
- package/node_modules/better-dsh/lib/index-browser-CysrjMyM.js +0 -21061
- package/node_modules/better-dsh/lib/index.d.ts +0 -705
- package/node_modules/better-dsh/lib/index.js +0 -3816
- package/node_modules/better-dsh/lib/kernel-bridge.py +0 -172
- package/node_modules/better-dsh/lib/kernel-env-D8UOWeji.js +0 -195
- package/node_modules/better-dsh/lib/kernel-env.d.ts +0 -80
- package/node_modules/better-dsh/lib/kernel-env.js +0 -3
- package/node_modules/better-dsh/lib/lib-C8_jXvwA.js +0 -894
- package/node_modules/better-dsh/lib/lsp-server-registry-BXvUTBY7.js +0 -3
- package/node_modules/better-dsh/lib/lsp-server-registry-CH9WNFFt.js +0 -972
- package/node_modules/better-dsh/lib/main-BQeFrBM1.js +0 -3
- package/node_modules/better-dsh/lib/main-CupOhMp5.js +0 -1432
- package/node_modules/better-dsh/lib/mobile/plugin.d.ts +0 -29
- package/node_modules/better-dsh/lib/mobile/plugin.js +0 -54
- package/node_modules/better-dsh/lib/native-capture-BEByDXYM.js +0 -68
- package/node_modules/better-dsh/lib/puppeteer-core-CSk2PtSm.js +0 -1136
- package/node_modules/better-dsh/lib/py-sdk-D7klhpWb.js +0 -178
- package/node_modules/better-dsh/lib/py-sdk.d.ts +0 -19
- package/node_modules/better-dsh/lib/py-sdk.js +0 -3
- package/node_modules/better-dsh/lib/remote/plugin.d.ts +0 -24
- package/node_modules/better-dsh/lib/remote/plugin.js +0 -1190
- package/node_modules/better-dsh/lib/url-schemes/index.d.ts +0 -88
- package/node_modules/better-dsh/lib/url-schemes/index.js +0 -12229
- package/node_modules/better-dsh/lib/util-BHL_dfV_.js +0 -2953
- package/node_modules/better-dsh/lib/wasm_bg-CNXhHjVg.js +0 -1291
- package/node_modules/better-dsh/lib/web-password.d.ts +0 -156
- package/node_modules/better-dsh/lib/web-password.js +0 -562
- package/node_modules/better-dsh/lib/web-tree-sitter-CPrPD4J2.js +0 -3440
- package/node_modules/better-dsh/lib/web-trust-D6gJpUMf.js +0 -393
- package/node_modules/better-dsh/lib/web-trust-Dej_RI2B.d.ts +0 -113
- package/node_modules/better-dsh/lib/web-trust.d.ts +0 -3
- package/node_modules/better-dsh/lib/web-trust.js +0 -4
- package/node_modules/better-dsh/lib/webserver.d.ts +0 -10
- package/node_modules/better-dsh/lib/webserver.js +0 -19
- package/node_modules/better-dsh/lib/welcome-notice.d.ts +0 -18
- package/node_modules/better-dsh/lib/welcome-notice.js +0 -59
- package/node_modules/better-dsh/lib/wrap-T4I0nfPM.js +0 -750
- package/node_modules/better-dsh/package.json +0 -430
- package/node_modules/better-dsh/scripts/kernel-provision.mjs +0 -35
- package/node_modules/better-dsh/scripts/register-bundle.mjs +0 -80
- package/node_modules/better-dsh/url-schemes-instruction.md +0 -22
|
@@ -1,1432 +0,0 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import childProcess, { execFile, execSync, spawn, spawnSync } from "node:child_process";
|
|
3
|
-
import { mkdir, readdir, unlink } from "node:fs/promises";
|
|
4
|
-
import path from "node:path";
|
|
5
|
-
import { URL as URL$1, urlToHttpOptions } from "node:url";
|
|
6
|
-
import fs, { accessSync, constants, existsSync, readFileSync } from "node:fs";
|
|
7
|
-
import os from "node:os";
|
|
8
|
-
import readline from "node:readline";
|
|
9
|
-
import { debuglog, promisify } from "node:util";
|
|
10
|
-
import { EventEmitter } from "node:events";
|
|
11
|
-
import * as http from "node:http";
|
|
12
|
-
import * as https from "node:https";
|
|
13
|
-
|
|
14
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/types.js
|
|
15
|
-
/**
|
|
16
|
-
* @license
|
|
17
|
-
* Copyright 2023 Google Inc.
|
|
18
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
19
|
-
*/
|
|
20
|
-
/**
|
|
21
|
-
* Supported browsers.
|
|
22
|
-
*
|
|
23
|
-
* @public
|
|
24
|
-
*/
|
|
25
|
-
var Browser;
|
|
26
|
-
(function(Browser$1) {
|
|
27
|
-
Browser$1["CHROME"] = "chrome";
|
|
28
|
-
Browser$1["CHROMEHEADLESSSHELL"] = "chrome-headless-shell";
|
|
29
|
-
Browser$1["CHROMIUM"] = "chromium";
|
|
30
|
-
Browser$1["FIREFOX"] = "firefox";
|
|
31
|
-
Browser$1["CHROMEDRIVER"] = "chromedriver";
|
|
32
|
-
})(Browser || (Browser = {}));
|
|
33
|
-
/**
|
|
34
|
-
* Platform names used to identify a OS platform x architecture combination in the way
|
|
35
|
-
* that is relevant for the browser download.
|
|
36
|
-
*
|
|
37
|
-
* @public
|
|
38
|
-
*/
|
|
39
|
-
var BrowserPlatform;
|
|
40
|
-
(function(BrowserPlatform$1) {
|
|
41
|
-
BrowserPlatform$1["LINUX"] = "linux";
|
|
42
|
-
BrowserPlatform$1["LINUX_ARM"] = "linux_arm";
|
|
43
|
-
BrowserPlatform$1["MAC"] = "mac";
|
|
44
|
-
BrowserPlatform$1["MAC_ARM"] = "mac_arm";
|
|
45
|
-
BrowserPlatform$1["WIN32"] = "win32";
|
|
46
|
-
BrowserPlatform$1["WIN64"] = "win64";
|
|
47
|
-
})(BrowserPlatform || (BrowserPlatform = {}));
|
|
48
|
-
/**
|
|
49
|
-
* Enum describing a release channel for a browser.
|
|
50
|
-
*
|
|
51
|
-
* You can use this in combination with {@link resolveBuildId} to resolve
|
|
52
|
-
* a build ID based on a release channel.
|
|
53
|
-
*
|
|
54
|
-
* @public
|
|
55
|
-
*/
|
|
56
|
-
var BrowserTag;
|
|
57
|
-
(function(BrowserTag$1) {
|
|
58
|
-
BrowserTag$1["CANARY"] = "canary";
|
|
59
|
-
BrowserTag$1["NIGHTLY"] = "nightly";
|
|
60
|
-
BrowserTag$1["BETA"] = "beta";
|
|
61
|
-
BrowserTag$1["DEV"] = "dev";
|
|
62
|
-
BrowserTag$1["DEVEDITION"] = "devedition";
|
|
63
|
-
BrowserTag$1["STABLE"] = "stable";
|
|
64
|
-
BrowserTag$1["ESR"] = "esr";
|
|
65
|
-
BrowserTag$1["LATEST"] = "latest";
|
|
66
|
-
})(BrowserTag || (BrowserTag = {}));
|
|
67
|
-
/**
|
|
68
|
-
* @public
|
|
69
|
-
*/
|
|
70
|
-
var ChromeReleaseChannel;
|
|
71
|
-
(function(ChromeReleaseChannel$1) {
|
|
72
|
-
ChromeReleaseChannel$1["STABLE"] = "stable";
|
|
73
|
-
ChromeReleaseChannel$1["DEV"] = "dev";
|
|
74
|
-
ChromeReleaseChannel$1["CANARY"] = "canary";
|
|
75
|
-
ChromeReleaseChannel$1["BETA"] = "beta";
|
|
76
|
-
})(ChromeReleaseChannel || (ChromeReleaseChannel = {}));
|
|
77
|
-
|
|
78
|
-
//#endregion
|
|
79
|
-
//#region node_modules/@puppeteer/browsers/lib/httpUtil.js
|
|
80
|
-
async function httpRequest(url, method, response, keepAlive = true) {
|
|
81
|
-
let agent;
|
|
82
|
-
try {
|
|
83
|
-
const { ProxyAgent } = await import("proxy-agent");
|
|
84
|
-
agent = new ProxyAgent();
|
|
85
|
-
} catch {}
|
|
86
|
-
const options = {
|
|
87
|
-
protocol: url.protocol,
|
|
88
|
-
hostname: url.hostname,
|
|
89
|
-
port: url.port,
|
|
90
|
-
path: url.pathname + url.search,
|
|
91
|
-
method,
|
|
92
|
-
headers: keepAlive ? { Connection: "keep-alive" } : void 0,
|
|
93
|
-
auth: urlToHttpOptions(url).auth,
|
|
94
|
-
agent
|
|
95
|
-
};
|
|
96
|
-
const requestCallback = (res) => {
|
|
97
|
-
if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
|
|
98
|
-
httpRequest(new URL$1(res.headers.location), method, response);
|
|
99
|
-
res.resume();
|
|
100
|
-
} else response(res);
|
|
101
|
-
};
|
|
102
|
-
const request = options.protocol === "https:" ? https.request(options, requestCallback) : http.request(options, requestCallback);
|
|
103
|
-
request.end();
|
|
104
|
-
return request;
|
|
105
|
-
}
|
|
106
|
-
async function getJSON(url) {
|
|
107
|
-
const text = await getText(url);
|
|
108
|
-
try {
|
|
109
|
-
return JSON.parse(text);
|
|
110
|
-
} catch {
|
|
111
|
-
throw new Error("Could not parse JSON from " + url.toString());
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function getText(url) {
|
|
115
|
-
return new Promise(async (resolve$1, reject) => {
|
|
116
|
-
try {
|
|
117
|
-
(await httpRequest(url, "GET", (response) => {
|
|
118
|
-
let data = "";
|
|
119
|
-
if (response.statusCode && response.statusCode >= 400) return reject(/* @__PURE__ */ new Error(`Got status code ${response.statusCode}`));
|
|
120
|
-
response.on("data", (chunk) => {
|
|
121
|
-
data += chunk;
|
|
122
|
-
});
|
|
123
|
-
response.on("end", () => {
|
|
124
|
-
try {
|
|
125
|
-
return resolve$1(String(data));
|
|
126
|
-
} catch {
|
|
127
|
-
return reject(/* @__PURE__ */ new Error(`Failed to read text response from ${url}`));
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
}, false)).on("error", (err) => {
|
|
131
|
-
reject(err);
|
|
132
|
-
});
|
|
133
|
-
} catch (err) {
|
|
134
|
-
reject(err);
|
|
135
|
-
}
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
//#endregion
|
|
140
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/chrome.js
|
|
141
|
-
function folder$3(platform) {
|
|
142
|
-
switch (platform) {
|
|
143
|
-
case BrowserPlatform.LINUX_ARM:
|
|
144
|
-
case BrowserPlatform.LINUX: return "linux64";
|
|
145
|
-
case BrowserPlatform.MAC_ARM: return "mac-arm64";
|
|
146
|
-
case BrowserPlatform.MAC: return "mac-x64";
|
|
147
|
-
case BrowserPlatform.WIN32: return "win32";
|
|
148
|
-
case BrowserPlatform.WIN64: return "win64";
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
function resolveDownloadUrl$4(platform, buildId, baseUrl = "https://storage.googleapis.com/chrome-for-testing-public") {
|
|
152
|
-
return `${baseUrl}/${resolveDownloadPath$4(platform, buildId).join("/")}`;
|
|
153
|
-
}
|
|
154
|
-
function resolveDownloadPath$4(platform, buildId) {
|
|
155
|
-
return [
|
|
156
|
-
buildId,
|
|
157
|
-
folder$3(platform),
|
|
158
|
-
`chrome-${folder$3(platform)}.zip`
|
|
159
|
-
];
|
|
160
|
-
}
|
|
161
|
-
function relativeExecutablePath$4(platform, _buildId) {
|
|
162
|
-
switch (platform) {
|
|
163
|
-
case BrowserPlatform.MAC:
|
|
164
|
-
case BrowserPlatform.MAC_ARM: return path.join("chrome-" + folder$3(platform), "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing");
|
|
165
|
-
case BrowserPlatform.LINUX_ARM:
|
|
166
|
-
case BrowserPlatform.LINUX: return path.join("chrome-linux64", "chrome");
|
|
167
|
-
case BrowserPlatform.WIN32:
|
|
168
|
-
case BrowserPlatform.WIN64: return path.join("chrome-" + folder$3(platform), "chrome.exe");
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
let baseVersionUrl$1 = "https://googlechromelabs.github.io/chrome-for-testing";
|
|
172
|
-
async function getLastKnownGoodReleaseForChannel(channel) {
|
|
173
|
-
const data = await getJSON(new URL(`${baseVersionUrl$1}/last-known-good-versions.json`));
|
|
174
|
-
for (const channel$1 of Object.keys(data.channels)) {
|
|
175
|
-
data.channels[channel$1.toLowerCase()] = data.channels[channel$1];
|
|
176
|
-
delete data.channels[channel$1];
|
|
177
|
-
}
|
|
178
|
-
return data.channels[channel];
|
|
179
|
-
}
|
|
180
|
-
async function getLastKnownGoodReleaseForMilestone(milestone) {
|
|
181
|
-
return (await getJSON(new URL(`${baseVersionUrl$1}/latest-versions-per-milestone.json`))).milestones[milestone];
|
|
182
|
-
}
|
|
183
|
-
async function getLastKnownGoodReleaseForBuild(buildPrefix) {
|
|
184
|
-
return (await getJSON(new URL(`${baseVersionUrl$1}/latest-patch-versions-per-build.json`))).builds[buildPrefix];
|
|
185
|
-
}
|
|
186
|
-
async function resolveBuildId$3(channel) {
|
|
187
|
-
if (Object.values(ChromeReleaseChannel).includes(channel)) return (await getLastKnownGoodReleaseForChannel(channel)).version;
|
|
188
|
-
if (channel.match(/^\d+$/)) return (await getLastKnownGoodReleaseForMilestone(channel))?.version;
|
|
189
|
-
if (channel.match(/^\d+\.\d+\.\d+$/)) return (await getLastKnownGoodReleaseForBuild(channel))?.version;
|
|
190
|
-
}
|
|
191
|
-
const WINDOWS_ENV_PARAM_NAMES = [
|
|
192
|
-
"PROGRAMFILES",
|
|
193
|
-
"ProgramW6432",
|
|
194
|
-
"ProgramFiles(x86)",
|
|
195
|
-
"LOCALAPPDATA"
|
|
196
|
-
];
|
|
197
|
-
function getChromeWindowsLocation(channel, locationsPrefixes) {
|
|
198
|
-
if (locationsPrefixes.size === 0) throw new Error("Non of the common Windows Env variables were set");
|
|
199
|
-
let suffix;
|
|
200
|
-
switch (channel) {
|
|
201
|
-
case ChromeReleaseChannel.STABLE:
|
|
202
|
-
suffix = "Google\\Chrome\\Application\\chrome.exe";
|
|
203
|
-
break;
|
|
204
|
-
case ChromeReleaseChannel.BETA:
|
|
205
|
-
suffix = "Google\\Chrome Beta\\Application\\chrome.exe";
|
|
206
|
-
break;
|
|
207
|
-
case ChromeReleaseChannel.CANARY:
|
|
208
|
-
suffix = "Google\\Chrome SxS\\Application\\chrome.exe";
|
|
209
|
-
break;
|
|
210
|
-
case ChromeReleaseChannel.DEV:
|
|
211
|
-
suffix = "Google\\Chrome Dev\\Application\\chrome.exe";
|
|
212
|
-
break;
|
|
213
|
-
}
|
|
214
|
-
return [...locationsPrefixes.values()].map((l) => {
|
|
215
|
-
return path.win32.join(l, suffix);
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
function getWslVariable(variable) {
|
|
219
|
-
try {
|
|
220
|
-
const result = execSync(`cmd.exe /c echo %${variable.toLocaleUpperCase()}%`, {
|
|
221
|
-
stdio: [
|
|
222
|
-
"ignore",
|
|
223
|
-
"pipe",
|
|
224
|
-
"ignore"
|
|
225
|
-
],
|
|
226
|
-
encoding: "utf-8"
|
|
227
|
-
}).trim();
|
|
228
|
-
if (result) return result;
|
|
229
|
-
} catch {}
|
|
230
|
-
}
|
|
231
|
-
function getWslLocation(channel) {
|
|
232
|
-
if (!execSync("wslinfo --version", {
|
|
233
|
-
stdio: [
|
|
234
|
-
"ignore",
|
|
235
|
-
"pipe",
|
|
236
|
-
"ignore"
|
|
237
|
-
],
|
|
238
|
-
encoding: "utf-8"
|
|
239
|
-
}).trim()) throw new Error("Not in WSL or unsupported version of WSL.");
|
|
240
|
-
const wslPrefixes = /* @__PURE__ */ new Set();
|
|
241
|
-
for (const name of WINDOWS_ENV_PARAM_NAMES) {
|
|
242
|
-
const wslPrefix = getWslVariable(name);
|
|
243
|
-
if (wslPrefix) wslPrefixes.add(wslPrefix);
|
|
244
|
-
}
|
|
245
|
-
return getChromeWindowsLocation(channel, wslPrefixes).map((path$1) => {
|
|
246
|
-
return execSync(`wslpath "${path$1}"`).toString().trim();
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
function getChromeLinuxOrWslLocation(channel) {
|
|
250
|
-
const locations = [];
|
|
251
|
-
switch (channel) {
|
|
252
|
-
case ChromeReleaseChannel.STABLE:
|
|
253
|
-
locations.push("/opt/google/chrome/chrome");
|
|
254
|
-
break;
|
|
255
|
-
case ChromeReleaseChannel.BETA:
|
|
256
|
-
locations.push("/opt/google/chrome-beta/chrome");
|
|
257
|
-
break;
|
|
258
|
-
case ChromeReleaseChannel.CANARY:
|
|
259
|
-
locations.push("/opt/google/chrome-canary/chrome");
|
|
260
|
-
break;
|
|
261
|
-
case ChromeReleaseChannel.DEV:
|
|
262
|
-
locations.push("/opt/google/chrome-unstable/chrome");
|
|
263
|
-
break;
|
|
264
|
-
}
|
|
265
|
-
try {
|
|
266
|
-
const wslPath = getWslLocation(channel);
|
|
267
|
-
if (wslPath) locations.push(...wslPath);
|
|
268
|
-
} catch {}
|
|
269
|
-
return locations;
|
|
270
|
-
}
|
|
271
|
-
function resolveSystemExecutablePaths$1(platform, channel) {
|
|
272
|
-
switch (platform) {
|
|
273
|
-
case BrowserPlatform.WIN64:
|
|
274
|
-
case BrowserPlatform.WIN32:
|
|
275
|
-
const prefixLocation = new Set(WINDOWS_ENV_PARAM_NAMES.map((name) => {
|
|
276
|
-
return process.env[name];
|
|
277
|
-
}).filter((l) => {
|
|
278
|
-
return !!l;
|
|
279
|
-
}));
|
|
280
|
-
prefixLocation.add("C:\\Program Files");
|
|
281
|
-
prefixLocation.add("C:\\Program Files (x86)");
|
|
282
|
-
prefixLocation.add("D:\\Program Files");
|
|
283
|
-
prefixLocation.add("D:\\Program Files (x86)");
|
|
284
|
-
return getChromeWindowsLocation(channel, prefixLocation);
|
|
285
|
-
case BrowserPlatform.MAC_ARM:
|
|
286
|
-
case BrowserPlatform.MAC: switch (channel) {
|
|
287
|
-
case ChromeReleaseChannel.STABLE: return ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"];
|
|
288
|
-
case ChromeReleaseChannel.BETA: return ["/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta"];
|
|
289
|
-
case ChromeReleaseChannel.CANARY: return ["/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"];
|
|
290
|
-
case ChromeReleaseChannel.DEV: return ["/Applications/Google Chrome Dev.app/Contents/MacOS/Google Chrome Dev"];
|
|
291
|
-
}
|
|
292
|
-
case BrowserPlatform.LINUX_ARM:
|
|
293
|
-
case BrowserPlatform.LINUX: return getChromeLinuxOrWslLocation(channel);
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
function resolveDefaultUserDataDir$1(platform, channel) {
|
|
297
|
-
switch (platform) {
|
|
298
|
-
case BrowserPlatform.WIN64:
|
|
299
|
-
case BrowserPlatform.WIN32: switch (channel) {
|
|
300
|
-
case ChromeReleaseChannel.STABLE: return path.join(getLocalAppDataWin(), "Google", "Chrome", "User Data");
|
|
301
|
-
case ChromeReleaseChannel.BETA: return path.join(getLocalAppDataWin(), "Google", "Chrome Beta", "User Data");
|
|
302
|
-
case ChromeReleaseChannel.CANARY: return path.join(getLocalAppDataWin(), "Google", "Chrome SxS", "User Data");
|
|
303
|
-
case ChromeReleaseChannel.DEV: return path.join(getLocalAppDataWin(), "Google", "Chrome Dev", "User Data");
|
|
304
|
-
}
|
|
305
|
-
case BrowserPlatform.MAC_ARM:
|
|
306
|
-
case BrowserPlatform.MAC: switch (channel) {
|
|
307
|
-
case ChromeReleaseChannel.STABLE: return path.join(getBaseUserDataDirPathMac(), "Chrome");
|
|
308
|
-
case ChromeReleaseChannel.BETA: return path.join(getBaseUserDataDirPathMac(), "Chrome Beta");
|
|
309
|
-
case ChromeReleaseChannel.DEV: return path.join(getBaseUserDataDirPathMac(), "Chrome Dev");
|
|
310
|
-
case ChromeReleaseChannel.CANARY: return path.join(getBaseUserDataDirPathMac(), "Chrome Canary");
|
|
311
|
-
}
|
|
312
|
-
case BrowserPlatform.LINUX_ARM:
|
|
313
|
-
case BrowserPlatform.LINUX: switch (channel) {
|
|
314
|
-
case ChromeReleaseChannel.STABLE: return path.join(getConfigHomeLinux(), "google-chrome");
|
|
315
|
-
case ChromeReleaseChannel.BETA: return path.join(getConfigHomeLinux(), "google-chrome-beta");
|
|
316
|
-
case ChromeReleaseChannel.CANARY: return path.join(getConfigHomeLinux(), "google-chrome-canary");
|
|
317
|
-
case ChromeReleaseChannel.DEV: return path.join(getConfigHomeLinux(), "google-chrome-unstable");
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
function getLocalAppDataWin() {
|
|
322
|
-
return process.env["LOCALAPPDATA"] || path.join(os.homedir(), "AppData", "Local");
|
|
323
|
-
}
|
|
324
|
-
function getConfigHomeLinux() {
|
|
325
|
-
return process.env["CHROME_CONFIG_HOME"] || process.env["XDG_CONFIG_HOME"] || path.join(os.homedir(), ".config");
|
|
326
|
-
}
|
|
327
|
-
function getBaseUserDataDirPathMac() {
|
|
328
|
-
return path.join(os.homedir(), "Library", "Application Support", "Google");
|
|
329
|
-
}
|
|
330
|
-
function compareVersions$2(a, b) {
|
|
331
|
-
const cleanA = a.trim();
|
|
332
|
-
const cleanB = b.trim();
|
|
333
|
-
const versionRegex = /^\d+(?:\.\d+){0,3}$/;
|
|
334
|
-
if (!versionRegex.test(cleanA)) throw new Error(`Version ${a} is not a valid Chrome version`);
|
|
335
|
-
if (!versionRegex.test(cleanB)) throw new Error(`Version ${b} is not a valid Chrome version`);
|
|
336
|
-
const aParts = cleanA.split(".").map(Number);
|
|
337
|
-
const bParts = cleanB.split(".").map(Number);
|
|
338
|
-
for (let i = 0; i < 4; i++) {
|
|
339
|
-
const aPart = aParts[i] ?? 0;
|
|
340
|
-
const bPart = bParts[i] ?? 0;
|
|
341
|
-
if (aPart > bPart) return 1;
|
|
342
|
-
if (aPart < bPart) return -1;
|
|
343
|
-
}
|
|
344
|
-
return 0;
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
//#endregion
|
|
348
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/chrome-headless-shell.js
|
|
349
|
-
function folder$2(platform) {
|
|
350
|
-
switch (platform) {
|
|
351
|
-
case BrowserPlatform.LINUX_ARM:
|
|
352
|
-
case BrowserPlatform.LINUX: return "linux64";
|
|
353
|
-
case BrowserPlatform.MAC_ARM: return "mac-arm64";
|
|
354
|
-
case BrowserPlatform.MAC: return "mac-x64";
|
|
355
|
-
case BrowserPlatform.WIN32: return "win32";
|
|
356
|
-
case BrowserPlatform.WIN64: return "win64";
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
function resolveDownloadUrl$3(platform, buildId, baseUrl = "https://storage.googleapis.com/chrome-for-testing-public") {
|
|
360
|
-
return `${baseUrl}/${resolveDownloadPath$3(platform, buildId).join("/")}`;
|
|
361
|
-
}
|
|
362
|
-
function resolveDownloadPath$3(platform, buildId) {
|
|
363
|
-
return [
|
|
364
|
-
buildId,
|
|
365
|
-
folder$2(platform),
|
|
366
|
-
`chrome-headless-shell-${folder$2(platform)}.zip`
|
|
367
|
-
];
|
|
368
|
-
}
|
|
369
|
-
function relativeExecutablePath$3(platform, _buildId) {
|
|
370
|
-
switch (platform) {
|
|
371
|
-
case BrowserPlatform.MAC:
|
|
372
|
-
case BrowserPlatform.MAC_ARM: return path.join("chrome-headless-shell-" + folder$2(platform), "chrome-headless-shell");
|
|
373
|
-
case BrowserPlatform.LINUX_ARM:
|
|
374
|
-
case BrowserPlatform.LINUX: return path.join("chrome-headless-shell-linux64", "chrome-headless-shell");
|
|
375
|
-
case BrowserPlatform.WIN32:
|
|
376
|
-
case BrowserPlatform.WIN64: return path.join("chrome-headless-shell-" + folder$2(platform), "chrome-headless-shell.exe");
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
//#endregion
|
|
381
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/chromedriver.js
|
|
382
|
-
function folder$1(platform) {
|
|
383
|
-
switch (platform) {
|
|
384
|
-
case BrowserPlatform.LINUX_ARM:
|
|
385
|
-
case BrowserPlatform.LINUX: return "linux64";
|
|
386
|
-
case BrowserPlatform.MAC_ARM: return "mac-arm64";
|
|
387
|
-
case BrowserPlatform.MAC: return "mac-x64";
|
|
388
|
-
case BrowserPlatform.WIN32: return "win32";
|
|
389
|
-
case BrowserPlatform.WIN64: return "win64";
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
function resolveDownloadUrl$2(platform, buildId, baseUrl = "https://storage.googleapis.com/chrome-for-testing-public") {
|
|
393
|
-
return `${baseUrl}/${resolveDownloadPath$2(platform, buildId).join("/")}`;
|
|
394
|
-
}
|
|
395
|
-
function resolveDownloadPath$2(platform, buildId) {
|
|
396
|
-
return [
|
|
397
|
-
buildId,
|
|
398
|
-
folder$1(platform),
|
|
399
|
-
`chromedriver-${folder$1(platform)}.zip`
|
|
400
|
-
];
|
|
401
|
-
}
|
|
402
|
-
function relativeExecutablePath$2(platform, _buildId) {
|
|
403
|
-
switch (platform) {
|
|
404
|
-
case BrowserPlatform.MAC:
|
|
405
|
-
case BrowserPlatform.MAC_ARM: return path.join("chromedriver-" + folder$1(platform), "chromedriver");
|
|
406
|
-
case BrowserPlatform.LINUX_ARM:
|
|
407
|
-
case BrowserPlatform.LINUX: return path.join("chromedriver-linux64", "chromedriver");
|
|
408
|
-
case BrowserPlatform.WIN32:
|
|
409
|
-
case BrowserPlatform.WIN64: return path.join("chromedriver-" + folder$1(platform), "chromedriver.exe");
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
//#endregion
|
|
414
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/chromium.js
|
|
415
|
-
function archive$1(platform, buildId) {
|
|
416
|
-
switch (platform) {
|
|
417
|
-
case BrowserPlatform.LINUX_ARM:
|
|
418
|
-
case BrowserPlatform.LINUX: return "chrome-linux";
|
|
419
|
-
case BrowserPlatform.MAC_ARM:
|
|
420
|
-
case BrowserPlatform.MAC: return "chrome-mac";
|
|
421
|
-
case BrowserPlatform.WIN32:
|
|
422
|
-
case BrowserPlatform.WIN64: return parseInt(buildId, 10) > 591479 ? "chrome-win" : "chrome-win32";
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
function folder(platform) {
|
|
426
|
-
switch (platform) {
|
|
427
|
-
case BrowserPlatform.LINUX_ARM:
|
|
428
|
-
case BrowserPlatform.LINUX: return "Linux_x64";
|
|
429
|
-
case BrowserPlatform.MAC_ARM: return "Mac_Arm";
|
|
430
|
-
case BrowserPlatform.MAC: return "Mac";
|
|
431
|
-
case BrowserPlatform.WIN32: return "Win";
|
|
432
|
-
case BrowserPlatform.WIN64: return "Win_x64";
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
function resolveDownloadUrl$1(platform, buildId, baseUrl = "https://storage.googleapis.com/chromium-browser-snapshots") {
|
|
436
|
-
return `${baseUrl}/${resolveDownloadPath$1(platform, buildId).join("/")}`;
|
|
437
|
-
}
|
|
438
|
-
function resolveDownloadPath$1(platform, buildId) {
|
|
439
|
-
return [
|
|
440
|
-
folder(platform),
|
|
441
|
-
buildId,
|
|
442
|
-
`${archive$1(platform, buildId)}.zip`
|
|
443
|
-
];
|
|
444
|
-
}
|
|
445
|
-
function relativeExecutablePath$1(platform, _buildId) {
|
|
446
|
-
switch (platform) {
|
|
447
|
-
case BrowserPlatform.MAC:
|
|
448
|
-
case BrowserPlatform.MAC_ARM: return path.join("chrome-mac", "Chromium.app", "Contents", "MacOS", "Chromium");
|
|
449
|
-
case BrowserPlatform.LINUX_ARM:
|
|
450
|
-
case BrowserPlatform.LINUX: return path.join("chrome-linux", "chrome");
|
|
451
|
-
case BrowserPlatform.WIN32:
|
|
452
|
-
case BrowserPlatform.WIN64: return path.join("chrome-win", "chrome.exe");
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
async function resolveBuildId$2(platform) {
|
|
456
|
-
return await getText(new URL(`https://storage.googleapis.com/chromium-browser-snapshots/${folder(platform)}/LAST_CHANGE`));
|
|
457
|
-
}
|
|
458
|
-
function compareVersions$1(a, b) {
|
|
459
|
-
return Number(a) - Number(b);
|
|
460
|
-
}
|
|
461
|
-
|
|
462
|
-
//#endregion
|
|
463
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/firefox.js
|
|
464
|
-
function getFormat(buildId) {
|
|
465
|
-
return Number(buildId.split(".").shift()) >= 135 ? "xz" : "bz2";
|
|
466
|
-
}
|
|
467
|
-
function archiveNightly(platform, buildId) {
|
|
468
|
-
switch (platform) {
|
|
469
|
-
case BrowserPlatform.LINUX: return `firefox-${buildId}.en-US.linux-x86_64.tar.${getFormat(buildId)}`;
|
|
470
|
-
case BrowserPlatform.LINUX_ARM: return `firefox-${buildId}.en-US.linux-aarch64.tar.${getFormat(buildId)}`;
|
|
471
|
-
case BrowserPlatform.MAC_ARM:
|
|
472
|
-
case BrowserPlatform.MAC: return `firefox-${buildId}.en-US.mac.dmg`;
|
|
473
|
-
case BrowserPlatform.WIN32:
|
|
474
|
-
case BrowserPlatform.WIN64: return `firefox-${buildId}.en-US.${platform}.zip`;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
function archive(platform, buildId) {
|
|
478
|
-
switch (platform) {
|
|
479
|
-
case BrowserPlatform.LINUX_ARM:
|
|
480
|
-
case BrowserPlatform.LINUX: return `firefox-${buildId}.tar.${getFormat(buildId)}`;
|
|
481
|
-
case BrowserPlatform.MAC_ARM:
|
|
482
|
-
case BrowserPlatform.MAC: return `Firefox ${buildId}.dmg`;
|
|
483
|
-
case BrowserPlatform.WIN32:
|
|
484
|
-
case BrowserPlatform.WIN64: return `Firefox Setup ${buildId}.exe`;
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
function platformName(platform) {
|
|
488
|
-
switch (platform) {
|
|
489
|
-
case BrowserPlatform.LINUX: return `linux-x86_64`;
|
|
490
|
-
case BrowserPlatform.LINUX_ARM: return `linux-aarch64`;
|
|
491
|
-
case BrowserPlatform.MAC_ARM:
|
|
492
|
-
case BrowserPlatform.MAC: return `mac`;
|
|
493
|
-
case BrowserPlatform.WIN32:
|
|
494
|
-
case BrowserPlatform.WIN64: return platform;
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
function parseBuildId(buildId) {
|
|
498
|
-
for (const value of Object.values(FirefoxChannel)) if (buildId.startsWith(value + "_")) {
|
|
499
|
-
buildId = buildId.substring(value.length + 1);
|
|
500
|
-
return [value, buildId];
|
|
501
|
-
}
|
|
502
|
-
return [FirefoxChannel.NIGHTLY, buildId];
|
|
503
|
-
}
|
|
504
|
-
function resolveDownloadUrl(platform, buildId, baseUrl) {
|
|
505
|
-
const [channel] = parseBuildId(buildId);
|
|
506
|
-
switch (channel) {
|
|
507
|
-
case FirefoxChannel.NIGHTLY:
|
|
508
|
-
baseUrl ??= "https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central";
|
|
509
|
-
break;
|
|
510
|
-
case FirefoxChannel.DEVEDITION:
|
|
511
|
-
baseUrl ??= "https://archive.mozilla.org/pub/devedition/releases";
|
|
512
|
-
break;
|
|
513
|
-
case FirefoxChannel.BETA:
|
|
514
|
-
case FirefoxChannel.STABLE:
|
|
515
|
-
case FirefoxChannel.ESR:
|
|
516
|
-
baseUrl ??= "https://archive.mozilla.org/pub/firefox/releases";
|
|
517
|
-
break;
|
|
518
|
-
}
|
|
519
|
-
return `${baseUrl}/${resolveDownloadPath(platform, buildId).join("/")}`;
|
|
520
|
-
}
|
|
521
|
-
function resolveDownloadPath(platform, buildId) {
|
|
522
|
-
const [channel, resolvedBuildId] = parseBuildId(buildId);
|
|
523
|
-
switch (channel) {
|
|
524
|
-
case FirefoxChannel.NIGHTLY: return [archiveNightly(platform, resolvedBuildId)];
|
|
525
|
-
case FirefoxChannel.DEVEDITION:
|
|
526
|
-
case FirefoxChannel.BETA:
|
|
527
|
-
case FirefoxChannel.STABLE:
|
|
528
|
-
case FirefoxChannel.ESR: return [
|
|
529
|
-
resolvedBuildId,
|
|
530
|
-
platformName(platform),
|
|
531
|
-
"en-US",
|
|
532
|
-
archive(platform, resolvedBuildId)
|
|
533
|
-
];
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
function relativeExecutablePath(platform, buildId) {
|
|
537
|
-
const [channel] = parseBuildId(buildId);
|
|
538
|
-
switch (channel) {
|
|
539
|
-
case FirefoxChannel.NIGHTLY: switch (platform) {
|
|
540
|
-
case BrowserPlatform.MAC_ARM:
|
|
541
|
-
case BrowserPlatform.MAC: return path.join("Firefox Nightly.app", "Contents", "MacOS", "firefox");
|
|
542
|
-
case BrowserPlatform.LINUX_ARM:
|
|
543
|
-
case BrowserPlatform.LINUX: return path.join("firefox", "firefox");
|
|
544
|
-
case BrowserPlatform.WIN32:
|
|
545
|
-
case BrowserPlatform.WIN64: return path.join("firefox", "firefox.exe");
|
|
546
|
-
}
|
|
547
|
-
case FirefoxChannel.BETA:
|
|
548
|
-
case FirefoxChannel.DEVEDITION:
|
|
549
|
-
case FirefoxChannel.ESR:
|
|
550
|
-
case FirefoxChannel.STABLE: switch (platform) {
|
|
551
|
-
case BrowserPlatform.MAC_ARM:
|
|
552
|
-
case BrowserPlatform.MAC: return path.join("Firefox.app", "Contents", "MacOS", "firefox");
|
|
553
|
-
case BrowserPlatform.LINUX_ARM:
|
|
554
|
-
case BrowserPlatform.LINUX: return path.join("firefox", "firefox");
|
|
555
|
-
case BrowserPlatform.WIN32:
|
|
556
|
-
case BrowserPlatform.WIN64: return path.join("core", "firefox.exe");
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
}
|
|
560
|
-
var FirefoxChannel;
|
|
561
|
-
(function(FirefoxChannel$1) {
|
|
562
|
-
FirefoxChannel$1["STABLE"] = "stable";
|
|
563
|
-
FirefoxChannel$1["ESR"] = "esr";
|
|
564
|
-
FirefoxChannel$1["DEVEDITION"] = "devedition";
|
|
565
|
-
FirefoxChannel$1["BETA"] = "beta";
|
|
566
|
-
FirefoxChannel$1["NIGHTLY"] = "nightly";
|
|
567
|
-
})(FirefoxChannel || (FirefoxChannel = {}));
|
|
568
|
-
let baseVersionUrl = "https://product-details.mozilla.org/1.0";
|
|
569
|
-
async function resolveBuildId$1(channel = FirefoxChannel.NIGHTLY) {
|
|
570
|
-
const channelToVersionKey = {
|
|
571
|
-
[FirefoxChannel.ESR]: "FIREFOX_ESR",
|
|
572
|
-
[FirefoxChannel.STABLE]: "LATEST_FIREFOX_VERSION",
|
|
573
|
-
[FirefoxChannel.DEVEDITION]: "FIREFOX_DEVEDITION",
|
|
574
|
-
[FirefoxChannel.BETA]: "FIREFOX_DEVEDITION",
|
|
575
|
-
[FirefoxChannel.NIGHTLY]: "FIREFOX_NIGHTLY"
|
|
576
|
-
};
|
|
577
|
-
const version = (await getJSON(new URL(`${baseVersionUrl}/firefox_versions.json`)))[channelToVersionKey[channel]];
|
|
578
|
-
if (!version) throw new Error(`Channel ${channel} is not found.`);
|
|
579
|
-
return channel + "_" + version;
|
|
580
|
-
}
|
|
581
|
-
async function createProfile$1(options) {
|
|
582
|
-
if (!fs.existsSync(options.path)) await fs.promises.mkdir(options.path, { recursive: true });
|
|
583
|
-
await syncPreferences({
|
|
584
|
-
preferences: {
|
|
585
|
-
...defaultProfilePreferences(options.preferences),
|
|
586
|
-
...options.preferences
|
|
587
|
-
},
|
|
588
|
-
path: options.path
|
|
589
|
-
});
|
|
590
|
-
}
|
|
591
|
-
function defaultProfilePreferences(extraPrefs) {
|
|
592
|
-
const server = "dummy.test";
|
|
593
|
-
const defaultPrefs = {
|
|
594
|
-
"app.normandy.api_url": "",
|
|
595
|
-
"app.update.checkInstallTime": false,
|
|
596
|
-
"app.update.disabledForTesting": true,
|
|
597
|
-
"apz.content_response_timeout": 6e4,
|
|
598
|
-
"browser.contentblocking.features.standard": "-tp,tpPrivate,cookieBehavior0,-cryptoTP,-fp",
|
|
599
|
-
"browser.dom.window.dump.enabled": true,
|
|
600
|
-
"browser.newtabpage.activity-stream.feeds.system.topstories": false,
|
|
601
|
-
"browser.newtabpage.enabled": false,
|
|
602
|
-
"browser.pagethumbnails.capturing_disabled": true,
|
|
603
|
-
"browser.safebrowsing.blockedURIs.enabled": false,
|
|
604
|
-
"browser.safebrowsing.downloads.enabled": false,
|
|
605
|
-
"browser.safebrowsing.malware.enabled": false,
|
|
606
|
-
"browser.safebrowsing.phishing.enabled": false,
|
|
607
|
-
"browser.search.update": false,
|
|
608
|
-
"browser.sessionstore.resume_from_crash": false,
|
|
609
|
-
"browser.shell.checkDefaultBrowser": false,
|
|
610
|
-
"browser.startup.homepage": "about:blank",
|
|
611
|
-
"browser.startup.homepage_override.mstone": "ignore",
|
|
612
|
-
"browser.startup.page": 0,
|
|
613
|
-
"browser.tabs.disableBackgroundZombification": false,
|
|
614
|
-
"browser.tabs.warnOnCloseOtherTabs": false,
|
|
615
|
-
"browser.tabs.warnOnOpen": false,
|
|
616
|
-
"browser.translations.automaticallyPopup": false,
|
|
617
|
-
"browser.uitour.enabled": false,
|
|
618
|
-
"browser.urlbar.suggest.searches": false,
|
|
619
|
-
"browser.usedOnWindows10.introURL": "",
|
|
620
|
-
"browser.warnOnQuit": false,
|
|
621
|
-
"datareporting.healthreport.documentServerURI": `http://${server}/dummy/healthreport/`,
|
|
622
|
-
"datareporting.healthreport.logging.consoleEnabled": false,
|
|
623
|
-
"datareporting.healthreport.service.enabled": false,
|
|
624
|
-
"datareporting.healthreport.service.firstRun": false,
|
|
625
|
-
"datareporting.healthreport.uploadEnabled": false,
|
|
626
|
-
"datareporting.policy.dataSubmissionEnabled": false,
|
|
627
|
-
"datareporting.policy.dataSubmissionPolicyBypassNotification": true,
|
|
628
|
-
"devtools.jsonview.enabled": false,
|
|
629
|
-
"dom.disable_open_during_load": false,
|
|
630
|
-
"dom.file.createInChild": true,
|
|
631
|
-
"dom.ipc.reportProcessHangs": false,
|
|
632
|
-
"dom.max_chrome_script_run_time": 0,
|
|
633
|
-
"dom.max_script_run_time": 0,
|
|
634
|
-
"extensions.autoDisableScopes": 0,
|
|
635
|
-
"extensions.enabledScopes": 5,
|
|
636
|
-
"extensions.getAddons.cache.enabled": false,
|
|
637
|
-
"extensions.installDistroAddons": false,
|
|
638
|
-
"extensions.update.enabled": false,
|
|
639
|
-
"extensions.update.notifyUser": false,
|
|
640
|
-
"extensions.webservice.discoverURL": `http://${server}/dummy/discoveryURL`,
|
|
641
|
-
"focusmanager.testmode": true,
|
|
642
|
-
"general.useragent.updates.enabled": false,
|
|
643
|
-
"geo.provider.testing": true,
|
|
644
|
-
"geo.wifi.scan": false,
|
|
645
|
-
"hangmonitor.timeout": 0,
|
|
646
|
-
"javascript.options.showInConsole": true,
|
|
647
|
-
"media.gmp-manager.updateEnabled": false,
|
|
648
|
-
"media.sanity-test.disabled": true,
|
|
649
|
-
"network.cookie.sameSite.laxByDefault": false,
|
|
650
|
-
"network.http.prompt-temp-redirect": false,
|
|
651
|
-
"network.http.speculative-parallel-limit": 0,
|
|
652
|
-
"network.manage-offline-status": false,
|
|
653
|
-
"network.sntp.pools": server,
|
|
654
|
-
"plugin.state.flash": 0,
|
|
655
|
-
"privacy.trackingprotection.enabled": false,
|
|
656
|
-
"remote.enabled": true,
|
|
657
|
-
"remote.bidi.dismiss_file_pickers.enabled": true,
|
|
658
|
-
"screenshots.browser.component.enabled": false,
|
|
659
|
-
"security.certerrors.mitm.priming.enabled": false,
|
|
660
|
-
"security.fileuri.strict_origin_policy": false,
|
|
661
|
-
"security.notification_enable_delay": 0,
|
|
662
|
-
"services.settings.server": `http://${server}/dummy/blocklist/`,
|
|
663
|
-
"signon.autofillForms": false,
|
|
664
|
-
"signon.rememberSignons": false,
|
|
665
|
-
"startup.homepage_welcome_url": "about:blank",
|
|
666
|
-
"startup.homepage_welcome_url.additional": "",
|
|
667
|
-
"toolkit.cosmeticAnimations.enabled": false,
|
|
668
|
-
"toolkit.startup.max_resumed_crashes": -1
|
|
669
|
-
};
|
|
670
|
-
return Object.assign(defaultPrefs, extraPrefs);
|
|
671
|
-
}
|
|
672
|
-
async function backupFile(input) {
|
|
673
|
-
if (!fs.existsSync(input)) return;
|
|
674
|
-
await fs.promises.copyFile(input, input + ".puppeteer");
|
|
675
|
-
}
|
|
676
|
-
/**
|
|
677
|
-
* Populates the user.js file with custom preferences as needed to allow
|
|
678
|
-
* Firefox's support to properly function. These preferences will be
|
|
679
|
-
* automatically copied over to prefs.js during startup of Firefox. To be
|
|
680
|
-
* able to restore the original values of preferences a backup of prefs.js
|
|
681
|
-
* will be created.
|
|
682
|
-
*/
|
|
683
|
-
async function syncPreferences(options) {
|
|
684
|
-
const prefsPath = path.join(options.path, "prefs.js");
|
|
685
|
-
const userPath = path.join(options.path, "user.js");
|
|
686
|
-
const lines = Object.entries(options.preferences).map(([key, value]) => {
|
|
687
|
-
return `user_pref(${JSON.stringify(key)}, ${JSON.stringify(value)});`;
|
|
688
|
-
});
|
|
689
|
-
const result = await Promise.allSettled([backupFile(userPath).then(async () => {
|
|
690
|
-
await fs.promises.writeFile(userPath, lines.join("\n"));
|
|
691
|
-
}), backupFile(prefsPath)]);
|
|
692
|
-
for (const command of result) if (command.status === "rejected") throw command.reason;
|
|
693
|
-
}
|
|
694
|
-
function compareVersions(a, b) {
|
|
695
|
-
return parseInt(a.replace(".", ""), 16) - parseInt(b.replace(".", ""), 16);
|
|
696
|
-
}
|
|
697
|
-
|
|
698
|
-
//#endregion
|
|
699
|
-
//#region node_modules/@puppeteer/browsers/lib/browser-data/browser-data.js
|
|
700
|
-
const downloadUrls = {
|
|
701
|
-
[Browser.CHROMEDRIVER]: resolveDownloadUrl$2,
|
|
702
|
-
[Browser.CHROMEHEADLESSSHELL]: resolveDownloadUrl$3,
|
|
703
|
-
[Browser.CHROME]: resolveDownloadUrl$4,
|
|
704
|
-
[Browser.CHROMIUM]: resolveDownloadUrl$1,
|
|
705
|
-
[Browser.FIREFOX]: resolveDownloadUrl
|
|
706
|
-
};
|
|
707
|
-
const downloadPaths = {
|
|
708
|
-
[Browser.CHROMEDRIVER]: resolveDownloadPath$2,
|
|
709
|
-
[Browser.CHROMEHEADLESSSHELL]: resolveDownloadPath$3,
|
|
710
|
-
[Browser.CHROME]: resolveDownloadPath$4,
|
|
711
|
-
[Browser.CHROMIUM]: resolveDownloadPath$1,
|
|
712
|
-
[Browser.FIREFOX]: resolveDownloadPath
|
|
713
|
-
};
|
|
714
|
-
const executablePathByBrowser = {
|
|
715
|
-
[Browser.CHROMEDRIVER]: relativeExecutablePath$2,
|
|
716
|
-
[Browser.CHROMEHEADLESSSHELL]: relativeExecutablePath$3,
|
|
717
|
-
[Browser.CHROME]: relativeExecutablePath$4,
|
|
718
|
-
[Browser.CHROMIUM]: relativeExecutablePath$1,
|
|
719
|
-
[Browser.FIREFOX]: relativeExecutablePath
|
|
720
|
-
};
|
|
721
|
-
const versionComparators = {
|
|
722
|
-
[Browser.CHROMEDRIVER]: compareVersions$2,
|
|
723
|
-
[Browser.CHROMEHEADLESSSHELL]: compareVersions$2,
|
|
724
|
-
[Browser.CHROME]: compareVersions$2,
|
|
725
|
-
[Browser.CHROMIUM]: compareVersions$1,
|
|
726
|
-
[Browser.FIREFOX]: compareVersions
|
|
727
|
-
};
|
|
728
|
-
/**
|
|
729
|
-
* @internal
|
|
730
|
-
*/
|
|
731
|
-
async function resolveBuildIdForBrowserTag(browser, platform, tag) {
|
|
732
|
-
switch (browser) {
|
|
733
|
-
case Browser.FIREFOX: switch (tag) {
|
|
734
|
-
case BrowserTag.LATEST: return await resolveBuildId$1(FirefoxChannel.NIGHTLY);
|
|
735
|
-
case BrowserTag.BETA: return await resolveBuildId$1(FirefoxChannel.BETA);
|
|
736
|
-
case BrowserTag.NIGHTLY: return await resolveBuildId$1(FirefoxChannel.NIGHTLY);
|
|
737
|
-
case BrowserTag.DEVEDITION: return await resolveBuildId$1(FirefoxChannel.DEVEDITION);
|
|
738
|
-
case BrowserTag.STABLE: return await resolveBuildId$1(FirefoxChannel.STABLE);
|
|
739
|
-
case BrowserTag.ESR: return await resolveBuildId$1(FirefoxChannel.ESR);
|
|
740
|
-
case BrowserTag.CANARY:
|
|
741
|
-
case BrowserTag.DEV: throw new Error(`${tag.toUpperCase()} is not available for Firefox`);
|
|
742
|
-
}
|
|
743
|
-
case Browser.CHROME: switch (tag) {
|
|
744
|
-
case BrowserTag.LATEST: return await resolveBuildId$3(ChromeReleaseChannel.CANARY);
|
|
745
|
-
case BrowserTag.BETA: return await resolveBuildId$3(ChromeReleaseChannel.BETA);
|
|
746
|
-
case BrowserTag.CANARY: return await resolveBuildId$3(ChromeReleaseChannel.CANARY);
|
|
747
|
-
case BrowserTag.DEV: return await resolveBuildId$3(ChromeReleaseChannel.DEV);
|
|
748
|
-
case BrowserTag.STABLE: return await resolveBuildId$3(ChromeReleaseChannel.STABLE);
|
|
749
|
-
case BrowserTag.NIGHTLY:
|
|
750
|
-
case BrowserTag.DEVEDITION:
|
|
751
|
-
case BrowserTag.ESR: throw new Error(`${tag.toUpperCase()} is not available for Chrome`);
|
|
752
|
-
}
|
|
753
|
-
case Browser.CHROMEDRIVER: switch (tag) {
|
|
754
|
-
case BrowserTag.LATEST:
|
|
755
|
-
case BrowserTag.CANARY: return await resolveBuildId$3(ChromeReleaseChannel.CANARY);
|
|
756
|
-
case BrowserTag.BETA: return await resolveBuildId$3(ChromeReleaseChannel.BETA);
|
|
757
|
-
case BrowserTag.DEV: return await resolveBuildId$3(ChromeReleaseChannel.DEV);
|
|
758
|
-
case BrowserTag.STABLE: return await resolveBuildId$3(ChromeReleaseChannel.STABLE);
|
|
759
|
-
case BrowserTag.NIGHTLY:
|
|
760
|
-
case BrowserTag.DEVEDITION:
|
|
761
|
-
case BrowserTag.ESR: throw new Error(`${tag.toUpperCase()} is not available for ChromeDriver`);
|
|
762
|
-
}
|
|
763
|
-
case Browser.CHROMEHEADLESSSHELL: switch (tag) {
|
|
764
|
-
case BrowserTag.LATEST:
|
|
765
|
-
case BrowserTag.CANARY: return await resolveBuildId$3(ChromeReleaseChannel.CANARY);
|
|
766
|
-
case BrowserTag.BETA: return await resolveBuildId$3(ChromeReleaseChannel.BETA);
|
|
767
|
-
case BrowserTag.DEV: return await resolveBuildId$3(ChromeReleaseChannel.DEV);
|
|
768
|
-
case BrowserTag.STABLE: return await resolveBuildId$3(ChromeReleaseChannel.STABLE);
|
|
769
|
-
case BrowserTag.NIGHTLY:
|
|
770
|
-
case BrowserTag.DEVEDITION:
|
|
771
|
-
case BrowserTag.ESR: throw new Error(`${tag} is not available for chrome-headless-shell`);
|
|
772
|
-
}
|
|
773
|
-
case Browser.CHROMIUM: switch (tag) {
|
|
774
|
-
case BrowserTag.LATEST: return await resolveBuildId$2(platform);
|
|
775
|
-
case BrowserTag.NIGHTLY:
|
|
776
|
-
case BrowserTag.CANARY:
|
|
777
|
-
case BrowserTag.DEV:
|
|
778
|
-
case BrowserTag.DEVEDITION:
|
|
779
|
-
case BrowserTag.BETA:
|
|
780
|
-
case BrowserTag.STABLE:
|
|
781
|
-
case BrowserTag.ESR: throw new Error(`${tag} is not supported for Chromium. Use 'latest' instead.`);
|
|
782
|
-
}
|
|
783
|
-
}
|
|
784
|
-
}
|
|
785
|
-
/**
|
|
786
|
-
* @public
|
|
787
|
-
*/
|
|
788
|
-
async function resolveBuildId(browser, platform, tag) {
|
|
789
|
-
const browserTag = tag;
|
|
790
|
-
if (Object.values(BrowserTag).includes(browserTag)) return await resolveBuildIdForBrowserTag(browser, platform, browserTag);
|
|
791
|
-
switch (browser) {
|
|
792
|
-
case Browser.FIREFOX: return tag;
|
|
793
|
-
case Browser.CHROME:
|
|
794
|
-
const chromeResult = await resolveBuildId$3(tag);
|
|
795
|
-
if (chromeResult) return chromeResult;
|
|
796
|
-
return tag;
|
|
797
|
-
case Browser.CHROMEDRIVER:
|
|
798
|
-
const chromeDriverResult = await resolveBuildId$3(tag);
|
|
799
|
-
if (chromeDriverResult) return chromeDriverResult;
|
|
800
|
-
return tag;
|
|
801
|
-
case Browser.CHROMEHEADLESSSHELL:
|
|
802
|
-
const chromeHeadlessShellResult = await resolveBuildId$3(tag);
|
|
803
|
-
if (chromeHeadlessShellResult) return chromeHeadlessShellResult;
|
|
804
|
-
return tag;
|
|
805
|
-
case Browser.CHROMIUM: return tag;
|
|
806
|
-
}
|
|
807
|
-
}
|
|
808
|
-
/**
|
|
809
|
-
* @public
|
|
810
|
-
*/
|
|
811
|
-
async function createProfile(browser, opts) {
|
|
812
|
-
switch (browser) {
|
|
813
|
-
case Browser.FIREFOX: return await createProfile$1(opts);
|
|
814
|
-
case Browser.CHROME:
|
|
815
|
-
case Browser.CHROMIUM: throw new Error(`Profile creation is not support for ${browser} yet`);
|
|
816
|
-
}
|
|
817
|
-
}
|
|
818
|
-
/**
|
|
819
|
-
* Returns the expected default user data dir for the given channel. It does not
|
|
820
|
-
* check if the dir actually exists.
|
|
821
|
-
*
|
|
822
|
-
* @public
|
|
823
|
-
*/
|
|
824
|
-
function resolveDefaultUserDataDir(browser, platform, channel) {
|
|
825
|
-
switch (browser) {
|
|
826
|
-
case Browser.CHROMEDRIVER:
|
|
827
|
-
case Browser.CHROMEHEADLESSSHELL:
|
|
828
|
-
case Browser.FIREFOX:
|
|
829
|
-
case Browser.CHROMIUM: throw new Error(`Default user dir detection is not supported for ${browser} yet.`);
|
|
830
|
-
case Browser.CHROME: return resolveDefaultUserDataDir$1(platform, channel);
|
|
831
|
-
}
|
|
832
|
-
}
|
|
833
|
-
/**
|
|
834
|
-
* @internal
|
|
835
|
-
*
|
|
836
|
-
* Returns multiple paths where the executable may be located at on the current system
|
|
837
|
-
* ordered by likelihood (based on heuristics).
|
|
838
|
-
*/
|
|
839
|
-
function resolveSystemExecutablePaths(browser, platform, channel) {
|
|
840
|
-
switch (browser) {
|
|
841
|
-
case Browser.CHROMEDRIVER:
|
|
842
|
-
case Browser.CHROMEHEADLESSSHELL:
|
|
843
|
-
case Browser.FIREFOX:
|
|
844
|
-
case Browser.CHROMIUM: throw new Error(`System browser detection is not supported for ${browser} yet.`);
|
|
845
|
-
case Browser.CHROME: return resolveSystemExecutablePaths$1(platform, channel);
|
|
846
|
-
}
|
|
847
|
-
}
|
|
848
|
-
/**
|
|
849
|
-
* Returns a version comparator for the given browser that can be used to sort
|
|
850
|
-
* browser versions.
|
|
851
|
-
*
|
|
852
|
-
* @public
|
|
853
|
-
*/
|
|
854
|
-
function getVersionComparator(browser) {
|
|
855
|
-
return versionComparators[browser];
|
|
856
|
-
}
|
|
857
|
-
|
|
858
|
-
//#endregion
|
|
859
|
-
//#region node_modules/@puppeteer/browsers/lib/debug.js
|
|
860
|
-
const debug = (prefix) => {
|
|
861
|
-
const log = debuglog(prefix);
|
|
862
|
-
return log.enabled ? log : void 0;
|
|
863
|
-
};
|
|
864
|
-
|
|
865
|
-
//#endregion
|
|
866
|
-
//#region node_modules/@puppeteer/browsers/lib/detectPlatform.js
|
|
867
|
-
/**
|
|
868
|
-
* @public
|
|
869
|
-
*/
|
|
870
|
-
function detectBrowserPlatform() {
|
|
871
|
-
const platform = os.platform();
|
|
872
|
-
const arch = os.arch();
|
|
873
|
-
switch (platform) {
|
|
874
|
-
case "darwin": return arch === "arm64" ? BrowserPlatform.MAC_ARM : BrowserPlatform.MAC;
|
|
875
|
-
case "linux": return arch === "arm64" ? BrowserPlatform.LINUX_ARM : BrowserPlatform.LINUX;
|
|
876
|
-
case "win32": return arch === "x64" || arch === "arm64" && isWindows11(os.release()) ? BrowserPlatform.WIN64 : BrowserPlatform.WIN32;
|
|
877
|
-
default: return;
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
/**
|
|
881
|
-
* Windows 11 is identified by the version 10.0.22000 or greater
|
|
882
|
-
* @internal
|
|
883
|
-
*/
|
|
884
|
-
function isWindows11(version) {
|
|
885
|
-
const parts = version.split(".");
|
|
886
|
-
if (parts.length > 2) {
|
|
887
|
-
const major = parseInt(parts[0], 10);
|
|
888
|
-
const minor = parseInt(parts[1], 10);
|
|
889
|
-
const patch = parseInt(parts[2], 10);
|
|
890
|
-
return major > 10 || major === 10 && minor > 0 || major === 10 && minor === 0 && patch >= 22e3;
|
|
891
|
-
}
|
|
892
|
-
return false;
|
|
893
|
-
}
|
|
894
|
-
|
|
895
|
-
//#endregion
|
|
896
|
-
//#region node_modules/@puppeteer/browsers/lib/Cache.js
|
|
897
|
-
const debugCache = debug("puppeteer:browsers:cache");
|
|
898
|
-
/**
|
|
899
|
-
* @public
|
|
900
|
-
*/
|
|
901
|
-
var InstalledBrowser = class {
|
|
902
|
-
browser;
|
|
903
|
-
buildId;
|
|
904
|
-
platform;
|
|
905
|
-
executablePath;
|
|
906
|
-
#cache;
|
|
907
|
-
/**
|
|
908
|
-
* @internal
|
|
909
|
-
*/
|
|
910
|
-
constructor(cache, browser, buildId, platform) {
|
|
911
|
-
this.#cache = cache;
|
|
912
|
-
this.browser = browser;
|
|
913
|
-
this.buildId = buildId;
|
|
914
|
-
this.platform = platform;
|
|
915
|
-
this.executablePath = cache.computeExecutablePath({
|
|
916
|
-
browser,
|
|
917
|
-
buildId,
|
|
918
|
-
platform
|
|
919
|
-
});
|
|
920
|
-
}
|
|
921
|
-
/**
|
|
922
|
-
* Path to the root of the installation folder. Use
|
|
923
|
-
* {@link computeExecutablePath} to get the path to the executable binary.
|
|
924
|
-
*/
|
|
925
|
-
get path() {
|
|
926
|
-
return this.#cache.installationDir(this.browser, this.platform, this.buildId);
|
|
927
|
-
}
|
|
928
|
-
readMetadata() {
|
|
929
|
-
return this.#cache.readMetadata(this.browser);
|
|
930
|
-
}
|
|
931
|
-
writeMetadata(metadata) {
|
|
932
|
-
this.#cache.writeMetadata(this.browser, metadata);
|
|
933
|
-
}
|
|
934
|
-
};
|
|
935
|
-
/**
|
|
936
|
-
* The cache used by Puppeteer relies on the following structure:
|
|
937
|
-
*
|
|
938
|
-
* - rootDir
|
|
939
|
-
* -- <browser1> | browserRoot(browser1)
|
|
940
|
-
* ---- <platform>-<buildId> | installationDir()
|
|
941
|
-
* ------ the browser-platform-buildId
|
|
942
|
-
* ------ specific structure.
|
|
943
|
-
* -- <browser2> | browserRoot(browser2)
|
|
944
|
-
* ---- <platform>-<buildId> | installationDir()
|
|
945
|
-
* ------ the browser-platform-buildId
|
|
946
|
-
* ------ specific structure.
|
|
947
|
-
* @internal
|
|
948
|
-
*/
|
|
949
|
-
var Cache = class {
|
|
950
|
-
#rootDir;
|
|
951
|
-
constructor(rootDir) {
|
|
952
|
-
this.#rootDir = rootDir;
|
|
953
|
-
}
|
|
954
|
-
/**
|
|
955
|
-
* @internal
|
|
956
|
-
*/
|
|
957
|
-
get rootDir() {
|
|
958
|
-
return this.#rootDir;
|
|
959
|
-
}
|
|
960
|
-
browserRoot(browser) {
|
|
961
|
-
return path.join(this.#rootDir, browser);
|
|
962
|
-
}
|
|
963
|
-
metadataFile(browser) {
|
|
964
|
-
return path.join(this.browserRoot(browser), ".metadata");
|
|
965
|
-
}
|
|
966
|
-
readMetadata(browser) {
|
|
967
|
-
const metatadaPath = this.metadataFile(browser);
|
|
968
|
-
if (!fs.existsSync(metatadaPath)) return { aliases: {} };
|
|
969
|
-
const data = JSON.parse(fs.readFileSync(metatadaPath, "utf8"));
|
|
970
|
-
if (typeof data !== "object") throw new Error(".metadata is not an object");
|
|
971
|
-
return data;
|
|
972
|
-
}
|
|
973
|
-
writeMetadata(browser, metadata) {
|
|
974
|
-
const metatadaPath = this.metadataFile(browser);
|
|
975
|
-
fs.mkdirSync(path.dirname(metatadaPath), { recursive: true });
|
|
976
|
-
fs.writeFileSync(metatadaPath, JSON.stringify(metadata, null, 2));
|
|
977
|
-
}
|
|
978
|
-
readExecutablePath(browser, platform, buildId) {
|
|
979
|
-
const metadata = this.readMetadata(browser);
|
|
980
|
-
const key = `${platform}-${buildId}`;
|
|
981
|
-
return metadata.executablePaths?.[key] ?? null;
|
|
982
|
-
}
|
|
983
|
-
writeExecutablePath(browser, platform, buildId, executablePath) {
|
|
984
|
-
const metadata = this.readMetadata(browser);
|
|
985
|
-
if (!metadata.executablePaths) metadata.executablePaths = {};
|
|
986
|
-
const key = `${platform}-${buildId}`;
|
|
987
|
-
metadata.executablePaths[key] = executablePath;
|
|
988
|
-
this.writeMetadata(browser, metadata);
|
|
989
|
-
}
|
|
990
|
-
resolveAlias(browser, alias) {
|
|
991
|
-
const metadata = this.readMetadata(browser);
|
|
992
|
-
if (alias === "latest") return Object.values(metadata.aliases || {}).sort(getVersionComparator(browser)).at(-1);
|
|
993
|
-
return metadata.aliases[alias];
|
|
994
|
-
}
|
|
995
|
-
installationDir(browser, platform, buildId) {
|
|
996
|
-
return path.join(this.browserRoot(browser), `${platform}-${buildId}`);
|
|
997
|
-
}
|
|
998
|
-
clear() {
|
|
999
|
-
fs.rmSync(this.#rootDir, {
|
|
1000
|
-
force: true,
|
|
1001
|
-
recursive: true,
|
|
1002
|
-
maxRetries: 10,
|
|
1003
|
-
retryDelay: 500
|
|
1004
|
-
});
|
|
1005
|
-
}
|
|
1006
|
-
uninstall(browser, platform, buildId) {
|
|
1007
|
-
const metadata = this.readMetadata(browser);
|
|
1008
|
-
for (const alias of Object.keys(metadata.aliases)) if (metadata.aliases[alias] === buildId) delete metadata.aliases[alias];
|
|
1009
|
-
const key = `${platform}-${buildId}`;
|
|
1010
|
-
if (metadata.executablePaths?.[key]) {
|
|
1011
|
-
delete metadata.executablePaths[key];
|
|
1012
|
-
this.writeMetadata(browser, metadata);
|
|
1013
|
-
}
|
|
1014
|
-
fs.rmSync(this.installationDir(browser, platform, buildId), {
|
|
1015
|
-
force: true,
|
|
1016
|
-
recursive: true,
|
|
1017
|
-
maxRetries: 10,
|
|
1018
|
-
retryDelay: 500
|
|
1019
|
-
});
|
|
1020
|
-
}
|
|
1021
|
-
getInstalledBrowsers() {
|
|
1022
|
-
if (!fs.existsSync(this.#rootDir)) return [];
|
|
1023
|
-
return fs.readdirSync(this.#rootDir).filter((t) => {
|
|
1024
|
-
return Object.values(Browser).includes(t);
|
|
1025
|
-
}).flatMap((browser) => {
|
|
1026
|
-
return fs.readdirSync(this.browserRoot(browser)).map((file) => {
|
|
1027
|
-
const result = parseFolderPath(path.join(this.browserRoot(browser), file));
|
|
1028
|
-
if (!result) return null;
|
|
1029
|
-
return new InstalledBrowser(this, browser, result.buildId, result.platform);
|
|
1030
|
-
}).filter((item) => {
|
|
1031
|
-
return item !== null;
|
|
1032
|
-
});
|
|
1033
|
-
});
|
|
1034
|
-
}
|
|
1035
|
-
computeExecutablePath(options) {
|
|
1036
|
-
options.platform ??= detectBrowserPlatform();
|
|
1037
|
-
if (!options.platform) throw new Error(`Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`);
|
|
1038
|
-
try {
|
|
1039
|
-
options.buildId = this.resolveAlias(options.browser, options.buildId) ?? options.buildId;
|
|
1040
|
-
} catch {
|
|
1041
|
-
debugCache?.("could not read .metadata file for the browser");
|
|
1042
|
-
}
|
|
1043
|
-
const installationDir = this.installationDir(options.browser, options.platform, options.buildId);
|
|
1044
|
-
const storedExecutablePath = this.readExecutablePath(options.browser, options.platform, options.buildId);
|
|
1045
|
-
if (storedExecutablePath) return path.join(installationDir, storedExecutablePath);
|
|
1046
|
-
return path.join(installationDir, executablePathByBrowser[options.browser](options.platform, options.buildId));
|
|
1047
|
-
}
|
|
1048
|
-
};
|
|
1049
|
-
function parseFolderPath(folderPath) {
|
|
1050
|
-
const splits = path.basename(folderPath).split("-");
|
|
1051
|
-
if (splits.length !== 2) return;
|
|
1052
|
-
const [platform, buildId] = splits;
|
|
1053
|
-
if (!buildId || !platform) return;
|
|
1054
|
-
return {
|
|
1055
|
-
platform,
|
|
1056
|
-
buildId
|
|
1057
|
-
};
|
|
1058
|
-
}
|
|
1059
|
-
|
|
1060
|
-
//#endregion
|
|
1061
|
-
//#region node_modules/@puppeteer/browsers/lib/launch.js
|
|
1062
|
-
const debugLaunch = debug("puppeteer:browsers:launcher");
|
|
1063
|
-
/**
|
|
1064
|
-
* @public
|
|
1065
|
-
*/
|
|
1066
|
-
function computeExecutablePath(options) {
|
|
1067
|
-
if (options.cacheDir === null) {
|
|
1068
|
-
options.platform ??= detectBrowserPlatform();
|
|
1069
|
-
if (options.platform === void 0) throw new Error(`No platform specified. Couldn't auto-detect browser platform.`);
|
|
1070
|
-
return executablePathByBrowser[options.browser](options.platform, options.buildId);
|
|
1071
|
-
}
|
|
1072
|
-
return new Cache(options.cacheDir).computeExecutablePath(options);
|
|
1073
|
-
}
|
|
1074
|
-
/**
|
|
1075
|
-
* Returns a path to a system-wide Chrome installation given a release channel
|
|
1076
|
-
* name by checking known installation locations (using
|
|
1077
|
-
* {@link https://pptr.dev/browsers-api/browsers.computesystemexecutablepath}).
|
|
1078
|
-
* If Chrome instance is not found at the expected path, an error is thrown.
|
|
1079
|
-
*
|
|
1080
|
-
* @public
|
|
1081
|
-
*/
|
|
1082
|
-
function computeSystemExecutablePath(options) {
|
|
1083
|
-
options.platform ??= detectBrowserPlatform();
|
|
1084
|
-
if (!options.platform) throw new Error(`Cannot download a binary for the provided platform: ${os.platform()} (${os.arch()})`);
|
|
1085
|
-
const paths = resolveSystemExecutablePaths(options.browser, options.platform, options.channel);
|
|
1086
|
-
for (const path$1 of paths) try {
|
|
1087
|
-
accessSync(path$1);
|
|
1088
|
-
return path$1;
|
|
1089
|
-
} catch {}
|
|
1090
|
-
throw new Error(`Could not find Google Chrome executable for channel '${options.channel}' at:${paths.map((path$1) => {
|
|
1091
|
-
return `\n - ${path$1}`;
|
|
1092
|
-
})}.`);
|
|
1093
|
-
}
|
|
1094
|
-
/**
|
|
1095
|
-
* Launches a browser process according to {@link LaunchOptions}.
|
|
1096
|
-
*
|
|
1097
|
-
* @public
|
|
1098
|
-
*/
|
|
1099
|
-
function launch(opts) {
|
|
1100
|
-
return new Process(opts);
|
|
1101
|
-
}
|
|
1102
|
-
/**
|
|
1103
|
-
* @public
|
|
1104
|
-
*/
|
|
1105
|
-
const CDP_WEBSOCKET_ENDPOINT_REGEX = /^DevTools listening on (ws:\/\/.*)$/;
|
|
1106
|
-
/**
|
|
1107
|
-
* @public
|
|
1108
|
-
*/
|
|
1109
|
-
const WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX = /^WebDriver BiDi listening on (ws:\/\/.*)$/;
|
|
1110
|
-
const processListeners = /* @__PURE__ */ new Map();
|
|
1111
|
-
const dispatchers = {
|
|
1112
|
-
exit: (...args) => {
|
|
1113
|
-
processListeners.get("exit")?.forEach((handler) => {
|
|
1114
|
-
return handler(...args);
|
|
1115
|
-
});
|
|
1116
|
-
},
|
|
1117
|
-
SIGINT: (...args) => {
|
|
1118
|
-
processListeners.get("SIGINT")?.forEach((handler) => {
|
|
1119
|
-
return handler(...args);
|
|
1120
|
-
});
|
|
1121
|
-
},
|
|
1122
|
-
SIGHUP: (...args) => {
|
|
1123
|
-
processListeners.get("SIGHUP")?.forEach((handler) => {
|
|
1124
|
-
return handler(...args);
|
|
1125
|
-
});
|
|
1126
|
-
},
|
|
1127
|
-
SIGTERM: (...args) => {
|
|
1128
|
-
processListeners.get("SIGTERM")?.forEach((handler) => {
|
|
1129
|
-
return handler(...args);
|
|
1130
|
-
});
|
|
1131
|
-
}
|
|
1132
|
-
};
|
|
1133
|
-
function subscribeToProcessEvent(event, handler) {
|
|
1134
|
-
const listeners = processListeners.get(event) || [];
|
|
1135
|
-
if (listeners.length === 0) process.on(event, dispatchers[event]);
|
|
1136
|
-
listeners.push(handler);
|
|
1137
|
-
processListeners.set(event, listeners);
|
|
1138
|
-
}
|
|
1139
|
-
function unsubscribeFromProcessEvent(event, handler) {
|
|
1140
|
-
const listeners = processListeners.get(event) || [];
|
|
1141
|
-
const existingListenerIdx = listeners.indexOf(handler);
|
|
1142
|
-
if (existingListenerIdx === -1) return;
|
|
1143
|
-
listeners.splice(existingListenerIdx, 1);
|
|
1144
|
-
processListeners.set(event, listeners);
|
|
1145
|
-
if (listeners.length === 0) process.off(event, dispatchers[event]);
|
|
1146
|
-
}
|
|
1147
|
-
/**
|
|
1148
|
-
* @public
|
|
1149
|
-
*/
|
|
1150
|
-
var Process = class {
|
|
1151
|
-
#executablePath;
|
|
1152
|
-
#args;
|
|
1153
|
-
#browserProcess;
|
|
1154
|
-
#exited = false;
|
|
1155
|
-
#hooksRan = false;
|
|
1156
|
-
#onExitHook = async () => {};
|
|
1157
|
-
#browserProcessExiting;
|
|
1158
|
-
#logs = [];
|
|
1159
|
-
#maxLogLinesSize = 1e3;
|
|
1160
|
-
#lineEmitter = new EventEmitter();
|
|
1161
|
-
#onAbort = () => {
|
|
1162
|
-
this.kill();
|
|
1163
|
-
};
|
|
1164
|
-
#signal;
|
|
1165
|
-
constructor(opts) {
|
|
1166
|
-
this.#executablePath = opts.executablePath;
|
|
1167
|
-
this.#args = opts.args ?? [];
|
|
1168
|
-
this.#signal = opts.signal;
|
|
1169
|
-
if (this.#signal?.aborted) throw new Error(this.#signal.reason ? this.#signal.reason : "Launch aborted");
|
|
1170
|
-
this.#signal?.addEventListener("abort", this.#onAbort, { once: true });
|
|
1171
|
-
opts.pipe ??= false;
|
|
1172
|
-
opts.dumpio ??= false;
|
|
1173
|
-
opts.handleSIGINT ??= true;
|
|
1174
|
-
opts.handleSIGTERM ??= true;
|
|
1175
|
-
opts.handleSIGHUP ??= true;
|
|
1176
|
-
opts.detached ??= process.platform !== "win32";
|
|
1177
|
-
const stdio = this.#configureStdio({ pipe: opts.pipe });
|
|
1178
|
-
const env = opts.env || {};
|
|
1179
|
-
debugLaunch?.(`Launching ${this.#executablePath} ${this.#args.join(" ")}`, {
|
|
1180
|
-
detached: opts.detached,
|
|
1181
|
-
env: Object.keys(env).reduce((res, key) => {
|
|
1182
|
-
if (key.toLowerCase().startsWith("puppeteer_")) res[key] = env[key];
|
|
1183
|
-
return res;
|
|
1184
|
-
}, {}),
|
|
1185
|
-
stdio
|
|
1186
|
-
});
|
|
1187
|
-
this.#browserProcess = childProcess.spawn(this.#executablePath, this.#args, {
|
|
1188
|
-
detached: opts.detached,
|
|
1189
|
-
env,
|
|
1190
|
-
stdio
|
|
1191
|
-
});
|
|
1192
|
-
this.#recordStream(this.#browserProcess.stderr);
|
|
1193
|
-
this.#recordStream(this.#browserProcess.stdout);
|
|
1194
|
-
debugLaunch?.(`Launched ${this.#browserProcess.pid}`);
|
|
1195
|
-
if (opts.dumpio) {
|
|
1196
|
-
this.#browserProcess.stderr?.pipe(process.stderr);
|
|
1197
|
-
this.#browserProcess.stdout?.pipe(process.stdout);
|
|
1198
|
-
}
|
|
1199
|
-
subscribeToProcessEvent("exit", this.#onDriverProcessExit);
|
|
1200
|
-
if (opts.handleSIGINT) subscribeToProcessEvent("SIGINT", this.#onDriverProcessSignal);
|
|
1201
|
-
if (opts.handleSIGTERM) subscribeToProcessEvent("SIGTERM", this.#onDriverProcessSignal);
|
|
1202
|
-
if (opts.handleSIGHUP) subscribeToProcessEvent("SIGHUP", this.#onDriverProcessSignal);
|
|
1203
|
-
if (opts.onExit) this.#onExitHook = opts.onExit;
|
|
1204
|
-
this.#browserProcessExiting = new Promise((resolve$1, reject) => {
|
|
1205
|
-
this.#browserProcess.once("exit", async () => {
|
|
1206
|
-
debugLaunch?.(`Browser process ${this.#browserProcess.pid} onExit`);
|
|
1207
|
-
this.#clearListeners();
|
|
1208
|
-
this.#exited = true;
|
|
1209
|
-
try {
|
|
1210
|
-
await this.#runHooks();
|
|
1211
|
-
} catch (err) {
|
|
1212
|
-
reject(err);
|
|
1213
|
-
return;
|
|
1214
|
-
}
|
|
1215
|
-
resolve$1();
|
|
1216
|
-
});
|
|
1217
|
-
});
|
|
1218
|
-
}
|
|
1219
|
-
async #runHooks() {
|
|
1220
|
-
if (this.#hooksRan) return;
|
|
1221
|
-
this.#hooksRan = true;
|
|
1222
|
-
await this.#onExitHook();
|
|
1223
|
-
}
|
|
1224
|
-
get nodeProcess() {
|
|
1225
|
-
return this.#browserProcess;
|
|
1226
|
-
}
|
|
1227
|
-
#configureStdio(opts) {
|
|
1228
|
-
if (opts.pipe) return [
|
|
1229
|
-
"pipe",
|
|
1230
|
-
"pipe",
|
|
1231
|
-
"pipe",
|
|
1232
|
-
"pipe",
|
|
1233
|
-
"pipe"
|
|
1234
|
-
];
|
|
1235
|
-
else return [
|
|
1236
|
-
"pipe",
|
|
1237
|
-
"pipe",
|
|
1238
|
-
"pipe"
|
|
1239
|
-
];
|
|
1240
|
-
}
|
|
1241
|
-
#clearListeners() {
|
|
1242
|
-
unsubscribeFromProcessEvent("exit", this.#onDriverProcessExit);
|
|
1243
|
-
unsubscribeFromProcessEvent("SIGINT", this.#onDriverProcessSignal);
|
|
1244
|
-
unsubscribeFromProcessEvent("SIGTERM", this.#onDriverProcessSignal);
|
|
1245
|
-
unsubscribeFromProcessEvent("SIGHUP", this.#onDriverProcessSignal);
|
|
1246
|
-
this.#signal?.removeEventListener("abort", this.#onAbort);
|
|
1247
|
-
}
|
|
1248
|
-
#onDriverProcessExit = (_code) => {
|
|
1249
|
-
this.kill();
|
|
1250
|
-
};
|
|
1251
|
-
#onDriverProcessSignal = (signal) => {
|
|
1252
|
-
switch (signal) {
|
|
1253
|
-
case "SIGINT":
|
|
1254
|
-
this.kill();
|
|
1255
|
-
process.exit(130);
|
|
1256
|
-
case "SIGTERM":
|
|
1257
|
-
case "SIGHUP":
|
|
1258
|
-
this.close();
|
|
1259
|
-
break;
|
|
1260
|
-
}
|
|
1261
|
-
};
|
|
1262
|
-
async close() {
|
|
1263
|
-
await this.#runHooks();
|
|
1264
|
-
if (!this.#exited) this.kill();
|
|
1265
|
-
return await this.#browserProcessExiting;
|
|
1266
|
-
}
|
|
1267
|
-
hasClosed() {
|
|
1268
|
-
return this.#browserProcessExiting;
|
|
1269
|
-
}
|
|
1270
|
-
kill() {
|
|
1271
|
-
debugLaunch?.(`Trying to kill ${this.#browserProcess.pid}`);
|
|
1272
|
-
if (this.#browserProcess && this.#browserProcess.pid && pidExists(this.#browserProcess.pid)) try {
|
|
1273
|
-
debugLaunch?.(`Browser process ${this.#browserProcess.pid} exists`);
|
|
1274
|
-
if (process.platform === "win32") try {
|
|
1275
|
-
childProcess.execSync(`taskkill /pid ${this.#browserProcess.pid} /T /F`);
|
|
1276
|
-
} catch (error) {
|
|
1277
|
-
debugLaunch?.(`Killing ${this.#browserProcess.pid} using taskkill failed`, error);
|
|
1278
|
-
this.#browserProcess.kill();
|
|
1279
|
-
}
|
|
1280
|
-
else {
|
|
1281
|
-
const processGroupId = -this.#browserProcess.pid;
|
|
1282
|
-
try {
|
|
1283
|
-
process.kill(processGroupId, "SIGKILL");
|
|
1284
|
-
} catch (error) {
|
|
1285
|
-
debugLaunch?.(`Killing ${this.#browserProcess.pid} using process.kill failed`, error);
|
|
1286
|
-
this.#browserProcess.kill("SIGKILL");
|
|
1287
|
-
}
|
|
1288
|
-
}
|
|
1289
|
-
} catch (error) {
|
|
1290
|
-
throw new Error(`${PROCESS_ERROR_EXPLANATION}\nError cause: ${isErrorLike(error) ? error.stack : error}`);
|
|
1291
|
-
}
|
|
1292
|
-
this.#clearListeners();
|
|
1293
|
-
}
|
|
1294
|
-
#recordStream(stream) {
|
|
1295
|
-
const rl = readline.createInterface(stream);
|
|
1296
|
-
const cleanup = () => {
|
|
1297
|
-
rl.off("line", onLine);
|
|
1298
|
-
rl.off("close", onClose);
|
|
1299
|
-
try {
|
|
1300
|
-
rl.close();
|
|
1301
|
-
} catch {}
|
|
1302
|
-
};
|
|
1303
|
-
const onLine = (line) => {
|
|
1304
|
-
if (line.trim() === "") return;
|
|
1305
|
-
this.#logs.push(line);
|
|
1306
|
-
const delta = this.#logs.length - this.#maxLogLinesSize;
|
|
1307
|
-
if (delta) this.#logs.splice(0, delta);
|
|
1308
|
-
this.#lineEmitter.emit("line", line);
|
|
1309
|
-
};
|
|
1310
|
-
const onClose = () => {
|
|
1311
|
-
cleanup();
|
|
1312
|
-
};
|
|
1313
|
-
rl.on("line", onLine);
|
|
1314
|
-
rl.on("close", onClose);
|
|
1315
|
-
}
|
|
1316
|
-
/**
|
|
1317
|
-
* Get recent logs (stderr + stdout) emitted by the browser.
|
|
1318
|
-
*
|
|
1319
|
-
* @public
|
|
1320
|
-
*/
|
|
1321
|
-
getRecentLogs() {
|
|
1322
|
-
return [...this.#logs];
|
|
1323
|
-
}
|
|
1324
|
-
waitForLineOutput(regex, timeout = 0) {
|
|
1325
|
-
return new Promise((resolve$1, reject) => {
|
|
1326
|
-
const onClose = (errorOrCode) => {
|
|
1327
|
-
cleanup();
|
|
1328
|
-
reject(new Error([
|
|
1329
|
-
`Failed to launch the browser process: ${errorOrCode instanceof Error ? ` ${errorOrCode.message}` : ` Code: ${errorOrCode}`}`,
|
|
1330
|
-
"",
|
|
1331
|
-
`stderr:`,
|
|
1332
|
-
this.getRecentLogs().join("\n"),
|
|
1333
|
-
"",
|
|
1334
|
-
"TROUBLESHOOTING: https://pptr.dev/troubleshooting",
|
|
1335
|
-
""
|
|
1336
|
-
].join("\n")));
|
|
1337
|
-
};
|
|
1338
|
-
this.#browserProcess.on("exit", onClose);
|
|
1339
|
-
this.#browserProcess.on("error", onClose);
|
|
1340
|
-
const timeoutId = timeout > 0 ? setTimeout(onTimeout, timeout) : void 0;
|
|
1341
|
-
this.#lineEmitter.on("line", onLine);
|
|
1342
|
-
const cleanup = () => {
|
|
1343
|
-
clearTimeout(timeoutId);
|
|
1344
|
-
this.#lineEmitter.off("line", onLine);
|
|
1345
|
-
this.#browserProcess.off("exit", onClose);
|
|
1346
|
-
this.#browserProcess.off("error", onClose);
|
|
1347
|
-
};
|
|
1348
|
-
function onTimeout() {
|
|
1349
|
-
cleanup();
|
|
1350
|
-
reject(new TimeoutError(`Timed out after ${timeout} ms while waiting for the WS endpoint URL to appear in stdout!`));
|
|
1351
|
-
}
|
|
1352
|
-
for (const line of this.#logs) onLine(line);
|
|
1353
|
-
function onLine(line) {
|
|
1354
|
-
const match = line.match(regex);
|
|
1355
|
-
if (!match) return;
|
|
1356
|
-
cleanup();
|
|
1357
|
-
resolve$1(match[1]);
|
|
1358
|
-
}
|
|
1359
|
-
});
|
|
1360
|
-
}
|
|
1361
|
-
};
|
|
1362
|
-
const PROCESS_ERROR_EXPLANATION = `Puppeteer was unable to kill the process which ran the browser binary.
|
|
1363
|
-
This means that, on future Puppeteer launches, Puppeteer might not be able to launch the browser.
|
|
1364
|
-
Please check your open processes and ensure that the browser processes that Puppeteer launched have been killed.
|
|
1365
|
-
If you think this is a bug, please report it on the Puppeteer issue tracker.`;
|
|
1366
|
-
/**
|
|
1367
|
-
* @internal
|
|
1368
|
-
*/
|
|
1369
|
-
function pidExists(pid) {
|
|
1370
|
-
try {
|
|
1371
|
-
return process.kill(pid, 0);
|
|
1372
|
-
} catch (error) {
|
|
1373
|
-
if (isErrnoException(error)) {
|
|
1374
|
-
if (error.code && error.code === "ESRCH") return false;
|
|
1375
|
-
}
|
|
1376
|
-
throw error;
|
|
1377
|
-
}
|
|
1378
|
-
}
|
|
1379
|
-
/**
|
|
1380
|
-
* @internal
|
|
1381
|
-
*/
|
|
1382
|
-
function isErrorLike(obj) {
|
|
1383
|
-
return typeof obj === "object" && obj !== null && "name" in obj && "message" in obj;
|
|
1384
|
-
}
|
|
1385
|
-
/**
|
|
1386
|
-
* @internal
|
|
1387
|
-
*/
|
|
1388
|
-
function isErrnoException(obj) {
|
|
1389
|
-
return isErrorLike(obj) && ("errno" in obj || "code" in obj || "path" in obj || "syscall" in obj);
|
|
1390
|
-
}
|
|
1391
|
-
/**
|
|
1392
|
-
* @public
|
|
1393
|
-
*/
|
|
1394
|
-
var TimeoutError = class extends Error {
|
|
1395
|
-
/**
|
|
1396
|
-
* @internal
|
|
1397
|
-
*/
|
|
1398
|
-
constructor(message) {
|
|
1399
|
-
super(message);
|
|
1400
|
-
this.name = this.constructor.name;
|
|
1401
|
-
Error.captureStackTrace(this, this.constructor);
|
|
1402
|
-
}
|
|
1403
|
-
};
|
|
1404
|
-
|
|
1405
|
-
//#endregion
|
|
1406
|
-
//#region node_modules/@puppeteer/browsers/lib/fileUtil.js
|
|
1407
|
-
const execFileAsync = promisify(execFile);
|
|
1408
|
-
const debugFileUtil = debug("puppeteer:browsers:fileUtil");
|
|
1409
|
-
|
|
1410
|
-
//#endregion
|
|
1411
|
-
//#region node_modules/@puppeteer/browsers/lib/install.js
|
|
1412
|
-
const debugInstall = debug("puppeteer:browsers:install");
|
|
1413
|
-
/**
|
|
1414
|
-
*
|
|
1415
|
-
* @public
|
|
1416
|
-
*/
|
|
1417
|
-
async function uninstall(options) {
|
|
1418
|
-
options.platform ??= detectBrowserPlatform();
|
|
1419
|
-
if (!options.platform) throw new Error(`Cannot detect the browser platform for: ${os.platform()} (${os.arch()})`);
|
|
1420
|
-
new Cache(options.cacheDir).uninstall(options.browser, options.platform, options.buildId);
|
|
1421
|
-
}
|
|
1422
|
-
/**
|
|
1423
|
-
* Returns metadata about browsers installed in the cache directory.
|
|
1424
|
-
*
|
|
1425
|
-
* @public
|
|
1426
|
-
*/
|
|
1427
|
-
async function getInstalledBrowsers(options) {
|
|
1428
|
-
return new Cache(options.cacheDir).getInstalledBrowsers();
|
|
1429
|
-
}
|
|
1430
|
-
|
|
1431
|
-
//#endregion
|
|
1432
|
-
export { Browser as _, TimeoutError as a, ChromeReleaseChannel as b, computeSystemExecutablePath as c, InstalledBrowser as d, detectBrowserPlatform as f, resolveDefaultUserDataDir as g, resolveBuildId as h, Process as i, launch as l, getVersionComparator as m, uninstall as n, WEBDRIVER_BIDI_WEBSOCKET_ENDPOINT_REGEX as o, createProfile as p, CDP_WEBSOCKET_ENDPOINT_REGEX as r, computeExecutablePath as s, getInstalledBrowsers as t, Cache as u, BrowserPlatform as v, BrowserTag as y };
|