@ggui-ai/protocol 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +46 -0
  3. package/dist/bridge/invoke-agent.d.ts +65 -0
  4. package/dist/bridge/invoke-agent.d.ts.map +1 -0
  5. package/dist/bridge/invoke-agent.js +113 -0
  6. package/dist/envelope-adapters.d.ts +24 -0
  7. package/dist/envelope-adapters.d.ts.map +1 -0
  8. package/dist/envelope-adapters.js +14 -0
  9. package/dist/envelopes/builders.d.ts +145 -0
  10. package/dist/envelopes/builders.d.ts.map +1 -0
  11. package/dist/envelopes/builders.js +113 -0
  12. package/dist/errors/unknown-permission-name.d.ts +12 -0
  13. package/dist/errors/unknown-permission-name.d.ts.map +1 -0
  14. package/dist/errors/unknown-permission-name.js +29 -0
  15. package/dist/errors/version-mismatch.d.ts +55 -0
  16. package/dist/errors/version-mismatch.d.ts.map +1 -0
  17. package/dist/errors/version-mismatch.js +52 -0
  18. package/dist/gadgets/resolve-contract-gadgets.d.ts +93 -0
  19. package/dist/gadgets/resolve-contract-gadgets.d.ts.map +1 -0
  20. package/dist/gadgets/resolve-contract-gadgets.js +119 -0
  21. package/dist/gadgets/stdlib-gadgets.d.ts +43 -0
  22. package/dist/gadgets/stdlib-gadgets.d.ts.map +1 -0
  23. package/dist/gadgets/stdlib-gadgets.js +161 -0
  24. package/dist/iframe-bridge.d.ts +63 -0
  25. package/dist/iframe-bridge.d.ts.map +1 -0
  26. package/dist/iframe-bridge.js +166 -0
  27. package/dist/index.d.ts +62 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +79 -0
  30. package/dist/integrations/mcp-apps.d.ts +1218 -0
  31. package/dist/integrations/mcp-apps.d.ts.map +1 -0
  32. package/dist/integrations/mcp-apps.js +427 -0
  33. package/dist/navigation/index.d.ts +3 -0
  34. package/dist/navigation/index.d.ts.map +1 -0
  35. package/dist/navigation/index.js +1 -0
  36. package/dist/navigation/stack-navigation.d.ts +55 -0
  37. package/dist/navigation/stack-navigation.d.ts.map +1 -0
  38. package/dist/navigation/stack-navigation.js +80 -0
  39. package/dist/recommended-prompts.d.ts +56 -0
  40. package/dist/recommended-prompts.d.ts.map +1 -0
  41. package/dist/recommended-prompts.js +55 -0
  42. package/dist/registry/blueprint-key.d.ts +9 -0
  43. package/dist/registry/blueprint-key.d.ts.map +1 -0
  44. package/dist/registry/blueprint-key.js +28 -0
  45. package/dist/registry/canonicalize-contract.d.ts +35 -0
  46. package/dist/registry/canonicalize-contract.d.ts.map +1 -0
  47. package/dist/registry/canonicalize-contract.js +166 -0
  48. package/dist/registry/summarize-contract.d.ts +46 -0
  49. package/dist/registry/summarize-contract.d.ts.map +1 -0
  50. package/dist/registry/summarize-contract.js +63 -0
  51. package/dist/schema-learning/derive-contract.d.ts +67 -0
  52. package/dist/schema-learning/derive-contract.d.ts.map +1 -0
  53. package/dist/schema-learning/derive-contract.js +117 -0
  54. package/dist/schema-learning/merge.d.ts +32 -0
  55. package/dist/schema-learning/merge.d.ts.map +1 -0
  56. package/dist/schema-learning/merge.js +146 -0
  57. package/dist/schemas/blueprint.d.ts +32 -0
  58. package/dist/schemas/blueprint.d.ts.map +1 -0
  59. package/dist/schemas/blueprint.js +92 -0
  60. package/dist/schemas/data-contract.d.ts +750 -0
  61. package/dist/schemas/data-contract.d.ts.map +1 -0
  62. package/dist/schemas/data-contract.js +663 -0
  63. package/dist/schemas/gadget-name-grammar.d.ts +29 -0
  64. package/dist/schemas/gadget-name-grammar.d.ts.map +1 -0
  65. package/dist/schemas/gadget-name-grammar.js +28 -0
  66. package/dist/schemas/handshake-suggestion.d.ts +46 -0
  67. package/dist/schemas/handshake-suggestion.d.ts.map +1 -0
  68. package/dist/schemas/handshake-suggestion.js +107 -0
  69. package/dist/schemas/invoke.d.ts +337 -0
  70. package/dist/schemas/invoke.d.ts.map +1 -0
  71. package/dist/schemas/invoke.js +169 -0
  72. package/dist/schemas/mcp.d.ts +301 -0
  73. package/dist/schemas/mcp.d.ts.map +1 -0
  74. package/dist/schemas/mcp.js +373 -0
  75. package/dist/schemas/ops-blueprint.d.ts +176 -0
  76. package/dist/schemas/ops-blueprint.d.ts.map +1 -0
  77. package/dist/schemas/ops-blueprint.js +259 -0
  78. package/dist/schemas/sync-check.d.ts +11 -0
  79. package/dist/schemas/sync-check.d.ts.map +1 -0
  80. package/dist/schemas/sync-check.js +60 -0
  81. package/dist/screen-blueprints/define.d.ts +22 -0
  82. package/dist/screen-blueprints/define.d.ts.map +1 -0
  83. package/dist/screen-blueprints/define.js +3 -0
  84. package/dist/screen-blueprints/index.d.ts +4 -0
  85. package/dist/screen-blueprints/index.d.ts.map +1 -0
  86. package/dist/screen-blueprints/index.js +3 -0
  87. package/dist/screen-blueprints/match.d.ts +35 -0
  88. package/dist/screen-blueprints/match.d.ts.map +1 -0
  89. package/dist/screen-blueprints/match.js +51 -0
  90. package/dist/screen-blueprints/types.d.ts +164 -0
  91. package/dist/screen-blueprints/types.d.ts.map +1 -0
  92. package/dist/screen-blueprints/types.js +1 -0
  93. package/dist/stream/stream-parser.d.ts +62 -0
  94. package/dist/stream/stream-parser.d.ts.map +1 -0
  95. package/dist/stream/stream-parser.js +199 -0
  96. package/dist/transport/websocket.d.ts +178 -0
  97. package/dist/transport/websocket.d.ts.map +1 -0
  98. package/dist/transport/websocket.js +1 -0
  99. package/dist/types/app-config.d.ts +61 -0
  100. package/dist/types/app-config.d.ts.map +1 -0
  101. package/dist/types/app-config.js +1 -0
  102. package/dist/types/auth.d.ts +61 -0
  103. package/dist/types/auth.d.ts.map +1 -0
  104. package/dist/types/auth.js +1 -0
  105. package/dist/types/blueprint.d.ts +206 -0
  106. package/dist/types/blueprint.d.ts.map +1 -0
  107. package/dist/types/blueprint.js +1 -0
  108. package/dist/types/canvas-lifecycle.d.ts +105 -0
  109. package/dist/types/canvas-lifecycle.d.ts.map +1 -0
  110. package/dist/types/canvas-lifecycle.js +38 -0
  111. package/dist/types/capabilities.d.ts +40 -0
  112. package/dist/types/capabilities.d.ts.map +1 -0
  113. package/dist/types/capabilities.js +19 -0
  114. package/dist/types/contract-inference.d.ts +401 -0
  115. package/dist/types/contract-inference.d.ts.map +1 -0
  116. package/dist/types/contract-inference.js +44 -0
  117. package/dist/types/credential.d.ts +41 -0
  118. package/dist/types/credential.d.ts.map +1 -0
  119. package/dist/types/credential.js +32 -0
  120. package/dist/types/data-bindings.d.ts +322 -0
  121. package/dist/types/data-bindings.d.ts.map +1 -0
  122. package/dist/types/data-bindings.js +29 -0
  123. package/dist/types/data-contract.d.ts +1296 -0
  124. package/dist/types/data-contract.d.ts.map +1 -0
  125. package/dist/types/data-contract.js +111 -0
  126. package/dist/types/events.d.ts +182 -0
  127. package/dist/types/events.d.ts.map +1 -0
  128. package/dist/types/events.js +8 -0
  129. package/dist/types/feedback.d.ts +24 -0
  130. package/dist/types/feedback.d.ts.map +1 -0
  131. package/dist/types/feedback.js +7 -0
  132. package/dist/types/gadget.d.ts +121 -0
  133. package/dist/types/gadget.d.ts.map +1 -0
  134. package/dist/types/gadget.js +24 -0
  135. package/dist/types/handshake-suggestion.d.ts +264 -0
  136. package/dist/types/handshake-suggestion.d.ts.map +1 -0
  137. package/dist/types/handshake-suggestion.js +70 -0
  138. package/dist/types/host-context.d.ts +163 -0
  139. package/dist/types/host-context.d.ts.map +1 -0
  140. package/dist/types/host-context.js +142 -0
  141. package/dist/types/interface-context.d.ts +105 -0
  142. package/dist/types/interface-context.d.ts.map +1 -0
  143. package/dist/types/interface-context.js +115 -0
  144. package/dist/types/invoke.d.ts +28 -0
  145. package/dist/types/invoke.d.ts.map +1 -0
  146. package/dist/types/invoke.js +7 -0
  147. package/dist/types/live-channel.d.ts +613 -0
  148. package/dist/types/live-channel.d.ts.map +1 -0
  149. package/dist/types/live-channel.js +1 -0
  150. package/dist/types/llm.d.ts +61 -0
  151. package/dist/types/llm.d.ts.map +1 -0
  152. package/dist/types/llm.js +186 -0
  153. package/dist/types/mcp-proxy.d.ts +67 -0
  154. package/dist/types/mcp-proxy.d.ts.map +1 -0
  155. package/dist/types/mcp-proxy.js +46 -0
  156. package/dist/types/mcp.d.ts +637 -0
  157. package/dist/types/mcp.d.ts.map +1 -0
  158. package/dist/types/mcp.js +30 -0
  159. package/dist/types/openrouter-models.d.ts +22 -0
  160. package/dist/types/openrouter-models.d.ts.map +1 -0
  161. package/dist/types/openrouter-models.js +4843 -0
  162. package/dist/types/region.d.ts +26 -0
  163. package/dist/types/region.d.ts.map +1 -0
  164. package/dist/types/region.js +36 -0
  165. package/dist/types/session.d.ts +419 -0
  166. package/dist/types/session.d.ts.map +1 -0
  167. package/dist/types/session.js +1 -0
  168. package/dist/types/thread.d.ts +207 -0
  169. package/dist/types/thread.d.ts.map +1 -0
  170. package/dist/types/thread.js +57 -0
  171. package/dist/types/ui-generator.d.ts +100 -0
  172. package/dist/types/ui-generator.d.ts.map +1 -0
  173. package/dist/types/ui-generator.js +53 -0
  174. package/dist/validation/ajv-runtime.d.ts +140 -0
  175. package/dist/validation/ajv-runtime.d.ts.map +1 -0
  176. package/dist/validation/ajv-runtime.js +452 -0
  177. package/dist/validation/content-hash.d.ts +3 -0
  178. package/dist/validation/content-hash.d.ts.map +1 -0
  179. package/dist/validation/content-hash.js +21 -0
  180. package/dist/validation/contract-validator.d.ts +244 -0
  181. package/dist/validation/contract-validator.d.ts.map +1 -0
  182. package/dist/validation/contract-validator.js +711 -0
  183. package/dist/validation/cross-references.d.ts +105 -0
  184. package/dist/validation/cross-references.d.ts.map +1 -0
  185. package/dist/validation/cross-references.js +164 -0
  186. package/dist/validation/hygiene-rules.d.ts +250 -0
  187. package/dist/validation/hygiene-rules.d.ts.map +1 -0
  188. package/dist/validation/hygiene-rules.js +564 -0
  189. package/dist/validation/lint-contract.d.ts +130 -0
  190. package/dist/validation/lint-contract.d.ts.map +1 -0
  191. package/dist/validation/lint-contract.js +225 -0
  192. package/dist/validation/name-invariants.d.ts +117 -0
  193. package/dist/validation/name-invariants.d.ts.map +1 -0
  194. package/dist/validation/name-invariants.js +172 -0
  195. package/dist/validation/reserved-channels.d.ts +156 -0
  196. package/dist/validation/reserved-channels.d.ts.map +1 -0
  197. package/dist/validation/reserved-channels.js +356 -0
  198. package/dist/validation/resolve-stream-channel.d.ts +78 -0
  199. package/dist/validation/resolve-stream-channel.d.ts.map +1 -0
  200. package/dist/validation/resolve-stream-channel.js +64 -0
  201. package/dist/validation/sanitize-error.d.ts +46 -0
  202. package/dist/validation/sanitize-error.d.ts.map +1 -0
  203. package/dist/validation/sanitize-error.js +88 -0
  204. package/dist/validation/schema-compat-invariants.d.ts +140 -0
  205. package/dist/validation/schema-compat-invariants.d.ts.map +1 -0
  206. package/dist/validation/schema-compat-invariants.js +220 -0
  207. package/dist/validation/schema-meta-validation.d.ts +60 -0
  208. package/dist/validation/schema-meta-validation.d.ts.map +1 -0
  209. package/dist/validation/schema-meta-validation.js +131 -0
  210. package/dist/validation/schema-subset.d.ts +165 -0
  211. package/dist/validation/schema-subset.d.ts.map +1 -0
  212. package/dist/validation/schema-subset.js +295 -0
  213. package/dist/validation/ui-security.d.ts +54 -0
  214. package/dist/validation/ui-security.d.ts.map +1 -0
  215. package/dist/validation/ui-security.js +138 -0
  216. package/dist/validation/zod-to-json-schema.d.ts +63 -0
  217. package/dist/validation/zod-to-json-schema.d.ts.map +1 -0
  218. package/dist/validation/zod-to-json-schema.js +126 -0
  219. package/dist/version.d.ts +1458 -0
  220. package/dist/version.d.ts.map +1 -0
  221. package/dist/version.js +1459 -0
  222. package/package.json +113 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/types/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3E,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAKzF,CAAC;AAMF,MAAM,MAAM,OAAO,GAEf,4BAA4B,GAC5B,6BAA6B,GAC7B,2BAA2B,GAE3B,sCAAsC,GACtC,+BAA+B,GAC/B,+BAA+B,GAE/B,sBAAsB,GACtB,gBAAgB,GAChB,qBAAqB,GACrB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,WAAW,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAMD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,CAgG9C,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,OAAsC,CAAC;AAMnE,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,EAAE,IAAI,OAAO,CAExD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAsBhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,EAAE,CAIrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,EAAE,CAI3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAK1D"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * LLM Provider and Model Types for BYOK (Bring Your Own Key)
3
+ *
4
+ * Model IDs use LiteLLM format: "provider/model-name"
5
+ * This allows direct passthrough to LiteLLM proxy without transformation.
6
+ *
7
+ * Pricing last verified: March 2026
8
+ * Sources:
9
+ * https://docs.anthropic.com/en/docs/about-claude/pricing
10
+ * https://developers.openai.com/api/docs/pricing/
11
+ * https://ai.google.dev/gemini-api/docs/pricing
12
+ */
13
+ export const PROVIDER_INFO = {
14
+ anthropic: { displayName: "Anthropic", keyPrefix: "sk-ant-" },
15
+ google: { displayName: "Google AI", keyPrefix: "AIza" },
16
+ openai: { displayName: "OpenAI", keyPrefix: "sk-" },
17
+ openrouter: { displayName: "OpenRouter", keyPrefix: "sk-or-" },
18
+ };
19
+ // =============================================================================
20
+ // Model Registry — verified pricing March 2026
21
+ // =============================================================================
22
+ export const MODEL_REGISTRY = {
23
+ // ── Anthropic Claude ──────────────────────────────────────────────
24
+ "anthropic/claude-haiku-4-5": {
25
+ id: "anthropic/claude-haiku-4-5",
26
+ provider: "anthropic",
27
+ displayName: "Claude Haiku 4.5",
28
+ tier: "fast",
29
+ costs: { inputPer1M: 1.0, outputPer1M: 5.0 },
30
+ maxTokens: 200000,
31
+ supportsTools: true,
32
+ },
33
+ "anthropic/claude-sonnet-4-6": {
34
+ id: "anthropic/claude-sonnet-4-6",
35
+ provider: "anthropic",
36
+ displayName: "Claude Sonnet 4.6",
37
+ tier: "balanced",
38
+ costs: { inputPer1M: 3.0, outputPer1M: 15.0 },
39
+ maxTokens: 200000,
40
+ supportsTools: true,
41
+ },
42
+ "anthropic/claude-opus-4-6": {
43
+ id: "anthropic/claude-opus-4-6",
44
+ provider: "anthropic",
45
+ displayName: "Claude Opus 4.6",
46
+ tier: "premium",
47
+ costs: { inputPer1M: 5.0, outputPer1M: 25.0 },
48
+ maxTokens: 1000000,
49
+ supportsTools: true,
50
+ },
51
+ // ── Google Gemini (API requires "-preview" suffix) ──────────────
52
+ "gemini/gemini-3.1-flash-lite-preview": {
53
+ id: "gemini/gemini-3.1-flash-lite-preview",
54
+ provider: "google",
55
+ displayName: "Gemini 3.1 Flash Lite",
56
+ tier: "fast",
57
+ costs: { inputPer1M: 0.25, outputPer1M: 1.5 },
58
+ maxTokens: 1000000,
59
+ supportsTools: true,
60
+ },
61
+ "gemini/gemini-3-flash-preview": {
62
+ id: "gemini/gemini-3-flash-preview",
63
+ provider: "google",
64
+ displayName: "Gemini 3 Flash",
65
+ tier: "fast",
66
+ costs: { inputPer1M: 0.5, outputPer1M: 3.0 },
67
+ maxTokens: 1000000,
68
+ supportsTools: true,
69
+ },
70
+ "gemini/gemini-3.1-pro-preview": {
71
+ id: "gemini/gemini-3.1-pro-preview",
72
+ provider: "google",
73
+ displayName: "Gemini 3.1 Pro",
74
+ tier: "balanced",
75
+ costs: { inputPer1M: 2.0, outputPer1M: 12.0 },
76
+ maxTokens: 1000000,
77
+ supportsTools: true,
78
+ },
79
+ // ── OpenAI ────────────────────────────────────────────────────────
80
+ "openai/gpt-5.3-codex": {
81
+ id: "openai/gpt-5.3-codex",
82
+ provider: "openai",
83
+ displayName: "GPT-5.3 Codex",
84
+ tier: "balanced",
85
+ costs: { inputPer1M: 1.75, outputPer1M: 14.0 },
86
+ maxTokens: 200000,
87
+ supportsTools: true,
88
+ },
89
+ "openai/gpt-5.4": {
90
+ id: "openai/gpt-5.4",
91
+ provider: "openai",
92
+ displayName: "GPT-5.4",
93
+ tier: "premium",
94
+ costs: { inputPer1M: 2.5, outputPer1M: 15.0 },
95
+ maxTokens: 1050000,
96
+ supportsTools: true,
97
+ },
98
+ "openai/gpt-5.4-mini": {
99
+ id: "openai/gpt-5.4-mini",
100
+ provider: "openai",
101
+ displayName: "GPT-5.4 Mini",
102
+ tier: "fast",
103
+ costs: { inputPer1M: 0.75, outputPer1M: 4.5 },
104
+ maxTokens: 400000,
105
+ supportsTools: true,
106
+ },
107
+ "openai/gpt-5.4-nano": {
108
+ id: "openai/gpt-5.4-nano",
109
+ provider: "openai",
110
+ displayName: "GPT-5.4 Nano",
111
+ tier: "fast",
112
+ costs: { inputPer1M: 0.20, outputPer1M: 1.25 },
113
+ maxTokens: 400000,
114
+ supportsTools: true,
115
+ },
116
+ };
117
+ /**
118
+ * Default model for generation
119
+ */
120
+ export const DEFAULT_MODEL = "anthropic/claude-haiku-4-5";
121
+ // =============================================================================
122
+ // Helper Functions
123
+ // =============================================================================
124
+ export function isValidModelId(id) {
125
+ return id in MODEL_REGISTRY;
126
+ }
127
+ /**
128
+ * Get provider name from a LiteLLM-format model ID.
129
+ * Returns 'anthropic' as default for unrecognized formats.
130
+ */
131
+ export function getProviderForModel(modelId) {
132
+ const slash = modelId.indexOf("/");
133
+ if (slash < 0) {
134
+ console.warn(`Unrecognized model format (no slash): "${modelId}" — defaulting to anthropic`);
135
+ return "anthropic";
136
+ }
137
+ const prefix = modelId.substring(0, slash);
138
+ const providerMap = {
139
+ anthropic: "anthropic",
140
+ gemini: "google",
141
+ openai: "openai",
142
+ openrouter: "openrouter",
143
+ };
144
+ const provider = providerMap[prefix];
145
+ if (!provider) {
146
+ console.warn(`Unrecognized model format: "${modelId}" — defaulting to anthropic`);
147
+ return "anthropic";
148
+ }
149
+ return provider;
150
+ }
151
+ /**
152
+ * Validate LiteLLM format: "provider/model-name"
153
+ */
154
+ export function isValidLiteLLMFormat(modelId) {
155
+ const slash = modelId.indexOf("/");
156
+ if (slash <= 0)
157
+ return false;
158
+ const prefix = modelId.substring(0, slash);
159
+ return ["anthropic", "gemini", "openai", "openrouter"].includes(prefix)
160
+ && modelId.length > slash + 1;
161
+ }
162
+ /**
163
+ * Get all model IDs for a given provider.
164
+ */
165
+ export function getModelsForProvider(provider) {
166
+ return Object.values(MODEL_REGISTRY)
167
+ .filter((m) => m.provider === provider)
168
+ .map((m) => m.id);
169
+ }
170
+ /**
171
+ * Get all model IDs for a given tier.
172
+ */
173
+ export function getModelsForTier(tier) {
174
+ return Object.values(MODEL_REGISTRY)
175
+ .filter((m) => m.tier === tier)
176
+ .map((m) => m.id);
177
+ }
178
+ /**
179
+ * Select the default model for a given tier.
180
+ */
181
+ export function selectModelByTier(tier) {
182
+ const models = getModelsForTier(tier);
183
+ // Prefer Anthropic models as default
184
+ const anthropic = models.find((m) => m.startsWith("anthropic/"));
185
+ return anthropic ?? models[0] ?? DEFAULT_MODEL;
186
+ }
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Third-party MCP discovery + relay — wire shapes and public
3
+ * constants for external MCP providers.
4
+ *
5
+ * Scope: constants and types that describe how OSS tooling and
6
+ * hosted services talk to upstream MCP discovery APIs (Claude.ai
7
+ * today; Anthropic's MCP-servers API). These are third-party
8
+ * PROTOCOL fragments — any OSS relay that proxies Claude.ai MCP
9
+ * servers would need the same constants and discovery-response
10
+ * shapes.
11
+ *
12
+ * Hosted-overlay config types for linking these proxies into an
13
+ * app's per-tenant config are a hosting concept and live outside
14
+ * this open protocol package.
15
+ *
16
+ * What remains here:
17
+ *
18
+ * - Claude.ai OAuth + discovery endpoint constants (third-party
19
+ * public API surface).
20
+ * - {@link DiscoveredMcpServer} — the normalised shape consumers
21
+ * get back from any discovery call.
22
+ * - {@link ClaudeAiDiscoveryResponse} — raw Claude.ai discovery
23
+ * response wire shape.
24
+ * - {@link CLAUDE_AI_SERVICE_ID} — credential-store service id
25
+ * used across the stack to name Claude.ai user credentials.
26
+ */
27
+ /** Claude Code's registered public OAuth client_id (PKCE, no secret). */
28
+ export declare const CLAUDE_AI_CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
29
+ /** Claude.ai OAuth endpoints. */
30
+ export declare const CLAUDE_AI_OAUTH: {
31
+ readonly authorizeUrl: "https://claude.ai/oauth/authorize";
32
+ readonly tokenUrl: "https://platform.claude.com/v1/oauth/token";
33
+ /** Manual redirect — shows auth code for user to copy. */
34
+ readonly manualRedirectUrl: "https://console.anthropic.com/oauth/code/callback";
35
+ /** Discovery endpoint for user's MCP servers. */
36
+ readonly discoveryUrl: "https://api.anthropic.com/v1/mcp_servers";
37
+ /** MCP proxy URL pattern. */
38
+ readonly proxyUrl: "https://mcp-proxy.anthropic.com/v1/mcp/{server_id}";
39
+ };
40
+ /** Scopes needed for MCP server access via Claude.ai. */
41
+ export declare const CLAUDE_AI_MCP_SCOPES: readonly ["user:mcp_servers"];
42
+ /** Beta header required for MCP servers API. */
43
+ export declare const CLAUDE_AI_MCP_BETA_HEADER = "mcp-servers-2025-12-04";
44
+ /** A single MCP server discovered from a proxy's discovery endpoint. */
45
+ export interface DiscoveredMcpServer {
46
+ /** Server identifier (used in proxy URL template). */
47
+ id: string;
48
+ /** Human-readable name (e.g. "Google Calendar", "Gmail"). */
49
+ displayName: string;
50
+ /** Direct server URL (for reference — calls go through the proxy). */
51
+ url: string;
52
+ }
53
+ /** Discovery API response shape (Claude.ai format). */
54
+ export interface ClaudeAiDiscoveryResponse {
55
+ data: Array<{
56
+ type: 'mcp_server';
57
+ id: string;
58
+ display_name: string;
59
+ url: string;
60
+ created_at: string;
61
+ }>;
62
+ has_more: boolean;
63
+ next_page: string | null;
64
+ }
65
+ /** ServiceId used for Claude.ai platform credentials in UserCredential. */
66
+ export declare const CLAUDE_AI_SERVICE_ID = "claude_ai_platform";
67
+ //# sourceMappingURL=mcp-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-proxy.d.ts","sourceRoot":"","sources":["../../src/types/mcp-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAE1E,iCAAiC;AACjC,eAAO,MAAM,eAAe;;;IAG1B,0DAA0D;;IAE1D,iDAAiD;;IAEjD,6BAA6B;;CAErB,CAAC;AAEX,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,+BAAgC,CAAC;AAElE,gDAAgD;AAChD,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAIlE,wEAAwE;AACxE,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,uDAAuD;AACvD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,YAAY,CAAC;QACnB,EAAE,EAAE,MAAM,CAAC;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,2EAA2E;AAC3E,eAAO,MAAM,oBAAoB,uBAAuB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Third-party MCP discovery + relay — wire shapes and public
3
+ * constants for external MCP providers.
4
+ *
5
+ * Scope: constants and types that describe how OSS tooling and
6
+ * hosted services talk to upstream MCP discovery APIs (Claude.ai
7
+ * today; Anthropic's MCP-servers API). These are third-party
8
+ * PROTOCOL fragments — any OSS relay that proxies Claude.ai MCP
9
+ * servers would need the same constants and discovery-response
10
+ * shapes.
11
+ *
12
+ * Hosted-overlay config types for linking these proxies into an
13
+ * app's per-tenant config are a hosting concept and live outside
14
+ * this open protocol package.
15
+ *
16
+ * What remains here:
17
+ *
18
+ * - Claude.ai OAuth + discovery endpoint constants (third-party
19
+ * public API surface).
20
+ * - {@link DiscoveredMcpServer} — the normalised shape consumers
21
+ * get back from any discovery call.
22
+ * - {@link ClaudeAiDiscoveryResponse} — raw Claude.ai discovery
23
+ * response wire shape.
24
+ * - {@link CLAUDE_AI_SERVICE_ID} — credential-store service id
25
+ * used across the stack to name Claude.ai user credentials.
26
+ */
27
+ // ── Claude.ai constants ─────────────────────────────────────────────
28
+ /** Claude Code's registered public OAuth client_id (PKCE, no secret). */
29
+ export const CLAUDE_AI_CLIENT_ID = '9d1c250a-e61b-44d9-88ed-5944d1962f5e';
30
+ /** Claude.ai OAuth endpoints. */
31
+ export const CLAUDE_AI_OAUTH = {
32
+ authorizeUrl: 'https://claude.ai/oauth/authorize',
33
+ tokenUrl: 'https://platform.claude.com/v1/oauth/token',
34
+ /** Manual redirect — shows auth code for user to copy. */
35
+ manualRedirectUrl: 'https://console.anthropic.com/oauth/code/callback',
36
+ /** Discovery endpoint for user's MCP servers. */
37
+ discoveryUrl: 'https://api.anthropic.com/v1/mcp_servers',
38
+ /** MCP proxy URL pattern. */
39
+ proxyUrl: 'https://mcp-proxy.anthropic.com/v1/mcp/{server_id}',
40
+ };
41
+ /** Scopes needed for MCP server access via Claude.ai. */
42
+ export const CLAUDE_AI_MCP_SCOPES = ['user:mcp_servers'];
43
+ /** Beta header required for MCP servers API. */
44
+ export const CLAUDE_AI_MCP_BETA_HEADER = 'mcp-servers-2025-12-04';
45
+ /** ServiceId used for Claude.ai platform credentials in UserCredential. */
46
+ export const CLAUDE_AI_SERVICE_ID = 'claude_ai_platform';