@flyingrobots/graft 0.10.1 → 0.11.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 +95 -0
- package/README.md +41 -0
- package/dist/adapters/edict-cli-projection-provider.d.ts +13 -0
- package/dist/adapters/edict-cli-projection-provider.d.ts.map +1 -0
- package/dist/adapters/edict-cli-projection-provider.js +71 -0
- package/dist/adapters/edict-cli-projection-provider.js.map +1 -0
- package/dist/api/index.d.ts +16 -2
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +15 -1
- package/dist/api/index.js.map +1 -1
- package/dist/contracts/review-digest.d.ts +2 -0
- package/dist/contracts/review-digest.d.ts.map +1 -0
- package/dist/contracts/review-digest.js +145 -0
- package/dist/contracts/review-digest.js.map +1 -0
- package/dist/mcp/tools/changed-since.js +2 -2
- package/dist/mcp/tools/changed-since.js.map +1 -1
- package/dist/operations/cached-file.js +2 -2
- package/dist/operations/cached-file.js.map +1 -1
- package/dist/operations/edict-projection.d.ts +126 -0
- package/dist/operations/edict-projection.d.ts.map +1 -0
- package/dist/operations/edict-projection.js +394 -0
- package/dist/operations/edict-projection.js.map +1 -0
- package/dist/operations/projection-profile-resolver.d.ts +67 -0
- package/dist/operations/projection-profile-resolver.d.ts.map +1 -0
- package/dist/operations/projection-profile-resolver.js +368 -0
- package/dist/operations/projection-profile-resolver.js.map +1 -0
- package/dist/operations/projection-provider-registry.d.ts +30 -0
- package/dist/operations/projection-provider-registry.d.ts.map +1 -0
- package/dist/operations/projection-provider-registry.js +86 -0
- package/dist/operations/projection-provider-registry.js.map +1 -0
- package/dist/operations/repo-workspace.js +2 -2
- package/dist/operations/repo-workspace.js.map +1 -1
- package/dist/operations/structured-buffer-model.d.ts +28 -3
- package/dist/operations/structured-buffer-model.d.ts.map +1 -1
- package/dist/operations/structured-buffer-model.js +168 -7
- 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 +231 -6
- package/dist/operations/structured-buffer-query.js.map +1 -1
- package/dist/operations/structured-buffer.d.ts +19 -1
- package/dist/operations/structured-buffer.d.ts.map +1 -1
- package/dist/operations/structured-buffer.js +11 -0
- package/dist/operations/structured-buffer.js.map +1 -1
- package/dist/operations/wesley-projection.d.ts +67 -0
- package/dist/operations/wesley-projection.d.ts.map +1 -0
- package/dist/operations/wesley-projection.js +2 -0
- package/dist/operations/wesley-projection.js.map +1 -0
- package/dist/operations/xml-syntax.d.ts +5 -0
- package/dist/operations/xml-syntax.d.ts.map +1 -0
- package/dist/operations/xml-syntax.js +155 -0
- package/dist/operations/xml-syntax.js.map +1 -0
- package/dist/parser/lang.d.ts +9 -1
- package/dist/parser/lang.d.ts.map +1 -1
- package/dist/parser/lang.js +20 -0
- package/dist/parser/lang.js.map +1 -1
- package/dist/parser/outline.d.ts.map +1 -1
- package/dist/parser/outline.js +9 -3
- package/dist/parser/outline.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { BufferRange, SyntaxSpan, WarmProjectionBasis } from "./structured-buffer-model.js";
|
|
2
|
+
import type { ResolvedAuthorityContext } from "./projection-profile-resolver.js";
|
|
3
|
+
export type JsonObject = Readonly<Record<string, unknown>>;
|
|
4
|
+
export type EdictProjectionEmit = "syntax" | "diagnostics" | "core" | "targetIr" | "receipt" | "digests";
|
|
5
|
+
export type EdictWriteClass = "none" | "read" | "create" | "ensure" | "append" | "replace" | "delete";
|
|
6
|
+
export interface EdictProjectionOperationProfileFact {
|
|
7
|
+
readonly source: string;
|
|
8
|
+
readonly core: string;
|
|
9
|
+
readonly allowedWriteClasses?: readonly EdictWriteClass[] | undefined;
|
|
10
|
+
}
|
|
11
|
+
export interface EdictProjectionEffectWriteClassFact {
|
|
12
|
+
readonly effect: string;
|
|
13
|
+
readonly writeClass: EdictWriteClass;
|
|
14
|
+
}
|
|
15
|
+
export interface EdictProjectionBudget {
|
|
16
|
+
readonly maxSteps: number;
|
|
17
|
+
readonly maxAllocatedBytes: number;
|
|
18
|
+
readonly maxOutputBytes: number;
|
|
19
|
+
}
|
|
20
|
+
export interface EdictProjectionBudgetFact {
|
|
21
|
+
readonly source: string;
|
|
22
|
+
readonly budget: EdictProjectionBudget;
|
|
23
|
+
}
|
|
24
|
+
export interface EdictProjectionCompilerContext {
|
|
25
|
+
readonly operationProfiles?: readonly EdictProjectionOperationProfileFact[] | undefined;
|
|
26
|
+
readonly effectWriteClasses?: readonly EdictProjectionEffectWriteClassFact[] | undefined;
|
|
27
|
+
readonly budgets?: readonly EdictProjectionBudgetFact[] | undefined;
|
|
28
|
+
}
|
|
29
|
+
export interface EdictProjectionTargetEffectLowering {
|
|
30
|
+
readonly effect: string;
|
|
31
|
+
readonly targetIntrinsic: string;
|
|
32
|
+
}
|
|
33
|
+
export interface EdictProjectionTargetSettings {
|
|
34
|
+
readonly coordinate: string;
|
|
35
|
+
readonly profileDigest: string;
|
|
36
|
+
readonly irDomain: string;
|
|
37
|
+
readonly operationProfiles?: readonly string[] | undefined;
|
|
38
|
+
readonly obstructionCoordinates?: readonly string[] | undefined;
|
|
39
|
+
readonly effectLowerings?: readonly EdictProjectionTargetEffectLowering[] | undefined;
|
|
40
|
+
}
|
|
41
|
+
export interface EdictProjectionRequest {
|
|
42
|
+
readonly name: string;
|
|
43
|
+
readonly content: string;
|
|
44
|
+
readonly basis?: WarmProjectionBasis | null | undefined;
|
|
45
|
+
readonly emit: readonly EdictProjectionEmit[];
|
|
46
|
+
readonly authority?: ResolvedAuthorityContext | undefined;
|
|
47
|
+
readonly compilerContext?: EdictProjectionCompilerContext | undefined;
|
|
48
|
+
readonly target?: EdictProjectionTargetSettings | undefined;
|
|
49
|
+
}
|
|
50
|
+
export interface EdictProjectionDiagnostics {
|
|
51
|
+
readonly items: readonly EdictDiagnosticItem[];
|
|
52
|
+
}
|
|
53
|
+
export interface EdictDiagnosticItem {
|
|
54
|
+
readonly stage: string;
|
|
55
|
+
readonly kind: string;
|
|
56
|
+
readonly severity: "error";
|
|
57
|
+
readonly range: BufferRange;
|
|
58
|
+
readonly message?: string | undefined;
|
|
59
|
+
}
|
|
60
|
+
export type EdictProjectionSlot<TValue> = {
|
|
61
|
+
readonly state: "not_requested";
|
|
62
|
+
} | {
|
|
63
|
+
readonly state: "available";
|
|
64
|
+
readonly value: TValue;
|
|
65
|
+
} | {
|
|
66
|
+
readonly state: "blocked";
|
|
67
|
+
readonly reason: readonly JsonObject[];
|
|
68
|
+
} | {
|
|
69
|
+
readonly state: "failed";
|
|
70
|
+
readonly error: EdictProjectionFailure;
|
|
71
|
+
};
|
|
72
|
+
export interface EdictSyntaxProjection {
|
|
73
|
+
readonly spans: readonly SyntaxSpan[];
|
|
74
|
+
}
|
|
75
|
+
export interface EdictCoreProjection {
|
|
76
|
+
readonly digest: string;
|
|
77
|
+
readonly review: JsonObject;
|
|
78
|
+
}
|
|
79
|
+
export interface EdictTargetIrProjection {
|
|
80
|
+
readonly domain: string;
|
|
81
|
+
readonly target: {
|
|
82
|
+
readonly coordinate: string;
|
|
83
|
+
readonly digest: string;
|
|
84
|
+
};
|
|
85
|
+
readonly digest: string;
|
|
86
|
+
readonly review: JsonObject;
|
|
87
|
+
}
|
|
88
|
+
export interface EdictEchoReceiptProjection {
|
|
89
|
+
readonly outcomeKind: string;
|
|
90
|
+
readonly targetIrDigest: string;
|
|
91
|
+
readonly targetIrDomain?: string | undefined;
|
|
92
|
+
readonly reasonKind?: string | undefined;
|
|
93
|
+
readonly reasonPayload?: JsonObject | undefined;
|
|
94
|
+
readonly receipt: JsonObject;
|
|
95
|
+
}
|
|
96
|
+
export interface EdictProjectionFailure {
|
|
97
|
+
readonly kind: string;
|
|
98
|
+
readonly message?: string | undefined;
|
|
99
|
+
readonly failures?: readonly JsonObject[] | undefined;
|
|
100
|
+
}
|
|
101
|
+
export interface EdictProjectionStatus {
|
|
102
|
+
readonly status: "ok" | "error";
|
|
103
|
+
readonly checked: number;
|
|
104
|
+
readonly errors: number;
|
|
105
|
+
readonly exitCode: 0 | 1 | 2;
|
|
106
|
+
}
|
|
107
|
+
export interface EdictProjectionBundle {
|
|
108
|
+
readonly language: "edict";
|
|
109
|
+
readonly name: string;
|
|
110
|
+
readonly basis: WarmProjectionBasis | null;
|
|
111
|
+
readonly syntax: EdictProjectionSlot<EdictSyntaxProjection>;
|
|
112
|
+
readonly diagnostics: EdictProjectionDiagnostics;
|
|
113
|
+
readonly core: EdictProjectionSlot<EdictCoreProjection>;
|
|
114
|
+
readonly targetIr: EdictProjectionSlot<EdictTargetIrProjection>;
|
|
115
|
+
readonly echoReceipt?: EdictProjectionSlot<EdictEchoReceiptProjection> | undefined;
|
|
116
|
+
readonly status: EdictProjectionStatus;
|
|
117
|
+
}
|
|
118
|
+
export interface EdictProjectionProvider {
|
|
119
|
+
project(input: EdictProjectionRequest): EdictProjectionBundle;
|
|
120
|
+
}
|
|
121
|
+
export declare class EdictProjectionError extends Error {
|
|
122
|
+
constructor(message: string);
|
|
123
|
+
}
|
|
124
|
+
export declare function isEdictPath(filePath: string): boolean;
|
|
125
|
+
export declare function projectEdictJsonlRecords(request: EdictProjectionRequest, records: readonly unknown[]): EdictProjectionBundle;
|
|
126
|
+
//# sourceMappingURL=edict-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edict-projection.d.ts","sourceRoot":"","sources":["../../src/operations/edict-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
export class EdictProjectionError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = "EdictProjectionError";
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
function fail(message) {
|
|
8
|
+
throw new EdictProjectionError(message);
|
|
9
|
+
}
|
|
10
|
+
function isRecord(value) {
|
|
11
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
12
|
+
}
|
|
13
|
+
function requireRecord(value, label) {
|
|
14
|
+
if (!isRecord(value)) {
|
|
15
|
+
fail(`${label} must be an object`);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
function requireString(value, label) {
|
|
20
|
+
if (typeof value !== "string") {
|
|
21
|
+
fail(`${label} must be a string`);
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
function requireInteger(value, label) {
|
|
26
|
+
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
27
|
+
fail(`${label} must be an integer`);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
function requireArray(value, label) {
|
|
32
|
+
if (!Array.isArray(value)) {
|
|
33
|
+
fail(`${label} must be an array`);
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
function asJsonObject(value, label) {
|
|
38
|
+
const record = requireRecord(value, label);
|
|
39
|
+
return record;
|
|
40
|
+
}
|
|
41
|
+
function requireDigest(value, label) {
|
|
42
|
+
const digest = requireString(value, label);
|
|
43
|
+
if (!/^sha256:[0-9a-f]{64}$/u.test(digest)) {
|
|
44
|
+
fail(`${label} must be a lowercase sha256 digest`);
|
|
45
|
+
}
|
|
46
|
+
return digest;
|
|
47
|
+
}
|
|
48
|
+
function requireEnvelope(record, expectedType, label) {
|
|
49
|
+
const recordType = requireString(record["type"], `${label}.type`);
|
|
50
|
+
if (recordType !== expectedType) {
|
|
51
|
+
fail(`${label}.type must be ${expectedType}`);
|
|
52
|
+
}
|
|
53
|
+
const command = requireString(record["command"], `${label}.command`);
|
|
54
|
+
if (command !== "project") {
|
|
55
|
+
fail(`${label}.command must be project`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function requireInputName(record, requestName, label) {
|
|
59
|
+
const input = requireRecord(record["input"], `${label}.input`);
|
|
60
|
+
const inputName = requireString(input["name"], `${label}.input.name`);
|
|
61
|
+
if (inputName !== requestName) {
|
|
62
|
+
fail(`${label}.input.name must match the projection request name`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function makeUtf8ByteMapper(source) {
|
|
66
|
+
const pointByBoundary = new Map();
|
|
67
|
+
let byte = 0;
|
|
68
|
+
let row = 0;
|
|
69
|
+
let column = 0;
|
|
70
|
+
pointByBoundary.set(byte, { row, column });
|
|
71
|
+
for (const char of source) {
|
|
72
|
+
byte += Buffer.byteLength(char, "utf8");
|
|
73
|
+
if (char === "\n") {
|
|
74
|
+
row += 1;
|
|
75
|
+
column = 0;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
column += 1;
|
|
79
|
+
}
|
|
80
|
+
pointByBoundary.set(byte, { row, column });
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
byteToPoint(offset) {
|
|
84
|
+
const point = pointByBoundary.get(offset);
|
|
85
|
+
if (point === undefined) {
|
|
86
|
+
fail(`byte offset ${String(offset)} is not a UTF-8 character boundary`);
|
|
87
|
+
}
|
|
88
|
+
return point;
|
|
89
|
+
},
|
|
90
|
+
hasBoundary(offset) {
|
|
91
|
+
return pointByBoundary.has(offset);
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function decodeByteRange(value, label, source, mapper) {
|
|
96
|
+
const record = requireRecord(value, label);
|
|
97
|
+
const start = requireInteger(record["start"], `${label}.start`);
|
|
98
|
+
const end = requireInteger(record["end"], `${label}.end`);
|
|
99
|
+
const sourceLength = Buffer.byteLength(source, "utf8");
|
|
100
|
+
if (start < 0 || end < start || end > sourceLength) {
|
|
101
|
+
fail(`${label} must be a valid half-open byte range`);
|
|
102
|
+
}
|
|
103
|
+
if (!mapper.hasBoundary(start) || !mapper.hasBoundary(end)) {
|
|
104
|
+
fail(`${label} must start and end on UTF-8 character boundaries`);
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
start: mapper.byteToPoint(start),
|
|
108
|
+
end: mapper.byteToPoint(end),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function syntaxClassForRole(role) {
|
|
112
|
+
switch (role) {
|
|
113
|
+
case "comment":
|
|
114
|
+
return "comment";
|
|
115
|
+
case "identifier":
|
|
116
|
+
return "variable";
|
|
117
|
+
case "keyword":
|
|
118
|
+
return "keyword";
|
|
119
|
+
case "number":
|
|
120
|
+
return "number";
|
|
121
|
+
case "operator":
|
|
122
|
+
return "operator";
|
|
123
|
+
case "punctuation":
|
|
124
|
+
return "punctuation";
|
|
125
|
+
case "string":
|
|
126
|
+
return "string";
|
|
127
|
+
case "typeIdentifier":
|
|
128
|
+
return "type";
|
|
129
|
+
default:
|
|
130
|
+
fail(`unknown Edict syntax role ${role}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function decodeSyntaxRecord(value, source, mapper) {
|
|
134
|
+
const spans = requireArray(value["spans"], "Edict syntax.spans").map((entry, index) => {
|
|
135
|
+
const record = requireRecord(entry, `Edict syntax.spans[${String(index)}]`);
|
|
136
|
+
return {
|
|
137
|
+
className: syntaxClassForRole(requireString(record["role"], `Edict syntax.spans[${String(index)}].role`)),
|
|
138
|
+
range: decodeByteRange(record["span"], `Edict syntax.spans[${String(index)}].span`, source, mapper),
|
|
139
|
+
text: requireString(record["lexeme"], `Edict syntax.spans[${String(index)}].lexeme`),
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
return { state: "available", value: { spans } };
|
|
143
|
+
}
|
|
144
|
+
function decodeDiagnosticsRecord(value, source, mapper) {
|
|
145
|
+
const items = requireArray(value["diagnostics"], "Edict diagnostics.diagnostics").map((entry, index) => {
|
|
146
|
+
const record = requireRecord(entry, `Edict diagnostics[${String(index)}]`);
|
|
147
|
+
const message = record["message"];
|
|
148
|
+
return {
|
|
149
|
+
stage: requireString(record["stage"], `Edict diagnostics[${String(index)}].stage`),
|
|
150
|
+
kind: requireString(record["kind"], `Edict diagnostics[${String(index)}].kind`),
|
|
151
|
+
severity: "error",
|
|
152
|
+
range: decodeByteRange(record["span"], `Edict diagnostics[${String(index)}].span`, source, mapper),
|
|
153
|
+
...(message !== undefined ? { message: requireString(message, `Edict diagnostics[${String(index)}].message`) } : {}),
|
|
154
|
+
};
|
|
155
|
+
});
|
|
156
|
+
return { items };
|
|
157
|
+
}
|
|
158
|
+
function decodeReason(value, label) {
|
|
159
|
+
return requireArray(value, label).map((entry, index) => asJsonObject(entry, `${label}[${String(index)}]`));
|
|
160
|
+
}
|
|
161
|
+
function decodeCoreRecord(value) {
|
|
162
|
+
const state = requireString(value["state"], "Edict core.state");
|
|
163
|
+
if (state === "available") {
|
|
164
|
+
return {
|
|
165
|
+
state,
|
|
166
|
+
value: {
|
|
167
|
+
digest: requireDigest(value["digest"], "Edict core.digest"),
|
|
168
|
+
review: asJsonObject(value["review"], "Edict core.review"),
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
if (state === "blocked") {
|
|
173
|
+
return { state, reason: decodeReason(value["reason"], "Edict core.reason") };
|
|
174
|
+
}
|
|
175
|
+
if (state === "failed") {
|
|
176
|
+
return { state, error: decodeFailure(value["error"], "Edict core.error") };
|
|
177
|
+
}
|
|
178
|
+
fail(`unknown Edict core state ${state}`);
|
|
179
|
+
}
|
|
180
|
+
function decodeFailure(value, label) {
|
|
181
|
+
const record = requireRecord(value, label);
|
|
182
|
+
const message = record["message"];
|
|
183
|
+
const failures = record["failures"];
|
|
184
|
+
return {
|
|
185
|
+
kind: requireString(record["kind"], `${label}.kind`),
|
|
186
|
+
...(message !== undefined ? { message: requireString(message, `${label}.message`) } : {}),
|
|
187
|
+
...(failures !== undefined ? { failures: decodeReason(failures, `${label}.failures`) } : {}),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
function decodeTargetIrRecord(value) {
|
|
191
|
+
const state = requireString(value["state"], "Edict targetIr.state");
|
|
192
|
+
if (state === "available") {
|
|
193
|
+
const target = requireRecord(value["target"], "Edict targetIr.target");
|
|
194
|
+
return {
|
|
195
|
+
state,
|
|
196
|
+
value: {
|
|
197
|
+
domain: requireString(value["domain"], "Edict targetIr.domain"),
|
|
198
|
+
target: {
|
|
199
|
+
coordinate: requireString(target["coordinate"], "Edict targetIr.target.coordinate"),
|
|
200
|
+
digest: requireDigest(target["digest"], "Edict targetIr.target.digest"),
|
|
201
|
+
},
|
|
202
|
+
digest: requireDigest(value["digest"], "Edict targetIr.digest"),
|
|
203
|
+
review: asJsonObject(value["review"], "Edict targetIr.review"),
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
if (state === "blocked") {
|
|
208
|
+
return { state, reason: decodeReason(value["reason"], "Edict targetIr.reason") };
|
|
209
|
+
}
|
|
210
|
+
if (state === "failed") {
|
|
211
|
+
return { state, error: decodeFailure(value["error"], "Edict targetIr.error") };
|
|
212
|
+
}
|
|
213
|
+
fail(`unknown Edict targetIr state ${state}`);
|
|
214
|
+
}
|
|
215
|
+
function decodeEchoReceiptRecord(value) {
|
|
216
|
+
const state = requireString(value["state"], "Edict echoReceipt.state");
|
|
217
|
+
if (value["receiptDigest"] !== undefined) {
|
|
218
|
+
fail("Edict echoReceipt.receiptDigest is not supported until canonical receipt bytes exist");
|
|
219
|
+
}
|
|
220
|
+
if (state === "available") {
|
|
221
|
+
const reason = value["reason"];
|
|
222
|
+
const reasonRecord = reason !== undefined
|
|
223
|
+
? requireRecord(reason, "Edict echoReceipt.reason")
|
|
224
|
+
: undefined;
|
|
225
|
+
const reasonKind = reasonRecord?.["kind"];
|
|
226
|
+
const reasonPayload = reasonRecord?.["payload"];
|
|
227
|
+
const targetIrDomain = value["targetIrDomain"];
|
|
228
|
+
return {
|
|
229
|
+
state,
|
|
230
|
+
value: {
|
|
231
|
+
outcomeKind: requireString(value["outcomeKind"], "Edict echoReceipt.outcomeKind"),
|
|
232
|
+
targetIrDigest: requireDigest(value["targetIrDigest"], "Edict echoReceipt.targetIrDigest"),
|
|
233
|
+
...(targetIrDomain !== undefined
|
|
234
|
+
? { targetIrDomain: requireString(targetIrDomain, "Edict echoReceipt.targetIrDomain") }
|
|
235
|
+
: {}),
|
|
236
|
+
...(reasonKind !== undefined
|
|
237
|
+
? { reasonKind: requireString(reasonKind, "Edict echoReceipt.reason.kind") }
|
|
238
|
+
: {}),
|
|
239
|
+
...(reasonPayload !== undefined
|
|
240
|
+
? { reasonPayload: asJsonObject(reasonPayload, "Edict echoReceipt.reason.payload") }
|
|
241
|
+
: {}),
|
|
242
|
+
receipt: asJsonObject(value["receipt"], "Edict echoReceipt.receipt"),
|
|
243
|
+
},
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
if (state === "blocked") {
|
|
247
|
+
return { state, reason: decodeReason(value["reason"], "Edict echoReceipt.reason") };
|
|
248
|
+
}
|
|
249
|
+
if (state === "failed") {
|
|
250
|
+
return { state, error: decodeFailure(value["error"], "Edict echoReceipt.error") };
|
|
251
|
+
}
|
|
252
|
+
fail(`unknown Edict echoReceipt state ${state}`);
|
|
253
|
+
}
|
|
254
|
+
function decodeStatusRecord(value) {
|
|
255
|
+
const status = requireString(value["status"], "Edict status.status");
|
|
256
|
+
if (status !== "ok" && status !== "error") {
|
|
257
|
+
fail(`unknown Edict status ${status}`);
|
|
258
|
+
}
|
|
259
|
+
const exitCode = requireInteger(value["exitCode"], "Edict status.exitCode");
|
|
260
|
+
if (exitCode !== 0 && exitCode !== 1 && exitCode !== 2) {
|
|
261
|
+
fail("Edict status.exitCode must be 0, 1, or 2");
|
|
262
|
+
}
|
|
263
|
+
const checked = requireInteger(value["checked"], "Edict status.checked");
|
|
264
|
+
const errors = requireInteger(value["errors"], "Edict status.errors");
|
|
265
|
+
if (checked < 0 || errors < 0) {
|
|
266
|
+
fail("Edict status.checked and Edict status.errors must be non-negative");
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
status,
|
|
270
|
+
checked,
|
|
271
|
+
errors,
|
|
272
|
+
exitCode,
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
export function isEdictPath(filePath) {
|
|
276
|
+
return filePath.trim().toLowerCase().endsWith(".edict");
|
|
277
|
+
}
|
|
278
|
+
export function projectEdictJsonlRecords(request, records) {
|
|
279
|
+
const mapper = makeUtf8ByteMapper(request.content);
|
|
280
|
+
let syntax = { state: "not_requested" };
|
|
281
|
+
let diagnostics = { items: [] };
|
|
282
|
+
let diagnosticsSeen = false;
|
|
283
|
+
let core = { state: "not_requested" };
|
|
284
|
+
let targetIr = { state: "not_requested" };
|
|
285
|
+
let echoReceipt = { state: "not_requested" };
|
|
286
|
+
let status;
|
|
287
|
+
for (const entry of records) {
|
|
288
|
+
const record = requireRecord(entry, "Edict JSONL record");
|
|
289
|
+
const schema = requireString(record["schema"], "Edict JSONL record.schema");
|
|
290
|
+
switch (schema) {
|
|
291
|
+
case "edict.projection.syntax/v1":
|
|
292
|
+
requireEnvelope(record, "syntax", "Edict syntax");
|
|
293
|
+
requireInputName(record, request.name, "Edict syntax");
|
|
294
|
+
syntax = decodeSyntaxRecord(record, request.content, mapper);
|
|
295
|
+
break;
|
|
296
|
+
case "edict.projection.diagnostics/v1":
|
|
297
|
+
requireEnvelope(record, "diagnostics", "Edict diagnostics");
|
|
298
|
+
requireInputName(record, request.name, "Edict diagnostics");
|
|
299
|
+
diagnostics = decodeDiagnosticsRecord(record, request.content, mapper);
|
|
300
|
+
diagnosticsSeen = true;
|
|
301
|
+
break;
|
|
302
|
+
case "edict.projection.core/v1":
|
|
303
|
+
requireEnvelope(record, "core", "Edict core");
|
|
304
|
+
requireInputName(record, request.name, "Edict core");
|
|
305
|
+
core = decodeCoreRecord(record);
|
|
306
|
+
break;
|
|
307
|
+
case "edict.projection.target-ir/v1":
|
|
308
|
+
requireEnvelope(record, "targetIr", "Edict targetIr");
|
|
309
|
+
requireInputName(record, request.name, "Edict targetIr");
|
|
310
|
+
targetIr = decodeTargetIrRecord(record);
|
|
311
|
+
break;
|
|
312
|
+
case "edict.projection.echo-receipt/v1":
|
|
313
|
+
requireEnvelope(record, "echoReceipt", "Edict echoReceipt");
|
|
314
|
+
requireInputName(record, request.name, "Edict echoReceipt");
|
|
315
|
+
echoReceipt = decodeEchoReceiptRecord(record);
|
|
316
|
+
break;
|
|
317
|
+
case "edict.cli.event/v1":
|
|
318
|
+
requireEnvelope(record, "status", "Edict status");
|
|
319
|
+
status = decodeStatusRecord(record);
|
|
320
|
+
break;
|
|
321
|
+
default:
|
|
322
|
+
fail(`unknown Edict JSONL schema ${schema}`);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (status === undefined) {
|
|
326
|
+
fail("Edict JSONL stream is missing final status record");
|
|
327
|
+
}
|
|
328
|
+
if (request.emit.includes("diagnostics") && !diagnosticsSeen) {
|
|
329
|
+
diagnostics = {
|
|
330
|
+
items: [
|
|
331
|
+
{
|
|
332
|
+
stage: "projection",
|
|
333
|
+
kind: "missing_projection_record",
|
|
334
|
+
severity: "error",
|
|
335
|
+
message: "Edict did not emit a requested diagnostics projection record",
|
|
336
|
+
range: {
|
|
337
|
+
start: mapper.byteToPoint(0),
|
|
338
|
+
end: mapper.byteToPoint(0),
|
|
339
|
+
},
|
|
340
|
+
},
|
|
341
|
+
],
|
|
342
|
+
};
|
|
343
|
+
}
|
|
344
|
+
if (request.emit.includes("syntax") && syntax.state === "not_requested") {
|
|
345
|
+
syntax = {
|
|
346
|
+
state: "failed",
|
|
347
|
+
error: {
|
|
348
|
+
kind: "missing_projection_record",
|
|
349
|
+
message: "Edict did not emit a requested syntax projection record",
|
|
350
|
+
},
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
if ((request.emit.includes("core") || request.emit.includes("digests"))
|
|
354
|
+
&& core.state === "not_requested") {
|
|
355
|
+
core = {
|
|
356
|
+
state: "failed",
|
|
357
|
+
error: {
|
|
358
|
+
kind: "missing_projection_record",
|
|
359
|
+
message: "Edict did not emit a requested Core projection record",
|
|
360
|
+
},
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
if ((request.emit.includes("targetIr") || request.emit.includes("digests"))
|
|
364
|
+
&& targetIr.state === "not_requested") {
|
|
365
|
+
targetIr = {
|
|
366
|
+
state: "failed",
|
|
367
|
+
error: {
|
|
368
|
+
kind: "missing_projection_record",
|
|
369
|
+
message: "Edict did not emit a requested Target IR projection record",
|
|
370
|
+
},
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
if (request.emit.includes("receipt") && echoReceipt.state === "not_requested") {
|
|
374
|
+
echoReceipt = {
|
|
375
|
+
state: "failed",
|
|
376
|
+
error: {
|
|
377
|
+
kind: "missing_projection_record",
|
|
378
|
+
message: "Edict did not emit a requested Echo receipt projection record",
|
|
379
|
+
},
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
return {
|
|
383
|
+
language: "edict",
|
|
384
|
+
name: request.name,
|
|
385
|
+
basis: request.basis ?? null,
|
|
386
|
+
syntax,
|
|
387
|
+
diagnostics,
|
|
388
|
+
core,
|
|
389
|
+
targetIr,
|
|
390
|
+
echoReceipt,
|
|
391
|
+
status,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=edict-projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edict-projection.js","sourceRoot":"","sources":["../../src/operations/edict-projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export interface ProjectionProfileExtensionInput {
|
|
2
|
+
readonly coordinate: string;
|
|
3
|
+
readonly digest: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ProjectionProfileInput {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly language: string;
|
|
8
|
+
readonly provider: string;
|
|
9
|
+
readonly extensions: readonly ProjectionProfileExtensionInput[];
|
|
10
|
+
readonly options?: Readonly<Record<string, unknown>> | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface ProjectionRouteInput {
|
|
13
|
+
readonly profileId: string;
|
|
14
|
+
readonly include: readonly string[];
|
|
15
|
+
readonly exclude?: readonly string[] | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface ProjectionExtensionFallbackInput {
|
|
18
|
+
readonly language: string;
|
|
19
|
+
readonly profileId: string;
|
|
20
|
+
readonly fileExtensions: readonly string[];
|
|
21
|
+
}
|
|
22
|
+
export interface ProjectionProfileResolverConfig {
|
|
23
|
+
readonly profiles: readonly ProjectionProfileInput[];
|
|
24
|
+
readonly routes?: readonly ProjectionRouteInput[] | undefined;
|
|
25
|
+
readonly extensionFallbacks?: readonly ProjectionExtensionFallbackInput[] | undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface ProjectionProfileExtension {
|
|
28
|
+
readonly coordinate: string;
|
|
29
|
+
readonly digest: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ResolvedAuthorityContext {
|
|
32
|
+
readonly language: string;
|
|
33
|
+
readonly profileId: string;
|
|
34
|
+
readonly profileDigest: string;
|
|
35
|
+
readonly routingDigest?: string | undefined;
|
|
36
|
+
readonly provider: string;
|
|
37
|
+
readonly extensions: readonly ProjectionProfileExtension[];
|
|
38
|
+
readonly resolutionSource: "explicit" | "project_config" | "extension_fallback";
|
|
39
|
+
}
|
|
40
|
+
export type ProjectionRoutingFailureKind = "no_provider" | "unknown_profile" | "ambiguous_profile" | "profile_config_invalid";
|
|
41
|
+
export interface ProjectionRoutingFailure {
|
|
42
|
+
readonly kind: ProjectionRoutingFailureKind;
|
|
43
|
+
readonly message: string;
|
|
44
|
+
readonly path?: string | undefined;
|
|
45
|
+
readonly profileId?: string | undefined;
|
|
46
|
+
readonly matchingProfileIds?: readonly string[] | undefined;
|
|
47
|
+
}
|
|
48
|
+
export type ProjectionAuthorityResolution = {
|
|
49
|
+
readonly state: "resolved";
|
|
50
|
+
readonly authority: ResolvedAuthorityContext;
|
|
51
|
+
} | {
|
|
52
|
+
readonly state: "failed";
|
|
53
|
+
readonly failure: ProjectionRoutingFailure;
|
|
54
|
+
};
|
|
55
|
+
export interface ProjectionProfileResolver {
|
|
56
|
+
resolve(opts: {
|
|
57
|
+
readonly path: string;
|
|
58
|
+
readonly profile?: string | null | undefined;
|
|
59
|
+
readonly language?: string | null | undefined;
|
|
60
|
+
}): ProjectionAuthorityResolution;
|
|
61
|
+
}
|
|
62
|
+
export declare class ProjectionProfileResolverError extends Error {
|
|
63
|
+
readonly kind: "profile_config_invalid";
|
|
64
|
+
constructor(message: string);
|
|
65
|
+
}
|
|
66
|
+
export declare function createProjectionProfileResolver(config: ProjectionProfileResolverConfig): ProjectionProfileResolver;
|
|
67
|
+
//# sourceMappingURL=projection-profile-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection-profile-resolver.d.ts","sourceRoot":"","sources":["../../src/operations/projection-profile-resolver.ts"],"names":[],"mappings":"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"}
|