@ai-sdk/code-mode 1.0.79 → 1.0.81
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.
- package/dist/approval-continuation.js +48 -74
- package/dist/approval-continuation.js.map +1 -1
- package/dist/approval.js +12 -23
- package/dist/approval.js.map +1 -1
- package/dist/code-mode-tool.js +39 -51
- package/dist/code-mode-tool.js.map +1 -1
- package/dist/continuation-capability.js +74 -105
- package/dist/continuation-capability.js.map +1 -1
- package/dist/direct-tool-call.js +9 -3
- package/dist/direct-tool-call.js.map +1 -1
- package/dist/errors.js +109 -96
- package/dist/errors.js.map +1 -1
- package/dist/host-interrupt.js +7 -12
- package/dist/host-interrupt.js.map +1 -1
- package/dist/index.d.ts +172 -163
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -61
- package/dist/interrupt-continuation.js +54 -90
- package/dist/interrupt-continuation.js.map +1 -1
- package/dist/run-code-mode.js +292 -494
- package/dist/run-code-mode.js.map +1 -1
- package/dist/tool-invocation.js +98 -176
- package/dist/tool-invocation.js.map +1 -1
- package/dist/tool-prompt.js +254 -392
- package/dist/tool-prompt.js.map +1 -1
- package/dist/types.js +1 -1
- package/dist/utils/serialization.js +23 -39
- package/dist/utils/serialization.js.map +1 -1
- package/package.json +6 -6
- package/dist/index.js.map +0 -1
- package/dist/types.js.map +0 -1
package/dist/tool-prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/tool-prompt.ts"],"sourcesContent":["import { asSchema } from 'ai';\nimport type { CodeModeToolSet } from './types.js';\n\ntype JsonSchema = Record<string, unknown>;\n\ninterface SchemaContext {\n root: JsonSchema;\n seenRefs: Set<string>;\n depth: number;\n}\n\nconst MAX_SCHEMA_DEPTH = 8;\nconst MAX_COMPACT_OBJECT_TYPE_LENGTH = 120;\n\nexport function buildCodeModeToolDescription(\n tools: CodeModeToolSet,\n toolDiscovery: 'description' | 'conversation' = 'description',\n): string {\n const sections = [\n 'Execute code-mode TypeScript in an isolated sandbox.',\n '',\n 'Put the full program in `js`; top-level `await`/`return` work. Return a JSON-serializable result.',\n 'Call host tools only as async `tools.name(input)`; await each or use `Promise.all` for independent calls.',\n toolDiscovery === 'description'\n ? 'Use exact names/types below. `JSON.parse`/`JSON.stringify` are available.'\n : 'Use exact names/types from the latest capability update. `JSON.parse`/`JSON.stringify` are available.',\n 'Fetch: `fetch` is not available.',\n ];\n\n if (toolDiscovery === 'conversation') {\n sections.push(\n '',\n 'Tools:',\n 'The current host-tool API is provided in \"Code mode capability update\" user messages. Follow the latest catalog and ignore earlier catalogs.',\n );\n return sections.join('\\n');\n }\n\n const { typeBlock, exampleBlock } = renderToolCatalog(tools);\n sections.push('', 'Tools:', typeBlock);\n\n if (exampleBlock.length > 0) {\n sections.push(exampleBlock);\n }\n\n return sections.join('\\n');\n}\n\nexport function buildCodeModeToolCatalogMessage(\n tools: CodeModeToolSet,\n): string {\n const { typeBlock, exampleBlock } = renderToolCatalog(tools);\n const sections = [\n 'Code mode capability update.',\n '',\n 'This catalog replaces all previous code mode capability catalogs. Only the tools listed below are currently available through `tools`.',\n '',\n 'Tools:',\n typeBlock,\n ];\n\n if (exampleBlock.length > 0) {\n sections.push(exampleBlock);\n }\n\n return sections.join('\\n');\n}\n\nfunction renderToolCatalog(tools: CodeModeToolSet): {\n typeBlock: string;\n exampleBlock: string;\n} {\n const toolEntries = Object.entries(tools);\n const typeBlock =\n toolEntries.length === 0\n ? 'No host tools. Do not call `tools.*`.'\n : [\n '```ts',\n 'declare const tools: {',\n ...toolEntries.flatMap(renderToolType),\n '};',\n '```',\n ].join('\\n');\n\n const exampleBlock =\n toolEntries.length === 0\n ? ''\n : [\n '',\n 'Tool call examples:',\n '```ts',\n ...renderToolExamples(toolEntries),\n '```',\n ].join('\\n');\n\n return { typeBlock, exampleBlock };\n}\n\nfunction renderToolType([toolName, tool]: [\n string,\n CodeModeToolSet[string],\n]): string[] {\n const schema = resolveInputSchema(tool);\n const inputType =\n schema === undefined ? 'unknown' : schemaToType(schema, schema);\n const outputSchema = resolveOutputSchema(tool);\n const outputType =\n outputSchema === undefined\n ? 'unknown'\n : schemaToType(outputSchema, outputSchema);\n const description = firstString(tool.description, tool.title);\n const lines: string[] = [];\n\n if (description !== undefined) {\n lines.push(` /** ${toComment(description)} */`);\n }\n\n lines.push(\n ` ${formatObjectKey(toolName)}: (input: ${indentType(inputType, 2)}) => Promise<${indentType(outputType, 2)}>;`,\n );\n return lines;\n}\n\nfunction renderToolExamples(\n toolEntries: Array<[string, CodeModeToolSet[string]]>,\n): string[] {\n if (toolEntries.length === 1) {\n const toolEntry = toolEntries[0]!;\n const projection = renderToolProjection('result', toolEntry[1]);\n return [\n `const result = await ${renderToolExampleCall(toolEntry)};`,\n `return ${projection};`,\n ];\n }\n\n const variableNames = uniqueToolVariableNames(\n toolEntries.map(([toolName]) => toolName),\n );\n const calls = toolEntries.map(\n toolEntry => ` ${renderToolExampleCall(toolEntry)},`,\n );\n return [\n `const [${variableNames.join(', ')}] = await Promise.all([`,\n ...calls,\n ']);',\n 'return {',\n ...toolEntries.map(([toolName, tool], index) => {\n const projection = renderToolProjection(variableNames[index]!, tool);\n return ` ${formatObjectKey(toolName)}: ${projection},`;\n }),\n '};',\n ];\n}\n\nfunction renderToolExampleCall([toolName, tool]: [\n string,\n CodeModeToolSet[string],\n]): string {\n const schema = resolveInputSchema(tool);\n const input =\n firstInputExample(tool) ??\n (schema === undefined ? {} : sampleFromSchema(schema, schema));\n return `tools${formatPropertyAccess(toolName)}(${JSON.stringify(input)})`;\n}\n\nfunction renderToolProjection(\n variableName: string,\n tool: CodeModeToolSet[string],\n): string {\n const field = firstObjectProperty(resolveOutputSchema(tool));\n if (field === undefined) {\n return variableName;\n }\n return `{ ${formatObjectKey(field)}: ${variableName}${formatPropertyAccess(field)} }`;\n}\n\nfunction firstObjectProperty(\n schema: JsonSchema | undefined,\n): string | undefined {\n if (schema === undefined || !isRecord(schema.properties)) {\n return undefined;\n }\n return Object.entries(schema.properties).find(entry =>\n isRecord(entry[1]),\n )?.[0];\n}\n\nfunction resolveInputSchema(\n tool: CodeModeToolSet[string],\n): JsonSchema | undefined {\n try {\n const jsonSchema = asSchema(tool.inputSchema).jsonSchema;\n if (isPromiseLike(jsonSchema) || !isRecord(jsonSchema)) {\n return undefined;\n }\n return jsonSchema;\n } catch {\n return undefined;\n }\n}\n\nfunction resolveOutputSchema(\n tool: CodeModeToolSet[string],\n): JsonSchema | undefined {\n try {\n const outputSchema = tool.outputSchema;\n if (outputSchema === undefined) {\n return undefined;\n }\n const jsonSchema = asSchema(outputSchema).jsonSchema;\n if (isPromiseLike(jsonSchema) || !isRecord(jsonSchema)) {\n return undefined;\n }\n return jsonSchema;\n } catch {\n return undefined;\n }\n}\n\nfunction schemaToType(schema: JsonSchema, root: JsonSchema): string {\n return schemaToTypeInner(schema, {\n root,\n seenRefs: new Set(),\n depth: 0,\n });\n}\n\nfunction schemaToTypeInner(schema: JsonSchema, context: SchemaContext): string {\n if (context.depth > MAX_SCHEMA_DEPTH) {\n return 'unknown';\n }\n\n const ref = firstString(schema.$ref);\n if (ref !== undefined) {\n const resolved = resolveRef(ref, context.root, context.seenRefs);\n return resolved === undefined\n ? 'unknown'\n : schemaToTypeInner(resolved, nextContext(context));\n }\n\n const constValue = schema.const;\n if (constValue !== undefined) {\n return literalType(constValue);\n }\n\n const enumValues = asArray(schema.enum);\n if (enumValues !== undefined) {\n return union(enumValues.map(literalType));\n }\n\n const oneOf = schemaArray(schema.oneOf);\n if (oneOf !== undefined) {\n return union(\n oneOf.map(part => schemaToTypeInner(part, nextContext(context))),\n );\n }\n\n const anyOf = schemaArray(schema.anyOf);\n if (anyOf !== undefined) {\n return union(\n anyOf.map(part => schemaToTypeInner(part, nextContext(context))),\n );\n }\n\n const allOf = schemaArray(schema.allOf);\n if (allOf !== undefined) {\n return allOf\n .map(part => schemaToTypeInner(part, nextContext(context)))\n .join(' & ');\n }\n\n const type = schema.type;\n if (Array.isArray(type)) {\n return union(\n type.map(part => schemaToTypeInner({ ...schema, type: part }, context)),\n );\n }\n\n if (type === 'object' || isRecord(schema.properties)) {\n return objectType(schema, context);\n }\n\n if (type === 'array' || schema.items !== undefined) {\n return arrayType(schema, context);\n }\n\n if (type === 'string') {\n return 'string';\n }\n\n if (type === 'number' || type === 'integer') {\n return 'number';\n }\n\n if (type === 'boolean') {\n return 'boolean';\n }\n\n if (type === 'null') {\n return 'null';\n }\n\n return 'unknown';\n}\n\nfunction objectType(schema: JsonSchema, context: SchemaContext): string {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(asArray(schema.required)?.filter(isString));\n const entries = Object.entries(properties).filter(\n (entry): entry is [string, JsonSchema] => isRecord(entry[1]),\n );\n\n if (entries.length === 0) {\n const additionalProperties = schema.additionalProperties;\n if (isRecord(additionalProperties)) {\n return `Record<string, ${schemaToTypeInner(additionalProperties, nextContext(context))}>`;\n }\n if (additionalProperties === true) {\n return 'Record<string, unknown>';\n }\n return '{}';\n }\n\n const lines = entries.flatMap(([name, value]) => {\n const propertyLines: string[] = [];\n const description = firstString(value.description);\n if (description !== undefined) {\n propertyLines.push(` /** ${toComment(description)} */`);\n }\n propertyLines.push(\n ` ${formatObjectKey(name)}${required.has(name) ? '' : '?'}: ${indentType(\n schemaToTypeInner(value, nextContext(context)),\n 2,\n )};`,\n );\n return propertyLines;\n });\n\n const additionalProperties = schema.additionalProperties;\n if (isRecord(additionalProperties)) {\n lines.push(\n ` [key: string]: ${schemaToTypeInner(additionalProperties, nextContext(context))};`,\n );\n } else if (additionalProperties === true) {\n lines.push(' [key: string]: unknown;');\n }\n\n const compact = compactObjectType(lines);\n if (compact !== undefined) {\n return compact;\n }\n\n return `{\\n${lines.join('\\n')}\\n}`;\n}\n\nfunction arrayType(schema: JsonSchema, context: SchemaContext): string {\n const items = schema.items;\n if (Array.isArray(items)) {\n return `[${items\n .map(item =>\n isRecord(item)\n ? schemaToTypeInner(item, nextContext(context))\n : 'unknown',\n )\n .join(', ')}]`;\n }\n if (isRecord(items)) {\n const itemType = schemaToTypeInner(items, nextContext(context));\n return needsParentheses(itemType) || itemType.includes('\\n')\n ? `Array<${itemType}>`\n : `${itemType}[]`;\n }\n return 'unknown[]';\n}\n\nfunction sampleFromSchema(schema: JsonSchema, root: JsonSchema): unknown {\n return sampleFromSchemaInner(schema, {\n root,\n seenRefs: new Set(),\n depth: 0,\n });\n}\n\nfunction sampleFromSchemaInner(\n schema: JsonSchema,\n context: SchemaContext,\n): unknown {\n if (context.depth > MAX_SCHEMA_DEPTH) {\n return null;\n }\n\n if (schema.default !== undefined) {\n return schema.default;\n }\n\n const ref = firstString(schema.$ref);\n if (ref !== undefined) {\n const resolved = resolveRef(ref, context.root, context.seenRefs);\n return resolved === undefined\n ? null\n : sampleFromSchemaInner(resolved, nextContext(context));\n }\n\n if (schema.const !== undefined) {\n return schema.const;\n }\n\n const enumValues = asArray(schema.enum);\n if (enumValues !== undefined) {\n return enumValues[0] ?? null;\n }\n\n const oneOf = schemaArray(schema.oneOf);\n if (oneOf !== undefined) {\n return sampleFromSchemaInner(oneOf[0] ?? {}, nextContext(context));\n }\n\n const anyOf = schemaArray(schema.anyOf);\n if (anyOf !== undefined) {\n return sampleFromSchemaInner(anyOf[0] ?? {}, nextContext(context));\n }\n\n const type = schema.type;\n if (Array.isArray(type)) {\n return sampleFromSchemaInner(\n { ...schema, type: type.find(part => part !== 'null') ?? type[0] },\n context,\n );\n }\n\n if (type === 'object' || isRecord(schema.properties)) {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n return Object.fromEntries(\n Object.entries(properties)\n .filter((entry): entry is [string, JsonSchema] => isRecord(entry[1]))\n .map(([name, value]) => [\n name,\n sampleFromSchemaInner(value, nextContext(context)),\n ]),\n );\n }\n\n if (type === 'array' || schema.items !== undefined) {\n const items = Array.isArray(schema.items) ? schema.items[0] : schema.items;\n return [\n isRecord(items)\n ? sampleFromSchemaInner(items, nextContext(context))\n : null,\n ];\n }\n\n if (type === 'number' || type === 'integer') {\n return 1;\n }\n\n if (type === 'boolean') {\n return true;\n }\n\n if (type === 'null') {\n return null;\n }\n\n if (type === 'string' || type === undefined) {\n const examples = asArray(schema.examples);\n if (examples?.[0] !== undefined) {\n return examples[0];\n }\n const format = firstString(schema.format);\n if (format === 'uri' || format === 'url') {\n return 'https://example.com';\n }\n if (format === 'date-time') {\n return '2026-01-01T00:00:00.000Z';\n }\n if (format === 'date') {\n return '2026-01-01';\n }\n return 'string';\n }\n\n return null;\n}\n\nfunction firstInputExample(tool: CodeModeToolSet[string]): unknown {\n const examples = asArray(tool.inputExamples);\n const first = examples?.[0];\n return isRecord(first) && 'input' in first ? first.input : undefined;\n}\n\nfunction resolveRef(\n ref: string,\n root: JsonSchema,\n seenRefs: Set<string>,\n): JsonSchema | undefined {\n if (!ref.startsWith('#/') || seenRefs.has(ref)) {\n return undefined;\n }\n\n seenRefs.add(ref);\n const value = ref\n .slice(2)\n .split('/')\n .map(part => part.replace(/~1/g, '/').replace(/~0/g, '~'))\n .reduce<unknown>((current, part) => {\n if (!isRecord(current)) {\n return undefined;\n }\n return current[part];\n }, root);\n\n return isRecord(value) ? value : undefined;\n}\n\nfunction nextContext(context: SchemaContext): SchemaContext {\n return {\n ...context,\n depth: context.depth + 1,\n };\n}\n\nfunction union(types: string[]): string {\n const unique = [...new Set(types)];\n return unique.length === 0 ? 'unknown' : unique.join(' | ');\n}\n\nfunction literalType(value: unknown): string {\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n return String(value);\n }\n return 'unknown';\n}\n\nfunction indentType(type: string, spaces: number): string {\n if (!type.includes('\\n')) {\n return type;\n }\n\n const padding = ' '.repeat(spaces);\n return type.replaceAll('\\n', `\\n${padding}`);\n}\n\nfunction needsParentheses(type: string): boolean {\n return type.includes(' | ') || type.includes(' & ');\n}\n\nfunction formatObjectKey(key: string): string {\n return isIdentifier(key) ? key : JSON.stringify(key);\n}\n\nfunction formatPropertyAccess(key: string): string {\n return isIdentifier(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n\nfunction uniqueToolVariableNames(toolNames: string[]): string[] {\n const seen = new Map<string, number>();\n return toolNames.map(toolName => {\n const base = toIdentifier(toolName);\n const count = seen.get(base) ?? 0;\n seen.set(base, count + 1);\n return count === 0 ? base : `${base}${count + 1}`;\n });\n}\n\nfunction toIdentifier(value: string): string {\n const identifier = value\n .replace(/[^A-Za-z0-9_$]/g, '_')\n .replace(/^[^A-Za-z_$]+/, '');\n return identifier.length === 0 ? 'tool' : identifier;\n}\n\nfunction isIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\nfunction compactObjectType(lines: string[]): string | undefined {\n if (lines.length === 0 || lines.some(line => line.includes('/**'))) {\n return undefined;\n }\n\n const fields = lines.map(line => line.trim());\n if (fields.some(field => field.includes('\\n'))) {\n return undefined;\n }\n\n const compact = `{ ${fields.join(' ')} }`;\n return compact.length <= MAX_COMPACT_OBJECT_TYPE_LENGTH ? compact : undefined;\n}\n\nfunction toComment(value: string): string {\n return value.replaceAll('*/', '* /').replace(/\\s+/g, ' ').trim();\n}\n\nfunction firstString(...values: unknown[]): string | undefined {\n return values.find(isString);\n}\n\nfunction schemaArray(value: unknown): JsonSchema[] | undefined {\n const values = asArray(value);\n if (values === undefined || !values.every(isRecord)) {\n return undefined;\n }\n return values;\n}\n\nfunction asArray(value: unknown): unknown[] | undefined {\n return Array.isArray(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is JsonSchema {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return isRecord(value) && typeof value.then === 'function';\n}\n"],"mappings":"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","names":["additionalProperties"]}
|
|
1
|
+
{"version":3,"file":"tool-prompt.js","names":[],"sources":["../src/tool-prompt.ts"],"sourcesContent":["import { asSchema } from 'ai';\nimport type { CodeModeToolSet } from './types.js';\n\ntype JsonSchema = Record<string, unknown>;\n\ninterface SchemaContext {\n root: JsonSchema;\n seenRefs: Set<string>;\n depth: number;\n}\n\nconst MAX_SCHEMA_DEPTH = 8;\nconst MAX_COMPACT_OBJECT_TYPE_LENGTH = 120;\n\nexport function buildCodeModeToolDescription(\n tools: CodeModeToolSet,\n toolDiscovery: 'description' | 'conversation' = 'description',\n): string {\n const sections = [\n 'Execute code-mode TypeScript in an isolated sandbox.',\n '',\n 'Put the full program in `js`; top-level `await`/`return` work. Return a JSON-serializable result.',\n 'Call host tools only as async `tools.name(input)`; await each or use `Promise.all` for independent calls.',\n toolDiscovery === 'description'\n ? 'Use exact names/types below. `JSON.parse`/`JSON.stringify` are available.'\n : 'Use exact names/types from the latest capability update. `JSON.parse`/`JSON.stringify` are available.',\n 'Fetch: `fetch` is not available.',\n ];\n\n if (toolDiscovery === 'conversation') {\n sections.push(\n '',\n 'Tools:',\n 'The current host-tool API is provided in \"Code mode capability update\" user messages. Follow the latest catalog and ignore earlier catalogs.',\n );\n return sections.join('\\n');\n }\n\n const { typeBlock, exampleBlock } = renderToolCatalog(tools);\n sections.push('', 'Tools:', typeBlock);\n\n if (exampleBlock.length > 0) {\n sections.push(exampleBlock);\n }\n\n return sections.join('\\n');\n}\n\nexport function buildCodeModeToolCatalogMessage(\n tools: CodeModeToolSet,\n): string {\n const { typeBlock, exampleBlock } = renderToolCatalog(tools);\n const sections = [\n 'Code mode capability update.',\n '',\n 'This catalog replaces all previous code mode capability catalogs. Only the tools listed below are currently available through `tools`.',\n '',\n 'Tools:',\n typeBlock,\n ];\n\n if (exampleBlock.length > 0) {\n sections.push(exampleBlock);\n }\n\n return sections.join('\\n');\n}\n\nfunction renderToolCatalog(tools: CodeModeToolSet): {\n typeBlock: string;\n exampleBlock: string;\n} {\n const toolEntries = Object.entries(tools);\n const typeBlock =\n toolEntries.length === 0\n ? 'No host tools. Do not call `tools.*`.'\n : [\n '```ts',\n 'declare const tools: {',\n ...toolEntries.flatMap(renderToolType),\n '};',\n '```',\n ].join('\\n');\n\n const exampleBlock =\n toolEntries.length === 0\n ? ''\n : [\n '',\n 'Tool call examples:',\n '```ts',\n ...renderToolExamples(toolEntries),\n '```',\n ].join('\\n');\n\n return { typeBlock, exampleBlock };\n}\n\nfunction renderToolType([toolName, tool]: [\n string,\n CodeModeToolSet[string],\n]): string[] {\n const schema = resolveInputSchema(tool);\n const inputType =\n schema === undefined ? 'unknown' : schemaToType(schema, schema);\n const outputSchema = resolveOutputSchema(tool);\n const outputType =\n outputSchema === undefined\n ? 'unknown'\n : schemaToType(outputSchema, outputSchema);\n const description = firstString(tool.description, tool.title);\n const lines: string[] = [];\n\n if (description !== undefined) {\n lines.push(` /** ${toComment(description)} */`);\n }\n\n lines.push(\n ` ${formatObjectKey(toolName)}: (input: ${indentType(inputType, 2)}) => Promise<${indentType(outputType, 2)}>;`,\n );\n return lines;\n}\n\nfunction renderToolExamples(\n toolEntries: Array<[string, CodeModeToolSet[string]]>,\n): string[] {\n if (toolEntries.length === 1) {\n const toolEntry = toolEntries[0]!;\n const projection = renderToolProjection('result', toolEntry[1]);\n return [\n `const result = await ${renderToolExampleCall(toolEntry)};`,\n `return ${projection};`,\n ];\n }\n\n const variableNames = uniqueToolVariableNames(\n toolEntries.map(([toolName]) => toolName),\n );\n const calls = toolEntries.map(\n toolEntry => ` ${renderToolExampleCall(toolEntry)},`,\n );\n return [\n `const [${variableNames.join(', ')}] = await Promise.all([`,\n ...calls,\n ']);',\n 'return {',\n ...toolEntries.map(([toolName, tool], index) => {\n const projection = renderToolProjection(variableNames[index]!, tool);\n return ` ${formatObjectKey(toolName)}: ${projection},`;\n }),\n '};',\n ];\n}\n\nfunction renderToolExampleCall([toolName, tool]: [\n string,\n CodeModeToolSet[string],\n]): string {\n const schema = resolveInputSchema(tool);\n const input =\n firstInputExample(tool) ??\n (schema === undefined ? {} : sampleFromSchema(schema, schema));\n return `tools${formatPropertyAccess(toolName)}(${JSON.stringify(input)})`;\n}\n\nfunction renderToolProjection(\n variableName: string,\n tool: CodeModeToolSet[string],\n): string {\n const field = firstObjectProperty(resolveOutputSchema(tool));\n if (field === undefined) {\n return variableName;\n }\n return `{ ${formatObjectKey(field)}: ${variableName}${formatPropertyAccess(field)} }`;\n}\n\nfunction firstObjectProperty(\n schema: JsonSchema | undefined,\n): string | undefined {\n if (schema === undefined || !isRecord(schema.properties)) {\n return undefined;\n }\n return Object.entries(schema.properties).find(entry =>\n isRecord(entry[1]),\n )?.[0];\n}\n\nfunction resolveInputSchema(\n tool: CodeModeToolSet[string],\n): JsonSchema | undefined {\n try {\n const jsonSchema = asSchema(tool.inputSchema).jsonSchema;\n if (isPromiseLike(jsonSchema) || !isRecord(jsonSchema)) {\n return undefined;\n }\n return jsonSchema;\n } catch {\n return undefined;\n }\n}\n\nfunction resolveOutputSchema(\n tool: CodeModeToolSet[string],\n): JsonSchema | undefined {\n try {\n const outputSchema = tool.outputSchema;\n if (outputSchema === undefined) {\n return undefined;\n }\n const jsonSchema = asSchema(outputSchema).jsonSchema;\n if (isPromiseLike(jsonSchema) || !isRecord(jsonSchema)) {\n return undefined;\n }\n return jsonSchema;\n } catch {\n return undefined;\n }\n}\n\nfunction schemaToType(schema: JsonSchema, root: JsonSchema): string {\n return schemaToTypeInner(schema, {\n root,\n seenRefs: new Set(),\n depth: 0,\n });\n}\n\nfunction schemaToTypeInner(schema: JsonSchema, context: SchemaContext): string {\n if (context.depth > MAX_SCHEMA_DEPTH) {\n return 'unknown';\n }\n\n const ref = firstString(schema.$ref);\n if (ref !== undefined) {\n const resolved = resolveRef(ref, context.root, context.seenRefs);\n return resolved === undefined\n ? 'unknown'\n : schemaToTypeInner(resolved, nextContext(context));\n }\n\n const constValue = schema.const;\n if (constValue !== undefined) {\n return literalType(constValue);\n }\n\n const enumValues = asArray(schema.enum);\n if (enumValues !== undefined) {\n return union(enumValues.map(literalType));\n }\n\n const oneOf = schemaArray(schema.oneOf);\n if (oneOf !== undefined) {\n return union(\n oneOf.map(part => schemaToTypeInner(part, nextContext(context))),\n );\n }\n\n const anyOf = schemaArray(schema.anyOf);\n if (anyOf !== undefined) {\n return union(\n anyOf.map(part => schemaToTypeInner(part, nextContext(context))),\n );\n }\n\n const allOf = schemaArray(schema.allOf);\n if (allOf !== undefined) {\n return allOf\n .map(part => schemaToTypeInner(part, nextContext(context)))\n .join(' & ');\n }\n\n const type = schema.type;\n if (Array.isArray(type)) {\n return union(\n type.map(part => schemaToTypeInner({ ...schema, type: part }, context)),\n );\n }\n\n if (type === 'object' || isRecord(schema.properties)) {\n return objectType(schema, context);\n }\n\n if (type === 'array' || schema.items !== undefined) {\n return arrayType(schema, context);\n }\n\n if (type === 'string') {\n return 'string';\n }\n\n if (type === 'number' || type === 'integer') {\n return 'number';\n }\n\n if (type === 'boolean') {\n return 'boolean';\n }\n\n if (type === 'null') {\n return 'null';\n }\n\n return 'unknown';\n}\n\nfunction objectType(schema: JsonSchema, context: SchemaContext): string {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n const required = new Set(asArray(schema.required)?.filter(isString));\n const entries = Object.entries(properties).filter(\n (entry): entry is [string, JsonSchema] => isRecord(entry[1]),\n );\n\n if (entries.length === 0) {\n const additionalProperties = schema.additionalProperties;\n if (isRecord(additionalProperties)) {\n return `Record<string, ${schemaToTypeInner(additionalProperties, nextContext(context))}>`;\n }\n if (additionalProperties === true) {\n return 'Record<string, unknown>';\n }\n return '{}';\n }\n\n const lines = entries.flatMap(([name, value]) => {\n const propertyLines: string[] = [];\n const description = firstString(value.description);\n if (description !== undefined) {\n propertyLines.push(` /** ${toComment(description)} */`);\n }\n propertyLines.push(\n ` ${formatObjectKey(name)}${required.has(name) ? '' : '?'}: ${indentType(\n schemaToTypeInner(value, nextContext(context)),\n 2,\n )};`,\n );\n return propertyLines;\n });\n\n const additionalProperties = schema.additionalProperties;\n if (isRecord(additionalProperties)) {\n lines.push(\n ` [key: string]: ${schemaToTypeInner(additionalProperties, nextContext(context))};`,\n );\n } else if (additionalProperties === true) {\n lines.push(' [key: string]: unknown;');\n }\n\n const compact = compactObjectType(lines);\n if (compact !== undefined) {\n return compact;\n }\n\n return `{\\n${lines.join('\\n')}\\n}`;\n}\n\nfunction arrayType(schema: JsonSchema, context: SchemaContext): string {\n const items = schema.items;\n if (Array.isArray(items)) {\n return `[${items\n .map(item =>\n isRecord(item)\n ? schemaToTypeInner(item, nextContext(context))\n : 'unknown',\n )\n .join(', ')}]`;\n }\n if (isRecord(items)) {\n const itemType = schemaToTypeInner(items, nextContext(context));\n return needsParentheses(itemType) || itemType.includes('\\n')\n ? `Array<${itemType}>`\n : `${itemType}[]`;\n }\n return 'unknown[]';\n}\n\nfunction sampleFromSchema(schema: JsonSchema, root: JsonSchema): unknown {\n return sampleFromSchemaInner(schema, {\n root,\n seenRefs: new Set(),\n depth: 0,\n });\n}\n\nfunction sampleFromSchemaInner(\n schema: JsonSchema,\n context: SchemaContext,\n): unknown {\n if (context.depth > MAX_SCHEMA_DEPTH) {\n return null;\n }\n\n if (schema.default !== undefined) {\n return schema.default;\n }\n\n const ref = firstString(schema.$ref);\n if (ref !== undefined) {\n const resolved = resolveRef(ref, context.root, context.seenRefs);\n return resolved === undefined\n ? null\n : sampleFromSchemaInner(resolved, nextContext(context));\n }\n\n if (schema.const !== undefined) {\n return schema.const;\n }\n\n const enumValues = asArray(schema.enum);\n if (enumValues !== undefined) {\n return enumValues[0] ?? null;\n }\n\n const oneOf = schemaArray(schema.oneOf);\n if (oneOf !== undefined) {\n return sampleFromSchemaInner(oneOf[0] ?? {}, nextContext(context));\n }\n\n const anyOf = schemaArray(schema.anyOf);\n if (anyOf !== undefined) {\n return sampleFromSchemaInner(anyOf[0] ?? {}, nextContext(context));\n }\n\n const type = schema.type;\n if (Array.isArray(type)) {\n return sampleFromSchemaInner(\n { ...schema, type: type.find(part => part !== 'null') ?? type[0] },\n context,\n );\n }\n\n if (type === 'object' || isRecord(schema.properties)) {\n const properties = isRecord(schema.properties) ? schema.properties : {};\n return Object.fromEntries(\n Object.entries(properties)\n .filter((entry): entry is [string, JsonSchema] => isRecord(entry[1]))\n .map(([name, value]) => [\n name,\n sampleFromSchemaInner(value, nextContext(context)),\n ]),\n );\n }\n\n if (type === 'array' || schema.items !== undefined) {\n const items = Array.isArray(schema.items) ? schema.items[0] : schema.items;\n return [\n isRecord(items)\n ? sampleFromSchemaInner(items, nextContext(context))\n : null,\n ];\n }\n\n if (type === 'number' || type === 'integer') {\n return 1;\n }\n\n if (type === 'boolean') {\n return true;\n }\n\n if (type === 'null') {\n return null;\n }\n\n if (type === 'string' || type === undefined) {\n const examples = asArray(schema.examples);\n if (examples?.[0] !== undefined) {\n return examples[0];\n }\n const format = firstString(schema.format);\n if (format === 'uri' || format === 'url') {\n return 'https://example.com';\n }\n if (format === 'date-time') {\n return '2026-01-01T00:00:00.000Z';\n }\n if (format === 'date') {\n return '2026-01-01';\n }\n return 'string';\n }\n\n return null;\n}\n\nfunction firstInputExample(tool: CodeModeToolSet[string]): unknown {\n const examples = asArray(tool.inputExamples);\n const first = examples?.[0];\n return isRecord(first) && 'input' in first ? first.input : undefined;\n}\n\nfunction resolveRef(\n ref: string,\n root: JsonSchema,\n seenRefs: Set<string>,\n): JsonSchema | undefined {\n if (!ref.startsWith('#/') || seenRefs.has(ref)) {\n return undefined;\n }\n\n seenRefs.add(ref);\n const value = ref\n .slice(2)\n .split('/')\n .map(part => part.replace(/~1/g, '/').replace(/~0/g, '~'))\n .reduce<unknown>((current, part) => {\n if (!isRecord(current)) {\n return undefined;\n }\n return current[part];\n }, root);\n\n return isRecord(value) ? value : undefined;\n}\n\nfunction nextContext(context: SchemaContext): SchemaContext {\n return {\n ...context,\n depth: context.depth + 1,\n };\n}\n\nfunction union(types: string[]): string {\n const unique = [...new Set(types)];\n return unique.length === 0 ? 'unknown' : unique.join(' | ');\n}\n\nfunction literalType(value: unknown): string {\n if (typeof value === 'string') {\n return JSON.stringify(value);\n }\n if (\n typeof value === 'number' ||\n typeof value === 'boolean' ||\n value === null\n ) {\n return String(value);\n }\n return 'unknown';\n}\n\nfunction indentType(type: string, spaces: number): string {\n if (!type.includes('\\n')) {\n return type;\n }\n\n const padding = ' '.repeat(spaces);\n return type.replaceAll('\\n', `\\n${padding}`);\n}\n\nfunction needsParentheses(type: string): boolean {\n return type.includes(' | ') || type.includes(' & ');\n}\n\nfunction formatObjectKey(key: string): string {\n return isIdentifier(key) ? key : JSON.stringify(key);\n}\n\nfunction formatPropertyAccess(key: string): string {\n return isIdentifier(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n\nfunction uniqueToolVariableNames(toolNames: string[]): string[] {\n const seen = new Map<string, number>();\n return toolNames.map(toolName => {\n const base = toIdentifier(toolName);\n const count = seen.get(base) ?? 0;\n seen.set(base, count + 1);\n return count === 0 ? base : `${base}${count + 1}`;\n });\n}\n\nfunction toIdentifier(value: string): string {\n const identifier = value\n .replace(/[^A-Za-z0-9_$]/g, '_')\n .replace(/^[^A-Za-z_$]+/, '');\n return identifier.length === 0 ? 'tool' : identifier;\n}\n\nfunction isIdentifier(value: string): boolean {\n return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(value);\n}\n\nfunction compactObjectType(lines: string[]): string | undefined {\n if (lines.length === 0 || lines.some(line => line.includes('/**'))) {\n return undefined;\n }\n\n const fields = lines.map(line => line.trim());\n if (fields.some(field => field.includes('\\n'))) {\n return undefined;\n }\n\n const compact = `{ ${fields.join(' ')} }`;\n return compact.length <= MAX_COMPACT_OBJECT_TYPE_LENGTH ? compact : undefined;\n}\n\nfunction toComment(value: string): string {\n return value.replaceAll('*/', '* /').replace(/\\s+/g, ' ').trim();\n}\n\nfunction firstString(...values: unknown[]): string | undefined {\n return values.find(isString);\n}\n\nfunction schemaArray(value: unknown): JsonSchema[] | undefined {\n const values = asArray(value);\n if (values === undefined || !values.every(isRecord)) {\n return undefined;\n }\n return values;\n}\n\nfunction asArray(value: unknown): unknown[] | undefined {\n return Array.isArray(value) ? value : undefined;\n}\n\nfunction isRecord(value: unknown): value is JsonSchema {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === 'string';\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n return isRecord(value) && typeof value.then === 'function';\n}\n"],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
@@ -1,53 +1,37 @@
|
|
|
1
1
|
import { CodeModeError } from "../errors.js";
|
|
2
|
+
//#region src/utils/serialization.ts
|
|
2
3
|
function assertJsonSerializable(value, maxBytes, label) {
|
|
3
|
-
|
|
4
|
+
toJsonPayload(value, maxBytes, label);
|
|
4
5
|
}
|
|
5
6
|
function toJsonPayload(value, maxBytes, label) {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
return toStrictJsonPayload(value, maxBytes, label);
|
|
7
|
+
if (value === void 0) return "";
|
|
8
|
+
return toStrictJsonPayload(value, maxBytes, label);
|
|
10
9
|
}
|
|
11
10
|
function fromJsonPayload(valueJson) {
|
|
12
|
-
|
|
11
|
+
return valueJson === "" ? void 0 : JSON.parse(valueJson);
|
|
13
12
|
}
|
|
14
13
|
function toStrictJsonPayload(value, maxBytes, label) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (encoded === void 0) {
|
|
25
|
-
throw new CodeModeError(
|
|
26
|
-
`${label} is not JSON-serializable.`,
|
|
27
|
-
"CODE_MODE_SERIALIZATION_ERROR"
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
assertJsonPayloadSize(encoded, maxBytes, label);
|
|
31
|
-
return encoded;
|
|
14
|
+
let encoded;
|
|
15
|
+
try {
|
|
16
|
+
encoded = JSON.stringify(value);
|
|
17
|
+
} catch (error) {
|
|
18
|
+
throw new CodeModeError(`${label} is not JSON-serializable: ${getErrorMessage(error)}`, "CODE_MODE_SERIALIZATION_ERROR");
|
|
19
|
+
}
|
|
20
|
+
if (encoded === void 0) throw new CodeModeError(`${label} is not JSON-serializable.`, "CODE_MODE_SERIALIZATION_ERROR");
|
|
21
|
+
assertJsonPayloadSize(encoded, maxBytes, label);
|
|
22
|
+
return encoded;
|
|
32
23
|
}
|
|
33
24
|
function assertJsonPayloadSize(valueJson, maxBytes, label) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{ bytes, maxBytes }
|
|
40
|
-
);
|
|
41
|
-
}
|
|
25
|
+
const bytes = new TextEncoder().encode(valueJson).byteLength;
|
|
26
|
+
if (bytes > maxBytes) throw new CodeModeError(`${label} exceeds the ${maxBytes} byte size limit.`, "CODE_MODE_SERIALIZATION_ERROR", {
|
|
27
|
+
bytes,
|
|
28
|
+
maxBytes
|
|
29
|
+
});
|
|
42
30
|
}
|
|
43
31
|
function getErrorMessage(error) {
|
|
44
|
-
|
|
32
|
+
return error instanceof Error ? error.message : String(error);
|
|
45
33
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
fromJsonPayload,
|
|
50
|
-
toJsonPayload,
|
|
51
|
-
toStrictJsonPayload
|
|
52
|
-
};
|
|
34
|
+
//#endregion
|
|
35
|
+
export { assertJsonPayloadSize, assertJsonSerializable, fromJsonPayload, toJsonPayload, toStrictJsonPayload };
|
|
36
|
+
|
|
53
37
|
//# sourceMappingURL=serialization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utils/serialization.ts"],"sourcesContent":["import { CodeModeError } from '../errors.js';\n\nexport function assertJsonSerializable(\n value: unknown,\n maxBytes: number,\n label: string,\n): void {\n void toJsonPayload(value, maxBytes, label);\n}\n\nexport function toJsonPayload(\n value: unknown,\n maxBytes: number,\n label: string,\n): string {\n if (value === undefined) {\n return '';\n }\n\n return toStrictJsonPayload(value, maxBytes, label);\n}\n\nexport function fromJsonPayload(valueJson: string): unknown {\n return valueJson === '' ? undefined : JSON.parse(valueJson);\n}\n\nexport function toStrictJsonPayload(\n value: unknown,\n maxBytes: number,\n label: string,\n): string {\n let encoded: string | undefined;\n try {\n encoded = JSON.stringify(value);\n } catch (error) {\n throw new CodeModeError(\n `${label} is not JSON-serializable: ${getErrorMessage(error)}`,\n 'CODE_MODE_SERIALIZATION_ERROR',\n );\n }\n\n if (encoded === undefined) {\n throw new CodeModeError(\n `${label} is not JSON-serializable.`,\n 'CODE_MODE_SERIALIZATION_ERROR',\n );\n }\n\n assertJsonPayloadSize(encoded, maxBytes, label);\n return encoded;\n}\n\nexport function assertJsonPayloadSize(\n valueJson: string,\n maxBytes: number,\n label: string,\n): void {\n const bytes = new TextEncoder().encode(valueJson).byteLength;\n if (bytes > maxBytes) {\n throw new CodeModeError(\n `${label} exceeds the ${maxBytes} byte size limit.`,\n 'CODE_MODE_SERIALIZATION_ERROR',\n { bytes, maxBytes },\n );\n }\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"serialization.js","names":[],"sources":["../../src/utils/serialization.ts"],"sourcesContent":["import { CodeModeError } from '../errors.js';\n\nexport function assertJsonSerializable(\n value: unknown,\n maxBytes: number,\n label: string,\n): void {\n void toJsonPayload(value, maxBytes, label);\n}\n\nexport function toJsonPayload(\n value: unknown,\n maxBytes: number,\n label: string,\n): string {\n if (value === undefined) {\n return '';\n }\n\n return toStrictJsonPayload(value, maxBytes, label);\n}\n\nexport function fromJsonPayload(valueJson: string): unknown {\n return valueJson === '' ? undefined : JSON.parse(valueJson);\n}\n\nexport function toStrictJsonPayload(\n value: unknown,\n maxBytes: number,\n label: string,\n): string {\n let encoded: string | undefined;\n try {\n encoded = JSON.stringify(value);\n } catch (error) {\n throw new CodeModeError(\n `${label} is not JSON-serializable: ${getErrorMessage(error)}`,\n 'CODE_MODE_SERIALIZATION_ERROR',\n );\n }\n\n if (encoded === undefined) {\n throw new CodeModeError(\n `${label} is not JSON-serializable.`,\n 'CODE_MODE_SERIALIZATION_ERROR',\n );\n }\n\n assertJsonPayloadSize(encoded, maxBytes, label);\n return encoded;\n}\n\nexport function assertJsonPayloadSize(\n valueJson: string,\n maxBytes: number,\n label: string,\n): void {\n const bytes = new TextEncoder().encode(valueJson).byteLength;\n if (bytes > maxBytes) {\n throw new CodeModeError(\n `${label} exceeds the ${maxBytes} byte size limit.`,\n 'CODE_MODE_SERIALIZATION_ERROR',\n { bytes, maxBytes },\n );\n }\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n"],"mappings":";;AAEA,SAAgB,uBACd,OACA,UACA,OACM;CACN,cAAmB,OAAO,UAAU,KAAK;AAC3C;AAEA,SAAgB,cACd,OACA,UACA,OACQ;CACR,IAAI,UAAU,KAAA,GACZ,OAAO;CAGT,OAAO,oBAAoB,OAAO,UAAU,KAAK;AACnD;AAEA,SAAgB,gBAAgB,WAA4B;CAC1D,OAAO,cAAc,KAAK,KAAA,IAAY,KAAK,MAAM,SAAS;AAC5D;AAEA,SAAgB,oBACd,OACA,UACA,OACQ;CACR,IAAI;CACJ,IAAI;EACF,UAAU,KAAK,UAAU,KAAK;CAChC,SAAS,OAAO;EACd,MAAM,IAAI,cACR,GAAG,MAAM,6BAA6B,gBAAgB,KAAK,KAC3D,+BACF;CACF;CAEA,IAAI,YAAY,KAAA,GACd,MAAM,IAAI,cACR,GAAG,MAAM,6BACT,+BACF;CAGF,sBAAsB,SAAS,UAAU,KAAK;CAC9C,OAAO;AACT;AAEA,SAAgB,sBACd,WACA,UACA,OACM;CACN,MAAM,QAAQ,IAAI,YAAY,CAAC,CAAC,OAAO,SAAS,CAAC,CAAC;CAClD,IAAI,QAAQ,UACV,MAAM,IAAI,cACR,GAAG,MAAM,eAAe,SAAS,oBACjC,iCACA;EAAE;EAAO;CAAS,CACpB;AAEJ;AAEA,SAAS,gBAAgB,OAAwB;CAC/C,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAC9D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/code-mode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.81",
|
|
4
4
|
"description": "QuickJS-backed code mode tool for AI SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
"README.md"
|
|
38
38
|
],
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"ai": "7.0.
|
|
40
|
+
"ai": "7.0.124"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "22.19.19",
|
|
44
44
|
"@vercel/ai-tsconfig": "0.0.0",
|
|
45
|
-
"ai": "7.0.
|
|
46
|
-
"
|
|
45
|
+
"ai": "7.0.124",
|
|
46
|
+
"tsdown": "^0.23.0",
|
|
47
47
|
"typescript": "5.8.3",
|
|
48
48
|
"zod": "3.25.76"
|
|
49
49
|
},
|
|
@@ -67,8 +67,8 @@
|
|
|
67
67
|
"run": "^2.0.0"
|
|
68
68
|
},
|
|
69
69
|
"scripts": {
|
|
70
|
-
"build": "pnpm clean &&
|
|
71
|
-
"clean": "del-cli build
|
|
70
|
+
"build": "pnpm clean && tsdown",
|
|
71
|
+
"clean": "del-cli build *.tsbuildinfo",
|
|
72
72
|
"type-check": "tsc --build && tsc -p src/tsconfig.json",
|
|
73
73
|
"test": "pnpm test:node",
|
|
74
74
|
"test:watch": "vitest --config vitest.node.config.js",
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { DIRECT_TOOL_CALL } from './direct-tool-call.js';\nexport {\n codeModeTool as experimental_codeModeTool,\n createCodeModeTool as experimental_createCodeModeTool,\n} from './code-mode-tool.js';\nexport {\n continueCodeModeApproval as experimental_continueCodeModeApproval,\n getCodeModeApprovalResponse as experimental_getCodeModeApprovalResponse,\n isCodeModeApprovalInterrupt as experimental_isCodeModeApprovalInterrupt,\n toCodeModeApprovalMessages as experimental_toCodeModeApprovalMessages,\n} from './approval-continuation.js';\nexport {\n CodeModeAbortedError,\n CodeModeBridgeLimitError,\n CodeModeConcurrencyError,\n CodeModeDetachedBridgeRequestError,\n CodeModeError,\n CodeModeProtocolError,\n CodeModeSourceTooLargeError,\n CodeModeTimeoutError,\n CodeModeToolApprovalDeniedError,\n CodeModeToolApprovalRequiredError,\n CodeModeToolError,\n} from './errors.js';\nexport { requestCodeModeInterrupt as experimental_requestCodeModeInterrupt } from './host-interrupt.js';\nexport {\n continueCodeModeInterrupt as experimental_continueCodeModeInterrupt,\n getCodeModeInterrupt as experimental_getCodeModeInterrupt,\n isCodeModeInterrupt as experimental_isCodeModeInterrupt,\n unwrapCodeModeResult as experimental_unwrapCodeModeResult,\n} from './interrupt-continuation.js';\nexport { runCodeMode as experimental_runCodeMode } from './run-code-mode.js';\nexport { setCodeModeContinuationSigningKey as experimental_setCodeModeContinuationSigningKey } from './continuation-capability.js';\nexport { setMaxWorkers as experimental_setMaxWorkers } from 'run';\nexport type {\n ApprovalDecision,\n CodeModeApprovalInterrupt,\n CodeModeApprovalRequest,\n CodeModeApprovalResponse,\n CodeModeContinuation,\n CodeModeContinuationSecurityOptions,\n CodeModeExecutionPolicy,\n CodeModeInterrupt,\n CodeModeInterruptExecutionContext,\n CodeModeInterruptPayload,\n CodeModeInterruptResolution,\n CodeModeOptions,\n CodeModeTool,\n CodeModeToolExecutionOptions,\n CodeModeToolInput,\n CodeModeToolOptions,\n CodeModeToolSet,\n CodeModeUnwrappedResult,\n RunCodeModeInput,\n} from './types.js';\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC;AAAA,EACkB;AAAA,EACM;AAAA,OACjB;AACP;AAAA,EAC8B;AAAA,EACG;AAAA,EACA;AAAA,EACD;AAAA,OACzB;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAqC,gCAA6C;AAClF;AAAA,EAC+B;AAAA,EACL;AAAA,EACD;AAAA,EACC;AAAA,OACnB;AACP,SAAwB,mBAAgC;AACxD,SAA8C,yCAAsD;AACpG,SAA0B,qBAAkC;","names":[]}
|
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|