@independo/inderun-contracts 0.4.0 → 0.5.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/generated/execution-provenance.d.ts +1 -1
  2. package/dist/generated/execution-provenance.d.ts.map +1 -1
  3. package/dist/generated/inderun-error.d.ts +1 -1
  4. package/dist/generated/inderun-error.d.ts.map +1 -1
  5. package/dist/generated/index.d.ts +3 -0
  6. package/dist/generated/index.d.ts.map +1 -1
  7. package/dist/generated/provider-capability-snapshot.d.ts +370 -0
  8. package/dist/generated/provider-capability-snapshot.d.ts.map +1 -0
  9. package/dist/generated/provider-capability-snapshot.js +2 -0
  10. package/dist/generated/provider-descriptor.d.ts +264 -0
  11. package/dist/generated/provider-descriptor.d.ts.map +1 -0
  12. package/dist/generated/provider-descriptor.js +2 -0
  13. package/dist/generated/provider-dynamic-capabilities.d.ts +99 -0
  14. package/dist/generated/provider-dynamic-capabilities.d.ts.map +1 -0
  15. package/dist/generated/provider-dynamic-capabilities.js +2 -0
  16. package/dist/generated/route-plan.d.ts +47 -3
  17. package/dist/generated/route-plan.d.ts.map +1 -1
  18. package/dist/generated/route-planner-input.d.ts +417 -32
  19. package/dist/generated/route-planner-input.d.ts.map +1 -1
  20. package/dist/generated/schemas.d.ts +458 -85
  21. package/dist/generated/schemas.d.ts.map +1 -1
  22. package/dist/generated/schemas.js +549 -104
  23. package/dist/generated/stream-event.d.ts +1 -1
  24. package/dist/generated/stream-event.d.ts.map +1 -1
  25. package/dist/generated/stream-terminal-outcome.d.ts +1 -1
  26. package/dist/generated/stream-terminal-outcome.d.ts.map +1 -1
  27. package/dist/generated/task-result.d.ts +1 -1
  28. package/dist/generated/task-result.d.ts.map +1 -1
  29. package/dist/index.d.ts +4 -4
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +2 -2
  32. package/dist/types.d.ts +7 -1
  33. package/dist/types.d.ts.map +1 -1
  34. package/dist/validators.d.ts +9 -0
  35. package/dist/validators.d.ts.map +1 -1
  36. package/dist/validators.js +24 -1
  37. package/package.json +1 -1
  38. package/src/generated/execution-provenance.ts +1 -1
  39. package/src/generated/inderun-error.ts +1 -1
  40. package/src/generated/index.ts +3 -0
  41. package/src/generated/provider-capability-snapshot.ts +388 -0
  42. package/src/generated/provider-descriptor.ts +278 -0
  43. package/src/generated/provider-dynamic-capabilities.ts +103 -0
  44. package/src/generated/route-plan.ts +49 -3
  45. package/src/generated/route-planner-input.ts +437 -36
  46. package/src/generated/schemas.ts +552 -104
  47. package/src/generated/stream-event.ts +1 -1
  48. package/src/generated/stream-terminal-outcome.ts +1 -1
  49. package/src/generated/task-result.ts +1 -1
  50. package/src/index.ts +13 -1
  51. package/src/types.ts +7 -0
  52. package/src/validators.ts +39 -0
@@ -413,15 +413,79 @@ export declare const routePlannerInputSchema: {
413
413
  readonly required: readonly ["task", "constraints", "preferences", "providers"];
414
414
  readonly properties: {
415
415
  readonly task: {
416
- readonly description: "Minimal task descriptor for provider task matching.";
416
+ readonly description: "Task descriptor for provider task matching: the kind plus the requirements routing can check against declared capabilities. Absent requirement fields are never checked, so a text request carries the kind alone.";
417
417
  readonly type: "object";
418
418
  readonly additionalProperties: true;
419
419
  readonly required: readonly ["kind"];
420
420
  readonly properties: {
421
421
  readonly kind: {
422
+ readonly description: "The task kind, matched against the providers' task capabilities.";
422
423
  readonly type: "string";
423
424
  readonly minLength: 1;
424
425
  };
426
+ readonly inputs: {
427
+ readonly description: "Input media kinds the request carries. Every one must be accepted by the provider's task capability. The SDKs send ['text'] for text_to_text.";
428
+ readonly type: "array";
429
+ readonly items: {
430
+ readonly $ref: "provider-descriptor.schema.json#/$defs/inputKind";
431
+ };
432
+ };
433
+ readonly delivery: {
434
+ readonly title: "DeliveryRequirement";
435
+ readonly description: "The output delivery the request requires. Absent for text, whose delivery is implicitly inline.";
436
+ readonly type: "object";
437
+ readonly additionalProperties: true;
438
+ readonly required: readonly ["mode"];
439
+ readonly properties: {
440
+ readonly mode: {
441
+ readonly $ref: "provider-descriptor.schema.json#/$defs/outputDelivery";
442
+ };
443
+ readonly mediaTypes: {
444
+ readonly description: "Acceptable media types; the provider must declare at least one for the requested delivery. Absent means any.";
445
+ readonly type: "array";
446
+ readonly items: {
447
+ readonly type: "string";
448
+ readonly minLength: 1;
449
+ };
450
+ };
451
+ };
452
+ };
453
+ readonly locale: {
454
+ readonly title: "LocaleRequirement";
455
+ readonly description: "The locale the request requires. Under 'language' matching the region is a preference: a provider known to offer the exact tag ranks ahead of an otherwise equal one. A provider that cannot enumerate its locales is not rejected on this basis; it must fail before committing instead.";
456
+ readonly type: "object";
457
+ readonly additionalProperties: true;
458
+ readonly required: readonly ["tag", "match"];
459
+ readonly properties: {
460
+ readonly tag: {
461
+ readonly description: "BCP 47 tag.";
462
+ readonly type: "string";
463
+ readonly minLength: 1;
464
+ };
465
+ readonly match: {
466
+ readonly title: "LocaleMatch";
467
+ readonly description: "'exact' requires the full tag; 'language' requires only the primary language subtag and treats the region as a preference.";
468
+ readonly enum: readonly ["exact", "language"];
469
+ };
470
+ };
471
+ };
472
+ readonly voice: {
473
+ readonly title: "VoiceRequirement";
474
+ readonly description: "Voice traits the request asks for. Only a 'required' voice can reject a provider; a 'preferred' one shapes which listed voice the plan binds a candidate to, always within the request's privacy policy.";
475
+ readonly type: "object";
476
+ readonly additionalProperties: true;
477
+ readonly required: readonly ["requirement"];
478
+ readonly properties: {
479
+ readonly gender: {
480
+ readonly $ref: "provider-dynamic-capabilities.schema.json#/$defs/voiceGender";
481
+ };
482
+ readonly requirement: {
483
+ readonly title: "RequirementLevel";
484
+ readonly description: "'required' takes part in routing; 'preferred' does not.";
485
+ readonly enum: readonly ["required", "preferred"];
486
+ };
487
+ };
488
+ };
425
489
  };
426
490
  };
427
491
  readonly interactionMode: {
@@ -481,7 +545,7 @@ export declare const routePlannerInputSchema: {
481
545
  };
482
546
  };
483
547
  readonly providers: {
484
- readonly description: "Static descriptors plus dynamic capability snapshots for planning.";
548
+ readonly description: "Static descriptors plus dynamic capability checks for planning. Both shapes are the provider schemas themselves, shared by $ref, so the planner reads exactly what checkCapabilities() reports.";
485
549
  readonly type: "array";
486
550
  readonly items: {
487
551
  readonly type: "object";
@@ -489,88 +553,12 @@ export declare const routePlannerInputSchema: {
489
553
  readonly required: readonly ["descriptor", "capabilities"];
490
554
  readonly properties: {
491
555
  readonly descriptor: {
492
- readonly type: "object";
493
- readonly additionalProperties: true;
494
- readonly required: readonly ["id", "type", "supports", "tasks"];
495
- readonly properties: {
496
- readonly id: {
497
- readonly type: "string";
498
- readonly minLength: 1;
499
- };
500
- readonly type: {
501
- readonly enum: readonly ["local", "edge", "cloud"];
502
- };
503
- readonly supports: {
504
- readonly type: "object";
505
- readonly additionalProperties: true;
506
- readonly required: readonly ["run"];
507
- readonly properties: {
508
- readonly run: {
509
- readonly type: "boolean";
510
- };
511
- readonly streaming: {
512
- readonly description: "Whether the provider statically declares Mode-2 streaming. Absent is treated as false: a descriptor that predates this field cannot be assumed to stream.";
513
- readonly type: "boolean";
514
- };
515
- };
516
- };
517
- readonly cancel: {
518
- readonly description: "Cancellation guarantee the provider offers. Carried for route explanations and telemetry; the planner does not filter on it.";
519
- readonly enum: readonly ["hard", "soft", "none"];
520
- };
521
- readonly tasks: {
522
- readonly type: "array";
523
- readonly items: {
524
- readonly type: "string";
525
- readonly minLength: 1;
526
- };
527
- };
528
- readonly privacy: {
529
- readonly description: "Descriptor privacy metadata used to enforce local/cloud routing rules.";
530
- readonly type: "object";
531
- readonly additionalProperties: true;
532
- readonly required: readonly ["dataLeavesDevice"];
533
- readonly properties: {
534
- readonly dataLeavesDevice: {
535
- readonly type: "boolean";
536
- };
537
- readonly regions: {
538
- readonly type: "array";
539
- readonly items: {
540
- readonly type: "string";
541
- readonly minLength: 1;
542
- };
543
- };
544
- };
545
- };
546
- };
556
+ readonly description: "The provider's static capability declaration.";
557
+ readonly $ref: "provider-descriptor.schema.json";
547
558
  };
548
559
  readonly capabilities: {
549
- readonly type: "object";
550
- readonly additionalProperties: true;
551
- readonly required: readonly ["available"];
552
- readonly properties: {
553
- readonly available: {
554
- readonly type: "boolean";
555
- };
556
- readonly reason: {
557
- readonly type: "string";
558
- readonly minLength: 1;
559
- };
560
- readonly streamingAvailable: {
561
- readonly description: "Whether the provider can stream right now in this host environment. Absent inherits the static descriptor.supports.streaming value.";
562
- readonly type: "boolean";
563
- };
564
- readonly streamingUnavailableReason: {
565
- readonly description: "Human-readable explanation used when streamingAvailable is false. Absent lets the planner synthesize a default message.";
566
- readonly type: "string";
567
- readonly minLength: 1;
568
- };
569
- readonly cancellationAvailable: {
570
- readonly description: "Whether cancellation is honored right now in this host environment. Absent inherits the static descriptor.cancel value (any value other than 'none' means available).";
571
- readonly type: "boolean";
572
- };
573
- };
560
+ readonly description: "The provider's live capability check, already folded by the engine (for example, streamingAvailable is false when the provider declares streaming but does not implement it).";
561
+ readonly $ref: "provider-dynamic-capabilities.schema.json";
574
562
  };
575
563
  };
576
564
  };
@@ -615,6 +603,10 @@ export declare const routePlanSchema: {
615
603
  readonly type: "integer";
616
604
  readonly minimum: 0;
617
605
  };
606
+ readonly voice: {
607
+ readonly description: "The voice this candidate must use if it is attempted, chosen by the planner from the provider's dynamic voice inventory. It is the best voice that satisfies the request's locale, required voice traits and privacy — under local-required privacy always one that keeps data on the device — ranked by preferred gender, then exact locale region, then on-device before network. The adapter must use a voice with exactly these traits. Absent when the request names no locale or voice, or the provider does not list its voices; the adapter then chooses itself under the same rules.";
608
+ readonly $ref: "provider-dynamic-capabilities.schema.json#/$defs/voice";
609
+ };
618
610
  };
619
611
  };
620
612
  };
@@ -638,8 +630,8 @@ export declare const routePlanSchema: {
638
630
  readonly required: readonly ["code", "message"];
639
631
  readonly properties: {
640
632
  readonly code: {
641
- readonly description: "Normalized rejection reason. 'streaming_not_supported' means the descriptor does not statically declare Mode-2 streaming; 'streaming_unavailable' means it declares streaming but the dynamic capability snapshot reports it cannot stream in the current host environment. 'not_in_model_profile' means the request named a model profile that does not list this provider.";
642
- readonly enum: readonly ["task_not_supported", "run_not_supported", "streaming_not_supported", "streaming_unavailable", "privacy_constraint", "cloud_constraint", "offline", "capability_unavailable", "not_in_model_profile"];
633
+ readonly description: "Normalized rejection reason. 'streaming_not_supported' means the descriptor does not statically declare Mode-2 streaming; 'streaming_unavailable' means it declares streaming but the dynamic capability snapshot reports it cannot stream in the current host environment. 'not_in_model_profile' means the request named a model profile that does not list this provider. 'input_not_supported', 'output_delivery_not_supported', 'output_format_not_supported', 'locale_not_supported' and 'voice_not_available' mean the provider's task capability lacks an input kind, output delivery, media type, locale or voice the request requires.";
634
+ readonly enum: readonly ["task_not_supported", "run_not_supported", "streaming_not_supported", "streaming_unavailable", "privacy_constraint", "cloud_constraint", "offline", "capability_unavailable", "not_in_model_profile", "input_not_supported", "output_delivery_not_supported", "output_format_not_supported", "locale_not_supported", "voice_not_available"];
643
635
  };
644
636
  readonly message: {
645
637
  readonly type: "string";
@@ -1409,6 +1401,387 @@ export declare const streamTerminalOutcomeSchema: {
1409
1401
  };
1410
1402
  }];
1411
1403
  };
1404
+ export declare const providerCapabilitySnapshotSchema: {
1405
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1406
+ readonly $id: "https://schemas.inderun.dev/1.0/provider-capability-snapshot.schema.json";
1407
+ readonly title: "ProviderCapabilitySnapshot";
1408
+ readonly description: "One registered provider's identity, static declaration and live capability check, as returned by checkCapabilities(). A read-only snapshot: producing it executes no task and has no side effects.";
1409
+ readonly type: "object";
1410
+ readonly additionalProperties: true;
1411
+ readonly required: readonly ["providerId", "descriptor", "capabilities"];
1412
+ readonly properties: {
1413
+ readonly providerId: {
1414
+ readonly description: "Identifier of the provider; equal to descriptor.id.";
1415
+ readonly type: "string";
1416
+ readonly minLength: 1;
1417
+ };
1418
+ readonly descriptor: {
1419
+ readonly description: "The provider's static capability declaration.";
1420
+ readonly $ref: "provider-descriptor.schema.json";
1421
+ };
1422
+ readonly capabilities: {
1423
+ readonly description: "The provider's live capability check at the time of the call.";
1424
+ readonly $ref: "provider-dynamic-capabilities.schema.json";
1425
+ };
1426
+ };
1427
+ };
1428
+ export declare const providerDescriptorSchema: {
1429
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1430
+ readonly $id: "https://schemas.inderun.dev/1.0/provider-descriptor.schema.json";
1431
+ readonly title: "ProviderDescriptor";
1432
+ readonly description: "A provider's static capability declaration: identity, placement, transport, supported interaction modes and tasks, cancellation guarantee, resource limits and privacy posture. It does not change while the provider is registered. The route planner, checkCapabilities() and execution provenance all read this one shape.";
1433
+ readonly type: "object";
1434
+ readonly additionalProperties: true;
1435
+ readonly required: readonly ["id", "type", "transport", "supports", "cancel", "tasks"];
1436
+ readonly properties: {
1437
+ readonly id: {
1438
+ readonly description: "Unique identifier of the provider instance (a target), e.g. 'apple_foundation_models' or 'openai_compatible_cloud:gpt-5-mini'. Model profiles list targets by this id.";
1439
+ readonly type: "string";
1440
+ readonly minLength: 1;
1441
+ };
1442
+ readonly type: {
1443
+ readonly title: "ProviderType";
1444
+ readonly description: "Execution placement: 'local' (on the device), 'edge', or 'cloud'.";
1445
+ readonly enum: readonly ["local", "edge", "cloud"];
1446
+ };
1447
+ readonly model: {
1448
+ readonly description: "The model this provider instance is bound to, when it can name one. Cloud providers report the model id they send; platform-managed models report an opaque platform alias rather than a guessed weight name. Absent means the provider cannot name its model.";
1449
+ readonly type: "string";
1450
+ readonly minLength: 1;
1451
+ };
1452
+ readonly transport: {
1453
+ readonly title: "ProviderTransport";
1454
+ readonly description: "How the engine reaches the provider: in-process runtime, operating-system service, buffered HTTP, server-sent events, or a realtime connection.";
1455
+ readonly enum: readonly ["in_process", "system_service", "http", "sse", "realtime"];
1456
+ };
1457
+ readonly streamingStyle: {
1458
+ readonly title: "StreamingStyle";
1459
+ readonly description: "How a streaming provider delivers incremental output: individual tokens, larger chunks, or whole snapshots. Absent for providers that do not stream.";
1460
+ readonly enum: readonly ["tokens", "chunks", "snapshots"];
1461
+ };
1462
+ readonly supports: {
1463
+ readonly title: "ProviderSupports";
1464
+ readonly description: "Interaction modes and features the provider statically declares.";
1465
+ readonly type: "object";
1466
+ readonly additionalProperties: true;
1467
+ readonly required: readonly ["run", "streaming", "realtime", "tools", "reasoningEvents", "structuredOutput", "multimodal"];
1468
+ readonly properties: {
1469
+ readonly run: {
1470
+ readonly description: "Whether the provider supports Mode 1 run (request/response).";
1471
+ readonly type: "boolean";
1472
+ };
1473
+ readonly streaming: {
1474
+ readonly description: "Whether the provider supports Mode 2 stream. A provider that declares it must also implement the streaming adapter; the engines report it as unavailable otherwise.";
1475
+ readonly type: "boolean";
1476
+ };
1477
+ readonly realtime: {
1478
+ readonly description: "Whether the provider supports Mode 3 realtime sessions. Reserved; no engine implements Mode 3 yet.";
1479
+ readonly type: "boolean";
1480
+ };
1481
+ readonly tools: {
1482
+ readonly description: "Whether the provider supports tool calling.";
1483
+ readonly type: "boolean";
1484
+ };
1485
+ readonly reasoningEvents: {
1486
+ readonly description: "Whether the provider emits reasoning events alongside content.";
1487
+ readonly type: "boolean";
1488
+ };
1489
+ readonly structuredOutput: {
1490
+ readonly description: "Whether the provider supports structured output constrained by a JSON schema.";
1491
+ readonly type: "boolean";
1492
+ };
1493
+ readonly multimodal: {
1494
+ readonly description: "Whether the provider accepts non-text inputs such as images or audio.";
1495
+ readonly type: "boolean";
1496
+ };
1497
+ };
1498
+ };
1499
+ readonly cancel: {
1500
+ readonly title: "CancelSemantics";
1501
+ readonly description: "Cancellation guarantee: 'hard' stops processing including remote work, 'soft' stops reading locally while remote work may continue, 'none' means cancellation is unsupported. Independently of this value, the engine delivers no event after a cancel.";
1502
+ readonly enum: readonly ["hard", "soft", "none"];
1503
+ };
1504
+ readonly tasks: {
1505
+ readonly description: "Task kinds the provider supports, e.g. 'text_to_text'. When taskCapabilities is present it must describe the same kinds and is what routing reads; without it, routing infers capabilities for 'text_to_text' alone (see taskCapabilities).";
1506
+ readonly type: "array";
1507
+ readonly items: {
1508
+ readonly type: "string";
1509
+ readonly minLength: 1;
1510
+ };
1511
+ };
1512
+ readonly limits: {
1513
+ readonly title: "ProviderLimits";
1514
+ readonly description: "Optional input and output resource limits.";
1515
+ readonly type: "object";
1516
+ readonly additionalProperties: true;
1517
+ readonly properties: {
1518
+ readonly maxInputTokens: {
1519
+ readonly description: "Largest accepted input, in tokens.";
1520
+ readonly type: "integer";
1521
+ readonly minimum: 1;
1522
+ };
1523
+ readonly maxOutputTokens: {
1524
+ readonly description: "Largest output the provider produces, in tokens.";
1525
+ readonly type: "integer";
1526
+ readonly minimum: 1;
1527
+ };
1528
+ readonly maxImageBytes: {
1529
+ readonly description: "Largest accepted image, in bytes.";
1530
+ readonly type: "integer";
1531
+ readonly minimum: 1;
1532
+ };
1533
+ readonly maxAudioSeconds: {
1534
+ readonly description: "Longest accepted or produced audio, in seconds.";
1535
+ readonly type: "integer";
1536
+ readonly minimum: 1;
1537
+ };
1538
+ };
1539
+ };
1540
+ readonly privacy: {
1541
+ readonly title: "ProviderPrivacy";
1542
+ readonly description: "Data-egress posture, used to enforce local and cloud routing rules. Absent means a local or edge provider is treated as keeping data on the device and a cloud provider as sending it off.";
1543
+ readonly type: "object";
1544
+ readonly additionalProperties: true;
1545
+ readonly required: readonly ["dataLeavesDevice"];
1546
+ readonly properties: {
1547
+ readonly dataLeavesDevice: {
1548
+ readonly description: "Whether request content leaves the device.";
1549
+ readonly type: "boolean";
1550
+ };
1551
+ readonly regions: {
1552
+ readonly description: "Geographic regions where a cloud provider processes data.";
1553
+ readonly type: "array";
1554
+ readonly items: {
1555
+ readonly type: "string";
1556
+ readonly minLength: 1;
1557
+ };
1558
+ };
1559
+ };
1560
+ };
1561
+ readonly taskCapabilities: {
1562
+ readonly description: "What the provider can do for each task: accepted inputs, interaction modes, output deliveries and formats, cancellation, locales and privacy. When present it is authoritative for routing and must list every task the provider serves. When absent (a legacy descriptor), routing infers exactly one entry — 'text_to_text' with text input, inline output, run/stream from supports and cancel from cancel — if tasks contains 'text_to_text', and nothing for any other task: a legacy descriptor is never treated as capable of a non-text task.";
1563
+ readonly type: "array";
1564
+ readonly items: {
1565
+ readonly $ref: "#/$defs/taskCapability";
1566
+ };
1567
+ };
1568
+ };
1569
+ readonly $defs: {
1570
+ readonly taskCapability: {
1571
+ readonly title: "ProviderTaskCapability";
1572
+ readonly description: "The provider's static capabilities for one task kind.";
1573
+ readonly type: "object";
1574
+ readonly additionalProperties: true;
1575
+ readonly required: readonly ["kind", "inputs", "interaction", "cancel", "outputs"];
1576
+ readonly properties: {
1577
+ readonly kind: {
1578
+ readonly description: "The task kind this entry describes, e.g. 'text_to_speech'.";
1579
+ readonly type: "string";
1580
+ readonly minLength: 1;
1581
+ };
1582
+ readonly inputs: {
1583
+ readonly description: "Input media kinds the provider accepts for this task.";
1584
+ readonly type: "array";
1585
+ readonly minItems: 1;
1586
+ readonly items: {
1587
+ readonly $ref: "#/$defs/inputKind";
1588
+ };
1589
+ };
1590
+ readonly interaction: {
1591
+ readonly title: "ProviderTaskInteraction";
1592
+ readonly description: "Interaction modes the provider supports for this task.";
1593
+ readonly type: "object";
1594
+ readonly additionalProperties: true;
1595
+ readonly required: readonly ["run", "stream"];
1596
+ readonly properties: {
1597
+ readonly run: {
1598
+ readonly description: "Whether the provider supports Mode 1 run for this task.";
1599
+ readonly type: "boolean";
1600
+ };
1601
+ readonly stream: {
1602
+ readonly description: "Whether the provider supports Mode 2 stream for this task.";
1603
+ readonly type: "boolean";
1604
+ };
1605
+ };
1606
+ };
1607
+ readonly cancel: {
1608
+ readonly description: "Cancellation guarantee for this task. It may differ from the provider-level cancel, e.g. when stopping playback is immediate but a synthesis request cannot be aborted.";
1609
+ readonly $ref: "#/properties/cancel";
1610
+ };
1611
+ readonly outputs: {
1612
+ readonly description: "How results of this task can be delivered. A provider lists only what it really produces: a provider that can only play audio lists 'playback' and never 'artifact'.";
1613
+ readonly type: "array";
1614
+ readonly minItems: 1;
1615
+ readonly items: {
1616
+ readonly $ref: "#/$defs/taskOutput";
1617
+ };
1618
+ };
1619
+ readonly locales: {
1620
+ readonly description: "BCP 47 locales the provider can serve for this task, when it knows them statically. Absent means unknown; the dynamic check may report them instead.";
1621
+ readonly type: "array";
1622
+ readonly items: {
1623
+ readonly type: "string";
1624
+ readonly minLength: 1;
1625
+ };
1626
+ };
1627
+ readonly privacy: {
1628
+ readonly description: "Data-egress posture for this task when it differs from the provider-level privacy, e.g. a provider whose speech synthesis uses a network service. Absent inherits descriptor.privacy.";
1629
+ readonly $ref: "#/properties/privacy";
1630
+ };
1631
+ };
1632
+ };
1633
+ readonly taskOutput: {
1634
+ readonly title: "ProviderTaskOutput";
1635
+ readonly description: "One way the provider can deliver a task's result.";
1636
+ readonly type: "object";
1637
+ readonly additionalProperties: true;
1638
+ readonly required: readonly ["delivery"];
1639
+ readonly properties: {
1640
+ readonly delivery: {
1641
+ readonly $ref: "#/$defs/outputDelivery";
1642
+ };
1643
+ readonly mediaTypes: {
1644
+ readonly description: "Media types the provider can produce with this delivery, e.g. 'audio/wav'. Absent means the provider does not declare them; a request that requires specific media types never routes to such an output.";
1645
+ readonly type: "array";
1646
+ readonly items: {
1647
+ readonly type: "string";
1648
+ readonly minLength: 1;
1649
+ };
1650
+ };
1651
+ };
1652
+ };
1653
+ readonly inputKind: {
1654
+ readonly title: "TaskInputKind";
1655
+ readonly description: "A kind of input medium a task consumes.";
1656
+ readonly enum: readonly ["text", "image", "audio"];
1657
+ };
1658
+ readonly outputDelivery: {
1659
+ readonly title: "OutputDelivery";
1660
+ readonly description: "How a task's result reaches the application: 'inline' content in the result (text), 'playback' as a managed, audible effect on the device with no retrievable bytes, or 'artifact' as retrievable media.";
1661
+ readonly enum: readonly ["inline", "playback", "artifact"];
1662
+ };
1663
+ };
1664
+ };
1665
+ export declare const providerDynamicCapabilitiesSchema: {
1666
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1667
+ readonly $id: "https://schemas.inderun.dev/1.0/provider-dynamic-capabilities.schema.json";
1668
+ readonly title: "ProviderDynamicCapabilities";
1669
+ readonly $comment: "streamingAvailable and cancellationAvailable are tri-state on purpose: true, false, or absent. Absent means 'inherit the static declaration' and is a distinct state from both booleans. They must never become nullable: null would be a fourth state no consumer handles, and bridges omit the key specifically to preserve 'absent'.";
1670
+ readonly description: "A provider's live capability check, evaluated on the current host when routing or when checkCapabilities() is called. Unlike the descriptor it can change between calls.";
1671
+ readonly type: "object";
1672
+ readonly additionalProperties: true;
1673
+ readonly required: readonly ["available"];
1674
+ readonly properties: {
1675
+ readonly available: {
1676
+ readonly description: "Whether the provider is available and functional on this host right now.";
1677
+ readonly type: "boolean";
1678
+ };
1679
+ readonly reason: {
1680
+ readonly description: "Why the provider is unavailable, when available is false.";
1681
+ readonly type: "string";
1682
+ readonly minLength: 1;
1683
+ };
1684
+ readonly streamingAvailable: {
1685
+ readonly description: "Whether the provider can stream (Mode 2) on this host right now. Absent inherits the static descriptor.supports.streaming value; only set it when the host takes streaming away from a provider that otherwise declares it. Never null.";
1686
+ readonly type: "boolean";
1687
+ };
1688
+ readonly streamingUnavailableReason: {
1689
+ readonly description: "Why streaming is unavailable, when streamingAvailable is false. Absent lets the route planner synthesize a default message.";
1690
+ readonly type: "string";
1691
+ readonly minLength: 1;
1692
+ };
1693
+ readonly cancellationAvailable: {
1694
+ readonly description: "Whether cancellation is honored on this host right now. Absent inherits the static descriptor.cancel value: any value other than 'none' means available. Never null.";
1695
+ readonly type: "boolean";
1696
+ };
1697
+ readonly taskCapabilities: {
1698
+ readonly description: "Per-task overrides of the provider-level check, for tasks whose availability differs on this host, e.g. a voice that is not installed. Every field of an entry is optional and absent inherits the provider-level value; a false at either level wins.";
1699
+ readonly type: "array";
1700
+ readonly items: {
1701
+ readonly $ref: "#/$defs/taskAvailability";
1702
+ };
1703
+ };
1704
+ };
1705
+ readonly $defs: {
1706
+ readonly taskAvailability: {
1707
+ readonly title: "ProviderTaskAvailability";
1708
+ readonly description: "The live check for one task kind.";
1709
+ readonly type: "object";
1710
+ readonly additionalProperties: true;
1711
+ readonly required: readonly ["kind"];
1712
+ readonly properties: {
1713
+ readonly kind: {
1714
+ readonly description: "The task kind this entry describes.";
1715
+ readonly type: "string";
1716
+ readonly minLength: 1;
1717
+ };
1718
+ readonly available: {
1719
+ readonly description: "Whether the task can run on this host right now. Absent inherits the provider-level available. Never null.";
1720
+ readonly type: "boolean";
1721
+ };
1722
+ readonly reason: {
1723
+ readonly description: "Why the task is unavailable, when available is false.";
1724
+ readonly type: "string";
1725
+ readonly minLength: 1;
1726
+ };
1727
+ readonly streamingAvailable: {
1728
+ readonly description: "Whether the task can stream on this host right now. Absent inherits. Never null.";
1729
+ readonly type: "boolean";
1730
+ };
1731
+ readonly streamingUnavailableReason: {
1732
+ readonly description: "Why streaming is unavailable for this task, when streamingAvailable is false.";
1733
+ readonly type: "string";
1734
+ readonly minLength: 1;
1735
+ };
1736
+ readonly cancellationAvailable: {
1737
+ readonly description: "Whether cancellation is honored for this task right now. Absent inherits. Never null.";
1738
+ readonly type: "boolean";
1739
+ };
1740
+ readonly locales: {
1741
+ readonly description: "BCP 47 locales available for this task right now. Absent means the provider cannot enumerate them.";
1742
+ readonly type: "array";
1743
+ readonly items: {
1744
+ readonly type: "string";
1745
+ readonly minLength: 1;
1746
+ };
1747
+ };
1748
+ readonly voices: {
1749
+ readonly description: "Voices available for this task right now. Absent means the provider cannot enumerate them; a request that requires a voice then never routes to it.";
1750
+ readonly type: "array";
1751
+ readonly items: {
1752
+ readonly $ref: "#/$defs/voice";
1753
+ };
1754
+ };
1755
+ };
1756
+ };
1757
+ readonly voice: {
1758
+ readonly title: "ProviderVoice";
1759
+ readonly description: "Provider-neutral traits of one available voice. Carries no provider voice identifier.";
1760
+ readonly type: "object";
1761
+ readonly additionalProperties: true;
1762
+ readonly required: readonly ["locale"];
1763
+ readonly properties: {
1764
+ readonly locale: {
1765
+ readonly description: "BCP 47 locale the voice speaks.";
1766
+ readonly type: "string";
1767
+ readonly minLength: 1;
1768
+ };
1769
+ readonly gender: {
1770
+ readonly $ref: "#/$defs/voiceGender";
1771
+ };
1772
+ readonly networkRequired: {
1773
+ readonly description: "Whether using the voice sends data off the device. Absent inherits the task's privacy posture.";
1774
+ readonly type: "boolean";
1775
+ };
1776
+ };
1777
+ };
1778
+ readonly voiceGender: {
1779
+ readonly title: "VoiceGender";
1780
+ readonly description: "Perceived gender of a voice, as the platform reports it.";
1781
+ readonly enum: readonly ["female", "male", "neutral"];
1782
+ };
1783
+ };
1784
+ };
1412
1785
  export declare const executionProvenanceSchema: {
1413
1786
  readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1414
1787
  readonly $id: "https://schemas.inderun.dev/1.0/execution-provenance.schema.json";
@@ -1496,7 +1869,7 @@ export declare const executionProvenanceSchema: {
1496
1869
  readonly codes: {
1497
1870
  readonly type: "array";
1498
1871
  readonly items: {
1499
- readonly enum: readonly ["task_not_supported", "run_not_supported", "streaming_not_supported", "streaming_unavailable", "privacy_constraint", "cloud_constraint", "offline", "capability_unavailable", "not_in_model_profile"];
1872
+ readonly enum: readonly ["task_not_supported", "run_not_supported", "streaming_not_supported", "streaming_unavailable", "privacy_constraint", "cloud_constraint", "offline", "capability_unavailable", "not_in_model_profile", "input_not_supported", "output_delivery_not_supported", "output_format_not_supported", "locale_not_supported", "voice_not_available"];
1500
1873
  };
1501
1874
  };
1502
1875
  };
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/generated/schemas.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsMpB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqHnB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DrB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CpB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCrB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4CvB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8N1B,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6HlB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6KrB,CAAC;AAEX,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiClB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAydpB,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsN9B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuI5B,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/generated/schemas.ts"],"names":[],"mappings":"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"}