@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.plurnk.xyz/v0/CapabilityProjection.json",
|
|
4
|
+
"title": "CapabilityProjection",
|
|
5
|
+
"description": "The complete worker-level capability-policy cascade and its normalized effective intersection.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"service": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json" },
|
|
10
|
+
"workspace": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json" },
|
|
11
|
+
"workerBound": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json" },
|
|
12
|
+
"worker": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json" },
|
|
13
|
+
"effective": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json" }
|
|
14
|
+
},
|
|
15
|
+
"required": ["service", "workspace", "workerBound", "worker", "effective"]
|
|
16
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.plurnk.xyz/v0/CapabilitySelector.json",
|
|
4
|
+
"title": "CapabilitySelector",
|
|
5
|
+
"description": "One exact, conjunctive selector over a routed PLURNK capability demand. Omitted fields are wildcards; at least one field is required.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"minProperties": 1,
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"operation": {
|
|
11
|
+
"enum": ["FIND", "READ", "EDIT", "COPY", "MOVE", "SEND", "EXEC", "BARE", "WORK", "FORK", "KILL"]
|
|
12
|
+
},
|
|
13
|
+
"scheme": { "type": "string", "pattern": "^[a-z][a-z0-9+.-]*$" },
|
|
14
|
+
"runtime": { "type": "string", "pattern": "^[a-z][a-z0-9+.-]*$" },
|
|
15
|
+
"tool": { "type": "string", "minLength": 1 },
|
|
16
|
+
"access": { "enum": ["observe", "mutate", "execute", "interact", "control"] },
|
|
17
|
+
"traits": {
|
|
18
|
+
"type": "array",
|
|
19
|
+
"minItems": 1,
|
|
20
|
+
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*$" },
|
|
21
|
+
"uniqueItems": true
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -18,6 +18,12 @@
|
|
|
18
18
|
"AnnotationOrNull": {
|
|
19
19
|
"type": ["string", "null"]
|
|
20
20
|
},
|
|
21
|
+
"SchemeMetadataOrNull": {
|
|
22
|
+
"oneOf": [
|
|
23
|
+
{ "type": "array", "items": { "type": "string" } },
|
|
24
|
+
{ "type": "null" }
|
|
25
|
+
]
|
|
26
|
+
},
|
|
21
27
|
"PathOrNull": {
|
|
22
28
|
"oneOf": [
|
|
23
29
|
{ "$ref": "https://schemas.plurnk.xyz/v0/ParsedPath.json" },
|
|
@@ -47,12 +53,13 @@
|
|
|
47
53
|
},
|
|
48
54
|
"LookStatement": {
|
|
49
55
|
"type": "object",
|
|
50
|
-
"required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
|
|
56
|
+
"required": ["op", "delimiter", "annotation", "metadata", "signal", "target", "lineMarker", "body", "position"],
|
|
51
57
|
"additionalProperties": false,
|
|
52
58
|
"properties": {
|
|
53
59
|
"op": { "const": "LOOK" },
|
|
54
60
|
"delimiter": { "type": "string" },
|
|
55
61
|
"annotation": { "$ref": "#/$defs/AnnotationOrNull" },
|
|
62
|
+
"metadata": { "$ref": "#/$defs/SchemeMetadataOrNull" },
|
|
56
63
|
"signal": { "$ref": "#/$defs/TagSignal" },
|
|
57
64
|
"target": { "$ref": "#/$defs/PathOrNull" },
|
|
58
65
|
"lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
|
|
@@ -62,12 +69,13 @@
|
|
|
62
69
|
},
|
|
63
70
|
"BuffStatement": {
|
|
64
71
|
"type": "object",
|
|
65
|
-
"required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
|
|
72
|
+
"required": ["op", "delimiter", "annotation", "metadata", "signal", "target", "lineMarker", "body", "position"],
|
|
66
73
|
"additionalProperties": false,
|
|
67
74
|
"properties": {
|
|
68
75
|
"op": { "const": "BUFF" },
|
|
69
76
|
"delimiter": { "type": "string" },
|
|
70
77
|
"annotation": { "$ref": "#/$defs/AnnotationOrNull" },
|
|
78
|
+
"metadata": { "$ref": "#/$defs/SchemeMetadataOrNull" },
|
|
71
79
|
"signal": { "$ref": "#/$defs/TagSignal" },
|
|
72
80
|
"target": { "$ref": "#/$defs/PathOrNull" },
|
|
73
81
|
"lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.plurnk.xyz/v0/LoopPolicy.json",
|
|
4
|
+
"title": "LoopPolicy",
|
|
5
|
+
"description": "The complete immutable policy snapshot for one loop. Capability admission precedes proposal disposition.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["capabilities", "proposals"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"capabilities": { "$ref": "https://schemas.plurnk.xyz/v0/CapabilityPolicy.json" },
|
|
11
|
+
"proposals": { "enum": ["review", "accept", "reject"] }
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/MatcherBody.json",
|
|
4
4
|
"title": "MatcherBody",
|
|
5
|
-
"description": "Parsed body of a
|
|
5
|
+
"description": "Parsed single-line body of a matcher-bearing statement, discriminated on `dialect`. The dialect is determined by the body's leading characters (`//` xpath, `/` regex, `$` jsonpath, `~` semantic, `&` graph, else glob). The regex variant carries pattern and flags split out of the `/pattern/flags` literal; every variant remains JSON-serializable.",
|
|
6
6
|
"oneOf": [
|
|
7
7
|
{ "$ref": "#/$defs/XPathBody" },
|
|
8
8
|
{ "$ref": "#/$defs/RegexBody" },
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"additionalProperties": false,
|
|
21
21
|
"properties": {
|
|
22
22
|
"dialect": { "const": "xpath" },
|
|
23
|
-
"raw": { "type": "string", "minLength": 2 }
|
|
23
|
+
"raw": { "type": "string", "minLength": 2, "pattern": "^[^\\r\\n]*$" }
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"RegexBody": {
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"additionalProperties": false,
|
|
32
32
|
"properties": {
|
|
33
33
|
"dialect": { "const": "regex" },
|
|
34
|
-
"raw": { "type": "string", "minLength": 2 },
|
|
34
|
+
"raw": { "type": "string", "minLength": 2, "pattern": "^[^\\r\\n]*$" },
|
|
35
35
|
"pattern": { "type": "string" },
|
|
36
36
|
"flags": { "type": "string" }
|
|
37
37
|
}
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"additionalProperties": false,
|
|
45
45
|
"properties": {
|
|
46
46
|
"dialect": { "const": "jsonpath" },
|
|
47
|
-
"raw": { "type": "string", "minLength": 1 }
|
|
47
|
+
"raw": { "type": "string", "minLength": 1, "pattern": "^[^\\r\\n]*$" }
|
|
48
48
|
}
|
|
49
49
|
},
|
|
50
50
|
"SemanticBody": {
|
|
@@ -55,18 +55,18 @@
|
|
|
55
55
|
"additionalProperties": false,
|
|
56
56
|
"properties": {
|
|
57
57
|
"dialect": { "const": "semantic" },
|
|
58
|
-
"raw": { "type": "string", "minLength": 1 }
|
|
58
|
+
"raw": { "type": "string", "minLength": 1, "pattern": "^[^\\r\\n]*$" }
|
|
59
59
|
}
|
|
60
60
|
},
|
|
61
61
|
"GraphBody": {
|
|
62
62
|
"title": "GraphBody",
|
|
63
|
-
"description": "Code-graph reference query. Body is
|
|
63
|
+
"description": "Code-graph reference query. Body is `&symbol` for a neighborhood, `&<symbol` for inbound references, or `&>symbol` for outbound references. Shape is validated during language admission; resolution happens service-side through the symbol index.",
|
|
64
64
|
"type": "object",
|
|
65
65
|
"required": ["dialect", "raw"],
|
|
66
66
|
"additionalProperties": false,
|
|
67
67
|
"properties": {
|
|
68
68
|
"dialect": { "const": "graph" },
|
|
69
|
-
"raw": { "type": "string", "
|
|
69
|
+
"raw": { "type": "string", "pattern": "^&[<>]?[^\\s<>]\\S*$" }
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"GlobBody": {
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"additionalProperties": false,
|
|
78
78
|
"properties": {
|
|
79
79
|
"dialect": { "const": "glob" },
|
|
80
|
-
"raw": { "type": "string" }
|
|
80
|
+
"raw": { "type": "string", "pattern": "^[^\\r\\n]*$" }
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -47,17 +47,7 @@
|
|
|
47
47
|
"description": "Canonical serialized WHATWG query component without the leading `?`. Null means no query; the empty string means an explicit empty query (`?`). Ordering, duplicate names, and encoded spelling are preserved.",
|
|
48
48
|
"type": ["string", "null"]
|
|
49
49
|
},
|
|
50
|
-
"fragment": { "type": ["string", "null"] }
|
|
51
|
-
"headers": {
|
|
52
|
-
"description": "Trailing `{key: value}` request-metadata blocks removed before WHATWG decomposition and preserved as ordered pairs. Order and duplicate names survive; the addressed scheme owns their meaning. Absent when no block was supplied.",
|
|
53
|
-
"type": "array",
|
|
54
|
-
"items": {
|
|
55
|
-
"type": "array",
|
|
56
|
-
"items": { "type": "string" },
|
|
57
|
-
"minItems": 2,
|
|
58
|
-
"maxItems": 2
|
|
59
|
-
}
|
|
60
|
-
}
|
|
50
|
+
"fragment": { "type": ["string", "null"] }
|
|
61
51
|
}
|
|
62
52
|
}
|
|
63
53
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/PlurnkStatement.json",
|
|
4
4
|
"title": "PlurnkStatement",
|
|
5
|
-
"description": "The parsed AST union for one protocol statement, discriminated by `op`. Every variant has fixed signal, target, lineMarker, annotation, body, delimiter, and source-position fields; operation-specific schemas constrain their types. A null field records an omitted tolerated slot and does not satisfy runtime requirements by itself.",
|
|
5
|
+
"description": "The parsed AST union for one protocol statement, discriminated by `op`. Every variant has fixed signal, target, metadata, lineMarker, annotation, body, delimiter, and source-position fields; operation-specific schemas constrain their types. A null field records an omitted tolerated slot and does not satisfy runtime requirements by itself.",
|
|
6
6
|
"oneOf": [
|
|
7
7
|
{
|
|
8
8
|
"$ref": "#/$defs/FindStatement"
|
|
@@ -67,6 +67,18 @@
|
|
|
67
67
|
"null"
|
|
68
68
|
]
|
|
69
69
|
},
|
|
70
|
+
"SchemeMetadataOrNull": {
|
|
71
|
+
"description": "Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.",
|
|
72
|
+
"oneOf": [
|
|
73
|
+
{
|
|
74
|
+
"type": "array",
|
|
75
|
+
"items": { "type": "string" }
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"type": "null"
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
},
|
|
70
82
|
"AppliedTagSignal": {
|
|
71
83
|
"oneOf": [
|
|
72
84
|
{
|
|
@@ -145,16 +157,6 @@
|
|
|
145
157
|
}
|
|
146
158
|
]
|
|
147
159
|
},
|
|
148
|
-
"ResourceSelectionOrNull": {
|
|
149
|
-
"oneOf": [
|
|
150
|
-
{
|
|
151
|
-
"$ref": "https://schemas.plurnk.xyz/v0/ResourceSelection.json"
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
"type": "null"
|
|
155
|
-
}
|
|
156
|
-
]
|
|
157
|
-
},
|
|
158
160
|
"PositionRef": {
|
|
159
161
|
"$ref": "https://schemas.plurnk.xyz/v0/Position.json"
|
|
160
162
|
},
|
|
@@ -164,6 +166,7 @@
|
|
|
164
166
|
"op",
|
|
165
167
|
"delimiter",
|
|
166
168
|
"annotation",
|
|
169
|
+
"metadata",
|
|
167
170
|
"signal",
|
|
168
171
|
"target",
|
|
169
172
|
"lineMarker",
|
|
@@ -181,6 +184,9 @@
|
|
|
181
184
|
"annotation": {
|
|
182
185
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
183
186
|
},
|
|
187
|
+
"metadata": {
|
|
188
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
189
|
+
},
|
|
184
190
|
"signal": {
|
|
185
191
|
"$ref": "#/$defs/AppliedTagSignal"
|
|
186
192
|
},
|
|
@@ -204,6 +210,7 @@
|
|
|
204
210
|
"op",
|
|
205
211
|
"delimiter",
|
|
206
212
|
"annotation",
|
|
213
|
+
"metadata",
|
|
207
214
|
"signal",
|
|
208
215
|
"target",
|
|
209
216
|
"lineMarker",
|
|
@@ -221,6 +228,9 @@
|
|
|
221
228
|
"annotation": {
|
|
222
229
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
223
230
|
},
|
|
231
|
+
"metadata": {
|
|
232
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
233
|
+
},
|
|
224
234
|
"signal": {
|
|
225
235
|
"$ref": "#/$defs/AppliedTagSignal"
|
|
226
236
|
},
|
|
@@ -244,6 +254,7 @@
|
|
|
244
254
|
"op",
|
|
245
255
|
"delimiter",
|
|
246
256
|
"annotation",
|
|
257
|
+
"metadata",
|
|
247
258
|
"signal",
|
|
248
259
|
"target",
|
|
249
260
|
"lineMarker",
|
|
@@ -261,6 +272,9 @@
|
|
|
261
272
|
"annotation": {
|
|
262
273
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
263
274
|
},
|
|
275
|
+
"metadata": {
|
|
276
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
277
|
+
},
|
|
264
278
|
"signal": {
|
|
265
279
|
"$ref": "#/$defs/CurationTagSignal"
|
|
266
280
|
},
|
|
@@ -284,6 +298,7 @@
|
|
|
284
298
|
"op",
|
|
285
299
|
"delimiter",
|
|
286
300
|
"annotation",
|
|
301
|
+
"metadata",
|
|
287
302
|
"signal",
|
|
288
303
|
"target",
|
|
289
304
|
"lineMarker",
|
|
@@ -301,6 +316,9 @@
|
|
|
301
316
|
"annotation": {
|
|
302
317
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
303
318
|
},
|
|
319
|
+
"metadata": {
|
|
320
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
321
|
+
},
|
|
304
322
|
"signal": {
|
|
305
323
|
"$ref": "#/$defs/CurationTagSignal"
|
|
306
324
|
},
|
|
@@ -324,6 +342,7 @@
|
|
|
324
342
|
"op",
|
|
325
343
|
"delimiter",
|
|
326
344
|
"annotation",
|
|
345
|
+
"metadata",
|
|
327
346
|
"signal",
|
|
328
347
|
"target",
|
|
329
348
|
"lineMarker",
|
|
@@ -341,6 +360,9 @@
|
|
|
341
360
|
"annotation": {
|
|
342
361
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
343
362
|
},
|
|
363
|
+
"metadata": {
|
|
364
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
365
|
+
},
|
|
344
366
|
"signal": {
|
|
345
367
|
"$ref": "#/$defs/AppliedTagSignal"
|
|
346
368
|
},
|
|
@@ -368,9 +390,8 @@
|
|
|
368
390
|
"delimiter",
|
|
369
391
|
"annotation",
|
|
370
392
|
"signal",
|
|
371
|
-
"
|
|
372
|
-
"
|
|
373
|
-
"body",
|
|
393
|
+
"source",
|
|
394
|
+
"destination",
|
|
374
395
|
"position"
|
|
375
396
|
],
|
|
376
397
|
"additionalProperties": false,
|
|
@@ -387,14 +408,11 @@
|
|
|
387
408
|
"signal": {
|
|
388
409
|
"$ref": "#/$defs/AppliedTagSignal"
|
|
389
410
|
},
|
|
390
|
-
"
|
|
391
|
-
"$ref": "
|
|
392
|
-
},
|
|
393
|
-
"lineMarker": {
|
|
394
|
-
"$ref": "#/$defs/TextLineMarkerOrNull"
|
|
411
|
+
"source": {
|
|
412
|
+
"$ref": "https://schemas.plurnk.xyz/v0/ResourceSelection.json"
|
|
395
413
|
},
|
|
396
|
-
"
|
|
397
|
-
"$ref": "
|
|
414
|
+
"destination": {
|
|
415
|
+
"$ref": "https://schemas.plurnk.xyz/v0/ResourceSelection.json"
|
|
398
416
|
},
|
|
399
417
|
"position": {
|
|
400
418
|
"$ref": "#/$defs/PositionRef"
|
|
@@ -408,9 +426,8 @@
|
|
|
408
426
|
"delimiter",
|
|
409
427
|
"annotation",
|
|
410
428
|
"signal",
|
|
411
|
-
"
|
|
412
|
-
"
|
|
413
|
-
"body",
|
|
429
|
+
"source",
|
|
430
|
+
"destination",
|
|
414
431
|
"position"
|
|
415
432
|
],
|
|
416
433
|
"additionalProperties": false,
|
|
@@ -427,14 +444,11 @@
|
|
|
427
444
|
"signal": {
|
|
428
445
|
"$ref": "#/$defs/AppliedTagSignal"
|
|
429
446
|
},
|
|
430
|
-
"
|
|
431
|
-
"$ref": "
|
|
432
|
-
},
|
|
433
|
-
"lineMarker": {
|
|
434
|
-
"$ref": "#/$defs/TextLineMarkerOrNull"
|
|
447
|
+
"source": {
|
|
448
|
+
"$ref": "https://schemas.plurnk.xyz/v0/ResourceSelection.json"
|
|
435
449
|
},
|
|
436
|
-
"
|
|
437
|
-
"$ref": "
|
|
450
|
+
"destination": {
|
|
451
|
+
"$ref": "https://schemas.plurnk.xyz/v0/ResourceSelection.json"
|
|
438
452
|
},
|
|
439
453
|
"position": {
|
|
440
454
|
"$ref": "#/$defs/PositionRef"
|
|
@@ -447,6 +461,7 @@
|
|
|
447
461
|
"op",
|
|
448
462
|
"delimiter",
|
|
449
463
|
"annotation",
|
|
464
|
+
"metadata",
|
|
450
465
|
"signal",
|
|
451
466
|
"target",
|
|
452
467
|
"lineMarker",
|
|
@@ -464,6 +479,9 @@
|
|
|
464
479
|
"annotation": {
|
|
465
480
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
466
481
|
},
|
|
482
|
+
"metadata": {
|
|
483
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
484
|
+
},
|
|
467
485
|
"signal": {
|
|
468
486
|
"oneOf": [
|
|
469
487
|
{
|
|
@@ -494,6 +512,7 @@
|
|
|
494
512
|
"op",
|
|
495
513
|
"delimiter",
|
|
496
514
|
"annotation",
|
|
515
|
+
"metadata",
|
|
497
516
|
"signal",
|
|
498
517
|
"target",
|
|
499
518
|
"lineMarker",
|
|
@@ -511,6 +530,9 @@
|
|
|
511
530
|
"annotation": {
|
|
512
531
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
513
532
|
},
|
|
533
|
+
"metadata": {
|
|
534
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
535
|
+
},
|
|
514
536
|
"signal": {
|
|
515
537
|
"type": [
|
|
516
538
|
"string",
|
|
@@ -549,6 +571,7 @@
|
|
|
549
571
|
"op",
|
|
550
572
|
"delimiter",
|
|
551
573
|
"annotation",
|
|
574
|
+
"metadata",
|
|
552
575
|
"signal",
|
|
553
576
|
"target",
|
|
554
577
|
"lineMarker",
|
|
@@ -566,6 +589,9 @@
|
|
|
566
589
|
"annotation": {
|
|
567
590
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
568
591
|
},
|
|
592
|
+
"metadata": {
|
|
593
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
594
|
+
},
|
|
569
595
|
"signal": {
|
|
570
596
|
"$ref": "#/$defs/AppliedTagSignal"
|
|
571
597
|
},
|
|
@@ -590,6 +616,7 @@
|
|
|
590
616
|
"op",
|
|
591
617
|
"delimiter",
|
|
592
618
|
"annotation",
|
|
619
|
+
"metadata",
|
|
593
620
|
"signal",
|
|
594
621
|
"target",
|
|
595
622
|
"lineMarker",
|
|
@@ -607,14 +634,17 @@
|
|
|
607
634
|
"annotation": {
|
|
608
635
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
609
636
|
},
|
|
637
|
+
"metadata": {
|
|
638
|
+
"type": "null"
|
|
639
|
+
},
|
|
610
640
|
"signal": {
|
|
611
|
-
"
|
|
641
|
+
"type": "null"
|
|
612
642
|
},
|
|
613
643
|
"target": {
|
|
614
|
-
"
|
|
644
|
+
"type": "null"
|
|
615
645
|
},
|
|
616
646
|
"lineMarker": {
|
|
617
|
-
"
|
|
647
|
+
"type": "null"
|
|
618
648
|
},
|
|
619
649
|
"body": {
|
|
620
650
|
"$ref": "https://schemas.plurnk.xyz/v0/Plan.json"
|
|
@@ -630,6 +660,7 @@
|
|
|
630
660
|
"op",
|
|
631
661
|
"delimiter",
|
|
632
662
|
"annotation",
|
|
663
|
+
"metadata",
|
|
633
664
|
"signal",
|
|
634
665
|
"target",
|
|
635
666
|
"lineMarker",
|
|
@@ -647,6 +678,9 @@
|
|
|
647
678
|
"annotation": {
|
|
648
679
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
649
680
|
},
|
|
681
|
+
"metadata": {
|
|
682
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
683
|
+
},
|
|
650
684
|
"signal": {
|
|
651
685
|
"oneOf": [
|
|
652
686
|
{
|
|
@@ -680,6 +714,7 @@
|
|
|
680
714
|
"op",
|
|
681
715
|
"delimiter",
|
|
682
716
|
"annotation",
|
|
717
|
+
"metadata",
|
|
683
718
|
"signal",
|
|
684
719
|
"target",
|
|
685
720
|
"lineMarker",
|
|
@@ -697,6 +732,9 @@
|
|
|
697
732
|
"annotation": {
|
|
698
733
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
699
734
|
},
|
|
735
|
+
"metadata": {
|
|
736
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
737
|
+
},
|
|
700
738
|
"signal": {
|
|
701
739
|
"oneOf": [
|
|
702
740
|
{
|
|
@@ -729,6 +767,7 @@
|
|
|
729
767
|
"op",
|
|
730
768
|
"delimiter",
|
|
731
769
|
"annotation",
|
|
770
|
+
"metadata",
|
|
732
771
|
"signal",
|
|
733
772
|
"target",
|
|
734
773
|
"lineMarker",
|
|
@@ -746,6 +785,9 @@
|
|
|
746
785
|
"annotation": {
|
|
747
786
|
"$ref": "#/$defs/AnnotationOrNull"
|
|
748
787
|
},
|
|
788
|
+
"metadata": {
|
|
789
|
+
"$ref": "#/$defs/SchemeMetadataOrNull"
|
|
790
|
+
},
|
|
749
791
|
"signal": {
|
|
750
792
|
"oneOf": [
|
|
751
793
|
{
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://schemas.plurnk.xyz/v0/ProblemProjection.json",
|
|
4
|
+
"title": "ProblemProjection",
|
|
5
|
+
"description": "The compact model-facing projection of one exact RFC 9457 Problem. The enclosing log row owns model-facing address and status; stable type, causal detail, and non-duplicative decision facts remain.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["type", "detail"],
|
|
8
|
+
"additionalProperties": true,
|
|
9
|
+
"properties": {
|
|
10
|
+
"type": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^[a-zA-Z][a-zA-Z0-9+.-]*:",
|
|
13
|
+
"description": "Absolute URI identifying the stable problem class."
|
|
14
|
+
},
|
|
15
|
+
"detail": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"minLength": 1,
|
|
18
|
+
"description": "Specific, causal explanation of this occurrence."
|
|
19
|
+
},
|
|
20
|
+
"stage": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"minLength": 1,
|
|
23
|
+
"description": "Stable producer-owned stage at which the operation failed, when neighboring stages imply different recovery."
|
|
24
|
+
},
|
|
25
|
+
"recovery": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"minLength": 1,
|
|
28
|
+
"description": "One generally valid next action, only when the producer knows it."
|
|
29
|
+
},
|
|
30
|
+
"retryable": {
|
|
31
|
+
"type": "boolean",
|
|
32
|
+
"description": "Whether the producer recommends automatically retrying the identical request."
|
|
33
|
+
},
|
|
34
|
+
"title": false,
|
|
35
|
+
"status": false,
|
|
36
|
+
"instance": false
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"target",
|
|
14
14
|
"body",
|
|
15
15
|
"attrs",
|
|
16
|
-
"
|
|
16
|
+
"policy",
|
|
17
17
|
"disposition"
|
|
18
18
|
],
|
|
19
19
|
"additionalProperties": false,
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"body": { "type": "string" },
|
|
39
39
|
"attrs": { "type": "object", "additionalProperties": true },
|
|
40
|
-
"
|
|
40
|
+
"policy": { "$ref": "https://schemas.plurnk.xyz/v0/LoopPolicy.json" },
|
|
41
41
|
"disposition": { "$ref": "https://schemas.plurnk.xyz/v0/ProposalDisposition.json" }
|
|
42
42
|
}
|
|
43
43
|
}
|
|
@@ -2,14 +2,24 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://schemas.plurnk.xyz/v0/ResourceSelection.json",
|
|
4
4
|
"title": "ResourceSelection",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "One COPY/MOVE resource operand. A target without a fragment selects the scheme's default channel; a fragment selects a named channel; metadata belongs to the selected scheme endpoint; lineMarker scopes the selected textual content.",
|
|
6
6
|
"type": "object",
|
|
7
|
-
"required": ["target", "lineMarker"],
|
|
7
|
+
"required": ["target", "metadata", "lineMarker"],
|
|
8
8
|
"additionalProperties": false,
|
|
9
9
|
"properties": {
|
|
10
10
|
"target": {
|
|
11
11
|
"$ref": "https://schemas.plurnk.xyz/v0/ParsedPath.json"
|
|
12
12
|
},
|
|
13
|
+
"metadata": {
|
|
14
|
+
"description": "Opaque ordered scheme-metadata modifier blocks owned by this operand's addressed scheme.",
|
|
15
|
+
"oneOf": [
|
|
16
|
+
{
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "type": "string" }
|
|
19
|
+
},
|
|
20
|
+
{ "type": "null" }
|
|
21
|
+
]
|
|
22
|
+
},
|
|
13
23
|
"lineMarker": {
|
|
14
24
|
"oneOf": [
|
|
15
25
|
{ "$ref": "https://schemas.plurnk.xyz/v0/TextLineMarker.json" },
|