@plurnk/plurnk-contracts 1.10.0 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -3
- package/SPEC.md +149 -75
- package/dist/plurnk.gemma.gbnf +4 -3
- package/dist/plurnk.qwen.gbnf +4 -3
- package/dist/schema/CapabilityDescriptor.json +23 -0
- package/dist/schema/CapabilityPolicy.json +18 -0
- package/dist/schema/CapabilityProjection.json +16 -0
- package/dist/schema/CapabilitySelector.json +24 -0
- package/dist/schema/ClientStatement.json +10 -2
- package/dist/schema/LoopPolicy.json +13 -0
- package/dist/schema/MatcherBody.json +8 -8
- package/dist/schema/ParsedPath.json +1 -11
- package/dist/schema/PlurnkStatement.json +76 -34
- package/dist/schema/ProblemProjection.json +38 -0
- package/dist/schema/ProposalProjection.json +2 -2
- package/dist/schema/ResourceSelection.json +12 -2
- package/dist/src/ApplicationPort.d.ts +9 -40
- package/dist/src/ApplicationPort.d.ts.map +1 -1
- package/dist/src/AstBuilder.d.ts +1 -7
- package/dist/src/AstBuilder.d.ts.map +1 -1
- package/dist/src/AstBuilder.js +127 -102
- package/dist/src/AstBuilder.js.map +1 -1
- package/dist/src/CapabilityAdmission.d.ts +9 -0
- package/dist/src/CapabilityAdmission.d.ts.map +1 -0
- package/dist/src/CapabilityAdmission.js +96 -0
- package/dist/src/CapabilityAdmission.js.map +1 -0
- package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -1
- package/dist/src/PlurnkErrorStrategy.js +51 -1
- package/dist/src/PlurnkErrorStrategy.js.map +1 -1
- package/dist/src/PlurnkParser.d.ts +4 -1
- package/dist/src/PlurnkParser.d.ts.map +1 -1
- package/dist/src/PlurnkParser.js +86 -21
- package/dist/src/PlurnkParser.js.map +1 -1
- package/dist/src/Problems.d.ts +6 -1
- package/dist/src/Problems.d.ts.map +1 -1
- package/dist/src/Problems.js +34 -0
- package/dist/src/Problems.js.map +1 -1
- package/dist/src/Validator.d.ts +17 -4
- package/dist/src/Validator.d.ts.map +1 -1
- package/dist/src/Validator.js +65 -10
- package/dist/src/Validator.js.map +1 -1
- package/dist/src/generated/plurnkLexer.d.ts +52 -40
- package/dist/src/generated/plurnkLexer.d.ts.map +1 -1
- package/dist/src/generated/plurnkLexer.js +519 -431
- package/dist/src/generated/plurnkLexer.js.map +1 -1
- package/dist/src/generated/plurnkParser.d.ts +166 -92
- package/dist/src/generated/plurnkParser.d.ts.map +1 -1
- package/dist/src/generated/plurnkParser.js +1318 -705
- package/dist/src/generated/plurnkParser.js.map +1 -1
- package/dist/src/generated/plurnkParserVisitor.d.ts +49 -0
- package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -1
- package/dist/src/generated/plurnkParserVisitor.js +42 -0
- package/dist/src/generated/plurnkParserVisitor.js.map +1 -1
- package/dist/src/index.d.ts +4 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/types.d.ts +3 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.generated.d.ts +140 -34
- package/dist/src/types.generated.d.ts.map +1 -1
- package/dist/src/types.js +4 -6
- package/dist/src/types.js.map +1 -1
- package/package.json +2 -2
- package/plurnk.md +58 -44
- package/dist/schema/LoopFlags.json +0 -16
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientDisplayCapabilities, ClientInteractionProjection, ClientInteractionResolution, EntryReadResult, JsonSchema,
|
|
1
|
+
import type { CapabilityPolicy, CapabilityProjection, ClientDisplayCapabilities, ClientInteractionProjection, ClientInteractionResolution, EntryReadResult, JsonSchema, LoopPolicy, ModelCatalogPage, ModelCatalogQuery, ModelRoute, OperationResult, PlurnkStatement, ProposalProjection, ReasoningPolicy } from "./types.ts";
|
|
2
2
|
export type ProposalDecision = "accept" | "reject" | "cancel";
|
|
3
3
|
export interface ProposalResolution {
|
|
4
4
|
readonly decision: ProposalDecision;
|
|
@@ -78,7 +78,7 @@ export interface ApplicationPort {
|
|
|
78
78
|
pendingClientInteractions(workspaceId: number): Promise<ClientInteractionProjection[]>;
|
|
79
79
|
resolveClientInteraction(interactionId: number, resolution: ClientInteractionResolution): Promise<void>;
|
|
80
80
|
ensureModelWorker(workspaceId: number, settings?: {
|
|
81
|
-
readonly
|
|
81
|
+
readonly capabilities?: CapabilityPolicy;
|
|
82
82
|
}): Promise<number>;
|
|
83
83
|
runLoop(args: {
|
|
84
84
|
readonly workspaceId: number;
|
|
@@ -86,7 +86,7 @@ export interface ApplicationPort {
|
|
|
86
86
|
readonly prompt: string;
|
|
87
87
|
readonly source?: string;
|
|
88
88
|
readonly maxTurns?: number;
|
|
89
|
-
readonly
|
|
89
|
+
readonly policy?: Partial<LoopPolicy>;
|
|
90
90
|
readonly openPaths?: string[];
|
|
91
91
|
readonly selector?: string;
|
|
92
92
|
readonly childSelector?: string | null;
|
|
@@ -162,24 +162,6 @@ export interface ApplicationPort {
|
|
|
162
162
|
readonly id: number;
|
|
163
163
|
readonly name: string;
|
|
164
164
|
}>;
|
|
165
|
-
constrain(workspaceId: number, effect: string, glob: string): Promise<{
|
|
166
|
-
readonly effect: string;
|
|
167
|
-
readonly glob: string;
|
|
168
|
-
readonly source: "explicit";
|
|
169
|
-
}>;
|
|
170
|
-
unconstrain(workspaceId: number, effect: string, glob: string): Promise<{
|
|
171
|
-
readonly effect: string;
|
|
172
|
-
readonly glob: string;
|
|
173
|
-
}>;
|
|
174
|
-
listConstraints(workspaceId: number): Promise<Array<{
|
|
175
|
-
readonly effect: string;
|
|
176
|
-
readonly glob: string;
|
|
177
|
-
readonly source: "explicit" | "create";
|
|
178
|
-
}>> | Array<{
|
|
179
|
-
readonly effect: string;
|
|
180
|
-
readonly glob: string;
|
|
181
|
-
readonly source: "explicit" | "create";
|
|
182
|
-
}>;
|
|
183
165
|
workspaceDerivationStatus(workspaceId: number): {
|
|
184
166
|
readonly phase: "preparing" | "indexing" | "complete" | "failed";
|
|
185
167
|
readonly completed: number;
|
|
@@ -188,13 +170,6 @@ export interface ApplicationPort {
|
|
|
188
170
|
readonly message: string;
|
|
189
171
|
readonly level: "info" | "error";
|
|
190
172
|
} | null;
|
|
191
|
-
listMembers(workspaceId: number): Promise<{
|
|
192
|
-
readonly members: Array<{
|
|
193
|
-
readonly path: string;
|
|
194
|
-
readonly effect: string;
|
|
195
|
-
}>;
|
|
196
|
-
readonly hidden: string[];
|
|
197
|
-
}>;
|
|
198
173
|
look(args: {
|
|
199
174
|
readonly workspaceId: number;
|
|
200
175
|
readonly workerId: number;
|
|
@@ -221,7 +196,7 @@ export interface ApplicationPort {
|
|
|
221
196
|
readonly workspaceId: number;
|
|
222
197
|
readonly name?: string;
|
|
223
198
|
readonly settings?: {
|
|
224
|
-
readonly
|
|
199
|
+
readonly capabilities?: CapabilityPolicy;
|
|
225
200
|
};
|
|
226
201
|
}): Promise<{
|
|
227
202
|
readonly workerId: number;
|
|
@@ -259,20 +234,14 @@ export interface ApplicationPort {
|
|
|
259
234
|
readonly policy: ReasoningPolicy;
|
|
260
235
|
readonly supportedPolicies: readonly ReasoningPolicy[];
|
|
261
236
|
}>;
|
|
262
|
-
|
|
237
|
+
readWorkerCapabilities(args: {
|
|
263
238
|
readonly workspaceId: number;
|
|
264
239
|
readonly workerId: number;
|
|
265
|
-
}): Promise<
|
|
266
|
-
|
|
267
|
-
}>;
|
|
268
|
-
setWorkerSettings(args: {
|
|
240
|
+
}): Promise<CapabilityProjection>;
|
|
241
|
+
setWorkerCapabilities(args: {
|
|
269
242
|
readonly workspaceId: number;
|
|
270
243
|
readonly workerId: number;
|
|
271
|
-
readonly
|
|
272
|
-
|
|
273
|
-
};
|
|
274
|
-
}): Promise<{
|
|
275
|
-
readonly requestUserInput: boolean;
|
|
276
|
-
}>;
|
|
244
|
+
readonly policy: CapabilityPolicy;
|
|
245
|
+
}): Promise<CapabilityProjection>;
|
|
277
246
|
}
|
|
278
247
|
//# sourceMappingURL=ApplicationPort.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApplicationPort.d.ts","sourceRoot":"","sources":["../../src/ApplicationPort.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ApplicationPort.d.ts","sourceRoot":"","sources":["../../src/ApplicationPort.ts"],"names":[],"mappings":"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"}
|
package/dist/src/AstBuilder.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ClientStatement,
|
|
1
|
+
import type { ClientStatement, ParsedPath, PlurnkStatement, Position } from "./types.ts";
|
|
2
2
|
import type { ClientStatementContext, StatementContext, MidStatementContext } from "./generated/plurnkParser.ts";
|
|
3
3
|
import { PlanStatementContext, SendStatementContext } from "./generated/plurnkParser.ts";
|
|
4
4
|
import PlurnkParseError from "./PlurnkParseError.ts";
|
|
@@ -10,12 +10,6 @@ export default class AstBuilder {
|
|
|
10
10
|
static takeAdvisories(): PlurnkParseError[];
|
|
11
11
|
static build(ctx: StatementContext | MidStatementContext | PlanStatementContext | SendStatementContext): PlurnkStatement;
|
|
12
12
|
static buildClient(ctx: ClientStatementContext): ClientStatement;
|
|
13
|
-
/**
|
|
14
|
-
* Parse a COPY/MOVE body into its destination target and optional trailing
|
|
15
|
-
* scope. The scope is adjacent to the destination it selects:
|
|
16
|
-
* `destination.txt<12,5,12,5>`.
|
|
17
|
-
*/
|
|
18
|
-
static parseResourceSelection(raw: string, pos?: Position): ResourceSelection | null;
|
|
19
13
|
/**
|
|
20
14
|
* Apply target-slot decomposition without round-tripping through a statement.
|
|
21
15
|
* Returns null for empty input and throws PlurnkParseError when a scheme URL
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AstBuilder.d.ts","sourceRoot":"","sources":["../../src/AstBuilder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAIR,eAAe,
|
|
1
|
+
{"version":3,"file":"AstBuilder.d.ts","sourceRoot":"","sources":["../../src/AstBuilder.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAIR,eAAe,EAcf,UAAU,EAGV,eAAe,EACf,QAAQ,EAOX,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAGR,sBAAsB,EAgBtB,gBAAgB,EAChB,mBAAmB,EAGtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAKH,oBAAoB,EACpB,oBAAoB,EAIvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AAMrD,OAAO,QAAQ,OAAO,CAAC;IACnB,SAAgB,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;CACtD;AAWD,MAAM,CAAC,OAAO,OAAO,UAAU;;IAK3B,MAAM,CAAC,cAAc,IAAI,gBAAgB,EAAE,CAI1C;IAuBD,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,gBAAgB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,GAAG,eAAe,CA6BvH;IA0BD,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,sBAAsB,GAAG,eAAe,CAK/D;IAghBD;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,QAAiC,GAAG,UAAU,GAAG,IAAI,CA+BvF;CAsJJ"}
|
package/dist/src/AstBuilder.js
CHANGED
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import { ParserRuleContext, TerminalNode } from "antlr4ng";
|
|
3
3
|
import * as xpath from "xpath";
|
|
4
4
|
import { JSONPathEnvironment } from "json-p3/dist/json-p3.esm.js";
|
|
5
|
-
import {
|
|
6
|
-
import { BodyContext, IdentSignalContext, LineMarkerContext, PlanStatementContext, SendStatementContext, TargetContext, TagSignalContext, BranchSignalContext, } from "./generated/plurnkParser.js";
|
|
5
|
+
import { BodyContext, IdentSignalContext, LineMarkerContext, MetadataContext, PlanStatementContext, SendStatementContext, TargetContext, TagSignalContext, BranchSignalContext, } from "./generated/plurnkParser.js";
|
|
7
6
|
import { plurnkLexer } from "./generated/plurnkLexer.js";
|
|
8
7
|
import PlurnkParseError from "./PlurnkParseError.js";
|
|
9
8
|
import PathSyntax from "./PathSyntax.js";
|
|
@@ -18,25 +17,21 @@ export default class AstBuilder {
|
|
|
18
17
|
AstBuilder.#advisories = [];
|
|
19
18
|
return taken;
|
|
20
19
|
}
|
|
21
|
-
// A body that is solely an HTML comment can never be a matcher
|
|
22
|
-
//
|
|
20
|
+
// A body that is solely an HTML comment can never be a matcher. Preserve it
|
|
21
|
+
// as the operation annotation and report only that deterministic normalization.
|
|
23
22
|
static #annotationBody(op, delimiter, annotation, raw, position) {
|
|
24
23
|
if (raw === null)
|
|
25
24
|
return { annotation, raw };
|
|
26
25
|
const comment = /^\s*<!--([\s\S]*?)-->\s*$/u.exec(raw);
|
|
27
26
|
if (comment === null)
|
|
28
27
|
return { annotation, raw };
|
|
29
|
-
AstBuilder.#advisories.push(new PlurnkParseError(position.line, position.column, "parser",
|
|
28
|
+
AstBuilder.#advisories.push(new PlurnkParseError(position.line, position.column, "parser", `The ${op} body contained only an HTML comment; it was applied as the operation annotation.`, "warning"));
|
|
30
29
|
return { annotation: annotation ?? (comment[1] ?? "").trim(), raw: null };
|
|
31
30
|
}
|
|
32
31
|
static #SCHEME_PATTERN = /^[a-z][a-z0-9+.-]*:\/\//i;
|
|
33
|
-
static #RESOURCE_SELECTION_TAIL = /(<-?\d+(?:\.\d+)?(?:(?:-|, ?)-?\d+(?:\.\d+)?)*>)(:*)$/;
|
|
34
|
-
static #ANCHORED_RESOURCE_SELECTION_TAIL = new RegExp(String.raw `(<(?:-?\d+(?:\.\d+)?|@[0-9A-Za-z]{5})(?:, ?(?:-?\d+(?:\.\d+)?|@[0-9A-Za-z]{5}))*>)` + String.raw `(:*)$`);
|
|
35
|
-
static #COMBINED_RESOURCE_SELECTION_TAIL = new RegExp(String.raw `(<(?:-?\d+(?:\.\d+)?|@[0-9A-Za-z]{5}|@[0-9A-Za-z]{5}(?::| )[1-9]\d*)`
|
|
36
|
-
+ String.raw `(?:, ?(?:-?\d+(?:\.\d+)?|@[0-9A-Za-z]{5}|@[0-9A-Za-z]{5}(?::| )[1-9]\d*))*>)$`);
|
|
37
|
-
static #COMBINED_LINE_COORD = /@[0-9A-Za-z]{5}(?::| )[1-9]\d*/;
|
|
38
32
|
// Compile-only RFC 9535 admission using the runtime's JSONPath engine. {§matcher-prefix-claims}
|
|
39
33
|
static #JSONPATH = new JSONPathEnvironment();
|
|
34
|
+
static #GRAPH_MATCHER = /^&[<>]?[^\s<>]\S*$/u;
|
|
40
35
|
static build(ctx) {
|
|
41
36
|
// The strict turn root attaches the leading PLAN and the terminal SEND as direct
|
|
42
37
|
// children (not wrapped in `statement`), so dispatch those by type first.
|
|
@@ -245,29 +240,37 @@ export default class AstBuilder {
|
|
|
245
240
|
}
|
|
246
241
|
static #buildCopy(ctx) {
|
|
247
242
|
const position = AstBuilder.#positionOf(ctx);
|
|
248
|
-
const
|
|
249
|
-
AstBuilder.#
|
|
250
|
-
|
|
243
|
+
const modifier = ctx.transferModifiers();
|
|
244
|
+
const signal = AstBuilder.#tagsFromSignal(AstBuilder.#findFirst(modifier, TagSignalContext));
|
|
245
|
+
AstBuilder.#assertAppliedTags(signal, position);
|
|
246
|
+
const selections = modifier.resourceSelection();
|
|
247
|
+
if (selections.length !== 2)
|
|
248
|
+
throw new Error("COPY grammar did not produce two resource selections");
|
|
251
249
|
return {
|
|
252
250
|
op: "COPY",
|
|
253
251
|
delimiter: AstBuilder.#splitDelimiter(ctx.OPEN_COPY().getText(), "COPY"),
|
|
254
252
|
annotation: AstBuilder.#annotationOf(ctx),
|
|
255
|
-
|
|
256
|
-
|
|
253
|
+
signal,
|
|
254
|
+
source: AstBuilder.#resourceSelectionFromCtx(selections[0], position),
|
|
255
|
+
destination: AstBuilder.#resourceSelectionFromCtx(selections[1], position),
|
|
257
256
|
position,
|
|
258
257
|
};
|
|
259
258
|
}
|
|
260
259
|
static #buildMove(ctx) {
|
|
261
260
|
const position = AstBuilder.#positionOf(ctx);
|
|
262
|
-
const
|
|
263
|
-
AstBuilder.#
|
|
264
|
-
|
|
261
|
+
const modifier = ctx.transferModifiers();
|
|
262
|
+
const signal = AstBuilder.#tagsFromSignal(AstBuilder.#findFirst(modifier, TagSignalContext));
|
|
263
|
+
AstBuilder.#assertAppliedTags(signal, position);
|
|
264
|
+
const selections = modifier.resourceSelection();
|
|
265
|
+
if (selections.length !== 2)
|
|
266
|
+
throw new Error("MOVE grammar did not produce two resource selections");
|
|
265
267
|
return {
|
|
266
268
|
op: "MOVE",
|
|
267
269
|
delimiter: AstBuilder.#splitDelimiter(ctx.OPEN_MOVE().getText(), "MOVE"),
|
|
268
270
|
annotation: AstBuilder.#annotationOf(ctx),
|
|
269
|
-
|
|
270
|
-
|
|
271
|
+
signal,
|
|
272
|
+
source: AstBuilder.#resourceSelectionFromCtx(selections[0], position),
|
|
273
|
+
destination: AstBuilder.#resourceSelectionFromCtx(selections[1], position),
|
|
271
274
|
position,
|
|
272
275
|
};
|
|
273
276
|
}
|
|
@@ -310,6 +313,7 @@ export default class AstBuilder {
|
|
|
310
313
|
annotation: AstBuilder.#annotationOf(ctx),
|
|
311
314
|
signal,
|
|
312
315
|
target: null,
|
|
316
|
+
metadata: null,
|
|
313
317
|
lineMarker: null,
|
|
314
318
|
body: AstBuilder.#requiredBodyTextOf(ctx),
|
|
315
319
|
position,
|
|
@@ -318,15 +322,34 @@ export default class AstBuilder {
|
|
|
318
322
|
static #buildPlan(ctx) {
|
|
319
323
|
const position = AstBuilder.#positionOf(ctx);
|
|
320
324
|
const slots = AstBuilder.#extractTagSlots(ctx.tagOpModifiers(), position);
|
|
325
|
+
const rejected = [
|
|
326
|
+
slots.signal !== null ? "[signal]" : null,
|
|
327
|
+
slots.target !== null ? "(path)" : null,
|
|
328
|
+
slots.metadata !== null ? "{metadata}" : null,
|
|
329
|
+
slots.lineMarker !== null ? "<scope>" : null,
|
|
330
|
+
].filter((slot) => slot !== null);
|
|
331
|
+
if (rejected.length > 0) {
|
|
332
|
+
throw new PlurnkParseError(position.line, position.column, "visitor", `PLAN does not accept ${AstBuilder.#joinTerms(rejected)}.`);
|
|
333
|
+
}
|
|
321
334
|
return {
|
|
322
335
|
op: "PLAN",
|
|
323
336
|
delimiter: AstBuilder.#splitDelimiter(ctx.OPEN_PLAN().getText(), "PLAN"),
|
|
324
337
|
annotation: AstBuilder.#annotationOf(ctx),
|
|
325
|
-
|
|
338
|
+
signal: null,
|
|
339
|
+
target: null,
|
|
340
|
+
metadata: null,
|
|
341
|
+
lineMarker: null,
|
|
326
342
|
body: PlanValue.admit(AstBuilder.#requiredBodyTextOf(ctx)),
|
|
327
343
|
position,
|
|
328
344
|
};
|
|
329
345
|
}
|
|
346
|
+
static #joinTerms(terms) {
|
|
347
|
+
if (terms.length < 2)
|
|
348
|
+
return terms[0] ?? "";
|
|
349
|
+
if (terms.length === 2)
|
|
350
|
+
return `${terms[0]} and ${terms[1]}`;
|
|
351
|
+
return `${terms.slice(0, -1).join(", ")}, and ${terms.at(-1)}`;
|
|
352
|
+
}
|
|
330
353
|
static #buildKill(ctx) {
|
|
331
354
|
const position = AstBuilder.#positionOf(ctx);
|
|
332
355
|
const slots = AstBuilder.#extractIntSlots(ctx, position);
|
|
@@ -371,12 +394,14 @@ export default class AstBuilder {
|
|
|
371
394
|
return {
|
|
372
395
|
signal,
|
|
373
396
|
target: AstBuilder.#targetFromCtx(AstBuilder.#findFirst(ctx, TargetContext), pos),
|
|
397
|
+
metadata: AstBuilder.#metadataFromCtx(ctx),
|
|
374
398
|
};
|
|
375
399
|
}
|
|
376
400
|
static #extractTagSlots(modCtx, pos) {
|
|
377
401
|
return {
|
|
378
402
|
signal: AstBuilder.#tagsFromSignal(AstBuilder.#findFirst(modCtx, TagSignalContext)),
|
|
379
403
|
target: AstBuilder.#targetFromCtx(AstBuilder.#findFirst(modCtx, TargetContext), pos),
|
|
404
|
+
metadata: AstBuilder.#metadataFromCtx(modCtx),
|
|
380
405
|
lineMarker: AstBuilder.#lineMarkerFromCtx(AstBuilder.#findFirst(modCtx, LineMarkerContext)),
|
|
381
406
|
};
|
|
382
407
|
}
|
|
@@ -384,6 +409,7 @@ export default class AstBuilder {
|
|
|
384
409
|
return {
|
|
385
410
|
signal: AstBuilder.#tagsFromSignal(AstBuilder.#findFirst(modCtx, TagSignalContext)),
|
|
386
411
|
target: AstBuilder.#targetFromCtx(AstBuilder.#findFirst(modCtx, TargetContext), pos),
|
|
412
|
+
metadata: AstBuilder.#metadataFromCtx(modCtx),
|
|
387
413
|
lineMarker: AstBuilder.#textLineMarkerFromCtx(AstBuilder.#findFirst(modCtx, LineMarkerContext)),
|
|
388
414
|
};
|
|
389
415
|
}
|
|
@@ -391,6 +417,7 @@ export default class AstBuilder {
|
|
|
391
417
|
return {
|
|
392
418
|
signal: AstBuilder.#tagsFromSignal(AstBuilder.#findFirst(modCtx, TagSignalContext)),
|
|
393
419
|
target: AstBuilder.#targetFromCtx(AstBuilder.#findFirst(modCtx, TargetContext), pos),
|
|
420
|
+
metadata: AstBuilder.#metadataFromCtx(modCtx),
|
|
394
421
|
lineMarker: AstBuilder.#textLineMarkerFromCtx(AstBuilder.#findFirst(modCtx, LineMarkerContext)),
|
|
395
422
|
};
|
|
396
423
|
}
|
|
@@ -403,6 +430,7 @@ export default class AstBuilder {
|
|
|
403
430
|
return {
|
|
404
431
|
signal: sig !== null ? Number.parseInt(sig, 10) : null,
|
|
405
432
|
target: AstBuilder.#targetFromCtx(AstBuilder.#findFirst(ctx, TargetContext), pos),
|
|
433
|
+
metadata: AstBuilder.#metadataFromCtx(ctx),
|
|
406
434
|
};
|
|
407
435
|
}
|
|
408
436
|
// Depth-first search for the first terminal of `tokenType`; returns its text or null.
|
|
@@ -437,6 +465,7 @@ export default class AstBuilder {
|
|
|
437
465
|
signal: identNode !== null ? identNode.getText() : null,
|
|
438
466
|
tags,
|
|
439
467
|
target: AstBuilder.#targetFromCtx(once(TargetContext, "one `(target)`"), pos),
|
|
468
|
+
metadata: AstBuilder.#metadataFromCtx(modCtx),
|
|
440
469
|
lineMarker: AstBuilder.#lineMarkerFromCtx(once(LineMarkerContext, "one `<scope>`")),
|
|
441
470
|
};
|
|
442
471
|
}
|
|
@@ -496,6 +525,22 @@ export default class AstBuilder {
|
|
|
496
525
|
const text = ctx.TARGET_TEXT().map((token) => token.getText()).join("");
|
|
497
526
|
return AstBuilder.parsePath(text, pos);
|
|
498
527
|
}
|
|
528
|
+
static #metadataFromCtx(ctx) {
|
|
529
|
+
const blocks = AstBuilder.#findAll(ctx, MetadataContext);
|
|
530
|
+
return blocks.length === 0
|
|
531
|
+
? null
|
|
532
|
+
: blocks.map((block) => block.METADATA_TEXT().map((token) => token.getText()).join(""));
|
|
533
|
+
}
|
|
534
|
+
static #resourceSelectionFromCtx(ctx, pos) {
|
|
535
|
+
const target = AstBuilder.#targetFromCtx(AstBuilder.#findFirst(ctx, TargetContext), pos);
|
|
536
|
+
if (target === null)
|
|
537
|
+
throw new Error("resource selection grammar did not produce a target");
|
|
538
|
+
return {
|
|
539
|
+
target,
|
|
540
|
+
metadata: AstBuilder.#metadataFromCtx(ctx),
|
|
541
|
+
lineMarker: AstBuilder.#textLineMarkerFromCtx(AstBuilder.#findFirst(ctx, LineMarkerContext)),
|
|
542
|
+
};
|
|
543
|
+
}
|
|
499
544
|
static #lineMarkerFromCtx(ctx) {
|
|
500
545
|
if (ctx === null)
|
|
501
546
|
return null;
|
|
@@ -570,33 +615,6 @@ export default class AstBuilder {
|
|
|
570
615
|
// L_MARKER always matches at least one number, so marks is non-empty.
|
|
571
616
|
return { marks: marks };
|
|
572
617
|
}
|
|
573
|
-
/**
|
|
574
|
-
* Parse a COPY/MOVE body into its destination target and optional trailing
|
|
575
|
-
* scope. The scope is adjacent to the destination it selects:
|
|
576
|
-
* `destination.txt<12,5,12,5>`.
|
|
577
|
-
*/
|
|
578
|
-
static parseResourceSelection(raw, pos = { line: 0, column: 0 }) {
|
|
579
|
-
if (raw.length === 0)
|
|
580
|
-
return null;
|
|
581
|
-
const combinedMarker = AstBuilder.#COMBINED_RESOURCE_SELECTION_TAIL.exec(raw)?.[1];
|
|
582
|
-
if (combinedMarker !== undefined && AstBuilder.#COMBINED_LINE_COORD.test(combinedMarker)) {
|
|
583
|
-
throw new PlurnkParseError(pos.line, pos.column, "visitor", COMBINED_ANCHOR_LINE_DIAGNOSTIC);
|
|
584
|
-
}
|
|
585
|
-
const markerMatch = AstBuilder.#ANCHORED_RESOURCE_SELECTION_TAIL.exec(raw)
|
|
586
|
-
?? AstBuilder.#RESOURCE_SELECTION_TAIL.exec(raw);
|
|
587
|
-
const markerText = markerMatch?.[1] ?? null;
|
|
588
|
-
if ((markerMatch?.[2].length ?? 0) > 0) {
|
|
589
|
-
throw new PlurnkParseError(pos.line, pos.column, "visitor", "COPY/MOVE destination scope must end the destination selection; remove the extra `:` after the scope");
|
|
590
|
-
}
|
|
591
|
-
const pathText = (markerText === null ? raw : raw.slice(0, -markerText.length)).trimEnd();
|
|
592
|
-
const target = AstBuilder.parsePath(pathText, pos);
|
|
593
|
-
if (target === null)
|
|
594
|
-
return null;
|
|
595
|
-
return {
|
|
596
|
-
target,
|
|
597
|
-
lineMarker: markerText === null ? null : AstBuilder.#parseTextLineMarker(markerText),
|
|
598
|
-
};
|
|
599
|
-
}
|
|
600
618
|
/**
|
|
601
619
|
* Apply target-slot decomposition without round-tripping through a statement.
|
|
602
620
|
* Returns null for empty input and throws PlurnkParseError when a scheme URL
|
|
@@ -609,14 +627,10 @@ export default class AstBuilder {
|
|
|
609
627
|
if (!AstBuilder.#SCHEME_PATTERN.test(target)) {
|
|
610
628
|
return { kind: "local", raw: target };
|
|
611
629
|
}
|
|
612
|
-
|
|
613
|
-
// scheme interprets the preserved ordered pairs. {§path-request-metadata}
|
|
614
|
-
const braceIdx = target.indexOf("{");
|
|
615
|
-
const urlPart = braceIdx === -1 ? target : target.slice(0, braceIdx);
|
|
616
|
-
const headers = braceIdx === -1 ? null : AstBuilder.#splitHeaders(target.slice(braceIdx), pos);
|
|
630
|
+
const protectedTarget = AstBuilder.#protectPathBraces(target);
|
|
617
631
|
let url;
|
|
618
632
|
try {
|
|
619
|
-
url = new URL(
|
|
633
|
+
url = new URL(protectedTarget.value);
|
|
620
634
|
}
|
|
621
635
|
catch {
|
|
622
636
|
throw new PlurnkParseError(pos.line, pos.column, "visitor", "invalid URI in path");
|
|
@@ -634,44 +648,40 @@ export default class AstBuilder {
|
|
|
634
648
|
password: url.password || null,
|
|
635
649
|
hostname: url.hostname || null,
|
|
636
650
|
port: url.port ? Number.parseInt(url.port, 10) : null,
|
|
637
|
-
pathname: url.pathname,
|
|
651
|
+
pathname: protectedTarget.restore(url.pathname),
|
|
638
652
|
query: AstBuilder.#queryFrom(url),
|
|
639
653
|
fragment: url.hash ? url.hash.slice(1) : null,
|
|
640
654
|
};
|
|
641
|
-
if (headers)
|
|
642
|
-
parsed.headers = headers;
|
|
643
655
|
return parsed;
|
|
644
656
|
}
|
|
645
|
-
//
|
|
646
|
-
//
|
|
647
|
-
//
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
const
|
|
663
|
-
const
|
|
664
|
-
if (
|
|
665
|
-
|
|
666
|
-
}
|
|
667
|
-
const key = inner.slice(0, colon).trim();
|
|
668
|
-
if (key.length === 0) {
|
|
669
|
-
throw new PlurnkParseError(pos.line, pos.column, "visitor", "invalid request metadata: empty name");
|
|
670
|
-
}
|
|
671
|
-
headers.push([key, inner.slice(colon + 1).trim()]);
|
|
672
|
-
i = end + 1;
|
|
657
|
+
// WHATWG percent-encodes raw braces. Protect only authored path braces while
|
|
658
|
+
// decomposing so brace globs remain distinguishable from authored `%7B`/`%7D`
|
|
659
|
+
// literal path data. Query and fragment spelling remain untouched.
|
|
660
|
+
static #protectPathBraces(target) {
|
|
661
|
+
const authorityStart = target.indexOf("://") + 3;
|
|
662
|
+
const pathStart = target.indexOf("/", authorityStart);
|
|
663
|
+
if (pathStart < 0)
|
|
664
|
+
return { value: target, restore: (pathname) => pathname };
|
|
665
|
+
const queryStart = target.indexOf("?", pathStart);
|
|
666
|
+
const fragmentStart = target.indexOf("#", pathStart);
|
|
667
|
+
const endings = [queryStart, fragmentStart].filter((index) => index >= 0);
|
|
668
|
+
const pathEnd = endings.length === 0 ? target.length : Math.min(...endings);
|
|
669
|
+
const rawPath = target.slice(pathStart, pathEnd);
|
|
670
|
+
if (!/[{}]/u.test(rawPath))
|
|
671
|
+
return { value: target, restore: (pathname) => pathname };
|
|
672
|
+
const sentinels = [];
|
|
673
|
+
for (let codePoint = 0xF0000; sentinels.length < 2; codePoint += 1) {
|
|
674
|
+
const character = String.fromCodePoint(codePoint);
|
|
675
|
+
const encoded = encodeURIComponent(character);
|
|
676
|
+
if (!target.includes(character) && !target.toUpperCase().includes(encoded))
|
|
677
|
+
sentinels.push(encoded);
|
|
673
678
|
}
|
|
674
|
-
|
|
679
|
+
const [open, close] = sentinels;
|
|
680
|
+
const protectedPath = rawPath.replaceAll("{", open).replaceAll("}", close);
|
|
681
|
+
return {
|
|
682
|
+
value: target.slice(0, pathStart) + protectedPath + target.slice(pathEnd),
|
|
683
|
+
restore: (pathname) => pathname.replaceAll(open, "{").replaceAll(close, "}"),
|
|
684
|
+
};
|
|
675
685
|
}
|
|
676
686
|
static #queryFrom(url) {
|
|
677
687
|
const queryStart = url.href.indexOf("?");
|
|
@@ -683,19 +693,30 @@ export default class AstBuilder {
|
|
|
683
693
|
// The leading prefix claims its dialect; failed claimed syntax never falls back
|
|
684
694
|
// to glob. XPath's `//` is classified before regex `/`. {§matcher-prefix-claims}
|
|
685
695
|
static #parseMatcherBody(body, pos) {
|
|
686
|
-
|
|
696
|
+
// At statement EOF ANTLR retains one ordinary terminating line ending in
|
|
697
|
+
// BODY_TEXT; before a following heading the lexer consumes that same EOL as
|
|
698
|
+
// SECTION_END. Normalize the equivalent surfaces before enforcing one line.
|
|
699
|
+
const raw = body.replace(/(?:\r\n|\r|\n)$/u, "");
|
|
700
|
+
const lineCount = raw.split(/\r\n|\r|\n/u).length;
|
|
701
|
+
if (lineCount !== 1) {
|
|
702
|
+
throw new PlurnkParseError(pos.line, pos.column, "visitor", `Matcher body has ${lineCount} lines; expected 1.`);
|
|
703
|
+
}
|
|
704
|
+
if (raw.startsWith("//")) {
|
|
687
705
|
try {
|
|
688
|
-
xpath.parse(
|
|
706
|
+
xpath.parse(raw);
|
|
689
707
|
}
|
|
690
708
|
catch (e) {
|
|
691
709
|
throw new PlurnkParseError(pos.line, pos.column, "visitor", `pattern leads with \`//\` but is not a valid xpath selector - ${AstBuilder.#detail(e)}`);
|
|
692
710
|
}
|
|
693
|
-
return { dialect: "xpath", raw
|
|
711
|
+
return { dialect: "xpath", raw };
|
|
694
712
|
}
|
|
695
|
-
if (
|
|
696
|
-
const regex = AstBuilder.#tryParseSlashRegex(
|
|
713
|
+
if (raw.startsWith("/")) {
|
|
714
|
+
const regex = AstBuilder.#tryParseSlashRegex(raw);
|
|
697
715
|
if (regex.ok)
|
|
698
|
-
return { dialect: "regex", raw
|
|
716
|
+
return { dialect: "regex", raw, pattern: regex.pattern, flags: regex.flags };
|
|
717
|
+
if (regex.reason === "invalid" && /^[\t ]/u.test(regex.flags)) {
|
|
718
|
+
throw new PlurnkParseError(pos.line, pos.column, "visitor", "Regex matcher has trailing text after its closing `/`; operation modifiers precede the line ending, and the matcher occupies the next line.");
|
|
719
|
+
}
|
|
699
720
|
const slashRecovery = regex.reason === "invalid"
|
|
700
721
|
&& regex.detail.includes("Invalid flags supplied")
|
|
701
722
|
? " - use only ECMAScript flags after the closing `/`; escape a literal `/` inside the pattern as `\\/`"
|
|
@@ -703,26 +724,30 @@ export default class AstBuilder {
|
|
|
703
724
|
// Quote the offending matcher so a multi-op emission's failure is
|
|
704
725
|
// unambiguous about WHICH body failed (a correct sibling regex must
|
|
705
726
|
// not take the blame for a broken one).
|
|
706
|
-
const excerpt =
|
|
727
|
+
const excerpt = raw.length > 80 ? `${raw.slice(0, 80)}…` : raw;
|
|
707
728
|
throw new PlurnkParseError(pos.line, pos.column, "visitor", regex.reason === "unclosed"
|
|
708
729
|
? `regex matcher must use \`/pattern/flags\`; this matcher has no closing \`/\`: \`${excerpt}\``
|
|
709
730
|
: `pattern leads with \`/\` but is not a valid \`/pattern/flags\` regex - ${regex.detail}${slashRecovery}: \`${excerpt}\``);
|
|
710
731
|
}
|
|
711
|
-
if (
|
|
732
|
+
if (raw.startsWith("$")) {
|
|
712
733
|
// Compile-only RFC 9535 admission through the shared json-p3 engine.
|
|
713
734
|
try {
|
|
714
|
-
AstBuilder.#JSONPATH.compile(
|
|
735
|
+
AstBuilder.#JSONPATH.compile(raw);
|
|
715
736
|
}
|
|
716
737
|
catch (e) {
|
|
717
738
|
throw new PlurnkParseError(pos.line, pos.column, "visitor", `pattern leads with \`$\` but is not a valid jsonpath - ${AstBuilder.#detail(e)}`);
|
|
718
739
|
}
|
|
719
|
-
return { dialect: "jsonpath", raw
|
|
740
|
+
return { dialect: "jsonpath", raw };
|
|
741
|
+
}
|
|
742
|
+
if (raw.startsWith("~"))
|
|
743
|
+
return { dialect: "semantic", raw };
|
|
744
|
+
if (raw.startsWith("&")) {
|
|
745
|
+
if (!AstBuilder.#GRAPH_MATCHER.test(raw)) {
|
|
746
|
+
throw new PlurnkParseError(pos.line, pos.column, "visitor", "Malformed graph matcher; expected `&symbol`, `&<symbol`, or `&>symbol`.");
|
|
747
|
+
}
|
|
748
|
+
return { dialect: "graph", raw };
|
|
720
749
|
}
|
|
721
|
-
|
|
722
|
-
return { dialect: "semantic", raw: body };
|
|
723
|
-
if (body.startsWith("@"))
|
|
724
|
-
return { dialect: "graph", raw: body };
|
|
725
|
-
return { dialect: "glob", raw: body };
|
|
750
|
+
return { dialect: "glob", raw };
|
|
726
751
|
}
|
|
727
752
|
static #detail(e) {
|
|
728
753
|
return e instanceof Error ? e.message : String(e);
|
|
@@ -760,7 +785,7 @@ export default class AstBuilder {
|
|
|
760
785
|
new RegExp(pattern, flags);
|
|
761
786
|
}
|
|
762
787
|
catch (e) {
|
|
763
|
-
return { ok: false, reason: "invalid", detail: AstBuilder.#detail(e) };
|
|
788
|
+
return { ok: false, reason: "invalid", detail: AstBuilder.#detail(e), flags };
|
|
764
789
|
}
|
|
765
790
|
return { ok: true, pattern, flags };
|
|
766
791
|
}
|