@zackbart/connecta 0.37.1 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/README.md +5 -4
  3. package/bin/connecta.mjs +1 -39
  4. package/bin/version.mjs +1 -1
  5. package/dist/access-tokens.js +2 -4
  6. package/dist/agent-identity.js +1 -1
  7. package/dist/agent-routes.js +231 -0
  8. package/dist/auth/clerk-sdk/generated.js +2 -1
  9. package/dist/auth/downstream-oauth/consent.js +519 -0
  10. package/dist/auth/downstream-oauth/grant-store.js +439 -0
  11. package/dist/auth/downstream-oauth/refresh-coordinator.js +562 -0
  12. package/dist/auth/downstream-oauth/refresh-records.js +447 -0
  13. package/dist/auth/downstream-oauth/sdk-hooks.js +242 -0
  14. package/dist/auth/downstream-oauth.js +66 -2516
  15. package/dist/auth/downstream-revocation.js +1 -1
  16. package/dist/auth/native.js +27 -0
  17. package/dist/auth/oauth-grant.js +24 -0
  18. package/dist/auth/oauth-token-response.js +1 -1
  19. package/dist/auth/static-oauth.js +153 -131
  20. package/dist/auth/vercel-agent.js +2 -1
  21. package/dist/auth-elicitation.js +9 -3
  22. package/dist/authorization-handoff.js +11 -5
  23. package/dist/branding.d.ts +1 -15
  24. package/dist/branding.js +2 -2
  25. package/dist/bytes.js +42 -0
  26. package/dist/call-admission-context.js +2 -5
  27. package/dist/call-recovery.js +0 -3
  28. package/dist/catalog-cache.js +130 -43
  29. package/dist/catalog-fingerprint.js +2 -18
  30. package/dist/catalog-policy.js +18 -0
  31. package/dist/catalog-service.js +285 -48
  32. package/dist/catalog.js +18 -2
  33. package/dist/config-defaults.d.ts +1 -0
  34. package/dist/config-defaults.js +1 -0
  35. package/dist/config-schema.d.ts +1 -1
  36. package/dist/config-schema.js +6 -2
  37. package/dist/config.d.ts +57 -25
  38. package/dist/config.js +30 -77
  39. package/dist/connector-caller.d.ts +1 -1
  40. package/dist/connector-health.js +59 -0
  41. package/dist/connector-status.js +117 -0
  42. package/dist/connectors/api-connector.d.ts +7 -2
  43. package/dist/connectors/api-connector.js +11 -7
  44. package/dist/connectors/guarded-fetch.d.ts +0 -6
  45. package/dist/connectors/guarded-fetch.js +1 -11
  46. package/dist/connectors/negotiation-cache.js +22 -4
  47. package/dist/connectors/remote-mcp/call.js +164 -0
  48. package/dist/connectors/remote-mcp/catalog.js +278 -0
  49. package/dist/connectors/remote-mcp/config.js +263 -0
  50. package/dist/connectors/remote-mcp/connection.js +671 -0
  51. package/dist/connectors/remote-mcp/errors.js +488 -0
  52. package/dist/connectors/remote-mcp/oauth.js +469 -0
  53. package/dist/connectors/remote-mcp/resources.js +473 -0
  54. package/dist/connectors/remote-mcp/runtime.js +1 -0
  55. package/dist/connectors/remote-mcp/transport.js +544 -0
  56. package/dist/connectors/remote-mcp.js +61 -2898
  57. package/dist/connectors/resource-uri.js +0 -4
  58. package/dist/credential-contract.d.ts +23 -0
  59. package/dist/credential-reads.js +17 -0
  60. package/dist/credential-verification.js +53 -0
  61. package/dist/credentials.d.ts +7 -0
  62. package/dist/credentials.js +60 -25
  63. package/dist/d1.d.ts +0 -89
  64. package/dist/d1.js +0 -34
  65. package/dist/describe-config.d.ts +12 -2
  66. package/dist/describe-config.js +2 -0
  67. package/dist/discovery-health.js +199 -0
  68. package/dist/downstream-input.js +4 -2
  69. package/dist/errors.d.ts +55 -17
  70. package/dist/errors.js +95 -41
  71. package/dist/execute.js +172 -125
  72. package/dist/executor-result.js +5 -2
  73. package/dist/executors/quickjs-runtime.js +2 -25
  74. package/dist/executors/quickjs.js +1 -1
  75. package/dist/guest-functions.js +83 -0
  76. package/dist/guest-runtime.js +63 -20
  77. package/dist/guest-types.d.ts +24 -10
  78. package/dist/http/argument-problems.js +35 -0
  79. package/dist/http/client.js +1 -1
  80. package/dist/http/errors.js +7 -6
  81. package/dist/http/fields.js +192 -13
  82. package/dist/http/hatch-response.js +73 -0
  83. package/dist/http/hatch.js +88 -23
  84. package/dist/http/json-schema.js +1 -1
  85. package/dist/http/node-transport.js +0 -1
  86. package/dist/http/oauth.js +4 -3
  87. package/dist/http/paging.js +6 -9
  88. package/dist/http/provider.js +33 -5
  89. package/dist/http/safety.js +9 -1
  90. package/dist/http/services.js +1 -8
  91. package/dist/http/tools.js +45 -30
  92. package/dist/http/vendor.js +7 -7
  93. package/dist/identity.js +2 -6
  94. package/dist/index.d.ts +1 -1
  95. package/dist/index.js +9 -2
  96. package/dist/invocation-auth.js +2 -1
  97. package/dist/invocation.js +21 -6
  98. package/dist/membership.d.ts +13 -5
  99. package/dist/membership.js +34 -2
  100. package/dist/meta-tools.js +50 -35
  101. package/dist/native-recovery.js +4 -16
  102. package/dist/native-tools.js +6 -2
  103. package/dist/oauth-handoff.js +2 -2
  104. package/dist/oauth-sealing.js +10 -0
  105. package/dist/operation-vocabulary.js +136 -14
  106. package/dist/operator-record.d.ts +2 -2
  107. package/dist/operator-record.js +2 -49
  108. package/dist/operator-ui/contract.d.ts +12 -2
  109. package/dist/operator-ui/generated.js +3 -3
  110. package/dist/operator-ui/model.d.ts +22 -1
  111. package/dist/program-writes.js +3 -8
  112. package/dist/provider-call.js +0 -7
  113. package/dist/provider.d.ts +1 -1
  114. package/dist/providers/_shared/google/kit.js +1 -6
  115. package/dist/providers/_shared/google/service-account.js +1 -3
  116. package/dist/providers/_shared/google/workspace.d.ts +1 -1
  117. package/dist/providers/_shared/guide.js +3 -0
  118. package/dist/providers/_shared/json.js +12 -0
  119. package/dist/providers/_shared/rest/compact-index.js +1 -1
  120. package/dist/providers/_shared/rest/kit.js +1 -3
  121. package/dist/providers/_shared/rest/operation-index.js +49 -53
  122. package/dist/providers/_shared/rest/value-safety.js +106 -28
  123. package/dist/providers/breeze/api.js +9 -8
  124. package/dist/providers/breeze/index.js +4 -2
  125. package/dist/providers/breeze/skill.generated.js +1 -1
  126. package/dist/providers/breeze/tools.js +7 -7
  127. package/dist/providers/ccb/api.js +3 -7
  128. package/dist/providers/ccb/index.js +7 -1
  129. package/dist/providers/ccb/skill.generated.js +1 -1
  130. package/dist/providers/ccb/tools.js +1 -6
  131. package/dist/providers/cloudflare/api.js +10 -3
  132. package/dist/providers/cloudflare/index.js +2 -1
  133. package/dist/providers/cloudflare/safety.js +3 -3
  134. package/dist/providers/cloudflare/skill.generated.js +1 -1
  135. package/dist/providers/docs/lib/schemas.js +24 -22
  136. package/dist/providers/docs/safety.js +2 -0
  137. package/dist/providers/docs/skill.generated.js +1 -1
  138. package/dist/providers/docs/tools.js +4 -14
  139. package/dist/providers/drive/api.js +1 -0
  140. package/dist/providers/drive/lib/contracts.js +8 -5
  141. package/dist/providers/drive/skill.generated.js +1 -1
  142. package/dist/providers/drive/tools.js +23 -41
  143. package/dist/providers/forms/api.js +1 -0
  144. package/dist/providers/forms/skill.generated.js +1 -1
  145. package/dist/providers/forms/tools.js +11 -16
  146. package/dist/providers/github/api.js +1 -0
  147. package/dist/providers/github/lib/discovery.js +1 -1
  148. package/dist/providers/github/skill.generated.js +1 -1
  149. package/dist/providers/github/tools.js +61 -17
  150. package/dist/providers/gmail/lib/schemas.js +60 -50
  151. package/dist/providers/gmail/skill.generated.js +1 -1
  152. package/dist/providers/gmail/tools.js +12 -26
  153. package/dist/providers/granola/index.js +2 -0
  154. package/dist/providers/granola/skill.generated.js +1 -1
  155. package/dist/providers/overflow/api.js +8 -4
  156. package/dist/providers/overflow/index.js +2 -1
  157. package/dist/providers/overflow/skill.generated.js +1 -1
  158. package/dist/providers/overflow/tools.js +3 -7
  159. package/dist/providers/planning-center/api.js +5 -2
  160. package/dist/providers/planning-center/lib/constants.d.ts +1 -1
  161. package/dist/providers/planning-center/lib/json-api.js +1 -9
  162. package/dist/providers/planning-center/skill.generated.js +1 -1
  163. package/dist/providers/planning-center/tools.js +2 -1
  164. package/dist/providers/quickbooks/safety.js +80 -39
  165. package/dist/providers/quickbooks/skill.generated.js +1 -1
  166. package/dist/providers/sheets/api.js +1 -0
  167. package/dist/providers/sheets/skill.generated.js +1 -1
  168. package/dist/providers/sheets/tools.js +14 -23
  169. package/dist/providers/slides/skill.generated.js +1 -1
  170. package/dist/providers/slides/tools.js +19 -26
  171. package/dist/providers/stripe/index.js +2 -1
  172. package/dist/providers/stripe/safety.js +2 -2
  173. package/dist/providers/stripe/skill.generated.js +1 -1
  174. package/dist/providers/tithely/api.js +5 -8
  175. package/dist/providers/tithely/index.js +3 -2
  176. package/dist/providers/tithely/skill.generated.js +1 -1
  177. package/dist/providers/tithely/tools.js +7 -5
  178. package/dist/providers/vercel/api.js +2 -7
  179. package/dist/providers/vercel/lib/pin.js +1 -1
  180. package/dist/providers/vercel/safety.js +1 -1
  181. package/dist/providers/vercel/skill.generated.js +1 -1
  182. package/dist/providers/vercel/tools.js +6 -4
  183. package/dist/redaction-marker.js +2 -2
  184. package/dist/registry.d.ts +11 -5
  185. package/dist/registry.js +46 -20
  186. package/dist/request-principal.js +1 -1
  187. package/dist/request-state.js +2 -2
  188. package/dist/routes/access-tokens.js +1 -1
  189. package/dist/routes/activity-disclosure.js +1 -1
  190. package/dist/routes/connect.js +2 -2
  191. package/dist/routes/credentials.js +130 -61
  192. package/dist/routes/dispatch.js +5 -1
  193. package/dist/routes/mcp.js +34 -17
  194. package/dist/routes/oauth-management.js +1 -1
  195. package/dist/routes/operator.js +6 -5
  196. package/dist/routes/shared.d.ts +13 -8
  197. package/dist/routes/shared.js +15 -9
  198. package/dist/routes/ui-config.js +3 -3
  199. package/dist/routes/ui-data.js +126 -20
  200. package/dist/routes/ui.js +17 -1
  201. package/dist/runtime/call-admission.js +1 -1
  202. package/dist/runtime/call.js +8 -3
  203. package/dist/runtime/native-storage.js +9 -0
  204. package/dist/runtime/request-reads.js +182 -0
  205. package/dist/runtime/request-scope.js +16 -0
  206. package/dist/runtime/settlement.js +1 -1
  207. package/dist/runtime/shared-read.js +2 -15
  208. package/dist/runtime/storage.js +12 -0
  209. package/dist/sent-secrets.d.ts +1 -2
  210. package/dist/sent-secrets.js +3 -8
  211. package/dist/server.js +4 -4
  212. package/dist/skills.js +44 -54
  213. package/dist/sqlite.d.ts +0 -19
  214. package/dist/sqlite.js +2 -83
  215. package/dist/storage/keys.js +69 -128
  216. package/dist/storage/memory.js +8 -2
  217. package/dist/storage/sql-native.js +27 -101
  218. package/dist/storage/sql.d.ts +1 -24
  219. package/dist/storage/sql.js +13 -14
  220. package/dist/storage-digest.js +32 -0
  221. package/dist/timeout.js +8 -0
  222. package/dist/tool-error.js +4 -0
  223. package/dist/types.d.ts +33 -0
  224. package/dist/url-safety.js +0 -4
  225. package/dist/usage-guide.js +18 -37
  226. package/dist/validate.d.ts +3 -0
  227. package/dist/validate.js +220 -158
  228. package/dist/version.d.ts +1 -1
  229. package/dist/version.js +1 -1
  230. package/dist/worker.js +1 -1
  231. package/dist/write-outcome.js +0 -3
  232. package/documentation/README.md +19 -55
  233. package/documentation/architecture.md +436 -515
  234. package/documentation/auth.md +229 -88
  235. package/documentation/code-mode.md +201 -94
  236. package/documentation/deploying.md +25 -43
  237. package/documentation/integrating.md +18 -19
  238. package/documentation/meta-tools.md +225 -51
  239. package/documentation/migration-0.33.md +10 -6
  240. package/documentation/migration-0.34.md +5 -5
  241. package/documentation/migration-retired-layouts.md +74 -0
  242. package/documentation/operator-tests.md +20 -120
  243. package/documentation/operator-ui.md +108 -16
  244. package/documentation/pool-membership-upgrade.md +44 -0
  245. package/documentation/provider-auth-migration.md +4 -10
  246. package/documentation/provider-migration-0.29.md +4 -15
  247. package/documentation/providers.md +105 -0
  248. package/examples/worker/AGENTS.md +14 -16
  249. package/examples/worker/README.md +24 -118
  250. package/examples/worker/src/connecta.config.ts +1 -0
  251. package/guides/connecting-agents.md +9 -31
  252. package/guides/how-it-works.md +6 -4
  253. package/guides/safety-and-trust.md +4 -1
  254. package/package.json +19 -19
  255. package/templates/node/AGENTS.md +13 -12
  256. package/templates/node/README.md +9 -26
  257. package/templates/node/package.json +1 -1
  258. package/templates/node/src/connecta.config.ts +1 -0
  259. package/dist/auth/oauth-v2-migration.js +0 -135
  260. package/dist/provider-call-facts.d.ts +0 -115
  261. package/dist/provider-call.d.ts +0 -112
  262. package/dist/storage/d1-copy.js +0 -255
  263. package/dist/storage/sql-schema.d.ts +0 -6
  264. package/examples/worker/kv-to-d1.wrangler.jsonc +0 -26
  265. package/examples/worker/scripts/copy-kv-to-d1.mjs +0 -162
package/dist/types.d.ts CHANGED
@@ -193,6 +193,14 @@ export interface ConnectorCredentialConfig {
193
193
  */
194
194
  fields?: ConnectorCredentialFieldConfig[];
195
195
  }
196
+ /**
197
+ * Why a credential test did not pass, as a typed fact with no downstream text.
198
+ * `rejected`: the service refused the credential. `scope`: it accepted the
199
+ * credential but refused a permission the connection needs. `unreachable`: the
200
+ * service could not be reached or was unavailable. `timeout`: it did not
201
+ * answer within the test's deadline. `failed`: anything else.
202
+ */
203
+ export type CredentialFailureClass = "rejected" | "scope" | "unreachable" | "timeout" | "failed";
196
204
  export interface CredentialTestResult {
197
205
  ok: boolean;
198
206
  /**
@@ -201,6 +209,25 @@ export interface CredentialTestResult {
201
209
  * `ok`, and the log records only that a test failed.
202
210
  */
203
211
  message?: string;
212
+ /**
213
+ * Why a failed test failed. Optional: an unclassified failure is `failed`.
214
+ * Ignored when `ok` is true.
215
+ */
216
+ failure?: CredentialFailureClass;
217
+ }
218
+ /**
219
+ * How agent-facing text names Connecta's routes on the surface serving an
220
+ * operation: `call_tool`, `call_destructive_tool`, `search_tools`,
221
+ * `execute_code`, `authorize_connector` and `skills` on the six-tool surface,
222
+ * and other wording where those tools are not listed.
223
+ */
224
+ export interface AgentRouteNames {
225
+ readonly search: string;
226
+ readonly read: string;
227
+ readonly write: string;
228
+ readonly program: string;
229
+ readonly authorize: string;
230
+ readonly skills: string;
204
231
  }
205
232
  export interface ConnectorContext {
206
233
  /** Explicit downstream consent initiation, never set by status/catalog/calls. */
@@ -236,6 +263,12 @@ export interface ConnectorContext {
236
263
  defer?: (promise: Promise<unknown>) => void;
237
264
  /** Requested connector-operation deadline in milliseconds. */
238
265
  timeoutMs?: number;
266
+ /**
267
+ * Route names for text this operation writes for the agent, such as "call
268
+ * authorize_connector" in an auth error. Connecta sets it on every context
269
+ * it builds; build such text from it rather than spelling a tool name.
270
+ */
271
+ routes?: AgentRouteNames;
239
272
  }
240
273
  type ConnectorStatusState = "ok" | "per_caller" | "auth_required" | "credential_required" | "error";
241
274
  /** The last agent-facing catalog read this runtime served for one connector. */
@@ -117,10 +117,6 @@ export function classifyHost(hostname) {
117
117
  return "loopback";
118
118
  return "public";
119
119
  }
120
- /** True for loopback and private hosts alike. */
121
- export function isPrivateHost(hostname) {
122
- return classifyHost(hostname) !== "public";
123
- }
124
120
  /**
125
121
  * Why connecta must not fetch `target`, a URL the downstream advertised, for a
126
122
  * connector configured at `configured` — or undefined when it may.
@@ -1,43 +1,36 @@
1
+ import { META_ROUTES } from "./agent-routes.js";
2
+ import { UNCOUNTED_GUEST_FUNCTIONS } from "./guest-functions.js";
1
3
  /** Self-contained content for the usage skill; independent of skill registration. */
2
4
  export const USAGE_SKILL = `---
3
5
  name: usage
4
- description: How to route work between one execute_code program and Connecta's explicit call, authorization, and result tools.
6
+ description: How to route work between one ${META_ROUTES.program} program and Connecta's explicit call, authorization, and result tools.
5
7
  ---
6
8
 
7
9
  # Connecta usage
8
10
 
9
11
  ## Choose the route
10
12
 
11
- | Work | Tool |
12
- | --- | --- |
13
- | One known-address read | call_tool |
14
- | One known-address write | call_destructive_tool |
15
- | Discovery, multiple or dependent calls, paging, reduction | execute_code |
16
-
17
- Read one account with call_tool: \`{ "address": "crm.get_account", "args": { "id": "acct_42" } }\`.
18
- Discover and call together when schemas suffice. search_tools covers catalog
19
- inspection. On a read-only endpoint, as execute_code's description says, search
20
- omits writes (guides may name them) and each fails read_only_endpoint; tell the
21
- user. Unannotated tools fail closed to writes.
22
- For a requested write, make the call through the write route; the host may ask
23
- the user to confirm it. Connecta classifies and routes writes; the host owns approval.
13
+ Route as the server instructions and ${META_ROUTES.program}'s first sentence say.
14
+ Read one account with ${META_ROUTES.read}: \`{ "address": "crm.get_account", "args": { "id": "acct_42" } }\`.
15
+ On a read-only endpoint search omits writes (guides may name them) and each
16
+ fails read_only_endpoint; tell the user. Unannotated tools fail closed to writes.
17
+ Connecta classifies and routes a requested write; the host owns approval.
24
18
 
25
19
  ## The global and the envelopes
26
20
 
27
21
  Pass JavaScript \`async () => { ... }\`, no arguments. Do not shadow \`connecta\`.
28
22
  No imports, require, filesystem, fetch, or timers.
29
23
 
30
- Use \`connecta.call(address, args, { timeoutMs })\` or
31
- \`connecta.call({ address, args, timeoutMs })\`; both return \`{ data, format }\`.
32
- \`format: "json"\` carries JSON; \`format: "text"\` carries text. Parse text only
33
- when documented as JSON. Verify collection roots.
24
+ \`connecta.call(address, args, { timeoutMs })\` and
25
+ \`connecta.call({ address, args, timeoutMs })\` return \`{ data, format }\`.
26
+ Parse \`format: "text"\` only when documented as JSON. Verify collection roots.
34
27
 
35
28
  \`connecta.read("resource://id/"+encodeURIComponent(uri))\` returns \`{ contents }\` for advertised URIs.
36
29
 
37
- Search/describe return \`{ tools }\`, never an array. Search also returns
38
- \`catalogErrors\`, pagination, and possible \`absence\`; check failures before
39
- selecting a match. JSON schemas are the program default. Compact schemas have
40
- \`schemaFormat: "text"\`; do not read their .properties. Select the exact tool and
30
+ Search/describe return \`{ tools }\`, never an array. Check search's
31
+ \`catalogErrors\` and \`absence\` before selecting a match. Search defaults to a
32
+ TypeScript \`signature\`; text schemas have \`schemaFormat: "text"\` and no .properties.
33
+ A \`readyCalls\` entry is a complete read: \`connecta.call(entry.address, entry.args)\`. Select the exact tool and
41
34
  account/environment, inspect its schema, and supply its required keys and types.
42
35
 
43
36
  Discover an unfamiliar read and reduce its result:
@@ -79,13 +72,13 @@ async () => {
79
72
 
80
73
  Host-call budget exhaustion ends the run with budget_exceeded. Catch and
81
74
  allSettled cannot recover it or return partial output. Bound batches before
82
- starting them; every guest call except emit spends host calls.
75
+ starting them; every guest call except ${UNCOUNTED_GUEST_FUNCTIONS} spends host calls.
83
76
  Split remaining reads. Never replay writes for their output.
84
77
 
85
78
  ## Per-connector guides
86
79
 
87
- Fetch a listed guide with skills by its exact name, or \`connecta.skill(name)\`
88
- inside a program; it returns \`{ name, text, format: "text" }\`.
80
+ Fetch a listed guide by its exact name with the skills tool, or
81
+ \`connecta.skill(name)\` inside a program; it returns \`{ name, text, format: "text" }\`.
89
82
  \`guideRequired: true\` is a hard stop. connector_required and approval_required
90
83
  remain after schema expansion; schema_truncated clears after exact describe.
91
84
  Otherwise fetch for units, pagination, aliases, or sequences.
@@ -134,15 +127,3 @@ base64 and PNG/JPEG/GIF/WebP MIME. Emit works without await, delivers on success
134
127
  and obeys byte/block budgets; text shares the return cap. Return reduced JSON.
135
128
 
136
129
  `;
137
- /** Kept in sync with GuestApi by the declaration test. These are type notation, not runnable JS. */
138
- export const GUEST_API_DECLARATION = `search(args?: CatalogSearchArgs): Promise<CatalogSearchResult>;
139
- describe(args?: CatalogDescribeArgs): Promise<{ tools: CatalogDescription[] }>;
140
- call(address: string, args?: unknown, options?: { timeoutMs?: number }): Promise<GuestResult>;
141
- call(request: { address: string; args?: unknown; timeoutMs?: number }): Promise<GuestResult>;
142
- read(uri: string): Promise<GuestResourceResult>;
143
- result(
144
- id: string | GuestResultHandle,
145
- options?: { page?: number; offset?: number; maxBytes?: number },
146
- ): Promise<GuestResultPage>;
147
- skill(name: string): Promise<{ name: string; text: string; format: "text" }>;
148
- emit(block: GuestNativeBlock | GuestResult): PromiseLike<void>;`;
@@ -1,4 +1,5 @@
1
1
  import { ConnectorCallError } from "./errors.js";
2
+ import type { ArgumentValidationDetails } from "./errors.js";
2
3
  import { type FailureSubject } from "./operator-record.js";
3
4
  import type { JsonSchema, Logger } from "./types.js";
4
5
  export interface ValidateToolInputOptions {
@@ -31,6 +32,8 @@ export interface CompileValidatorOptions {
31
32
  }
32
33
  /** Optional in-process properties have the same absence semantics as JSON input. Never mutate the caller. */
33
34
  export declare function normalizeToolInput<A>(value: A): A;
35
+ /** One example synthesized from the published schema alone, checked by its validator; never caller values. */
36
+ export declare function schemaExample(schema: JsonSchema): Pick<ArgumentValidationDetails, "example" | "exampleUnavailable">;
34
37
  /**
35
38
  * Validate call arguments against a tool's JSON Schema.
36
39
  *