@yanglaofish/fishtools 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -11
- package/manual/README.md +25 -11
- package/manual/docs/deployment.md +3 -3
- package/manual/docs/examples/action-plugin/package.json +1 -1
- package/manual/docs/modules.md +2 -0
- package/manual/docs/plugin-development.md +18 -5
- package/manual/docs/releases.md +56 -6
- package/manual/docs/superpowers/plans/2026-10-13-command-shortcuts.md +108 -0
- package/manual/docs/superpowers/plans/2026-10-13-global-plugins.md +56 -0
- package/manual/docs/superpowers/plans/2026-10-13-tui-readable-sessions.md +21 -0
- package/manual/docs/superpowers/reviews/2026-10-13-0.5.0-followup-review.md +4 -1
- package/manual/docs/superpowers/reviews/2026-10-13-0.5.3-review.md +28 -0
- package/manual/docs/superpowers/reviews/2026-10-13-command-shortcuts-review.md +70 -0
- package/manual/docs/superpowers/reviews/2026-10-13-tui-sessions-review.md +55 -0
- package/manual/docs/superpowers/specs/2026-10-12-workflow-variation-design.md +1 -1
- package/manual/docs/superpowers/specs/2026-10-13-command-shortcuts-design.md +56 -0
- package/manual/docs/superpowers/specs/2026-10-13-issue-4-workflow-menu.md +51 -0
- package/manual/docs/superpowers/specs/2026-10-13-issue-5-results-and-history.md +20 -0
- package/manual/docs/terminal-commands.md +72 -0
- package/manual/docs/verification.md +56 -1
- package/manual/packages/core/README.md +5 -1
- package/manual/packages/core/package.json +2 -1
- package/manual/packages/core/src/application.js +203 -57
- package/manual/packages/core/src/development-watch-worker.js +10 -1
- package/manual/packages/core/src/development.js +1 -1
- package/manual/packages/core/src/export-snapshot.js +20 -1
- package/manual/packages/core/src/plugin-catalog.js +42 -0
- package/manual/packages/core/src/version.js +1 -1
- package/manual/packages/fst-cli/README.md +6 -0
- package/manual/packages/fst-cli/bin/fst.js +7 -6
- package/manual/packages/fst-cli/package.json +1 -1
- package/manual/packages/fst-cli/src/development.js +6 -1
- package/manual/packages/fst-cli/src/terminal/command-menu.js +191 -0
- package/manual/packages/fst-cli/src/terminal/navigation.js +6 -3
- package/manual/packages/fst-cli/src/terminal/presentation.js +4 -3
- package/manual/packages/fst-cli/src/terminal/run-feed.js +69 -13
- package/manual/packages/fst-cli/src/terminal/run-presentation.js +55 -12
- package/manual/packages/fst-cli/src/terminal/run-viewer.js +26 -10
- package/manual/packages/fst-cli/src/terminal/session-history.js +82 -0
- package/manual/packages/fst-cli/src/terminal/session.js +153 -43
- package/manual/packages/fst-cli/src/terminal/view.js +74 -16
- package/manual/packages/fst-cli/src/terminal/workflow-menu.js +15 -15
- package/manual/packages/fst-devtools/package.json +2 -2
- package/manual/packages/fst-devtools/src/documentation.js +2 -1
- package/manual/packages/fst-devtools/src/plugin-tools.js +1 -1
- package/manual/packages/fst-logs/README.md +23 -2
- package/manual/packages/fst-logs/package.json +2 -1
- package/manual/packages/fst-logs/src/file-identity.js +23 -0
- package/manual/packages/fst-logs/src/markdown-log.js +4 -3
- package/manual/packages/fst-logs/src/run-logs.js +3 -2
- package/manual/packages/fst-logs/src/session-history.js +180 -0
- package/manual/packages/fst-platform/README.md +15 -0
- package/manual/packages/fst-platform/package.json +4 -3
- package/manual/packages/fst-platform/src/process.js +15 -8
- package/manual/packages/fst-platform/src/shell.js +103 -0
- package/manual/packages/fst-plugin/package.json +1 -1
- package/manual/packages/fst-plugin/src/contracts.js +6 -2
- package/manual/packages/fst-plugin/src/host.js +31 -23
- package/manual/packages/fst-workflow/package.json +1 -1
- package/manual/packages/fst-workflow/src/engine.js +1 -1
- package/manual/packages/fst-workspace/README.md +5 -0
- package/manual/packages/fst-workspace/package.json +3 -1
- package/manual/packages/fst-workspace/src/plugin-registry.js +58 -0
- package/manual/packages/fst-workspace/src/plugins.js +7 -4
- package/manual/packages/fst-workspace/src/shortcuts.js +119 -0
- package/manual/packages/fst-workspace/src/workflows.js +5 -3
- package/manual/packages/pack/index.js +1 -1
- package/manual/packages/pack/package.json +3 -3
- package/manual/packages/pack/runtime-cache.js +26 -0
- package/manual/packages/pack/runtime.js +6 -10
- package/manual/plugins/commands/LICENSE +21 -0
- package/manual/plugins/commands/README.md +41 -0
- package/manual/plugins/commands/index.js +94 -0
- package/manual/plugins/commands/package.json +17 -0
- package/node_modules/@mytools/commands/LICENSE +21 -0
- package/node_modules/@mytools/commands/README.md +41 -0
- package/node_modules/@mytools/commands/index.js +94 -0
- package/node_modules/@mytools/commands/package.json +17 -0
- package/node_modules/@mytools/core/README.md +5 -1
- package/node_modules/@mytools/core/package.json +2 -1
- package/node_modules/@mytools/core/src/application.js +203 -57
- package/node_modules/@mytools/core/src/development-watch-worker.js +10 -1
- package/node_modules/@mytools/core/src/development.js +1 -1
- package/node_modules/@mytools/core/src/export-snapshot.js +20 -1
- package/node_modules/@mytools/core/src/plugin-catalog.js +42 -0
- package/node_modules/@mytools/core/src/version.js +1 -1
- package/node_modules/@mytools/fst-cli/README.md +6 -0
- package/node_modules/@mytools/fst-cli/bin/fst.js +7 -6
- package/node_modules/@mytools/fst-cli/package.json +1 -1
- package/node_modules/@mytools/fst-cli/src/development.js +6 -1
- package/node_modules/@mytools/fst-cli/src/terminal/command-menu.js +191 -0
- package/node_modules/@mytools/fst-cli/src/terminal/navigation.js +6 -3
- package/node_modules/@mytools/fst-cli/src/terminal/presentation.js +4 -3
- package/node_modules/@mytools/fst-cli/src/terminal/run-feed.js +69 -13
- package/node_modules/@mytools/fst-cli/src/terminal/run-presentation.js +55 -12
- package/node_modules/@mytools/fst-cli/src/terminal/run-viewer.js +26 -10
- package/node_modules/@mytools/fst-cli/src/terminal/session-history.js +82 -0
- package/node_modules/@mytools/fst-cli/src/terminal/session.js +153 -43
- package/node_modules/@mytools/fst-cli/src/terminal/view.js +74 -16
- package/node_modules/@mytools/fst-cli/src/terminal/workflow-menu.js +15 -15
- package/node_modules/@mytools/fst-devtools/package.json +2 -2
- package/node_modules/@mytools/fst-devtools/src/documentation.js +2 -1
- package/node_modules/@mytools/fst-devtools/src/plugin-tools.js +1 -1
- package/node_modules/@mytools/fst-logs/README.md +23 -2
- package/node_modules/@mytools/fst-logs/package.json +2 -1
- package/node_modules/@mytools/fst-logs/src/file-identity.js +23 -0
- package/node_modules/@mytools/fst-logs/src/markdown-log.js +4 -3
- package/node_modules/@mytools/fst-logs/src/run-logs.js +3 -2
- package/node_modules/@mytools/fst-logs/src/session-history.js +180 -0
- package/node_modules/@mytools/fst-platform/README.md +15 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/LICENSE +21 -0
- package/node_modules/{undici/docs/docs/index.md → @mytools/fst-platform/node_modules/undici/README.md} +85 -137
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Agent.md +84 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Client.md +288 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Connector.md +115 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ContentType.md +57 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Cookies.md +128 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Debug.md +62 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +317 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Dispatcher.md +1393 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Errors.md +49 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/EventSource.md +45 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Fetch.md +60 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockClient.md +81 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/MockPool.md +555 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Pool.md +84 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/Util.md +25 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/crawling.md +1 -3
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/docs/docs/best-practices/undici-vs-builtin-fetch.md +8 -10
- package/node_modules/@mytools/fst-platform/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/index-fetch.js +65 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/index.d.ts +3 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/index.js +234 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/abort-signal.js +59 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-connect.js +110 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-pipeline.js +252 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-request.js +214 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-stream.js +209 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/api-upgrade.js +111 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/index.js +7 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/api/readable.js +580 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/cache/sqlite-cache-store.js +1 -3
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/connect.js +153 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/constants.js +143 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/diagnostics.js +227 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/errors.js +477 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/request.js +485 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/symbols.js +75 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/tree.js +160 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/core/util.js +992 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/agent.js +158 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/balanced-pool.js +221 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h1.js +1746 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client-h2.js +1060 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/client.js +668 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/pool.js +118 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/round-robin-pool.js +10 -32
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/dispatcher/socks5-proxy-agent.js +63 -153
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/global.js +59 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-handler.js +7 -49
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/cache-revalidation-handler.js +0 -10
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/decorator-handler.js +67 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/handler/deduplication-handler.js +10 -29
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/redirect-handler.js +238 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/retry-handler.js +504 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/handler/wrap-handler.js +105 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/cache.js +26 -79
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/decompress.js +3 -13
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/interceptor/deduplicate.js +4 -5
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dns.js +571 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/dump.js +99 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/redirect.js +21 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/response-error.js +95 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/constants.js +531 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/llhttp/utils.js +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-agent.js +232 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/mock-call-history.js +1 -1
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-client.js +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-errors.js +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-pool.js +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-symbols.js +32 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/mock-utils.js +486 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-agent.js +7 -25
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-recorder.js +3 -38
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/cache.js +10 -92
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/promise.js +28 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/runtime-features.js +34 -3
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/util/timers.js +425 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cache.js +864 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cache/util.js +45 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/index.js +199 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/parse.js +314 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/cookies/util.js +352 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource-stream.js +494 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/eventsource/util.js +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/LICENSE +21 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/body.js +509 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/constants.js +131 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/data-url.js +596 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/formdata.js +259 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/headers.js +719 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/index.js +2413 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/request.js +1115 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/response.js +641 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/fetch/util.js +1522 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/infra/index.js +1 -16
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/webidl/index.js +21 -7
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/connection.js +339 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/constants.js +126 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/events.js +331 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/frame.js +133 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/receiver.js +507 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/sender.js +109 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketerror.js +10 -13
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/websocket/stream/websocketstream.js +14 -29
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/util.js +347 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/lib/web/websocket/websocket.js +758 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/package.json +152 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/scripts/strip-comments.js +10 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/README.md +6 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/agent.d.ts +32 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/api.d.ts +43 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/balanced-pool.d.ts +30 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/cache.d.ts +36 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/client.d.ts +139 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/connector.d.ts +36 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/content-type.d.ts +21 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/cookies.d.ts +30 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/dispatcher.d.ts +275 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/errors.d.ts +177 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/eventsource.d.ts +66 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/fetch.d.ts +231 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/formdata.d.ts +114 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-dispatcher.d.ts +9 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/global-origin.d.ts +7 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/h2c-client.d.ts +6 -6
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/handlers.d.ts +14 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/header.d.ts +160 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/index.d.ts +91 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/interceptors.d.ts +82 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-agent.d.ts +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-client.d.ts +27 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-errors.d.ts +12 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-interceptor.d.ts +94 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/mock-pool.d.ts +27 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/patch.d.ts +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool-stats.d.ts +19 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/pool.d.ts +41 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/proxy-agent.d.ts +29 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/readable.d.ts +68 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-agent.d.ts +8 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/retry-handler.d.ts +125 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/round-robin-pool.d.ts +2 -0
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/snapshot-agent.d.ts +0 -4
- package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/socks5-proxy-agent.d.ts +2 -4
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/util.d.ts +18 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/webidl.d.ts +347 -0
- package/node_modules/@mytools/fst-platform/node_modules/undici/types/websocket.d.ts +188 -0
- package/node_modules/@mytools/fst-platform/package.json +4 -3
- package/node_modules/@mytools/fst-platform/src/process.js +15 -8
- package/node_modules/@mytools/fst-platform/src/shell.js +103 -0
- package/node_modules/@mytools/fst-plugin/package.json +1 -1
- package/node_modules/@mytools/fst-plugin/src/contracts.js +6 -2
- package/node_modules/@mytools/fst-plugin/src/host.js +31 -23
- package/node_modules/@mytools/fst-workflow/package.json +1 -1
- package/node_modules/@mytools/fst-workflow/src/engine.js +1 -1
- package/node_modules/@mytools/fst-workspace/README.md +5 -0
- package/node_modules/@mytools/fst-workspace/package.json +3 -1
- package/node_modules/@mytools/fst-workspace/src/plugin-registry.js +58 -0
- package/node_modules/@mytools/fst-workspace/src/plugins.js +7 -4
- package/node_modules/@mytools/fst-workspace/src/shortcuts.js +119 -0
- package/node_modules/@mytools/fst-workspace/src/workflows.js +5 -3
- package/node_modules/@mytools/pack/index.js +1 -1
- package/node_modules/@mytools/pack/package.json +3 -3
- package/node_modules/@mytools/pack/runtime-cache.js +26 -0
- package/node_modules/@mytools/pack/runtime.js +6 -10
- package/node_modules/@mytools/web/public/THIRD_PARTY_NOTICES.txt +1246 -1232
- package/node_modules/@npmcli/agent/lib/agents.js +0 -10
- package/node_modules/@npmcli/agent/package.json +12 -11
- package/node_modules/@npmcli/arborist/README.md +2 -2
- package/node_modules/@npmcli/arborist/bin/index.js +2 -1
- package/node_modules/@npmcli/arborist/bin/shrinkwrap.js +7 -0
- package/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js +25 -159
- package/node_modules/@npmcli/arborist/lib/arborist/isolated-reifier.js +49 -11
- package/node_modules/@npmcli/arborist/lib/arborist/load-actual.js +0 -67
- package/node_modules/@npmcli/arborist/lib/arborist/load-virtual.js +37 -5
- package/node_modules/@npmcli/arborist/lib/arborist/rebuild.js +8 -15
- package/node_modules/@npmcli/arborist/lib/arborist/reify.js +42 -59
- package/node_modules/@npmcli/arborist/lib/consistent-resolve.js +1 -1
- package/node_modules/@npmcli/arborist/lib/diff.js +22 -17
- package/node_modules/@npmcli/arborist/lib/edge.js +2 -22
- package/node_modules/@npmcli/arborist/lib/index.js +0 -2
- package/node_modules/@npmcli/arborist/lib/isolated-classes.js +1 -4
- package/node_modules/@npmcli/arborist/lib/node.js +9 -13
- package/node_modules/@npmcli/arborist/lib/place-dep.js +0 -6
- package/node_modules/@npmcli/arborist/lib/printable.js +5 -0
- package/node_modules/@npmcli/arborist/lib/shrinkwrap.js +32 -55
- package/node_modules/@npmcli/arborist/package.json +26 -32
- package/node_modules/@npmcli/fs/lib/move-file.js +5 -5
- package/node_modules/@npmcli/fs/package.json +5 -5
- package/node_modules/@npmcli/git/package.json +12 -13
- package/node_modules/@npmcli/installed-package-contents/package.json +7 -7
- package/node_modules/@npmcli/map-workspaces/package.json +7 -7
- package/node_modules/@npmcli/metavuln-calculator/package.json +16 -10
- package/node_modules/@npmcli/name-from-folder/package.json +16 -13
- package/node_modules/@npmcli/node-gyp/package.json +5 -5
- package/node_modules/@npmcli/package-json/lib/index.js +1 -2
- package/node_modules/@npmcli/package-json/lib/normalize.js +22 -23
- package/node_modules/@npmcli/package-json/package.json +10 -11
- package/node_modules/@npmcli/promise-spawn/README.md +2 -1
- package/node_modules/@npmcli/promise-spawn/package.json +5 -5
- package/node_modules/@npmcli/redact/package.json +4 -4
- package/node_modules/@npmcli/run-script/lib/is-server-package.js +11 -0
- package/node_modules/@npmcli/run-script/lib/make-spawn-args.js +6 -5
- package/node_modules/@npmcli/run-script/lib/run-script-pkg.js +13 -4
- package/node_modules/@npmcli/run-script/lib/run-script.js +2 -1
- package/node_modules/@npmcli/run-script/package.json +11 -12
- package/node_modules/@sigstore/bundle/README.md +1 -1
- package/node_modules/@sigstore/bundle/dist/error.js +0 -1
- package/node_modules/@sigstore/bundle/package.json +2 -2
- package/node_modules/@sigstore/core/README.md +1 -1
- package/node_modules/@sigstore/core/dist/asn1/length.js +1 -12
- package/node_modules/@sigstore/core/dist/asn1/obj.js +7 -25
- package/node_modules/@sigstore/core/dist/asn1/parse.js +5 -24
- package/node_modules/@sigstore/core/package.json +2 -2
- package/node_modules/@sigstore/sign/README.md +1 -1
- package/node_modules/@sigstore/sign/dist/signer/fulcio/ephemeral.js +1 -1
- package/node_modules/@sigstore/sign/package.json +9 -9
- package/node_modules/@sigstore/tuf/README.md +1 -1
- package/node_modules/@sigstore/tuf/package.json +4 -4
- package/node_modules/@sigstore/tuf/seeds.json +1 -1
- package/node_modules/@sigstore/verify/README.md +1 -1
- package/node_modules/@sigstore/verify/dist/bundle/dsse.d.ts +0 -1
- package/node_modules/@sigstore/verify/dist/bundle/dsse.js +0 -6
- package/node_modules/@sigstore/verify/dist/bundle/message.d.ts +0 -1
- package/node_modules/@sigstore/verify/dist/bundle/message.js +0 -5
- package/node_modules/@sigstore/verify/dist/policy.d.ts +1 -1
- package/node_modules/@sigstore/verify/dist/policy.js +2 -0
- package/node_modules/@sigstore/verify/dist/shared.types.d.ts +1 -6
- package/node_modules/@sigstore/verify/dist/tlog/checkpoint.js +3 -17
- package/node_modules/@sigstore/verify/dist/tlog/hashedrekord.js +4 -4
- package/node_modules/@sigstore/verify/dist/tlog/index.js +1 -13
- package/node_modules/@sigstore/verify/dist/tlog/merkle.js +1 -12
- package/node_modules/@sigstore/verify/dist/verifier.js +5 -13
- package/node_modules/@sigstore/verify/package.json +5 -5
- package/node_modules/@tufjs/models/package.json +3 -3
- package/node_modules/abbrev/package.json +8 -9
- package/node_modules/agent-base/dist/helpers.d.ts +5 -0
- package/node_modules/agent-base/dist/helpers.d.ts.map +1 -1
- package/node_modules/agent-base/dist/helpers.js +34 -5
- package/node_modules/agent-base/dist/helpers.js.map +1 -1
- package/node_modules/agent-base/dist/index.d.ts +5 -1
- package/node_modules/agent-base/dist/index.d.ts.map +1 -1
- package/node_modules/agent-base/dist/index.js +40 -8
- package/node_modules/agent-base/dist/index.js.map +1 -1
- package/node_modules/agent-base/package.json +12 -12
- package/node_modules/bin-links/README.md +4 -5
- package/node_modules/bin-links/lib/fix-bin.js +1 -3
- package/node_modules/bin-links/lib/index.js +16 -8
- package/node_modules/bin-links/lib/link-mans.js +53 -0
- package/node_modules/bin-links/package.json +12 -11
- package/node_modules/cacache/lib/content/write.js +0 -2
- package/node_modules/cacache/lib/entry-index.js +0 -3
- package/node_modules/cacache/lib/rm.js +0 -1
- package/node_modules/cacache/lib/util/tmp.js +1 -5
- package/node_modules/cacache/lib/verify.js +2 -2
- package/node_modules/cacache/package.json +7 -7
- package/node_modules/cmd-shim/lib/index.js +32 -67
- package/node_modules/cmd-shim/package.json +5 -5
- package/node_modules/hosted-git-info/README.md +1 -1
- package/node_modules/hosted-git-info/lib/parse-url.js +3 -1
- package/node_modules/hosted-git-info/package.json +4 -4
- package/node_modules/http-proxy-agent/dist/index.d.ts +5 -8
- package/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -1
- package/node_modules/http-proxy-agent/dist/index.js +42 -26
- package/node_modules/http-proxy-agent/dist/index.js.map +1 -1
- package/node_modules/http-proxy-agent/package.json +14 -15
- package/node_modules/https-proxy-agent/dist/index.d.ts +5 -9
- package/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -1
- package/node_modules/https-proxy-agent/dist/index.js +44 -98
- package/node_modules/https-proxy-agent/dist/index.js.map +1 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +3 -0
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +10 -3
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -1
- package/node_modules/https-proxy-agent/package.json +15 -16
- package/node_modules/ignore-walk/package.json +4 -4
- package/node_modules/ini/package.json +5 -5
- package/node_modules/ip-address/README.md +70 -70
- package/node_modules/ip-address/dist/ipv6.js +7 -4
- package/node_modules/ip-address/dist/ipv6.js.map +1 -1
- package/node_modules/ip-address/dist/v6/constants.d.ts +3 -0
- package/node_modules/ip-address/dist/v6/constants.js +3 -0
- package/node_modules/ip-address/dist/v6/constants.js.map +1 -1
- package/node_modules/ip-address/package.json +2 -1
- package/node_modules/json-parse-even-better-errors/lib/index.js +1 -3
- package/node_modules/json-parse-even-better-errors/package.json +17 -13
- package/node_modules/make-fetch-happen/package.json +11 -11
- package/node_modules/minipass-fetch/package.json +4 -4
- package/node_modules/node-gyp/.release-please-manifest.json +1 -1
- package/node_modules/node-gyp/CHANGELOG.md +0 -102
- package/node_modules/node-gyp/README.md +2 -3
- package/node_modules/node-gyp/eslint.config.js +1 -4
- package/node_modules/node-gyp/gyp/.release-please-manifest.json +1 -1
- package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +19 -14
- package/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +2 -7
- package/node_modules/node-gyp/gyp/pyproject.toml +1 -1
- package/node_modules/node-gyp/lib/build.js +6 -18
- package/node_modules/node-gyp/lib/create-config-gypi.js +0 -5
- package/node_modules/node-gyp/lib/node-gyp.js +2 -9
- package/node_modules/node-gyp/lib/rebuild.js +3 -3
- package/node_modules/node-gyp/package.json +9 -11
- package/node_modules/nopt/README.md +4 -2
- package/node_modules/nopt/lib/debug.js +5 -0
- package/node_modules/nopt/lib/nopt-lib.js +43 -7
- package/node_modules/nopt/lib/nopt.js +4 -2
- package/node_modules/nopt/lib/type-defs.js +13 -8
- package/node_modules/nopt/package.json +17 -15
- package/node_modules/npm-bundled/package.json +6 -6
- package/node_modules/npm-install-checks/package.json +5 -5
- package/node_modules/npm-normalize-package-bin/package.json +16 -13
- package/node_modules/npm-package-arg/package.json +7 -7
- package/node_modules/npm-packlist/README.md +30 -45
- package/node_modules/npm-packlist/lib/index.js +47 -115
- package/node_modules/npm-packlist/package.json +8 -10
- package/node_modules/npm-pick-manifest/package.json +19 -15
- package/node_modules/npm-registry-fetch/lib/errors.js +3 -8
- package/node_modules/npm-registry-fetch/package.json +12 -12
- package/node_modules/pacote/lib/dir.js +5 -60
- package/node_modules/pacote/lib/fetcher.js +0 -4
- package/node_modules/pacote/lib/git.js +3 -11
- package/node_modules/pacote/lib/util/add-git-sha.js +1 -1
- package/node_modules/pacote/package.json +18 -19
- package/node_modules/parse-conflict-json/package.json +6 -6
- package/node_modules/proc-log/package.json +4 -4
- package/node_modules/read-cmd-shim/lib/index.js +1 -1
- package/node_modules/read-cmd-shim/package.json +18 -14
- package/node_modules/sigstore/README.md +1 -1
- package/node_modules/sigstore/package.json +10 -10
- package/node_modules/socks-proxy-agent/dist/index.d.ts +3 -1
- package/node_modules/socks-proxy-agent/dist/index.d.ts.map +1 -1
- package/node_modules/socks-proxy-agent/dist/index.js +43 -17
- package/node_modules/socks-proxy-agent/dist/index.js.map +1 -1
- package/node_modules/socks-proxy-agent/package.json +15 -15
- package/node_modules/ssri/package.json +4 -4
- package/node_modules/tuf-js/dist/config.d.ts +2 -2
- package/node_modules/tuf-js/dist/fetcher.d.ts +4 -4
- package/node_modules/tuf-js/dist/fetcher.js +16 -55
- package/node_modules/tuf-js/dist/updater.js +2 -2
- package/node_modules/tuf-js/package.json +8 -8
- package/node_modules/undici/README.md +72 -405
- package/node_modules/undici/docs/docs/api/Agent.md +41 -252
- package/node_modules/undici/docs/docs/api/BalancedPool.md +48 -246
- package/node_modules/undici/docs/docs/api/CacheStorage.md +13 -171
- package/node_modules/undici/docs/docs/api/Client.md +139 -395
- package/node_modules/undici/docs/docs/api/Connector.md +35 -118
- package/node_modules/undici/docs/docs/api/ContentType.md +25 -65
- package/node_modules/undici/docs/docs/api/Cookies.md +47 -125
- package/node_modules/undici/docs/docs/api/Debug.md +31 -47
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +97 -409
- package/node_modules/undici/docs/docs/api/DispatchInterceptor.md +60 -0
- package/node_modules/undici/docs/docs/api/Dispatcher.md +1011 -500
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +96 -105
- package/node_modules/undici/docs/docs/api/Errors.md +28 -528
- package/node_modules/undici/docs/docs/api/EventSource.md +13 -326
- package/node_modules/undici/docs/docs/api/Fetch.md +24 -693
- package/node_modules/undici/docs/docs/api/MockAgent.md +264 -346
- package/node_modules/undici/docs/docs/api/MockClient.md +31 -153
- package/node_modules/undici/docs/docs/api/MockErrors.md +5 -56
- package/node_modules/undici/docs/docs/api/MockPool.md +253 -324
- package/node_modules/undici/docs/docs/api/Pool.md +41 -235
- package/node_modules/undici/docs/docs/api/PoolStats.md +13 -119
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +81 -198
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +58 -238
- package/node_modules/undici/docs/docs/api/RetryAgent.md +28 -119
- package/node_modules/undici/docs/docs/api/RetryHandler.md +78 -161
- package/node_modules/undici/docs/docs/api/Util.md +11 -68
- package/node_modules/undici/docs/docs/api/WebSocket.md +24 -509
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +33 -101
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +0 -2
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +2 -58
- package/node_modules/undici/docs/docs/best-practices/proxy.md +1 -3
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +0 -45
- package/node_modules/undici/index-fetch.js +4 -34
- package/node_modules/undici/index.d.ts +1 -1
- package/node_modules/undici/index.js +20 -87
- package/node_modules/undici/lib/api/abort-signal.js +0 -2
- package/node_modules/undici/lib/api/api-connect.js +11 -15
- package/node_modules/undici/lib/api/api-pipeline.js +19 -33
- package/node_modules/undici/lib/api/api-request.js +59 -89
- package/node_modules/undici/lib/api/api-stream.js +64 -114
- package/node_modules/undici/lib/api/api-upgrade.js +13 -26
- package/node_modules/undici/lib/api/readable.js +87 -317
- package/node_modules/undici/lib/api/util.js +93 -0
- package/node_modules/undici/lib/core/connect.js +125 -77
- package/node_modules/undici/lib/core/constants.js +9 -11
- package/node_modules/undici/lib/core/diagnostics.js +129 -154
- package/node_modules/undici/lib/core/errors.js +50 -122
- package/node_modules/undici/lib/core/request.js +87 -172
- package/node_modules/undici/lib/core/symbols.js +2 -14
- package/node_modules/undici/lib/core/tree.js +2 -10
- package/node_modules/undici/lib/core/util.js +190 -481
- package/node_modules/undici/lib/dispatcher/agent.js +35 -83
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +38 -46
- package/node_modules/undici/lib/dispatcher/client-h1.js +199 -492
- package/node_modules/undici/lib/dispatcher/client-h2.js +380 -1409
- package/node_modules/undici/lib/dispatcher/client.js +130 -253
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +52 -50
- package/node_modules/undici/lib/dispatcher/dispatcher.js +24 -17
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +45 -75
- package/node_modules/undici/lib/dispatcher/fixed-queue.js +50 -68
- package/node_modules/undici/lib/dispatcher/pool-base.js +54 -153
- package/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
- package/node_modules/undici/lib/dispatcher/pool.js +16 -135
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +41 -175
- package/node_modules/undici/lib/dispatcher/retry-agent.js +0 -3
- package/node_modules/undici/lib/global.js +9 -59
- package/node_modules/undici/lib/handler/decorator-handler.js +15 -43
- package/node_modules/undici/lib/handler/redirect-handler.js +116 -127
- package/node_modules/undici/lib/handler/retry-handler.js +182 -398
- package/node_modules/undici/lib/interceptor/dns.js +47 -254
- package/node_modules/undici/lib/interceptor/dump.js +56 -32
- package/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
- package/node_modules/undici/lib/interceptor/redirect.js +14 -11
- package/node_modules/undici/lib/interceptor/response-error.js +22 -31
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/llhttp/constants.js +193 -446
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -11
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -11
- package/node_modules/undici/lib/llhttp/utils.js +12 -9
- package/node_modules/undici/lib/mock/mock-agent.js +22 -106
- package/node_modules/undici/lib/mock/mock-client.js +4 -13
- package/node_modules/undici/lib/mock/mock-errors.js +2 -3
- package/node_modules/undici/lib/mock/mock-interceptor.js +13 -33
- package/node_modules/undici/lib/mock/mock-pool.js +4 -13
- package/node_modules/undici/lib/mock/mock-symbols.js +1 -10
- package/node_modules/undici/lib/mock/mock-utils.js +51 -404
- package/node_modules/undici/lib/mock/pluralizer.js +29 -0
- package/node_modules/undici/lib/util/timers.js +9 -11
- package/node_modules/undici/lib/web/cache/cache.js +51 -63
- package/node_modules/undici/lib/web/cache/cachestorage.js +7 -13
- package/node_modules/undici/lib/web/cache/symbols.js +5 -0
- package/node_modules/undici/lib/web/cookies/index.js +18 -45
- package/node_modules/undici/lib/web/cookies/parse.js +149 -157
- package/node_modules/undici/lib/web/cookies/util.js +2 -4
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +9 -37
- package/node_modules/undici/lib/web/eventsource/eventsource.js +64 -108
- package/node_modules/undici/lib/web/eventsource/util.js +5 -28
- package/node_modules/undici/lib/web/fetch/body.js +148 -173
- package/node_modules/undici/lib/web/fetch/constants.js +6 -13
- package/node_modules/undici/lib/web/fetch/data-url.js +167 -19
- package/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
- package/node_modules/undici/lib/web/fetch/file.js +126 -0
- package/node_modules/undici/lib/web/fetch/formdata-parser.js +117 -229
- package/node_modules/undici/lib/web/fetch/formdata.js +65 -85
- package/node_modules/undici/lib/web/fetch/headers.js +108 -143
- package/node_modules/undici/lib/web/fetch/index.js +446 -627
- package/node_modules/undici/lib/web/fetch/request.js +115 -217
- package/node_modules/undici/lib/web/fetch/response.js +82 -110
- package/node_modules/undici/lib/web/fetch/symbols.js +9 -0
- package/node_modules/undici/lib/web/fetch/util.js +393 -291
- package/node_modules/undici/lib/web/fetch/webidl.js +695 -0
- package/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
- package/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
- package/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
- package/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
- package/node_modules/undici/lib/web/fileapi/util.js +391 -0
- package/node_modules/undici/lib/web/websocket/connection.js +160 -139
- package/node_modules/undici/lib/web/websocket/constants.js +10 -70
- package/node_modules/undici/lib/web/websocket/events.js +30 -49
- package/node_modules/undici/lib/web/websocket/frame.js +20 -51
- package/node_modules/undici/lib/web/websocket/receiver.js +87 -83
- package/node_modules/undici/lib/web/websocket/sender.js +13 -18
- package/node_modules/undici/lib/web/websocket/symbols.js +12 -0
- package/node_modules/undici/lib/web/websocket/util.js +90 -115
- package/node_modules/undici/lib/web/websocket/websocket.js +171 -359
- package/node_modules/undici/package.json +57 -49
- package/node_modules/undici/scripts/strip-comments.js +1 -3
- package/node_modules/undici/types/agent.d.ts +13 -12
- package/node_modules/undici/types/api.d.ts +26 -26
- package/node_modules/undici/types/balanced-pool.d.ts +12 -13
- package/node_modules/undici/types/client.d.ts +39 -98
- package/node_modules/undici/types/connector.d.ts +2 -5
- package/node_modules/undici/types/cookies.d.ts +1 -3
- package/node_modules/undici/types/diagnostics-channel.d.ts +11 -20
- package/node_modules/undici/types/dispatcher.d.ts +139 -136
- package/node_modules/undici/types/env-http-proxy-agent.d.ts +3 -4
- package/node_modules/undici/types/errors.d.ts +54 -86
- package/node_modules/undici/types/eventsource.d.ts +4 -9
- package/node_modules/undici/types/fetch.d.ts +25 -51
- package/node_modules/undici/types/file.d.ts +39 -0
- package/node_modules/undici/types/filereader.d.ts +54 -0
- package/node_modules/undici/types/formdata.d.ts +7 -7
- package/node_modules/undici/types/global-dispatcher.d.ts +4 -4
- package/node_modules/undici/types/global-origin.d.ts +5 -5
- package/node_modules/undici/types/handlers.d.ts +9 -10
- package/node_modules/undici/types/header.d.ts +1 -162
- package/node_modules/undici/types/index.d.ts +47 -69
- package/node_modules/undici/types/interceptors.d.ts +12 -62
- package/node_modules/undici/types/mock-agent.d.ts +27 -46
- package/node_modules/undici/types/mock-client.d.ts +4 -6
- package/node_modules/undici/types/mock-errors.d.ts +3 -3
- package/node_modules/undici/types/mock-interceptor.d.ts +21 -26
- package/node_modules/undici/types/mock-pool.d.ts +4 -6
- package/node_modules/undici/types/patch.d.ts +4 -0
- package/node_modules/undici/types/pool-stats.d.ts +8 -8
- package/node_modules/undici/types/pool.d.ts +14 -14
- package/node_modules/undici/types/proxy-agent.d.ts +6 -13
- package/node_modules/undici/types/readable.d.ts +16 -19
- package/node_modules/undici/types/retry-agent.d.ts +1 -1
- package/node_modules/undici/types/retry-handler.d.ts +9 -18
- package/node_modules/undici/types/util.d.ts +3 -3
- package/node_modules/undici/types/webidl.d.ts +32 -156
- package/node_modules/undici/types/websocket.d.ts +10 -48
- package/node_modules/validate-npm-package-name/package.json +4 -4
- package/node_modules/which/package.json +4 -4
- package/node_modules/write-file-atomic/package.json +4 -4
- package/package.json +58 -60
- package/node_modules/@npmcli/arborist/lib/npm-extension.js +0 -237
- package/node_modules/@npmcli/arborist/lib/package-extensions.js +0 -236
- package/node_modules/@npmcli/arborist/lib/patch.js +0 -111
- package/node_modules/@npmcli/arborist/lib/patched-dependencies.js +0 -168
- package/node_modules/cacache/lib/util/cache-dir.js +0 -29
- package/node_modules/diff/CONTRIBUTING.md +0 -28
- package/node_modules/diff/LICENSE +0 -29
- package/node_modules/diff/README.md +0 -388
- package/node_modules/diff/dist/diff.js +0 -1782
- package/node_modules/diff/dist/diff.min.js +0 -1
- package/node_modules/diff/eslint.config.mjs +0 -182
- package/node_modules/diff/libcjs/convert/dmp.d.ts +0 -8
- package/node_modules/diff/libcjs/convert/dmp.d.ts.map +0 -1
- package/node_modules/diff/libcjs/convert/dmp.js +0 -24
- package/node_modules/diff/libcjs/convert/xml.d.ts +0 -6
- package/node_modules/diff/libcjs/convert/xml.d.ts.map +0 -1
- package/node_modules/diff/libcjs/convert/xml.js +0 -34
- package/node_modules/diff/libcjs/diff/array.d.ts +0 -19
- package/node_modules/diff/libcjs/diff/array.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/array.js +0 -40
- package/node_modules/diff/libcjs/diff/base.d.ts +0 -20
- package/node_modules/diff/libcjs/diff/base.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/base.js +0 -265
- package/node_modules/diff/libcjs/diff/character.d.ts +0 -19
- package/node_modules/diff/libcjs/diff/character.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/character.js +0 -31
- package/node_modules/diff/libcjs/diff/css.d.ts +0 -18
- package/node_modules/diff/libcjs/diff/css.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/css.js +0 -34
- package/node_modules/diff/libcjs/diff/json.d.ts +0 -24
- package/node_modules/diff/libcjs/diff/json.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/json.js +0 -105
- package/node_modules/diff/libcjs/diff/line.d.ts +0 -24
- package/node_modules/diff/libcjs/diff/line.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/line.js +0 -89
- package/node_modules/diff/libcjs/diff/sentence.d.ts +0 -21
- package/node_modules/diff/libcjs/diff/sentence.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/sentence.js +0 -67
- package/node_modules/diff/libcjs/diff/word.d.ts +0 -35
- package/node_modules/diff/libcjs/diff/word.d.ts.map +0 -1
- package/node_modules/diff/libcjs/diff/word.js +0 -312
- package/node_modules/diff/libcjs/index.d.ts +0 -20
- package/node_modules/diff/libcjs/index.d.ts.map +0 -1
- package/node_modules/diff/libcjs/index.js +0 -64
- package/node_modules/diff/libcjs/package.json +0 -1
- package/node_modules/diff/libcjs/patch/apply.d.ts +0 -62
- package/node_modules/diff/libcjs/patch/apply.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/apply.js +0 -267
- package/node_modules/diff/libcjs/patch/create.d.ts +0 -122
- package/node_modules/diff/libcjs/patch/create.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/create.js +0 -251
- package/node_modules/diff/libcjs/patch/line-endings.d.ts +0 -17
- package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/line-endings.js +0 -61
- package/node_modules/diff/libcjs/patch/parse.d.ts +0 -8
- package/node_modules/diff/libcjs/patch/parse.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/parse.js +0 -150
- package/node_modules/diff/libcjs/patch/reverse.d.ts +0 -9
- package/node_modules/diff/libcjs/patch/reverse.d.ts.map +0 -1
- package/node_modules/diff/libcjs/patch/reverse.js +0 -37
- package/node_modules/diff/libcjs/types.d.ts +0 -213
- package/node_modules/diff/libcjs/types.d.ts.map +0 -1
- package/node_modules/diff/libcjs/types.js +0 -2
- package/node_modules/diff/libcjs/util/array.d.ts +0 -3
- package/node_modules/diff/libcjs/util/array.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/array.js +0 -21
- package/node_modules/diff/libcjs/util/distance-iterator.d.ts +0 -2
- package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/distance-iterator.js +0 -40
- package/node_modules/diff/libcjs/util/params.d.ts +0 -4
- package/node_modules/diff/libcjs/util/params.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/params.js +0 -17
- package/node_modules/diff/libcjs/util/string.d.ts +0 -30
- package/node_modules/diff/libcjs/util/string.d.ts.map +0 -1
- package/node_modules/diff/libcjs/util/string.js +0 -200
- package/node_modules/diff/libesm/convert/dmp.d.ts +0 -8
- package/node_modules/diff/libesm/convert/dmp.d.ts.map +0 -1
- package/node_modules/diff/libesm/convert/dmp.js +0 -21
- package/node_modules/diff/libesm/convert/xml.d.ts +0 -6
- package/node_modules/diff/libesm/convert/xml.d.ts.map +0 -1
- package/node_modules/diff/libesm/convert/xml.js +0 -31
- package/node_modules/diff/libesm/diff/array.d.ts +0 -19
- package/node_modules/diff/libesm/diff/array.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/array.js +0 -16
- package/node_modules/diff/libesm/diff/base.d.ts +0 -20
- package/node_modules/diff/libesm/diff/base.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/base.js +0 -253
- package/node_modules/diff/libesm/diff/character.d.ts +0 -19
- package/node_modules/diff/libesm/diff/character.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/character.js +0 -7
- package/node_modules/diff/libesm/diff/css.d.ts +0 -18
- package/node_modules/diff/libesm/diff/css.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/css.js +0 -10
- package/node_modules/diff/libesm/diff/json.d.ts +0 -24
- package/node_modules/diff/libesm/diff/json.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/json.js +0 -78
- package/node_modules/diff/libesm/diff/line.d.ts +0 -24
- package/node_modules/diff/libesm/diff/line.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/line.js +0 -65
- package/node_modules/diff/libesm/diff/sentence.d.ts +0 -21
- package/node_modules/diff/libesm/diff/sentence.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/sentence.js +0 -43
- package/node_modules/diff/libesm/diff/word.d.ts +0 -35
- package/node_modules/diff/libesm/diff/word.d.ts.map +0 -1
- package/node_modules/diff/libesm/diff/word.js +0 -281
- package/node_modules/diff/libesm/index.d.ts +0 -20
- package/node_modules/diff/libesm/index.d.ts.map +0 -1
- package/node_modules/diff/libesm/index.js +0 -30
- package/node_modules/diff/libesm/package.json +0 -1
- package/node_modules/diff/libesm/patch/apply.d.ts +0 -62
- package/node_modules/diff/libesm/patch/apply.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/apply.js +0 -257
- package/node_modules/diff/libesm/patch/create.d.ts +0 -122
- package/node_modules/diff/libesm/patch/create.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/create.js +0 -228
- package/node_modules/diff/libesm/patch/line-endings.d.ts +0 -17
- package/node_modules/diff/libesm/patch/line-endings.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/line-endings.js +0 -44
- package/node_modules/diff/libesm/patch/parse.d.ts +0 -8
- package/node_modules/diff/libesm/patch/parse.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/parse.js +0 -147
- package/node_modules/diff/libesm/patch/reverse.d.ts +0 -9
- package/node_modules/diff/libesm/patch/reverse.d.ts.map +0 -1
- package/node_modules/diff/libesm/patch/reverse.js +0 -23
- package/node_modules/diff/libesm/types.d.ts +0 -213
- package/node_modules/diff/libesm/types.d.ts.map +0 -1
- package/node_modules/diff/libesm/types.js +0 -1
- package/node_modules/diff/libesm/util/array.d.ts +0 -3
- package/node_modules/diff/libesm/util/array.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/array.js +0 -17
- package/node_modules/diff/libesm/util/distance-iterator.d.ts +0 -2
- package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/distance-iterator.js +0 -37
- package/node_modules/diff/libesm/util/params.d.ts +0 -4
- package/node_modules/diff/libesm/util/params.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/params.js +0 -14
- package/node_modules/diff/libesm/util/string.d.ts +0 -30
- package/node_modules/diff/libesm/util/string.d.ts.map +0 -1
- package/node_modules/diff/libesm/util/string.js +0 -184
- package/node_modules/diff/package.json +0 -130
- package/node_modules/diff/release-notes.md +0 -432
- package/node_modules/node-gyp/commitlint.config.mjs +0 -3
- package/node_modules/node-gyp/gyp/commitlint.config.js +0 -6
- package/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake_test.py +0 -105
- package/node_modules/node-gyp/zizmor.yml +0 -5
- package/node_modules/proxy-agent-negotiate/dist/index.d.ts +0 -14
- package/node_modules/proxy-agent-negotiate/dist/index.d.ts.map +0 -1
- package/node_modules/proxy-agent-negotiate/dist/index.js +0 -35
- package/node_modules/proxy-agent-negotiate/dist/index.js.map +0 -1
- package/node_modules/proxy-agent-negotiate/package.json +0 -47
- package/node_modules/undici/docs/docs/api/CacheStore.md +0 -360
- package/node_modules/undici/docs/docs/api/ClientStats.md +0 -93
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +0 -121
- package/node_modules/undici/docs/docs/api/H2CClient.md +0 -385
- package/node_modules/undici/docs/docs/api/Interceptors.md +0 -419
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +0 -371
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +0 -206
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +0 -239
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +0 -361
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +0 -256
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +0 -233
- package/node_modules/undici/docs/docs/getting-started.md +0 -281
- package/node_modules/undici/docs/docs/site.json +0 -125
- package/node_modules/undici/docs/docs/type-map.json +0 -79
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +0 -110
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +0 -7
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-client.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/core/socks5-utils.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/encoding/index.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/constants.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/llhttp/utils.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/mock/snapshot-utils.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/date.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/util/stats.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/Readme.md +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/lib/web/subresource-integrity/subresource-integrity.js +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/cache-interceptor.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/client-stats.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/mock-call-history.d.ts +0 -0
- /package/node_modules/{undici → @mytools/fst-platform/node_modules/undici}/types/utility.d.ts +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 用户级共享插件库实施计划
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED SUB-SKILL: 使用 superpowers:executing-plans 在当前会话逐项实施;完成后按 code-review 技能进行两轴独立评审。
|
|
4
|
+
|
|
5
|
+
**Goal:** 用户安装或链接一次插件后,普通工作区均可使用,且不会因另一个工作区缺少插件配置而无法启动。
|
|
6
|
+
|
|
7
|
+
**Architecture:** workspace 负责共享库路径、登记工作区及跨工作区引用查询,复用现有安装批次、锁、租约与恢复备份。core 合并预置、旧工作区及全局插件并管理待配置状态;CLI 默认接入共享库,分发包保持独立。
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Node.js、ESM、npm workspaces、node:test;不新增第三方依赖。
|
|
10
|
+
|
|
11
|
+
**Spec:** docs/superpowers/specs/2026-10-13-issue-5-results-and-history.md
|
|
12
|
+
|
|
13
|
+
## Global Constraints
|
|
14
|
+
|
|
15
|
+
- Node 支持范围为 `^22.22.2 || >=24.0.0`,Windows 与 Linux 均验证。
|
|
16
|
+
- 普通 CLI 默认使用 `FISHTOOLS_HOME/plugins`;未配置 FISHTOOLS_HOME 时为用户主目录 `.fishtools/plugins`。
|
|
17
|
+
- 插件配置、工作流和代理规则保存在当前工作区。
|
|
18
|
+
- 原有业务文件和历史插件状态不迁移、不删除;安装状态切换保留前一份备份。
|
|
19
|
+
- 分发包不加载宿主全局插件;不放宽固定便携运行时的校验。
|
|
20
|
+
- 文档、注释和用户界面使用中文。
|
|
21
|
+
|
|
22
|
+
## Review Focus
|
|
23
|
+
|
|
24
|
+
- 多工作区同时变更:统一共享库锁,旧状态写入被拒绝。
|
|
25
|
+
- 全局插件必填配置缺失:只停用相关插件及消费者,其他动作可正常调用。
|
|
26
|
+
- 旧本地版本与全局版本同名:全局优先;全局卸载不复活旧版本。
|
|
27
|
+
- 其他工作区仍引用插件:默认拒绝卸载;明确强制卸载仍保留恢复状态。
|
|
28
|
+
- 离线分发与热重载:包内快照独立;开发监听包含全局链接及登记状态。
|
|
29
|
+
|
|
30
|
+
### Task 1:共享登记与跨工作区安装
|
|
31
|
+
|
|
32
|
+
**Files:** 创建 `packages/fst-workspace/src/plugin-registry.js` 与 `tests/global-plugins.test.js`;修改 workspace exports、core application、CLI。
|
|
33
|
+
|
|
34
|
+
**Interfaces:** `userPluginRegistry()` 返回用户库绝对路径;`registerWorkspace(registryDir, projectDir)` 原子登记路径;`registryWorkflowReferences(registryDir, pluginId)` 返回带工作区路径的实际引用。`createApplication({pluginRegistryDir})` 接入共享库并兼容本地安装。
|
|
35
|
+
|
|
36
|
+
- [x] 新增真实双工作区测试:共享 link/install、配置隔离、旧版本优先级、跨工作区引用与并发状态。
|
|
37
|
+
- [x] 运行 `node --test tests/global-plugins.test.js`,确认功能缺失导致失败。
|
|
38
|
+
- [x] 实现双范围锁、租约、安装状态切换与来源元数据;全局删除记录旧版本屏蔽项。
|
|
39
|
+
- [x] 同一测试命令及现有安装/租约回归通过后提交。
|
|
40
|
+
|
|
41
|
+
### Task 2:配置、来源提示与开发监听
|
|
42
|
+
|
|
43
|
+
**Files:** 创建 `packages/core/src/plugin-catalog.js`;修改 application、TUI presentation/session、development watcher;扩充 global-plugins 与 development-watch 测试。
|
|
44
|
+
|
|
45
|
+
**Interfaces:** `preparePluginCatalog(entries, config, globalIds)` 返回 `{active,pending}`;待配置项保留作者声明与具体原因。`app.pluginDefinition(id)` 返回可用或待配置的原始声明。
|
|
46
|
+
|
|
47
|
+
- [x] 新增全局插件缺少必填配置、有 runtime 消费者及配置恢复的失败测试。
|
|
48
|
+
- [x] 实现待配置目录、动作调用明确错误、配置后激活与保存失败恢复。
|
|
49
|
+
- [x] 添加全局链接源码监听与两种来源文案的实际回归。
|
|
50
|
+
- [x] 运行全局、runtime、TUI、开发监听测试并更新使用文档。
|
|
51
|
+
|
|
52
|
+
### Task 3:发布验证
|
|
53
|
+
|
|
54
|
+
- [ ] 构建新的唯一 npm 归档,在支持版本和 issue 报告版本上执行真实安装与运行。
|
|
55
|
+
- [x] 按固定基线 `46a897450e122054dcfab882de5be061b311570f` 执行 Standards 和 Spec 两轴评审,修复有效发现。
|
|
56
|
+
- [ ] 提交、推送 main 与 v0.5.3,等待发布完成并核对 npm 版本、归档完整性和 GitHub 资源。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# 0.5.3:可读执行详情与完整会话
|
|
2
|
+
|
|
3
|
+
用户本轮确认需要:步骤附近的展开入口、能看懂的指令/文件/结果、主面板计时、恢复完整 TUI 会话、TUI 内平台提示,以及 `!ipconfig` 中文输出修复。0.5.3 尚未发布,合入同一版本。
|
|
4
|
+
|
|
5
|
+
## 设计
|
|
6
|
+
|
|
7
|
+
- 主面板保留逐步摘要,在运行及步骤附近提示 Ctrl+O。展开后按插件的字段标题展示输入输出,JSON 文本可读化;原始 JSON 仍可在单步详情按 j 查看。
|
|
8
|
+
- 受管 `runProcess` 记录实际程序路径、逐项参数、执行目录;插件目录按真实声明记录。内核无法观察插件绕过该接口执行的任意代码,不猜测其文件访问。
|
|
9
|
+
- 主面板和单步阅读器显示运行开始至结束的耗时,执行中每秒更新,结束后固定;界面关闭时取消刷新计时器。
|
|
10
|
+
- 平台与架构声明提示在 TUI 启动后显示;命令行入口仍使用 stderr。已知声明不匹配继续作为提示,不把它伪装成已确认的运行失败。
|
|
11
|
+
- `/history` 独立保存 TUI 命令、反馈与运行关联,支持恢复并继续;运行日志仍保留全文。会话追加记录按页读取,当前面板内存保留有界摘要。恢复不会重新执行历史指令或覆盖旧会话。
|
|
12
|
+
- 会话保存在所属工作区,可写便携工作区同样支持;只读包使用可写输出位置。首轮无需加密或压缩,不引入密钥管理和启动密码。
|
|
13
|
+
- Windows Shell 中文输出先真实复现,采用子进程范围内的编码修正,保持原始命令、多行、管道、重定向和取消行为。
|
|
14
|
+
|
|
15
|
+
## 实施与验证
|
|
16
|
+
|
|
17
|
+
- [x] 先补步骤呈现、真实进程追踪、计时及 TUI 平台提示的失败测试,再实现。
|
|
18
|
+
- [x] logs 增加会话存储与分页,覆盖重开、竞争、归属、坏记录、链接及预算;TUI 接入保存恢复并验证输入、反馈、结果。
|
|
19
|
+
- [x] 实际执行 Windows `ipconfig` 验证中文,同时覆盖 Shell 自身输出及已有命令回归。
|
|
20
|
+
- [x] 进行独立 Standards / Spec 增量审查,修复有效发现并验证;两轴终轮均无剩余阻塞问题。最终归档完整验收与发布结果记入验收记录。
|
|
21
|
+
- [ ] 推送后等待两平台及 Node 支持范围的正式发布验收,核对 npm 和四个 Release 附件。
|
|
@@ -62,6 +62,9 @@
|
|
|
62
62
|
- `npm run dist:npm` 成功,0.5.1 本地归档 9,757,761 字节、284 个生产包。
|
|
63
63
|
使用该实际归档设置 `FISHTOOLS_TEST_NPM_ARCHIVE` 后,完整 `npm test` 382 项:381 通过、0 失败、1 跳过,166.0 秒。
|
|
64
64
|
跳过项为 Windows 当前无文件 symlink 权限,目录 junction 测试实际执行;离线安装、脱离源码运行与再次导出通过。
|
|
65
|
-
- 发布 tag 与 CLI/package 版本同步检查通过。远端双平台、便携包和 npm
|
|
65
|
+
- 发布 tag 与 CLI/package 版本同步检查通过。远端双平台、便携包和 npm 发布结果见[验收记录](../../verification.md)。
|
|
66
|
+
- 发布提交 `1fff499` 的[正式发布流程](https://github.com/yanglaofish/Fishtools/actions/runs/38329427621)全部成功:Windows 382/382、Ubuntu 381/382(1 项平台专用跳过),
|
|
67
|
+
便携包与断网无 Node 容器通过;0.5.1 已在 npm latest 与 [GitHub Release](https://github.com/yanglaofish/Fishtools/releases/tag/v0.5.1)交付。
|
|
68
|
+
独立下载公开 npm tarball,SHA-512 与注册表、SHA-256 与 Release 一致。此后只追加验收文档,不改动发行 tag。
|
|
66
69
|
|
|
67
70
|
汇总:Standards 3 项(最高 P1),Spec 3 项(最高 P1),6 项均已修正;修补复审无剩余阻断问题。
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# 0.5.3 代码审查
|
|
2
|
+
|
|
3
|
+
固定基线 `46a897450e122054dcfab882de5be061b311570f`;两名独立评审分别阅读 `e4143e819f02d391497b711bfca98f955567f2d6` 的 Standards 与 Spec 轴。来源为 issue #4 正文/评论/截图、issue #5 正文/截图及用户确认的普通安装全局范围。评审只读,不写用户插件库。
|
|
4
|
+
|
|
5
|
+
## Standards
|
|
6
|
+
|
|
7
|
+
1 项硬规范问题,最高 P2:旧批次的租约释放仅查看新目录记录,未检查定向更新后宿主实际仍使用的旧 root。违反插件开发文档“活动代码由批次租约保护”。未发现需要单独报告的判断性气味。
|
|
8
|
+
|
|
9
|
+
## Spec
|
|
10
|
+
|
|
11
|
+
3 项,最高 P1:
|
|
12
|
+
|
|
13
|
+
- P1:上述租约问题,可能使 GC 回收正在使用的资源。
|
|
14
|
+
- P1:其他工作区调用本地消费者,而消费者依赖全局提供者时,直接工作流前缀扫描漏掉依赖。
|
|
15
|
+
- P2:被全局覆盖或屏蔽的旧链接仍先导入,旧源码移走后会阻止工作区启动。
|
|
16
|
+
|
|
17
|
+
两轴共有 3 个不同问题,已全部修正,分别保留各轴原优先级。
|
|
18
|
+
|
|
19
|
+
## 修复与证据
|
|
20
|
+
|
|
21
|
+
- 租约判断使用活动宿主及目录记录的路径并集。真实 npm 安装探针在关闭 npm 锁文件时先复现 GC 删除活动目录,再确认连续更新/回收后资源仍可读取。
|
|
22
|
+
- 全局卸载增加已登记工作区插件依赖扫描,其他工作区的本地消费者同样受保护,force 不绕过此保护。探针先出现“没有拒绝卸载”,修复后正常/强制卸载均被拒绝。
|
|
23
|
+
- 旧安装在导入前按全局 ID 和屏蔽项过滤;移动旧源码后,覆盖版本正常执行,卸载后的新启动仍正常。修复前为 ENOENT,修复后通过。
|
|
24
|
+
- 额外自检发现待配置目录会跳过原宿主静态校验;提取统一 `validatePluginDefinitions`,待配置插件仍检查 SDK、依赖、动作函数与服务图。无效 SDK 探针先未被拒绝,修复后三种无效声明均被拒绝。
|
|
25
|
+
- 上述修复与 runtime、TUI、开发重载相关回归:71 项通过,0 失败。
|
|
26
|
+
- Windows/Node 22.12.0 再次导出多次出现退出码 3221225477;切换原生进程调用及禁用 JIT 后仍复现,没有归因为已证实的内核逻辑问题。22.22.2 和 24.11.1 同一测试通过,产品支持声明同步收敛到实际验证范围。
|
|
27
|
+
|
|
28
|
+
最终完整测试、归档安装与发布结果见 `docs/verification.md`。
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# 0.5.2 命令注册与快捷名称审查
|
|
2
|
+
|
|
3
|
+
用户已授权直接实现并在审查验证后推送发包,最后明确要求 Shift+Enter 换行、Enter 提交。
|
|
4
|
+
本轮在 `codex/0.5.2-command-shortcuts` 分支开展,以主分支 `68a84cdb46cdb7f022eb3bf1d77ba478c52970ab` 为固定基线。
|
|
5
|
+
首次审查版本 `f44e8e7c0fdef1407a09093487065c1b98969ab3`,第一次修补复审版本 `977218678613a09beb3c901b638138a16d765398`。
|
|
6
|
+
比较命令:`git diff 68a84cdb46cdb7f022eb3bf1d77ba478c52970ab...HEAD`。
|
|
7
|
+
|
|
8
|
+
按 code-review 使用两个独立只读审查分别处理 Standards 与 Spec。
|
|
9
|
+
规范来源包括各模块 README、`docs/modules.md` 与代码风格规则;需求来源为
|
|
10
|
+
[设计](../specs/2026-10-13-command-shortcuts-design.md)、[计划](../plans/2026-10-13-command-shortcuts.md)和用户本轮按键要求。
|
|
11
|
+
|
|
12
|
+
## Standards
|
|
13
|
+
|
|
14
|
+
确认 3 项,最高 P1。
|
|
15
|
+
|
|
16
|
+
1. **P1:运行时插件安装漏查命令重名。** core 安装时从未启用 runtime 的候选宿主读取 commands,漏掉运行时插件声明;安装成功后快捷名冲突导致下次启动失败。修正为统一读取静态声明,启动、注册保存、安装都复用同一个收集函数。真实安装失败后,原工作区仍可重启。
|
|
17
|
+
2. **P2:Windows 长脚本超过命令行限制。** PowerShell 的 UTF-16/Base64 传输让约 13 KiB 文本就超过 Windows 参数长度限制。增加 `runShell`,把唯一临时脚本写入输出目录,用受管进程执行并在结束后删除;PowerShell 文件带 UTF-8 BOM,POSIX 使用原文。真实 64 KiB 脚本、取消、超时和清理覆盖通过。
|
|
18
|
+
3. **P2:参数表单等待后仍可执行其他插件的同名命令。** TUI 首次检查快捷名身份后,表单和权限确认有异步等待,最后只按命令名称启动。修正为等待结束后再检查 command/plugin,并把 expectedPlugin 传给 core 在实际调用前再次检查。目标已移除时也明确失败。
|
|
19
|
+
|
|
20
|
+
初审判断性 possible Duplicated Code:多处命令声明收集逻辑产生差异。已统一为 `declaredCommands`;不作为独立硬违规计数。
|
|
21
|
+
|
|
22
|
+
## Spec
|
|
23
|
+
|
|
24
|
+
确认 3 项,最高 P2;未发现其他已确认的范围扩大。
|
|
25
|
+
|
|
26
|
+
1. **P2:旧命令快捷名被新插件同名能力接管。** 原配置只保存 command 名称,原插件卸载后另一插件可接管入口,违反稳定目标身份与失效引用约定。配置、展示、运行和导出同时使用 command/plugin 匹配;同插件升级仍保持有效,不同插件同名入口不可执行。
|
|
27
|
+
2. **P2:跨实例旧工作流草稿能保存已删除命令。** 删除只检查已落盘工作流,另一实例随后保存或复制旧草稿会产生悬空引用。保存和复制现在在变更锁内核对最新项目注册项,覆盖 branch/parallel;已存在的其他插件缺失引用仍允许用户修复或删除。
|
|
28
|
+
3. **P2:保存无关设置会自动启用未绑定的旧命令别名。** 整组保存时给所有 command 项补齐提供者,删除另一别名或编辑无关注册项都会启用旧导入项,违反“需重新选择目标”的设计。绑定函数现在接收 previous,只对明确的新目标补齐;旧未绑定项修改默认输入、重命名仍失效,界面重新选择或明确提供 plugin 后才恢复。
|
|
29
|
+
|
|
30
|
+
## 补充验证发现与修正
|
|
31
|
+
|
|
32
|
+
- 编辑命令和快捷名称时保留已有默认 input;真实菜单回归先失败再修正。
|
|
33
|
+
- 命令脚本更新通过摘要纳入插件变更检测,修复另一实例修改脚本后安装无关插件仍使用旧闭包的问题。
|
|
34
|
+
- 全量测试发现缓冲输出超限后后代仍写文件。真实诊断确认 Execa 先关闭输出管道,父进程因 EPIPE 提前退出,taskkill 找不到父 PID 而留下后代。平台关闭 Execa 的内部缓冲,自行有限收集字节;停止期间排空并丢弃输出,等待整棵树回收。stream 模式也避免提前关闭管道。保留原严格心跳断言,新增独立后代进程回归,未放宽断言。
|
|
35
|
+
- 三个追加身份回归先全部失败,修正后应用、TUI、快捷名及既有终端专项 74 项:73 通过、0 失败、1 项 POSIX 专用跳过。
|
|
36
|
+
- `maxBuffer` 明确接受非负数值(含 0 和 Infinity),拒绝对象、NaN、负数等,避免切换为平台缓冲后无意绕过上限;对应两项边界回归通过。
|
|
37
|
+
- 原进程、流式进程及新树回收专项 **24/24** 通过;同一诊断脚本修复后 taskkill 成功、返回时后代已退出,心跳没有继续增长。
|
|
38
|
+
- 随后全量 489 项中流式超时出现一次文件大小增加 1 字节。164 次 CPU/文件 I/O 并发诊断均未复现,实际内容保持稳定;不能认定原因是元信息延迟或异步终止。增强探针在返回后立即检查后代状态、严格比较前后内容,并同时记录大小,生产实现不再根据未验证假设修改。Windows 内核 pending I/O 的严格等待不在本次能力承诺内。
|
|
39
|
+
|
|
40
|
+
## 最终复审与发布验收
|
|
41
|
+
|
|
42
|
+
生产代码最终复审范围为固定基线至 `30d7472a36f342ac45b2e010a499182612a92a0a`,Standards 与 Spec 均通过,无遗留已确认问题。
|
|
43
|
+
随后对 `7fa617814bb7fcfa70c3a76e959beda0f9e9dfbc` 的探针与记录改动分别复审,两轴均通过,生产代码未变;没有把未复现的文件大小变化认定为已查明原因。
|
|
44
|
+
|
|
45
|
+
`npm run dist:npm` 成功;本地真实 npm 归档为 9,804,373 字节、285 个生产包。
|
|
46
|
+
指定该归档后完整 `npm test` **489 项:487 通过、0 失败、2 跳过**,175.1 秒。
|
|
47
|
+
跳过项分别为 POSIX 保存失败注入及本机未开放权限的文件符号链接;目录 junction 仍执行。
|
|
48
|
+
原严格心跳断言和新增进程状态、实际内容检查均通过。正式双平台与发布结果记录在[验收记录](../../verification.md)。
|
|
49
|
+
|
|
50
|
+
汇总:Standards 3 项(最高 P1),Spec 3 项(最高 P2),六项已修正;最终独立复审均通过。
|
|
51
|
+
|
|
52
|
+
## Issue #4 与首次双平台验收补充
|
|
53
|
+
|
|
54
|
+
用户明确要求把最新复制入口反馈合入 0.5.2。新增固定范围 `8223bad...c567534` 的独立 Standards 与 Spec 复审均通过,新增确认问题均为 0。
|
|
55
|
+
TUI 列表每个工作流只枚举一次,选择后进入管理页复制;原版、未保存参数、只读限制及副本打开行为保持。
|
|
56
|
+
|
|
57
|
+
首次正式 Windows 验收两项 cwd 断言失败,实际目录为 `runneradmin`,测试字面路径为 `RUNNER~1`;生产运行目录没有改变。
|
|
58
|
+
真实短路径诊断复现 `C:\PROGRA~1` 展开为 `C:\Program Files`,两者 `realpath` 相同;测试现在严格比较实际目录身份。
|
|
59
|
+
相关专项 **51 项:50 通过、0 失败、1 POSIX 跳过**;复制、导航、草稿、CLI 与存储专项 **26/26**。
|
|
60
|
+
首次发布任务被跳过,npm 0.5.2 与 GitHub Release 尚不存在;保留失败记录,再次构建与验收合入后的 0.5.2。
|
|
61
|
+
|
|
62
|
+
合入后重新构建的本地 npm 归档为 **9,806,640 字节、285 个生产包**;指定该归档完整验收 **489 项:487 通过、0 失败、2 跳过**,186.3 秒。
|
|
63
|
+
待发布 tag 更新前再次核对注册表无该版本、仓库无该 Release,以及旧 tag 对象,避免覆盖已发布版本。
|
|
64
|
+
|
|
65
|
+
## 正式发布结果
|
|
66
|
+
|
|
67
|
+
[最终发布流程](https://github.com/yanglaofish/Fishtools/actions/runs/38361266757)全部成功,Windows / Ubuntu 同一归档各 **488/489 通过、0 失败、1 项平台专用跳过**。
|
|
68
|
+
两平台便携包、无 Node 的断网只读容器及普通主分支 CI 通过。
|
|
69
|
+
最终 tag 固定于 `fdb62c1`;npm `latest` 为 0.5.2,独立下载包的 SHA-512 与注册表 integrity、SHA-256 与 Release 均一致。
|
|
70
|
+
详细字节数、校验值和四个附件见[验收记录](../../verification.md)。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 0.5.3 可读详情、会话恢复与中文命令审查
|
|
2
|
+
|
|
3
|
+
固定基线 `9cc912f965a1e9fd23924c3aa107077a464f6307`;生产实现及修复至 `3ce925221f7ba8fe4eacf1fb33e536ef60f4c810`。两名独立评审按 code-review 分别检查 Standards 与 Spec,互不合并优先级。规格来自本轮用户确认及[实施计划](../plans/2026-10-13-tui-readable-sessions.md)。
|
|
4
|
+
|
|
5
|
+
## Standards
|
|
6
|
+
|
|
7
|
+
各轮共确认 4 项问题,最高 P1,已修正:
|
|
8
|
+
|
|
9
|
+
- P1:完成的运行等待对象仍持有完整大结果。结束后移除等待句柄,仅保存 logs 提供的有界最终投影。
|
|
10
|
+
- P2:大结果从内核缓存淘汰后,详情计时器仍反复查询空缓存。使用最终摘要或磁盘记录更新,并清理计时器。
|
|
11
|
+
- P2:终态事件早于日志收尾,详情先停止刷新,缺少最终结束时间。完成监听补充真实结束时间及最后的保存状态。
|
|
12
|
+
- P2:每次查看长任务都向未完成 Promise 注册页面闭包,关闭页面仍被保留。改为可注销的完成监听,退出页面及关闭 feed 时清理。
|
|
13
|
+
|
|
14
|
+
最后增量复核:硬规范违反 0 项,判断性代码气味 0 项,本轴没有阻塞发布的发现。评审独立执行 17 项定向测试,全部通过。
|
|
15
|
+
|
|
16
|
+
## Spec
|
|
17
|
+
|
|
18
|
+
复核确认 2 项 P2,已修正:
|
|
19
|
+
|
|
20
|
+
- 日志收尾失败时,内核已变为 `failed / LOG_WRITE_FAILED`,主面板和恢复快照仍显示成功。拒绝分支同步最终状态、错误及结束时间,并保存最终会话反馈。
|
|
21
|
+
- 恢复快照遮住 `/logs` 已读出的磁盘记录,旧摘要显示未知状态或省略正文。历史详情优先采用当前或传入的磁盘记录;格式化阅读返回后重新读取当前状态。
|
|
22
|
+
|
|
23
|
+
完整参数保存也按用户范围补齐:直接动作、插件命令及工作流将 `run.input` 全文写入执行日志;主面板、恢复快照与命令历史保持预算,完整交互仍可分页查看。配置表单不纳入输入历史。
|
|
24
|
+
|
|
25
|
+
最后增量复核:剩余阻塞发布问题 0 项;完成监听、关闭注销及磁盘记录优先级均通过独立只读探针。
|
|
26
|
+
|
|
27
|
+
## 修复证据
|
|
28
|
+
|
|
29
|
+
- 真实 Windows TUI 命令处理路径执行 `!ipconfig`、`!ipconfig /all`:均成功,显示 `Windows IP 配置`,替换字符 0 个。stdout 流与同次返回正文一致,保存真实 System32 程序追踪。自动编码适配限于简单 ipconfig 调用,不宣称所有遗留程序均能自动识别编码。
|
|
30
|
+
- 日志收尾失败通过实际创建 `result.json` 目录触发;修复前面板成功,修复后失败与 `LOG_WRITE_FAILED`、最终时间及会话记录一致。
|
|
31
|
+
- 控制终态广播与收尾间隙,验证最终 4.2 秒补到已打开页面;旧页关闭后收尾不会更新另一次运行。
|
|
32
|
+
- 长任务连续开关详情 10 次,真实 `--expose-gc` 回归修复前保留 10 个阅读器,修复后 0 个。
|
|
33
|
+
- 恢复时旧快照标记未知,磁盘保存成功状态、真实时间和 4000 字中文;修复前被遮住,修复后完整展示。
|
|
34
|
+
- 长命令追加分块不拆开 emoji 代理对;同页阅读拼回原文不插入额外换行。
|
|
35
|
+
- 最终相关 Windows/Node 24.15.0 回归 27/27,Node 22.22.2 包括中文命令及 GC 回归 34/34,零失败、零跳过。
|
|
36
|
+
|
|
37
|
+
最终完整测试、支持版本兼容验收及正式发布产物见[验收记录](../../verification.md)。
|
|
38
|
+
|
|
39
|
+
## 正式验收发现的兼容问题
|
|
40
|
+
|
|
41
|
+
- Windows / Node 24.0 的首次发布验收出现日志文件身份误判。官方 [24.0.0 源码](https://github.com/nodejs/node/blob/v24.0.0/deps/uv/src/win/fs.c) 的路径查询使用 64 位卷编号,句柄查询只提供低 32 位;[24.11.1 源码](https://github.com/nodejs/node/blob/v24.11.1/deps/uv/src/win/fs.c) 已把路径查询统一为 LowPart。修复用 BigInt 保存完整文件 ID,在 Windows 比较卷编号低 32 位,其他平台仍比较完整设备编号;继续拒绝链接及访问期间的文件替换,不放宽读取预算。
|
|
42
|
+
- 这项源码差异是失败原因的推断,首次失败任务没有记录原始 stat 值;修复后新增真实文件诊断,必须由同一 CI 平台复跑确认。低 32 位卷编号和完整文件 ID 同时碰撞时无法区分身份,不能宣称拒绝所有异卷。
|
|
43
|
+
- 本地 Node 24.0 与 24.15 相关日志、会话及详情回归各 42 项:41 通过、1 项平台用例跳过。针对该增量,两名独立评审均无阻塞发现;Standards 硬规范违反与判断性气味均为 0,Spec 范围扩张为 0。
|
|
44
|
+
- 本地 Node 24.0 完整回归另有一项共享打包缓存校验失败。旧实现命中有效缓存仍截断重写,并发读取可能得到半成品;缓存最终摘要正确,独立重跑打包 2/2 通过。新增有效缓存不重写的断言先失败,修复后只读命中缓存,冷缓存和自定义运行时校验后使用唯一暂存文件原子替换,许可证缓存也采用原子写入。固定 SHA 校验及损坏缓存拒绝行为保留。
|
|
45
|
+
- 缓存修复与文件身份修复的 Node 24.0 定向回归 7/7 通过;缓存增量独立审查、最终完整回归及正式发布复跑结果见验收记录。
|
|
46
|
+
- 冷缓存并发回归又在 Windows / Node 24.15 复现同目标 rename 的 EPERM,Standards 独立探针也确认。最终仅在 Windows 的 EPERM/EACCES/EBUSY 且目标内容完全相同时接受已胜出的完整缓存;不同、缺失、不可读目标及其他错误仍传播。追加真实替换失败、保留原目标及清理暂存的断言,缓存最终回归在 Node 24.0 和 24.15 各 4/4 通过。
|
|
47
|
+
- 缓存最终增量复核:Standards 硬问题 0、判断性气味 0,Spec 阻塞 0、范围扩张 0。Standards 独立执行 6/6 定向测试,并用只读目标制造真实 EPERM,确认仅相同内容可接受,错误分支保留目标并清理暂存;Spec 探针另外确认目标不可读及其他错误保留原始错误。此前并发替换阻断已解除,完整矩阵继续作为正式发布门禁。
|
|
48
|
+
|
|
49
|
+
## 真实 Windows 24.0 文件身份与 Web 等待期限补充
|
|
50
|
+
|
|
51
|
+
- 固定增量基线 `0cb40f3eb8928860c8290055d4e8626399ae5300`。第二次发行验收仍拒绝 Windows / Node 24.0 的合法日志,真实诊断记录路径 `dev=0`、句柄 `dev=742408122`、完整 `ino=7036874418249441`;此前低 32 位宽度推断不能单独解释该事实。
|
|
52
|
+
- 回归先确认缺失路径设备号时的合法文件会被拒绝,再增加受限补充验证:只在 Windows 的路径设备号未知且完整文件 ID 相同时,重新只读打开当前路径,以两个句柄完整 BigInt 身份证明同一文件,最后重新拒绝链接和路径替换。句柄始终关闭;原普通文件、归属、大小及读取预算检查保留。
|
|
53
|
+
- 新增真实替换文件、同一原文件链接及不同设备/文件 ID 拒绝探针,链接创建无权限时明确跳过。Windows Node 24.0、24.11.1、24.15.0 定向回归各 54 项:52 通过、0 失败、2 项链接权限跳过;真实 CI 文件系统还需定向复跑确认。
|
|
54
|
+
- Windows / Node 24.11.1 的 Web 测试过早结束轮询,任务仍为 running。仅调整为 10 秒明确期限,原成功状态、输出、鉴权及路径断言保留;不修改产品执行逻辑。CI 新增 Windows 早期 Node 定向门禁,原全量矩阵保留。
|
|
55
|
+
- Standards 独立复审:硬问题 0、判断性气味 0;Spec 缺失需求、范围扩张、错误实现均为 0。Spec 的 16 个只读边界探针通过,包含实际诊断值、异设备高位、替换、链接及异常清理。实际失败文件系统定向 CI 和完整发行矩阵仍作为发布门禁。
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
新文件使用排他创建,发现同名文件立即拒绝,不能通过现有可覆盖的 `save()` 写入。写入失败只清理本次尚未成功创建的新文件,不能触碰来源。返回完整的新定义及路径。只读运行包拒绝复制。`core.app.duplicateWorkflow` 是唯一应用层入口,并对输出的新工作流再次执行结构校验;复制后的正常编辑沿用现有保存接口。
|
|
12
12
|
|
|
13
|
-
TUI
|
|
13
|
+
TUI 的工作流编辑菜单加入“复制为新工作流”。该操作以屏幕当前草稿为来源,询问新名称,成功后打开已保存副本继续编辑;复制之前的未保存修改不会写回原文件。依据 2026-10-13 的 [issue #4](https://github.com/yanglaofish/Fishtools/issues/4) 评论修正入口:工作流列表每个工作流仅出现一次,选择工作流后在管理页提供复制选项,不再为每个工作流额外枚举一条复制入口。CLI 增加 `fst workflow duplicate <source> --title <name> [--id <id>]`,Web 工作流列表和编辑器提供相同操作,编辑器的未保存内容也可另存为副本。界面在切换后清楚显示新 ID 和原工作流仍在。
|
|
14
14
|
|
|
15
15
|
## 连续运行与结果
|
|
16
16
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# 0.5.2 终端命令与快捷名称设计
|
|
2
|
+
|
|
3
|
+
## 目标与授权
|
|
4
|
+
|
|
5
|
+
用户希望临时执行系统命令,也能把常用命令注册为可编排动作;任意插件动作和已有插件命令都能拥有用户自定义的中文快捷名称。长命令允许多行编辑,主输入框和注册对话框统一为 **Shift+Enter 换行、Enter 提交**,提供 Alt+Enter 备用换行,并明确显示提示。
|
|
6
|
+
|
|
7
|
+
本设计承接用户 2026-10-13 的“可以,那就是 5.2 的目标”及之前直接编码、审查验证后推送发包的授权。产品目标为 **0.5.2**,不因为本轮增加功能改为 0.6.0。保持原有工作流格式、插件 ID、动作 ID 和 SDK_VERSION。
|
|
8
|
+
|
|
9
|
+
## 职责
|
|
10
|
+
|
|
11
|
+
- CLI 接受 `!` 后的原始命令文本,保留换行、引号、管道和重定向;不经斜杠命令分词器重新组装。
|
|
12
|
+
- platform 将完整文本交给明确选择的 Shell。默认 Windows 为 PowerShell,Linux 为 sh,可显式选 powershell、pwsh、sh、bash。仍通过既有受管进程接口执行。
|
|
13
|
+
- 官方 `@mytools/commands` 插件提供轻量命令动作,复用权限、代理、取消与完整日志。core 将工作区注册项装配为这个插件的稳定动作;不另建工作流执行器。
|
|
14
|
+
- workspace 提供快捷名校验和引用状态;core 保存项目设置并协调定向更新;TUI 提供注册、编辑、删除与快捷名管理。
|
|
15
|
+
- 插件作者仍负责业务解析,通用命令默认返回文本,不猜测 IP 等业务字段。
|
|
16
|
+
|
|
17
|
+
## 数据与接口
|
|
18
|
+
|
|
19
|
+
`flow.project.json` 可增加 `commandPresets`、`shortcuts`,默认均为 `{}`。示例:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"commandPresets": {
|
|
24
|
+
"local-ip": {"title":"查看本机IP","script":"ifconfig","shell":"auto"}
|
|
25
|
+
},
|
|
26
|
+
"shortcuts": {
|
|
27
|
+
"查看本机IP": {"action":"@mytools/commands:local-ip"},
|
|
28
|
+
"问候": {"command":"demo.greet","plugin":"my-demo-plugin"}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
命令注册 ID 使用稳定 ASCII 标识;标题和快捷名称可以中文。注册项包含 title、script、shell、可选 timeout 与 parameters。参数是简单字段声明(string/number/boolean,标题、默认值与是否必填),自动生成 schema,并通过 `FST_INPUT_字段名` 环境变量传递,避免把参数拼进 Shell 源码。Linux 脚本使用 `$FST_INPUT_name`,PowerShell 使用 `$env:FST_INPUT_name`。root 需求可显式声明,沿用执行前预检;不会自动提权。
|
|
34
|
+
|
|
35
|
+
动作 ID 为 `@mytools/commands:注册ID`;输入默认空对象,输出固定包含 exitCode、stdout、stderr、outputBytes、outputTruncated。stdout/stderr 为有界尾部,完整输出落盘。非零退出默认抛出明确执行错误,停止所在工作流;不把失败伪装为成功。Shell 解释器缺失、超时和取消保持原有错误语义。
|
|
36
|
+
|
|
37
|
+
快捷名称仅改用户入口,不修改 npm 包名或原有动作 ID。支持 Unicode 字母开头,后续可含字母、数字、下划线、点、连字符;拒绝空白、斜杠、控制符、内置入口和已有命令冲突。原插件 `commands` 同步支持中文名称。快捷目标选择 action 或 command 之一,可保存固定输入默认值;命令目标同时保存 plugin,锁定提供者身份,同一插件升级保持入口。用户明确配置时 API 可自动补齐该标识;未绑定的手工导入项需重新选择目标。失效引用继续显示原因,不静默删除,也不执行其他同名能力。
|
|
38
|
+
|
|
39
|
+
## 操作
|
|
40
|
+
|
|
41
|
+
- 主输入框 `!echo hello` 或多行 `!` 命令启动受管运行,输出和状态出现在主面板,`/logs` 回看完整内容。使用工作区目录和当前用户权限,继承工作区代理规则。
|
|
42
|
+
- `/commands` 管理轻量命令:新建、编辑、删除、直接运行。新建只要求名称、命令文本,Shell 默认按系统选择;高级设置提供超时、参数和 Linux root 需求。
|
|
43
|
+
- `/shortcuts` 管理快捷名称:目标从任意已加载动作或插件命令选择,可编辑默认输入和删除别名。别名出现在 `/` 补全中,运行时复用原动作或命令输入表单。
|
|
44
|
+
- 修改注册项保持动作 ID;删除被已保存工作流引用的注册项时列出引用并拒绝,先调整工作流再删除。别名删除不卸载插件。
|
|
45
|
+
- 输入框支持软换行和真实多行粘贴;Shift+Enter/Alt+Enter 添加换行,Enter 提交全部内容。命令编辑输入框展示实际按键提示,窄屏长内容也不越界。
|
|
46
|
+
- 第一版运行非交互命令;需要 stdin 或全屏终端的程序不承诺终端接管。
|
|
47
|
+
|
|
48
|
+
## 持久化与导出
|
|
49
|
+
|
|
50
|
+
修改前备份项目原文件到 `.flow/backups/`。使用既有项目变更锁、同字段冲突检查、临时文件原子替换;保留其他实例刚更新的无关设置。涉及动作更新时先验证候选宿主,运行期间拒绝修改;落盘失败恢复旧定义,恢复失败要求重启。
|
|
51
|
+
|
|
52
|
+
导出携带所需命令注册项及所选插件相关快捷名。官方命令插件作为标准包进入闭包,离线运行和再次导出可重新装配。外部程序仍由目标机器提供;定义不假装包含系统命令或解释器。只读运行包可执行,但不能修改注册项或别名。
|
|
53
|
+
|
|
54
|
+
## 验收
|
|
55
|
+
|
|
56
|
+
覆盖真实 Shell 内置命令、多行、管道、引号、中文输出、非零退出、取消、超时;大输出完整落盘而内存摘要有界。覆盖任意动作和命令的中文别名、重名拒绝、失效目标、固定输入及运行日志。覆盖修改/删除备份、并发冲突与保存失败恢复、工作流引用删除保护、打包后注册项与别名仍可使用。Windows 和 Ubuntu 全量验证通过后集中发布 0.5.2。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Issue #4:工作流复制入口
|
|
2
|
+
|
|
3
|
+
## 问题核对
|
|
4
|
+
|
|
5
|
+
[Issue #4「复制太奇怪了」](https://github.com/yanglaofish/Fishtools/issues/4)的[完整评论](https://github.com/yanglaofish/Fishtools/issues/4#issuecomment-6139946691)要求进入工作流后的管理页增加复制选项,而非在列表中枚举复制入口。
|
|
6
|
+
对应源码确实对全部工作流再生成一组 `duplicate:<id>` 行;管理页本来已经有复制选项,因此每增加一个工作流就多一条重复入口。
|
|
7
|
+
问题成立,采纳该评论。判断依据是已读取的评论与对应源码;独立图片访问返回 404,没有据此推断截图中的其他问题。
|
|
8
|
+
|
|
9
|
+
## 修改范围
|
|
10
|
+
|
|
11
|
+
- 工作流列表每个工作流只出现一次,继续保留新建、草稿与返回入口。
|
|
12
|
+
- 选择工作流后进入原管理页,在那里执行“复制为新工作流”。
|
|
13
|
+
- 复制已保存版本与当前未保存参数均保留,成功后打开已保存副本,原版不被覆盖。
|
|
14
|
+
- 只读项目继续隐藏复制操作。
|
|
15
|
+
|
|
16
|
+
## 验证与发布安排
|
|
17
|
+
|
|
18
|
+
固定基线为 `8223bad9eab8ca51fd4c44b89da545e812e60790`;在 `codex/issue-4-workflow-menu` 独立分支修正。
|
|
19
|
+
已有真实菜单集成测试先因重复复制入口失败,再修正列表;验证多工作流枚举、进入管理页复制、草稿和只读行为。
|
|
20
|
+
|
|
21
|
+
用户随后明确要求把修正合入 0.5.2。旧 tag 对应的正式验收已经结束:Linux 全部通过,Windows 因两项短路径逐字比较断言失败;发布任务被跳过,npm 0.5.2 与 GitHub Release 均不存在。
|
|
22
|
+
核对该未发布状态后,将复制入口与路径身份断言修正一起纳入 0.5.2,重新构建归档和验收;更新待发布 tag 时核对旧对象,保留首次失败的流程记录,不覆盖任何已发布版本。
|
|
23
|
+
|
|
24
|
+
Windows 路径诊断使用 `C:\PROGRA~1` 实际执行,Shell 输出 `C:\Program Files`,两者经 `realpath` 核对为同一目录。
|
|
25
|
+
两项 cwd 测试改为比较实际目录身份,仍然要求命令在目标目录执行,生产 Shell 实现不因这个测试误判而变更。
|
|
26
|
+
|
|
27
|
+
补充范围 `8223bad...c567534` 的独立 Standards 与 Spec 复审均通过,新增确认问题均为 0。
|
|
28
|
+
合入后的真实 npm 归档为 9,806,640 字节、285 个生产包;完整本地验收 489 项:487 通过、0 失败、2 跳过,186.3 秒。
|
|
29
|
+
|
|
30
|
+
正式 0.5.2 已包含本修正:[发布流程](https://github.com/yanglaofish/Fishtools/actions/runs/38361266757)成功,两平台各 488/489 通过(1 项平台专用跳过)、零失败,便携包与断网容器通过。
|
|
31
|
+
npm `latest` 为 0.5.2,独立下载公开包与注册表、Release 的校验值一致;tag 固定于 `fdb62c1`。
|
|
32
|
+
|
|
33
|
+
## 0.5.3 补丁:安装版本与准确提示
|
|
34
|
+
|
|
35
|
+
固定基线 `46a897450e122054dcfab882de5be061b311570f`,分支 `codex/issue-4-node-compat`。
|
|
36
|
+
用户授权“现在就改吧,改完就发,这算是小补丁”,随后要求同步审查整个 TUI 是否过度提醒,只显示准确的信息。
|
|
37
|
+
|
|
38
|
+
### 新评论与核对结果
|
|
39
|
+
|
|
40
|
+
- [6141074515](https://github.com/yanglaofish/Fishtools/issues/4#issuecomment-6141074515):Node 24.11.1 安装 0.5.2 出现多条 `EBADENGINE`。日志最终显示安装成功;根包和实际捆绑的 npm 工具链均有更高的 Node 下限,不能只降低根包声明或隐藏警告。
|
|
41
|
+
- [6141125892](https://github.com/yanglaofish/Fishtools/issues/4#issuecomment-6141125892):没有修改时不应提示未保存修改或草稿;删除时由用户决定是否备份。
|
|
42
|
+
- [6141135420](https://github.com/yanglaofish/Fishtools/issues/4#issuecomment-6141135420):通过 GitHub 已授权的附件地址实际读取截图,确认已保存工作流仍显示包含未保存修改、保留草稿和预定备份。上方 0.5.2 历史记录中的图片 404 对应较早评论,不代表这次截图未读取。
|
|
43
|
+
|
|
44
|
+
### 采纳范围
|
|
45
|
+
|
|
46
|
+
1. 支持 Node `^22.22.2 || >=24.0.0`,选择实际兼容且有维护版本的生产依赖;测试 22.22.2、24.0.0 和 24.11.1 的严格离线安装与实际执行。便携包固定运行时不变。
|
|
47
|
+
2. 工作流提示与当前草稿相对已保存快照的差异一致;仅查看、原样完成和还原修改不制造草稿。新建未保存流程仍准确提示草稿。
|
|
48
|
+
3. 删除已保存工作流时提供取消、备份后删除、直接删除;默认取消。备份保存已保存文件原文;明确说明未保存修改会放弃。无文件的草稿只丢弃或取消。
|
|
49
|
+
4. 原样完成插件配置、日志保留、代理规则/配置、命令注册与快捷名称编辑不写配置、不备份、不重启;真正修改仍执行原有保护与维护确认。
|
|
50
|
+
5. TUI 其他提醒根据实际状态或影响显示:默认值须有声明、取消入口须仍在运行、失效引用须真实存在、打包保存提示须与所选流程闭包相关。保留实际权限不足、维护重启、受引用插件移除、运行错误与日志写入失败的提醒。
|
|
51
|
+
6. 保持现有工作流、SDK 和默认 API 备份行为;此次为 0.5.3 补丁,完成双轴代码审查及验证后推送、发布。
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Issue #5:插件范围、生成文件与执行记录
|
|
2
|
+
|
|
3
|
+
来源:[发现严重缺陷](https://github.com/yanglaofish/Fishtools/issues/5)。已读取正文、完整评论列表(当前无评论)以及私有附件截图;截图确实显示 `environment-report.md/json` 保存到工作区 `.flow/runs/运行ID/`。
|
|
4
|
+
|
|
5
|
+
## 事实与修改范围
|
|
6
|
+
|
|
7
|
+
- 用户确认普通安装应全局可用。CLI/TUI 默认安装和链接到用户级插件库,普通工作区自动读取同一份插件版本。工作流、插件参数、代理规则和运行状态仍由各工作区保存。
|
|
8
|
+
- 已有工作区安装兼容读取;同名全局插件优先。全局卸载后不自动复活旧工作区同名版本。未配置的全局插件显示“待配置”,不能阻止无关工作区启动。卸载检查已登记工作区的工作流引用,原插件状态保留恢复备份,活动安装批次由租约保护。
|
|
9
|
+
- 离线分发包继续使用包内代码快照及其可写工作区,不读取机器上的全局插件库。程序调用 `createApplication` 可通过 `pluginRegistryDir` 接入共享库;未传时保留原有工作区安装兼容行为。
|
|
10
|
+
- 插件 `ctx.outputDir` 与日志目录相同是实际问题。新增真实插件探针保存 `result.json` 时,业务文件会被内核的同名记录覆盖;这构成数据覆盖风险。
|
|
11
|
+
- 新运行的业务文件改为工作区 `results/运行ID/`,每次运行独立;日志继续在 `.flow/runs/运行ID/`。显式 `--output` 或 `FLOW_OUTPUT_DIR` 的日志路径保持兼容,业务文件放到其 `files/运行ID/`。只读运行包使用可写输出目录。
|
|
12
|
+
- `ctx.outputDir` 继续表示可写业务输出目录,新增 `ctx.logDir` 明确日志路径;`app.outputDir` 继续指向日志根,`app.resultsDir` 表示业务结果根。插件仍须通过返回值或 `print()` 报告文件路径。
|
|
13
|
+
- 不移动、覆盖或删除历史目录与业务文件;日志保留策略继续只清理日志,不清理新业务结果。只移除本次创建且保持为空的结果目录。
|
|
14
|
+
- 暂无重复运行记录的证据:真实工作流内嵌子工作流和插件动作仍只生成一条顶层记录。原列表混列不同入口且没有会话标识,确实难以区分。
|
|
15
|
+
- 新记录保留执行类型、名称与应用启动会话。TUI 标明四类入口及本次/历史启动,支持筛选本次启动、工作流、插件调用或系统命令;默认显示最近 20 条,可继续加载。旧记录可读,按旧目标标识推断类型,不推断未知会话。
|
|
16
|
+
|
|
17
|
+
## 验证
|
|
18
|
+
|
|
19
|
+
先补失败探针,确认业务文件与日志隔离、同名文件不覆盖、日志清理保留结果、空目录回收、嵌套调用不重复记录、类型与会话在重启后持久可读、TUI 筛选准确。
|
|
20
|
+
修改后覆盖原有日志写入失败注入、实时落盘、保留策略与 TUI 会话回归。日志故障注入明确操作 `logDir`,不再通过业务输出同名文件模拟故障。
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# 系统命令、常用命令与快捷名称
|
|
2
|
+
|
|
3
|
+
## 临时执行命令
|
|
4
|
+
|
|
5
|
+
在 TUI 主输入框输入 `!` 后接完整命令,例如 `!echo hello`。运行结果留在主面板,`/logs` 可查看完整日志及取消运行。命令使用当前工作区目录、当前用户权限和工作区默认代理规则。默认 30 秒超时;长任务可注册为常用命令后调整超时时间。
|
|
6
|
+
|
|
7
|
+
Windows 默认使用 Windows PowerShell,Linux 默认使用 sh。命令按照所选 Shell 的语法解释;管道、引号、重定向和换行保持原样。此入口适合无需交互输入的命令,暂不接管需要 stdin 或全屏界面的程序。
|
|
8
|
+
|
|
9
|
+
Windows 自动模式下,简单单行 `!ipconfig`、`!ipconfig /all` 使用系统程序及其 OEM 编码,中文输出可以直接在主面板阅读,不改变主终端编码。含管道、展开或重定向的复杂脚本继续按 PowerShell 语法执行;其他程序仍保留 UTF-8 输出,不能把整个混合脚本统一按 GBK 解释。当前自动适配支持系统代码页 866、874、932、936、949、950、65001,其他代码页沿用原 Shell。
|
|
10
|
+
|
|
11
|
+
## 多行编辑
|
|
12
|
+
|
|
13
|
+
| 按键 | 行为 |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| Shift+Enter | 插入换行 |
|
|
16
|
+
| Alt+Enter | 插入换行,作为终端兼容备用 |
|
|
17
|
+
| Enter | 提交全部内容;补全菜单打开时先确认补全 |
|
|
18
|
+
| Ctrl+C / Esc | 取消当前编辑 |
|
|
19
|
+
|
|
20
|
+
以上规则适用于主输入框和常用命令文本编辑框。长行会按窗口宽度显示,粘贴多行时保留换行、缩进和制表符。末尾反斜杠也不会改变 Enter 的提交行为。部分终端把 Shift+Enter 编码成普通 Enter,应用无法识别,此时改用 Alt+Enter。
|
|
21
|
+
|
|
22
|
+
例如 Linux 下可输入以下内容,使用 Shift+Enter 换行,完成后按 Enter:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
!curl 'https://example.com' \
|
|
26
|
+
-H 'Accept: application/json' \
|
|
27
|
+
--max-time 10
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Windows PowerShell 请使用其续行符反引号或括号语法,也可粘贴完整的多行脚本。
|
|
31
|
+
|
|
32
|
+
## 注册常用命令
|
|
33
|
+
|
|
34
|
+
输入 `/commands` → **注册常用命令**,填写名称和命令文本,选择保存即可。名称合法时自动建立同名快捷入口。例如 Linux 中注册“查看本机IP”,文本填 `ifconfig`,以后输入 `/查看本机IP` 就能运行。目标机器需已经安装 `ifconfig`;也可注册机器实际具备的 `ip address` 或 Windows `ipconfig`。
|
|
35
|
+
|
|
36
|
+
编辑已有命令或快捷名称后,内容没有变化时直接返回,不创建备份、不重启插件;已有命令未设置快捷名称时也不会自动补上。只在新注册命令时按合法名称建立默认快捷入口。
|
|
37
|
+
|
|
38
|
+
高级设置可选择 Shell、超时时间、参数及 Linux root 权限要求。超时时间为秒,`0` 表示不限时。root 需求会在执行前检查,工具不会自动提权。修改命令仍保留原有动作 ID,已保存工作流继续引用它;被工作流使用的命令不能直接删除,需先调整引用。
|
|
39
|
+
|
|
40
|
+
不填写参数时无需编写输入 schema,也不会弹出空 JSON 输入框。需要参数时添加简单字段(文本、数字、是/否,可设置默认值及必填),脚本通过环境变量读取:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
# Linux sh/bash,参数名为 name
|
|
44
|
+
printf '%s\n' "$FST_INPUT_name"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```powershell
|
|
48
|
+
# PowerShell,参数名为 name
|
|
49
|
+
Write-Output $env:FST_INPUT_name
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
字段值不会拼入脚本源码;引用环境变量仍应遵循 Shell 的引号规则。通用命令输出包含 `exitCode`、`stdout`、`stderr`、`outputBytes`、`outputTruncated`,可以通过工作流表单传给后续步骤。stdout/stderr 各保留最多 64 KiB 的尾部摘要,完整输出持续落盘;非零退出使动作失败。如果需要把文本解析成业务字段,例如 IP 地址数组,应由业务插件实现。
|
|
53
|
+
|
|
54
|
+
## 给已有插件设置快捷名称
|
|
55
|
+
|
|
56
|
+
输入 `/shortcuts` → **添加快捷名称**,填写中文或英文名称,从已加载的任意动作或插件命令中选择目标。可设置默认参数;参数尚未填写完整时,运行会打开原能力的输入表单。
|
|
57
|
+
|
|
58
|
+
快捷名出现在 `/` 补全中。名称允许 Unicode 字母开头,后续可包含字母、数字、下划线、点和短横线;不能包含空格、斜杠、控制字符,也不能与内置入口或插件原始命令重名。npm 包名及动作 ID 继续使用稳定标识,快捷名称可以随时改。
|
|
59
|
+
|
|
60
|
+
卸载目标插件或删除注册动作后,相关快捷名标为失效,显示原因;不会误执行其他插件的同名能力。同一插件升级可以继续使用。删除快捷名只删除这个入口,插件和工作流不受影响。权限预检及动作级代理继续按原能力的规则执行。
|
|
61
|
+
|
|
62
|
+
## 保存与离线使用
|
|
63
|
+
|
|
64
|
+
常用命令和快捷名称保存在 `flow.project.json` 的 `commandPresets`、`shortcuts` 字段。修改前原文件备份到 `.flow/backups/`,同一字段被其他实例改动时拒绝覆盖并提示重新打开工作区。
|
|
65
|
+
|
|
66
|
+
`/logs` 中每次顶层执行只有一条记录,标明工作流、插件动作、插件命令或系统命令,可筛选本次启动的执行或某类调用。条件、并行和子工作流的内部步骤放在同一条运行记录里;菜单浏览及本次 TUI 命令历史不会产生持久化运行记录。旧记录继续可读,没有会话标识的旧记录不冒充本次启动。
|
|
67
|
+
|
|
68
|
+
输入与反馈另外保存为 TUI 会话:`/history` 可恢复并继续,或分页阅读完整交互;不会重跑历史指令。工作区内 `.flow/sessions/` 保存快照与追加日志,只读包保存到可写日志目录下。恢复近期面板和命令历史,较大结果和完整指令执行过程从 `/logs` 读取;在详情中按 m 格式化阅读,j 查看原始诊断。
|
|
69
|
+
|
|
70
|
+
命令快捷项由界面同时保存 `command` 与目标 `plugin` 标识,以免同名能力接管入口;填写参数和确认权限后,执行前再次核对提供者身份。配置 API 可为新建或改变目标的快捷名补齐当前提供者;手工导入却未提供 `plugin` 的旧项需重新选择目标,修改名称、默认参数或保存其他设置都不会顺带启用它。保存或复制工作流草稿时也会核对最新注册项,避免另一实例删除命令后保存悬空引用。
|
|
71
|
+
|
|
72
|
+
导出选定工作流时携带其使用的命令定义和相关快捷名称;便携工作台携带全部注册能力。导出后的可编辑工作区可修改并再次导出;只读运行包可以执行,不能修改。外部程序和 Shell 需由目标机器提供,不会因为注册命令就把它们包含在包内。
|
|
@@ -1,5 +1,54 @@
|
|
|
1
1
|
# 验收记录
|
|
2
2
|
|
|
3
|
+
## 0.5.3 全局插件、结果保护与准确提示(2026-10-13)
|
|
4
|
+
|
|
5
|
+
- 分支 `codex/issue-4-node-compat`,固定基线 `46a897450e122054dcfab882de5be061b311570f`;读取 issue #4 正文、评论及截图和 issue #5 正文及截图,采用用户确认的普通插件全局安装范围。
|
|
6
|
+
- 实际复现业务 `result.json` 被内核记录覆盖,新增独立 `results/运行ID/`,日志保留只作用于日志;类型、名称及启动会话随执行记录保存,嵌套调用仍只生成一条顶层记录。历史业务文件没有移动或删除。
|
|
7
|
+
- 全局安装和开发链接在多个工作区共享,参数仍由工作区保存;配置缺失只影响对应插件及其消费者。测试覆盖并发状态、跨工作区引用、待配置启用、全局开发监听和离线分发隔离。
|
|
8
|
+
- TUI 全面核对工作流脏状态、备份删除、无实际修改的配置保存、默认值、完成任务取消入口及草稿打包提示。只保留与实际状态相符的提醒。
|
|
9
|
+
- Standards / Spec 两轴独立审查共确认 3 个不同问题,均补失败探针后修正:活动旧安装目录的租约、跨工作区本地消费者的间接依赖、被全局覆盖或屏蔽的旧源码导入。额外自检统一待配置项静态校验;相关回归 **71/71** 通过,详见[审查记录](superpowers/reviews/2026-10-13-0.5.3-review.md)。
|
|
10
|
+
- 全局插件阶段 `npm run dist:npm` 成功,本地归档 **9,825,324 字节、284 个生产包**。Windows/Node 24.15.0 完整测试 **536 项:534 通过、0 失败、2 跳过**,201.7 秒,使用该阶段归档验证离线安装、脱离源码运行及再次导出。
|
|
11
|
+
- Node 22.12.0 的 Windows 再导出试验多次出现原生进程崩溃,没有确认其底层原因;22.22.2 与 24.11.1 的同一测试通过。产品声明为 `^22.22.2 || >=24.0.0`,便携版仍固定使用经过 SHA 校验的 Node 24.15.0。
|
|
12
|
+
- 验收脚本适配 npm 11.19.1 发布预演按包名返回的 JSON;实际安装仍使用 `--engine-strict`,不放宽不兼容依赖检查。完整兼容验收与正式发布结果完成后追加。
|
|
13
|
+
- 后续合入用户要求的可读步骤、指令追踪、结果渲染、面板计时、完整会话恢复、TUI 内平台提示和 Windows 中文 ipconfig。独立 Standards / Spec 复核均无剩余发布阻塞问题,详见[增量审查记录](superpowers/reviews/2026-10-13-tui-sessions-review.md)。
|
|
14
|
+
- 实际 TUI 处理路径执行 `!ipconfig` 与 `!ipconfig /all` 均显示中文,替换字符 0 个,stdout 流与同次返回正文一致。日志收尾失败、历史磁盘优先及关闭页面内存回收均经历失败复现再修复;最终相关回归 Node 24.15.0 **27/27**、Node 22.22.2 **34/34**。
|
|
15
|
+
- 可读会话阶段完整回归 **576 项:574 通过、0 失败、2 跳过**,185.4 秒;后续历史优先及 GC 专项修正通过上述定向回归。正式发布从最终提交重建同一归档,在支持的平台和 Node 版本执行完整验收后才上传 npm。
|
|
16
|
+
- 首次正式发布验收的 Windows / Node 24.0 出现日志文件身份误判,调查发现官方源码中路径和句柄查询的卷编号宽度不同;其余 7 组完整兼容验收及双平台便携包通过,发布步骤跳过,npm 0.5.3 尚未上传。修复保持完整 BigInt 文件 ID,并统一 Windows 卷编号低 32 位;两轴独立复核均无阻塞。本地相关用例在 24.0 与 24.15 各 41 通过、1 跳过,正式原平台复跑待完成。
|
|
17
|
+
- Linux 停止进程的测试探针遇到进程已退出但 `/proc` 读取返回 ESRCH 的竞争窗口;将 ESRCH 与 ENOENT 同样视为已退出,其余错误继续传播,存活及心跳业务断言保留。[四组主分支 CI](https://github.com/yanglaofish/Fishtools/actions/runs/38393256411) 已全部通过。
|
|
18
|
+
- Windows / Node 24.0 后续本地完整回归 580 项:577 通过、1 失败、2 跳过;唯一失败为有效打包缓存仍被截断重写导致并发读到半成品。增加失败断言后修复为缓存命中只读、冷缓存先校验再原子替换,Node 24.0 定向 7/7 通过。最终完整验收及发布结果完成后追加,不把该次失败记录当作通过证据。
|
|
19
|
+
- Windows 并发原子替换的 EPERM 经独立探针复现并修正,仅接受目标完整内容完全相同的胜出缓存,真实替换错误仍传播。最终缓存回归 Node 24.0 与 24.15 各 4/4 通过。
|
|
20
|
+
- 缓存及文件身份修复后的最终本地 Node 24.0 完整回归 **584 项:582 通过、0 失败、2 跳过**,214.9 秒。`dist:npm` 生成 **9,855,545 字节、284 个生产包**的本地归档,完整测试使用该归档执行离线安装与再次导出;最终文档归档后正式发布流程会从 tag 重新生成并对同一发行归档执行完整矩阵。
|
|
21
|
+
- [第二次正式验收](https://github.com/yanglaofish/Fishtools/actions/runs/38397457051)中,其余 6 组兼容验收与双平台便携包通过,发布步骤仍跳过。Windows / Node 24.0 的真实诊断为路径设备编号 `0`、句柄设备编号 `742408122`,完整文件 ID 同为 `7036874418249441`;因此此前卷编号宽度推断不足以解释此平台失败。新增第二个只读路径句柄,严格比较两个句柄的完整 BigInt 身份,并重新检查路径仍为普通非链接文件;不把未知编号 `0` 当成通配符,原归属及读取预算继续生效。
|
|
22
|
+
- 同次 Windows / Node 24.11.1 唯一失败为 Web 测试过早断言仍运行中的任务。只把约 600 毫秒的固定轮询改为 10 秒内等待真实结束;成功状态、输出、鉴权和路由断言保留。
|
|
23
|
+
- 上述增量包含真实路径替换拒绝和链接拒绝探针。Windows 本地 Node 24.0、24.11.1、24.15.0 各执行同一组定向回归 **54 项:52 通过、0 失败、2 项文件链接权限跳过**。新增 Windows 24.0/24.11 定向 CI,保留原全量矩阵,真实失败文件系统及最终发行归档复验待完成。
|
|
24
|
+
- 新增定向 CI 首次提交因 job 级 `env` 无法使用 `runner.temp` 而未启动测试;按 GitHub 官方上下文范围把隔离目录变量移至测试步骤级,不改变测试内容和原全量门禁,重新执行远端验收。
|
|
25
|
+
|
|
26
|
+
## 0.5.2 命令注册与快捷名称(2026-10-13)
|
|
27
|
+
|
|
28
|
+
- 分支 `codex/0.5.2-command-shortcuts`,固定基线 `68a84cd`;按用户指定目标集中实现 `!` 系统命令、`/commands` 注册动作、`/shortcuts` 任意动作或命令的中文快捷名称与默认参数。
|
|
29
|
+
主输入框和命令编辑框均为 **Shift+Enter 换行、Enter 提交**,Alt+Enter 兼容备用,粘贴保留多行、缩进和引号。
|
|
30
|
+
- 独立 Standards / Spec 审查分别确认 3 项(最高 P1)与 3 项(最高 P2),均已修正。
|
|
31
|
+
最终生产代码 `30d7472`、探针与记录补充 `7fa6178` 两次独立复审均通过;详见[审查记录](superpowers/reviews/2026-10-13-command-shortcuts-review.md)。
|
|
32
|
+
- 修正真实 Windows 长脚本参数限制、命令名称冲突漏查、快捷目标身份变化、跨实例过期工作流草稿,以及整组保存自动启用旧别名的问题。
|
|
33
|
+
全量测试还复现并修正输出超限时管道提前关闭留下后代进程的问题;原心跳断言与新增七种进程树停止探针均通过。
|
|
34
|
+
后续一次单字节文件大小变化未在 164 次诊断中复现,保留事实,不认定原因;最终同时检查进程状态和实际内容。
|
|
35
|
+
- `npm run dist:npm` 成功,本地归档 9,804,373 字节、285 个生产包。
|
|
36
|
+
指定该归档后完整 `npm test` **489 项:487 通过、0 失败、2 跳过**,175.1 秒;包含离线全局安装、脱离源码运行和再次导出。
|
|
37
|
+
本机 Windows/Node 24.15.0;POSIX 保存失败注入与未开放权限的文件 symlink 跳过,目录 junction 回归执行。
|
|
38
|
+
- [首次正式验收](https://github.com/yanglaofish/Fishtools/actions/runs/38358232278):Ubuntu **488 通过、0 失败、1 跳过**,便携包及断网只读容器通过;Windows **486 通过、2 失败、1 跳过**。
|
|
39
|
+
两项失败均为 Shell 展开 `RUNNER~1` 短路径后与测试字面路径不等,真实 `C:\PROGRA~1` 诊断复现并核对为同一目录。修正测试为 `realpath` 的目录身份比较,生产执行目录行为未变。
|
|
40
|
+
发布任务被跳过,npm 0.5.2 与 GitHub Release 尚不存在。用户明确要求同时合入 [issue #4](superpowers/specs/2026-10-13-issue-4-workflow-menu.md) 的复制入口修正:列表每个工作流只出现一次,进入管理页后复制;相关专项 **26/26** 通过。
|
|
41
|
+
合入后本地重建归档 **9,806,640 字节、285 个生产包**,指定该归档完整 `npm test` **489 项:487 通过、0 失败、2 跳过**,186.3 秒。
|
|
42
|
+
补充范围 `8223bad...c567534` 的独立 Standards / Spec 复审均通过,新增确认问题均为 0。
|
|
43
|
+
最终双平台验收重新执行,完成后核对正式发布产物;待发布 tag 更新前检查旧对象和未发布状态,不覆盖已发布版本。
|
|
44
|
+
- 合入后的 [正式发布流程](https://github.com/yanglaofish/Fishtools/actions/runs/38361266757)全部成功;同一 npm 归档在 Windows 和 Ubuntu 均为 **489 项:488 通过、0 失败、1 项平台专用跳过**。
|
|
45
|
+
两平台自包含包、无 Node 的断网只读 Debian 容器通过;[主分支 CI](https://github.com/yanglaofish/Fishtools/actions/runs/38361020862)两平台也通过。
|
|
46
|
+
最终发布 tag 固定于 `fdb62c1367fe80d985d3292a5fe92f4e88dbb813`;之后的验收记录不改变发行产物。
|
|
47
|
+
- npm 官方注册表 `latest` 为 **0.5.2**;独立下载公开 tarball 为 **9,806,832 字节**,SHA-512 与注册表 integrity 一致,
|
|
48
|
+
SHA-256 `e48954b03a455bcc9997b2b6075b1c4a8a29e343c2eb1af342e8ca51cf0d649c` 与 [Release](https://github.com/yanglaofish/Fishtools/releases/tag/v0.5.2) 的 `SHA256SUMS` 一致。
|
|
49
|
+
- Release 已公开于仓库访问范围,含 npm、Windows(52,523,594 字节)、Linux(58,075,911 字节)归档及校验文件。
|
|
50
|
+
issue #4 修正与 Shift+Enter / Enter 按键说明进入同一 0.5.2;没有另发版本或覆盖已发布包。
|
|
51
|
+
|
|
3
52
|
## 0.5.1 全代际复核修正(2026-10-13)
|
|
4
53
|
|
|
5
54
|
- 分支 `codex/review-0.5.0-followup`,以 0.4.0 `f529244` 至 0.5.0 后验收提交 `d26a0ee` 为固定范围执行独立 Standards / Spec 审查。
|
|
@@ -9,7 +58,13 @@
|
|
|
9
58
|
实际子进程验证三种代理模式、正常/失败清理恢复与 Linux 普通用户嵌套 stop 的执行边界。
|
|
10
59
|
- `npm run dist:npm` 成功,0.5.1 本地归档 9,757,761 字节、284 个生产包;用该归档执行完整 `npm test` **382 项:381 通过、0 失败、1 跳过**,166.0 秒。
|
|
11
60
|
包括离线全局安装、脱离源码运行与再次导出。Windows 文件 symlink 权限导致一项跳过,目录 junction 回归执行。
|
|
12
|
-
- 产品和 CLI 同步为 0.5.1,保持工作流与内部插件 API
|
|
61
|
+
- 产品和 CLI 同步为 0.5.1,保持工作流与内部插件 API 格式兼容。发布 tag 固定于 `1fff499`,后续验收记录不改变发行产物。
|
|
62
|
+
- [正式发布流程](https://github.com/yanglaofish/Fishtools/actions/runs/38329427621)全部成功:同一 npm 归档在 Windows **382/382**、Ubuntu **381/382(1 项 Windows 专用跳过)**通过,零失败。
|
|
63
|
+
两平台自包含包、无 Node 的断网只读 Debian 容器检查通过;[普通主分支 CI](https://github.com/yanglaofish/Fishtools/actions/runs/38329413252)也成功。
|
|
64
|
+
- npm 官方注册表 `latest` 已为 **0.5.1**,独立下载公开 tarball 验证:9,757,768 字节,SHA-512 与注册表 integrity 一致,
|
|
65
|
+
SHA-256 `ca1463a00a8227abe6a71c0f0627f2e881902703f8a3c9bc7267ce49ea6691a9` 与 Release 的 `SHA256SUMS` 一致。
|
|
66
|
+
- [GitHub Release](https://github.com/yanglaofish/Fishtools/releases/tag/v0.5.1)已公开于仓库访问范围,包含 npm、Windows(52,457,324 字节)、Linux(58,024,913 字节)归档及校验文件。
|
|
67
|
+
发布说明补齐本轮修正及审查记录链接;发布任务首次运行即成功,没有重复上传或改动已发布版本。
|
|
13
68
|
|
|
14
69
|
## 0.5.0 发布前验证(2026-10-13)
|
|
15
70
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
组合各能力模块、协调运行与关闭、提供 CLI/Web 共用应用接口及导出声明快照。日志写入和缓存由 logs 负责;导出实现通过可选 pack 依赖加载。
|
|
8
8
|
|
|
9
|
-
内部依赖:`@mytools/sdk`、`@mytools/fst-platform`、`@mytools/fst-logs`、`@mytools/fst-workflow`、`@mytools/fst-plugin`、`@mytools/fst-workspace`、`@mytools/pack`。
|
|
9
|
+
内部依赖:`@mytools/sdk`、`@mytools/fst-platform`、`@mytools/fst-logs`、`@mytools/fst-workflow`、`@mytools/fst-plugin`、`@mytools/fst-workspace`、官方 `@mytools/commands`、`@mytools/pack`。
|
|
10
10
|
`@mytools/pack` 是可选 peer 依赖;普通发行包含它,只读发行省略它。既有 `/process`、`/bundle`、`/environments` 子入口保留兼容转发。
|
|
11
11
|
|
|
12
12
|
## 公开入口
|
|
@@ -25,6 +25,10 @@
|
|
|
25
25
|
|
|
26
26
|
## 维护与验证
|
|
27
27
|
|
|
28
|
+
`createApplication({projectDir,pluginRegistryDir})` 可让多个工作区读取同一插件库;CLI 默认接入用户级全局库,程序未传此选项时保留工作区模式。分发包始终使用自身工作区安装状态。`listPlugins()` 返回 scope/source 和待配置原因;`pluginDefinition(id)` 返回作者声明。`app.resultsDir` 是业务文件根,`app.outputDir` 保留为日志根;插件 `ctx.outputDir` 与 `ctx.logDir` 分别对应本次业务目录和日志目录。
|
|
29
|
+
|
|
30
|
+
`app.startShell(script,options)` 执行临时命令,`app.startAction(id,input,context)` 调用任意动作,两者均纳入运行记录与关闭等待。`startCommand(name,input,{expectedPlugin,...context})` 可固定命令提供者,启动时再次检查,防止参数填写期间被其他同名能力替换。`configureCommandPresets` 和 `configureShortcuts` 在备份、冲突检查与变更锁内保存项目设置;命令快捷项在用户明确设置时绑定提供者 ID,普通安装/卸载和未改变目标的整组保存不会重新绑定;已有未绑定项必须明确提供 plugin 或在界面重新选择目标。注册项变化通过定向宿主更新生效,导出快照保留所需定义与有效快捷项。
|
|
31
|
+
|
|
28
32
|
本模块负责上述职责的实现、文档与回归;跨模块接口调整需要同时检查生产者与消费者。具体维护人员尚未指定。
|
|
29
33
|
|
|
30
34
|
在仓库根目录执行:
|
|
@@ -19,9 +19,10 @@
|
|
|
19
19
|
],
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"engines": {
|
|
22
|
-
"node": ">=24.
|
|
22
|
+
"node": "^22.22.2 || >=24.0.0"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"@mytools/commands": "0.1.0",
|
|
25
26
|
"@mytools/sdk": "0.1.0",
|
|
26
27
|
"@mytools/fst-platform": "0.1.0",
|
|
27
28
|
"@mytools/fst-logs": "0.1.0",
|