@leanandmean/ai 0.74.1-scramjet.17 → 0.74.1-scramjet.18

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/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from "./image-models.js";
6
6
  export * from "./images.js";
7
7
  export * from "./images-api-registry.js";
8
8
  export * from "./models.js";
9
+ export * from "./provider-request-tool-inventory.js";
9
10
  export type { BedrockOptions, BedrockThinkingDisplay } from "./providers/amazon-bedrock.js";
10
11
  export type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from "./providers/anthropic.js";
11
12
  export type { AzureOpenAIResponsesOptions } from "./providers/azure-openai-responses.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,YAAY,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACzF,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,cAAc,yCAAyC,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EACX,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\nexport * from \"./api-registry.js\";\nexport * from \"./env-api-keys.js\";\nexport * from \"./image-models.js\";\nexport * from \"./images.js\";\nexport * from \"./images-api-registry.js\";\nexport * from \"./models.js\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./providers/amazon-bedrock.js\";\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./providers/anthropic.js\";\nexport type { AzureOpenAIResponsesOptions } from \"./providers/azure-openai-responses.js\";\nexport * from \"./providers/faux.js\";\nexport type { GoogleOptions } from \"./providers/google.js\";\nexport type { GoogleThinkingLevel } from \"./providers/google-shared.js\";\nexport type { GoogleVertexOptions } from \"./providers/google-vertex.js\";\nexport * from \"./providers/images/register-builtins.js\";\nexport type { MistralOptions } from \"./providers/mistral.js\";\nexport type {\n\tOpenAICodexResponsesOptions,\n\tOpenAICodexWebSocketDebugStats,\n} from \"./providers/openai-codex-responses.js\";\nexport type { OpenAICompletionsOptions } from \"./providers/openai-completions.js\";\nexport type { OpenAIResponsesOptions } from \"./providers/openai-responses.js\";\nexport * from \"./providers/register-builtins.js\";\nexport * from \"./session-resources.js\";\nexport * from \"./stream.js\";\nexport * from \"./types.js\";\nexport * from \"./utils/diagnostics.js\";\nexport * from \"./utils/event-stream.js\";\nexport * from \"./utils/json-parse.js\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthProvider,\n\tOAuthProviderId,\n\tOAuthProviderInfo,\n\tOAuthProviderInterface,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./utils/oauth/types.js\";\nexport * from \"./utils/overflow.js\";\nexport * from \"./utils/system-prompt.js\";\nexport * from \"./utils/typebox-helpers.js\";\nexport * from \"./utils/validation.js\";\n"]}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,sCAAsC,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAC5G,YAAY,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACzF,cAAc,qBAAqB,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,cAAc,yCAAyC,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,YAAY,EACX,2BAA2B,EAC3B,8BAA8B,GAC9B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAC9E,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,YAAY,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GACjB,MAAM,wBAAwB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\nexport * from \"./api-registry.js\";\nexport * from \"./env-api-keys.js\";\nexport * from \"./image-models.js\";\nexport * from \"./images.js\";\nexport * from \"./images-api-registry.js\";\nexport * from \"./models.js\";\nexport * from \"./provider-request-tool-inventory.js\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./providers/amazon-bedrock.js\";\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./providers/anthropic.js\";\nexport type { AzureOpenAIResponsesOptions } from \"./providers/azure-openai-responses.js\";\nexport * from \"./providers/faux.js\";\nexport type { GoogleOptions } from \"./providers/google.js\";\nexport type { GoogleThinkingLevel } from \"./providers/google-shared.js\";\nexport type { GoogleVertexOptions } from \"./providers/google-vertex.js\";\nexport * from \"./providers/images/register-builtins.js\";\nexport type { MistralOptions } from \"./providers/mistral.js\";\nexport type {\n\tOpenAICodexResponsesOptions,\n\tOpenAICodexWebSocketDebugStats,\n} from \"./providers/openai-codex-responses.js\";\nexport type { OpenAICompletionsOptions } from \"./providers/openai-completions.js\";\nexport type { OpenAIResponsesOptions } from \"./providers/openai-responses.js\";\nexport * from \"./providers/register-builtins.js\";\nexport * from \"./session-resources.js\";\nexport * from \"./stream.js\";\nexport * from \"./types.js\";\nexport * from \"./utils/diagnostics.js\";\nexport * from \"./utils/event-stream.js\";\nexport * from \"./utils/json-parse.js\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthProvider,\n\tOAuthProviderId,\n\tOAuthProviderInfo,\n\tOAuthProviderInterface,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./utils/oauth/types.js\";\nexport * from \"./utils/overflow.js\";\nexport * from \"./utils/system-prompt.js\";\nexport * from \"./utils/typebox-helpers.js\";\nexport * from \"./utils/validation.js\";\n"]}
package/dist/index.js CHANGED
@@ -5,6 +5,7 @@ export * from "./image-models.js";
5
5
  export * from "./images.js";
6
6
  export * from "./images-api-registry.js";
7
7
  export * from "./models.js";
8
+ export * from "./provider-request-tool-inventory.js";
8
9
  export * from "./providers/faux.js";
9
10
  export * from "./providers/images/register-builtins.js";
10
11
  export * from "./providers/register-builtins.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAI5B,cAAc,qBAAqB,CAAC;AAIpC,cAAc,yCAAyC,CAAC;AAQxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAatC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\nexport * from \"./api-registry.js\";\nexport * from \"./env-api-keys.js\";\nexport * from \"./image-models.js\";\nexport * from \"./images.js\";\nexport * from \"./images-api-registry.js\";\nexport * from \"./models.js\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./providers/amazon-bedrock.js\";\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./providers/anthropic.js\";\nexport type { AzureOpenAIResponsesOptions } from \"./providers/azure-openai-responses.js\";\nexport * from \"./providers/faux.js\";\nexport type { GoogleOptions } from \"./providers/google.js\";\nexport type { GoogleThinkingLevel } from \"./providers/google-shared.js\";\nexport type { GoogleVertexOptions } from \"./providers/google-vertex.js\";\nexport * from \"./providers/images/register-builtins.js\";\nexport type { MistralOptions } from \"./providers/mistral.js\";\nexport type {\n\tOpenAICodexResponsesOptions,\n\tOpenAICodexWebSocketDebugStats,\n} from \"./providers/openai-codex-responses.js\";\nexport type { OpenAICompletionsOptions } from \"./providers/openai-completions.js\";\nexport type { OpenAIResponsesOptions } from \"./providers/openai-responses.js\";\nexport * from \"./providers/register-builtins.js\";\nexport * from \"./session-resources.js\";\nexport * from \"./stream.js\";\nexport * from \"./types.js\";\nexport * from \"./utils/diagnostics.js\";\nexport * from \"./utils/event-stream.js\";\nexport * from \"./utils/json-parse.js\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthProvider,\n\tOAuthProviderId,\n\tOAuthProviderInfo,\n\tOAuthProviderInterface,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./utils/oauth/types.js\";\nexport * from \"./utils/overflow.js\";\nexport * from \"./utils/system-prompt.js\";\nexport * from \"./utils/typebox-helpers.js\";\nexport * from \"./utils/validation.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,sCAAsC,CAAC;AAIrD,cAAc,qBAAqB,CAAC;AAIpC,cAAc,yCAAyC,CAAC;AAQxD,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AAatC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC","sourcesContent":["export type { Static, TSchema } from \"typebox\";\nexport { Type } from \"typebox\";\n\nexport * from \"./api-registry.js\";\nexport * from \"./env-api-keys.js\";\nexport * from \"./image-models.js\";\nexport * from \"./images.js\";\nexport * from \"./images-api-registry.js\";\nexport * from \"./models.js\";\nexport * from \"./provider-request-tool-inventory.js\";\nexport type { BedrockOptions, BedrockThinkingDisplay } from \"./providers/amazon-bedrock.js\";\nexport type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from \"./providers/anthropic.js\";\nexport type { AzureOpenAIResponsesOptions } from \"./providers/azure-openai-responses.js\";\nexport * from \"./providers/faux.js\";\nexport type { GoogleOptions } from \"./providers/google.js\";\nexport type { GoogleThinkingLevel } from \"./providers/google-shared.js\";\nexport type { GoogleVertexOptions } from \"./providers/google-vertex.js\";\nexport * from \"./providers/images/register-builtins.js\";\nexport type { MistralOptions } from \"./providers/mistral.js\";\nexport type {\n\tOpenAICodexResponsesOptions,\n\tOpenAICodexWebSocketDebugStats,\n} from \"./providers/openai-codex-responses.js\";\nexport type { OpenAICompletionsOptions } from \"./providers/openai-completions.js\";\nexport type { OpenAIResponsesOptions } from \"./providers/openai-responses.js\";\nexport * from \"./providers/register-builtins.js\";\nexport * from \"./session-resources.js\";\nexport * from \"./stream.js\";\nexport * from \"./types.js\";\nexport * from \"./utils/diagnostics.js\";\nexport * from \"./utils/event-stream.js\";\nexport * from \"./utils/json-parse.js\";\nexport type {\n\tOAuthAuthInfo,\n\tOAuthCredentials,\n\tOAuthLoginCallbacks,\n\tOAuthPrompt,\n\tOAuthProvider,\n\tOAuthProviderId,\n\tOAuthProviderInfo,\n\tOAuthProviderInterface,\n\tOAuthSelectOption,\n\tOAuthSelectPrompt,\n} from \"./utils/oauth/types.js\";\nexport * from \"./utils/overflow.js\";\nexport * from \"./utils/system-prompt.js\";\nexport * from \"./utils/typebox-helpers.js\";\nexport * from \"./utils/validation.js\";\n"]}
@@ -0,0 +1,13 @@
1
+ import type { Api } from "./types.js";
2
+ export type ProviderRequestToolInventoryMalformedReason = "payload-not-object" | "payload-unreadable" | "tool-container-not-object" | "tool-list-not-array" | "tool-entry-not-object" | "tool-name-missing" | "tool-name-not-string" | "tool-name-empty";
3
+ export type ProviderRequestToolInventory = {
4
+ readonly status: "observed";
5
+ readonly toolNames: readonly string[];
6
+ } | {
7
+ readonly status: "malformed";
8
+ readonly reason: ProviderRequestToolInventoryMalformedReason;
9
+ } | {
10
+ readonly status: "unsupported";
11
+ };
12
+ export declare function inspectProviderRequestToolInventory(api: Api, payload: unknown): ProviderRequestToolInventory;
13
+ //# sourceMappingURL=provider-request-tool-inventory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-request-tool-inventory.d.ts","sourceRoot":"","sources":["../src/provider-request-tool-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,2CAA2C,GACpD,oBAAoB,GACpB,oBAAoB,GACpB,2BAA2B,GAC3B,qBAAqB,GACrB,uBAAuB,GACvB,mBAAmB,GACnB,sBAAsB,GACtB,iBAAiB,CAAC;AAErB,MAAM,MAAM,4BAA4B,GACrC;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACtE;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,2CAA2C,CAAA;CAAE,GAC9F;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAuFtC,wBAAgB,mCAAmC,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAG,4BAA4B,CA0B5G","sourcesContent":["import type { Api } from \"./types.js\";\n\nexport type ProviderRequestToolInventoryMalformedReason =\n\t| \"payload-not-object\"\n\t| \"payload-unreadable\"\n\t| \"tool-container-not-object\"\n\t| \"tool-list-not-array\"\n\t| \"tool-entry-not-object\"\n\t| \"tool-name-missing\"\n\t| \"tool-name-not-string\"\n\t| \"tool-name-empty\";\n\nexport type ProviderRequestToolInventory =\n\t| { readonly status: \"observed\"; readonly toolNames: readonly string[] }\n\t| { readonly status: \"malformed\"; readonly reason: ProviderRequestToolInventoryMalformedReason }\n\t| { readonly status: \"unsupported\" };\n\ntype MalformedInventory = Extract<ProviderRequestToolInventory, { status: \"malformed\" }>;\ntype NameResult = string | MalformedInventory;\ntype RecordValue = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is RecordValue {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction malformed(reason: ProviderRequestToolInventoryMalformedReason): MalformedInventory {\n\treturn Object.freeze({ status: \"malformed\", reason });\n}\n\nfunction observed(names: string[]): ProviderRequestToolInventory {\n\treturn Object.freeze({\n\t\tstatus: \"observed\",\n\t\ttoolNames: Object.freeze([...new Set(names)].sort()),\n\t});\n}\n\nfunction readName(value: RecordValue): NameResult {\n\tif (!(\"name\" in value) || value.name === undefined) return malformed(\"tool-name-missing\");\n\tif (typeof value.name !== \"string\") return malformed(\"tool-name-not-string\");\n\tif (value.name.trim().length === 0) return malformed(\"tool-name-empty\");\n\treturn value.name;\n}\n\nfunction inspectToolList(\n\tvalue: unknown,\n\treadEntryName: (entry: RecordValue) => NameResult,\n): ProviderRequestToolInventory {\n\tif (value === undefined) return observed([]);\n\tif (!Array.isArray(value)) return malformed(\"tool-list-not-array\");\n\n\tconst names: string[] = [];\n\tfor (const entry of value) {\n\t\tif (!isRecord(entry)) return malformed(\"tool-entry-not-object\");\n\t\tconst name = readEntryName(entry);\n\t\tif (typeof name !== \"string\") return name;\n\t\tnames.push(name);\n\t}\n\treturn observed(names);\n}\n\nfunction inspectDirectTools(payload: RecordValue): ProviderRequestToolInventory {\n\treturn inspectToolList(payload.tools, readName);\n}\n\nfunction inspectFunctionTools(payload: RecordValue): ProviderRequestToolInventory {\n\treturn inspectToolList(payload.tools, (entry) => {\n\t\tif (!isRecord(entry.function)) return malformed(\"tool-container-not-object\");\n\t\treturn readName(entry.function);\n\t});\n}\n\nfunction inspectGoogleTools(payload: RecordValue): ProviderRequestToolInventory {\n\tif (payload.config === undefined) return observed([]);\n\tif (!isRecord(payload.config)) return malformed(\"tool-container-not-object\");\n\tif (payload.config.tools === undefined) return observed([]);\n\tif (!Array.isArray(payload.config.tools)) return malformed(\"tool-list-not-array\");\n\n\tconst names: string[] = [];\n\tfor (const group of payload.config.tools) {\n\t\tif (!isRecord(group)) return malformed(\"tool-entry-not-object\");\n\t\tif (!Array.isArray(group.functionDeclarations)) return malformed(\"tool-list-not-array\");\n\t\tfor (const declaration of group.functionDeclarations) {\n\t\t\tif (!isRecord(declaration)) return malformed(\"tool-entry-not-object\");\n\t\t\tconst name = readName(declaration);\n\t\t\tif (typeof name !== \"string\") return name;\n\t\t\tnames.push(name);\n\t\t}\n\t}\n\treturn observed(names);\n}\n\nfunction inspectBedrockTools(payload: RecordValue): ProviderRequestToolInventory {\n\tif (payload.toolConfig === undefined) return observed([]);\n\tif (!isRecord(payload.toolConfig)) return malformed(\"tool-container-not-object\");\n\tif (payload.toolConfig.tools === undefined) return malformed(\"tool-list-not-array\");\n\treturn inspectToolList(payload.toolConfig.tools, (entry) => {\n\t\tif (!isRecord(entry.toolSpec)) return malformed(\"tool-container-not-object\");\n\t\treturn readName(entry.toolSpec);\n\t});\n}\n\n// SCRAMJET-DIVERGENCE: expose privacy-safe names-only evidence from supported built-in request shapes (#524).\nexport function inspectProviderRequestToolInventory(api: Api, payload: unknown): ProviderRequestToolInventory {\n\ttry {\n\t\tswitch (api) {\n\t\t\tcase \"openai-responses\":\n\t\t\tcase \"azure-openai-responses\":\n\t\t\tcase \"openai-codex-responses\":\n\t\t\tcase \"anthropic-messages\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectDirectTools(payload);\n\t\t\tcase \"openai-completions\":\n\t\t\tcase \"mistral-conversations\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectFunctionTools(payload);\n\t\t\tcase \"google-generative-ai\":\n\t\t\tcase \"google-vertex\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectGoogleTools(payload);\n\t\t\tcase \"bedrock-converse-stream\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectBedrockTools(payload);\n\t\t\tdefault:\n\t\t\t\treturn Object.freeze({ status: \"unsupported\" });\n\t\t}\n\t} catch {\n\t\treturn malformed(\"payload-unreadable\");\n\t}\n}\n"]}
@@ -0,0 +1,120 @@
1
+ function isRecord(value) {
2
+ return typeof value === "object" && value !== null && !Array.isArray(value);
3
+ }
4
+ function malformed(reason) {
5
+ return Object.freeze({ status: "malformed", reason });
6
+ }
7
+ function observed(names) {
8
+ return Object.freeze({
9
+ status: "observed",
10
+ toolNames: Object.freeze([...new Set(names)].sort()),
11
+ });
12
+ }
13
+ function readName(value) {
14
+ if (!("name" in value) || value.name === undefined)
15
+ return malformed("tool-name-missing");
16
+ if (typeof value.name !== "string")
17
+ return malformed("tool-name-not-string");
18
+ if (value.name.trim().length === 0)
19
+ return malformed("tool-name-empty");
20
+ return value.name;
21
+ }
22
+ function inspectToolList(value, readEntryName) {
23
+ if (value === undefined)
24
+ return observed([]);
25
+ if (!Array.isArray(value))
26
+ return malformed("tool-list-not-array");
27
+ const names = [];
28
+ for (const entry of value) {
29
+ if (!isRecord(entry))
30
+ return malformed("tool-entry-not-object");
31
+ const name = readEntryName(entry);
32
+ if (typeof name !== "string")
33
+ return name;
34
+ names.push(name);
35
+ }
36
+ return observed(names);
37
+ }
38
+ function inspectDirectTools(payload) {
39
+ return inspectToolList(payload.tools, readName);
40
+ }
41
+ function inspectFunctionTools(payload) {
42
+ return inspectToolList(payload.tools, (entry) => {
43
+ if (!isRecord(entry.function))
44
+ return malformed("tool-container-not-object");
45
+ return readName(entry.function);
46
+ });
47
+ }
48
+ function inspectGoogleTools(payload) {
49
+ if (payload.config === undefined)
50
+ return observed([]);
51
+ if (!isRecord(payload.config))
52
+ return malformed("tool-container-not-object");
53
+ if (payload.config.tools === undefined)
54
+ return observed([]);
55
+ if (!Array.isArray(payload.config.tools))
56
+ return malformed("tool-list-not-array");
57
+ const names = [];
58
+ for (const group of payload.config.tools) {
59
+ if (!isRecord(group))
60
+ return malformed("tool-entry-not-object");
61
+ if (!Array.isArray(group.functionDeclarations))
62
+ return malformed("tool-list-not-array");
63
+ for (const declaration of group.functionDeclarations) {
64
+ if (!isRecord(declaration))
65
+ return malformed("tool-entry-not-object");
66
+ const name = readName(declaration);
67
+ if (typeof name !== "string")
68
+ return name;
69
+ names.push(name);
70
+ }
71
+ }
72
+ return observed(names);
73
+ }
74
+ function inspectBedrockTools(payload) {
75
+ if (payload.toolConfig === undefined)
76
+ return observed([]);
77
+ if (!isRecord(payload.toolConfig))
78
+ return malformed("tool-container-not-object");
79
+ if (payload.toolConfig.tools === undefined)
80
+ return malformed("tool-list-not-array");
81
+ return inspectToolList(payload.toolConfig.tools, (entry) => {
82
+ if (!isRecord(entry.toolSpec))
83
+ return malformed("tool-container-not-object");
84
+ return readName(entry.toolSpec);
85
+ });
86
+ }
87
+ // SCRAMJET-DIVERGENCE: expose privacy-safe names-only evidence from supported built-in request shapes (#524).
88
+ export function inspectProviderRequestToolInventory(api, payload) {
89
+ try {
90
+ switch (api) {
91
+ case "openai-responses":
92
+ case "azure-openai-responses":
93
+ case "openai-codex-responses":
94
+ case "anthropic-messages":
95
+ if (!isRecord(payload))
96
+ return malformed("payload-not-object");
97
+ return inspectDirectTools(payload);
98
+ case "openai-completions":
99
+ case "mistral-conversations":
100
+ if (!isRecord(payload))
101
+ return malformed("payload-not-object");
102
+ return inspectFunctionTools(payload);
103
+ case "google-generative-ai":
104
+ case "google-vertex":
105
+ if (!isRecord(payload))
106
+ return malformed("payload-not-object");
107
+ return inspectGoogleTools(payload);
108
+ case "bedrock-converse-stream":
109
+ if (!isRecord(payload))
110
+ return malformed("payload-not-object");
111
+ return inspectBedrockTools(payload);
112
+ default:
113
+ return Object.freeze({ status: "unsupported" });
114
+ }
115
+ }
116
+ catch {
117
+ return malformed("payload-unreadable");
118
+ }
119
+ }
120
+ //# sourceMappingURL=provider-request-tool-inventory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-request-tool-inventory.js","sourceRoot":"","sources":["../src/provider-request-tool-inventory.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api } from \"./types.js\";\n\nexport type ProviderRequestToolInventoryMalformedReason =\n\t| \"payload-not-object\"\n\t| \"payload-unreadable\"\n\t| \"tool-container-not-object\"\n\t| \"tool-list-not-array\"\n\t| \"tool-entry-not-object\"\n\t| \"tool-name-missing\"\n\t| \"tool-name-not-string\"\n\t| \"tool-name-empty\";\n\nexport type ProviderRequestToolInventory =\n\t| { readonly status: \"observed\"; readonly toolNames: readonly string[] }\n\t| { readonly status: \"malformed\"; readonly reason: ProviderRequestToolInventoryMalformedReason }\n\t| { readonly status: \"unsupported\" };\n\ntype MalformedInventory = Extract<ProviderRequestToolInventory, { status: \"malformed\" }>;\ntype NameResult = string | MalformedInventory;\ntype RecordValue = Record<string, unknown>;\n\nfunction isRecord(value: unknown): value is RecordValue {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction malformed(reason: ProviderRequestToolInventoryMalformedReason): MalformedInventory {\n\treturn Object.freeze({ status: \"malformed\", reason });\n}\n\nfunction observed(names: string[]): ProviderRequestToolInventory {\n\treturn Object.freeze({\n\t\tstatus: \"observed\",\n\t\ttoolNames: Object.freeze([...new Set(names)].sort()),\n\t});\n}\n\nfunction readName(value: RecordValue): NameResult {\n\tif (!(\"name\" in value) || value.name === undefined) return malformed(\"tool-name-missing\");\n\tif (typeof value.name !== \"string\") return malformed(\"tool-name-not-string\");\n\tif (value.name.trim().length === 0) return malformed(\"tool-name-empty\");\n\treturn value.name;\n}\n\nfunction inspectToolList(\n\tvalue: unknown,\n\treadEntryName: (entry: RecordValue) => NameResult,\n): ProviderRequestToolInventory {\n\tif (value === undefined) return observed([]);\n\tif (!Array.isArray(value)) return malformed(\"tool-list-not-array\");\n\n\tconst names: string[] = [];\n\tfor (const entry of value) {\n\t\tif (!isRecord(entry)) return malformed(\"tool-entry-not-object\");\n\t\tconst name = readEntryName(entry);\n\t\tif (typeof name !== \"string\") return name;\n\t\tnames.push(name);\n\t}\n\treturn observed(names);\n}\n\nfunction inspectDirectTools(payload: RecordValue): ProviderRequestToolInventory {\n\treturn inspectToolList(payload.tools, readName);\n}\n\nfunction inspectFunctionTools(payload: RecordValue): ProviderRequestToolInventory {\n\treturn inspectToolList(payload.tools, (entry) => {\n\t\tif (!isRecord(entry.function)) return malformed(\"tool-container-not-object\");\n\t\treturn readName(entry.function);\n\t});\n}\n\nfunction inspectGoogleTools(payload: RecordValue): ProviderRequestToolInventory {\n\tif (payload.config === undefined) return observed([]);\n\tif (!isRecord(payload.config)) return malformed(\"tool-container-not-object\");\n\tif (payload.config.tools === undefined) return observed([]);\n\tif (!Array.isArray(payload.config.tools)) return malformed(\"tool-list-not-array\");\n\n\tconst names: string[] = [];\n\tfor (const group of payload.config.tools) {\n\t\tif (!isRecord(group)) return malformed(\"tool-entry-not-object\");\n\t\tif (!Array.isArray(group.functionDeclarations)) return malformed(\"tool-list-not-array\");\n\t\tfor (const declaration of group.functionDeclarations) {\n\t\t\tif (!isRecord(declaration)) return malformed(\"tool-entry-not-object\");\n\t\t\tconst name = readName(declaration);\n\t\t\tif (typeof name !== \"string\") return name;\n\t\t\tnames.push(name);\n\t\t}\n\t}\n\treturn observed(names);\n}\n\nfunction inspectBedrockTools(payload: RecordValue): ProviderRequestToolInventory {\n\tif (payload.toolConfig === undefined) return observed([]);\n\tif (!isRecord(payload.toolConfig)) return malformed(\"tool-container-not-object\");\n\tif (payload.toolConfig.tools === undefined) return malformed(\"tool-list-not-array\");\n\treturn inspectToolList(payload.toolConfig.tools, (entry) => {\n\t\tif (!isRecord(entry.toolSpec)) return malformed(\"tool-container-not-object\");\n\t\treturn readName(entry.toolSpec);\n\t});\n}\n\n// SCRAMJET-DIVERGENCE: expose privacy-safe names-only evidence from supported built-in request shapes (#524).\nexport function inspectProviderRequestToolInventory(api: Api, payload: unknown): ProviderRequestToolInventory {\n\ttry {\n\t\tswitch (api) {\n\t\t\tcase \"openai-responses\":\n\t\t\tcase \"azure-openai-responses\":\n\t\t\tcase \"openai-codex-responses\":\n\t\t\tcase \"anthropic-messages\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectDirectTools(payload);\n\t\t\tcase \"openai-completions\":\n\t\t\tcase \"mistral-conversations\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectFunctionTools(payload);\n\t\t\tcase \"google-generative-ai\":\n\t\t\tcase \"google-vertex\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectGoogleTools(payload);\n\t\t\tcase \"bedrock-converse-stream\":\n\t\t\t\tif (!isRecord(payload)) return malformed(\"payload-not-object\");\n\t\t\t\treturn inspectBedrockTools(payload);\n\t\t\tdefault:\n\t\t\t\treturn Object.freeze({ status: \"unsupported\" });\n\t\t}\n\t} catch {\n\t\treturn malformed(\"payload-unreadable\");\n\t}\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leanandmean/ai",
3
- "version": "0.74.1-scramjet.17",
3
+ "version": "0.74.1-scramjet.18",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },