poe-code 12.0.7 → 12.0.8
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 -10
- package/dist/cli/commands/harness.js +1 -1
- package/dist/cli/commands/harness.js.map +1 -1
- package/dist/index.js +287 -262
- package/dist/index.js.map +3 -3
- package/dist/metafile.json +1 -1
- package/package.json +41 -16
- package/packages/agent-harness/dist/loader/extract-schema.js +1 -1
- package/packages/agent-harness/dist/loader/run.d.ts +1 -1
- package/packages/agent-harness/dist/loader/run.js +1 -1
- package/packages/package-lint/dist/bundle-policy.d.ts +13 -13
- package/packages/package-lint/dist/bundle-policy.js +13 -10
- package/packages/{safejs/dist/chunks/chunk-NDHGDM46.js → safe-js/dist/chunks/chunk-JGTN4U7F.js} +103 -103
- package/packages/{safejs/dist/chunks/chunk-NTYX57KK.js → safe-js/dist/chunks/chunk-PY5NKSTP.js} +23 -23
- package/packages/{safejs → safe-js}/dist/cli.js +8 -6
- package/packages/{safejs → safe-js}/dist/cli.js.map +2 -2
- package/packages/{safejs → safe-js}/dist/core.js +1 -1
- package/packages/{safejs → safe-js}/dist/index.js +6 -6
- package/packages/toolcraft-codemode/dist/execute.d.ts +1 -1
- package/packages/toolcraft-codemode/dist/execute.js +1 -1
- /package/packages/{safejs → safe-js}/dist/browser/chunks/chunk-MUKMA7ZY.js +0 -0
- /package/packages/{safejs → safe-js}/dist/browser/chunks/chunk-MUKMA7ZY.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/browser/safe-fs-core.js +0 -0
- /package/packages/{safejs → safe-js}/dist/browser/safe-fs-core.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/browser/safe-fs.js +0 -0
- /package/packages/{safejs → safe-js}/dist/browser/safe-fs.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/chunks/chunk-4YIDX44G.js +0 -0
- /package/packages/{safejs → safe-js}/dist/chunks/chunk-4YIDX44G.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/chunks/chunk-F7NY24BF.js +0 -0
- /package/packages/{safejs → safe-js}/dist/chunks/chunk-F7NY24BF.js.map +0 -0
- /package/packages/{safejs/dist/chunks/chunk-NDHGDM46.js.map → safe-js/dist/chunks/chunk-JGTN4U7F.js.map} +0 -0
- /package/packages/{safejs/dist/chunks/chunk-NTYX57KK.js.map → safe-js/dist/chunks/chunk-PY5NKSTP.js.map} +0 -0
- /package/packages/{safejs → safe-js}/dist/chunks/chunk-YBQUQPZV.js +0 -0
- /package/packages/{safejs → safe-js}/dist/chunks/chunk-YBQUQPZV.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/cli.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/core.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/core.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/dump.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/dump.js +0 -0
- /package/packages/{safejs → safe-js}/dist/error/format.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/error/format.js +0 -0
- /package/packages/{safejs → safe-js}/dist/error/shape.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/error/shape.js +0 -0
- /package/packages/{safejs → safe-js}/dist/error-codes.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/error-codes.js +0 -0
- /package/packages/{safejs → safe-js}/dist/example-runner.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/example-runner.js +0 -0
- /package/packages/{safejs → safe-js}/dist/graph-depth.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/graph-depth.js +0 -0
- /package/packages/{safejs → safe-js}/dist/index.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/index.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/arguments.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/arguments.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/async.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/async.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/budget.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/budget.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/cancel.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/cancel.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/exceptions.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/exceptions.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/float32.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/float32.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/generator.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/generator.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/collections.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/collections.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/console-json.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/console-json.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/error.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/error.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/float32array.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/float32array.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/math.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/math.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/misc.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/misc.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/object-array.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/object-array.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/regex.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/globals/regex.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/host-bridge.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/host-bridge.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/host-call.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/host-call.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/interpreter.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/interpreter.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/iteration.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/iteration.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/jobs.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/jobs.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/array.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/array.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/collection-callback.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/collection-callback.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/function.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/function.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/generator.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/generator.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/map.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/map.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/number.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/number.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/regex.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/regex.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/set.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/set.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/string.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/methods/string.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/patterns.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/patterns.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/promise-replay.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/promise-replay.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/promise-tracker.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/promise-tracker.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/promise.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/promise.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/regex/engine.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/regex/engine.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/regex/parse.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/regex/parse.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/resources.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/resources.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/running-state.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/running-state.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/scope.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/scope.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/values.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/values.js +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/var-hoist.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/interp/var-hoist.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/index.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/index.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-async-not-needed.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-async-not-needed.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-destructure-null-default.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-destructure-null-default.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-export-import-meta.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-export-import-meta.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-floating-promise.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-floating-promise.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-frontmatter-field-unused.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-frontmatter-field-unused.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-import-cycle.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-import-cycle.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-jsdoc-type.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-jsdoc-type.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-large-literal.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-large-literal.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-missing-async.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-missing-async.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-mutating-frozen.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-mutating-frozen.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-needless-template.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-needless-template.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-shadow-global.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-shadow-global.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-unbounded-loop.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-unbounded-loop.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-unreachable.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-unreachable.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-unused-import.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS-unused-import.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS001.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS001.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS003.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS003.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS004.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS004.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS005.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS005.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS006-007.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS006-007.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS009.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS009.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS010.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS010.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS011.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS011.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS013.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS013.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS014.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS014.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS015.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/AS015.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/known-globals.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/known-globals.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/module-registry.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/rules/module-registry.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/runtime-modules.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint/runtime-modules.js +0 -0
- /package/packages/{safejs → safe-js}/dist/lint.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/lint.js +0 -0
- /package/packages/{safejs → safe-js}/dist/loader/extract-block.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/loader/extract-block.js +0 -0
- /package/packages/{safejs → safe-js}/dist/loader/find-exported.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/loader/find-exported.js +0 -0
- /package/packages/{safejs → safe-js}/dist/loader/frontmatter.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/loader/frontmatter.js +0 -0
- /package/packages/{safejs → safe-js}/dist/migrate.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/migrate.js +0 -0
- /package/packages/{safejs → safe-js}/dist/migration-file.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/migration-file.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/agent.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/agent.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/canonical-path.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/canonical-path.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/env.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/env.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fail.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fail.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fs-config.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fs-config.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fs.conformance-cases.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fs.conformance-cases.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fs.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/fs.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/git.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/git.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/harness.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/harness.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/log.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/log.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/mcp-transport.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/mcp-transport.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/mcp.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/mcp.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/metric.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/metric.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/registry.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/registry.js +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/time.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/modules/time.js +0 -0
- /package/packages/{safejs → safe-js}/dist/observability/otel.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/observability/otel.js +0 -0
- /package/packages/{safejs → safe-js}/dist/output-stream.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/output-stream.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/assign-ids.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/assign-ids.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/bindings.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/bindings.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/format-error.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/format-error.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/hash.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/hash.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/parse-export.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/parse-export.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/parse-import-meta.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/parse-import-meta.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/parser.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/parser.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/tokenizer.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse/tokenizer.js +0 -0
- /package/packages/{safejs → safe-js}/dist/parse.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/parse.js +0 -0
- /package/packages/{safejs → safe-js}/dist/random.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/random.js +0 -0
- /package/packages/{safejs → safe-js}/dist/restore.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/restore.js +0 -0
- /package/packages/{safejs → safe-js}/dist/run.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/run.js +0 -0
- /package/packages/{safejs → safe-js}/dist/runner/run-harness.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/runner/run-harness.js +0 -0
- /package/packages/{safejs → safe-js}/dist/runner/signal-dump.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/runner/signal-dump.js +0 -0
- /package/packages/{safejs → safe-js}/dist/safe-fs-core.js +0 -0
- /package/packages/{safejs → safe-js}/dist/safe-fs-core.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/safe-fs-node.js +0 -0
- /package/packages/{safejs → safe-js}/dist/safe-fs-node.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/safe-fs.js +0 -0
- /package/packages/{safejs → safe-js}/dist/safe-fs.js.map +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/arguments.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/arguments.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/arrays.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/arrays.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/backend.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/backend.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/dump-format.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/dump-format.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/dump.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/dump.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/float32array.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/float32array.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/migration.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/migration.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/policy.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/policy.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/replay-data.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/replay-data.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/replay-inputs.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/replay-inputs.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/restore.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/restore.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/scheduler.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/scheduler.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/serialize.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/serialize.js +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/validation.d.ts +0 -0
- /package/packages/{safejs → safe-js}/dist/snapshot/validation.js +0 -0
package/packages/{safejs/dist/chunks/chunk-NTYX57KK.js → safe-js/dist/chunks/chunk-PY5NKSTP.js}
RENAMED
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
validateMigrationSemantics,
|
|
28
28
|
validateSnapshotData,
|
|
29
29
|
validateSnapshotMigration
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-JGTN4U7F.js";
|
|
31
31
|
import {
|
|
32
32
|
createFileSystem,
|
|
33
33
|
createNodeFileSystemAdapterRegistry,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
isPathWithin
|
|
41
41
|
} from "./chunk-YBQUQPZV.js";
|
|
42
42
|
|
|
43
|
-
// packages/
|
|
43
|
+
// packages/safe-js/src/migrate.ts
|
|
44
44
|
import { createHash } from "node:crypto";
|
|
45
45
|
function inspectSnapshotMigration(snapshot, options) {
|
|
46
46
|
assertSnapshotInactive(snapshot);
|
|
@@ -110,7 +110,7 @@ function canonicalData(value) {
|
|
|
110
110
|
return JSON.stringify(value);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
// packages/
|
|
113
|
+
// packages/safe-js/src/migration-file.ts
|
|
114
114
|
import { randomUUID } from "node:crypto";
|
|
115
115
|
import { link, open, readFile, unlink } from "node:fs/promises";
|
|
116
116
|
import path from "node:path";
|
|
@@ -186,7 +186,7 @@ async function migrateSnapshotFile(options) {
|
|
|
186
186
|
return { inspection, outputPath, dryRun: options.dryRun === true };
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
// packages/
|
|
189
|
+
// packages/safe-js/src/error/format.ts
|
|
190
190
|
var DEFAULT_MAX_MESSAGE_LENGTH = 1e4;
|
|
191
191
|
var MAX_CAUSE_DEPTH = 20;
|
|
192
192
|
function formatInterpreterError(first, second) {
|
|
@@ -440,7 +440,7 @@ function createCaretPadding(line, column, hasSource) {
|
|
|
440
440
|
return padding;
|
|
441
441
|
}
|
|
442
442
|
|
|
443
|
-
// packages/
|
|
443
|
+
// packages/safe-js/src/loader/extract-block.ts
|
|
444
444
|
function extractBlock(markdown, startLine = 1) {
|
|
445
445
|
let index = 0;
|
|
446
446
|
let line = startLine;
|
|
@@ -916,7 +916,7 @@ function isPlainRecord(value) {
|
|
|
916
916
|
// packages/frontmatter/src/stringify.ts
|
|
917
917
|
import { stringify } from "yaml";
|
|
918
918
|
|
|
919
|
-
// packages/
|
|
919
|
+
// packages/safe-js/src/loader/frontmatter.ts
|
|
920
920
|
function splitFrontmatter(markdown) {
|
|
921
921
|
try {
|
|
922
922
|
const parsed = parseFrontmatterDocument(markdown);
|
|
@@ -973,7 +973,7 @@ function countLines(value) {
|
|
|
973
973
|
return count;
|
|
974
974
|
}
|
|
975
975
|
|
|
976
|
-
// packages/
|
|
976
|
+
// packages/safe-js/src/lint/runtime-modules.ts
|
|
977
977
|
var AsyncFunction = (async () => void 0).constructor;
|
|
978
978
|
function createLintModulesFromRuntimeRegistry(modules) {
|
|
979
979
|
const entries = modules instanceof Map ? [...modules.entries()] : Object.entries(modules);
|
|
@@ -1002,7 +1002,7 @@ function isAsyncRuntimeExport(value) {
|
|
|
1002
1002
|
return typeof value === "function" && value.constructor === AsyncFunction;
|
|
1003
1003
|
}
|
|
1004
1004
|
|
|
1005
|
-
// packages/
|
|
1005
|
+
// packages/safe-js/src/modules/agent.ts
|
|
1006
1006
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
1007
1007
|
|
|
1008
1008
|
// packages/agent-defs/src/agents/claude-code.ts
|
|
@@ -1882,7 +1882,7 @@ function throwIfAborted(signal) {
|
|
|
1882
1882
|
}
|
|
1883
1883
|
}
|
|
1884
1884
|
|
|
1885
|
-
// packages/
|
|
1885
|
+
// packages/safe-js/src/modules/agent.ts
|
|
1886
1886
|
var AgentSpawnError = class extends Error {
|
|
1887
1887
|
result;
|
|
1888
1888
|
constructor(result) {
|
|
@@ -2784,7 +2784,7 @@ function isRecord2(value) {
|
|
|
2784
2784
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
2785
2785
|
}
|
|
2786
2786
|
|
|
2787
|
-
// packages/
|
|
2787
|
+
// packages/safe-js/src/modules/env.ts
|
|
2788
2788
|
var EnvAccessError = class extends Error {
|
|
2789
2789
|
code = "ENV_ACCESS_DENIED";
|
|
2790
2790
|
variable;
|
|
@@ -2868,7 +2868,7 @@ function readEnvName(value, label) {
|
|
|
2868
2868
|
return value;
|
|
2869
2869
|
}
|
|
2870
2870
|
|
|
2871
|
-
// packages/
|
|
2871
|
+
// packages/safe-js/src/modules/fail.ts
|
|
2872
2872
|
var HarnessFailure = class extends Error {
|
|
2873
2873
|
constructor(message) {
|
|
2874
2874
|
super(message);
|
|
@@ -2893,14 +2893,14 @@ function readNonEmptyString2(value, label) {
|
|
|
2893
2893
|
return value;
|
|
2894
2894
|
}
|
|
2895
2895
|
|
|
2896
|
-
// packages/
|
|
2896
|
+
// packages/safe-js/src/modules/fs.ts
|
|
2897
2897
|
import { constants as nodeFsConstants } from "node:fs";
|
|
2898
2898
|
import * as nodeFsPromises from "node:fs/promises";
|
|
2899
2899
|
import { dirname as dirname2, isAbsolute as isAbsolute2, resolve as resolve2 } from "node:path";
|
|
2900
2900
|
import { inspect } from "node:util";
|
|
2901
2901
|
import * as nodeUtil from "node:util";
|
|
2902
2902
|
|
|
2903
|
-
// packages/
|
|
2903
|
+
// packages/safe-js/src/modules/canonical-path.ts
|
|
2904
2904
|
import { basename, dirname, isAbsolute, relative, resolve, sep } from "node:path";
|
|
2905
2905
|
var MISSING_PATH_CODES = ["ENOENT", "ENOTDIR"];
|
|
2906
2906
|
var NOT_A_SYMLINK_CODES = [...MISSING_PATH_CODES, "EINVAL"];
|
|
@@ -3001,7 +3001,7 @@ async function readIdentity(stat, path5) {
|
|
|
3001
3001
|
}
|
|
3002
3002
|
}
|
|
3003
3003
|
|
|
3004
|
-
// packages/
|
|
3004
|
+
// packages/safe-js/src/modules/fs.ts
|
|
3005
3005
|
var BUFFER_BY_DEFAULT = {
|
|
3006
3006
|
readFile: true,
|
|
3007
3007
|
readdir: false,
|
|
@@ -3538,7 +3538,7 @@ function isObjectLike(value) {
|
|
|
3538
3538
|
return typeof value === "object" && value !== null || typeof value === "function";
|
|
3539
3539
|
}
|
|
3540
3540
|
|
|
3541
|
-
// packages/
|
|
3541
|
+
// packages/safe-js/src/modules/fs-config.ts
|
|
3542
3542
|
function validateFsConfig(value) {
|
|
3543
3543
|
const config = readConfigRecord(value, "fs config", ["adapter", "root", "cwd"]);
|
|
3544
3544
|
const paths = {};
|
|
@@ -3568,7 +3568,7 @@ async function resolveFsConfig(config, options = {}) {
|
|
|
3568
3568
|
return { adapter, ...paths };
|
|
3569
3569
|
}
|
|
3570
3570
|
|
|
3571
|
-
// packages/
|
|
3571
|
+
// packages/safe-js/src/modules/harness.ts
|
|
3572
3572
|
function makeHarnessModule(frontmatter, meta) {
|
|
3573
3573
|
const copiedFrontmatter = copyHarnessValue(frontmatter);
|
|
3574
3574
|
const constraints = readConstraints(copiedFrontmatter);
|
|
@@ -3615,7 +3615,7 @@ ${constraints.map((constraint) => `- ${constraint}`).join("\n")}`;
|
|
|
3615
3615
|
${prompt}`;
|
|
3616
3616
|
}
|
|
3617
3617
|
|
|
3618
|
-
// packages/
|
|
3618
|
+
// packages/safe-js/src/output-stream.ts
|
|
3619
3619
|
function createBrokenPipeState() {
|
|
3620
3620
|
return { closed: false };
|
|
3621
3621
|
}
|
|
@@ -3664,7 +3664,7 @@ function isBrokenPipeError(error) {
|
|
|
3664
3664
|
return hasOwnErrorCode(error, "EPIPE");
|
|
3665
3665
|
}
|
|
3666
3666
|
|
|
3667
|
-
// packages/
|
|
3667
|
+
// packages/safe-js/src/modules/log.ts
|
|
3668
3668
|
function makeLogModule(sink = createJsonlStdoutSink()) {
|
|
3669
3669
|
const normalizedSink = readSink(sink);
|
|
3670
3670
|
return {
|
|
@@ -3773,7 +3773,7 @@ function toJsonValue(value, seen) {
|
|
|
3773
3773
|
return String(value);
|
|
3774
3774
|
}
|
|
3775
3775
|
|
|
3776
|
-
// packages/
|
|
3776
|
+
// packages/safe-js/src/modules/metric.ts
|
|
3777
3777
|
function makeMetricModule(npmRunner) {
|
|
3778
3778
|
return {
|
|
3779
3779
|
async run(name) {
|
|
@@ -3810,7 +3810,7 @@ function readNonEmptyString4(value, label) {
|
|
|
3810
3810
|
return normalizedValue;
|
|
3811
3811
|
}
|
|
3812
3812
|
|
|
3813
|
-
// packages/
|
|
3813
|
+
// packages/safe-js/src/modules/mcp-transport.ts
|
|
3814
3814
|
import { spawn as spawn3 } from "node:child_process";
|
|
3815
3815
|
import path4 from "node:path";
|
|
3816
3816
|
|
|
@@ -7520,7 +7520,7 @@ function parseJsonRpcPayload(parsed) {
|
|
|
7520
7520
|
};
|
|
7521
7521
|
}
|
|
7522
7522
|
|
|
7523
|
-
// packages/
|
|
7523
|
+
// packages/safe-js/src/modules/mcp-transport.ts
|
|
7524
7524
|
function parseMcpConfig(source, directory) {
|
|
7525
7525
|
const parsed = JSON.parse(source);
|
|
7526
7526
|
const options = normalizeMcpOptions(parsed, [
|
|
@@ -7760,7 +7760,7 @@ function connectMcpTransport(server, options, signal) {
|
|
|
7760
7760
|
return { ready, close };
|
|
7761
7761
|
}
|
|
7762
7762
|
|
|
7763
|
-
// packages/
|
|
7763
|
+
// packages/safe-js/src/modules/mcp.ts
|
|
7764
7764
|
var DEFAULT_TOOL_BATCH_CONCURRENCY = 4;
|
|
7765
7765
|
function makeMcpModule(connectMcp) {
|
|
7766
7766
|
if (typeof connectMcp !== "function") {
|
|
@@ -8183,4 +8183,4 @@ export {
|
|
|
8183
8183
|
parseMcpConfig,
|
|
8184
8184
|
makeMcpModule
|
|
8185
8185
|
};
|
|
8186
|
-
//# sourceMappingURL=chunk-
|
|
8186
|
+
//# sourceMappingURL=chunk-PY5NKSTP.js.map
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
resolveFsConfig,
|
|
23
23
|
splitFrontmatter,
|
|
24
24
|
withBrokenPipeGuard
|
|
25
|
-
} from "./chunks/chunk-
|
|
25
|
+
} from "./chunks/chunk-PY5NKSTP.js";
|
|
26
26
|
import {
|
|
27
27
|
Budget,
|
|
28
28
|
SandboxError,
|
|
@@ -34,12 +34,12 @@ import {
|
|
|
34
34
|
replaceErrorStack,
|
|
35
35
|
restore,
|
|
36
36
|
run
|
|
37
|
-
} from "./chunks/chunk-
|
|
37
|
+
} from "./chunks/chunk-JGTN4U7F.js";
|
|
38
38
|
import "./chunks/chunk-F7NY24BF.js";
|
|
39
39
|
import "./chunks/chunk-YBQUQPZV.js";
|
|
40
40
|
import "./chunks/chunk-4YIDX44G.js";
|
|
41
41
|
|
|
42
|
-
// packages/
|
|
42
|
+
// packages/safe-js/src/cli.ts
|
|
43
43
|
import { mkdir, readFile, realpath, stat, writeFile } from "node:fs/promises";
|
|
44
44
|
import path, { dirname, extname } from "node:path";
|
|
45
45
|
import { formatWithOptions } from "node:util";
|
|
@@ -602,11 +602,13 @@ function formatConsoleArgs(args) {
|
|
|
602
602
|
}
|
|
603
603
|
function createUsage() {
|
|
604
604
|
return [
|
|
605
|
-
"Usage: poe-
|
|
606
|
-
" poe-
|
|
607
|
-
" poe-
|
|
605
|
+
"Usage: poe-safe-js [options] <script.md|script.safejs|script.ajs>",
|
|
606
|
+
" poe-safe-js migrate <checkpoint.json> --from <original.ajs> --inspect",
|
|
607
|
+
" poe-safe-js migrate <checkpoint.json> --from <original.ajs> --to <continuation.ajs>",
|
|
608
608
|
" --plan <migration.json> --output <new-checkpoint.json> [--dry-run]",
|
|
609
609
|
"",
|
|
610
|
+
"Compatibility alias: poe-safejs",
|
|
611
|
+
"",
|
|
610
612
|
"Options:",
|
|
611
613
|
" --fix apply lint fixes before running",
|
|
612
614
|
" --fs register the fs module: a real filesystem, unlike the agent,",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/cli.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\nimport { mkdir, readFile, realpath, stat, writeFile } from \"node:fs/promises\";\nimport path, { dirname, extname } from \"node:path\";\nimport { formatWithOptions } from \"node:util\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { hasOwnErrorCode } from \"./error-codes.js\";\nimport { formatInterpreterError } from \"./error/format.js\";\nimport { replaceErrorStack } from \"./error/shape.js\";\nimport { Budget, SandboxError } from \"./interp/budget.js\";\nimport { countLineBreaks, extractBlock, maskSource } from \"./loader/extract-block.js\";\nimport { splitFrontmatter } from \"./loader/frontmatter.js\";\nimport { lint, type Diagnostic, type Fix } from \"./lint.js\";\nimport { createLintModulesFromRuntimeRegistry } from \"./lint/runtime-modules.js\";\nimport { makeAgentModule } from \"./modules/agent.js\";\nimport { makeEnvModule, parseEnvConfig, type EnvModuleOptions } from \"./modules/env.js\";\nimport { makeFailModule } from \"./modules/fail.js\";\nimport { makeFsModule, type FsModuleOptions } from \"./modules/fs.js\";\nimport { parseFsConfig, resolveFsConfig } from \"./modules/fs-config.js\";\nimport { makeMcpModule } from \"./modules/mcp.js\";\nimport { parseMcpConfig, type McpModuleOptions } from \"./modules/mcp-transport.js\";\nimport { makeHarnessModule } from \"./modules/harness.js\";\nimport { makeLogModule, type LogModuleEntry } from \"./modules/log.js\";\nimport { makeMetricModule } from \"./modules/metric.js\";\nimport {\n createBrokenPipeState,\n createSafeOutputStream,\n withBrokenPipeGuard,\n type BrokenPipeState,\n type OutputStream\n} from \"./output-stream.js\";\nimport type { CallerInjectedBinding } from \"./interp/host-bridge.js\";\nimport type { ModuleExports, ModuleRegistry } from \"./modules/registry.js\";\nimport { parseModule } from \"./parse/parser.js\";\nimport { restore, type SafeJSSnapshot } from \"./restore.js\";\nimport { run, type RunResult } from \"./run.js\";\nimport { dump, dumpCurrent } from \"./snapshot/dump.js\";\nimport { migrateSnapshotFile, type SnapshotMigrationFileOptions } from \"./migration-file.js\";\n\ntype CliStream = OutputStream;\n\ntype CliProcess = Pick<NodeJS.Process, \"off\" | \"on\">;\n\ntype FileStats = {\n isFile(): boolean;\n};\n\nexport type ReadMarkdownFile = (filepath: string, encoding: \"utf8\") => Promise<string>;\nexport type WriteMarkdownFile = (\n filepath: string,\n source: string,\n options: { encoding: \"utf8\" }\n) => Promise<void>;\n\nexport type RunCliOptions = {\n cwd?: string;\n env?: EnvModuleOptions;\n mcp?: McpModuleOptions;\n modulesFor?: (\n frontmatter: Record<string, unknown>,\n meta: HarnessMeta,\n streams: { stderr: CliStream; stdout: CliStream }\n ) => ModuleRegistry;\n process?: CliProcess;\n readFile?: ReadMarkdownFile;\n stat?: (filepath: string) => Promise<FileStats>;\n stdout?: CliStream;\n stderr?: CliStream;\n writeFile?: WriteMarkdownFile;\n};\n\ntype HarnessMeta = {\n filepath: string;\n kind: unknown;\n version: unknown;\n};\n\ntype ParsedArgs = {\n filepath?: string;\n fix: boolean;\n fs: boolean;\n fsRoot?: string;\n fsConfig?: string;\n envConfig?: string;\n mcpConfig?: string;\n dataSize?: number;\n maxSteps?: number;\n restorePath?: string;\n snapshotPath?: string;\n};\n\ntype LoadedSource = {\n sourceOffset: number;\n fixRanges?: readonly Fix[\"range\"][];\n executableSource: string;\n frontmatter: Record<string, unknown>;\n isRawScript: boolean;\n rawSource: string;\n};\n\ntype CliRuntime = {\n registry: ModuleRegistry;\n};\n\nconst EXIT_RUNTIME = 1;\nconst EXIT_PARSE = 2;\nconst EXIT_BUDGET = 3;\nconst EXIT_SIGINT = 130;\n\nexport async function runCli(\n argv: readonly string[],\n options: RunCliOptions = {}\n): Promise<number> {\n const brokenPipe = createBrokenPipeState();\n const stdout = createSafeOutputStream(options.stdout ?? process.stdout, brokenPipe);\n const stderr = createSafeOutputStream(options.stderr ?? process.stderr, brokenPipe);\n\n return withBrokenPipeGuard(\n [options.stdout ?? process.stdout, options.stderr ?? process.stderr],\n brokenPipe,\n async () => {\n try {\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n stdout.write(`${createUsage()}\\n`);\n return 0;\n }\n\n if (argv[0] === \"migrate\") {\n const result = await migrateSnapshotFile({\n ...parseMigrationArgs(argv.slice(1)),\n cwd: options.cwd ?? readCurrentWorkingDirectory()\n });\n stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return 0;\n }\n const parsed = parseArgs(argv);\n if (parsed.filepath === undefined) {\n stderr.write(`${createUsage()}\\n`);\n return brokenPipe.closed ? 0 : EXIT_RUNTIME;\n }\n\n const cwd = options.cwd ?? readCurrentWorkingDirectory();\n const filepath = path.resolve(cwd, parsed.filepath);\n const configuredFs =\n parsed.fsConfig === undefined\n ? undefined\n : await resolveFsConfig(\n parseFsConfig(\n await (options.readFile ?? readFile)(path.resolve(cwd, parsed.fsConfig), \"utf8\")\n )\n );\n await assertHarnessFile({\n displayPath: parsed.filepath,\n filepath,\n statFile: options.stat ?? stat\n });\n\n return await runScriptFile(filepath, parsed, {\n cwd,\n configuredFs,\n env: options.env,\n mcp: options.mcp,\n modulesFor: options.modulesFor,\n process: options.process ?? process,\n readFile: options.readFile ?? readFile,\n brokenPipe,\n stderr,\n stdout,\n writeFile: options.writeFile ?? writeFile\n });\n } catch (error) {\n if (brokenPipe.closed) {\n return 0;\n }\n stderr.write(`${readErrorMessage(error)}\\n`);\n return brokenPipe.closed\n ? 0\n : error instanceof CliExitError\n ? error.exitCode\n : exitCodeForError(error);\n }\n }\n );\n}\n\nfunction readCurrentWorkingDirectory(): string {\n try {\n return process.cwd();\n } catch (error) {\n throw new Error(`Unable to resolve current working directory: ${readErrorMessage(error)}`);\n }\n}\n\nfunction parseMigrationArgs(argv: readonly string[]): SnapshotMigrationFileOptions {\n const result: SnapshotMigrationFileOptions = { snapshotPath: \"\", sourcePath: \"\" };\n const paths = new Map<string, \"sourcePath\" | \"targetSourcePath\" | \"planPath\" | \"outputPath\">([\n [\"--from\", \"sourcePath\"],\n [\"--to\", \"targetSourcePath\"],\n [\"--plan\", \"planPath\"],\n [\"--output\", \"outputPath\"]\n ]);\n const seen = new Set<string>();\n for (let index = 0; index < argv.length; index += 1) {\n const argument = argv[index]!;\n if (!argument.startsWith(\"-\")) {\n if (result.snapshotPath.length > 0)\n throw new TypeError(\"Migration accepts exactly one snapshot path.\");\n result.snapshotPath = argument;\n continue;\n }\n if (seen.has(argument)) throw new TypeError(`Duplicate migration option: ${argument}`);\n seen.add(argument);\n if (argument === \"--inspect\") {\n result.inspect = true;\n continue;\n }\n if (argument === \"--dry-run\") {\n result.dryRun = true;\n continue;\n }\n const key = paths.get(argument);\n if (key === undefined) throw new TypeError(`Unknown migration option: ${argument}`);\n const value = argv[++index];\n if (value === undefined || value.startsWith(\"--\"))\n throw new TypeError(`${argument} requires a path.`);\n result[key] = value;\n }\n return result;\n}\n\nfunction parseArgs(argv: readonly string[]): ParsedArgs {\n const parsed: ParsedArgs = {\n fix: false,\n fs: false\n };\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n\n if (arg === \"--fix\") {\n parsed.fix = true;\n continue;\n }\n\n if (arg === \"--fs\") {\n parsed.fs = true;\n continue;\n }\n\n if (arg === \"--fs-root\") {\n parsed.fsRoot = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--fs-config\") {\n if (parsed.fsConfig !== undefined) {\n throw new CliExitError(\"--fs-config may be specified only once.\", EXIT_RUNTIME);\n }\n const value = readFlagValue(argv, index, arg);\n if (value.trim().length === 0 || value.startsWith(\"--\")) {\n throw new CliExitError(\"--fs-config needs a JSON file path.\", EXIT_RUNTIME);\n }\n parsed.fsConfig = value;\n index += 1;\n continue;\n }\n\n if (arg === \"--mcp-config\") {\n parsed.mcpConfig = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--env-config\") {\n parsed.envConfig = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--snapshot\") {\n parsed.snapshotPath = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--restore\") {\n parsed.restorePath = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--max-steps\") {\n parsed.maxSteps = readPositiveInteger(readFlagValue(argv, index, arg), arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--data-size\") {\n parsed.dataSize = readPositiveInteger(readFlagValue(argv, index, arg), arg);\n index += 1;\n continue;\n }\n\n if (arg.startsWith(\"-\")) {\n throw new CliExitError(`Unknown flag: ${arg}`, EXIT_RUNTIME);\n }\n\n if (parsed.filepath !== undefined) {\n throw new CliExitError(`Unexpected argument: ${arg}`, EXIT_RUNTIME);\n }\n\n parsed.filepath = arg;\n }\n\n if (parsed.fsConfig !== undefined && (parsed.fs || parsed.fsRoot !== undefined)) {\n throw new CliExitError(\"--fs-config cannot be combined with --fs or --fs-root.\", EXIT_RUNTIME);\n }\n\n if (!parsed.fs && parsed.fsRoot !== undefined) {\n throw new CliExitError(\n \"--fs-root requires --fs. Pass --fs to give the script a filesystem confined to that root, or drop --fs-root.\",\n EXIT_RUNTIME\n );\n }\n\n return parsed;\n}\n\nfunction readFlagValue(argv: readonly string[], index: number, flag: string): string {\n const value = argv[index + 1];\n if (value === undefined || value.length === 0) {\n throw new CliExitError(`Missing value for ${flag}`, EXIT_RUNTIME);\n }\n\n return value;\n}\n\nfunction readPositiveInteger(value: string, flag: string): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliExitError(`${flag} must be a positive integer`, EXIT_RUNTIME);\n }\n\n return parsed;\n}\n\nasync function assertHarnessFile(input: {\n displayPath: string;\n filepath: string;\n statFile: (filepath: string) => Promise<FileStats>;\n}): Promise<void> {\n let stats: FileStats;\n try {\n stats = await input.statFile(input.filepath);\n } catch (error) {\n if (hasErrorCode(error, \"ENOENT\")) {\n throw new CliExitError(`File not found: ${input.displayPath}`, EXIT_RUNTIME);\n }\n\n throw error;\n }\n\n if (!stats.isFile()) {\n throw new CliExitError(`Harness path must point to a file: ${input.displayPath}`, EXIT_RUNTIME);\n }\n}\n\nasync function runScriptFile(\n filepath: string,\n parsed: ParsedArgs,\n options: {\n cwd: string;\n configuredFs: FsModuleOptions | undefined;\n env: EnvModuleOptions | undefined;\n mcp: McpModuleOptions | undefined;\n modulesFor: RunCliOptions[\"modulesFor\"];\n brokenPipe: BrokenPipeState;\n process: CliProcess;\n readFile: ReadMarkdownFile;\n stderr: CliStream;\n stdout: CliStream;\n writeFile: WriteMarkdownFile;\n }\n): Promise<number> {\n const loaded = loadExecutableSource(filepath, await options.readFile(filepath, \"utf8\"));\n const meta = {\n filepath,\n kind: loaded.frontmatter.kind,\n version: loaded.frontmatter.version\n };\n const runtime = createRuntime(loaded.frontmatter, meta, {\n fs: parsed.fs\n ? { root: path.resolve(options.cwd, parsed.fsRoot ?? dirname(filepath)) }\n : undefined,\n modulesFor: options.modulesFor,\n stderr: options.stderr,\n stdout: options.stdout\n });\n if (options.configuredFs !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"fs\")) throw new TypeError(\"fs is already registered by modulesFor.\");\n registry.set(\"fs\", toModuleExports(makeFsModule(options.configuredFs)));\n runtime.registry = registry;\n }\n let env = options.env;\n if (parsed.envConfig !== undefined) {\n if (env !== undefined)\n throw new TypeError(\"Pass environment options or --env-config, not both.\");\n const configPath = path.resolve(options.cwd, parsed.envConfig);\n env = parseEnvConfig(await options.readFile(configPath, \"utf8\"));\n }\n if (env !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"env\"))\n throw new TypeError(\"Environment is already registered by modulesFor.\");\n registry.set(\"env\", makeEnvModule(env));\n runtime.registry = registry;\n }\n let mcp = options.mcp;\n if (parsed.mcpConfig !== undefined) {\n if (mcp !== undefined) throw new TypeError(\"Pass MCP options or --mcp-config, not both.\");\n const configPath = path.resolve(options.cwd, parsed.mcpConfig);\n mcp = parseMcpConfig(await options.readFile(configPath, \"utf8\"), dirname(configPath));\n }\n if (mcp !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"mcp\")) throw new TypeError(\"MCP is already registered by modulesFor.\");\n registry.set(\"mcp\", makeMcpModule(mcp));\n runtime.registry = registry;\n }\n const modules = excludeHarnessModule(runtime.registry, loaded.isRawScript);\n let executableSource = loaded.executableSource;\n const lintResult = parsed.fix\n ? lint(executableSource, {\n allowedExportNames: [\"schema\"],\n filename: filepath,\n fix: true,\n fixRanges: loaded.fixRanges,\n frontmatterFields: Object.keys(loaded.frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n })\n : lint(executableSource, {\n allowedExportNames: [\"schema\"],\n filename: filepath,\n frontmatterFields: Object.keys(loaded.frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n });\n const diagnostics = Array.isArray(lintResult) ? lintResult : lintResult.diagnostics;\n\n if (!Array.isArray(lintResult)) {\n executableSource = lintResult.fixed;\n if (lintResult.fixed !== loaded.executableSource) {\n await options.writeFile(\n filepath,\n replaceExecutableSource(loaded.rawSource, loaded, lintResult.fixes),\n {\n encoding: \"utf8\"\n }\n );\n }\n }\n\n const lintErrors = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\");\n if (lintErrors.length > 0) {\n options.stderr.write(`Lint failed:\\n${formatDiagnostics(lintErrors)}\\n`);\n if (options.brokenPipe.closed) {\n return 0;\n }\n return lintErrors.some((diagnostic) => diagnostic.code === \"AS001\") ? EXIT_PARSE : EXIT_RUNTIME;\n }\n\n const lintWarnings = diagnostics.filter((diagnostic) => diagnostic.severity === \"warning\");\n if (lintWarnings.length > 0) {\n options.stderr.write(`Lint warnings:\\n${formatDiagnostics(lintWarnings)}\\n`);\n if (options.brokenPipe.closed) {\n return 0;\n }\n }\n\n const snapshot = await readRestoreSnapshot(parsed.restorePath, options);\n if (snapshot !== undefined) {\n restore(snapshot, { source: executableSource });\n }\n\n const abortController = new AbortController();\n let interrupted = false;\n let runPromise: Promise<RunResult> | undefined;\n let signalSnapshotWrite: Promise<void> | undefined;\n const onSigint = () => {\n interrupted = true;\n abortController.abort(createAbortError());\n options.stderr.write(\"Interrupted by SIGINT\\n\");\n\n if (parsed.snapshotPath !== undefined && runPromise !== undefined) {\n signalSnapshotWrite = writeCurrentSnapshot(runPromise, parsed.snapshotPath, options);\n }\n };\n\n options.process.on(\"SIGINT\", onSigint);\n try {\n runPromise = run(executableSource, {\n budget:\n parsed.maxSteps === undefined && parsed.dataSize === undefined\n ? undefined\n : new Budget({ dataSize: parsed.dataSize, maxSteps: parsed.maxSteps }),\n entryPointArgs: hasDefaultExport(executableSource, filepath) ? [] : undefined,\n filename: filepath,\n modules,\n signal: abortController.signal,\n sink: createConsoleSink(options.stdout, options.stderr),\n snapshot\n });\n const result = await runPromise;\n await signalSnapshotWrite;\n\n if (options.brokenPipe.closed) {\n return 0;\n }\n\n if (parsed.snapshotPath !== undefined) {\n await writeSnapshot(parsed.snapshotPath, await dump(result), options);\n }\n\n if (!result.ok) {\n options.stderr.write(\n `${formatInterpreterError(result.error, {\n filename: filepath,\n source: executableSource\n })}\\n`\n );\n if (options.brokenPipe.closed) {\n return 0;\n }\n return interrupted ? EXIT_SIGINT : exitCodeForError(result.error);\n }\n\n options.stdout.write(`${JSON.stringify({ ok: true, returnValue: result.returnValue })}\\n`);\n return options.brokenPipe.closed ? 0 : interrupted ? EXIT_SIGINT : 0;\n } catch (error) {\n await signalSnapshotWrite;\n if (parsed.snapshotPath !== undefined && runPromise !== undefined) {\n try {\n await writeSnapshot(\n parsed.snapshotPath,\n await dump(runPromise, { onFailure: \"checkpoint\" }),\n options\n );\n } catch (snapshotError) {\n options.stderr.write(\n `Failed to write recovery snapshot at ${parsed.snapshotPath}: ${readErrorMessage(snapshotError)}. Any existing snapshot may be stale.\\n`\n );\n }\n }\n if (options.brokenPipe.closed) {\n return 0;\n }\n options.stderr.write(\n `${formatInterpreterError(error, {\n filename: filepath,\n source: executableSource\n })}\\n`\n );\n return options.brokenPipe.closed ? 0 : interrupted ? EXIT_SIGINT : exitCodeForError(error);\n } finally {\n options.process.off(\"SIGINT\", onSigint);\n }\n}\n\nfunction loadExecutableSource(filepath: string, rawSource: string): LoadedSource {\n const source = stripByteOrderMark(rawSource);\n const byteOrderMarkLength = rawSource.length - source.length;\n\n if (isRawScriptExtension(extname(filepath))) {\n return {\n sourceOffset: byteOrderMarkLength,\n executableSource: source,\n frontmatter: {},\n isRawScript: true,\n rawSource\n };\n }\n\n const { frontmatter, body } = splitFrontmatter(source);\n const bodyStartOffset = rawSource.length - body.length;\n const executableBlock = extractBlock(body, countLineBreaks(rawSource, 0, bodyStartOffset) + 1);\n\n return {\n sourceOffset: 0,\n fixRanges: executableBlock.ranges.map(([start, end]) => [\n bodyStartOffset + start,\n bodyStartOffset + end\n ]),\n executableSource:\n maskSource(rawSource.slice(0, bodyStartOffset + executableBlock.startOffset)) +\n executableBlock.source,\n frontmatter,\n isRawScript: false,\n rawSource\n };\n}\n\nfunction isRawScriptExtension(extension: string): boolean {\n return extension === \".safejs\" || extension === \".ajs\";\n}\n\nfunction replaceExecutableSource(\n source: string,\n loaded: LoadedSource,\n fixes: readonly Fix[]\n): string {\n return fixes.reduce(\n (result, fix) =>\n `${result.slice(0, loaded.sourceOffset + fix.range[0])}${fix.replacement}${result.slice(loaded.sourceOffset + fix.range[1])}`,\n source\n );\n}\n\nfunction createRuntime(\n frontmatter: Record<string, unknown>,\n meta: HarnessMeta,\n options: {\n fs: FsModuleOptions | undefined;\n modulesFor: RunCliOptions[\"modulesFor\"];\n stderr: CliStream;\n stdout: CliStream;\n }\n): CliRuntime {\n if (options.modulesFor !== undefined) {\n return {\n registry: options.modulesFor(frontmatter, meta, {\n stderr: options.stderr,\n stdout: options.stdout\n })\n };\n }\n\n const state = {\n checkpointCount: 0,\n commitCount: 0,\n metricCalls: new Map<string, number>(),\n spawnCount: 0\n };\n const harness = makeHarnessModule(frontmatter, meta);\n const agent = makeAgentModule(async (input) => {\n state.spawnCount += 1;\n\n return {\n exitCode: 0,\n stdout: \"\",\n stderr: \"\",\n summary: `${input.agent} handled ${summarizePrompt(input.prompt)}`,\n durationMs: 25 * state.spawnCount\n };\n });\n const git = {\n async checkpoint() {\n state.checkpointCount += 1;\n return {\n head: `head-${state.checkpointCount}`,\n stashRef: `savepoint-${state.checkpointCount}`\n };\n },\n async commit() {\n state.commitCount += 1;\n return `commit-${state.commitCount}`;\n },\n async revert() {\n return undefined;\n }\n };\n const log = makeLogModule((entry) => {\n const normalized = normalizeLogEntry(entry);\n const stream = normalized.type === \"error\" ? options.stderr : options.stdout;\n stream.write(`${JSON.stringify(normalized)}\\n`);\n });\n const metric = makeMetricModule(async (scriptName) => `${readMetricScore(scriptName, state)}\\n`);\n\n return {\n registry: {\n agent: toModuleExports(agent),\n fail: toModuleExports(new Map([[\"default\", makeFailModule().default]])),\n // The one module here that is not a stub, so it is registered only when asked for.\n ...(options.fs === undefined ? {} : { fs: toModuleExports(makeFsModule(options.fs)) }),\n git: toModuleExports(\n new Map<string, CallerInjectedBinding>([\n [\"checkpoint\", git.checkpoint],\n [\"commit\", git.commit],\n [\"revert\", git.revert]\n ])\n ),\n harness: toModuleExports(harness),\n log: toModuleExports(log),\n metric: toModuleExports(metric)\n }\n };\n}\n\nasync function readRestoreSnapshot(\n restorePath: string | undefined,\n options: {\n cwd: string;\n readFile: ReadMarkdownFile;\n }\n): Promise<SafeJSSnapshot | undefined> {\n if (restorePath === undefined) {\n return undefined;\n }\n\n const snapshotPath = path.resolve(options.cwd, restorePath);\n let rawSnapshot: string;\n try {\n rawSnapshot = await options.readFile(snapshotPath, \"utf8\");\n } catch (error) {\n if (hasErrorCode(error, \"ENOENT\")) {\n throw new CliExitError(`Snapshot not found: ${restorePath}`, EXIT_RUNTIME);\n }\n\n throw error;\n }\n\n try {\n return JSON.parse(rawSnapshot) as SafeJSSnapshot;\n } catch (error) {\n throw new Error(`Failed to parse snapshot at ${restorePath}: ${readErrorMessage(error)}`);\n }\n}\n\nasync function writeCurrentSnapshot(\n result: PromiseLike<RunResult>,\n snapshotPath: string,\n options: {\n cwd: string;\n stderr: CliStream;\n writeFile: WriteMarkdownFile;\n }\n): Promise<void> {\n try {\n await writeSnapshot(snapshotPath, await dumpCurrent(result), options);\n } catch (error) {\n options.stderr.write(\n `Failed to write snapshot at ${snapshotPath}: ${readErrorMessage(error)}\\n`\n );\n }\n}\n\nasync function writeSnapshot(\n snapshotPath: string,\n content: string,\n options: {\n cwd: string;\n writeFile: WriteMarkdownFile;\n }\n): Promise<void> {\n const resolvedPath = path.resolve(options.cwd, snapshotPath);\n await mkdir(dirname(resolvedPath), { recursive: true });\n await options.writeFile(resolvedPath, content, { encoding: \"utf8\" });\n}\n\nfunction createConsoleSink(\n stdout: CliStream,\n stderr: CliStream\n): {\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n} {\n return {\n error(...args) {\n stderr.write(`${formatConsoleArgs(args)}\\n`);\n },\n log(...args) {\n stdout.write(`${formatConsoleArgs(args)}\\n`);\n }\n };\n}\n\nfunction formatConsoleArgs(args: readonly unknown[]): string {\n return formatWithOptions({ colors: false, depth: 4 }, ...args);\n}\n\nfunction createUsage(): string {\n return [\n \"Usage: poe-safejs [options] <script.md|script.safejs|script.ajs>\",\n \" poe-safejs migrate <checkpoint.json> --from <original.ajs> --inspect\",\n \" poe-safejs migrate <checkpoint.json> --from <original.ajs> --to <continuation.ajs>\",\n \" --plan <migration.json> --output <new-checkpoint.json> [--dry-run]\",\n \"\",\n \"Options:\",\n \" --fix apply lint fixes before running\",\n \" --fs register the fs module: a real filesystem, unlike the agent,\",\n \" git, and metric stubs this runner bundles\",\n \" --fs-root <path> directory --fs confines the script to (default: the script's\",\n \" directory)\",\n \" --fs-config <path> configure shared filesystem access from JSON (Node only)\",\n \" --mcp-config <path> register named MCP servers from an explicit JSON config\",\n \" --env-config <path> grant environment reads from an explicit JSON config\",\n \" --snapshot <path> write success/failure state; best-effort snapshot on SIGINT\",\n \" --restore <path> restore from a snapshot before running\",\n \" --max-steps <n> cap interpreter step budget\",\n \" --data-size <n> cap retained sandbox data units\",\n \" -h, --help print this help\",\n \"\",\n \"Exit codes:\",\n \" 0 success\",\n \" 1 runtime, usage, file, or restore error\",\n \" 2 parse error\",\n \" 3 budget exceeded\",\n \" 130 interrupted by SIGINT\"\n ].join(\"\\n\");\n}\n\nfunction formatDiagnostics(diagnostics: readonly Diagnostic[]): string {\n return diagnostics\n .map(\n (diagnostic) =>\n `${diagnostic.filename}:${diagnostic.line}:${diagnostic.column} ${diagnostic.code} ${diagnostic.message}`\n )\n .join(\"\\n\");\n}\n\nfunction exitCodeForError(error: unknown): number {\n if (error instanceof SandboxError && error.code === \"budgetExceeded\") {\n return EXIT_BUDGET;\n }\n\n if (isParseError(error)) {\n return EXIT_PARSE;\n }\n\n return EXIT_RUNTIME;\n}\n\nfunction isParseError(error: unknown): boolean {\n return error instanceof Error && error.name === \"ParseError\";\n}\n\nfunction hasDefaultExport(source: string, filename: string): boolean {\n return parseModule(source, filename).body.some(\n (statement) => statement.type === \"ExportDefaultDeclaration\"\n );\n}\n\nfunction excludeHarnessModule(modules: ModuleRegistry, isRawScript: boolean): ModuleRegistry {\n if (!isRawScript) {\n return modules;\n }\n\n if (modules instanceof Map) {\n const rawModules = new Map(modules);\n rawModules.delete(\"harness\");\n return rawModules;\n }\n\n const rawModules = Object.create(null) as Record<string, ModuleExports>;\n\n for (const [moduleName, moduleExports] of Object.entries(modules)) {\n if (moduleName !== \"harness\") {\n rawModules[moduleName] = moduleExports;\n }\n }\n\n return rawModules;\n}\n\nfunction stripByteOrderMark(source: string): string {\n return source.startsWith(\"\\uFEFF\") ? source.slice(1) : source;\n}\n\nfunction normalizeLogEntry(entry: LogModuleEntry): LogModuleEntry {\n return {\n ...entry,\n ts: \"2026-04-29T00:00:00.000Z\"\n };\n}\n\nfunction summarizePrompt(prompt: string): string {\n const normalizedPrompt = prompt.trim().replaceAll(\"\\n\", \" \");\n return normalizedPrompt.length <= 48 ? normalizedPrompt : `${normalizedPrompt.slice(0, 45)}...`;\n}\n\nfunction readMetricScore(\n scriptName: string,\n state: {\n metricCalls: Map<string, number>;\n }\n): number {\n const callCount = (state.metricCalls.get(scriptName) ?? 0) + 1;\n state.metricCalls.set(scriptName, callCount);\n\n if (scriptName === \"tests\" && callCount === 1) {\n return 10;\n }\n\n if (scriptName === \"tests\" && callCount === 2) {\n return 9;\n }\n\n return 9 + callCount;\n}\n\nfunction toModuleExports(value: unknown): ModuleExports {\n return value as ModuleExports;\n}\n\nfunction createAbortError(): Error {\n if (typeof DOMException === \"function\") {\n const error = new DOMException(\"This operation was aborted\", \"AbortError\");\n replaceErrorStack(error);\n return error;\n }\n\n const error = new Error(\"This operation was aborted\");\n error.name = \"AbortError\";\n replaceErrorStack(error);\n return error;\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n return hasOwnErrorCode(error, code);\n}\n\nfunction readErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n\nclass CliExitError extends Error {\n readonly exitCode: number;\n\n constructor(message: string, exitCode: number) {\n super(message);\n this.name = \"CliExitError\";\n this.exitCode = exitCode;\n }\n}\n\nasync function isDirectExecution(entryPoint: string | undefined): Promise<boolean> {\n if (typeof entryPoint !== \"string\" || entryPoint.length === 0) {\n return false;\n }\n\n try {\n const [resolvedEntryPoint, resolvedModule] = await Promise.all([\n realpath(path.resolve(entryPoint)),\n realpath(fileURLToPath(import.meta.url))\n ]);\n return resolvedEntryPoint === resolvedModule;\n } catch {\n return false;\n }\n}\n\nif (await isDirectExecution(process.argv[1])) {\n process.exitCode = await runCli(process.argv.slice(2));\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\nimport { mkdir, readFile, realpath, stat, writeFile } from \"node:fs/promises\";\nimport path, { dirname, extname } from \"node:path\";\nimport { formatWithOptions } from \"node:util\";\nimport { fileURLToPath } from \"node:url\";\n\nimport { hasOwnErrorCode } from \"./error-codes.js\";\nimport { formatInterpreterError } from \"./error/format.js\";\nimport { replaceErrorStack } from \"./error/shape.js\";\nimport { Budget, SandboxError } from \"./interp/budget.js\";\nimport { countLineBreaks, extractBlock, maskSource } from \"./loader/extract-block.js\";\nimport { splitFrontmatter } from \"./loader/frontmatter.js\";\nimport { lint, type Diagnostic, type Fix } from \"./lint.js\";\nimport { createLintModulesFromRuntimeRegistry } from \"./lint/runtime-modules.js\";\nimport { makeAgentModule } from \"./modules/agent.js\";\nimport { makeEnvModule, parseEnvConfig, type EnvModuleOptions } from \"./modules/env.js\";\nimport { makeFailModule } from \"./modules/fail.js\";\nimport { makeFsModule, type FsModuleOptions } from \"./modules/fs.js\";\nimport { parseFsConfig, resolveFsConfig } from \"./modules/fs-config.js\";\nimport { makeMcpModule } from \"./modules/mcp.js\";\nimport { parseMcpConfig, type McpModuleOptions } from \"./modules/mcp-transport.js\";\nimport { makeHarnessModule } from \"./modules/harness.js\";\nimport { makeLogModule, type LogModuleEntry } from \"./modules/log.js\";\nimport { makeMetricModule } from \"./modules/metric.js\";\nimport {\n createBrokenPipeState,\n createSafeOutputStream,\n withBrokenPipeGuard,\n type BrokenPipeState,\n type OutputStream\n} from \"./output-stream.js\";\nimport type { CallerInjectedBinding } from \"./interp/host-bridge.js\";\nimport type { ModuleExports, ModuleRegistry } from \"./modules/registry.js\";\nimport { parseModule } from \"./parse/parser.js\";\nimport { restore, type SafeJSSnapshot } from \"./restore.js\";\nimport { run, type RunResult } from \"./run.js\";\nimport { dump, dumpCurrent } from \"./snapshot/dump.js\";\nimport { migrateSnapshotFile, type SnapshotMigrationFileOptions } from \"./migration-file.js\";\n\ntype CliStream = OutputStream;\n\ntype CliProcess = Pick<NodeJS.Process, \"off\" | \"on\">;\n\ntype FileStats = {\n isFile(): boolean;\n};\n\nexport type ReadMarkdownFile = (filepath: string, encoding: \"utf8\") => Promise<string>;\nexport type WriteMarkdownFile = (\n filepath: string,\n source: string,\n options: { encoding: \"utf8\" }\n) => Promise<void>;\n\nexport type RunCliOptions = {\n cwd?: string;\n env?: EnvModuleOptions;\n mcp?: McpModuleOptions;\n modulesFor?: (\n frontmatter: Record<string, unknown>,\n meta: HarnessMeta,\n streams: { stderr: CliStream; stdout: CliStream }\n ) => ModuleRegistry;\n process?: CliProcess;\n readFile?: ReadMarkdownFile;\n stat?: (filepath: string) => Promise<FileStats>;\n stdout?: CliStream;\n stderr?: CliStream;\n writeFile?: WriteMarkdownFile;\n};\n\ntype HarnessMeta = {\n filepath: string;\n kind: unknown;\n version: unknown;\n};\n\ntype ParsedArgs = {\n filepath?: string;\n fix: boolean;\n fs: boolean;\n fsRoot?: string;\n fsConfig?: string;\n envConfig?: string;\n mcpConfig?: string;\n dataSize?: number;\n maxSteps?: number;\n restorePath?: string;\n snapshotPath?: string;\n};\n\ntype LoadedSource = {\n sourceOffset: number;\n fixRanges?: readonly Fix[\"range\"][];\n executableSource: string;\n frontmatter: Record<string, unknown>;\n isRawScript: boolean;\n rawSource: string;\n};\n\ntype CliRuntime = {\n registry: ModuleRegistry;\n};\n\nconst EXIT_RUNTIME = 1;\nconst EXIT_PARSE = 2;\nconst EXIT_BUDGET = 3;\nconst EXIT_SIGINT = 130;\n\nexport async function runCli(\n argv: readonly string[],\n options: RunCliOptions = {}\n): Promise<number> {\n const brokenPipe = createBrokenPipeState();\n const stdout = createSafeOutputStream(options.stdout ?? process.stdout, brokenPipe);\n const stderr = createSafeOutputStream(options.stderr ?? process.stderr, brokenPipe);\n\n return withBrokenPipeGuard(\n [options.stdout ?? process.stdout, options.stderr ?? process.stderr],\n brokenPipe,\n async () => {\n try {\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n stdout.write(`${createUsage()}\\n`);\n return 0;\n }\n\n if (argv[0] === \"migrate\") {\n const result = await migrateSnapshotFile({\n ...parseMigrationArgs(argv.slice(1)),\n cwd: options.cwd ?? readCurrentWorkingDirectory()\n });\n stdout.write(`${JSON.stringify(result, null, 2)}\\n`);\n return 0;\n }\n const parsed = parseArgs(argv);\n if (parsed.filepath === undefined) {\n stderr.write(`${createUsage()}\\n`);\n return brokenPipe.closed ? 0 : EXIT_RUNTIME;\n }\n\n const cwd = options.cwd ?? readCurrentWorkingDirectory();\n const filepath = path.resolve(cwd, parsed.filepath);\n const configuredFs =\n parsed.fsConfig === undefined\n ? undefined\n : await resolveFsConfig(\n parseFsConfig(\n await (options.readFile ?? readFile)(path.resolve(cwd, parsed.fsConfig), \"utf8\")\n )\n );\n await assertHarnessFile({\n displayPath: parsed.filepath,\n filepath,\n statFile: options.stat ?? stat\n });\n\n return await runScriptFile(filepath, parsed, {\n cwd,\n configuredFs,\n env: options.env,\n mcp: options.mcp,\n modulesFor: options.modulesFor,\n process: options.process ?? process,\n readFile: options.readFile ?? readFile,\n brokenPipe,\n stderr,\n stdout,\n writeFile: options.writeFile ?? writeFile\n });\n } catch (error) {\n if (brokenPipe.closed) {\n return 0;\n }\n stderr.write(`${readErrorMessage(error)}\\n`);\n return brokenPipe.closed\n ? 0\n : error instanceof CliExitError\n ? error.exitCode\n : exitCodeForError(error);\n }\n }\n );\n}\n\nfunction readCurrentWorkingDirectory(): string {\n try {\n return process.cwd();\n } catch (error) {\n throw new Error(`Unable to resolve current working directory: ${readErrorMessage(error)}`);\n }\n}\n\nfunction parseMigrationArgs(argv: readonly string[]): SnapshotMigrationFileOptions {\n const result: SnapshotMigrationFileOptions = { snapshotPath: \"\", sourcePath: \"\" };\n const paths = new Map<string, \"sourcePath\" | \"targetSourcePath\" | \"planPath\" | \"outputPath\">([\n [\"--from\", \"sourcePath\"],\n [\"--to\", \"targetSourcePath\"],\n [\"--plan\", \"planPath\"],\n [\"--output\", \"outputPath\"]\n ]);\n const seen = new Set<string>();\n for (let index = 0; index < argv.length; index += 1) {\n const argument = argv[index]!;\n if (!argument.startsWith(\"-\")) {\n if (result.snapshotPath.length > 0)\n throw new TypeError(\"Migration accepts exactly one snapshot path.\");\n result.snapshotPath = argument;\n continue;\n }\n if (seen.has(argument)) throw new TypeError(`Duplicate migration option: ${argument}`);\n seen.add(argument);\n if (argument === \"--inspect\") {\n result.inspect = true;\n continue;\n }\n if (argument === \"--dry-run\") {\n result.dryRun = true;\n continue;\n }\n const key = paths.get(argument);\n if (key === undefined) throw new TypeError(`Unknown migration option: ${argument}`);\n const value = argv[++index];\n if (value === undefined || value.startsWith(\"--\"))\n throw new TypeError(`${argument} requires a path.`);\n result[key] = value;\n }\n return result;\n}\n\nfunction parseArgs(argv: readonly string[]): ParsedArgs {\n const parsed: ParsedArgs = {\n fix: false,\n fs: false\n };\n\n for (let index = 0; index < argv.length; index += 1) {\n const arg = argv[index];\n\n if (arg === \"--fix\") {\n parsed.fix = true;\n continue;\n }\n\n if (arg === \"--fs\") {\n parsed.fs = true;\n continue;\n }\n\n if (arg === \"--fs-root\") {\n parsed.fsRoot = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--fs-config\") {\n if (parsed.fsConfig !== undefined) {\n throw new CliExitError(\"--fs-config may be specified only once.\", EXIT_RUNTIME);\n }\n const value = readFlagValue(argv, index, arg);\n if (value.trim().length === 0 || value.startsWith(\"--\")) {\n throw new CliExitError(\"--fs-config needs a JSON file path.\", EXIT_RUNTIME);\n }\n parsed.fsConfig = value;\n index += 1;\n continue;\n }\n\n if (arg === \"--mcp-config\") {\n parsed.mcpConfig = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--env-config\") {\n parsed.envConfig = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--snapshot\") {\n parsed.snapshotPath = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--restore\") {\n parsed.restorePath = readFlagValue(argv, index, arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--max-steps\") {\n parsed.maxSteps = readPositiveInteger(readFlagValue(argv, index, arg), arg);\n index += 1;\n continue;\n }\n\n if (arg === \"--data-size\") {\n parsed.dataSize = readPositiveInteger(readFlagValue(argv, index, arg), arg);\n index += 1;\n continue;\n }\n\n if (arg.startsWith(\"-\")) {\n throw new CliExitError(`Unknown flag: ${arg}`, EXIT_RUNTIME);\n }\n\n if (parsed.filepath !== undefined) {\n throw new CliExitError(`Unexpected argument: ${arg}`, EXIT_RUNTIME);\n }\n\n parsed.filepath = arg;\n }\n\n if (parsed.fsConfig !== undefined && (parsed.fs || parsed.fsRoot !== undefined)) {\n throw new CliExitError(\"--fs-config cannot be combined with --fs or --fs-root.\", EXIT_RUNTIME);\n }\n\n if (!parsed.fs && parsed.fsRoot !== undefined) {\n throw new CliExitError(\n \"--fs-root requires --fs. Pass --fs to give the script a filesystem confined to that root, or drop --fs-root.\",\n EXIT_RUNTIME\n );\n }\n\n return parsed;\n}\n\nfunction readFlagValue(argv: readonly string[], index: number, flag: string): string {\n const value = argv[index + 1];\n if (value === undefined || value.length === 0) {\n throw new CliExitError(`Missing value for ${flag}`, EXIT_RUNTIME);\n }\n\n return value;\n}\n\nfunction readPositiveInteger(value: string, flag: string): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new CliExitError(`${flag} must be a positive integer`, EXIT_RUNTIME);\n }\n\n return parsed;\n}\n\nasync function assertHarnessFile(input: {\n displayPath: string;\n filepath: string;\n statFile: (filepath: string) => Promise<FileStats>;\n}): Promise<void> {\n let stats: FileStats;\n try {\n stats = await input.statFile(input.filepath);\n } catch (error) {\n if (hasErrorCode(error, \"ENOENT\")) {\n throw new CliExitError(`File not found: ${input.displayPath}`, EXIT_RUNTIME);\n }\n\n throw error;\n }\n\n if (!stats.isFile()) {\n throw new CliExitError(`Harness path must point to a file: ${input.displayPath}`, EXIT_RUNTIME);\n }\n}\n\nasync function runScriptFile(\n filepath: string,\n parsed: ParsedArgs,\n options: {\n cwd: string;\n configuredFs: FsModuleOptions | undefined;\n env: EnvModuleOptions | undefined;\n mcp: McpModuleOptions | undefined;\n modulesFor: RunCliOptions[\"modulesFor\"];\n brokenPipe: BrokenPipeState;\n process: CliProcess;\n readFile: ReadMarkdownFile;\n stderr: CliStream;\n stdout: CliStream;\n writeFile: WriteMarkdownFile;\n }\n): Promise<number> {\n const loaded = loadExecutableSource(filepath, await options.readFile(filepath, \"utf8\"));\n const meta = {\n filepath,\n kind: loaded.frontmatter.kind,\n version: loaded.frontmatter.version\n };\n const runtime = createRuntime(loaded.frontmatter, meta, {\n fs: parsed.fs\n ? { root: path.resolve(options.cwd, parsed.fsRoot ?? dirname(filepath)) }\n : undefined,\n modulesFor: options.modulesFor,\n stderr: options.stderr,\n stdout: options.stdout\n });\n if (options.configuredFs !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"fs\")) throw new TypeError(\"fs is already registered by modulesFor.\");\n registry.set(\"fs\", toModuleExports(makeFsModule(options.configuredFs)));\n runtime.registry = registry;\n }\n let env = options.env;\n if (parsed.envConfig !== undefined) {\n if (env !== undefined)\n throw new TypeError(\"Pass environment options or --env-config, not both.\");\n const configPath = path.resolve(options.cwd, parsed.envConfig);\n env = parseEnvConfig(await options.readFile(configPath, \"utf8\"));\n }\n if (env !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"env\"))\n throw new TypeError(\"Environment is already registered by modulesFor.\");\n registry.set(\"env\", makeEnvModule(env));\n runtime.registry = registry;\n }\n let mcp = options.mcp;\n if (parsed.mcpConfig !== undefined) {\n if (mcp !== undefined) throw new TypeError(\"Pass MCP options or --mcp-config, not both.\");\n const configPath = path.resolve(options.cwd, parsed.mcpConfig);\n mcp = parseMcpConfig(await options.readFile(configPath, \"utf8\"), dirname(configPath));\n }\n if (mcp !== undefined) {\n const registry = new Map(\n runtime.registry instanceof Map ? runtime.registry : Object.entries(runtime.registry)\n );\n if (registry.has(\"mcp\")) throw new TypeError(\"MCP is already registered by modulesFor.\");\n registry.set(\"mcp\", makeMcpModule(mcp));\n runtime.registry = registry;\n }\n const modules = excludeHarnessModule(runtime.registry, loaded.isRawScript);\n let executableSource = loaded.executableSource;\n const lintResult = parsed.fix\n ? lint(executableSource, {\n allowedExportNames: [\"schema\"],\n filename: filepath,\n fix: true,\n fixRanges: loaded.fixRanges,\n frontmatterFields: Object.keys(loaded.frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n })\n : lint(executableSource, {\n allowedExportNames: [\"schema\"],\n filename: filepath,\n frontmatterFields: Object.keys(loaded.frontmatter),\n modules: createLintModulesFromRuntimeRegistry(modules)\n });\n const diagnostics = Array.isArray(lintResult) ? lintResult : lintResult.diagnostics;\n\n if (!Array.isArray(lintResult)) {\n executableSource = lintResult.fixed;\n if (lintResult.fixed !== loaded.executableSource) {\n await options.writeFile(\n filepath,\n replaceExecutableSource(loaded.rawSource, loaded, lintResult.fixes),\n {\n encoding: \"utf8\"\n }\n );\n }\n }\n\n const lintErrors = diagnostics.filter((diagnostic) => diagnostic.severity === \"error\");\n if (lintErrors.length > 0) {\n options.stderr.write(`Lint failed:\\n${formatDiagnostics(lintErrors)}\\n`);\n if (options.brokenPipe.closed) {\n return 0;\n }\n return lintErrors.some((diagnostic) => diagnostic.code === \"AS001\") ? EXIT_PARSE : EXIT_RUNTIME;\n }\n\n const lintWarnings = diagnostics.filter((diagnostic) => diagnostic.severity === \"warning\");\n if (lintWarnings.length > 0) {\n options.stderr.write(`Lint warnings:\\n${formatDiagnostics(lintWarnings)}\\n`);\n if (options.brokenPipe.closed) {\n return 0;\n }\n }\n\n const snapshot = await readRestoreSnapshot(parsed.restorePath, options);\n if (snapshot !== undefined) {\n restore(snapshot, { source: executableSource });\n }\n\n const abortController = new AbortController();\n let interrupted = false;\n let runPromise: Promise<RunResult> | undefined;\n let signalSnapshotWrite: Promise<void> | undefined;\n const onSigint = () => {\n interrupted = true;\n abortController.abort(createAbortError());\n options.stderr.write(\"Interrupted by SIGINT\\n\");\n\n if (parsed.snapshotPath !== undefined && runPromise !== undefined) {\n signalSnapshotWrite = writeCurrentSnapshot(runPromise, parsed.snapshotPath, options);\n }\n };\n\n options.process.on(\"SIGINT\", onSigint);\n try {\n runPromise = run(executableSource, {\n budget:\n parsed.maxSteps === undefined && parsed.dataSize === undefined\n ? undefined\n : new Budget({ dataSize: parsed.dataSize, maxSteps: parsed.maxSteps }),\n entryPointArgs: hasDefaultExport(executableSource, filepath) ? [] : undefined,\n filename: filepath,\n modules,\n signal: abortController.signal,\n sink: createConsoleSink(options.stdout, options.stderr),\n snapshot\n });\n const result = await runPromise;\n await signalSnapshotWrite;\n\n if (options.brokenPipe.closed) {\n return 0;\n }\n\n if (parsed.snapshotPath !== undefined) {\n await writeSnapshot(parsed.snapshotPath, await dump(result), options);\n }\n\n if (!result.ok) {\n options.stderr.write(\n `${formatInterpreterError(result.error, {\n filename: filepath,\n source: executableSource\n })}\\n`\n );\n if (options.brokenPipe.closed) {\n return 0;\n }\n return interrupted ? EXIT_SIGINT : exitCodeForError(result.error);\n }\n\n options.stdout.write(`${JSON.stringify({ ok: true, returnValue: result.returnValue })}\\n`);\n return options.brokenPipe.closed ? 0 : interrupted ? EXIT_SIGINT : 0;\n } catch (error) {\n await signalSnapshotWrite;\n if (parsed.snapshotPath !== undefined && runPromise !== undefined) {\n try {\n await writeSnapshot(\n parsed.snapshotPath,\n await dump(runPromise, { onFailure: \"checkpoint\" }),\n options\n );\n } catch (snapshotError) {\n options.stderr.write(\n `Failed to write recovery snapshot at ${parsed.snapshotPath}: ${readErrorMessage(snapshotError)}. Any existing snapshot may be stale.\\n`\n );\n }\n }\n if (options.brokenPipe.closed) {\n return 0;\n }\n options.stderr.write(\n `${formatInterpreterError(error, {\n filename: filepath,\n source: executableSource\n })}\\n`\n );\n return options.brokenPipe.closed ? 0 : interrupted ? EXIT_SIGINT : exitCodeForError(error);\n } finally {\n options.process.off(\"SIGINT\", onSigint);\n }\n}\n\nfunction loadExecutableSource(filepath: string, rawSource: string): LoadedSource {\n const source = stripByteOrderMark(rawSource);\n const byteOrderMarkLength = rawSource.length - source.length;\n\n if (isRawScriptExtension(extname(filepath))) {\n return {\n sourceOffset: byteOrderMarkLength,\n executableSource: source,\n frontmatter: {},\n isRawScript: true,\n rawSource\n };\n }\n\n const { frontmatter, body } = splitFrontmatter(source);\n const bodyStartOffset = rawSource.length - body.length;\n const executableBlock = extractBlock(body, countLineBreaks(rawSource, 0, bodyStartOffset) + 1);\n\n return {\n sourceOffset: 0,\n fixRanges: executableBlock.ranges.map(([start, end]) => [\n bodyStartOffset + start,\n bodyStartOffset + end\n ]),\n executableSource:\n maskSource(rawSource.slice(0, bodyStartOffset + executableBlock.startOffset)) +\n executableBlock.source,\n frontmatter,\n isRawScript: false,\n rawSource\n };\n}\n\nfunction isRawScriptExtension(extension: string): boolean {\n return extension === \".safejs\" || extension === \".ajs\";\n}\n\nfunction replaceExecutableSource(\n source: string,\n loaded: LoadedSource,\n fixes: readonly Fix[]\n): string {\n return fixes.reduce(\n (result, fix) =>\n `${result.slice(0, loaded.sourceOffset + fix.range[0])}${fix.replacement}${result.slice(loaded.sourceOffset + fix.range[1])}`,\n source\n );\n}\n\nfunction createRuntime(\n frontmatter: Record<string, unknown>,\n meta: HarnessMeta,\n options: {\n fs: FsModuleOptions | undefined;\n modulesFor: RunCliOptions[\"modulesFor\"];\n stderr: CliStream;\n stdout: CliStream;\n }\n): CliRuntime {\n if (options.modulesFor !== undefined) {\n return {\n registry: options.modulesFor(frontmatter, meta, {\n stderr: options.stderr,\n stdout: options.stdout\n })\n };\n }\n\n const state = {\n checkpointCount: 0,\n commitCount: 0,\n metricCalls: new Map<string, number>(),\n spawnCount: 0\n };\n const harness = makeHarnessModule(frontmatter, meta);\n const agent = makeAgentModule(async (input) => {\n state.spawnCount += 1;\n\n return {\n exitCode: 0,\n stdout: \"\",\n stderr: \"\",\n summary: `${input.agent} handled ${summarizePrompt(input.prompt)}`,\n durationMs: 25 * state.spawnCount\n };\n });\n const git = {\n async checkpoint() {\n state.checkpointCount += 1;\n return {\n head: `head-${state.checkpointCount}`,\n stashRef: `savepoint-${state.checkpointCount}`\n };\n },\n async commit() {\n state.commitCount += 1;\n return `commit-${state.commitCount}`;\n },\n async revert() {\n return undefined;\n }\n };\n const log = makeLogModule((entry) => {\n const normalized = normalizeLogEntry(entry);\n const stream = normalized.type === \"error\" ? options.stderr : options.stdout;\n stream.write(`${JSON.stringify(normalized)}\\n`);\n });\n const metric = makeMetricModule(async (scriptName) => `${readMetricScore(scriptName, state)}\\n`);\n\n return {\n registry: {\n agent: toModuleExports(agent),\n fail: toModuleExports(new Map([[\"default\", makeFailModule().default]])),\n // The one module here that is not a stub, so it is registered only when asked for.\n ...(options.fs === undefined ? {} : { fs: toModuleExports(makeFsModule(options.fs)) }),\n git: toModuleExports(\n new Map<string, CallerInjectedBinding>([\n [\"checkpoint\", git.checkpoint],\n [\"commit\", git.commit],\n [\"revert\", git.revert]\n ])\n ),\n harness: toModuleExports(harness),\n log: toModuleExports(log),\n metric: toModuleExports(metric)\n }\n };\n}\n\nasync function readRestoreSnapshot(\n restorePath: string | undefined,\n options: {\n cwd: string;\n readFile: ReadMarkdownFile;\n }\n): Promise<SafeJSSnapshot | undefined> {\n if (restorePath === undefined) {\n return undefined;\n }\n\n const snapshotPath = path.resolve(options.cwd, restorePath);\n let rawSnapshot: string;\n try {\n rawSnapshot = await options.readFile(snapshotPath, \"utf8\");\n } catch (error) {\n if (hasErrorCode(error, \"ENOENT\")) {\n throw new CliExitError(`Snapshot not found: ${restorePath}`, EXIT_RUNTIME);\n }\n\n throw error;\n }\n\n try {\n return JSON.parse(rawSnapshot) as SafeJSSnapshot;\n } catch (error) {\n throw new Error(`Failed to parse snapshot at ${restorePath}: ${readErrorMessage(error)}`);\n }\n}\n\nasync function writeCurrentSnapshot(\n result: PromiseLike<RunResult>,\n snapshotPath: string,\n options: {\n cwd: string;\n stderr: CliStream;\n writeFile: WriteMarkdownFile;\n }\n): Promise<void> {\n try {\n await writeSnapshot(snapshotPath, await dumpCurrent(result), options);\n } catch (error) {\n options.stderr.write(\n `Failed to write snapshot at ${snapshotPath}: ${readErrorMessage(error)}\\n`\n );\n }\n}\n\nasync function writeSnapshot(\n snapshotPath: string,\n content: string,\n options: {\n cwd: string;\n writeFile: WriteMarkdownFile;\n }\n): Promise<void> {\n const resolvedPath = path.resolve(options.cwd, snapshotPath);\n await mkdir(dirname(resolvedPath), { recursive: true });\n await options.writeFile(resolvedPath, content, { encoding: \"utf8\" });\n}\n\nfunction createConsoleSink(\n stdout: CliStream,\n stderr: CliStream\n): {\n error: (...args: unknown[]) => void;\n log: (...args: unknown[]) => void;\n} {\n return {\n error(...args) {\n stderr.write(`${formatConsoleArgs(args)}\\n`);\n },\n log(...args) {\n stdout.write(`${formatConsoleArgs(args)}\\n`);\n }\n };\n}\n\nfunction formatConsoleArgs(args: readonly unknown[]): string {\n return formatWithOptions({ colors: false, depth: 4 }, ...args);\n}\n\nfunction createUsage(): string {\n return [\n \"Usage: poe-safe-js [options] <script.md|script.safejs|script.ajs>\",\n \" poe-safe-js migrate <checkpoint.json> --from <original.ajs> --inspect\",\n \" poe-safe-js migrate <checkpoint.json> --from <original.ajs> --to <continuation.ajs>\",\n \" --plan <migration.json> --output <new-checkpoint.json> [--dry-run]\",\n \"\",\n \"Compatibility alias: poe-safejs\",\n \"\",\n \"Options:\",\n \" --fix apply lint fixes before running\",\n \" --fs register the fs module: a real filesystem, unlike the agent,\",\n \" git, and metric stubs this runner bundles\",\n \" --fs-root <path> directory --fs confines the script to (default: the script's\",\n \" directory)\",\n \" --fs-config <path> configure shared filesystem access from JSON (Node only)\",\n \" --mcp-config <path> register named MCP servers from an explicit JSON config\",\n \" --env-config <path> grant environment reads from an explicit JSON config\",\n \" --snapshot <path> write success/failure state; best-effort snapshot on SIGINT\",\n \" --restore <path> restore from a snapshot before running\",\n \" --max-steps <n> cap interpreter step budget\",\n \" --data-size <n> cap retained sandbox data units\",\n \" -h, --help print this help\",\n \"\",\n \"Exit codes:\",\n \" 0 success\",\n \" 1 runtime, usage, file, or restore error\",\n \" 2 parse error\",\n \" 3 budget exceeded\",\n \" 130 interrupted by SIGINT\"\n ].join(\"\\n\");\n}\n\nfunction formatDiagnostics(diagnostics: readonly Diagnostic[]): string {\n return diagnostics\n .map(\n (diagnostic) =>\n `${diagnostic.filename}:${diagnostic.line}:${diagnostic.column} ${diagnostic.code} ${diagnostic.message}`\n )\n .join(\"\\n\");\n}\n\nfunction exitCodeForError(error: unknown): number {\n if (error instanceof SandboxError && error.code === \"budgetExceeded\") {\n return EXIT_BUDGET;\n }\n\n if (isParseError(error)) {\n return EXIT_PARSE;\n }\n\n return EXIT_RUNTIME;\n}\n\nfunction isParseError(error: unknown): boolean {\n return error instanceof Error && error.name === \"ParseError\";\n}\n\nfunction hasDefaultExport(source: string, filename: string): boolean {\n return parseModule(source, filename).body.some(\n (statement) => statement.type === \"ExportDefaultDeclaration\"\n );\n}\n\nfunction excludeHarnessModule(modules: ModuleRegistry, isRawScript: boolean): ModuleRegistry {\n if (!isRawScript) {\n return modules;\n }\n\n if (modules instanceof Map) {\n const rawModules = new Map(modules);\n rawModules.delete(\"harness\");\n return rawModules;\n }\n\n const rawModules = Object.create(null) as Record<string, ModuleExports>;\n\n for (const [moduleName, moduleExports] of Object.entries(modules)) {\n if (moduleName !== \"harness\") {\n rawModules[moduleName] = moduleExports;\n }\n }\n\n return rawModules;\n}\n\nfunction stripByteOrderMark(source: string): string {\n return source.startsWith(\"\\uFEFF\") ? source.slice(1) : source;\n}\n\nfunction normalizeLogEntry(entry: LogModuleEntry): LogModuleEntry {\n return {\n ...entry,\n ts: \"2026-04-29T00:00:00.000Z\"\n };\n}\n\nfunction summarizePrompt(prompt: string): string {\n const normalizedPrompt = prompt.trim().replaceAll(\"\\n\", \" \");\n return normalizedPrompt.length <= 48 ? normalizedPrompt : `${normalizedPrompt.slice(0, 45)}...`;\n}\n\nfunction readMetricScore(\n scriptName: string,\n state: {\n metricCalls: Map<string, number>;\n }\n): number {\n const callCount = (state.metricCalls.get(scriptName) ?? 0) + 1;\n state.metricCalls.set(scriptName, callCount);\n\n if (scriptName === \"tests\" && callCount === 1) {\n return 10;\n }\n\n if (scriptName === \"tests\" && callCount === 2) {\n return 9;\n }\n\n return 9 + callCount;\n}\n\nfunction toModuleExports(value: unknown): ModuleExports {\n return value as ModuleExports;\n}\n\nfunction createAbortError(): Error {\n if (typeof DOMException === \"function\") {\n const error = new DOMException(\"This operation was aborted\", \"AbortError\");\n replaceErrorStack(error);\n return error;\n }\n\n const error = new Error(\"This operation was aborted\");\n error.name = \"AbortError\";\n replaceErrorStack(error);\n return error;\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n return hasOwnErrorCode(error, code);\n}\n\nfunction readErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n\n return String(error);\n}\n\nclass CliExitError extends Error {\n readonly exitCode: number;\n\n constructor(message: string, exitCode: number) {\n super(message);\n this.name = \"CliExitError\";\n this.exitCode = exitCode;\n }\n}\n\nasync function isDirectExecution(entryPoint: string | undefined): Promise<boolean> {\n if (typeof entryPoint !== \"string\" || entryPoint.length === 0) {\n return false;\n }\n\n try {\n const [resolvedEntryPoint, resolvedModule] = await Promise.all([\n realpath(path.resolve(entryPoint)),\n realpath(fileURLToPath(import.meta.url))\n ]);\n return resolvedEntryPoint === resolvedModule;\n } catch {\n return false;\n }\n}\n\nif (await isDirectExecution(process.argv[1])) {\n process.exitCode = await runCli(process.argv.slice(2));\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["rawModules", "error"]
|
|
7
7
|
}
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
runWithSpawnUsageAccumulator,
|
|
30
30
|
splitFrontmatter,
|
|
31
31
|
supportsSpawnMode
|
|
32
|
-
} from "./chunks/chunk-
|
|
32
|
+
} from "./chunks/chunk-PY5NKSTP.js";
|
|
33
33
|
import {
|
|
34
34
|
Budget,
|
|
35
35
|
FileSnapshotBackend,
|
|
@@ -51,12 +51,12 @@ import {
|
|
|
51
51
|
registerPendingHostCallPolicy,
|
|
52
52
|
restore,
|
|
53
53
|
run
|
|
54
|
-
} from "./chunks/chunk-
|
|
54
|
+
} from "./chunks/chunk-JGTN4U7F.js";
|
|
55
55
|
import "./chunks/chunk-F7NY24BF.js";
|
|
56
56
|
import "./chunks/chunk-YBQUQPZV.js";
|
|
57
57
|
import "./chunks/chunk-4YIDX44G.js";
|
|
58
58
|
|
|
59
|
-
// packages/
|
|
59
|
+
// packages/safe-js/src/runner/run-harness.ts
|
|
60
60
|
import { readFile, stat } from "node:fs/promises";
|
|
61
61
|
import { extname } from "node:path";
|
|
62
62
|
function getOwnEntry(record, key) {
|
|
@@ -295,7 +295,7 @@ function formatLintErrorMessage(diagnostics) {
|
|
|
295
295
|
).join("\n");
|
|
296
296
|
}
|
|
297
297
|
|
|
298
|
-
// packages/
|
|
298
|
+
// packages/safe-js/src/loader/find-exported.ts
|
|
299
299
|
function findExportedConstInitializer(module, name) {
|
|
300
300
|
for (const statement of module.body) {
|
|
301
301
|
if (statement.type === "ExportDefaultDeclaration") {
|
|
@@ -329,7 +329,7 @@ function findExportedConstInitializer(module, name) {
|
|
|
329
329
|
return void 0;
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
// packages/
|
|
332
|
+
// packages/safe-js/src/modules/git.ts
|
|
333
333
|
import { execFile } from "node:child_process";
|
|
334
334
|
import { mkdir, readlink, realpath, rm, stat as stat2 } from "node:fs/promises";
|
|
335
335
|
import { dirname, isAbsolute, resolve } from "node:path";
|
|
@@ -656,7 +656,7 @@ function hasOwnProperty(value, name) {
|
|
|
656
656
|
return Object.prototype.hasOwnProperty.call(value, name);
|
|
657
657
|
}
|
|
658
658
|
|
|
659
|
-
// packages/
|
|
659
|
+
// packages/safe-js/src/modules/time.ts
|
|
660
660
|
function makeTimeModule(options = {}) {
|
|
661
661
|
const hasDeterministicRandom = options.random !== void 0 || options.seed !== void 0;
|
|
662
662
|
const random = options.random ?? (options.seed === void 0 ? () => Math.random() : createSeededRandom(options.seed).next);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Diagnostic } from "../../
|
|
1
|
+
import { type Diagnostic } from "../../safe-js/dist/core.js";
|
|
2
2
|
import { type Group, type Scope } from "../../toolcraft/dist/index.js";
|
|
3
3
|
import type { CommandEntryList } from "./tree.js";
|
|
4
4
|
export type ExecuteBudgetOptions = {
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|