@flyingrobots/graft 0.9.0 → 0.10.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/CHANGELOG.md +73 -0
- package/README.md +23 -15
- package/dist/adapters/colorful-cli-prose-projector.d.ts +13 -0
- package/dist/adapters/colorful-cli-prose-projector.d.ts.map +1 -0
- package/dist/adapters/colorful-cli-prose-projector.js +89 -0
- package/dist/adapters/colorful-cli-prose-projector.js.map +1 -0
- package/dist/adapters/fake-echo-kernel-transport.d.ts.map +1 -1
- package/dist/adapters/fake-echo-kernel-transport.js +7 -29
- package/dist/adapters/fake-echo-kernel-transport.js.map +1 -1
- package/dist/adapters/node-process-runner.d.ts.map +1 -1
- package/dist/adapters/node-process-runner.js +1 -0
- package/dist/adapters/node-process-runner.js.map +1 -1
- package/dist/api/index.d.ts +7 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +14 -3
- package/dist/api/index.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +10 -1
- package/dist/cli/main.js.map +1 -1
- package/dist/contracts/output-schema-fragments.d.ts +21 -0
- package/dist/contracts/output-schema-fragments.d.ts.map +1 -1
- package/dist/contracts/output-schema-fragments.js +11 -0
- package/dist/contracts/output-schema-fragments.js.map +1 -1
- package/dist/contracts/output-schema-mcp.d.ts +7 -0
- package/dist/contracts/output-schema-mcp.d.ts.map +1 -1
- package/dist/contracts/output-schemas.d.ts.map +1 -1
- package/dist/contracts/output-schemas.js +11 -0
- package/dist/contracts/output-schemas.js.map +1 -1
- package/dist/echo/codec-runtime.d.ts +2 -7
- package/dist/echo/codec-runtime.d.ts.map +1 -1
- package/dist/echo/codec-runtime.js +2 -7
- package/dist/echo/codec-runtime.js.map +1 -1
- package/dist/echo/structural-history-client.d.ts.map +1 -1
- package/dist/echo/structural-history-client.js +3 -3
- package/dist/echo/structural-history-client.js.map +1 -1
- package/dist/echo/structural-history-envelope-codec.d.ts +7 -0
- package/dist/echo/structural-history-envelope-codec.d.ts.map +1 -1
- package/dist/echo/structural-history-envelope-codec.js +7 -0
- package/dist/echo/structural-history-envelope-codec.js.map +1 -1
- package/dist/echo/structural-reading-generated-model.d.ts +18 -0
- package/dist/echo/structural-reading-generated-model.d.ts.map +1 -0
- package/dist/echo/structural-reading-generated-model.js +324 -0
- package/dist/echo/structural-reading-generated-model.js.map +1 -0
- package/dist/generated/graft-structural-history.codec.generated.d.ts +193 -39
- package/dist/generated/graft-structural-history.codec.generated.d.ts.map +1 -1
- package/dist/generated/graft-structural-history.codec.generated.js +416 -113
- package/dist/generated/graft-structural-history.codec.generated.js.map +1 -1
- package/dist/generated/graft-structural-history.d.ts +1 -1
- package/dist/generated/graft-structural-history.d.ts.map +1 -1
- package/dist/mcp/control-plane/types.d.ts +8 -0
- package/dist/mcp/control-plane/types.d.ts.map +1 -1
- package/dist/mcp/daemon-control-plane.d.ts +2 -1
- package/dist/mcp/daemon-control-plane.d.ts.map +1 -1
- package/dist/mcp/daemon-control-plane.js +49 -0
- package/dist/mcp/daemon-control-plane.js.map +1 -1
- package/dist/mcp/repo-workspace.d.ts +1 -1
- package/dist/mcp/repo-workspace.d.ts.map +1 -1
- package/dist/mcp/repo-workspace.js +5 -0
- package/dist/mcp/repo-workspace.js.map +1 -1
- package/dist/mcp/tools/changed-since.d.ts.map +1 -1
- package/dist/mcp/tools/changed-since.js +24 -10
- package/dist/mcp/tools/changed-since.js.map +1 -1
- package/dist/mcp/tools/file-outline.d.ts.map +1 -1
- package/dist/mcp/tools/file-outline.js +10 -5
- package/dist/mcp/tools/file-outline.js.map +1 -1
- package/dist/mcp/workspace-registry.d.ts +83 -0
- package/dist/mcp/workspace-registry.d.ts.map +1 -0
- package/dist/mcp/workspace-registry.js +542 -0
- package/dist/mcp/workspace-registry.js.map +1 -0
- package/dist/operations/colorful-prose-projection.d.ts +32 -0
- package/dist/operations/colorful-prose-projection.d.ts.map +1 -0
- package/dist/operations/colorful-prose-projection.js +351 -0
- package/dist/operations/colorful-prose-projection.js.map +1 -0
- package/dist/operations/file-outline.d.ts +10 -0
- package/dist/operations/file-outline.d.ts.map +1 -1
- package/dist/operations/file-outline.js +29 -3
- package/dist/operations/file-outline.js.map +1 -1
- package/dist/operations/repo-workspace.d.ts +4 -0
- package/dist/operations/repo-workspace.d.ts.map +1 -1
- package/dist/operations/repo-workspace.js +57 -21
- package/dist/operations/repo-workspace.js.map +1 -1
- package/dist/operations/safe-read.d.ts +2 -0
- package/dist/operations/safe-read.d.ts.map +1 -1
- package/dist/operations/safe-read.js +20 -0
- package/dist/operations/safe-read.js.map +1 -1
- package/dist/operations/structured-buffer-model.d.ts +19 -15
- package/dist/operations/structured-buffer-model.d.ts.map +1 -1
- package/dist/operations/structured-buffer-model.js +6 -4
- package/dist/operations/structured-buffer-model.js.map +1 -1
- package/dist/operations/structured-buffer-query.d.ts.map +1 -1
- package/dist/operations/structured-buffer-query.js +64 -1
- package/dist/operations/structured-buffer-query.js.map +1 -1
- package/dist/operations/structured-buffer.d.ts +3 -1
- package/dist/operations/structured-buffer.d.ts.map +1 -1
- package/dist/operations/structured-buffer.js.map +1 -1
- package/dist/parser/types.d.ts +1 -1
- package/dist/parser/types.d.ts.map +1 -1
- package/dist/parser/types.js.map +1 -1
- package/dist/ports/process-runner.d.ts +1 -0
- package/dist/ports/process-runner.d.ts.map +1 -1
- package/dist/ports/structural-history.d.ts +23 -0
- package/dist/ports/structural-history.d.ts.map +1 -0
- package/dist/ports/structural-history.js +22 -0
- package/dist/ports/structural-history.js.map +1 -0
- package/dist/warp/structural-reading-adapter.d.ts.map +1 -1
- package/dist/warp/structural-reading-adapter.js +5 -1
- package/dist/warp/structural-reading-adapter.js.map +1 -1
- package/package.json +5 -4
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { JumpEntry, OutlineEntry } from "../parser/types.js";
|
|
2
|
+
import type { BufferPoint, SyntaxSpan } from "./structured-buffer-model.js";
|
|
3
|
+
export declare const COLORFUL_SYNTAX_CONTRACT_VERSION = "colorful.syntax/v1";
|
|
4
|
+
export declare const COLORFUL_VOCABULARY_HASH = "sha256:c3709c173d632bd18385b991f63dc3ac09cdba582bc05550f0376db24117bbe1";
|
|
5
|
+
export interface ProseProjectionInput {
|
|
6
|
+
readonly path: string;
|
|
7
|
+
readonly content: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ProseProjection {
|
|
10
|
+
readonly format: "prose";
|
|
11
|
+
readonly partial: false;
|
|
12
|
+
readonly syntaxSpans: readonly SyntaxSpan[];
|
|
13
|
+
readonly outline: readonly OutlineEntry[];
|
|
14
|
+
readonly jumpTable: readonly JumpEntry[];
|
|
15
|
+
}
|
|
16
|
+
export interface ProseProjectionProvider {
|
|
17
|
+
project(input: ProseProjectionInput): ProseProjection | null;
|
|
18
|
+
}
|
|
19
|
+
export declare class ColorfulIrProjectionError extends Error {
|
|
20
|
+
constructor(message: string);
|
|
21
|
+
}
|
|
22
|
+
export declare function isColorfulProsePath(filePath: string, opts?: {
|
|
23
|
+
readonly includeMarkdown?: boolean | undefined;
|
|
24
|
+
}): boolean;
|
|
25
|
+
export declare function makeColorfulByteToPoint(source: Uint8Array): (byte: number) => BufferPoint;
|
|
26
|
+
export declare function projectColorfulIr(input: {
|
|
27
|
+
readonly path: string;
|
|
28
|
+
readonly source: Uint8Array;
|
|
29
|
+
readonly sourceHash: string;
|
|
30
|
+
readonly ir: unknown;
|
|
31
|
+
}): ProseProjection;
|
|
32
|
+
//# sourceMappingURL=colorful-prose-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorful-prose-projection.d.ts","sourceRoot":"","sources":["../../src/operations/colorful-prose-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,KAAK,EACV,WAAW,EAGX,UAAU,EACX,MAAM,8BAA8B,CAAC;AAEtC,eAAO,MAAM,gCAAgC,uBAAuB,CAAC;AACrE,eAAO,MAAM,wBAAwB,4EACsC,CAAC;AAoC5E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,SAAS,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,KAAK,EAAE,oBAAoB,GAAG,eAAe,GAAG,IAAI,CAAC;CAC9D;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAqKD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAO,GAC5D,OAAO,CAMT;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,WAAW,CAEzF;AAyMD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;CACtB,GAAG,eAAe,CAoDlB"}
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
import { JumpEntry, OutlineEntry } from "../parser/types.js";
|
|
2
|
+
export const COLORFUL_SYNTAX_CONTRACT_VERSION = "colorful.syntax/v1";
|
|
3
|
+
export const COLORFUL_VOCABULARY_HASH = "sha256:c3709c173d632bd18385b991f63dc3ac09cdba582bc05550f0376db24117bbe1";
|
|
4
|
+
export class ColorfulIrProjectionError extends Error {
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "ColorfulIrProjectionError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function fail(message) {
|
|
11
|
+
throw new ColorfulIrProjectionError(message);
|
|
12
|
+
}
|
|
13
|
+
function isRecord(value) {
|
|
14
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
15
|
+
}
|
|
16
|
+
function requireRecord(value, label) {
|
|
17
|
+
if (!isRecord(value)) {
|
|
18
|
+
fail(`${label} must be an object`);
|
|
19
|
+
}
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
function requireString(value, label) {
|
|
23
|
+
if (typeof value !== "string") {
|
|
24
|
+
fail(`${label} must be a string`);
|
|
25
|
+
}
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function requireInteger(value, label) {
|
|
29
|
+
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
30
|
+
fail(`${label} must be an integer`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
function requireOutlineId(value, label) {
|
|
35
|
+
const id = requireInteger(value, label);
|
|
36
|
+
if (id < 0) {
|
|
37
|
+
fail(`${label} must be a non-negative integer`);
|
|
38
|
+
}
|
|
39
|
+
return String(id);
|
|
40
|
+
}
|
|
41
|
+
function requireArray(value, label) {
|
|
42
|
+
if (!Array.isArray(value)) {
|
|
43
|
+
fail(`${label} must be an array`);
|
|
44
|
+
}
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
function decodeByteRange(value, label) {
|
|
48
|
+
const record = requireRecord(value, label);
|
|
49
|
+
const startUtf8 = requireInteger(record["startUtf8"], `${label}.startUtf8`);
|
|
50
|
+
const endUtf8 = requireInteger(record["endUtf8"], `${label}.endUtf8`);
|
|
51
|
+
if (startUtf8 < 0 || endUtf8 < startUtf8) {
|
|
52
|
+
fail(`${label} must be a valid UTF-8 byte range`);
|
|
53
|
+
}
|
|
54
|
+
return { startUtf8, endUtf8 };
|
|
55
|
+
}
|
|
56
|
+
function decodeTokenKind(value, label) {
|
|
57
|
+
const tokenKind = requireString(value, label);
|
|
58
|
+
if (tokenKind !== "WORD"
|
|
59
|
+
&& tokenKind !== "NUMBER"
|
|
60
|
+
&& tokenKind !== "PUNCTUATION"
|
|
61
|
+
&& tokenKind !== "QUOTE") {
|
|
62
|
+
fail(`${label} has unknown token kind ${tokenKind}`);
|
|
63
|
+
}
|
|
64
|
+
return tokenKind;
|
|
65
|
+
}
|
|
66
|
+
function decodeLexicalClass(value, label) {
|
|
67
|
+
if (value === null || value === undefined) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const lexicalClass = requireString(value, label);
|
|
71
|
+
if (lexicalClass !== "FUNCTION"
|
|
72
|
+
&& lexicalClass !== "CONTENT"
|
|
73
|
+
&& lexicalClass !== "PROPER_NOUN_CANDIDATE") {
|
|
74
|
+
fail(`${label} has unknown lexical class ${lexicalClass}`);
|
|
75
|
+
}
|
|
76
|
+
return lexicalClass;
|
|
77
|
+
}
|
|
78
|
+
function decodeOutlineKind(value, label) {
|
|
79
|
+
const kind = requireString(value, label);
|
|
80
|
+
if (kind !== "PARAGRAPH" && kind !== "SENTENCE") {
|
|
81
|
+
fail(`${label} has unknown outline kind ${kind}`);
|
|
82
|
+
}
|
|
83
|
+
return kind;
|
|
84
|
+
}
|
|
85
|
+
function decodeToken(value, label) {
|
|
86
|
+
const record = requireRecord(value, label);
|
|
87
|
+
return {
|
|
88
|
+
byteRange: decodeByteRange(record["byteRange"], `${label}.byteRange`),
|
|
89
|
+
tokenKind: decodeTokenKind(record["tokenKind"], `${label}.tokenKind`),
|
|
90
|
+
lexicalClass: decodeLexicalClass(record["lexicalClass"], `${label}.lexicalClass`),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function decodeStructureNode(value, label) {
|
|
94
|
+
const record = requireRecord(value, label);
|
|
95
|
+
return {
|
|
96
|
+
nodeId: requireOutlineId(record["nodeId"], `${label}.nodeId`),
|
|
97
|
+
kind: decodeOutlineKind(record["kind"], `${label}.kind`),
|
|
98
|
+
byteRange: decodeByteRange(record["byteRange"], `${label}.byteRange`),
|
|
99
|
+
depth: requireInteger(record["depth"], `${label}.depth`),
|
|
100
|
+
childNodeIds: requireArray(record["childNodeIds"], `${label}.childNodeIds`).map((entry, index) => requireOutlineId(entry, `${label}.childNodeIds[${String(index)}]`)),
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function decodeColorfulDocumentAnalysis(value) {
|
|
104
|
+
const record = requireRecord(value, "Colorful IR");
|
|
105
|
+
const contractVersion = requireString(record["contractVersion"], "Colorful IR.contractVersion");
|
|
106
|
+
if (contractVersion !== COLORFUL_SYNTAX_CONTRACT_VERSION) {
|
|
107
|
+
fail(`Colorful IR contractVersion ${contractVersion} is not ${COLORFUL_SYNTAX_CONTRACT_VERSION}`);
|
|
108
|
+
}
|
|
109
|
+
const vocabularyHash = requireString(record["vocabularyHash"], "Colorful IR.vocabularyHash");
|
|
110
|
+
if (vocabularyHash !== COLORFUL_VOCABULARY_HASH) {
|
|
111
|
+
fail(`Colorful IR vocabularyHash (${vocabularyHash}) does not match this consumer (${COLORFUL_VOCABULARY_HASH})`);
|
|
112
|
+
}
|
|
113
|
+
const source = requireRecord(record["source"], "Colorful IR.source");
|
|
114
|
+
return {
|
|
115
|
+
contractVersion,
|
|
116
|
+
vocabularyHash,
|
|
117
|
+
source: {
|
|
118
|
+
contentHash: requireString(source["contentHash"], "Colorful IR.source.contentHash"),
|
|
119
|
+
utf8ByteLength: requireInteger(source["utf8ByteLength"], "Colorful IR.source.utf8ByteLength"),
|
|
120
|
+
},
|
|
121
|
+
tokens: requireArray(record["tokens"], "Colorful IR.tokens").map((entry, index) => decodeToken(entry, `Colorful IR.tokens[${String(index)}]`)),
|
|
122
|
+
structure: requireArray(record["structure"], "Colorful IR.structure").map((entry, index) => decodeStructureNode(entry, `Colorful IR.structure[${String(index)}]`)),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
function assertRangeWithinSource(range, sourceLength, byteMapper, label) {
|
|
126
|
+
if (range.endUtf8 > sourceLength) {
|
|
127
|
+
fail(`${label} extends past source.utf8ByteLength`);
|
|
128
|
+
}
|
|
129
|
+
if (!byteMapper.hasBoundary(range.startUtf8) || !byteMapper.hasBoundary(range.endUtf8)) {
|
|
130
|
+
fail(`${label} must start and end on UTF-8 character boundaries`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export function isColorfulProsePath(filePath, opts = {}) {
|
|
134
|
+
const lower = filePath.toLowerCase();
|
|
135
|
+
if (lower.endsWith(".txt") || lower.endsWith(".text")) {
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return opts.includeMarkdown === true && (lower.endsWith(".md") || lower.endsWith(".markdown"));
|
|
139
|
+
}
|
|
140
|
+
export function makeColorfulByteToPoint(source) {
|
|
141
|
+
return makeColorfulByteMapper(source).byteToPoint;
|
|
142
|
+
}
|
|
143
|
+
function makeColorfulByteMapper(source) {
|
|
144
|
+
const bytes = Buffer.from(source);
|
|
145
|
+
const pointByBoundary = new Map();
|
|
146
|
+
const boundaries = [];
|
|
147
|
+
const addBoundary = (byte, row, column) => {
|
|
148
|
+
if (!pointByBoundary.has(byte)) {
|
|
149
|
+
boundaries.push(byte);
|
|
150
|
+
}
|
|
151
|
+
pointByBoundary.set(byte, { row, column });
|
|
152
|
+
};
|
|
153
|
+
let byteOffset = 0;
|
|
154
|
+
let row = 0;
|
|
155
|
+
let column = 0;
|
|
156
|
+
addBoundary(byteOffset, row, column);
|
|
157
|
+
const scalars = Array.from(bytes.toString("utf8"));
|
|
158
|
+
for (let index = 0; index < scalars.length; index += 1) {
|
|
159
|
+
const scalar = scalars[index] ?? "";
|
|
160
|
+
byteOffset += Buffer.byteLength(scalar, "utf8");
|
|
161
|
+
if (scalar === "\r" && scalars[index + 1] === "\n") {
|
|
162
|
+
column += 1;
|
|
163
|
+
addBoundary(byteOffset, row, column);
|
|
164
|
+
index += 1;
|
|
165
|
+
byteOffset += 1;
|
|
166
|
+
row += 1;
|
|
167
|
+
column = 0;
|
|
168
|
+
addBoundary(byteOffset, row, column);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
if (scalar === "\r" || scalar === "\n") {
|
|
172
|
+
row += 1;
|
|
173
|
+
column = 0;
|
|
174
|
+
addBoundary(byteOffset, row, column);
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
column += 1;
|
|
178
|
+
addBoundary(byteOffset, row, column);
|
|
179
|
+
}
|
|
180
|
+
const byteToPoint = (byte) => {
|
|
181
|
+
const offset = Math.max(0, Math.min(byte, bytes.length));
|
|
182
|
+
const exact = pointByBoundary.get(offset);
|
|
183
|
+
if (exact !== undefined) {
|
|
184
|
+
return exact;
|
|
185
|
+
}
|
|
186
|
+
let low = 0;
|
|
187
|
+
let high = boundaries.length - 1;
|
|
188
|
+
while (low <= high) {
|
|
189
|
+
const mid = Math.floor((low + high) / 2);
|
|
190
|
+
const boundary = boundaries[mid] ?? 0;
|
|
191
|
+
if (boundary <= offset) {
|
|
192
|
+
low = mid + 1;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
high = mid - 1;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return pointByBoundary.get(boundaries[Math.max(high, 0)] ?? 0) ?? { row: 0, column: 0 };
|
|
199
|
+
};
|
|
200
|
+
return {
|
|
201
|
+
byteToPoint,
|
|
202
|
+
hasBoundary(byte) {
|
|
203
|
+
return pointByBoundary.has(byte);
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
function rangeForByteRange(byteRange, byteToPoint) {
|
|
208
|
+
return {
|
|
209
|
+
start: byteToPoint(byteRange.startUtf8),
|
|
210
|
+
end: byteToPoint(byteRange.endUtf8),
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
function lineRangeForByteRange(byteRange, byteToPoint) {
|
|
214
|
+
const start = byteToPoint(byteRange.startUtf8).row + 1;
|
|
215
|
+
const inclusiveEndByte = byteRange.endUtf8 > byteRange.startUtf8
|
|
216
|
+
? byteRange.endUtf8 - 1
|
|
217
|
+
: byteRange.endUtf8;
|
|
218
|
+
const end = Math.max(start, byteToPoint(inclusiveEndByte).row + 1);
|
|
219
|
+
return { start, end };
|
|
220
|
+
}
|
|
221
|
+
function tokenClass(token) {
|
|
222
|
+
switch (token.tokenKind) {
|
|
223
|
+
case "WORD":
|
|
224
|
+
if (token.lexicalClass === "FUNCTION") {
|
|
225
|
+
return "keyword";
|
|
226
|
+
}
|
|
227
|
+
if (token.lexicalClass === "PROPER_NOUN_CANDIDATE") {
|
|
228
|
+
return "type";
|
|
229
|
+
}
|
|
230
|
+
return null;
|
|
231
|
+
case "NUMBER":
|
|
232
|
+
return "number";
|
|
233
|
+
case "QUOTE":
|
|
234
|
+
return "string";
|
|
235
|
+
case "PUNCTUATION":
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function sliceSourceText(source, byteRange) {
|
|
240
|
+
return source.subarray(byteRange.startUtf8, byteRange.endUtf8).toString("utf8");
|
|
241
|
+
}
|
|
242
|
+
function compactSnippet(text) {
|
|
243
|
+
const compact = text.replace(/\s+/gu, " ").trim();
|
|
244
|
+
const scalars = Array.from(compact);
|
|
245
|
+
if (scalars.length <= 80) {
|
|
246
|
+
return compact;
|
|
247
|
+
}
|
|
248
|
+
return `${scalars.slice(0, 77).join("")}...`;
|
|
249
|
+
}
|
|
250
|
+
function proseEntryKind(kind) {
|
|
251
|
+
return kind === "PARAGRAPH" ? "paragraph" : "sentence";
|
|
252
|
+
}
|
|
253
|
+
function proseLabel(kind) {
|
|
254
|
+
return kind === "PARAGRAPH" ? "Paragraph" : "Sentence";
|
|
255
|
+
}
|
|
256
|
+
function buildProseOutline(source, structure, byteToPoint) {
|
|
257
|
+
const byId = new Map();
|
|
258
|
+
const childIds = new Set();
|
|
259
|
+
for (const node of structure) {
|
|
260
|
+
if (byId.has(node.nodeId)) {
|
|
261
|
+
fail(`Colorful IR.structure has duplicate nodeId ${node.nodeId}`);
|
|
262
|
+
}
|
|
263
|
+
byId.set(node.nodeId, node);
|
|
264
|
+
for (const childId of node.childNodeIds) {
|
|
265
|
+
childIds.add(childId);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
const ordinals = new Map();
|
|
269
|
+
const counts = { PARAGRAPH: 0, SENTENCE: 0 };
|
|
270
|
+
for (const node of structure) {
|
|
271
|
+
counts[node.kind] += 1;
|
|
272
|
+
ordinals.set(node.nodeId, counts[node.kind]);
|
|
273
|
+
}
|
|
274
|
+
const jumpTable = structure.map((node) => {
|
|
275
|
+
const ordinal = ordinals.get(node.nodeId) ?? 1;
|
|
276
|
+
const name = `${proseLabel(node.kind)} ${String(ordinal)}`;
|
|
277
|
+
const lineRange = lineRangeForByteRange(node.byteRange, byteToPoint);
|
|
278
|
+
return new JumpEntry({
|
|
279
|
+
symbol: name,
|
|
280
|
+
kind: proseEntryKind(node.kind),
|
|
281
|
+
start: lineRange.start,
|
|
282
|
+
end: lineRange.end,
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
const buildEntry = (node, path) => {
|
|
286
|
+
if (path.has(node.nodeId)) {
|
|
287
|
+
fail(`Colorful IR.structure contains a cycle at ${node.nodeId}`);
|
|
288
|
+
}
|
|
289
|
+
const nextPath = new Set(path);
|
|
290
|
+
nextPath.add(node.nodeId);
|
|
291
|
+
const children = node.childNodeIds.map((childId) => {
|
|
292
|
+
const child = byId.get(childId);
|
|
293
|
+
if (child === undefined) {
|
|
294
|
+
fail(`Colorful IR.structure references missing child ${childId}`);
|
|
295
|
+
}
|
|
296
|
+
return buildEntry(child, nextPath);
|
|
297
|
+
});
|
|
298
|
+
const ordinal = ordinals.get(node.nodeId) ?? 1;
|
|
299
|
+
const signature = compactSnippet(sliceSourceText(source, node.byteRange));
|
|
300
|
+
return new OutlineEntry({
|
|
301
|
+
kind: proseEntryKind(node.kind),
|
|
302
|
+
name: `${proseLabel(node.kind)} ${String(ordinal)}`,
|
|
303
|
+
exported: false,
|
|
304
|
+
...(signature.length > 0 ? { signature } : {}),
|
|
305
|
+
...(children.length > 0 ? { children } : {}),
|
|
306
|
+
});
|
|
307
|
+
};
|
|
308
|
+
const roots = structure.filter((node) => !childIds.has(node.nodeId));
|
|
309
|
+
return {
|
|
310
|
+
outline: roots.map((node) => buildEntry(node, new Set())),
|
|
311
|
+
jumpTable,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
export function projectColorfulIr(input) {
|
|
315
|
+
const source = Buffer.from(input.source);
|
|
316
|
+
const document = decodeColorfulDocumentAnalysis(input.ir);
|
|
317
|
+
if (document.source.contentHash !== input.sourceHash) {
|
|
318
|
+
fail(`source does not match IR contentHash (expected ${document.source.contentHash}, got ${input.sourceHash})`);
|
|
319
|
+
}
|
|
320
|
+
if (document.source.utf8ByteLength !== source.byteLength) {
|
|
321
|
+
fail(`source length ${String(source.byteLength)} does not match IR source.utf8ByteLength ${String(document.source.utf8ByteLength)}`);
|
|
322
|
+
}
|
|
323
|
+
const byteMapper = makeColorfulByteMapper(source);
|
|
324
|
+
const byteToPoint = byteMapper.byteToPoint;
|
|
325
|
+
for (const [index, token] of document.tokens.entries()) {
|
|
326
|
+
assertRangeWithinSource(token.byteRange, source.byteLength, byteMapper, `Colorful IR.tokens[${String(index)}].byteRange`);
|
|
327
|
+
}
|
|
328
|
+
for (const [index, node] of document.structure.entries()) {
|
|
329
|
+
assertRangeWithinSource(node.byteRange, source.byteLength, byteMapper, `Colorful IR.structure[${String(index)}].byteRange`);
|
|
330
|
+
}
|
|
331
|
+
const syntaxSpans = document.tokens.flatMap((token) => {
|
|
332
|
+
const className = tokenClass(token);
|
|
333
|
+
if (className === null || token.byteRange.startUtf8 === token.byteRange.endUtf8) {
|
|
334
|
+
return [];
|
|
335
|
+
}
|
|
336
|
+
return [{
|
|
337
|
+
className,
|
|
338
|
+
range: rangeForByteRange(token.byteRange, byteToPoint),
|
|
339
|
+
text: sliceSourceText(source, token.byteRange),
|
|
340
|
+
}];
|
|
341
|
+
});
|
|
342
|
+
const outline = buildProseOutline(source, document.structure, byteToPoint);
|
|
343
|
+
return {
|
|
344
|
+
format: "prose",
|
|
345
|
+
partial: false,
|
|
346
|
+
syntaxSpans,
|
|
347
|
+
outline: outline.outline,
|
|
348
|
+
jumpTable: outline.jumpTable,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
//# sourceMappingURL=colorful-prose-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorful-prose-projection.js","sourceRoot":"","sources":["../../src/operations/colorful-prose-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { OutlineEntry, JumpEntry } from "../parser/types.js";
|
|
2
2
|
import type { FileSystem } from "../ports/filesystem.js";
|
|
3
|
+
import type { ProseProjectionProvider } from "./colorful-prose-projection.js";
|
|
3
4
|
export interface FileOutlineResult {
|
|
4
5
|
path: string;
|
|
5
6
|
outline: OutlineEntry[];
|
|
@@ -9,7 +10,16 @@ export interface FileOutlineResult {
|
|
|
9
10
|
reason?: "UNSUPPORTED_LANGUAGE" | undefined;
|
|
10
11
|
error?: string | undefined;
|
|
11
12
|
}
|
|
13
|
+
export interface ExtractedFileOutline {
|
|
14
|
+
readonly outline: OutlineEntry[];
|
|
15
|
+
readonly jumpTable: JumpEntry[];
|
|
16
|
+
readonly partial?: boolean | undefined;
|
|
17
|
+
}
|
|
18
|
+
export declare function extractOutlineProjectionForContent(filePath: string, content: string, opts: {
|
|
19
|
+
proseProjector?: ProseProjectionProvider | undefined;
|
|
20
|
+
}): Promise<ExtractedFileOutline | null>;
|
|
12
21
|
export declare function fileOutline(filePath: string, opts: {
|
|
13
22
|
fs: FileSystem;
|
|
23
|
+
proseProjector?: ProseProjectionProvider | undefined;
|
|
14
24
|
}): Promise<FileOutlineResult>;
|
|
15
25
|
//# sourceMappingURL=file-outline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-outline.d.ts","sourceRoot":"","sources":["../../src/operations/file-outline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-outline.d.ts","sourceRoot":"","sources":["../../src/operations/file-outline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAmB,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAE/F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,MAAM,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED,wBAAsB,kCAAkC,CACtD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,cAAc,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAA;CAAE,GAC7D,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAwBtC;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,cAAc,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAA;CAAE,GAC7E,OAAO,CAAC,iBAAiB,CAAC,CAgC5B"}
|
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
import { extractOutlineForFileAsync } from "../parser/outline.js";
|
|
2
|
+
export async function extractOutlineProjectionForContent(filePath, content, opts) {
|
|
3
|
+
const result = await extractOutlineForFileAsync(filePath, content);
|
|
4
|
+
if (result !== null) {
|
|
5
|
+
return {
|
|
6
|
+
outline: result.entries,
|
|
7
|
+
jumpTable: result.jumpTable ?? [],
|
|
8
|
+
...(result.partial === true ? { partial: true } : {}),
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
let proseProjection;
|
|
12
|
+
try {
|
|
13
|
+
proseProjection = opts.proseProjector?.project({ path: filePath, content }) ?? null;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
if (proseProjection === null) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
outline: [...proseProjection.outline],
|
|
23
|
+
jumpTable: [...proseProjection.jumpTable],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
2
26
|
export async function fileOutline(filePath, opts) {
|
|
3
27
|
let content;
|
|
4
28
|
try {
|
|
@@ -12,7 +36,9 @@ export async function fileOutline(filePath, opts) {
|
|
|
12
36
|
error: "File not found",
|
|
13
37
|
};
|
|
14
38
|
}
|
|
15
|
-
const result = await
|
|
39
|
+
const result = await extractOutlineProjectionForContent(filePath, content, {
|
|
40
|
+
proseProjector: opts.proseProjector,
|
|
41
|
+
});
|
|
16
42
|
if (result === null) {
|
|
17
43
|
return {
|
|
18
44
|
path: filePath,
|
|
@@ -24,8 +50,8 @@ export async function fileOutline(filePath, opts) {
|
|
|
24
50
|
}
|
|
25
51
|
return {
|
|
26
52
|
path: filePath,
|
|
27
|
-
outline: result.
|
|
28
|
-
jumpTable: result.jumpTable
|
|
53
|
+
outline: result.outline,
|
|
54
|
+
jumpTable: result.jumpTable,
|
|
29
55
|
...(result.partial === true ? { partial: true } : {}),
|
|
30
56
|
};
|
|
31
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-outline.js","sourceRoot":"","sources":["../../src/operations/file-outline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"file-outline.js","sourceRoot":"","sources":["../../src/operations/file-outline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAqBlE,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,QAAgB,EAChB,OAAe,EACf,IAA8D;IAE9D,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YACjC,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;IACJ,CAAC;IAED,IAAI,eAAuC,CAAC;IAC5C,IAAI,CAAC;QACH,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC;QACrC,SAAS,EAAE,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,EAChB,IAA8E;IAE9E,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,KAAK,EAAE,gBAAgB;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,kCAAkC,CAAC,QAAQ,EAAE,OAAO,EAAE;QACzE,cAAc,EAAE,IAAI,CAAC,cAAc;KACpC,CAAC,CAAC;IACH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,2DAA2D;SACnE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC"}
|
|
@@ -7,6 +7,7 @@ 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
9
|
import type { JsonCodec } from "../ports/codec.js";
|
|
10
|
+
import type { ProseProjectionProvider } from "./colorful-prose-projection.js";
|
|
10
11
|
export interface RepoWorkspaceRefusedResult {
|
|
11
12
|
readonly path: string;
|
|
12
13
|
readonly projection: "refused";
|
|
@@ -74,6 +75,7 @@ export interface RepoWorkspaceOptions {
|
|
|
74
75
|
readonly toPolicyPath?: ((resolvedPath: string) => string) | undefined;
|
|
75
76
|
readonly governor?: GovernorTracker | undefined;
|
|
76
77
|
readonly cache?: ObservationCache | undefined;
|
|
78
|
+
readonly proseProjector?: ProseProjectionProvider | undefined;
|
|
77
79
|
}
|
|
78
80
|
export declare class RepoWorkspace {
|
|
79
81
|
private readonly resolveWorkspacePath;
|
|
@@ -84,6 +86,7 @@ export declare class RepoWorkspace {
|
|
|
84
86
|
readonly graftignorePatterns: readonly string[];
|
|
85
87
|
readonly governor: GovernorTracker;
|
|
86
88
|
readonly cache: ObservationCache;
|
|
89
|
+
readonly proseProjector: ProseProjectionProvider | undefined;
|
|
87
90
|
constructor(options: RepoWorkspaceOptions);
|
|
88
91
|
static loadGraftignorePatterns(fs: Pick<FileSystem, "readFile">, projectRoot: string): Promise<string[]>;
|
|
89
92
|
setBudget(bytes: number): void;
|
|
@@ -94,6 +97,7 @@ export declare class RepoWorkspace {
|
|
|
94
97
|
fraction: number;
|
|
95
98
|
} | null;
|
|
96
99
|
private evaluateRefusal;
|
|
100
|
+
private outlineForSnapshot;
|
|
97
101
|
safeRead(args: {
|
|
98
102
|
readonly path: string;
|
|
99
103
|
readonly intent?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repo-workspace.d.ts","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"repo-workspace.d.ts","sourceRoot":"","sources":["../../src/operations/repo-workspace.ts"],"names":[],"mappings":"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"}
|