@bo-agent/bash-local 0.0.2
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/lib/.tsbuildinfo +1 -0
- package/lib/index.d.ts +112 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +328 -0
- package/lib/index.js.map +1 -0
- package/lib/timeout.d.ts +54 -0
- package/lib/timeout.d.ts.map +1 -0
- package/lib/timeout.js +77 -0
- package/lib/timeout.js.map +1 -0
- package/package.json +35 -0
package/lib/.tsbuildinfo
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.array.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2023.intl.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.collection.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.object.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.promise.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.string.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2024.full.d.ts","../../../node_modules/.pnpm/cosmokit@1.8.1/node_modules/cosmokit/lib/index.d.ts","../../../node_modules/.pnpm/@standard-schema+spec@1.1.0/node_modules/@standard-schema/spec/dist/index.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/utils.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/registry.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/reflect.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/fiber.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/events.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/logger.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/context.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/service.d.ts","../../../node_modules/.pnpm/cordis@4.0.0-rc.10/node_modules/cordis/lib/index.d.ts","../../../node_modules/.pnpm/schemastery@3.18.0/node_modules/schemastery/lib/index.d.ts","../../inline/lib/harness-error.d.ts","../../inline/lib/assert-never.d.ts","../../inline/lib/session-id.d.ts","../../inline/lib/index.d.ts","../../sandbox/lib/escalation.d.ts","../../sandbox/lib/roots.d.ts","../../sandbox/lib/index.d.ts","../../subprocess/lib/types.d.ts","../../subprocess/lib/index.d.ts","../../shell/lib/types.d.ts","../../shell/lib/render.d.ts","../../shell/lib/index.d.ts","../src/timeout.ts","../src/index.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/globals.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/header.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/readable.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/file.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/fetch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/formdata.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/connector.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/global-origin.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool-stats.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/handlers.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-client.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-pool.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/mock-errors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-handler.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/retry-agent.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/api.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/interceptors.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/util.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cookies.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/patch.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/websocket.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/eventsource.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/filereader.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/content-type.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/cache.d.ts","../../../node_modules/.pnpm/undici-types@6.21.0/node_modules/undici-types/index.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/navigator.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/storage.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/web-globals/streams.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/assert.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/assert/strict.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/async_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/buffer.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/child_process.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/cluster.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/console.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/constants.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/crypto.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/dgram.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/dns.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/dns/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/domain.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/events.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/fs.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/fs/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/http.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/http2.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/https.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/inspector.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/module.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/net.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/os.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/path.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/process.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/punycode.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/querystring.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/readline.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/readline/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/repl.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/sea.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/sqlite.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/stream.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/stream/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/stream/web.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/string_decoder.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/test.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/timers.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/timers/promises.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/tls.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/trace_events.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/tty.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/url.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/util.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/v8.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/vm.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/wasi.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/worker_threads.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/zlib.d.ts","../../../node_modules/.pnpm/@types+node@22.20.2/node_modules/@types/node/index.d.ts"],"fileIdsList":[[107,156,173,174],[107,153,154,156,173,174],[107,155,156,173,174],[156,173,174],[107,156,161,173,174,191],[107,156,157,162,167,173,174,176,188,199],[107,156,157,158,167,173,174,176],[102,103,104,107,156,173,174],[107,156,159,173,174,200],[107,156,160,161,168,173,174,177],[107,156,161,173,174,188,196],[107,156,162,164,167,173,174,176],[107,155,156,163,173,174],[107,156,164,165,173,174],[107,156,166,167,173,174],[107,155,156,167,173,174],[107,156,167,168,169,173,174,188,199],[107,156,167,168,169,173,174,183,188,191],[107,148,156,164,167,170,173,174,176,188,199],[107,156,167,168,170,171,173,174,176,188,196,199],[107,156,170,172,173,174,188,196,199],[105,106,107,108,109,110,111,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[107,156,167,173,174],[107,156,173,174,175,199],[107,156,164,167,173,174,176,188],[107,156,173,174,177],[107,156,173,174,178],[107,155,156,173,174,179],[107,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205],[107,156,173,174,181],[107,156,173,174,182],[107,156,167,173,174,183,184],[107,156,173,174,183,185,200,202],[107,156,168,173,174],[107,156,167,173,174,188,189,191],[107,156,173,174,190,191],[107,156,173,174,188,189],[107,156,173,174,191],[107,156,173,174,192],[107,153,156,173,174,188,193,199],[107,156,167,173,174,194,195],[107,156,173,174,194,195],[107,156,161,173,174,176,188,196],[107,156,173,174,197],[107,156,173,174,176,198],[107,156,170,173,174,182,199],[107,156,161,173,174,200],[107,156,173,174,188,201],[107,156,173,174,175,202],[107,156,173,174,203],[107,148,156,173,174],[107,148,156,167,169,173,174,179,188,191,199,201,202,204],[107,156,173,174,188,205],[76,78,79,80,81,82,83,107,156,173,174],[76,79,80,81,82,83,84,107,156,173,174],[76,77,78,79,80,81,82,83,84,107,156,173,174],[78,79,80,81,82,83,84,85,107,156,173,174],[78,79,80,81,82,83,84,107,156,173,174],[86,94,96,99,107,156,173,174],[76,77,107,156,173,174],[107,120,124,156,173,174,199],[107,120,156,173,174,188,199],[107,115,156,173,174],[107,117,120,156,173,174,196,199],[107,156,173,174,176,196],[107,156,173,174,206],[107,115,156,173,174,206],[107,117,120,156,173,174,176,199],[107,112,113,116,119,156,167,173,174,188,199],[107,120,127,156,173,174],[107,112,118,156,173,174],[107,120,141,142,156,173,174],[107,116,120,156,173,174,191,199,206],[107,141,156,173,174,206],[107,114,115,156,173,174,206],[107,120,156,173,174],[107,114,115,116,117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,156,173,174],[107,120,135,156,173,174],[107,120,127,128,156,173,174],[107,118,120,128,129,156,173,174],[107,119,156,173,174],[107,112,115,120,156,173,174],[107,120,124,128,129,156,173,174],[107,124,156,173,174],[107,118,120,123,156,173,174,199],[107,112,117,120,127,156,173,174],[107,156,173,174,188],[107,115,120,141,156,173,174,204,206],[86,87,94,96,99,100,107,156,173,174],[88,89,90,107,156,173,174],[94,107,156,173,174],[86,91,92,93,94,96,99,107,156,173,174],[86,94,96,97,98,99,107,156,173,174],[94,96,107,156,173,174],[86,94,95,96,99,107,156,173,174]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"df83c2a6c73228b625b0beb6669c7ee2a09c914637e2d35170723ad49c0f5cd4","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3e9cef4eed59f8a2249ed834ba4aabe9d0d4e9037d4679487fa17dad99004a3","impliedFormat":1},{"version":"0e7086243656ce24ba7dfe15a8d8e3cd4310afa6cbddb97dd06d5dc399794676","impliedFormat":99},{"version":"bdd14f07b4eca0b4b5203b85b8dbc4d084c749fa590bee5ea613e1641dcd3b29","impliedFormat":99},{"version":"1f9b9bc4eb18864e8c1628ecd0630442eb857e7b77322559a9a00004f1e39d80","impliedFormat":99},{"version":"598ee676b4645a043e7c4198d53221dd8c44bc628b12776efd8bc6fabd804ced","impliedFormat":99},{"version":"3de8c258acd8647678a8c96db4cee1151a16bc18626028a9c7b33b6bdd037db9","impliedFormat":99},{"version":"b7f6288c956d50a63f4d14610f39df7f7b1e9d481413a0e95c82c37179448ddc","impliedFormat":99},{"version":"18930b7045a527847a039cf29af8927c8079414527707396672ed3cd706fc399","impliedFormat":99},{"version":"7395b909d9b5c754cf8af3937a7ac783bd82eeea31c42a35a02bbcfb5db945a4","impliedFormat":99},{"version":"3a0bf69f6275288de8b20cc353c1e0e6c6d61644789ddec51b526d0d5166acc1","impliedFormat":99},{"version":"6adf2288c91294fe0c68828187e96820b0620fe5d78f79ccbff06d230d9b0c8e","impliedFormat":99},{"version":"8cc48b522565f226e5bdb0f6a4d4b1bcdc8f82ac72c32fd869831a96f583b3cc","impliedFormat":99},{"version":"d84b05b596aafd7be8867d29ff85e02cb690888a1f8aaa85afe5d5f01862efd8","affectsGlobalScope":true,"impliedFormat":1},"3207040072c5856d33d3f2f039436dc39a81b1dea1577702ff9b7d705bf2ceb5","8176d2ff27e0d895260bb1f1b3e094ab521819e7536c79bad057f6c475f00ee6","70b6cdce0800a89493f582f239c4cc49f4dba7e5b0e674f651d039476333fca0","e0ecc9ceeb052adc8590f8e527e58d572ae564f7b90a407295e4846b9bdb7b8a","eab4d0f1a497f676581d205a6019850414d7aac01f9ae05e8320d250d7409cf3","eb85ac6e1d061fa97b89e2cf810253e688a0f008a71bfd3a720f05788966d932","10f45007344ec6e7bd7384ab49b8b72feafcdc9df3d20d040ac058b0514f5a1b","f45efbcb0323d0749d12447c82e6ed374b237d73d0f701872c937546200173ce","fd0992b57c68dbe57ea0a54c49402c5071ccf7f8612c0cf191882f09fa7b71d8","bbb563f8367741fefe917ecd36a9f4ba7eca941af02a3b3f847d24cc0267fd46","505d4823e96d7928286311bf7109ae342ec0caf86283ed2e04b8d17afe33b3a3","94dd664bf328d51a448daff6f6e0bb0aff78e8401bd303e0da67bd1a8fd4098d",{"version":"5e0cfe0c7fc0c1b74ce7014ba4f3052b0e1654d231ffbe88b8e59200e48f574f","signature":"31e5d2a3bc5437af14b698e16292ef486a571520f156f8a1fce2dc686aa27172"},{"version":"a3d8e8fe33b4afd15e8d5b5ced9333d03060e329d9b534da3d39a1d9809aaeb3","signature":"e5d8ba3a75af3b9a192aafd6990edf4c17036254363b042c061286508161e59a"},{"version":"6c7176368037af28cb72f2392010fa1cef295d6d6744bca8cfb54985f3a18c3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"437e20f2ba32abaeb7985e0afe0002de1917bc74e949ba585e49feba65da6ca1","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"3af97acf03cc97de58a3a4bc91f8f616408099bc4233f6d0852e72a8ffb91ac9","affectsGlobalScope":true,"impliedFormat":1},{"version":"808069bba06b6768b62fd22429b53362e7af342da4a236ed2d2e1c89fcca3b4a","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"f9501cc13ce624c72b61f12b3963e84fad210fbdf0ffbc4590e08460a3f04eba","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d97fb21da858fb18b8ae72c314e9743fd52f73ebe2764e12af1db32fc03f853f","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fa06ada475b910e2106c98c68b10483dc8811d0c14a8a8dd36efb2672485b29","impliedFormat":1},{"version":"33e5e9aba62c3193d10d1d33ae1fa75c46a1171cf76fef750777377d53b0303f","impliedFormat":1},{"version":"2b06b93fd01bcd49d1a6bd1f9b65ddcae6480b9a86e9061634d6f8e354c1468f","impliedFormat":1},{"version":"6a0cd27e5dc2cfbe039e731cf879d12b0e2dded06d1b1dedad07f7712de0d7f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"13f5c844119c43e51ce777c509267f14d6aaf31eafb2c2b002ca35584cd13b29","impliedFormat":1},{"version":"e60477649d6ad21542bd2dc7e3d9ff6853d0797ba9f689ba2f6653818999c264","impliedFormat":1},{"version":"c2510f124c0293ab80b1777c44d80f812b75612f297b9857406468c0f4dafe29","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"4c829ab315f57c5442c6667b53769975acbf92003a66aef19bce151987675bd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"b2ade7657e2db96d18315694789eff2ddd3d8aea7215b181f8a0b303277cc579","impliedFormat":1},{"version":"78dbea00e90d2df8ea3dbef0cc379d95b8be9b71cd6bde4c28728f306811803b","impliedFormat":1},{"version":"4d631b81fa2f07a0e63a9a143d6a82c25c5f051298651a9b69176ba28930756d","impliedFormat":1},{"version":"836a356aae992ff3c28a0212e3eabcb76dd4b0cc06bcb9607aeef560661b860d","impliedFormat":1},{"version":"1e0d1f8b0adfa0b0330e028c7941b5a98c08b600efe7f14d2d2a00854fb2f393","impliedFormat":1},{"version":"41670ee38943d9cbb4924e436f56fc19ee94232bc96108562de1a734af20dc2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e1e46d0a9837ee058c100501080c920fa98081ea3956af0374308ba6f22a33e","impliedFormat":1},{"version":"272ca407e0c9068bdc5152552d876e68037ceae3de62e529306403e973dec8e1","impliedFormat":1},{"version":"fa7834c715d5357e4540cee40ce96c3250ddb67a7b879a6b7fa0e86d6696f121","impliedFormat":1},{"version":"22dfb07a7ab15b66ac043829056fe70124844636ae719551812ac631ba04985b","impliedFormat":1},{"version":"a10f0e1854f3316d7ee437b79649e5a6ae3ae14ffe6322b02d4987071a95362e","impliedFormat":1},{"version":"e208f73ef6a980104304b0d2ca5f6bf1b85de6009d2c7e404028b875020fa8f2","impliedFormat":1},{"version":"d163b6bc2372b4f07260747cbc6c0a6405ab3fbcea3852305e98ac43ca59f5bc","impliedFormat":1},{"version":"e6fa9ad47c5f71ff733744a029d1dc472c618de53804eae08ffc243b936f87ff","affectsGlobalScope":true,"impliedFormat":1},{"version":"a6f137d651076822d4fe884287e68fd61785a0d3d1fdb250a5059b691fa897db","impliedFormat":1},{"version":"24826ed94a78d5c64bd857570fdbd96229ad41b5cb654c08d75a9845e3ab7dde","impliedFormat":1},{"version":"8b479a130ccb62e98f11f136d3ac80f2984fdc07616516d29881f3061f2dd472","impliedFormat":1},{"version":"928af3d90454bf656a52a48679f199f64c1435247d6189d1caf4c68f2eaf921f","affectsGlobalScope":true,"impliedFormat":1},{"version":"bceb58df66ab8fb00170df20cd813978c5ab84be1d285710c4eb005d8e9d8efb","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f16a7e4deafa527ed9995a772bb380eb7d3c2c0fd4ae178c5263ed18394db2c","impliedFormat":1},{"version":"933921f0bb0ec12ef45d1062a1fc0f27635318f4d294e4d99de9a5493e618ca2","impliedFormat":1},{"version":"71a0f3ad612c123b57239a7749770017ecfe6b66411488000aba83e4546fde25","impliedFormat":1},{"version":"77fbe5eecb6fac4b6242bbf6eebfc43e98ce5ccba8fa44e0ef6a95c945ff4d98","impliedFormat":1},{"version":"4f9d8ca0c417b67b69eeb54c7ca1bedd7b56034bb9bfd27c5d4f3bc4692daca7","impliedFormat":1},{"version":"0cb167c371eaa8c869f8a7656a7296f2e4fae43b4d8b803a680236b24794e5f9","impliedFormat":1},{"version":"0a839dba0287cc0481ad4beedd48a1c64acf1e212ae865d1315f7007ca215161","impliedFormat":1},{"version":"38dc4655376cd1a4bd6bb3763d92949233e33d38d3dd3cbea7bbf218175a38ef","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"208a6a0bfb227bdf8fb964799d0a206c75cf03ccd72e63bf5495c9331354c6d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"18fd40412d102c5564136f29735e5d1c3b455b8a37f920da79561f1fde068208","impliedFormat":1},{"version":"48a679952eefe4cb776d5a0e1ccba2d3eb53b57448bbb7abc1fcebcbd5440188","impliedFormat":1},{"version":"f0be1b8078cd549d91f37c30c222c2a187ac1cf981d994fb476a1adc61387b14","affectsGlobalScope":true,"impliedFormat":1},{"version":"0aaed1d72199b01234152f7a60046bc947f1f37d78d182e9ae09c4289e06a592","impliedFormat":1},{"version":"2d14da6ecb49bf828d83948765ec2d3a579d476bbb9645e749610baa6ec880ca","impliedFormat":1},{"version":"66ba1b2c3e3a3644a1011cd530fb444a96b1b2dfe2f5e837a002d41a1a799e60","impliedFormat":1},{"version":"7e514f5b852fdbc166b539fdd1f4e9114f29911592a5eb10a94bb3a13ccac3c4","impliedFormat":1},{"version":"5b7aa3c4c1a5d81b411e8cb302b45507fea9358d3569196b27eb1a27ae3a90ef","affectsGlobalScope":true,"impliedFormat":1},{"version":"5987a903da92c7462e0b35704ce7da94d7fdc4b89a984871c0e2b87a8aae9e69","affectsGlobalScope":true,"impliedFormat":1},{"version":"ea08a0345023ade2b47fbff5a76d0d0ed8bff10bc9d22b83f40858a8e941501c","impliedFormat":1},{"version":"0aef708fb4c7a6b915e8305cbfac40cd207b032dbaabe9a01889a5fff3254681","impliedFormat":1},{"version":"ae062ce7d9510060c5d7e7952ae379224fb3f8f2dd74e88959878af2057c143b","impliedFormat":1},{"version":"ad9bdafb4e7abf14cc53ce7970486a84c87831e62891e5dfe798ddcd55e84701","affectsGlobalScope":true,"impliedFormat":1},{"version":"358765d5ea8afd285d4fd1532e78b88273f18cb3f87403a9b16fef61ac9fdcfe","impliedFormat":1},{"version":"71d3ae6a5e73ca4130762560425e00984ebaff64d5353a3333d1bb7eb86ef336","impliedFormat":1}],"root":[100,101],"options":{"allowImportingTsExtensions":true,"composite":true,"declaration":true,"declarationMap":true,"esModuleInterop":true,"exactOptionalPropertyTypes":true,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitOverride":true,"noUncheckedIndexedAccess":true,"noUnusedLocals":false,"noUnusedParameters":false,"outDir":"./","rewriteRelativeImportExtensions":true,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":11,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":false},"referencedMap":[[77,1],[153,2],[154,2],[155,3],[107,4],[156,5],[157,6],[158,7],[102,1],[105,8],[103,1],[104,1],[159,9],[160,10],[161,11],[162,12],[163,13],[164,14],[165,14],[166,15],[167,16],[168,17],[169,18],[108,1],[106,1],[170,19],[171,20],[172,21],[206,22],[173,23],[174,1],[175,24],[176,25],[177,26],[178,27],[179,28],[180,29],[181,30],[182,31],[183,32],[184,32],[185,33],[186,1],[187,34],[188,35],[190,36],[189,37],[191,38],[192,39],[193,40],[194,41],[195,42],[196,43],[197,44],[198,45],[199,46],[200,47],[201,48],[202,49],[203,50],[109,1],[110,1],[111,1],[149,51],[150,1],[151,1],[152,38],[204,52],[205,53],[84,54],[82,55],[81,56],[86,57],[83,58],[80,55],[79,56],[85,58],[78,59],[76,1],[87,60],[73,1],[74,1],[14,1],[12,1],[13,1],[18,1],[17,1],[2,1],[19,1],[20,1],[21,1],[22,1],[23,1],[24,1],[25,1],[26,1],[3,1],[27,1],[28,1],[4,1],[29,1],[33,1],[30,1],[31,1],[32,1],[34,1],[35,1],[36,1],[5,1],[37,1],[38,1],[39,1],[40,1],[6,1],[44,1],[41,1],[42,1],[43,1],[45,1],[7,1],[46,1],[51,1],[52,1],[47,1],[48,1],[49,1],[50,1],[8,1],[56,1],[53,1],[54,1],[55,1],[57,1],[9,1],[58,1],[59,1],[60,1],[62,1],[61,1],[63,1],[64,1],[10,1],[65,1],[66,1],[67,1],[11,1],[75,1],[68,1],[69,1],[70,1],[71,1],[72,1],[1,1],[16,1],[15,1],[127,61],[137,62],[126,61],[147,63],[118,64],[117,65],[146,66],[140,67],[145,68],[120,69],[134,70],[119,71],[143,72],[115,73],[114,66],[144,74],[116,75],[121,76],[122,1],[125,76],[112,1],[148,77],[138,78],[129,79],[130,80],[132,81],[128,82],[131,83],[141,66],[123,84],[124,85],[133,86],[113,87],[136,78],[135,76],[139,1],[142,88],[101,89],[100,1],[89,1],[88,1],[91,90],[90,1],[92,91],[94,92],[93,91],[99,93],[98,1],[97,94],[96,95],[95,87]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.3"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Service Provider for the bash capability seam over the subprocess
|
|
3
|
+
* capability seam. Public commands run as `bash -c` in a managed process group spawned
|
|
4
|
+
* through `ctx.subprocess`; subclasses may reuse the same mechanics with an
|
|
5
|
+
* explicit argv. This executor owns command defaulting, deadlines and cause
|
|
6
|
+
* classification, the model-friendly terminal environment, and the model-facing
|
|
7
|
+
* stdout/stderr merge for background reads. Execution policy belongs in
|
|
8
|
+
* `tools/pre-execute` or a sandboxing executor.
|
|
9
|
+
*
|
|
10
|
+
* @module @bo-agent/bash-local
|
|
11
|
+
*/
|
|
12
|
+
import { Context } from 'cordis';
|
|
13
|
+
import z from 'schemastery';
|
|
14
|
+
import { ShellExecutor } from '@bo-agent/shell';
|
|
15
|
+
import type { ShellExecRequest, ShellExecSpec, ShellProcess, ShellRunResult } from '@bo-agent/shell';
|
|
16
|
+
/**
|
|
17
|
+
* Model-friendly environment overrides: disable colors, pagers, and
|
|
18
|
+
* interactive terminal features that would garble tool output (the same set
|
|
19
|
+
* Codex hardcodes; Claude Code achieves it via TERM=dumb). Bash-tool policy —
|
|
20
|
+
* merged first into the spawn's explicit env, so a trusted caller's own entry
|
|
21
|
+
* still wins; the subprocess service applies its credential scrub independently.
|
|
22
|
+
*/
|
|
23
|
+
export declare const ENV_OVERRIDES: {
|
|
24
|
+
readonly NO_COLOR: "1";
|
|
25
|
+
readonly TERM: "dumb";
|
|
26
|
+
readonly PAGER: "cat";
|
|
27
|
+
readonly GIT_PAGER: "cat";
|
|
28
|
+
};
|
|
29
|
+
/** Plugin config (all optional — `static Config` supplies the defaults). */
|
|
30
|
+
export interface Config {
|
|
31
|
+
/** Default working directory for commands (default: process.cwd()). */
|
|
32
|
+
cwd?: string;
|
|
33
|
+
/** Default foreground timeout in milliseconds. */
|
|
34
|
+
timeoutMs?: number;
|
|
35
|
+
/** Upper bound for per-call timeout overrides. */
|
|
36
|
+
maxTimeoutMs?: number;
|
|
37
|
+
/** Per-stream in-memory output cap; overflow spills to a temp file. */
|
|
38
|
+
maxOutputBytes?: number;
|
|
39
|
+
/** Per-stream spill-file cap; larger streams retain only their in-memory tail. */
|
|
40
|
+
maxSpillBytes?: number;
|
|
41
|
+
/** Grace period for kill escalation and inherited pipes; at most `MAX_TIMER_DELAY_MS`. */
|
|
42
|
+
graceMs?: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Reject a resolved section this executor could not run with. The schema
|
|
46
|
+
* expresses neither "positive and finite" nor the timer bound `graceMs` has to
|
|
47
|
+
* fit, so a stored value is refused where it is written instead of failing at
|
|
48
|
+
* the next command.
|
|
49
|
+
* @param config - the resolved section, schema-valid by construction.
|
|
50
|
+
* @throws Error naming the field that cannot be used.
|
|
51
|
+
*/
|
|
52
|
+
export declare function assertServiceableBashConfig(config: Config): void;
|
|
53
|
+
/**
|
|
54
|
+
* Local bash executor over `ctx.subprocess`. Bounded output, spill files, and
|
|
55
|
+
* process-group SIGTERM→SIGKILL escalation are the subprocess service's
|
|
56
|
+
* mechanics; this executor supplies their configured budgets per spawn, so a
|
|
57
|
+
* still-running background process stays managed (killed and joined at
|
|
58
|
+
* composition teardown) even across an executor reload.
|
|
59
|
+
*/
|
|
60
|
+
export declare class LocalBashExecutor extends ShellExecutor {
|
|
61
|
+
static inject: string[];
|
|
62
|
+
static Config: z<Config>;
|
|
63
|
+
/** Validated config (schemastery applied the defaults before construction). */
|
|
64
|
+
private readonly config;
|
|
65
|
+
constructor(ctx: Context, config: Config);
|
|
66
|
+
/**
|
|
67
|
+
* Resolve a request into a fully-specified spec: fill `workdir` from
|
|
68
|
+
* `config.cwd` (else `process.cwd()`), and `timeoutMs` from
|
|
69
|
+
* `config.timeoutMs`, capped at `config.maxTimeoutMs`. The tool layer calls
|
|
70
|
+
* this before {@link run}/{@link start}, so those methods receive explicit
|
|
71
|
+
* values and never re-default.
|
|
72
|
+
*/
|
|
73
|
+
resolve(request: ShellExecRequest): ShellExecSpec;
|
|
74
|
+
/** Map one resolved bash spec and explicit argv onto a fully-specified subprocess spawn. */
|
|
75
|
+
private spawnSpec;
|
|
76
|
+
/** The collect-mode readers the executor itself requested (present by construction). */
|
|
77
|
+
private static collected;
|
|
78
|
+
run(spec: ShellExecSpec): Promise<ShellRunResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Run an explicit argv with the foreground lifecycle, environment, output,
|
|
81
|
+
* timeout, and cancellation semantics of this executor. Subclasses use this
|
|
82
|
+
* after replacing the public command's shell argv at an execution boundary.
|
|
83
|
+
* @param spec - resolved execution settings and caller-owned command metadata.
|
|
84
|
+
* @param argv - exact executable and arguments to hand to `ctx.subprocess`.
|
|
85
|
+
* @returns the settled foreground result with collected output and cause facts.
|
|
86
|
+
*/
|
|
87
|
+
protected runArgv(spec: ShellExecSpec, argv: readonly string[]): Promise<ShellRunResult>;
|
|
88
|
+
start(spec: ShellExecSpec): ShellProcess;
|
|
89
|
+
/**
|
|
90
|
+
* Start an explicit argv with the background lifecycle, environment, output,
|
|
91
|
+
* cancellation, and process-tree ownership semantics of this executor.
|
|
92
|
+
* Subclasses use this after replacing the public command's shell argv at an
|
|
93
|
+
* execution boundary.
|
|
94
|
+
* @param spec - resolved execution settings and caller-owned command metadata.
|
|
95
|
+
* @param argv - exact executable and arguments to hand to `ctx.subprocess`.
|
|
96
|
+
* @returns the live background handle; spawn rejection settles it as killed.
|
|
97
|
+
*/
|
|
98
|
+
protected startArgv(spec: ShellExecSpec, argv: readonly string[]): ShellProcess;
|
|
99
|
+
/**
|
|
100
|
+
* Settlement hook for subclasses that attach execution facts to a process.
|
|
101
|
+
* Called after exit facts or spawn-failure output are stamped and before
|
|
102
|
+
* {@link ShellProcess.done} resolves. The base implementation is intentionally
|
|
103
|
+
* empty.
|
|
104
|
+
* @param _proc - the settled process handle.
|
|
105
|
+
* @param _stderr - the process's retained stderr tail used by subclasses for settlement classification.
|
|
106
|
+
* @param _spawnFailed - whether the subprocess promise rejected before a process started.
|
|
107
|
+
* @param _spawnError - the original spawn rejection reason, which may itself be undefined.
|
|
108
|
+
*/
|
|
109
|
+
protected onProcessDone(_proc: ShellProcess, _stderr: string, _spawnFailed: boolean, _spawnError?: unknown): void;
|
|
110
|
+
}
|
|
111
|
+
export default LocalBashExecutor;
|
|
112
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAChC,OAAO,CAAC,MAAM,aAAa,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAoB,cAAc,EAAmB,MAAM,iBAAiB,CAAA;AAKvI;;;;;;GAMG;AACH,eAAO,MAAM,aAAa;;;;;CAKhB,CAAA;AAQV,4EAA4E;AAC5E,MAAM,WAAW,MAAM;IACrB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAqBD;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAUhE;AAED;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,aAAa;IAClD,MAAM,CAAC,MAAM,WAAiB;IAE9B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAOtB;IAEF,+EAA+E;IAC/E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAQxC;;;;;;OAMG;IACH,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,aAAa;IA2BjD,4FAA4F;IAE5F,OAAO,CAAC,SAAS;IAyBjB,wFAAwF;IACxF,OAAO,CAAC,MAAM,CAAC,SAAS;IAUlB,GAAG,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAIvD;;;;;;;OAOG;cACa,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC;IAmB9F,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY;IAIxC;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY;IAiE/E;;;;;;;;;OASG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,GAAG,IAAI;CAClH;AAED,eAAe,iBAAiB,CAAA"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local Service Provider for the bash capability seam over the subprocess
|
|
3
|
+
* capability seam. Public commands run as `bash -c` in a managed process group spawned
|
|
4
|
+
* through `ctx.subprocess`; subclasses may reuse the same mechanics with an
|
|
5
|
+
* explicit argv. This executor owns command defaulting, deadlines and cause
|
|
6
|
+
* classification, the model-friendly terminal environment, and the model-facing
|
|
7
|
+
* stdout/stderr merge for background reads. Execution policy belongs in
|
|
8
|
+
* `tools/pre-execute` or a sandboxing executor.
|
|
9
|
+
*
|
|
10
|
+
* @module @bo-agent/bash-local
|
|
11
|
+
*/
|
|
12
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
13
|
+
if (value !== null && value !== void 0) {
|
|
14
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
15
|
+
var dispose, inner;
|
|
16
|
+
if (async) {
|
|
17
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
18
|
+
dispose = value[Symbol.asyncDispose];
|
|
19
|
+
}
|
|
20
|
+
if (dispose === void 0) {
|
|
21
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
22
|
+
dispose = value[Symbol.dispose];
|
|
23
|
+
if (async) inner = dispose;
|
|
24
|
+
}
|
|
25
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
26
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
27
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
28
|
+
}
|
|
29
|
+
else if (async) {
|
|
30
|
+
env.stack.push({ async: true });
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
};
|
|
34
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
35
|
+
return function (env) {
|
|
36
|
+
function fail(e) {
|
|
37
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
38
|
+
env.hasError = true;
|
|
39
|
+
}
|
|
40
|
+
var r, s = 0;
|
|
41
|
+
function next() {
|
|
42
|
+
while (r = env.stack.pop()) {
|
|
43
|
+
try {
|
|
44
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
45
|
+
if (r.dispose) {
|
|
46
|
+
var result = r.dispose.call(r.value);
|
|
47
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
48
|
+
}
|
|
49
|
+
else s |= 1;
|
|
50
|
+
}
|
|
51
|
+
catch (e) {
|
|
52
|
+
fail(e);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
56
|
+
if (env.hasError) throw env.error;
|
|
57
|
+
}
|
|
58
|
+
return next();
|
|
59
|
+
};
|
|
60
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
61
|
+
var e = new Error(message);
|
|
62
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
63
|
+
});
|
|
64
|
+
import z from 'schemastery';
|
|
65
|
+
import { ShellExecutor } from '@bo-agent/shell';
|
|
66
|
+
import { MAX_TIMER_DELAY_MS } from "./timeout.js";
|
|
67
|
+
import { clampTimeout, deadline, timeoutOf } from "./timeout.js";
|
|
68
|
+
/**
|
|
69
|
+
* Model-friendly environment overrides: disable colors, pagers, and
|
|
70
|
+
* interactive terminal features that would garble tool output (the same set
|
|
71
|
+
* Codex hardcodes; Claude Code achieves it via TERM=dumb). Bash-tool policy —
|
|
72
|
+
* merged first into the spawn's explicit env, so a trusted caller's own entry
|
|
73
|
+
* still wins; the subprocess service applies its credential scrub independently.
|
|
74
|
+
*/
|
|
75
|
+
export const ENV_OVERRIDES = {
|
|
76
|
+
NO_COLOR: '1',
|
|
77
|
+
TERM: 'dumb',
|
|
78
|
+
PAGER: 'cat',
|
|
79
|
+
GIT_PAGER: 'cat',
|
|
80
|
+
};
|
|
81
|
+
/** Default SIGTERM→SIGKILL grace period (the `graceMs` config; matches OpenCode's 3s). */
|
|
82
|
+
const DEFAULT_GRACE_MS = 3_000;
|
|
83
|
+
/** Default per-stream spill cap (the `maxSpillBytes` config). */
|
|
84
|
+
const DEFAULT_MAX_SPILL_BYTES = 64 * 1024 * 1024;
|
|
85
|
+
/** Project a settled collect-mode reader into the final CollectedOutput shape. */
|
|
86
|
+
function finalOutput(reader) {
|
|
87
|
+
const read = reader.readFrom(0);
|
|
88
|
+
return {
|
|
89
|
+
text: read.text,
|
|
90
|
+
truncated: read.lossy,
|
|
91
|
+
...read.spillPath !== undefined ? { spillPath: read.spillPath } : {},
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function assertPositiveFinite(name, value) {
|
|
95
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
96
|
+
throw new Error(`bash-local: ${name} must be a positive finite number`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Reject a resolved section this executor could not run with. The schema
|
|
101
|
+
* expresses neither "positive and finite" nor the timer bound `graceMs` has to
|
|
102
|
+
* fit, so a stored value is refused where it is written instead of failing at
|
|
103
|
+
* the next command.
|
|
104
|
+
* @param config - the resolved section, schema-valid by construction.
|
|
105
|
+
* @throws Error naming the field that cannot be used.
|
|
106
|
+
*/
|
|
107
|
+
export function assertServiceableBashConfig(config) {
|
|
108
|
+
const resolved = config;
|
|
109
|
+
assertPositiveFinite('timeoutMs', resolved.timeoutMs);
|
|
110
|
+
assertPositiveFinite('maxTimeoutMs', resolved.maxTimeoutMs);
|
|
111
|
+
assertPositiveFinite('maxOutputBytes', resolved.maxOutputBytes);
|
|
112
|
+
assertPositiveFinite('maxSpillBytes', resolved.maxSpillBytes);
|
|
113
|
+
assertPositiveFinite('graceMs', resolved.graceMs);
|
|
114
|
+
if (resolved.graceMs > MAX_TIMER_DELAY_MS) {
|
|
115
|
+
throw new Error(`bash-local: graceMs must be no greater than ${MAX_TIMER_DELAY_MS}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Local bash executor over `ctx.subprocess`. Bounded output, spill files, and
|
|
120
|
+
* process-group SIGTERM→SIGKILL escalation are the subprocess service's
|
|
121
|
+
* mechanics; this executor supplies their configured budgets per spawn, so a
|
|
122
|
+
* still-running background process stays managed (killed and joined at
|
|
123
|
+
* composition teardown) even across an executor reload.
|
|
124
|
+
*/
|
|
125
|
+
export class LocalBashExecutor extends ShellExecutor {
|
|
126
|
+
static inject = ['subprocess'];
|
|
127
|
+
static Config = z.object({
|
|
128
|
+
cwd: z.string(),
|
|
129
|
+
timeoutMs: z.number().default(120_000),
|
|
130
|
+
maxTimeoutMs: z.number().default(600_000),
|
|
131
|
+
maxOutputBytes: z.number().default(64_000),
|
|
132
|
+
maxSpillBytes: z.number().default(DEFAULT_MAX_SPILL_BYTES),
|
|
133
|
+
graceMs: z.number().default(DEFAULT_GRACE_MS),
|
|
134
|
+
});
|
|
135
|
+
/** Validated config (schemastery applied the defaults before construction). */
|
|
136
|
+
config;
|
|
137
|
+
constructor(ctx, config) {
|
|
138
|
+
super(ctx);
|
|
139
|
+
// Schemastery fills these fields before construction; the type does not encode that step.
|
|
140
|
+
const entry = config;
|
|
141
|
+
assertServiceableBashConfig(entry);
|
|
142
|
+
this.config = entry;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Resolve a request into a fully-specified spec: fill `workdir` from
|
|
146
|
+
* `config.cwd` (else `process.cwd()`), and `timeoutMs` from
|
|
147
|
+
* `config.timeoutMs`, capped at `config.maxTimeoutMs`. The tool layer calls
|
|
148
|
+
* this before {@link run}/{@link start}, so those methods receive explicit
|
|
149
|
+
* values and never re-default.
|
|
150
|
+
*/
|
|
151
|
+
resolve(request) {
|
|
152
|
+
const timeoutMs = clampTimeout(request.timeoutMs, this.config.timeoutMs, this.config.maxTimeoutMs, 'bash-local: request.timeoutMs');
|
|
153
|
+
const stdoutMaxBytes = request.stdoutMaxBytes ?? this.config.maxOutputBytes;
|
|
154
|
+
assertPositiveFinite('request.stdoutMaxBytes', stdoutMaxBytes);
|
|
155
|
+
return {
|
|
156
|
+
command: request.command,
|
|
157
|
+
workdir: request.workdir ?? this.config.cwd ?? process.cwd(),
|
|
158
|
+
timeoutMs,
|
|
159
|
+
stdoutMaxBytes,
|
|
160
|
+
...request.signal ? { signal: request.signal } : {},
|
|
161
|
+
// Carry stdin/ordinary env/trusted dshEnv through verbatim — optional,
|
|
162
|
+
// no config default. The subprocess service owns the scrub and merge order.
|
|
163
|
+
...request.stdin !== undefined ? { stdin: request.stdin } : {},
|
|
164
|
+
...request.env !== undefined ? { env: request.env } : {},
|
|
165
|
+
...request.dshEnv !== undefined ? { dshEnv: request.dshEnv } : {},
|
|
166
|
+
// Carry a sandbox policy through verbatim: this executor never
|
|
167
|
+
// confines, so the field is inert here (the seam contract) — a
|
|
168
|
+
// sandboxing subclass overrides resolve() to stamp its default instead.
|
|
169
|
+
sandboxPolicy: request.sandboxPolicy,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/** Map one resolved bash spec and explicit argv onto a fully-specified subprocess spawn. */
|
|
173
|
+
// XXX(stateful-shell): evaluate persistent cwd or PTY sessions when workflows require shell state.
|
|
174
|
+
spawnSpec(spec, argv, stdoutMaxBytes, signal) {
|
|
175
|
+
const collect = (maxBytes) => ({ maxBytes, spill: { maxBytes: this.config.maxSpillBytes } });
|
|
176
|
+
return {
|
|
177
|
+
argv,
|
|
178
|
+
cwd: spec.workdir,
|
|
179
|
+
stdio: {
|
|
180
|
+
stdin: spec.stdin !== undefined ? { data: spec.stdin } : 'ignore',
|
|
181
|
+
stdout: collect(stdoutMaxBytes),
|
|
182
|
+
stderr: collect(this.config.maxOutputBytes),
|
|
183
|
+
},
|
|
184
|
+
graceMs: this.config.graceMs,
|
|
185
|
+
signal,
|
|
186
|
+
// One explicit env map for the seam, layered so the trusted dshEnv
|
|
187
|
+
// snapshot beats both the caller's env and the terminal overrides; the
|
|
188
|
+
// subprocess service merges the whole map after its ambient scrub.
|
|
189
|
+
env: { ...ENV_OVERRIDES, ...spec.env, ...spec.dshEnv },
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/** The collect-mode readers the executor itself requested (present by construction). */
|
|
193
|
+
static collected(handle) {
|
|
194
|
+
const { stdout, stderr } = handle.collected;
|
|
195
|
+
/* v8 ignore start -- collect dispositions expose both readers by the seam contract; defensive. */
|
|
196
|
+
if (stdout === undefined || stderr === undefined) {
|
|
197
|
+
throw new Error('bash-local: subprocess implementation dropped a requested collect stream');
|
|
198
|
+
}
|
|
199
|
+
/* v8 ignore stop */
|
|
200
|
+
return { stdout, stderr };
|
|
201
|
+
}
|
|
202
|
+
async run(spec) {
|
|
203
|
+
return this.runArgv(spec, ['bash', '-c', spec.command]);
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Run an explicit argv with the foreground lifecycle, environment, output,
|
|
207
|
+
* timeout, and cancellation semantics of this executor. Subclasses use this
|
|
208
|
+
* after replacing the public command's shell argv at an execution boundary.
|
|
209
|
+
* @param spec - resolved execution settings and caller-owned command metadata.
|
|
210
|
+
* @param argv - exact executable and arguments to hand to `ctx.subprocess`.
|
|
211
|
+
* @returns the settled foreground result with collected output and cause facts.
|
|
212
|
+
*/
|
|
213
|
+
async runArgv(spec, argv) {
|
|
214
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
215
|
+
try {
|
|
216
|
+
// One deadline combines timeout and upstream cancellation; disposal clears its timer.
|
|
217
|
+
const d = __addDisposableResource(env_1, deadline(spec.signal, spec.timeoutMs, 'BASH_TIMEOUT'), false);
|
|
218
|
+
const handle = this.ctx.subprocess.spawn(this.spawnSpec(spec, argv, spec.stdoutMaxBytes, d.signal));
|
|
219
|
+
const outcome = await handle.done;
|
|
220
|
+
const collected = LocalBashExecutor.collected(handle);
|
|
221
|
+
// Only this executor's timeout reason counts as timedOut; outer deadlines count as aborts.
|
|
222
|
+
const timedOut = timeoutOf(d.signal, 'BASH_TIMEOUT') !== undefined;
|
|
223
|
+
const aborted = d.signal.aborted && !timedOut;
|
|
224
|
+
return {
|
|
225
|
+
...outcome,
|
|
226
|
+
timedOut,
|
|
227
|
+
aborted,
|
|
228
|
+
timeoutMs: spec.timeoutMs,
|
|
229
|
+
stdout: finalOutput(collected.stdout),
|
|
230
|
+
stderr: finalOutput(collected.stderr),
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
catch (e_1) {
|
|
234
|
+
env_1.error = e_1;
|
|
235
|
+
env_1.hasError = true;
|
|
236
|
+
}
|
|
237
|
+
finally {
|
|
238
|
+
__disposeResources(env_1);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
start(spec) {
|
|
242
|
+
return this.startArgv(spec, ['bash', '-c', spec.command]);
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Start an explicit argv with the background lifecycle, environment, output,
|
|
246
|
+
* cancellation, and process-tree ownership semantics of this executor.
|
|
247
|
+
* Subclasses use this after replacing the public command's shell argv at an
|
|
248
|
+
* execution boundary.
|
|
249
|
+
* @param spec - resolved execution settings and caller-owned command metadata.
|
|
250
|
+
* @param argv - exact executable and arguments to hand to `ctx.subprocess`.
|
|
251
|
+
* @returns the live background handle; spawn rejection settles it as killed.
|
|
252
|
+
*/
|
|
253
|
+
startArgv(spec, argv) {
|
|
254
|
+
// Background runs ignore timeoutMs; callers stop them through kill() or spec.signal.
|
|
255
|
+
const running = this.ctx.subprocess.spawn(this.spawnSpec(spec, argv, this.config.maxOutputBytes, spec.signal));
|
|
256
|
+
const collected = LocalBashExecutor.collected(running);
|
|
257
|
+
// A spawn failure produces no process output, so the subprocess service has nothing
|
|
258
|
+
// to buffer; the note is delivered exactly once through the read path.
|
|
259
|
+
let spawnFailureNote;
|
|
260
|
+
const consumeSpawnFailure = () => {
|
|
261
|
+
const note = spawnFailureNote ?? '';
|
|
262
|
+
spawnFailureNote = undefined;
|
|
263
|
+
return note;
|
|
264
|
+
};
|
|
265
|
+
let stdoutOffset = 0;
|
|
266
|
+
let stderrOffset = 0;
|
|
267
|
+
const proc = {
|
|
268
|
+
status: 'running',
|
|
269
|
+
exitCode: null,
|
|
270
|
+
signal: null,
|
|
271
|
+
done: running.done.then((outcome) => {
|
|
272
|
+
// Any signal termination is killed, including a command signaling itself.
|
|
273
|
+
if (proc.status === 'running') {
|
|
274
|
+
proc.status = spec.signal?.aborted === true || outcome.signal !== null ? 'killed' : 'completed';
|
|
275
|
+
}
|
|
276
|
+
proc.exitCode = outcome.exitCode;
|
|
277
|
+
proc.signal = outcome.signal;
|
|
278
|
+
this.onProcessDone(proc, collected.stderr.readFrom(0).text, false);
|
|
279
|
+
}, (error) => {
|
|
280
|
+
// Background spawn failures settle as killed and surface through the read path.
|
|
281
|
+
proc.status = 'killed';
|
|
282
|
+
spawnFailureNote = `spawn failed: ${String(error)}`;
|
|
283
|
+
this.onProcessDone(proc, spawnFailureNote, true, error);
|
|
284
|
+
}),
|
|
285
|
+
readOutput: () => {
|
|
286
|
+
const out = collected.stdout.readFrom(stdoutOffset);
|
|
287
|
+
const err = collected.stderr.readFrom(stderrOffset);
|
|
288
|
+
stdoutOffset = out.nextOffset;
|
|
289
|
+
stderrOffset = err.nextOffset;
|
|
290
|
+
// A failed spawn never produced process output, so the note and real
|
|
291
|
+
// stderr text are mutually exclusive.
|
|
292
|
+
const errText = err.text.length > 0 ? err.text : consumeSpawnFailure();
|
|
293
|
+
// Single newline between sections: stdout chunks usually end with one
|
|
294
|
+
// already; add it only when missing.
|
|
295
|
+
const separator = out.text.length > 0 && !out.text.endsWith('\n') ? '\n' : '';
|
|
296
|
+
const delta = out.text
|
|
297
|
+
+ (errText.length > 0 ? `${separator}[stderr]\n${errText}` : '');
|
|
298
|
+
return {
|
|
299
|
+
delta,
|
|
300
|
+
lossy: out.lossy || err.lossy,
|
|
301
|
+
...out.spillPath !== undefined ? { stdoutSpillPath: out.spillPath } : {},
|
|
302
|
+
...err.spillPath !== undefined ? { stderrSpillPath: err.spillPath } : {},
|
|
303
|
+
};
|
|
304
|
+
},
|
|
305
|
+
kill: () => {
|
|
306
|
+
if (proc.status !== 'running')
|
|
307
|
+
return false;
|
|
308
|
+
proc.status = 'killed';
|
|
309
|
+
running.terminate();
|
|
310
|
+
return true;
|
|
311
|
+
},
|
|
312
|
+
};
|
|
313
|
+
return proc;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Settlement hook for subclasses that attach execution facts to a process.
|
|
317
|
+
* Called after exit facts or spawn-failure output are stamped and before
|
|
318
|
+
* {@link ShellProcess.done} resolves. The base implementation is intentionally
|
|
319
|
+
* empty.
|
|
320
|
+
* @param _proc - the settled process handle.
|
|
321
|
+
* @param _stderr - the process's retained stderr tail used by subclasses for settlement classification.
|
|
322
|
+
* @param _spawnFailed - whether the subprocess promise rejected before a process started.
|
|
323
|
+
* @param _spawnError - the original spawn rejection reason, which may itself be undefined.
|
|
324
|
+
*/
|
|
325
|
+
onProcessDone(_proc, _stderr, _spawnFailed, _spawnError) { }
|
|
326
|
+
}
|
|
327
|
+
export default LocalBashExecutor;
|
|
328
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/timeout.d.ts
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal deadline helpers inlined from the upstream `dsh-timeout` package:
|
|
3
|
+
* one fused abort signal that fires on whichever of a parent signal or a
|
|
4
|
+
* timeout happens first, plus a classifier that tells which one fired. Used
|
|
5
|
+
* by the bash executor to distinguish its own timeout from upstream
|
|
6
|
+
* cancellation in the same `AbortSignal.reason`.
|
|
7
|
+
*
|
|
8
|
+
* @module @bo-agent/bash-local/timeout
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Maximum value Node's `setTimeout` accepts without clamping (2^31 − 1 ms).
|
|
12
|
+
* Mirrors the upstream `dsh-timeout` constant.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MAX_TIMER_DELAY_MS = 2147483647;
|
|
15
|
+
/**
|
|
16
|
+
* Clamp a per-call timeout to the configured default and upper bound, and
|
|
17
|
+
* validate it is a positive finite value within the Node timer range.
|
|
18
|
+
* @param request - the caller's timeout override (undefined ⇒ use the default).
|
|
19
|
+
* @param defaultMs - the configured default for this executor.
|
|
20
|
+
* @param maxMs - the configured upper bound for per-call overrides.
|
|
21
|
+
* @param sourceName - error label identifying the source of the bad value.
|
|
22
|
+
* @returns the clamped, validated timeout in milliseconds.
|
|
23
|
+
*/
|
|
24
|
+
export declare function clampTimeout(request: number | undefined, defaultMs: number, maxMs: number, sourceName: string): number;
|
|
25
|
+
/**
|
|
26
|
+
* A fused deadline: one `AbortSignal` that aborts when EITHER a parent signal
|
|
27
|
+
* fires OR `timeoutMs` elapses. Disposal clears the timer so an awaited
|
|
28
|
+
* teardown does not leak timers into a quiescent event loop.
|
|
29
|
+
*/
|
|
30
|
+
export interface Deadline extends Disposable {
|
|
31
|
+
readonly signal: AbortSignal;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Build a fused deadline that aborts when `parentSignal` aborts or after
|
|
35
|
+
* `timeoutMs` (whichever happens first). The abort `reason` distinguishes
|
|
36
|
+
* the two: parent aborts forward `parentSignal.reason`; the timeout path
|
|
37
|
+
* passes `cause`.
|
|
38
|
+
* @param parentSignal - upstream signal whose abort propagates; ignored when undefined.
|
|
39
|
+
* @param timeoutMs - milliseconds after which this deadline fires.
|
|
40
|
+
* @param cause - a unique string identifying this deadline to {@link timeoutOf}.
|
|
41
|
+
* @returns a disposable wrapper exposing the fused signal.
|
|
42
|
+
*/
|
|
43
|
+
export declare function deadline(parentSignal: AbortSignal | undefined, timeoutMs: number, cause: string): Deadline;
|
|
44
|
+
/**
|
|
45
|
+
* Was this signal aborted by THIS deadline's timeout? Returns the cause when
|
|
46
|
+
* the signal's reason matches it, otherwise undefined. A parent-signal abort
|
|
47
|
+
* reports the parent's reason, not the deadline's cause, so the two paths
|
|
48
|
+
* stay distinguishable.
|
|
49
|
+
* @param signal - the (already-settled) deadline signal.
|
|
50
|
+
* @param cause - the cause passed to {@link deadline}.
|
|
51
|
+
* @returns the cause when this deadline's timeout fired, else undefined.
|
|
52
|
+
*/
|
|
53
|
+
export declare function timeoutOf(signal: AbortSignal, cause: string): string | undefined;
|
|
54
|
+
//# sourceMappingURL=timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../src/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,eAAO,MAAM,kBAAkB,aAAgB,CAAA;AAE/C;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,MAAM,CAMR;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAS,SAAQ,UAAU;IAC1C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;CAC7B;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,YAAY,EAAE,WAAW,GAAG,SAAS,EACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,QAAQ,CAsBV;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhF"}
|
package/lib/timeout.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal deadline helpers inlined from the upstream `dsh-timeout` package:
|
|
3
|
+
* one fused abort signal that fires on whichever of a parent signal or a
|
|
4
|
+
* timeout happens first, plus a classifier that tells which one fired. Used
|
|
5
|
+
* by the bash executor to distinguish its own timeout from upstream
|
|
6
|
+
* cancellation in the same `AbortSignal.reason`.
|
|
7
|
+
*
|
|
8
|
+
* @module @bo-agent/bash-local/timeout
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Maximum value Node's `setTimeout` accepts without clamping (2^31 − 1 ms).
|
|
12
|
+
* Mirrors the upstream `dsh-timeout` constant.
|
|
13
|
+
*/
|
|
14
|
+
export const MAX_TIMER_DELAY_MS = 2_147_483_647;
|
|
15
|
+
/**
|
|
16
|
+
* Clamp a per-call timeout to the configured default and upper bound, and
|
|
17
|
+
* validate it is a positive finite value within the Node timer range.
|
|
18
|
+
* @param request - the caller's timeout override (undefined ⇒ use the default).
|
|
19
|
+
* @param defaultMs - the configured default for this executor.
|
|
20
|
+
* @param maxMs - the configured upper bound for per-call overrides.
|
|
21
|
+
* @param sourceName - error label identifying the source of the bad value.
|
|
22
|
+
* @returns the clamped, validated timeout in milliseconds.
|
|
23
|
+
*/
|
|
24
|
+
export function clampTimeout(request, defaultMs, maxMs, sourceName) {
|
|
25
|
+
const value = request ?? defaultMs;
|
|
26
|
+
if (!Number.isFinite(value) || value <= 0 || value > MAX_TIMER_DELAY_MS) {
|
|
27
|
+
throw new Error(`${sourceName} must be a positive finite number no greater than ${MAX_TIMER_DELAY_MS}, got ${value}`);
|
|
28
|
+
}
|
|
29
|
+
return Math.min(value, maxMs);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Build a fused deadline that aborts when `parentSignal` aborts or after
|
|
33
|
+
* `timeoutMs` (whichever happens first). The abort `reason` distinguishes
|
|
34
|
+
* the two: parent aborts forward `parentSignal.reason`; the timeout path
|
|
35
|
+
* passes `cause`.
|
|
36
|
+
* @param parentSignal - upstream signal whose abort propagates; ignored when undefined.
|
|
37
|
+
* @param timeoutMs - milliseconds after which this deadline fires.
|
|
38
|
+
* @param cause - a unique string identifying this deadline to {@link timeoutOf}.
|
|
39
|
+
* @returns a disposable wrapper exposing the fused signal.
|
|
40
|
+
*/
|
|
41
|
+
export function deadline(parentSignal, timeoutMs, cause) {
|
|
42
|
+
const controller = new AbortController();
|
|
43
|
+
let timer;
|
|
44
|
+
if (parentSignal?.aborted === true) {
|
|
45
|
+
controller.abort(parentSignal.reason);
|
|
46
|
+
}
|
|
47
|
+
else if (parentSignal !== undefined) {
|
|
48
|
+
parentSignal.addEventListener('abort', () => {
|
|
49
|
+
controller.abort(parentSignal.reason);
|
|
50
|
+
}, { once: true });
|
|
51
|
+
}
|
|
52
|
+
if (timeoutMs > 0) {
|
|
53
|
+
timer = setTimeout(() => { controller.abort(cause); }, timeoutMs);
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
signal: controller.signal,
|
|
57
|
+
[Symbol.dispose]() {
|
|
58
|
+
if (timer !== undefined) {
|
|
59
|
+
clearTimeout(timer);
|
|
60
|
+
timer = undefined;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Was this signal aborted by THIS deadline's timeout? Returns the cause when
|
|
67
|
+
* the signal's reason matches it, otherwise undefined. A parent-signal abort
|
|
68
|
+
* reports the parent's reason, not the deadline's cause, so the two paths
|
|
69
|
+
* stay distinguishable.
|
|
70
|
+
* @param signal - the (already-settled) deadline signal.
|
|
71
|
+
* @param cause - the cause passed to {@link deadline}.
|
|
72
|
+
* @returns the cause when this deadline's timeout fired, else undefined.
|
|
73
|
+
*/
|
|
74
|
+
export function timeoutOf(signal, cause) {
|
|
75
|
+
return signal.reason === cause ? cause : undefined;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../src/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAAA;AAE/C;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,OAA2B,EAC3B,SAAiB,EACjB,KAAa,EACb,UAAkB;IAElB,MAAM,KAAK,GAAG,OAAO,IAAI,SAAS,CAAA;IAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,kBAAkB,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,GAAG,UAAU,qDAAqD,kBAAkB,SAAS,KAAK,EAAE,CAAC,CAAA;IACvH,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC/B,CAAC;AAWD;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CACtB,YAAqC,EACrC,SAAiB,EACjB,KAAa;IAEb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,IAAI,KAAgD,CAAA;IACpD,IAAI,YAAY,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;QACnC,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;IACvC,CAAC;SAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1C,UAAU,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;QACvC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACpB,CAAC;IACD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAClE,CAAC;IACD,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,CAAC,MAAM,CAAC,OAAO,CAAC;YACd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,KAAK,GAAG,SAAS,CAAA;YACnB,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,MAAmB,EAAE,KAAa;IAC1D,OAAO,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AACpD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@bo-agent/bash-local",
|
|
3
|
+
"description": "Local bash executor: bash -c argv, managed process group, deadlines, model-friendly terminal environment, and stdout/stderr merging for background reads (standalone product, forked from the DeepSeek Harness)",
|
|
4
|
+
"version": "0.0.2",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "lib/index.js",
|
|
7
|
+
"types": "lib/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/index.d.ts",
|
|
11
|
+
"default": "./lib/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"lib/"
|
|
17
|
+
],
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"cordis": "^4.0.0-rc.10",
|
|
24
|
+
"schemastery": "^3.18.0",
|
|
25
|
+
"@bo-agent/inline": "0.0.2",
|
|
26
|
+
"@bo-agent/subprocess": "0.0.2",
|
|
27
|
+
"@bo-agent/shell": "0.0.2"
|
|
28
|
+
},
|
|
29
|
+
"peerDependencies": {
|
|
30
|
+
"cordis": "^4.0.0-rc.10",
|
|
31
|
+
"@bo-agent/inline": "0.0.2",
|
|
32
|
+
"@bo-agent/subprocess": "0.0.2",
|
|
33
|
+
"@bo-agent/shell": "0.0.2"
|
|
34
|
+
}
|
|
35
|
+
}
|