@wildo-ai/external-connectors-models 1.1.4 → 1.1.6

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 (100) hide show
  1. package/dist/esm/companion-exports.d.ts.map +1 -1
  2. package/dist/esm/core/commons.external-connectors-models.schemas.d.ts +23 -132
  3. package/dist/esm/core/commons.external-connectors-models.schemas.d.ts.map +1 -1
  4. package/dist/esm/core/commons.external-connectors-models.schemas.js +23 -31
  5. package/dist/esm/core/commons.external-connectors-models.schemas.js.map +1 -1
  6. package/dist/esm/core/operation-classification.external-connectors-models.schemas.d.ts.map +1 -1
  7. package/dist/esm/core/operation-classification.external-connectors-models.schemas.js.map +1 -1
  8. package/dist/esm/core/security.external-connectors-models.schemas.d.ts +40 -8
  9. package/dist/esm/core/security.external-connectors-models.schemas.d.ts.map +1 -1
  10. package/dist/esm/core/security.external-connectors-models.schemas.js +61 -14
  11. package/dist/esm/core/security.external-connectors-models.schemas.js.map +1 -1
  12. package/dist/esm/index.d.ts +5 -2
  13. package/dist/esm/index.d.ts.map +1 -1
  14. package/dist/esm/index.js +5 -2
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts +78 -163
  17. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.d.ts.map +1 -1
  18. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js +78 -93
  19. package/dist/esm/protocols/agent-client-protocol.external-connectors-models.schemas.js.map +1 -1
  20. package/dist/esm/protocols/billing.standard-interface.schemas.d.ts +258 -13
  21. package/dist/esm/protocols/billing.standard-interface.schemas.d.ts.map +1 -1
  22. package/dist/esm/protocols/billing.standard-interface.schemas.js +41 -0
  23. package/dist/esm/protocols/billing.standard-interface.schemas.js.map +1 -1
  24. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts +57 -17
  25. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.d.ts.map +1 -1
  26. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js +26 -7
  27. package/dist/esm/protocols/document-extraction.external-connectors-models.schemas.js.map +1 -1
  28. package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts +229 -0
  29. package/dist/esm/protocols/email-inbound.standard-interface.schemas.d.ts.map +1 -0
  30. package/dist/esm/protocols/email-inbound.standard-interface.schemas.js +160 -0
  31. package/dist/esm/protocols/email-inbound.standard-interface.schemas.js.map +1 -0
  32. package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts +1 -56
  33. package/dist/esm/protocols/email.external-connectors-models.schemas.d.ts.map +1 -1
  34. package/dist/esm/protocols/email.external-connectors-models.schemas.js +0 -20
  35. package/dist/esm/protocols/email.external-connectors-models.schemas.js.map +1 -1
  36. package/dist/esm/protocols/email.standard-interface.schemas.d.ts +4 -4
  37. package/dist/esm/protocols/email.standard-interface.schemas.d.ts.map +1 -1
  38. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts +1 -16
  39. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.d.ts.map +1 -1
  40. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js +4 -9
  41. package/dist/esm/protocols/embeddings.external-connectors-models.schemas.js.map +1 -1
  42. package/dist/esm/protocols/file-storage.standard-interface.d.ts +179 -0
  43. package/dist/esm/protocols/file-storage.standard-interface.d.ts.map +1 -0
  44. package/dist/esm/protocols/file-storage.standard-interface.js +79 -0
  45. package/dist/esm/protocols/file-storage.standard-interface.js.map +1 -0
  46. package/dist/esm/protocols/frontend.external-connectors-models.schemas.d.ts +6 -13
  47. package/dist/esm/protocols/frontend.external-connectors-models.schemas.d.ts.map +1 -1
  48. package/dist/esm/protocols/frontend.external-connectors-models.schemas.js +0 -9
  49. package/dist/esm/protocols/frontend.external-connectors-models.schemas.js.map +1 -1
  50. package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.d.ts.map +1 -1
  51. package/dist/esm/protocols/hooks-capability.external-connectors-models.schemas.js.map +1 -1
  52. package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts +20 -16
  53. package/dist/esm/protocols/hooks.external-connectors-models.schemas.d.ts.map +1 -1
  54. package/dist/esm/protocols/hooks.external-connectors-models.schemas.js +12 -9
  55. package/dist/esm/protocols/hooks.external-connectors-models.schemas.js.map +1 -1
  56. package/dist/esm/protocols/image.external-connectors-models.schemas.d.ts +1 -18
  57. package/dist/esm/protocols/image.external-connectors-models.schemas.d.ts.map +1 -1
  58. package/dist/esm/protocols/image.external-connectors-models.schemas.js +1 -7
  59. package/dist/esm/protocols/image.external-connectors-models.schemas.js.map +1 -1
  60. package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts +100 -40
  61. package/dist/esm/protocols/llm.external-connectors-models.schemas.d.ts.map +1 -1
  62. package/dist/esm/protocols/llm.external-connectors-models.schemas.js +164 -41
  63. package/dist/esm/protocols/llm.external-connectors-models.schemas.js.map +1 -1
  64. package/dist/esm/protocols/oauth2-provider-assurance.definitions.d.ts +7 -0
  65. package/dist/esm/protocols/oauth2-provider-assurance.definitions.d.ts.map +1 -0
  66. package/dist/esm/protocols/oauth2-provider-assurance.definitions.js +36 -0
  67. package/dist/esm/protocols/oauth2-provider-assurance.definitions.js.map +1 -0
  68. package/dist/esm/protocols/oauth2-provider-assurance.schemas.d.ts +23 -0
  69. package/dist/esm/protocols/oauth2-provider-assurance.schemas.d.ts.map +1 -0
  70. package/dist/esm/protocols/oauth2-provider-assurance.schemas.js +25 -0
  71. package/dist/esm/protocols/oauth2-provider-assurance.schemas.js.map +1 -0
  72. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts +0 -148
  73. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.d.ts.map +1 -1
  74. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js +1 -40
  75. package/dist/esm/protocols/oauth2.external-connectors-models.schemas.js.map +1 -1
  76. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts +39 -0
  77. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.d.ts.map +1 -0
  78. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js +66 -0
  79. package/dist/esm/protocols/provider-oauth2-token-endpoint-hosts.external-connectors-models.js.map +1 -0
  80. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts +863 -16
  81. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.d.ts.map +1 -1
  82. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js +703 -0
  83. package/dist/esm/protocols/rest-operations.external-connectors-models.schemas.js.map +1 -1
  84. package/dist/esm/protocols/sms.external-connectors-models.schemas.d.ts +0 -39
  85. package/dist/esm/protocols/sms.external-connectors-models.schemas.d.ts.map +1 -1
  86. package/dist/esm/protocols/sms.external-connectors-models.schemas.js +0 -13
  87. package/dist/esm/protocols/sms.external-connectors-models.schemas.js.map +1 -1
  88. package/dist/esm/protocols/sms.standard-interface.schemas.d.ts +1 -1
  89. package/dist/esm/protocols/sms.standard-interface.schemas.d.ts.map +1 -1
  90. package/dist/esm/protocols/sms.standard-interface.schemas.js.map +1 -1
  91. package/dist/tsconfig.build.tsbuildinfo +1 -1
  92. package/package.json +2 -3
  93. package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts +0 -74
  94. package/dist/esm/core/protocols.external-connectors-models.schemas.d.ts.map +0 -1
  95. package/dist/esm/core/protocols.external-connectors-models.schemas.js +0 -1
  96. package/dist/esm/core/protocols.external-connectors-models.schemas.js.map +0 -1
  97. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts +0 -37
  98. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.d.ts.map +0 -1
  99. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js +0 -10
  100. package/dist/esm/protocols/rest-api.external-connectors-models.schemas.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"llm.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../src/protocols/llm.external-connectors-models.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\"\nimport { ExternalProvider_ExchangeProtocol_Configuration_Base, ExternalProvider_ExchangeProtocol_Kind, ExternalProvider_ExchangeProtocol_Profile_Base, ExternalProvider_ExchangeProtocol_Status_Base, ExternalProvider_ExchangeProtocol_Status_BaseSchema } from \"../core/commons.external-connectors-models.schemas\"\nimport { ExternalProvider_OperationDefinition_Base, ExternalProvider_OperationContextSchema } from \"../core/operations.external-connectors-models.schemas\"\n\n//===============================================================\n// LLM Provider\n// --------\n// Integration with Large Language Model providers for text generation,\n// chat completions, and streaming responses. Supports multiple providers\n// and models with standardized interfaces.\n//===============================================================\n\nexport enum LLM_Model {\n // OpenAI Models - Reasoning Models\n OPEN_AI_O1 = \"o1\",\n OPEN_AI_O1_MINI = \"o1-mini\",\n OPEN_AI_O3_MINI = \"o3-mini\",\n OPEN_AI_O4_MINI = \"o4-mini\",\n \n // OpenAI Models - GPT Series\n // Ids verified LIVE against `GET /v1/models` (2026-07-16). The previous\n // \"gpt-5.1-instant\" / \"gpt-5.1-thinking\" entries were ChatGPT PRODUCT\n // names, not API model ids — they never existed on the API (removed).\n //\n // GPT-5.6 (launched 2026-07-09) renames tiers: the NUMBER is the\n // generation, Sol/Terra/Luna are durable capability tiers — Sol = frontier\n // flagship, Terra = balanced everyday work, Luna = fast/affordable\n // (roughly the Fable/Opus/Sonnet-tier equivalents). ALL THREE reject\n // non-default `temperature` (only 1; verified live) — agents on them must\n // send NO sampling params.\n /** GPT-5.6 frontier flagship tier. */\n OPEN_AI_GPT_5_6_SOL = \"gpt-5.6-sol\",\n /** GPT-5.6 balanced tier for everyday work. */\n OPEN_AI_GPT_5_6_TERRA = \"gpt-5.6-terra\",\n /** GPT-5.6 fast/affordable tier. */\n OPEN_AI_GPT_5_6_LUNA = \"gpt-5.6-luna\",\n /** Dec-2025 flagship (accepts `temperature`, unlike the 5.6 family). */\n OPEN_AI_GPT_5_2 = \"gpt-5.2\",\n /** Extended-reasoning 5.2 variant. */\n OPEN_AI_GPT_5_2_PRO = \"gpt-5.2-pro\",\n OPEN_AI_GPT_5_1 = \"gpt-5.1\",\n OPEN_AI_GPT_5 = \"gpt-5\",\n OPEN_AI_GPT_5_MINI = \"gpt-5-mini\",\n OPEN_AI_GPT_4O = \"gpt-4o\",\n OPEN_AI_GPT_4O_MINI = \"gpt-4o-mini\",\n OPEN_AI_GPT_4_TURBO = \"gpt-4-turbo\",\n OPEN_AI_GPT_4 = \"gpt-4\",\n OPEN_AI_GPT_3_5_TURBO = \"gpt-3.5-turbo\",\n\n // Anthropic Models\n // Ids verified LIVE against `GET /v1/models` (2026-07-16). The previous\n // \"claude-4-opus\" entry was never a real API id, and the claude-3* family\n // is RETIRED (absent from the provider's model list) — all removed.\n //\n // The WHOLE Claude 5 family (fable-5 AND sonnet-5) REJECTS explicit\n // `temperature` (\"deprecated for this model\", verified live 2026-07-16) —\n // agents on them must send NO sampling params. Claude 4.5+ additionally\n // rejects temperature+topP together.\n /** Anthropic's most intelligent generally-available model (Claude 5 family, Mythos-class tier). */\n CLAUDE_FABLE_5 = \"claude-fable-5\",\n /** Claude 5 family Opus tier. Same no-sampling-params contract as the rest of the family. */\n CLAUDE_OPUS_5 = \"claude-opus-5\",\n /** Claude 5 family workhorse. */\n CLAUDE_SONNET_5 = \"claude-sonnet-5\",\n /** Opus 4.x line (superseded by CLAUDE_OPUS_5 as the Opus tier). */\n CLAUDE_OPUS_4_8 = \"claude-opus-4-8\",\n CLAUDE_SONNET_4_5 = \"claude-sonnet-4-5\",\n CLAUDE_HAIKU_4_5 = \"claude-haiku-4-5\",\n \n // Google Models\n GOOGLE_GEMINI_3_DEEP_THINK = \"gemini-3-deep-think\",\n GOOGLE_GEMINI_3_PRO = \"gemini-3-pro\",\n GOOGLE_GEMINI_2_5_PRO = \"gemini-2.5-pro\",\n GOOGLE_GEMINI_2_5_FLASH = \"gemini-2.5-flash\",\n GOOGLE_GEMINI_2_0_FLASH = \"gemini-2.0-flash-exp\",\n GOOGLE_GEMINI_1_5_PRO = \"gemini-1.5-pro\",\n GOOGLE_GEMINI_1_5_FLASH = \"gemini-1.5-flash\",\n GOOGLE_GEMINI_PRO = \"gemini-pro\",\n GOOGLE_GEMINI_PRO_VISION = \"gemini-pro-vision\",\n \n // Mistral Models\n MISTRAL_LARGE = \"mistral-large-latest\",\n MISTRAL_MEDIUM = \"mistral-medium-latest\",\n MISTRAL_SMALL = \"mistral-small-latest\",\n \n // Perplexity Models\n PERPLEXITY_SONAR_LARGE_ONLINE = \"sonar-large-online\",\n PERPLEXITY_SONAR_MEDIUM_ONLINE = \"sonar-medium-online\",\n PERPLEXITY_SONAR_SMALL_ONLINE = \"sonar-small-online\",\n PERPLEXITY_SONAR_LARGE_CHAT = \"sonar-large-chat\",\n PERPLEXITY_SONAR_MEDIUM_CHAT = \"sonar-medium-chat\",\n PERPLEXITY_SONAR_SMALL_CHAT = \"sonar-small-chat\",\n \n // Grok Models (xAI)\n GROK_4 = \"grok-4\",\n GROK_3 = \"grok-3\",\n GROK_2_VISION = \"grok-2-vision\",\n GROK_2 = \"grok-2\",\n}\n\n\nexport enum LLM_Model_IO_Capability {\n MULTIMODAL_VISION = \"multimodal_vision\",\n MULTIMODAL_AUDIO = \"multimodal_audio\",\n MULTIMODAL_VIDEO = \"multimodal_video\",\n STRUCTURED_OUTPUTS = \"structured_outputs\",\n JSON_MODE = \"json_mode\",\n FUNCTION_CALLING = \"function_calling\",\n TOOL_USE = \"tool_use\",\n STREAMING = \"streaming\",\n LONG_CONTEXT = \"long_context\",\n CODE_GENERATION = \"code_generation\",\n}\n\n/**\n * Whether a model can think, and whether that thinking can be turned OFF.\n *\n * This is the MODEL-PROPERTY axis of reasoning. It answers \"what is this model\n * capable of\", never \"how hard should this call think\" — the latter is\n * {@link LLMProvider_ReasoningEffort}, a per-call parameter. Keeping the two\n * apart is deliberate: a capability is a fact about the model, an effort is a\n * choice by the author. (The six `*_THINKING` operation keys that once encoded\n * this as a third axis were retired on 2026-07-17.)\n *\n * Consumed by {@link LLM_MODEL_THINKING_CAPABILITY} +\n * {@link validateReasoningEffortForModel} to reject impossible\n * model × effort pairs at authoring time instead of as a provider 400.\n */\nexport enum LLM_Model_Thinking_Capability {\n /** Not a reasoning model — it cannot think, so NO `reasoningEffort` is valid. */\n NONE = \"none\",\n /** Thinking can be enabled AND disabled — every effort level is valid, incl. `NONE`. */\n OPTIONAL = \"optional\",\n /**\n * The model ALWAYS reasons and thinking CANNOT be disabled (o-series,\n * `claude-fable-5`). Every effort is valid EXCEPT `NONE` — asking such a model\n * not to think is a provider error, not a preference.\n *\n * NOT a property of a model FAMILY: measured 2026-09-08, `claude-fable-5`\n * refuses `thinking.type.disabled` while `claude-sonnet-5` and\n * `claude-opus-5` accept it. Both siblings carried this value on the family's\n * behalf for a month, which made `validateReasoningEffortForModel` refuse a\n * configuration the provider would have honoured.\n */\n ALWAYS = \"always\",\n}\n\nexport enum LLM_Model_Availability {\n PRODUCTION = \"production\", // Fully available in production\n BETA = \"beta\", // Beta access, may have limitations\n PREVIEW = \"preview\", // Preview/early access\n DEPRECATED = \"deprecated\", // Still available but deprecated\n DISCONTINUED = \"discontinued\", // No longer available\n}\n\n/**\n * WHAT A MODEL IS CHOSEN FOR — the durable axis of model selection.\n *\n * Concrete model ids churn monthly; the kinds of work a model is selected for\n * do not. This enum is therefore the surface an AUTHOR names\n * (`config.modelApplicability`), while the concrete id is resolved by the\n * framework from {@link LLM_MODEL_CATALOG} +\n * {@link LLM_MODEL_APPLICABILITY_PREFERENCE}. A model launch becomes one\n * catalog row and one preference edit, with no agent definition touched.\n *\n * Members name the WORK, never the model's SIZE or a vendor tier. A tier\n * (\"mini\", \"pro\", \"Sol/Terra/Luna\", \"Opus/Sonnet/Haiku\") is a property of one\n * vendor's line-up — it renames (GPT-5.6 already did), it differs per provider,\n * and it still never says what to choose it FOR.\n *\n * Import path: `@wildo-ai/external-connectors-models`.\n */\nexport enum LLM_Model_Applicability {\n /**\n * High-stakes semantic judgment where being wrong is expensive and the answer\n * is read by a human or gates a durable decision — critique, deliberation,\n * persona derivation, acceptance judgment.\n *\n * Choose it when: cost and latency are worth trading for quality, the input is\n * ambiguous, and there is no mechanical check downstream that would catch a\n * poor answer.\n * Do NOT choose it for: volume work, or anything a schema already constrains.\n */\n DEEP_JUDGMENT = \"deep_judgment\",\n\n /**\n * Everyday generation of application artifacts against a declared schema —\n * structured output, copy, plans, summaries.\n *\n * Choose it when: the shape is constrained by a schema or a template, quality\n * matters but the task is bounded, and the call happens tens of times rather\n * than thousands. This is the correct default when no other member obviously\n * fits.\n */\n STRUCTURED_AUTHORING = \"structured_authoring\",\n\n /**\n * High-volume, low-judgment transformation — labelling, translation,\n * extraction, reformatting, classification against a fixed vocabulary.\n *\n * Choose it when: the same call runs hundreds or thousands of times, the\n * answer is checkable, and unit cost dominates quality. The trade is\n * deliberate: paying a judgment-tier price per label is the failure this\n * member exists to prevent.\n */\n HIGH_VOLUME_MECHANICAL = \"high_volume_mechanical\",\n\n /**\n * Work whose binding constraint is how much material must be in ONE call —\n * whole-corpus analysis, cross-document reconciliation, large-codebase\n * reading.\n *\n * Choose it when: chunking would destroy the semantics (the answer depends on\n * relating parts that must be seen together). If the work chunks cleanly,\n * choose by judgment level instead and let the caller chunk.\n */\n LONG_CONTEXT_ANALYSIS = \"long_context_analysis\",\n\n /**\n * Judgment that requires SEEING an artifact — logo/brand assessment, rendered\n * layout review, screenshot triage.\n *\n * Choose it when: the input is an image and the output is an assessment of it.\n * Resolution refuses any model whose catalog row does not evidence\n * {@link LLM_Model_IO_Capability.MULTIMODAL_VISION}, so an unverified model is\n * never silently selected for vision work.\n */\n VISUAL_JUDGMENT = \"visual_judgment\",\n\n /**\n * Autonomous, workspace-mutating code authoring driven through a coding-agent\n * CLI rather than a chat API.\n *\n * Choose it when: the agent edits files in a trusted workspace and needs long\n * tool-using turns. This member is transport-bound — it is only serviceable\n * on a provider that declares an `AGENT_CLIENT_PROTOCOL` transport, so resolving it never\n * silently downgrades workspace work to a chat call that can only describe an\n * edit.\n */\n WORKSPACE_CODING_AGENT = \"workspace_coding_agent\",\n}\n\n\n/** @wildo_source:part:start saas.external-providers.llm.operation-key facet:kind:api facet:audience:app-developer\n *\n * The LLM operation vocabulary — WHAT a call does, never HOW HARD it thinks.\n *\n * This is the key you put on an agent's `config.operationKey`. It selects the\n * executor, and with it BOTH the invocation `input` shape you must supply and\n * the `output` shape you get back:\n *\n * | Operation key | `invocation.input` | `invocation.output` |\n * |-----------------------|-------------------------------|---------------------|\n * | `GENERATE_TEXT` | `{ prompt }` | `{ text }` |\n * | `GENERATE_STRUCTURED` | `{ prompt, schema }` (Zod) | `{ object }` |\n * | `CHAT_COMPLETION` | `{ messages }` or `{ prompt }`| `{ message }` |\n * | `CHAT_MULTIMODAL` | `{ prompt, images }` | `{ message }` |\n *\n * `GENERATE_STRUCTURED` REQUIRES `input.schema`; omitting it is a validation\n * error, not a silent fallback to text. The `STREAM_*` keys exist for the\n * conversational runtime — a one-shot caller uses the buffered keys above.\n *\n * Import path: `@wildo-ai/external-connectors-models`.\n *\n * Reasoning depth is a PARAMETER ({@link LLMProvider_ReasoningEffort} on the\n * model configuration), not an operation. The six `*_THINKING` op keys that\n * used to live here were RETIRED (2026-07-17): they were inert at execution\n * (each routed to the exact same executor as its non-thinking sibling) and,\n * once `reasoningEffort` landed, they became a SECOND authority axis for the\n * same concept — two ways to say \"think harder\", neither carrying its own\n * semantic weight. A model's ability to reason is a property of the model +\n * the effort parameter, not a parallel operation surface.\n */\nexport enum LLMProvider_OperationKey {\n GENERATE_TEXT = \"llm.generateText\",\n CHAT_COMPLETION = \"llm.chatCompletion\",\n STREAM_TEXT = \"llm.streamText\",\n GENERATE_STRUCTURED = \"llm.generateStructured\",\n CHAT_MULTIMODAL = \"llm.chatMultimodal\",\n STREAM_STRUCTURED = \"llm.streamStructured\",\n}\n/** @wildo_source:part:end saas.external-providers.llm.operation-key */\n\n\n/**\n * Prompt format preference for provider-specific rendering\n * Used by PromptCompilerBackendService to select optimal format\n */\nexport enum LLMProvider_PromptFormat {\n /** XML boundaries with tags like <instructions>, <context> - best for Claude/Anthropic */\n XML_BOUNDARIES = \"xml_boundaries\",\n /** Message roles (system/user/assistant) - best for OpenAI chat */\n MESSAGE_ROLES = \"message_roles\",\n /** Markdown headings (## Instructions, ## Context) - generic fallback */\n MARKDOWN_HEADINGS = \"markdown_headings\",\n}\n\n// ===============================================================\n// LLM Provider Profiles and Configurations\n// ===============================================================\n\n\nexport type LLMProvider_Profile = ExternalProvider_ExchangeProtocol_Profile_Base & {\n baseURL?: string,\n \n /** Preferred prompt format for this provider (XML for Claude, MESSAGE_ROLES for OpenAI, etc.) */\n promptFormatPreference: LLMProvider_PromptFormat,\n \n /** Whether provider supports system messages (most modern LLMs do) */\n supportsSystemMessage: boolean,\n \n /** Whether provider benefits from structured context tags (e.g., XML tags for Claude) */\n prefersStructuredContext: boolean,\n}\n\n\nexport type LLMProvider_Configuration = ExternalProvider_ExchangeProtocol_Configuration_Base & {\n customLocation?: string,\n maxStructuredDataFieldAllowed?: number;\n}\n\n\n// ===============================================================\n// LLM Operation Model Configuration\n// ===============================================================\n\nexport const LLMProvider_ToolChoice_Schema = z.union([\n z.literal(\"auto\"),\n z.literal(\"none\"),\n z.literal(\"required\"),\n z.object({\n type: z.literal(\"tool\"),\n name: z.string(),\n }),\n]);\nexport type LLMProvider_ToolChoice = z.infer<typeof LLMProvider_ToolChoice_Schema>;\n\n/** @wildo_source:part:start saas.external-providers.llm.model-configuration facet:kind:api facet:audience:app-developer\n *\n * Reasoning-effort control for reasoning-capable models (GPT-5.6 Sol/Terra/Luna,\n * OpenAI o-series, Claude 5 thinking, Gemini reasoning, …). The values mirror\n * the AI SDK 7 top-level `reasoning` option EXACTLY, which the SDK translates to\n * each provider's native reasoning setting (OpenAI `reasoning_effort`, Anthropic\n * `output_config.effort`, …). Omit for non-reasoning models or to accept the\n * provider default.\n *\n * Effort ladder (cost/latency ↑ with depth):\n * - `NONE` — reasoning off; mechanical tasks (extraction, formatting, labelling).\n * - `MINIMAL` / `LOW` — brief reasoning; simple structured output.\n * - `MEDIUM` — balanced; most authored generation (market/email copy).\n * - `HIGH` / `XHIGH` — deep reasoning; judgment work (persona derivation,\n * deliberation, logo/quality judges).\n * - `PROVIDER_DEFAULT` — explicitly defer to the model's own default effort.\n *\n * NOT EVERY MODEL SUPPORTS EVERY LEVEL — the SDK forwards the value and the\n * provider validates it. Support matrix VERIFIED LIVE (2026-09-08), per MODEL\n * rather than per family, because the family is not uniform:\n *\n * | Model | Supported | Rejected |\n * |--------------------------------------|---------------------------------|-------------------------------|\n * | GPT-5.6 sol / terra / luna | none, low, medium, high, xhigh | `minimal`, `provider-default` |\n * | claude-fable-5 | low, medium, high, xhigh | **`none`**, `minimal`, `provider-default` |\n * | claude-sonnet-5 · claude-opus-5 | none, low, medium, high, xhigh | `minimal`, `provider-default` |\n *\n * ⚠️ `NONE` is NOT portable, but the line is finer than \"OpenAI yes, Anthropic\n * no\": `claude-fable-5` alone refuses it. Its siblings accept it, so a level\n * that is legal on `claude-sonnet-5` can still be illegal on `claude-fable-5` —\n * which is why the capability is a per-model probed fact and never a family\n * assumption. `PROVIDER_DEFAULT` is rejected as an explicit value by BOTH\n * providers — omit the field entirely for the model's own default.\n *\n * How each provider expresses this natively, since the vocabularies differ and\n * Anthropic's changed: OpenAI takes `reasoning_effort: <level>`. Anthropic\n * takes `thinking: {type:'disabled'}` for `NONE`, and otherwise\n * `thinking: {type:'adaptive'}` + `output_config: {effort: <level>}` — its\n * accepted set is `low|medium|high|xhigh|max`, so `max` exists there and is\n * deliberately NOT an enum member (OpenAI rejects it, and a level only one\n * provider honours would not be portable). The older\n * `thinking: {type:'enabled', budget_tokens}` form is RETIRED and now 400s.\n */\nexport enum LLMProvider_ReasoningEffort {\n PROVIDER_DEFAULT = \"provider-default\",\n NONE = \"none\",\n MINIMAL = \"minimal\",\n LOW = \"low\",\n MEDIUM = \"medium\",\n HIGH = \"high\",\n XHIGH = \"xhigh\",\n}\n/** @wildo_source:part:end saas.external-providers.llm.model-configuration */\n\n/**\n * One row per model: everything the framework knows about a concrete id.\n *\n * The entry deliberately separates TWO kinds of knowledge, because they carry\n * different burdens of proof and different consequences when wrong:\n *\n * **Probed facts** — `availability`, `thinkingCapability`,\n * `unsupportedReasoningEfforts`, `rejectsExplicitTemperature`. These are\n * assertions about the provider's API and are populated ONLY from a live probe\n * (`live-model-smoke.test.ts`, `WILDO_LIVE_MODEL_SMOKE=1`). Absence means\n * \"not yet verified\", never \"false\" — a wrong value here BLOCKS a legal\n * configuration, so guessing is worse than omitting. Never infer them from\n * published docs: the docs have already been wrong once (they claimed GPT-5.6\n * supports `minimal`; the API rejects it).\n *\n * **Framework opinion** — `applicabilities`, `ioCapabilities`. These express\n * what Wildo is willing to SELECT this model for. Being wrong here degrades\n * quality or cost, it does not make a call illegal, and the remedy is an edit\n * to one row rather than to every agent definition.\n */\nexport type LLM_ModelCatalogEntry = {\n /** The `ref` of the provider module that serves this id. */\n providerRef: string;\n /**\n * PROBED. Omitted when this repository has never verified the id against the\n * provider's live model list. An unverified model is never auto-resolved\n * ({@link resolveModelForApplicability}); it stays nameable as an explicit\n * pin, which is the escape hatch for custom and fine-tuned deployments.\n */\n availability?: LLM_Model_Availability;\n /** ISO date of the live verification behind the probed fields. */\n probedOn?: string;\n /**\n * FRAMEWORK OPINION. Which kinds of work this model may be selected for.\n * Empty means \"never auto-selected\" — a legal, deliberate state for an id we\n * keep nameable (legacy, pinned, or recorded in an old trace) but do not want\n * chosen on an author's behalf.\n */\n applicabilities: readonly LLM_Model_Applicability[];\n /** FRAMEWORK OPINION, except where a probe confirmed it. */\n ioCapabilities?: readonly LLM_Model_IO_Capability[];\n /** PROBED. See {@link LLM_Model_Thinking_Capability}. */\n thinkingCapability?: LLM_Model_Thinking_Capability;\n /** PROBED. Effort levels this model rejects despite its thinking capability. */\n unsupportedReasoningEfforts?: readonly LLMProvider_ReasoningEffort[];\n /** PROBED. `true` when sending any explicit `temperature` is a provider error. */\n rejectsExplicitTemperature?: boolean;\n};\n\n/**\n * THE model catalog — the single per-model fact table.\n *\n * It is an EXHAUSTIVE `Record`, not a `Partial`: adding a member to\n * {@link LLM_Model} without a row here is a compile error. That exhaustiveness\n * is the entire guarantee. Before this record existed, model knowledge lived in\n * four parallel partial maps keyed by the same string — a thinking-capability\n * map, an unsupported-effort map, a pricing table and a capacity registry —\n * plus two enums ({@link LLM_Model_Availability},\n * {@link LLM_Model_IO_Capability}) that had no per-model facts and no consumer\n * at all. Partial maps are how a vocabulary silently stops describing the\n * running system.\n *\n * Per-field burden of proof: see {@link LLM_ModelCatalogEntry}.\n */\nexport const LLM_MODEL_CATALOG: Record<LLM_Model, LLM_ModelCatalogEntry> = {\n // ---------------------------------------------------------------\n // OpenAI — ids verified LIVE against `GET /v1/models` (2026-07-16).\n // ---------------------------------------------------------------\n [LLM_Model.OPEN_AI_GPT_5_6_SOL]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [LLM_Model_Applicability.DEEP_JUDGMENT, LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n // Live: `minimal` → 400 (the published docs claim it exists — they are wrong).\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.OPEN_AI_GPT_5_6_TERRA]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [LLM_Model_Applicability.STRUCTURED_AUTHORING, LLM_Model_Applicability.VISUAL_JUDGMENT],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.OPEN_AI_GPT_5_6_LUNA]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL],\n ioCapabilities: [LLM_Model_IO_Capability.STRUCTURED_OUTPUTS, LLM_Model_IO_Capability.TOOL_USE],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.OPEN_AI_GPT_5_2_PRO]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.DEEP_JUDGMENT],\n },\n [LLM_Model.OPEN_AI_GPT_5_2]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [],\n },\n [LLM_Model.OPEN_AI_GPT_5_1]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_5]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_5_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4O]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4O_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4_TURBO]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_3_5_TURBO]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O1]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O1_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O3_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O4_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n\n // ---------------------------------------------------------------\n // Anthropic — ids verified LIVE against `GET /v1/models` (2026-07-16).\n //\n // Thinking posture re-probed 2026-09-08 and it is PER MODEL, not per family.\n // `claude-fable-5` refuses `thinking: {type:'disabled'}` (400 \"…is not\n // supported for this model; thinking defaults to adaptive\") — ALWAYS.\n // `claude-sonnet-5` and `claude-opus-5` ACCEPT it (200) — OPTIONAL. All three\n // reject `minimal` and `provider-default` as `output_config.effort` values,\n // whose accepted set is `low|medium|high|xhigh|max`.\n // ---------------------------------------------------------------\n [LLM_Model.CLAUDE_FABLE_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [\n LLM_Model_Applicability.DEEP_JUDGMENT,\n LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,\n LLM_Model_Applicability.VISUAL_JUDGMENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n // The ONLY model that still refuses `thinking: {type:'disabled'}` (re-probed\n // 2026-09-08); its two siblings accept it, so this value is not the family's.\n thinkingCapability: LLM_Model_Thinking_Capability.ALWAYS,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_OPUS_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n // Probed live 2026-09-04 by the switch of the ACP coding/research lane onto it (it had been\n // every host-managed session's silent operator default long before it had an enum member).\n // Re-probed 2026-09-08 once it gained an `LLM_SMOKE` entry, which corrected\n // `thinkingCapability` from an inherited ALWAYS to the measured OPTIONAL.\n probedOn: \"2026-09-08\",\n applicabilities: [\n LLM_Model_Applicability.DEEP_JUDGMENT,\n LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,\n LLM_Model_Applicability.STRUCTURED_AUTHORING,\n LLM_Model_Applicability.WORKSPACE_CODING_AGENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.CODE_GENERATION,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_SONNET_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [\n LLM_Model_Applicability.STRUCTURED_AUTHORING,\n LLM_Model_Applicability.WORKSPACE_CODING_AGENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.CODE_GENERATION,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_OPUS_4_8]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.WORKSPACE_CODING_AGENT],\n ioCapabilities: [LLM_Model_IO_Capability.TOOL_USE, LLM_Model_IO_Capability.CODE_GENERATION],\n },\n [LLM_Model.CLAUDE_SONNET_4_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.WORKSPACE_CODING_AGENT],\n ioCapabilities: [LLM_Model_IO_Capability.TOOL_USE, LLM_Model_IO_Capability.CODE_GENERATION],\n },\n [LLM_Model.CLAUDE_HAIKU_4_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL],\n ioCapabilities: [LLM_Model_IO_Capability.STRUCTURED_OUTPUTS],\n },\n\n // ---------------------------------------------------------------\n // Google / Mistral / Perplexity / xAI — NEVER live-verified by this\n // repository. `availability` is therefore omitted and no row is\n // auto-selectable. Probe an id and fill its row before preferring it.\n // ---------------------------------------------------------------\n [LLM_Model.GOOGLE_GEMINI_3_DEEP_THINK]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_3_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_2_5_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_2_5_FLASH]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_2_0_FLASH]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_1_5_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_1_5_FLASH]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_PRO_VISION]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.MISTRAL_LARGE]: { providerRef: \"mistral\", applicabilities: [] },\n [LLM_Model.MISTRAL_MEDIUM]: { providerRef: \"mistral\", applicabilities: [] },\n [LLM_Model.MISTRAL_SMALL]: { providerRef: \"mistral\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_LARGE_ONLINE]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_MEDIUM_ONLINE]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_SMALL_ONLINE]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_LARGE_CHAT]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_MEDIUM_CHAT]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_SMALL_CHAT]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.GROK_4]: { providerRef: \"grok\", applicabilities: [] },\n [LLM_Model.GROK_3]: { providerRef: \"grok\", applicabilities: [] },\n [LLM_Model.GROK_2_VISION]: { providerRef: \"grok\", applicabilities: [] },\n [LLM_Model.GROK_2]: { providerRef: \"grok\", applicabilities: [] },\n};\n\n/**\n * Availability states a model may be auto-RESOLVED in. `DEPRECATED` and\n * `DISCONTINUED` are deliberately absent: a retired id stays nameable as an\n * explicit pin and readable in a stored trace, but the framework will not\n * choose it on an author's behalf.\n */\nexport const LLM_MODEL_RESOLVABLE_AVAILABILITIES: readonly LLM_Model_Availability[] = [\n LLM_Model_Availability.PRODUCTION,\n LLM_Model_Availability.BETA,\n LLM_Model_Availability.PREVIEW,\n];\n\n/**\n * The framework's DEFAULT answer to \"which model serves this kind of work\",\n * ordered by preference, highest first.\n *\n * This is the one place a monthly model launch lands: add its catalog row, then\n * put it at the head of the applicabilities it should now serve. No agent\n * definition changes. An application may override this per applicability (see\n * the resolution options on {@link resolveModelForApplicability}) when it wants\n * a different cost/quality trade without forking the engine.\n *\n * A preference entry is only a CANDIDATE — resolution still requires the row to\n * name the requesting provider, to be in a resolvable availability, and to\n * declare the applicability. So an entry can never resurrect a retired model or\n * quietly widen what a model is used for.\n */\nexport const LLM_MODEL_APPLICABILITY_PREFERENCE: Record<LLM_Model_Applicability, readonly LLM_Model[]> = {\n [LLM_Model_Applicability.DEEP_JUDGMENT]: [\n LLM_Model.CLAUDE_FABLE_5,\n LLM_Model.OPEN_AI_GPT_5_6_SOL,\n LLM_Model.OPEN_AI_GPT_5_2_PRO,\n ],\n [LLM_Model_Applicability.STRUCTURED_AUTHORING]: [\n LLM_Model.OPEN_AI_GPT_5_6_TERRA,\n LLM_Model.CLAUDE_SONNET_5,\n ],\n [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL]: [\n LLM_Model.OPEN_AI_GPT_5_6_LUNA,\n LLM_Model.CLAUDE_HAIKU_4_5,\n ],\n [LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS]: [\n LLM_Model.CLAUDE_FABLE_5,\n LLM_Model.OPEN_AI_GPT_5_6_SOL,\n ],\n [LLM_Model_Applicability.VISUAL_JUDGMENT]: [\n LLM_Model.OPEN_AI_GPT_5_6_TERRA,\n LLM_Model.CLAUDE_FABLE_5,\n ],\n [LLM_Model_Applicability.WORKSPACE_CODING_AGENT]: [\n LLM_Model.CLAUDE_SONNET_5,\n LLM_Model.CLAUDE_SONNET_4_5,\n LLM_Model.CLAUDE_OPUS_4_8,\n ],\n};\n\n/**\n * IO capabilities an applicability REQUIRES of any model resolved for it.\n *\n * Only vision is gated today, and deliberately: selecting a model that cannot\n * see for work whose entire input is an image is a silent, expensive failure\n * (the model answers confidently about nothing). Because `ioCapabilities` is\n * evidence-led, an unpopulated row is simply not selected for vision work —\n * fail-closed on the axis where a wrong answer is unrecoverable.\n */\nconst LLM_MODEL_APPLICABILITY_REQUIRED_IO: Partial<Record<LLM_Model_Applicability, readonly LLM_Model_IO_Capability[]>> = {\n [LLM_Model_Applicability.VISUAL_JUDGMENT]: [LLM_Model_IO_Capability.MULTIMODAL_VISION],\n};\n\n/** Why {@link resolveModelForApplicability} could not answer — carried into a named CONFIGURATION error. */\nexport enum LLM_ModelResolutionFailure {\n /** The applicability has no candidate at all for this provider. */\n NO_CANDIDATE_FOR_PROVIDER = \"no_candidate_for_provider\",\n /** Candidates exist for this provider but none is in a resolvable availability. */\n NO_RESOLVABLE_AVAILABILITY = \"no_resolvable_availability\",\n /** Candidates exist and are available, but none evidences the required IO capability. */\n REQUIRED_IO_CAPABILITY_UNEVIDENCED = \"required_io_capability_unevidenced\",\n}\n\nexport type LLM_ModelResolutionInput = {\n applicability: LLM_Model_Applicability;\n /** Resolve within ONE provider — the provider the agent is configured against. */\n providerRef: string;\n /**\n * Application-level override of the default preference order, per\n * applicability. Only the ORDER and MEMBERSHIP of candidates is overridable;\n * every catalog gate still applies, so an override cannot select a retired\n * model, a model of another provider, or a model that does not declare the\n * applicability.\n */\n preferenceOverride?: Partial<Record<LLM_Model_Applicability, readonly LLM_Model[]>>;\n};\n\nexport type LLM_ModelResolution =\n | { resolved: true; model: LLM_Model; entry: LLM_ModelCatalogEntry; fromOverride: boolean }\n | { resolved: false; failure: LLM_ModelResolutionFailure; consideredModels: readonly LLM_Model[] };\n\n/**\n * Resolve an applicability to ONE concrete model id for a given provider.\n *\n * Fails CLOSED and explains itself: an unresolvable applicability must surface\n * as a named startup/configuration error naming what was considered, never as a\n * silent fallback to some other model. A fallback here would be the exact defect\n * this layer exists to remove — the author asked for a KIND of model, and\n * quietly handing them a different kind is worse than refusing.\n *\n * Note this function answers the semantic question only. Whether the resolved\n * model is reachable over the agent's TRANSPORT (a profile that\n * declares it) is a separate gate owned by the backend, because the transport\n * declaration lives on the provider registry rather than in this catalog.\n *\n * `catalog` is a parameter rather than a closed-over constant so each gate can\n * be exercised INDEPENDENTLY: with the real catalog, several gates are\n * unreachable simply because no shipped row has the shape that trips them (no\n * model is currently both applicability-declaring and unverified), and a gate\n * that cannot be reached is a gate nobody has tested. Production callers pass\n * nothing.\n */\nexport const resolveModelForApplicability = (\n input: LLM_ModelResolutionInput,\n catalog: Record<LLM_Model, LLM_ModelCatalogEntry> = LLM_MODEL_CATALOG,\n): LLM_ModelResolution => {\n const override = input.preferenceOverride?.[input.applicability];\n const candidates = override ?? LLM_MODEL_APPLICABILITY_PREFERENCE[input.applicability];\n const requiredIo = LLM_MODEL_APPLICABILITY_REQUIRED_IO[input.applicability] ?? [];\n\n const forProvider = candidates.filter((model) => {\n const entry = catalog[model];\n return entry.providerRef === input.providerRef && entry.applicabilities.includes(input.applicability);\n });\n if (forProvider.length === 0) {\n return { resolved: false, failure: LLM_ModelResolutionFailure.NO_CANDIDATE_FOR_PROVIDER, consideredModels: candidates };\n }\n\n const available = forProvider.filter((model) => {\n const availability = catalog[model].availability;\n return availability !== undefined && LLM_MODEL_RESOLVABLE_AVAILABILITIES.includes(availability);\n });\n if (available.length === 0) {\n return { resolved: false, failure: LLM_ModelResolutionFailure.NO_RESOLVABLE_AVAILABILITY, consideredModels: forProvider };\n }\n\n const capable = available.filter((model) => {\n const evidenced = catalog[model].ioCapabilities ?? [];\n return requiredIo.every((capability) => evidenced.includes(capability));\n });\n if (capable.length === 0) {\n return { resolved: false, failure: LLM_ModelResolutionFailure.REQUIRED_IO_CAPABILITY_UNEVIDENCED, consideredModels: available };\n }\n\n const model = capable[0]!;\n return { resolved: true, model, entry: catalog[model], fromOverride: override !== undefined };\n};\n\n/**\n * Model → thinking capability, DERIVED from {@link LLM_MODEL_CATALOG}.\n *\n * Still partial and still evidence-only: a model appears here only when its\n * catalog row carries a probed `thinkingCapability`. Absence means \"not yet\n * verified\", NOT \"no thinking\". Validation FAILS OPEN on absent/unknown models\n * — `LLMProvider_OperationModelConfiguration.model` is a free `z.string()`\n * (fine-tuned + custom deployment ids are legitimate), so we can neither\n * enumerate every id nor guess safely. Guessing is worse than omitting: a wrong\n * `ALWAYS` blocks a legal config, whereas an omission leaves runtime behavior\n * untouched.\n */\nexport const LLM_MODEL_THINKING_CAPABILITY: Partial<Record<LLM_Model, LLM_Model_Thinking_Capability>> =\n Object.fromEntries(\n Object.entries(LLM_MODEL_CATALOG)\n .filter(([, entry]) => entry.thinkingCapability !== undefined)\n .map(([model, entry]) => [model, entry.thinkingCapability]),\n ) as Partial<Record<LLM_Model, LLM_Model_Thinking_Capability>>;\n\n/**\n * Effort levels a specific model REJECTS despite its thinking capability,\n * DERIVED from {@link LLM_MODEL_CATALOG} — per-provider vocabulary quirks,\n * distinct from the capability axis above. Evidence-only, same rule.\n *\n * `PROVIDER_DEFAULT` is rejected by GPT-5.6 as an explicit value: to get the\n * model's own default, OMIT `reasoningEffort` entirely rather than naming it.\n */\nexport const LLM_MODEL_UNSUPPORTED_REASONING_EFFORTS: Partial<Record<LLM_Model, readonly LLMProvider_ReasoningEffort[]>> =\n Object.fromEntries(\n Object.entries(LLM_MODEL_CATALOG)\n .filter(([, entry]) => entry.unsupportedReasoningEfforts !== undefined)\n .map(([model, entry]) => [model, entry.unsupportedReasoningEfforts]),\n ) as Partial<Record<LLM_Model, readonly LLMProvider_ReasoningEffort[]>>;\n\n/**\n * Resolve a model's verified thinking capability, or `undefined` when the model\n * id is unknown/unverified (free-form ids are legitimate — see\n * {@link LLM_MODEL_THINKING_CAPABILITY}).\n */\nexport const getModelThinkingCapability = (model: string): LLM_Model_Thinking_Capability | undefined =>\n LLM_MODEL_THINKING_CAPABILITY[model as LLM_Model];\n\n/** @wildo_source:part:start saas.external-providers.llm.model-configuration facet:kind:api facet:audience:app-developer\n *\n * Validate a `model × reasoningEffort` pair against verified capability.\n *\n * Returns a human-readable violation, or `null` when the pair is valid OR\n * cannot be judged. **Fails OPEN by design** (unknown model, or omitted effort\n * → `null`): the alternative would reject legitimate custom deployments.\n *\n * Call this at authoring/registration time so an impossible pair surfaces as a\n * named startup error instead of a provider 400 in the middle of a long agent\n * pipeline — the trap this exists to catch is `NONE`, which turns reasoning off\n * on GPT-5.6 but hard-errors on Claude 5.\n *\n * @param model The configured model id (free-form; unknown ids pass).\n * @param effort The configured effort; omit/undefined always passes.\n * @returns A violation message, or `null` if valid/unjudgeable.\n */\nexport const validateReasoningEffortForModel = (\n model: string,\n effort: LLMProvider_ReasoningEffort | undefined,\n): string | null => {\n /** @wildo_source:part:end saas.external-providers.llm.model-configuration */\n if (effort === undefined) return null;\n\n const capability = getModelThinkingCapability(model);\n if (capability === undefined) return null;\n\n if (capability === LLM_Model_Thinking_Capability.NONE) {\n return `Model \"${model}\" is not a reasoning model, so it accepts no reasoningEffort (got \"${effort}\"). Remove reasoningEffort, or pick a reasoning-capable model.`;\n }\n\n if (capability === LLM_Model_Thinking_Capability.ALWAYS && effort === LLMProvider_ReasoningEffort.NONE) {\n return `Model \"${model}\" always reasons — its thinking cannot be disabled, so reasoningEffort \"none\" is rejected by the provider. Use \"low\" for the cheapest reasoning, or omit reasoningEffort for the model default.`;\n }\n\n const unsupported = LLM_MODEL_UNSUPPORTED_REASONING_EFFORTS[model as LLM_Model];\n if (unsupported?.includes(effort)) {\n const hint = effort === LLMProvider_ReasoningEffort.PROVIDER_DEFAULT\n ? 'Omit reasoningEffort entirely to get the model default.'\n : `Supported levels for this model exclude \"${effort}\".`;\n return `Model \"${model}\" rejects reasoningEffort \"${effort}\". ${hint}`;\n }\n\n return null;\n};\n\n/** @wildo_source:part:start saas.external-providers.llm.model-configuration facet:kind:api facet:audience:app-developer\n *\n * The provider/model/sampling surface every LLM agent config inherits — this is\n * the shape behind an agent's `config` (an agent adds `operationKey` on top).\n *\n * `providerRef` names a provider you enabled for the `AI_LLM` capability in\n * `defineSaaSProviders`; `model` is a free-form string so fine-tuned and custom\n * deployment ids stay legal. Every sampling field is OPTIONAL and every one of\n * them is forwarded to the provider verbatim — so an unsupported value is a\n * provider 400, not a framework-side clamp. Omit a field to accept the model's\n * own default; that is the portable choice (notably: the Claude 5 family\n * REJECTS an explicit `temperature`).\n */\nexport const LLMProvider_OperationModelConfiguration_Schema = z.object({\n /**\n * A CONCRETE model id — the escape hatch, and no longer the ordinary way to answer \"which model\".\n *\n * Declare {@link modelApplicability} instead unless you specifically need THIS id: a fine-tuned\n * or custom deployment, or an agent pinned for a reason worth writing down. Naming an id at each\n * agent is what the applicability axis exists to replace — a monthly model launch then means one\n * catalog edit rather than N definition edits, and nobody has to re-audit which agents should\n * move.\n *\n * Exactly one of `model` / `modelApplicability` must be present (refined below).\n */\n model: z.string().optional(),\n /**\n * The KIND of work this agent does — resolved to a concrete id at agent registration through\n * `resolveModelForApplicability`, against the agent's own `providerRef`.\n *\n * This is the durable form: it survives model launches and retirements, and it states the\n * cost/quality trade the author actually made. Resolution FAILS CLOSED with a named error, so an\n * applicability no model of this provider serves is a startup error rather than a silent\n * substitution.\n */\n modelApplicability: z.enum(LLM_Model_Applicability).optional(),\n providerRef: z.string(),\n temperature: z.number().optional(),\n maxTokens: z.number().optional(),\n topP: z.number().optional(),\n frequencyPenalty: z.number().optional(),\n presencePenalty: z.number().optional(),\n stopStringSequences: z.array(z.string()).optional(),\n /**\n * Reasoning-effort for reasoning-capable models — forwarded as the AI SDK\n * top-level `reasoning` option (see {@link LLMProvider_ReasoningEffort}).\n * Optional + additive: an agent that omits it keeps the model's default\n * effort (the pre-Phase-3 behavior).\n */\n reasoningEffort: z.enum(LLMProvider_ReasoningEffort).optional(),\n // NOTE: a `thinkingEnabled: boolean` field used to sit here. RETIRED\n // (2026-07-17) — it was a THIRD authority axis on reasoning (alongside\n // `reasoningEffort` and the `*_THINKING` op keys), it was strictly subsumed\n // by `reasoningEffort` (which expresses on/off AND depth), and it was never\n // read by any executor: the `THINKING_MODE` model preset and the\n // `ThinkingModeFacet` set it, and nothing acted on it. Authors composing that\n // facet believed they were enabling deep reasoning and got nothing. Use\n // `reasoningEffort` — it is the single authority.\n toolingFunctionEnabled: z.boolean().optional(),\n mcpCompatible: z.boolean().optional(),\n toolChoice: LLMProvider_ToolChoice_Schema.optional(),\n}).refine(\n (config) => (config.model === undefined) !== (config.modelApplicability === undefined),\n {\n /*\n * EXACTLY ONE, and both halves of that matter.\n *\n * NEITHER is the state this refinement mainly exists for — `model` used to be required, so\n * omitting it is the new mistake and it must not reach a runtime that then has nothing to call.\n *\n * BOTH is the subtler one: a config carrying an id AND a class states two answers to one\n * question, and whichever the resolver happened to prefer would be a silent decision. It is\n * also exactly how the axis would have died — an applicability that coexists with the id it was\n * meant to replace changes nothing, which is the trap #439 records.\n */\n 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.',\n path: ['model'],\n },\n);\nexport type LLMProvider_OperationModelConfiguration = z.infer<typeof LLMProvider_OperationModelConfiguration_Schema>;\n/** @wildo_source:part:end saas.external-providers.llm.model-configuration */\n\n// ===============================================================\n// LLM Operations Context\n// ===============================================================\n\nexport enum LLMProvider_FinishReason {\n STOP = \"stop\",\n LENGTH = \"length\",\n TOOL_CALLS = \"tool_calls\",\n CONTENT_FILTER = \"content_filter\",\n FUNCTION_CALL = \"function_call\",\n OTHER = \"other\",\n}\n\nexport const LLMProvider_UsageSchema = z.object({\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n /**\n * False when a physical provider result omitted a token dimension THE OPERATION REQUIRES.\n * Operation-aware by contract (RAG plan H4): a GENERATION requires prompt AND completion\n * tokens; an EMBEDDING trace (`AgentCallTraceKind.EMBEDDING`) has no completion-token\n * dimension, so its producer judges completeness on input tokens alone — an embedding must\n * never be flagged incomplete for lacking tokens it structurally cannot have.\n */\n tokenUsageComplete: z.boolean().optional(),\n /** Exact AI-SDK input categories retained for provider acquisition-cost accounting. */\n inputTokenDetails: z.object({\n noCacheTokens: z.number().optional(),\n cacheReadTokens: z.number().optional(),\n cacheWriteTokens: z.number().optional(),\n }).optional(),\n});\nexport type LLMProvider_Usage = z.infer<typeof LLMProvider_UsageSchema>;\n\nexport const LLMProvider_TrackingSchema = z.object({\n // Tool execution tracking\n toolsUsed: z.array(z.object({\n type: z.enum([\"function\", \"mcp\"]),\n ref: z.string(),\n name: z.string(),\n executionTime: z.number().optional(), // ms\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n })).optional(),\n \n toolCalls: z.array(z.object({\n id: z.string(),\n name: z.string(),\n arguments: z.record(z.string(), z.unknown()),\n result: z.unknown().optional(),\n error: z.string().optional(),\n })).optional(),\n \n // MCP connections used\n mcpConnectionsUsed: z.array(z.object({\n ref: z.string(),\n name: z.string().optional(),\n operationsExecuted: z.array(z.object({\n operation: z.string(),\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n executionTime: z.number().optional(),\n })).optional(),\n })).optional(),\n \n // Thinking mode execution details\n thinkingSteps: z.array(z.object({\n stepNumber: z.number(),\n thought: z.string().optional(),\n reasoning: z.string().optional(),\n conclusionReached: z.boolean().optional(),\n tokensUsed: z.number().optional(),\n })).optional(),\n});\nexport type LLMProvider_Tracking = z.infer<typeof LLMProvider_TrackingSchema>;\n\n/**\n * How an LLM operation was physically executed.\n *\n * One member, deliberately. A `CLI` member existed while a coding agent was\n * mis-modelled as a text completion and reached the model through a subprocess;\n * with coding agents moved to their own operation family and their own\n * execution-transport metadata, an LLM call is served over HTTP and nothing\n * else. Kept as an enum rather than collapsed away because the field is\n * recorded on durable execution contexts, where a bare literal would carry no\n * explanation and a second transport may yet be real.\n */\nexport enum LLMProvider_ExecutionTransportKind {\n API = \"api\",\n}\n\nexport const LLMProvider_ExecutionArtifactKindSchema = z.enum([\n \"stdout\",\n \"stderr\",\n]);\nexport type LLMProvider_ExecutionArtifactKind = z.infer<typeof LLMProvider_ExecutionArtifactKindSchema>;\n\nexport const LLMProvider_ExecutionArtifactMetadataSchema = z.object({\n kind: LLMProvider_ExecutionArtifactKindSchema,\n byteLength: z.number().int().nonnegative(),\n});\nexport type LLMProvider_ExecutionArtifactMetadata = z.infer<typeof LLMProvider_ExecutionArtifactMetadataSchema>;\n\nexport const LLMProvider_ExecutionTransportMetadataSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(LLMProvider_ExecutionTransportKind.API),\n protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.LLM_PROVIDER),\n providerRef: z.string(),\n model: z.string().optional(),\n }),\n]);\nexport type LLMProvider_ExecutionTransportMetadata = z.infer<typeof LLMProvider_ExecutionTransportMetadataSchema>;\n\n/**\n * Why a `GENERATE_STRUCTURED` call returned `{ object: undefined }` even though a\n * physical provider call completed.\n *\n * The two members are the two distinct code paths that can produce a missing object,\n * and they are NOT interchangeable — they differ in whether the call is billable and\n * in whether the provider told us anything about the shape of the failure:\n *\n * - `INVALID_OBJECT_AFTER_COMPLETED_CALL` — the provider answered, its usage is real\n * and metered, and the SDK rejected what came back: schema validation failed, the\n * JSON was unparseable, or the completion was truncated. This is the member that\n * carries `validationIssues` (the exact schema paths the model omitted) and\n * `finishReason`.\n * - `NO_OBJECT_GENERATED` — the SDK raised `AI_NoObjectGeneratedError` without a\n * usage-bearing payload, so no shape metadata was recovered. Distinguished from the\n * above precisely because a caller must NOT read the absence of `validationIssues`\n * here as \"the schema was satisfied\".\n * - `RESOLVED_WITHOUT_OBJECT` — the SDK call RESOLVED, raising nothing at all, and the\n * object was still absent. Off-contract for the AI SDK, whose `generateObject` declares\n * a non-optional `object` and signals absence by throwing; it is a member because the\n * engine does not validate that contract, so without it this vocabulary would have a\n * hole exactly where the invariant below is least defensible. A caller seeing this is\n * looking at an SDK or provider-adapter defect, not at a model that answered badly.\n *\n * Deliberately NOT a member: a provider transport failure. Those still THROW a typed\n * backend error rather than returning `{ object: undefined }`, and folding them in\n * here would let a caller treat a network fault as a model-output problem.\n *\n * The invariant these three members exist to uphold: **every path that hands a caller\n * `{ object: undefined }` attaches one of them.** That is what lets the field's absence\n * mean \"not a structured-output failure\" rather than \"no reason was recorded\" — and it is\n * why the third member was added rather than the third path left unattached.\n */\nexport enum LLMProvider_StructuredGenerationFailureKind {\n INVALID_OBJECT_AFTER_COMPLETED_CALL = \"invalid-object-after-completed-call\",\n NO_OBJECT_GENERATED = \"no-object-generated\",\n RESOLVED_WITHOUT_OBJECT = \"resolved-without-object\",\n}\n\n/**\n * One structural validation issue recovered from the SDK/Zod cause chain.\n *\n * `code` + `path` ONLY, never the issue's `message`: a provider validation error\n * retains the rejected value in its message, so carrying it would copy private model\n * output into any log, trace or persisted failure record that receives this reason.\n * The path is what a caller actually needs — it names the field the model omitted.\n */\nexport const LLMProvider_StructuredValidationIssueSchema = z.object({\n code: z.string(),\n path: z.array(z.union([z.string(), z.number()])),\n});\nexport type LLMProvider_StructuredValidationIssue = z.infer<typeof LLMProvider_StructuredValidationIssueSchema>;\n\n/**\n * The reason a structured generation produced no object, carried back to the CALLER.\n *\n * ## Why this exists\n *\n * `GENERATE_STRUCTURED` logs a rich failure line (error name, message, validation\n * cause, the exact schema paths that failed, finish reason, generated-text length)\n * and then used to return `{ object: undefined }` with nothing attached. Every caller\n * therefore knew only \"no object\" and had to invent a generic message, so the only way\n * to learn WHY a unit failed was to grep the process's own log file for the preceding\n * line — which is not available to the operator reading a CLI summary, a persisted\n * failure record, or a retry classifier.\n *\n * ## Where it is delivered\n *\n * On {@link LLMProvider_OperationContext_BaseSchema}, i.e. the invocation's\n * `executionContext` — the same envelope that already carries `usage`, `finishReason`\n * and `transport`. It is OPTIONAL and present only on a failed structured generation,\n * so no existing caller is affected; a caller that wants the reason reads\n * `executionContext.structuredGenerationFailure` exactly as it already reads\n * `executionContext.usage`.\n *\n * Because the whole envelope is what the agent-call trace sink receives as its\n * `context`, the reason reaches traceability for free.\n *\n * ## Privacy\n *\n * Contains NO generated text. `generatedTextLength` is a length, not a sample; it\n * distinguishes a truncation from an empty completion without disclosing content.\n */\nexport const LLMProvider_StructuredGenerationFailureSchema = z.object({\n kind: z.enum(LLMProvider_StructuredGenerationFailureKind),\n /** Human-readable one-liner, resolved through the engine's caught-error description. */\n message: z.string(),\n /** The thrown value's `name` when it had one, else its `typeof`. */\n errorName: z.string().optional(),\n /** `name` of the nested validation cause (e.g. `AI_TypeValidationError`, `ZodError`). */\n validationCauseName: z.string().optional(),\n /** Structural issues only — see {@link LLMProvider_StructuredValidationIssueSchema}. */\n validationIssues: z.array(LLMProvider_StructuredValidationIssueSchema).optional(),\n /**\n * The provider/SDK finish reason AS REPORTED, deliberately a raw string rather than\n * {@link LLMProvider_FinishReason}. The SDK's spelling (`content-filter`,\n * `tool-calls`) does not match this enum's (`content_filter`, `tool_calls`), so\n * narrowing would either drop the value or fabricate `OTHER` — and this field exists\n * because `length` is the single most diagnostic value a truncated call reports.\n */\n finishReason: z.string().optional(),\n /** Length of the text the provider did generate; `null` when it reported none. */\n generatedTextLength: z.number().int().nonnegative().nullable().optional(),\n /**\n * TOP-LEVEL key names of the generated object, present ONLY for an `unrecognized_keys` failure.\n *\n * Still contains no generated content: these are the root keys of a schema-driven generation, which are\n * schema shape and are read against a schema the consumer already holds. They exist because Zod reports\n * that failure without naming the offending key on the code path this lane takes, leaving \"an unknown key\n * exists at the root\" as the entire diagnosis while a single stray key discards the whole result.\n */\n rootKeys: z.array(z.string()).optional(),\n});\nexport type LLMProvider_StructuredGenerationFailure = z.infer<typeof LLMProvider_StructuredGenerationFailureSchema>;\n\n/**\n * Read the structured-generation failure reason off an invocation's `executionContext`.\n *\n * THE supported way to reach it. Provided as a function rather than left to each caller\n * because the alternative is the cast every `usage` reader already hand-rolls\n * (`response.executionContext as { usage?: … }`) — N copies of one shape, each free to\n * drift from the schema, none of them validated. Here the schema IS the reader.\n *\n * Returns `undefined` both when the generation succeeded and when the context predates\n * this field, so a caller never has to distinguish \"no failure\" from \"no reason\n * recorded\" — in either case there is nothing more specific to report than the absence\n * of an object.\n */\n/**\n * Render a structured-generation failure as one operator-readable line.\n *\n * Lives here, beside the schema, rather than in each caller: the two labelling\n * orchestrators alone would otherwise have hand-rolled the same rendering twice, and the\n * value of `validationIssues` is entirely in how it is presented — a caller that quietly\n * drops it reports \"no object\" with extra words. Keeping one renderer means a site that\n * reports the reason at all reports the whole reason.\n *\n * Carries no generated text, only its length — see\n * {@link LLMProvider_StructuredGenerationFailureSchema}.\n */\nexport function describeStructuredGenerationFailure(failure: LLMProvider_StructuredGenerationFailure): string {\n const parts: string[] = [`${failure.kind}: ${failure.message}`];\n if (failure.finishReason !== undefined) {\n parts.push(`finishReason=${failure.finishReason}`);\n }\n if (failure.validationIssues !== undefined && failure.validationIssues.length > 0) {\n const issues = failure.validationIssues\n .map((issue) => `${issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\"} (${issue.code})`)\n .join(\", \");\n parts.push(`schema paths: ${issues}`);\n }\n if (failure.generatedTextLength !== undefined && failure.generatedTextLength !== null) {\n parts.push(`generatedTextLength=${failure.generatedTextLength}`);\n }\n return parts.join(\" \\u00b7 \");\n}\n\nexport function readStructuredGenerationFailure(executionContext: unknown): LLMProvider_StructuredGenerationFailure | undefined {\n if (typeof executionContext !== \"object\" || executionContext === null) return undefined;\n const candidate = (executionContext as { structuredGenerationFailure?: unknown }).structuredGenerationFailure;\n if (candidate === undefined) return undefined;\n const parsed = LLMProvider_StructuredGenerationFailureSchema.safeParse(candidate);\n return parsed.success ? parsed.data : undefined;\n}\n\nexport const LLMProvider_OperationContext_BaseSchema = ExternalProvider_OperationContextSchema.extend({\n finishReason: z.enum(LLMProvider_FinishReason).optional(),\n usage: LLMProvider_UsageSchema.optional(),\n outputTracking: LLMProvider_TrackingSchema.optional(),\n executionTime: z.number().optional(),\n finishedAt: z.string().optional(),\n transport: LLMProvider_ExecutionTransportMetadataSchema.optional(),\n /**\n * Present ONLY when a `GENERATE_STRUCTURED` call returned `{ object: undefined }`.\n * Its absence therefore means \"not a structured-output failure\", never \"no reason\n * available\". See {@link LLMProvider_StructuredGenerationFailureSchema}.\n */\n structuredGenerationFailure: LLMProvider_StructuredGenerationFailureSchema.optional(),\n});\nexport type LLMProvider_OperationContext_Base = z.infer<typeof LLMProvider_OperationContext_BaseSchema>;\n\n\n\nexport type LLMProvider_OperationDefinitionBase = ExternalProvider_OperationDefinition_Base & {\n llmModelConfigurationSchema?: z.ZodSchema<any>,\n operationContextSchema: typeof LLMProvider_OperationContext_BaseSchema,\n \n supportedModels?: string[],\n}\n\n\n// ===============================================================\n// LLM I/O Schemas\n// ===============================================================\n\nexport enum LLMProvider_MessageRole {\n SYSTEM = \"system\",\n USER = \"user\",\n ASSISTANT = \"assistant\",\n TOOL = \"tool\",\n}\n\n// Multimodal Content Types\nexport const LLMProvider_TextContentSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string(),\n});\n\nexport const LLMProvider_ImageContentSchema = z.object({\n type: z.literal(\"image\"),\n image: z.union([\n z.url(), // URL\n z.string().regex(/^data:image\\/[^;]+;base64,/), // Base64\n ]),\n});\n\nexport const LLMProvider_AudioContentSchema = z.object({\n type: z.literal(\"audio\"),\n audio: z.union([\n z.url(), // URL\n z.string().regex(/^data:audio\\/[^;]+;base64,/), // Base64\n ]),\n});\n\nexport const LLMProvider_VideoContentSchema = z.object({\n type: z.literal(\"video\"),\n video: z.union([\n z.url(), // URL\n z.string().regex(/^data:video\\/[^;]+;base64,/), // Base64\n ]),\n});\n\nexport type LLMProvider_TextContent = z.infer<typeof LLMProvider_TextContentSchema>;\nexport type LLMProvider_ImageContent = z.infer<typeof LLMProvider_ImageContentSchema>;\nexport type LLMProvider_AudioContent = z.infer<typeof LLMProvider_AudioContentSchema>;\nexport type LLMProvider_VideoContent = z.infer<typeof LLMProvider_VideoContentSchema>;\n\nexport const LLMProvider_ContentPartSchema = z.discriminatedUnion(\"type\", [\n LLMProvider_TextContentSchema,\n LLMProvider_ImageContentSchema,\n LLMProvider_AudioContentSchema,\n LLMProvider_VideoContentSchema,\n]);\nexport type LLMProvider_ContentPart = z.infer<typeof LLMProvider_ContentPartSchema>;\n\nexport const LLMProvider_ChatMessageSchema = z.object({\n role: z.enum(LLMProvider_MessageRole),\n content: z.union([\n z.string(), // Simple text\n z.array(LLMProvider_ContentPartSchema), // Multimodal content\n ]),\n name: z.string().optional(),\n});\nexport type LLMProvider_ChatMessage = z.infer<typeof LLMProvider_ChatMessageSchema>;\n\n// Generate Text Operation\nexport const LLMProvider_GenerateTextInputSchema = z.object({\n prompt: z.string(),\n});\n\nexport const LLMProvider_GenerateTextOutputSchema = z.object({\n text: z.string(),\n});\n\nexport type LLMProvider_GenerateTextInput = z.infer<typeof LLMProvider_GenerateTextInputSchema>;\nexport type LLMProvider_GenerateTextOutput = z.infer<typeof LLMProvider_GenerateTextOutputSchema>;\n\n// Chat Completion Operation\nexport const LLMProvider_ChatCompletionInputSchema = z.object({\n messages: z.array(LLMProvider_ChatMessageSchema),\n stream: z.boolean().optional(),\n});\n\nexport const LLMProvider_ChatCompletionOutputSchema = z.object({\n message: LLMProvider_ChatMessageSchema,\n});\n\nexport type LLMProvider_ChatCompletionInput = z.infer<typeof LLMProvider_ChatCompletionInputSchema>;\nexport type LLMProvider_ChatCompletionOutput = z.infer<typeof LLMProvider_ChatCompletionOutputSchema>;\n\n// Stream Text Operation\nexport const LLMProvider_StreamTextInputSchema = z.object({\n prompt: z.string(),\n stream: z.literal(true),\n});\n\nexport const LLMProvider_StreamTextOutputSchema = z.object({\n textDelta: z.string(),\n});\n\nexport type LLMProvider_StreamTextInput = z.infer<typeof LLMProvider_StreamTextInputSchema>;\nexport type LLMProvider_StreamTextOutput = z.infer<typeof LLMProvider_StreamTextOutputSchema>;\n\n// Generate Structured Operation (AI SDK v6 generateObject)\nexport const LLMProvider_GenerateStructuredInputSchema = z.object({\n prompt: z.string(),\n schema: z.custom<z.ZodSchema<any>>(),\n /**\n * OPTIONAL image parts for VISION-grounded structured generation. When present\n * (and the target model has `MULTIMODAL_VISION` capability, e.g. `gpt-4o`), the\n * provider is driven with a multimodal user message (`prompt` text + these\n * image parts) instead of a bare text prompt, so the schema-constrained object\n * is produced FROM the pixels rather than from a text description of them. When\n * absent the call is a plain text-input structured generation (unchanged). Each\n * part follows {@link LLMProvider_ImageContentSchema} — a `data:image/...;base64,…`\n * data URI or an image URL. Generic across providers/models; no domain logic.\n */\n images: z.array(LLMProvider_ImageContentSchema).optional(),\n});\n\nexport const LLMProvider_GenerateStructuredOutputSchema = z.object({\n object: z.unknown(),\n});\n\nexport type LLMProvider_GenerateStructuredInput = z.infer<typeof LLMProvider_GenerateStructuredInputSchema>;\nexport type LLMProvider_GenerateStructuredOutput = z.infer<typeof LLMProvider_GenerateStructuredOutputSchema>;\n\n// Chat Multimodal Operation (for models with MULTIMODAL_VISION/AUDIO/VIDEO capability)\nexport const LLMProvider_ChatMultimodalInputSchema = z.object({\n messages: z.array(LLMProvider_ChatMessageSchema),\n stream: z.boolean().optional(),\n});\n\nexport const LLMProvider_ChatMultimodalOutputSchema = z.object({\n message: LLMProvider_ChatMessageSchema,\n});\n\nexport type LLMProvider_ChatMultimodalInput = z.infer<typeof LLMProvider_ChatMultimodalInputSchema>;\nexport type LLMProvider_ChatMultimodalOutput = z.infer<typeof LLMProvider_ChatMultimodalOutputSchema>;\n\n// Stream Structured Operation (AI SDK v6 streamObject)\nexport const LLMProvider_StreamStructuredInputSchema = z.object({\n prompt: z.string(),\n schema: z.custom<z.ZodSchema<any>>(),\n});\n\nexport const LLMProvider_StreamStructuredOutputSchema = z.object({\n partialObject: z.unknown().optional(),\n object: z.unknown().optional(),\n});\n\nexport type LLMProvider_StreamStructuredInput = z.infer<typeof LLMProvider_StreamStructuredInputSchema>;\nexport type LLMProvider_StreamStructuredOutput = z.infer<typeof LLMProvider_StreamStructuredOutputSchema>;\n\n// ===============================================================\n// STATUS\n// ===============================================================\n\nexport const LLMProvider_StatusSchema = ExternalProvider_ExchangeProtocol_Status_BaseSchema.extend({\n protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.LLM_PROVIDER),\n});\nexport type LLMProvider_Status = z.infer<typeof LLMProvider_StatusSchema>;\n"]}
1
+ {"version":3,"file":"llm.external-connectors-models.schemas.js","sourceRoot":"","sources":["../../../../src/protocols/llm.external-connectors-models.schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from \"zod\"\nimport { ExternalProvider_ExchangeProtocol_Configuration_Base, ExternalProvider_ExchangeProtocol_Kind } from \"../core/commons.external-connectors-models.schemas\"\nimport { ExternalProvider_OperationDefinition_Base, ExternalProvider_OperationContextSchema } from \"../core/operations.external-connectors-models.schemas\"\n\n//===============================================================\n// LLM Provider\n// --------\n// Integration with Large Language Model providers for text generation,\n// chat completions, and streaming responses. Supports multiple providers\n// and models with standardized interfaces.\n//===============================================================\n\nexport enum LLM_Model {\n // OpenAI Models - Reasoning Models\n OPEN_AI_O1 = \"o1\",\n OPEN_AI_O1_MINI = \"o1-mini\",\n OPEN_AI_O3_MINI = \"o3-mini\",\n OPEN_AI_O4_MINI = \"o4-mini\",\n \n // OpenAI Models - GPT Series\n // Ids verified LIVE against `GET /v1/models` (2026-07-16). The previous\n // \"gpt-5.1-instant\" / \"gpt-5.1-thinking\" entries were ChatGPT PRODUCT\n // names, not API model ids — they never existed on the API (removed).\n //\n // GPT-5.6 (launched 2026-07-09) renames tiers: the NUMBER is the\n // generation, Sol/Terra/Luna are durable capability tiers — Sol = frontier\n // flagship, Terra = balanced everyday work, Luna = fast/affordable\n // (roughly the Fable/Opus/Sonnet-tier equivalents). ALL THREE reject\n // non-default `temperature` (only 1; verified live) — agents on them must\n // send NO sampling params.\n /** GPT-5.6 frontier flagship tier. */\n OPEN_AI_GPT_5_6_SOL = \"gpt-5.6-sol\",\n /** GPT-5.6 balanced tier for everyday work. */\n OPEN_AI_GPT_5_6_TERRA = \"gpt-5.6-terra\",\n /** GPT-5.6 fast/affordable tier. */\n OPEN_AI_GPT_5_6_LUNA = \"gpt-5.6-luna\",\n /** Dec-2025 flagship (accepts `temperature`, unlike the 5.6 family). */\n OPEN_AI_GPT_5_2 = \"gpt-5.2\",\n /** Extended-reasoning 5.2 variant. */\n OPEN_AI_GPT_5_2_PRO = \"gpt-5.2-pro\",\n OPEN_AI_GPT_5_1 = \"gpt-5.1\",\n OPEN_AI_GPT_5 = \"gpt-5\",\n OPEN_AI_GPT_5_MINI = \"gpt-5-mini\",\n OPEN_AI_GPT_4O = \"gpt-4o\",\n OPEN_AI_GPT_4O_MINI = \"gpt-4o-mini\",\n OPEN_AI_GPT_4_TURBO = \"gpt-4-turbo\",\n OPEN_AI_GPT_4 = \"gpt-4\",\n OPEN_AI_GPT_3_5_TURBO = \"gpt-3.5-turbo\",\n\n // Anthropic Models\n // Ids verified LIVE against `GET /v1/models` (2026-07-16). The previous\n // \"claude-4-opus\" entry was never a real API id, and the claude-3* family\n // is RETIRED (absent from the provider's model list) — all removed.\n //\n // The WHOLE Claude 5 family (fable-5 AND sonnet-5) REJECTS explicit\n // `temperature` (\"deprecated for this model\", verified live 2026-07-16) —\n // agents on them must send NO sampling params. Claude 4.5+ additionally\n // rejects temperature+topP together.\n /** Anthropic's most intelligent generally-available model (Claude 5 family, Mythos-class tier). */\n CLAUDE_FABLE_5 = \"claude-fable-5\",\n /** Claude 5 family Opus tier, 5.5 revision. Same no-sampling-params contract as the rest of the family. */\n CLAUDE_OPUS_5_5 = \"claude-opus-5-5\",\n /** Claude 5 family Opus tier (superseded by CLAUDE_OPUS_5_5). Same no-sampling-params contract as the rest of the family. */\n CLAUDE_OPUS_5 = \"claude-opus-5\",\n /** Claude 5 family workhorse. */\n CLAUDE_SONNET_5 = \"claude-sonnet-5\",\n /** Opus 4.x line (superseded by CLAUDE_OPUS_5 as the Opus tier). */\n CLAUDE_OPUS_4_8 = \"claude-opus-4-8\",\n CLAUDE_SONNET_4_5 = \"claude-sonnet-4-5\",\n CLAUDE_HAIKU_4_5 = \"claude-haiku-4-5\",\n \n // Google Models\n GOOGLE_GEMINI_3_DEEP_THINK = \"gemini-3-deep-think\",\n GOOGLE_GEMINI_3_PRO = \"gemini-3-pro\",\n GOOGLE_GEMINI_2_5_PRO = \"gemini-2.5-pro\",\n GOOGLE_GEMINI_2_5_FLASH = \"gemini-2.5-flash\",\n GOOGLE_GEMINI_2_0_FLASH = \"gemini-2.0-flash-exp\",\n GOOGLE_GEMINI_1_5_PRO = \"gemini-1.5-pro\",\n GOOGLE_GEMINI_1_5_FLASH = \"gemini-1.5-flash\",\n GOOGLE_GEMINI_PRO = \"gemini-pro\",\n GOOGLE_GEMINI_PRO_VISION = \"gemini-pro-vision\",\n \n // Mistral Models\n MISTRAL_LARGE = \"mistral-large-latest\",\n MISTRAL_MEDIUM = \"mistral-medium-latest\",\n MISTRAL_SMALL = \"mistral-small-latest\",\n \n // Perplexity Models\n PERPLEXITY_SONAR_LARGE_ONLINE = \"sonar-large-online\",\n PERPLEXITY_SONAR_MEDIUM_ONLINE = \"sonar-medium-online\",\n PERPLEXITY_SONAR_SMALL_ONLINE = \"sonar-small-online\",\n PERPLEXITY_SONAR_LARGE_CHAT = \"sonar-large-chat\",\n PERPLEXITY_SONAR_MEDIUM_CHAT = \"sonar-medium-chat\",\n PERPLEXITY_SONAR_SMALL_CHAT = \"sonar-small-chat\",\n \n // Grok Models (xAI)\n GROK_4 = \"grok-4\",\n GROK_3 = \"grok-3\",\n GROK_2_VISION = \"grok-2-vision\",\n GROK_2 = \"grok-2\",\n}\n\n\nexport enum LLM_Model_IO_Capability {\n MULTIMODAL_VISION = \"multimodal_vision\",\n MULTIMODAL_AUDIO = \"multimodal_audio\",\n MULTIMODAL_VIDEO = \"multimodal_video\",\n STRUCTURED_OUTPUTS = \"structured_outputs\",\n JSON_MODE = \"json_mode\",\n FUNCTION_CALLING = \"function_calling\",\n TOOL_USE = \"tool_use\",\n STREAMING = \"streaming\",\n LONG_CONTEXT = \"long_context\",\n CODE_GENERATION = \"code_generation\",\n}\n\n/**\n * Whether a model can think, and whether that thinking can be turned OFF.\n *\n * This is the MODEL-PROPERTY axis of reasoning. It answers \"what is this model\n * capable of\", never \"how hard should this call think\" — the latter is\n * {@link LLMProvider_ReasoningEffort}, a per-call parameter. Keeping the two\n * apart is deliberate: a capability is a fact about the model, an effort is a\n * choice by the author. (The six `*_THINKING` operation keys that once encoded\n * this as a third axis were retired on 2026-07-17.)\n *\n * Consumed by {@link LLM_MODEL_THINKING_CAPABILITY} +\n * {@link validateReasoningEffortForModel} to reject impossible\n * model × effort pairs at authoring time instead of as a provider 400.\n */\nexport enum LLM_Model_Thinking_Capability {\n /** Not a reasoning model — it cannot think, so NO `reasoningEffort` is valid. */\n NONE = \"none\",\n /** Thinking can be enabled AND disabled — every effort level is valid, incl. `NONE`. */\n OPTIONAL = \"optional\",\n /**\n * The model ALWAYS reasons and thinking CANNOT be disabled (o-series,\n * `claude-fable-5`, `claude-opus-5-5`). Every effort is valid EXCEPT `NONE` — asking such a model\n * not to think is a provider error, not a preference.\n *\n * NOT a property of a model FAMILY: measured 2026-09-08, `claude-fable-5`\n * refuses `thinking.type.disabled` while `claude-sonnet-5` and\n * `claude-opus-5` accept it — and on 2026-09-24 `claude-opus-5-5` refused it,\n * so even two revisions of one tier differ. Both siblings carried this value on the family's\n * behalf for a month, which made `validateReasoningEffortForModel` refuse a\n * configuration the provider would have honoured.\n */\n ALWAYS = \"always\",\n}\n\nexport enum LLM_Model_Availability {\n PRODUCTION = \"production\", // Fully available in production\n BETA = \"beta\", // Beta access, may have limitations\n PREVIEW = \"preview\", // Preview/early access\n DEPRECATED = \"deprecated\", // Still available but deprecated\n DISCONTINUED = \"discontinued\", // No longer available\n}\n\n/**\n * WHAT A MODEL IS CHOSEN FOR — the durable axis of model selection.\n *\n * Concrete model ids churn monthly; the kinds of work a model is selected for\n * do not. This enum is therefore the surface an AUTHOR names\n * (`config.modelApplicability`), while the concrete id is resolved by the\n * framework from {@link LLM_MODEL_CATALOG} +\n * {@link LLM_MODEL_APPLICABILITY_PREFERENCE}. A model launch becomes one\n * catalog row and one preference edit, with no agent definition touched.\n *\n * Members name the WORK, never the model's SIZE or a vendor tier. A tier\n * (\"mini\", \"pro\", \"Sol/Terra/Luna\", \"Opus/Sonnet/Haiku\") is a property of one\n * vendor's line-up — it renames (GPT-5.6 already did), it differs per provider,\n * and it still never says what to choose it FOR.\n *\n * Import path: `@wildo-ai/external-connectors-models`.\n */\nexport enum LLM_Model_Applicability {\n /**\n * High-stakes semantic judgment where being wrong is expensive and the answer\n * is read by a human or gates a durable decision — critique, deliberation,\n * persona derivation, acceptance judgment.\n *\n * Choose it when: cost and latency are worth trading for quality, the input is\n * ambiguous, and there is no mechanical check downstream that would catch a\n * poor answer.\n * Do NOT choose it for: volume work, or anything a schema already constrains.\n */\n DEEP_JUDGMENT = \"deep_judgment\",\n\n /**\n * Everyday generation of application artifacts against a declared schema —\n * structured output, copy, plans, summaries.\n *\n * Choose it when: the shape is constrained by a schema or a template, quality\n * matters but the task is bounded, and the call happens tens of times rather\n * than thousands. This is the correct default when no other member obviously\n * fits.\n */\n STRUCTURED_AUTHORING = \"structured_authoring\",\n\n /**\n * High-volume, low-judgment transformation — labelling, translation,\n * extraction, reformatting, classification against a fixed vocabulary.\n *\n * Choose it when: the same call runs hundreds or thousands of times, the\n * answer is checkable, and unit cost dominates quality. The trade is\n * deliberate: paying a judgment-tier price per label is the failure this\n * member exists to prevent.\n */\n HIGH_VOLUME_MECHANICAL = \"high_volume_mechanical\",\n\n /**\n * Work whose binding constraint is how much material must be in ONE call —\n * whole-corpus analysis, cross-document reconciliation, large-codebase\n * reading.\n *\n * Choose it when: chunking would destroy the semantics (the answer depends on\n * relating parts that must be seen together). If the work chunks cleanly,\n * choose by judgment level instead and let the caller chunk.\n */\n LONG_CONTEXT_ANALYSIS = \"long_context_analysis\",\n\n /**\n * Judgment that requires SEEING an artifact — logo/brand assessment, rendered\n * layout review, screenshot triage.\n *\n * Choose it when: the input is an image and the output is an assessment of it.\n * Resolution refuses any model whose catalog row does not evidence\n * {@link LLM_Model_IO_Capability.MULTIMODAL_VISION}, so an unverified model is\n * never silently selected for vision work.\n */\n VISUAL_JUDGMENT = \"visual_judgment\",\n\n /**\n * Autonomous, workspace-mutating code authoring driven through a coding-agent\n * CLI rather than a chat API.\n *\n * Choose it when: the agent edits files in a trusted workspace and needs long\n * tool-using turns. This member is transport-bound — it is only serviceable\n * on a provider that declares an `AGENT_CLIENT_PROTOCOL` transport, so resolving it never\n * silently downgrades workspace work to a chat call that can only describe an\n * edit.\n */\n WORKSPACE_CODING_AGENT = \"workspace_coding_agent\",\n}\n\n\n/** @wildo_source:part:start saas.external-providers.llm.operation-key facet:kind:api facet:audience:app-developer\n *\n * The LLM operation vocabulary — WHAT a call does, never HOW HARD it thinks.\n *\n * This is the key you put on an agent's `config.operationKey`. It selects the\n * executor, and with it BOTH the invocation `input` shape you must supply and\n * the `output` shape you get back:\n *\n * | Operation key | `invocation.input` | `invocation.output` |\n * |-----------------------|-------------------------------|---------------------|\n * | `GENERATE_TEXT` | `{ prompt }` | `{ text }` |\n * | `GENERATE_STRUCTURED` | `{ prompt, schema }` (Zod) | `{ object }` |\n * | `CHAT_COMPLETION` | `{ messages }` or `{ prompt }`| `{ message }` |\n * | `CHAT_MULTIMODAL` | `{ prompt, images }` | `{ message }` |\n *\n * `GENERATE_STRUCTURED` REQUIRES `input.schema`; omitting it is a validation\n * error, not a silent fallback to text. The `STREAM_*` keys exist for the\n * conversational runtime — a one-shot caller uses the buffered keys above.\n *\n * Import path: `@wildo-ai/external-connectors-models`.\n *\n * Reasoning depth is a PARAMETER ({@link LLMProvider_ReasoningEffort} on the\n * model configuration), not an operation. The six `*_THINKING` op keys that\n * used to live here were RETIRED (2026-07-17): they were inert at execution\n * (each routed to the exact same executor as its non-thinking sibling) and,\n * once `reasoningEffort` landed, they became a SECOND authority axis for the\n * same concept — two ways to say \"think harder\", neither carrying its own\n * semantic weight. A model's ability to reason is a property of the model +\n * the effort parameter, not a parallel operation surface.\n */\nexport enum LLMProvider_OperationKey {\n GENERATE_TEXT = \"llm.generateText\",\n CHAT_COMPLETION = \"llm.chatCompletion\",\n STREAM_TEXT = \"llm.streamText\",\n GENERATE_STRUCTURED = \"llm.generateStructured\",\n CHAT_MULTIMODAL = \"llm.chatMultimodal\",\n STREAM_STRUCTURED = \"llm.streamStructured\",\n}\n/** @wildo_source:part:end saas.external-providers.llm.operation-key */\n\n\n/**\n * Prompt format preference for provider-specific rendering\n * Used by PromptCompilerBackendService to select optimal format\n */\nexport enum LLMProvider_PromptFormat {\n /** XML boundaries with tags like <instructions>, <context> - best for Claude/Anthropic */\n XML_BOUNDARIES = \"xml_boundaries\",\n /** Message roles (system/user/assistant) - best for OpenAI chat */\n MESSAGE_ROLES = \"message_roles\",\n /** Markdown headings (## Instructions, ## Context) - generic fallback */\n MARKDOWN_HEADINGS = \"markdown_headings\",\n}\n\n// ===============================================================\n// LLM Provider Configuration\n// ===============================================================\n\n\nexport type LLMProvider_Configuration = ExternalProvider_ExchangeProtocol_Configuration_Base & {\n customLocation?: string,\n maxStructuredDataFieldAllowed?: number;\n}\n\n\n// ===============================================================\n// LLM Operation Model Configuration\n// ===============================================================\n\nexport const LLMProvider_ToolChoice_Schema = z.union([\n z.literal(\"auto\"),\n z.literal(\"none\"),\n z.literal(\"required\"),\n z.object({\n type: z.literal(\"tool\"),\n name: z.string(),\n }),\n]);\nexport type LLMProvider_ToolChoice = z.infer<typeof LLMProvider_ToolChoice_Schema>;\n\n/** @wildo_source:part:start saas.external-providers.llm.model-configuration facet:kind:api facet:audience:app-developer\n *\n * Reasoning-effort control for reasoning-capable models (GPT-5.6 Sol/Terra/Luna,\n * OpenAI o-series, Claude 5 thinking, Gemini reasoning, …). The values mirror\n * the AI SDK 7 top-level `reasoning` option EXACTLY, which the SDK translates to\n * each provider's native reasoning setting (OpenAI `reasoning_effort`, Anthropic\n * `output_config.effort`, …). Omit for non-reasoning models or to accept the\n * provider default.\n *\n * Effort ladder (cost/latency ↑ with depth):\n * - `NONE` — reasoning off; mechanical tasks (extraction, formatting, labelling).\n * - `MINIMAL` / `LOW` — brief reasoning; simple structured output.\n * - `MEDIUM` — balanced; most authored generation (market/email copy).\n * - `HIGH` / `XHIGH` — deep reasoning; judgment work (persona derivation,\n * deliberation, logo/quality judges).\n * - `PROVIDER_DEFAULT` — explicitly defer to the model's own default effort.\n *\n * NOT EVERY MODEL SUPPORTS EVERY LEVEL — the SDK forwards the value and the\n * provider validates it. Support matrix VERIFIED LIVE (2026-09-08), per MODEL\n * rather than per family, because the family is not uniform:\n *\n * | Model | Supported | Rejected |\n * |--------------------------------------|---------------------------------|-------------------------------|\n * | GPT-5.6 sol / terra / luna | none, low, medium, high, xhigh | `minimal`, `provider-default` |\n * | claude-fable-5 · claude-opus-5-5 | low, medium, high, xhigh | **`none`**, `minimal`, `provider-default` |\n * | claude-sonnet-5 · claude-opus-5 | none, low, medium, high, xhigh | `minimal`, `provider-default` |\n *\n * ⚠️ `NONE` is NOT portable, but the line is finer than \"OpenAI yes, Anthropic\n * no\": `claude-fable-5` and `claude-opus-5-5` refuse it while `claude-sonnet-5`\n * and `claude-opus-5` accept it, so a level legal on one Opus revision is\n * illegal on the next —\n * which is why the capability is a per-model probed fact and never a family\n * assumption. `PROVIDER_DEFAULT` is rejected as an explicit value by BOTH\n * providers — omit the field entirely for the model's own default.\n *\n * How each provider expresses this natively, since the vocabularies differ and\n * Anthropic's changed: OpenAI takes `reasoning_effort: <level>`. Anthropic\n * takes `thinking: {type:'disabled'}` for `NONE`, and otherwise\n * `thinking: {type:'adaptive'}` + `output_config: {effort: <level>}` — its\n * accepted set is `low|medium|high|xhigh|max`, so `max` exists there and is\n * deliberately NOT an enum member (OpenAI rejects it, and a level only one\n * provider honours would not be portable). The older\n * `thinking: {type:'enabled', budget_tokens}` form is RETIRED and now 400s.\n */\nexport enum LLMProvider_ReasoningEffort {\n PROVIDER_DEFAULT = \"provider-default\",\n NONE = \"none\",\n MINIMAL = \"minimal\",\n LOW = \"low\",\n MEDIUM = \"medium\",\n HIGH = \"high\",\n XHIGH = \"xhigh\",\n}\n/** @wildo_source:part:end saas.external-providers.llm.model-configuration */\n\n/**\n * One row per model: everything the framework knows about a concrete id.\n *\n * The entry deliberately separates TWO kinds of knowledge, because they carry\n * different burdens of proof and different consequences when wrong:\n *\n * **Probed facts** — `availability`, `thinkingCapability`,\n * `unsupportedReasoningEfforts`, `rejectsExplicitTemperature`. These are\n * assertions about the provider's API and are populated ONLY from a live probe\n * (`live-model-smoke.test.ts`, `WILDO_LIVE_MODEL_SMOKE=1`). Absence means\n * \"not yet verified\", never \"false\" — a wrong value here BLOCKS a legal\n * configuration, so guessing is worse than omitting. Never infer them from\n * published docs: the docs have already been wrong once (they claimed GPT-5.6\n * supports `minimal`; the API rejects it).\n *\n * **Framework opinion** — `applicabilities`, `ioCapabilities`. These express\n * what Wildo is willing to SELECT this model for. Being wrong here degrades\n * quality or cost, it does not make a call illegal, and the remedy is an edit\n * to one row rather than to every agent definition.\n */\nexport type LLM_ModelCatalogEntry = {\n /** The `ref` of the provider module that serves this id. */\n providerRef: string;\n /**\n * PROBED. Omitted when this repository has never verified the id against the\n * provider's live model list. An unverified model is never auto-resolved\n * ({@link resolveModelForApplicability}); it stays nameable as an explicit\n * pin, which is the escape hatch for custom and fine-tuned deployments.\n */\n availability?: LLM_Model_Availability;\n /** ISO date of the live verification behind the probed fields. */\n probedOn?: string;\n /**\n * FRAMEWORK OPINION. Which kinds of work this model may be selected for.\n * Empty means \"never auto-selected\" — a legal, deliberate state for an id we\n * keep nameable (legacy, pinned, or recorded in an old trace) but do not want\n * chosen on an author's behalf.\n */\n applicabilities: readonly LLM_Model_Applicability[];\n /** FRAMEWORK OPINION, except where a probe confirmed it. */\n ioCapabilities?: readonly LLM_Model_IO_Capability[];\n /** PROBED. See {@link LLM_Model_Thinking_Capability}. */\n thinkingCapability?: LLM_Model_Thinking_Capability;\n /** PROBED. Effort levels this model rejects despite its thinking capability. */\n unsupportedReasoningEfforts?: readonly LLMProvider_ReasoningEffort[];\n /** PROBED. `true` when sending any explicit `temperature` is a provider error. */\n rejectsExplicitTemperature?: boolean;\n};\n\n/**\n * THE model catalog — the single per-model fact table.\n *\n * It is an EXHAUSTIVE `Record`, not a `Partial`: adding a member to\n * {@link LLM_Model} without a row here is a compile error. That exhaustiveness\n * is the entire guarantee. Before this record existed, model knowledge lived in\n * four parallel partial maps keyed by the same string — a thinking-capability\n * map, an unsupported-effort map, a pricing table and a capacity registry —\n * plus two enums ({@link LLM_Model_Availability},\n * {@link LLM_Model_IO_Capability}) that had no per-model facts and no consumer\n * at all. Partial maps are how a vocabulary silently stops describing the\n * running system.\n *\n * Per-field burden of proof: see {@link LLM_ModelCatalogEntry}.\n */\nexport const LLM_MODEL_CATALOG: Record<LLM_Model, LLM_ModelCatalogEntry> = {\n // ---------------------------------------------------------------\n // OpenAI — ids verified LIVE against `GET /v1/models` (2026-07-16).\n // ---------------------------------------------------------------\n [LLM_Model.OPEN_AI_GPT_5_6_SOL]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [LLM_Model_Applicability.DEEP_JUDGMENT, LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n // Live: `minimal` → 400 (the published docs claim it exists — they are wrong).\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.OPEN_AI_GPT_5_6_TERRA]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [LLM_Model_Applicability.STRUCTURED_AUTHORING, LLM_Model_Applicability.VISUAL_JUDGMENT],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.OPEN_AI_GPT_5_6_LUNA]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL],\n ioCapabilities: [LLM_Model_IO_Capability.STRUCTURED_OUTPUTS, LLM_Model_IO_Capability.TOOL_USE],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.OPEN_AI_GPT_5_2_PRO]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.DEEP_JUDGMENT],\n },\n [LLM_Model.OPEN_AI_GPT_5_2]: {\n providerRef: \"openai\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [],\n },\n [LLM_Model.OPEN_AI_GPT_5_1]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_5]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_5_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4O]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4O_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4_TURBO]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_4]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_GPT_3_5_TURBO]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O1]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O1_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O3_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n [LLM_Model.OPEN_AI_O4_MINI]: { providerRef: \"openai\", availability: LLM_Model_Availability.PRODUCTION, probedOn: \"2026-07-16\", applicabilities: [] },\n\n // ---------------------------------------------------------------\n // Anthropic — ids verified LIVE against `GET /v1/models` (2026-07-16).\n //\n // Thinking posture re-probed 2026-09-08 and it is PER MODEL, not per family.\n // `claude-fable-5` refuses `thinking: {type:'disabled'}` (400 \"…is not\n // supported for this model; thinking defaults to adaptive\") — ALWAYS.\n // `claude-sonnet-5` and `claude-opus-5` ACCEPT it (200) — OPTIONAL.\n // `claude-opus-5-5` (probed 2026-09-24) REFUSES it, like fable — ALWAYS. All\n // four reject `minimal` and `provider-default` as `output_config.effort`\n // values, whose accepted set is `low|medium|high|xhigh|max`.\n // ---------------------------------------------------------------\n [LLM_Model.CLAUDE_FABLE_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [\n LLM_Model_Applicability.DEEP_JUDGMENT,\n LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,\n LLM_Model_Applicability.VISUAL_JUDGMENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n // Refuses `thinking: {type:'disabled'}` (re-probed 2026-09-08). Sonnet 5 and Opus 5 accept it\n // and Opus 5.5 refuses it (2026-09-24), so this value is per model, never the family's.\n thinkingCapability: LLM_Model_Thinking_Capability.ALWAYS,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_OPUS_5_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n // Probed live 2026-09-24 through `live-model-smoke.test.ts` (generation, temperature\n // rejection, thinking posture and every effort level) when the ACP coding/research lane\n // moved onto it. Every value below is that measurement, not an inheritance from CLAUDE_OPUS_5 —\n // and the measurement DISAGREED with Opus 5 on thinking: 5.5 refuses `thinking: {type:'disabled'}`\n // (400 \"…is not supported for this model. Use thinking.type.adaptive…\"), so it is ALWAYS, as\n // Fable is, where Opus 5 is OPTIONAL. Copying the sibling row would have been wrong.\n probedOn: \"2026-09-24\",\n applicabilities: [\n LLM_Model_Applicability.DEEP_JUDGMENT,\n LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,\n LLM_Model_Applicability.STRUCTURED_AUTHORING,\n LLM_Model_Applicability.WORKSPACE_CODING_AGENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.CODE_GENERATION,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.ALWAYS,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_OPUS_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n // Probed live 2026-09-04 by the switch of the ACP coding/research lane onto it (it had been\n // every host-managed session's silent operator default long before it had an enum member).\n // Re-probed 2026-09-08 once it gained an `LLM_SMOKE` entry, which corrected\n // `thinkingCapability` from an inherited ALWAYS to the measured OPTIONAL.\n probedOn: \"2026-09-08\",\n applicabilities: [\n LLM_Model_Applicability.DEEP_JUDGMENT,\n LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS,\n LLM_Model_Applicability.STRUCTURED_AUTHORING,\n LLM_Model_Applicability.WORKSPACE_CODING_AGENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.CODE_GENERATION,\n LLM_Model_IO_Capability.LONG_CONTEXT,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_SONNET_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-09-08\",\n applicabilities: [\n LLM_Model_Applicability.STRUCTURED_AUTHORING,\n LLM_Model_Applicability.WORKSPACE_CODING_AGENT,\n ],\n ioCapabilities: [\n LLM_Model_IO_Capability.MULTIMODAL_VISION,\n LLM_Model_IO_Capability.STRUCTURED_OUTPUTS,\n LLM_Model_IO_Capability.TOOL_USE,\n LLM_Model_IO_Capability.CODE_GENERATION,\n ],\n thinkingCapability: LLM_Model_Thinking_Capability.OPTIONAL,\n unsupportedReasoningEfforts: [LLMProvider_ReasoningEffort.MINIMAL, LLMProvider_ReasoningEffort.PROVIDER_DEFAULT],\n rejectsExplicitTemperature: true,\n },\n [LLM_Model.CLAUDE_OPUS_4_8]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.WORKSPACE_CODING_AGENT],\n ioCapabilities: [LLM_Model_IO_Capability.TOOL_USE, LLM_Model_IO_Capability.CODE_GENERATION],\n },\n [LLM_Model.CLAUDE_SONNET_4_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.WORKSPACE_CODING_AGENT],\n ioCapabilities: [LLM_Model_IO_Capability.TOOL_USE, LLM_Model_IO_Capability.CODE_GENERATION],\n },\n [LLM_Model.CLAUDE_HAIKU_4_5]: {\n providerRef: \"anthropic\",\n availability: LLM_Model_Availability.PRODUCTION,\n probedOn: \"2026-07-16\",\n applicabilities: [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL],\n ioCapabilities: [LLM_Model_IO_Capability.STRUCTURED_OUTPUTS],\n },\n\n // ---------------------------------------------------------------\n // Google / Mistral / Perplexity / xAI — NEVER live-verified by this\n // repository. `availability` is therefore omitted and no row is\n // auto-selectable. Probe an id and fill its row before preferring it.\n // ---------------------------------------------------------------\n [LLM_Model.GOOGLE_GEMINI_3_DEEP_THINK]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_3_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_2_5_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_2_5_FLASH]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_2_0_FLASH]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_1_5_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_1_5_FLASH]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_PRO]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.GOOGLE_GEMINI_PRO_VISION]: { providerRef: \"google\", applicabilities: [] },\n [LLM_Model.MISTRAL_LARGE]: { providerRef: \"mistral\", applicabilities: [] },\n [LLM_Model.MISTRAL_MEDIUM]: { providerRef: \"mistral\", applicabilities: [] },\n [LLM_Model.MISTRAL_SMALL]: { providerRef: \"mistral\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_LARGE_ONLINE]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_MEDIUM_ONLINE]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_SMALL_ONLINE]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_LARGE_CHAT]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_MEDIUM_CHAT]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.PERPLEXITY_SONAR_SMALL_CHAT]: { providerRef: \"perplexity\", applicabilities: [] },\n [LLM_Model.GROK_4]: { providerRef: \"grok\", applicabilities: [] },\n [LLM_Model.GROK_3]: { providerRef: \"grok\", applicabilities: [] },\n [LLM_Model.GROK_2_VISION]: { providerRef: \"grok\", applicabilities: [] },\n [LLM_Model.GROK_2]: { providerRef: \"grok\", applicabilities: [] },\n};\n\n/**\n * Availability states a model may be auto-RESOLVED in. `DEPRECATED` and\n * `DISCONTINUED` are deliberately absent: a retired id stays nameable as an\n * explicit pin and readable in a stored trace, but the framework will not\n * choose it on an author's behalf.\n */\nexport const LLM_MODEL_RESOLVABLE_AVAILABILITIES: readonly LLM_Model_Availability[] = [\n LLM_Model_Availability.PRODUCTION,\n LLM_Model_Availability.BETA,\n LLM_Model_Availability.PREVIEW,\n];\n\n/**\n * The framework's DEFAULT answer to \"which model serves this kind of work\",\n * ordered by preference, highest first.\n *\n * This is the one place a monthly model launch lands: add its catalog row, then\n * put it at the head of the applicabilities it should now serve. No agent\n * definition changes. An application may override this per applicability (see\n * the resolution options on {@link resolveModelForApplicability}) when it wants\n * a different cost/quality trade without forking the engine.\n *\n * A preference entry is only a CANDIDATE — resolution still requires the row to\n * name the requesting provider, to be in a resolvable availability, and to\n * declare the applicability. So an entry can never resurrect a retired model or\n * quietly widen what a model is used for.\n */\nexport const LLM_MODEL_APPLICABILITY_PREFERENCE: Record<LLM_Model_Applicability, readonly LLM_Model[]> = {\n [LLM_Model_Applicability.DEEP_JUDGMENT]: [\n LLM_Model.CLAUDE_FABLE_5,\n LLM_Model.OPEN_AI_GPT_5_6_SOL,\n LLM_Model.OPEN_AI_GPT_5_2_PRO,\n ],\n [LLM_Model_Applicability.STRUCTURED_AUTHORING]: [\n LLM_Model.OPEN_AI_GPT_5_6_TERRA,\n LLM_Model.CLAUDE_SONNET_5,\n ],\n [LLM_Model_Applicability.HIGH_VOLUME_MECHANICAL]: [\n LLM_Model.OPEN_AI_GPT_5_6_LUNA,\n LLM_Model.CLAUDE_HAIKU_4_5,\n ],\n [LLM_Model_Applicability.LONG_CONTEXT_ANALYSIS]: [\n LLM_Model.CLAUDE_FABLE_5,\n LLM_Model.OPEN_AI_GPT_5_6_SOL,\n ],\n [LLM_Model_Applicability.VISUAL_JUDGMENT]: [\n LLM_Model.OPEN_AI_GPT_5_6_TERRA,\n LLM_Model.CLAUDE_FABLE_5,\n ],\n [LLM_Model_Applicability.WORKSPACE_CODING_AGENT]: [\n LLM_Model.CLAUDE_SONNET_5,\n LLM_Model.CLAUDE_SONNET_4_5,\n LLM_Model.CLAUDE_OPUS_4_8,\n ],\n};\n\n/**\n * IO capabilities an applicability REQUIRES of any model resolved for it.\n *\n * Only vision is gated today, and deliberately: selecting a model that cannot\n * see for work whose entire input is an image is a silent, expensive failure\n * (the model answers confidently about nothing). Because `ioCapabilities` is\n * evidence-led, an unpopulated row is simply not selected for vision work —\n * fail-closed on the axis where a wrong answer is unrecoverable.\n */\nconst LLM_MODEL_APPLICABILITY_REQUIRED_IO: Partial<Record<LLM_Model_Applicability, readonly LLM_Model_IO_Capability[]>> = {\n [LLM_Model_Applicability.VISUAL_JUDGMENT]: [LLM_Model_IO_Capability.MULTIMODAL_VISION],\n};\n\n/** Why {@link resolveModelForApplicability} could not answer — carried into a named CONFIGURATION error. */\nexport enum LLM_ModelResolutionFailure {\n /** The applicability has no candidate at all for this provider. */\n NO_CANDIDATE_FOR_PROVIDER = \"no_candidate_for_provider\",\n /** Candidates exist for this provider but none is in a resolvable availability. */\n NO_RESOLVABLE_AVAILABILITY = \"no_resolvable_availability\",\n /** Candidates exist and are available, but none evidences the required IO capability. */\n REQUIRED_IO_CAPABILITY_UNEVIDENCED = \"required_io_capability_unevidenced\",\n}\n\nexport type LLM_ModelResolutionInput = {\n applicability: LLM_Model_Applicability;\n /** Resolve within ONE provider — the provider the agent is configured against. */\n providerRef: string;\n /**\n * Application-level override of the default preference order, per\n * applicability. Only the ORDER and MEMBERSHIP of candidates is overridable;\n * every catalog gate still applies, so an override cannot select a retired\n * model, a model of another provider, or a model that does not declare the\n * applicability.\n */\n preferenceOverride?: Partial<Record<LLM_Model_Applicability, readonly LLM_Model[]>>;\n};\n\nexport type LLM_ModelResolution =\n | { resolved: true; model: LLM_Model; entry: LLM_ModelCatalogEntry; fromOverride: boolean }\n | { resolved: false; failure: LLM_ModelResolutionFailure; consideredModels: readonly LLM_Model[] };\n\n/**\n * Resolve an applicability to ONE concrete model id for a given provider.\n *\n * Fails CLOSED and explains itself: an unresolvable applicability must surface\n * as a named startup/configuration error naming what was considered, never as a\n * silent fallback to some other model. A fallback here would be the exact defect\n * this layer exists to remove — the author asked for a KIND of model, and\n * quietly handing them a different kind is worse than refusing.\n *\n * Note this function answers the semantic question only. Whether the resolved\n * model is reachable over the agent's TRANSPORT (a profile that\n * declares it) is a separate gate owned by the backend, because the transport\n * declaration lives on the provider registry rather than in this catalog.\n *\n * `catalog` is a parameter rather than a closed-over constant so each gate can\n * be exercised INDEPENDENTLY: with the real catalog, several gates are\n * unreachable simply because no shipped row has the shape that trips them (no\n * model is currently both applicability-declaring and unverified), and a gate\n * that cannot be reached is a gate nobody has tested. Production callers pass\n * nothing.\n */\nexport const resolveModelForApplicability = (\n input: LLM_ModelResolutionInput,\n catalog: Record<LLM_Model, LLM_ModelCatalogEntry> = LLM_MODEL_CATALOG,\n): LLM_ModelResolution => {\n const override = input.preferenceOverride?.[input.applicability];\n const candidates = override ?? LLM_MODEL_APPLICABILITY_PREFERENCE[input.applicability];\n const requiredIo = LLM_MODEL_APPLICABILITY_REQUIRED_IO[input.applicability] ?? [];\n\n const forProvider = candidates.filter((model) => {\n const entry = catalog[model];\n return entry.providerRef === input.providerRef && entry.applicabilities.includes(input.applicability);\n });\n if (forProvider.length === 0) {\n return { resolved: false, failure: LLM_ModelResolutionFailure.NO_CANDIDATE_FOR_PROVIDER, consideredModels: candidates };\n }\n\n const available = forProvider.filter((model) => {\n const availability = catalog[model].availability;\n return availability !== undefined && LLM_MODEL_RESOLVABLE_AVAILABILITIES.includes(availability);\n });\n if (available.length === 0) {\n return { resolved: false, failure: LLM_ModelResolutionFailure.NO_RESOLVABLE_AVAILABILITY, consideredModels: forProvider };\n }\n\n const capable = available.filter((model) => {\n const evidenced = catalog[model].ioCapabilities ?? [];\n return requiredIo.every((capability) => evidenced.includes(capability));\n });\n if (capable.length === 0) {\n return { resolved: false, failure: LLM_ModelResolutionFailure.REQUIRED_IO_CAPABILITY_UNEVIDENCED, consideredModels: available };\n }\n\n const model = capable[0]!;\n return { resolved: true, model, entry: catalog[model], fromOverride: override !== undefined };\n};\n\n/**\n * Model → thinking capability, DERIVED from {@link LLM_MODEL_CATALOG}.\n *\n * Still partial and still evidence-only: a model appears here only when its\n * catalog row carries a probed `thinkingCapability`. Absence means \"not yet\n * verified\", NOT \"no thinking\". Validation FAILS OPEN on absent/unknown models\n * — `LLMProvider_OperationModelConfiguration.model` is a free `z.string()`\n * (fine-tuned + custom deployment ids are legitimate), so we can neither\n * enumerate every id nor guess safely. Guessing is worse than omitting: a wrong\n * `ALWAYS` blocks a legal config, whereas an omission leaves runtime behavior\n * untouched.\n */\nexport const LLM_MODEL_THINKING_CAPABILITY: Partial<Record<LLM_Model, LLM_Model_Thinking_Capability>> =\n Object.fromEntries(\n Object.entries(LLM_MODEL_CATALOG)\n .filter(([, entry]) => entry.thinkingCapability !== undefined)\n .map(([model, entry]) => [model, entry.thinkingCapability]),\n ) as Partial<Record<LLM_Model, LLM_Model_Thinking_Capability>>;\n\n/**\n * Effort levels a specific model REJECTS despite its thinking capability,\n * DERIVED from {@link LLM_MODEL_CATALOG} — per-provider vocabulary quirks,\n * distinct from the capability axis above. Evidence-only, same rule.\n *\n * `PROVIDER_DEFAULT` is rejected by GPT-5.6 as an explicit value: to get the\n * model's own default, OMIT `reasoningEffort` entirely rather than naming it.\n */\nexport const LLM_MODEL_UNSUPPORTED_REASONING_EFFORTS: Partial<Record<LLM_Model, readonly LLMProvider_ReasoningEffort[]>> =\n Object.fromEntries(\n Object.entries(LLM_MODEL_CATALOG)\n .filter(([, entry]) => entry.unsupportedReasoningEfforts !== undefined)\n .map(([model, entry]) => [model, entry.unsupportedReasoningEfforts]),\n ) as Partial<Record<LLM_Model, readonly LLMProvider_ReasoningEffort[]>>;\n\n/**\n * Resolve a model's verified thinking capability, or `undefined` when the model\n * id is unknown/unverified (free-form ids are legitimate — see\n * {@link LLM_MODEL_THINKING_CAPABILITY}).\n */\nexport const getModelThinkingCapability = (model: string): LLM_Model_Thinking_Capability | undefined =>\n LLM_MODEL_THINKING_CAPABILITY[model as LLM_Model];\n\n/** @wildo_source:part:start saas.external-providers.llm.model-configuration facet:kind:api facet:audience:app-developer\n *\n * Validate a `model × reasoningEffort` pair against verified capability.\n *\n * Returns a human-readable violation, or `null` when the pair is valid OR\n * cannot be judged. **Fails OPEN by design** (unknown model, or omitted effort\n * → `null`): the alternative would reject legitimate custom deployments.\n *\n * Call this at authoring/registration time so an impossible pair surfaces as a\n * named startup error instead of a provider 400 in the middle of a long agent\n * pipeline — the trap this exists to catch is `NONE`, which turns reasoning off\n * on GPT-5.6 but hard-errors on Claude 5.\n *\n * @param model The configured model id (free-form; unknown ids pass).\n * @param effort The configured effort; omit/undefined always passes.\n * @returns A violation message, or `null` if valid/unjudgeable.\n */\nexport const validateReasoningEffortForModel = (\n model: string,\n effort: LLMProvider_ReasoningEffort | undefined,\n): string | null => {\n /** @wildo_source:part:end saas.external-providers.llm.model-configuration */\n if (effort === undefined) return null;\n\n const capability = getModelThinkingCapability(model);\n if (capability === undefined) return null;\n\n if (capability === LLM_Model_Thinking_Capability.NONE) {\n return `Model \"${model}\" is not a reasoning model, so it accepts no reasoningEffort (got \"${effort}\"). Remove reasoningEffort, or pick a reasoning-capable model.`;\n }\n\n if (capability === LLM_Model_Thinking_Capability.ALWAYS && effort === LLMProvider_ReasoningEffort.NONE) {\n return `Model \"${model}\" always reasons — its thinking cannot be disabled, so reasoningEffort \"none\" is rejected by the provider. Use \"low\" for the cheapest reasoning, or omit reasoningEffort for the model default.`;\n }\n\n const unsupported = LLM_MODEL_UNSUPPORTED_REASONING_EFFORTS[model as LLM_Model];\n if (unsupported?.includes(effort)) {\n const hint = effort === LLMProvider_ReasoningEffort.PROVIDER_DEFAULT\n ? 'Omit reasoningEffort entirely to get the model default.'\n : `Supported levels for this model exclude \"${effort}\".`;\n return `Model \"${model}\" rejects reasoningEffort \"${effort}\". ${hint}`;\n }\n\n return null;\n};\n\n/** @wildo_source:part:start saas.external-providers.llm.model-configuration facet:kind:api facet:audience:app-developer\n *\n * The provider/model/sampling surface every LLM agent config inherits — this is\n * the shape behind an agent's `config` (an agent adds `operationKey` on top).\n *\n * `providerRef` names a provider you enabled for the `AI_LLM` capability in\n * `defineSaaSProviders`; `model` is a free-form string so fine-tuned and custom\n * deployment ids stay legal. Every sampling field is OPTIONAL and every one of\n * them is forwarded to the provider verbatim — so an unsupported value is a\n * provider 400, not a framework-side clamp. Omit a field to accept the model's\n * own default; that is the portable choice (notably: the Claude 5 family\n * REJECTS an explicit `temperature`).\n */\nexport const LLMProvider_OperationModelConfiguration_Schema = z.object({\n /**\n * A CONCRETE model id — the escape hatch, and no longer the ordinary way to answer \"which model\".\n *\n * Declare {@link modelApplicability} instead unless you specifically need THIS id: a fine-tuned\n * or custom deployment, or an agent pinned for a reason worth writing down. Naming an id at each\n * agent is what the applicability axis exists to replace — a monthly model launch then means one\n * catalog edit rather than N definition edits, and nobody has to re-audit which agents should\n * move.\n *\n * Exactly one of `model` / `modelApplicability` must be present (refined below).\n */\n model: z.string().optional(),\n /**\n * The KIND of work this agent does — resolved to a concrete id at agent registration through\n * `resolveModelForApplicability`, against the agent's own `providerRef`.\n *\n * This is the durable form: it survives model launches and retirements, and it states the\n * cost/quality trade the author actually made. Resolution FAILS CLOSED with a named error, so an\n * applicability no model of this provider serves is a startup error rather than a silent\n * substitution.\n */\n modelApplicability: z.enum(LLM_Model_Applicability).optional(),\n providerRef: z.string(),\n temperature: z.number().optional(),\n maxTokens: z.number().optional(),\n topP: z.number().optional(),\n frequencyPenalty: z.number().optional(),\n presencePenalty: z.number().optional(),\n stopStringSequences: z.array(z.string()).optional(),\n /**\n * Reasoning-effort for reasoning-capable models — forwarded as the AI SDK\n * top-level `reasoning` option (see {@link LLMProvider_ReasoningEffort}).\n * Optional + additive: an agent that omits it keeps the model's default\n * effort (the pre-Phase-3 behavior).\n */\n reasoningEffort: z.enum(LLMProvider_ReasoningEffort).optional(),\n // NOTE: a `thinkingEnabled: boolean` field used to sit here. RETIRED\n // (2026-07-17) — it was a THIRD authority axis on reasoning (alongside\n // `reasoningEffort` and the `*_THINKING` op keys), it was strictly subsumed\n // by `reasoningEffort` (which expresses on/off AND depth), and it was never\n // read by any executor: the `THINKING_MODE` model preset and the\n // `ThinkingModeFacet` set it, and nothing acted on it. Authors composing that\n // facet believed they were enabling deep reasoning and got nothing. Use\n // `reasoningEffort` — it is the single authority.\n toolingFunctionEnabled: z.boolean().optional(),\n mcpCompatible: z.boolean().optional(),\n toolChoice: LLMProvider_ToolChoice_Schema.optional(),\n}).refine(\n (config) => (config.model === undefined) !== (config.modelApplicability === undefined),\n {\n /*\n * EXACTLY ONE, and both halves of that matter.\n *\n * NEITHER is the state this refinement mainly exists for — `model` used to be required, so\n * omitting it is the new mistake and it must not reach a runtime that then has nothing to call.\n *\n * BOTH is the subtler one: a config carrying an id AND a class states two answers to one\n * question, and whichever the resolver happened to prefer would be a silent decision. It is\n * also exactly how the axis would have died — an applicability that coexists with the id it was\n * meant to replace changes nothing, which is the trap #439 records.\n */\n 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.',\n path: ['model'],\n },\n);\nexport type LLMProvider_OperationModelConfiguration = z.infer<typeof LLMProvider_OperationModelConfiguration_Schema>;\n/** @wildo_source:part:end saas.external-providers.llm.model-configuration */\n\n// ===============================================================\n// LLM Operations Context\n// ===============================================================\n\nexport enum LLMProvider_FinishReason {\n STOP = \"stop\",\n LENGTH = \"length\",\n TOOL_CALLS = \"tool_calls\",\n CONTENT_FILTER = \"content_filter\",\n FUNCTION_CALL = \"function_call\",\n OTHER = \"other\",\n}\n\nexport const LLMProvider_UsageSchema = z.object({\n promptTokens: z.number().optional(),\n completionTokens: z.number().optional(),\n totalTokens: z.number().optional(),\n /**\n * False when a physical provider result omitted a token dimension THE OPERATION REQUIRES.\n * Operation-aware by contract (RAG plan H4): a GENERATION requires prompt AND completion\n * tokens; an EMBEDDING trace (`AgentCallTraceKind.EMBEDDING`) has no completion-token\n * dimension, so its producer judges completeness on input tokens alone — an embedding must\n * never be flagged incomplete for lacking tokens it structurally cannot have.\n */\n tokenUsageComplete: z.boolean().optional(),\n /** Exact AI-SDK input categories retained for provider acquisition-cost accounting. */\n inputTokenDetails: z.object({\n noCacheTokens: z.number().optional(),\n cacheReadTokens: z.number().optional(),\n cacheWriteTokens: z.number().optional(),\n }).optional(),\n /**\n * Exact AI-SDK output categories (`LanguageModelUsage.outputTokenDetails`), kept for acquisition-cost\n * accounting (#1598). `reasoningTokens` is part of `completionTokens`, never in addition to it: every\n * provider counts reasoning inside its output total. Absent `reasoningTokens` means the provider did\n * not report the split (Anthropic and Mistral do not), which is NOT zero reasoning.\n */\n outputTokenDetails: z.object({\n textTokens: z.number().optional(),\n reasoningTokens: z.number().optional(),\n }).optional(),\n});\nexport type LLMProvider_Usage = z.infer<typeof LLMProvider_UsageSchema>;\n\nexport const LLMProvider_TrackingSchema = z.object({\n // Tool execution tracking\n toolsUsed: z.array(z.object({\n type: z.enum([\"function\", \"mcp\"]),\n ref: z.string(),\n name: z.string(),\n executionTime: z.number().optional(), // ms\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n error: z.string().optional(),\n })).optional(),\n \n toolCalls: z.array(z.object({\n id: z.string(),\n name: z.string(),\n arguments: z.record(z.string(), z.unknown()),\n result: z.unknown().optional(),\n error: z.string().optional(),\n })).optional(),\n \n // MCP connections used\n mcpConnectionsUsed: z.array(z.object({\n ref: z.string(),\n name: z.string().optional(),\n operationsExecuted: z.array(z.object({\n operation: z.string(),\n input: z.unknown().optional(),\n output: z.unknown().optional(),\n executionTime: z.number().optional(),\n })).optional(),\n })).optional(),\n \n // Thinking mode execution details\n thinkingSteps: z.array(z.object({\n stepNumber: z.number(),\n thought: z.string().optional(),\n reasoning: z.string().optional(),\n conclusionReached: z.boolean().optional(),\n tokensUsed: z.number().optional(),\n })).optional(),\n});\nexport type LLMProvider_Tracking = z.infer<typeof LLMProvider_TrackingSchema>;\n\n/**\n * How an LLM operation was physically executed.\n *\n * One member, deliberately. A `CLI` member existed while a coding agent was\n * mis-modelled as a text completion and reached the model through a subprocess;\n * with coding agents moved to their own operation family and their own\n * execution-transport metadata, an LLM call is served over HTTP and nothing\n * else. Kept as an enum rather than collapsed away because the field is\n * recorded on durable execution contexts, where a bare literal would carry no\n * explanation and a second transport may yet be real.\n */\nexport enum LLMProvider_ExecutionTransportKind {\n API = \"api\",\n}\n\nexport const LLMProvider_ExecutionArtifactKindSchema = z.enum([\n \"stdout\",\n \"stderr\",\n]);\nexport type LLMProvider_ExecutionArtifactKind = z.infer<typeof LLMProvider_ExecutionArtifactKindSchema>;\n\nexport const LLMProvider_ExecutionArtifactMetadataSchema = z.object({\n kind: LLMProvider_ExecutionArtifactKindSchema,\n byteLength: z.number().int().nonnegative(),\n});\nexport type LLMProvider_ExecutionArtifactMetadata = z.infer<typeof LLMProvider_ExecutionArtifactMetadataSchema>;\n\nexport const LLMProvider_ExecutionTransportMetadataSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(LLMProvider_ExecutionTransportKind.API),\n protocolKind: z.literal(ExternalProvider_ExchangeProtocol_Kind.LLM_PROVIDER),\n providerRef: z.string(),\n model: z.string().optional(),\n }),\n]);\nexport type LLMProvider_ExecutionTransportMetadata = z.infer<typeof LLMProvider_ExecutionTransportMetadataSchema>;\n\n/**\n * Why a `GENERATE_STRUCTURED` call returned `{ object: undefined }` even though a\n * physical provider call completed.\n *\n * The two members are the two distinct code paths that can produce a missing object,\n * and they are NOT interchangeable — they differ in whether the call is billable and\n * in whether the provider told us anything about the shape of the failure:\n *\n * - `INVALID_OBJECT_AFTER_COMPLETED_CALL` — the provider answered, its usage is real\n * and metered, and the SDK rejected what came back: schema validation failed, the\n * JSON was unparseable, or the completion was truncated. This is the member that\n * carries `validationIssues` (the exact schema paths the model omitted) and\n * `finishReason`.\n * - `NO_OBJECT_GENERATED` — the SDK raised `AI_NoObjectGeneratedError` without a\n * usage-bearing payload, so no shape metadata was recovered. Distinguished from the\n * above precisely because a caller must NOT read the absence of `validationIssues`\n * here as \"the schema was satisfied\".\n * - `RESOLVED_WITHOUT_OBJECT` — the SDK call RESOLVED, raising nothing at all, and the\n * object was still absent. Off-contract for the AI SDK, whose `generateObject` declares\n * a non-optional `object` and signals absence by throwing; it is a member because the\n * engine does not validate that contract, so without it this vocabulary would have a\n * hole exactly where the invariant below is least defensible. A caller seeing this is\n * looking at an SDK or provider-adapter defect, not at a model that answered badly.\n *\n * Deliberately NOT a member: a provider transport failure. Those still THROW a typed\n * backend error rather than returning `{ object: undefined }`, and folding them in\n * here would let a caller treat a network fault as a model-output problem.\n *\n * The invariant these three members exist to uphold: **every path that hands a caller\n * `{ object: undefined }` attaches one of them.** That is what lets the field's absence\n * mean \"not a structured-output failure\" rather than \"no reason was recorded\" — and it is\n * why the third member was added rather than the third path left unattached.\n */\nexport enum LLMProvider_StructuredGenerationFailureKind {\n INVALID_OBJECT_AFTER_COMPLETED_CALL = \"invalid-object-after-completed-call\",\n NO_OBJECT_GENERATED = \"no-object-generated\",\n RESOLVED_WITHOUT_OBJECT = \"resolved-without-object\",\n}\n\n/**\n * One structural validation issue recovered from the SDK/Zod cause chain.\n *\n * Never the issue's `message`: a provider validation error retains the rejected value in its message,\n * so carrying it would copy private model output into any log, trace or persisted failure record that\n * receives this reason. The path names the field the model got wrong.\n *\n * ## What the SCHEMA expected, which is not model output\n *\n * A path and a code say WHERE and roughly WHAT, and that is not enough for a retry to succeed. Measured\n * 2026-09-13 on Wonder CRM's `document-release-policy`: three attempts in a row were rejected with\n * `operatorAttestationLimitationRefs: invalid_type`, and the model repeated the same answer each time\n * because nothing told it an ARRAY was expected. Zod 4 carries that in fields separate from the message,\n * and every one of them is read off the SCHEMA, never off the value:\n *\n * - `expected` — the type an `invalid_type` wanted (`array`, `string`);\n * - `format` / `pattern` — the format an `invalid_format` wanted, and the schema's own regex;\n * - `values` — the options an `invalid_value` admits, i.e. the enum's members;\n * - `keys` — the key names an `unrecognized_keys` found. Schema shape against a strict object, and it\n * was PROJECTED by the provider service while this schema did not declare it, so the caller-side\n * parse silently stripped it — the diagnosis its projection existed for never arrived.\n *\n * ## The one code for which the MESSAGE is the only content: `custom`\n *\n * A `custom` issue is raised by a `.refine()` / `.superRefine()` this repository AUTHORED, and it carries\n * none of the fields above — no `expected`, no `values`, nothing read off a leaf schema, because what it\n * refuses is a relationship BETWEEN fields that no leaf can state. Its message is where the author wrote\n * that relationship down, so an issue projected without it says `sharedResponsibility: custom` and nothing\n * else. Measured 2026-09-16 on Wonder CRM's `top_down.compliance-conception`: three attempts in a row were\n * refused on `obligations.N.sharedResponsibility: custom` and the model could not correct an answer whose\n * rule — \"several governance actors require a shared-responsibility judgement\" — never reached it.\n *\n * It is SAFE for the same reason the fields above are, and for no weaker one: the text is the schema\n * author's, written in this repository's source, not the provider's rendering of the rejected value.\n * `code: \"custom\"` is what guarantees that — every other code's message is composed by Zod around the\n * input. **A refinement author therefore owes this field a message that names schema-shaped identifiers\n * only** — a slug, a ref, a key, an index — exactly the category `keys` already admits, and never a\n * fragment of the rejected content.\n */\nexport const LLMProvider_StructuredValidationIssueSchema = z.object({\n code: z.string(),\n path: z.array(z.union([z.string(), z.number()])),\n expected: z.string().optional(),\n format: z.string().optional(),\n pattern: z.string().optional(),\n values: z.array(z.string()).optional(),\n keys: z.array(z.string()).optional(),\n /** The authored message of a `custom` refinement, and present for no other code. See above. */\n refinementMessage: z.string().optional(),\n});\nexport type LLMProvider_StructuredValidationIssue = z.infer<typeof LLMProvider_StructuredValidationIssueSchema>;\n\n/**\n * The reason a structured generation produced no object, carried back to the CALLER.\n *\n * ## Why this exists\n *\n * `GENERATE_STRUCTURED` logs a rich failure line (error name, message, validation\n * cause, the exact schema paths that failed, finish reason, generated-text length)\n * and then used to return `{ object: undefined }` with nothing attached. Every caller\n * therefore knew only \"no object\" and had to invent a generic message, so the only way\n * to learn WHY a unit failed was to grep the process's own log file for the preceding\n * line — which is not available to the operator reading a CLI summary, a persisted\n * failure record, or a retry classifier.\n *\n * ## Where it is delivered\n *\n * On {@link LLMProvider_OperationContext_BaseSchema}, i.e. the invocation's\n * `executionContext` — the same envelope that already carries `usage`, `finishReason`\n * and `transport`. It is OPTIONAL and present only on a failed structured generation,\n * so no existing caller is affected; a caller that wants the reason reads\n * `executionContext.structuredGenerationFailure` exactly as it already reads\n * `executionContext.usage`.\n *\n * Because the whole envelope is what the agent-call trace sink receives as its\n * `context`, the reason reaches traceability for free.\n *\n * ## Privacy\n *\n * Contains NO generated text. `generatedTextLength` is a length, not a sample; it\n * distinguishes a truncation from an empty completion without disclosing content.\n */\nexport const LLMProvider_StructuredGenerationFailureSchema = z.object({\n kind: z.enum(LLMProvider_StructuredGenerationFailureKind),\n /**\n * Human-readable one-liner, built from PAYLOAD-FREE facts — the thrown value's `name` and this\n * failure's `kind`.\n *\n * Deliberately NOT the caught error's own message, which is what it used to be. A provider's\n * structured-generation error serializes the WHOLE error into its message — the model's rejected\n * `text`, the `response.body`, the validation `value` — so resolving this field through it copied\n * private model output into every log, trace and persisted failure record that receives this\n * envelope, breaking the Privacy note above. Same reasoning as\n * {@link LLMProvider_StructuredValidationIssueSchema}, which drops each issue's message for\n * exactly this reason one field over.\n */\n message: z.string(),\n /** The thrown value's `name` when it had one, else its `typeof`. */\n errorName: z.string().optional(),\n /** `name` of the nested validation cause (e.g. `AI_TypeValidationError`, `ZodError`). */\n validationCauseName: z.string().optional(),\n /** Structural issues only — see {@link LLMProvider_StructuredValidationIssueSchema}. */\n validationIssues: z.array(LLMProvider_StructuredValidationIssueSchema).optional(),\n /**\n * The provider/SDK finish reason AS REPORTED, deliberately a raw string rather than\n * {@link LLMProvider_FinishReason}. The SDK's spelling (`content-filter`,\n * `tool-calls`) does not match this enum's (`content_filter`, `tool_calls`), so\n * narrowing would either drop the value or fabricate `OTHER` — and this field exists\n * because `length` is the single most diagnostic value a truncated call reports.\n */\n finishReason: z.string().optional(),\n /** Length of the text the provider did generate; `null` when it reported none. */\n generatedTextLength: z.number().int().nonnegative().nullable().optional(),\n /**\n * TOP-LEVEL key names of the generated object, present ONLY for an `unrecognized_keys` failure.\n *\n * Still contains no generated content: these are the root keys of a schema-driven generation, which are\n * schema shape and are read against a schema the consumer already holds. They exist because Zod reports\n * that failure without naming the offending key on the code path this lane takes, leaving \"an unknown key\n * exists at the root\" as the entire diagnosis while a single stray key discards the whole result.\n */\n rootKeys: z.array(z.string()).optional(),\n});\nexport type LLMProvider_StructuredGenerationFailure = z.infer<typeof LLMProvider_StructuredGenerationFailureSchema>;\n\n/**\n * Render ONE validation issue as `path: code (what the schema wanted)`.\n *\n * THE renderer for an issue, and the reason it is exported rather than inlined into the failure line\n * below: a caller that needs issues one at a time — the meta-workflow generation port turns each into a\n * finding fed back to the model — otherwise hand-rolls this list, and every field added to the issue\n * afterwards reaches one copy. That has now happened three times, each time silently, each time costing\n * live runs: the paths themselves were dropped (2026-08-29), then `expected` (2026-09-13), then a\n * `custom` refinement's message (2026-09-16). Keeping one renderer means a site that reports an issue at\n * all reports the whole issue.\n *\n * Carries no generated text — see {@link LLMProvider_StructuredValidationIssueSchema} for why each field\n * it prints is schema shape rather than the rejected value.\n */\nexport function describeStructuredValidationIssue(issue: LLMProvider_StructuredValidationIssue): string {\n // What the schema expected rides beside the code: \"invalid_type\" alone does not say \"array\", and\n // `custom` says nothing at all without the refinement's own words — which is why that one comes first.\n const hints = [\n ...(issue.refinementMessage ? [issue.refinementMessage] : []),\n ...(issue.expected ? [`expected ${issue.expected}`] : []),\n ...(issue.format ? [`format ${issue.format}`] : []),\n ...(issue.pattern ? [`must match ${issue.pattern}`] : []),\n ...(issue.values?.length ? [`one of ${issue.values.join(\" | \")}`] : []),\n ...(issue.keys?.length ? [`unexpected key(s) ${issue.keys.join(\", \")}`] : []),\n ];\n const where = issue.path.length > 0 ? issue.path.join(\".\") : \"<root>\";\n return `${where}: ${issue.code}${hints.length > 0 ? ` (${hints.join(\"; \")})` : \"\"}`;\n}\n\n/**\n * Render a structured-generation failure as one operator-readable line.\n *\n * Lives here, beside the schema, rather than in each caller: the two labelling orchestrators alone would\n * otherwise have hand-rolled the same rendering twice, and the value of `validationIssues` is entirely in\n * how it is presented — a caller that quietly drops it reports \"no object\" with extra words.\n *\n * Carries no generated text, only its length — see\n * {@link LLMProvider_StructuredGenerationFailureSchema}.\n */\nexport function describeStructuredGenerationFailure(failure: LLMProvider_StructuredGenerationFailure): string {\n const parts: string[] = [`${failure.kind}: ${failure.message}`];\n if (failure.finishReason !== undefined) {\n parts.push(`finishReason=${failure.finishReason}`);\n }\n if (failure.validationIssues !== undefined && failure.validationIssues.length > 0) {\n parts.push(`schema paths: ${failure.validationIssues.map(describeStructuredValidationIssue).join(\", \")}`);\n }\n if (failure.generatedTextLength !== undefined && failure.generatedTextLength !== null) {\n parts.push(`generatedTextLength=${failure.generatedTextLength}`);\n }\n return parts.join(\" \\u00b7 \");\n}\n\n/**\n * Read the structured-generation failure reason off an invocation's `executionContext`.\n *\n * THE supported way to reach it. Provided as a function rather than left to each caller\n * because the alternative is the cast every `usage` reader already hand-rolls\n * (`response.executionContext as { usage?: … }`) — N copies of one shape, each free to\n * drift from the schema, none of them validated. Here the schema IS the reader.\n *\n * Returns `undefined` both when the generation succeeded and when the context predates\n * this field, so a caller never has to distinguish \"no failure\" from \"no reason\n * recorded\" — in either case there is nothing more specific to report than the absence\n * of an object.\n */\nexport function readStructuredGenerationFailure(executionContext: unknown): LLMProvider_StructuredGenerationFailure | undefined {\n if (typeof executionContext !== \"object\" || executionContext === null) return undefined;\n const candidate = (executionContext as { structuredGenerationFailure?: unknown }).structuredGenerationFailure;\n if (candidate === undefined) return undefined;\n const parsed = LLMProvider_StructuredGenerationFailureSchema.safeParse(candidate);\n return parsed.success ? parsed.data : undefined;\n}\n\nexport const LLMProvider_OperationContext_BaseSchema = ExternalProvider_OperationContextSchema.extend({\n finishReason: z.enum(LLMProvider_FinishReason).optional(),\n usage: LLMProvider_UsageSchema.optional(),\n outputTracking: LLMProvider_TrackingSchema.optional(),\n executionTime: z.number().optional(),\n finishedAt: z.string().optional(),\n transport: LLMProvider_ExecutionTransportMetadataSchema.optional(),\n /**\n * Present ONLY when a `GENERATE_STRUCTURED` call returned `{ object: undefined }`.\n * Its absence therefore means \"not a structured-output failure\", never \"no reason\n * available\". See {@link LLMProvider_StructuredGenerationFailureSchema}.\n */\n structuredGenerationFailure: LLMProvider_StructuredGenerationFailureSchema.optional(),\n});\nexport type LLMProvider_OperationContext_Base = z.infer<typeof LLMProvider_OperationContext_BaseSchema>;\n\n\n\nexport type LLMProvider_OperationDefinitionBase = ExternalProvider_OperationDefinition_Base & {\n llmModelConfigurationSchema?: z.ZodSchema<any>,\n operationContextSchema: typeof LLMProvider_OperationContext_BaseSchema,\n \n supportedModels?: string[],\n}\n\n\n// ===============================================================\n// LLM I/O Schemas\n// ===============================================================\n\nexport enum LLMProvider_MessageRole {\n SYSTEM = \"system\",\n USER = \"user\",\n ASSISTANT = \"assistant\",\n TOOL = \"tool\",\n}\n\n// Multimodal Content Types\nexport const LLMProvider_TextContentSchema = z.object({\n type: z.literal(\"text\"),\n text: z.string(),\n});\n\nexport const LLMProvider_ImageContentSchema = z.object({\n type: z.literal(\"image\"),\n image: z.union([\n z.url(), // URL\n z.string().regex(/^data:image\\/[^;]+;base64,/), // Base64\n ]),\n});\n\nexport const LLMProvider_AudioContentSchema = z.object({\n type: z.literal(\"audio\"),\n audio: z.union([\n z.url(), // URL\n z.string().regex(/^data:audio\\/[^;]+;base64,/), // Base64\n ]),\n});\n\nexport const LLMProvider_VideoContentSchema = z.object({\n type: z.literal(\"video\"),\n video: z.union([\n z.url(), // URL\n z.string().regex(/^data:video\\/[^;]+;base64,/), // Base64\n ]),\n});\n\nexport type LLMProvider_TextContent = z.infer<typeof LLMProvider_TextContentSchema>;\nexport type LLMProvider_ImageContent = z.infer<typeof LLMProvider_ImageContentSchema>;\nexport type LLMProvider_AudioContent = z.infer<typeof LLMProvider_AudioContentSchema>;\nexport type LLMProvider_VideoContent = z.infer<typeof LLMProvider_VideoContentSchema>;\n\nexport const LLMProvider_ContentPartSchema = z.discriminatedUnion(\"type\", [\n LLMProvider_TextContentSchema,\n LLMProvider_ImageContentSchema,\n LLMProvider_AudioContentSchema,\n LLMProvider_VideoContentSchema,\n]);\nexport type LLMProvider_ContentPart = z.infer<typeof LLMProvider_ContentPartSchema>;\n\nexport const LLMProvider_ChatMessageSchema = z.object({\n role: z.enum(LLMProvider_MessageRole),\n content: z.union([\n z.string(), // Simple text\n z.array(LLMProvider_ContentPartSchema), // Multimodal content\n ]),\n name: z.string().optional(),\n});\nexport type LLMProvider_ChatMessage = z.infer<typeof LLMProvider_ChatMessageSchema>;\n\n// Generate Text Operation\nexport const LLMProvider_GenerateTextInputSchema = z.object({\n prompt: z.string(),\n});\n\nexport const LLMProvider_GenerateTextOutputSchema = z.object({\n text: z.string(),\n});\n\nexport type LLMProvider_GenerateTextInput = z.infer<typeof LLMProvider_GenerateTextInputSchema>;\nexport type LLMProvider_GenerateTextOutput = z.infer<typeof LLMProvider_GenerateTextOutputSchema>;\n\n// Chat Completion Operation\nexport const LLMProvider_ChatCompletionInputSchema = z.object({\n messages: z.array(LLMProvider_ChatMessageSchema),\n stream: z.boolean().optional(),\n});\n\nexport const LLMProvider_ChatCompletionOutputSchema = z.object({\n message: LLMProvider_ChatMessageSchema,\n});\n\nexport type LLMProvider_ChatCompletionInput = z.infer<typeof LLMProvider_ChatCompletionInputSchema>;\nexport type LLMProvider_ChatCompletionOutput = z.infer<typeof LLMProvider_ChatCompletionOutputSchema>;\n\n// Stream Text Operation\nexport const LLMProvider_StreamTextInputSchema = z.object({\n prompt: z.string(),\n stream: z.literal(true),\n});\n\nexport const LLMProvider_StreamTextOutputSchema = z.object({\n textDelta: z.string(),\n});\n\nexport type LLMProvider_StreamTextInput = z.infer<typeof LLMProvider_StreamTextInputSchema>;\nexport type LLMProvider_StreamTextOutput = z.infer<typeof LLMProvider_StreamTextOutputSchema>;\n\n// Generate Structured Operation (AI SDK v6 generateObject)\nexport const LLMProvider_GenerateStructuredInputSchema = z.object({\n prompt: z.string(),\n schema: z.custom<z.ZodSchema<any>>(),\n /**\n * OPTIONAL image parts for VISION-grounded structured generation. When present\n * (and the target model has `MULTIMODAL_VISION` capability, e.g. `gpt-4o`), the\n * provider is driven with a multimodal user message (`prompt` text + these\n * image parts) instead of a bare text prompt, so the schema-constrained object\n * is produced FROM the pixels rather than from a text description of them. When\n * absent the call is a plain text-input structured generation (unchanged). Each\n * part follows {@link LLMProvider_ImageContentSchema} — a `data:image/...;base64,…`\n * data URI or an image URL. Generic across providers/models; no domain logic.\n */\n images: z.array(LLMProvider_ImageContentSchema).optional(),\n /**\n * OPT-IN: when the provider rejects the answer against `schema`, return the rejected answer's TEXT as\n * `rejectedAnswer` on the output, so a caller that retries can show the model what it wrote.\n *\n * Opt-in because the rejected text is model output, and the default for every caller stays \"no generated\n * text on a failed call\". It is carried on the OUTPUT — never on the execution context, whose telemetry\n * every trace sink emits at every level — so it is persisted exactly where and when a successful answer\n * is: only as an agent-call payload, only at `DEBUG_VERBOSE`. It never reaches the failure log line.\n *\n * Added 2026-09-13 (#1143): a playbook retry that could not see its own answer fixed each reported field\n * and broke another, three attempts in a row, on every family of Wonder CRM's compliance-conception run.\n */\n includeRejectedAnswer: z.boolean().optional(),\n});\n\nexport const LLMProvider_GenerateStructuredOutputSchema = z.object({\n object: z.unknown(),\n /** The rejected answer's text, present only when the input set `includeRejectedAnswer` and no object was produced. */\n rejectedAnswer: z.string().optional(),\n});\n\nexport type LLMProvider_GenerateStructuredInput = z.infer<typeof LLMProvider_GenerateStructuredInputSchema>;\nexport type LLMProvider_GenerateStructuredOutput = z.infer<typeof LLMProvider_GenerateStructuredOutputSchema>;\n\n// Chat Multimodal Operation (for models with MULTIMODAL_VISION/AUDIO/VIDEO capability)\nexport const LLMProvider_ChatMultimodalInputSchema = z.object({\n messages: z.array(LLMProvider_ChatMessageSchema),\n stream: z.boolean().optional(),\n});\n\nexport const LLMProvider_ChatMultimodalOutputSchema = z.object({\n message: LLMProvider_ChatMessageSchema,\n});\n\nexport type LLMProvider_ChatMultimodalInput = z.infer<typeof LLMProvider_ChatMultimodalInputSchema>;\nexport type LLMProvider_ChatMultimodalOutput = z.infer<typeof LLMProvider_ChatMultimodalOutputSchema>;\n\n// Stream Structured Operation (AI SDK v6 streamObject)\nexport const LLMProvider_StreamStructuredInputSchema = z.object({\n prompt: z.string(),\n schema: z.custom<z.ZodSchema<any>>(),\n});\n\nexport const LLMProvider_StreamStructuredOutputSchema = z.object({\n partialObject: z.unknown().optional(),\n object: z.unknown().optional(),\n});\n\nexport type LLMProvider_StreamStructuredInput = z.infer<typeof LLMProvider_StreamStructuredInputSchema>;\nexport type LLMProvider_StreamStructuredOutput = z.infer<typeof LLMProvider_StreamStructuredOutputSchema>;\n"]}
@@ -0,0 +1,7 @@
1
+ import { type ProviderAuthenticationAssurance } from './oauth2-provider-assurance.schemas';
2
+ /** Shared by executable modules and provider specifications; reviewed against linked primary sources. */
3
+ export declare const GoogleAuthenticationAssurance: ProviderAuthenticationAssurance;
4
+ export declare const GitHubAuthenticationAssurance: ProviderAuthenticationAssurance;
5
+ export declare const AppleAuthenticationAssurance: ProviderAuthenticationAssurance;
6
+ export declare const MicrosoftAuthenticationAssurance: ProviderAuthenticationAssurance;
7
+ //# sourceMappingURL=oauth2-provider-assurance.definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-provider-assurance.definitions.d.ts","sourceRoot":"","sources":["../../../../src/protocols/oauth2-provider-assurance.definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAE1H,yGAAyG;AACzG,eAAO,MAAM,6BAA6B,EAAE,+BAO3C,CAAC;AACF,eAAO,MAAM,6BAA6B,EAAE,+BAM3C,CAAC;AACF,eAAO,MAAM,4BAA4B,EAAE,+BAM1C,CAAC;AACF,eAAO,MAAM,gCAAgC,EAAE,+BAU9C,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { ProviderAssuranceEvidenceKind } from './oauth2-provider-assurance.schemas.js';
2
+ /** Shared by executable modules and provider specifications; reviewed against linked primary sources. */
3
+ export const GoogleAuthenticationAssurance = {
4
+ product: 'Sign in with Google', protocol: 'OpenID Connect', tokenVersion: 'Google ID token',
5
+ evidenceKind: ProviderAssuranceEvidenceKind.SESSION_AMR, subjectClaim: 'sub', mfaValues: ['mfa'],
6
+ prerequisites: ['Request the amr ID-token claim and enable its return in Google Auth Platform settings.'],
7
+ limitations: ['Optional claim availability depends on provider settings; missing amr is not MFA evidence.', 'Generic mfa does not identify a particular local second-factor method.'],
8
+ requestParameters: { claims: '{"id_token":{"amr":{"essential":true}}}' },
9
+ documentationUrls: ['https://developers.google.com/identity/openid-connect/openid-connect'], verifiedOn: '2026-09-12',
10
+ };
11
+ export const GitHubAuthenticationAssurance = {
12
+ product: 'GitHub OAuth Apps', protocol: 'OAuth 2.0', tokenVersion: 'OAuth access token and authenticated-user API',
13
+ evidenceKind: ProviderAssuranceEvidenceKind.ACCOUNT_ENROLLMENT, mfaValues: [],
14
+ prerequisites: ['read:user or user scope exposes the private two_factor_authentication account field.'],
15
+ limitations: ['Account 2FA configuration does not establish MFA in this login; do not translate two_factor_authentication into session assurance.'],
16
+ requestParameters: {}, documentationUrls: ['https://docs.github.com/en/rest/users/users#get-the-authenticated-user'], verifiedOn: '2026-09-12',
17
+ };
18
+ export const AppleAuthenticationAssurance = {
19
+ product: 'Sign in with Apple', protocol: 'OpenID Connect', tokenVersion: 'Apple identity token',
20
+ evidenceKind: ProviderAssuranceEvidenceKind.ACCOUNT_ENROLLMENT, subjectClaim: 'sub', mfaValues: [],
21
+ prerequisites: ['Sign in with Apple requires an Apple Account with two-factor authentication.'],
22
+ limitations: ['The account requirement does not identify which factors were performed in this login. No session AMR equivalence is declared.'],
23
+ requestParameters: {}, documentationUrls: ['https://support.apple.com/guide/iphone/sign-in-with-apple-iph238921d37/ios', 'https://developer.apple.com/documentation/signinwithapple/authenticating-users-with-sign-in-with-apple'], verifiedOn: '2026-09-12',
24
+ };
25
+ export const MicrosoftAuthenticationAssurance = {
26
+ product: 'Microsoft identity platform; common endpoint accepts personal and organizational accounts', protocol: 'OpenID Connect', tokenVersion: 'v2.0 ID token',
27
+ evidenceKind: ProviderAssuranceEvidenceKind.SESSION_AMR, subjectClaim: 'oid', mfaValues: ['mfa'],
28
+ prerequisites: [
29
+ 'Configure the optional amr ID-token claim on the app registration; v2 tokens do not include it by default.',
30
+ // #1228 — the verified-email prerequisite, stated where an operator configuring this provider reads the others.
31
+ 'Configure the optional email and xms_edov ID-token claims on the app registration. xms_edov is the only verified-email signal Microsoft emits — there is no email_verified claim, and Microsoft Graph reports no verification field — and it is returned only when the email claim is also present. Without both, every social sign-in through this provider is refused as unverified.',
32
+ ],
33
+ limitations: ['Entra method documentation does not guarantee MFA evidence for every personal-account login.', 'An organizational Microsoft account using social login is not an enterprise Wildo connection.', 'Generic mfa may include email OTP and does not satisfy a stronger or named local-method requirement.'],
34
+ requestParameters: {}, documentationUrls: ['https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims-reference', 'https://learn.microsoft.com/en-us/entra/identity-platform/id-token-claims-reference'], verifiedOn: '2026-09-12',
35
+ };
36
+ //# sourceMappingURL=oauth2-provider-assurance.definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-provider-assurance.definitions.js","sourceRoot":"","sources":["../../../../src/protocols/oauth2-provider-assurance.definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAwC,MAAM,qCAAqC,CAAC;AAE1H,yGAAyG;AACzG,MAAM,CAAC,MAAM,6BAA6B,GAAoC;IAC5E,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB;IAC3F,YAAY,EAAE,6BAA6B,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC;IAChG,aAAa,EAAE,CAAC,wFAAwF,CAAC;IACzG,WAAW,EAAE,CAAC,4FAA4F,EAAE,wEAAwE,CAAC;IACrL,iBAAiB,EAAE,EAAE,MAAM,EAAE,yCAAyC,EAAE;IACxE,iBAAiB,EAAE,CAAC,sEAAsE,CAAC,EAAE,UAAU,EAAE,YAAY;CACtH,CAAC;AACF,MAAM,CAAC,MAAM,6BAA6B,GAAoC;IAC5E,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,+CAA+C;IAClH,YAAY,EAAE,6BAA6B,CAAC,kBAAkB,EAAE,SAAS,EAAE,EAAE;IAC7E,aAAa,EAAE,CAAC,sFAAsF,CAAC;IACvG,WAAW,EAAE,CAAC,oIAAoI,CAAC;IACnJ,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,wEAAwE,CAAC,EAAE,UAAU,EAAE,YAAY;CAC/I,CAAC;AACF,MAAM,CAAC,MAAM,4BAA4B,GAAoC;IAC3E,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,sBAAsB;IAC/F,YAAY,EAAE,6BAA6B,CAAC,kBAAkB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;IAClG,aAAa,EAAE,CAAC,8EAA8E,CAAC;IAC/F,WAAW,EAAE,CAAC,+HAA+H,CAAC;IAC9I,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,4EAA4E,EAAE,wGAAwG,CAAC,EAAE,UAAU,EAAE,YAAY;CAC7P,CAAC;AACF,MAAM,CAAC,MAAM,gCAAgC,GAAoC;IAC/E,OAAO,EAAE,2FAA2F,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe;IAC/J,YAAY,EAAE,6BAA6B,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC;IAChG,aAAa,EAAE;QACb,4GAA4G;QAC5G,gHAAgH;QAChH,wXAAwX;KACzX;IACD,WAAW,EAAE,CAAC,8FAA8F,EAAE,+FAA+F,EAAE,sGAAsG,CAAC;IACtT,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,CAAC,qFAAqF,EAAE,qFAAqF,CAAC,EAAE,UAAU,EAAE,YAAY;CACnP,CAAC","sourcesContent":["import { ProviderAssuranceEvidenceKind, type ProviderAuthenticationAssurance } from './oauth2-provider-assurance.schemas';\n\n/** Shared by executable modules and provider specifications; reviewed against linked primary sources. */\nexport const GoogleAuthenticationAssurance: ProviderAuthenticationAssurance = {\n product: 'Sign in with Google', protocol: 'OpenID Connect', tokenVersion: 'Google ID token',\n evidenceKind: ProviderAssuranceEvidenceKind.SESSION_AMR, subjectClaim: 'sub', mfaValues: ['mfa'],\n prerequisites: ['Request the amr ID-token claim and enable its return in Google Auth Platform settings.'],\n limitations: ['Optional claim availability depends on provider settings; missing amr is not MFA evidence.', 'Generic mfa does not identify a particular local second-factor method.'],\n requestParameters: { claims: '{\"id_token\":{\"amr\":{\"essential\":true}}}' },\n documentationUrls: ['https://developers.google.com/identity/openid-connect/openid-connect'], verifiedOn: '2026-09-12',\n};\nexport const GitHubAuthenticationAssurance: ProviderAuthenticationAssurance = {\n product: 'GitHub OAuth Apps', protocol: 'OAuth 2.0', tokenVersion: 'OAuth access token and authenticated-user API',\n evidenceKind: ProviderAssuranceEvidenceKind.ACCOUNT_ENROLLMENT, mfaValues: [],\n prerequisites: ['read:user or user scope exposes the private two_factor_authentication account field.'],\n limitations: ['Account 2FA configuration does not establish MFA in this login; do not translate two_factor_authentication into session assurance.'],\n requestParameters: {}, documentationUrls: ['https://docs.github.com/en/rest/users/users#get-the-authenticated-user'], verifiedOn: '2026-09-12',\n};\nexport const AppleAuthenticationAssurance: ProviderAuthenticationAssurance = {\n product: 'Sign in with Apple', protocol: 'OpenID Connect', tokenVersion: 'Apple identity token',\n evidenceKind: ProviderAssuranceEvidenceKind.ACCOUNT_ENROLLMENT, subjectClaim: 'sub', mfaValues: [],\n prerequisites: ['Sign in with Apple requires an Apple Account with two-factor authentication.'],\n limitations: ['The account requirement does not identify which factors were performed in this login. No session AMR equivalence is declared.'],\n requestParameters: {}, documentationUrls: ['https://support.apple.com/guide/iphone/sign-in-with-apple-iph238921d37/ios', 'https://developer.apple.com/documentation/signinwithapple/authenticating-users-with-sign-in-with-apple'], verifiedOn: '2026-09-12',\n};\nexport const MicrosoftAuthenticationAssurance: ProviderAuthenticationAssurance = {\n product: 'Microsoft identity platform; common endpoint accepts personal and organizational accounts', protocol: 'OpenID Connect', tokenVersion: 'v2.0 ID token',\n evidenceKind: ProviderAssuranceEvidenceKind.SESSION_AMR, subjectClaim: 'oid', mfaValues: ['mfa'],\n prerequisites: [\n 'Configure the optional amr ID-token claim on the app registration; v2 tokens do not include it by default.',\n // #1228 — the verified-email prerequisite, stated where an operator configuring this provider reads the others.\n 'Configure the optional email and xms_edov ID-token claims on the app registration. xms_edov is the only verified-email signal Microsoft emits — there is no email_verified claim, and Microsoft Graph reports no verification field — and it is returned only when the email claim is also present. Without both, every social sign-in through this provider is refused as unverified.',\n ],\n limitations: ['Entra method documentation does not guarantee MFA evidence for every personal-account login.', 'An organizational Microsoft account using social login is not an enterprise Wildo connection.', 'Generic mfa may include email OTP and does not satisfy a stronger or named local-method requirement.'],\n requestParameters: {}, documentationUrls: ['https://learn.microsoft.com/en-us/entra/identity-platform/optional-claims-reference', 'https://learn.microsoft.com/en-us/entra/identity-platform/id-token-claims-reference'], verifiedOn: '2026-09-12',\n};\n"]}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ /** Provider enrollment requirements are not evidence about this authentication transaction. */
3
+ export declare enum ProviderAssuranceEvidenceKind {
4
+ SESSION_AMR = "session_amr",
5
+ ACCOUNT_ENROLLMENT = "account_enrollment",
6
+ UNDOCUMENTED = "undocumented"
7
+ }
8
+ /** A researched provider contract. Documentation is evidence of meaning, not proof of a login. */
9
+ export declare const ProviderAuthenticationAssuranceSchema: z.ZodObject<{
10
+ product: z.ZodString;
11
+ protocol: z.ZodString;
12
+ tokenVersion: z.ZodString;
13
+ evidenceKind: z.ZodEnum<typeof ProviderAssuranceEvidenceKind>;
14
+ subjectClaim: z.ZodOptional<z.ZodString>;
15
+ mfaValues: z.ZodDefault<z.ZodArray<z.ZodString>>;
16
+ prerequisites: z.ZodArray<z.ZodString>;
17
+ limitations: z.ZodArray<z.ZodString>;
18
+ requestParameters: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
19
+ documentationUrls: z.ZodArray<z.ZodURL>;
20
+ verifiedOn: z.ZodISODate;
21
+ }, z.core.$strip>;
22
+ export type ProviderAuthenticationAssurance = z.infer<typeof ProviderAuthenticationAssuranceSchema>;
23
+ //# sourceMappingURL=oauth2-provider-assurance.schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth2-provider-assurance.schemas.d.ts","sourceRoot":"","sources":["../../../../src/protocols/oauth2-provider-assurance.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+FAA+F;AAC/F,oBAAY,6BAA6B;IACvC,WAAW,gBAAgB;IAC3B,kBAAkB,uBAAuB;IACzC,YAAY,iBAAiB;CAC9B;AAED,kGAAkG;AAClG,eAAO,MAAM,qCAAqC;;;;;;;;;;;;iBAchD,CAAC;AACH,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC"}