@yanglaofish/fishtools 0.5.2 → 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 +23 -11
- package/manual/README.md +23 -11
- package/manual/docs/deployment.md +3 -3
- package/manual/docs/examples/action-plugin/package.json +1 -1
- package/manual/docs/plugin-development.md +15 -4
- package/manual/docs/releases.md +24 -0
- package/manual/docs/superpowers/plans/2026-10-13-command-shortcuts.md +3 -2
- 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.3-review.md +28 -0
- package/manual/docs/superpowers/reviews/2026-10-13-command-shortcuts-review.md +7 -0
- package/manual/docs/superpowers/reviews/2026-10-13-tui-sessions-review.md +55 -0
- package/manual/docs/superpowers/specs/2026-10-13-issue-4-workflow-menu.md +23 -0
- package/manual/docs/superpowers/specs/2026-10-13-issue-5-results-and-history.md +20 -0
- package/manual/docs/terminal-commands.md +8 -0
- package/manual/docs/verification.md +30 -0
- package/manual/packages/core/README.md +2 -0
- package/manual/packages/core/package.json +1 -1
- package/manual/packages/core/src/application.js +100 -51
- 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/plugin-catalog.js +42 -0
- package/manual/packages/core/src/version.js +1 -1
- package/manual/packages/fst-cli/README.md +4 -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 +8 -3
- package/manual/packages/fst-cli/src/terminal/navigation.js +2 -0
- 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 +119 -40
- package/manual/packages/fst-cli/src/terminal/view.js +31 -8
- package/manual/packages/fst-cli/src/terminal/workflow-menu.js +14 -9
- package/manual/packages/fst-devtools/package.json +2 -2
- 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 +4 -0
- package/manual/packages/fst-platform/package.json +3 -3
- package/manual/packages/fst-platform/src/process.js +4 -1
- package/manual/packages/fst-platform/src/shell.js +46 -1
- package/manual/packages/fst-plugin/package.json +1 -1
- 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 +2 -0
- package/manual/packages/fst-workspace/package.json +2 -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/workflows.js +5 -3
- 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/package.json +1 -1
- package/node_modules/@mytools/commands/package.json +1 -1
- package/node_modules/@mytools/core/README.md +2 -0
- package/node_modules/@mytools/core/package.json +1 -1
- package/node_modules/@mytools/core/src/application.js +100 -51
- 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/plugin-catalog.js +42 -0
- package/node_modules/@mytools/core/src/version.js +1 -1
- package/node_modules/@mytools/fst-cli/README.md +4 -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 +8 -3
- package/node_modules/@mytools/fst-cli/src/terminal/navigation.js +2 -0
- 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 +119 -40
- package/node_modules/@mytools/fst-cli/src/terminal/view.js +31 -8
- package/node_modules/@mytools/fst-cli/src/terminal/workflow-menu.js +14 -9
- package/node_modules/@mytools/fst-devtools/package.json +2 -2
- 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 +4 -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 +3 -3
- package/node_modules/@mytools/fst-platform/src/process.js +4 -1
- package/node_modules/@mytools/fst-platform/src/shell.js +46 -1
- package/node_modules/@mytools/fst-plugin/package.json +1 -1
- 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 +2 -0
- package/node_modules/@mytools/fst-workspace/package.json +2 -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/workflows.js +5 -3
- 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 +953 -963
- 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 +56 -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
package/README.md
CHANGED
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
|
|
7
7
|
交互终端支持选择能力、配置参数和流程编排;官方 Web 插件默认提供,原子 CLI 子命令用于自动化。三种入口共用应用服务。YAML、依赖锁和版本解析由系统维护,不要求普通用户手写。
|
|
8
8
|
|
|
9
|
-
0.5.
|
|
9
|
+
0.5.3 修正 Node 安装兼容性与 TUI 状态提示:未修改时不产生草稿、配置备份或插件重启;删除工作流时明确选择备份后删除、直接删除或取消。`!` 系统命令透传、常用命令注册、中文快捷名称和 Shift+Enter 多行输入继续可用。发布与验证状态见 [版本记录](manual/docs/releases.md) 和 [验收记录](manual/docs/verification.md)。
|
|
10
10
|
|
|
11
11
|
插件接入层使用 JavaScript/TypeScript,通过通用进程接口调用 Python 脚本和系统命令。首款官方插件负责 Python/pip、NPU 与系统环境检查,使用与第三方插件相同的公开接口,按工作流依赖选入分发包。插件声明 Python 等环境使用宿主机还是自带资源;环境检查与业务兼容性由插件作者负责。包内始终携带编排器所需的 Node,完整便携包也携带 npm。
|
|
12
12
|
|
|
13
13
|
## npm 安装与启动(Windows / Linux)
|
|
14
14
|
|
|
15
|
-
安装端需要 Node.js 24.
|
|
15
|
+
安装端需要 Node.js **22.22.2+(22 系列)或 24.0.0+**,以及 npm。已发布版本可从 npm 安装:
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
18
|
npm install -g @yanglaofish/fishtools
|
|
19
19
|
fst
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
也可从 GitHub Release 下载当前版本的 `.tgz` 后执行 `npm install -g ./yanglaofish-fishtools-0.5.
|
|
22
|
+
也可从 GitHub Release 下载当前版本的 `.tgz` 后执行 `npm install -g ./yanglaofish-fishtools-0.5.3.tgz`。没有 Node/npm 的机器使用 Release 中的 Windows `.zip` 或 Linux `.tar.gz` 自包含包,解压后运行 `fst.cmd` 或 `./fst`。发布结果以 [GitHub Releases](https://github.com/yanglaofish/Fishtools/releases) 为准;当前仓库为私有,下载附件需要仓库访问权限。
|
|
23
23
|
|
|
24
24
|
`fst` 在交互终端里启动终端工作台(TUI);`fst web` 启动 Web 并打印访问地址;`fst run hello` 直接执行工作流。首次使用在 `~/.fishtools` 创建工作区,也可通过 `FISHTOOLS_HOME` 指定。安装包已包含官方插件、页面和生产依赖,不需要源码仓库或前端构建。
|
|
25
25
|
|
|
@@ -45,13 +45,21 @@ fst --project ./my-project pack hello --target linux-x64-glibc --web
|
|
|
45
45
|
|
|
46
46
|
首页展示 FISHtools 字符标识、欢迎介绍、当前工作区以及插件和工作流数量;小窗口自动使用紧凑标题。首次使用可以输入 `/run hello`,按提示输入文本(也可保留默认值),体验“转为大写 → 追加标记 → 保存文件”。运行过程与输入输出留在主面板,期间仍可打开配置或执行其他工作流。PgUp/PgDn 或鼠标滚轮浏览会话中的过程,向下翻至末尾恢复跟随。首页只推荐当前工作区实际存在的工作流;空工作区从 `/workflows` 新建。
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
顶部的“位置”显示主面板或当前操作入口,菜单标题显示正在操作的对象。提交的命令、反馈与运行结果自动保存在所属工作区;返回菜单不会清空执行过程。`/history` 可恢复旧会话并继续输入,也可分页查看完整交互记录;恢复不会重新执行旧命令或覆盖旧会话。若已有插件或快捷名使用 `history`,从 `/tools` → 历史会话进入。
|
|
49
49
|
|
|
50
50
|
主面板查看当前执行,`/logs` 回看某次执行的步骤状态、输入输出和日志,也能重新打开正在运行的任务详情。查看记录不会重新执行工作流。旧 `/runs` 和 F4 仅作为兼容方式转到同一个 `/logs` 入口,不再提供独立列表。
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
`/logs` 标明每次执行属于工作流、插件动作、插件命令或系统命令,以及本次或历史启动。可以按本次启动或调用类型筛选,先显示最近 20 条,再按需显示更多。一个工作流的子流程和内部步骤放在同一条记录中。
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
插件生成的业务文件放在工作区可见的 `results/运行ID/`,日志放在 `.flow/runs/运行ID/`;两者隔离,业务文件即使叫 `result.json` 也不会被内核运行记录覆盖。指定 `--output 目录` 时,该目录仍保存日志,业务文件在其 `files/运行ID/`。TUI 显示实际生成文件的目录,日志保留设置不会删除业务结果,历史文件仍在原位置。
|
|
55
|
+
|
|
56
|
+
普通 CLI/TUI 的 `plugin add` 与 `plugin link` 默认登记到用户级 `~/.fishtools/plugins`(设置 `FISHTOOLS_HOME` 时为其 `plugins` 子目录),安装一次,各工作区可用。各工作区单独保存工作流、插件参数和代理规则;未填写必填配置的插件显示“待配置”,其他插件仍可使用。旧工作区安装兼容读取,同名全局版本优先。全局卸载检查已登记工作区的工作流引用;其他已运行进程保留自己的代码,重启后读取新状态。离线分发包继续使用包内快照及自身可写工作区。
|
|
57
|
+
|
|
58
|
+
主面板默认按步骤显示“执行中/成功/失败”,每一步标明能力与插件,并在旁边提示 **Ctrl+O 查看详情**。展开后按插件字段标题显示输入输出;通过 `runProcess` 执行的程序会记录真实路径、逐项参数与执行目录,Shell 同时记录原始命令,插件文件目录按实际来源显示。内核无法观察插件绕过受管接口执行的任意代码或文件访问。错误摘要、系统命令输出与插件 `print()` 的用户提示直接展示,普通技术日志默认折叠。主面板和运行总览显示总耗时,运行中实时更新,结束后固定。平台声明不匹配也会直接在 TUI 中提示。
|
|
59
|
+
|
|
60
|
+
主输入框用 **↑ / ↓** 回看已提交的命令,向下回到底部恢复未提交草稿。补全菜单打开时,方向键仍选择候选;配置表单内容不进入命令历史。恢复会话同时恢复最近 100 条、合计不超过 256 KiB 的输入,相邻重复命令合并;更长和更早的输入仍在完整交互记录中。未提交草稿不保存。
|
|
61
|
+
|
|
62
|
+
会话保存在 `.flow/sessions/`;只读包使用可写日志目录的 `sessions/` 子目录。追加日志保存命令和反馈,快照保存有界近期面板,较大运行结果通过 `/logs` 读取原始记录;运行日志仍遵循用户设置的保留策略。会话使用本地 UTF-8 文件,首版不加密、不压缩,也不自动删除旧会话。
|
|
55
63
|
|
|
56
64
|
`/plugin` 直接列出当前已加载的插件名称、版本和状态。上下选择后可查看用途、编排能力、输入输出、环境声明及斜杠命令;有配置的插件提供配置入口,自行安装的插件提供移除入口。内置插件标明来源,避免误以为没有安装。`/help` 在终端内提供可翻页的用法说明。顶层补全标明 `[内置]` 或 `[插件]`,插件能力收进插件名入口的二级菜单。
|
|
57
65
|
|
|
@@ -60,13 +68,16 @@ fst --project ./my-project pack hello --target linux-x64-glibc --web
|
|
|
60
68
|
| `/workflows` | 浏览、新建;进入某个流程后添加/编辑步骤、设置输出、保存、运行或删除 |
|
|
61
69
|
| `/run 工作流ID` | 可按 ID 或中文标题补全,填写参数后执行已保存版本;只输入 `/run` 打开已保存工作流列表 |
|
|
62
70
|
| `/logs` | 回看执行记录,运行中的任务优先;可切换总览、输入输出与日志,支持键盘或鼠标滚轮阅读 |
|
|
71
|
+
| `/history` | 恢复旧 TUI 会话的输入、反馈和结果,或分页查看完整交互 |
|
|
63
72
|
| `/plugin` | 浏览已安装插件、用途及能力,进入插件配置、安装和移除操作 |
|
|
64
73
|
| `/pack` | 勾选工作流并选择目标平台打包 |
|
|
65
74
|
| `/config` | 配置 Fishtools:查看工作区信息,设置日志保留次数和代理规则 |
|
|
66
|
-
| `/tools` |
|
|
75
|
+
| `/tools` | 历史会话、启动 Web 或阅读离线资料 |
|
|
67
76
|
| `/help`、`/exit` | 查看帮助、退出 |
|
|
68
77
|
|
|
69
|
-
旧 `/new`、`/add`、`/steps`、`/outputs`、`/save`、`/plugins`、`/docs`、`/web` 和 `/runs`
|
|
78
|
+
旧 `/new`、`/add`、`/steps`、`/outputs`、`/save`、`/plugins`、`/docs`、`/web` 和 `/runs` 仍可直接输入,顶层补全主要呈现上表的对象入口。有实际未保存修改时,工作流编辑菜单返回会保留草稿,切换流程或退出会确认是否放弃。查看后原样完成、修改后还原为已保存值不会产生草稿提示。
|
|
79
|
+
|
|
80
|
+
删除时提供“备份后删除、直接删除、取消”,默认选择取消。备份后删除将已保存文件移入 `.flow/deleted-workflows/工作流ID-编号.yaml`;恢复时将备份复制回 `workflows/原工作流ID.yaml`,先确认同名文件不存在。直接删除不创建本次删除的备份;仍被其他流程引用时,两种删除方式都拒绝执行。
|
|
70
81
|
|
|
71
82
|
`/run` 不要求保存当前编辑草稿,也不会丢弃它。要运行尚未保存的修改,请在 `/workflows` 的编辑菜单选择“运行工作流”,再选择“保存并运行”;已有磁盘版本时也可选择“运行已保存版本”并保留草稿。“返回编辑”会留在当前工作流,不会反复弹出保存确认。只查看参数或拒绝删除步骤不会产生未保存修改。
|
|
72
83
|
|
|
@@ -107,10 +118,11 @@ outputs:
|
|
|
107
118
|
| `f` | 切换日志跟随 |
|
|
108
119
|
| Enter | 在总览中查看所选步骤详情,不退出面板 |
|
|
109
120
|
| `j` | 在易读字段与原始 JSON 诊断之间切换 |
|
|
121
|
+
| `m` | 单独格式化阅读输出;插件标注的 Markdown 结果按 Markdown 呈现 |
|
|
110
122
|
| Esc、q、Ctrl+C | 返回上一级,运行中的任务继续;输入 `/logs` 可重新打开 |
|
|
111
|
-
| `x`,再按 `y` |
|
|
123
|
+
| `x`,再按 `y` | 任务仍在运行时,确认取消整个运行 |
|
|
112
124
|
|
|
113
|
-
运行记录同时列出正在执行和保留的历史记录,运行中任务优先;同一个工作流的多次执行分别显示时间和记录编号。查看详情后返回列表,可以继续选择另一次执行。本次启动期间每次运行分别保存阅读位置;重启后可通过 `/logs`
|
|
125
|
+
运行记录同时列出正在执行和保留的历史记录,运行中任务优先;同一个工作流的多次执行分别显示时间和记录编号。查看详情后返回列表,可以继续选择另一次执行。本次启动期间每次运行分别保存阅读位置;重启后可通过 `/logs` 查看保存的运行,`/history` 恢复旧主面板。上次退出时仍在运行且缺少最终记录的任务会明确显示“未记录最终状态”。日志保留设置在 `/config`。主提示符 `/exit` 或 Ctrl+C 遇到后台任务时,会说明退出将取消任务并请求确认,默认不退出。
|
|
114
126
|
|
|
115
127
|
插件可以注册自己的命令:官方示例的 `/examples` 入口包含文本转大写与交互文本输入,`/environment` 入口包含环境检查与报告。原 `/text.upper`、`/text.ask`、`/env.check`、`/env.report` 仍可直接调用。`check` 在环境未通过时抛错;`report` 正常返回 `ok:false` 和检查明细,适合交给工作流条件判断。安装或移除插件会同步刷新 `/` 菜单;命令和工作流共用日志、取消和结果机制。
|
|
116
128
|
|
|
@@ -135,7 +147,7 @@ outputs:
|
|
|
135
147
|
|
|
136
148
|
### 常规源码启动
|
|
137
149
|
|
|
138
|
-
开发机器安装 **Node.js 24.
|
|
150
|
+
开发机器安装 **Node.js 22.22.2+(22 系列)或 24.0.0+** 和 npm,在仓库根目录执行;便携包自带的固定 Node 仍为 24.15.0:
|
|
139
151
|
|
|
140
152
|
```sh
|
|
141
153
|
npm ci
|
package/manual/README.md
CHANGED
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
|
|
7
7
|
交互终端支持选择能力、配置参数和流程编排;官方 Web 插件默认提供,原子 CLI 子命令用于自动化。三种入口共用应用服务。YAML、依赖锁和版本解析由系统维护,不要求普通用户手写。
|
|
8
8
|
|
|
9
|
-
0.5.
|
|
9
|
+
0.5.3 修正 Node 安装兼容性与 TUI 状态提示:未修改时不产生草稿、配置备份或插件重启;删除工作流时明确选择备份后删除、直接删除或取消。`!` 系统命令透传、常用命令注册、中文快捷名称和 Shift+Enter 多行输入继续可用。发布与验证状态见 [版本记录](docs/releases.md) 和 [验收记录](docs/verification.md)。
|
|
10
10
|
|
|
11
11
|
插件接入层使用 JavaScript/TypeScript,通过通用进程接口调用 Python 脚本和系统命令。首款官方插件负责 Python/pip、NPU 与系统环境检查,使用与第三方插件相同的公开接口,按工作流依赖选入分发包。插件声明 Python 等环境使用宿主机还是自带资源;环境检查与业务兼容性由插件作者负责。包内始终携带编排器所需的 Node,完整便携包也携带 npm。
|
|
12
12
|
|
|
13
13
|
## npm 安装与启动(Windows / Linux)
|
|
14
14
|
|
|
15
|
-
安装端需要 Node.js 24.
|
|
15
|
+
安装端需要 Node.js **22.22.2+(22 系列)或 24.0.0+**,以及 npm。已发布版本可从 npm 安装:
|
|
16
16
|
|
|
17
17
|
```sh
|
|
18
18
|
npm install -g @yanglaofish/fishtools
|
|
19
19
|
fst
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
也可从 GitHub Release 下载当前版本的 `.tgz` 后执行 `npm install -g ./yanglaofish-fishtools-0.5.
|
|
22
|
+
也可从 GitHub Release 下载当前版本的 `.tgz` 后执行 `npm install -g ./yanglaofish-fishtools-0.5.3.tgz`。没有 Node/npm 的机器使用 Release 中的 Windows `.zip` 或 Linux `.tar.gz` 自包含包,解压后运行 `fst.cmd` 或 `./fst`。发布结果以 [GitHub Releases](https://github.com/yanglaofish/Fishtools/releases) 为准;当前仓库为私有,下载附件需要仓库访问权限。
|
|
23
23
|
|
|
24
24
|
`fst` 在交互终端里启动终端工作台(TUI);`fst web` 启动 Web 并打印访问地址;`fst run hello` 直接执行工作流。首次使用在 `~/.fishtools` 创建工作区,也可通过 `FISHTOOLS_HOME` 指定。安装包已包含官方插件、页面和生产依赖,不需要源码仓库或前端构建。
|
|
25
25
|
|
|
@@ -45,13 +45,21 @@ fst --project ./my-project pack hello --target linux-x64-glibc --web
|
|
|
45
45
|
|
|
46
46
|
首页展示 FISHtools 字符标识、欢迎介绍、当前工作区以及插件和工作流数量;小窗口自动使用紧凑标题。首次使用可以输入 `/run hello`,按提示输入文本(也可保留默认值),体验“转为大写 → 追加标记 → 保存文件”。运行过程与输入输出留在主面板,期间仍可打开配置或执行其他工作流。PgUp/PgDn 或鼠标滚轮浏览会话中的过程,向下翻至末尾恢复跟随。首页只推荐当前工作区实际存在的工作流;空工作区从 `/workflows` 新建。
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
顶部的“位置”显示主面板或当前操作入口,菜单标题显示正在操作的对象。提交的命令、反馈与运行结果自动保存在所属工作区;返回菜单不会清空执行过程。`/history` 可恢复旧会话并继续输入,也可分页查看完整交互记录;恢复不会重新执行旧命令或覆盖旧会话。若已有插件或快捷名使用 `history`,从 `/tools` → 历史会话进入。
|
|
49
49
|
|
|
50
50
|
主面板查看当前执行,`/logs` 回看某次执行的步骤状态、输入输出和日志,也能重新打开正在运行的任务详情。查看记录不会重新执行工作流。旧 `/runs` 和 F4 仅作为兼容方式转到同一个 `/logs` 入口,不再提供独立列表。
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
`/logs` 标明每次执行属于工作流、插件动作、插件命令或系统命令,以及本次或历史启动。可以按本次启动或调用类型筛选,先显示最近 20 条,再按需显示更多。一个工作流的子流程和内部步骤放在同一条记录中。
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
插件生成的业务文件放在工作区可见的 `results/运行ID/`,日志放在 `.flow/runs/运行ID/`;两者隔离,业务文件即使叫 `result.json` 也不会被内核运行记录覆盖。指定 `--output 目录` 时,该目录仍保存日志,业务文件在其 `files/运行ID/`。TUI 显示实际生成文件的目录,日志保留设置不会删除业务结果,历史文件仍在原位置。
|
|
55
|
+
|
|
56
|
+
普通 CLI/TUI 的 `plugin add` 与 `plugin link` 默认登记到用户级 `~/.fishtools/plugins`(设置 `FISHTOOLS_HOME` 时为其 `plugins` 子目录),安装一次,各工作区可用。各工作区单独保存工作流、插件参数和代理规则;未填写必填配置的插件显示“待配置”,其他插件仍可使用。旧工作区安装兼容读取,同名全局版本优先。全局卸载检查已登记工作区的工作流引用;其他已运行进程保留自己的代码,重启后读取新状态。离线分发包继续使用包内快照及自身可写工作区。
|
|
57
|
+
|
|
58
|
+
主面板默认按步骤显示“执行中/成功/失败”,每一步标明能力与插件,并在旁边提示 **Ctrl+O 查看详情**。展开后按插件字段标题显示输入输出;通过 `runProcess` 执行的程序会记录真实路径、逐项参数与执行目录,Shell 同时记录原始命令,插件文件目录按实际来源显示。内核无法观察插件绕过受管接口执行的任意代码或文件访问。错误摘要、系统命令输出与插件 `print()` 的用户提示直接展示,普通技术日志默认折叠。主面板和运行总览显示总耗时,运行中实时更新,结束后固定。平台声明不匹配也会直接在 TUI 中提示。
|
|
59
|
+
|
|
60
|
+
主输入框用 **↑ / ↓** 回看已提交的命令,向下回到底部恢复未提交草稿。补全菜单打开时,方向键仍选择候选;配置表单内容不进入命令历史。恢复会话同时恢复最近 100 条、合计不超过 256 KiB 的输入,相邻重复命令合并;更长和更早的输入仍在完整交互记录中。未提交草稿不保存。
|
|
61
|
+
|
|
62
|
+
会话保存在 `.flow/sessions/`;只读包使用可写日志目录的 `sessions/` 子目录。追加日志保存命令和反馈,快照保存有界近期面板,较大运行结果通过 `/logs` 读取原始记录;运行日志仍遵循用户设置的保留策略。会话使用本地 UTF-8 文件,首版不加密、不压缩,也不自动删除旧会话。
|
|
55
63
|
|
|
56
64
|
`/plugin` 直接列出当前已加载的插件名称、版本和状态。上下选择后可查看用途、编排能力、输入输出、环境声明及斜杠命令;有配置的插件提供配置入口,自行安装的插件提供移除入口。内置插件标明来源,避免误以为没有安装。`/help` 在终端内提供可翻页的用法说明。顶层补全标明 `[内置]` 或 `[插件]`,插件能力收进插件名入口的二级菜单。
|
|
57
65
|
|
|
@@ -60,13 +68,16 @@ fst --project ./my-project pack hello --target linux-x64-glibc --web
|
|
|
60
68
|
| `/workflows` | 浏览、新建;进入某个流程后添加/编辑步骤、设置输出、保存、运行或删除 |
|
|
61
69
|
| `/run 工作流ID` | 可按 ID 或中文标题补全,填写参数后执行已保存版本;只输入 `/run` 打开已保存工作流列表 |
|
|
62
70
|
| `/logs` | 回看执行记录,运行中的任务优先;可切换总览、输入输出与日志,支持键盘或鼠标滚轮阅读 |
|
|
71
|
+
| `/history` | 恢复旧 TUI 会话的输入、反馈和结果,或分页查看完整交互 |
|
|
63
72
|
| `/plugin` | 浏览已安装插件、用途及能力,进入插件配置、安装和移除操作 |
|
|
64
73
|
| `/pack` | 勾选工作流并选择目标平台打包 |
|
|
65
74
|
| `/config` | 配置 Fishtools:查看工作区信息,设置日志保留次数和代理规则 |
|
|
66
|
-
| `/tools` |
|
|
75
|
+
| `/tools` | 历史会话、启动 Web 或阅读离线资料 |
|
|
67
76
|
| `/help`、`/exit` | 查看帮助、退出 |
|
|
68
77
|
|
|
69
|
-
旧 `/new`、`/add`、`/steps`、`/outputs`、`/save`、`/plugins`、`/docs`、`/web` 和 `/runs`
|
|
78
|
+
旧 `/new`、`/add`、`/steps`、`/outputs`、`/save`、`/plugins`、`/docs`、`/web` 和 `/runs` 仍可直接输入,顶层补全主要呈现上表的对象入口。有实际未保存修改时,工作流编辑菜单返回会保留草稿,切换流程或退出会确认是否放弃。查看后原样完成、修改后还原为已保存值不会产生草稿提示。
|
|
79
|
+
|
|
80
|
+
删除时提供“备份后删除、直接删除、取消”,默认选择取消。备份后删除将已保存文件移入 `.flow/deleted-workflows/工作流ID-编号.yaml`;恢复时将备份复制回 `workflows/原工作流ID.yaml`,先确认同名文件不存在。直接删除不创建本次删除的备份;仍被其他流程引用时,两种删除方式都拒绝执行。
|
|
70
81
|
|
|
71
82
|
`/run` 不要求保存当前编辑草稿,也不会丢弃它。要运行尚未保存的修改,请在 `/workflows` 的编辑菜单选择“运行工作流”,再选择“保存并运行”;已有磁盘版本时也可选择“运行已保存版本”并保留草稿。“返回编辑”会留在当前工作流,不会反复弹出保存确认。只查看参数或拒绝删除步骤不会产生未保存修改。
|
|
72
83
|
|
|
@@ -107,10 +118,11 @@ outputs:
|
|
|
107
118
|
| `f` | 切换日志跟随 |
|
|
108
119
|
| Enter | 在总览中查看所选步骤详情,不退出面板 |
|
|
109
120
|
| `j` | 在易读字段与原始 JSON 诊断之间切换 |
|
|
121
|
+
| `m` | 单独格式化阅读输出;插件标注的 Markdown 结果按 Markdown 呈现 |
|
|
110
122
|
| Esc、q、Ctrl+C | 返回上一级,运行中的任务继续;输入 `/logs` 可重新打开 |
|
|
111
|
-
| `x`,再按 `y` |
|
|
123
|
+
| `x`,再按 `y` | 任务仍在运行时,确认取消整个运行 |
|
|
112
124
|
|
|
113
|
-
运行记录同时列出正在执行和保留的历史记录,运行中任务优先;同一个工作流的多次执行分别显示时间和记录编号。查看详情后返回列表,可以继续选择另一次执行。本次启动期间每次运行分别保存阅读位置;重启后可通过 `/logs`
|
|
125
|
+
运行记录同时列出正在执行和保留的历史记录,运行中任务优先;同一个工作流的多次执行分别显示时间和记录编号。查看详情后返回列表,可以继续选择另一次执行。本次启动期间每次运行分别保存阅读位置;重启后可通过 `/logs` 查看保存的运行,`/history` 恢复旧主面板。上次退出时仍在运行且缺少最终记录的任务会明确显示“未记录最终状态”。日志保留设置在 `/config`。主提示符 `/exit` 或 Ctrl+C 遇到后台任务时,会说明退出将取消任务并请求确认,默认不退出。
|
|
114
126
|
|
|
115
127
|
插件可以注册自己的命令:官方示例的 `/examples` 入口包含文本转大写与交互文本输入,`/environment` 入口包含环境检查与报告。原 `/text.upper`、`/text.ask`、`/env.check`、`/env.report` 仍可直接调用。`check` 在环境未通过时抛错;`report` 正常返回 `ok:false` 和检查明细,适合交给工作流条件判断。安装或移除插件会同步刷新 `/` 菜单;命令和工作流共用日志、取消和结果机制。
|
|
116
128
|
|
|
@@ -135,7 +147,7 @@ outputs:
|
|
|
135
147
|
|
|
136
148
|
### 常规源码启动
|
|
137
149
|
|
|
138
|
-
开发机器安装 **Node.js 24.
|
|
150
|
+
开发机器安装 **Node.js 22.22.2+(22 系列)或 24.0.0+** 和 npm,在仓库根目录执行;便携包自带的固定 Node 仍为 24.15.0:
|
|
139
151
|
|
|
140
152
|
```sh
|
|
141
153
|
npm ci
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
## 直接在 Linux / Windows 安装 Fishtools
|
|
4
4
|
|
|
5
|
-
完整工具支持 npm 安装,目标机器需要 Node.js 24.
|
|
5
|
+
完整工具支持 npm 安装,目标机器需要 Node.js 22.22.2+(22 系列)或 24.0.0+ 和 npm:
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
|
-
npm install -g ./yanglaofish-fishtools-0.5.
|
|
8
|
+
npm install -g ./yanglaofish-fishtools-0.5.3.tgz
|
|
9
9
|
fst
|
|
10
10
|
fst run hello
|
|
11
11
|
```
|
|
@@ -14,7 +14,7 @@ fst run hello
|
|
|
14
14
|
|
|
15
15
|
默认用户工作区为 `~/.fishtools`,可用 `FISHTOOLS_HOME` 覆盖。`fst init ./project` 创建独立项目,`fst --project ./project` 打开它。数据放在工作区,升级或卸载全局 npm 包不会覆盖工作流。
|
|
16
16
|
|
|
17
|
-
Linux 无 npm 全局目录写权限时,可使用 `npm install -g --prefix "$HOME/.local" ./yanglaofish-fishtools-0.5.
|
|
17
|
+
Linux 无 npm 全局目录写权限时,可使用 `npm install -g --prefix "$HOME/.local" ./yanglaofish-fishtools-0.5.3.tgz` 并把 `$HOME/.local/bin` 加入 PATH。`fst` 提供斜杠命令、文件补全和方向键选择;Web 使用 `fst web`,交互容器需要分配终端(例如 `docker run -it`)。不分配终端时使用 `fst run` 等原子命令。
|
|
18
18
|
|
|
19
19
|
以下章节描述按选定工作流导出的自包含运行包;它们携带 Node,运行端无需 npm。新运行包提供 `fst.cmd` / `./fst` 启动入口,兼容保留 `run.cmd` / `run.sh`。
|
|
20
20
|
|
|
@@ -135,9 +135,13 @@ fst plugin remove my-flow-plugin
|
|
|
135
135
|
|
|
136
136
|
`plugin add <本地目录>` 是复制安装,源文件修改不会自动反映到已安装副本;重复 `add` 即可更新,无需先 `remove`。开发时使用下述引用模式。CLI 管理命令以独立进程运行;常驻 TUI/Web 对需要重启的服务显示本次维护提示,仅更新受影响的插件及依赖它的插件。
|
|
137
137
|
|
|
138
|
-
|
|
138
|
+
普通 CLI/TUI 默认在用户级 `~/.fishtools/plugins/.flow/installations/<随机安装批次ID>` 新目录安装,设置 `FISHTOOLS_HOME` 后改为其 `plugins` 子目录;开发链接也全局登记。工作区单独保存参数、工作流和代理规则,缺少必填配置时插件显示“待配置”,配置完成后启用。旧工作区 `.flow/plugins.json` 兼容读取,同名全局版本优先;全局卸载后不复活旧本地版本。离线包继续在自身可写工作区安装和管理,不加载宿主全局插件。
|
|
139
139
|
|
|
140
|
-
|
|
140
|
+
升级前已经安装在工作区的插件不会自动搬移。需要在其他工作区使用时,再执行一次 `fst plugin add 包名或路径`,开发源码则使用 `fst plugin link 源码目录`,即可登记到全局库;原有配置和安装备份仍保留。
|
|
141
|
+
|
|
142
|
+
验证成功才切换安装状态,失败保留原配置;前一状态存入 `plugins.previous.json`,活动代码由批次租约保护。安装禁用 npm 生命周期脚本;TS 发布前编译,原生库及其目标平台资源由作者准备。核心不审核平台兼容性,也不自动重建原生库。当前工作区运行期间不能变更插件,其他已启动进程使用其现有代码,重启后读取新状态。
|
|
143
|
+
|
|
144
|
+
移除全局插件前会检查已登记工作区的已保存工作流(含分支、并行和子工作流)的引用,以及各工作区预置或旧本地插件对它的依赖;显示受影响工作区与工作流。移除旧工作区插件仅检查当前工作区。仍被其他插件依赖时始终拒绝,`--force` 不绕过插件依赖检查。确认接受工作流暂时无法运行后,可用 `fst plugin remove 插件ID --force` 跳过直接工作流引用保护。工作流文件不会随卸载删除,重新安装插件后仍可使用。
|
|
141
145
|
|
|
142
146
|
业务 npm 库写入 `package.json.dependencies`,开发库写入 `devDependencies`。插件间依赖另外写在定义的 `dependencies: {'other-plugin': '^1.0.0'}`,用于宿主版本检查和打包闭包;被依赖插件也需安装并注册。
|
|
143
147
|
|
|
@@ -254,6 +258,7 @@ Linux 支持 `user/root/resource`,Windows 支持 `user/administrator/resource`
|
|
|
254
258
|
| `signal` | 取消信号,异步动作应响应 |
|
|
255
259
|
| `runId`、`stepId`、`callPath` | 运行和嵌套步骤定位 |
|
|
256
260
|
| `outputDir` | 本次运行的可写结果目录 |
|
|
261
|
+
| `logDir` | 本次运行的日志目录;业务文件应写入 outputDir |
|
|
257
262
|
| `resourceDir` | 插件包目录,用于定位脚本 |
|
|
258
263
|
| `projectDir` | 当前工作区根目录;可编辑便携包使用其包外工作区 |
|
|
259
264
|
| `stateDir` | 当前插件跨运行持久目录,与 outputDir 无关;只读项目或无应用的独立宿主为 undefined |
|
|
@@ -265,6 +270,8 @@ Linux 支持 `user/root/resource`,Windows 支持 `user/administrator/resource`
|
|
|
265
270
|
|
|
266
271
|
返回值必须可 JSON 序列化,输入输出经 Ajv 校验。插件在宿主进程中执行,属于可信代码;同步阻塞代码不能被取消信号抢占。
|
|
267
272
|
|
|
273
|
+
从 0.5.3 起,普通工作区的业务文件默认写入 `results/运行ID/`,执行日志写入 `.flow/runs/运行ID/`。日志保留策略不会清理业务结果,历史文件也不会自动搬移;插件应返回或 `print()` 实际保存路径,方便用户找到文件。
|
|
274
|
+
|
|
268
275
|
可写应用在调用前创建 `.flow/plugin-state/<插件ID的SHA-256十六进制摘要>/`。固定长度目录避免 scoped 包名、Windows 大小写和长文件名问题;卸载不自动删除此目录,分发也不自动携带其中数据。插件自行处理原子写入、并发和数据版本。跨插件交换业务结果使用工作流输出或公开服务,不依赖其他插件的私有目录。只读精简包不创建持久状态,需要状态的插件应提示使用可编辑工作区。
|
|
269
276
|
|
|
270
277
|
`runProcess` 新增 `encoding`,默认 `utf8`,也可用 `utf16le`、`gbk` 等当前 Node TextDecoder 支持的编码;实时日志和返回文本采用同一编码,并正确处理跨块字符。示例:`runProcess('wsl',['-l','-v'],{encoding:'utf16le'})`,具体编码应以目标命令版本为准。Windows PowerShell 的编码和 CLIXML 是不同问题,宿主不自动猜编码或解析 CLIXML。输出上限仍按每个流的原始字节计量,默认 4 MiB;超限回收进程树并抛 `OUTPUT_LIMIT`,不返回伪装完整的截断结果。
|
|
@@ -277,6 +284,10 @@ Linux 支持 `user/root/resource`,Windows 支持 `user/administrator/resource`
|
|
|
277
284
|
|
|
278
285
|
`runProcess` 默认无 Shell,参数用数组。支持 `cwd`、`env`、`signal`、`timeout`(默认 30 秒)、`maxBuffer`(stdout/stderr 各默认 4 MiB)和可选的 `onOutput({stream,message})`。普通非零退出返回 `{exitCode,stdout,stderr}`,动作应自行决定是否抛出业务错误;缺失程序、超时、取消、输出超限抛错,并等待进程树回收。不要把密码或令牌写入日志。
|
|
279
286
|
|
|
287
|
+
受管 `ctx.runProcess` 在启动前自动记录实际程序、参数数组和执行目录,Shell 另记录原始指令;自定义 `onStart({file,args,cwd,script?})` 在此记录后调用。启动记录写入失败或此时取消会阻止启动子进程。插件实际来源目录也随调用记录,TUI 展开后可以阅读这些信息。通过其他方式执行的程序或任意文件访问不在该记录范围内;参数若含凭据,也会进入本地执行日志,作者应通过环境变量或其他受控渠道传递。
|
|
288
|
+
|
|
289
|
+
工作流、直接动作和插件命令在执行前统一追加 `run.input`,保存本次提交的完整参数;界面及元数据仍仅持有有界预览。较大参数通过 `/logs` 的完整日志分页读取,配置表单不属于运行参数,不进入此记录。
|
|
290
|
+
|
|
280
291
|
默认 buffer 模式的 `OUTPUT_LIMIT` 限制子进程返回缓冲及实时输出队列,不是 run.md 的文件体积阈值。触发后只能取得超限前已记录的部分输出,不能当作完整结果。可以按业务明确提高有限的 maxBuffer;大量连续日志可选择 `outputMode:'stream'`,完整落盘、内存只保留尾部摘要并显式标记截断。超大业务结果也可由程序写到 outputDir 内的文件,stdout 返回摘要或路径。
|
|
281
292
|
|
|
282
293
|
### 不可信路径与网络挂载
|
|
@@ -474,7 +485,7 @@ async function run({executable, text}, {resourceDir, runProcess, signal}) {
|
|
|
474
485
|
|
|
475
486
|
TUI 顶层按插件归组:例如 ID `@mytools/examples` 对应 `/examples`,进入后选择具体能力,列表标明 `[插件]`、插件名称及 ID。入口取插件 ID 的末段;同名插件使用完整 ID 转为连字符名称,遇到保留名或已有命令则加 `plugin-` 前缀。以当前补全列表中的实际入口为准,不要在插件间依赖这个 UI 别名。只有注册了 `commands` 的插件才产生能力入口,纯服务/纯动作插件仍可在 `/plugin` 管理或参与工作流。原始命令名和 CLI `fst command` 协议不变,旧插件无需迁移定义。新保留入口包括 `plugin`、`tools`,作者应继续使用带插件前缀的命令名。
|
|
476
487
|
|
|
477
|
-
TUI 负责展示当前工作区、操作入口、菜单标题以及提交命令和操作结果。返回时只更新当前位置,不追加通用返回消息。插件使用 `ui.input/select/show/confirm
|
|
488
|
+
TUI 负责展示当前工作区、操作入口、菜单标题以及提交命令和操作结果。返回时只更新当前位置,不追加通用返回消息。插件使用 `ui.input/select/show/confirm`,不要自行清屏或打印终端控制序列,以免破坏主面板中的运行过程。主面板输入、反馈和结果关联可以通过 `/history` 恢复;配置表单和未提交草稿不保存,持久诊断继续使用动作上下文的日志接口。`/run` 执行已保存的工作流;工作流草稿只在编辑菜单明确选择“保存并运行”后才写入,不由插件命令隐式保存。
|
|
478
489
|
|
|
479
490
|
```js
|
|
480
491
|
commands: {
|
|
@@ -545,7 +556,7 @@ TUI `/pack` 选择来源并展示资源字节数;CLI 支持 `--plan` 和 `--en
|
|
|
545
556
|
## 发布前检查清单
|
|
546
557
|
|
|
547
558
|
1. **打包检查**:在插件目录运行 `npm pack --dry-run`,确认编译后的入口、脚本、资源和许可证均会进入包,未夹带凭据或开发数据;再用 `npm pack` 生成待安装的 `.tgz`。
|
|
548
|
-
2.
|
|
559
|
+
2. **独立安装**:测试时先将 `FISHTOOLS_HOME` 设置为独立临时目录,再用 `fst --project <测试工作区> plugin add <插件.tgz的绝对路径>` 安装,使用 `plugin list` 确认插件可加载,避免影响日常用户级插件库。源码开发可将 `fst` 替换为 `npm run fst --`。
|
|
549
560
|
3. **界面检查**:打开测试工作区,确认能力标题、用途、输入字段和输出说明可理解;添加动作并填写参数保存工作流。
|
|
550
561
|
4. **执行检查**:分别验证正常输入、缺少必填项、错误类型、业务失败、缺少程序/依赖、超时与取消。失败必须明确报告,不得伪装为成功。没有子进程的动作不必模拟不适用的进程场景。
|
|
551
562
|
5. **组合检查**:把动作输出传给下一步,确认字段和类型稳定;执行同一工作流两次,验证副作用符合说明。
|
package/manual/docs/releases.md
CHANGED
|
@@ -13,6 +13,25 @@
|
|
|
13
13
|
|
|
14
14
|
已发布版本不可覆盖。本轮用户明确指定新能力目标为 `0.5.2`,集中完成审查验证后发布;后续继续按实际影响和用户约定选取版本。
|
|
15
15
|
|
|
16
|
+
## 0.5.3 全局插件、可读详情与会话恢复
|
|
17
|
+
|
|
18
|
+
- npm 安装支持 Node 22.22.2+(22 系列)和 24.0.0+,包含 issue #4 使用的 24.11.1。生产依赖选择兼容的维护分支,生成包沿用项目的 Node 声明,严格安装验收会拒绝任何不兼容依赖。
|
|
19
|
+
- 兼容性试验在 Windows/Node 22.12.0 再次导出时复现原生进程崩溃;同一测试在 22.22.2 和 24.11.1 通过,因此没有把早期 22 系列声明为支持版本。
|
|
20
|
+
- 工作流没有实际修改时,复制与返回菜单不显示“未保存修改”或“草稿”;查看控制节点及修改后还原也保持准确状态。删除时选择备份后删除、直接删除或取消,默认取消,引用保护与只读保护仍生效。
|
|
21
|
+
- 插件配置、代理规则/配置、日志保留设置、常用命令与快捷名称原样完成时不写文件、不创建备份、不重启插件。已有常用命令不会因进入编辑页自动添加快捷名称。
|
|
22
|
+
- 可选参数仅在声明默认值时说明会使用默认值;已结束任务不显示取消入口。删除注册项只提示实际受影响的快捷名称;打包只在选中当前草稿或其父工作流时询问使用哪个版本。
|
|
23
|
+
- 同步核对 TUI 的权限、定向维护、插件卸载、运行错误和日志提示,保留有实际检查结果的提醒。便携包自带 Node 24.15.0,工作流格式与插件 API 保持兼容。
|
|
24
|
+
- 修复 issue #5 的业务文件覆盖风险:业务输出独立保存到工作区 `results/运行ID/`,日志保留策略只清理日志;即使业务文件叫 `result.json` 也不会被内核覆盖。
|
|
25
|
+
- 普通安装、开发链接默认使用用户级共享插件库,各工作区共用代码并独立保存配置。旧工作区安装兼容读取,缺必填配置的全局插件可在 TUI 配置后启用;热重载包含全局链接。
|
|
26
|
+
- 执行记录标明工作流、插件动作、插件命令和系统命令,保存启动会话,支持按本次启动及入口筛选、继续加载历史,内嵌调用仍只产生一条顶层记录。
|
|
27
|
+
- 运行和步骤附近显示 Ctrl+O 展开提示。详情按字段标题展示输入输出,记录受管子进程的真实程序、参数、工作目录与原始脚本;m 格式化阅读输出,j 保留原始 JSON。
|
|
28
|
+
- 主面板和详情显示执行总耗时,日志收尾后补齐真实结束时间;日志保存失败同步显示失败并保存会话反馈。完成运行的等待对象不继续持有大结果。
|
|
29
|
+
- `/history` 恢复所属工作区的完整 TUI 会话:输入、执行反馈、结果关联,并支持分页阅读完整交互。近期摘要保持内存有界,恢复不会重复执行命令或覆盖旧会话;插件和快捷名称优先,重名时从 `/tools` 进入历史。
|
|
30
|
+
- 插件的平台及架构声明不匹配直接显示在 TUI;Windows 简单 `!ipconfig` / `!ipconfig /all` 按系统 OEM 编码读取中文,同时保留其他命令、多行脚本、管道和重定向的执行方式。
|
|
31
|
+
- 修复早期 Node 24 在 Windows 的日志文件身份误判,保留链接、文件替换及读取预算检查;打包命中有效运行时缓存时不重写,冷缓存校验后原子保存,避免并发读取半成品。
|
|
32
|
+
|
|
33
|
+
验证与正式发布结果见[验收记录](verification.md)。
|
|
34
|
+
|
|
16
35
|
## 0.5.2 命令注册与快捷名称
|
|
17
36
|
|
|
18
37
|
- TUI 主输入框支持 `!` 后的系统命令,原样保留多行、引号、管道和重定向,纳入运行记录、取消、超时与完整日志。
|
|
@@ -24,6 +43,11 @@
|
|
|
24
43
|
|
|
25
44
|
工作流格式、SDK_VERSION 和原动作 ID 保持兼容。命令按当前用户权限执行,使用已有代理和权限接口;外部 Shell 与程序由目标机器提供。第一版支持无需交互输入的命令。完整用法见[命令指南](terminal-commands.md)。发布状态以 GitHub Release 和验收记录为准。
|
|
26
45
|
|
|
46
|
+
**2026-10-13 发布完成:** [正式发布流程](https://github.com/yanglaofish/Fishtools/actions/runs/38361266757)全部成功。
|
|
47
|
+
Windows / Ubuntu 各 488 项通过、1 项平台专用跳过,零失败;自包含包与断网容器验收通过。
|
|
48
|
+
npm `latest` 为 0.5.2,独立下载公开包的校验值与注册表和 [Release](https://github.com/yanglaofish/Fishtools/releases/tag/v0.5.2) 一致。
|
|
49
|
+
最新 issue #4 的复制入口修正已包含在该版本。
|
|
50
|
+
|
|
27
51
|
## 0.5.1 复核修正
|
|
28
52
|
|
|
29
53
|
- 动作选择直连时,外部子进程不再重新继承系统代理;所选代理配置也不会被宿主残留变量干扰。
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
|
|
86
86
|
- [x] 更新产品版本为 0.5.2、发布说明;构建真实 npm 归档,针对同一归档运行本地全量测试。
|
|
87
87
|
- [x] 使用 code-review 做规范与需求的独立双向复核,修正实际问题并验证。
|
|
88
|
-
- [
|
|
89
|
-
- [
|
|
88
|
+
- [x] 推送已审查提交;发布 tag 触发 Windows/Ubuntu、便携与断网验收,全部通过后 npm 发布。
|
|
89
|
+
- [x] 核对注册表版本、完整性和 GitHub Release,记录证据。
|
|
90
90
|
|
|
91
91
|
## 执行记录
|
|
92
92
|
|
|
@@ -105,3 +105,4 @@
|
|
|
105
105
|
- `30d7472` 全量 489 项:486 通过、1 项流式超时的单字节文件大小变化失败、2 跳过。164 次追加诊断均回收进程且内容稳定,没有复现该单次变化,未据此断言原因。新增探针改为返回后立即检查后代状态并严格比较实际内容,同期输出文件大小,生产实现保持原修复,重新做全量验收。
|
|
106
106
|
- `7fa6178` 的完整本地验收 **489 项:487 通过、0 失败、2 跳过**,175.1 秒;使用 9,804,373 字节、285 个生产包的真实 npm 归档,含离线全局安装、脱离源码运行、中文快捷名与再次导出。生产代码和最后探针补充分别完成独立 Standards / Spec 复审,均无遗留已确认问题。进入已授权的推送与正式发布。
|
|
107
107
|
- 用户随后要求最新 issue #4 的复制入口修正也纳入 0.5.2。首次正式验收 Linux 通过,Windows 两项短路径逐字断言失败,publish 跳过且 npm/Release 未发布。合入列表去重及实际目录身份断言修正,补充独立两轴复审均通过;重新构建 9,806,640 字节、285 个生产包的归档,本地全量 **489 项:487 通过、0 失败、2 跳过**,186.3 秒。核对未发布状态后更新待发布 tag,再执行正式双平台发布验收。
|
|
108
|
+
- 最终提交 `fdb62c1` 的发布流程全部成功:Windows 与 Ubuntu 各 **488/489 通过、1 项平台专用跳过、0 失败**;两平台便携包和无 Node 的断网只读容器通过。npm `latest` 为 **0.5.2**,独立下载 9,806,832 字节公开包,SHA-512 与注册表、SHA-256 与 GitHub Release 均匹配。四个发布附件完整,最新 issue #4 纳入同一版本;后续只提交验收记录,不改变发行产物。
|
|
@@ -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 附件。
|
|
@@ -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`。
|
|
@@ -61,3 +61,10 @@ TUI 列表每个工作流只枚举一次,选择后进入管理页复制;原
|
|
|
61
61
|
|
|
62
62
|
合入后重新构建的本地 npm 归档为 **9,806,640 字节、285 个生产包**;指定该归档完整验收 **489 项:487 通过、0 失败、2 跳过**,186.3 秒。
|
|
63
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 和完整发行矩阵仍作为发布门禁。
|
|
@@ -26,3 +26,26 @@ Windows 路径诊断使用 `C:\PROGRA~1` 实际执行,Shell 输出 `C:\Program
|
|
|
26
26
|
|
|
27
27
|
补充范围 `8223bad...c567534` 的独立 Standards 与 Spec 复审均通过,新增确认问题均为 0。
|
|
28
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 补丁,完成双轴代码审查及验证后推送、发布。
|