@paraharness/fs 0.0.0-stage → 0.2.0
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/LICENSE +21 -0
- package/README.md +80 -2
- package/dist/builders/create-fs-allow-only-guard-builder.d.ts +13 -0
- package/dist/builders/create-fs-allow-only-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-allow-only-guard-builder.js +22 -0
- package/dist/builders/create-fs-allow-only-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-allow-write-globs-lease-delta.d.ts +13 -0
- package/dist/builders/create-fs-allow-write-globs-lease-delta.d.ts.map +1 -0
- package/dist/builders/create-fs-allow-write-globs-lease-delta.js +20 -0
- package/dist/builders/create-fs-allow-write-globs-lease-delta.js.map +1 -0
- package/dist/builders/create-fs-boundary-guard-builder.d.ts +15 -0
- package/dist/builders/create-fs-boundary-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-boundary-guard-builder.js +20 -0
- package/dist/builders/create-fs-boundary-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-coding-tools.d.ts +22 -0
- package/dist/builders/create-fs-coding-tools.d.ts.map +1 -0
- package/dist/builders/create-fs-coding-tools.js +26 -0
- package/dist/builders/create-fs-coding-tools.js.map +1 -0
- package/dist/builders/create-fs-glob-matcher-builder.d.ts +14 -0
- package/dist/builders/create-fs-glob-matcher-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-glob-matcher-builder.js +24 -0
- package/dist/builders/create-fs-glob-matcher-builder.js.map +1 -0
- package/dist/builders/create-fs-glob-source-builder.d.ts +13 -0
- package/dist/builders/create-fs-glob-source-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-glob-source-builder.js +22 -0
- package/dist/builders/create-fs-glob-source-builder.js.map +1 -0
- package/dist/builders/create-fs-in-partition-predicate.d.ts +16 -0
- package/dist/builders/create-fs-in-partition-predicate.d.ts.map +1 -0
- package/dist/builders/create-fs-in-partition-predicate.js +25 -0
- package/dist/builders/create-fs-in-partition-predicate.js.map +1 -0
- package/dist/builders/create-fs-jsonl-lesson-store-builder.d.ts +29 -0
- package/dist/builders/create-fs-jsonl-lesson-store-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-jsonl-lesson-store-builder.js +37 -0
- package/dist/builders/create-fs-jsonl-lesson-store-builder.js.map +1 -0
- package/dist/builders/create-fs-max-files-mutated-builder.d.ts +13 -0
- package/dist/builders/create-fs-max-files-mutated-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-max-files-mutated-builder.js +21 -0
- package/dist/builders/create-fs-max-files-mutated-builder.js.map +1 -0
- package/dist/builders/create-fs-partition-map.d.ts +16 -0
- package/dist/builders/create-fs-partition-map.d.ts.map +1 -0
- package/dist/builders/create-fs-partition-map.js +34 -0
- package/dist/builders/create-fs-partition-map.js.map +1 -0
- package/dist/builders/create-fs-protect-guard-builder.d.ts +13 -0
- package/dist/builders/create-fs-protect-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-protect-guard-builder.js +22 -0
- package/dist/builders/create-fs-protect-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-read-only-guard-builder.d.ts +11 -0
- package/dist/builders/create-fs-read-only-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-read-only-guard-builder.js +15 -0
- package/dist/builders/create-fs-read-only-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-read-only-tools.d.ts +16 -0
- package/dist/builders/create-fs-read-only-tools.d.ts.map +1 -0
- package/dist/builders/create-fs-read-only-tools.js +24 -0
- package/dist/builders/create-fs-read-only-tools.js.map +1 -0
- package/dist/builders/create-fs-regex-check-builder.d.ts +34 -0
- package/dist/builders/create-fs-regex-check-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-regex-check-builder.js +58 -0
- package/dist/builders/create-fs-regex-check-builder.js.map +1 -0
- package/dist/builders/create-fs-require-read-before-write-guard-builder.d.ts +11 -0
- package/dist/builders/create-fs-require-read-before-write-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-require-read-before-write-guard-builder.js +15 -0
- package/dist/builders/create-fs-require-read-before-write-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-scoped-write-guard-builder.d.ts +15 -0
- package/dist/builders/create-fs-scoped-write-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-scoped-write-guard-builder.js +20 -0
- package/dist/builders/create-fs-scoped-write-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-secret-literals-guard-builder.d.ts +13 -0
- package/dist/builders/create-fs-secret-literals-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-secret-literals-guard-builder.js +21 -0
- package/dist/builders/create-fs-secret-literals-guard-builder.js.map +1 -0
- package/dist/builders/create-fs-telemetry-builder.d.ts +11 -0
- package/dist/builders/create-fs-telemetry-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-telemetry-builder.js +17 -0
- package/dist/builders/create-fs-telemetry-builder.js.map +1 -0
- package/dist/builders/create-fs-text-source-builder.d.ts +14 -0
- package/dist/builders/create-fs-text-source-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-text-source-builder.js +23 -0
- package/dist/builders/create-fs-text-source-builder.js.map +1 -0
- package/dist/builders/create-fs-write-guard-builder.d.ts +29 -0
- package/dist/builders/create-fs-write-guard-builder.d.ts.map +1 -0
- package/dist/builders/create-fs-write-guard-builder.js +29 -0
- package/dist/builders/create-fs-write-guard-builder.js.map +1 -0
- package/dist/builders/extract-fs-violated-paths.d.ts +14 -0
- package/dist/builders/extract-fs-violated-paths.d.ts.map +1 -0
- package/dist/builders/extract-fs-violated-paths.js +30 -0
- package/dist/builders/extract-fs-violated-paths.js.map +1 -0
- package/dist/builders/fs-namespace-contract.d.ts +195 -0
- package/dist/builders/fs-namespace-contract.d.ts.map +1 -0
- package/dist/builders/fs-namespace-contract.js +2 -0
- package/dist/builders/fs-namespace-contract.js.map +1 -0
- package/dist/builders/fs-namespace.d.ts +10 -0
- package/dist/builders/fs-namespace.d.ts.map +1 -0
- package/dist/builders/fs-namespace.js +52 -0
- package/dist/builders/fs-namespace.js.map +1 -0
- package/dist/builders/internal/build-fs-tool-nodes.d.ts +62 -0
- package/dist/builders/internal/build-fs-tool-nodes.d.ts.map +1 -0
- package/dist/builders/internal/build-fs-tool-nodes.js +107 -0
- package/dist/builders/internal/build-fs-tool-nodes.js.map +1 -0
- package/dist/builders/internal/fs-tool-input.schema.d.ts +80 -0
- package/dist/builders/internal/fs-tool-input.schema.d.ts.map +1 -0
- package/dist/builders/internal/fs-tool-input.schema.js +56 -0
- package/dist/builders/internal/fs-tool-input.schema.js.map +1 -0
- package/dist/executors/create-fs-executors.d.ts +11 -0
- package/dist/executors/create-fs-executors.d.ts.map +1 -0
- package/dist/executors/create-fs-executors.js +57 -0
- package/dist/executors/create-fs-executors.js.map +1 -0
- package/dist/executors/fs-check-tripwire-and-telemetry.d.ts +45 -0
- package/dist/executors/fs-check-tripwire-and-telemetry.d.ts.map +1 -0
- package/dist/executors/fs-check-tripwire-and-telemetry.js +99 -0
- package/dist/executors/fs-check-tripwire-and-telemetry.js.map +1 -0
- package/dist/executors/fs-executors.constants.d.ts +10 -0
- package/dist/executors/fs-executors.constants.d.ts.map +1 -0
- package/dist/executors/fs-executors.constants.js +10 -0
- package/dist/executors/fs-executors.constants.js.map +1 -0
- package/dist/executors/fs-glob-effect-matcher.d.ts +15 -0
- package/dist/executors/fs-glob-effect-matcher.d.ts.map +1 -0
- package/dist/executors/fs-glob-effect-matcher.js +37 -0
- package/dist/executors/fs-glob-effect-matcher.js.map +1 -0
- package/dist/executors/fs-path-guard-executors.d.ts +51 -0
- package/dist/executors/fs-path-guard-executors.d.ts.map +1 -0
- package/dist/executors/fs-path-guard-executors.js +60 -0
- package/dist/executors/fs-path-guard-executors.js.map +1 -0
- package/dist/executors/fs-read-tool-drivers.d.ts +35 -0
- package/dist/executors/fs-read-tool-drivers.d.ts.map +1 -0
- package/dist/executors/fs-read-tool-drivers.js +73 -0
- package/dist/executors/fs-read-tool-drivers.js.map +1 -0
- package/dist/executors/fs-source-executors.d.ts +31 -0
- package/dist/executors/fs-source-executors.d.ts.map +1 -0
- package/dist/executors/fs-source-executors.js +55 -0
- package/dist/executors/fs-source-executors.js.map +1 -0
- package/dist/executors/fs-tool-effect.d.ts +33 -0
- package/dist/executors/fs-tool-effect.d.ts.map +1 -0
- package/dist/executors/fs-tool-effect.js +2 -0
- package/dist/executors/fs-tool-effect.js.map +1 -0
- package/dist/executors/fs-write-guard-executors.d.ts +55 -0
- package/dist/executors/fs-write-guard-executors.d.ts.map +1 -0
- package/dist/executors/fs-write-guard-executors.js +64 -0
- package/dist/executors/fs-write-guard-executors.js.map +1 -0
- package/dist/executors/fs-write-tool-drivers.d.ts +24 -0
- package/dist/executors/fs-write-tool-drivers.d.ts.map +1 -0
- package/dist/executors/fs-write-tool-drivers.js +44 -0
- package/dist/executors/fs-write-tool-drivers.js.map +1 -0
- package/dist/executors/internal/add-mutated-paths-from-effects.d.ts +9 -0
- package/dist/executors/internal/add-mutated-paths-from-effects.d.ts.map +1 -0
- package/dist/executors/internal/add-mutated-paths-from-effects.js +24 -0
- package/dist/executors/internal/add-mutated-paths-from-effects.js.map +1 -0
- package/dist/executors/internal/check-paths-exist-at-base-ref.d.ts +12 -0
- package/dist/executors/internal/check-paths-exist-at-base-ref.d.ts.map +1 -0
- package/dist/executors/internal/check-paths-exist-at-base-ref.js +59 -0
- package/dist/executors/internal/check-paths-exist-at-base-ref.js.map +1 -0
- package/dist/executors/internal/collect-mutated-paths-since-base-ref.d.ts +13 -0
- package/dist/executors/internal/collect-mutated-paths-since-base-ref.d.ts.map +1 -0
- package/dist/executors/internal/collect-mutated-paths-since-base-ref.js +42 -0
- package/dist/executors/internal/collect-mutated-paths-since-base-ref.js.map +1 -0
- package/dist/executors/internal/collect-read-paths-from-effects.d.ts +12 -0
- package/dist/executors/internal/collect-read-paths-from-effects.d.ts.map +1 -0
- package/dist/executors/internal/collect-read-paths-from-effects.js +26 -0
- package/dist/executors/internal/collect-read-paths-from-effects.js.map +1 -0
- package/dist/executors/internal/compile-active-lease-write-matcher.d.ts +14 -0
- package/dist/executors/internal/compile-active-lease-write-matcher.d.ts.map +1 -0
- package/dist/executors/internal/compile-active-lease-write-matcher.js +50 -0
- package/dist/executors/internal/compile-active-lease-write-matcher.js.map +1 -0
- package/dist/executors/internal/compile-glob-or-exact-matcher.d.ts +12 -0
- package/dist/executors/internal/compile-glob-or-exact-matcher.d.ts.map +1 -0
- package/dist/executors/internal/compile-glob-or-exact-matcher.js +63 -0
- package/dist/executors/internal/compile-glob-or-exact-matcher.js.map +1 -0
- package/dist/executors/internal/compile-secret-patterns.d.ts +12 -0
- package/dist/executors/internal/compile-secret-patterns.d.ts.map +1 -0
- package/dist/executors/internal/compile-secret-patterns.js +27 -0
- package/dist/executors/internal/compile-secret-patterns.js.map +1 -0
- package/dist/executors/internal/create-effect-base-ref-path-lookup.d.ts +13 -0
- package/dist/executors/internal/create-effect-base-ref-path-lookup.d.ts.map +1 -0
- package/dist/executors/internal/create-effect-base-ref-path-lookup.js +33 -0
- package/dist/executors/internal/create-effect-base-ref-path-lookup.js.map +1 -0
- package/dist/executors/internal/create-fs-read-effect.d.ts +12 -0
- package/dist/executors/internal/create-fs-read-effect.d.ts.map +1 -0
- package/dist/executors/internal/create-fs-read-effect.js +22 -0
- package/dist/executors/internal/create-fs-read-effect.js.map +1 -0
- package/dist/executors/internal/create-fs-write-effect.d.ts +14 -0
- package/dist/executors/internal/create-fs-write-effect.d.ts.map +1 -0
- package/dist/executors/internal/create-fs-write-effect.js +24 -0
- package/dist/executors/internal/create-fs-write-effect.js.map +1 -0
- package/dist/executors/internal/describe-fs-edit-effects.d.ts +13 -0
- package/dist/executors/internal/describe-fs-edit-effects.d.ts.map +1 -0
- package/dist/executors/internal/describe-fs-edit-effects.js +31 -0
- package/dist/executors/internal/describe-fs-edit-effects.js.map +1 -0
- package/dist/executors/internal/describe-fs-write-effects.d.ts +13 -0
- package/dist/executors/internal/describe-fs-write-effects.d.ts.map +1 -0
- package/dist/executors/internal/describe-fs-write-effects.js +24 -0
- package/dist/executors/internal/describe-fs-write-effects.js.map +1 -0
- package/dist/executors/internal/enumerate-workspace-files-sync.d.ts +12 -0
- package/dist/executors/internal/enumerate-workspace-files-sync.d.ts.map +1 -0
- package/dist/executors/internal/enumerate-workspace-files-sync.js +52 -0
- package/dist/executors/internal/enumerate-workspace-files-sync.js.map +1 -0
- package/dist/executors/internal/enumerate-workspace-files.d.ts +13 -0
- package/dist/executors/internal/enumerate-workspace-files.d.ts.map +1 -0
- package/dist/executors/internal/enumerate-workspace-files.js +44 -0
- package/dist/executors/internal/enumerate-workspace-files.js.map +1 -0
- package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.d.ts +28 -0
- package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.d.ts.map +1 -0
- package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.js +37 -0
- package/dist/executors/internal/evaluate-fs-allow-and-protect-guards.js.map +1 -0
- package/dist/executors/internal/evaluate-fs-content-and-read-guards.d.ts +20 -0
- package/dist/executors/internal/evaluate-fs-content-and-read-guards.d.ts.map +1 -0
- package/dist/executors/internal/evaluate-fs-content-and-read-guards.js +46 -0
- package/dist/executors/internal/evaluate-fs-content-and-read-guards.js.map +1 -0
- package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.d.ts +31 -0
- package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.d.ts.map +1 -0
- package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.js +100 -0
- package/dist/executors/internal/evaluate-fs-write-and-boundary-guards.js.map +1 -0
- package/dist/executors/internal/execute-fs-edit-operation.d.ts +26 -0
- package/dist/executors/internal/execute-fs-edit-operation.d.ts.map +1 -0
- package/dist/executors/internal/execute-fs-edit-operation.js +25 -0
- package/dist/executors/internal/execute-fs-edit-operation.js.map +1 -0
- package/dist/executors/internal/execute-fs-write-operation.d.ts +22 -0
- package/dist/executors/internal/execute-fs-write-operation.d.ts.map +1 -0
- package/dist/executors/internal/execute-fs-write-operation.js +21 -0
- package/dist/executors/internal/execute-fs-write-operation.js.map +1 -0
- package/dist/executors/internal/extract-worktree-root-and-base-ref.d.ts +15 -0
- package/dist/executors/internal/extract-worktree-root-and-base-ref.d.ts.map +1 -0
- package/dist/executors/internal/extract-worktree-root-and-base-ref.js +24 -0
- package/dist/executors/internal/extract-worktree-root-and-base-ref.js.map +1 -0
- package/dist/executors/internal/filter-jailed-dirents.d.ts +25 -0
- package/dist/executors/internal/filter-jailed-dirents.d.ts.map +1 -0
- package/dist/executors/internal/filter-jailed-dirents.js +54 -0
- package/dist/executors/internal/filter-jailed-dirents.js.map +1 -0
- package/dist/executors/internal/fs-coding-tool-drivers.d.ts +38 -0
- package/dist/executors/internal/fs-coding-tool-drivers.d.ts.map +1 -0
- package/dist/executors/internal/fs-coding-tool-drivers.js +52 -0
- package/dist/executors/internal/fs-coding-tool-drivers.js.map +1 -0
- package/dist/executors/internal/fs-search-tool-drivers.d.ts +26 -0
- package/dist/executors/internal/fs-search-tool-drivers.d.ts.map +1 -0
- package/dist/executors/internal/fs-search-tool-drivers.js +37 -0
- package/dist/executors/internal/fs-search-tool-drivers.js.map +1 -0
- package/dist/executors/internal/glob-matcher-cache.constants.d.ts +20 -0
- package/dist/executors/internal/glob-matcher-cache.constants.d.ts.map +1 -0
- package/dist/executors/internal/glob-matcher-cache.constants.js +19 -0
- package/dist/executors/internal/glob-matcher-cache.constants.js.map +1 -0
- package/dist/executors/internal/grep-workspace-files.d.ts +23 -0
- package/dist/executors/internal/grep-workspace-files.d.ts.map +1 -0
- package/dist/executors/internal/grep-workspace-files.js +33 -0
- package/dist/executors/internal/grep-workspace-files.js.map +1 -0
- package/dist/executors/internal/project-violated-write-effects.d.ts +15 -0
- package/dist/executors/internal/project-violated-write-effects.d.ts.map +1 -0
- package/dist/executors/internal/project-violated-write-effects.js +67 -0
- package/dist/executors/internal/project-violated-write-effects.js.map +1 -0
- package/dist/executors/internal/resolve-jailed-worktree-path.d.ts +19 -0
- package/dist/executors/internal/resolve-jailed-worktree-path.d.ts.map +1 -0
- package/dist/executors/internal/resolve-jailed-worktree-path.js +101 -0
- package/dist/executors/internal/resolve-jailed-worktree-path.js.map +1 -0
- package/dist/executors/internal/secret-patterns.constants.d.ts +16 -0
- package/dist/executors/internal/secret-patterns.constants.d.ts.map +1 -0
- package/dist/executors/internal/secret-patterns.constants.js +30 -0
- package/dist/executors/internal/secret-patterns.constants.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/stores/fs-jsonl-lesson-store.d.ts +135 -0
- package/dist/stores/fs-jsonl-lesson-store.d.ts.map +1 -0
- package/dist/stores/fs-jsonl-lesson-store.js +155 -0
- package/dist/stores/fs-jsonl-lesson-store.js.map +1 -0
- package/dist/stores/internal/fs-jsonl-lesson-file-io.d.ts +129 -0
- package/dist/stores/internal/fs-jsonl-lesson-file-io.d.ts.map +1 -0
- package/dist/stores/internal/fs-jsonl-lesson-file-io.js +197 -0
- package/dist/stores/internal/fs-jsonl-lesson-file-io.js.map +1 -0
- package/dist/stores/internal/fs-lesson-definition-record.d.ts +19 -0
- package/dist/stores/internal/fs-lesson-definition-record.d.ts.map +1 -0
- package/dist/stores/internal/fs-lesson-definition-record.js +2 -0
- package/dist/stores/internal/fs-lesson-definition-record.js.map +1 -0
- package/dist/stores/internal/fs-lesson-lock-and-atomic-io.d.ts +51 -0
- package/dist/stores/internal/fs-lesson-lock-and-atomic-io.d.ts.map +1 -0
- package/dist/stores/internal/fs-lesson-lock-and-atomic-io.js +89 -0
- package/dist/stores/internal/fs-lesson-lock-and-atomic-io.js.map +1 -0
- package/dist/stores/internal/fs-lesson-relevance.d.ts +49 -0
- package/dist/stores/internal/fs-lesson-relevance.d.ts.map +1 -0
- package/dist/stores/internal/fs-lesson-relevance.js +113 -0
- package/dist/stores/internal/fs-lesson-relevance.js.map +1 -0
- package/dist/stores/internal/fs-lesson-stats-entry.d.ts +22 -0
- package/dist/stores/internal/fs-lesson-stats-entry.d.ts.map +1 -0
- package/dist/stores/internal/fs-lesson-stats-entry.js +2 -0
- package/dist/stores/internal/fs-lesson-stats-entry.js.map +1 -0
- package/package.json +72 -3
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { FsJsonlLessonStore } from '../stores/fs-jsonl-lesson-store.js';
|
|
2
|
+
import { collectFsTelemetry, evaluateFsQuotaTripwire, executeFsRegexCheck, } from './fs-check-tripwire-and-telemetry.js';
|
|
3
|
+
import { evaluateFsGlobEffectMatcher } from './fs-glob-effect-matcher.js';
|
|
4
|
+
import { evaluateFsAllowOnlyGuard, evaluateFsBoundaryGuard, evaluateFsProtectGuard, evaluateFsReadOnlyGuard, } from './fs-path-guard-executors.js';
|
|
5
|
+
import { createFsGlobToolDriver, createFsGrepToolDriver, createFsReadToolDriver, } from './fs-read-tool-drivers.js';
|
|
6
|
+
import { executeFsGlobSource, executeFsTextSource, } from './fs-source-executors.js';
|
|
7
|
+
import { evaluateFsRequireReadBeforeWriteGuard, evaluateFsScopedWriteGuard, evaluateFsSecretLiteralsGuard, evaluateFsWriteGuard, } from './fs-write-guard-executors.js';
|
|
8
|
+
import { createFsEditToolDriver, createFsWriteToolDriver, } from './fs-write-tool-drivers.js';
|
|
9
|
+
/**
|
|
10
|
+
* Creates a fresh `RuntimeExecutorRegistrySlice` registering all `@paraharness/fs` runtime executors and drivers.
|
|
11
|
+
*
|
|
12
|
+
* Registers `sources`, `checks`, `policyGuards`, `quotaTripwires`, `telemetryCollectors`,
|
|
13
|
+
* `effectMatchers`, `tools`, and `lessons` for `@paraharness/fs` AST nodes (`SPEC.md` §4.3).
|
|
14
|
+
*
|
|
15
|
+
* @returns {RuntimeExecutorRegistrySlice} Deeply frozen executor registry slice for `@paraharness/fs`.
|
|
16
|
+
*/
|
|
17
|
+
export function createFsExecutors() {
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
sources: Object.freeze({
|
|
20
|
+
'fs:text-source': executeFsTextSource,
|
|
21
|
+
'fs:glob-source': executeFsGlobSource,
|
|
22
|
+
}),
|
|
23
|
+
checks: Object.freeze({
|
|
24
|
+
'fs:regex-check': executeFsRegexCheck,
|
|
25
|
+
}),
|
|
26
|
+
policyGuards: Object.freeze({
|
|
27
|
+
'fs:boundary-guard': evaluateFsBoundaryGuard,
|
|
28
|
+
'fs:protect': evaluateFsProtectGuard,
|
|
29
|
+
'fs:read-only': evaluateFsReadOnlyGuard,
|
|
30
|
+
'fs:allow-only': evaluateFsAllowOnlyGuard,
|
|
31
|
+
'fs:write-guard': evaluateFsWriteGuard,
|
|
32
|
+
'fs:require-read-before-write': evaluateFsRequireReadBeforeWriteGuard,
|
|
33
|
+
'fs:scoped-write': evaluateFsScopedWriteGuard,
|
|
34
|
+
'fs:secret-literals': evaluateFsSecretLiteralsGuard,
|
|
35
|
+
}),
|
|
36
|
+
quotaTripwires: Object.freeze({
|
|
37
|
+
'fs:quota-tripwire': evaluateFsQuotaTripwire,
|
|
38
|
+
}),
|
|
39
|
+
telemetryCollectors: Object.freeze({
|
|
40
|
+
'fs:telemetry': collectFsTelemetry,
|
|
41
|
+
}),
|
|
42
|
+
effectMatchers: Object.freeze({
|
|
43
|
+
'fs:match-globs': evaluateFsGlobEffectMatcher,
|
|
44
|
+
}),
|
|
45
|
+
tools: Object.freeze({
|
|
46
|
+
'fs:read': createFsReadToolDriver(),
|
|
47
|
+
'fs:edit': createFsEditToolDriver(),
|
|
48
|
+
'fs:write': createFsWriteToolDriver(),
|
|
49
|
+
'fs:glob': createFsGlobToolDriver(),
|
|
50
|
+
'fs:grep': createFsGrepToolDriver(),
|
|
51
|
+
}),
|
|
52
|
+
lessons: Object.freeze({
|
|
53
|
+
'fs:jsonl-lesson-store': (node) => new FsJsonlLessonStore(node),
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=create-fs-executors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-fs-executors.js","sourceRoot":"","sources":["../../src/executors/create-fs-executors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,MAAM,CAA+B;QACjD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,gBAAgB,EAAE,mBAAmB;YACrC,gBAAgB,EAAE,mBAAmB;SACtC,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,mBAAmB;SACtC,CAAC;QACF,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC;YAC1B,mBAAmB,EAAE,uBAAuB;YAC5C,YAAY,EAAE,sBAAsB;YACpC,cAAc,EAAE,uBAAuB;YACvC,eAAe,EAAE,wBAAwB;YACzC,gBAAgB,EAAE,oBAAoB;YACtC,8BAA8B,EAAE,qCAAqC;YACrE,iBAAiB,EAAE,0BAA0B;YAC7C,oBAAoB,EAAE,6BAA6B;SACpD,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC;YAC5B,mBAAmB,EAAE,uBAAuB;SAC7C,CAAC;QACF,mBAAmB,EAAE,MAAM,CAAC,MAAM,CAAC;YACjC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QACF,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC;YAC5B,gBAAgB,EAAE,2BAA2B;SAC9C,CAAC;QACF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,SAAS,EAAE,sBAAsB,EAAE;YACnC,SAAS,EAAE,sBAAsB,EAAE;YACnC,UAAU,EAAE,uBAAuB,EAAE;YACrC,SAAS,EAAE,sBAAsB,EAAE;YACnC,SAAS,EAAE,sBAAsB,EAAE;SACpC,CAAC;QACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,uBAAuB,EAAE,CAAC,IAA4B,EAAsB,EAAE,CAC5E,IAAI,kBAAkB,CAAC,IAAI,CAAC;SAC/B,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { CheckEvaluationResult, FsQuotaTripwireNode, FsRegexCheckNode, FsTelemetryCollectorNode, QuotaTripwireEvaluationInput, QuotaTripwireEvaluationResult, StepExecutionContext, ToolEffect } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates an `FsRegexCheckNode` (`fs:regex-check`) strictly over mutated files matching `targetGlobs` (`SPEC.md` §4.3).
|
|
4
|
+
*
|
|
5
|
+
* Inspects files mutated in `ctx.observedEffects` or modified since `scopeHandle.baseRef` so
|
|
6
|
+
* pre-existing untouched repository files never trigger false deficits.
|
|
7
|
+
*
|
|
8
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
9
|
+
*
|
|
10
|
+
* @param {FsRegexCheckNode<THandle>} node - Passive regex check AST node.
|
|
11
|
+
* @param {void} _input - Unused check input parameter.
|
|
12
|
+
* @param {StepExecutionContext<THandle>} ctx - Step execution context.
|
|
13
|
+
*
|
|
14
|
+
* @returns {Promise<CheckEvaluationResult>} Check evaluation result with any matched deficits.
|
|
15
|
+
*/
|
|
16
|
+
export declare function executeFsRegexCheck<THandle = unknown>(node: FsRegexCheckNode<THandle>, _input: void, ctx: StepExecutionContext<THandle>): Promise<CheckEvaluationResult>;
|
|
17
|
+
/**
|
|
18
|
+
* Evaluates an `FsQuotaTripwireNode` (`fs:quota-tripwire`) after tool execution (`SPEC.md` §4.3).
|
|
19
|
+
*
|
|
20
|
+
* Trips when the total count of distinct mutated file paths across `accumulatedEffects`
|
|
21
|
+
* and `newEffects` exceeds `node.maxFilesMutated`.
|
|
22
|
+
*
|
|
23
|
+
* @param {FsQuotaTripwireNode} node - Quota tripwire AST node.
|
|
24
|
+
* @param {QuotaTripwireEvaluationInput} input - Accumulated and newly recorded tool effects.
|
|
25
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
26
|
+
*
|
|
27
|
+
* @returns {QuotaTripwireEvaluationResult} Tripwire result indicating whether the quota was exceeded.
|
|
28
|
+
*/
|
|
29
|
+
export declare function evaluateFsQuotaTripwire(node: FsQuotaTripwireNode, input: QuotaTripwireEvaluationInput, _ctx: StepExecutionContext<unknown>): QuotaTripwireEvaluationResult;
|
|
30
|
+
/**
|
|
31
|
+
* Collects deduplicated `filesRead` and `filesMutated` arrays from `observedEffects` (`fs:telemetry`).
|
|
32
|
+
*
|
|
33
|
+
* Populates `UniversalStepTelemetry.custom` for step receipts and interrupt mappers (`SPEC.md` §4.3).
|
|
34
|
+
*
|
|
35
|
+
* @param {FsTelemetryCollectorNode} _node - Telemetry collector AST node.
|
|
36
|
+
* @param {readonly ToolEffect[]} observedEffects - Observed tool effects in the step session.
|
|
37
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
38
|
+
*
|
|
39
|
+
* @returns {{ readonly filesRead: readonly string[]; readonly filesMutated: readonly string[] }} Frozen telemetry metrics object.
|
|
40
|
+
*/
|
|
41
|
+
export declare function collectFsTelemetry(_node: FsTelemetryCollectorNode, observedEffects: readonly ToolEffect[], _ctx: StepExecutionContext<unknown>): {
|
|
42
|
+
readonly filesRead: readonly string[];
|
|
43
|
+
readonly filesMutated: readonly string[];
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=fs-check-tripwire-and-telemetry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-check-tripwire-and-telemetry.d.ts","sourceRoot":"","sources":["../../src/executors/fs-check-tripwire-and-telemetry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,4BAA4B,EAC5B,6BAA6B,EAC7B,oBAAoB,EACpB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAM3B;;;;;;;;;;;;;GAaG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACzD,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC/B,MAAM,EAAE,IAAI,EACZ,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,qBAAqB,CAAC,CAmBhC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,4BAA4B,EACnC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,6BAA6B,CAW/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,wBAAwB,EAC/B,eAAe,EAAE,SAAS,UAAU,EAAE,EACtC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC;IAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAiBrF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { addMutatedPathsFromEffects } from './internal/add-mutated-paths-from-effects.js';
|
|
4
|
+
import { collectMutatedPathsSinceBaseRef } from './internal/collect-mutated-paths-since-base-ref.js';
|
|
5
|
+
import { compileGlobOrExactMatcher } from './internal/compile-glob-or-exact-matcher.js';
|
|
6
|
+
import { resolveJailedWorktreePath } from './internal/resolve-jailed-worktree-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* Evaluates an `FsRegexCheckNode` (`fs:regex-check`) strictly over mutated files matching `targetGlobs` (`SPEC.md` §4.3).
|
|
9
|
+
*
|
|
10
|
+
* Inspects files mutated in `ctx.observedEffects` or modified since `scopeHandle.baseRef` so
|
|
11
|
+
* pre-existing untouched repository files never trigger false deficits.
|
|
12
|
+
*
|
|
13
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
14
|
+
*
|
|
15
|
+
* @param {FsRegexCheckNode<THandle>} node - Passive regex check AST node.
|
|
16
|
+
* @param {void} _input - Unused check input parameter.
|
|
17
|
+
* @param {StepExecutionContext<THandle>} ctx - Step execution context.
|
|
18
|
+
*
|
|
19
|
+
* @returns {Promise<CheckEvaluationResult>} Check evaluation result with any matched deficits.
|
|
20
|
+
*/
|
|
21
|
+
export async function executeFsRegexCheck(node, _input, ctx) {
|
|
22
|
+
const mutatedPaths = collectMutatedPathsSinceBaseRef(ctx.observedEffects, ctx.scopeHandle);
|
|
23
|
+
const isTargetMatch = compileGlobOrExactMatcher(node.targetGlobs);
|
|
24
|
+
const cleanFlags = (node.forbidFlags ?? '').replace(/g/g, '');
|
|
25
|
+
const forbidRegex = new RegExp(node.forbidPattern, cleanFlags);
|
|
26
|
+
const deficits = [];
|
|
27
|
+
for (const relPath of mutatedPaths) {
|
|
28
|
+
if (!isTargetMatch(relPath))
|
|
29
|
+
continue;
|
|
30
|
+
const { absolutePath } = resolveJailedWorktreePath(ctx.scopeHandle, relPath, 'read');
|
|
31
|
+
if (!existsSync(absolutePath))
|
|
32
|
+
continue;
|
|
33
|
+
const content = await readFile(absolutePath, 'utf8');
|
|
34
|
+
if (forbidRegex.test(content)) {
|
|
35
|
+
deficits.push(`${relPath}: ${node.violationMessage}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return Object.freeze({
|
|
39
|
+
ok: deficits.length === 0,
|
|
40
|
+
deficits: Object.freeze(deficits),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Evaluates an `FsQuotaTripwireNode` (`fs:quota-tripwire`) after tool execution (`SPEC.md` §4.3).
|
|
45
|
+
*
|
|
46
|
+
* Trips when the total count of distinct mutated file paths across `accumulatedEffects`
|
|
47
|
+
* and `newEffects` exceeds `node.maxFilesMutated`.
|
|
48
|
+
*
|
|
49
|
+
* @param {FsQuotaTripwireNode} node - Quota tripwire AST node.
|
|
50
|
+
* @param {QuotaTripwireEvaluationInput} input - Accumulated and newly recorded tool effects.
|
|
51
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
52
|
+
*
|
|
53
|
+
* @returns {QuotaTripwireEvaluationResult} Tripwire result indicating whether the quota was exceeded.
|
|
54
|
+
*/
|
|
55
|
+
export function evaluateFsQuotaTripwire(node, input, _ctx) {
|
|
56
|
+
const mutatedPaths = new Set();
|
|
57
|
+
addMutatedPathsFromEffects(input.accumulatedEffects, mutatedPaths);
|
|
58
|
+
addMutatedPathsFromEffects(input.newEffects, mutatedPaths);
|
|
59
|
+
if (mutatedPaths.size > node.maxFilesMutated) {
|
|
60
|
+
return Object.freeze({
|
|
61
|
+
tripped: true,
|
|
62
|
+
reason: `Mutated ${String(mutatedPaths.size)} distinct files, exceeding maxFilesMutated(${String(node.maxFilesMutated)}).`,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
return Object.freeze({ tripped: false });
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Collects deduplicated `filesRead` and `filesMutated` arrays from `observedEffects` (`fs:telemetry`).
|
|
69
|
+
*
|
|
70
|
+
* Populates `UniversalStepTelemetry.custom` for step receipts and interrupt mappers (`SPEC.md` §4.3).
|
|
71
|
+
*
|
|
72
|
+
* @param {FsTelemetryCollectorNode} _node - Telemetry collector AST node.
|
|
73
|
+
* @param {readonly ToolEffect[]} observedEffects - Observed tool effects in the step session.
|
|
74
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
75
|
+
*
|
|
76
|
+
* @returns {{ readonly filesRead: readonly string[]; readonly filesMutated: readonly string[] }} Frozen telemetry metrics object.
|
|
77
|
+
*/
|
|
78
|
+
export function collectFsTelemetry(_node, observedEffects, _ctx) {
|
|
79
|
+
const filesRead = new Set();
|
|
80
|
+
const filesMutated = new Set();
|
|
81
|
+
for (const eff of observedEffects) {
|
|
82
|
+
if (eff.kind !== 'fs:effect')
|
|
83
|
+
continue;
|
|
84
|
+
const mode = eff.attributes?.['mode'];
|
|
85
|
+
const paths = eff.attributes?.['paths'];
|
|
86
|
+
if (!Array.isArray(paths))
|
|
87
|
+
continue;
|
|
88
|
+
const targetSet = eff.mutatesScope === true || mode === 'write' ? filesMutated : filesRead;
|
|
89
|
+
for (const p of paths) {
|
|
90
|
+
if (typeof p === 'string')
|
|
91
|
+
targetSet.add(p.replace(/\\/g, '/').replace(/^\.\//, ''));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return Object.freeze({
|
|
95
|
+
filesRead: Object.freeze([...filesRead]),
|
|
96
|
+
filesMutated: Object.freeze([...filesMutated]),
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=fs-check-tripwire-and-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-check-tripwire-and-telemetry.js","sourceRoot":"","sources":["../../src/executors/fs-check-tripwire-and-telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { RuntimeExecutorRegistrySlice } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Default frozen `RuntimeExecutorRegistrySlice` instance for `@paraharness/fs`.
|
|
4
|
+
*
|
|
5
|
+
* Pass to `createExecutorRegistry(fsExecutors, ...)` to register all `@paraharness/fs`
|
|
6
|
+
* sources, checks, policy guards, tripwires, telemetry collectors, effect matchers,
|
|
7
|
+
* tool drivers, and lesson stores.
|
|
8
|
+
*/
|
|
9
|
+
export declare const fsExecutors: RuntimeExecutorRegistrySlice;
|
|
10
|
+
//# sourceMappingURL=fs-executors.constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-executors.constants.d.ts","sourceRoot":"","sources":["../../src/executors/fs-executors.constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAGtE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,EAAE,4BAAkD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createFsExecutors } from './create-fs-executors.js';
|
|
2
|
+
/**
|
|
3
|
+
* Default frozen `RuntimeExecutorRegistrySlice` instance for `@paraharness/fs`.
|
|
4
|
+
*
|
|
5
|
+
* Pass to `createExecutorRegistry(fsExecutors, ...)` to register all `@paraharness/fs`
|
|
6
|
+
* sources, checks, policy guards, tripwires, telemetry collectors, effect matchers,
|
|
7
|
+
* tool drivers, and lesson stores.
|
|
8
|
+
*/
|
|
9
|
+
export const fsExecutors = createFsExecutors();
|
|
10
|
+
//# sourceMappingURL=fs-executors.constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-executors.constants.js","sourceRoot":"","sources":["../../src/executors/fs-executors.constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAiC,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { FsGlobMatcherNode, StepExecutionContext, ToolEffect } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates an `FsGlobMatcherNode` (`fs:match-globs`) against a `ToolEffect` (`SPEC.md` §3.5 & §4.3).
|
|
4
|
+
*
|
|
5
|
+
* Matches both exact normalized file paths (including bracketed routes like `app/users/[id]/page.test.tsx`)
|
|
6
|
+
* and `picomatch` glob patterns, checking access mode compatibility (`'read' | 'write' | 'any'`).
|
|
7
|
+
*
|
|
8
|
+
* @param {FsGlobMatcherNode} node - Passive glob matcher AST node.
|
|
9
|
+
* @param {ToolEffect} effect - Observed or proposed tool effect to test.
|
|
10
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
11
|
+
*
|
|
12
|
+
* @returns {boolean} True when `effect` is a matching `fs:effect` covered by `node`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function evaluateFsGlobEffectMatcher(node: FsGlobMatcherNode, effect: ToolEffect, _ctx: StepExecutionContext<unknown>): boolean;
|
|
15
|
+
//# sourceMappingURL=fs-glob-effect-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-glob-effect-matcher.d.ts","sourceRoot":"","sources":["../../src/executors/fs-glob-effect-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,OAAO,CAsBT"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { compileGlobOrExactMatcher } from './internal/compile-glob-or-exact-matcher.js';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates an `FsGlobMatcherNode` (`fs:match-globs`) against a `ToolEffect` (`SPEC.md` §3.5 & §4.3).
|
|
4
|
+
*
|
|
5
|
+
* Matches both exact normalized file paths (including bracketed routes like `app/users/[id]/page.test.tsx`)
|
|
6
|
+
* and `picomatch` glob patterns, checking access mode compatibility (`'read' | 'write' | 'any'`).
|
|
7
|
+
*
|
|
8
|
+
* @param {FsGlobMatcherNode} node - Passive glob matcher AST node.
|
|
9
|
+
* @param {ToolEffect} effect - Observed or proposed tool effect to test.
|
|
10
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
11
|
+
*
|
|
12
|
+
* @returns {boolean} True when `effect` is a matching `fs:effect` covered by `node`.
|
|
13
|
+
*/
|
|
14
|
+
export function evaluateFsGlobEffectMatcher(node, effect, _ctx) {
|
|
15
|
+
if (effect.kind !== 'fs:effect') {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
const effectMode = effect.attributes?.['mode'];
|
|
19
|
+
if (node.mode === 'read' && effectMode !== 'read') {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
if (node.mode === 'write' && effectMode !== 'write' && effect.mutatesScope !== true) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const rawPaths = effect.attributes?.['paths'];
|
|
26
|
+
if (!Array.isArray(rawPaths) || rawPaths.length === 0) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const isMatch = compileGlobOrExactMatcher(node.globs);
|
|
30
|
+
for (const rawPath of rawPaths) {
|
|
31
|
+
if (typeof rawPath === 'string' && isMatch(rawPath)) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=fs-glob-effect-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-glob-effect-matcher.js","sourceRoot":"","sources":["../../src/executors/fs-glob-effect-matcher.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AAExF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAuB,EACvB,MAAkB,EAClB,IAAmC;IAEnC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,UAAU,KAAK,OAAO,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;QACpF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { FsAllowOnlyGuardNode, FsBoundaryGuardNode, FsProtectGuardNode, FsReadOnlyGuardNode, PolicyGuardEvaluationInput, PolicyGuardEvaluationResult, StepExecutionContext } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates an `FsBoundaryGuardNode` (`fs:boundary-guard`) against proposed tool effects (`SPEC.md` §4.3).
|
|
4
|
+
*
|
|
5
|
+
* Blocks any write effect matching a partition's `boundaryGlobs` unless covered by `input.activeLeases`,
|
|
6
|
+
* projecting `violatedEffects` strictly to the violating boundary file paths.
|
|
7
|
+
*
|
|
8
|
+
* @param {FsBoundaryGuardNode} node - Boundary guard AST node.
|
|
9
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
10
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
11
|
+
*
|
|
12
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function evaluateFsBoundaryGuard(node: FsBoundaryGuardNode, input: PolicyGuardEvaluationInput, _ctx: StepExecutionContext<unknown>): PolicyGuardEvaluationResult;
|
|
15
|
+
/**
|
|
16
|
+
* Evaluates an `FsProtectGuardNode` (`fs:protect`) against proposed tool effects (`SPEC.md` §4.3).
|
|
17
|
+
*
|
|
18
|
+
* Rejects write mutations targeting paths matching `node.globs` unless covered by `input.activeLeases`.
|
|
19
|
+
*
|
|
20
|
+
* @param {FsProtectGuardNode} node - Protect guard AST node.
|
|
21
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
22
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
23
|
+
*
|
|
24
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function evaluateFsProtectGuard(node: FsProtectGuardNode, input: PolicyGuardEvaluationInput, _ctx: StepExecutionContext<unknown>): PolicyGuardEvaluationResult;
|
|
27
|
+
/**
|
|
28
|
+
* Evaluates an `FsReadOnlyGuardNode` (`fs:read-only`) against proposed tool effects (`SPEC.md` §4.3).
|
|
29
|
+
*
|
|
30
|
+
* Rejects all filesystem write mutations not explicitly covered by `input.activeLeases`.
|
|
31
|
+
*
|
|
32
|
+
* @param {FsReadOnlyGuardNode} _node - Read-only guard AST node.
|
|
33
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
34
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
35
|
+
*
|
|
36
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function evaluateFsReadOnlyGuard(_node: FsReadOnlyGuardNode, input: PolicyGuardEvaluationInput, _ctx: StepExecutionContext<unknown>): PolicyGuardEvaluationResult;
|
|
39
|
+
/**
|
|
40
|
+
* Evaluates an `FsAllowOnlyGuardNode` (`fs:allow-only`) against proposed tool effects (`SPEC.md` §4.3).
|
|
41
|
+
*
|
|
42
|
+
* Rejects any write mutation whose path does not match `node.globs` (or `input.activeLeases`).
|
|
43
|
+
*
|
|
44
|
+
* @param {FsAllowOnlyGuardNode} node - Allow-only guard AST node.
|
|
45
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
46
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
47
|
+
*
|
|
48
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
49
|
+
*/
|
|
50
|
+
export declare function evaluateFsAllowOnlyGuard(node: FsAllowOnlyGuardNode, input: PolicyGuardEvaluationInput, _ctx: StepExecutionContext<unknown>): PolicyGuardEvaluationResult;
|
|
51
|
+
//# sourceMappingURL=fs-path-guard-executors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-path-guard-executors.d.ts","sourceRoot":"","sources":["../../src/executors/fs-path-guard-executors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,mBAAmB,CAAC;AAQ3B;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,mBAAmB,EACzB,KAAK,EAAE,0BAA0B,EACjC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,2BAA2B,CAE7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,0BAA0B,EACjC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,2BAA2B,CAE7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,0BAA0B,EACjC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,2BAA2B,CAE7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,oBAAoB,EAC1B,KAAK,EAAE,0BAA0B,EACjC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,GAClC,2BAA2B,CAE7B"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { evaluateFsAllowOnlyPaths, evaluateFsProtectPaths, evaluateFsReadOnlyPaths, } from './internal/evaluate-fs-allow-and-protect-guards.js';
|
|
2
|
+
import { evaluateFsBoundaryPaths } from './internal/evaluate-fs-write-and-boundary-guards.js';
|
|
3
|
+
/**
|
|
4
|
+
* Evaluates an `FsBoundaryGuardNode` (`fs:boundary-guard`) against proposed tool effects (`SPEC.md` §4.3).
|
|
5
|
+
*
|
|
6
|
+
* Blocks any write effect matching a partition's `boundaryGlobs` unless covered by `input.activeLeases`,
|
|
7
|
+
* projecting `violatedEffects` strictly to the violating boundary file paths.
|
|
8
|
+
*
|
|
9
|
+
* @param {FsBoundaryGuardNode} node - Boundary guard AST node.
|
|
10
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
11
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
12
|
+
*
|
|
13
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
14
|
+
*/
|
|
15
|
+
export function evaluateFsBoundaryGuard(node, input, _ctx) {
|
|
16
|
+
return evaluateFsBoundaryPaths(node, input);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Evaluates an `FsProtectGuardNode` (`fs:protect`) against proposed tool effects (`SPEC.md` §4.3).
|
|
20
|
+
*
|
|
21
|
+
* Rejects write mutations targeting paths matching `node.globs` unless covered by `input.activeLeases`.
|
|
22
|
+
*
|
|
23
|
+
* @param {FsProtectGuardNode} node - Protect guard AST node.
|
|
24
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
25
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
26
|
+
*
|
|
27
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
28
|
+
*/
|
|
29
|
+
export function evaluateFsProtectGuard(node, input, _ctx) {
|
|
30
|
+
return evaluateFsProtectPaths(node, input);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Evaluates an `FsReadOnlyGuardNode` (`fs:read-only`) against proposed tool effects (`SPEC.md` §4.3).
|
|
34
|
+
*
|
|
35
|
+
* Rejects all filesystem write mutations not explicitly covered by `input.activeLeases`.
|
|
36
|
+
*
|
|
37
|
+
* @param {FsReadOnlyGuardNode} _node - Read-only guard AST node.
|
|
38
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
39
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
40
|
+
*
|
|
41
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
42
|
+
*/
|
|
43
|
+
export function evaluateFsReadOnlyGuard(_node, input, _ctx) {
|
|
44
|
+
return evaluateFsReadOnlyPaths(input);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Evaluates an `FsAllowOnlyGuardNode` (`fs:allow-only`) against proposed tool effects (`SPEC.md` §4.3).
|
|
48
|
+
*
|
|
49
|
+
* Rejects any write mutation whose path does not match `node.globs` (or `input.activeLeases`).
|
|
50
|
+
*
|
|
51
|
+
* @param {FsAllowOnlyGuardNode} node - Allow-only guard AST node.
|
|
52
|
+
* @param {PolicyGuardEvaluationInput} input - Tool name, proposed effects, and active leases.
|
|
53
|
+
* @param {StepExecutionContext<unknown>} _ctx - Step execution context.
|
|
54
|
+
*
|
|
55
|
+
* @returns {PolicyGuardEvaluationResult} Guard evaluation result and projected `violatedEffects`.
|
|
56
|
+
*/
|
|
57
|
+
export function evaluateFsAllowOnlyGuard(node, input, _ctx) {
|
|
58
|
+
return evaluateFsAllowOnlyPaths(node, input);
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=fs-path-guard-executors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-path-guard-executors.js","sourceRoot":"","sources":["../../src/executors/fs-path-guard-executors.ts"],"names":[],"mappings":"AASA,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAE9F;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAyB,EACzB,KAAiC,EACjC,IAAmC;IAEnC,OAAO,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAwB,EACxB,KAAiC,EACjC,IAAmC;IAEnC,OAAO,sBAAsB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAA0B,EAC1B,KAAiC,EACjC,IAAmC;IAEnC,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAA0B,EAC1B,KAAiC,EACjC,IAAmC;IAEnC,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { FsGlobToolNode, FsGrepToolNode, FsReadToolNode, ToolDriver } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the workspace-jailed `ToolDriver` for `FsReadToolNode` (`fs:read` / `read_file`).
|
|
4
|
+
*
|
|
5
|
+
* Emits synchronous `FsToolEffect` read records (`mutatesScope: false`) and reads UTF-8
|
|
6
|
+
* file text after verifying `realpathSync` containment inside the active worktree.
|
|
7
|
+
*
|
|
8
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
9
|
+
*
|
|
10
|
+
* @returns {ToolDriver<FsReadToolNode<THandle>, THandle>} Frozen `fs:read` tool driver.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createFsReadToolDriver<THandle = unknown>(): ToolDriver<FsReadToolNode<THandle>, THandle>;
|
|
13
|
+
/**
|
|
14
|
+
* Creates the workspace-jailed `ToolDriver` for `FsGlobToolNode` (`fs:glob` / `glob_files`).
|
|
15
|
+
*
|
|
16
|
+
* Enumerates workspace-relative files matching `args.pattern` in lexicographical order
|
|
17
|
+
* and records accessed file paths in a read-mode `FsToolEffect`.
|
|
18
|
+
*
|
|
19
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
20
|
+
*
|
|
21
|
+
* @returns {ToolDriver<FsGlobToolNode<THandle>, THandle>} Frozen `fs:glob` tool driver.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createFsGlobToolDriver<THandle = unknown>(): ToolDriver<FsGlobToolNode<THandle>, THandle>;
|
|
24
|
+
/**
|
|
25
|
+
* Creates the workspace-jailed `ToolDriver` for `FsGrepToolNode` (`fs:grep` / `grep_files`).
|
|
26
|
+
*
|
|
27
|
+
* Searches workspace files matching `args.glob` against regular expression `args.pattern`
|
|
28
|
+
* and formats matching lines as `path:lineNumber:lineText`.
|
|
29
|
+
*
|
|
30
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
31
|
+
*
|
|
32
|
+
* @returns {ToolDriver<FsGrepToolNode<THandle>, THandle>} Frozen `fs:grep` tool driver.
|
|
33
|
+
*/
|
|
34
|
+
export declare function createFsGrepToolDriver<THandle = unknown>(): ToolDriver<FsGrepToolNode<THandle>, THandle>;
|
|
35
|
+
//# sourceMappingURL=fs-read-tool-drivers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-read-tool-drivers.d.ts","sourceRoot":"","sources":["../../src/executors/fs-read-tool-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,cAAc,EAEd,UAAU,EAGX,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAG,OAAO,KAAK,UAAU,CACrE,cAAc,CAAC,OAAO,CAAC,EACvB,OAAO,CACR,CAWA;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAG,OAAO,KAAK,UAAU,CACrE,cAAc,CAAC,OAAO,CAAC,EACvB,OAAO,CACR,CAWA;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAG,OAAO,KAAK,UAAU,CACrE,cAAc,CAAC,OAAO,CAAC,EACvB,OAAO,CACR,CAWA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createFsReadEffect } from './internal/create-fs-read-effect.js';
|
|
2
|
+
import { enumerateWorkspaceFilesSync } from './internal/enumerate-workspace-files-sync.js';
|
|
3
|
+
import { extractWorktreeRootAndBaseRef } from './internal/extract-worktree-root-and-base-ref.js';
|
|
4
|
+
import { readFsToolFile } from './internal/fs-coding-tool-drivers.js';
|
|
5
|
+
import { globFsToolFiles, grepFsToolFiles, } from './internal/fs-search-tool-drivers.js';
|
|
6
|
+
import { resolveJailedWorktreePath } from './internal/resolve-jailed-worktree-path.js';
|
|
7
|
+
/**
|
|
8
|
+
* Creates the workspace-jailed `ToolDriver` for `FsReadToolNode` (`fs:read` / `read_file`).
|
|
9
|
+
*
|
|
10
|
+
* Emits synchronous `FsToolEffect` read records (`mutatesScope: false`) and reads UTF-8
|
|
11
|
+
* file text after verifying `realpathSync` containment inside the active worktree.
|
|
12
|
+
*
|
|
13
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
14
|
+
*
|
|
15
|
+
* @returns {ToolDriver<FsReadToolNode<THandle>, THandle>} Frozen `fs:read` tool driver.
|
|
16
|
+
*/
|
|
17
|
+
export function createFsReadToolDriver() {
|
|
18
|
+
return Object.freeze({
|
|
19
|
+
describeEffects(_node, args, scopeHandle) {
|
|
20
|
+
const rawPath = args?.path ?? '';
|
|
21
|
+
const { normalizedRelPath } = resolveJailedWorktreePath(scopeHandle, rawPath, 'read');
|
|
22
|
+
return Object.freeze([createFsReadEffect([normalizedRelPath])]);
|
|
23
|
+
},
|
|
24
|
+
execute(node, args, ctx) {
|
|
25
|
+
return readFsToolFile(node, args, ctx);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Creates the workspace-jailed `ToolDriver` for `FsGlobToolNode` (`fs:glob` / `glob_files`).
|
|
31
|
+
*
|
|
32
|
+
* Enumerates workspace-relative files matching `args.pattern` in lexicographical order
|
|
33
|
+
* and records accessed file paths in a read-mode `FsToolEffect`.
|
|
34
|
+
*
|
|
35
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
36
|
+
*
|
|
37
|
+
* @returns {ToolDriver<FsGlobToolNode<THandle>, THandle>} Frozen `fs:glob` tool driver.
|
|
38
|
+
*/
|
|
39
|
+
export function createFsGlobToolDriver() {
|
|
40
|
+
return Object.freeze({
|
|
41
|
+
describeEffects(_node, args, scopeHandle) {
|
|
42
|
+
const pattern = args?.pattern ?? '**/*';
|
|
43
|
+
const { rootPath } = extractWorktreeRootAndBaseRef(scopeHandle);
|
|
44
|
+
return Object.freeze([createFsReadEffect(enumerateWorkspaceFilesSync(rootPath, pattern))]);
|
|
45
|
+
},
|
|
46
|
+
execute(node, args, ctx) {
|
|
47
|
+
return globFsToolFiles(node, args, ctx);
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Creates the workspace-jailed `ToolDriver` for `FsGrepToolNode` (`fs:grep` / `grep_files`).
|
|
53
|
+
*
|
|
54
|
+
* Searches workspace files matching `args.glob` against regular expression `args.pattern`
|
|
55
|
+
* and formats matching lines as `path:lineNumber:lineText`.
|
|
56
|
+
*
|
|
57
|
+
* @template THandle Runtime handle type of the active isolation scope.
|
|
58
|
+
*
|
|
59
|
+
* @returns {ToolDriver<FsGrepToolNode<THandle>, THandle>} Frozen `fs:grep` tool driver.
|
|
60
|
+
*/
|
|
61
|
+
export function createFsGrepToolDriver() {
|
|
62
|
+
return Object.freeze({
|
|
63
|
+
describeEffects(_node, args, scopeHandle) {
|
|
64
|
+
const glob = args?.glob ?? '**/*';
|
|
65
|
+
const { rootPath } = extractWorktreeRootAndBaseRef(scopeHandle);
|
|
66
|
+
return Object.freeze([createFsReadEffect(enumerateWorkspaceFilesSync(rootPath, glob))]);
|
|
67
|
+
},
|
|
68
|
+
execute(node, args, ctx) {
|
|
69
|
+
return grepFsToolFiles(node, args, ctx);
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=fs-read-tool-drivers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-read-tool-drivers.js","sourceRoot":"","sources":["../../src/executors/fs-read-tool-drivers.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EACL,eAAe,EACf,eAAe,GAChB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,4CAA4C,CAAC;AAEvF;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB;IAIpC,OAAO,MAAM,CAAC,MAAM,CAA+C;QACjE,eAAe,CAAC,KAA8B,EAAE,IAAa,EAAE,WAAoB;YACjF,MAAM,OAAO,GAAI,IAAsD,EAAE,IAAI,IAAI,EAAE,CAAC;YACpF,MAAM,EAAE,iBAAiB,EAAE,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACtF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,CAAC,IAA6B,EAAE,IAAa,EAAE,GAAkC;YACtF,OAAO,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB;IAIpC,OAAO,MAAM,CAAC,MAAM,CAA+C;QACjE,eAAe,CAAC,KAA8B,EAAE,IAAa,EAAE,WAAoB;YACjF,MAAM,OAAO,GAAI,IAAyD,EAAE,OAAO,IAAI,MAAM,CAAC;YAC9F,MAAM,EAAE,QAAQ,EAAE,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,CAAC,IAA6B,EAAE,IAAa,EAAE,GAAkC;YACtF,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB;IAIpC,OAAO,MAAM,CAAC,MAAM,CAA+C;QACjE,eAAe,CAAC,KAA8B,EAAE,IAAa,EAAE,WAAoB;YACjF,MAAM,IAAI,GAAI,IAAsD,EAAE,IAAI,IAAI,MAAM,CAAC;YACrF,MAAM,EAAE,QAAQ,EAAE,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,CAAC,IAA6B,EAAE,IAAa,EAAE,GAAkC;YACtF,OAAO,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { FsGlobSourceNode, FsTextSourceNode, ResolutionContext, ResolvedSourceArtifact } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Loads UTF-8 text and computes a SHA-256 hex digest for an `FsTextSourceNode` (`fs:text-source`).
|
|
4
|
+
*
|
|
5
|
+
* Resolves `node.path` against the immutable host repository root when `ctx.scopeHandle` is
|
|
6
|
+
* omitted, or against `ctx.scopeHandle.worktreePath` when computing in-run grounding diffs (`SPEC.md` §4.3).
|
|
7
|
+
*
|
|
8
|
+
* @param {FsTextSourceNode} node - Passive text source AST node.
|
|
9
|
+
* @param {void} _input - Unused source executor input parameter.
|
|
10
|
+
* @param {ResolutionContext} ctx - Source resolution context with optional `scopeHandle`.
|
|
11
|
+
*
|
|
12
|
+
* @returns {Promise<ResolvedSourceArtifact<string>>} UTF-8 file text paired with its SHA-256 digest.
|
|
13
|
+
*/
|
|
14
|
+
export declare function executeFsTextSource(node: FsTextSourceNode, _input: void, ctx: ResolutionContext): Promise<ResolvedSourceArtifact<string>>;
|
|
15
|
+
/**
|
|
16
|
+
* Loads all UTF-8 files matching `node.pattern` in lexicographical order for an `FsGlobSourceNode` (`fs:glob-source`).
|
|
17
|
+
*
|
|
18
|
+
* Resolves against the host repository root when `ctx.scopeHandle` is omitted, or against
|
|
19
|
+
* `ctx.scopeHandle.worktreePath` when computing in-run grounding diffs (`SPEC.md` §4.3).
|
|
20
|
+
*
|
|
21
|
+
* @param {FsGlobSourceNode} node - Passive glob source AST node.
|
|
22
|
+
* @param {void} _input - Unused source executor input parameter.
|
|
23
|
+
* @param {ResolutionContext} ctx - Source resolution context with optional `scopeHandle`.
|
|
24
|
+
*
|
|
25
|
+
* @returns {Promise<ResolvedSourceArtifact<ReadonlyArray<{ readonly path: string; readonly content: string }>>>} Matched `{ path, content }` records paired with their combined SHA-256 digest.
|
|
26
|
+
*/
|
|
27
|
+
export declare function executeFsGlobSource(node: FsGlobSourceNode, _input: void, ctx: ResolutionContext): Promise<ResolvedSourceArtifact<ReadonlyArray<{
|
|
28
|
+
readonly path: string;
|
|
29
|
+
readonly content: string;
|
|
30
|
+
}>>>;
|
|
31
|
+
//# sourceMappingURL=fs-source-executors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-source-executors.d.ts","sourceRoot":"","sources":["../../src/executors/fs-source-executors.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAK3B;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,IAAI,EACZ,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAQzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,gBAAgB,EACtB,MAAM,EAAE,IAAI,EACZ,GAAG,EAAE,iBAAiB,GACrB,OAAO,CACR,sBAAsB,CAAC,aAAa,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAC3F,CAeA"}
|