@flyingrobots/graft 0.11.1 → 0.12.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/CHANGELOG.md +186 -0
- package/README.md +7 -0
- package/dist/adapters/node-fs.d.ts.map +1 -1
- package/dist/adapters/node-fs.js +6 -0
- package/dist/adapters/node-fs.js.map +1 -1
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +2 -2
- package/dist/api/index.js.map +1 -1
- package/dist/api/repo-workspace.d.ts.map +1 -1
- package/dist/api/repo-workspace.js +3 -0
- package/dist/api/repo-workspace.js.map +1 -1
- package/dist/cli/cli-error.d.ts.map +1 -1
- package/dist/cli/cli-error.js +4 -1
- package/dist/cli/cli-error.js.map +1 -1
- package/dist/cli/command-parser.d.ts.map +1 -1
- package/dist/cli/command-parser.js +5 -0
- package/dist/cli/command-parser.js.map +1 -1
- package/dist/cli/structural-review-render.d.ts.map +1 -1
- package/dist/cli/structural-review-render.js +5 -0
- package/dist/cli/structural-review-render.js.map +1 -1
- package/dist/contracts/capabilities.d.ts +5 -5
- package/dist/contracts/capabilities.d.ts.map +1 -1
- package/dist/contracts/capabilities.js +10 -0
- package/dist/contracts/capabilities.js.map +1 -1
- package/dist/contracts/output-schema-cli.d.ts +56 -0
- package/dist/contracts/output-schema-cli.d.ts.map +1 -1
- package/dist/contracts/output-schema-cli.js +1 -0
- package/dist/contracts/output-schema-cli.js.map +1 -1
- package/dist/contracts/output-schema-mcp.d.ts +79 -1
- package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
- package/dist/contracts/output-schema-mcp.js +27 -0
- package/dist/contracts/output-schema-mcp.js.map +1 -1
- package/dist/contracts/output-schema-meta.d.ts +7 -4
- package/dist/contracts/output-schema-meta.d.ts.map +1 -1
- package/dist/contracts/output-schema-meta.js +8 -2
- package/dist/contracts/output-schema-meta.js.map +1 -1
- package/dist/contracts/output-schemas.d.ts +3 -5
- package/dist/contracts/output-schemas.d.ts.map +1 -1
- package/dist/contracts/output-schemas.js +9 -34
- package/dist/contracts/output-schemas.js.map +1 -1
- package/dist/echo/structural-reading-adapter.d.ts.map +1 -1
- package/dist/echo/structural-reading-adapter.js +42 -0
- package/dist/echo/structural-reading-adapter.js.map +1 -1
- package/dist/echo/structural-reading-generated-model.d.ts.map +1 -1
- package/dist/echo/structural-reading-generated-model.js +7 -3
- package/dist/echo/structural-reading-generated-model.js.map +1 -1
- package/dist/mcp/burden.d.ts.map +1 -1
- package/dist/mcp/burden.js +1 -0
- package/dist/mcp/burden.js.map +1 -1
- package/dist/mcp/repo-workspace.d.ts.map +1 -1
- package/dist/mcp/repo-workspace.js +5 -1
- package/dist/mcp/repo-workspace.js.map +1 -1
- package/dist/mcp/server-invocation.d.ts.map +1 -1
- package/dist/mcp/server-invocation.js +46 -11
- package/dist/mcp/server-invocation.js.map +1 -1
- package/dist/mcp/server-tool-access.d.ts +2 -0
- package/dist/mcp/server-tool-access.d.ts.map +1 -1
- package/dist/mcp/server-tool-access.js +5 -0
- package/dist/mcp/server-tool-access.js.map +1 -1
- package/dist/mcp/tool-registry.d.ts.map +1 -1
- package/dist/mcp/tool-registry.js +2 -0
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/mcp/tools/changed-since.d.ts.map +1 -1
- package/dist/mcp/tools/changed-since.js +8 -63
- package/dist/mcp/tools/changed-since.js.map +1 -1
- package/dist/mcp/tools/code-find.d.ts.map +1 -1
- package/dist/mcp/tools/code-find.js +1 -0
- package/dist/mcp/tools/code-find.js.map +1 -1
- package/dist/mcp/tools/code-refs.d.ts.map +1 -1
- package/dist/mcp/tools/code-refs.js +1 -0
- package/dist/mcp/tools/code-refs.js.map +1 -1
- package/dist/mcp/tools/code-show.d.ts.map +1 -1
- package/dist/mcp/tools/code-show.js +17 -10
- package/dist/mcp/tools/code-show.js.map +1 -1
- package/dist/mcp/tools/file-outline.d.ts.map +1 -1
- package/dist/mcp/tools/file-outline.js +18 -39
- package/dist/mcp/tools/file-outline.js.map +1 -1
- package/dist/mcp/tools/graft-diff.js +1 -1
- package/dist/mcp/tools/graft-diff.js.map +1 -1
- package/dist/mcp/tools/import-diagnostics.d.ts +3 -0
- package/dist/mcp/tools/import-diagnostics.d.ts.map +1 -0
- package/dist/mcp/tools/import-diagnostics.js +25 -0
- package/dist/mcp/tools/import-diagnostics.js.map +1 -0
- package/dist/mcp/tools/map.d.ts.map +1 -1
- package/dist/mcp/tools/map.js +1 -0
- package/dist/mcp/tools/map.js.map +1 -1
- package/dist/mcp/tools/precision-live.d.ts +8 -0
- package/dist/mcp/tools/precision-live.d.ts.map +1 -1
- package/dist/mcp/tools/precision-live.js +16 -3
- package/dist/mcp/tools/precision-live.js.map +1 -1
- package/dist/mcp/tools/precision.d.ts +1 -1
- package/dist/mcp/tools/precision.d.ts.map +1 -1
- package/dist/mcp/tools/precision.js +1 -1
- package/dist/mcp/tools/precision.js.map +1 -1
- package/dist/mcp/tools/read-range.d.ts.map +1 -1
- package/dist/mcp/tools/read-range.js +23 -8
- package/dist/mcp/tools/read-range.js.map +1 -1
- package/dist/mcp/tools/safe-read.js +1 -1
- package/dist/mcp/tools/safe-read.js.map +1 -1
- package/dist/mcp/tools/since.d.ts.map +1 -1
- package/dist/mcp/tools/since.js +1 -0
- package/dist/mcp/tools/since.js.map +1 -1
- package/dist/mcp/tools/structural-review.d.ts.map +1 -1
- package/dist/mcp/tools/structural-review.js +16 -13
- package/dist/mcp/tools/structural-review.js.map +1 -1
- package/dist/mcp/workspace-read-observation-model.d.ts +1 -0
- package/dist/mcp/workspace-read-observation-model.d.ts.map +1 -1
- package/dist/mcp/workspace-read-observation-model.js +1 -0
- package/dist/mcp/workspace-read-observation-model.js.map +1 -1
- package/dist/mcp/workspace-read-observation.d.ts.map +1 -1
- package/dist/mcp/workspace-read-observation.js +3 -1
- package/dist/mcp/workspace-read-observation.js.map +1 -1
- package/dist/mcp/workspace-router-model.d.ts +4 -0
- package/dist/mcp/workspace-router-model.d.ts.map +1 -1
- package/dist/mcp/workspace-router-model.js +7 -0
- package/dist/mcp/workspace-router-model.js.map +1 -1
- package/dist/mcp/workspace-router.d.ts +8 -1
- package/dist/mcp/workspace-router.d.ts.map +1 -1
- package/dist/mcp/workspace-router.js +81 -2
- package/dist/mcp/workspace-router.js.map +1 -1
- package/dist/operations/file-outline.d.ts +13 -4
- package/dist/operations/file-outline.d.ts.map +1 -1
- package/dist/operations/file-outline.js +12 -7
- package/dist/operations/file-outline.js.map +1 -1
- package/dist/operations/read-range.d.ts +9 -4
- package/dist/operations/read-range.d.ts.map +1 -1
- package/dist/operations/read-range.js +12 -7
- package/dist/operations/read-range.js.map +1 -1
- package/dist/operations/repo-workspace.d.ts +53 -3
- package/dist/operations/repo-workspace.d.ts.map +1 -1
- package/dist/operations/repo-workspace.js +125 -65
- package/dist/operations/repo-workspace.js.map +1 -1
- package/dist/operations/safe-read.d.ts +8 -5
- package/dist/operations/safe-read.d.ts.map +1 -1
- package/dist/operations/safe-read.js +34 -26
- package/dist/operations/safe-read.js.map +1 -1
- package/dist/operations/structural-review.d.ts +7 -1
- package/dist/operations/structural-review.d.ts.map +1 -1
- package/dist/operations/structural-review.js +13 -2
- package/dist/operations/structural-review.js.map +1 -1
- package/dist/operations/workspace-read-view.d.ts +208 -0
- package/dist/operations/workspace-read-view.d.ts.map +1 -0
- package/dist/operations/workspace-read-view.js +302 -0
- package/dist/operations/workspace-read-view.js.map +1 -0
- package/dist/ports/filesystem.d.ts +2 -0
- package/dist/ports/filesystem.d.ts.map +1 -1
- package/dist/ports/structural-reading.d.ts +21 -1
- package/dist/ports/structural-reading.d.ts.map +1 -1
- package/dist/ports/structural-reading.js.map +1 -1
- package/dist/warp/ast-emitter.d.ts +4 -0
- package/dist/warp/ast-emitter.d.ts.map +1 -1
- package/dist/warp/ast-emitter.js +16 -10
- package/dist/warp/ast-emitter.js.map +1 -1
- package/dist/warp/ast-import-resolver.d.ts +7 -0
- package/dist/warp/ast-import-resolver.d.ts.map +1 -1
- package/dist/warp/ast-import-resolver.js +41 -20
- package/dist/warp/ast-import-resolver.js.map +1 -1
- package/dist/warp/committed-reference-scan.d.ts +38 -0
- package/dist/warp/committed-reference-scan.d.ts.map +1 -0
- package/dist/warp/committed-reference-scan.js +346 -0
- package/dist/warp/committed-reference-scan.js.map +1 -0
- package/dist/warp/go-reference-context.d.ts +8 -0
- package/dist/warp/go-reference-context.d.ts.map +1 -0
- package/dist/warp/go-reference-context.js +209 -0
- package/dist/warp/go-reference-context.js.map +1 -0
- package/dist/warp/import-diagnostic.d.ts +17 -0
- package/dist/warp/import-diagnostic.d.ts.map +1 -0
- package/dist/warp/import-diagnostic.js +2 -0
- package/dist/warp/import-diagnostic.js.map +1 -0
- package/dist/warp/index-head.d.ts.map +1 -1
- package/dist/warp/index-head.js +34 -8
- package/dist/warp/index-head.js.map +1 -1
- package/dist/warp/python-import-resolver.d.ts +10 -0
- package/dist/warp/python-import-resolver.d.ts.map +1 -0
- package/dist/warp/python-import-resolver.js +100 -0
- package/dist/warp/python-import-resolver.js.map +1 -0
- package/dist/warp/qualified-reference-bindings.d.ts +11 -0
- package/dist/warp/qualified-reference-bindings.d.ts.map +1 -0
- package/dist/warp/qualified-reference-bindings.js +483 -0
- package/dist/warp/qualified-reference-bindings.js.map +1 -0
- package/dist/warp/qualified-reference-contract.d.ts +76 -0
- package/dist/warp/qualified-reference-contract.d.ts.map +1 -0
- package/dist/warp/qualified-reference-contract.js +2 -0
- package/dist/warp/qualified-reference-contract.js.map +1 -0
- package/dist/warp/qualified-reference-language-adapters.d.ts +4 -0
- package/dist/warp/qualified-reference-language-adapters.d.ts.map +1 -0
- package/dist/warp/qualified-reference-language-adapters.js +148 -0
- package/dist/warp/qualified-reference-language-adapters.js.map +1 -0
- package/dist/warp/qualified-reference-resolver.d.ts +10 -0
- package/dist/warp/qualified-reference-resolver.d.ts.map +1 -0
- package/dist/warp/qualified-reference-resolver.js +222 -0
- package/dist/warp/qualified-reference-resolver.js.map +1 -0
- package/dist/warp/qualified-reference-shadows.d.ts +5 -0
- package/dist/warp/qualified-reference-shadows.d.ts.map +1 -0
- package/dist/warp/qualified-reference-shadows.js +601 -0
- package/dist/warp/qualified-reference-shadows.js.map +1 -0
- package/dist/warp/structural-reading-adapter.d.ts +2 -1
- package/dist/warp/structural-reading-adapter.d.ts.map +1 -1
- package/dist/warp/structural-reading-adapter.js +79 -27
- package/dist/warp/structural-reading-adapter.js.map +1 -1
- package/docs/CLI.md +10 -1
- package/docs/MCP.md +9 -1
- package/docs/SETUP.md +7 -0
- package/package.json +9 -7
- package/dist/operations/import-reference-impact.d.ts +0 -13
- package/dist/operations/import-reference-impact.d.ts.map +0 -1
- package/dist/operations/import-reference-impact.js +0 -101
- package/dist/operations/import-reference-impact.js.map +0 -1
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
const MAX_RANGE_LINES = 250;
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Projects a line range from bytes already observed.
|
|
4
|
+
*
|
|
5
|
+
* Synchronous because it performs no I/O. The caller supplies the observation,
|
|
6
|
+
* so the range returned is necessarily cut from the same bytes the caller
|
|
7
|
+
* authorised.
|
|
8
|
+
*/
|
|
9
|
+
export function readRange(file, start, end) {
|
|
10
|
+
const filePath = file.path;
|
|
11
|
+
if (file.utf8 === null) {
|
|
12
|
+
return { path: filePath, reason: "INVALID_UTF8" };
|
|
9
13
|
}
|
|
14
|
+
const raw = file.utf8;
|
|
10
15
|
if (start > end) {
|
|
11
16
|
return { path: filePath, reason: "INVALID_RANGE" };
|
|
12
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-range.js","sourceRoot":"","sources":["../../src/operations/read-range.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,GAAG,CAAC;AAY5B,MAAM,
|
|
1
|
+
{"version":3,"file":"read-range.js","sourceRoot":"","sources":["../../src/operations/read-range.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,GAAG,CAAC;AAY5B;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,IAAkB,EAClB,KAAa,EACb,GAAW;IAEX,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACpD,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;IAEtB,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;IAEnC,IAAI,YAAY,GAAG,GAAG,CAAC;IACvB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,mCAAmC;IACnC,IAAI,YAAY,GAAG,KAAK,GAAG,CAAC,GAAG,eAAe,EAAE,CAAC;QAC/C,YAAY,GAAG,KAAK,GAAG,eAAe,GAAG,CAAC,CAAC;QAC3C,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,cAAc;IACd,IAAI,YAAY,GAAG,UAAU,EAAE,CAAC;QAC9B,YAAY,GAAG,UAAU,CAAC;QAC1B,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,qCAAqC;IACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpC,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,YAAY;QACrB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;AACJ,CAAC"}
|
|
@@ -6,6 +6,7 @@ import { GovernorTracker } from "../session/tracker.js";
|
|
|
6
6
|
import { type OutlineDiff } from "../parser/diff.js";
|
|
7
7
|
import type { JumpEntry, OutlineEntry } from "../parser/types.js";
|
|
8
8
|
import type { FileSystem } from "../ports/filesystem.js";
|
|
9
|
+
import { type WorkspaceReadView } from "./workspace-read-view.js";
|
|
9
10
|
import type { JsonCodec } from "../ports/codec.js";
|
|
10
11
|
import type { ProseProjectionProvider } from "./colorful-prose-projection.js";
|
|
11
12
|
export interface RepoWorkspaceRefusedResult {
|
|
@@ -66,9 +67,8 @@ export type RepoWorkspaceChangedSinceResult = {
|
|
|
66
67
|
readonly diff: OutlineDiff;
|
|
67
68
|
readonly consumed: boolean;
|
|
68
69
|
};
|
|
69
|
-
|
|
70
|
+
interface RepoWorkspaceCommonOptions {
|
|
70
71
|
readonly projectRoot: string;
|
|
71
|
-
readonly fs: FileSystem;
|
|
72
72
|
readonly codec: JsonCodec;
|
|
73
73
|
readonly graftignorePatterns?: readonly string[] | undefined;
|
|
74
74
|
readonly resolvePath?: ((input: string) => string) | undefined;
|
|
@@ -77,17 +77,56 @@ export interface RepoWorkspaceOptions {
|
|
|
77
77
|
readonly cache?: ObservationCache | undefined;
|
|
78
78
|
readonly proseProjector?: ProseProjectionProvider | undefined;
|
|
79
79
|
}
|
|
80
|
+
export type RepoWorkspaceOptions = RepoWorkspaceCommonOptions & ({
|
|
81
|
+
/**
|
|
82
|
+
* The single read authority for this workspace.
|
|
83
|
+
*
|
|
84
|
+
* There is deliberately no filesystem parameter beside it. Two doors
|
|
85
|
+
* would leave correctness resting on every code path remembering which
|
|
86
|
+
* one is lawful; a workspace built over a settled observation must not
|
|
87
|
+
* be able to reach the live disk at all. Callers that still want live
|
|
88
|
+
* reads pass a `LiveWorkspaceReadSource` and are visible by name.
|
|
89
|
+
*/
|
|
90
|
+
readonly readView: WorkspaceReadView;
|
|
91
|
+
readonly fs?: never;
|
|
92
|
+
} | {
|
|
93
|
+
/**
|
|
94
|
+
* Compatibility input for the semver-public constructor.
|
|
95
|
+
*
|
|
96
|
+
* Normalized immediately to one live read authority used by every
|
|
97
|
+
* analysis method. The same filesystem remains externally visible
|
|
98
|
+
* through the legacy `fs` member but is never consulted internally.
|
|
99
|
+
*/
|
|
100
|
+
readonly fs: FileSystem;
|
|
101
|
+
readonly readView?: never;
|
|
102
|
+
});
|
|
103
|
+
/** An admitted read view whose evidence belongs to a different workspace. */
|
|
104
|
+
export declare class WorkspaceRootMismatchError extends Error {
|
|
105
|
+
readonly projectRoot: string;
|
|
106
|
+
readonly evidenceWorkspaceRoot: string;
|
|
107
|
+
readonly code: "WORKSPACE_ROOT_MISMATCH";
|
|
108
|
+
constructor(projectRoot: string, evidenceWorkspaceRoot: string);
|
|
109
|
+
}
|
|
80
110
|
export declare class RepoWorkspace {
|
|
81
111
|
private readonly resolveWorkspacePath;
|
|
82
112
|
private readonly policyPathForWorkspaceFile;
|
|
113
|
+
private readonly compatibilityFs;
|
|
83
114
|
readonly projectRoot: string;
|
|
84
|
-
readonly
|
|
115
|
+
readonly readView: WorkspaceReadView;
|
|
85
116
|
readonly codec: JsonCodec;
|
|
86
117
|
readonly graftignorePatterns: readonly string[];
|
|
87
118
|
readonly governor: GovernorTracker;
|
|
88
119
|
readonly cache: ObservationCache;
|
|
89
120
|
readonly proseProjector: ProseProjectionProvider | undefined;
|
|
90
121
|
constructor(options: RepoWorkspaceOptions);
|
|
122
|
+
/**
|
|
123
|
+
* The filesystem supplied through the semver-public compatibility constructor.
|
|
124
|
+
*
|
|
125
|
+
* Analysis methods never use this member; they retain only `readView` as
|
|
126
|
+
* their read authority. Snapshot-backed workspaces have no live filesystem
|
|
127
|
+
* to expose and fail loudly if new code attempts to cross that boundary.
|
|
128
|
+
*/
|
|
129
|
+
get fs(): FileSystem;
|
|
91
130
|
static loadGraftignorePatterns(fs: Pick<FileSystem, "readFile">, projectRoot: string): Promise<string[]>;
|
|
92
131
|
setBudget(bytes: number): void;
|
|
93
132
|
getBudget(): {
|
|
@@ -97,6 +136,16 @@ export declare class RepoWorkspace {
|
|
|
97
136
|
fraction: number;
|
|
98
137
|
} | null;
|
|
99
138
|
private evaluateRefusal;
|
|
139
|
+
private invalidUtf8Refusal;
|
|
140
|
+
/**
|
|
141
|
+
* Observes a path exactly once, or reports that it could not be observed.
|
|
142
|
+
*
|
|
143
|
+
* A path the observation never admitted is a refusal, not an absence, and it
|
|
144
|
+
* propagates. Folding it into not-found would report an authority escalation
|
|
145
|
+
* as a cache miss, and would tell a caller a file does not exist when what
|
|
146
|
+
* is true is that they may not read it.
|
|
147
|
+
*/
|
|
148
|
+
private observe;
|
|
100
149
|
private outlineForSnapshot;
|
|
101
150
|
safeRead(args: {
|
|
102
151
|
readonly path: string;
|
|
@@ -115,4 +164,5 @@ export declare class RepoWorkspace {
|
|
|
115
164
|
readonly consume?: boolean | undefined;
|
|
116
165
|
}): Promise<RepoWorkspaceChangedSinceResult>;
|
|
117
166
|
}
|
|
167
|
+
export {};
|
|
118
168
|
//# sourceMappingURL=repo-workspace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-workspace.d.ts","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"repo-workspace.d.ts","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { detectOutlineFormat } from "../parser/lang.js";
|
|
|
9
9
|
import { evaluatePolicy } from "../policy/evaluate.js";
|
|
10
10
|
import { RefusedResult } from "../policy/types.js";
|
|
11
11
|
import { loadGraftignore } from "../policy/graftignore.js";
|
|
12
|
+
import { LiveWorkspaceReadSource, observedActual, observeFile, } from "./workspace-read-view.js";
|
|
12
13
|
async function loadWorkspaceGraftignore(fs, projectRoot) {
|
|
13
14
|
try {
|
|
14
15
|
return loadGraftignore(await fs.readFile(`${projectRoot}/.graftignore`, "utf-8"));
|
|
@@ -17,19 +18,48 @@ async function loadWorkspaceGraftignore(fs, projectRoot) {
|
|
|
17
18
|
return [];
|
|
18
19
|
}
|
|
19
20
|
}
|
|
21
|
+
function isFileNotFoundError(error) {
|
|
22
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
23
|
+
}
|
|
24
|
+
function isAdmittedWorkspaceReadView(view) {
|
|
25
|
+
return "evidence" in view && "admittedPaths" in view;
|
|
26
|
+
}
|
|
27
|
+
/** An admitted read view whose evidence belongs to a different workspace. */
|
|
28
|
+
export class WorkspaceRootMismatchError extends Error {
|
|
29
|
+
projectRoot;
|
|
30
|
+
evidenceWorkspaceRoot;
|
|
31
|
+
code = "WORKSPACE_ROOT_MISMATCH";
|
|
32
|
+
constructor(projectRoot, evidenceWorkspaceRoot) {
|
|
33
|
+
super(`workspace root ${projectRoot} does not match admitted evidence root ${evidenceWorkspaceRoot}`);
|
|
34
|
+
this.projectRoot = projectRoot;
|
|
35
|
+
this.evidenceWorkspaceRoot = evidenceWorkspaceRoot;
|
|
36
|
+
this.name = "WorkspaceRootMismatchError";
|
|
37
|
+
}
|
|
38
|
+
}
|
|
20
39
|
export class RepoWorkspace {
|
|
21
40
|
resolveWorkspacePath;
|
|
22
41
|
policyPathForWorkspaceFile;
|
|
42
|
+
compatibilityFs;
|
|
23
43
|
projectRoot;
|
|
24
|
-
|
|
44
|
+
readView;
|
|
25
45
|
codec;
|
|
26
46
|
graftignorePatterns;
|
|
27
47
|
governor;
|
|
28
48
|
cache;
|
|
29
49
|
proseProjector;
|
|
30
50
|
constructor(options) {
|
|
51
|
+
const readView = options.readView ?? new LiveWorkspaceReadSource(options.fs, options.projectRoot);
|
|
52
|
+
if (isAdmittedWorkspaceReadView(readView) &&
|
|
53
|
+
readView.evidence.workspaceRoot !== options.projectRoot) {
|
|
54
|
+
throw new WorkspaceRootMismatchError(options.projectRoot, readView.evidence.workspaceRoot);
|
|
55
|
+
}
|
|
31
56
|
this.projectRoot = options.projectRoot;
|
|
32
|
-
this.
|
|
57
|
+
this.compatibilityFs = options.fs;
|
|
58
|
+
this.readView = readView;
|
|
59
|
+
Object.defineProperty(this, "readView", {
|
|
60
|
+
writable: false,
|
|
61
|
+
configurable: false,
|
|
62
|
+
});
|
|
33
63
|
this.codec = options.codec;
|
|
34
64
|
this.graftignorePatterns = options.graftignorePatterns ?? [];
|
|
35
65
|
this.governor = options.governor ?? new GovernorTracker();
|
|
@@ -38,6 +68,19 @@ export class RepoWorkspace {
|
|
|
38
68
|
this.resolveWorkspacePath = options.resolvePath ?? ((input) => input);
|
|
39
69
|
this.policyPathForWorkspaceFile = options.toPolicyPath ?? ((resolvedPath) => resolvedPath);
|
|
40
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* The filesystem supplied through the semver-public compatibility constructor.
|
|
73
|
+
*
|
|
74
|
+
* Analysis methods never use this member; they retain only `readView` as
|
|
75
|
+
* their read authority. Snapshot-backed workspaces have no live filesystem
|
|
76
|
+
* to expose and fail loudly if new code attempts to cross that boundary.
|
|
77
|
+
*/
|
|
78
|
+
get fs() {
|
|
79
|
+
if (this.compatibilityFs === undefined) {
|
|
80
|
+
throw new Error("RepoWorkspace.fs is unavailable for a readView-backed workspace");
|
|
81
|
+
}
|
|
82
|
+
return this.compatibilityFs;
|
|
83
|
+
}
|
|
41
84
|
static async loadGraftignorePatterns(fs, projectRoot) {
|
|
42
85
|
return loadWorkspaceGraftignore(fs, projectRoot);
|
|
43
86
|
}
|
|
@@ -69,6 +112,35 @@ export class RepoWorkspace {
|
|
|
69
112
|
actual,
|
|
70
113
|
};
|
|
71
114
|
}
|
|
115
|
+
invalidUtf8Refusal(filePath, actual) {
|
|
116
|
+
return {
|
|
117
|
+
path: filePath,
|
|
118
|
+
projection: "refused",
|
|
119
|
+
reason: "INVALID_UTF8",
|
|
120
|
+
reasonDetail: "This file is not valid UTF-8, so it has no faithful text projection.",
|
|
121
|
+
next: ["Read it as bytes if you need its contents."],
|
|
122
|
+
actual,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Observes a path exactly once, or reports that it could not be observed.
|
|
127
|
+
*
|
|
128
|
+
* A path the observation never admitted is a refusal, not an absence, and it
|
|
129
|
+
* propagates. Folding it into not-found would report an authority escalation
|
|
130
|
+
* as a cache miss, and would tell a caller a file does not exist when what
|
|
131
|
+
* is true is that they may not read it.
|
|
132
|
+
*/
|
|
133
|
+
async observe(filePath) {
|
|
134
|
+
try {
|
|
135
|
+
return await observeFile(this.readView, filePath);
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
if (isFileNotFoundError(error)) {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
72
144
|
async outlineForSnapshot(snapshot) {
|
|
73
145
|
return extractOutlineProjectionForContent(snapshot.path, snapshot.rawContent, {
|
|
74
146
|
proseProjector: this.proseProjector,
|
|
@@ -76,13 +148,14 @@ export class RepoWorkspace {
|
|
|
76
148
|
}
|
|
77
149
|
async safeRead(args) {
|
|
78
150
|
const filePath = this.resolveWorkspacePath(args.path);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
catch {
|
|
84
|
-
// Let safeRead produce the not-found error shape.
|
|
151
|
+
const observed = await this.observe(filePath);
|
|
152
|
+
if (observed === null) {
|
|
153
|
+
return { path: filePath, projection: "error", reason: "NOT_FOUND" };
|
|
85
154
|
}
|
|
155
|
+
// No cache entry for bytes with no faithful text projection. Hashing and
|
|
156
|
+
// comparing a lenient decode would key the cache by content the
|
|
157
|
+
// observation never settled.
|
|
158
|
+
const snapshot = observed.utf8 === null ? null : new CachedFile(filePath, observed.utf8);
|
|
86
159
|
if (snapshot !== null) {
|
|
87
160
|
const cacheResult = this.cache.check(filePath, snapshot.rawContent);
|
|
88
161
|
if (cacheResult.hit) {
|
|
@@ -110,11 +183,8 @@ export class RepoWorkspace {
|
|
|
110
183
|
}
|
|
111
184
|
const freshOutline = await this.outlineForSnapshot(snapshot);
|
|
112
185
|
if (freshOutline === null) {
|
|
113
|
-
return await safeRead(
|
|
114
|
-
fs: this.fs,
|
|
186
|
+
return await safeRead(observed, {
|
|
115
187
|
codec: this.codec,
|
|
116
|
-
content: snapshot.rawContent,
|
|
117
|
-
intent: args.intent,
|
|
118
188
|
policyPath: this.policyPathForWorkspaceFile(filePath),
|
|
119
189
|
graftignorePatterns: [...this.graftignorePatterns],
|
|
120
190
|
sessionDepth: this.governor.getGovernorDepth(),
|
|
@@ -137,11 +207,8 @@ export class RepoWorkspace {
|
|
|
137
207
|
};
|
|
138
208
|
}
|
|
139
209
|
}
|
|
140
|
-
const result = await safeRead(
|
|
141
|
-
fs: this.fs,
|
|
210
|
+
const result = await safeRead(observed, {
|
|
142
211
|
codec: this.codec,
|
|
143
|
-
content: snapshot?.rawContent,
|
|
144
|
-
intent: args.intent,
|
|
145
212
|
policyPath: this.policyPathForWorkspaceFile(filePath),
|
|
146
213
|
graftignorePatterns: [...this.graftignorePatterns],
|
|
147
214
|
sessionDepth: this.governor.getGovernorDepth(),
|
|
@@ -171,80 +238,73 @@ export class RepoWorkspace {
|
|
|
171
238
|
}
|
|
172
239
|
async fileOutline(args) {
|
|
173
240
|
const filePath = this.resolveWorkspacePath(args.path);
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
241
|
+
const observed = await this.observe(filePath);
|
|
242
|
+
if (observed === null) {
|
|
243
|
+
return { path: filePath, outline: [], jumpTable: [], reason: "NOT_FOUND", error: "File not found" };
|
|
244
|
+
}
|
|
245
|
+
const rawContent = observed.utf8;
|
|
246
|
+
// Refusal is evaluated for every observation. Gating it on a successful
|
|
247
|
+
// decode let a banned or binary path skip policy and reach the projection.
|
|
248
|
+
const refusal = this.evaluateRefusal(filePath, observedActual(observed));
|
|
249
|
+
if (refusal !== null) {
|
|
250
|
+
return refusal;
|
|
177
251
|
}
|
|
178
|
-
|
|
179
|
-
|
|
252
|
+
if (rawContent === null) {
|
|
253
|
+
return this.invalidUtf8Refusal(filePath, observedActual(observed));
|
|
180
254
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
255
|
+
const cacheResult = this.cache.check(filePath, rawContent);
|
|
256
|
+
if (cacheResult.hit) {
|
|
257
|
+
cacheResult.obs.touch(this.cache.now());
|
|
258
|
+
return {
|
|
259
|
+
path: filePath,
|
|
260
|
+
outline: [...cacheResult.obs.outline],
|
|
261
|
+
jumpTable: [...cacheResult.obs.jumpTable],
|
|
262
|
+
cacheHit: true,
|
|
263
|
+
actual: { ...cacheResult.obs.actual },
|
|
185
264
|
};
|
|
186
|
-
const refusal = this.evaluateRefusal(filePath, actual);
|
|
187
|
-
if (refusal !== null) {
|
|
188
|
-
return refusal;
|
|
189
|
-
}
|
|
190
|
-
const cacheResult = this.cache.check(filePath, rawContent);
|
|
191
|
-
if (cacheResult.hit) {
|
|
192
|
-
cacheResult.obs.touch(this.cache.now());
|
|
193
|
-
return {
|
|
194
|
-
path: filePath,
|
|
195
|
-
outline: [...cacheResult.obs.outline],
|
|
196
|
-
jumpTable: [...cacheResult.obs.jumpTable],
|
|
197
|
-
cacheHit: true,
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
265
|
}
|
|
201
|
-
const result = await fileOutline(
|
|
202
|
-
fs: this.fs,
|
|
266
|
+
const result = await fileOutline(observed, {
|
|
203
267
|
proseProjector: this.proseProjector,
|
|
204
268
|
});
|
|
205
|
-
if (
|
|
269
|
+
if (result.reason !== "UNSUPPORTED_LANGUAGE") {
|
|
206
270
|
this.cache.record(filePath, hashContent(rawContent), result.outline, result.jumpTable, { lines: rawContent.split("\n").length, bytes: Buffer.byteLength(rawContent) });
|
|
207
271
|
}
|
|
208
272
|
return result;
|
|
209
273
|
}
|
|
210
274
|
async readRange(args) {
|
|
211
275
|
const filePath = this.resolveWorkspacePath(args.path);
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
276
|
+
const observed = await this.observe(filePath);
|
|
277
|
+
if (observed === null) {
|
|
278
|
+
return { path: filePath, reason: "NOT_FOUND" };
|
|
215
279
|
}
|
|
216
|
-
|
|
217
|
-
|
|
280
|
+
// Refusal is evaluated for every observation, decodable or not.
|
|
281
|
+
const refusal = this.evaluateRefusal(filePath, observedActual(observed));
|
|
282
|
+
if (refusal !== null) {
|
|
283
|
+
return refusal;
|
|
218
284
|
}
|
|
219
|
-
if (
|
|
220
|
-
|
|
221
|
-
lines: rawContent.split("\n").length,
|
|
222
|
-
bytes: Buffer.byteLength(rawContent),
|
|
223
|
-
});
|
|
224
|
-
if (refusal !== null) {
|
|
225
|
-
return refusal;
|
|
226
|
-
}
|
|
285
|
+
if (observed.utf8 === null) {
|
|
286
|
+
return this.invalidUtf8Refusal(filePath, observedActual(observed));
|
|
227
287
|
}
|
|
228
|
-
return readRange(
|
|
288
|
+
return readRange(observed, args.start, args.end);
|
|
229
289
|
}
|
|
230
290
|
async changedSince(args) {
|
|
231
291
|
const filePath = this.resolveWorkspacePath(args.path);
|
|
232
292
|
const consume = args.consume === true;
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
rawContent = await this.fs.readFile(filePath, "utf-8");
|
|
236
|
-
}
|
|
237
|
-
catch {
|
|
293
|
+
const observed = await this.observe(filePath);
|
|
294
|
+
if (observed === null) {
|
|
238
295
|
return { status: "file_not_found" };
|
|
239
296
|
}
|
|
240
|
-
const actual =
|
|
241
|
-
lines: rawContent.split("\n").length,
|
|
242
|
-
bytes: Buffer.byteLength(rawContent),
|
|
243
|
-
};
|
|
297
|
+
const actual = observedActual(observed);
|
|
244
298
|
const refusal = this.evaluateRefusal(filePath, actual);
|
|
245
299
|
if (refusal !== null) {
|
|
246
300
|
return { status: "refused", reason: refusal.reason };
|
|
247
301
|
}
|
|
302
|
+
if (observed.utf8 === null) {
|
|
303
|
+
// Not an absence and not an unchanged file: there is no faithful text
|
|
304
|
+
// projection to compare outlines across.
|
|
305
|
+
return { status: "refused", reason: "INVALID_UTF8" };
|
|
306
|
+
}
|
|
307
|
+
const rawContent = observed.utf8;
|
|
248
308
|
const cacheResult = this.cache.check(filePath, rawContent);
|
|
249
309
|
if (cacheResult.hit) {
|
|
250
310
|
return { status: "unchanged" };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-workspace.js","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"repo-workspace.js","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { GovernorDepth } from "../policy/types.js";
|
|
2
2
|
import type { OutlineEntry, JumpEntry } from "../parser/types.js";
|
|
3
|
-
import type
|
|
3
|
+
import { type ObservedFile } from "./workspace-read-view.js";
|
|
4
4
|
import type { JsonCodec } from "../ports/codec.js";
|
|
5
5
|
import type { ProseProjectionProvider } from "./colorful-prose-projection.js";
|
|
6
6
|
export interface SafeReadResult {
|
|
@@ -23,15 +23,18 @@ export interface SafeReadResult {
|
|
|
23
23
|
sessionDepth?: GovernorDepth | undefined;
|
|
24
24
|
}
|
|
25
25
|
export interface SafeReadOptions {
|
|
26
|
-
fs: FileSystem;
|
|
27
26
|
codec: JsonCodec;
|
|
28
|
-
content?: string | undefined;
|
|
29
|
-
intent?: string | undefined;
|
|
30
27
|
policyPath?: string | undefined;
|
|
31
28
|
graftignorePatterns?: string[] | undefined;
|
|
32
29
|
sessionDepth?: GovernorDepth | undefined;
|
|
33
30
|
budgetRemaining?: number | undefined;
|
|
34
31
|
proseProjector?: ProseProjectionProvider | undefined;
|
|
35
32
|
}
|
|
36
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Applies read policy to bytes already observed.
|
|
35
|
+
*
|
|
36
|
+
* Takes the observation rather than a filesystem: the content this returns is
|
|
37
|
+
* necessarily the content the policy decision was made about.
|
|
38
|
+
*/
|
|
39
|
+
export declare function safeRead(file: ObservedFile, options: SafeReadOptions): Promise<SafeReadResult>;
|
|
37
40
|
//# sourceMappingURL=safe-read.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-read.d.ts","sourceRoot":"","sources":["../../src/operations/safe-read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"safe-read.d.ts","sourceRoot":"","sources":["../../src/operations/safe-read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAmB,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE/F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,OAAO,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IACrC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC;IACpC,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IACtD,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAC1D,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3C,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,cAAc,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAC;CACtD;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAwGzB"}
|
|
@@ -1,29 +1,16 @@
|
|
|
1
1
|
import { evaluatePolicy } from "../policy/evaluate.js";
|
|
2
2
|
import { ContentResult, RefusedResult } from "../policy/types.js";
|
|
3
3
|
import { extractOutlineForFileAsync } from "../parser/outline.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
raw = await options.fs.readFile(filePath);
|
|
15
|
-
}
|
|
16
|
-
catch {
|
|
17
|
-
return {
|
|
18
|
-
path: filePath,
|
|
19
|
-
projection: "error",
|
|
20
|
-
reason: "NOT_FOUND",
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
content = raw.toString("utf-8");
|
|
24
|
-
bytes = raw.byteLength;
|
|
25
|
-
}
|
|
26
|
-
const lines = content.split("\n").length;
|
|
4
|
+
import { observedActual } from "./workspace-read-view.js";
|
|
5
|
+
/**
|
|
6
|
+
* Applies read policy to bytes already observed.
|
|
7
|
+
*
|
|
8
|
+
* Takes the observation rather than a filesystem: the content this returns is
|
|
9
|
+
* necessarily the content the policy decision was made about.
|
|
10
|
+
*/
|
|
11
|
+
export async function safeRead(file, options) {
|
|
12
|
+
const filePath = file.path;
|
|
13
|
+
const { lines, bytes } = observedActual(file);
|
|
27
14
|
const policy = evaluatePolicy({ path: options.policyPath ?? filePath, lines, bytes }, {
|
|
28
15
|
graftignorePatterns: options.graftignorePatterns,
|
|
29
16
|
sessionDepth: options.sessionDepth,
|
|
@@ -37,15 +24,36 @@ export async function safeRead(filePath, options) {
|
|
|
37
24
|
thresholds: policy.thresholds,
|
|
38
25
|
...(policy.sessionDepth !== undefined ? { sessionDepth: policy.sessionDepth } : {}),
|
|
39
26
|
};
|
|
40
|
-
if (policy instanceof ContentResult) {
|
|
41
|
-
return { ...base, content };
|
|
42
|
-
}
|
|
43
27
|
if (policy instanceof RefusedResult) {
|
|
44
28
|
return {
|
|
45
29
|
...base,
|
|
46
30
|
next: [...policy.next],
|
|
47
31
|
};
|
|
48
32
|
}
|
|
33
|
+
// Below here the projection returns text, so the bytes have to have one.
|
|
34
|
+
// Refused rather than decoded leniently: the previous path read raw bytes
|
|
35
|
+
// and called Buffer.toString("utf-8"), which substitutes U+FFFD for invalid
|
|
36
|
+
// sequences, returning content the observation never settled under the
|
|
37
|
+
// identity of content it did.
|
|
38
|
+
//
|
|
39
|
+
// After the policy decision, not before it. A banned or binary path is
|
|
40
|
+
// refused for being banned or binary whatever its encoding, and reporting
|
|
41
|
+
// that as an encoding problem would lose the reason the caller needs.
|
|
42
|
+
if (file.utf8 === null) {
|
|
43
|
+
return {
|
|
44
|
+
...base,
|
|
45
|
+
projection: "refused",
|
|
46
|
+
reason: "INVALID_UTF8",
|
|
47
|
+
next: [
|
|
48
|
+
"This file is not valid UTF-8, so it has no faithful text projection.",
|
|
49
|
+
"Read it as bytes if you need its contents.",
|
|
50
|
+
],
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
const content = file.utf8;
|
|
54
|
+
if (policy instanceof ContentResult) {
|
|
55
|
+
return { ...base, content };
|
|
56
|
+
}
|
|
49
57
|
// projection === "outline"
|
|
50
58
|
const outlineResult = await extractOutlineForFileAsync(filePath, content);
|
|
51
59
|
if (outlineResult === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-read.js","sourceRoot":"","sources":["../../src/operations/safe-read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"safe-read.js","sourceRoot":"","sources":["../../src/operations/safe-read.ts"],"names":[],"mappings":"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"}
|