@caupulican/pi-ai 0.85.3 → 0.85.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/bedrock-provider.d.ts +1 -0
  2. package/dist/bedrock-provider.d.ts.map +1 -1
  3. package/dist/bedrock-provider.js +1 -0
  4. package/dist/bedrock-provider.js.map +1 -1
  5. package/dist/bedrock-scope.d.ts +35 -0
  6. package/dist/bedrock-scope.d.ts.map +1 -0
  7. package/dist/bedrock-scope.js +141 -0
  8. package/dist/bedrock-scope.js.map +1 -0
  9. package/dist/env-api-keys.d.ts.map +1 -1
  10. package/dist/env-api-keys.js +4 -1
  11. package/dist/env-api-keys.js.map +1 -1
  12. package/dist/image-models.generated.js +1 -1
  13. package/dist/image-models.generated.js.map +1 -1
  14. package/dist/models.generated.d.ts +217 -30
  15. package/dist/models.generated.d.ts.map +1 -1
  16. package/dist/models.generated.js +225 -80
  17. package/dist/models.generated.js.map +1 -1
  18. package/dist/stream.d.ts.map +1 -1
  19. package/dist/stream.js +193 -87
  20. package/dist/stream.js.map +1 -1
  21. package/dist/utils/tool-repair/registry.d.ts +21 -0
  22. package/dist/utils/tool-repair/registry.d.ts.map +1 -1
  23. package/dist/utils/tool-repair/registry.js +27 -0
  24. package/dist/utils/tool-repair/registry.js.map +1 -1
  25. package/dist/utils/tool-repair/text-protocol-history.d.ts.map +1 -1
  26. package/dist/utils/tool-repair/text-protocol-history.js +4 -1
  27. package/dist/utils/tool-repair/text-protocol-history.js.map +1 -1
  28. package/dist/utils/tool-repair/text-protocol-live-filter.d.ts +5 -0
  29. package/dist/utils/tool-repair/text-protocol-live-filter.d.ts.map +1 -1
  30. package/dist/utils/tool-repair/text-protocol-live-filter.js +11 -0
  31. package/dist/utils/tool-repair/text-protocol-live-filter.js.map +1 -1
  32. package/dist/utils/tool-repair/text-protocol.d.ts +5 -1
  33. package/dist/utils/tool-repair/text-protocol.d.ts.map +1 -1
  34. package/dist/utils/tool-repair/text-protocol.js +49 -27
  35. package/dist/utils/tool-repair/text-protocol.js.map +1 -1
  36. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"text-protocol.js","sourceRoot":"","sources":["../../../src/utils/tool-repair/text-protocol.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Tool, ToolCall } from \"../../types.ts\";\n\nexport type TextToolProtocolParseFailure = \"overlap\" | \"unrecognized\" | \"unknown-tool\" | \"validation-failed\";\n\nexport interface ParsedTextToolCalls {\n\tcalls: ToolCall[];\n\ttext: string;\n\tattempted: boolean;\n\tfailure?: TextToolProtocolParseFailure;\n}\n\nexport type TextToolProtocolVariant = \"tool-tag\" | \"tool-call\" | \"fenced-json\" | \"function-xml\";\n\n/** Ordered dialects used by protocol calibration, from most compact/native-like to broadest fallback. */\nexport const TEXT_TOOL_PROTOCOL_VARIANTS: readonly TextToolProtocolVariant[] = [\n\t\"tool-tag\",\n\t\"tool-call\",\n\t\"fenced-json\",\n\t\"function-xml\",\n];\n\nconst PI_CALL_TAG = \"pi:call\";\nconst TOOL_CALL_TAG = \"tool_call\";\nconst FUNCTION_TAG = \"function\";\nconst FENCED_JSON_LABELS = [\"tool_call\", \"tool\", \"json\"] as const;\n\nexport interface TextToolProtocolEnvelopeDelimiter {\n\topener: string;\n\tcloser: string;\n}\n\n/** Conservative streaming delimiters for every envelope dialect accepted by this parser. */\nexport const TEXT_TOOL_PROTOCOL_ENVELOPE_DELIMITERS: readonly TextToolProtocolEnvelopeDelimiter[] = [\n\t{ opener: `<${PI_CALL_TAG}`, closer: `</${PI_CALL_TAG}>` },\n\t{ opener: `<${TOOL_CALL_TAG}`, closer: `</${TOOL_CALL_TAG}>` },\n\t...FENCED_JSON_LABELS.map((label) => ({ opener: `\\`\\`\\`${label}`, closer: \"```\" })),\n\t{ opener: `<${FUNCTION_TAG}`, closer: `</${FUNCTION_TAG}>` },\n];\n\nexport function isTextToolProtocolVariant(value: unknown): value is TextToolProtocolVariant {\n\treturn typeof value === \"string\" && TEXT_TOOL_PROTOCOL_VARIANTS.includes(value as TextToolProtocolVariant);\n}\n\nexport interface TextToolProtocolOptions {\n\tvariant?: TextToolProtocolVariant;\n}\n\ntype EnvelopeKind = \"pi_call\" | \"tool_call\" | \"fenced_json\" | \"function_xml\";\n\ninterface EnvelopeMatch {\n\tkind: EnvelopeKind;\n\tstart: number;\n\tend: number;\n\tname?: string;\n\tbody: string;\n}\n\nconst DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT: TextToolProtocolVariant = \"tool-tag\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction escapeAttribute(value: string): string {\n\treturn value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n\nfunction unescapeAttribute(value: string): string {\n\treturn value\n\t\t.replace(/&quot;/g, '\"')\n\t\t.replace(/&apos;/g, \"'\")\n\t\t.replace(/&lt;/g, \"<\")\n\t\t.replace(/&gt;/g, \">\")\n\t\t.replace(/&amp;/g, \"&\");\n}\n\nfunction escapeXmlText(value: string): string {\n\treturn value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n\nfunction unescapeXmlText(value: string): string {\n\treturn value\n\t\t.replace(/&lt;/g, \"<\")\n\t\t.replace(/&gt;/g, \">\")\n\t\t.replace(/&apos;/g, \"'\")\n\t\t.replace(/&quot;/g, '\"')\n\t\t.replace(/&amp;/g, \"&\");\n}\n\nfunction knownToolNames(tools: readonly Tool[]): Set<string> {\n\treturn new Set(tools.map((tool) => tool.name));\n}\n\nfunction findJsonObjectEnd(text: string, start: number): number | undefined {\n\tlet index = start;\n\twhile (/\\s/.test(text[index] ?? \"\")) index++;\n\tif (text[index] !== \"{\") return undefined;\n\tlet depth = 0;\n\tlet inString = false;\n\tlet escaped = false;\n\tfor (; index < text.length; index++) {\n\t\tconst char = text[index];\n\t\tif (inString) {\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tescaped = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === '\"') inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === '\"') {\n\t\t\tinString = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\") depth++;\n\t\tif (char === \"}\") {\n\t\t\tdepth--;\n\t\t\tif (depth === 0) return index + 1;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction isInsideMatch(index: number, matches: readonly EnvelopeMatch[]): boolean {\n\treturn matches.some((match) => index >= match.start && index < match.end);\n}\n\nfunction findToolEnvelopes(text: string): EnvelopeMatch[] {\n\tconst matches: EnvelopeMatch[] = [];\n\tconst openPiCallEnvelope = new RegExp(`<${PI_CALL_TAG}\\\\s+name=([\"'])(.*?)\\\\1\\\\s*>`, \"g\");\n\tfor (const match of text.matchAll(openPiCallEnvelope)) {\n\t\tif (isInsideMatch(match.index, matches)) continue;\n\t\tconst bodyStart = match.index + match[0].length;\n\t\tconst jsonEnd = findJsonObjectEnd(text, bodyStart);\n\t\tconst closePattern = new RegExp(`</${PI_CALL_TAG}\\\\s*>`, \"g\");\n\t\tclosePattern.lastIndex = jsonEnd ?? bodyStart;\n\t\tconst candidateClose = closePattern.exec(text);\n\t\tconst textBeforeClose = candidateClose ? text.slice(jsonEnd ?? bodyStart, candidateClose.index) : undefined;\n\t\tconst closeMatch =\n\t\t\tcandidateClose &&\n\t\t\t(jsonEnd !== undefined\n\t\t\t\t? textBeforeClose?.trim() === \"\"\n\t\t\t\t: !new RegExp(`<${PI_CALL_TAG}\\\\b`).test(textBeforeClose ?? \"\"))\n\t\t\t\t? candidateClose\n\t\t\t\t: undefined;\n\t\tconst bodyEnd = closeMatch?.index ?? jsonEnd;\n\t\tif (bodyEnd === undefined) continue;\n\t\tmatches.push({\n\t\t\tkind: \"pi_call\",\n\t\t\tstart: match.index,\n\t\t\tend: closeMatch ? closeMatch.index + closeMatch[0].length : bodyEnd,\n\t\t\tname: unescapeAttribute(match[2] ?? \"\"),\n\t\t\tbody: text.slice(bodyStart, bodyEnd),\n\t\t});\n\t}\n\n\tconst toolCallEnvelope = new RegExp(`<${TOOL_CALL_TAG}>([\\\\s\\\\S]*?)</${TOOL_CALL_TAG}>`, \"g\");\n\tfor (const match of text.matchAll(toolCallEnvelope)) {\n\t\tmatches.push({\n\t\t\tkind: \"tool_call\",\n\t\t\tstart: match.index,\n\t\t\tend: match.index + match[0].length,\n\t\t\tbody: match[1] ?? \"\",\n\t\t});\n\t}\n\n\tconst fence = new RegExp(`\\`\\`\\`(?:${FENCED_JSON_LABELS.join(\"|\")})\\\\s*\\\\n([\\\\s\\\\S]*?)\\\\n?\\`\\`\\``, \"gi\");\n\tfor (const match of text.matchAll(fence)) {\n\t\tmatches.push({\n\t\t\tkind: \"fenced_json\",\n\t\t\tstart: match.index,\n\t\t\tend: match.index + match[0].length,\n\t\t\tbody: match[1] ?? \"\",\n\t\t});\n\t}\n\n\tconst functionEnvelope = new RegExp(\n\t\t`<${FUNCTION_TAG}\\\\s+name=([\"'])(.*?)\\\\1\\\\s*>([\\\\s\\\\S]*?)</${FUNCTION_TAG}\\\\s*>`,\n\t\t\"g\",\n\t);\n\tfor (const match of text.matchAll(functionEnvelope)) {\n\t\tmatches.push({\n\t\t\tkind: \"function_xml\",\n\t\t\tstart: match.index,\n\t\t\tend: match.index + match[0].length,\n\t\t\tname: unescapeAttribute(match[2] ?? \"\"),\n\t\t\tbody: match[3] ?? \"\",\n\t\t});\n\t}\n\n\treturn matches.sort((a, b) => a.start - b.start);\n}\n\nfunction hasOverlap(matches: readonly EnvelopeMatch[]): boolean {\n\tlet previousEnd = -1;\n\tfor (const match of matches) {\n\t\tif (match.start < previousEnd) return true;\n\t\tpreviousEnd = match.end;\n\t}\n\treturn false;\n}\n\ninterface ParsedMatch {\n\tmatch: EnvelopeMatch;\n\tcall: ToolCall;\n}\n\n/**\n * Parallel-call parity: a batch is never discarded wholesale over one overlap. Selects the\n * MAXIMUM-cardinality set of non-overlapping, successfully-parsed envelopes - the classic\n * interval-scheduling-maximization greedy (sort by end, keep whatever doesn't conflict with what's\n * already kept). This is deterministic and optimal, not a heuristic guess: when two envelopes\n * genuinely overlap (one nested in a malformed wrapper, most often), the one that ends first is\n * the one that leaves room for the most other calls, so it wins; the loser's byte range is simply\n * never consumed and its text survives as prose via {@link remainingText}.\n */\nfunction selectNonOverlappingParsedMatches(entries: readonly ParsedMatch[]): ParsedMatch[] {\n\tconst byEndThenStart = [...entries].sort((a, b) => a.match.end - b.match.end || a.match.start - b.match.start);\n\tconst kept: ParsedMatch[] = [];\n\tlet previousEnd = -1;\n\tfor (const entry of byEndThenStart) {\n\t\tif (entry.match.start < previousEnd) continue;\n\t\tkept.push(entry);\n\t\tpreviousEnd = entry.match.end;\n\t}\n\treturn kept.sort((a, b) => a.match.start - b.match.start);\n}\n\nfunction remainingText(text: string, matches: readonly EnvelopeMatch[]): string {\n\tlet cursor = 0;\n\tconst pieces: string[] = [];\n\tfor (const match of matches) {\n\t\tpieces.push(text.slice(cursor, match.start));\n\t\tcursor = match.end;\n\t}\n\tpieces.push(text.slice(cursor));\n\treturn pieces.join(\"\");\n}\n\nfunction coerceArguments(value: unknown): {\n\targuments: Record<string, unknown>;\n\trawArguments?: Record<string, unknown>;\n} {\n\tif (isRecord(value)) return { arguments: value };\n\treturn { arguments: value as Record<string, unknown>, rawArguments: { value } };\n}\n\nfunction normalizeSingleQuotedJson(raw: string): string | undefined {\n\tconst trimmed = raw.trim();\n\tif (!/^\\{[\\s\\S]*\\}$/.test(trimmed)) return undefined;\n\tif (!/'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'/.test(trimmed)) return undefined;\n\treturn trimmed.replace(/'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)'/g, (_match, inner: string) => {\n\t\treturn JSON.stringify(inner.replace(/\\\\'/g, \"'\"));\n\t});\n}\n\nfunction normalizeBareJsonObject(raw: string): string | undefined {\n\tconst trimmed = raw.trim();\n\tif (!/^\\{[\\s\\S]*\\}$/.test(trimmed)) return undefined;\n\tlet changed = false;\n\tlet normalized = trimmed.replace(\n\t\t/([{,]\\s*)([A-Za-z_][A-Za-z0-9_-]*)(\\s*:)/g,\n\t\t(_match, prefix: string, key: string, suffix: string) => {\n\t\t\tchanged = true;\n\t\t\treturn `${prefix}${JSON.stringify(key)}${suffix}`;\n\t\t},\n\t);\n\tnormalized = normalized.replace(/:\\s*([A-Za-z_./-][A-Za-z0-9_./:-]*)(?=\\s*[,}])/g, (_match, value: string) => {\n\t\tif ([\"true\", \"false\", \"null\"].includes(value)) return `:${value}`;\n\t\tchanged = true;\n\t\treturn `:${JSON.stringify(value)}`;\n\t});\n\treturn changed ? normalized : undefined;\n}\n\nfunction normalizedJsonCandidates(raw: string): string[] {\n\tconst candidates: string[] = [];\n\tconst objectEnd = findJsonObjectEnd(raw, 0);\n\tif (objectEnd !== undefined && raw.slice(objectEnd).trim()) candidates.push(raw.slice(0, objectEnd));\n\tconst singleQuoted = normalizeSingleQuotedJson(raw);\n\tif (singleQuoted) candidates.push(singleQuoted);\n\tconst bare = normalizeBareJsonObject(raw);\n\tif (bare) candidates.push(bare);\n\tconst singleQuotedBare = singleQuoted ? normalizeBareJsonObject(singleQuoted) : undefined;\n\tif (singleQuotedBare) candidates.push(singleQuotedBare);\n\treturn candidates;\n}\n\nfunction parseJsonValue(raw: string): { ok: true; value: unknown } | { ok: false } {\n\ttry {\n\t\treturn { ok: true, value: JSON.parse(raw) as unknown };\n\t} catch {\n\t\tfor (const normalized of normalizedJsonCandidates(raw)) {\n\t\t\ttry {\n\t\t\t\treturn { ok: true, value: JSON.parse(normalized) as unknown };\n\t\t\t} catch {\n\t\t\t\t// Try the next bounded normalization candidate.\n\t\t\t}\n\t\t}\n\t\treturn { ok: false };\n\t}\n}\n\nfunction parseJsonObject(raw: string): Record<string, unknown> | undefined {\n\tconst parsed = parseJsonValue(raw);\n\treturn parsed.ok && isRecord(parsed.value) ? parsed.value : undefined;\n}\n\nfunction textToolErrorMessage(name: string, names: readonly string[]): string | undefined {\n\tif (names.includes(name)) return undefined;\n\treturn `Unknown tool \"${name}\". Valid tools: ${names.join(\", \")}.`;\n}\n\nfunction extractNameFromMalformedJson(raw: string): string | undefined {\n\tconst match = /\"(?:name|tool)\"\\s*:\\s*\"([^\"]+)\"/.exec(raw);\n\treturn match?.[1];\n}\n\nfunction parsePiCallEnvelope(match: EnvelopeMatch, names: readonly string[], index: number): ToolCall | undefined {\n\tif (!match.name) return undefined;\n\tconst parsed = parseJsonValue(match.body);\n\tconst args = parsed.ok ? coerceArguments(parsed.value) : coerceArguments(match.body.trim());\n\treturn {\n\t\ttype: \"toolCall\",\n\t\tid: `text-tool-${index}`,\n\t\tname: match.name,\n\t\targuments: args.arguments,\n\t\trawArguments: parsed.ok ? args.rawArguments : { text: match.body.trim() },\n\t\tsource: \"text-protocol\",\n\t\terrorMessage: textToolErrorMessage(match.name, names),\n\t};\n}\n\nfunction parseFunctionXmlEnvelope(match: EnvelopeMatch, names: readonly string[], index: number): ToolCall | undefined {\n\tif (!match.name) return undefined;\n\tif (new RegExp(`<\\\\/?${FUNCTION_TAG}\\\\b`, \"i\").test(match.body)) return undefined;\n\tconst params: Record<string, string> = {};\n\tlet cursor = 0;\n\tlet sawParam = false;\n\tconst paramPattern = /<param\\s+name=([\"'])(.*?)\\1\\s*>([\\s\\S]*?)<\\/param\\s*>/g;\n\tfor (const param of match.body.matchAll(paramPattern)) {\n\t\tif (match.body.slice(cursor, param.index).trim()) return undefined;\n\t\tconst name = unescapeAttribute(param[2] ?? \"\");\n\t\tif (!name || name in params) return undefined;\n\t\tparams[name] = unescapeXmlText((param[3] ?? \"\").trim());\n\t\tcursor = param.index + param[0].length;\n\t\tsawParam = true;\n\t}\n\tif (match.body.slice(cursor).trim()) return undefined;\n\tif (!sawParam) return undefined;\n\treturn {\n\t\ttype: \"toolCall\",\n\t\tid: `text-tool-${index}`,\n\t\tname: match.name,\n\t\targuments: params,\n\t\tsource: \"text-protocol\",\n\t\terrorMessage: textToolErrorMessage(match.name, names),\n\t};\n}\n\nfunction parseEnvelope(match: EnvelopeMatch, names: readonly string[], index: number): ToolCall | undefined {\n\tif (match.kind === \"pi_call\") return parsePiCallEnvelope(match, names, index);\n\tif (match.kind === \"function_xml\") return parseFunctionXmlEnvelope(match, names, index);\n\n\tconst parsed = parseJsonObject(match.body);\n\tif (!parsed) {\n\t\tconst name = extractNameFromMalformedJson(match.body);\n\t\tif (!name) return undefined;\n\t\treturn {\n\t\t\ttype: \"toolCall\",\n\t\t\tid: `text-tool-${index}`,\n\t\t\tname,\n\t\t\targuments: match.body.trim() as unknown as Record<string, unknown>,\n\t\t\trawArguments: { text: match.body.trim() },\n\t\t\tsource: \"text-protocol\",\n\t\t\terrorMessage: textToolErrorMessage(name, names),\n\t\t};\n\t}\n\n\tconst wrappedTool = isRecord(parsed.tool) ? parsed.tool : undefined;\n\tconst nameValue = parsed.name ?? (typeof parsed.tool === \"string\" ? parsed.tool : undefined) ?? wrappedTool?.name;\n\tif (typeof nameValue !== \"string\") return undefined;\n\tconst argsValue = parsed.arguments ?? parsed.args ?? wrappedTool?.arguments ?? wrappedTool?.args ?? {};\n\tconst args = coerceArguments(argsValue);\n\treturn {\n\t\ttype: \"toolCall\",\n\t\tid: `text-tool-${index}`,\n\t\tname: nameValue,\n\t\targuments: args.arguments,\n\t\trawArguments: args.rawArguments,\n\t\tsource: \"text-protocol\",\n\t\terrorMessage: textToolErrorMessage(nameValue, names),\n\t};\n}\n\nexport function normalizeTextToolProtocolOptions(\n\toption: boolean | TextToolProtocolOptions | undefined,\n): TextToolProtocolOptions | undefined {\n\tif (!option) return undefined;\n\tif (option === true) return { variant: DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT };\n\treturn { variant: option.variant ?? DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT };\n}\n\nfunction functionXmlParamValue(value: unknown): string {\n\tif (typeof value === \"string\") return value;\n\tconst json = JSON.stringify(value);\n\treturn json ?? String(value);\n}\n\nfunction formatFunctionXmlEnvelope(toolName: string, argsJson: string): string {\n\tconst args = parseJsonObject(argsJson) ?? {};\n\tconst params = Object.entries(args)\n\t\t.map(\n\t\t\t([name, value]) =>\n\t\t\t\t`<param name=\"${escapeAttribute(name)}\">${escapeXmlText(functionXmlParamValue(value))}</param>`,\n\t\t)\n\t\t.join(\"\");\n\treturn `<${FUNCTION_TAG} name=\"${escapeAttribute(toolName)}\">${params}</${FUNCTION_TAG}>`;\n}\n\n/**\n * Renders one call as the wire text for `variant`. Exported read-only for the history round-trip\n * render: it reuses this so a prior text-protocol call is echoed back to the model in the\n * exact dialect the primer taught it, instead of a second parallel formatting path.\n */\nexport function formatVariantEnvelope(variant: TextToolProtocolVariant, toolName: string, argsJson: string): string {\n\tif (variant === \"tool-call\") {\n\t\treturn `<${TOOL_CALL_TAG}>{\"name\":\"${toolName}\",\"arguments\":${argsJson}}</${TOOL_CALL_TAG}>`;\n\t}\n\tif (variant === \"fenced-json\") {\n\t\treturn `\\`\\`\\`${FENCED_JSON_LABELS[0]}\\n{\"name\":\"${toolName}\",\"arguments\":${argsJson}}\\n\\`\\`\\``;\n\t}\n\tif (variant === \"function-xml\") return formatFunctionXmlEnvelope(toolName, argsJson);\n\treturn `<${PI_CALL_TAG} name=\"${escapeAttribute(toolName)}\">${argsJson}</${PI_CALL_TAG}>`;\n}\n\nfunction schemaRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn isRecord(value) ? value : undefined;\n}\n\nfunction firstString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nfunction schemaType(schema: Record<string, unknown>): string | undefined {\n\tconst type = schema.type;\n\tif (typeof type === \"string\") return type;\n\tif (!Array.isArray(type)) return undefined;\n\treturn type.filter(firstString).find((entry) => entry !== \"null\");\n}\n\nfunction stringExampleForProperty(propertyName: string | undefined): string {\n\tif (propertyName === \"path\") return \"src/index.ts\";\n\tif (propertyName === \"command\") return \"echo ok\";\n\tif (propertyName === \"oldText\") return \"foo\";\n\tif (propertyName === \"newText\") return \"bar\";\n\tif (propertyName === \"content\") return \"text\";\n\treturn \"value\";\n}\n\nfunction exampleValueForSchema(schemaValue: unknown, propertyName?: string): unknown {\n\tconst schema = schemaRecord(schemaValue);\n\tif (!schema) return stringExampleForProperty(propertyName);\n\tconst constValue = schema.const;\n\tif (constValue !== undefined) return constValue;\n\tconst enumValues = Array.isArray(schema.enum) ? schema.enum : [];\n\tif (enumValues.length > 0) return enumValues[0];\n\tconst defaultValue = schema.default;\n\tif (defaultValue !== undefined) return defaultValue;\n\tconst type = schemaType(schema);\n\tif (type === \"number\" || type === \"integer\") return 1;\n\tif (type === \"boolean\") return true;\n\tif (type === \"array\") return [exampleValueForSchema(schema.items, propertyName)];\n\tif (type === \"object\") return exampleArgumentsForParameters(schema);\n\treturn stringExampleForProperty(propertyName);\n}\n\nfunction requiredPropertyNames(parameters: Record<string, unknown> | undefined): string[] {\n\treturn Array.isArray(parameters?.required) ? parameters.required.filter(firstString) : [];\n}\n\nfunction exampleArgumentsForParameters(parametersValue: unknown): Record<string, unknown> {\n\tconst parameters = schemaRecord(parametersValue);\n\tconst properties = schemaRecord(parameters?.properties);\n\tif (!properties) return {};\n\tconst args: Record<string, unknown> = {};\n\tfor (const name of requiredPropertyNames(parameters)) {\n\t\targs[name] = exampleValueForSchema(properties[name], name);\n\t}\n\treturn args;\n}\n\nfunction typeLabel(schemaValue: unknown): string {\n\tconst schema = schemaRecord(schemaValue);\n\tif (!schema) return \"string\";\n\tconst enumValues = Array.isArray(schema.enum) ? schema.enum : [];\n\tif (enumValues.length > 0 && enumValues.every((entry) => [\"string\", \"number\", \"boolean\"].includes(typeof entry))) {\n\t\treturn enumValues.map(String).join(\"|\");\n\t}\n\tconst type = schemaType(schema);\n\tif (type === \"integer\" || type === \"number\") return \"number\";\n\tif (type === \"boolean\") return \"bool\";\n\tif (type === \"array\") return `${typeLabel(schema.items)}[]`;\n\tif (type === \"object\") {\n\t\tconst properties = schemaRecord(schema.properties);\n\t\tif (!properties) return \"{}\";\n\t\tconst entries = Object.entries(properties)\n\t\t\t.slice(0, 4)\n\t\t\t.map(([name, value]) => `${name}:${typeLabel(value)}`);\n\t\tconst suffix = Object.keys(properties).length > entries.length ? \",...\" : \"\";\n\t\treturn `{${entries.join(\",\")}${suffix}}`;\n\t}\n\treturn \"string\";\n}\n\nfunction orderedPropertyNames(properties: Record<string, unknown>, required: readonly string[]): string[] {\n\tconst requiredSet = new Set(required);\n\treturn [\n\t\t...required.filter((name) => name in properties),\n\t\t...Object.keys(properties).filter((name) => !requiredSet.has(name)),\n\t];\n}\n\nfunction formatDefault(value: unknown): string {\n\tconst json = JSON.stringify(value);\n\treturn json ? `=${json}` : \"\";\n}\n\nfunction formatToolProjection(tool: Tool): string {\n\tconst parameters = schemaRecord(tool.parameters);\n\tconst properties = schemaRecord(parameters?.properties);\n\tconst required = requiredPropertyNames(parameters);\n\tconst requiredSet = new Set(required);\n\tconst args = properties\n\t\t? orderedPropertyNames(properties, required)\n\t\t\t\t.map((name) => {\n\t\t\t\t\tconst schema = schemaRecord(properties[name]);\n\t\t\t\t\tconst optional = requiredSet.has(name) ? \"\" : \"?\";\n\t\t\t\t\tconst defaultText = schema && \"default\" in schema ? formatDefault(schema.default) : \"\";\n\t\t\t\t\treturn `${name}:${typeLabel(schema)}${optional}${defaultText}`;\n\t\t\t\t})\n\t\t\t\t.join(\", \")\n\t\t: \"\";\n\tconst description = tool.description.replace(/\\s+/g, \" \").trim();\n\treturn `${tool.name}(${args}) - ${description}`;\n}\n\nfunction toolHasArrayParameter(tool: Tool): boolean {\n\tconst parameters = schemaRecord(tool.parameters);\n\tconst properties = schemaRecord(parameters?.properties);\n\tif (!properties) return false;\n\treturn Object.values(properties).some((schemaValue) => schemaType(schemaRecord(schemaValue) ?? {}) === \"array\");\n}\n\nfunction exampleTools(tools: readonly Tool[]): Tool[] {\n\tconst examples: Tool[] = [];\n\tconst readTool = tools.find((tool) => tool.name === \"read\");\n\tif (readTool) examples.push(readTool);\n\tif (examples.length === 0) examples.push(tools[0]);\n\tconst editTool = tools.find((tool) => tool.name === \"edit\" && !examples.includes(tool));\n\tconst arrayTool = editTool ?? tools.find((tool) => !examples.includes(tool) && toolHasArrayParameter(tool));\n\tif (arrayTool) examples.push(arrayTool);\n\treturn examples;\n}\n\nfunction protocolHeader(variant: TextToolProtocolVariant): string[] {\n\treturn [\n\t\t\"Text tool-call protocol is enabled. To call a tool, emit an envelope in exactly this shape:\",\n\t\tformatVariantEnvelope(variant, \"TOOL\", '{\"arg\":\"value\"}'),\n\t\t\"Arguments are one JSON object: double-quoted keys/strings, arrays as [ ] (never a quoted string), optional args omitted rather than null.\",\n\t\t\"Reasoning may appear as prose before an envelope, never inside one.\",\n\t\t\"Emit several envelopes in one reply to call multiple tools in parallel; each is executed and answered on its own.\",\n\t\t\"Files, directories, searches, edits, writes, and shell commands always go through a tool envelope - never type out shell commands, file paths, or invented results yourself.\",\n\t];\n}\n\nexport function generateTextToolProtocolPrimer(tools: readonly Tool[], options?: TextToolProtocolOptions): string {\n\tif (tools.length === 0) return \"\";\n\tconst variant = options?.variant ?? DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT;\n\tconst lines = [...protocolHeader(variant), \"Examples:\"];\n\tfor (const tool of exampleTools(tools)) {\n\t\tlines.push(\n\t\t\tformatVariantEnvelope(variant, tool.name, JSON.stringify(exampleArgumentsForParameters(tool.parameters))),\n\t\t);\n\t}\n\tlines.push(\"Available tools:\");\n\tfor (const tool of tools) {\n\t\tlines.push(formatToolProjection(tool));\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nexport function parseTextToolCalls(text: string, knownTools: readonly Tool[]): ParsedTextToolCalls {\n\tif (knownTools.length === 0) return { calls: [], text, attempted: false };\n\tconst matches = findToolEnvelopes(text);\n\tif (matches.length === 0) return { calls: [], text, attempted: false };\n\tconst names = [...knownToolNames(knownTools)];\n\tconst parsed: ParsedMatch[] = [];\n\tfor (const [index, match] of matches.entries()) {\n\t\tconst call = parseEnvelope(match, names, index + 1);\n\t\tif (call) parsed.push({ match, call });\n\t}\n\tconst selected = selectNonOverlappingParsedMatches(parsed);\n\tif (selected.length === 0) {\n\t\treturn { calls: [], text, attempted: true, failure: hasOverlap(matches) ? \"overlap\" : \"unrecognized\" };\n\t}\n\tconst remainder = remainingText(\n\t\ttext,\n\t\tselected.map((entry) => entry.match),\n\t);\n\treturn { calls: selected.map((entry) => entry.call), text: remainder.trim(), attempted: true };\n}\n"]}
1
+ {"version":3,"file":"text-protocol.js","sourceRoot":"","sources":["../../../src/utils/tool-repair/text-protocol.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Tool, ToolCall } from \"../../types.ts\";\n\nexport type TextToolProtocolParseFailure = \"overlap\" | \"unrecognized\" | \"unknown-tool\" | \"validation-failed\";\n\nexport interface ParsedTextToolCalls {\n\tcalls: ToolCall[];\n\ttext: string;\n\tattempted: boolean;\n\tfailure?: TextToolProtocolParseFailure;\n}\n\nexport type TextToolProtocolVariant = \"tool-tag\" | \"tool-call\" | \"fenced-json\" | \"function-xml\";\n\n/** Ordered dialects used by protocol calibration, from most compact/native-like to broadest fallback. */\nexport const TEXT_TOOL_PROTOCOL_VARIANTS: readonly TextToolProtocolVariant[] = [\n\t\"tool-tag\",\n\t\"tool-call\",\n\t\"fenced-json\",\n\t\"function-xml\",\n];\n\nconst PI_CALL_TAG = \"pi:call\";\nconst TOOL_CALL_TAG = \"tool_call\";\nconst FUNCTION_TAG = \"function\";\nconst FENCED_JSON_LABELS = [\"tool_call\", \"tool\", \"json\"] as const;\n\nexport interface TextToolProtocolEnvelopeDelimiter {\n\topener: string;\n\tcloser: string;\n}\n\n/** Conservative streaming delimiters for every envelope dialect accepted by this parser. */\nexport const TEXT_TOOL_PROTOCOL_ENVELOPE_DELIMITERS: readonly TextToolProtocolEnvelopeDelimiter[] = [\n\t{ opener: `<${PI_CALL_TAG}`, closer: `</${PI_CALL_TAG}>` },\n\t{ opener: `<${TOOL_CALL_TAG}`, closer: `</${TOOL_CALL_TAG}>` },\n\t...FENCED_JSON_LABELS.map((label) => ({ opener: `\\`\\`\\`${label}`, closer: \"```\" })),\n\t{ opener: `<${FUNCTION_TAG}`, closer: `</${FUNCTION_TAG}>` },\n];\n\nexport function isTextToolProtocolVariant(value: unknown): value is TextToolProtocolVariant {\n\treturn typeof value === \"string\" && TEXT_TOOL_PROTOCOL_VARIANTS.includes(value as TextToolProtocolVariant);\n}\n\nexport interface TextToolProtocolOptions {\n\tvariant?: TextToolProtocolVariant;\n}\n\nexport interface TextToolProtocolParseOptions {\n\tcallIdPrefix?: string;\n\tcallIndexOffset?: number;\n}\n\ntype EnvelopeKind = \"pi_call\" | \"tool_call\" | \"fenced_json\" | \"function_xml\";\n\ninterface EnvelopeMatch {\n\tkind: EnvelopeKind;\n\tstart: number;\n\tend: number;\n\tname?: string;\n\tbody: string;\n}\n\nconst DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT: TextToolProtocolVariant = \"tool-tag\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction escapeAttribute(value: string): string {\n\treturn value.replace(/&/g, \"&amp;\").replace(/\"/g, \"&quot;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n\nfunction unescapeAttribute(value: string): string {\n\treturn value\n\t\t.replace(/&quot;/g, '\"')\n\t\t.replace(/&apos;/g, \"'\")\n\t\t.replace(/&lt;/g, \"<\")\n\t\t.replace(/&gt;/g, \">\")\n\t\t.replace(/&amp;/g, \"&\");\n}\n\nfunction escapeXmlText(value: string): string {\n\treturn value.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/>/g, \"&gt;\");\n}\n\nfunction unescapeXmlText(value: string): string {\n\treturn value\n\t\t.replace(/&lt;/g, \"<\")\n\t\t.replace(/&gt;/g, \">\")\n\t\t.replace(/&apos;/g, \"'\")\n\t\t.replace(/&quot;/g, '\"')\n\t\t.replace(/&amp;/g, \"&\");\n}\n\nfunction knownToolNames(tools: readonly Tool[]): Set<string> {\n\treturn new Set(tools.map((tool) => tool.name));\n}\n\nfunction findJsonObjectEnd(text: string, start: number): number | undefined {\n\tlet index = start;\n\twhile (/\\s/.test(text[index] ?? \"\")) index++;\n\tif (text[index] !== \"{\") return undefined;\n\tlet depth = 0;\n\tlet inString = false;\n\tlet escaped = false;\n\tfor (; index < text.length; index++) {\n\t\tconst char = text[index];\n\t\tif (inString) {\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === \"\\\\\") {\n\t\t\t\tescaped = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (char === '\"') inString = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === '\"') {\n\t\t\tinString = true;\n\t\t\tcontinue;\n\t\t}\n\t\tif (char === \"{\") depth++;\n\t\tif (char === \"}\") {\n\t\t\tdepth--;\n\t\t\tif (depth === 0) return index + 1;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nfunction isInsideMatch(index: number, matches: readonly EnvelopeMatch[]): boolean {\n\treturn matches.some((match) => index >= match.start && index < match.end);\n}\n\nfunction findToolEnvelopes(text: string): EnvelopeMatch[] {\n\tconst matches: EnvelopeMatch[] = [];\n\tconst openPiCallEnvelope = new RegExp(`<${PI_CALL_TAG}\\\\s+name=([\"'])(.*?)\\\\1\\\\s*>`, \"g\");\n\tfor (const match of text.matchAll(openPiCallEnvelope)) {\n\t\tif (isInsideMatch(match.index, matches)) continue;\n\t\tconst bodyStart = match.index + match[0].length;\n\t\tconst jsonEnd = findJsonObjectEnd(text, bodyStart);\n\t\tconst closePattern = new RegExp(`</${PI_CALL_TAG}\\\\s*>`, \"g\");\n\t\tclosePattern.lastIndex = jsonEnd ?? bodyStart;\n\t\tconst candidateClose = closePattern.exec(text);\n\t\tconst textBeforeClose = candidateClose ? text.slice(jsonEnd ?? bodyStart, candidateClose.index) : undefined;\n\t\tconst closeMatch =\n\t\t\tcandidateClose &&\n\t\t\t(jsonEnd !== undefined\n\t\t\t\t? textBeforeClose?.trim() === \"\"\n\t\t\t\t: !new RegExp(`<${PI_CALL_TAG}\\\\b`).test(textBeforeClose ?? \"\"))\n\t\t\t\t? candidateClose\n\t\t\t\t: undefined;\n\t\tconst bodyEnd = closeMatch?.index ?? jsonEnd;\n\t\tif (bodyEnd === undefined) continue;\n\t\tmatches.push({\n\t\t\tkind: \"pi_call\",\n\t\t\tstart: match.index,\n\t\t\tend: closeMatch ? closeMatch.index + closeMatch[0].length : bodyEnd,\n\t\t\tname: unescapeAttribute(match[2] ?? \"\"),\n\t\t\tbody: text.slice(bodyStart, bodyEnd),\n\t\t});\n\t}\n\n\tconst toolCallEnvelope = new RegExp(`<${TOOL_CALL_TAG}>([\\\\s\\\\S]*?)</${TOOL_CALL_TAG}>`, \"g\");\n\tfor (const match of text.matchAll(toolCallEnvelope)) {\n\t\tmatches.push({\n\t\t\tkind: \"tool_call\",\n\t\t\tstart: match.index,\n\t\t\tend: match.index + match[0].length,\n\t\t\tbody: match[1] ?? \"\",\n\t\t});\n\t}\n\n\tconst fence = new RegExp(`\\`\\`\\`(?:${FENCED_JSON_LABELS.join(\"|\")})\\\\s*\\\\n([\\\\s\\\\S]*?)\\\\n?\\`\\`\\``, \"gi\");\n\tfor (const match of text.matchAll(fence)) {\n\t\tmatches.push({\n\t\t\tkind: \"fenced_json\",\n\t\t\tstart: match.index,\n\t\t\tend: match.index + match[0].length,\n\t\t\tbody: match[1] ?? \"\",\n\t\t});\n\t}\n\n\tconst functionEnvelope = new RegExp(\n\t\t`<${FUNCTION_TAG}\\\\s+name=([\"'])(.*?)\\\\1\\\\s*>([\\\\s\\\\S]*?)</${FUNCTION_TAG}\\\\s*>`,\n\t\t\"g\",\n\t);\n\tfor (const match of text.matchAll(functionEnvelope)) {\n\t\tmatches.push({\n\t\t\tkind: \"function_xml\",\n\t\t\tstart: match.index,\n\t\t\tend: match.index + match[0].length,\n\t\t\tname: unescapeAttribute(match[2] ?? \"\"),\n\t\t\tbody: match[3] ?? \"\",\n\t\t});\n\t}\n\n\treturn matches.sort((a, b) => a.start - b.start);\n}\n\nfunction hasOverlap(matches: readonly EnvelopeMatch[]): boolean {\n\tlet previousEnd = -1;\n\tfor (const match of matches) {\n\t\tif (match.start < previousEnd) return true;\n\t\tpreviousEnd = match.end;\n\t}\n\treturn false;\n}\n\ninterface ParsedMatch {\n\tmatch: EnvelopeMatch;\n\tcall: ToolCall;\n}\n\n/**\n * Parallel-call parity: a batch is never discarded wholesale over one overlap. Selects the\n * MAXIMUM-cardinality set of non-overlapping, successfully-parsed envelopes - the classic\n * interval-scheduling-maximization greedy (sort by end, keep whatever doesn't conflict with what's\n * already kept). This is deterministic and optimal, not a heuristic guess: when two envelopes\n * genuinely overlap (one nested in a malformed wrapper, most often), the one that ends first is\n * the one that leaves room for the most other calls, so it wins; the loser's byte range is simply\n * never consumed and its text survives as prose via {@link remainingText}.\n */\nfunction selectNonOverlappingParsedMatches(entries: readonly ParsedMatch[]): ParsedMatch[] {\n\tconst byEndThenStart = [...entries].sort((a, b) => a.match.end - b.match.end || a.match.start - b.match.start);\n\tconst kept: ParsedMatch[] = [];\n\tlet previousEnd = -1;\n\tfor (const entry of byEndThenStart) {\n\t\tif (entry.match.start < previousEnd) continue;\n\t\tkept.push(entry);\n\t\tpreviousEnd = entry.match.end;\n\t}\n\treturn kept.sort((a, b) => a.match.start - b.match.start);\n}\n\nfunction remainingText(text: string, matches: readonly EnvelopeMatch[]): string {\n\tlet cursor = 0;\n\tconst pieces: string[] = [];\n\tfor (const match of matches) {\n\t\tpieces.push(text.slice(cursor, match.start));\n\t\tcursor = match.end;\n\t}\n\tpieces.push(text.slice(cursor));\n\treturn pieces.join(\"\");\n}\n\nfunction coerceArguments(value: unknown): {\n\targuments: Record<string, unknown>;\n\trawArguments?: Record<string, unknown>;\n} {\n\tif (isRecord(value)) return { arguments: value };\n\treturn { arguments: value as Record<string, unknown>, rawArguments: { value } };\n}\n\nfunction normalizeSingleQuotedJson(raw: string): string | undefined {\n\tconst trimmed = raw.trim();\n\tif (!/^\\{[\\s\\S]*\\}$/.test(trimmed)) return undefined;\n\tif (!/'[^'\\\\]*(?:\\\\.[^'\\\\]*)*'/.test(trimmed)) return undefined;\n\treturn trimmed.replace(/'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)'/g, (_match, inner: string) => {\n\t\treturn JSON.stringify(inner.replace(/\\\\'/g, \"'\"));\n\t});\n}\n\nfunction normalizeBareJsonObject(raw: string): string | undefined {\n\tconst trimmed = raw.trim();\n\tif (!/^\\{[\\s\\S]*\\}$/.test(trimmed)) return undefined;\n\tlet changed = false;\n\tlet normalized = trimmed.replace(\n\t\t/([{,]\\s*)([A-Za-z_][A-Za-z0-9_-]*)(\\s*:)/g,\n\t\t(_match, prefix: string, key: string, suffix: string) => {\n\t\t\tchanged = true;\n\t\t\treturn `${prefix}${JSON.stringify(key)}${suffix}`;\n\t\t},\n\t);\n\tnormalized = normalized.replace(/:\\s*([A-Za-z_./-][A-Za-z0-9_./:-]*)(?=\\s*[,}])/g, (_match, value: string) => {\n\t\tif ([\"true\", \"false\", \"null\"].includes(value)) return `:${value}`;\n\t\tchanged = true;\n\t\treturn `:${JSON.stringify(value)}`;\n\t});\n\treturn changed ? normalized : undefined;\n}\n\nfunction normalizedJsonCandidates(raw: string): string[] {\n\tconst candidates: string[] = [];\n\tconst objectEnd = findJsonObjectEnd(raw, 0);\n\tif (objectEnd !== undefined && raw.slice(objectEnd).trim()) candidates.push(raw.slice(0, objectEnd));\n\tconst singleQuoted = normalizeSingleQuotedJson(raw);\n\tif (singleQuoted) candidates.push(singleQuoted);\n\tconst bare = normalizeBareJsonObject(raw);\n\tif (bare) candidates.push(bare);\n\tconst singleQuotedBare = singleQuoted ? normalizeBareJsonObject(singleQuoted) : undefined;\n\tif (singleQuotedBare) candidates.push(singleQuotedBare);\n\treturn candidates;\n}\n\nfunction parseJsonValue(raw: string): { ok: true; value: unknown } | { ok: false } {\n\ttry {\n\t\treturn { ok: true, value: JSON.parse(raw) as unknown };\n\t} catch {\n\t\tfor (const normalized of normalizedJsonCandidates(raw)) {\n\t\t\ttry {\n\t\t\t\treturn { ok: true, value: JSON.parse(normalized) as unknown };\n\t\t\t} catch {\n\t\t\t\t// Try the next bounded normalization candidate.\n\t\t\t}\n\t\t}\n\t\treturn { ok: false };\n\t}\n}\n\nfunction parseJsonObject(raw: string): Record<string, unknown> | undefined {\n\tconst parsed = parseJsonValue(raw);\n\treturn parsed.ok && isRecord(parsed.value) ? parsed.value : undefined;\n}\n\nfunction textToolErrorMessage(name: string, names: readonly string[]): string | undefined {\n\tif (names.includes(name)) return undefined;\n\treturn `Unknown tool \"${name}\". Valid tools: ${names.join(\", \")}.`;\n}\n\nfunction extractNameFromMalformedJson(raw: string): string | undefined {\n\tconst match = /\"(?:name|tool)\"\\s*:\\s*\"([^\"]+)\"/.exec(raw);\n\treturn match?.[1];\n}\n\nfunction textToolCallId(prefix: string, index: number): string {\n\treturn `${prefix}-${index}`;\n}\n\nfunction parsePiCallEnvelope(\n\tmatch: EnvelopeMatch,\n\tnames: readonly string[],\n\tindex: number,\n\tidPrefix: string,\n): ToolCall | undefined {\n\tif (!match.name) return undefined;\n\tconst parsed = parseJsonValue(match.body);\n\tconst args = parsed.ok ? coerceArguments(parsed.value) : coerceArguments(match.body.trim());\n\treturn {\n\t\ttype: \"toolCall\",\n\t\tid: textToolCallId(idPrefix, index),\n\t\tname: match.name,\n\t\targuments: args.arguments,\n\t\trawArguments: parsed.ok ? args.rawArguments : { text: match.body.trim() },\n\t\tsource: \"text-protocol\",\n\t\terrorMessage: textToolErrorMessage(match.name, names),\n\t};\n}\n\nfunction parseFunctionXmlEnvelope(\n\tmatch: EnvelopeMatch,\n\tnames: readonly string[],\n\tindex: number,\n\tidPrefix: string,\n): ToolCall | undefined {\n\tif (!match.name) return undefined;\n\tif (new RegExp(`<\\\\/?${FUNCTION_TAG}\\\\b`, \"i\").test(match.body)) return undefined;\n\tconst params: Record<string, string> = {};\n\tlet cursor = 0;\n\tlet sawParam = false;\n\tconst paramPattern = /<param\\s+name=([\"'])(.*?)\\1\\s*>([\\s\\S]*?)<\\/param\\s*>/g;\n\tfor (const param of match.body.matchAll(paramPattern)) {\n\t\tif (match.body.slice(cursor, param.index).trim()) return undefined;\n\t\tconst name = unescapeAttribute(param[2] ?? \"\");\n\t\tif (!name || name in params) return undefined;\n\t\tparams[name] = unescapeXmlText((param[3] ?? \"\").trim());\n\t\tcursor = param.index + param[0].length;\n\t\tsawParam = true;\n\t}\n\tif (match.body.slice(cursor).trim()) return undefined;\n\tif (!sawParam) return undefined;\n\treturn {\n\t\ttype: \"toolCall\",\n\t\tid: textToolCallId(idPrefix, index),\n\t\tname: match.name,\n\t\targuments: params,\n\t\tsource: \"text-protocol\",\n\t\terrorMessage: textToolErrorMessage(match.name, names),\n\t};\n}\n\nfunction parseEnvelope(\n\tmatch: EnvelopeMatch,\n\tnames: readonly string[],\n\tindex: number,\n\tidPrefix: string,\n): ToolCall | undefined {\n\tif (match.kind === \"pi_call\") return parsePiCallEnvelope(match, names, index, idPrefix);\n\tif (match.kind === \"function_xml\") return parseFunctionXmlEnvelope(match, names, index, idPrefix);\n\n\tconst parsed = parseJsonObject(match.body);\n\tif (!parsed) {\n\t\tconst name = extractNameFromMalformedJson(match.body);\n\t\tif (!name) return undefined;\n\t\treturn {\n\t\t\ttype: \"toolCall\",\n\t\t\tid: textToolCallId(idPrefix, index),\n\t\t\tname,\n\t\t\targuments: match.body.trim() as unknown as Record<string, unknown>,\n\t\t\trawArguments: { text: match.body.trim() },\n\t\t\tsource: \"text-protocol\",\n\t\t\terrorMessage: textToolErrorMessage(name, names),\n\t\t};\n\t}\n\n\tconst wrappedTool = isRecord(parsed.tool) ? parsed.tool : undefined;\n\tconst nameValue = parsed.name ?? (typeof parsed.tool === \"string\" ? parsed.tool : undefined) ?? wrappedTool?.name;\n\tif (typeof nameValue !== \"string\") return undefined;\n\tconst argsValue = parsed.arguments ?? parsed.args ?? wrappedTool?.arguments ?? wrappedTool?.args ?? {};\n\tconst args = coerceArguments(argsValue);\n\treturn {\n\t\ttype: \"toolCall\",\n\t\tid: textToolCallId(idPrefix, index),\n\t\tname: nameValue,\n\t\targuments: args.arguments,\n\t\trawArguments: args.rawArguments,\n\t\tsource: \"text-protocol\",\n\t\terrorMessage: textToolErrorMessage(nameValue, names),\n\t};\n}\n\nexport function normalizeTextToolProtocolOptions(\n\toption: boolean | TextToolProtocolOptions | undefined,\n): TextToolProtocolOptions | undefined {\n\tif (!option) return undefined;\n\tif (option === true) return { variant: DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT };\n\treturn { variant: option.variant ?? DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT };\n}\n\nfunction functionXmlParamValue(value: unknown): string {\n\tif (typeof value === \"string\") return value;\n\tconst json = JSON.stringify(value);\n\treturn json ?? String(value);\n}\n\nfunction formatFunctionXmlEnvelope(toolName: string, argsJson: string): string {\n\tconst args = parseJsonObject(argsJson) ?? {};\n\tconst params = Object.entries(args)\n\t\t.map(\n\t\t\t([name, value]) =>\n\t\t\t\t`<param name=\"${escapeAttribute(name)}\">${escapeXmlText(functionXmlParamValue(value))}</param>`,\n\t\t)\n\t\t.join(\"\");\n\treturn `<${FUNCTION_TAG} name=\"${escapeAttribute(toolName)}\">${params}</${FUNCTION_TAG}>`;\n}\n\n/**\n * Renders one call as the wire text for `variant`. Exported read-only for the history round-trip\n * render: it reuses this so a prior text-protocol call is echoed back to the model in the\n * exact dialect the primer taught it, instead of a second parallel formatting path.\n */\nexport function formatVariantEnvelope(variant: TextToolProtocolVariant, toolName: string, argsJson: string): string {\n\tif (variant === \"tool-call\") {\n\t\treturn `<${TOOL_CALL_TAG}>{\"name\":\"${toolName}\",\"arguments\":${argsJson}}</${TOOL_CALL_TAG}>`;\n\t}\n\tif (variant === \"fenced-json\") {\n\t\treturn `\\`\\`\\`${FENCED_JSON_LABELS[0]}\\n{\"name\":\"${toolName}\",\"arguments\":${argsJson}}\\n\\`\\`\\``;\n\t}\n\tif (variant === \"function-xml\") return formatFunctionXmlEnvelope(toolName, argsJson);\n\treturn `<${PI_CALL_TAG} name=\"${escapeAttribute(toolName)}\">${argsJson}</${PI_CALL_TAG}>`;\n}\n\nfunction schemaRecord(value: unknown): Record<string, unknown> | undefined {\n\treturn isRecord(value) ? value : undefined;\n}\n\nfunction firstString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nfunction schemaType(schema: Record<string, unknown>): string | undefined {\n\tconst type = schema.type;\n\tif (typeof type === \"string\") return type;\n\tif (!Array.isArray(type)) return undefined;\n\treturn type.filter(firstString).find((entry) => entry !== \"null\");\n}\n\nfunction stringExampleForProperty(propertyName: string | undefined): string {\n\tif (propertyName === \"path\") return \"src/index.ts\";\n\tif (propertyName === \"command\") return \"echo ok\";\n\tif (propertyName === \"oldText\") return \"foo\";\n\tif (propertyName === \"newText\") return \"bar\";\n\tif (propertyName === \"content\") return \"text\";\n\treturn \"value\";\n}\n\nfunction schemaAlternatives(schemaValue: unknown): Record<string, unknown>[] {\n\tconst schema = schemaRecord(schemaValue);\n\tif (!schema) return [];\n\tconst alternatives = Array.isArray(schema.anyOf)\n\t\t? schema.anyOf\n\t\t: Array.isArray(schema.oneOf)\n\t\t\t? schema.oneOf\n\t\t\t: undefined;\n\tif (!alternatives) return [schema];\n\tconst records = alternatives.map(schemaRecord).filter((entry) => entry !== undefined);\n\treturn records.length > 0 ? records : [schema];\n}\n\nfunction exampleValueForSchema(schemaValue: unknown, propertyName?: string): unknown {\n\tconst schema = schemaRecord(schemaValue);\n\tif (!schema) return stringExampleForProperty(propertyName);\n\tconst constValue = schema.const;\n\tif (constValue !== undefined) return constValue;\n\tconst enumValues = Array.isArray(schema.enum) ? schema.enum : [];\n\tif (enumValues.length > 0) return enumValues[0];\n\tconst defaultValue = schema.default;\n\tif (defaultValue !== undefined) return defaultValue;\n\tconst type = schemaType(schema);\n\tif (type === \"number\" || type === \"integer\") return 1;\n\tif (type === \"boolean\") return true;\n\tif (type === \"array\") return [exampleValueForSchema(schema.items, propertyName)];\n\tif (type === \"object\") return exampleArgumentsForParameters(schema);\n\treturn stringExampleForProperty(propertyName);\n}\n\nfunction requiredPropertyNames(parameters: Record<string, unknown> | undefined): string[] {\n\treturn Array.isArray(parameters?.required) ? parameters.required.filter(firstString) : [];\n}\n\nfunction exampleArgumentsForParameters(parametersValue: unknown): Record<string, unknown> {\n\tconst parameters = schemaAlternatives(parametersValue)[0];\n\tconst properties = schemaRecord(parameters?.properties);\n\tif (!properties) return {};\n\tconst args: Record<string, unknown> = {};\n\tfor (const name of requiredPropertyNames(parameters)) {\n\t\targs[name] = exampleValueForSchema(properties[name], name);\n\t}\n\treturn args;\n}\n\nfunction typeLabel(schemaValue: unknown): string {\n\tconst schema = schemaRecord(schemaValue);\n\tif (!schema) return \"string\";\n\tconst enumValues = Array.isArray(schema.enum) ? schema.enum : [];\n\tif (enumValues.length > 0 && enumValues.every((entry) => [\"string\", \"number\", \"boolean\"].includes(typeof entry))) {\n\t\treturn enumValues.map(String).join(\"|\");\n\t}\n\tconst type = schemaType(schema);\n\tif (type === \"integer\" || type === \"number\") return \"number\";\n\tif (type === \"boolean\") return \"bool\";\n\tif (type === \"array\") return `${typeLabel(schema.items)}[]`;\n\tif (type === \"object\") {\n\t\tconst properties = schemaRecord(schema.properties);\n\t\tif (!properties) return \"{}\";\n\t\tconst entries = Object.entries(properties)\n\t\t\t.slice(0, 4)\n\t\t\t.map(([name, value]) => `${name}:${typeLabel(value)}`);\n\t\tconst suffix = Object.keys(properties).length > entries.length ? \",...\" : \"\";\n\t\treturn `{${entries.join(\",\")}${suffix}}`;\n\t}\n\treturn \"string\";\n}\n\nfunction orderedPropertyNames(properties: Record<string, unknown>, required: readonly string[]): string[] {\n\tconst requiredSet = new Set(required);\n\treturn [\n\t\t...required.filter((name) => name in properties),\n\t\t...Object.keys(properties).filter((name) => !requiredSet.has(name)),\n\t];\n}\n\nfunction formatDefault(value: unknown): string {\n\tconst json = JSON.stringify(value);\n\treturn json ? `=${json}` : \"\";\n}\n\nfunction formatToolProjection(tool: Tool): string {\n\tconst signatures = schemaAlternatives(tool.parameters).map((parameters) => {\n\t\tconst properties = schemaRecord(parameters.properties);\n\t\tconst required = requiredPropertyNames(parameters);\n\t\tconst requiredSet = new Set(required);\n\t\tconst args = properties\n\t\t\t? orderedPropertyNames(properties, required)\n\t\t\t\t\t.map((name) => {\n\t\t\t\t\t\tconst schema = schemaRecord(properties[name]);\n\t\t\t\t\t\tconst optional = requiredSet.has(name) ? \"\" : \"?\";\n\t\t\t\t\t\tconst defaultText = schema && \"default\" in schema ? formatDefault(schema.default) : \"\";\n\t\t\t\t\t\treturn `${name}:${typeLabel(schema)}${optional}${defaultText}`;\n\t\t\t\t\t})\n\t\t\t\t\t.join(\", \")\n\t\t\t: \"\";\n\t\treturn `${tool.name}(${args})`;\n\t});\n\tconst description = tool.description.replace(/\\s+/g, \" \").trim();\n\treturn `${signatures.join(\" OR \")} - ${description}`;\n}\n\nfunction toolHasArrayParameter(tool: Tool): boolean {\n\tconst parameters = schemaRecord(tool.parameters);\n\tconst properties = schemaRecord(parameters?.properties);\n\tif (!properties) return false;\n\treturn Object.values(properties).some((schemaValue) => schemaType(schemaRecord(schemaValue) ?? {}) === \"array\");\n}\n\nfunction exampleTools(tools: readonly Tool[]): Tool[] {\n\tconst examples: Tool[] = [];\n\tconst readTool = tools.find((tool) => tool.name === \"read\");\n\tif (readTool) examples.push(readTool);\n\tif (examples.length === 0) examples.push(tools[0]);\n\tconst editTool = tools.find((tool) => tool.name === \"edit\" && !examples.includes(tool));\n\tconst arrayTool = editTool ?? tools.find((tool) => !examples.includes(tool) && toolHasArrayParameter(tool));\n\tif (arrayTool) examples.push(arrayTool);\n\treturn examples;\n}\n\nfunction protocolHeader(variant: TextToolProtocolVariant): string[] {\n\treturn [\n\t\t\"Text tool-call protocol is enabled. To call a tool, emit an envelope in exactly this shape:\",\n\t\tformatVariantEnvelope(variant, \"TOOL\", '{\"arg\":\"value\"}'),\n\t\t\"Arguments are one JSON object: double-quoted keys/strings, arrays as [ ] (never a quoted string), optional args omitted rather than null.\",\n\t\t\"Reasoning may appear as prose before an envelope, never inside one.\",\n\t\t\"Emit several envelopes in one reply to call multiple tools in parallel; each is executed and answered on its own.\",\n\t\t\"After a successful tool result, use it and continue; do not repeat the same unchanged call.\",\n\t\t\"Files, directories, searches, edits, writes, and shell commands always go through a tool envelope - never type out shell commands, file paths, or invented results yourself.\",\n\t];\n}\n\nexport function generateTextToolProtocolPrimer(tools: readonly Tool[], options?: TextToolProtocolOptions): string {\n\tif (tools.length === 0) return \"\";\n\tconst variant = options?.variant ?? DEFAULT_TEXT_TOOL_PROTOCOL_VARIANT;\n\tconst lines = [...protocolHeader(variant), \"Examples:\"];\n\tfor (const tool of exampleTools(tools)) {\n\t\tlines.push(\n\t\t\tformatVariantEnvelope(variant, tool.name, JSON.stringify(exampleArgumentsForParameters(tool.parameters))),\n\t\t);\n\t}\n\tlines.push(\"Available tools:\");\n\tfor (const tool of tools) {\n\t\tlines.push(formatToolProjection(tool));\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nexport function parseTextToolCalls(\n\ttext: string,\n\tknownTools: readonly Tool[],\n\toptions?: TextToolProtocolParseOptions,\n): ParsedTextToolCalls {\n\tif (knownTools.length === 0) return { calls: [], text, attempted: false };\n\tconst matches = findToolEnvelopes(text);\n\tif (matches.length === 0) return { calls: [], text, attempted: false };\n\tconst names = [...knownToolNames(knownTools)];\n\tconst parsed: ParsedMatch[] = [];\n\tconst idPrefix = options?.callIdPrefix?.trim() || \"text-tool\";\n\tconst indexOffset = options?.callIndexOffset ?? 0;\n\tfor (const [index, match] of matches.entries()) {\n\t\tconst call = parseEnvelope(match, names, indexOffset + index + 1, idPrefix);\n\t\tif (call) parsed.push({ match, call });\n\t}\n\tconst selected = selectNonOverlappingParsedMatches(parsed);\n\tif (selected.length === 0) {\n\t\treturn { calls: [], text, attempted: true, failure: hasOverlap(matches) ? \"overlap\" : \"unrecognized\" };\n\t}\n\tconst remainder = remainingText(\n\t\ttext,\n\t\tselected.map((entry) => entry.match),\n\t);\n\treturn { calls: selected.map((entry) => entry.call), text: remainder.trim(), attempted: true };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caupulican/pi-ai",
3
- "version": "0.85.3",
3
+ "version": "0.85.4",
4
4
  "description": "Unified LLM API with automatic model discovery and provider configuration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -128,7 +128,9 @@
128
128
  },
129
129
  "dependencies": {
130
130
  "@anthropic-ai/sdk": "0.91.1",
131
+ "@aws-sdk/client-bedrock": "3.1048.0",
131
132
  "@aws-sdk/client-bedrock-runtime": "3.1048.0",
133
+ "@aws-sdk/client-sts": "3.1049.0",
132
134
  "@google/genai": "1.52.0",
133
135
  "@mistralai/mistralai": "2.2.1",
134
136
  "@smithy/node-http-handler": "4.7.3",