@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,50 @@
|
|
|
1
|
+
import { compileGlobOrExactMatcher } from './compile-glob-or-exact-matcher.js';
|
|
2
|
+
import { CACHED_ACTIVE_LEASE_WRITE_MATCHERS } from './glob-matcher-cache.constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Collects pre-compiled path matchers across all write-covering `FsGlobMatcherNode` grants in `activeLeases`.
|
|
5
|
+
*
|
|
6
|
+
* @param {readonly LeaseDelta[]} activeLeases - Active capability leases granted to the actor or loop.
|
|
7
|
+
*
|
|
8
|
+
* @returns {Array<(candidatePath: string) => boolean>} Compiled matchers for each write or `any` glob grant.
|
|
9
|
+
*/
|
|
10
|
+
function collectActiveLeaseMatchers(activeLeases) {
|
|
11
|
+
const leaseMatchers = [];
|
|
12
|
+
for (const lease of activeLeases) {
|
|
13
|
+
for (const matcher of lease.grantedMatchers) {
|
|
14
|
+
if (matcher.type === 'fs:match-globs' && (matcher.mode === 'write' || matcher.mode === 'any')) {
|
|
15
|
+
leaseMatchers.push(compileGlobOrExactMatcher(matcher.globs));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return leaseMatchers;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Pre-compiles and memoizes a single write-mode path matcher across all `FsGlobMatcherNode` grants in `activeLeases`.
|
|
23
|
+
*
|
|
24
|
+
* Evaluates both exact normalized file paths and `picomatch` glob patterns across all granted matchers (`Rule 4.4`),
|
|
25
|
+
* caching both per-matcher `matcher.globs` predicates in `CACHED_GLOB_OR_EXACT_MATCHERS` and the composed predicate
|
|
26
|
+
* in `CACHED_ACTIVE_LEASE_WRITE_MATCHERS`.
|
|
27
|
+
*
|
|
28
|
+
* @param {readonly LeaseDelta[]} activeLeases - Active capability leases granted to the actor or loop.
|
|
29
|
+
*
|
|
30
|
+
* @returns {(candidatePath: string) => boolean} Reusable synchronous predicate returning `true` when `candidatePath` is leased.
|
|
31
|
+
*/
|
|
32
|
+
export function compileActiveLeaseWriteMatcher(activeLeases) {
|
|
33
|
+
const cached = CACHED_ACTIVE_LEASE_WRITE_MATCHERS.get(activeLeases);
|
|
34
|
+
if (cached !== undefined) {
|
|
35
|
+
return cached;
|
|
36
|
+
}
|
|
37
|
+
const leaseMatchers = collectActiveLeaseMatchers(activeLeases);
|
|
38
|
+
const compiled = leaseMatchers.length === 0
|
|
39
|
+
? () => false
|
|
40
|
+
: (candidatePath) => {
|
|
41
|
+
for (const isMatch of leaseMatchers) {
|
|
42
|
+
if (isMatch(candidatePath))
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
};
|
|
47
|
+
CACHED_ACTIVE_LEASE_WRITE_MATCHERS.set(activeLeases, compiled);
|
|
48
|
+
return compiled;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=compile-active-lease-write-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-active-lease-write-matcher.js","sourceRoot":"","sources":["../../../src/executors/internal/compile-active-lease-write-matcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAEvF;;;;;;GAMG;AACH,SAAS,0BAA0B,CACjC,YAAmC;IAEnC,MAAM,aAAa,GAA8C,EAAE,CAAC;IACpE,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAC9F,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,8BAA8B,CAC5C,YAAmC;IAEnC,MAAM,MAAM,GAAG,kCAAkC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,aAAa,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,QAAQ,GACZ,aAAa,CAAC,MAAM,KAAK,CAAC;QACxB,CAAC,CAAC,GAAY,EAAE,CAAC,KAAK;QACtB,CAAC,CAAC,CAAC,aAAqB,EAAW,EAAE;YACjC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;gBACpC,IAAI,OAAO,CAAC,aAAa,CAAC;oBAAE,OAAO,IAAI,CAAC;YAC1C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACR,kCAAkC,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-compiles and memoizes a path matcher testing exact normalized file paths, positive `picomatch` globs, and negated `!` globs (`SPEC.md` §4.3 & `Rule 4.4`).
|
|
3
|
+
*
|
|
4
|
+
* Ensures literal bracketed paths (such as `app/users/[id]/page.test.tsx`) match via $O(1)$
|
|
5
|
+
* `Set` lookup alongside standard POSIX glob patterns and `!` exclusions, reusing compiled matchers via `WeakMap`.
|
|
6
|
+
*
|
|
7
|
+
* @param {readonly string[]} globs - Exact file paths or POSIX glob patterns (including optional `!` negations).
|
|
8
|
+
*
|
|
9
|
+
* @returns {(candidatePath: string) => boolean} Reusable synchronous predicate testing a normalized POSIX path.
|
|
10
|
+
*/
|
|
11
|
+
export declare function compileGlobOrExactMatcher(globs: readonly string[]): (candidatePath: string) => boolean;
|
|
12
|
+
//# sourceMappingURL=compile-glob-or-exact-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-glob-or-exact-matcher.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/compile-glob-or-exact-matcher.ts"],"names":[],"mappings":"AA2CA;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAQpC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import picomatch from 'picomatch';
|
|
2
|
+
import { CACHED_GLOB_OR_EXACT_MATCHERS } from './glob-matcher-cache.constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Builds an uncached predicate matching exact normalized file paths, positive `picomatch` globs, and negated `!` globs.
|
|
5
|
+
*
|
|
6
|
+
* Separates positive patterns and `exactPaths` from leading `!` exclusion patterns.
|
|
7
|
+
*
|
|
8
|
+
* @param {readonly string[]} globs - Exact file paths or POSIX glob patterns.
|
|
9
|
+
*
|
|
10
|
+
* @returns {(candidatePath: string) => boolean} Synchronous predicate testing a normalized POSIX path.
|
|
11
|
+
*/
|
|
12
|
+
function buildUncachedGlobOrExactMatcher(globs) {
|
|
13
|
+
if (globs.length === 0) {
|
|
14
|
+
return () => false;
|
|
15
|
+
}
|
|
16
|
+
const exactPaths = new Set();
|
|
17
|
+
const positiveMatchers = [];
|
|
18
|
+
const ignoreMatchers = [];
|
|
19
|
+
for (const rawPattern of globs) {
|
|
20
|
+
const normalizedPattern = rawPattern.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
21
|
+
if (normalizedPattern.startsWith('!') && normalizedPattern.length > 1) {
|
|
22
|
+
ignoreMatchers.push(picomatch(normalizedPattern.slice(1).replace(/^\.\//, ''), { dot: true }));
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
exactPaths.add(normalizedPattern);
|
|
26
|
+
positiveMatchers.push(picomatch(normalizedPattern, { dot: true }));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return (candidatePath) => {
|
|
30
|
+
const normalizedCandidate = candidatePath.replace(/\\/g, '/').replace(/^\.\//, '');
|
|
31
|
+
for (const isIgnored of ignoreMatchers) {
|
|
32
|
+
if (isIgnored(normalizedCandidate))
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (exactPaths.has(normalizedCandidate))
|
|
36
|
+
return true;
|
|
37
|
+
for (const isMatch of positiveMatchers) {
|
|
38
|
+
if (isMatch(normalizedCandidate))
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
return positiveMatchers.length === 0 && exactPaths.size === 0 && ignoreMatchers.length > 0;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Pre-compiles and memoizes a path matcher testing exact normalized file paths, positive `picomatch` globs, and negated `!` globs (`SPEC.md` §4.3 & `Rule 4.4`).
|
|
46
|
+
*
|
|
47
|
+
* Ensures literal bracketed paths (such as `app/users/[id]/page.test.tsx`) match via $O(1)$
|
|
48
|
+
* `Set` lookup alongside standard POSIX glob patterns and `!` exclusions, reusing compiled matchers via `WeakMap`.
|
|
49
|
+
*
|
|
50
|
+
* @param {readonly string[]} globs - Exact file paths or POSIX glob patterns (including optional `!` negations).
|
|
51
|
+
*
|
|
52
|
+
* @returns {(candidatePath: string) => boolean} Reusable synchronous predicate testing a normalized POSIX path.
|
|
53
|
+
*/
|
|
54
|
+
export function compileGlobOrExactMatcher(globs) {
|
|
55
|
+
const cached = CACHED_GLOB_OR_EXACT_MATCHERS.get(globs);
|
|
56
|
+
if (cached !== undefined) {
|
|
57
|
+
return cached;
|
|
58
|
+
}
|
|
59
|
+
const compiled = buildUncachedGlobOrExactMatcher(globs);
|
|
60
|
+
CACHED_GLOB_OR_EXACT_MATCHERS.set(globs, compiled);
|
|
61
|
+
return compiled;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=compile-glob-or-exact-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-glob-or-exact-matcher.js","sourceRoot":"","sources":["../../../src/executors/internal/compile-glob-or-exact-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAElF;;;;;;;;GAQG;AACH,SAAS,+BAA+B,CACtC,KAAwB;IAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,GAAY,EAAE,CAAC,KAAK,CAAC;IAC9B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,MAAM,gBAAgB,GAAsC,EAAE,CAAC;IAC/D,MAAM,cAAc,GAAsC,EAAE,CAAC;IAC7D,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;QAC/B,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjG,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAClC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,aAAqB,EAAW,EAAE;QACxC,MAAM,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnF,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,mBAAmB,CAAC;gBAAE,OAAO,KAAK,CAAC;QACnD,CAAC;QACD,IAAI,UAAU,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,mBAAmB,CAAC;gBAAE,OAAO,IAAI,CAAC;QAChD,CAAC;QACD,OAAO,gBAAgB,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC7F,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CACvC,KAAwB;IAExB,MAAM,MAAM,GAAG,6BAA6B,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACxD,6BAA6B,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compiles built-in and optional custom secret regular expressions for `fs:secret-literals`.
|
|
3
|
+
*
|
|
4
|
+
* Returns `DEFAULT_COMPILED_SECRET_PATTERNS` when no custom patterns are supplied, and caches
|
|
5
|
+
* compiled custom pattern lists in `CACHED_SECRET_PATTERN_LISTS` (`Rule 4.4`).
|
|
6
|
+
*
|
|
7
|
+
* @param {readonly string[] | undefined} customPatterns - Optional custom secret regex strings.
|
|
8
|
+
*
|
|
9
|
+
* @returns {readonly RegExp[]} Frozen array of compiled regular expressions.
|
|
10
|
+
*/
|
|
11
|
+
export declare function compileSecretPatterns(customPatterns: readonly string[] | undefined): readonly RegExp[];
|
|
12
|
+
//# sourceMappingURL=compile-secret-patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-secret-patterns.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/compile-secret-patterns.ts"],"names":[],"mappings":"AAKA;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,cAAc,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC5C,SAAS,MAAM,EAAE,CAanB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CACHED_SECRET_PATTERN_LISTS, DEFAULT_COMPILED_SECRET_PATTERNS, } from './secret-patterns.constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compiles built-in and optional custom secret regular expressions for `fs:secret-literals`.
|
|
4
|
+
*
|
|
5
|
+
* Returns `DEFAULT_COMPILED_SECRET_PATTERNS` when no custom patterns are supplied, and caches
|
|
6
|
+
* compiled custom pattern lists in `CACHED_SECRET_PATTERN_LISTS` (`Rule 4.4`).
|
|
7
|
+
*
|
|
8
|
+
* @param {readonly string[] | undefined} customPatterns - Optional custom secret regex strings.
|
|
9
|
+
*
|
|
10
|
+
* @returns {readonly RegExp[]} Frozen array of compiled regular expressions.
|
|
11
|
+
*/
|
|
12
|
+
export function compileSecretPatterns(customPatterns) {
|
|
13
|
+
if (customPatterns === undefined || customPatterns.length === 0) {
|
|
14
|
+
return DEFAULT_COMPILED_SECRET_PATTERNS;
|
|
15
|
+
}
|
|
16
|
+
const cached = CACHED_SECRET_PATTERN_LISTS.get(customPatterns);
|
|
17
|
+
if (cached !== undefined)
|
|
18
|
+
return cached;
|
|
19
|
+
const regexes = [...DEFAULT_COMPILED_SECRET_PATTERNS];
|
|
20
|
+
for (const custom of customPatterns) {
|
|
21
|
+
regexes.push(new RegExp(custom));
|
|
22
|
+
}
|
|
23
|
+
const frozen = Object.freeze(regexes);
|
|
24
|
+
CACHED_SECRET_PATTERN_LISTS.set(customPatterns, frozen);
|
|
25
|
+
return frozen;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=compile-secret-patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-secret-patterns.js","sourceRoot":"","sources":["../../../src/executors/internal/compile-secret-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAA6C;IAE7C,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,gCAAgC,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC/D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,OAAO,GAAa,CAAC,GAAG,gCAAgC,CAAC,CAAC;IAChE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtC,2BAA2B,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolEffect } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Builds an $O(1)$ per-effect `Set<string>` lookup for `existingPathsAtBaseRef` (`Rule 4.2`).
|
|
4
|
+
*
|
|
5
|
+
* Uses `effect.attributes['existingPathsAtBaseRef']` when populated, or falls back to
|
|
6
|
+
* `checkPathsExistAtBaseRef(scopeHandle, ...)` once per `ToolEffect` instance.
|
|
7
|
+
*
|
|
8
|
+
* @param {unknown} scopeHandle - Active isolation scope handle for fallback `baseRef` inspection.
|
|
9
|
+
*
|
|
10
|
+
* @returns {(effect: ToolEffect, normPath: string) => boolean} Predicate returning `true` when `normPath` existed at `baseRef`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createEffectBaseRefPathLookup(scopeHandle: unknown): (effect: ToolEffect, normPath: string) => boolean;
|
|
13
|
+
//# sourceMappingURL=create-effect-base-ref-path-lookup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-effect-base-ref-path-lookup.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/create-effect-base-ref-path-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;;;GASG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,OAAO,GACnB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAuBnD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { checkPathsExistAtBaseRef } from './check-paths-exist-at-base-ref.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builds an $O(1)$ per-effect `Set<string>` lookup for `existingPathsAtBaseRef` (`Rule 4.2`).
|
|
4
|
+
*
|
|
5
|
+
* Uses `effect.attributes['existingPathsAtBaseRef']` when populated, or falls back to
|
|
6
|
+
* `checkPathsExistAtBaseRef(scopeHandle, ...)` once per `ToolEffect` instance.
|
|
7
|
+
*
|
|
8
|
+
* @param {unknown} scopeHandle - Active isolation scope handle for fallback `baseRef` inspection.
|
|
9
|
+
*
|
|
10
|
+
* @returns {(effect: ToolEffect, normPath: string) => boolean} Predicate returning `true` when `normPath` existed at `baseRef`.
|
|
11
|
+
*/
|
|
12
|
+
export function createEffectBaseRefPathLookup(scopeHandle) {
|
|
13
|
+
const cache = new WeakMap();
|
|
14
|
+
return (effect, normPath) => {
|
|
15
|
+
let baseSet = cache.get(effect);
|
|
16
|
+
if (baseSet === undefined) {
|
|
17
|
+
const declaredBase = effect.attributes?.['existingPathsAtBaseRef'];
|
|
18
|
+
const rawList = Array.isArray(declaredBase)
|
|
19
|
+
? declaredBase
|
|
20
|
+
: checkPathsExistAtBaseRef(scopeHandle, effect.attributes?.['paths'] ?? [normPath]);
|
|
21
|
+
const constructed = new Set();
|
|
22
|
+
for (const item of rawList) {
|
|
23
|
+
if (typeof item === 'string') {
|
|
24
|
+
constructed.add(item.replace(/\\/g, '/').replace(/^\.\//, ''));
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
baseSet = constructed;
|
|
28
|
+
cache.set(effect, baseSet);
|
|
29
|
+
}
|
|
30
|
+
return baseSet.has(normPath);
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=create-effect-base-ref-path-lookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-effect-base-ref-path-lookup.js","sourceRoot":"","sources":["../../../src/executors/internal/create-effect-base-ref-path-lookup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAoB;IAEpB,MAAM,KAAK,GAAG,IAAI,OAAO,EAAmC,CAAC;IAC7D,OAAO,CAAC,MAAkB,EAAE,QAAgB,EAAW,EAAE;QACvD,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,wBAAwB,CAAC,CAAC;YACnE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBACzC,CAAC,CAAE,YAAkC;gBACrC,CAAC,CAAC,wBAAwB,CACtB,WAAW,EACV,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAmC,IAAI,CAAC,QAAQ,CAAC,CAC9E,CAAC;YACN,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;YACtC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC7B,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YACD,OAAO,GAAG,WAAW,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { FsToolEffect } from '../fs-tool-effect.js';
|
|
2
|
+
/**
|
|
3
|
+
* Constructs a frozen read-mode `FsToolEffect` record (`mutatesScope: false`).
|
|
4
|
+
*
|
|
5
|
+
* Preserves monomorphic property order across all `FsToolEffect` instances (`Rule 4.3`).
|
|
6
|
+
*
|
|
7
|
+
* @param {readonly string[]} paths - Canonicalized worktree-relative POSIX file paths read.
|
|
8
|
+
*
|
|
9
|
+
* @returns {FsToolEffect} Deeply frozen read `FsToolEffect`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createFsReadEffect(paths: readonly string[]): FsToolEffect;
|
|
12
|
+
//# sourceMappingURL=create-fs-read-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-fs-read-effect.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/create-fs-read-effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAWzE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constructs a frozen read-mode `FsToolEffect` record (`mutatesScope: false`).
|
|
3
|
+
*
|
|
4
|
+
* Preserves monomorphic property order across all `FsToolEffect` instances (`Rule 4.3`).
|
|
5
|
+
*
|
|
6
|
+
* @param {readonly string[]} paths - Canonicalized worktree-relative POSIX file paths read.
|
|
7
|
+
*
|
|
8
|
+
* @returns {FsToolEffect} Deeply frozen read `FsToolEffect`.
|
|
9
|
+
*/
|
|
10
|
+
export function createFsReadEffect(paths) {
|
|
11
|
+
return Object.freeze({
|
|
12
|
+
kind: 'fs:effect',
|
|
13
|
+
mutatesScope: false,
|
|
14
|
+
attributes: Object.freeze({
|
|
15
|
+
mode: 'read',
|
|
16
|
+
paths: Object.freeze([...paths]),
|
|
17
|
+
existingPathsAtBaseRef: undefined,
|
|
18
|
+
proposedContent: undefined,
|
|
19
|
+
}),
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=create-fs-read-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-fs-read-effect.js","sourceRoot":"","sources":["../../../src/executors/internal/create-fs-read-effect.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO,MAAM,CAAC,MAAM,CAAe;QACjC,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAChC,sBAAsB,EAAE,SAAS;YACjC,eAAe,EAAE,SAAS;SAC3B,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FsToolEffect } from '../fs-tool-effect.js';
|
|
2
|
+
/**
|
|
3
|
+
* Constructs a frozen write-mode `FsToolEffect` record (`mutatesScope: true`).
|
|
4
|
+
*
|
|
5
|
+
* Populates `existingPathsAtBaseRef` and `proposedContent` for downstream policy guards (`SPEC.md` §4.3).
|
|
6
|
+
*
|
|
7
|
+
* @param {readonly string[]} paths - Canonicalized worktree-relative POSIX paths mutated.
|
|
8
|
+
* @param {readonly string[]} existingPathsAtBaseRef - Subset of `paths` existing at `baseRef`.
|
|
9
|
+
* @param {Readonly<Record<string, string>>} proposedContent - Proposed post-edit UTF-8 content per path.
|
|
10
|
+
*
|
|
11
|
+
* @returns {FsToolEffect} Deeply frozen write `FsToolEffect`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createFsWriteEffect(paths: readonly string[], existingPathsAtBaseRef: readonly string[], proposedContent: Readonly<Record<string, string>>): FsToolEffect;
|
|
14
|
+
//# sourceMappingURL=create-fs-write-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-fs-write-effect.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/create-fs-write-effect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,sBAAsB,EAAE,SAAS,MAAM,EAAE,EACzC,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAChD,YAAY,CAWd"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constructs a frozen write-mode `FsToolEffect` record (`mutatesScope: true`).
|
|
3
|
+
*
|
|
4
|
+
* Populates `existingPathsAtBaseRef` and `proposedContent` for downstream policy guards (`SPEC.md` §4.3).
|
|
5
|
+
*
|
|
6
|
+
* @param {readonly string[]} paths - Canonicalized worktree-relative POSIX paths mutated.
|
|
7
|
+
* @param {readonly string[]} existingPathsAtBaseRef - Subset of `paths` existing at `baseRef`.
|
|
8
|
+
* @param {Readonly<Record<string, string>>} proposedContent - Proposed post-edit UTF-8 content per path.
|
|
9
|
+
*
|
|
10
|
+
* @returns {FsToolEffect} Deeply frozen write `FsToolEffect`.
|
|
11
|
+
*/
|
|
12
|
+
export function createFsWriteEffect(paths, existingPathsAtBaseRef, proposedContent) {
|
|
13
|
+
return Object.freeze({
|
|
14
|
+
kind: 'fs:effect',
|
|
15
|
+
mutatesScope: true,
|
|
16
|
+
attributes: Object.freeze({
|
|
17
|
+
mode: 'write',
|
|
18
|
+
paths: Object.freeze([...paths]),
|
|
19
|
+
existingPathsAtBaseRef: Object.freeze([...existingPathsAtBaseRef]),
|
|
20
|
+
proposedContent: Object.freeze({ ...proposedContent }),
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=create-fs-write-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-fs-write-effect.js","sourceRoot":"","sources":["../../../src/executors/internal/create-fs-write-effect.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAwB,EACxB,sBAAyC,EACzC,eAAiD;IAEjD,OAAO,MAAM,CAAC,MAAM,CAAe;QACjC,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;YAChC,sBAAsB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,sBAAsB,CAAC,CAAC;YAClE,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC;SACvD,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolEffect } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Computes the synchronous pre-flight `FsToolEffect` write descriptor for `edit_file`.
|
|
4
|
+
*
|
|
5
|
+
* Populates `existingPathsAtBaseRef` and `proposedContent` after applying `oldString -> newString`.
|
|
6
|
+
*
|
|
7
|
+
* @param {unknown} scopeHandle - Active isolation scope handle.
|
|
8
|
+
* @param {unknown} args - Raw tool call arguments.
|
|
9
|
+
*
|
|
10
|
+
* @returns {readonly ToolEffect[]} Frozen single-element array containing the write `FsToolEffect`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function describeFsEditEffects(scopeHandle: unknown, args: unknown): readonly ToolEffect[];
|
|
13
|
+
//# sourceMappingURL=describe-fs-edit-effects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-fs-edit-effects.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/describe-fs-edit-effects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,OAAO,GACZ,SAAS,UAAU,EAAE,CAqBvB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
2
|
+
import { checkPathsExistAtBaseRef } from './check-paths-exist-at-base-ref.js';
|
|
3
|
+
import { createFsWriteEffect } from './create-fs-write-effect.js';
|
|
4
|
+
import { resolveJailedWorktreePath } from './resolve-jailed-worktree-path.js';
|
|
5
|
+
/**
|
|
6
|
+
* Computes the synchronous pre-flight `FsToolEffect` write descriptor for `edit_file`.
|
|
7
|
+
*
|
|
8
|
+
* Populates `existingPathsAtBaseRef` and `proposedContent` after applying `oldString -> newString`.
|
|
9
|
+
*
|
|
10
|
+
* @param {unknown} scopeHandle - Active isolation scope handle.
|
|
11
|
+
* @param {unknown} args - Raw tool call arguments.
|
|
12
|
+
*
|
|
13
|
+
* @returns {readonly ToolEffect[]} Frozen single-element array containing the write `FsToolEffect`.
|
|
14
|
+
*/
|
|
15
|
+
export function describeFsEditEffects(scopeHandle, args) {
|
|
16
|
+
const rec = args ?? {};
|
|
17
|
+
const { normalizedRelPath, absolutePath } = resolveJailedWorktreePath(scopeHandle, rec.path ?? '', 'write');
|
|
18
|
+
const currentContent = existsSync(absolutePath) ? readFileSync(absolutePath, 'utf8') : '';
|
|
19
|
+
const oldStr = rec.oldString ?? '';
|
|
20
|
+
const newStr = rec.newString ?? '';
|
|
21
|
+
const nextContent = oldStr.length > 0 && currentContent.includes(oldStr)
|
|
22
|
+
? currentContent.replace(oldStr, () => newStr)
|
|
23
|
+
: `${currentContent}${newStr}`;
|
|
24
|
+
const existingAtBase = checkPathsExistAtBaseRef(scopeHandle, [normalizedRelPath]);
|
|
25
|
+
return Object.freeze([
|
|
26
|
+
createFsWriteEffect([normalizedRelPath], existingAtBase, {
|
|
27
|
+
[normalizedRelPath]: nextContent,
|
|
28
|
+
}),
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=describe-fs-edit-effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-fs-edit-effects.js","sourceRoot":"","sources":["../../../src/executors/internal/describe-fs-edit-effects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAoB,EACpB,IAAa;IAEb,MAAM,GAAG,GACN,IAAgH,IAAI,EAAE,CAAC;IAC1H,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,yBAAyB,CACnE,WAAW,EACX,GAAG,CAAC,IAAI,IAAI,EAAE,EACd,OAAO,CACR,CAAC;IACF,MAAM,cAAc,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC;IACnC,MAAM,WAAW,GACf,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC;QAClD,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;QAC9C,CAAC,CAAC,GAAG,cAAc,GAAG,MAAM,EAAE,CAAC;IACnC,MAAM,cAAc,GAAG,wBAAwB,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,EAAE,cAAc,EAAE;YACvD,CAAC,iBAAiB,CAAC,EAAE,WAAW;SACjC,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ToolEffect } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Computes the synchronous pre-flight `FsToolEffect` write descriptor for `write_file`.
|
|
4
|
+
*
|
|
5
|
+
* Populates `existingPathsAtBaseRef` and `proposedContent` for policy guard inspection.
|
|
6
|
+
*
|
|
7
|
+
* @param {unknown} scopeHandle - Active isolation scope handle.
|
|
8
|
+
* @param {unknown} args - Raw tool call arguments.
|
|
9
|
+
*
|
|
10
|
+
* @returns {readonly ToolEffect[]} Frozen single-element array containing the write `FsToolEffect`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function describeFsWriteEffects(scopeHandle: unknown, args: unknown): readonly ToolEffect[];
|
|
13
|
+
//# sourceMappingURL=describe-fs-write-effects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-fs-write-effects.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/describe-fs-write-effects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAKpD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,OAAO,EACpB,IAAI,EAAE,OAAO,GACZ,SAAS,UAAU,EAAE,CASvB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { checkPathsExistAtBaseRef } from './check-paths-exist-at-base-ref.js';
|
|
2
|
+
import { createFsWriteEffect } from './create-fs-write-effect.js';
|
|
3
|
+
import { resolveJailedWorktreePath } from './resolve-jailed-worktree-path.js';
|
|
4
|
+
/**
|
|
5
|
+
* Computes the synchronous pre-flight `FsToolEffect` write descriptor for `write_file`.
|
|
6
|
+
*
|
|
7
|
+
* Populates `existingPathsAtBaseRef` and `proposedContent` for policy guard inspection.
|
|
8
|
+
*
|
|
9
|
+
* @param {unknown} scopeHandle - Active isolation scope handle.
|
|
10
|
+
* @param {unknown} args - Raw tool call arguments.
|
|
11
|
+
*
|
|
12
|
+
* @returns {readonly ToolEffect[]} Frozen single-element array containing the write `FsToolEffect`.
|
|
13
|
+
*/
|
|
14
|
+
export function describeFsWriteEffects(scopeHandle, args) {
|
|
15
|
+
const rec = args ?? {};
|
|
16
|
+
const { normalizedRelPath } = resolveJailedWorktreePath(scopeHandle, rec.path ?? '', 'write');
|
|
17
|
+
const existingAtBase = checkPathsExistAtBaseRef(scopeHandle, [normalizedRelPath]);
|
|
18
|
+
return Object.freeze([
|
|
19
|
+
createFsWriteEffect([normalizedRelPath], existingAtBase, {
|
|
20
|
+
[normalizedRelPath]: rec.content ?? '',
|
|
21
|
+
}),
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=describe-fs-write-effects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-fs-write-effects.js","sourceRoot":"","sources":["../../../src/executors/internal/describe-fs-write-effects.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;;GASG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAoB,EACpB,IAAa;IAEb,MAAM,GAAG,GAAI,IAAiF,IAAI,EAAE,CAAC;IACrG,MAAM,EAAE,iBAAiB,EAAE,GAAG,yBAAyB,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9F,MAAM,cAAc,GAAG,wBAAwB,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAC,CAAC,iBAAiB,CAAC,EAAE,cAAc,EAAE;YACvD,CAAC,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;SACvC,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronously enumerates all jailed workspace-relative POSIX file paths matching `globPattern` via `tinyglobby`.
|
|
3
|
+
*
|
|
4
|
+
* Uses `globSync` from `tinyglobby` with `picomatch` verification for synchronous `describeEffects` evaluation.
|
|
5
|
+
*
|
|
6
|
+
* @param {string} rootPath - Worktree or repository root directory path.
|
|
7
|
+
* @param {string | readonly string[]} globPattern - POSIX glob pattern(s) to match against relative paths.
|
|
8
|
+
*
|
|
9
|
+
* @returns {readonly string[]} Sorted frozen array of matching relative POSIX file paths.
|
|
10
|
+
*/
|
|
11
|
+
export declare function enumerateWorkspaceFilesSync(rootPath: string, globPattern: string | readonly string[]): readonly string[];
|
|
12
|
+
//# sourceMappingURL=enumerate-workspace-files-sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerate-workspace-files-sync.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/enumerate-workspace-files-sync.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GACtC,SAAS,MAAM,EAAE,CAgCnB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { readdirSync, realpathSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { globSync } from 'tinyglobby';
|
|
4
|
+
import { compileGlobOrExactMatcher } from './compile-glob-or-exact-matcher.js';
|
|
5
|
+
import { filterJailedDirents } from './filter-jailed-dirents.js';
|
|
6
|
+
/**
|
|
7
|
+
* Synchronously enumerates all jailed workspace-relative POSIX file paths matching `globPattern` via `tinyglobby`.
|
|
8
|
+
*
|
|
9
|
+
* Uses `globSync` from `tinyglobby` with `picomatch` verification for synchronous `describeEffects` evaluation.
|
|
10
|
+
*
|
|
11
|
+
* @param {string} rootPath - Worktree or repository root directory path.
|
|
12
|
+
* @param {string | readonly string[]} globPattern - POSIX glob pattern(s) to match against relative paths.
|
|
13
|
+
*
|
|
14
|
+
* @returns {readonly string[]} Sorted frozen array of matching relative POSIX file paths.
|
|
15
|
+
*/
|
|
16
|
+
export function enumerateWorkspaceFilesSync(rootPath, globPattern) {
|
|
17
|
+
const realRoot = realpathSync(path.resolve(rootPath));
|
|
18
|
+
const visitedDirs = new Set([realRoot]);
|
|
19
|
+
const patternList = typeof globPattern === 'string' ? [globPattern] : globPattern;
|
|
20
|
+
const isMatch = compileGlobOrExactMatcher(patternList);
|
|
21
|
+
const rawMatches = globSync(patternList, {
|
|
22
|
+
cwd: realRoot,
|
|
23
|
+
dot: true,
|
|
24
|
+
onlyFiles: true,
|
|
25
|
+
ignore: ['**/.git/**', '**/node_modules/**'],
|
|
26
|
+
fs: {
|
|
27
|
+
readdirSync: ((dir, opts) => {
|
|
28
|
+
const entries = filterJailedDirents({
|
|
29
|
+
realRoot,
|
|
30
|
+
visitedDirs,
|
|
31
|
+
dirPath: String(dir),
|
|
32
|
+
entries: readdirSync(dir, { withFileTypes: true }),
|
|
33
|
+
});
|
|
34
|
+
if (typeof opts === 'object' && opts !== null)
|
|
35
|
+
return entries;
|
|
36
|
+
const names = [];
|
|
37
|
+
for (const entry of entries)
|
|
38
|
+
names.push(entry.name);
|
|
39
|
+
return names;
|
|
40
|
+
}),
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
const matched = [];
|
|
44
|
+
for (const entry of rawMatches) {
|
|
45
|
+
const cleanRel = entry.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
46
|
+
if (isMatch(cleanRel))
|
|
47
|
+
matched.push(cleanRel);
|
|
48
|
+
}
|
|
49
|
+
matched.sort((a, b) => a.localeCompare(b));
|
|
50
|
+
return Object.freeze(matched);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=enumerate-workspace-files-sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerate-workspace-files-sync.js","sourceRoot":"","sources":["../../../src/executors/internal/enumerate-workspace-files-sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAA0B,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAgB,EAChB,WAAuC;IAEvC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAClF,MAAM,OAAO,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE;QACvC,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;QAC5C,EAAE,EAAE;YACF,WAAW,EAAE,CAAC,CAAC,GAAa,EAAE,IAAc,EAAE,EAAE;gBAC9C,MAAM,OAAO,GAAG,mBAAmB,CAAC;oBAClC,QAAQ;oBACR,WAAW;oBACX,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;oBACpB,OAAO,EAAE,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACnD,CAAC,CAAC;gBACH,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC;gBAC9D,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO;oBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACpD,OAAO,KAAK,CAAC;YACf,CAAC,CAAqC;SACvC;KACF,CAAC,CAAC;IACH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Asynchronously enumerates all jailed workspace-relative POSIX file paths matching `globPattern` via `tinyglobby`.
|
|
3
|
+
*
|
|
4
|
+
* Uses `glob` from `tinyglobby` with `picomatch` verification, skipping `.git`, `node_modules`,
|
|
5
|
+
* and any symlink target escaping `rootPath`.
|
|
6
|
+
*
|
|
7
|
+
* @param {string} rootPath - Worktree or repository root directory path.
|
|
8
|
+
* @param {string | readonly string[]} globPattern - POSIX glob pattern(s) to match against relative paths.
|
|
9
|
+
*
|
|
10
|
+
* @returns {Promise<readonly string[]>} Sorted frozen array of matching relative POSIX file paths.
|
|
11
|
+
*/
|
|
12
|
+
export declare function enumerateWorkspaceFiles(rootPath: string, globPattern: string | readonly string[]): Promise<readonly string[]>;
|
|
13
|
+
//# sourceMappingURL=enumerate-workspace-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerate-workspace-files.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/enumerate-workspace-files.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,GACtC,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CA8B5B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { readdir, realpathSync } from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { glob } from 'tinyglobby';
|
|
4
|
+
import { compileGlobOrExactMatcher } from './compile-glob-or-exact-matcher.js';
|
|
5
|
+
import { filterJailedDirents } from './filter-jailed-dirents.js';
|
|
6
|
+
/**
|
|
7
|
+
* Asynchronously enumerates all jailed workspace-relative POSIX file paths matching `globPattern` via `tinyglobby`.
|
|
8
|
+
*
|
|
9
|
+
* Uses `glob` from `tinyglobby` with `picomatch` verification, skipping `.git`, `node_modules`,
|
|
10
|
+
* and any symlink target escaping `rootPath`.
|
|
11
|
+
*
|
|
12
|
+
* @param {string} rootPath - Worktree or repository root directory path.
|
|
13
|
+
* @param {string | readonly string[]} globPattern - POSIX glob pattern(s) to match against relative paths.
|
|
14
|
+
*
|
|
15
|
+
* @returns {Promise<readonly string[]>} Sorted frozen array of matching relative POSIX file paths.
|
|
16
|
+
*/
|
|
17
|
+
export async function enumerateWorkspaceFiles(rootPath, globPattern) {
|
|
18
|
+
const realRoot = realpathSync(path.resolve(rootPath));
|
|
19
|
+
const visitedDirs = new Set([realRoot]);
|
|
20
|
+
const patternList = typeof globPattern === 'string' ? [globPattern] : globPattern;
|
|
21
|
+
const isMatch = compileGlobOrExactMatcher(patternList);
|
|
22
|
+
const rawMatches = await glob(patternList, {
|
|
23
|
+
cwd: realRoot,
|
|
24
|
+
dot: true,
|
|
25
|
+
onlyFiles: true,
|
|
26
|
+
ignore: ['**/.git/**', '**/node_modules/**'],
|
|
27
|
+
fs: {
|
|
28
|
+
readdir: ((dir, _opts, cb) => {
|
|
29
|
+
readdir(dir, { withFileTypes: true }, (err, entries) => cb?.(err, err !== null
|
|
30
|
+
? []
|
|
31
|
+
: filterJailedDirents({ realRoot, visitedDirs, dirPath: String(dir), entries })));
|
|
32
|
+
}),
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
const matched = [];
|
|
36
|
+
for (const entry of rawMatches) {
|
|
37
|
+
const cleanRel = entry.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
38
|
+
if (isMatch(cleanRel))
|
|
39
|
+
matched.push(cleanRel);
|
|
40
|
+
}
|
|
41
|
+
matched.sort((a, b) => a.localeCompare(b));
|
|
42
|
+
return Object.freeze(matched);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=enumerate-workspace-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enumerate-workspace-files.js","sourceRoot":"","sources":["../../../src/executors/internal/enumerate-workspace-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,WAAuC;IAEvC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IAClF,MAAM,OAAO,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE;QACzC,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,IAAI;QACT,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC;QAC5C,EAAE,EAAE;YACF,OAAO,EAAE,CAAC,CAAC,GAAW,EAAE,KAAc,EAAE,EAAiE,EAAE,EAAE;gBAC3G,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CACrD,EAAE,EAAE,CACF,GAAG,EACH,GAAG,KAAK,IAAI;oBACV,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAClF,CACF,CAAC;YACJ,CAAC,CAAmB;SACrB;KACF,CAAC,CAAC;IACH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { FsAllowOnlyGuardNode, FsProtectGuardNode, PolicyGuardEvaluationInput, PolicyGuardEvaluationResult } from '@paraharness/core';
|
|
2
|
+
/**
|
|
3
|
+
* Evaluates `FsProtectGuardNode` path globs against proposed write effects.
|
|
4
|
+
*
|
|
5
|
+
* @param {FsProtectGuardNode} node - Protect guard AST node.
|
|
6
|
+
* @param {PolicyGuardEvaluationInput} input - Proposed effects and active capability leases.
|
|
7
|
+
*
|
|
8
|
+
* @returns {PolicyGuardEvaluationResult} Frozen policy guard evaluation result.
|
|
9
|
+
*/
|
|
10
|
+
export declare function evaluateFsProtectPaths(node: FsProtectGuardNode, input: PolicyGuardEvaluationInput): PolicyGuardEvaluationResult;
|
|
11
|
+
/**
|
|
12
|
+
* Evaluates `FsReadOnlyGuardNode` against proposed write effects.
|
|
13
|
+
*
|
|
14
|
+
* @param {PolicyGuardEvaluationInput} input - Proposed effects and active capability leases.
|
|
15
|
+
*
|
|
16
|
+
* @returns {PolicyGuardEvaluationResult} Frozen policy guard evaluation result.
|
|
17
|
+
*/
|
|
18
|
+
export declare function evaluateFsReadOnlyPaths(input: PolicyGuardEvaluationInput): PolicyGuardEvaluationResult;
|
|
19
|
+
/**
|
|
20
|
+
* Evaluates `FsAllowOnlyGuardNode` path globs against proposed write effects.
|
|
21
|
+
*
|
|
22
|
+
* @param {FsAllowOnlyGuardNode} node - Allow-only guard AST node.
|
|
23
|
+
* @param {PolicyGuardEvaluationInput} input - Proposed effects and active capability leases.
|
|
24
|
+
*
|
|
25
|
+
* @returns {PolicyGuardEvaluationResult} Frozen policy guard evaluation result.
|
|
26
|
+
*/
|
|
27
|
+
export declare function evaluateFsAllowOnlyPaths(node: FsAllowOnlyGuardNode, input: PolicyGuardEvaluationInput): PolicyGuardEvaluationResult;
|
|
28
|
+
//# sourceMappingURL=evaluate-fs-allow-and-protect-guards.d.ts.map
|