@cerebro-labs/agentnava-sdk 0.53.2 → 0.74.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.
@@ -1 +1 @@
1
- {"version":3,"file":"import-tools.js","sourceRoot":"","sources":["../src/import-tools.ts"],"names":[],"mappings":"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","sourcesContent":["// Turn an API you already describe somewhere into tools an agent can call.\n//\n// WHAT THIS IS FOR. A company adopting AgentNava has APIs already, and their\n// team already keeps a Postman collection, an OpenAPI document, or a handful of\n// curl commands that work. Asking them to hand-write a tool declaration per\n// endpoint is asking for a week of somebody's time, and asking them to produce\n// an artifact they do not already have is worse: it is a reason to stall.\n//\n// So this takes whichever of those three they have and gives back draft\n// `httpTools`. Self-serve, in the SDK, no support ticket.\n//\n// IT RUNS ENTIRELY ON YOUR MACHINE. Nothing here makes a network request except\n// `fromOpenApi` when you hand it a URL instead of a document, and that fetch\n// goes to YOUR server, not ours. That is a deliberate security property rather\n// than an implementation convenience: a Postman export routinely contains a live\n// token, and a collection you never upload is a token we can never receive.\n//\n// WHAT IT DOES NOT DO, and this is the honest part:\n//\n// IT CANNOT WRITE THE DESCRIPTIONS. A tool's `description` is what the model\n// reads to decide \"this is the tool for this job\", and none of these three\n// formats contains that. Their summaries are written for a developer reading\n// documentation, not for a model choosing between forty tools. \"Fetch one\n// order by its number, before deciding a refund\" is what works; \"Orders\n// endpoint\" is not. Where the source has nothing useful, the tool comes back\n// with a warning rather than a confident-looking stub, because a bad\n// description does not fail: it quietly makes the agent pick the wrong tool.\n//\n// IT DOES NOT CREATE ANYTHING. It returns drafts. You read them, fix the\n// descriptions, drop the endpoints an agent has no business calling, and pass\n// what is left to `ws.agents.create({ httpTools })`.\n//\n// ```ts\n// import { fromPostman } from '@cerebro-labs/agentnava-sdk';\n//\n// const { tools, secrets, warnings } = fromPostman(collection);\n// for (const w of warnings) console.warn(w.message);\n// for (const s of secrets) await ws.secrets.create({ name: s.name, value: '...' });\n//\n// await ws.agents.create({ id: 'support', instructions: '...', httpTools: tools });\n// ```\n\nimport type { HttpTool, HttpToolParam } from './types.ts';\n\n/** Something a human has to look at before these tools are good. */\nexport type ImportWarningKind =\n\t/** The source had no description worth showing a model. */\n\t| 'description-missing'\n\t/** A credential was found and replaced with a secret placeholder. */\n\t| 'credential-stripped'\n\t/** The request body is a shape we cannot express (file upload, form-data). */\n\t| 'unsupported-body'\n\t/** More tools than a model chooses well between. */\n\t| 'too-many-tools'\n\t/** A `{{variable}}` the source never defined. */\n\t| 'undefined-variable'\n\t/** Two endpoints produced the same tool name. */\n\t| 'name-collision'\n\t/** A parameter was renamed to something the API will accept. */\n\t| 'param-renamed'\n\t| 'unsupported-operation'\n\t| 'security-choice';\n\nexport interface ImportWarning {\n\tkind: ImportWarningKind;\n\t/** The tool it concerns, when it concerns one. */\n\ttool?: string;\n\tmessage: string;\n}\n\nexport interface ImportedSecret {\n\t/** Create this with `ws.secrets.create({ name, value })`. */\n\tname: string;\n\t/** The tools that reference it. */\n\tusedBy: string[];\n\t/** Where in the source it came from, so you can find the real value. */\n\tfrom: string;\n}\n\nexport interface ImportedTools {\n\t/** Drafts. Read them before you ship them. */\n\ttools: HttpTool[];\n\t/** Secrets these tools need. None of them carries a value: see the note on\n\t * credentials in this module's header. */\n\tsecrets: ImportedSecret[];\n\t/** Everything a human should decide. Never silently resolved. */\n\twarnings: ImportWarning[];\n}\n\nexport interface ImportOptions {\n\t/** Name for the credential these requests authenticate with. Defaults are\n\t * derived from the header (`Authorization` becomes `API_TOKEN`), which is\n\t * fine for one API and confusing once you have three. */\n\tsecretName?: string;\n\t/** Keep only the operations you want. Returning everything is rarely right:\n\t * a model picks markedly worse between forty tools than between eight. */\n\tinclude?: (candidate: { name: string; method: string; url: string }) => boolean;\n\t/** Above this many tools, a `too-many-tools` warning is added. */\n\twarnAbove?: number;\n}\n\nconst DEFAULT_WARN_ABOVE = 15;\n\n/** Header names whose value is a credential whatever it looks like.\n *\n * MATCHED ON THE NAME, NOT THE VALUE, and that is the safe direction. A value\n * test has to guess, and the cost of guessing wrong is a live token written\n * into an agent version, which is readable. A name test over-collects at worst:\n * it turns something harmless into a secret, which is an inconvenience. */\nconst CREDENTIAL_HEADERS = new Set([\n\t'authorization',\n\t'proxy-authorization',\n\t'cookie',\n\t'x-api-key',\n\t'api-key',\n\t'apikey',\n\t'x-auth-token',\n\t'auth-token',\n\t'x-access-token',\n\t'access-token',\n\t'token',\n\t'x-session-token',\n\t'private-token',\n\t'x-secret',\n]);\n\n/** Shapes that are a credential wherever they appear, including in a URL.\n *\n * Deliberately narrow: each is a published prefix from a real provider, so a\n * match is near-certain rather than a heuristic. The header rule above is what\n * does the heavy lifting. */\nconst CREDENTIAL_VALUE_RE =\n\t/\\b(sk-[A-Za-z0-9]{16,}|ghp_[A-Za-z0-9]{20,}|gho_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|xox[baprs]-[A-Za-z0-9-]{10,}|AIza[A-Za-z0-9_-]{30,}|AKIA[A-Z0-9]{16}|eyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\.)/;\n\n/** A tool name the API will accept: `^[a-z][a-z0-9_]{0,63}$`. */\nexport function toolNameFrom(raw: string, fallback = 'call'): string {\n\tconst slug = raw\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]+/g, '_')\n\t\t.replace(/^_+|_+$/g, '')\n\t\t.slice(0, 64);\n\tif (slug === '' || !/^[a-z]/.test(slug)) {\n\t\tconst prefixed = `${fallback}_${slug}`.replace(/_+$/, '').slice(0, 64);\n\t\treturn /^[a-z][a-z0-9_]*$/.test(prefixed) ? prefixed : fallback;\n\t}\n\treturn slug;\n}\n\n/** A param name the API will accept: `^[A-Za-z][A-Za-z0-9_]*$`.\n *\n * THE WIRE NAME IS NOT THE PARAM NAME, and conflating them is what broke this.\n * An API's query key is whatever the API says it is (`page-size`,\n * `filter[status]`), while a param name is an identifier both our validator and\n * the runtime's placeholder regex constrain to `[A-Za-z][A-Za-z0-9_]*`. Copying\n * the wire name into the param name produced `400 params has invalid key\n * \"page-size\"` on documents that are completely ordinary, which is exactly the\n * unactionable 400 `uniqueName` exists to avoid. So the key on the wire keeps\n * its spelling and only the identifier is normalised. */\nexport function paramNameFrom(raw: string, fallback = 'arg'): string {\n\tconst slug = raw\n\t\t.trim()\n\t\t.replace(/[^A-Za-z0-9]+/g, '_')\n\t\t.replace(/^_+|_+$/g, '')\n\t\t.slice(0, 64);\n\tif (slug === '' || !/^[A-Za-z]/.test(slug)) {\n\t\tconst prefixed = `${fallback}_${slug}`.replace(/_+$/, '').slice(0, 64);\n\t\treturn /^[A-Za-z][A-Za-z0-9_]*$/.test(prefixed) ? prefixed : fallback;\n\t}\n\treturn slug;\n}\n\n/** A secret name the runtime's placeholder regex will match.\n *\n * `[A-Za-z_][A-Za-z0-9_]*`, so a leading digit is the case that matters. A\n * Postman collection with a `{{2fa_token}}` variable produced\n * `{{secrets.2FA_TOKEN}}`, which that regex does not match at all, so nothing\n * substituted it and the LITERAL braces went out as the header value. No error,\n * just a 401 from the far end. A name that cannot resolve is worse than an ugly\n * one. */\nfunction normalizeSecretName(raw: string, fallback = 'API_TOKEN'): string {\n\tconst slug = raw\n\t\t.replace(/[^A-Za-z0-9]+/g, '_')\n\t\t.replace(/^_+|_+$/g, '')\n\t\t.toUpperCase()\n\t\t.slice(0, 64);\n\tif (slug === '') return fallback;\n\treturn /^[A-Za-z_]/.test(slug) ? slug : `S_${slug}`.slice(0, 64);\n}\n\n/** A secret name from a header, or the caller's own choice. */\nfunction secretNameFor(header: string, options: ImportOptions): string {\n\tif (options.secretName) return options.secretName;\n\tconst h = header.toLowerCase();\n\tif (h === 'authorization') return 'API_TOKEN';\n\tif (h === 'x-api-key' || h === 'api-key' || h === 'apikey') return 'API_KEY';\n\treturn normalizeSecretName(header);\n}\n\n/** Accumulates tools, secrets and warnings, and keeps names unique.\n *\n * UNIQUE BECAUSE THE API NOW REFUSES DUPLICATES. Two endpoints called \"Get\" in\n * different folders both slug to `get`, and a duplicate name makes which\n * request goes out a matter of list order: the agent looks like it called the\n * right tool and returns the wrong answer. Renaming here, with a warning, beats\n * a 400 the importer's caller cannot act on. */\nclass Draft {\n\treadonly tools: HttpTool[] = [];\n\treadonly warnings: ImportWarning[] = [];\n\treadonly #secrets = new Map<string, ImportedSecret>();\n\treadonly #names = new Set<string>();\n\t/** `<tool>\\0<wire name>` to the param name chosen for it. */\n\treadonly #paramNames = new Map<string, string>();\n\n\tuniqueName(wanted: string): string {\n\t\tif (!this.#names.has(wanted)) {\n\t\t\tthis.#names.add(wanted);\n\t\t\treturn wanted;\n\t\t}\n\t\tfor (let i = 2; i < 1000; i++) {\n\t\t\tconst candidate = `${wanted}_${i}`.slice(0, 64);\n\t\t\tif (!this.#names.has(candidate)) {\n\t\t\t\tthis.#names.add(candidate);\n\t\t\t\tthis.warnings.push({\n\t\t\t\t\tkind: 'name-collision',\n\t\t\t\t\ttool: candidate,\n\t\t\t\t\tmessage: `Two operations both became \"${wanted}\"; this one is \"${candidate}\". Give it a name that says what it does.`,\n\t\t\t\t});\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`cannot find a free name for ${wanted}`);\n\t}\n\n\t/** Records the secret. Returns true the FIRST time this name is seen, so the\n\t * caller can warn once rather than once per tool that uses it. */\n\tsecret(name: string, tool: string, from: string): boolean {\n\t\tconst existing = this.#secrets.get(name);\n\t\tif (existing) {\n\t\t\tif (!existing.usedBy.includes(tool)) existing.usedBy.push(tool);\n\t\t\treturn false;\n\t\t}\n\t\tthis.#secrets.set(name, { name, usedBy: [tool], from });\n\t\treturn true;\n\t}\n\n\t/** Every secret this tool references, for the tool's own `secrets` field.\n\t *\n\t * LOAD-BEARING, NOT DECORATION. `collectSecretNames` in the control plane\n\t * builds a turn's secret map from each httpTool's `secrets` array; unlike\n\t * MCP servers it does NOT scan the tool's headers for {{secrets.X}}. A tool\n\t * that carries the placeholder but not the declaration therefore fails every\n\t * call with \"missing required secret\", which is what every drafted tool did\n\t * until this existed. */\n\tsecretsFor(tool: string): string[] {\n\t\treturn [...this.#secrets.values()].filter((s) => s.usedBy.includes(tool)).map((s) => s.name);\n\t}\n\n\t/** Declare a param under a name the API accepts, warning when it had to\n\t * change, and return the name to use in the placeholder.\n\t *\n\t * ONE WIRE NAME IS ONE PARAM, however many times it is mentioned. An\n\t * OpenAPI operation names a path variable twice: once in the path template\n\t * `/orders/{order-id}` and once in `parameters`. Treating the second sight\n\t * of it as a collision produced `order_id` in the url and a second,\n\t * never-sent `order_id_2` in `params`, which is the very \"declared and never\n\t * sent\" defect this class is meant to prevent. So a repeat returns the same\n\t * name and merges the richer definition over the first guess. */\n\tparam(\n\t\tparams: Record<string, HttpToolParam>,\n\t\twireName: string,\n\t\tdef: HttpToolParam,\n\t\ttool: string,\n\t\tidentity = wireName,\n\t): string {\n\t\tconst key = `${tool}\\u0000${identity}`;\n\t\tconst already = this.#paramNames.get(key);\n\t\tif (already !== undefined) {\n\t\t\tparams[already] = { ...params[already], ...def };\n\t\t\treturn already;\n\t\t}\n\t\tconst wanted = paramNameFrom(wireName);\n\t\tlet name = wanted;\n\t\tfor (let i = 2; i < 1000 && name in params; i++) name = `${wanted}_${i}`.slice(0, 64);\n\t\tthis.#paramNames.set(key, name);\n\t\tif (name !== wireName) {\n\t\t\tthis.warnings.push({\n\t\t\t\tkind: 'param-renamed',\n\t\t\t\ttool,\n\t\t\t\tmessage:\n\t\t\t\t\t`Parameter \"${wireName}\" is called \"${name}\" on the tool, because a param name has ` +\n\t\t\t\t\t`to be a plain identifier. The request still sends \"${wireName}\" on the wire.`,\n\t\t\t});\n\t\t}\n\t\tparams[name] = def;\n\t\treturn name;\n\t}\n\n\tfinish(options: ImportOptions): ImportedTools {\n\t\tconst limit = options.warnAbove ?? DEFAULT_WARN_ABOVE;\n\t\tif (this.tools.length > limit) {\n\t\t\tthis.warnings.push({\n\t\t\t\tkind: 'too-many-tools',\n\t\t\t\tmessage:\n\t\t\t\t\t`${this.tools.length} tools. A model chooses markedly worse between forty than ` +\n\t\t\t\t\t`between eight, so keep the operations an agent genuinely needs and drop the rest ` +\n\t\t\t\t\t`(pass \\`include\\` to filter during the import).`,\n\t\t\t});\n\t\t}\n\t\treturn { tools: this.tools, secrets: [...this.#secrets.values()], warnings: this.warnings };\n\t}\n}\n\n/** Headers with every credential replaced by a secret placeholder. */\nfunction safeHeaders(\n\traw: Record<string, string>,\n\ttoolName: string,\n\tdraft: Draft,\n\toptions: ImportOptions,\n\tsource: string,\n): Record<string, string> {\n\tconst out: Record<string, string> = {};\n\tfor (const [name, value] of Object.entries(raw)) {\n\t\tconst isCredentialHeader = CREDENTIAL_HEADERS.has(name.toLowerCase());\n\t\tconst looksLikeOne = CREDENTIAL_VALUE_RE.test(value);\n\t\tif (!isCredentialHeader && !looksLikeOne) {\n\t\t\tout[name] = value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst secret = secretNameFor(name, options);\n\t\t// The SCHEME is preserved, the credential is not. `Bearer {{secrets.X}}`\n\t\t// works; `{{secrets.X}}` alone silently drops the scheme and the server\n\t\t// answers 401 about a malformed header.\n\t\tconst scheme = /^(Bearer|Basic|Token|ApiKey)\\s+/i.exec(value)?.[1];\n\t\tout[name] = scheme ? `${scheme} {{secrets.${secret}}}` : `{{secrets.${secret}}}`;\n\t\tconst firstTime = draft.secret(secret, toolName, `${source} header \"${name}\"`);\n\t\t// ONCE PER SECRET, not once per tool. One token shared by twelve\n\t\t// operations produced twelve identical warnings, and a list nobody can\n\t\t// skim is a list nobody reads. `secrets[].usedBy` already names every tool\n\t\t// that references it, so the detail is not lost.\n\t\tif (firstTime) {\n\t\t\tdraft.warnings.push({\n\t\t\t\tkind: 'credential-stripped',\n\t\t\t\tmessage:\n\t\t\t\t\t`Header \"${name}\" held a credential. It is now {{secrets.${secret}}} and the value was ` +\n\t\t\t\t\t`NOT kept. Create it with ws.secrets.create({ name: '${secret}', value: '…' }).`,\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n\n/** A description the model can act on, or a warning that there is none. */\nfunction describe(\n\tcandidates: (string | undefined)[],\n\ttoolName: string,\n\tmethod: string,\n\tpath: string,\n\tdraft: Draft,\n): string {\n\tconst found = candidates.map((c) => c?.trim()).find((c) => c && c.length >= 12);\n\tif (found) return found;\n\t// The fallback is `METHOD /path`, and the path must be the RESOLVED one. Using\n\t// the raw source url put `DELETE {{baseUrl}}/admin/purge` in a description,\n\t// which shows a model a placeholder it cannot act on and reads like a bug.\n\t// Collapse doubled slashes left behind by a stripped placeholder, but NOT the\n\t// `//` in `https://`: a Postman collection that writes absolute urls rather\n\t// than {{baseUrl}} produced the description \"DELETE https:/api.acme.example/…\",\n\t// and that string is what the model reads to choose the tool.\n\tconst stripped = path.replace(/\\{\\{[^}]*\\}\\}/g, '');\n\tconst scheme = /^[a-z][a-z0-9+.-]*:\\/\\//i.exec(stripped)?.[0] ?? '';\n\tconst clean = `${scheme}${stripped.slice(scheme.length).replace(/\\/{2,}/g, '/')}` || path;\n\tdraft.warnings.push({\n\t\tkind: 'description-missing',\n\t\ttool: toolName,\n\t\tmessage:\n\t\t\t`\"${toolName}\" has no usable description. This is the field the model reads to decide ` +\n\t\t\t`whether to call it, so write one line saying when someone would use it. ` +\n\t\t\t`A bad description does not error, it makes the agent pick the wrong tool.`,\n\t});\n\treturn `${method} ${clean}`;\n}\n\n// ---------------------------------------------------------------- postman\n\ninterface PostmanItem {\n\tname?: string;\n\trequest?: PostmanRequest | string;\n\titem?: PostmanItem[];\n\tdescription?: string;\n}\n\ninterface PostmanRequest {\n\tmethod?: string;\n\turl?: string | { raw?: string; host?: string[]; path?: string[]; query?: { key?: string; value?: string; description?: string; disabled?: boolean }[] };\n\theader?: { key?: string; value?: string; disabled?: boolean }[];\n\tbody?: { mode?: string; raw?: string };\n\tdescription?: string;\n\tauth?: { type?: string; [k: string]: unknown };\n}\n\nexport interface PostmanCollection {\n\tinfo?: { name?: string; description?: string };\n\titem?: PostmanItem[];\n\tvariable?: { key?: string; value?: string }[];\n\tauth?: { type?: string; [k: string]: unknown };\n}\n\n/**\n * Draft tools from a Postman collection export (v2.0 or v2.1).\n *\n * WHY POSTMAN AND NOT ONLY OPENAPI. OpenAPI is tidier; a collection is truer. It\n * holds the requests somebody has actually run, with the header names that\n * really work and real values in the body, which is what a tool has to\n * reproduce. Teams also already have one, and the best format to ask for is the\n * one nobody has to make.\n *\n * WHAT IT COSTS: a collection has no parameter TYPES, so every parameter comes\n * back a string. That is usually right and always safe; `fromOpenApi` gives real\n * types where a document exists.\n *\n * VARIABLES. Postman writes `{{baseUrl}}`, which is the same shape as our own\n * placeholders, so they map across almost directly. A variable the collection\n * DEFINES is substituted, unless it holds something that looks like a\n * credential, in which case it becomes a secret instead of being inlined. An\n * undefined variable becomes a secret too, with a warning, because the\n * alternative is a URL with a placeholder nothing resolves.\n */\nexport function fromPostman(\n\tcollection: PostmanCollection,\n\toptions: ImportOptions = {},\n): ImportedTools {\n\tconst draft = new Draft();\n\tconst vars = new Map<string, string>();\n\tfor (const v of collection.variable ?? []) {\n\t\tif (v.key) vars.set(v.key, v.value ?? '');\n\t}\n\n\t/** Substitute defined variables; anything else becomes a secret. */\n\tconst resolveVars = (text: string, toolName: string): string =>\n\t\ttext.replace(/\\{\\{([^}]+)\\}\\}/g, (_m, rawKey: string) => {\n\t\t\tconst keyName = rawKey.trim();\n\t\t\tconst value = vars.get(keyName);\n\t\t\t// A DEFINED VARIABLE HOLDING A CREDENTIAL IS STILL A CREDENTIAL. Inlining\n\t\t\t// it because the collection happened to define it is how a live token\n\t\t\t// ends up in an agent version, which is readable.\n\t\t\tif (value !== undefined && value !== '' && !CREDENTIAL_VALUE_RE.test(value)) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tconst secret = normalizeSecretName(keyName);\n\t\t\tdraft.secret(secret, toolName, `collection variable \"${keyName}\"`);\n\t\t\tif (value === undefined) {\n\t\t\t\tdraft.warnings.push({\n\t\t\t\t\tkind: 'undefined-variable',\n\t\t\t\t\ttool: toolName,\n\t\t\t\t\tmessage: `{{${keyName}}} is not defined in the collection, so it became {{secrets.${secret}}}.`,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn `{{secrets.${secret}}}`;\n\t\t});\n\n\tconst walk = (items: PostmanItem[], trail: string[]): void => {\n\t\tfor (const item of items) {\n\t\t\tif (item.item) {\n\t\t\t\twalk(item.item, [...trail, item.name ?? '']);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst request = item.request;\n\t\t\tif (!request || typeof request === 'string') continue;\n\n\t\t\tconst rawUrl =\n\t\t\t\ttypeof request.url === 'string'\n\t\t\t\t\t? request.url\n\t\t\t\t\t: (request.url?.raw ??\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t(request.url?.host ?? []).join('.'),\n\t\t\t\t\t\t\t(request.url?.path ?? []).join('/'),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join('/'));\n\t\t\tif (!rawUrl) continue;\n\n\t\t\tconst method = (request.method ?? 'GET').toUpperCase();\n\t\t\tconst candidateName = toolNameFrom(item.name ?? `${method} ${rawUrl}`);\n\t\t\tif (options.include && !options.include({ name: candidateName, method, url: rawUrl })) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst name = draft.uniqueName(candidateName);\n\n\t\t\t// Postman path variables are `:id`; ours are `{{params.id}}`.\n\t\t\tconst params: Record<string, HttpToolParam> = {};\n\t\t\tlet url = resolveVars(rawUrl, name).replace(\n\t\t\t\t/:([A-Za-z_][A-Za-z0-9_]*)/g,\n\t\t\t\t(_m, p: string) =>\n\t\t\t\t\t`{{params.${draft.param(params, p, { type: 'string', required: true }, name)}}}`,\n\t\t\t);\n\t\t\t// `?a=1&b=2` in the raw URL is kept as written; the structured `query`\n\t\t\t// array is what a caller edits in Postman, so it wins where present.\n\t\t\tconst query = typeof request.url === 'string' ? [] : (request.url?.query ?? []);\n\t\t\tconst enabled = query.filter((q) => q.key && !q.disabled);\n\t\t\tif (enabled.length > 0) {\n\t\t\t\turl = url.split('?')[0] as string;\n\t\t\t\tconst pairs = enabled.map((q) => {\n\t\t\t\t\tconst key = q.key as string;\n\t\t\t\t\tconst param = draft.param(\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t{ type: 'string', ...(q.description ? { description: q.description } : {}) },\n\t\t\t\t\t\tname,\n\t\t\t\t\t);\n\t\t\t\t\treturn `${encodeURIComponent(key)}={{paramsEncoded.${param}}}`;\n\t\t\t\t});\n\t\t\t\turl = `${url}?${pairs.join('&')}`;\n\t\t\t}\n\n\t\t\tconst headerPairs: Record<string, string> = {};\n\t\t\tfor (const h of request.header ?? []) {\n\t\t\t\tif (h.key && !h.disabled) headerPairs[h.key] = resolveVars(h.value ?? '', name);\n\t\t\t}\n\t\t\t// Collection-level auth applies to a request that declares none.\n\t\t\tconst auth = request.auth ?? collection.auth;\n\t\t\tif (auth?.type && !Object.keys(headerPairs).some((k) => CREDENTIAL_HEADERS.has(k.toLowerCase()))) {\n\t\t\t\tconst secret = secretNameFor('authorization', options);\n\t\t\t\theaderPairs.Authorization =\n\t\t\t\t\tauth.type === 'basic' ? `Basic {{secrets.${secret}}}` : `Bearer {{secrets.${secret}}}`;\n\t\t\t\tdraft.secret(secret, name, `collection auth (${auth.type})`);\n\t\t\t}\n\t\t\tconst headers = safeHeaders(headerPairs, name, draft, options, 'Postman');\n\n\t\t\tlet body: string | undefined;\n\t\t\tconst mode = request.body?.mode;\n\t\t\tif (mode === 'raw' && request.body?.raw) {\n\t\t\t\tbody = resolveVars(request.body.raw, name);\n\t\t\t} else if (mode && mode !== 'raw' && mode !== 'none') {\n\t\t\t\tdraft.warnings.push({\n\t\t\t\t\tkind: 'unsupported-body',\n\t\t\t\t\ttool: name,\n\t\t\t\t\tmessage: `Body mode \"${mode}\" is not supported; the tool was created without a body.`,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdraft.tools.push({\n\t\t\t\tname,\n\t\t\t\tdescription: describe(\n\t\t\t\t\t[item.description, request.description, trail.filter(Boolean).join(' / ')],\n\t\t\t\t\tname,\n\t\t\t\t\tmethod,\n\t\t\t\t\trawUrl,\n\t\t\t\t\tdraft,\n\t\t\t\t),\n\t\t\t\tmethod: (['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(method)\n\t\t\t\t\t? method\n\t\t\t\t\t: 'GET') as HttpTool['method'],\n\t\t\t\turl,\n\t\t\t\t...(Object.keys(headers).length > 0 && { headers }),\n\t\t\t\t...(Object.keys(params).length > 0 && { params }),\n\t\t\t\t// DECLARED, because the placeholder alone does not reach the runtime.\n\t\t\t\t...(draft.secretsFor(name).length > 0 && { secrets: draft.secretsFor(name) }),\n\t\t\t\t// GET carries no body: the API refuses one at authoring time.\n\t\t\t\t...(body !== undefined && method !== 'GET' && { body }),\n\t\t\t});\n\t\t}\n\t};\n\n\twalk(collection.item ?? [], []);\n\treturn draft.finish(options);\n}\n\n// ---------------------------------------------------------------- openapi\n\ninterface OpenApiSchema {\n\t[key: string]: unknown;\n\t$ref?: string;\n\ttype?: string | string[];\n\ttitle?: string;\n\tdescription?: string;\n\tenum?: (string | number | boolean | null)[];\n\tconst?: string | number | boolean | null;\n\trequired?: string[];\n\tproperties?: Record<string, OpenApiSchema>;\n\titems?: OpenApiSchema;\n\tnullable?: boolean;\n\tadditionalProperties?: boolean | OpenApiSchema;\n\tallOf?: OpenApiSchema[];\n\toneOf?: OpenApiSchema[];\n\tanyOf?: OpenApiSchema[];\n\treadOnly?: boolean;\n}\ninterface OpenApiParam {\n\t[key: string]: unknown;\n\t$ref?: string;\n\tname?: string;\n\tin?: string;\n\trequired?: boolean;\n\tdescription?: string;\n\tschema?: OpenApiSchema;\n\ttype?: string;\n\tenum?: (string | number | boolean | null)[];\n\tstyle?: string;\n\texplode?: boolean;\n}\ninterface OpenApiBody {\n\t$ref?: string;\n\trequired?: boolean;\n\tcontent?: Record<string, {schema?: OpenApiSchema}>;\n}\ninterface OpenApiOperation {\n\toperationId?: string;\n\tsummary?: string;\n\tdescription?: string;\n\tparameters?: OpenApiParam[];\n\trequestBody?: OpenApiBody;\n\tsecurity?: Record<string, string[]>[];\n}\ntype OpenApiPath = {parameters?: OpenApiParam[]} & Partial<Record<'get'|'post'|'put'|'delete'|'patch', OpenApiOperation>>;\ninterface SecurityScheme {type?: string; scheme?: string; name?: string; in?: string}\nexport interface OpenApiDocument {\n\topenapi?: string;\n\tswagger?: string;\n\tinfo?: {title?: string};\n\tservers?: {url?: string}[];\n\thost?: string;\n\tbasePath?: string;\n\tschemes?: string[];\n\tpaths?: Record<string, OpenApiPath>;\n\tcomponents?: {securitySchemes?: Record<string, SecurityScheme>; schemas?: Record<string, OpenApiSchema>; parameters?: Record<string, OpenApiParam>; requestBodies?: Record<string, OpenApiBody>};\n\tdefinitions?: Record<string, OpenApiSchema>;\n\tsecurityDefinitions?: Record<string, SecurityScheme>;\n\tsecurity?: Record<string, string[]>[];\n}\nconst OPENAPI_METHODS = ['get', 'post', 'put', 'delete', 'patch'] as const;\n\n/** The object a local `#/...` reference names, one hop. */\nfunction refTarget(ref: string, doc: OpenApiDocument): object {\n\tif (!ref.startsWith('#/')) throw Error('Only acyclic local OpenAPI references are supported');\n\tlet target: unknown = doc;\n\tfor (const key of ref.slice(2).split('/').map(x=>x.replace(/~1/g,'/').replace(/~0/g,'~'))) {\n\t\tif (!target || typeof target !== 'object' || !Object.hasOwn(target,key)) throw Error(`Unresolved OpenAPI reference ${ref}`);\n\t\ttarget = (target as Record<string,unknown>)[key];\n\t}\n\tif (!target || typeof target !== 'object' || Array.isArray(target)) throw Error('OpenAPI reference must resolve to an object');\n\treturn target;\n}\n\nfunction dereference<T extends {$ref?: string}>(value: T, doc: OpenApiDocument, seen = new Set<string>()): T {\n\tif (!value.$ref) return value;\n\tif (seen.has(value.$ref)) throw Error('Only acyclic local OpenAPI references are supported');\n\tseen.add(value.$ref);\n\treturn dereference(refTarget(value.$ref, doc) as T, doc, seen);\n}\n\n/** Keywords that only narrow which values are valid: a bound, a length, a\n * pattern, a format. A tool parameter has no field for them, so they go into\n * its description for the model, and the API enforces them, as it does for\n * every other caller.\n *\n * THEY USED TO SKIP THE WHOLE OPERATION, even on an optional parameter, on the\n * theory that a tool which cannot enforce a rule must not exist. Real documents\n * put these on almost every field: a generated document with 188 operations\n * drafted 77 tools. The rule was never the tool's to enforce; the API already\n * does, and its 400 tells the model what to fix. */\nconst RULE_KEYWORDS = [\n\t'minimum', 'exclusiveMinimum', 'maximum', 'exclusiveMaximum', 'multipleOf', 'minLength', 'maxLength',\n\t'pattern', 'format', 'minItems', 'maxItems', 'uniqueItems', 'minProperties', 'maxProperties',\n] as const;\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'integer', 'boolean']);\nconst PARAM_TYPES = new Set([...PRIMITIVE_TYPES, 'object', 'array']);\nconst TYPE_PHRASE: Record<string, string> = {\n\tstring: 'a string', number: 'a number', integer: 'an integer', boolean: 'true or false', object: 'an object', array: 'a list',\n};\n\nconst refName = (ref: string): string => ref.slice(ref.lastIndexOf('/') + 1);\n\n/** Sentences joined into one description. A lone part gains no full stop. */\nfunction sentences(...parts: (string | undefined)[]): string | undefined {\n\tconst kept = parts.map(p => p?.trim()).filter((p): p is string => !!p);\n\tif (kept.length <= 1) return kept[0];\n\treturn kept.map(p => /[.!?]$/.test(p) ? p : `${p}.`).join(' ');\n}\n\n/** The type a resolved schema declares, or the one its other keywords imply. */\nfunction typeOf(s: OpenApiSchema): string | undefined {\n\tif (typeof s.type === 'string') return s.type;\n\tif (s.properties !== undefined || s.additionalProperties !== undefined) return 'object';\n\tif (s.items !== undefined) return 'array';\n\tconst values = s.enum?.filter(v => v !== null) ?? [];\n\tif (values.length && values.every(v => typeof v === 'string')) return 'string';\n\tif (values.length && values.every(v => typeof v === 'boolean')) return 'boolean';\n\tif (values.length && values.every(v => typeof v === 'number')) return values.every(Number.isInteger) ? 'integer' : 'number';\n\treturn undefined;\n}\n\n/** The rules a schema carries, in words: \"at least 1\", \"3 to 64 characters\". */\nfunction ruleText(s: OpenApiSchema, type: string | undefined): string[] {\n\tconst n = (key: string): number | undefined => typeof s[key] === 'number' && Number.isFinite(s[key]) ? s[key] as number : undefined;\n\tconst span = (min: number | undefined, max: number | undefined, unit: string): string | undefined => {\n\t\tconst of = (x: number) => `${x} ${unit}${x === 1 ? '' : 's'}`;\n\t\tif (min !== undefined && max !== undefined) return min === max ? `exactly ${of(min)}` : `${min} to ${of(max)}`;\n\t\tif (min !== undefined) return `at least ${of(min)}`;\n\t\treturn max !== undefined ? `at most ${of(max)}` : undefined;\n\t};\n\tconst extra = s.additionalProperties;\n\tconst value = extra && typeof extra === 'object'\n\t\t? (typeof extra.type === 'string' ? TYPE_PHRASE[extra.type] : typeof extra.$ref === 'string' ? refName(extra.$ref) : undefined)\n\t\t: undefined;\n\treturn [\n\t\t// 3.0 writes `exclusiveMinimum: true` beside `minimum`; 3.1 makes it the bound.\n\t\tn('minimum') !== undefined ? `${s.exclusiveMinimum === true ? 'more than' : 'at least'} ${n('minimum')}` : undefined,\n\t\tn('exclusiveMinimum') !== undefined ? `more than ${n('exclusiveMinimum')}` : undefined,\n\t\tn('maximum') !== undefined ? `${s.exclusiveMaximum === true ? 'less than' : 'at most'} ${n('maximum')}` : undefined,\n\t\tn('exclusiveMaximum') !== undefined ? `less than ${n('exclusiveMaximum')}` : undefined,\n\t\tn('multipleOf') !== undefined ? `a multiple of ${n('multipleOf')}` : undefined,\n\t\tspan(n('minLength'), n('maxLength'), 'character'),\n\t\ttypeof s.pattern === 'string' ? `pattern \\`${s.pattern}\\`` : undefined,\n\t\t// int32, int64 and double say how a number is stored, not what to send.\n\t\ttypeof s.format === 'string' && type === 'string' ? `format ${s.format}` : undefined,\n\t\tspan(n('minItems'), n('maxItems'), 'item'),\n\t\ts.uniqueItems === true ? 'no duplicate items' : undefined,\n\t\tspan(n('minProperties'), n('maxProperties'), 'field'),\n\t\textra && typeof extra === 'object' ? `any keys${value ? `, each value ${value}` : ''}` : undefined,\n\t].filter((rule): rule is string => rule !== undefined);\n}\n\n/** What converting one operation's schemas needs: the document, and somewhere to\n * note a shape the tool had to narrow, for the developer to review. */\ninterface SchemaContext {doc: OpenApiDocument; notes: Set<string>}\n\n/** One flat schema, every reference, composition and alternative folded in.\n * Rules stay on it as keywords, for `ruleText` to put into words; nested\n * properties and items are left for their own turn.\n *\n * `nesting` counts references and compositions, separately from how deep the\n * parameter itself goes: the API allows 12 levels of fields, and a document\n * that reaches each level through a $ref and an allOf should not spend three. */\nfunction resolveOpenApiSchema(raw: OpenApiSchema, ctx: SchemaContext, where: string, nesting = 0): OpenApiSchema {\n\tif (nesting > 32) throw Error('OpenAPI schema is recursive or nests references more than 32 deep');\n\tif (typeof raw.$ref === 'string') {\n\t\tconst { $ref, ...siblings } = raw;\n\t\tconst target = refTarget($ref, ctx.doc) as OpenApiSchema;\n\t\t// Keywords beside a $ref apply together with what it names (OpenAPI 3.1),\n\t\t// which is also what a 3.0 author writing a description or a rule there means.\n\t\tconst next = Object.keys(siblings).length ? { ...siblings, allOf: [target, ...(siblings.allOf ?? [])] } : target;\n\t\treturn resolveOpenApiSchema(next, ctx, where, nesting + 1);\n\t}\n\tconst { allOf, oneOf, anyOf, ...own } = raw;\n\tif (allOf && !allOf.length) throw Error('An allOf schema needs at least one member');\n\tconst parts = (allOf ?? []).map(part => resolveOpenApiSchema(part, ctx, where, nesting + 1));\n\tconst said: string[] = [];\n\tconst join = (alternatives: OpenApiSchema[]) => {\n\t\tconst joined = joinAlternatives(alternatives, ctx, where, nesting + 1);\n\t\tparts.push(joined.schema);\n\t\tif (joined.text) said.push(joined.text);\n\t};\n\tif (Array.isArray(own.type)) {\n\t\t// `type: [a, b]` is anyOf by another name, and \"null\" in it is nullable.\n\t\tconst types = own.type.filter(t => t !== 'null');\n\t\tif (own.type.includes('null')) own.nullable = true;\n\t\tif (types.length === 1) own.type = types[0]!;\n\t\telse if (types.length) {\n\t\t\tdelete own.type;\n\t\t\tjoin(types.map(type => ({ type })));\n\t\t} else own.type = 'null';\n\t}\n\tif (oneOf !== undefined) join(oneOf);\n\tif (anyOf !== undefined) join(anyOf);\n\tconst merged = intersect(parts, own);\n\tconst description = sentences(merged.description, ...said);\n\treturn description === undefined ? merged : { ...merged, description };\n}\n\n/** allOf: every part applies at once. Properties and required fields add up,\n * types and enums must agree, and rules ride along to be described. A genuine\n * contradiction, a value that has to be both a string and a number, is an error\n * rather than a guess. Parts are flat; their properties and items are not yet. */\nfunction intersect(parts: OpenApiSchema[], own: OpenApiSchema): OpenApiSchema {\n\tconst all = [...parts, own];\n\tif (all.some(part => part.prefixItems !== undefined)) throw Error('Tuple arrays (prefixItems) are not supported');\n\t// Annotations and rules: the outer schema's own word, else the first part's.\n\tconst first = (key: string) => [own, ...parts].map(part => part[key]).find(value => value !== undefined);\n\tconst types = [...new Set(all.map(part => part.type).filter((t): t is string => typeof t === 'string'))];\n\tconst numeric = types.length === 2 && types.includes('integer') && types.includes('number');\n\tif (types.length > 1 && !numeric) throw Error(`allOf members disagree on the type (${types.join(' and ')})`);\n\tconst enums = all.map(part => part.const !== undefined ? [part.const] : part.enum).filter(e => e !== undefined);\n\tconst values = enums.length ? enums.reduce((kept, e) => kept.filter(v => e.includes(v))) : undefined;\n\tif (values && !values.length) throw Error('allOf members leave no allowed value');\n\tconst properties: Record<string, OpenApiSchema> = {};\n\tfor (const part of all) {\n\t\tfor (const [key, property] of Object.entries(part.properties ?? {})) {\n\t\t\tconst before = Object.hasOwn(properties, key) ? properties[key] : undefined;\n\t\t\t// The same field from two parts must satisfy both, so its rules add up too.\n\t\t\tconst value = before === undefined || JSON.stringify(before) === JSON.stringify(property) ? property : { allOf: [before, property] };\n\t\t\tObject.defineProperty(properties, key, { value, enumerable: true, configurable: true, writable: true });\n\t\t}\n\t}\n\tconst extras = all.map(part => part.additionalProperties).filter(extra => extra !== undefined);\n\t// Keys that match patternProperties are allowed even on a closed object.\n\tconst closed = extras.includes(false) && !all.some(part => part.patternProperties !== undefined);\n\tif (closed && all.some(part => part.additionalProperties === false && Object.keys(properties).some(key => !Object.hasOwn(part.properties ?? {}, key)))) {\n\t\tthrow Error('Extending a closed object with allOf is not supported');\n\t}\n\tconst items = all.map(part => part.items).filter((item): item is OpenApiSchema => item !== undefined);\n\tconst required = [...new Set(all.flatMap(part => part.required ?? []))];\n\tconst annotations = Object.fromEntries(['title', 'description', ...RULE_KEYWORDS]\n\t\t.map(key => [key, first(key)] as const).filter(([, value]) => value !== undefined));\n\treturn {\n\t\t...annotations,\n\t\t...(types.length && { type: numeric ? 'integer' : types[0] }),\n\t\t...(all.some(part => part.nullable === true) && { nullable: true }),\n\t\t...(values && { enum: values }),\n\t\t...(all.some(part => part.properties !== undefined) && { properties }),\n\t\t...(required.length && { required }),\n\t\t...(items.length && { items: items.length === 1 ? items[0] : { allOf: items } }),\n\t\t...(extras.length && { additionalProperties: closed ? false : extras.find(extra => typeof extra === 'object') ?? true }),\n\t\t// A read-only member still makes the composed property response-only.\n\t\t...(all.some(part => part.readOnly === true) && { readOnly: true }),\n\t};\n}\n\n/** oneOf / anyOf: one shape that admits every alternative, as closely as a tool\n * parameter can say it, plus the alternatives in words for the model. The API\n * then refuses a value that fits none of them, as it would from any caller. */\nfunction joinAlternatives(\n\traw: OpenApiSchema[], ctx: SchemaContext, where: string, nesting: number,\n): {schema: OpenApiSchema; text?: string} {\n\tif (!raw.length) throw Error('oneOf and anyOf need at least one alternative');\n\tconst resolved = raw.map(alternative => resolveOpenApiSchema(alternative, ctx, where, nesting));\n\tconst onlyNull = (s: OpenApiSchema) => s.type === 'null' || (!!s.enum?.length && s.enum.every(v => v === null));\n\tconst options = resolved.flatMap((schema, i) => onlyNull(schema) ? [] : [{ schema, raw: raw[i]! }]);\n\tif (!options.length) throw Error('An alternative list that allows only null is not supported');\n\tconst nullable = options.length < resolved.length || options.some(option => option.schema.nullable === true);\n\tconst withNull = (schema: OpenApiSchema): OpenApiSchema => nullable ? { ...schema, nullable: true } : schema;\n\t// \"X or null\" is how most generators write an optional field.\n\tif (options.length === 1) return { schema: withNull(options[0]!.schema) };\n\n\tconst labels = options.map(option => alternativeLabel(option.raw, option.schema));\n\tconst types = [...new Set(options.map(option => typeOf(option.schema)).filter((t): t is string => t !== undefined))];\n\tconst type = types.length <= 1 ? types[0]\n\t\t: types.every(t => t === 'number' || t === 'integer') ? 'number'\n\t\t// A string takes what any of these primitives would say, and on a query or\n\t\t// path it is exactly what goes on the wire.\n\t\t: types.includes('string') && types.every(t => PRIMITIVE_TYPES.has(t)) ? 'string'\n\t\t: undefined;\n\tif (types.length > 1 && type === undefined) {\n\t\t// No one parameter takes both an object and a list. Every alternative is\n\t\t// valid by the document's own account, so the first one is kept.\n\t\tctx.notes.add(\n\t\t\t`\"${where}\" accepts ${[...new Set(labels)].join(' or ')}. A tool parameter takes one shape, so it ` +\n\t\t\t`sends ${labels[0]}; edit the tool if the agent needs another.`,\n\t\t);\n\t\treturn { schema: withNull(options[0]!.schema) };\n\t}\n\tconst all = options.map(option => option.schema);\n\tconst shared = new Map<string, OpenApiSchema[]>();\n\tfor (const schema of all) {\n\t\tfor (const [key, property] of Object.entries(schema.properties ?? {})) {\n\t\t\tconst seen = shared.get(key) ?? [];\n\t\t\tif (!seen.some(s => JSON.stringify(s) === JSON.stringify(property))) seen.push(property);\n\t\t\tshared.set(key, seen);\n\t\t}\n\t}\n\tconst properties: Record<string, OpenApiSchema> = {};\n\tfor (const [key, schemas] of shared) {\n\t\t// A field several alternatives name may take any of their shapes.\n\t\tObject.defineProperty(properties, key, { value: schemas.length === 1 ? schemas[0] : { anyOf: schemas }, enumerable: true, configurable: true, writable: true });\n\t}\n\tconst required = all.map(schema => schema.required ?? []).reduce((kept, r) => kept.filter(key => r.includes(key)));\n\t// Choices only when every alternative lists them, and only in one type.\n\tconst values = all.every(schema => schema.enum) && (types.length <= 1 || type === 'number')\n\t\t? [...new Set(all.flatMap(schema => schema.enum!))] : undefined;\n\tconst items = all.map(schema => schema.items).filter((item): item is OpenApiSchema => item !== undefined);\n\tconst named = options.some(option => option.raw.$ref !== undefined || option.schema.title !== undefined);\n\tconst said = new Set(labels).size > 1 && !(values && !named);\n\treturn {\n\t\tschema: withNull({\n\t\t\t...(type && { type }),\n\t\t\t...(shared.size && { properties }),\n\t\t\t...(required.length && { required }),\n\t\t\t...(values && { enum: values }),\n\t\t\t...(items.length && { items: items.length === 1 ? items[0] : { anyOf: items } }),\n\t\t\t...(all.every(schema => schema.additionalProperties === false) && { additionalProperties: false }),\n\t\t}),\n\t\t...(said && { text: `One of: ${labels.join('; ')}.` }),\n\t};\n}\n\n/** One alternative in a few words: its name, then its fields or its rules. */\nfunction alternativeLabel(raw: OpenApiSchema, s: OpenApiSchema): string {\n\tconst name = typeof raw.$ref === 'string' ? refName(raw.$ref) : typeof s.title === 'string' ? s.title : undefined;\n\tconst type = typeOf(s);\n\tconst fields = s.required?.length ? s.required : Object.keys(s.properties ?? {});\n\tconst shown = `with ${[...fields.slice(0, 8), ...(fields.length > 8 ? ['…'] : [])].join(', ')}`;\n\t// A fragment that only says which fields are required reads as \"with email\".\n\tconst detail = type === 'object' || (type === undefined && fields.length)\n\t\t? (!fields.length ? TYPE_PHRASE.object! : name || type === undefined ? shown : `${TYPE_PHRASE.object} ${shown}`)\n\t\t: [\n\t\t\ts.enum?.length === 1 ? JSON.stringify(s.enum[0]) : s.enum ? `one of ${s.enum.map(v => JSON.stringify(v)).join(', ')}` : TYPE_PHRASE[type ?? ''],\n\t\t\t...ruleText(s, type),\n\t\t].filter(Boolean).join(', ');\n\treturn name && detail ? `${name} (${detail})` : name ?? (detail || 'any value');\n}\n\n/** Swagger 2 writes a non-body parameter's schema on the parameter itself. */\nfunction swaggerParamSchema(p: OpenApiParam): OpenApiSchema {\n\tconst schema: OpenApiSchema = { type: p.type ?? 'string' };\n\tfor (const key of ['enum', 'items', ...RULE_KEYWORDS]) if (p[key] !== undefined) schema[key] = p[key];\n\treturn schema;\n}\n\n/** A tool parameter from a schema. What a parameter cannot carry, a rule or a\n * choice between shapes, is put into its description; a shape no parameter can\n * take at all (a tuple, a recursive tree) still skips the operation, with a\n * warning, rather than drafting a call that cannot be made. */\nfunction openApiParam(raw: OpenApiSchema, ctx: SchemaContext, depth = 0, where = 'body'): HttpToolParam {\n\tif (depth > 12) throw Error('OpenAPI schema is recursive or exceeds 12 levels');\n\tconst s = resolveOpenApiSchema(raw, ctx, where);\n\tconst t = typeOf(s);\n\tif (t === undefined || !PARAM_TYPES.has(t)) throw Error('JSON schema must declare one supported type (optionally nullable)');\n\tconst type = (t === 'integer' ? 'number' : t) as HttpToolParam['type'];\n\t// Choices the API would refuse, a value of another type, are described instead.\n\tconst fits = (v: unknown) => v === null || (t === 'integer' ? Number.isInteger(v) : typeof v === type);\n\tconst choices = s.enum?.length && PRIMITIVE_TYPES.has(t) && s.enum.every(fits) ? s.enum : undefined;\n\tconst rules = ruleText(s, t);\n\tif (s.enum?.length && !choices) rules.push(`one of ${s.enum.map(v => JSON.stringify(v)).join(', ')}`);\n\tconst description = sentences(s.description, rules.length ? `Rules: ${rules.join('; ')}.` : undefined);\n\tconst nullable = s.nullable === true || (choices?.includes(null) ?? false);\n\tconst param: HttpToolParam = {type, ...(t === 'integer' && {integer:true}), ...(description && {description}), ...(choices && {choices}), ...(nullable && {nullable:true})};\n\tif (t === 'object') {\n\t\tif (Object.hasOwn(s.properties ?? {}, '__proto__')) throw Error('Object property __proto__ is not supported');\n\t\t// A map (`additionalProperties` holding a schema) takes any key; its rule is described.\n\t\tif (s.additionalProperties !== undefined) param.additionalProperties = s.additionalProperties !== false;\n\t\tparam.properties = Object.fromEntries(Object.entries(s.properties ?? {})\n\t\t\t.filter(([, value]) => value.readOnly !== true)\n\t\t\t.map(([key, value]) => [key, resolveOpenApiSchema(value, ctx, `${where}.${key}`)] as const)\n\t\t\t.filter(([, value]) => value.readOnly !== true)\n\t\t\t.map(([key, value]) => [key, {...openApiParam(value,ctx,depth+1,`${where}.${key}`),...(s.required?.includes(key) && {required:true})}]));\n\t\tfor (const key of s.required ?? []) if (!Object.hasOwn(s.properties ?? {},key)) throw Error(`Required property ${key} has no schema`);\n\t}\n\tif (t === 'array') {\n\t\tif (!s.items) throw Error('Array schema needs items');\n\t\tparam.items = openApiParam(s.items,ctx,depth+1,`${where}[]`);\n\t}\n\treturn param;\n}\n\n/** Headers are case-insensitive, while query parameter names are not. */\nfunction securityDestination(scheme: SecurityScheme): string {\n\tif (scheme.type === 'apiKey' && scheme.in === 'query') return `query:${scheme.name}`;\n\treturn `header:${(scheme.type === 'apiKey' ? scheme.name! : 'Authorization').toLowerCase()}`;\n}\n\nfunction supportedSecurityScheme(scheme: SecurityScheme | undefined): boolean {\n\treturn !!scheme && (scheme.type === 'basic' ||\n\t\t(scheme.type === 'http' && ['bearer','basic'].includes(scheme.scheme ?? '')) ||\n\t\t(scheme.type === 'apiKey' && ['header','query'].includes(scheme.in ?? '') && !!scheme.name));\n}\n\nfunction selectSecurity(\n\tsecurity: Record<string, string[]>[], schemes: Record<string, SecurityScheme>, options: ImportOptions,\n\tparameters: Iterable<OpenApiParam>,\n): number {\n\tconst headerCredentials = new Set<string>();\n\tfor (const p of parameters) {\n\t\tif (p.in === 'header' && p.name && CREDENTIAL_HEADERS.has(p.name.toLowerCase())) {\n\t\t\theaderCredentials.add(`header:${p.name.toLowerCase()}`);\n\t\t}\n\t}\n\tlet reason = 'No supported security alternative; cookie auth, OAuth acquisition and refresh require explicit configuration';\n\t// Public operations can still declare credential headers as parameters.\n\tfor (const [index, requirement] of (security.length ? security : [{}]).entries()) {\n\t\tconst keys = Object.keys(requirement);\n\t\tif (!keys.every(key => supportedSecurityScheme(schemes[key]))) continue;\n\t\tif (keys.length > 1 && options.secretName) {\n\t\t\treason = 'One secretName cannot represent an AND requirement with multiple credentials';\n\t\t\tcontinue;\n\t\t}\n\t\tconst destinations = keys.map(key => securityDestination(schemes[key]!));\n\t\tif (new Set(destinations).size !== destinations.length) {\n\t\t\treason = 'Security requirements conflict on the same header or query parameter';\n\t\t\tcontinue;\n\t\t}\n\t\t// Check parameter credentials against each alternative before selecting it.\n\t\tif (options.secretName && new Set([...headerCredentials, ...destinations]).size > 1) {\n\t\t\treason = 'One secretName cannot represent multiple credentials in one operation';\n\t\t\tcontinue;\n\t\t}\n\t\treturn security.length ? index : -1;\n\t}\n\tthrow Error(reason);\n}\n\n/** A document can give different schemes names that normalize identically.\n * Allocate per identity and reserve suffix space before truncating. */\nfunction openApiSecretNames(schemes: Record<string, SecurityScheme>, options: ImportOptions) {\n\tconst names = new Map<string, string>();\n\tconst used = new Set<string>();\n\tconst allocate = (identity: string, wanted: string): string => {\n\t\tconst existing = names.get(identity);\n\t\tif (existing) return existing;\n\t\tconst normalized = normalizeSecretName(options.secretName || wanted);\n\t\tlet name = normalized;\n\t\tif (!options.secretName) {\n\t\t\tfor (let index = 2; used.has(name); index++) {\n\t\t\t\tconst suffix = `_${index}`;\n\t\t\t\tname = normalized.slice(0, 64 - suffix.length) + suffix;\n\t\t\t}\n\t\t}\n\t\tnames.set(identity, name);\n\t\tused.add(name);\n\t\treturn name;\n\t};\n\tconst defaults = Object.entries(schemes).filter(([, scheme]) => supportedSecurityScheme(scheme))\n\t\t.map(([key, scheme]) => [key, secretNameFor(scheme.type === 'apiKey' ? scheme.name! : 'Authorization', {})] as const);\n\tfor (const [key, wanted] of defaults) {\n\t\tallocate(`scheme:${key}`, defaults.filter(([, name]) => name === wanted).length > 1 ? key : wanted);\n\t}\n\treturn allocate;\n}\n\n/** The security for an operation the document says nothing about, when it\n * defines a scheme and no `security` array anywhere names one.\n *\n * REAL DOCUMENTS DO THIS ALL THE TIME: the scheme is declared under components\n * and the `security` array is never written. Read literally, every operation is\n * then public, which is how drafted tools came out with no credential and failed\n * every call with a 401 nobody had been warned about. One scheme is unambiguous,\n * so it applies, and the developer is told. With several, choosing would be a\n * guess, so none applies and the warning says so. An operation that writes\n * `security: []` stays public: that was said on purpose. */\nfunction unlistedSecurity(doc: OpenApiDocument, schemes: Record<string, SecurityScheme>, draft: Draft): Record<string, string[]>[] {\n\tconst names = Object.keys(schemes);\n\tconst operations = Object.values(doc.paths ?? {}).flatMap(item => OPENAPI_METHODS.flatMap(method => item?.[method] ?? []));\n\tconst named = [doc.security, ...operations.map(op => op.security)].some(list =>\n\t\tArray.isArray(list) && list.some(requirement => !!requirement && Object.keys(requirement).length > 0));\n\t// Only an operation the document says nothing about takes the default.\n\tconst silent = doc.security === undefined && operations.some(op => op.security === undefined);\n\tif (!names.length || named || !silent) return [];\n\tconst only = names.length === 1 ? names[0]! : undefined;\n\tif (only !== undefined && supportedSecurityScheme(schemes[only])) {\n\t\tdraft.warnings.push({kind:'security-choice',message:\n\t\t\t`The document defines one security scheme, \"${only}\", and no operation lists it under \"security\", ` +\n\t\t\t`so every tool whose operation does not set \"security\" sends it. Remove it from any tool that calls ` +\n\t\t\t`a public endpoint.`});\n\t\treturn [{[only]: []}];\n\t}\n\tdraft.warnings.push({kind:'security-choice',message: only !== undefined\n\t\t? `The document defines the security scheme \"${only}\" (${schemes[only]?.type ?? 'no type'}), which the import cannot set up, ` +\n\t\t\t`and no operation lists it, so the tools send no credential. Add the header the API expects to each tool.`\n\t\t: `The document defines ${names.length} security schemes (${names.map(n => `\"${n}\"`).join(', ')}) and no operation lists one ` +\n\t\t\t`under \"security\", so the tools send no credential. List the one the API uses under \"security\" and import again, ` +\n\t\t\t`or add the header to each tool.`});\n\treturn [];\n}\n\n/** Draft supported OpenAPI/Swagger requests; authentication follows each\n * operation's security requirement, including AND, alternatives and security:[]. */\nexport function fromOpenApi(doc: OpenApiDocument, options: ImportOptions = {}): ImportedTools {\n\tconst draft = new Draft();\n\tconst base = doc.servers?.[0]?.url ?? (doc.host ? `${doc.schemes?.[0] ?? 'https'}://${doc.host}${doc.basePath ?? ''}` : '');\n\tif (!base) draft.warnings.push({kind:'undefined-variable',message:'The document names no server. Set absolute HTTP(S) tool URLs before creating the agent.'});\n\tconst schemes = doc.components?.securitySchemes ?? doc.securityDefinitions ?? {};\n\tconst secretName = openApiSecretNames(schemes, options);\n\tconst unlisted = unlistedSecurity(doc, schemes, draft);\n\tfor (const [path,item] of Object.entries(doc.paths ?? {})) for (const method of OPENAPI_METHODS) {\n\t\tconst op = item[method]; if (!op) continue;\n\t\tconst candidate = toolNameFrom(op.operationId ?? `${method}_${path}`,'op');\n\t\tif (options.include && !options.include({name:candidate,method:method.toUpperCase(),url:base+path})) continue;\n\t\tconst name = draft.uniqueName(candidate);\n\t\ttry {\n\t\t\tconst ctx: SchemaContext = {doc, notes: new Set()};\n\t\t\tconst merged = new Map<string,OpenApiParam>();\n\t\t\tfor (const raw of [...(item.parameters ?? []),...(op.parameters ?? [])]) {\n\t\t\t\tconst p = dereference(raw,doc); merged.set(p.in+':'+p.name,p);\n\t\t\t}\n\t\t\tconst security = op.security ?? doc.security ?? unlisted;\n\t\t\tconst selected = selectSecurity(security, schemes, options, merged.values());\n\t\t\tconst keys = Object.keys(security[selected] ?? {});\n\t\t\tconst credentialDestinations = new Set(keys.map(key => securityDestination(schemes[key]!)));\n\t\t\tconst params: Record<string,HttpToolParam> = {}, headers: Record<string,string> = {}, query: string[] = [];\n\t\t\tlet url = (base+path).replace(/\\{([^}]+)\\}/g,(_match,p:string)=>`{{paramsEncoded.${draft.param(params,p,{type:'string',required:true},name,'path:'+p)}}}`);\n\t\t\tlet body: string | undefined;\n\t\t\tfor (const p of merged.values()) {\n\t\t\t\tif (!p.name) throw Error('Parameter has no name');\n\t\t\t\t// A declared auth parameter and a security scheme describe the same\n\t\t\t\t// wire credential. Emit it once, as a secret, never as model input.\n\t\t\t\tconst destination = `${p.in}:${p.in === 'header' ? p.name.toLowerCase() : p.name}`;\n\t\t\t\tif (credentialDestinations.has(destination)) continue;\n\t\t\t\tif (p.in === 'cookie') {\n\t\t\t\t\tif (p.required) throw Error('Required cookie parameters are not supported');\n\t\t\t\t\tdraft.warnings.push({kind:'unsupported-body',tool:name,message:`Optional cookie parameter \"${p.name}\" is not supported; it was omitted.`});continue;\n\t\t\t\t}\n\t\t\t\tif (!['path','query','header','body'].includes(p.in ?? '')) throw Error(`Unsupported parameter location ${p.in}`);\n\t\t\t\tconst schema = p.schema ?? swaggerParamSchema(p);\n\t\t\t\t// The parameter's own description leads, and the schema's rules follow it.\n\t\t\t\tconst def = openApiParam(p.description ? {...schema, description: p.description} : schema, ctx, 0, p.name);\n\t\t\t\tif (p.required || p.in === 'path') def.required = true;\n\t\t\t\tif (p.in !== 'body' && (['object','array'].includes(def.type) || (p.style && !['simple','form'].includes(p.style)))) throw Error('Structured parameter serialization is unsupported outside a JSON body');\n\t\t\t\tif (p.in === 'header' && CREDENTIAL_HEADERS.has(p.name.toLowerCase())) {\n\t\t\t\t\tconst secret = secretName(`header:${p.name.toLowerCase()}`, secretNameFor(p.name,{}));headers[p.name]=`{{secrets.${secret}}}`;draft.secret(secret,name,`header parameter ${p.name}`);continue;\n\t\t\t\t}\n\t\t\t\tconst param = draft.param(params,p.name,def,name,p.in+':'+p.name);\n\t\t\t\tif (p.in === 'query') query.push(`${encodeURIComponent(p.name)}={{paramsEncoded.${param}}}`);\n\t\t\t\tif (p.in === 'header') headers[p.name]=`{{params.${param}}}`;\n\t\t\t\tif (p.in === 'body') body=`{{paramsJson.${param}}}`;\n\t\t\t}\n\t\t\tif (op.requestBody && method !== 'get') {\n\t\t\t\tconst requestBody = dereference(op.requestBody,doc);\n\t\t\t\tconst media = Object.entries(requestBody.content ?? {}).find(([type])=>/(?:\\/json|\\+json)$/.test(type));\n\t\t\t\tif (!media?.[1].schema) throw Error('Only a JSON request body with a declared schema is supported');\n\t\t\t\tconst def = openApiParam(media[1].schema,ctx);\n\t\t\t\tif (requestBody.required) def.required = true;\n\t\t\t\tconst param = draft.param(params,'body',def,name,'requestBody');\n\t\t\t\tbody=`{{paramsJson.${param}}}`; headers['Content-Type']=media[0];\n\t\t\t}\n\t\t\tif (security.length > 1) draft.warnings.push({kind:'security-choice',tool:name,message:`Selected security alternative ${selected+1}; review the choice before creating the agent.`});\n\t\t\tfor (const key of keys) {\n\t\t\t\tconst scheme = schemes[key]!;\n\t\t\t\tconst header = scheme.type === 'apiKey' ? scheme.name! : 'Authorization';\n\t\t\t\tconst secret = secretName(`scheme:${key}`, header);\n\t\t\t\tif (scheme.type === 'apiKey' && scheme.in === 'query') query.push(`${encodeURIComponent(header)}={{secretsEncoded.${secret}}}`);\n\t\t\t\telse {\n\t\t\t\t\theaders[header]=scheme.type==='apiKey'?`{{secrets.${secret}}}`:`${scheme.type==='basic'||scheme.scheme==='basic'?'Basic':'Bearer'} {{secrets.${secret}}}`;\n\t\t\t\t}\n\t\t\t\tdraft.secret(secret,name,`securityScheme ${key}`);\n\t\t\t}\n\t\t\tif (query.length) url+='?'+query.join('&');\n\t\t\tdraft.tools.push({name,description:describe([op.description,op.summary],name,method.toUpperCase(),path,draft),method:method.toUpperCase() as HttpTool['method'],url,...(Object.keys(headers).length && {headers}),...(Object.keys(params).length && {params}),...(draft.secretsFor(name).length && {secrets:draft.secretsFor(name)}),...(body!==undefined && method!=='get' && {body})});\n\t\t\tfor (const note of ctx.notes) draft.warnings.push({kind:'unsupported-body',tool:name,message:note});\n\t\t} catch(error) {\n\t\t\tdraft.warnings.push({kind:'unsupported-operation',tool:name,message:`Skipped ${method.toUpperCase()} ${path}: ${(error as Error).message}. Configure this operation explicitly.`});\n\t\t}\n\t}\n\tconst result = draft.finish(options);\n\tconst emitted = new Set(result.tools.map(t=>t.name));\n\tresult.secrets = result.secrets.map(s=>({...s,usedBy:s.usedBy.filter(name=>emitted.has(name))})).filter(s=>s.usedBy.length>0);\n\treturn result;\n}\n\n/**\n * Fetch an OpenAPI document and draft tools from it.\n *\n * THE FETCH GOES TO YOUR SERVER, NOT OURS. Pass `headers` if the document itself\n * is behind auth. Nothing about the document is sent to AgentNava: the drafts\n * are built in this process and you decide what to do with them.\n */\nexport async function fromOpenApiUrl(\n\turl: string,\n\toptions: ImportOptions & { headers?: Record<string, string>; fetch?: typeof fetch } = {},\n): Promise<ImportedTools> {\n\tconst f = options.fetch ?? fetch;\n\tconst res = await f(url, { headers: options.headers ?? {} });\n\tif (!res.ok) {\n\t\tthrow new Error(`could not read the OpenAPI document at ${url}: ${res.status}`);\n\t}\n\treturn fromOpenApi((await res.json()) as OpenApiDocument, options);\n}\n\n// ------------------------------------------------------------------- curl\n\n/**\n * Draft one tool from a curl command.\n *\n * THE LOWEST BAR ON PURPOSE. A team with no collection and no document still has\n * a curl command that works, usually pasted in a chat thread, and that is enough\n * to start. Handles the flags people actually use: `-X`, `-H`, `-d`/`--data`,\n * `--data-raw`, `--url`, and a bare URL.\n *\n * Give it a `name` and a `description`: a curl command carries neither, and the\n * description is the field that decides whether the agent picks this tool.\n */\nexport function fromCurl(\n\tcommand: string,\n\toptions: ImportOptions & { name?: string; description?: string } = {},\n): ImportedTools {\n\tconst draft = new Draft();\n\t// Join line continuations, then split on whitespace outside quotes.\n\tconst flat = command.replace(/\\\\\\r?\\n/g, ' ').trim();\n\tconst tokens = flat.match(/\"[^\"]*\"|'[^']*'|\\S+/g) ?? [];\n\tconst unquote = (s: string): string =>\n\t\t(s.startsWith('\"') && s.endsWith('\"')) || (s.startsWith(\"'\") && s.endsWith(\"'\"))\n\t\t\t? s.slice(1, -1)\n\t\t\t: s;\n\n\tlet method = '';\n\tlet url = '';\n\tlet body: string | undefined;\n\tconst headerPairs: Record<string, string> = {};\n\n\tfor (let i = 0; i < tokens.length; i++) {\n\t\tconst t = tokens[i] as string;\n\t\tif (t === 'curl') continue;\n\t\tif (t === '-X' || t === '--request') {\n\t\t\tmethod = unquote(tokens[++i] ?? 'GET').toUpperCase();\n\t\t} else if (t === '-H' || t === '--header') {\n\t\t\tconst raw = unquote(tokens[++i] ?? '');\n\t\t\tconst at = raw.indexOf(':');\n\t\t\tif (at > 0) headerPairs[raw.slice(0, at).trim()] = raw.slice(at + 1).trim();\n\t\t} else if (t === '-d' || t === '--data' || t === '--data-raw' || t === '--data-binary') {\n\t\t\tbody = unquote(tokens[++i] ?? '');\n\t\t} else if (t === '-u' || t === '--user') {\n\t\t\t// `-u user:pass` IS a credential, and it used to vanish without a trace:\n\t\t\t// `-u` matched no branch, and `user:pass` matched neither `^-` nor a\n\t\t\t// url, so both tokens were skipped in silence. Routed through the\n\t\t\t// Authorization header so safeHeaders strips it like any other, which\n\t\t\t// also produces the credential-stripped warning.\n\t\t\theaderPairs.Authorization = `Basic ${unquote(tokens[++i] ?? '')}`;\n\t\t} else if (t === '-b' || t === '--cookie') {\n\t\t\theaderPairs.Cookie = unquote(tokens[++i] ?? '');\n\t\t} else if (t === '--url') {\n\t\t\turl = unquote(tokens[++i] ?? '');\n\t\t} else if (!t.startsWith('-') && /^https?:\\/\\//.test(unquote(t))) {\n\t\t\turl = unquote(t);\n\t\t}\n\t}\n\n\tif (!url) throw new Error('no URL found in that curl command');\n\t// curl's own default: a body implies POST unless -X said otherwise.\n\tif (!method) method = body !== undefined ? 'POST' : 'GET';\n\n\tconst name = draft.uniqueName(toolNameFrom(options.name ?? `${method} ${url}`));\n\tconst headers = safeHeaders(headerPairs, name, draft, options, 'curl');\n\n\tdraft.tools.push({\n\t\tname,\n\t\tdescription: describe([options.description], name, method, url, draft),\n\t\tmethod: (['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(method)\n\t\t\t? method\n\t\t\t: 'GET') as HttpTool['method'],\n\t\turl,\n\t\t...(Object.keys(headers).length > 0 && { headers }),\n\t\t...(draft.secretsFor(name).length > 0 && { secrets: draft.secretsFor(name) }),\n\t\t...(body !== undefined && method !== 'GET' && { body }),\n\t});\n\n\treturn draft.finish(options);\n}\n\n// ------------------------------------------------------------------ entry\n\n/** Where a draft comes from. Exactly one key. */\nexport type ImportSource =\n\t/** An OpenAPI 3 or Swagger 2 document you already have in memory. */\n\t| { openapi: OpenApiDocument }\n\t/** A URL serving one. FastAPI publishes `/openapi.json` for free. The fetch\n\t * goes to YOUR server; nothing is sent to AgentNava. */\n\t| { openapiUrl: string; headers?: Record<string, string>; fetch?: typeof fetch }\n\t/** A Postman collection export, v2.0 or v2.1. */\n\t| { postman: PostmanCollection }\n\t/** One working curl command. */\n\t| { curl: string; name?: string; description?: string };\n\n/**\n * Draft tools from whatever a company already has.\n *\n * NO SOURCE IS THE PRIMARY ONE, and that is deliberate. Which artifact a team\n * can hand you is an accident of what they already keep, not a statement about\n * how good their API is:\n *\n * OpenAPI the actual standard, and what every API gateway publishes\n * (Apigee, MuleSoft, Kong, Azure APIM). Gives real parameter\n * TYPES, required flags and enums. Often auto-generated, which\n * means the descriptions are frequently empty.\n * Postman the most widely used API client there is, and for many teams the\n * only artifact anybody maintains. No parameter types, but it holds\n * the requests somebody has actually RUN: the header names that\n * really work and real example bodies.\n * curl the lowest bar. A team with neither of the above still has a\n * command that works, usually pasted in a chat thread.\n *\n * They all produce the same reviewable shape, because the useful step is not the\n * parsing. It is what comes after: choosing which operations an agent should\n * have and writing what each one is for.\n *\n * ```ts\n * const draft = await importTools({ openapiUrl: 'https://api.acme.com/openapi.json' });\n * const draft = importTools({ postman: collection });\n * const draft = importTools({ curl: 'curl -X POST https://api.acme.com/refunds -d ...' });\n * ```\n */\nexport function importTools(\n\tsource: Exclude<ImportSource, { openapiUrl: string }>,\n\toptions?: ImportOptions,\n): ImportedTools;\nexport function importTools(\n\tsource: Extract<ImportSource, { openapiUrl: string }>,\n\toptions?: ImportOptions,\n): Promise<ImportedTools>;\nexport function importTools(\n\tsource: ImportSource,\n\toptions: ImportOptions = {},\n): ImportedTools | Promise<ImportedTools> {\n\tif ('openapi' in source) return fromOpenApi(source.openapi, options);\n\tif ('postman' in source) return fromPostman(source.postman, options);\n\tif ('curl' in source) {\n\t\treturn fromCurl(source.curl, {\n\t\t\t...options,\n\t\t\t...(source.name !== undefined && { name: source.name }),\n\t\t\t...(source.description !== undefined && { description: source.description }),\n\t\t});\n\t}\n\tif ('openapiUrl' in source) {\n\t\treturn fromOpenApiUrl(source.openapiUrl, {\n\t\t\t...options,\n\t\t\t...(source.headers !== undefined && { headers: source.headers }),\n\t\t\t...(source.fetch !== undefined && { fetch: source.fetch }),\n\t\t});\n\t}\n\t// Named, not \"invalid source\": a caller who passed the wrong key wants to\n\t// know which keys exist.\n\tthrow new Error(\n\t\t'importTools needs one of: { openapi }, { openapiUrl }, { postman }, { curl }',\n\t);\n}\n"]}
1
+ {"version":3,"file":"import-tools.js","sourceRoot":"","sources":["../src/import-tools.ts"],"names":[],"mappings":"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","sourcesContent":["// Turn an API you already describe somewhere into tools an agent can call.\n//\n// WHAT THIS IS FOR. A company adopting AgentNava has APIs already, and their\n// team already keeps a Postman collection, an OpenAPI document, or a handful of\n// curl commands that work. Asking them to hand-write a tool declaration per\n// endpoint is asking for a week of somebody's time, and asking them to produce\n// an artifact they do not already have is worse: it is a reason to stall.\n//\n// So this takes whichever of those three they have and gives back draft\n// `httpTools`. Self-serve, in the SDK, no support ticket.\n//\n// IT RUNS ENTIRELY ON YOUR MACHINE. Nothing here makes a network request except\n// `fromOpenApi` when you hand it a URL instead of a document, and that fetch\n// goes to YOUR server, not ours. That is a deliberate security property rather\n// than an implementation convenience: a Postman export routinely contains a live\n// token, and a collection you never upload is a token we can never receive.\n//\n// WHAT IT DOES NOT DO, and this is the honest part:\n//\n// IT CANNOT WRITE THE DESCRIPTIONS. A tool's `description` is what the model\n// reads to decide \"this is the tool for this job\", and none of these three\n// formats contains that. Their summaries are written for a developer reading\n// documentation, not for a model choosing between forty tools. \"Fetch one\n// order by its number, before deciding a refund\" is what works; \"Orders\n// endpoint\" is not. Where the source has nothing useful, the tool comes back\n// with a warning rather than a confident-looking stub, because a bad\n// description does not fail: it quietly makes the agent pick the wrong tool.\n//\n// IT DOES NOT CREATE ANYTHING. It returns drafts. You read them, fix the\n// descriptions, drop the endpoints an agent has no business calling, and pass\n// what is left to `ws.agents.create({ httpTools })`.\n//\n// ```ts\n// import { fromPostman } from '@cerebro-labs/agentnava-sdk';\n//\n// const { tools, secrets, warnings } = fromPostman(collection);\n// for (const w of warnings) console.warn(w.message);\n// for (const s of secrets) await ws.secrets.create({ name: s.name, value: '...' });\n//\n// await ws.agents.create({ id: 'support', instructions: '...', httpTools: tools });\n// ```\n\nimport type { HttpTool, HttpToolParam } from './types.ts';\n\n/** Something a human has to look at before these tools are good. */\nexport type ImportWarningKind =\n\t/** The source had no description worth showing a model. */\n\t| 'description-missing'\n\t/** A credential was found and replaced with a secret placeholder. */\n\t| 'credential-stripped'\n\t/** The request body is a shape we cannot express (file upload, form-data). */\n\t| 'unsupported-body'\n\t/** More tools than a model chooses well between. */\n\t| 'too-many-tools'\n\t/** A `{{variable}}` the source never defined. */\n\t| 'undefined-variable'\n\t/** Two endpoints produced the same tool name. */\n\t| 'name-collision'\n\t/** A parameter was renamed to something the API will accept. */\n\t| 'param-renamed'\n\t| 'unsupported-operation'\n\t| 'security-choice';\n\nexport interface ImportWarning {\n\tkind: ImportWarningKind;\n\t/** The tool it concerns, when it concerns one. */\n\ttool?: string;\n\tmessage: string;\n}\n\nexport interface ImportedSecret {\n\t/** Create this with `ws.secrets.create({ name, value })`. */\n\tname: string;\n\t/** The tools that reference it. */\n\tusedBy: string[];\n\t/** Where in the source it came from, so you can find the real value. */\n\tfrom: string;\n}\n\nexport interface ImportedTools {\n\t/** Drafts. Read them before you ship them. */\n\ttools: HttpTool[];\n\t/** Secrets these tools need. None of them carries a value: see the note on\n\t * credentials in this module's header. */\n\tsecrets: ImportedSecret[];\n\t/** Everything a human should decide. Never silently resolved. */\n\twarnings: ImportWarning[];\n}\n\nexport interface ImportOptions {\n\t/** Name for the credential these requests authenticate with. Defaults are\n\t * derived from the header (`Authorization` becomes `API_TOKEN`), which is\n\t * fine for one API and confusing once you have three. */\n\tsecretName?: string;\n\t/** Keep only the operations you want. Returning everything is rarely right:\n\t * a model picks markedly worse between forty tools than between eight. */\n\tinclude?: (candidate: { name: string; method: string; url: string }) => boolean;\n\t/** Above this many tools, a `too-many-tools` warning is added. */\n\twarnAbove?: number;\n}\n\nconst DEFAULT_WARN_ABOVE = 15;\n\n/** Header names whose value is a credential whatever it looks like.\n *\n * MATCHED ON THE NAME, NOT THE VALUE, and that is the safe direction. A value\n * test has to guess, and the cost of guessing wrong is a live token written\n * into an agent version, which is readable. A name test over-collects at worst:\n * it turns something harmless into a secret, which is an inconvenience. */\nconst CREDENTIAL_HEADERS = new Set([\n\t'authorization',\n\t'proxy-authorization',\n\t'cookie',\n\t'x-api-key',\n\t'api-key',\n\t'apikey',\n\t'x-auth-token',\n\t'auth-token',\n\t'x-access-token',\n\t'access-token',\n\t'token',\n\t'x-session-token',\n\t'private-token',\n\t'x-secret',\n]);\n\n/** Shapes that are a credential wherever they appear, including in a URL.\n *\n * Deliberately narrow: each is a published prefix from a real provider, so a\n * match is near-certain rather than a heuristic. The header rule above is what\n * does the heavy lifting. */\nconst CREDENTIAL_VALUE_RE =\n\t/\\b(sk-[A-Za-z0-9]{16,}|ghp_[A-Za-z0-9]{20,}|gho_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|xox[baprs]-[A-Za-z0-9-]{10,}|AIza[A-Za-z0-9_-]{30,}|AKIA[A-Z0-9]{16}|eyJ[A-Za-z0-9_-]{10,}\\.[A-Za-z0-9_-]{10,}\\.)/;\n\n/** The scheme and a written-out host at the start of an address: the API's\n * own rule for a tool that sends a key (AgentNava ADR 0028). */\nconst WRITTEN_OUT_HOST = /^\\s*https?:\\/\\/[A-Za-z0-9.-]+(?::\\d{1,5})?(?=[/?#]|$)/i;\nconst NAMES_A_KEY = /\\{\\{\\s*(?:secrets|secretsEncoded)\\./;\n\n/** Whether a drafted tool sends a key to an address a placeholder builds. The\n * API refuses to save such a tool, because the host decides where the key\n * goes, so the import refuses it first and says what to fix. A keyless tool\n * may keep a placeholder, and a bare path is left for you to complete. */\nfunction sendsKeyToPlaceholderHost(tool: Pick<HttpTool, 'url' | 'headers' | 'body'>): boolean {\n\tconst keyed = [tool.url, tool.body, ...Object.values(tool.headers ?? {})].some((t) => NAMES_A_KEY.test(t ?? ''));\n\treturn keyed && /^\\s*(https?:\\/\\/|\\{\\{)/i.test(tool.url) && !WRITTEN_OUT_HOST.test(tool.url);\n}\n\n/** A tool name the API will accept: `^[a-z][a-z0-9_]{0,63}$`. */\nexport function toolNameFrom(raw: string, fallback = 'call'): string {\n\tconst slug = raw\n\t\t.trim()\n\t\t.toLowerCase()\n\t\t.replace(/[^a-z0-9]+/g, '_')\n\t\t.replace(/^_+|_+$/g, '')\n\t\t.slice(0, 64);\n\tif (slug === '' || !/^[a-z]/.test(slug)) {\n\t\tconst prefixed = `${fallback}_${slug}`.replace(/_+$/, '').slice(0, 64);\n\t\treturn /^[a-z][a-z0-9_]*$/.test(prefixed) ? prefixed : fallback;\n\t}\n\treturn slug;\n}\n\n/** A param name the API will accept: `^[A-Za-z][A-Za-z0-9_]*$`.\n *\n * THE WIRE NAME IS NOT THE PARAM NAME, and conflating them is what broke this.\n * An API's query key is whatever the API says it is (`page-size`,\n * `filter[status]`), while a param name is an identifier both our validator and\n * the runtime's placeholder regex constrain to `[A-Za-z][A-Za-z0-9_]*`. Copying\n * the wire name into the param name produced `400 params has invalid key\n * \"page-size\"` on documents that are completely ordinary, which is exactly the\n * unactionable 400 `uniqueName` exists to avoid. So the key on the wire keeps\n * its spelling and only the identifier is normalised. */\nexport function paramNameFrom(raw: string, fallback = 'arg'): string {\n\tconst slug = raw\n\t\t.trim()\n\t\t.replace(/[^A-Za-z0-9]+/g, '_')\n\t\t.replace(/^_+|_+$/g, '')\n\t\t.slice(0, 64);\n\tif (slug === '' || !/^[A-Za-z]/.test(slug)) {\n\t\tconst prefixed = `${fallback}_${slug}`.replace(/_+$/, '').slice(0, 64);\n\t\treturn /^[A-Za-z][A-Za-z0-9_]*$/.test(prefixed) ? prefixed : fallback;\n\t}\n\treturn slug;\n}\n\n/** A secret name the runtime's placeholder regex will match.\n *\n * `[A-Za-z_][A-Za-z0-9_]*`, so a leading digit is the case that matters. A\n * Postman collection with a `{{2fa_token}}` variable produced\n * `{{secrets.2FA_TOKEN}}`, which that regex does not match at all, so nothing\n * substituted it and the LITERAL braces went out as the header value. No error,\n * just a 401 from the far end. A name that cannot resolve is worse than an ugly\n * one. */\nfunction normalizeSecretName(raw: string, fallback = 'API_TOKEN'): string {\n\tconst slug = raw\n\t\t.replace(/[^A-Za-z0-9]+/g, '_')\n\t\t.replace(/^_+|_+$/g, '')\n\t\t.toUpperCase()\n\t\t.slice(0, 64);\n\tif (slug === '') return fallback;\n\treturn /^[A-Za-z_]/.test(slug) ? slug : `S_${slug}`.slice(0, 64);\n}\n\n/** A secret name from a header, or the caller's own choice. */\nfunction secretNameFor(header: string, options: ImportOptions): string {\n\tif (options.secretName) return options.secretName;\n\tconst h = header.toLowerCase();\n\tif (h === 'authorization') return 'API_TOKEN';\n\tif (h === 'x-api-key' || h === 'api-key' || h === 'apikey') return 'API_KEY';\n\treturn normalizeSecretName(header);\n}\n\n/** Accumulates tools, secrets and warnings, and keeps names unique.\n *\n * UNIQUE BECAUSE THE API NOW REFUSES DUPLICATES. Two endpoints called \"Get\" in\n * different folders both slug to `get`, and a duplicate name makes which\n * request goes out a matter of list order: the agent looks like it called the\n * right tool and returns the wrong answer. Renaming here, with a warning, beats\n * a 400 the importer's caller cannot act on. */\nclass Draft {\n\treadonly tools: HttpTool[] = [];\n\treadonly warnings: ImportWarning[] = [];\n\treadonly #secrets = new Map<string, ImportedSecret>();\n\treadonly #names = new Set<string>();\n\t/** `<tool>\\0<wire name>` to the param name chosen for it. */\n\treadonly #paramNames = new Map<string, string>();\n\n\tuniqueName(wanted: string): string {\n\t\tif (!this.#names.has(wanted)) {\n\t\t\tthis.#names.add(wanted);\n\t\t\treturn wanted;\n\t\t}\n\t\tfor (let i = 2; i < 1000; i++) {\n\t\t\tconst candidate = `${wanted}_${i}`.slice(0, 64);\n\t\t\tif (!this.#names.has(candidate)) {\n\t\t\t\tthis.#names.add(candidate);\n\t\t\t\tthis.warnings.push({\n\t\t\t\t\tkind: 'name-collision',\n\t\t\t\t\ttool: candidate,\n\t\t\t\t\tmessage: `Two operations both became \"${wanted}\"; this one is \"${candidate}\". Give it a name that says what it does.`,\n\t\t\t\t});\n\t\t\t\treturn candidate;\n\t\t\t}\n\t\t}\n\t\tthrow new Error(`cannot find a free name for ${wanted}`);\n\t}\n\n\t/** Records the secret. Returns true the FIRST time this name is seen, so the\n\t * caller can warn once rather than once per tool that uses it. */\n\tsecret(name: string, tool: string, from: string): boolean {\n\t\tconst existing = this.#secrets.get(name);\n\t\tif (existing) {\n\t\t\tif (!existing.usedBy.includes(tool)) existing.usedBy.push(tool);\n\t\t\treturn false;\n\t\t}\n\t\tthis.#secrets.set(name, { name, usedBy: [tool], from });\n\t\treturn true;\n\t}\n\n\t/** Every secret this tool references, for the tool's own `secrets` field.\n\t *\n\t * LOAD-BEARING, NOT DECORATION. `collectSecretNames` in the control plane\n\t * builds a turn's secret map from each httpTool's `secrets` array; unlike\n\t * MCP servers it does NOT scan the tool's headers for {{secrets.X}}. A tool\n\t * that carries the placeholder but not the declaration therefore fails every\n\t * call with \"missing required secret\", which is what every drafted tool did\n\t * until this existed. */\n\tsecretsFor(tool: string): string[] {\n\t\treturn [...this.#secrets.values()].filter((s) => s.usedBy.includes(tool)).map((s) => s.name);\n\t}\n\n\t/** Declare a param under a name the API accepts, warning when it had to\n\t * change, and return the name to use in the placeholder.\n\t *\n\t * ONE WIRE NAME IS ONE PARAM, however many times it is mentioned. An\n\t * OpenAPI operation names a path variable twice: once in the path template\n\t * `/orders/{order-id}` and once in `parameters`. Treating the second sight\n\t * of it as a collision produced `order_id` in the url and a second,\n\t * never-sent `order_id_2` in `params`, which is the very \"declared and never\n\t * sent\" defect this class is meant to prevent. So a repeat returns the same\n\t * name and merges the richer definition over the first guess. */\n\tparam(\n\t\tparams: Record<string, HttpToolParam>,\n\t\twireName: string,\n\t\tdef: HttpToolParam,\n\t\ttool: string,\n\t\tidentity = wireName,\n\t): string {\n\t\tconst key = `${tool}\\u0000${identity}`;\n\t\tconst already = this.#paramNames.get(key);\n\t\tif (already !== undefined) {\n\t\t\tparams[already] = { ...params[already], ...def };\n\t\t\treturn already;\n\t\t}\n\t\tconst wanted = paramNameFrom(wireName);\n\t\tlet name = wanted;\n\t\tfor (let i = 2; i < 1000 && name in params; i++) name = `${wanted}_${i}`.slice(0, 64);\n\t\tthis.#paramNames.set(key, name);\n\t\tif (name !== wireName) {\n\t\t\tthis.warnings.push({\n\t\t\t\tkind: 'param-renamed',\n\t\t\t\ttool,\n\t\t\t\tmessage:\n\t\t\t\t\t`Parameter \"${wireName}\" is called \"${name}\" on the tool, because a param name has ` +\n\t\t\t\t\t`to be a plain identifier. The request still sends \"${wireName}\" on the wire.`,\n\t\t\t});\n\t\t}\n\t\tparams[name] = def;\n\t\treturn name;\n\t}\n\n\tfinish(options: ImportOptions): ImportedTools {\n\t\tconst limit = options.warnAbove ?? DEFAULT_WARN_ABOVE;\n\t\tif (this.tools.length > limit) {\n\t\t\tthis.warnings.push({\n\t\t\t\tkind: 'too-many-tools',\n\t\t\t\tmessage:\n\t\t\t\t\t`${this.tools.length} tools. A model chooses markedly worse between forty than ` +\n\t\t\t\t\t`between eight, so keep the operations an agent genuinely needs and drop the rest ` +\n\t\t\t\t\t`(pass \\`include\\` to filter during the import).`,\n\t\t\t});\n\t\t}\n\t\t// Only the tools drafted: a refused tool's secret is not asked for.\n\t\tconst drafted = new Set(this.tools.map((t) => t.name));\n\t\tconst secrets = [...this.#secrets.values()]\n\t\t\t.map((s) => ({ ...s, usedBy: s.usedBy.filter((name) => drafted.has(name)) }))\n\t\t\t.filter((s) => s.usedBy.length > 0);\n\t\treturn { tools: this.tools, secrets, warnings: this.warnings };\n\t}\n}\n\n/** Headers with every credential replaced by a secret placeholder. */\nfunction safeHeaders(\n\traw: Record<string, string>,\n\ttoolName: string,\n\tdraft: Draft,\n\toptions: ImportOptions,\n\tsource: string,\n): Record<string, string> {\n\tconst out: Record<string, string> = {};\n\tfor (const [name, value] of Object.entries(raw)) {\n\t\tconst isCredentialHeader = CREDENTIAL_HEADERS.has(name.toLowerCase());\n\t\tconst looksLikeOne = CREDENTIAL_VALUE_RE.test(value);\n\t\tif (!isCredentialHeader && !looksLikeOne) {\n\t\t\tout[name] = value;\n\t\t\tcontinue;\n\t\t}\n\t\tconst secret = secretNameFor(name, options);\n\t\t// The SCHEME is preserved, the credential is not. `Bearer {{secrets.X}}`\n\t\t// works; `{{secrets.X}}` alone silently drops the scheme and the server\n\t\t// answers 401 about a malformed header.\n\t\tconst scheme = /^(Bearer|Basic|Token|ApiKey)\\s+/i.exec(value)?.[1];\n\t\tout[name] = scheme ? `${scheme} {{secrets.${secret}}}` : `{{secrets.${secret}}}`;\n\t\tconst firstTime = draft.secret(secret, toolName, `${source} header \"${name}\"`);\n\t\t// ONCE PER SECRET, not once per tool. One token shared by twelve\n\t\t// operations produced twelve identical warnings, and a list nobody can\n\t\t// skim is a list nobody reads. `secrets[].usedBy` already names every tool\n\t\t// that references it, so the detail is not lost.\n\t\tif (firstTime) {\n\t\t\tdraft.warnings.push({\n\t\t\t\tkind: 'credential-stripped',\n\t\t\t\tmessage:\n\t\t\t\t\t`Header \"${name}\" held a credential. It is now {{secrets.${secret}}} and the value was ` +\n\t\t\t\t\t`NOT kept. Create it with ws.secrets.create({ name: '${secret}', value: '…' }).`,\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n\n/** A description the model can act on, or a warning that there is none. */\nfunction describe(\n\tcandidates: (string | undefined)[],\n\ttoolName: string,\n\tmethod: string,\n\tpath: string,\n\tdraft: Draft,\n): string {\n\tconst found = candidates.map((c) => c?.trim()).find((c) => c && c.length >= 12);\n\tif (found) return found;\n\t// The fallback is `METHOD /path`, and the path must be the RESOLVED one. Using\n\t// the raw source url put `DELETE {{baseUrl}}/admin/purge` in a description,\n\t// which shows a model a placeholder it cannot act on and reads like a bug.\n\t// Collapse doubled slashes left behind by a stripped placeholder, but NOT the\n\t// `//` in `https://`: a Postman collection that writes absolute urls rather\n\t// than {{baseUrl}} produced the description \"DELETE https:/api.acme.example/…\",\n\t// and that string is what the model reads to choose the tool.\n\tconst stripped = path.replace(/\\{\\{[^}]*\\}\\}/g, '');\n\tconst scheme = /^[a-z][a-z0-9+.-]*:\\/\\//i.exec(stripped)?.[0] ?? '';\n\tconst clean = `${scheme}${stripped.slice(scheme.length).replace(/\\/{2,}/g, '/')}` || path;\n\tdraft.warnings.push({\n\t\tkind: 'description-missing',\n\t\ttool: toolName,\n\t\tmessage:\n\t\t\t`\"${toolName}\" has no usable description. This is the field the model reads to decide ` +\n\t\t\t`whether to call it, so write one line saying when someone would use it. ` +\n\t\t\t`A bad description does not error, it makes the agent pick the wrong tool.`,\n\t});\n\treturn `${method} ${clean}`;\n}\n\n// ---------------------------------------------------------------- postman\n\ninterface PostmanItem {\n\tname?: string;\n\trequest?: PostmanRequest | string;\n\titem?: PostmanItem[];\n\tdescription?: string;\n}\n\ninterface PostmanRequest {\n\tmethod?: string;\n\turl?: string | { raw?: string; host?: string[]; path?: string[]; query?: { key?: string; value?: string; description?: string; disabled?: boolean }[] };\n\theader?: { key?: string; value?: string; disabled?: boolean }[];\n\tbody?: { mode?: string; raw?: string };\n\tdescription?: string;\n\tauth?: { type?: string; [k: string]: unknown };\n}\n\nexport interface PostmanCollection {\n\tinfo?: { name?: string; description?: string };\n\titem?: PostmanItem[];\n\tvariable?: { key?: string; value?: string }[];\n\tauth?: { type?: string; [k: string]: unknown };\n}\n\n/**\n * Draft tools from a Postman collection export (v2.0 or v2.1).\n *\n * WHY POSTMAN AND NOT ONLY OPENAPI. OpenAPI is tidier; a collection is truer. It\n * holds the requests somebody has actually run, with the header names that\n * really work and real values in the body, which is what a tool has to\n * reproduce. Teams also already have one, and the best format to ask for is the\n * one nobody has to make.\n *\n * WHAT IT COSTS: a collection has no parameter TYPES, so every parameter comes\n * back a string. That is usually right and always safe; `fromOpenApi` gives real\n * types where a document exists.\n *\n * VARIABLES. Postman writes `{{baseUrl}}`, which is the same shape as our own\n * placeholders, so they map across almost directly. A variable the collection\n * DEFINES is substituted, unless it holds something that looks like a\n * credential, in which case it becomes a secret instead of being inlined. An\n * undefined variable becomes a secret too, with a warning, because the\n * alternative is a URL with a placeholder nothing resolves.\n */\nexport function fromPostman(\n\tcollection: PostmanCollection,\n\toptions: ImportOptions = {},\n): ImportedTools {\n\tconst draft = new Draft();\n\tconst vars = new Map<string, string>();\n\tfor (const v of collection.variable ?? []) {\n\t\tif (v.key) vars.set(v.key, v.value ?? '');\n\t}\n\n\t/** Substitute defined variables; anything else becomes a secret. */\n\tconst resolveVars = (text: string, toolName: string): string =>\n\t\ttext.replace(/\\{\\{([^}]+)\\}\\}/g, (_m, rawKey: string) => {\n\t\t\tconst keyName = rawKey.trim();\n\t\t\tconst value = vars.get(keyName);\n\t\t\t// A DEFINED VARIABLE HOLDING A CREDENTIAL IS STILL A CREDENTIAL. Inlining\n\t\t\t// it because the collection happened to define it is how a live token\n\t\t\t// ends up in an agent version, which is readable.\n\t\t\tif (value !== undefined && value !== '' && !CREDENTIAL_VALUE_RE.test(value)) {\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tconst secret = normalizeSecretName(keyName);\n\t\t\tdraft.secret(secret, toolName, `collection variable \"${keyName}\"`);\n\t\t\tif (value === undefined) {\n\t\t\t\tdraft.warnings.push({\n\t\t\t\t\tkind: 'undefined-variable',\n\t\t\t\t\ttool: toolName,\n\t\t\t\t\tmessage: `{{${keyName}}} is not defined in the collection, so it became {{secrets.${secret}}}.`,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn `{{secrets.${secret}}}`;\n\t\t});\n\n\tconst walk = (items: PostmanItem[], trail: string[]): void => {\n\t\tfor (const item of items) {\n\t\t\tif (item.item) {\n\t\t\t\twalk(item.item, [...trail, item.name ?? '']);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst request = item.request;\n\t\t\tif (!request || typeof request === 'string') continue;\n\n\t\t\tconst rawUrl =\n\t\t\t\ttypeof request.url === 'string'\n\t\t\t\t\t? request.url\n\t\t\t\t\t: (request.url?.raw ??\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t(request.url?.host ?? []).join('.'),\n\t\t\t\t\t\t\t(request.url?.path ?? []).join('/'),\n\t\t\t\t\t\t]\n\t\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t\t.join('/'));\n\t\t\tif (!rawUrl) continue;\n\n\t\t\tconst method = (request.method ?? 'GET').toUpperCase();\n\t\t\tconst candidateName = toolNameFrom(item.name ?? `${method} ${rawUrl}`);\n\t\t\tif (options.include && !options.include({ name: candidateName, method, url: rawUrl })) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst name = draft.uniqueName(candidateName);\n\n\t\t\t// Postman path variables are `:id`; ours are `{{params.id}}`.\n\t\t\tconst params: Record<string, HttpToolParam> = {};\n\t\t\tlet url = resolveVars(rawUrl, name).replace(\n\t\t\t\t/:([A-Za-z_][A-Za-z0-9_]*)/g,\n\t\t\t\t(_m, p: string) =>\n\t\t\t\t\t`{{params.${draft.param(params, p, { type: 'string', required: true }, name)}}}`,\n\t\t\t);\n\t\t\t// `?a=1&b=2` in the raw URL is kept as written; the structured `query`\n\t\t\t// array is what a caller edits in Postman, so it wins where present.\n\t\t\tconst query = typeof request.url === 'string' ? [] : (request.url?.query ?? []);\n\t\t\tconst enabled = query.filter((q) => q.key && !q.disabled);\n\t\t\tif (enabled.length > 0) {\n\t\t\t\turl = url.split('?')[0] as string;\n\t\t\t\tconst pairs = enabled.map((q) => {\n\t\t\t\t\tconst key = q.key as string;\n\t\t\t\t\tconst param = draft.param(\n\t\t\t\t\t\tparams,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\t{ type: 'string', ...(q.description ? { description: q.description } : {}) },\n\t\t\t\t\t\tname,\n\t\t\t\t\t);\n\t\t\t\t\treturn `${encodeURIComponent(key)}={{paramsEncoded.${param}}}`;\n\t\t\t\t});\n\t\t\t\turl = `${url}?${pairs.join('&')}`;\n\t\t\t}\n\n\t\t\tconst headerPairs: Record<string, string> = {};\n\t\t\tfor (const h of request.header ?? []) {\n\t\t\t\tif (h.key && !h.disabled) headerPairs[h.key] = resolveVars(h.value ?? '', name);\n\t\t\t}\n\t\t\t// Collection-level auth applies to a request that declares none.\n\t\t\tconst auth = request.auth ?? collection.auth;\n\t\t\tif (auth?.type && !Object.keys(headerPairs).some((k) => CREDENTIAL_HEADERS.has(k.toLowerCase()))) {\n\t\t\t\tconst secret = secretNameFor('authorization', options);\n\t\t\t\theaderPairs.Authorization =\n\t\t\t\t\tauth.type === 'basic' ? `Basic {{secrets.${secret}}}` : `Bearer {{secrets.${secret}}}`;\n\t\t\t\tdraft.secret(secret, name, `collection auth (${auth.type})`);\n\t\t\t}\n\t\t\tconst headers = safeHeaders(headerPairs, name, draft, options, 'Postman');\n\n\t\t\tlet body: string | undefined;\n\t\t\tconst mode = request.body?.mode;\n\t\t\tif (mode === 'raw' && request.body?.raw) {\n\t\t\t\tbody = resolveVars(request.body.raw, name);\n\t\t\t} else if (mode && mode !== 'raw' && mode !== 'none') {\n\t\t\t\tdraft.warnings.push({\n\t\t\t\t\tkind: 'unsupported-body',\n\t\t\t\t\ttool: name,\n\t\t\t\t\tmessage: `Body mode \"${mode}\" is not supported; the tool was created without a body.`,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Its base address came from a variable the collection does not hold\n\t\t\t// (usually one kept in a Postman environment), so the host is still a\n\t\t\t// placeholder. A tool that sends a key cannot be saved that way.\n\t\t\tif (sendsKeyToPlaceholderHost({ url, headers, ...(body !== undefined && { body }) })) {\n\t\t\t\tconst variable = /^\\s*(?:https?:\\/\\/)?[^/?#]*?\\{\\{\\s*([^}]+?)\\s*\\}\\}/.exec(rawUrl)?.[1] ?? 'its server';\n\t\t\t\tdraft.warnings.push({\n\t\t\t\t\tkind: 'unsupported-operation',\n\t\t\t\t\ttool: name,\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t`Skipped ${method} ${rawUrl}: This collection does not include its base address (${variable}). ` +\n\t\t\t\t\t\t`Add it to the collection's variables in Postman, then import again.`,\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tdraft.tools.push({\n\t\t\t\tname,\n\t\t\t\tdescription: describe(\n\t\t\t\t\t[item.description, request.description, trail.filter(Boolean).join(' / ')],\n\t\t\t\t\tname,\n\t\t\t\t\tmethod,\n\t\t\t\t\trawUrl,\n\t\t\t\t\tdraft,\n\t\t\t\t),\n\t\t\t\tmethod: (['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(method)\n\t\t\t\t\t? method\n\t\t\t\t\t: 'GET') as HttpTool['method'],\n\t\t\t\turl,\n\t\t\t\t...(Object.keys(headers).length > 0 && { headers }),\n\t\t\t\t...(Object.keys(params).length > 0 && { params }),\n\t\t\t\t// DECLARED, because the placeholder alone does not reach the runtime.\n\t\t\t\t...(draft.secretsFor(name).length > 0 && { secrets: draft.secretsFor(name) }),\n\t\t\t\t// GET carries no body: the API refuses one at authoring time.\n\t\t\t\t...(body !== undefined && method !== 'GET' && { body }),\n\t\t\t});\n\t\t}\n\t};\n\n\twalk(collection.item ?? [], []);\n\treturn draft.finish(options);\n}\n\n// ---------------------------------------------------------------- openapi\n\ninterface OpenApiSchema {\n\t[key: string]: unknown;\n\t$ref?: string;\n\ttype?: string | string[];\n\ttitle?: string;\n\tdescription?: string;\n\tenum?: (string | number | boolean | null)[];\n\tconst?: string | number | boolean | null;\n\trequired?: string[];\n\tproperties?: Record<string, OpenApiSchema>;\n\titems?: OpenApiSchema;\n\tnullable?: boolean;\n\tadditionalProperties?: boolean | OpenApiSchema;\n\tallOf?: OpenApiSchema[];\n\toneOf?: OpenApiSchema[];\n\tanyOf?: OpenApiSchema[];\n\treadOnly?: boolean;\n}\ninterface OpenApiParam {\n\t[key: string]: unknown;\n\t$ref?: string;\n\tname?: string;\n\tin?: string;\n\trequired?: boolean;\n\tdescription?: string;\n\tschema?: OpenApiSchema;\n\ttype?: string;\n\tenum?: (string | number | boolean | null)[];\n\tstyle?: string;\n\texplode?: boolean;\n}\ninterface OpenApiBody {\n\t$ref?: string;\n\trequired?: boolean;\n\tcontent?: Record<string, {schema?: OpenApiSchema}>;\n}\ninterface OpenApiOperation {\n\toperationId?: string;\n\tsummary?: string;\n\tdescription?: string;\n\tparameters?: OpenApiParam[];\n\trequestBody?: OpenApiBody;\n\tsecurity?: Record<string, string[]>[];\n}\ntype OpenApiPath = {parameters?: OpenApiParam[]} & Partial<Record<'get'|'post'|'put'|'delete'|'patch', OpenApiOperation>>;\ninterface SecurityScheme {type?: string; scheme?: string; name?: string; in?: string}\nexport interface OpenApiDocument {\n\topenapi?: string;\n\tswagger?: string;\n\tinfo?: {title?: string};\n\tservers?: {url?: string; variables?: Record<string, {default?: string; enum?: string[]; description?: string}>}[];\n\thost?: string;\n\tbasePath?: string;\n\tschemes?: string[];\n\tpaths?: Record<string, OpenApiPath>;\n\tcomponents?: {securitySchemes?: Record<string, SecurityScheme>; schemas?: Record<string, OpenApiSchema>; parameters?: Record<string, OpenApiParam>; requestBodies?: Record<string, OpenApiBody>};\n\tdefinitions?: Record<string, OpenApiSchema>;\n\tsecurityDefinitions?: Record<string, SecurityScheme>;\n\tsecurity?: Record<string, string[]>[];\n}\nconst OPENAPI_METHODS = ['get', 'post', 'put', 'delete', 'patch'] as const;\n\n/** The object a local `#/...` reference names, one hop. */\nfunction refTarget(ref: string, doc: OpenApiDocument): object {\n\tif (!ref.startsWith('#/')) throw Error('Only acyclic local OpenAPI references are supported');\n\tlet target: unknown = doc;\n\tfor (const key of ref.slice(2).split('/').map(x=>x.replace(/~1/g,'/').replace(/~0/g,'~'))) {\n\t\tif (!target || typeof target !== 'object' || !Object.hasOwn(target,key)) throw Error(`Unresolved OpenAPI reference ${ref}`);\n\t\ttarget = (target as Record<string,unknown>)[key];\n\t}\n\tif (!target || typeof target !== 'object' || Array.isArray(target)) throw Error('OpenAPI reference must resolve to an object');\n\treturn target;\n}\n\nfunction dereference<T extends {$ref?: string}>(value: T, doc: OpenApiDocument, seen = new Set<string>()): T {\n\tif (!value.$ref) return value;\n\tif (seen.has(value.$ref)) throw Error('Only acyclic local OpenAPI references are supported');\n\tseen.add(value.$ref);\n\treturn dereference(refTarget(value.$ref, doc) as T, doc, seen);\n}\n\n/** Keywords that only narrow which values are valid: a bound, a length, a\n * pattern, a format. A tool parameter has no field for them, so they go into\n * its description for the model, and the API enforces them, as it does for\n * every other caller.\n *\n * THEY USED TO SKIP THE WHOLE OPERATION, even on an optional parameter, on the\n * theory that a tool which cannot enforce a rule must not exist. Real documents\n * put these on almost every field: a generated document with 188 operations\n * drafted 77 tools. The rule was never the tool's to enforce; the API already\n * does, and its 400 tells the model what to fix. */\nconst RULE_KEYWORDS = [\n\t'minimum', 'exclusiveMinimum', 'maximum', 'exclusiveMaximum', 'multipleOf', 'minLength', 'maxLength',\n\t'pattern', 'format', 'minItems', 'maxItems', 'uniqueItems', 'minProperties', 'maxProperties',\n] as const;\nconst PRIMITIVE_TYPES = new Set(['string', 'number', 'integer', 'boolean']);\nconst PARAM_TYPES = new Set([...PRIMITIVE_TYPES, 'object', 'array']);\nconst TYPE_PHRASE: Record<string, string> = {\n\tstring: 'a string', number: 'a number', integer: 'an integer', boolean: 'true or false', object: 'an object', array: 'a list',\n};\n\nconst refName = (ref: string): string => ref.slice(ref.lastIndexOf('/') + 1);\n\n/** Sentences joined into one description. A lone part gains no full stop. */\nfunction sentences(...parts: (string | undefined)[]): string | undefined {\n\tconst kept = parts.map(p => p?.trim()).filter((p): p is string => !!p);\n\tif (kept.length <= 1) return kept[0];\n\treturn kept.map(p => /[.!?]$/.test(p) ? p : `${p}.`).join(' ');\n}\n\n/** The type a resolved schema declares, or the one its other keywords imply. */\nfunction typeOf(s: OpenApiSchema): string | undefined {\n\tif (typeof s.type === 'string') return s.type;\n\tif (s.properties !== undefined || s.additionalProperties !== undefined) return 'object';\n\tif (s.items !== undefined) return 'array';\n\tconst values = s.enum?.filter(v => v !== null) ?? [];\n\tif (values.length && values.every(v => typeof v === 'string')) return 'string';\n\tif (values.length && values.every(v => typeof v === 'boolean')) return 'boolean';\n\tif (values.length && values.every(v => typeof v === 'number')) return values.every(Number.isInteger) ? 'integer' : 'number';\n\treturn undefined;\n}\n\n/** The rules a schema carries, in words: \"at least 1\", \"3 to 64 characters\". */\nfunction ruleText(s: OpenApiSchema, type: string | undefined): string[] {\n\tconst n = (key: string): number | undefined => typeof s[key] === 'number' && Number.isFinite(s[key]) ? s[key] as number : undefined;\n\tconst span = (min: number | undefined, max: number | undefined, unit: string): string | undefined => {\n\t\tconst of = (x: number) => `${x} ${unit}${x === 1 ? '' : 's'}`;\n\t\tif (min !== undefined && max !== undefined) return min === max ? `exactly ${of(min)}` : `${min} to ${of(max)}`;\n\t\tif (min !== undefined) return `at least ${of(min)}`;\n\t\treturn max !== undefined ? `at most ${of(max)}` : undefined;\n\t};\n\tconst extra = s.additionalProperties;\n\tconst value = extra && typeof extra === 'object'\n\t\t? (typeof extra.type === 'string' ? TYPE_PHRASE[extra.type] : typeof extra.$ref === 'string' ? refName(extra.$ref) : undefined)\n\t\t: undefined;\n\treturn [\n\t\t// 3.0 writes `exclusiveMinimum: true` beside `minimum`; 3.1 makes it the bound.\n\t\tn('minimum') !== undefined ? `${s.exclusiveMinimum === true ? 'more than' : 'at least'} ${n('minimum')}` : undefined,\n\t\tn('exclusiveMinimum') !== undefined ? `more than ${n('exclusiveMinimum')}` : undefined,\n\t\tn('maximum') !== undefined ? `${s.exclusiveMaximum === true ? 'less than' : 'at most'} ${n('maximum')}` : undefined,\n\t\tn('exclusiveMaximum') !== undefined ? `less than ${n('exclusiveMaximum')}` : undefined,\n\t\tn('multipleOf') !== undefined ? `a multiple of ${n('multipleOf')}` : undefined,\n\t\tspan(n('minLength'), n('maxLength'), 'character'),\n\t\ttypeof s.pattern === 'string' ? `pattern \\`${s.pattern}\\`` : undefined,\n\t\t// int32, int64 and double say how a number is stored, not what to send.\n\t\ttypeof s.format === 'string' && type === 'string' ? `format ${s.format}` : undefined,\n\t\tspan(n('minItems'), n('maxItems'), 'item'),\n\t\ts.uniqueItems === true ? 'no duplicate items' : undefined,\n\t\tspan(n('minProperties'), n('maxProperties'), 'field'),\n\t\textra && typeof extra === 'object' ? `any keys${value ? `, each value ${value}` : ''}` : undefined,\n\t].filter((rule): rule is string => rule !== undefined);\n}\n\n/** What converting one operation's schemas needs: the document, and somewhere to\n * note a shape the tool had to narrow, for the developer to review. */\ninterface SchemaContext {doc: OpenApiDocument; notes: Set<string>}\n\n/** One flat schema, every reference, composition and alternative folded in.\n * Rules stay on it as keywords, for `ruleText` to put into words; nested\n * properties and items are left for their own turn.\n *\n * `nesting` counts references and compositions, separately from how deep the\n * parameter itself goes: the API allows 12 levels of fields, and a document\n * that reaches each level through a $ref and an allOf should not spend three. */\nfunction resolveOpenApiSchema(raw: OpenApiSchema, ctx: SchemaContext, where: string, nesting = 0): OpenApiSchema {\n\tif (nesting > 32) throw Error('OpenAPI schema is recursive or nests references more than 32 deep');\n\tif (typeof raw.$ref === 'string') {\n\t\tconst { $ref, ...siblings } = raw;\n\t\tconst target = refTarget($ref, ctx.doc) as OpenApiSchema;\n\t\t// Keywords beside a $ref apply together with what it names (OpenAPI 3.1),\n\t\t// which is also what a 3.0 author writing a description or a rule there means.\n\t\tconst next = Object.keys(siblings).length ? { ...siblings, allOf: [target, ...(siblings.allOf ?? [])] } : target;\n\t\treturn resolveOpenApiSchema(next, ctx, where, nesting + 1);\n\t}\n\tconst { allOf, oneOf, anyOf, ...own } = raw;\n\tif (allOf && !allOf.length) throw Error('An allOf schema needs at least one member');\n\tconst parts = (allOf ?? []).map(part => resolveOpenApiSchema(part, ctx, where, nesting + 1));\n\tconst said: string[] = [];\n\tconst join = (alternatives: OpenApiSchema[]) => {\n\t\tconst joined = joinAlternatives(alternatives, ctx, where, nesting + 1);\n\t\tparts.push(joined.schema);\n\t\tif (joined.text) said.push(joined.text);\n\t};\n\tif (Array.isArray(own.type)) {\n\t\t// `type: [a, b]` is anyOf by another name, and \"null\" in it is nullable.\n\t\tconst types = own.type.filter(t => t !== 'null');\n\t\tif (own.type.includes('null')) own.nullable = true;\n\t\tif (types.length === 1) own.type = types[0]!;\n\t\telse if (types.length) {\n\t\t\tdelete own.type;\n\t\t\tjoin(types.map(type => ({ type })));\n\t\t} else own.type = 'null';\n\t}\n\tif (oneOf !== undefined) join(oneOf);\n\tif (anyOf !== undefined) join(anyOf);\n\tconst merged = intersect(parts, own);\n\tconst description = sentences(merged.description, ...said);\n\treturn description === undefined ? merged : { ...merged, description };\n}\n\n/** allOf: every part applies at once. Properties and required fields add up,\n * types and enums must agree, and rules ride along to be described. A genuine\n * contradiction, a value that has to be both a string and a number, is an error\n * rather than a guess. Parts are flat; their properties and items are not yet. */\nfunction intersect(parts: OpenApiSchema[], own: OpenApiSchema): OpenApiSchema {\n\tconst all = [...parts, own];\n\tif (all.some(part => part.prefixItems !== undefined)) throw Error('Tuple arrays (prefixItems) are not supported');\n\t// Annotations and rules: the outer schema's own word, else the first part's.\n\tconst first = (key: string) => [own, ...parts].map(part => part[key]).find(value => value !== undefined);\n\tconst types = [...new Set(all.map(part => part.type).filter((t): t is string => typeof t === 'string'))];\n\tconst numeric = types.length === 2 && types.includes('integer') && types.includes('number');\n\tif (types.length > 1 && !numeric) throw Error(`allOf members disagree on the type (${types.join(' and ')})`);\n\tconst enums = all.map(part => part.const !== undefined ? [part.const] : part.enum).filter(e => e !== undefined);\n\tconst values = enums.length ? enums.reduce((kept, e) => kept.filter(v => e.includes(v))) : undefined;\n\tif (values && !values.length) throw Error('allOf members leave no allowed value');\n\tconst properties: Record<string, OpenApiSchema> = {};\n\tfor (const part of all) {\n\t\tfor (const [key, property] of Object.entries(part.properties ?? {})) {\n\t\t\tconst before = Object.hasOwn(properties, key) ? properties[key] : undefined;\n\t\t\t// The same field from two parts must satisfy both, so its rules add up too.\n\t\t\tconst value = before === undefined || JSON.stringify(before) === JSON.stringify(property) ? property : { allOf: [before, property] };\n\t\t\tObject.defineProperty(properties, key, { value, enumerable: true, configurable: true, writable: true });\n\t\t}\n\t}\n\tconst extras = all.map(part => part.additionalProperties).filter(extra => extra !== undefined);\n\t// Keys that match patternProperties are allowed even on a closed object.\n\tconst closed = extras.includes(false) && !all.some(part => part.patternProperties !== undefined);\n\tif (closed && all.some(part => part.additionalProperties === false && Object.keys(properties).some(key => !Object.hasOwn(part.properties ?? {}, key)))) {\n\t\tthrow Error('Extending a closed object with allOf is not supported');\n\t}\n\tconst items = all.map(part => part.items).filter((item): item is OpenApiSchema => item !== undefined);\n\tconst required = [...new Set(all.flatMap(part => part.required ?? []))];\n\tconst annotations = Object.fromEntries(['title', 'description', ...RULE_KEYWORDS]\n\t\t.map(key => [key, first(key)] as const).filter(([, value]) => value !== undefined));\n\treturn {\n\t\t...annotations,\n\t\t...(types.length && { type: numeric ? 'integer' : types[0] }),\n\t\t...(all.some(part => part.nullable === true) && { nullable: true }),\n\t\t...(values && { enum: values }),\n\t\t...(all.some(part => part.properties !== undefined) && { properties }),\n\t\t...(required.length && { required }),\n\t\t...(items.length && { items: items.length === 1 ? items[0] : { allOf: items } }),\n\t\t...(extras.length && { additionalProperties: closed ? false : extras.find(extra => typeof extra === 'object') ?? true }),\n\t\t// A read-only member still makes the composed property response-only.\n\t\t...(all.some(part => part.readOnly === true) && { readOnly: true }),\n\t};\n}\n\n/** oneOf / anyOf: one shape that admits every alternative, as closely as a tool\n * parameter can say it, plus the alternatives in words for the model. The API\n * then refuses a value that fits none of them, as it would from any caller. */\nfunction joinAlternatives(\n\traw: OpenApiSchema[], ctx: SchemaContext, where: string, nesting: number,\n): {schema: OpenApiSchema; text?: string} {\n\tif (!raw.length) throw Error('oneOf and anyOf need at least one alternative');\n\tconst resolved = raw.map(alternative => resolveOpenApiSchema(alternative, ctx, where, nesting));\n\tconst onlyNull = (s: OpenApiSchema) => s.type === 'null' || (!!s.enum?.length && s.enum.every(v => v === null));\n\tconst options = resolved.flatMap((schema, i) => onlyNull(schema) ? [] : [{ schema, raw: raw[i]! }]);\n\tif (!options.length) throw Error('An alternative list that allows only null is not supported');\n\tconst nullable = options.length < resolved.length || options.some(option => option.schema.nullable === true);\n\tconst withNull = (schema: OpenApiSchema): OpenApiSchema => nullable ? { ...schema, nullable: true } : schema;\n\t// \"X or null\" is how most generators write an optional field.\n\tif (options.length === 1) return { schema: withNull(options[0]!.schema) };\n\n\tconst labels = options.map(option => alternativeLabel(option.raw, option.schema));\n\tconst types = [...new Set(options.map(option => typeOf(option.schema)).filter((t): t is string => t !== undefined))];\n\tconst type = types.length <= 1 ? types[0]\n\t\t: types.every(t => t === 'number' || t === 'integer') ? 'number'\n\t\t// A string takes what any of these primitives would say, and on a query or\n\t\t// path it is exactly what goes on the wire.\n\t\t: types.includes('string') && types.every(t => PRIMITIVE_TYPES.has(t)) ? 'string'\n\t\t: undefined;\n\tif (types.length > 1 && type === undefined) {\n\t\t// No one parameter takes both an object and a list. Every alternative is\n\t\t// valid by the document's own account, so the first one is kept.\n\t\tctx.notes.add(\n\t\t\t`\"${where}\" accepts ${[...new Set(labels)].join(' or ')}. A tool parameter takes one shape, so it ` +\n\t\t\t`sends ${labels[0]}; edit the tool if the agent needs another.`,\n\t\t);\n\t\treturn { schema: withNull(options[0]!.schema) };\n\t}\n\tconst all = options.map(option => option.schema);\n\tconst shared = new Map<string, OpenApiSchema[]>();\n\tfor (const schema of all) {\n\t\tfor (const [key, property] of Object.entries(schema.properties ?? {})) {\n\t\t\tconst seen = shared.get(key) ?? [];\n\t\t\tif (!seen.some(s => JSON.stringify(s) === JSON.stringify(property))) seen.push(property);\n\t\t\tshared.set(key, seen);\n\t\t}\n\t}\n\tconst properties: Record<string, OpenApiSchema> = {};\n\tfor (const [key, schemas] of shared) {\n\t\t// A field several alternatives name may take any of their shapes.\n\t\tObject.defineProperty(properties, key, { value: schemas.length === 1 ? schemas[0] : { anyOf: schemas }, enumerable: true, configurable: true, writable: true });\n\t}\n\tconst required = all.map(schema => schema.required ?? []).reduce((kept, r) => kept.filter(key => r.includes(key)));\n\t// Choices only when every alternative lists them, and only in one type.\n\tconst values = all.every(schema => schema.enum) && (types.length <= 1 || type === 'number')\n\t\t? [...new Set(all.flatMap(schema => schema.enum!))] : undefined;\n\tconst items = all.map(schema => schema.items).filter((item): item is OpenApiSchema => item !== undefined);\n\tconst named = options.some(option => option.raw.$ref !== undefined || option.schema.title !== undefined);\n\tconst said = new Set(labels).size > 1 && !(values && !named);\n\treturn {\n\t\tschema: withNull({\n\t\t\t...(type && { type }),\n\t\t\t...(shared.size && { properties }),\n\t\t\t...(required.length && { required }),\n\t\t\t...(values && { enum: values }),\n\t\t\t...(items.length && { items: items.length === 1 ? items[0] : { anyOf: items } }),\n\t\t\t...(all.every(schema => schema.additionalProperties === false) && { additionalProperties: false }),\n\t\t}),\n\t\t...(said && { text: `One of: ${labels.join('; ')}.` }),\n\t};\n}\n\n/** One alternative in a few words: its name, then its fields or its rules. */\nfunction alternativeLabel(raw: OpenApiSchema, s: OpenApiSchema): string {\n\tconst name = typeof raw.$ref === 'string' ? refName(raw.$ref) : typeof s.title === 'string' ? s.title : undefined;\n\tconst type = typeOf(s);\n\tconst fields = s.required?.length ? s.required : Object.keys(s.properties ?? {});\n\tconst shown = `with ${[...fields.slice(0, 8), ...(fields.length > 8 ? ['…'] : [])].join(', ')}`;\n\t// A fragment that only says which fields are required reads as \"with email\".\n\tconst detail = type === 'object' || (type === undefined && fields.length)\n\t\t? (!fields.length ? TYPE_PHRASE.object! : name || type === undefined ? shown : `${TYPE_PHRASE.object} ${shown}`)\n\t\t: [\n\t\t\ts.enum?.length === 1 ? JSON.stringify(s.enum[0]) : s.enum ? `one of ${s.enum.map(v => JSON.stringify(v)).join(', ')}` : TYPE_PHRASE[type ?? ''],\n\t\t\t...ruleText(s, type),\n\t\t].filter(Boolean).join(', ');\n\treturn name && detail ? `${name} (${detail})` : name ?? (detail || 'any value');\n}\n\n/** Swagger 2 writes a non-body parameter's schema on the parameter itself. */\nfunction swaggerParamSchema(p: OpenApiParam): OpenApiSchema {\n\tconst schema: OpenApiSchema = { type: p.type ?? 'string' };\n\tfor (const key of ['enum', 'items', ...RULE_KEYWORDS]) if (p[key] !== undefined) schema[key] = p[key];\n\treturn schema;\n}\n\n/** A tool parameter from a schema. What a parameter cannot carry, a rule or a\n * choice between shapes, is put into its description; a shape no parameter can\n * take at all (a tuple, a recursive tree) still skips the operation, with a\n * warning, rather than drafting a call that cannot be made. */\nfunction openApiParam(raw: OpenApiSchema, ctx: SchemaContext, depth = 0, where = 'body'): HttpToolParam {\n\tif (depth > 12) throw Error('OpenAPI schema is recursive or exceeds 12 levels');\n\tconst s = resolveOpenApiSchema(raw, ctx, where);\n\tconst t = typeOf(s);\n\tif (t === undefined || !PARAM_TYPES.has(t)) throw Error('JSON schema must declare one supported type (optionally nullable)');\n\tconst type = (t === 'integer' ? 'number' : t) as HttpToolParam['type'];\n\t// Choices the API would refuse, a value of another type, are described instead.\n\tconst fits = (v: unknown) => v === null || (t === 'integer' ? Number.isInteger(v) : typeof v === type);\n\tconst choices = s.enum?.length && PRIMITIVE_TYPES.has(t) && s.enum.every(fits) ? s.enum : undefined;\n\tconst rules = ruleText(s, t);\n\tif (s.enum?.length && !choices) rules.push(`one of ${s.enum.map(v => JSON.stringify(v)).join(', ')}`);\n\tconst description = sentences(s.description, rules.length ? `Rules: ${rules.join('; ')}.` : undefined);\n\tconst nullable = s.nullable === true || (choices?.includes(null) ?? false);\n\tconst param: HttpToolParam = {type, ...(t === 'integer' && {integer:true}), ...(description && {description}), ...(choices && {choices}), ...(nullable && {nullable:true})};\n\tif (t === 'object') {\n\t\tif (Object.hasOwn(s.properties ?? {}, '__proto__')) throw Error('Object property __proto__ is not supported');\n\t\t// A map (`additionalProperties` holding a schema) takes any key; its rule is described.\n\t\tif (s.additionalProperties !== undefined) param.additionalProperties = s.additionalProperties !== false;\n\t\tparam.properties = Object.fromEntries(Object.entries(s.properties ?? {})\n\t\t\t.filter(([, value]) => value.readOnly !== true)\n\t\t\t.map(([key, value]) => [key, resolveOpenApiSchema(value, ctx, `${where}.${key}`)] as const)\n\t\t\t.filter(([, value]) => value.readOnly !== true)\n\t\t\t.map(([key, value]) => [key, {...openApiParam(value,ctx,depth+1,`${where}.${key}`),...(s.required?.includes(key) && {required:true})}]));\n\t\tfor (const key of s.required ?? []) if (!Object.hasOwn(s.properties ?? {},key)) throw Error(`Required property ${key} has no schema`);\n\t}\n\tif (t === 'array') {\n\t\tif (!s.items) throw Error('Array schema needs items');\n\t\tparam.items = openApiParam(s.items,ctx,depth+1,`${where}[]`);\n\t}\n\treturn param;\n}\n\n/** Headers are case-insensitive, while query parameter names are not. */\nfunction securityDestination(scheme: SecurityScheme): string {\n\tif (scheme.type === 'apiKey' && scheme.in === 'query') return `query:${scheme.name}`;\n\treturn `header:${(scheme.type === 'apiKey' ? scheme.name! : 'Authorization').toLowerCase()}`;\n}\n\nfunction supportedSecurityScheme(scheme: SecurityScheme | undefined): boolean {\n\treturn !!scheme && (scheme.type === 'basic' ||\n\t\t(scheme.type === 'http' && ['bearer','basic'].includes(scheme.scheme ?? '')) ||\n\t\t(scheme.type === 'apiKey' && ['header','query'].includes(scheme.in ?? '') && !!scheme.name));\n}\n\nfunction selectSecurity(\n\tsecurity: Record<string, string[]>[], schemes: Record<string, SecurityScheme>, options: ImportOptions,\n\tparameters: Iterable<OpenApiParam>,\n): number {\n\tconst headerCredentials = new Set<string>();\n\tfor (const p of parameters) {\n\t\tif (p.in === 'header' && p.name && CREDENTIAL_HEADERS.has(p.name.toLowerCase())) {\n\t\t\theaderCredentials.add(`header:${p.name.toLowerCase()}`);\n\t\t}\n\t}\n\tlet reason = 'No supported security alternative; cookie auth, OAuth acquisition and refresh require explicit configuration';\n\t// Public operations can still declare credential headers as parameters.\n\tfor (const [index, requirement] of (security.length ? security : [{}]).entries()) {\n\t\tconst keys = Object.keys(requirement);\n\t\tif (!keys.every(key => supportedSecurityScheme(schemes[key]))) continue;\n\t\tif (keys.length > 1 && options.secretName) {\n\t\t\treason = 'One secretName cannot represent an AND requirement with multiple credentials';\n\t\t\tcontinue;\n\t\t}\n\t\tconst destinations = keys.map(key => securityDestination(schemes[key]!));\n\t\tif (new Set(destinations).size !== destinations.length) {\n\t\t\treason = 'Security requirements conflict on the same header or query parameter';\n\t\t\tcontinue;\n\t\t}\n\t\t// Check parameter credentials against each alternative before selecting it.\n\t\tif (options.secretName && new Set([...headerCredentials, ...destinations]).size > 1) {\n\t\t\treason = 'One secretName cannot represent multiple credentials in one operation';\n\t\t\tcontinue;\n\t\t}\n\t\treturn security.length ? index : -1;\n\t}\n\tthrow Error(reason);\n}\n\n/** A document can give different schemes names that normalize identically.\n * Allocate per identity and reserve suffix space before truncating. */\nfunction openApiSecretNames(schemes: Record<string, SecurityScheme>, options: ImportOptions) {\n\tconst names = new Map<string, string>();\n\tconst used = new Set<string>();\n\tconst allocate = (identity: string, wanted: string): string => {\n\t\tconst existing = names.get(identity);\n\t\tif (existing) return existing;\n\t\tconst normalized = normalizeSecretName(options.secretName || wanted);\n\t\tlet name = normalized;\n\t\tif (!options.secretName) {\n\t\t\tfor (let index = 2; used.has(name); index++) {\n\t\t\t\tconst suffix = `_${index}`;\n\t\t\t\tname = normalized.slice(0, 64 - suffix.length) + suffix;\n\t\t\t}\n\t\t}\n\t\tnames.set(identity, name);\n\t\tused.add(name);\n\t\treturn name;\n\t};\n\tconst defaults = Object.entries(schemes).filter(([, scheme]) => supportedSecurityScheme(scheme))\n\t\t.map(([key, scheme]) => [key, secretNameFor(scheme.type === 'apiKey' ? scheme.name! : 'Authorization', {})] as const);\n\tfor (const [key, wanted] of defaults) {\n\t\tallocate(`scheme:${key}`, defaults.filter(([, name]) => name === wanted).length > 1 ? key : wanted);\n\t}\n\treturn allocate;\n}\n\n/** The security for an operation the document says nothing about, when it\n * defines a scheme and no `security` array anywhere names one.\n *\n * REAL DOCUMENTS DO THIS ALL THE TIME: the scheme is declared under components\n * and the `security` array is never written. Read literally, every operation is\n * then public, which is how drafted tools came out with no credential and failed\n * every call with a 401 nobody had been warned about. One scheme is unambiguous,\n * so it applies, and the developer is told. With several, choosing would be a\n * guess, so none applies and the warning says so. An operation that writes\n * `security: []` stays public: that was said on purpose. */\nfunction unlistedSecurity(doc: OpenApiDocument, schemes: Record<string, SecurityScheme>, draft: Draft): Record<string, string[]>[] {\n\tconst names = Object.keys(schemes);\n\tconst operations = Object.values(doc.paths ?? {}).flatMap(item => OPENAPI_METHODS.flatMap(method => item?.[method] ?? []));\n\tconst named = [doc.security, ...operations.map(op => op.security)].some(list =>\n\t\tArray.isArray(list) && list.some(requirement => !!requirement && Object.keys(requirement).length > 0));\n\t// Only an operation the document says nothing about takes the default.\n\tconst silent = doc.security === undefined && operations.some(op => op.security === undefined);\n\tif (!names.length || named || !silent) return [];\n\tconst only = names.length === 1 ? names[0]! : undefined;\n\tif (only !== undefined && supportedSecurityScheme(schemes[only])) {\n\t\tdraft.warnings.push({kind:'security-choice',message:\n\t\t\t`The document defines one security scheme, \"${only}\", and no operation lists it under \"security\", ` +\n\t\t\t`so every tool whose operation does not set \"security\" sends it. Remove it from any tool that calls ` +\n\t\t\t`a public endpoint.`});\n\t\treturn [{[only]: []}];\n\t}\n\tdraft.warnings.push({kind:'security-choice',message: only !== undefined\n\t\t? `The document defines the security scheme \"${only}\" (${schemes[only]?.type ?? 'no type'}), which the import cannot set up, ` +\n\t\t\t`and no operation lists it, so the tools send no credential. Add the header the API expects to each tool.`\n\t\t: `The document defines ${names.length} security schemes (${names.map(n => `\"${n}\"`).join(', ')}) and no operation lists one ` +\n\t\t\t`under \"security\", so the tools send no credential. List the one the API uses under \"security\" and import again, ` +\n\t\t\t`or add the header to each tool.`});\n\treturn [];\n}\n\n/** Draft supported OpenAPI/Swagger requests; authentication follows each\n * operation's security requirement, including AND, alternatives and security:[]. */\nexport function fromOpenApi(doc: OpenApiDocument, options: ImportOptions = {}): ImportedTools {\n\tconst draft = new Draft();\n\t// A server variable takes its `default`, so `https://{region}.api.acme.example`\n\t// becomes a written-out host. One with no default stays a placeholder.\n\tconst server = doc.servers?.[0];\n\tconst base = server?.url !== undefined\n\t\t? server.url.replace(/\\{([^}]+)\\}/g, (whole, variable: string) => {\n\t\t\t\tconst value = server.variables?.[variable]?.default;\n\t\t\t\treturn typeof value === 'string' && value !== '' ? value : whole;\n\t\t\t})\n\t\t: (doc.host ? `${doc.schemes?.[0] ?? 'https'}://${doc.host}${doc.basePath ?? ''}` : '');\n\tconst unresolvedServerVariable = /\\{([^}]+)\\}/.exec(base)?.[1];\n\tif (!base) draft.warnings.push({kind:'undefined-variable',message:'The document names no server. Set absolute HTTP(S) tool URLs before creating the agent.'});\n\tconst schemes = doc.components?.securitySchemes ?? doc.securityDefinitions ?? {};\n\tconst secretName = openApiSecretNames(schemes, options);\n\tconst unlisted = unlistedSecurity(doc, schemes, draft);\n\tfor (const [path,item] of Object.entries(doc.paths ?? {})) for (const method of OPENAPI_METHODS) {\n\t\tconst op = item[method]; if (!op) continue;\n\t\tconst candidate = toolNameFrom(op.operationId ?? `${method}_${path}`,'op');\n\t\tif (options.include && !options.include({name:candidate,method:method.toUpperCase(),url:base+path})) continue;\n\t\tconst name = draft.uniqueName(candidate);\n\t\ttry {\n\t\t\tconst ctx: SchemaContext = {doc, notes: new Set()};\n\t\t\tconst merged = new Map<string,OpenApiParam>();\n\t\t\tfor (const raw of [...(item.parameters ?? []),...(op.parameters ?? [])]) {\n\t\t\t\tconst p = dereference(raw,doc); merged.set(p.in+':'+p.name,p);\n\t\t\t}\n\t\t\tconst security = op.security ?? doc.security ?? unlisted;\n\t\t\tconst selected = selectSecurity(security, schemes, options, merged.values());\n\t\t\tconst keys = Object.keys(security[selected] ?? {});\n\t\t\tconst credentialDestinations = new Set(keys.map(key => securityDestination(schemes[key]!)));\n\t\t\tconst params: Record<string,HttpToolParam> = {}, headers: Record<string,string> = {}, query: string[] = [];\n\t\t\tlet url = (base+path).replace(/\\{([^}]+)\\}/g,(_match,p:string)=>`{{paramsEncoded.${draft.param(params,p,{type:'string',required:true},name,'path:'+p)}}}`);\n\t\t\tlet body: string | undefined;\n\t\t\tfor (const p of merged.values()) {\n\t\t\t\tif (!p.name) throw Error('Parameter has no name');\n\t\t\t\t// A declared auth parameter and a security scheme describe the same\n\t\t\t\t// wire credential. Emit it once, as a secret, never as model input.\n\t\t\t\tconst destination = `${p.in}:${p.in === 'header' ? p.name.toLowerCase() : p.name}`;\n\t\t\t\tif (credentialDestinations.has(destination)) continue;\n\t\t\t\tif (p.in === 'cookie') {\n\t\t\t\t\tif (p.required) throw Error('Required cookie parameters are not supported');\n\t\t\t\t\tdraft.warnings.push({kind:'unsupported-body',tool:name,message:`Optional cookie parameter \"${p.name}\" is not supported; it was omitted.`});continue;\n\t\t\t\t}\n\t\t\t\tif (!['path','query','header','body'].includes(p.in ?? '')) throw Error(`Unsupported parameter location ${p.in}`);\n\t\t\t\tconst schema = p.schema ?? swaggerParamSchema(p);\n\t\t\t\t// The parameter's own description leads, and the schema's rules follow it.\n\t\t\t\tconst def = openApiParam(p.description ? {...schema, description: p.description} : schema, ctx, 0, p.name);\n\t\t\t\tif (p.required || p.in === 'path') def.required = true;\n\t\t\t\tif (p.in !== 'body' && (['object','array'].includes(def.type) || (p.style && !['simple','form'].includes(p.style)))) throw Error('Structured parameter serialization is unsupported outside a JSON body');\n\t\t\t\tif (p.in === 'header' && CREDENTIAL_HEADERS.has(p.name.toLowerCase())) {\n\t\t\t\t\tconst secret = secretName(`header:${p.name.toLowerCase()}`, secretNameFor(p.name,{}));headers[p.name]=`{{secrets.${secret}}}`;draft.secret(secret,name,`header parameter ${p.name}`);continue;\n\t\t\t\t}\n\t\t\t\tconst param = draft.param(params,p.name,def,name,p.in+':'+p.name);\n\t\t\t\tif (p.in === 'query') query.push(`${encodeURIComponent(p.name)}={{paramsEncoded.${param}}}`);\n\t\t\t\tif (p.in === 'header') headers[p.name]=`{{params.${param}}}`;\n\t\t\t\tif (p.in === 'body') body=`{{paramsJson.${param}}}`;\n\t\t\t}\n\t\t\tif (op.requestBody && method !== 'get') {\n\t\t\t\tconst requestBody = dereference(op.requestBody,doc);\n\t\t\t\tconst media = Object.entries(requestBody.content ?? {}).find(([type])=>/(?:\\/json|\\+json)$/.test(type));\n\t\t\t\tif (!media?.[1].schema) throw Error('Only a JSON request body with a declared schema is supported');\n\t\t\t\tconst def = openApiParam(media[1].schema,ctx);\n\t\t\t\tif (requestBody.required) def.required = true;\n\t\t\t\tconst param = draft.param(params,'body',def,name,'requestBody');\n\t\t\t\tbody=`{{paramsJson.${param}}}`; headers['Content-Type']=media[0];\n\t\t\t}\n\t\t\tif (security.length > 1) draft.warnings.push({kind:'security-choice',tool:name,message:`Selected security alternative ${selected+1}; review the choice before creating the agent.`});\n\t\t\tfor (const key of keys) {\n\t\t\t\tconst scheme = schemes[key]!;\n\t\t\t\tconst header = scheme.type === 'apiKey' ? scheme.name! : 'Authorization';\n\t\t\t\tconst secret = secretName(`scheme:${key}`, header);\n\t\t\t\tif (scheme.type === 'apiKey' && scheme.in === 'query') query.push(`${encodeURIComponent(header)}={{secretsEncoded.${secret}}}`);\n\t\t\t\telse {\n\t\t\t\t\theaders[header]=scheme.type==='apiKey'?`{{secrets.${secret}}}`:`${scheme.type==='basic'||scheme.scheme==='basic'?'Basic':'Bearer'} {{secrets.${secret}}}`;\n\t\t\t\t}\n\t\t\t\tdraft.secret(secret,name,`securityScheme ${key}`);\n\t\t\t}\n\t\t\tif (query.length) url+='?'+query.join('&');\n\t\t\tif (sendsKeyToPlaceholderHost({url, headers, ...(body !== undefined && {body})})) {\n\t\t\t\tdraft.warnings.push({kind:'unsupported-operation',tool:name,message:\n\t\t\t\t\t`Skipped ${method.toUpperCase()} ${path}: This document's server address uses {${unresolvedServerVariable ?? 'a variable'}}, which has no default value. ` +\n\t\t\t\t\t`Add a default to that server variable, then import again.`});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tdraft.tools.push({name,description:describe([op.description,op.summary],name,method.toUpperCase(),path,draft),method:method.toUpperCase() as HttpTool['method'],url,...(Object.keys(headers).length && {headers}),...(Object.keys(params).length && {params}),...(draft.secretsFor(name).length && {secrets:draft.secretsFor(name)}),...(body!==undefined && method!=='get' && {body})});\n\t\t\tfor (const note of ctx.notes) draft.warnings.push({kind:'unsupported-body',tool:name,message:note});\n\t\t} catch(error) {\n\t\t\tdraft.warnings.push({kind:'unsupported-operation',tool:name,message:`Skipped ${method.toUpperCase()} ${path}: ${(error as Error).message}. Configure this operation explicitly.`});\n\t\t}\n\t}\n\treturn draft.finish(options);\n}\n\n/**\n * Fetch an OpenAPI document and draft tools from it.\n *\n * THE FETCH GOES TO YOUR SERVER, NOT OURS. Pass `headers` if the document itself\n * is behind auth. Nothing about the document is sent to AgentNava: the drafts\n * are built in this process and you decide what to do with them.\n */\nexport async function fromOpenApiUrl(\n\turl: string,\n\toptions: ImportOptions & { headers?: Record<string, string>; fetch?: typeof fetch } = {},\n): Promise<ImportedTools> {\n\tconst f = options.fetch ?? fetch;\n\tconst res = await f(url, { headers: options.headers ?? {} });\n\tif (!res.ok) {\n\t\tthrow new Error(`could not read the OpenAPI document at ${url}: ${res.status}`);\n\t}\n\treturn fromOpenApi((await res.json()) as OpenApiDocument, options);\n}\n\n// ------------------------------------------------------------------- curl\n\n/**\n * Draft one tool from a curl command.\n *\n * THE LOWEST BAR ON PURPOSE. A team with no collection and no document still has\n * a curl command that works, usually pasted in a chat thread, and that is enough\n * to start. Handles the flags people actually use: `-X`, `-H`, `-d`/`--data`,\n * `--data-raw`, `--url`, and a bare URL.\n *\n * Give it a `name` and a `description`: a curl command carries neither, and the\n * description is the field that decides whether the agent picks this tool.\n */\nexport function fromCurl(\n\tcommand: string,\n\toptions: ImportOptions & { name?: string; description?: string } = {},\n): ImportedTools {\n\tconst draft = new Draft();\n\t// Join line continuations, then split on whitespace outside quotes.\n\tconst flat = command.replace(/\\\\\\r?\\n/g, ' ').trim();\n\tconst tokens = flat.match(/\"[^\"]*\"|'[^']*'|\\S+/g) ?? [];\n\tconst unquote = (s: string): string =>\n\t\t(s.startsWith('\"') && s.endsWith('\"')) || (s.startsWith(\"'\") && s.endsWith(\"'\"))\n\t\t\t? s.slice(1, -1)\n\t\t\t: s;\n\n\tlet method = '';\n\tlet url = '';\n\tlet body: string | undefined;\n\tconst headerPairs: Record<string, string> = {};\n\n\tfor (let i = 0; i < tokens.length; i++) {\n\t\tconst t = tokens[i] as string;\n\t\tif (t === 'curl') continue;\n\t\tif (t === '-X' || t === '--request') {\n\t\t\tmethod = unquote(tokens[++i] ?? 'GET').toUpperCase();\n\t\t} else if (t === '-H' || t === '--header') {\n\t\t\tconst raw = unquote(tokens[++i] ?? '');\n\t\t\tconst at = raw.indexOf(':');\n\t\t\tif (at > 0) headerPairs[raw.slice(0, at).trim()] = raw.slice(at + 1).trim();\n\t\t} else if (t === '-d' || t === '--data' || t === '--data-raw' || t === '--data-binary') {\n\t\t\tbody = unquote(tokens[++i] ?? '');\n\t\t} else if (t === '-u' || t === '--user') {\n\t\t\t// `-u user:pass` IS a credential, and it used to vanish without a trace:\n\t\t\t// `-u` matched no branch, and `user:pass` matched neither `^-` nor a\n\t\t\t// url, so both tokens were skipped in silence. Routed through the\n\t\t\t// Authorization header so safeHeaders strips it like any other, which\n\t\t\t// also produces the credential-stripped warning.\n\t\t\theaderPairs.Authorization = `Basic ${unquote(tokens[++i] ?? '')}`;\n\t\t} else if (t === '-b' || t === '--cookie') {\n\t\t\theaderPairs.Cookie = unquote(tokens[++i] ?? '');\n\t\t} else if (t === '--url') {\n\t\t\turl = unquote(tokens[++i] ?? '');\n\t\t} else if (!t.startsWith('-') && /^https?:\\/\\//.test(unquote(t))) {\n\t\t\turl = unquote(t);\n\t\t}\n\t}\n\n\tif (!url) throw new Error('no URL found in that curl command');\n\t// curl's own default: a body implies POST unless -X said otherwise.\n\tif (!method) method = body !== undefined ? 'POST' : 'GET';\n\n\tconst name = draft.uniqueName(toolNameFrom(options.name ?? `${method} ${url}`));\n\tconst headers = safeHeaders(headerPairs, name, draft, options, 'curl');\n\n\tdraft.tools.push({\n\t\tname,\n\t\tdescription: describe([options.description], name, method, url, draft),\n\t\tmethod: (['GET', 'POST', 'PUT', 'DELETE', 'PATCH'].includes(method)\n\t\t\t? method\n\t\t\t: 'GET') as HttpTool['method'],\n\t\turl,\n\t\t...(Object.keys(headers).length > 0 && { headers }),\n\t\t...(draft.secretsFor(name).length > 0 && { secrets: draft.secretsFor(name) }),\n\t\t...(body !== undefined && method !== 'GET' && { body }),\n\t});\n\n\treturn draft.finish(options);\n}\n\n// ------------------------------------------------------------------ entry\n\n/** Where a draft comes from. Exactly one key. */\nexport type ImportSource =\n\t/** An OpenAPI 3 or Swagger 2 document you already have in memory. */\n\t| { openapi: OpenApiDocument }\n\t/** A URL serving one. FastAPI publishes `/openapi.json` for free. The fetch\n\t * goes to YOUR server; nothing is sent to AgentNava. */\n\t| { openapiUrl: string; headers?: Record<string, string>; fetch?: typeof fetch }\n\t/** A Postman collection export, v2.0 or v2.1. */\n\t| { postman: PostmanCollection }\n\t/** One working curl command. */\n\t| { curl: string; name?: string; description?: string };\n\n/**\n * Draft tools from whatever a company already has.\n *\n * NO SOURCE IS THE PRIMARY ONE, and that is deliberate. Which artifact a team\n * can hand you is an accident of what they already keep, not a statement about\n * how good their API is:\n *\n * OpenAPI the actual standard, and what every API gateway publishes\n * (Apigee, MuleSoft, Kong, Azure APIM). Gives real parameter\n * TYPES, required flags and enums. Often auto-generated, which\n * means the descriptions are frequently empty.\n * Postman the most widely used API client there is, and for many teams the\n * only artifact anybody maintains. No parameter types, but it holds\n * the requests somebody has actually RUN: the header names that\n * really work and real example bodies.\n * curl the lowest bar. A team with neither of the above still has a\n * command that works, usually pasted in a chat thread.\n *\n * They all produce the same reviewable shape, because the useful step is not the\n * parsing. It is what comes after: choosing which operations an agent should\n * have and writing what each one is for.\n *\n * ```ts\n * const draft = await importTools({ openapiUrl: 'https://api.acme.com/openapi.json' });\n * const draft = importTools({ postman: collection });\n * const draft = importTools({ curl: 'curl -X POST https://api.acme.com/refunds -d ...' });\n * ```\n */\nexport function importTools(\n\tsource: Exclude<ImportSource, { openapiUrl: string }>,\n\toptions?: ImportOptions,\n): ImportedTools;\nexport function importTools(\n\tsource: Extract<ImportSource, { openapiUrl: string }>,\n\toptions?: ImportOptions,\n): Promise<ImportedTools>;\nexport function importTools(\n\tsource: ImportSource,\n\toptions: ImportOptions = {},\n): ImportedTools | Promise<ImportedTools> {\n\tif ('openapi' in source) return fromOpenApi(source.openapi, options);\n\tif ('postman' in source) return fromPostman(source.postman, options);\n\tif ('curl' in source) {\n\t\treturn fromCurl(source.curl, {\n\t\t\t...options,\n\t\t\t...(source.name !== undefined && { name: source.name }),\n\t\t\t...(source.description !== undefined && { description: source.description }),\n\t\t});\n\t}\n\tif ('openapiUrl' in source) {\n\t\treturn fromOpenApiUrl(source.openapiUrl, {\n\t\t\t...options,\n\t\t\t...(source.headers !== undefined && { headers: source.headers }),\n\t\t\t...(source.fetch !== undefined && { fetch: source.fetch }),\n\t\t});\n\t}\n\t// Named, not \"invalid source\": a caller who passed the wrong key wants to\n\t// know which keys exist.\n\tthrow new Error(\n\t\t'importTools needs one of: { openapi }, { openapiUrl }, { postman }, { curl }',\n\t);\n}\n"]}