@plurnk/plurnk-contracts 1.16.5 → 1.18.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 (92) hide show
  1. package/README.md +13 -62
  2. package/SPEC.md +633 -529
  3. package/dist/conformance/agui-v1.json +3 -50
  4. package/dist/schema/CapabilityDescriptor.json +6 -1
  5. package/dist/schema/CapabilityProjection.json +2 -4
  6. package/dist/schema/CapabilitySelector.json +6 -1
  7. package/dist/schema/ClientStatement.json +5 -52
  8. package/dist/schema/FunctionalityDefinitionState.json +10 -2
  9. package/dist/schema/LineMarker.json +1 -1
  10. package/dist/schema/LoopPolicy.json +2 -3
  11. package/dist/schema/MatcherBody.json +6 -6
  12. package/dist/schema/McpServerDefinition.json +17 -0
  13. package/dist/schema/ModelCatalogPage.json +10 -1
  14. package/dist/schema/ModelRoute.json +9 -0
  15. package/dist/schema/Notice.json +1 -1
  16. package/dist/schema/ParsedPath.json +3 -2
  17. package/dist/schema/Plan.json +10 -6
  18. package/dist/schema/PlurnkStatement.json +95 -143
  19. package/dist/schema/ProposalProjection.json +6 -1
  20. package/dist/schema/ResourceSelection.json +51 -27
  21. package/dist/schema/SkillDefinition.json +3 -3
  22. package/dist/src/AcpPlanValue.d.ts +0 -1
  23. package/dist/src/AcpPlanValue.d.ts.map +1 -1
  24. package/dist/src/AcpPlanValue.js +14 -13
  25. package/dist/src/AcpPlanValue.js.map +1 -1
  26. package/dist/src/ApplicationPort.d.ts +17 -14
  27. package/dist/src/ApplicationPort.d.ts.map +1 -1
  28. package/dist/src/JsonDocument.d.ts +2 -0
  29. package/dist/src/JsonDocument.d.ts.map +1 -0
  30. package/dist/src/JsonDocument.js +14 -0
  31. package/dist/src/JsonDocument.js.map +1 -0
  32. package/dist/src/LoopLifecycle.d.ts +3 -0
  33. package/dist/src/LoopLifecycle.d.ts.map +1 -0
  34. package/dist/src/LoopLifecycle.js +14 -0
  35. package/dist/src/LoopLifecycle.js.map +1 -0
  36. package/dist/src/PlanValue.d.ts +1 -1
  37. package/dist/src/PlanValue.d.ts.map +1 -1
  38. package/dist/src/PlanValue.js +10 -6
  39. package/dist/src/PlanValue.js.map +1 -1
  40. package/dist/src/PlurnkParseError.d.ts +3 -1
  41. package/dist/src/PlurnkParseError.d.ts.map +1 -1
  42. package/dist/src/PlurnkParseError.js +4 -1
  43. package/dist/src/PlurnkParseError.js.map +1 -1
  44. package/dist/src/TurnDisposition.d.ts +11 -0
  45. package/dist/src/TurnDisposition.d.ts.map +1 -0
  46. package/dist/src/TurnDisposition.js +32 -0
  47. package/dist/src/TurnDisposition.js.map +1 -0
  48. package/dist/src/Validator.js +1 -1
  49. package/dist/src/Validator.js.map +1 -1
  50. package/dist/src/index.d.ts +5 -4
  51. package/dist/src/index.d.ts.map +1 -1
  52. package/dist/src/index.js +5 -5
  53. package/dist/src/index.js.map +1 -1
  54. package/dist/src/types.d.ts +13 -8
  55. package/dist/src/types.d.ts.map +1 -1
  56. package/dist/src/types.generated.d.ts +172 -86
  57. package/dist/src/types.generated.d.ts.map +1 -1
  58. package/dist/src/types.js +9 -4
  59. package/dist/src/types.js.map +1 -1
  60. package/package.json +5 -23
  61. package/plurnk.md +106 -119
  62. package/bin/plurnk-contracts.js +0 -43
  63. package/dist/plurnk.gemma.gbnf +0 -141
  64. package/dist/plurnk.qwen.gbnf +0 -130
  65. package/dist/src/AstBuilder.d.ts +0 -20
  66. package/dist/src/AstBuilder.d.ts.map +0 -1
  67. package/dist/src/AstBuilder.js +0 -723
  68. package/dist/src/AstBuilder.js.map +0 -1
  69. package/dist/src/PlurnkErrorStrategy.d.ts +0 -11
  70. package/dist/src/PlurnkErrorStrategy.d.ts.map +0 -1
  71. package/dist/src/PlurnkErrorStrategy.js +0 -358
  72. package/dist/src/PlurnkErrorStrategy.js.map +0 -1
  73. package/dist/src/PlurnkParser.d.ts +0 -11
  74. package/dist/src/PlurnkParser.d.ts.map +0 -1
  75. package/dist/src/PlurnkParser.js +0 -335
  76. package/dist/src/PlurnkParser.js.map +0 -1
  77. package/dist/src/RecordingListener.d.ts +0 -9
  78. package/dist/src/RecordingListener.d.ts.map +0 -1
  79. package/dist/src/RecordingListener.js +0 -19
  80. package/dist/src/RecordingListener.js.map +0 -1
  81. package/dist/src/generated/plurnkLexer.d.ts +0 -174
  82. package/dist/src/generated/plurnkLexer.d.ts.map +0 -1
  83. package/dist/src/generated/plurnkLexer.js +0 -1215
  84. package/dist/src/generated/plurnkLexer.js.map +0 -1
  85. package/dist/src/generated/plurnkParser.d.ts +0 -477
  86. package/dist/src/generated/plurnkParser.d.ts.map +0 -1
  87. package/dist/src/generated/plurnkParser.js +0 -3298
  88. package/dist/src/generated/plurnkParser.js.map +0 -1
  89. package/dist/src/generated/plurnkParserVisitor.d.ts +0 -284
  90. package/dist/src/generated/plurnkParserVisitor.d.ts.map +0 -1
  91. package/dist/src/generated/plurnkParserVisitor.js +0 -245
  92. package/dist/src/generated/plurnkParserVisitor.js.map +0 -1
@@ -185,7 +185,10 @@ export interface MimetypeDisplayCapability {
185
185
  display: CapabilityDisplay;
186
186
  }
187
187
  export interface CapabilityDescriptor {
188
- operation: ("FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SEND" | "EXEC" | "BARE" | "WORK" | "FORK" | "KILL");
188
+ /**
189
+ * An operation keyword, or a runtime tag: an execution's operation is its runtime.
190
+ */
191
+ operation: "FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SEND" | "BARE" | "WORK" | "FORK" | "KILL" | Lowercase<string>;
189
192
  scheme?: string;
190
193
  runtime?: string;
191
194
  tool?: string;
@@ -200,7 +203,10 @@ export interface CapabilityPolicy {
200
203
  * One exact, conjunctive selector over a routed PLURNK capability demand. Omitted fields are wildcards; at least one field is required.
201
204
  */
202
205
  export interface CapabilitySelector {
203
- operation?: ("FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SEND" | "EXEC" | "BARE" | "WORK" | "FORK" | "KILL");
206
+ /**
207
+ * An operation keyword, or a runtime tag: an execution's operation is its runtime.
208
+ */
209
+ operation?: "FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SEND" | "BARE" | "WORK" | "FORK" | "KILL" | Lowercase<string>;
204
210
  scheme?: string;
205
211
  runtime?: string;
206
212
  tool?: string;
@@ -213,8 +219,6 @@ export interface CapabilitySelector {
213
219
  export interface CapabilityProjection {
214
220
  service: CapabilityPolicy;
215
221
  workspace: CapabilityPolicy;
216
- workerBound: CapabilityPolicy;
217
- worker: CapabilityPolicy;
218
222
  effective: CapabilityPolicy;
219
223
  }
220
224
  /**
@@ -246,48 +250,54 @@ export type ClientInteractionResolution = ({
246
250
  } | {
247
251
  status: "cancelled";
248
252
  });
249
- export type ClientStatement = (PlurnkStatement | LookStatement | BuffStatement);
253
+ export type ClientStatement = (PlurnkStatement | LookStatement);
250
254
  /**
251
- * 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.
255
+ * The parsed AST union for one protocol statement, discriminated by `op`. Every variant has fixed signal, target, metadata, lineMarker, aside, body, and source-position fields, and the text and log operations add a matcher lifted from the `pattern` option; operation-specific schemas constrain their types. A null field records an omitted tolerated slot and does not satisfy runtime requirements by itself.
252
256
  */
253
- export type PlurnkStatement = (FindStatement | ReadStatement | EditStatement | CopyStatement | MoveStatement | SendStatement | ExecStatement | BareStatement | WorkStatement | ForkStatement | KillStatement | PlanStatement);
257
+ export type PlurnkStatement = (FindStatement | ReadStatement | EditStatement | CopyStatement | MoveStatement | SendStatement | ExecStatement | BareStatement | WorkStatement | ForkStatement | KillStatement | DispositionStatement);
254
258
  /**
255
259
  * A parsed target slot from a plurnk statement. Discriminated on `kind`: a bare local path or a WHATWG-decomposed URL. Targets carry an exact address or a path glob; content matching belongs in the statement body.
256
260
  */
257
261
  export type ParsedPath = (LocalPath | UrlPath);
258
262
  /**
259
- * 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.
263
+ * 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, `~` full-text, `&` graph, else glob). The regex variant carries pattern and flags split out of the `/pattern/flags` literal; every variant remains JSON-serializable.
260
264
  */
261
- export type MatcherBody = (XPathBody | RegexBody | JsonPathBody | SemanticBody | GraphBody | GlobBody);
265
+ export type MatcherBody = (XPathBody | RegexBody | JsonPathBody | FtsBody | GraphBody | GlobBody);
262
266
  /**
263
- * Plurnk's complete model-native working-memory Plan entries.
267
+ * Plurnk's model-native task inventory.
264
268
  */
265
269
  export type Plan = PlanEntry[];
266
- export type AnnotationOrNull = (string | null);
270
+ export type AsideOrNull = (string | null);
267
271
  export type SchemeMetadataOrNull = (string[] | null);
268
272
  export type PathOrNull = (ParsedPath | null);
269
273
  export type TextLineMarkerOrNull = (TextLineMarker | null);
270
274
  export type MatcherBodyOrNull = (MatcherBody | null);
271
- export type LineMarkerOrNull = (LineMarker | null);
272
275
  export interface FindStatement {
273
276
  op: "FIND";
274
- delimiter: string;
275
- annotation: (string | null);
277
+ aside: (string | null);
276
278
  /**
277
279
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
278
280
  */
279
281
  metadata: (string[] | null);
280
282
  target: (ParsedPath | null);
281
283
  lineMarker: (LineMarker | null);
282
- body: (MatcherBody | null);
284
+ /**
285
+ * The selection matcher lifted from the heading's `[{"pattern": …}]` option ({§matcher-option}); null when the heading carries none.
286
+ */
287
+ matcher: (MatcherBody | null);
288
+ /**
289
+ * FIND takes no body; its matcher is the `pattern` option.
290
+ */
291
+ body: null;
283
292
  position: Position;
284
293
  }
285
294
  /**
286
- * A bare local path with no `scheme://` prefix. The raw string is stored verbatim; resolution is the runtime's job.
295
+ * A bare local path with no `scheme://` prefix. `raw` is the path as authored, minus any `#channel`, which is `fragment` exactly as on a URL; resolution is the runtime's job.
287
296
  */
288
297
  export interface LocalPath {
289
298
  kind: "local";
290
299
  raw: string;
300
+ fragment?: (string | null);
291
301
  }
292
302
  /**
293
303
  * A path with a `scheme://` prefix, fully decomposed via WHATWG URL.
@@ -308,7 +318,7 @@ export interface UrlPath {
308
318
  fragment: (string | null);
309
319
  }
310
320
  /**
311
- * The ordered numeric components parsed from a `<scope>` slot. AstBuilder converts each lexical number to a JavaScript number; the operation owner assigns arity and meaning, including text coordinates, result positions, timing, mutation anchors, and an optional leading semantic threshold.
321
+ * The ordered numeric components parsed from a `<scope>` slot. AstBuilder converts each lexical number to a JavaScript number; the operation owner assigns arity and meaning, including text coordinates, result positions, timing, and mutation anchors.
312
322
  */
313
323
  export interface LineMarker {
314
324
  /**
@@ -340,10 +350,10 @@ export interface JsonPathBody {
340
350
  raw: string;
341
351
  }
342
352
  /**
343
- * Semantic similarity query. Body is `~phrase`: natural language after the tilde, with no parse step. Similarity thresholds and result ranges belong to the statement's scope; resolution happens service-side through the configured embedding implementation.
353
+ * Native SQLite FTS5 query after the `~` prefix. SQLite owns query validation, tokenization, matching and ranking; the statement's scope selects ordinary result positions.
344
354
  */
345
- export interface SemanticBody {
346
- dialect: "semantic";
355
+ export interface FtsBody {
356
+ dialect: "fts";
347
357
  raw: string;
348
358
  }
349
359
  /**
@@ -369,14 +379,17 @@ export interface Position {
369
379
  }
370
380
  export interface ReadStatement {
371
381
  op: "READ";
372
- delimiter: string;
373
- annotation: (string | null);
382
+ aside: (string | null);
374
383
  /**
375
384
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
376
385
  */
377
386
  metadata: (string[] | null);
378
387
  target: (ParsedPath | null);
379
388
  lineMarker: (TextLineMarker | null);
389
+ /**
390
+ * The selection matcher lifted from the heading's `[{"pattern": …}]` option ({§matcher-option}); null when the heading carries none.
391
+ */
392
+ matcher: (MatcherBody | null);
380
393
  body: null;
381
394
  position: Position;
382
395
  }
@@ -391,21 +404,23 @@ export interface TextLineMarker {
391
404
  }
392
405
  export interface EditStatement {
393
406
  op: "EDIT";
394
- delimiter: string;
395
- annotation: (string | null);
407
+ aside: (string | null);
396
408
  /**
397
409
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
398
410
  */
399
411
  metadata: (string[] | null);
400
412
  target: (ParsedPath | null);
401
413
  lineMarker: (TextLineMarker | null);
414
+ /**
415
+ * The selection matcher lifted from the heading's `[{"pattern": …}]` option ({§matcher-option}); null when the heading carries none.
416
+ */
417
+ matcher: (MatcherBody | null);
402
418
  body: (string | null);
403
419
  position: Position;
404
420
  }
405
421
  export interface CopyStatement {
406
422
  op: "COPY";
407
- delimiter: string;
408
- annotation: (string | null);
423
+ aside: (string | null);
409
424
  source: ResourceSelection;
410
425
  destination: ResourceSelection;
411
426
  position: Position;
@@ -420,19 +435,21 @@ export interface ResourceSelection {
420
435
  */
421
436
  metadata: (string[] | null);
422
437
  lineMarker: (TextLineMarker | null);
438
+ /**
439
+ * The selection matcher lifted from the operand's `[{"pattern": …}]` option; meaningful on the source operand, refused by the owner on a destination.
440
+ */
441
+ matcher: (MatcherBody | null);
423
442
  }
424
443
  export interface MoveStatement {
425
444
  op: "MOVE";
426
- delimiter: string;
427
- annotation: (string | null);
445
+ aside: (string | null);
428
446
  source: ResourceSelection;
429
447
  destination: ResourceSelection;
430
448
  position: Position;
431
449
  }
432
450
  export interface SendStatement {
433
451
  op: "SEND";
434
- delimiter: string;
435
- annotation: (string | null);
452
+ aside: (string | null);
436
453
  /**
437
454
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
438
455
  */
@@ -441,10 +458,6 @@ export interface SendStatement {
441
458
  lineMarker: (LineMarker | null);
442
459
  body: (SendBody | null);
443
460
  position: Position;
444
- /**
445
- * The turn disposition the label names ({§send-label}): NEXT 102, WAIT 202, TERM 200, FAIL 499; null for a mid-turn message to a recipient.
446
- */
447
- status: ((102 | 200 | 202 | 499) | null);
448
461
  }
449
462
  /**
450
463
  * 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.
@@ -454,17 +467,19 @@ export interface SendBody {
454
467
  json: unknown;
455
468
  }
456
469
  export interface ExecStatement {
457
- op: "EXEC";
458
- delimiter: string;
459
- annotation: (string | null);
460
470
  /**
461
- * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
471
+ * The runtime tag the fence names, in its registered lowercase spelling. An execution has no operation keyword: the fence name is the runtime, and the log row's op shows it as written.
462
472
  */
463
- metadata: (string[] | null);
473
+ runtime: Lowercase<string>;
464
474
  /**
465
- * The `[executor]` slot: the registered executor that runs the program; null is the default shell.
475
+ * Never present: an execution is named by its runtime.
466
476
  */
467
- executor: (string | null);
477
+ op?: never;
478
+ aside: (string | null);
479
+ /**
480
+ * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
481
+ */
482
+ metadata: (string[] | null);
468
483
  target: (ParsedPath | null);
469
484
  lineMarker: (LineMarker | null);
470
485
  body: (string | null);
@@ -472,21 +487,19 @@ export interface ExecStatement {
472
487
  }
473
488
  export interface BareStatement {
474
489
  op: "BARE";
475
- delimiter: string;
476
- annotation: (string | null);
490
+ aside: (string | null);
477
491
  /**
478
492
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
479
493
  */
480
494
  metadata: (string[] | null);
481
- target: null;
495
+ target: (ParsedPath | null);
482
496
  lineMarker: null;
483
497
  body: string;
484
498
  position: Position;
485
499
  }
486
500
  export interface WorkStatement {
487
501
  op: "WORK";
488
- delimiter: string;
489
- annotation: (string | null);
502
+ aside: (string | null);
490
503
  /**
491
504
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
492
505
  */
@@ -498,8 +511,7 @@ export interface WorkStatement {
498
511
  }
499
512
  export interface ForkStatement {
500
513
  op: "FORK";
501
- delimiter: string;
502
- annotation: (string | null);
514
+ aside: (string | null);
503
515
  /**
504
516
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
505
517
  */
@@ -511,8 +523,7 @@ export interface ForkStatement {
511
523
  }
512
524
  export interface KillStatement {
513
525
  op: "KILL";
514
- delimiter: string;
515
- annotation: (string | null);
526
+ aside: (string | null);
516
527
  /**
517
528
  * Opaque ordered scheme-metadata modifier blocks. Contracts preserve each block's raw inner text; the addressed scheme exclusively owns interpretation and validation.
518
529
  */
@@ -523,23 +534,26 @@ export interface KillStatement {
523
534
  */
524
535
  lineMarker: (TextLineMarker | null);
525
536
  /**
526
- * A body pattern selects log items for a scoped KILL, as a FIND body does ({§kill-scope}); null otherwise.
537
+ * The selection matcher lifted from the heading's `[{"pattern": …}]` option ({§matcher-option}); null when the heading carries none.
527
538
  */
528
- body: (MatcherBody | null);
539
+ matcher: (MatcherBody | null);
540
+ /**
541
+ * KILL takes no body; its matcher is the `pattern` option.
542
+ */
543
+ body: null;
529
544
  position: Position;
530
545
  }
531
- export interface PlanStatement {
532
- op: "PLAN";
533
- delimiter: string;
534
- annotation: (string | null);
546
+ export interface DispositionStatement {
547
+ op: "TASK";
548
+ aside: (string | null);
535
549
  metadata: null;
536
550
  target: null;
537
- lineMarker: null;
551
+ lineMarker: (LineMarker | null);
538
552
  body: Plan;
539
553
  position: Position;
540
554
  }
541
555
  /**
542
- * One finding, task, or goal in the model's working-memory plan.
556
+ * One task or goal in the model's plan.
543
557
  */
544
558
  export interface PlanEntry {
545
559
  /**
@@ -549,7 +563,7 @@ export interface PlanEntry {
549
563
  /**
550
564
  * The current execution status of this task.
551
565
  */
552
- status: ("pending" | "in_progress" | "completed" | "memory");
566
+ status: ("todo" | "in_progress" | "waiting" | "completed" | "failed");
553
567
  /**
554
568
  * Opaque entry metadata preserved through standards projection.
555
569
  */
@@ -559,24 +573,13 @@ export interface PlanEntry {
559
573
  }
560
574
  export interface LookStatement {
561
575
  op: "LOOK";
562
- delimiter: string;
563
- annotation: AnnotationOrNull;
576
+ aside: AsideOrNull;
564
577
  metadata: SchemeMetadataOrNull;
565
578
  target: PathOrNull;
566
579
  lineMarker: TextLineMarkerOrNull;
567
580
  body: MatcherBodyOrNull;
568
581
  position: Position;
569
582
  }
570
- export interface BuffStatement {
571
- op: "BUFF";
572
- delimiter: string;
573
- annotation: AnnotationOrNull;
574
- metadata: SchemeMetadataOrNull;
575
- target: PathOrNull;
576
- lineMarker: LineMarkerOrNull;
577
- body: MatcherBodyOrNull;
578
- position: Position;
579
- }
580
583
  export type EntryReadResult = ({
581
584
  status: 200;
582
585
  entry: ClientEntry;
@@ -656,12 +659,19 @@ export interface FunctionalityCandidate {
656
659
  }
657
660
  export type FunctionalityDefinitionState = {
658
661
  alias: string;
659
- origin: ("service" | "worker");
662
+ /**
663
+ * Who owns this definition: the service baseline, the workspace, or one worker. A worker-scoped family (env) owns its definitions per worker, so origin names ownership rather than scope.
664
+ */
665
+ origin: ("service" | "workspace" | "worker");
660
666
  /**
661
667
  * disabled: available, model-invisible. active: enabled and prepared. unavailable: enabled but preparation has an exact Problem. authorization-required: enabled and awaiting a protocol continuation.
662
668
  */
663
669
  state: ("disabled" | "active" | "unavailable" | "authorization-required");
664
670
  definition?: {};
671
+ /**
672
+ * The Worker this entry was copied from when this Worker was created (WORK or FORK), preserved across generations until this Worker changes the entry. Absent for an entry this Worker set itself. Worker-scoped families only.
673
+ */
674
+ inherited?: string;
665
675
  /**
666
676
  * Family-owned presentation facts about an active definition (a server's protocol version and tool names, an agent card summary). Never credentials, never authority.
667
677
  */
@@ -707,28 +717,51 @@ export interface FunctionalityMutationResult {
707
717
  * 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.
708
718
  */
709
719
  export interface LoopPolicy {
710
- capabilities: CapabilityPolicy;
711
720
  proposals: ("review" | "accept" | "reject");
712
721
  }
713
- /**
714
- * One purely subtractive capability-policy layer. Deny wins; when only is present, a demand must match at least one selector.
715
- */
716
722
  export interface McpConfigurationOverlay {
717
723
  [k: string]: string;
718
724
  }
719
725
  export type McpServerDefinition = {
726
+ /**
727
+ * Server alias: the runtime tag whose fence invokes it, and its resource scheme.
728
+ */
720
729
  name: string;
730
+ /**
731
+ * stdio launches a local command; http connects to a remote MCP endpoint.
732
+ */
721
733
  transport: ("stdio" | "http");
734
+ /**
735
+ * Executable to launch for stdio; arguments belong in args.
736
+ */
722
737
  command?: string;
738
+ /**
739
+ * Arguments passed to the stdio executable in order.
740
+ */
723
741
  args?: string[];
742
+ /**
743
+ * Working directory for the stdio process.
744
+ */
724
745
  cwd?: string;
746
+ /**
747
+ * Environment overrides for the stdio process; values may reference ${ENV_NAME}.
748
+ */
725
749
  env?: {
726
750
  [k: string]: string;
727
751
  };
752
+ /**
753
+ * HTTP MCP endpoint URL.
754
+ */
728
755
  url?: string;
756
+ /**
757
+ * HTTP request headers; values may reference ${ENV_NAME}. Authorization cannot also be configured here when authorization is set.
758
+ */
729
759
  headers?: {
730
760
  [k: string]: string;
731
761
  };
762
+ /**
763
+ * HTTP authentication. Secret fields reference the operator environment rather than embedding credentials.
764
+ */
732
765
  authorization?: ({
733
766
  type: "bearer";
734
767
  token: EnvironmentReference;
@@ -754,13 +787,28 @@ export type McpServerDefinition = {
754
787
  scope?: string;
755
788
  issuer?: string;
756
789
  });
790
+ /**
791
+ * Exact enabled tool names; omitted enables all tools, an empty array enables none.
792
+ */
757
793
  tools?: string[];
794
+ /**
795
+ * Exact tool names the operator designates as read effects rather than host effects requiring proposal review.
796
+ */
758
797
  read?: string[];
759
798
  };
799
+ /**
800
+ * An operator environment variable reference such as ${GITEA_TOKEN}, never a literal secret.
801
+ */
760
802
  export type EnvironmentReference = string;
761
803
  export type McpServerArguments = string[];
804
+ /**
805
+ * HTTP authentication. Secret fields reference the operator environment rather than embedding credentials.
806
+ */
762
807
  export type McpServerAuthorization = ({
763
808
  type: "bearer";
809
+ /**
810
+ * An operator environment variable reference such as ${GITEA_TOKEN}, never a literal secret.
811
+ */
764
812
  token: string;
765
813
  } | {
766
814
  type: "oauth";
@@ -771,6 +819,9 @@ export type McpServerAuthorization = ({
771
819
  type: "oauth";
772
820
  redirectUrl: string;
773
821
  clientId: string;
822
+ /**
823
+ * An operator environment variable reference such as ${GITEA_TOKEN}, never a literal secret.
824
+ */
774
825
  clientSecret: string;
775
826
  scope?: string;
776
827
  } | {
@@ -780,14 +831,26 @@ export type McpServerAuthorization = ({
780
831
  } | {
781
832
  type: "client-credentials";
782
833
  clientId: string;
834
+ /**
835
+ * An operator environment variable reference such as ${GITEA_TOKEN}, never a literal secret.
836
+ */
783
837
  clientSecret: string;
784
838
  scope?: string;
785
839
  issuer?: string;
786
840
  });
841
+ /**
842
+ * Exact enabled tool names; omitted enables all tools, an empty array enables none.
843
+ */
787
844
  export type McpServerToolNames = string[];
845
+ /**
846
+ * Exact tool names the operator designates as read effects rather than host effects requiring proposal review.
847
+ */
788
848
  export type McpServerReadTools = string[];
789
849
  export interface McpServerOptions {
790
850
  args?: McpServerArguments;
851
+ /**
852
+ * Working directory for the stdio process.
853
+ */
791
854
  cwd?: string;
792
855
  env?: McpServerEnvironment;
793
856
  headers?: McpServerHeaders;
@@ -795,12 +858,22 @@ export interface McpServerOptions {
795
858
  tools?: McpServerToolNames;
796
859
  read?: McpServerReadTools;
797
860
  }
861
+ /**
862
+ * Environment overrides for the stdio process; values may reference ${ENV_NAME}.
863
+ */
798
864
  export interface McpServerEnvironment {
799
865
  [k: string]: string;
800
866
  }
867
+ /**
868
+ * HTTP request headers; values may reference ${ENV_NAME}. Authorization cannot also be configured here when authorization is set.
869
+ */
801
870
  export interface McpServerHeaders {
802
871
  [k: string]: string;
803
872
  }
873
+ export type ReasoningPolicy = ("off" | "adaptive" | "low" | "medium" | "high" | "xhigh" | "max");
874
+ /**
875
+ * One deterministic bounded page from the release-pinned model catalog.
876
+ */
804
877
  export interface ModelCatalogPage {
805
878
  /**
806
879
  * @maxItems 100
@@ -828,6 +901,12 @@ export interface ModelCatalogLimits {
828
901
  export interface ModelCatalogCapabilities {
829
902
  attachment: boolean;
830
903
  reasoning: boolean;
904
+ /**
905
+ * Portable reasoning policies admitted for this exact route by the installed provider adapter and provider-wide operator declarations; not a worker's combined model/spawn policy intersection.
906
+ *
907
+ * @minItems 1
908
+ */
909
+ reasoningPolicies: [ReasoningPolicy, ...(ReasoningPolicy)[]];
831
910
  toolCall: boolean;
832
911
  structuredOutput?: boolean;
833
912
  temperature?: boolean;
@@ -857,15 +936,15 @@ export interface ModelCatalogQuery {
857
936
  offset?: number;
858
937
  limit?: number;
859
938
  }
860
- export type ReasoningPolicy = ("off" | "adaptive" | "low" | "medium" | "high" | "xhigh" | "max");
861
- /**
862
- * A client-visible resolved provider/model identity. Alias is present only when a declared alias supplied the route; provider configuration remains private to the daemon. reasoningPolicy is the worker's durable effort selection — absent when the model has no reasoning dimension.
863
- */
864
939
  export interface ModelRoute {
865
940
  alias?: string;
866
941
  provider: string;
867
942
  model: string;
868
943
  reasoningPolicy?: ReasoningPolicy;
944
+ /**
945
+ * Whether reasoningPolicy was chosen through worker.reasoning.set (explicit) or seeded from the alias configuration (default). Present exactly when reasoningPolicy is.
946
+ */
947
+ reasoningSource?: ("default" | "explicit");
869
948
  }
870
949
  export interface Notice {
871
950
  /**
@@ -873,7 +952,7 @@ export interface Notice {
873
952
  */
874
953
  source: string;
875
954
  /**
876
- * Open discriminator within a source. Examples include `grammar_unenforced`, `embed_progress`, `search_progress`, and `turn_awaiting_model`.
955
+ * Open discriminator within a source. Examples include `grammar_unenforced`, `search_progress`, and `turn_awaiting_model`.
877
956
  */
878
957
  kind: string;
879
958
  /**
@@ -937,9 +1016,13 @@ export interface RangeExtent {
937
1016
  requested: RequestedRange;
938
1017
  returned?: ReturnedRange;
939
1018
  }
1019
+ export type LineMarkerOrNull = (LineMarker | null);
1020
+ /**
1021
+ * 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, `~` full-text, `&` graph, else glob). The regex variant carries pattern and flags split out of the `/pattern/flags` literal; every variant remains JSON-serializable.
1022
+ */
940
1023
  export type SendBodyOrNull = (SendBody | null);
941
1024
  /**
942
- * Plurnk's complete model-native working-memory Plan entries.
1025
+ * Plurnk's model-native task inventory.
943
1026
  */
944
1027
  export interface ProblemProjection {
945
1028
  /**
@@ -979,7 +1062,10 @@ export interface ProposalProjection {
979
1062
  workerId: number;
980
1063
  loopId: number;
981
1064
  turnId: number;
982
- op: ("FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SEND" | "EXEC" | "BARE" | "WORK" | "FORK" | "KILL" | "PLAN");
1065
+ /**
1066
+ * An operation keyword, or a runtime tag: an execution's operation is its runtime.
1067
+ */
1068
+ op: "FIND" | "READ" | "EDIT" | "COPY" | "MOVE" | "SEND" | "BARE" | "WORK" | "FORK" | "KILL" | "TASK" | Lowercase<string>;
983
1069
  target: {
984
1070
  scheme: (string | null);
985
1071
  authority: (string | null);
@@ -993,7 +1079,7 @@ export interface ProposalProjection {
993
1079
  disposition: ProposalDisposition;
994
1080
  }
995
1081
  /**
996
- * The complete immutable policy snapshot for one loop. Capability admission precedes proposal disposition.
1082
+ * The immutable proposal disposition for one loop. Workspace capability admission precedes proposals.
997
1083
  */
998
1084
  export type ProviderCost = ({
999
1085
  kind: "charged";
@@ -1060,9 +1146,9 @@ export interface SkillDefinition {
1060
1146
  */
1061
1147
  name: string;
1062
1148
  /**
1063
- * The universal Agent Skills root: the project's `.agents/skills` or the user's `~/.agents/skills`.
1149
+ * Source: project `.agents/skills`, global `~/.agents/skills`, or a service-provided resource tree. Service sources are not installer targets.
1064
1150
  */
1065
- scope: ("project" | "global");
1151
+ scope: ("project" | "global" | "service");
1066
1152
  /**
1067
1153
  * 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.
1068
1154
  */