import {z} from 'zod' export type GetApiV1DefaultBanksBankIdExportArgs = {bank_id: string, authorization?: (string | null) | undefined}; export type GetApiV1DefaultBanksBankIdExportOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const labelValue = z.object({value: z.string(), description: z.string().optional()}); export const mapFieldOutput: z.ZodType = z.object({type: z.enum(["text", "multi-text", "value", "multi-values", "map"]).optional(), description: z.string().optional(), values: z.array(labelValue).optional(), fields: z.record(z.string(), z.lazy(() => mapFieldOutput)).optional()}); export const labelGroupOutput = z.object({key: z.string(), description: z.string().optional(), type: z.enum(["value", "multi-values", "text", "multi-text", "map"]).optional(), optional: z.boolean().optional(), tag: z.boolean().optional(), values: z.array(labelValue).optional(), fields: z.record(z.string(), mapFieldOutput).optional()}); export const consolidationScopePattern = z.object({tags: z.array(z.string()).optional(), tags_match: z.string().nullable().optional()}); export const consolidationStrategySpec = z.object({scopes: z.array(consolidationScopePattern).optional(), observations_mission: z.string().nullable().optional(), max_observations_per_scope: z.number().int().nullable().optional(), consolidation_source_facts_max_tokens: z.number().int().nullable().optional(), consolidation_source_facts_max_tokens_per_observation: z.number().int().nullable().optional()}); export const bankTemplateConfig = z.object({reflect_mission: z.string().nullable().optional(), retain_mission: z.string().nullable().optional(), retain_extraction_mode: z.string().nullable().optional(), retain_custom_instructions: z.string().nullable().optional(), retain_chunk_size: z.number().int().nullable().optional(), retain_structured_chunk_size: z.number().int().nullable().optional(), enable_observations: z.boolean().nullable().optional(), observations_mission: z.string().nullable().optional(), enable_text_search: z.boolean().nullable().optional(), enable_temporal_retrieval: z.boolean().nullable().optional(), enable_graph_retrieval: z.boolean().nullable().optional(), enable_reranking: z.boolean().nullable().optional(), reflect_use_decision_model: z.boolean().nullable().optional(), mental_model_refresh_use_decision_model: z.boolean().nullable().optional(), mental_model_delta_use_decision_model: z.boolean().nullable().optional(), disposition_skepticism: z.number().int().gte(1).lte(5).nullable().optional(), disposition_literalism: z.number().int().gte(1).lte(5).nullable().optional(), disposition_empathy: z.number().int().gte(1).lte(5).nullable().optional(), entity_labels: z.array(labelGroupOutput).nullable().optional(), entities_allow_free_form: z.boolean().nullable().optional(), retain_default_strategy: z.string().nullable().optional(), retain_strategies: z.record(z.string(), z.unknown()).nullable().optional(), retain_chunk_batch_size: z.number().int().nullable().optional(), retain_max_attachments_per_chunk: z.number().int().nullable().optional(), mcp_enabled_tools: z.array(z.string()).nullable().optional(), consolidation_llm_batch_size: z.number().int().nullable().optional(), consolidation_source_facts_max_tokens: z.number().int().nullable().optional(), consolidation_source_facts_max_tokens_per_observation: z.number().int().nullable().optional(), max_observations_per_scope: z.number().int().nullable().optional(), observation_scope_limits: z.array(z.record(z.string(), z.unknown())).nullable().optional(), default_observation_scopes: z.union([z.enum(["per_tag", "combined", "all_combinations", "shared"]), z.array(z.array(z.string()))]).nullable().optional(), consolidation_strategies: z.array(consolidationStrategySpec).nullable().optional(), reflect_source_facts_max_tokens: z.number().int().nullable().optional(), knowledge_page_default_trigger: z.record(z.string(), z.unknown()).nullable().optional(), reflect_default_options: z.record(z.string(), z.unknown()).nullable().optional(), mental_model_min_refresh_interval_seconds: z.number().int().gte(0).nullable().optional(), llm_gemini_safety_settings: z.array(z.unknown()).nullable().optional(), recall_budget_function: z.string().nullable().optional(), recall_budget_fixed_low: z.number().int().nullable().optional(), recall_budget_fixed_mid: z.number().int().nullable().optional(), recall_budget_fixed_high: z.number().int().nullable().optional(), recall_budget_adaptive_low: z.number().nullable().optional(), recall_budget_adaptive_mid: z.number().nullable().optional(), recall_budget_adaptive_high: z.number().nullable().optional(), recall_budget_min: z.number().int().nullable().optional(), recall_budget_max: z.number().int().nullable().optional(), audit_log_enabled: z.boolean().nullable().optional(), store_document_text: z.boolean().nullable().optional(), default_timezone: z.string().nullable().optional(), enable_auto_consolidation: z.boolean().nullable().optional(), consolidation_use_decision_model: z.boolean().nullable().optional(), consolidation_max_memories_per_round: z.number().int().nullable().optional(), consolidation_llm_parallelism: z.number().int().nullable().optional(), recall_include_chunks: z.boolean().nullable().optional(), recall_prefer_observations: z.boolean().nullable().optional(), recall_decision_model_prune: z.boolean().nullable().optional(), recall_decision_model_dedup: z.boolean().nullable().optional(), recall_max_tokens: z.number().int().nullable().optional(), recall_chunks_max_tokens: z.number().int().nullable().optional(), memory_defense: z.record(z.string(), z.unknown()).nullable().optional()}); export const budget = z.enum(["low", "mid", "high"]); export const tagGroupLeaf = z.object({tags: z.array(z.string()), match: z.enum(["any", "all", "any_strict", "all_strict", "exact"]).optional(), resolve: z.enum(["exact", "fuzzy"]).optional()}); export const tagGroupNotOutput: z.ZodType = z.object({not: z.union([tagGroupLeaf, z.lazy(() => tagGroupAndOutput), z.lazy(() => tagGroupOrOutput), z.lazy(() => tagGroupNotOutput)])}); export const tagGroupOrOutput: z.ZodType = z.object({or: z.array(z.union([tagGroupLeaf, z.lazy(() => tagGroupAndOutput), z.lazy(() => tagGroupOrOutput), tagGroupNotOutput]))}); export const tagGroupAndOutput: z.ZodType = z.object({and: z.array(z.union([tagGroupLeaf, z.lazy(() => tagGroupAndOutput), tagGroupOrOutput, tagGroupNotOutput]))}); export const mentalModelTriggerOutput = z.object({budget: budget.nullable().optional(), mode: z.enum(["full", "delta"]).optional(), refresh_after_consolidation: z.boolean().optional(), refresh_cron: z.string().nullable().optional(), full_refresh_cron: z.string().nullable().optional(), min_refresh_interval_seconds: z.number().int().gte(0).nullable().optional(), fact_types: z.array(z.enum(["world", "experience", "observation"])).nullable().optional(), exclude_mental_models: z.boolean().optional(), exclude_mental_model_ids: z.array(z.string()).nullable().optional(), tags_match: z.enum(["any", "all", "any_strict", "all_strict", "exact"]).nullable().optional(), tag_groups: z.array(z.union([tagGroupLeaf, tagGroupAndOutput, tagGroupOrOutput, tagGroupNotOutput])).nullable().optional(), include_chunks: z.boolean().nullable().optional(), recall_max_tokens: z.number().int().nullable().optional(), recall_chunks_max_tokens: z.number().int().nullable().optional(), reflect_search_observations_max_tokens: z.number().int().gte(1).nullable().optional(), reflect_search_observations_include_entities: z.boolean().nullable().optional(), response_schema: z.record(z.string(), z.unknown()).nullable().optional(), keep_trace: z.boolean().optional()}); export const bankTemplateMentalModel = z.object({id: z.string(), name: z.string(), source_query: z.string(), tags: z.array(z.string()).optional(), max_tokens: z.number().int().gte(256).lte(8192).optional(), trigger: mentalModelTriggerOutput.optional()}); export const bankTemplateDirective = z.object({name: z.string(), content: z.string(), priority: z.number().int().gte(-2147483648).lte(2147483647).optional(), is_active: z.boolean().optional(), tags: z.array(z.string()).optional()}); export const bankTemplateManifest = z.object({version: z.string(), bank: bankTemplateConfig.nullable().optional(), mental_models: z.array(bankTemplateMentalModel).nullable().optional(), directives: z.array(bankTemplateDirective).nullable().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Export bank template * * GET /v1/default/banks/{bank_id}/export */ export const getApiV1DefaultBanksBankIdExport = async (args: GetApiV1DefaultBanksBankIdExportArgs, options: GetApiV1DefaultBanksBankIdExportOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args.authorization != null) headers.set("authorization", String(args.authorization)) const url = `${baseUrl.replace(/\/+$/, '')}/v1/default/banks/${encodeURIComponent(String(args.bank_id))}/export${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(bankTemplateManifest, await res.json()) };