@paraharness/fs 0.1.0 → 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/README.md CHANGED
@@ -34,6 +34,14 @@ import { local, nodeExecutors } from '@paraharness/node';
34
34
  const runner = local.runner({ slots: 4 });
35
35
  const sonnet = claude.model('sonnet', { id: 'claude-sonnet-4-6' });
36
36
 
37
+ const leaseRequest = P.interrupt(
38
+ 'lease-request',
39
+ z.object({
40
+ requestedPaths: z.array(z.string()),
41
+ justification: z.string(),
42
+ }),
43
+ );
44
+
37
45
  const workerPolicy = P.policy('worker-policy')
38
46
  .guard(
39
47
  fs.protect(['packages/*/src/index.ts', 'PRODUCT_SPEC.md']),
@@ -41,6 +49,16 @@ const workerPolicy = P.policy('worker-policy')
41
49
  fs.secretLiterals(),
42
50
  )
43
51
  .onViolation('deny-with-error')
52
+ .guard(
53
+ fs.writeGuard({
54
+ denyGlobs: ['**/*.test.ts', '**/*.test.tsx'],
55
+ onlyExistingAtBaseRef: true,
56
+ }),
57
+ )
58
+ .onViolation('raise-interrupt', leaseRequest, (violation) => ({
59
+ requestedPaths: fs.violatedPaths(violation),
60
+ justification: violation.violationSummary,
61
+ }))
44
62
  .tripwire(fs.maxFilesMutated(6));
45
63
 
46
64
  const worker = P.agent('worker')
@@ -1,17 +1,18 @@
1
1
  import { type FsEditToolNode, type FsGlobToolNode, type FsGrepToolNode, type FsReadToolNode, type FsWriteToolNode, type MaybeBuilder, type NodeRunnerNode } from '@paraharness/core';
2
2
  /**
3
- * Compiles the 5-tool workspace-jailed coding bundle (`fs.codingTools(runner)`).
3
+ * Compiles the 5-tool workspace-jailed coding bundle (`fs.codingTools(runner?)`).
4
4
  *
5
5
  * Returns passive `ToolASTNode` descriptors (`read_file`, `edit_file`, `write_file`,
6
- * `glob_files`, `grep_files`) with `effectTracking: 'declared'`.
6
+ * `glob_files`, `grep_files`) with `effectTracking: 'declared'`, defaulting `runner` to
7
+ * `DEFAULT_NODE_RUNNER_AST_NODE` when omitted.
7
8
  *
8
9
  * @template THandle Runtime handle type of the active isolation scope.
9
10
  *
10
- * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
11
+ * @param {MaybeBuilder<NodeRunnerNode>} [runner=DEFAULT_NODE_RUNNER_AST_NODE] - Optional runner pool AST node or builder.
11
12
  *
12
13
  * @returns {readonly [FsReadToolNode<THandle>, FsEditToolNode<THandle>, FsWriteToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 5-tuple of filesystem coding tool AST nodes.
13
14
  */
14
- export declare function createFsCodingTools<THandle = unknown>(runner: MaybeBuilder<NodeRunnerNode>): readonly [
15
+ export declare function createFsCodingTools<THandle = unknown>(runner?: MaybeBuilder<NodeRunnerNode>): readonly [
15
16
  FsReadToolNode<THandle>,
16
17
  FsEditToolNode<THandle>,
17
18
  FsWriteToolNode<THandle>,
@@ -1 +1 @@
1
- {"version":3,"file":"create-fs-coding-tools.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-coding-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAS3B;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACnD,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,GACnC,SAAS;IACV,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,OAAO,CAAC;IACvB,eAAe,CAAC,OAAO,CAAC;IACxB,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,OAAO,CAAC;CACxB,CASA"}
1
+ {"version":3,"file":"create-fs-coding-tools.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-coding-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAS3B;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAG,OAAO,EACnD,MAAM,GAAE,YAAY,CAAC,cAAc,CAAgC,GAClE,SAAS;IACV,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,OAAO,CAAC;IACvB,eAAe,CAAC,OAAO,CAAC;IACxB,cAAc,CAAC,OAAO,CAAC;IACvB,cAAc,CAAC,OAAO,CAAC;CACxB,CASA"}
@@ -1,18 +1,19 @@
1
- import { extractAST, } from '@paraharness/core';
1
+ import { DEFAULT_NODE_RUNNER_AST_NODE, extractAST, } from '@paraharness/core';
2
2
  import { buildFsEditToolNode, buildFsGlobToolNode, buildFsGrepToolNode, buildFsReadToolNode, buildFsWriteToolNode, } from './internal/build-fs-tool-nodes.js';
3
3
  /**
4
- * Compiles the 5-tool workspace-jailed coding bundle (`fs.codingTools(runner)`).
4
+ * Compiles the 5-tool workspace-jailed coding bundle (`fs.codingTools(runner?)`).
5
5
  *
6
6
  * Returns passive `ToolASTNode` descriptors (`read_file`, `edit_file`, `write_file`,
7
- * `glob_files`, `grep_files`) with `effectTracking: 'declared'`.
7
+ * `glob_files`, `grep_files`) with `effectTracking: 'declared'`, defaulting `runner` to
8
+ * `DEFAULT_NODE_RUNNER_AST_NODE` when omitted.
8
9
  *
9
10
  * @template THandle Runtime handle type of the active isolation scope.
10
11
  *
11
- * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
12
+ * @param {MaybeBuilder<NodeRunnerNode>} [runner=DEFAULT_NODE_RUNNER_AST_NODE] - Optional runner pool AST node or builder.
12
13
  *
13
14
  * @returns {readonly [FsReadToolNode<THandle>, FsEditToolNode<THandle>, FsWriteToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 5-tuple of filesystem coding tool AST nodes.
14
15
  */
15
- export function createFsCodingTools(runner) {
16
+ export function createFsCodingTools(runner = DEFAULT_NODE_RUNNER_AST_NODE) {
16
17
  const runnerNode = extractAST(runner);
17
18
  return Object.freeze([
18
19
  buildFsReadToolNode(runnerNode),
@@ -1 +1 @@
1
- {"version":3,"file":"create-fs-coding-tools.js","sourceRoot":"","sources":["../../src/builders/create-fs-coding-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAQX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAoC;IAQpC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;QACxC,oBAAoB,CAAU,UAAU,CAAC;QACzC,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;KACzC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"create-fs-coding-tools.js","sourceRoot":"","sources":["../../src/builders/create-fs-coding-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,UAAU,GAQX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAuC,4BAA4B;IAQnE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;QACxC,oBAAoB,CAAU,UAAU,CAAC;QACzC,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;KACzC,CAAC,CAAC;AACL,CAAC"}
@@ -1,29 +1,29 @@
1
1
  import type { FsJsonlLessonStoreNode } from '@paraharness/core';
2
2
  /**
3
- * Configuration options for `fs.jsonlLessonStore(options)`.
3
+ * Configuration options for `fs.jsonlLessonStore(options?)`.
4
4
  *
5
5
  * Configures the host-root directory for immutable content-addressed lesson JSON files,
6
6
  * the mutable telemetry counter file path, and the advisory lockfile path.
7
7
  */
8
8
  export interface FsJsonlLessonStoreOptions {
9
- /** Host-root directory storing immutable `<lessonId>.json` definition files. */
10
- readonly definitionsDir: string;
11
- /** Host-root file path storing mutable lesson telemetry and outcome counters. */
12
- readonly statsPath: string;
13
- /** Host-root advisory lockfile path used for cross-process synchronization. */
14
- readonly lockFile: string;
9
+ /** Host-root directory storing immutable `<lessonId>.json` definition files (defaults to `'.paraharness/lessons'`). */
10
+ readonly definitionsDir?: string;
11
+ /** Host-root file path storing mutable lesson telemetry and outcome counters (defaults to `` `${definitionsDir}-stats.json` ``). */
12
+ readonly statsPath?: string;
13
+ /** Host-root advisory lockfile path used for cross-process synchronization (defaults to `` `${definitionsDir}.lock` ``). */
14
+ readonly lockFile?: string;
15
15
  }
16
16
  /**
17
- * Compiles a passive `FsJsonlLessonStoreNode` (`fs:jsonl-lesson-store`) for `fs.jsonlLessonStore(options)`.
17
+ * Compiles a passive `FsJsonlLessonStoreNode` (`fs:jsonl-lesson-store`) for `fs.jsonlLessonStore(options?)`.
18
18
  *
19
19
  * Configures a host-root-resolved content-addressed lesson store splitting immutable
20
20
  * `<definitionsDir>/<lessonId>.json` definitions from mutable `statsPath` counters.
21
21
  *
22
- * @param {FsJsonlLessonStoreOptions} options - Host-root paths for definitions, stats, and lockfile.
22
+ * @param {FsJsonlLessonStoreOptions} [options] - Optional host-root paths for definitions, stats, and lockfile.
23
23
  *
24
24
  * @returns {FsJsonlLessonStoreNode} Deeply frozen `FsJsonlLessonStoreNode` AST descriptor.
25
25
  *
26
26
  * @throws {Error} If any of `definitionsDir`, `statsPath`, or `lockFile` is empty.
27
27
  */
28
- export declare function createFsJsonlLessonStoreBuilder(options: FsJsonlLessonStoreOptions): FsJsonlLessonStoreNode;
28
+ export declare function createFsJsonlLessonStoreBuilder(options?: FsJsonlLessonStoreOptions): FsJsonlLessonStoreNode;
29
29
  //# sourceMappingURL=create-fs-jsonl-lesson-store-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-fs-jsonl-lesson-store-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-jsonl-lesson-store-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,gFAAgF;IAChF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,iFAAiF;IACjF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,yBAAyB,GACjC,sBAAsB,CAgBxB"}
1
+ {"version":3,"file":"create-fs-jsonl-lesson-store-builder.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-jsonl-lesson-store-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACxC,uHAAuH;IACvH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,oIAAoI;IACpI,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,4HAA4H;IAC5H,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,CAAC,EAAE,yBAAyB,GAClC,sBAAsB,CA6BxB"}
@@ -1,30 +1,37 @@
1
1
  /**
2
- * Compiles a passive `FsJsonlLessonStoreNode` (`fs:jsonl-lesson-store`) for `fs.jsonlLessonStore(options)`.
2
+ * Compiles a passive `FsJsonlLessonStoreNode` (`fs:jsonl-lesson-store`) for `fs.jsonlLessonStore(options?)`.
3
3
  *
4
4
  * Configures a host-root-resolved content-addressed lesson store splitting immutable
5
5
  * `<definitionsDir>/<lessonId>.json` definitions from mutable `statsPath` counters.
6
6
  *
7
- * @param {FsJsonlLessonStoreOptions} options - Host-root paths for definitions, stats, and lockfile.
7
+ * @param {FsJsonlLessonStoreOptions} [options] - Optional host-root paths for definitions, stats, and lockfile.
8
8
  *
9
9
  * @returns {FsJsonlLessonStoreNode} Deeply frozen `FsJsonlLessonStoreNode` AST descriptor.
10
10
  *
11
11
  * @throws {Error} If any of `definitionsDir`, `statsPath`, or `lockFile` is empty.
12
12
  */
13
13
  export function createFsJsonlLessonStoreBuilder(options) {
14
- if (typeof options.definitionsDir !== 'string' || options.definitionsDir.trim().length === 0) {
14
+ if (options?.definitionsDir !== undefined &&
15
+ (typeof options.definitionsDir !== 'string' || options.definitionsDir.trim().length === 0)) {
15
16
  throw new Error('fs.jsonlLessonStore requires a non-empty definitionsDir path.');
16
17
  }
17
- if (typeof options.statsPath !== 'string' || options.statsPath.trim().length === 0) {
18
+ if (options?.statsPath !== undefined &&
19
+ (typeof options.statsPath !== 'string' || options.statsPath.trim().length === 0)) {
18
20
  throw new Error('fs.jsonlLessonStore requires a non-empty statsPath.');
19
21
  }
20
- if (typeof options.lockFile !== 'string' || options.lockFile.trim().length === 0) {
22
+ if (options?.lockFile !== undefined &&
23
+ (typeof options.lockFile !== 'string' || options.lockFile.trim().length === 0)) {
21
24
  throw new Error('fs.jsonlLessonStore requires a non-empty lockFile path.');
22
25
  }
26
+ const definitionsDir = (options?.definitionsDir ?? '.paraharness/lessons').trim();
27
+ const normalizedBase = definitionsDir.replace(/[/\\]+$/, '') || '.paraharness/lessons';
28
+ const statsPath = (options?.statsPath ?? `${normalizedBase}-stats.json`).trim();
29
+ const lockFile = (options?.lockFile ?? `${normalizedBase}.lock`).trim();
23
30
  return Object.freeze({
24
31
  type: 'fs:jsonl-lesson-store',
25
- definitionsDir: options.definitionsDir.trim(),
26
- statsPath: options.statsPath.trim(),
27
- lockFile: options.lockFile.trim(),
32
+ definitionsDir,
33
+ statsPath,
34
+ lockFile,
28
35
  });
29
36
  }
30
37
  //# sourceMappingURL=create-fs-jsonl-lesson-store-builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-fs-jsonl-lesson-store-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-jsonl-lesson-store-builder.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAkC;IAElC,IAAI,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAyB;QAC3C,IAAI,EAAE,uBAAuB;QAC7B,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE;QAC7C,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE;QACnC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;KAClC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"create-fs-jsonl-lesson-store-builder.js","sourceRoot":"","sources":["../../src/builders/create-fs-jsonl-lesson-store-builder.ts"],"names":[],"mappings":"AAiBA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,+BAA+B,CAC7C,OAAmC;IAEnC,IACE,OAAO,EAAE,cAAc,KAAK,SAAS;QACrC,CAAC,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC1F,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACnF,CAAC;IACD,IACE,OAAO,EAAE,SAAS,KAAK,SAAS;QAChC,CAAC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAChF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IACE,OAAO,EAAE,QAAQ,KAAK,SAAS;QAC/B,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,cAAc,IAAI,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;IAClF,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,sBAAsB,CAAC;IACvF,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,SAAS,IAAI,GAAG,cAAc,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAChF,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,QAAQ,IAAI,GAAG,cAAc,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,OAAO,MAAM,CAAC,MAAM,CAAyB;QAC3C,IAAI,EAAE,uBAAuB;QAC7B,cAAc;QACd,SAAS;QACT,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -1,15 +1,16 @@
1
1
  import { type FsGlobToolNode, type FsGrepToolNode, type FsReadToolNode, type MaybeBuilder, type NodeRunnerNode } from '@paraharness/core';
2
2
  /**
3
- * Compiles the 3-tool workspace-jailed read-only bundle (`fs.readOnlyTools(runner)`).
3
+ * Compiles the 3-tool workspace-jailed read-only bundle (`fs.readOnlyTools(runner?)`).
4
4
  *
5
5
  * Returns passive `ToolASTNode` descriptors (`read_file`, `glob_files`, `grep_files`)
6
- * with `effectTracking: 'declared'` for evaluators, adjudicators, and arbiters.
6
+ * with `effectTracking: 'declared'` for evaluators, adjudicators, and arbiters, defaulting
7
+ * `runner` to `DEFAULT_NODE_RUNNER_AST_NODE` when omitted.
7
8
  *
8
9
  * @template THandle Runtime handle type of the active isolation scope.
9
10
  *
10
- * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
11
+ * @param {MaybeBuilder<NodeRunnerNode>} [runner=DEFAULT_NODE_RUNNER_AST_NODE] - Optional runner pool AST node or builder.
11
12
  *
12
13
  * @returns {readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 3-tuple of read-only filesystem tool AST nodes.
13
14
  */
14
- export declare function createFsReadOnlyTools<THandle = unknown>(runner: MaybeBuilder<NodeRunnerNode>): readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>];
15
+ export declare function createFsReadOnlyTools<THandle = unknown>(runner?: MaybeBuilder<NodeRunnerNode>): readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>];
15
16
  //# sourceMappingURL=create-fs-read-only-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-fs-read-only-tools.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-read-only-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAO3B;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAG,OAAO,EACrD,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,GACnC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAOtF"}
1
+ {"version":3,"file":"create-fs-read-only-tools.d.ts","sourceRoot":"","sources":["../../src/builders/create-fs-read-only-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAO3B;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAG,OAAO,EACrD,MAAM,GAAE,YAAY,CAAC,cAAc,CAAgC,GAClE,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,CAOtF"}
@@ -1,18 +1,19 @@
1
- import { extractAST, } from '@paraharness/core';
1
+ import { DEFAULT_NODE_RUNNER_AST_NODE, extractAST, } from '@paraharness/core';
2
2
  import { buildFsGlobToolNode, buildFsGrepToolNode, buildFsReadToolNode, } from './internal/build-fs-tool-nodes.js';
3
3
  /**
4
- * Compiles the 3-tool workspace-jailed read-only bundle (`fs.readOnlyTools(runner)`).
4
+ * Compiles the 3-tool workspace-jailed read-only bundle (`fs.readOnlyTools(runner?)`).
5
5
  *
6
6
  * Returns passive `ToolASTNode` descriptors (`read_file`, `glob_files`, `grep_files`)
7
- * with `effectTracking: 'declared'` for evaluators, adjudicators, and arbiters.
7
+ * with `effectTracking: 'declared'` for evaluators, adjudicators, and arbiters, defaulting
8
+ * `runner` to `DEFAULT_NODE_RUNNER_AST_NODE` when omitted.
8
9
  *
9
10
  * @template THandle Runtime handle type of the active isolation scope.
10
11
  *
11
- * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
12
+ * @param {MaybeBuilder<NodeRunnerNode>} [runner=DEFAULT_NODE_RUNNER_AST_NODE] - Optional runner pool AST node or builder.
12
13
  *
13
14
  * @returns {readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 3-tuple of read-only filesystem tool AST nodes.
14
15
  */
15
- export function createFsReadOnlyTools(runner) {
16
+ export function createFsReadOnlyTools(runner = DEFAULT_NODE_RUNNER_AST_NODE) {
16
17
  const runnerNode = extractAST(runner);
17
18
  return Object.freeze([
18
19
  buildFsReadToolNode(runnerNode),
@@ -1 +1 @@
1
- {"version":3,"file":"create-fs-read-only-tools.js","sourceRoot":"","sources":["../../src/builders/create-fs-read-only-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,GAMX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAoC;IAEpC,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;KACzC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"create-fs-read-only-tools.js","sourceRoot":"","sources":["../../src/builders/create-fs-read-only-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,UAAU,GAMX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAuC,4BAA4B;IAEnE,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;QACxC,mBAAmB,CAAU,UAAU,CAAC;KACzC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { PolicyViolation } from '@paraharness/core';
2
+ /**
3
+ * Extracts deduplicated filesystem paths in first-seen order from a `PolicyViolation` (`fs.violatedPaths(violation)`).
4
+ *
5
+ * Iterates `violation.violatedEffects` in a single pass, inspecting only `'fs:effect'` records whose
6
+ * `attributes.paths` property is an array, and collects unique string path entries without allocating
7
+ * intermediate arrays.
8
+ *
9
+ * @param {PolicyViolation} violation - Policy violation emitted by a pre-flight or post-flight policy guard.
10
+ *
11
+ * @returns {string[]} Deduplicated array of violated filesystem paths in first-seen order.
12
+ */
13
+ export declare function extractFsViolatedPaths(violation: PolicyViolation): string[];
14
+ //# sourceMappingURL=extract-fs-violated-paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-fs-violated-paths.d.ts","sourceRoot":"","sources":["../../src/builders/extract-fs-violated-paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,eAAe,GAAG,MAAM,EAAE,CAe3E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Extracts deduplicated filesystem paths in first-seen order from a `PolicyViolation` (`fs.violatedPaths(violation)`).
3
+ *
4
+ * Iterates `violation.violatedEffects` in a single pass, inspecting only `'fs:effect'` records whose
5
+ * `attributes.paths` property is an array, and collects unique string path entries without allocating
6
+ * intermediate arrays.
7
+ *
8
+ * @param {PolicyViolation} violation - Policy violation emitted by a pre-flight or post-flight policy guard.
9
+ *
10
+ * @returns {string[]} Deduplicated array of violated filesystem paths in first-seen order.
11
+ */
12
+ export function extractFsViolatedPaths(violation) {
13
+ const seenPaths = new Set();
14
+ const paths = [];
15
+ for (const effect of violation.violatedEffects) {
16
+ if (effect.kind !== 'fs:effect')
17
+ continue;
18
+ const rawPaths = effect.attributes?.['paths'];
19
+ if (!Array.isArray(rawPaths))
20
+ continue;
21
+ for (const candidatePath of rawPaths) {
22
+ if (typeof candidatePath === 'string' && !seenPaths.has(candidatePath)) {
23
+ seenPaths.add(candidatePath);
24
+ paths.push(candidatePath);
25
+ }
26
+ }
27
+ }
28
+ return paths;
29
+ }
30
+ //# sourceMappingURL=extract-fs-violated-paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-fs-violated-paths.js","sourceRoot":"","sources":["../../src/builders/extract-fs-violated-paths.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAA0B;IAC/D,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW;YAAE,SAAS;QAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,KAAK,MAAM,aAAa,IAAI,QAAQ,EAAE,CAAC;YACrC,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBACvE,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { FsAllowOnlyGuardNode, FsBoundaryGuardNode, FsEditToolNode, FsGlobMatcherNode, FsGlobSourceNode, FsGlobToolNode, FsGrepToolNode, FsJsonlLessonStoreNode, FsPartitionMapNode, FsPartitionPathMapping, FsProtectGuardNode, FsQuotaTripwireNode, FsReadOnlyGuardNode, FsReadToolNode, FsRegexCheckNode, FsRequireReadBeforeWriteGuardNode, FsScopedWriteGuardNode, FsSecretLiteralsGuardNode, FsTelemetryCollectorNode, FsTextSourceNode, FsWriteGuardNode, FsWriteToolNode, LeaseDelta, MaybeBuilder, NodeRunnerNode, ScopePredicate, TopologyNode } from '@paraharness/core';
1
+ import type { FsAllowOnlyGuardNode, FsBoundaryGuardNode, FsEditToolNode, FsGlobMatcherNode, FsGlobSourceNode, FsGlobToolNode, FsGrepToolNode, FsJsonlLessonStoreNode, FsPartitionMapNode, FsPartitionPathMapping, FsProtectGuardNode, FsQuotaTripwireNode, FsReadOnlyGuardNode, FsReadToolNode, FsRegexCheckNode, FsRequireReadBeforeWriteGuardNode, FsScopedWriteGuardNode, FsSecretLiteralsGuardNode, FsTelemetryCollectorNode, FsTextSourceNode, FsWriteGuardNode, FsWriteToolNode, LeaseDelta, MaybeBuilder, NodeRunnerNode, PolicyViolation, ScopePredicate, TopologyNode } from '@paraharness/core';
2
2
  import type { FsJsonlLessonStoreOptions } from './create-fs-jsonl-lesson-store-builder.js';
3
3
  import type { FsRegexCheckOptions } from './create-fs-regex-check-builder.js';
4
4
  import type { FsWriteGuardOptions } from './create-fs-write-guard-builder.js';
@@ -126,6 +126,14 @@ export interface FsNamespace {
126
126
  * @returns {LeaseDelta} Frozen `LeaseDelta` record.
127
127
  */
128
128
  allowWriteGlobs(globs: readonly string[]): LeaseDelta;
129
+ /**
130
+ * Extracts deduplicated filesystem paths in first-seen order from `violation.violatedEffects`.
131
+ *
132
+ * Inspects `'fs:effect'` records in `violation.violatedEffects` and returns unique string path entries.
133
+ * @param {PolicyViolation} violation - Policy violation emitted by a pre-flight or post-flight guard.
134
+ * @returns {string[]} Deduplicated array of violated filesystem paths in first-seen order.
135
+ */
136
+ violatedPaths(violation: PolicyViolation): string[];
129
137
  /**
130
138
  * Compiles a passive `FsQuotaTripwireNode` tripping when distinct mutated files exceed `count`.
131
139
  *
@@ -139,10 +147,10 @@ export interface FsNamespace {
139
147
  *
140
148
  * Enforces `realpath` symlink jailing and `node_modules` write denial at runtime.
141
149
  * @template THandle Runtime handle type of the active isolation scope.
142
- * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
150
+ * @param {MaybeBuilder<NodeRunnerNode>} [runner] - Optional runner pool AST node or builder (defaults to `DEFAULT_NODE_RUNNER_AST_NODE`).
143
151
  * @returns {readonly [FsReadToolNode<THandle>, FsEditToolNode<THandle>, FsWriteToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 5-tuple of coding tools.
144
152
  */
145
- codingTools<THandle = unknown>(runner: MaybeBuilder<NodeRunnerNode>): readonly [
153
+ codingTools<THandle = unknown>(runner?: MaybeBuilder<NodeRunnerNode>): readonly [
146
154
  FsReadToolNode<THandle>,
147
155
  FsEditToolNode<THandle>,
148
156
  FsWriteToolNode<THandle>,
@@ -154,10 +162,10 @@ export interface FsNamespace {
154
162
  *
155
163
  * Emits read-only `FsToolEffect` records with `mutatesScope: false`.
156
164
  * @template THandle Runtime handle type of the active isolation scope.
157
- * @param {MaybeBuilder<NodeRunnerNode>} runner - Runner pool AST node or builder.
165
+ * @param {MaybeBuilder<NodeRunnerNode>} [runner] - Optional runner pool AST node or builder (defaults to `DEFAULT_NODE_RUNNER_AST_NODE`).
158
166
  * @returns {readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>]} Frozen 3-tuple of read-only tools.
159
167
  */
160
- readOnlyTools<THandle = unknown>(runner: MaybeBuilder<NodeRunnerNode>): readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>];
168
+ readOnlyTools<THandle = unknown>(runner?: MaybeBuilder<NodeRunnerNode>): readonly [FsReadToolNode<THandle>, FsGlobToolNode<THandle>, FsGrepToolNode<THandle>];
161
169
  /**
162
170
  * Compiles a passive `FsTelemetryCollectorNode` collecting `filesRead` and `filesMutated`.
163
171
  *
@@ -179,9 +187,9 @@ export interface FsNamespace {
179
187
  * Compiles a passive `FsJsonlLessonStoreNode` configuring the crash-safe hybrid lesson store.
180
188
  *
181
189
  * Resolves `definitionsDir`, `statsPath`, and `lockFile` against the immutable host repository root.
182
- * @param {FsJsonlLessonStoreOptions} options - Lesson store host-root path options.
190
+ * @param {FsJsonlLessonStoreOptions} [options] - Optional lesson store host-root path options.
183
191
  * @returns {FsJsonlLessonStoreNode} Frozen `FsJsonlLessonStoreNode` descriptor.
184
192
  */
185
- jsonlLessonStore(options: FsJsonlLessonStoreOptions): FsJsonlLessonStoreNode;
193
+ jsonlLessonStore(options?: FsJsonlLessonStoreOptions): FsJsonlLessonStoreNode;
186
194
  }
187
195
  //# sourceMappingURL=fs-namespace-contract.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fs-namespace-contract.d.ts","sourceRoot":"","sources":["../../src/builders/fs-namespace-contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fs-namespace-contract.d.ts","sourceRoot":"","sources":["../../src/builders/fs-namespace-contract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fs-namespace.d.ts","sourceRoot":"","sources":["../../src/builders/fs-namespace.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,EAAE,EAAE,WAqBf,CAAC"}
1
+ {"version":3,"file":"fs-namespace.d.ts","sourceRoot":"","sources":["../../src/builders/fs-namespace.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,EAAE,EAAE,WAsBf,CAAC"}
@@ -18,6 +18,7 @@ import { createFsSecretLiteralsGuardBuilder } from './create-fs-secret-literals-
18
18
  import { createFsTelemetryBuilder } from './create-fs-telemetry-builder.js';
19
19
  import { createFsTextSourceBuilder } from './create-fs-text-source-builder.js';
20
20
  import { createFsWriteGuardBuilder } from './create-fs-write-guard-builder.js';
21
+ import { extractFsViolatedPaths } from './extract-fs-violated-paths.js';
21
22
  /**
22
23
  * Frozen `@paraharness/fs` builder namespace (`fs.*`).
23
24
  *
@@ -40,6 +41,7 @@ export const fs = Object.freeze({
40
41
  scopedWrite: createFsScopedWriteGuardBuilder,
41
42
  secretLiterals: createFsSecretLiteralsGuardBuilder,
42
43
  allowWriteGlobs: createFsAllowWriteGlobsLeaseDelta,
44
+ violatedPaths: extractFsViolatedPaths,
43
45
  maxFilesMutated: createFsMaxFilesMutatedBuilder,
44
46
  codingTools: createFsCodingTools,
45
47
  readOnlyTools: createFsReadOnlyTools,
@@ -1 +1 @@
1
- {"version":3,"file":"fs-namespace.js","sourceRoot":"","sources":["../../src/builders/fs-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,0CAA0C,EAAE,MAAM,wDAAwD,CAAC;AACpH,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAG/E;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,EAAE,GAAgB,MAAM,CAAC,MAAM,CAAc;IACxD,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,yBAAyB;IAC/B,UAAU,EAAE,0BAA0B;IACtC,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,4BAA4B;IACzC,aAAa,EAAE,4BAA4B;IAC3C,UAAU,EAAE,yBAAyB;IACrC,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,4BAA4B;IACtC,SAAS,EAAE,6BAA6B;IACxC,sBAAsB,EAAE,0CAA0C;IAClE,WAAW,EAAE,+BAA+B;IAC5C,cAAc,EAAE,kCAAkC;IAClD,eAAe,EAAE,iCAAiC;IAClD,eAAe,EAAE,8BAA8B;IAC/C,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,SAAS,EAAE,wBAAwB;IACnC,UAAU,EAAE,yBAAyB;IACrC,gBAAgB,EAAE,+BAA+B;CAClD,CAAC,CAAC"}
1
+ {"version":3,"file":"fs-namespace.js","sourceRoot":"","sources":["../../src/builders/fs-namespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,0CAA0C,EAAE,MAAM,wDAAwD,CAAC;AACpH,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,kCAAkC,EAAE,MAAM,8CAA8C,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,EAAE,GAAgB,MAAM,CAAC,MAAM,CAAc;IACxD,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,yBAAyB;IAC/B,UAAU,EAAE,0BAA0B;IACtC,YAAY,EAAE,oBAAoB;IAClC,WAAW,EAAE,4BAA4B;IACzC,aAAa,EAAE,4BAA4B;IAC3C,UAAU,EAAE,yBAAyB;IACrC,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,4BAA4B;IACtC,SAAS,EAAE,6BAA6B;IACxC,sBAAsB,EAAE,0CAA0C;IAClE,WAAW,EAAE,+BAA+B;IAC5C,cAAc,EAAE,kCAAkC;IAClD,eAAe,EAAE,iCAAiC;IAClD,aAAa,EAAE,sBAAsB;IACrC,eAAe,EAAE,8BAA8B;IAC/C,WAAW,EAAE,mBAAmB;IAChC,aAAa,EAAE,qBAAqB;IACpC,SAAS,EAAE,wBAAwB;IACnC,UAAU,EAAE,yBAAyB;IACrC,gBAAgB,EAAE,+BAA+B;CAClD,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export { createFsSecretLiteralsGuardBuilder } from './builders/create-fs-secret-
19
19
  export { createFsTelemetryBuilder } from './builders/create-fs-telemetry-builder.js';
20
20
  export { createFsTextSourceBuilder } from './builders/create-fs-text-source-builder.js';
21
21
  export { createFsWriteGuardBuilder, type FsWriteGuardOptions, } from './builders/create-fs-write-guard-builder.js';
22
+ export { extractFsViolatedPaths, extractFsViolatedPaths as violatedPaths, } from './builders/extract-fs-violated-paths.js';
22
23
  export type { FsNamespace } from './builders/fs-namespace-contract.js';
23
24
  export { fs } from './builders/fs-namespace.js';
24
25
  export { createFsExecutors } from './executors/create-fs-executors.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -18,6 +18,7 @@ export { createFsSecretLiteralsGuardBuilder } from './builders/create-fs-secret-
18
18
  export { createFsTelemetryBuilder } from './builders/create-fs-telemetry-builder.js';
19
19
  export { createFsTextSourceBuilder } from './builders/create-fs-text-source-builder.js';
20
20
  export { createFsWriteGuardBuilder, } from './builders/create-fs-write-guard-builder.js';
21
+ export { extractFsViolatedPaths, extractFsViolatedPaths as violatedPaths, } from './builders/extract-fs-violated-paths.js';
21
22
  export { fs } from './builders/fs-namespace.js';
22
23
  export { createFsExecutors } from './executors/create-fs-executors.js';
23
24
  export { collectFsTelemetry, evaluateFsQuotaTripwire, executeFsRegexCheck, } from './executors/fs-check-tripwire-and-telemetry.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,iCAAiC,EAAE,MAAM,uDAAuD,CAAC;AAC1G,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EACL,+BAA+B,GAEhC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EACL,yBAAyB,GAE1B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,0CAA0C,EAAE,MAAM,iEAAiE,CAAC;AAC7H,OAAO,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AACrG,OAAO,EAAE,kCAAkC,EAAE,MAAM,uDAAuD,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EACL,yBAAyB,GAE1B,MAAM,6CAA6C,CAAC;AAErD,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,kBAAkB,GAGnB,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AACjG,OAAO,EAAE,iCAAiC,EAAE,MAAM,uDAAuD,CAAC;AAC1G,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,8CAA8C,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,4BAA4B,EAAE,MAAM,gDAAgD,CAAC;AAC9F,OAAO,EACL,+BAA+B,GAEhC,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAC5F,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EACL,yBAAyB,GAE1B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,0CAA0C,EAAE,MAAM,iEAAiE,CAAC;AAC7H,OAAO,EAAE,+BAA+B,EAAE,MAAM,oDAAoD,CAAC;AACrG,OAAO,EAAE,kCAAkC,EAAE,MAAM,uDAAuD,CAAC;AAC3G,OAAO,EAAE,wBAAwB,EAAE,MAAM,2CAA2C,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EACL,yBAAyB,GAE1B,MAAM,6CAA6C,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,IAAI,aAAa,GACxC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,EAAE,EAAE,MAAM,4BAA4B,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,oCAAoC,CAAC;AAK5C,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,6BAA6B,EAC7B,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAEL,kBAAkB,GAGnB,MAAM,mCAAmC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraharness/fs",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Workspace-jailed filesystem tools, glob effect matchers, pre/post-flight write policy guards, quota tripwires, and atomic JSONL lesson store for Paraharness.",
5
5
  "keywords": [
6
6
  "paraharness",
@@ -50,8 +50,8 @@
50
50
  "tinyglobby": "^0.2.17",
51
51
  "write-file-atomic": "^8.0.0",
52
52
  "zod": "^4.6.7",
53
- "@paraharness/core": "0.1.0",
54
- "@paraharness/lockfile": "0.1.0"
53
+ "@paraharness/core": "0.2.0",
54
+ "@paraharness/lockfile": "0.2.0"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@types/node": "^22.9.0",