@paraharness/fs 0.1.0 → 0.2.1
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 +18 -0
- package/dist/builders/create-fs-coding-tools.d.ts +5 -4
- package/dist/builders/create-fs-coding-tools.d.ts.map +1 -1
- package/dist/builders/create-fs-coding-tools.js +6 -5
- package/dist/builders/create-fs-coding-tools.js.map +1 -1
- package/dist/builders/create-fs-jsonl-lesson-store-builder.d.ts +10 -10
- package/dist/builders/create-fs-jsonl-lesson-store-builder.d.ts.map +1 -1
- package/dist/builders/create-fs-jsonl-lesson-store-builder.js +15 -8
- package/dist/builders/create-fs-jsonl-lesson-store-builder.js.map +1 -1
- package/dist/builders/create-fs-read-only-tools.d.ts +5 -4
- package/dist/builders/create-fs-read-only-tools.d.ts.map +1 -1
- package/dist/builders/create-fs-read-only-tools.js +6 -5
- package/dist/builders/create-fs-read-only-tools.js.map +1 -1
- 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 +15 -7
- package/dist/builders/fs-namespace-contract.d.ts.map +1 -1
- package/dist/builders/fs-namespace.d.ts.map +1 -1
- package/dist/builders/fs-namespace.js +2 -0
- package/dist/builders/fs-namespace.js.map +1 -1
- package/dist/executors/internal/execute-fs-edit-operation.d.ts +1 -2
- package/dist/executors/internal/execute-fs-edit-operation.d.ts.map +1 -1
- package/dist/executors/internal/execute-fs-edit-operation.js +19 -5
- package/dist/executors/internal/execute-fs-edit-operation.js.map +1 -1
- package/dist/executors/internal/fs-coding-tool-drivers.d.ts.map +1 -1
- package/dist/executors/internal/fs-coding-tool-drivers.js +10 -2
- package/dist/executors/internal/fs-coding-tool-drivers.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
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 -
|
|
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
|
|
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,
|
|
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 -
|
|
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
|
|
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
|
|
11
|
-
/** Host-root file path storing mutable lesson telemetry and outcome counters. */
|
|
12
|
-
readonly statsPath
|
|
13
|
-
/** Host-root advisory lockfile path used for cross-process synchronization. */
|
|
14
|
-
readonly lockFile
|
|
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 -
|
|
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
|
|
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,
|
|
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 -
|
|
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 (
|
|
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 (
|
|
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 (
|
|
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
|
|
26
|
-
statsPath
|
|
27
|
-
lockFile
|
|
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,
|
|
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 -
|
|
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
|
|
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,
|
|
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 -
|
|
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
|
|
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 -
|
|
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
|
|
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 -
|
|
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
|
|
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 -
|
|
190
|
+
* @param {FsJsonlLessonStoreOptions} [options] - Optional lesson store host-root path options.
|
|
183
191
|
* @returns {FsJsonlLessonStoreNode} Frozen `FsJsonlLessonStoreNode` descriptor.
|
|
184
192
|
*/
|
|
185
|
-
jsonlLessonStore(options
|
|
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":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,iCAAiC,EACjC,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,YAAY,EACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACzC;;;;;;OAMG;IACH,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C;;;;;;;OAOG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,iBAAiB,CAAC;IACzF;;;;;;;;OAQG;IACH,YAAY,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAC7C,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,EAChD,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC,GAC5D,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAClC;;;;;;;;OAQG;IACH,WAAW,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAC5C,YAAY,EAAE,kBAAkB,CAAC,UAAU,CAAC,EAC5C,WAAW,EAAE,UAAU,GACtB,cAAc,CAAC;IAClB;;;;;;;OAOG;IACH,aAAa,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAC9C,YAAY,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAC3C,mBAAmB,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,gBAAgB,CAAC;IAC3D;;;;;;OAMG;IACH,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,CAAC;IACtD;;;;;OAKG;IACH,QAAQ,IAAI,mBAAmB,CAAC;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,oBAAoB,CAAC;IAC1D;;;;;OAKG;IACH,sBAAsB,IAAI,iCAAiC,CAAC;IAC5D;;;;;;;OAOG;IACH,WAAW,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,EAC5C,YAAY,EAAE,kBAAkB,CAAC,UAAU,CAAC,GAC3C,sBAAsB,CAAC;IAC1B;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,yBAAyB,CAAC;IACxE;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAAC;IACtD;;;;;;OAMG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAAC;IACpD;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,GAAG,OAAO,EAC3B,MAAM,EAAE,YAAY,CAAC,cAAc,CAAC,
|
|
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":"
|
|
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;
|
|
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"}
|
|
@@ -14,13 +14,12 @@ export interface ExecuteFsEditOperationParams {
|
|
|
14
14
|
* Executes a jailed `edit_file` string replacement inside `scopeHandle`.
|
|
15
15
|
*
|
|
16
16
|
* Verifies that `params.oldString` exists in the target file before writing the updated UTF-8 text.
|
|
17
|
+
* Returns an `isError: true` result when reading the file fails or `params.oldString` is absent.
|
|
17
18
|
*
|
|
18
19
|
* @param {unknown} scopeHandle - Active isolation scope handle.
|
|
19
20
|
* @param {ExecuteFsEditOperationParams} params - Validated edit arguments (`path`, `oldString`, `newString`).
|
|
20
21
|
*
|
|
21
22
|
* @returns {Promise<ToolExecutionResult>} Frozen tool execution result.
|
|
22
|
-
*
|
|
23
|
-
* @throws {Error} If `params.oldString` is not found in the target file.
|
|
24
23
|
*/
|
|
25
24
|
export declare function executeFsEditOperation(scopeHandle: unknown, params: ExecuteFsEditOperationParams): Promise<ToolExecutionResult>;
|
|
26
25
|
//# sourceMappingURL=execute-fs-edit-operation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-fs-edit-operation.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/execute-fs-edit-operation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED
|
|
1
|
+
{"version":3,"file":"execute-fs-edit-operation.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/execute-fs-edit-operation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAG7D;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,mDAAmD;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,kCAAkC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA2B9B"}
|
|
@@ -4,22 +4,36 @@ import { resolveJailedWorktreePath } from './resolve-jailed-worktree-path.js';
|
|
|
4
4
|
* Executes a jailed `edit_file` string replacement inside `scopeHandle`.
|
|
5
5
|
*
|
|
6
6
|
* Verifies that `params.oldString` exists in the target file before writing the updated UTF-8 text.
|
|
7
|
+
* Returns an `isError: true` result when reading the file fails or `params.oldString` is absent.
|
|
7
8
|
*
|
|
8
9
|
* @param {unknown} scopeHandle - Active isolation scope handle.
|
|
9
10
|
* @param {ExecuteFsEditOperationParams} params - Validated edit arguments (`path`, `oldString`, `newString`).
|
|
10
11
|
*
|
|
11
12
|
* @returns {Promise<ToolExecutionResult>} Frozen tool execution result.
|
|
12
|
-
*
|
|
13
|
-
* @throws {Error} If `params.oldString` is not found in the target file.
|
|
14
13
|
*/
|
|
15
14
|
export async function executeFsEditOperation(scopeHandle, params) {
|
|
16
15
|
const { normalizedRelPath, absolutePath } = resolveJailedWorktreePath(scopeHandle, params.path, 'write');
|
|
17
|
-
|
|
16
|
+
let currentContent;
|
|
17
|
+
try {
|
|
18
|
+
currentContent = await readFile(absolutePath, 'utf8');
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
return Object.freeze({
|
|
22
|
+
content: err instanceof Error ? err.message : String(err),
|
|
23
|
+
isError: true,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
18
26
|
if (!currentContent.includes(params.oldString)) {
|
|
19
|
-
|
|
27
|
+
return Object.freeze({
|
|
28
|
+
content: `fs:edit failed on '${normalizedRelPath}': target oldString was not found in file.`,
|
|
29
|
+
isError: true,
|
|
30
|
+
});
|
|
20
31
|
}
|
|
21
32
|
const updatedContent = currentContent.replace(params.oldString, () => params.newString);
|
|
22
33
|
await writeFile(absolutePath, updatedContent, 'utf8');
|
|
23
|
-
return Object.freeze({
|
|
34
|
+
return Object.freeze({
|
|
35
|
+
content: `Edited ${normalizedRelPath}`,
|
|
36
|
+
isError: false,
|
|
37
|
+
});
|
|
24
38
|
}
|
|
25
39
|
//# sourceMappingURL=execute-fs-edit-operation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute-fs-edit-operation.js","sourceRoot":"","sources":["../../../src/executors/internal/execute-fs-edit-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAgB9E
|
|
1
|
+
{"version":3,"file":"execute-fs-edit-operation.js","sourceRoot":"","sources":["../../../src/executors/internal/execute-fs-edit-operation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAgB9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAoB,EACpB,MAAoC;IAEpC,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,yBAAyB,CACnE,WAAW,EACX,MAAM,CAAC,IAAI,EACX,OAAO,CACR,CAAC;IACF,IAAI,cAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,cAAc,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,MAAM,CAAsB;YACxC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,MAAM,CAAsB;YACxC,OAAO,EAAE,sBAAsB,iBAAiB,4CAA4C;YAC5F,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;IACD,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACxF,MAAM,SAAS,CAAC,YAAY,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC,MAAM,CAAsB;QACxC,OAAO,EAAE,UAAU,iBAAiB,EAAE;QACtC,OAAO,EAAE,KAAK;KACf,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-coding-tool-drivers.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/fs-coding-tool-drivers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAG,OAAO,EACpD,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"fs-coding-tool-drivers.d.ts","sourceRoot":"","sources":["../../../src/executors/internal/fs-coding-tool-drivers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAW3B;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAG,OAAO,EACpD,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAY9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAG,OAAO,EAC9C,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAG,OAAO,EAC/C,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,EAC9B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,oBAAoB,CAAC,OAAO,CAAC,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
|
|
@@ -16,8 +16,16 @@ import { resolveJailedWorktreePath } from './resolve-jailed-worktree-path.js';
|
|
|
16
16
|
export async function readFsToolFile(node, args, ctx) {
|
|
17
17
|
const parsed = node.inputSchema.parse(args);
|
|
18
18
|
const { absolutePath } = resolveJailedWorktreePath(ctx.scopeHandle, parsed.path, 'read');
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
try {
|
|
20
|
+
const content = await readFile(absolutePath, 'utf8');
|
|
21
|
+
return Object.freeze({ content, isError: false });
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
return Object.freeze({
|
|
25
|
+
content: err instanceof Error ? err.message : String(err),
|
|
26
|
+
isError: true,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
21
29
|
}
|
|
22
30
|
/**
|
|
23
31
|
* Validates `args` against `node.inputSchema` and executes a jailed `fs:edit` replacement.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs-coding-tool-drivers.js","sourceRoot":"","sources":["../../../src/executors/internal/fs-coding-tool-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,EAEL,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA6B,EAC7B,IAAa,EACb,GAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAA8B,CAAC;IACzE,MAAM,EAAE,YAAY,EAAE,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"fs-coding-tool-drivers.js","sourceRoot":"","sources":["../../../src/executors/internal/fs-coding-tool-drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAQ5C,OAAO,EAEL,sBAAsB,GACvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAEL,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA6B,EAC7B,IAAa,EACb,GAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAA8B,CAAC;IACzE,MAAM,EAAE,YAAY,EAAE,GAAG,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzF,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,MAAM,CAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,MAAM,CAAC,MAAM,CAAsB;YACxC,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACzD,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAC5B,IAA6B,EAC7B,IAAa,EACb,GAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAiC,CAAC;IAC5E,OAAO,sBAAsB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA8B,EAC9B,IAAa,EACb,GAAkC;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAkC,CAAC;IAC7E,OAAO,uBAAuB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC1D,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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
|
3
|
+
"version": "0.2.1",
|
|
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.
|
|
54
|
-
"@paraharness/lockfile": "0.
|
|
53
|
+
"@paraharness/core": "0.2.4",
|
|
54
|
+
"@paraharness/lockfile": "0.2.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
57
|
"@types/node": "^22.9.0",
|