call-ai 13.1.15 → 13.1.17

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "call-ai",
3
- "version": "13.1.15",
3
+ "version": "13.1.17",
4
4
  "description": "Lightweight library for making AI API calls with streaming support",
5
5
  "type": "module",
6
6
  "main": "./index.js",
@@ -1,7 +1,18 @@
1
- import { Schema, SchemaStrategy } from "../types.js";
1
+ import { ProcessedSchema, RequestSchema, Schema, SchemaAIJsonSchemaRequest, SchemaAIToolRequest, SchemaStrategy } from "../types.js";
2
+ export type NamedToolChoice = SchemaAIToolRequest["tool_choice"] & {
3
+ readonly function: {
4
+ readonly name: string;
5
+ };
6
+ };
7
+ export type NamedToolDefinition = SchemaAIToolRequest["tools"][number] & {
8
+ readonly function: {
9
+ readonly name: string;
10
+ readonly parameters: RequestSchema | ProcessedSchema;
11
+ };
12
+ };
2
13
  export interface EnforcedSchemaFields {
3
- readonly response_format?: unknown;
4
- readonly tools?: unknown;
5
- readonly tool_choice?: unknown;
14
+ readonly response_format?: SchemaAIJsonSchemaRequest["response_format"];
15
+ readonly tools?: NamedToolDefinition[];
16
+ readonly tool_choice?: NamedToolChoice;
6
17
  }
7
18
  export declare function enforcedSchemaFields(strategy: SchemaStrategy, schema: Schema): EnforcedSchemaFields | undefined;
@@ -14,6 +14,23 @@ function isRepresentable(strategy, schema) {
14
14
  }
15
15
  return Object.keys(schema).every((key) => TOOL_MODE_PRESERVED_KEYS.has(key) || HARMLESS_METADATA_KEYS.has(key));
16
16
  }
17
+ function namedFunction(v) {
18
+ if (v === null || typeof v !== "object")
19
+ return undefined;
20
+ const fn = v.function;
21
+ if (fn === null || typeof fn !== "object")
22
+ return undefined;
23
+ return typeof fn.name === "string" && fn.name.length > 0
24
+ ? fn
25
+ : undefined;
26
+ }
27
+ function isNamedToolChoice(v) {
28
+ return namedFunction(v) !== undefined;
29
+ }
30
+ function isNamedToolDefinition(v) {
31
+ const fn = namedFunction(v);
32
+ return fn !== undefined && fn.parameters !== null && typeof fn.parameters === "object";
33
+ }
17
34
  function validatePrepared(prepared) {
18
35
  if (prepared === null || typeof prepared !== "object" || Array.isArray(prepared))
19
36
  return undefined;
@@ -21,13 +38,13 @@ function validatePrepared(prepared) {
21
38
  const { response_format, tools, tool_choice } = record;
22
39
  if (response_format !== undefined && (response_format === null || typeof response_format !== "object"))
23
40
  return undefined;
24
- if (tools !== undefined && (Array.isArray(tools) === false || tools.length === 0))
41
+ if (tools !== undefined && (Array.isArray(tools) === false || tools.length === 0 || tools.every(isNamedToolDefinition) === false))
25
42
  return undefined;
26
- if (tool_choice !== undefined && (tool_choice === null || typeof tool_choice !== "object"))
43
+ if (tool_choice !== undefined && isNamedToolChoice(tool_choice) === false)
27
44
  return undefined;
28
45
  return {
29
- ...(response_format !== undefined ? { response_format } : {}),
30
- ...(tools !== undefined ? { tools } : {}),
46
+ ...(response_format !== undefined ? { response_format: response_format } : {}),
47
+ ...(tools !== undefined ? { tools: tools } : {}),
31
48
  ...(tool_choice !== undefined ? { tool_choice } : {}),
32
49
  };
33
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"enforced-fields.js","sourceRoot":"","sources":["../../jsr/strategies/enforced-fields.ts"],"names":[],"mappings":"AAgBA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC,CAAC;AAOrG,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAGzE,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAU,CAAC;AAErE,SAAS,qBAAqB,CAAC,MAAc;IAC3C,MAAM,UAAU,GAAI,MAA4C,CAAC,UAAU,CAAC;IAC5E,OAAO,UAAU,KAAK,IAAI,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,UAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/G,CAAC;AAgBD,SAAS,eAAe,CAAC,QAAwB,EAAE,MAAc;IAG/D,MAAM,YAAY,GAAI,MAAsC,CAAC,IAAI,CAAC;IAClE,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE1E,IAAI,QAAQ,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAIxC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,CAAC;IACjH,CAAC;IAGD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,wBAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAClH,CAAC;AAUD,SAAS,gBAAgB,CAAC,QAAiB;IACzC,IAAI,QAAQ,KAAK,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACnG,MAAM,MAAM,GAAG,QAAmC,CAAC;IACnD,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACvD,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,OAAO,eAAe,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACzH,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,KAAK,IAAK,KAAmB,CAAC,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACnH,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,WAAW,KAAK,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7G,OAAO;QACL,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAeD,MAAM,UAAU,oBAAoB,CAAC,QAAwB,EAAE,MAAc;IAC3E,IAAI,QAAQ,CAAC,QAAQ,KAAK,aAAa,IAAI,QAAQ,CAAC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC7E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,KAAK,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACrE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"enforced-fields.js","sourceRoot":"","sources":["../../jsr/strategies/enforced-fields.ts"],"names":[],"mappings":"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"}
package/types.d.ts CHANGED
@@ -132,7 +132,7 @@ export interface SchemaAIJsonSchemaRequest {
132
132
  };
133
133
  };
134
134
  }
135
- interface SchemaAIToolRequest {
135
+ export interface SchemaAIToolRequest {
136
136
  tools: OpenAIFunctionCall[];
137
137
  tool_choice: OpenAIFunctionCall;
138
138
  }