@wildo-ai/external-connectors-models 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/.native.tsbuildinfo +1 -0
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts +49 -9
- package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/commons.external-connectors-models.schemas.js +46 -7
- package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts +13 -0
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.js +14 -0
- package/dist/esm/core/operation-classification.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts +0 -25
- package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/protocols.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts +132 -2
- package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/core/security.external-connectors-models.schemas.js +164 -0
- package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/features/core.external-connectors-models.schemas.d.ts +0 -63
- package/dist/esm/features/core.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/core.external-connectors-models.schemas.js +0 -101
- package/dist/esm/features/core.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/features/email.external-connectors-models.schemas.d.ts +0 -181
- package/dist/esm/features/email.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/email.external-connectors-models.schemas.js +0 -34
- package/dist/esm/features/email.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/features/hooks.external-connectors-models.schemas.d.ts +0 -101
- package/dist/esm/features/hooks.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/hooks.external-connectors-models.schemas.js +0 -11
- package/dist/esm/features/hooks.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/features/sms.external-connectors-models.schemas.d.ts +0 -21
- package/dist/esm/features/sms.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/features/sms.external-connectors-models.schemas.js +0 -8
- package/dist/esm/features/sms.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/index.d.ts +3 -9
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -10
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.d.ts +0 -57
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.js +0 -73
- package/dist/esm/protocols/a2a.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +242 -3
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +294 -2
- package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +154 -0
- package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js +50 -1
- package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
- package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts +1 -1
- package/dist/esm/protocols/email.standard-interface.schemas.d.ts +5 -5
- package/dist/esm/protocols/git.external-connectors-models.schemas.d.ts +0 -14
- package/dist/esm/protocols/git.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/git.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/git.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.d.ts +0 -14
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/grpc.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts +101 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js +11 -0
- package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +39 -20
- package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js +113 -27
- package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.d.ts +0 -60
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.js +0 -35
- package/dist/esm/protocols/mcp.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts +2 -2
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts +1 -89
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts.map +1 -1
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js +1 -83
- package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js.map +1 -1
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +370 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +89 -0
- package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -0
- package/dist/esm/protocols/saml.external-connectors-models.schemas.d.ts +0 -135
- package/dist/esm/protocols/saml.external-connectors-models.schemas.d.ts.map +0 -1
- package/dist/esm/protocols/saml.external-connectors-models.schemas.js +0 -9
- package/dist/esm/protocols/saml.external-connectors-models.schemas.js.map +0 -1
- package/dist/esm/protocols/sms.standard-interface.schemas.d.ts +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/esm/.builder.pid +0 -9
|
@@ -55,9 +55,11 @@ export var LLM_Model;
|
|
|
55
55
|
// rejects temperature+topP together.
|
|
56
56
|
/** Anthropic's most intelligent generally-available model (Claude 5 family, Mythos-class tier). */
|
|
57
57
|
LLM_Model["CLAUDE_FABLE_5"] = "claude-fable-5";
|
|
58
|
+
/** Claude 5 family Opus tier. Same no-sampling-params contract as the rest of the family. */
|
|
59
|
+
LLM_Model["CLAUDE_OPUS_5"] = "claude-opus-5";
|
|
58
60
|
/** Claude 5 family workhorse. */
|
|
59
61
|
LLM_Model["CLAUDE_SONNET_5"] = "claude-sonnet-5";
|
|
60
|
-
/**
|
|
62
|
+
/** Opus 4.x line (superseded by CLAUDE_OPUS_5 as the Opus tier). */
|
|
61
63
|
LLM_Model["CLAUDE_OPUS_4_8"] = "claude-opus-4-8";
|
|
62
64
|
LLM_Model["CLAUDE_SONNET_4_5"] = "claude-sonnet-4-5";
|
|
63
65
|
LLM_Model["CLAUDE_HAIKU_4_5"] = "claude-haiku-4-5";
|
|
@@ -123,8 +125,14 @@ export var LLM_Model_Thinking_Capability;
|
|
|
123
125
|
LLM_Model_Thinking_Capability["OPTIONAL"] = "optional";
|
|
124
126
|
/**
|
|
125
127
|
* The model ALWAYS reasons and thinking CANNOT be disabled (o-series,
|
|
126
|
-
*
|
|
127
|
-
* think is a provider error, not a preference.
|
|
128
|
+
* `claude-fable-5`). Every effort is valid EXCEPT `NONE` — asking such a model
|
|
129
|
+
* not to think is a provider error, not a preference.
|
|
130
|
+
*
|
|
131
|
+
* NOT a property of a model FAMILY: measured 2026-09-08, `claude-fable-5`
|
|
132
|
+
* refuses `thinking.type.disabled` while `claude-sonnet-5` and
|
|
133
|
+
* `claude-opus-5` accept it. Both siblings carried this value on the family's
|
|
134
|
+
* behalf for a month, which made `validateReasoningEffortForModel` refuse a
|
|
135
|
+
* configuration the provider would have honoured.
|
|
128
136
|
*/
|
|
129
137
|
LLM_Model_Thinking_Capability["ALWAYS"] = "always";
|
|
130
138
|
})(LLM_Model_Thinking_Capability || (LLM_Model_Thinking_Capability = {}));
|
|
@@ -289,8 +297,8 @@ export const LLMProvider_ToolChoice_Schema = z.union([
|
|
|
289
297
|
* OpenAI o-series, Claude 5 thinking, Gemini reasoning, …). The values mirror
|
|
290
298
|
* the AI SDK 7 top-level `reasoning` option EXACTLY, which the SDK translates to
|
|
291
299
|
* each provider's native reasoning setting (OpenAI `reasoning_effort`, Anthropic
|
|
292
|
-
*
|
|
293
|
-
* default.
|
|
300
|
+
* `output_config.effort`, …). Omit for non-reasoning models or to accept the
|
|
301
|
+
* provider default.
|
|
294
302
|
*
|
|
295
303
|
* Effort ladder (cost/latency ↑ with depth):
|
|
296
304
|
* - `NONE` — reasoning off; mechanical tasks (extraction, formatting, labelling).
|
|
@@ -301,20 +309,30 @@ export const LLMProvider_ToolChoice_Schema = z.union([
|
|
|
301
309
|
* - `PROVIDER_DEFAULT` — explicitly defer to the model's own default effort.
|
|
302
310
|
*
|
|
303
311
|
* NOT EVERY MODEL SUPPORTS EVERY LEVEL — the SDK forwards the value and the
|
|
304
|
-
* provider validates it. Support matrix VERIFIED LIVE (2026-
|
|
305
|
-
*
|
|
312
|
+
* provider validates it. Support matrix VERIFIED LIVE (2026-09-08), per MODEL
|
|
313
|
+
* rather than per family, because the family is not uniform:
|
|
314
|
+
*
|
|
315
|
+
* | Model | Supported | Rejected |
|
|
316
|
+
* |--------------------------------------|---------------------------------|-------------------------------|
|
|
317
|
+
* | GPT-5.6 sol / terra / luna | none, low, medium, high, xhigh | `minimal`, `provider-default` |
|
|
318
|
+
* | claude-fable-5 | low, medium, high, xhigh | **`none`**, `minimal`, `provider-default` |
|
|
319
|
+
* | claude-sonnet-5 · claude-opus-5 | none, low, medium, high, xhigh | `minimal`, `provider-default` |
|
|
306
320
|
*
|
|
307
|
-
*
|
|
308
|
-
*
|
|
309
|
-
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
312
|
-
*
|
|
313
|
-
* | | | defaults to adaptive) |
|
|
321
|
+
* ⚠️ `NONE` is NOT portable, but the line is finer than "OpenAI yes, Anthropic
|
|
322
|
+
* no": `claude-fable-5` alone refuses it. Its siblings accept it, so a level
|
|
323
|
+
* that is legal on `claude-sonnet-5` can still be illegal on `claude-fable-5` —
|
|
324
|
+
* which is why the capability is a per-model probed fact and never a family
|
|
325
|
+
* assumption. `PROVIDER_DEFAULT` is rejected as an explicit value by BOTH
|
|
326
|
+
* providers — omit the field entirely for the model's own default.
|
|
314
327
|
*
|
|
315
|
-
*
|
|
316
|
-
*
|
|
317
|
-
*
|
|
328
|
+
* How each provider expresses this natively, since the vocabularies differ and
|
|
329
|
+
* Anthropic's changed: OpenAI takes `reasoning_effort: <level>`. Anthropic
|
|
330
|
+
* takes `thinking: {type:'disabled'}` for `NONE`, and otherwise
|
|
331
|
+
* `thinking: {type:'adaptive'}` + `output_config: {effort: <level>}` — its
|
|
332
|
+
* accepted set is `low|medium|high|xhigh|max`, so `max` exists there and is
|
|
333
|
+
* deliberately NOT an enum member (OpenAI rejects it, and a level only one
|
|
334
|
+
* provider honours would not be portable). The older
|
|
335
|
+
* `thinking: {type:'enabled', budget_tokens}` form is RETIRED and now 400s.
|
|
318
336
|
*/
|
|
319
337
|
export var LLMProvider_ReasoningEffort;
|
|
320
338
|
(function (LLMProvider_ReasoningEffort) {
|
|
@@ -348,7 +366,7 @@ export const LLM_MODEL_CATALOG = {
|
|
|
348
366
|
[LLM_Model.OPEN_AI_GPT_5_6_SOL]: {
|
|
349
367
|
providerRef: "openai",
|
|
350
368
|
availability: LLM_Model_Availability.PRODUCTION,
|
|
351
|
-
probedOn: "2026-
|
|
369
|
+
probedOn: "2026-09-08",
|
|
352
370
|
applicabilities: [LLM_Model_Applicability.DEEP_JUDGMENT, LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS],
|
|
353
371
|
ioCapabilities: [
|
|
354
372
|
LLM_Model_IO_Capability.MULTIMODAL_VISION,
|
|
@@ -364,7 +382,7 @@ export const LLM_MODEL_CATALOG = {
|
|
|
364
382
|
[LLM_Model.OPEN_AI_GPT_5_6_TERRA]: {
|
|
365
383
|
providerRef: "openai",
|
|
366
384
|
availability: LLM_Model_Availability.PRODUCTION,
|
|
367
|
-
probedOn: "2026-
|
|
385
|
+
probedOn: "2026-09-08",
|
|
368
386
|
applicabilities: [LLM_Model_Applicability.STRUCTURED_AUTHORING, LLM_Model_Applicability.VISUAL_JUDGMENT],
|
|
369
387
|
ioCapabilities: [
|
|
370
388
|
LLM_Model_IO_Capability.MULTIMODAL_VISION,
|
|
@@ -378,7 +396,7 @@ export const LLM_MODEL_CATALOG = {
|
|
|
378
396
|
[LLM_Model.OPEN_AI_GPT_5_6_LUNA]: {
|
|
379
397
|
providerRef: "openai",
|
|
380
398
|
availability: LLM_Model_Availability.PRODUCTION,
|
|
381
|
-
probedOn: "2026-
|
|
399
|
+
probedOn: "2026-09-08",
|
|
382
400
|
applicabilities: [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL],
|
|
383
401
|
ioCapabilities: [LLM_Model_IO_Capability.STRUCTURED_OUTPUTS, LLM_Model_IO_Capability.TOOL_USE],
|
|
384
402
|
thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,
|
|
@@ -411,14 +429,18 @@ export const LLM_MODEL_CATALOG = {
|
|
|
411
429
|
[LLM_Model.OPEN_AI_O4_MINI]: { providerRef: "openai", availability: LLM_Model_Availability.PRODUCTION, probedOn: "2026-07-16", applicabilities: [] },
|
|
412
430
|
// ---------------------------------------------------------------
|
|
413
431
|
// Anthropic — ids verified LIVE against `GET /v1/models` (2026-07-16).
|
|
414
|
-
//
|
|
415
|
-
//
|
|
416
|
-
//
|
|
432
|
+
//
|
|
433
|
+
// Thinking posture re-probed 2026-09-08 and it is PER MODEL, not per family.
|
|
434
|
+
// `claude-fable-5` refuses `thinking: {type:'disabled'}` (400 "…is not
|
|
435
|
+
// supported for this model; thinking defaults to adaptive") — ALWAYS.
|
|
436
|
+
// `claude-sonnet-5` and `claude-opus-5` ACCEPT it (200) — OPTIONAL. All three
|
|
437
|
+
// reject `minimal` and `provider-default` as `output_config.effort` values,
|
|
438
|
+
// whose accepted set is `low|medium|high|xhigh|max`.
|
|
417
439
|
// ---------------------------------------------------------------
|
|
418
440
|
[LLM_Model.CLAUDE_FABLE_5]: {
|
|
419
441
|
providerRef: "anthropic",
|
|
420
442
|
availability: LLM_Model_Availability.PRODUCTION,
|
|
421
|
-
probedOn: "2026-
|
|
443
|
+
probedOn: "2026-09-08",
|
|
422
444
|
applicabilities: [
|
|
423
445
|
LLM_Model_Applicability.DEEP_JUDGMENT,
|
|
424
446
|
LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,
|
|
@@ -430,13 +452,41 @@ export const LLM_MODEL_CATALOG = {
|
|
|
430
452
|
LLM_Model_IO_Capability.TOOL_USE,
|
|
431
453
|
LLM_Model_IO_Capability.LONG_CONTEXT,
|
|
432
454
|
],
|
|
455
|
+
// The ONLY model that still refuses `thinking: {type:'disabled'}` (re-probed
|
|
456
|
+
// 2026-09-08); its two siblings accept it, so this value is not the family's.
|
|
433
457
|
thinkingCapability: LLM_Model_Thinking_Capability.ALWAYS,
|
|
458
|
+
unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],
|
|
459
|
+
rejectsExplicitTemperature: true,
|
|
460
|
+
},
|
|
461
|
+
[LLM_Model.CLAUDE_OPUS_5]: {
|
|
462
|
+
providerRef: "anthropic",
|
|
463
|
+
availability: LLM_Model_Availability.PRODUCTION,
|
|
464
|
+
// Probed live 2026-09-04 by the switch of the ACP coding/research lane onto it (it had been
|
|
465
|
+
// every host-managed session's silent operator default long before it had an enum member).
|
|
466
|
+
// Re-probed 2026-09-08 once it gained an `LLM_SMOKE` entry, which corrected
|
|
467
|
+
// `thinkingCapability` from an inherited ALWAYS to the measured OPTIONAL.
|
|
468
|
+
probedOn: "2026-09-08",
|
|
469
|
+
applicabilities: [
|
|
470
|
+
LLM_Model_Applicability.DEEP_JUDGMENT,
|
|
471
|
+
LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,
|
|
472
|
+
LLM_Model_Applicability.STRUCTURED_AUTHORING,
|
|
473
|
+
LLM_Model_Applicability.WORKSPACE_CODING_AGENT,
|
|
474
|
+
],
|
|
475
|
+
ioCapabilities: [
|
|
476
|
+
LLM_Model_IO_Capability.MULTIMODAL_VISION,
|
|
477
|
+
LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,
|
|
478
|
+
LLM_Model_IO_Capability.TOOL_USE,
|
|
479
|
+
LLM_Model_IO_Capability.CODE_GENERATION,
|
|
480
|
+
LLM_Model_IO_Capability.LONG_CONTEXT,
|
|
481
|
+
],
|
|
482
|
+
thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,
|
|
483
|
+
unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],
|
|
434
484
|
rejectsExplicitTemperature: true,
|
|
435
485
|
},
|
|
436
486
|
[LLM_Model.CLAUDE_SONNET_5]: {
|
|
437
487
|
providerRef: "anthropic",
|
|
438
488
|
availability: LLM_Model_Availability.PRODUCTION,
|
|
439
|
-
probedOn: "2026-
|
|
489
|
+
probedOn: "2026-09-08",
|
|
440
490
|
applicabilities: [
|
|
441
491
|
LLM_Model_Applicability.STRUCTURED_AUTHORING,
|
|
442
492
|
LLM_Model_Applicability.WORKSPACE_CODING_AGENT,
|
|
@@ -447,7 +497,8 @@ export const LLM_MODEL_CATALOG = {
|
|
|
447
497
|
LLM_Model_IO_Capability.TOOL_USE,
|
|
448
498
|
LLM_Model_IO_Capability.CODE_GENERATION,
|
|
449
499
|
],
|
|
450
|
-
thinkingCapability: LLM_Model_Thinking_Capability.
|
|
500
|
+
thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,
|
|
501
|
+
unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],
|
|
451
502
|
rejectsExplicitTemperature: true,
|
|
452
503
|
},
|
|
453
504
|
[LLM_Model.CLAUDE_OPUS_4_8]: {
|
|
@@ -709,7 +760,28 @@ export const validateReasoningEffortForModel = (model, effort) => {
|
|
|
709
760
|
* REJECTS an explicit `temperature`).
|
|
710
761
|
*/
|
|
711
762
|
export const LLMProvider_OperationModelConfiguration_Schema = z.object({
|
|
712
|
-
|
|
763
|
+
/**
|
|
764
|
+
* A CONCRETE model id — the escape hatch, and no longer the ordinary way to answer "which model".
|
|
765
|
+
*
|
|
766
|
+
* Declare {@link modelApplicability} instead unless you specifically need THIS id: a fine-tuned
|
|
767
|
+
* or custom deployment, or an agent pinned for a reason worth writing down. Naming an id at each
|
|
768
|
+
* agent is what the applicability axis exists to replace — a monthly model launch then means one
|
|
769
|
+
* catalog edit rather than N definition edits, and nobody has to re-audit which agents should
|
|
770
|
+
* move.
|
|
771
|
+
*
|
|
772
|
+
* Exactly one of `model` / `modelApplicability` must be present (refined below).
|
|
773
|
+
*/
|
|
774
|
+
model: z.string().optional(),
|
|
775
|
+
/**
|
|
776
|
+
* The KIND of work this agent does — resolved to a concrete id at agent registration through
|
|
777
|
+
* `resolveModelForApplicability`, against the agent's own `providerRef`.
|
|
778
|
+
*
|
|
779
|
+
* This is the durable form: it survives model launches and retirements, and it states the
|
|
780
|
+
* cost/quality trade the author actually made. Resolution FAILS CLOSED with a named error, so an
|
|
781
|
+
* applicability no model of this provider serves is a startup error rather than a silent
|
|
782
|
+
* substitution.
|
|
783
|
+
*/
|
|
784
|
+
modelApplicability: z.enum(LLM_Model_Applicability).optional(),
|
|
713
785
|
providerRef: z.string(),
|
|
714
786
|
temperature: z.number().optional(),
|
|
715
787
|
maxTokens: z.number().optional(),
|
|
@@ -735,6 +807,20 @@ export const LLMProvider_OperationModelConfiguration_Schema = z.object({
|
|
|
735
807
|
toolingFunctionEnabled: z.boolean().optional(),
|
|
736
808
|
mcpCompatible: z.boolean().optional(),
|
|
737
809
|
toolChoice: LLMProvider_ToolChoice_Schema.optional(),
|
|
810
|
+
}).refine((config) => (config.model === undefined) !== (config.modelApplicability === undefined), {
|
|
811
|
+
/*
|
|
812
|
+
* EXACTLY ONE, and both halves of that matter.
|
|
813
|
+
*
|
|
814
|
+
* NEITHER is the state this refinement mainly exists for — `model` used to be required, so
|
|
815
|
+
* omitting it is the new mistake and it must not reach a runtime that then has nothing to call.
|
|
816
|
+
*
|
|
817
|
+
* BOTH is the subtler one: a config carrying an id AND a class states two answers to one
|
|
818
|
+
* question, and whichever the resolver happened to prefer would be a silent decision. It is
|
|
819
|
+
* also exactly how the axis would have died — an applicability that coexists with the id it was
|
|
820
|
+
* meant to replace changes nothing, which is the trap #439 records.
|
|
821
|
+
*/
|
|
822
|
+
message: 'An LLM configuration must declare EXACTLY ONE of `model` (a concrete id — the escape hatch for fine-tuned or pinned deployments) or `modelApplicability` (the kind of work, resolved to an id at registration). Declaring both states two answers to one question; declaring neither leaves nothing to call.',
|
|
823
|
+
path: ['model'],
|
|
738
824
|
});
|
|
739
825
|
/** @wildo_source:part:end saas.external-providers.llm.model-configuration */
|
|
740
826
|
// ===============================================================
|