@plurnk/plurnk-contracts 1.7.0 → 1.9.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.
Files changed (104) hide show
  1. package/SPEC.md +227 -63
  2. package/dist/conformance/agui-v1.json +541 -0
  3. package/dist/plurnk.gemma.gbnf +26 -22
  4. package/dist/plurnk.qwen.gbnf +26 -22
  5. package/dist/schema/A2aAgentDefinition.json +44 -0
  6. package/dist/schema/AcpPlan.json +63 -0
  7. package/dist/schema/AguiClientConformance.json +74 -0
  8. package/dist/schema/AguiConformanceKit.json +111 -0
  9. package/dist/schema/AguiDiscovery.json +70 -0
  10. package/dist/schema/ClientDisplayCapabilities.json +1 -1
  11. package/dist/schema/ClientInteractionProjection.json +2 -2
  12. package/dist/schema/ClientInteractionRequest.json +1 -1
  13. package/dist/schema/ClientInteractionResolution.json +1 -1
  14. package/dist/schema/ClientStatement.json +16 -11
  15. package/dist/schema/EntryReadResult.json +2 -2
  16. package/dist/schema/FunctionalityCandidate.json +33 -0
  17. package/dist/schema/FunctionalityDefinitionState.json +33 -0
  18. package/dist/schema/FunctionalityDiscoverQuery.json +16 -0
  19. package/dist/schema/FunctionalityDiscoverResult.json +15 -0
  20. package/dist/schema/FunctionalityListResult.json +15 -0
  21. package/dist/schema/FunctionalityMutationResult.json +16 -0
  22. package/dist/schema/LineMarker.json +1 -1
  23. package/dist/schema/LoopFlags.json +1 -1
  24. package/dist/schema/MatcherBody.json +1 -1
  25. package/dist/schema/McpConfigurationOverlay.json +25 -0
  26. package/dist/schema/McpServerDefinition.json +3 -2
  27. package/dist/schema/McpServerOptions.json +36 -0
  28. package/dist/schema/ModelCatalogPage.json +122 -0
  29. package/dist/schema/ModelCatalogQuery.json +32 -0
  30. package/dist/schema/ModelReadiness.json +47 -0
  31. package/dist/schema/ModelRoute.json +23 -0
  32. package/dist/schema/Notice.json +1 -1
  33. package/dist/schema/OperationResult.json +3 -3
  34. package/dist/schema/ParsedPath.json +1 -1
  35. package/dist/schema/Plan.json +52 -0
  36. package/dist/schema/PlurnkStatement.json +57 -40
  37. package/dist/schema/Position.json +1 -1
  38. package/dist/schema/ProblemDetails.json +1 -1
  39. package/dist/schema/ProposalDisposition.json +1 -1
  40. package/dist/schema/ProposalProjection.json +5 -6
  41. package/dist/schema/ProviderAccounting.json +3 -3
  42. package/dist/schema/ProviderCost.json +1 -1
  43. package/dist/schema/ProviderRequestAccounting.json +3 -3
  44. package/dist/schema/ProviderUsage.json +1 -1
  45. package/dist/schema/RangeExtent.json +1 -1
  46. package/dist/schema/ReasoningPolicy.json +7 -0
  47. package/dist/schema/ResourceSelection.json +3 -3
  48. package/dist/schema/SendBody.json +1 -1
  49. package/dist/schema/SkillDefinition.json +26 -0
  50. package/dist/schema/TextLineMarker.json +1 -1
  51. package/dist/schema/TextRegion.json +1 -1
  52. package/dist/src/AcpPlanValue.d.ts +7 -0
  53. package/dist/src/AcpPlanValue.d.ts.map +1 -0
  54. package/dist/src/AcpPlanValue.js +32 -0
  55. package/dist/src/AcpPlanValue.js.map +1 -0
  56. package/dist/src/AguiConformance.d.ts +11 -0
  57. package/dist/src/AguiConformance.d.ts.map +1 -0
  58. package/dist/src/AguiConformance.js +16 -0
  59. package/dist/src/AguiConformance.js.map +1 -0
  60. package/dist/src/ApplicationPort.d.ts +271 -0
  61. package/dist/src/ApplicationPort.d.ts.map +1 -0
  62. package/dist/src/ApplicationPort.js +2 -0
  63. package/dist/src/ApplicationPort.js.map +1 -0
  64. package/dist/src/AstBuilder.d.ts.map +1 -1
  65. package/dist/src/AstBuilder.js +44 -22
  66. package/dist/src/AstBuilder.js.map +1 -1
  67. package/dist/src/PlanValue.d.ts +10 -0
  68. package/dist/src/PlanValue.d.ts.map +1 -0
  69. package/dist/src/PlanValue.js +58 -0
  70. package/dist/src/PlanValue.js.map +1 -0
  71. package/dist/src/PlurnkErrorStrategy.d.ts.map +1 -1
  72. package/dist/src/PlurnkErrorStrategy.js +33 -19
  73. package/dist/src/PlurnkErrorStrategy.js.map +1 -1
  74. package/dist/src/PlurnkParser.js +3 -3
  75. package/dist/src/PlurnkParser.js.map +1 -1
  76. package/dist/src/Problems.js +1 -1
  77. package/dist/src/Validator.d.ts +68 -1
  78. package/dist/src/Validator.d.ts.map +1 -1
  79. package/dist/src/Validator.js +373 -0
  80. package/dist/src/Validator.js.map +1 -1
  81. package/dist/src/generated/plurnkLexer.d.ts +30 -28
  82. package/dist/src/generated/plurnkLexer.d.ts.map +1 -1
  83. package/dist/src/generated/plurnkLexer.js +398 -381
  84. package/dist/src/generated/plurnkLexer.js.map +1 -1
  85. package/dist/src/generated/plurnkParser.d.ts +56 -39
  86. package/dist/src/generated/plurnkParser.d.ts.map +1 -1
  87. package/dist/src/generated/plurnkParser.js +644 -450
  88. package/dist/src/generated/plurnkParser.js.map +1 -1
  89. package/dist/src/generated/plurnkParserVisitor.d.ts +7 -7
  90. package/dist/src/generated/plurnkParserVisitor.d.ts.map +1 -1
  91. package/dist/src/generated/plurnkParserVisitor.js +6 -6
  92. package/dist/src/generated/plurnkParserVisitor.js.map +1 -1
  93. package/dist/src/index.d.ts +7 -2
  94. package/dist/src/index.d.ts.map +1 -1
  95. package/dist/src/index.js +5 -2
  96. package/dist/src/index.js.map +1 -1
  97. package/dist/src/types.d.ts +2 -1
  98. package/dist/src/types.d.ts.map +1 -1
  99. package/dist/src/types.generated.d.ts +430 -21
  100. package/dist/src/types.generated.d.ts.map +1 -1
  101. package/dist/src/types.js +4 -0
  102. package/dist/src/types.js.map +1 -1
  103. package/package.json +7 -3
  104. package/plurnk.md +67 -78
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/PlurnkStatement.json",
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, body, suffix, 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, 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
  { "$ref": "#/$defs/FindStatement" },
8
8
  { "$ref": "#/$defs/ReadStatement" },
@@ -26,6 +26,9 @@
26
26
  { "type": "null" }
27
27
  ]
28
28
  },
29
+ "AnnotationOrNull": {
30
+ "type": ["string", "null"]
31
+ },
29
32
  "AppliedTagSignal": {
30
33
  "oneOf": [
31
34
  {
@@ -52,50 +55,51 @@
52
55
  },
53
56
  "PathOrNull": {
54
57
  "oneOf": [
55
- { "$ref": "https://schemas.plurnk.dev/v0/ParsedPath.json" },
58
+ { "$ref": "https://schemas.plurnk.xyz/v0/ParsedPath.json" },
56
59
  { "type": "null" }
57
60
  ]
58
61
  },
59
62
  "LineMarkerOrNull": {
60
63
  "oneOf": [
61
- { "$ref": "https://schemas.plurnk.dev/v0/LineMarker.json" },
64
+ { "$ref": "https://schemas.plurnk.xyz/v0/LineMarker.json" },
62
65
  { "type": "null" }
63
66
  ]
64
67
  },
65
68
  "TextLineMarkerOrNull": {
66
69
  "oneOf": [
67
- { "$ref": "https://schemas.plurnk.dev/v0/TextLineMarker.json" },
70
+ { "$ref": "https://schemas.plurnk.xyz/v0/TextLineMarker.json" },
68
71
  { "type": "null" }
69
72
  ]
70
73
  },
71
74
  "MatcherBodyOrNull": {
72
75
  "oneOf": [
73
- { "$ref": "https://schemas.plurnk.dev/v0/MatcherBody.json" },
76
+ { "$ref": "https://schemas.plurnk.xyz/v0/MatcherBody.json" },
74
77
  { "type": "null" }
75
78
  ]
76
79
  },
77
80
  "SendBodyOrNull": {
78
81
  "oneOf": [
79
- { "$ref": "https://schemas.plurnk.dev/v0/SendBody.json" },
82
+ { "$ref": "https://schemas.plurnk.xyz/v0/SendBody.json" },
80
83
  { "type": "null" }
81
84
  ]
82
85
  },
83
86
  "ResourceSelectionOrNull": {
84
87
  "oneOf": [
85
- { "$ref": "https://schemas.plurnk.dev/v0/ResourceSelection.json" },
88
+ { "$ref": "https://schemas.plurnk.xyz/v0/ResourceSelection.json" },
86
89
  { "type": "null" }
87
90
  ]
88
91
  },
89
92
  "PositionRef": {
90
- "$ref": "https://schemas.plurnk.dev/v0/Position.json"
93
+ "$ref": "https://schemas.plurnk.xyz/v0/Position.json"
91
94
  },
92
95
  "FindStatement": {
93
96
  "type": "object",
94
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
97
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
95
98
  "additionalProperties": false,
96
99
  "properties": {
97
100
  "op": { "const": "FIND" },
98
- "suffix": { "type": "string" },
101
+ "delimiter": { "type": "string" },
102
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
99
103
  "signal": { "$ref": "#/$defs/AppliedTagSignal" },
100
104
  "target": { "$ref": "#/$defs/PathOrNull" },
101
105
  "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
@@ -105,11 +109,12 @@
105
109
  },
106
110
  "ReadStatement": {
107
111
  "type": "object",
108
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
112
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
109
113
  "additionalProperties": false,
110
114
  "properties": {
111
115
  "op": { "const": "READ" },
112
- "suffix": { "type": "string" },
116
+ "delimiter": { "type": "string" },
117
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
113
118
  "signal": { "$ref": "#/$defs/AppliedTagSignal" },
114
119
  "target": { "$ref": "#/$defs/PathOrNull" },
115
120
  "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
@@ -119,39 +124,42 @@
119
124
  },
120
125
  "OpenStatement": {
121
126
  "type": "object",
122
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
127
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
123
128
  "additionalProperties": false,
124
129
  "properties": {
125
130
  "op": { "const": "OPEN" },
126
- "suffix": { "type": "string" },
131
+ "delimiter": { "type": "string" },
132
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
127
133
  "signal": { "$ref": "#/$defs/CurationTagSignal" },
128
134
  "target": { "$ref": "#/$defs/PathOrNull" },
129
- "lineMarker": { "type": "null" },
135
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
130
136
  "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
131
137
  "position": { "$ref": "#/$defs/PositionRef" }
132
138
  }
133
139
  },
134
140
  "FoldStatement": {
135
141
  "type": "object",
136
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
142
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
137
143
  "additionalProperties": false,
138
144
  "properties": {
139
145
  "op": { "const": "FOLD" },
140
- "suffix": { "type": "string" },
146
+ "delimiter": { "type": "string" },
147
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
141
148
  "signal": { "$ref": "#/$defs/CurationTagSignal" },
142
149
  "target": { "$ref": "#/$defs/PathOrNull" },
143
- "lineMarker": { "type": "null" },
150
+ "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
144
151
  "body": { "$ref": "#/$defs/MatcherBodyOrNull" },
145
152
  "position": { "$ref": "#/$defs/PositionRef" }
146
153
  }
147
154
  },
148
155
  "EditStatement": {
149
156
  "type": "object",
150
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
157
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
151
158
  "additionalProperties": false,
152
159
  "properties": {
153
160
  "op": { "const": "EDIT" },
154
- "suffix": { "type": "string" },
161
+ "delimiter": { "type": "string" },
162
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
155
163
  "signal": { "$ref": "#/$defs/AppliedTagSignal" },
156
164
  "target": { "$ref": "#/$defs/PathOrNull" },
157
165
  "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
@@ -161,11 +169,12 @@
161
169
  },
162
170
  "CopyStatement": {
163
171
  "type": "object",
164
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
172
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
165
173
  "additionalProperties": false,
166
174
  "properties": {
167
175
  "op": { "const": "COPY" },
168
- "suffix": { "type": "string" },
176
+ "delimiter": { "type": "string" },
177
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
169
178
  "signal": { "$ref": "#/$defs/AppliedTagSignal" },
170
179
  "target": { "$ref": "#/$defs/PathOrNull" },
171
180
  "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
@@ -175,11 +184,12 @@
175
184
  },
176
185
  "MoveStatement": {
177
186
  "type": "object",
178
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
187
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
179
188
  "additionalProperties": false,
180
189
  "properties": {
181
190
  "op": { "const": "MOVE" },
182
- "suffix": { "type": "string" },
191
+ "delimiter": { "type": "string" },
192
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
183
193
  "signal": { "$ref": "#/$defs/AppliedTagSignal" },
184
194
  "target": { "$ref": "#/$defs/PathOrNull" },
185
195
  "lineMarker": { "$ref": "#/$defs/TextLineMarkerOrNull" },
@@ -189,11 +199,12 @@
189
199
  },
190
200
  "SendStatement": {
191
201
  "type": "object",
192
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
202
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
193
203
  "additionalProperties": false,
194
204
  "properties": {
195
205
  "op": { "const": "SEND" },
196
- "suffix": { "type": "string" },
206
+ "delimiter": { "type": "string" },
207
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
197
208
  "signal": {
198
209
  "oneOf": [
199
210
  { "type": "number" },
@@ -208,11 +219,12 @@
208
219
  },
209
220
  "ExecStatement": {
210
221
  "type": "object",
211
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
222
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
212
223
  "additionalProperties": false,
213
224
  "properties": {
214
225
  "op": { "const": "EXEC" },
215
- "suffix": { "type": "string" },
226
+ "delimiter": { "type": "string" },
227
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
216
228
  "signal": { "type": ["string", "null"] },
217
229
  "target": { "$ref": "#/$defs/PathOrNull" },
218
230
  "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
@@ -222,11 +234,12 @@
222
234
  },
223
235
  "BareStatement": {
224
236
  "type": "object",
225
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
237
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
226
238
  "additionalProperties": false,
227
239
  "properties": {
228
240
  "op": { "const": "BARE" },
229
- "suffix": { "type": "string" },
241
+ "delimiter": { "type": "string" },
242
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
230
243
  "signal": { "$ref": "#/$defs/AppliedTagSignal" },
231
244
  "target": { "type": "null" },
232
245
  "lineMarker": { "type": "null" },
@@ -236,25 +249,27 @@
236
249
  },
237
250
  "PlanStatement": {
238
251
  "type": "object",
239
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
252
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
240
253
  "additionalProperties": false,
241
254
  "properties": {
242
255
  "op": { "const": "PLAN" },
243
- "suffix": { "type": "string" },
256
+ "delimiter": { "type": "string" },
257
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
244
258
  "signal": { "$ref": "#/$defs/TagSignal" },
245
259
  "target": { "$ref": "#/$defs/PathOrNull" },
246
260
  "lineMarker": { "$ref": "#/$defs/LineMarkerOrNull" },
247
- "body": { "type": ["string", "null"] },
261
+ "body": { "$ref": "https://schemas.plurnk.xyz/v0/Plan.json" },
248
262
  "position": { "$ref": "#/$defs/PositionRef" }
249
263
  }
250
264
  },
251
265
  "KillStatement": {
252
266
  "type": "object",
253
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
267
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
254
268
  "additionalProperties": false,
255
269
  "properties": {
256
270
  "op": { "const": "KILL" },
257
- "suffix": { "type": "string" },
271
+ "delimiter": { "type": "string" },
272
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
258
273
  "signal": {
259
274
  "oneOf": [
260
275
  { "type": "number" },
@@ -269,11 +284,12 @@
269
284
  },
270
285
  "WorkStatement": {
271
286
  "type": "object",
272
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
287
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
273
288
  "additionalProperties": false,
274
289
  "properties": {
275
290
  "op": { "const": "WORK" },
276
- "suffix": { "type": "string" },
291
+ "delimiter": { "type": "string" },
292
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
277
293
  "signal": {
278
294
  "oneOf": [
279
295
  { "type": "string", "minLength": 1 },
@@ -288,11 +304,12 @@
288
304
  },
289
305
  "ForkStatement": {
290
306
  "type": "object",
291
- "required": ["op", "suffix", "signal", "target", "lineMarker", "body", "position"],
307
+ "required": ["op", "delimiter", "annotation", "signal", "target", "lineMarker", "body", "position"],
292
308
  "additionalProperties": false,
293
309
  "properties": {
294
310
  "op": { "const": "FORK" },
295
- "suffix": { "type": "string" },
311
+ "delimiter": { "type": "string" },
312
+ "annotation": { "$ref": "#/$defs/AnnotationOrNull" },
296
313
  "signal": {
297
314
  "oneOf": [
298
315
  { "type": "string", "minLength": 1 },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/Position.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/Position.json",
4
4
  "title": "Position",
5
5
  "description": "A source point in parsed PLURNK input. Lines are 1-based; columns are 0-based Unicode code points. LF and CRLF delimit lines, while a lone CR occupies one column. The exact pair {line: 0, column: 0} is the sole unknown/degraded position.",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/ProblemDetails.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/ProblemDetails.json",
4
4
  "title": "ProblemDetails",
5
5
  "description": "PLURNK operation failure using RFC 9457 Problem Details. Extension members are permitted so an owning boundary can add structured causal and recovery facts without inventing a second error envelope.",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/ProposalDisposition.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/ProposalDisposition.json",
4
4
  "title": "ProposalDisposition",
5
5
  "description": "The one core-owned settlement decision for a pending proposal. Client-owned proposals require an external resolution; loop-owned proposals carry the exact automatic resolution core applies.",
6
6
  "oneOf": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/ProposalProjection.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/ProposalProjection.json",
4
4
  "title": "ProposalProjection",
5
5
  "description": "The runtime-neutral client-interface projection of one durable stopped-world proposal. Live delivery and reconnect discovery expose this same shape.",
6
6
  "type": "object",
@@ -14,7 +14,6 @@
14
14
  "body",
15
15
  "attrs",
16
16
  "flags",
17
- "staleClobberRisk",
18
17
  "disposition"
19
18
  ],
20
19
  "additionalProperties": false,
@@ -28,17 +27,17 @@
28
27
  },
29
28
  "target": {
30
29
  "type": "object",
31
- "required": ["scheme", "pathname"],
30
+ "required": ["scheme", "authority", "pathname"],
32
31
  "additionalProperties": false,
33
32
  "properties": {
34
33
  "scheme": { "type": ["string", "null"] },
34
+ "authority": { "type": ["string", "null"] },
35
35
  "pathname": { "type": ["string", "null"] }
36
36
  }
37
37
  },
38
38
  "body": { "type": "string" },
39
39
  "attrs": { "type": "object", "additionalProperties": true },
40
- "flags": { "$ref": "https://schemas.plurnk.dev/v0/LoopFlags.json" },
41
- "staleClobberRisk": { "type": "boolean" },
42
- "disposition": { "$ref": "https://schemas.plurnk.dev/v0/ProposalDisposition.json" }
40
+ "flags": { "$ref": "https://schemas.plurnk.xyz/v0/LoopFlags.json" },
41
+ "disposition": { "$ref": "https://schemas.plurnk.xyz/v0/ProposalDisposition.json" }
43
42
  }
44
43
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/ProviderAccounting.json",
3
+ "$id": "https://schemas.plurnk.xyz/ProviderAccounting.json",
4
4
  "title": "ProviderAccounting",
5
5
  "description": "Ordered physical provider-request evidence and its deterministic aggregate projection.",
6
6
  "type": "object",
@@ -9,11 +9,11 @@
9
9
  "properties": {
10
10
  "requests": {
11
11
  "type": "array",
12
- "items": { "$ref": "https://schemas.plurnk.dev/ProviderRequestAccounting.json" }
12
+ "items": { "$ref": "https://schemas.plurnk.xyz/ProviderRequestAccounting.json" }
13
13
  },
14
14
  "usage": {
15
15
  "oneOf": [
16
- { "$ref": "https://schemas.plurnk.dev/ProviderUsage.json" },
16
+ { "$ref": "https://schemas.plurnk.xyz/ProviderUsage.json" },
17
17
  { "type": "null" }
18
18
  ]
19
19
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/ProviderCost.json",
3
+ "$id": "https://schemas.plurnk.xyz/ProviderCost.json",
4
4
  "title": "ProviderCost",
5
5
  "description": "Normalized monetary evidence for one physical provider request. Unknown is never represented as zero.",
6
6
  "oneOf": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/ProviderRequestAccounting.json",
3
+ "$id": "https://schemas.plurnk.xyz/ProviderRequestAccounting.json",
4
4
  "title": "ProviderRequestAccounting",
5
5
  "description": "The normalized accounting disposition of one physical provider request.",
6
6
  "type": "object",
@@ -11,7 +11,7 @@
11
11
  "model": { "type": "string", "minLength": 1 },
12
12
  "outcome": { "enum": ["response", "error"] },
13
13
  "status": { "type": "integer", "minimum": 100, "maximum": 599 },
14
- "usage": { "$ref": "https://schemas.plurnk.dev/ProviderUsage.json" },
15
- "cost": { "$ref": "https://schemas.plurnk.dev/ProviderCost.json" }
14
+ "usage": { "$ref": "https://schemas.plurnk.xyz/ProviderUsage.json" },
15
+ "cost": { "$ref": "https://schemas.plurnk.xyz/ProviderCost.json" }
16
16
  }
17
17
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/ProviderUsage.json",
3
+ "$id": "https://schemas.plurnk.xyz/ProviderUsage.json",
4
4
  "title": "ProviderUsage",
5
5
  "description": "Known token quantities for one provider request. Omitted fields are unknown; explicit zero is observed or exactly derived.",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/RangeExtent.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/RangeExtent.json",
4
4
  "title": "RangeExtent",
5
5
  "description": "A compact projection of one line or ordered-result selection. Requested and returned positions are inclusive; total is the complete available cardinality.",
6
6
  "type": "object",
@@ -0,0 +1,7 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.plurnk.xyz/v0/ReasoningPolicy.json",
4
+ "title": "ReasoningPolicy",
5
+ "description": "The portable durable reasoning intent shared by provider, runtime, and client boundaries.",
6
+ "enum": ["off", "adaptive", "low", "medium", "high"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/ResourceSelection.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/ResourceSelection.json",
4
4
  "title": "ResourceSelection",
5
5
  "description": "A COPY/MOVE destination target and optional text scope. A target without a fragment selects the scheme's default channel; a fragment selects a named channel; lineMarker scopes the selected destination content.",
6
6
  "type": "object",
@@ -8,11 +8,11 @@
8
8
  "additionalProperties": false,
9
9
  "properties": {
10
10
  "target": {
11
- "$ref": "https://schemas.plurnk.dev/v0/ParsedPath.json"
11
+ "$ref": "https://schemas.plurnk.xyz/v0/ParsedPath.json"
12
12
  },
13
13
  "lineMarker": {
14
14
  "oneOf": [
15
- { "$ref": "https://schemas.plurnk.dev/v0/TextLineMarker.json" },
15
+ { "$ref": "https://schemas.plurnk.xyz/v0/TextLineMarker.json" },
16
16
  { "type": "null" }
17
17
  ]
18
18
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/SendBody.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/SendBody.json",
4
4
  "title": "SendBody",
5
5
  "description": "Parsed body of a SEND statement. `raw` is the literal body text; `json` is the best-effort `JSON.parse(raw)` result, or null when the body isn't valid JSON.",
6
6
  "type": "object",
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.plurnk.xyz/v0/SkillDefinition.json",
4
+ "title": "SkillDefinition",
5
+ "description": "One standard Agent Skill as the Worker Functionality coordinator persists it: the skill's standard name, the universal root that holds (or will hold) its directory, and — for a Worker-installed skill — the standard installer package reference it came from.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["name", "scope"],
9
+ "properties": {
10
+ "name": {
11
+ "description": "The standard Agent Skills name: lowercase words joined by single hyphens, equal to the skill's directory name.",
12
+ "type": "string",
13
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$",
14
+ "maxLength": 64
15
+ },
16
+ "scope": {
17
+ "description": "The universal Agent Skills root: the project's `.agents/skills` or the user's `~/.agents/skills`.",
18
+ "enum": ["project", "global"]
19
+ },
20
+ "source": {
21
+ "description": "The standard installer package reference (`owner/repo`, a git URL, or a local path) that provides the skill; required to add a skill that is not yet installed.",
22
+ "type": "string",
23
+ "minLength": 1
24
+ }
25
+ }
26
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/TextLineMarker.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/TextLineMarker.json",
4
4
  "title": "TextLineMarker",
5
5
  "description": "The ordered components parsed from a text-coordinate <scope>. A line position may be numeric or a rendered five-character Base62 line anchor; columns remain numeric. Core resolves anchors against the addressed current text before a numeric scope reaches its operation owner.",
6
6
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://schemas.plurnk.dev/v0/TextRegion.json",
3
+ "$id": "https://schemas.plurnk.xyz/v0/TextRegion.json",
4
4
  "title": "TextRegion",
5
5
  "description": "A contiguous region of text. Lines and Unicode code-point columns are 1-based; the start is included and the end is excluded.",
6
6
  "type": "object",
@@ -0,0 +1,7 @@
1
+ import type { AcpPlan } from "./types.ts";
2
+ export declare const ACP_MEMORY_PREFIX = "Memory: ";
3
+ export default class AcpPlanValue {
4
+ static project(value: unknown): AcpPlan;
5
+ static assertCanonical(value: unknown): AcpPlan;
6
+ }
7
+ //# sourceMappingURL=AcpPlanValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcpPlanValue.d.ts","sourceRoot":"","sources":["../../src/AcpPlanValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,YAAY,CAAC;AAIxD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAI5C,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAgBtC;IAED,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK9C;CAEJ"}
@@ -0,0 +1,32 @@
1
+ import PlanValue from "./PlanValue.js";
2
+ import Validator from "./Validator.js";
3
+ export const ACP_MEMORY_PREFIX = "Memory: ";
4
+ // The standards boundary for Plurnk's model-native Plan. Internal state remains
5
+ // untouched; only an ACP consumer receives this deliberately lossy projection.
6
+ export default class AcpPlanValue {
7
+ static project(value) {
8
+ const plan = PlanValue.assertCanonical(value);
9
+ const projected = {
10
+ entries: plan.map((entry) => {
11
+ const { status, ...rest } = entry;
12
+ if (status !== "memory")
13
+ return { ...rest, status };
14
+ return {
15
+ ...rest,
16
+ content: entry.content.startsWith(ACP_MEMORY_PREFIX)
17
+ ? entry.content
18
+ : `${ACP_MEMORY_PREFIX}${entry.content}`,
19
+ status: "completed",
20
+ };
21
+ }),
22
+ };
23
+ return AcpPlanValue.assertCanonical(projected);
24
+ }
25
+ static assertCanonical(value) {
26
+ if (!Validator.validateAcpPlan(value).valid) {
27
+ throw new TypeError("Expected a canonical ACP Plan.");
28
+ }
29
+ return value;
30
+ }
31
+ }
32
+ //# sourceMappingURL=AcpPlanValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AcpPlanValue.js","sourceRoot":"","sources":["../../src/AcpPlanValue.ts"],"names":[],"mappings":"AACA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAEvC,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE5C,gFAAgF;AAChF,+EAA+E;AAC/E,MAAM,CAAC,OAAO,OAAO,YAAY;IAC7B,MAAM,CAAC,OAAO,CAAC,KAAc;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG;YACd,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAgB,EAAE;gBACtC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;gBAClC,IAAI,MAAM,KAAK,QAAQ;oBAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC;gBACpD,OAAO;oBACH,GAAG,IAAI;oBACP,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC;wBAChD,CAAC,CAAC,KAAK,CAAC,OAAO;wBACf,CAAC,CAAC,GAAG,iBAAiB,GAAG,KAAK,CAAC,OAAO,EAAE;oBAC5C,MAAM,EAAE,WAAW;iBACtB,CAAC;YACN,CAAC,CAAC;SACa,CAAC;QACpB,OAAO,YAAY,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,KAAc;QACjC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM,IAAI,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,KAAgB,CAAC;IAC5B,CAAC;CAEJ"}
@@ -0,0 +1,11 @@
1
+ import type { Dimensions } from "./types.generated.ts";
2
+ export interface AguiConformanceRow {
3
+ readonly kind: "action" | "notification";
4
+ readonly name: string;
5
+ readonly posture: "native" | "generic" | "unsupported";
6
+ readonly dimensions: Dimensions;
7
+ readonly evidence: readonly string[];
8
+ readonly reason?: string;
9
+ }
10
+ export declare const aguiConformanceReport: (discoveryValue: unknown, conformanceValue: unknown) => AguiConformanceRow[];
11
+ //# sourceMappingURL=AguiConformance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AguiConformance.d.ts","sourceRoot":"","sources":["../../src/AguiConformance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,WAAW,kBAAkB;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,qBAAqB,mBACd,OAAO,oBACL,OAAO,KAC1B,kBAAkB,EAmBpB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import Validator from "./Validator.js";
2
+ export const aguiConformanceReport = (discoveryValue, conformanceValue) => {
3
+ const conformance = Validator.assertAguiClientConformance(discoveryValue, conformanceValue);
4
+ const rows = (kind, label) => Object.entries(conformance[kind])
5
+ .toSorted(([left], [right]) => left.localeCompare(right))
6
+ .map(([name, disposition]) => ({
7
+ kind: label,
8
+ name,
9
+ posture: disposition.posture,
10
+ dimensions: disposition.dimensions,
11
+ evidence: disposition.evidence,
12
+ ...(disposition.posture === "unsupported" ? { reason: disposition.reason } : {}),
13
+ }));
14
+ return [...rows("actions", "action"), ...rows("notifications", "notification")];
15
+ };
16
+ //# sourceMappingURL=AguiConformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AguiConformance.js","sourceRoot":"","sources":["../../src/AguiConformance.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAYvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACjC,cAAuB,EACvB,gBAAyB,EACL,EAAE;IACtB,MAAM,WAAW,GAAG,SAAS,CAAC,2BAA2B,CACrD,cAAc,EACd,gBAAgB,CACnB,CAAC;IACF,MAAM,IAAI,GAAG,CACT,IAAU,EACV,KAAiC,EACb,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACvD,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACxD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,KAAK;QACX,IAAI;QACJ,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnF,CAAC,CAAC,CAAC;IACR,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;AACpF,CAAC,CAAC"}