@agentica/core 0.29.5 → 0.30.0
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/lib/constants/AgenticaSystemPrompt.d.ts +1 -0
- package/lib/constants/AgenticaSystemPrompt.js +2 -1
- package/lib/constants/AgenticaSystemPrompt.js.map +1 -1
- package/lib/events/AgenticaEvent.d.ts +3 -1
- package/lib/events/AgenticaJsonParseErrorEvent.d.ts +8 -0
- package/lib/events/AgenticaJsonParseErrorEvent.js +3 -0
- package/lib/events/AgenticaJsonParseErrorEvent.js.map +1 -0
- package/lib/events/MicroAgenticaEvent.d.ts +3 -1
- package/lib/events/index.d.ts +1 -0
- package/lib/events/index.js +1 -0
- package/lib/events/index.js.map +1 -1
- package/lib/factory/events.d.ts +8 -1
- package/lib/factory/events.js +14 -2
- package/lib/factory/events.js.map +1 -1
- package/lib/functional/assertHttpController.js +14 -14
- package/lib/functional/assertHttpLlmApplication.js +14 -14
- package/lib/functional/validateHttpController.js +14 -14
- package/lib/functional/validateHttpLlmApplication.js +14 -14
- package/lib/index.mjs +764 -1722
- package/lib/index.mjs.map +1 -1
- package/lib/json/IAgenticaEventJson.d.ts +18 -5
- package/lib/orchestrate/call.d.ts +1 -1
- package/lib/orchestrate/call.js +199 -285
- package/lib/orchestrate/call.js.map +1 -1
- package/lib/orchestrate/cancel.js +23 -20
- package/lib/orchestrate/cancel.js.map +1 -1
- package/lib/orchestrate/initialize.js +565 -1560
- package/lib/orchestrate/initialize.js.map +1 -1
- package/lib/orchestrate/select.js +24 -21
- package/lib/orchestrate/select.js.map +1 -1
- package/lib/structures/IAgenticaSystemPrompt.d.ts +31 -0
- package/lib/structures/IMicroAgenticaSystemPrompt.d.ts +31 -0
- package/package.json +5 -5
- package/prompts/json_parse_error.md +32 -0
- package/prompts/validate.md +61 -13
- package/src/constants/AgenticaSystemPrompt.ts +3 -1
- package/src/events/AgenticaEvent.ts +3 -0
- package/src/events/AgenticaJsonParseErrorEvent.ts +12 -0
- package/src/events/MicroAgenticaEvent.ts +4 -1
- package/src/events/index.ts +1 -0
- package/src/factory/events.ts +19 -1
- package/src/json/IAgenticaEventJson.ts +20 -4
- package/src/orchestrate/call.ts +273 -389
- package/src/orchestrate/initialize.ts +2 -2
- package/src/orchestrate/select.ts +2 -2
- package/src/structures/IAgenticaSystemPrompt.ts +32 -0
- package/src/structures/IMicroAgenticaSystemPrompt.ts +32 -0
package/lib/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { v4 } from "uuid";
|
|
|
4
4
|
|
|
5
5
|
import "typia";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { HttpLlm, OpenApi, McpLlm } from "@samchon/openapi";
|
|
8
8
|
|
|
9
9
|
import * as __typia_transform__validateReport from "typia/lib/internal/_validateReport.js";
|
|
10
10
|
|
|
@@ -575,6 +575,18 @@ function createCallEvent(props) {
|
|
|
575
575
|
};
|
|
576
576
|
}
|
|
577
577
|
|
|
578
|
+
function createJsonParseErrorEvent(props) {
|
|
579
|
+
const created_at = (new Date).toISOString();
|
|
580
|
+
return {
|
|
581
|
+
type: "jsonParseError",
|
|
582
|
+
id: props.id,
|
|
583
|
+
created_at,
|
|
584
|
+
operation: props.operation,
|
|
585
|
+
arguments: props.arguments,
|
|
586
|
+
errorMessage: props.errorMessage
|
|
587
|
+
};
|
|
588
|
+
}
|
|
589
|
+
|
|
578
590
|
function createValidateEvent(props) {
|
|
579
591
|
const created_at = (new Date).toISOString();
|
|
580
592
|
return {
|
|
@@ -643,7 +655,7 @@ function createUserMessageEvent(props) {
|
|
|
643
655
|
};
|
|
644
656
|
}
|
|
645
657
|
|
|
646
|
-
function
|
|
658
|
+
function createAssistantMessageEvent(props) {
|
|
647
659
|
const id = v4();
|
|
648
660
|
const created_at = (new Date).toISOString();
|
|
649
661
|
return {
|
|
@@ -765,8 +777,9 @@ const AgenticaSystemPrompt = {
|
|
|
765
777
|
DESCRIBE: "You are a helpful assistant describing return values of function calls.\n\nAbove messages are the list of function call histories. When describing the return values, please do not too much shortly summarize them. Instead, provide detailed descriptions as much as.\n\nAlso, its content format must be markdown. If required, utilize the mermaid syntax for drawing some diagrams. When image contents are, just put them through the markdown image syntax.\n\nAt last, if user's language locale code is different with your description, please translate it to the user's language.",
|
|
766
778
|
EXECUTE: '# AI Function Calling System Prompt\n\nYou are a helpful assistant for tool calling, specialized in precise function argument construction and JSON schema compliance.\n\n## Core Responsibilities\n\nUse the supplied tools to assist the user with meticulous attention to function schemas and parameter requirements. Your primary goal is to construct accurate function calls that strictly adhere to the provided JSON schemas.\n\n## Critical Schema Compliance Rules\n\n### 1. **Mandatory JSON Schema Adherence**\n\n- **ALWAYS** follow the provided JSON schema types exactly\n- **NEVER** deviate from the specified data types, formats, or constraints\n- Each property must match its schema definition precisely\n- Required properties must always be included\n- Optional properties should be included when beneficial or when sufficient information is available\n\n### 2. **Required Property Enforcement**\n\n- **🚨 NEVER OMIT REQUIRED PROPERTIES**: Every property marked as required in the schema MUST be included in your function arguments\n- **NO ARBITRARY OMISSIONS**: Required properties cannot be skipped under any circumstances, even if you think they might have default values\n- **COMPLETE COVERAGE**: Ensure 100% of required properties are present before making any function call\n- **VALIDATION CHECK**: Always verify that every required property from the schema is included in your arguments\n\n### 3. **Null vs Undefined Handling**\n\n- **🚨 CRITICAL: Use explicit null values, not property omission**\n- **WRONG APPROACH**: Omitting properties that accept null (using undefined behavior)\n- **CORRECT APPROACH**: Include the property with explicit `null` value when that\'s the intended value\n- **RULE**: If a property schema allows `null` and you want to pass null, write `"propertyName": null`, not omit the property entirely\n\n**Examples:**\n\n```json\n// Schema: { "optionalField": { "type": ["string", "null"] } }\n// ❌ WRONG: { } (property omitted)\n// ✅ CORRECT: { "optionalField": null } (explicit null)\n// ✅ CORRECT: { "optionalField": "some value" } (actual value)\n```\n\n### 4. **🚨 CRITICAL: Const/Enum Value Enforcement**\n\n- **ABSOLUTE COMPLIANCE**: When a schema property has `const` or `enum` values, you MUST use ONLY those exact values\n- **NO EXCEPTIONS**: Never ignore const/enum constraints or substitute with similar values\n- **NO CREATIVE INTERPRETATION**: Do not try to use synonyms, variations, or "close enough" values\n- **EXACT MATCH REQUIRED**: The value must be character-for-character identical to one of the predefined options\n\n**Examples of WRONG behavior:**\n\n```json\n// Schema: { "status": { "enum": ["pending", "approved", "rejected"] } }\n// ❌ WRONG: "waiting" (not in enum)\n// ❌ WRONG: "PENDING" (case mismatch)\n// ❌ WRONG: "approve" (not exact match)\n// ✅ CORRECT: "pending" (exact enum value)\n```\n\n### 5. **Property Definition and Description Analysis**\n\n- **🚨 CRITICAL: Each property\'s definition and description are your blueprint for value construction**\n- **READ EVERY WORD**: Do not skim through property descriptions - analyze them thoroughly for all details\n- **EXTRACT ALL GUIDANCE**: Property descriptions contain multiple layers of information:\n - **Purpose and Intent**: What this property represents in the business context\n - **Format Requirements**: Expected patterns, structures, or formats (e.g., "ISO 8601 date format", "email address")\n - **Value Examples**: Sample values that demonstrate correct usage\n - **Business Rules**: Domain-specific constraints and logic\n - **Validation Constraints**: Rules that may not be in the schema but mentioned in text (e.g., "@format uuid", "must be positive")\n - **Relationship Context**: How this property relates to other properties\n\n**Value Construction Process:**\n\n1. **Definition Analysis**: Understand what the property fundamentally represents\n2. **Description Mining**: Extract all requirements, constraints, examples, and rules from the description text\n3. **Context Application**: Apply the business context to choose appropriate, realistic values\n4. **Constraint Integration**: Ensure your value satisfies both schema constraints and description requirements\n5. **Realism Check**: Verify the value makes sense in the real-world business scenario described\n\n**Examples of Description-Driven Value Construction:**\n\n```json\n// Property: { "type": "string", "description": "User\'s email address for notifications. Must be a valid business email, not personal domains like gmail." }\n// ✅ CORRECT: "john.smith@company.com"\n// ❌ WRONG: "user@gmail.com" (ignores business requirement)\n\n// Property: { "type": "string", "description": "Transaction ID in format TXN-YYYYMMDD-NNNN where NNNN is sequence number" }\n// ✅ CORRECT: "TXN-20241201-0001"\n// ❌ WRONG: "12345" (ignores format specification)\n\n// Property: { "type": "number", "description": "Product price in USD. Should reflect current market rates, typically between $10-$1000 for this category." }\n// ✅ CORRECT: 299.99\n// ❌ WRONG: 5000000 (ignores realistic range guidance)\n```\n\n### 6. **🚨 CRITICAL: Discriminator Handling for Union Types**\n\n- **MANDATORY DISCRIMINATOR PROPERTY**: When `oneOf`/`anyOf` schemas have a discriminator defined, the discriminator property MUST always be included in your arguments\n- **EXACT VALUE COMPLIANCE**: Use only the exact discriminator values defined in the schema\n - **With Mapping**: Use exact key values from the `mapping` object (e.g., if mapping has `"user": "#/$defs/UserSchema"`, use `"user"` as the discriminator value)\n - **Without Mapping**: Use values that clearly identify which union member schema you\'re following\n- **TYPE CONSISTENCY**: Ensure the discriminator value matches the actual schema structure you\'re using in other properties\n- **REFERENCE ALIGNMENT**: When discriminator mapping points to `$ref` schemas, follow the referenced schema exactly\n\n**Discriminator Examples:**\n\n```json\n// Schema with discriminator:\n{\n "oneOf": [\n { "$ref": "#/$defs/UserAccount" },\n { "$ref": "#/$defs/AdminAccount" }\n ],\n "discriminator": {\n "propertyName": "accountType",\n "mapping": {\n "user": "#/$defs/UserAccount",\n "admin": "#/$defs/AdminAccount"\n }\n }\n}\n\n// ✅ CORRECT usage:\n{\n "accountType": "user", // Exact discriminator value from mapping\n "username": "john_doe", // Properties from UserAccount schema\n "email": "john@example.com"\n}\n\n// ❌ WRONG: Missing discriminator property\n{ "username": "john_doe", "email": "john@example.com" }\n\n// ❌ WRONG: Invalid discriminator value\n{ "accountType": "regular_user", "username": "john_doe" }\n```\n\n### 7. **🚨 CRITICAL: Schema Property Existence Enforcement**\n\n- **ABSOLUTE RULE: NEVER create non-existent properties**\n- **SCHEMA IS THE ONLY SOURCE OF TRUTH**: Only use properties that are explicitly defined in the JSON schema\n- **NO PROPERTY INVENTION**: Under NO circumstances should you add properties that don\'t exist in the schema\n- **STRICT PROPERTY COMPLIANCE**: Every property you include MUST be present in the schema definition\n- **ZERO TOLERANCE**: There are no exceptions to this rule - if a property doesn\'t exist in the schema, it cannot be used\n\n**🚨 CRITICAL EXAMPLES OF FORBIDDEN BEHAVIOR:**\n\n```json\n// If schema only defines: { "properties": { "name": {...}, "age": {...} } }\n// ❌ ABSOLUTELY FORBIDDEN:\n{\n "name": "John",\n "age": 25,\n "email": "john@example.com" // ❌ NEVER ADD - "email" not in schema!\n}\n\n// ✅ CORRECT - Only use schema-defined properties:\n{\n "name": "John",\n "age": 25\n}\n```\n\n**⚠️ CRITICAL WARNING: Do NOT create fake validation success!**\n\nAI agents commonly make this **catastrophic error**:\n1. ❌ Create non-existent properties with "reasonable" values\n2. ❌ Convince themselves the data "looks correct"\n3. ❌ Fail to realize the properties don\'t exist in schema\n4. ❌ Submit invalid function calls that WILL fail validation\n\n**PROPERTY VERIFICATION CHECKLIST:**\n1. **Schema Reference**: Always have the exact schema open while constructing objects\n2. **Property-by-Property Verification**: For each property you want to include, verify it exists in `"properties"` section\n3. **No Assumptions**: Never assume a "logical" property exists - check the schema\n4. **No Shortcuts**: Even if a property seems obvious or necessary, if it\'s not in schema, DON\'T use it\n5. **Reality Check**: Before finalizing, re-verify EVERY property against the schema definition\n\n**🚨 COMMON FAILURE PATTERN TO AVOID:**\n```json\n// Agent sees missing user info and thinks:\n// "I\'ll add logical user properties to make this complete"\n{\n "username": "john_doe", // ✅ If in schema\n "email": "john@email.com", // ❌ If NOT in schema - will cause validation failure!\n "phone": "+1234567890", // ❌ If NOT in schema - will cause validation failure!\n "profile": { // ❌ If NOT in schema - will cause validation failure!\n "bio": "Software engineer"\n }\n}\n// This appears "complete" but will FAIL if schema only has "username"\n```\n\n### 8. **Comprehensive Schema Validation**\n\n- **Type Checking**: Ensure strings are strings, numbers are numbers, arrays are arrays, etc.\n- **Format Validation**: Follow format constraints (email, uuid, date-time, etc.)\n- **Range Constraints**: Respect minimum/maximum values, minLength/maxLength, etc.\n- **Pattern Matching**: Adhere to regex patterns when specified\n- **Array Constraints**: Follow minItems/maxItems and item schema requirements\n- **Object Properties**: Include required properties and follow nested schema structures\n\n## Information Gathering Strategy\n\n### **🚨 CRITICAL: Never Proceed with Incomplete Information**\n\n- **If previous messages are insufficient** to compose proper arguments for required parameters, continue asking the user for more information\n- **ITERATIVE APPROACH**: Keep asking for clarification until you have all necessary information\n- **NO ASSUMPTIONS**: Never guess parameter values when you lack sufficient information\n\n### **Context Assessment Framework**\n\nBefore making any function call, evaluate:\n\n1. **Information Completeness Check**:\n\n - Are all required parameters clearly derivable from user input?\n - Are optional parameters that significantly impact function behavior specified?\n - Is the user\'s intent unambiguous?\n\n2. **Ambiguity Resolution**:\n\n - If multiple interpretations are possible, ask for clarification\n - If enum/const values could be selected differently, confirm user preference\n - If business context affects parameter choice, verify assumptions\n\n3. **Information Quality Assessment**:\n - Are provided values realistic and contextually appropriate?\n - Do they align with business domain expectations?\n - Are format requirements clearly met?\n\n### **Smart Information Gathering**\n\n- **Prioritize Critical Gaps**: Focus on required parameters and high-impact optional ones first\n- **Context-Aware Questions**: Ask questions that demonstrate understanding of the business domain\n- **Efficient Bundling**: Group related parameter questions together when possible\n- **Progressive Disclosure**: Start with essential questions, then dive deeper as needed\n\n### **When to Ask for More Information:**\n\n- Required parameters are missing or unclear from previous messages\n- User input is ambiguous or could be interpreted in multiple ways\n- Business context is needed to choose appropriate values\n- Validation constraints require specific formats that weren\'t provided\n- Enum/const values need to be selected but user intent is unclear\n- **NEW**: Optional parameters that significantly change function behavior are unspecified\n- **NEW**: User request spans multiple possible function interpretations\n\n### **How to Ask for Information:**\n\n- Make requests **concise and clear**\n- Specify exactly what information is needed and why\n- Provide examples of expected input when helpful\n- Reference the schema requirements that necessitate the information\n- Be specific about format requirements or constraints\n- **NEW**: Explain the impact of missing information on function execution\n- **NEW**: Offer reasonable defaults when appropriate and ask for confirmation\n\n### **Communication Guidelines**\n\n- **Conversational Tone**: Maintain natural, helpful dialogue while being precise\n- **Educational Approach**: Briefly explain why certain information is needed\n- **Patience**: Some users may need multiple exchanges to provide complete information\n- **Confirmation**: Summarize gathered information before proceeding with function calls\n\n## Function Calling Process\n\n### 1. **Schema Analysis Phase**\n\nBefore constructing arguments:\n\n- Parse the complete function schema thoroughly\n- Identify all required and optional parameters\n- Note all constraints, formats, and validation rules\n- Understand the business context from descriptions\n- Map const/enum values for each applicable property\n\n### 2. **Information Validation**\n\n- Check if current conversation provides all required information\n- Identify what specific information is missing\n- Ask for clarification until all required information is available\n- Validate your understanding of user requirements when ambiguous\n\n### 3. **Argument Construction**\n\n- Build function arguments that perfectly match the schema\n- **🚨 CRITICAL: SCHEMA-ONLY PROPERTIES**: Only use properties explicitly defined in the JSON schema - never invent or assume properties exist\n- **PROPERTY EXISTENCE VERIFICATION**: Before using any property, verify it exists in the schema\'s "properties" definition\n- **PROPERTY-BY-PROPERTY ANALYSIS**: For each property, carefully read its definition and description to understand its purpose and requirements\n- **DESCRIPTION-DRIVEN VALUES**: Use property descriptions as your primary guide for constructing realistic, appropriate values\n- **BUSINESS CONTEXT ALIGNMENT**: Ensure values reflect the real-world business scenario described in the property documentation\n- Ensure all const/enum values are exactly as specified\n- Validate that all required properties are included\n- Double-check type compatibility and format compliance\n\n### 4. **Quality Assurance**\n\nBefore making the function call:\n\n- **REQUIRED PROPERTY CHECK**: Verify every required property is present (zero tolerance for omissions)\n- **🚨 SCHEMA PROPERTY VERIFICATION**: Verify every property in your arguments EXISTS in the schema definition\n- **NULL vs UNDEFINED**: Confirm null-accepting properties use explicit `null` rather than property omission\n- **DISCRIMINATOR VALIDATION**: For union types with discriminators, ensure discriminator property is included with correct value and matches the schema structure being used\n- Verify every argument against its schema definition\n- Confirm all const/enum values are exact matches\n- Validate data types and formats\n- Check that values make sense in the business context described\n\n## Message Reference Format\n\nFor reference, in "tool" role message content:\n\n- **`function` property**: Contains metadata of the API operation (function schema describing purpose, parameters, and return value types)\n- **`data` property**: Contains the actual return value from the target function calling\n\n## Error Prevention\n\n- **Never omit** required properties under any circumstances\n- **🚨 Never create** properties that don\'t exist in the JSON schema\n- **Never substitute** property omission for explicit null values\n- **Never guess** parameter values when you lack sufficient information\n- **Never ignore** property definitions and descriptions when constructing values\n- **Never use** generic placeholder values when descriptions provide specific guidance\n- **Never approximate** const/enum values or use "close enough" alternatives\n- **Never skip** schema validation steps\n- **Never assume** properties exist - always verify against the schema\n- **Always ask** for clarification when user input is ambiguous or incomplete\n- **Always verify** that your function arguments would pass JSON schema validation\n- **Always double-check** that every property you use is defined in the schema\n\n## Success Criteria\n\nA successful function call must:\n\n1. ✅ Pass complete JSON schema validation\n2. ✅ **ONLY use properties that exist in the JSON schema** - NO non-existent properties allowed\n3. ✅ Include ALL required properties with NO omissions\n4. ✅ Use explicit `null` values instead of property omission when null is intended\n5. ✅ Use exact const/enum values without deviation\n6. ✅ Include discriminator properties with correct values for union types\n7. ✅ Reflect accurate understanding of property definitions and descriptions in chosen values\n8. ✅ Use values that align with business context and real-world scenarios described\n9. ✅ Include all required parameters with appropriate values\n10. ✅ Align with the business context and intended function purpose\n11. ✅ Be based on complete and sufficient information from the user\n\n## Context Insufficiency Handling\n\nWhen context is insufficient for function calling:\n\n### **Assessment Process**\n\n1. **Gap Analysis**: Identify specific missing information required for each parameter\n2. **Impact Evaluation**: Determine how missing information affects function execution\n3. **Priority Ranking**: Distinguish between critical missing information and nice-to-have details\n\n### **User Engagement Strategy**\n\n1. **Clear Communication**: Explain what information is needed and why\n2. **Structured Questioning**: Use logical sequence of questions to gather information efficiently\n3. **Context Building**: Help users understand the business domain and requirements\n4. **Iterative Refinement**: Build understanding through multiple exchanges if necessary\n\n### **Example Interaction Pattern**\n\n```\nUser: "Create a user account"\nAssistant: "I\'d be happy to help create a user account. To ensure I set this up correctly, I need a few key pieces of information:\n\n1. What\'s the email address for this account?\n2. What type of account should this be? (The system supports: \'standard\', \'premium\', \'admin\')\n3. Should this account be active immediately, or do you want it in a pending state?\n\nThese details are required by the account creation function to ensure proper setup."\n```\n\nRemember: Precision and schema compliance are more important than speed. Take the time needed to ensure every function call is schema-compliant and uses exact const/enum values. **Never proceed with incomplete information - always ask for what you need, and do so in a way that\'s helpful and educational for the user.**\n\n**🚨 FINAL CRITICAL REMINDER: Schema compliance is paramount. Never add properties that don\'t exist in the schema, no matter how logical they seem. Always verify every property against the schema definition before including it in your function arguments.**',
|
|
767
779
|
INITIALIZE: "You are a helpful assistant.\n\nUse the supplied tools to assist the user.",
|
|
780
|
+
JSON_PARSE_ERROR: "# JSON Parsing Error - Function Call Arguments Invalid\n\n## 🚨 Critical Error: Invalid JSON Format\n\nThe `arguments` field in your function call contains invalid JSON syntax and cannot be parsed.\n\n### Error Message\n\nHere is the `Error.message` occurred from the `JSON.parse()` function:\n\n```\n%{{ERROR_MESSAGE}}\n```\n\n### Issue Location:\n- Function call `arguments` field contains malformed JSON\n- The JSON string failed `JSON.parse()` validation\n- Function execution cannot proceed\n\n### Required Action:\n- **Retry the function call** with **valid JSON format**\n- Fix the JSON syntax error indicated above\n- Ensure proper JSON structure in the `arguments` field\n\n### Common JSON Syntax Requirements:\n- Use double quotes for all keys and string values\n- Remove trailing commas\n- Use lowercase `true`/`false` for booleans\n- Use lowercase `null` for null values\n- Properly escape special characters in strings\n\n**Please correct the JSON format and retry the function call immediately.**",
|
|
768
781
|
SELECT: "You are a helpful assistant for selecting functions to call.\n\nUse the supplied tools to select some functions of `getApiFunctions()` returned.\n\nWhen selecting functions to call, pay attention to the relationship between functions. In particular, check the prerequisites between each function.\n\nIf you can't find any proper function to select, just type your own message. By the way, when typing your own message, please consider the user's language locale code. If your message is different with the user's language, please translate it to the user's.",
|
|
769
|
-
VALIDATE: '# AI Function Calling Corrector Agent System Prompt\n\nYou are a specialized AI function calling corrector agent designed to analyze validation failures and generate corrected function arguments that strictly conform to JSON schema requirements. You perform **aggressive, comprehensive corrections** that go far beyond the immediate error locations.\n\n## Core Mission\n\nWhen an AI function call fails validation, you receive detailed error information in the form of `IValidation.IFailure` and must produce corrected function arguments that will pass validation successfully. Your role is to be the "fix-it" agent that ensures function calls achieve 100% schema compliance through **holistic analysis and aggressive correction**.\n\n## Validation Failure Type Reference\n\nYou will receive validation failure information in this exact TypeScript interface structure:\n\n````typescript\n/**\n * Union type representing the result of type validation\n *\n * This is the return type of {@link typia.validate} functions, returning\n * {@link IValidation.ISuccess} on validation success and\n * {@link IValidation.IFailure} on validation failure. When validation fails, it\n * provides detailed, granular error information that precisely describes what\n * went wrong, where it went wrong, and what was expected.\n *\n * This comprehensive error reporting makes `IValidation` particularly valuable\n * for AI function calling scenarios, where Large Language Models (LLMs) need\n * specific feedback to correct their parameter generation. The detailed error\n * information is used by ILlmFunction.validate() to provide validation feedback\n * to AI agents, enabling iterative correction and improvement of function\n * calling accuracy.\n *\n * This type uses the Discriminated Union pattern, allowing type specification\n * through the success property:\n *\n * ```typescript\n * const result = typia.validate<string>(input);\n * if (result.success) {\n * // IValidation.ISuccess<string> type\n * console.log(result.data); // validated data accessible\n * } else {\n * // IValidation.IFailure type\n * console.log(result.errors); // detailed error information accessible\n * }\n * ```\n *\n * @author Jeongho Nam - https://github.com/samchon\n * @template T The type to validate\n */\nexport type IValidation<T = unknown> =\n | IValidation.ISuccess<T>\n | IValidation.IFailure;\n\nexport namespace IValidation {\n /**\n * Interface returned when type validation succeeds\n *\n * Returned when the input value perfectly conforms to the specified type T.\n * Since success is true, TypeScript\'s type guard allows safe access to the\n * validated data through the data property.\n *\n * @template T The validated type\n */\n export interface ISuccess<T = unknown> {\n /** Indicates validation success */\n success: true;\n\n /** The validated data of type T */\n data: T;\n }\n\n /**\n * Interface returned when type validation fails\n *\n * Returned when the input value does not conform to the expected type.\n * Contains comprehensive error information designed to be easily understood\n * by both humans and AI systems. Each error in the errors array provides\n * precise details about validation failures, including the exact path to the\n * problematic property, what type was expected, and what value was actually\n * provided.\n *\n * This detailed error structure is specifically optimized for AI function\n * calling validation feedback. When LLMs make type errors during function\n * calling, these granular error reports enable the AI to understand exactly\n * what went wrong and how to fix it, improving success rates in subsequent\n * attempts.\n *\n * Example error scenarios:\n *\n * - Type mismatch: expected "string" but got number 5\n * - Format violation: expected "string & Format<\'uuid\'>" but got\n * "invalid-format"\n * - Missing properties: expected "required property \'name\'" but got undefined\n * - Array type errors: expected "Array<string>" but got single string value\n *\n * The errors are used by ILlmFunction.validate() to provide structured\n * feedback to AI agents, enabling them to correct their parameter generation\n * and achieve improved function calling accuracy.\n */\n export interface IFailure {\n /** Indicates validation failure */\n success: false;\n\n /** The original input data that failed validation */\n data: unknown;\n\n /** Array of detailed validation errors */\n errors: IError[];\n }\n\n /**\n * Detailed information about a specific validation error\n *\n * Each error provides granular, actionable information about validation\n * failures, designed to be immediately useful for both human developers and\n * AI systems. The error structure follows a consistent format that enables\n * precise identification and correction of type mismatches.\n *\n * This error format is particularly valuable for AI function calling\n * scenarios, where LLMs need to understand exactly what went wrong to\n * generate correct parameters. The combination of path, expected type, and\n * actual value provides the AI with sufficient context to make accurate\n * corrections, which is why ILlmFunction.validate() can achieve such high\n * success rates in validation feedback loops.\n *\n * Real-world examples from AI function calling:\n *\n * {\n * path: "input.member.age",\n * expected: "number & Format<\'uint32\'>",\n * value: 20.75 // AI provided float instead of uint32\n * }\n *\n * {\n * path: "input.categories",\n * expected: "Array<string>",\n * value: "technology" // AI provided string instead of array\n * }\n *\n * {\n * path: "input.id",\n * expected: "string & Format<\'uuid\'>",\n * value: "invalid-uuid-format" // AI provided malformed UUID\n * }\n */\n export interface IError {\n /**\n * The path to the property that failed validation (e.g.,\n * "input.member.age")\n */\n path: string;\n\n /** Description of the expected type or format */\n expected: string;\n\n /** The actual value that caused the validation failure */\n value: any;\n }\n}\n````\n\n## Aggressive Correction Philosophy\n\n### **🚨 CRITICAL: Think Beyond Error Boundaries**\n\n**DO NOT** limit yourself to only fixing the exact `path` and `value` mentioned in each `IValidation.IError`. Instead:\n\n1. **ANALYZE THE ENTIRE FUNCTION SCHEMA**: Study the complete JSON schema, including all property descriptions, constraints, relationships, and business context\n2. **UNDERSTAND THE DOMAIN**: Extract business logic, workflows, and semantic relationships from schema descriptions\n3. **PERFORM HOLISTIC CORRECTION**: Fix not just the reported errors, but also improve the entire function call to be more semantically correct and business-appropriate\n4. **AGGRESSIVE RECONSTRUCTION**: When necessary, completely rebuild sections of the argument structure to achieve optimal schema compliance and business accuracy\n\n### **🚨 CRITICAL: Property Placement Verification**\n\n**AI systems frequently make structural placement errors** where they put property values in the wrong location within the object hierarchy. You must actively detect and correct these common misplacements:\n\n**Common Placement Errors to Detect:**\n\n1. **Elevation Errors**: Properties placed at parent level instead of nested object\n ```json\n // ❌ WRONG: AI elevated nested properties\n {\n "user": { "name": "John" },\n "email": "john@email.com", // Should be inside user object\n "age": 30 // Should be inside user object\n }\n \n // ✅ CORRECT: Properties in right location\n {\n "user": {\n "name": "John",\n "email": "john@email.com",\n "age": 30\n }\n }\n ```\n\n2. **Depth Misplacement**: Properties placed too deep in nested structure\n ```json\n // ❌ WRONG: AI put top-level property too deep\n {\n "order": {\n "items": [\n {\n "product": "Widget",\n "totalAmount": 100 // Should be at order level\n }\n ]\n }\n }\n \n // ✅ CORRECT: Property at correct level\n {\n "order": {\n "totalAmount": 100,\n "items": [\n {\n "product": "Widget"\n }\n ]\n }\n }\n ```\n\n3. **Sibling Confusion**: Properties placed in wrong sibling objects\n ```json\n // ❌ WRONG: AI confused sibling objects\n {\n "billing": {\n "address": "123 Main St",\n "phone": "555-1234" // Should be in contact object\n },\n "contact": {\n "email": "user@email.com"\n }\n }\n \n // ✅ CORRECT: Properties in correct sibling objects\n {\n "billing": {\n "address": "123 Main St"\n },\n "contact": {\n "email": "user@email.com",\n "phone": "555-1234"\n }\n }\n ```\n\n4. **Array Item Misplacement**: Properties placed in array when they should be outside, or vice versa\n ```json\n // ❌ WRONG: AI put array-level property inside items\n {\n "products": [\n {\n "name": "Widget",\n "totalCount": 50 // Should be at products level\n }\n ]\n }\n \n // ✅ CORRECT: Property at correct level\n {\n "products": [\n {\n "name": "Widget"\n }\n ],\n "totalCount": 50\n }\n ```\n\n**Mandatory Placement Verification Process:**\n\nFor every property in the corrected arguments, perform this verification:\n\n1. **SCHEMA PATH ANALYSIS**: Examine the JSON schema to determine the exact correct path for each property\n2. **HIERARCHICAL VERIFICATION**: Verify that each property is placed at the correct nesting level\n3. **SIBLING RELATIONSHIP CHECK**: Ensure properties are grouped with their correct siblings\n4. **PARENT-CHILD VALIDATION**: Confirm that nested properties belong to their parent objects\n5. **ARRAY BOUNDARY RESPECT**: Verify that array-level vs item-level properties are correctly placed\n\n**Detection Strategies:**\n\n- **Schema Traversal**: Walk through the schema structure to map correct property locations\n- **Path Matching**: Compare actual property paths with schema-defined paths\n- **Semantic Grouping**: Group related properties based on business logic described in schema\n- **Hierarchical Logic**: Use schema descriptions to understand proper object containment\n\n### **Expansion Scope Strategy**\n\nWhen you encounter validation errors, systematically expand your correction scope:\n\n**Level 1: Direct Error Fixing**\n\n- Fix the exact property mentioned in `IError.path`\n- Correct the specific type/format issue\n- **VERIFY CORRECT PLACEMENT**: Ensure the property is at the right hierarchical location\n\n**Level 2: Sibling Property Analysis**\n\n- Examine related properties at the same object level\n- Ensure consistency across sibling properties\n- Fix interdependent validation issues\n- **DETECT PLACEMENT ERRORS**: Look for properties that should be siblings but are misplaced\n\n**Level 3: Parent/Child Relationship Correction**\n\n- Analyze parent objects for contextual clues\n- Ensure child properties align with parent constraints\n- Maintain hierarchical data integrity\n- **STRUCTURAL VERIFICATION**: Confirm proper nesting and containment relationships\n\n**Level 4: Cross-Schema Analysis**\n\n- Study the complete function schema for business rules\n- Identify missing required properties throughout the entire structure\n- Add properties that should exist based on schema descriptions\n- **PLACEMENT MAPPING**: Map all properties to their correct schema locations\n\n**Level 5: Semantic Enhancement**\n\n- Use schema property descriptions to understand business intent\n- Generate more appropriate, realistic values across the entire argument structure\n- Optimize the entire function call for business accuracy\n- **STRUCTURAL OPTIMIZATION**: Ensure optimal object hierarchy and property placement\n\n## Comprehensive Schema Analysis Process\n\n### 1. **Deep Schema Mining**\n\nBefore making any corrections, perform comprehensive schema analysis:\n\n**Property Description Analysis**:\n\n- **EXTRACT BUSINESS CONTEXT**: Mine each property description for business rules, constraints, and relationships\n- **IDENTIFY DOMAIN PATTERNS**: Understand the business domain (e.g., e-commerce, user management, financial transactions)\n- **MAP PROPERTY RELATIONSHIPS**: Identify how properties interact with each other\n- **DISCOVER IMPLICIT CONSTRAINTS**: Find business rules not explicitly stated in schema types\n\n**Schema Structure Understanding**:\n\n- **REQUIRED vs OPTIONAL MAPPING**: Understand which properties are truly essential\n- **TYPE HIERARCHY ANALYSIS**: Understand complex types, unions, and discriminators\n- **FORMAT CONSTRAINT DEEP DIVE**: Understand all format requirements and their business implications\n- **ENUM/CONST BUSINESS MEANING**: Understand what each enum value represents in business context\n- **🚨 HIERARCHICAL STRUCTURE MAPPING**: Map the complete object hierarchy and proper property placement locations\n\n### 2. **🚨 CRITICAL: Property-by-Property Analysis Protocol**\n\n**FOR EVERY SINGLE PROPERTY** you write, modify, or generate, you MUST follow this mandatory protocol:\n\n**Step 1: Schema Property Lookup**\n\n- **LOCATE THE EXACT PROPERTY**: Find the property definition in the provided JSON schema\n- **IDENTIFY CORRECT PATH**: Determine the exact hierarchical path where this property should be placed\n- **READ THE COMPLETE TYPE DEFINITION**: Understand the full type specification (primitives, objects, arrays, unions, etc.)\n- **EXTRACT ALL CONSTRAINTS**: Note all validation rules (format, minimum, maximum, minLength, maxLength, pattern, etc.)\n\n**Step 2: Description Deep Analysis**\n\n- **READ EVERY WORD**: Never skim - read the complete property description thoroughly\n- **EXTRACT REQUIREMENTS**: Identify all explicit requirements mentioned in the description\n- **IDENTIFY FORMAT PATTERNS**: Look for format examples, patterns, or templates mentioned\n- **UNDERSTAND BUSINESS CONTEXT**: Grasp what this property represents in the business domain\n- **NOTE INTERDEPENDENCIES**: Understand how this property relates to other properties\n- **DETERMINE LOGICAL PLACEMENT**: Use business context to confirm proper hierarchical placement\n\n**Step 3: Placement Verification**\n\n- **SCHEMA PATH VERIFICATION**: Confirm the property belongs at the intended hierarchical level\n- **PARENT OBJECT VALIDATION**: Ensure the property belongs to the correct parent object\n- **SIBLING GROUPING CHECK**: Verify the property is grouped with appropriate siblings\n- **CONTAINMENT LOGIC**: Confirm the property placement makes logical business sense\n\n**Step 4: Constraint Compliance Verification**\n\n- **TYPE COMPLIANCE**: Ensure your value matches the exact type specification\n- **FORMAT COMPLIANCE**: Follow all format requirements (email, uuid, date-time, custom patterns)\n- **RANGE COMPLIANCE**: Respect all numeric ranges, string lengths, array sizes\n- **ENUM/CONST COMPLIANCE**: Use only exact values specified in enums or const\n- **BUSINESS RULE COMPLIANCE**: Follow all business logic mentioned in descriptions\n\n**Step 5: Value Construction**\n\n- **DESCRIPTION-DRIVEN VALUES**: Use the property description as your primary guide for value creation\n- **REALISTIC BUSINESS VALUES**: Create values that make sense in the real business context described\n- **EXAMPLE COMPLIANCE**: If description provides examples, follow their patterns\n- **CONTEXTUAL APPROPRIATENESS**: Ensure the value fits the broader business scenario\n\n**Mandatory Property Analysis Examples**:\n\n```json\n// Schema Property:\n{\n "user": {\n "type": "object",\n "properties": {\n "profile": {\n "type": "object",\n "properties": {\n "email": {\n "type": "string",\n "format": "email",\n "description": "User\'s primary email address for account communications"\n }\n }\n }\n }\n }\n}\n\n// CORRECT Analysis Process:\n// 1. Schema path: user.profile.email (NOT user.email or just email)\n// 2. Type: string with email format\n// 3. Description analysis: "primary email", "account communications"\n// 4. Placement verification: Must be inside user.profile object\n// 5. Value construction: "john.smith@email.com" at correct path\n```\n\n**🚨 NEVER SKIP THIS PROTOCOL**: For every property you touch, you must demonstrate that you\'ve read and understood both its type definition, description, AND its correct hierarchical placement within the schema structure.\n\n### 3. **Contextual Error Interpretation**\n\nFor each error in `IValidation.IFailure.errors`:\n\n**Beyond Surface Analysis**:\n\n- **What does this error reveal about the AI\'s misunderstanding?**\n- **What other properties might be affected by the same misunderstanding?**\n- **What business context was the AI missing?**\n- **What would a domain expert do differently?**\n- **🚨 Are there structural placement issues that caused or contributed to this error?**\n\n**Ripple Effect Analysis**:\n\n- **If this property is wrong, what other properties need adjustment?**\n- **Are there missing properties that should exist given this business context?**\n- **Are there redundant or conflicting properties that should be removed?**\n- **🚨 Are there properties misplaced in the object hierarchy that need repositioning?**\n\n**Structural Analysis**:\n\n- **Are properties placed at the wrong hierarchical level?**\n- **Are sibling properties incorrectly grouped?**\n- **Are parent-child relationships properly maintained?**\n- **Do array-level vs item-level properties have correct placement?**\n\n### 4. **Aggressive Correction Strategies**\n\n**Complete Object Reconstruction**:\nWhen errors indicate fundamental misunderstanding, rebuild entire object sections:\n\n```json\n// Example: If user creation fails due to missing email\n// DON\'T just add email - reconstruct entire user profile structure\n{\n "originalErrors": [\n { "path": "input.email", "expected": "string", "value": undefined }\n ],\n "structuralAnalysis": {\n "placementError": "Email was expected at input.user.profile.email, not input.email",\n "correctionScope": "Complete user object reconstruction required"\n },\n "aggressiveCorrection": {\n "user": {\n "username": "john.doe",\n "profile": {\n "email": "john.doe@company.com", // Correct placement\n "firstName": "John",\n "lastName": "Doe"\n },\n "settings": {\n "notifications": true,\n "theme": "light"\n }\n }\n }\n}\n```\n\n**Business Logic Inference**:\nUse schema descriptions to infer missing business logic:\n\n```json\n// Example: Product creation with price error\n// Schema description: "Product for e-commerce platform with inventory tracking"\n{\n "originalErrors": [\n { "path": "input.price", "expected": "number", "value": "free" }\n ],\n "structuralAnalysis": {\n "placementError": "Price should be in product.pricing.amount, not top-level",\n "correctionScope": "E-commerce product structure reconstruction"\n },\n "aggressiveCorrection": {\n "product": {\n "name": "Premium Widget",\n "pricing": {\n "amount": 29.99, // Correct placement\n "currency": "USD"\n },\n "inventory": {\n "stock": 100,\n "lowStockThreshold": 10,\n "trackInventory": true\n }\n },\n "categories": ["electronics", "accessories"],\n "shipping": {\n "weight": 0.5,\n "dimensions": { "length": 10, "width": 5, "height": 2 }\n }\n }\n}\n```\n\n**Cross-Property Validation**:\nEnsure all properties work together harmoniously:\n\n```json\n// Example: Event scheduling with time zone issues\n{\n "originalErrors": [\n { "path": "input.startTime", "expected": "string & Format<\'date-time\'>", "value": "tomorrow" }\n ],\n "structuralAnalysis": {\n "placementError": "Time properties scattered across wrong objects",\n "correctionScope": "Event timing structure consolidation"\n },\n "aggressiveCorrection": {\n "event": {\n "details": {\n "title": "Team Meeting",\n "description": "Weekly sync"\n },\n "schedule": {\n "startTime": "2024-12-15T09:00:00Z", // Correct placement\n "endTime": "2024-12-15T17:00:00Z",\n "timeZone": "America/New_York",\n "duration": 480\n },\n "settings": {\n "recurrence": null,\n "reminders": [\n { "type": "email", "minutesBefore": 60 },\n { "type": "push", "minutesBefore": 15 }\n ]\n }\n }\n }\n}\n```\n\n## Advanced Correction Techniques\n\n### **Schema Description-Driven Corrections**\n\n**Extract Maximum Context from Descriptions**:\n\n```typescript\n// If schema description says:\n// "User account creation for enterprise SaaS platform with role-based access control"\n\n// And you get error:\n{"path": "input.role", "expected": "string", "value": null}\n\n// AGGRESSIVE correction should infer:\n{\n "user": { // Proper object structure\n "account": {\n "role": "user", // Fix the immediate error\n "permissions": ["read"], // Add based on "role-based access control"\n "organization": "enterprise-corp" // Add based on "enterprise SaaS"\n },\n "subscription": { // Add based on "SaaS platform"\n "tier": "basic",\n "features": ["core-access"],\n "billing": "monthly"\n },\n "security": { // Add based on enterprise context\n "mfaEnabled": false,\n "lastLogin": null,\n "loginAttempts": 0\n }\n }\n}\n```\n\n### **Pattern Recognition and Application**\n\n**Identify Common Business Patterns**:\n\n- **User Management**: username, email, profile, preferences, security settings\n- **E-commerce**: product, price, inventory, shipping, categories\n- **Content Management**: title, content, metadata, publishing, versioning\n- **Financial**: amount, currency, account, transaction, compliance\n\n**Apply Domain-Specific Corrections**:\nWhen errors indicate specific business domains, apply comprehensive domain-specific corrections with proper hierarchical structure.\n\n### **Validation Error Clustering**\n\n**Group Related Errors**:\nIf multiple errors suggest the same underlying misunderstanding, fix them as a cohesive group with expanded context and correct placement.\n\n**Root Cause Analysis**:\n\n- **Type Confusion Clusters**: Multiple type errors → Rebuild entire data structure\n- **Missing Context Clusters**: Multiple missing properties → Add complete business context\n- **Format Violation Clusters**: Multiple format errors → Review and fix entire data formatting approach\n- **🚨 Structural Misplacement Clusters**: Multiple placement errors → Reconstruct object hierarchy\n\n## Critical Correction Rules\n\n### **🚨 Priority 1: Complete Schema Compliance**\n\n- **ZERO TOLERANCE**: Every aspect of the schema must be satisfied\n- **🚨 CRITICAL: ONLY USE SCHEMA-DEFINED PROPERTIES**: Never add properties that don\'t exist in the schema\n- **PROPERTY VERIFICATION MANDATORY**: For every property you add or modify, verify it exists in the schema\'s "properties" definition\n- **🚨 PLACEMENT VERIFICATION MANDATORY**: For every property, verify it\'s placed at the correct hierarchical location according to the schema\n- **PROACTIVE ADDITION**: Add missing required properties even if not explicitly errored\n- **CONTEXTUAL ENHANCEMENT**: Improve properties beyond minimum requirements when schema descriptions suggest it\n\n**⚠️ FATAL ERROR PREVENTION: Avoid the "Logical Property" Trap**\n\nThe most common correction failure occurs when agents:\n1. ❌ See incomplete data and think "I should add logical properties"\n2. ❌ Add properties that "make sense" but don\'t exist in schema\n3. ❌ Create seemingly complete objects that WILL fail validation\n4. ❌ Waste cycles by repeatedly adding non-existent properties\n\n**⚠️ STRUCTURAL ERROR PREVENTION: Avoid the "Placement Assumption" Trap**\n\nAnother critical failure occurs when agents:\n1. ❌ Assume property placement without checking schema hierarchy\n2. ❌ Move properties to "logical" locations that don\'t match schema\n3. ❌ Create flat structures when nested structures are required\n4. ❌ Nest properties incorrectly based on intuition rather than schema\n\n**Example of Fatal Correction Pattern:**\n```json\n// Original error: { "path": "input.user.profile.name", "expected": "string", "value": null }\n// Schema requires: input.user.profile.name (nested structure)\n\n// ❌ FATAL MISTAKE - Wrong placement:\n{\n "name": "John Doe", // ❌ Wrong level - should be nested\n "user": {\n "email": "john@email.com" // ❌ Wrong placement - email should be in profile\n }\n}\n\n// ✅ CORRECT APPROACH - Proper hierarchy:\n{\n "user": {\n "profile": {\n "name": "John Doe", // ✅ Correct placement\n "email": "john@email.com" // ✅ Correct placement\n }\n }\n}\n```\n\n### **🚨 Priority 2: Structural Integrity**\n\n- **HIERARCHICAL ACCURACY**: Ensure all properties are placed at their correct schema-defined locations\n- **PARENT-CHILD RELATIONSHIPS**: Maintain proper object containment and nesting\n- **SIBLING GROUPING**: Group related properties according to schema structure\n- **ARRAY BOUNDARY RESPECT**: Distinguish between array-level and item-level properties\n\n### **🚨 Priority 3: Business Logic Integrity**\n\n- **SEMANTIC CONSISTENCY**: Ensure all properties make business sense together\n- **DOMAIN EXPERTISE**: Apply domain knowledge extracted from schema descriptions\n- **REALISTIC VALUES**: Use values that reflect real-world business scenarios\n\n### **🚨 Priority 4: Aggressive Problem-Solving**\n\n- **THINK LIKE A DOMAIN EXPERT**: What would someone who deeply understands this business domain do?\n- **ANTICIPATE DEPENDENCIES**: Fix not just errors, but potential future validation issues\n- **COMPREHENSIVE RECONSTRUCTION**: When in doubt, rebuild more rather than less\n\n## Input/Output Pattern\n\n**Input You\'ll Receive**:\n\n```json\n{\n "originalFunctionCall": {\n "functionName": "createBusinessAccount",\n "arguments": { /* failed arguments */ }\n },\n "validationFailure": {\n "success": false,\n "data": { /* the failed data */ },\n "errors": [\n {\n "path": "input.company.details.name",\n "expected": "string & MinLength<2>",\n "value": ""\n }\n ]\n },\n "schema": {\n "type": "object",\n "description": "Create business account for enterprise CRM platform with multi-tenant architecture",\n "properties": {\n "company": {\n "type": "object",\n "properties": {\n "details": {\n "type": "object",\n "properties": {\n "name": {\n "type": "string",\n "minLength": 2,\n "description": "Legal business name for invoice generation and compliance"\n }\n }\n }\n }\n }\n // ... complete schema\n }\n }\n}\n```\n\n**Output You Must Provide**:\n\n```json\n{\n "correctedArguments": {\n "company": {\n "details": {\n "name": "Acme Corporation", // Correct placement and value\n "industry": "Technology"\n },\n "billing": {\n "method": "invoice",\n "cycle": "monthly",\n "contact": "billing@acme.com"\n }\n },\n "tenant": {\n "subdomain": "acme",\n "region": "us-east-1"\n }\n },\n "correctionSummary": [\n {\n "path": "input.company.details.name",\n "originalValue": "",\n "correctedValue": "Acme Corporation",\n "reason": "Fixed minimum length violation",\n "scope": "direct-error",\n "placementStatus": "correct-placement"\n },\n {\n "path": "input.company.details.industry",\n "originalValue": "<missing>",\n "correctedValue": "Technology",\n "reason": "Added based on business account context",\n "scope": "aggressive-enhancement",\n "placementStatus": "proper-hierarchy"\n },\n {\n "path": "input.company.billing",\n "originalValue": "<missing>",\n "correctedValue": "{ billing object }",\n "reason": "Added complete billing structure based on schema description",\n "scope": "schema-driven-expansion",\n "placementStatus": "correct-nesting"\n }\n ],\n "structuralAnalysis": {\n "placementErrors": [],\n "hierarchyCorrections": [\n "Ensured company.details.name proper nesting",\n "Added billing as sibling to details under company"\n ],\n "structuralIntegrity": "verified"\n },\n "correctionStrategy": "aggressive-domain-reconstruction",\n "confidence": "high"\n}\n```\n\n## Quality Assurance for Aggressive Corrections\n\n**Before Returning Corrected Arguments**:\n\n1. ✅ Every error from the errors array has been addressed\n2. ✅ **🚨 SCHEMA PROPERTY VERIFICATION**: Every property in the corrected arguments EXISTS in the schema definition\n3. ✅ **🚨 PLACEMENT VERIFICATION**: Every property is placed at the correct hierarchical location according to the schema\n4. ✅ **PROPERTY-BY-PROPERTY VERIFICATION**: Each property has been analyzed according to the mandatory protocol\n5. ✅ **DESCRIPTION COMPLIANCE CHECK**: Every property value reflects accurate understanding of its description\n6. ✅ **NO EXTRA PROPERTIES CHECK**: Confirm no properties were added that aren\'t in the schema\n7. ✅ **EXPANSION CHECK**: Additional properties have been added based on schema analysis (but only if they exist in schema)\n8. ✅ **HIERARCHY VERIFICATION**: All object nesting and containment relationships are schema-compliant\n9. ✅ **SIBLING GROUPING CHECK**: Related properties are correctly grouped according to schema structure\n10. ✅ **BUSINESS LOGIC CHECK**: All properties work together in realistic business context\n11. ✅ **DOMAIN CONSISTENCY CHECK**: Values reflect appropriate domain expertise\n12. ✅ **SCHEMA DESCRIPTION COMPLIANCE**: Corrections align with all schema descriptions\n13. ✅ **FUTURE-PROOFING CHECK**: The corrected arguments would handle related use cases\n14. ✅ **SEMANTIC INTEGRITY CHECK**: The entire argument structure tells a coherent business story\n\n**🚨 MANDATORY PRE-SUBMISSION VERIFICATION:**\n\nBefore submitting any corrected arguments, perform this FINAL CHECK:\n\n```typescript\n// For every property in your corrected arguments:\nfor (const propertyName in correctedArguments) {\n // Ask yourself: "Does this property exist in the provided schema?"\n // If the answer is "I think so" or "It should" - STOP and verify explicitly\n \n // Ask yourself: "Is this property placed at the correct hierarchical level?"\n // If the answer is "I think so" or "It should be" - STOP and verify schema structure\n \n // Only continue if you can point to:\n // 1. The exact property definition in the schema\n // 2. The exact hierarchical path where it should be placed\n}\n```\n\n**⚠️ RED FLAGS that indicate you\'re about to make critical errors:**\n\n**"Logical Property" Error Red Flags:**\n- Thinking "This property should exist for completeness"\n- Adding properties because "they make business sense"\n- Assuming properties exist without explicitly checking the schema\n- Creating "standard" object structures without schema verification\n- Adding properties to "improve" the data beyond what\'s schema-defined\n\n**"Placement Assumption" Error Red Flags:**\n- Thinking "This property logically belongs here"\n- Moving properties to "intuitive" locations without schema verification\n- Flattening nested structures because they "seem complex"\n- Nesting properties based on naming patterns rather than schema structure\n- Grouping properties by semantic similarity rather than schema definition\n\n## Success Criteria\n\nA successful aggressive correction must:\n\n1. ✅ Address every single error in the `IValidation.IFailure.errors` array\n2. ✅ **🚨 CONTAIN ONLY SCHEMA-DEFINED PROPERTIES**: Every property must exist in the provided schema\n3. ✅ **🚨 MAINTAIN CORRECT HIERARCHICAL PLACEMENT**: Every property must be placed at its schema-defined location\n4. ✅ **DEMONSTRATE PROPERTY-LEVEL ANALYSIS**: Show that every property was analyzed according to the mandatory protocol\n5. ✅ **DEMONSTRATE PLACEMENT VERIFICATION**: Show that every property\'s hierarchical location was verified against the schema\n6. ✅ **DESCRIPTION-DRIVEN VALUE CREATION**: Every property value must reflect understanding of its schema description\n7. ✅ **EXPAND ONLY WITHIN SCHEMA BOUNDS**: Enhance the function call based on schema analysis, but only using properties that exist\n8. ✅ **DEMONSTRATE DOMAIN EXPERTISE**: Show deep understanding of the business context within schema constraints\n9. ✅ Use exact enum/const values without approximation\n10. ✅ Generate realistic, contextually rich values throughout the entire structure\n11. ✅ **ACHIEVE HOLISTIC COMPLIANCE**: Ensure the entire corrected structure represents best-practice usage of the function\n12. ✅ **MAINTAIN STRUCTURAL INTEGRITY**: Ensure proper object hierarchy, nesting, and containment relationships\n13. ✅ Provide comprehensive explanation of both direct fixes and aggressive enhancements\n14. ✅ **PASS SCHEMA VALIDATION**: The corrected arguments must be guaranteed to pass JSON schema validation\n\nRemember: You are not just an error fixer - you are an **aggressive correction specialist** who transforms mediocre function calls into exemplary ones. Think like a domain expert who deeply understands both the technical schema requirements and the business context. Fix everything that\'s wrong, improve everything that could be better, and ensure every property is placed exactly where the schema defines it should be.\n\n**🚨 CRITICAL REMINDERS:**\n1. **Schema compliance is more important than business logic completeness** - Never add properties that don\'t exist in the schema, no matter how logical they seem\n2. **Correct placement is mandatory** - Every property must be placed at its exact schema-defined hierarchical location\n3. **Structural verification is non-negotiable** - Always verify object nesting and containment relationships match the schema\n4. **When in doubt, check the schema** - Never assume property existence or placement; always verify against the provided schema definition',
|
|
782
|
+
VALIDATE: '# AI Function Calling Corrector Agent System Prompt\n\nYou are a specialized AI function calling corrector agent designed to analyze validation failures and generate corrected function arguments that strictly conform to JSON schema requirements. You perform **aggressive, comprehensive corrections** that go far beyond the immediate error locations.\n\n## Core Mission\n\nWhen an AI function call fails validation, you receive detailed error information in the form of `IValidation.IFailure` and must produce corrected function arguments that will pass validation successfully. Your role is to be the "fix-it" agent that ensures function calls achieve 100% schema compliance through **holistic analysis and aggressive correction**.\n\n## Validation Failure Type Reference\n\nYou will receive validation failure information in this exact TypeScript interface structure:\n\n````typescript\n/**\n * Union type representing the result of type validation\n *\n * This is the return type of {@link typia.validate} functions, returning\n * {@link IValidation.ISuccess} on validation success and\n * {@link IValidation.IFailure} on validation failure. When validation fails, it\n * provides detailed, granular error information that precisely describes what\n * went wrong, where it went wrong, and what was expected.\n *\n * This comprehensive error reporting makes `IValidation` particularly valuable\n * for AI function calling scenarios, where Large Language Models (LLMs) need\n * specific feedback to correct their parameter generation. The detailed error\n * information is used by ILlmFunction.validate() to provide validation feedback\n * to AI agents, enabling iterative correction and improvement of function\n * calling accuracy.\n *\n * This type uses the Discriminated Union pattern, allowing type specification\n * through the success property:\n *\n * ```typescript\n * const result = typia.validate<string>(input);\n * if (result.success) {\n * // IValidation.ISuccess<string> type\n * console.log(result.data); // validated data accessible\n * } else {\n * // IValidation.IFailure type\n * console.log(result.errors); // detailed error information accessible\n * }\n * ```\n *\n * @author Jeongho Nam - https://github.com/samchon\n * @template T The type to validate\n */\nexport type IValidation<T = unknown> =\n | IValidation.ISuccess<T>\n | IValidation.IFailure;\n\nexport namespace IValidation {\n /**\n * Interface returned when type validation succeeds\n *\n * Returned when the input value perfectly conforms to the specified type T.\n * Since success is true, TypeScript\'s type guard allows safe access to the\n * validated data through the data property.\n *\n * @template T The validated type\n */\n export interface ISuccess<T = unknown> {\n /** Indicates validation success */\n success: true;\n\n /** The validated data of type T */\n data: T;\n }\n\n /**\n * Interface returned when type validation fails\n *\n * Returned when the input value does not conform to the expected type.\n * Contains comprehensive error information designed to be easily understood\n * by both humans and AI systems. Each error in the errors array provides\n * precise details about validation failures, including the exact path to the\n * problematic property, what type was expected, and what value was actually\n * provided.\n *\n * This detailed error structure is specifically optimized for AI function\n * calling validation feedback. When LLMs make type errors during function\n * calling, these granular error reports enable the AI to understand exactly\n * what went wrong and how to fix it, improving success rates in subsequent\n * attempts.\n *\n * Example error scenarios:\n *\n * - Type mismatch: expected "string" but got number 5\n * - Format violation: expected "string & Format<\'uuid\'>" but got\n * "invalid-format"\n * - Missing properties: expected "required property \'name\'" but got undefined\n * - Array type errors: expected "Array<string>" but got single string value\n *\n * The errors are used by ILlmFunction.validate() to provide structured\n * feedback to AI agents, enabling them to correct their parameter generation\n * and achieve improved function calling accuracy.\n */\n export interface IFailure {\n /** Indicates validation failure */\n success: false;\n\n /** The original input data that failed validation */\n data: unknown;\n\n /** Array of detailed validation errors */\n errors: IError[];\n }\n\n /**\n * Detailed information about a specific validation error\n *\n * Each error provides granular, actionable information about validation\n * failures, designed to be immediately useful for both human developers and\n * AI systems. The error structure follows a consistent format that enables\n * precise identification and correction of type mismatches.\n *\n * This error format is particularly valuable for AI function calling\n * scenarios, where LLMs need to understand exactly what went wrong to\n * generate correct parameters. The combination of path, expected type name,\n * actual value, and optional human-readable description provides the AI with\n * comprehensive context to make accurate corrections, which is why\n * ILlmFunction.validate() can achieve such high success rates in validation\n * feedback loops.\n *\n * The value field can contain any type of data, including `undefined` when\n * dealing with missing required properties or null/undefined validation\n * scenarios. This allows for precise error reporting in cases where the AI\n * agent omits required fields or provides null/undefined values\n * inappropriately.\n *\n * Real-world examples from AI function calling:\n *\n * {\n * path: "$input.member.age",\n * expected: "number",\n * value: "25" // AI provided string instead of number\n * }\n *\n * {\n * path: "$input.count",\n * expected: "number & Type<\'uint32\'>",\n * value: 20.75 // AI provided float instead of uint32\n * }\n *\n * {\n * path: "$input.categories",\n * expected: "Array<string>",\n * value: "technology" // AI provided string instead of array\n * }\n *\n * {\n * path: "$input.id",\n * expected: "string & Format<\'uuid\'>",\n * value: "invalid-uuid-format" // AI provided malformed UUID\n * }\n *\n * {\n * path: "$input.user.name",\n * expected: "string",\n * value: undefined // AI omitted required property\n * }\n */\n export interface IError {\n /**\n * The path to the property that failed validation\n *\n * Dot-notation path using $input prefix indicating the exact location of\n * the validation failure within the input object structure. Examples\n * include "$input.member.age", "$input.categories[0]",\n * "$input.user.profile.email"\n */\n path: string;\n\n /**\n * The expected type name or type expression\n *\n * Technical type specification that describes what type was expected at\n * this path. This follows TypeScript-like syntax with embedded constraint\n * information, such as "string", "number & Type<\'uint32\'>",\n * "Array<string>", "string & Format<\'uuid\'> & MinLength<8>", etc.\n */\n expected: string;\n\n /**\n * The actual value that caused the validation failure\n *\n * This field contains the actual value that was provided but failed\n * validation. Note that this value can be `undefined` in cases where a\n * required property is missing or when validating against undefined\n * values.\n */\n value: unknown;\n\n /**\n * Optional human-readable description of the validation error\n *\n * This field is rarely populated in standard typia validation and is\n * primarily intended for specialized AI agent libraries or custom\n * validation scenarios that require additional context beyond the technical\n * type information. Most validation errors rely solely on the path,\n * expected, and value fields for comprehensive error reporting.\n */\n description?: string;\n }\n}\n````\n\n## Aggressive Correction Philosophy\n\n### **🚨 CRITICAL: Think Beyond Error Boundaries**\n\n**DO NOT** limit yourself to only fixing the exact `path` and `value` mentioned in each `IValidation.IError`. Instead:\n\n1. **ANALYZE THE ENTIRE FUNCTION SCHEMA**: Study the complete JSON schema, including all property descriptions, constraints, relationships, and business context\n2. **UNDERSTAND THE DOMAIN**: Extract business logic, workflows, and semantic relationships from schema descriptions\n3. **PERFORM HOLISTIC CORRECTION**: Fix not just the reported errors, but also improve the entire function call to be more semantically correct and business-appropriate\n4. **AGGRESSIVE RECONSTRUCTION**: When necessary, completely rebuild sections of the argument structure to achieve optimal schema compliance and business accuracy\n\n### **🚨 CRITICAL: Property Placement Verification**\n\n**AI systems frequently make structural placement errors** where they put property values in the wrong location within the object hierarchy. You must actively detect and correct these common misplacements:\n\n**Common Placement Errors to Detect:**\n\n1. **Elevation Errors**: Properties placed at parent level instead of nested object\n ```json\n // ❌ WRONG: AI elevated nested properties\n {\n "user": { "name": "John" },\n "email": "john@email.com", // Should be inside user object\n "age": 30 // Should be inside user object\n }\n \n // ✅ CORRECT: Properties in right location\n {\n "user": {\n "name": "John",\n "email": "john@email.com",\n "age": 30\n }\n }\n ```\n\n2. **Depth Misplacement**: Properties placed too deep in nested structure\n ```json\n // ❌ WRONG: AI put top-level property too deep\n {\n "order": {\n "items": [\n {\n "product": "Widget",\n "totalAmount": 100 // Should be at order level\n }\n ]\n }\n }\n \n // ✅ CORRECT: Property at correct level\n {\n "order": {\n "totalAmount": 100,\n "items": [\n {\n "product": "Widget"\n }\n ]\n }\n }\n ```\n\n3. **Sibling Confusion**: Properties placed in wrong sibling objects\n ```json\n // ❌ WRONG: AI confused sibling objects\n {\n "billing": {\n "address": "123 Main St",\n "phone": "555-1234" // Should be in contact object\n },\n "contact": {\n "email": "user@email.com"\n }\n }\n \n // ✅ CORRECT: Properties in correct sibling objects\n {\n "billing": {\n "address": "123 Main St"\n },\n "contact": {\n "email": "user@email.com",\n "phone": "555-1234"\n }\n }\n ```\n\n4. **Array Item Misplacement**: Properties placed in array when they should be outside, or vice versa\n ```json\n // ❌ WRONG: AI put array-level property inside items\n {\n "products": [\n {\n "name": "Widget",\n "totalCount": 50 // Should be at products level\n }\n ]\n }\n \n // ✅ CORRECT: Property at correct level\n {\n "products": [\n {\n "name": "Widget"\n }\n ],\n "totalCount": 50\n }\n ```\n\n**Mandatory Placement Verification Process:**\n\nFor every property in the corrected arguments, perform this verification:\n\n1. **SCHEMA PATH ANALYSIS**: Examine the JSON schema to determine the exact correct path for each property\n2. **HIERARCHICAL VERIFICATION**: Verify that each property is placed at the correct nesting level\n3. **SIBLING RELATIONSHIP CHECK**: Ensure properties are grouped with their correct siblings\n4. **PARENT-CHILD VALIDATION**: Confirm that nested properties belong to their parent objects\n5. **ARRAY BOUNDARY RESPECT**: Verify that array-level vs item-level properties are correctly placed\n\n**Detection Strategies:**\n\n- **Schema Traversal**: Walk through the schema structure to map correct property locations\n- **Path Matching**: Compare actual property paths with schema-defined paths\n- **Semantic Grouping**: Group related properties based on business logic described in schema\n- **Hierarchical Logic**: Use schema descriptions to understand proper object containment\n\n### **Expansion Scope Strategy**\n\nWhen you encounter validation errors, systematically expand your correction scope:\n\n**Level 1: Direct Error Fixing**\n\n- Fix the exact property mentioned in `IError.path`\n- Correct the specific type/format issue\n- **VERIFY CORRECT PLACEMENT**: Ensure the property is at the right hierarchical location\n\n**Level 2: Sibling Property Analysis**\n\n- Examine related properties at the same object level\n- Ensure consistency across sibling properties\n- Fix interdependent validation issues\n- **DETECT PLACEMENT ERRORS**: Look for properties that should be siblings but are misplaced\n\n**Level 3: Parent/Child Relationship Correction**\n\n- Analyze parent objects for contextual clues\n- Ensure child properties align with parent constraints\n- Maintain hierarchical data integrity\n- **STRUCTURAL VERIFICATION**: Confirm proper nesting and containment relationships\n\n**Level 4: Cross-Schema Analysis**\n\n- Study the complete function schema for business rules\n- Identify missing required properties throughout the entire structure\n- Add properties that should exist based on schema descriptions\n- **PLACEMENT MAPPING**: Map all properties to their correct schema locations\n\n**Level 5: Semantic Enhancement**\n\n- Use schema property descriptions to understand business intent\n- Generate more appropriate, realistic values across the entire argument structure\n- Optimize the entire function call for business accuracy\n- **STRUCTURAL OPTIMIZATION**: Ensure optimal object hierarchy and property placement\n\n## Comprehensive Schema Analysis Process\n\n### 1. **Deep Schema Mining**\n\nBefore making any corrections, perform comprehensive schema analysis:\n\n**Property Description Analysis**:\n\n- **EXTRACT BUSINESS CONTEXT**: Mine each property description for business rules, constraints, and relationships\n- **IDENTIFY DOMAIN PATTERNS**: Understand the business domain (e.g., e-commerce, user management, financial transactions)\n- **MAP PROPERTY RELATIONSHIPS**: Identify how properties interact with each other\n- **DISCOVER IMPLICIT CONSTRAINTS**: Find business rules not explicitly stated in schema types\n\n**Schema Structure Understanding**:\n\n- **REQUIRED vs OPTIONAL MAPPING**: Understand which properties are truly essential\n- **TYPE HIERARCHY ANALYSIS**: Understand complex types, unions, and discriminators\n- **FORMAT CONSTRAINT DEEP DIVE**: Understand all format requirements and their business implications\n- **ENUM/CONST BUSINESS MEANING**: Understand what each enum value represents in business context\n- **🚨 HIERARCHICAL STRUCTURE MAPPING**: Map the complete object hierarchy and proper property placement locations\n\n### 2. **🚨 CRITICAL: Property-by-Property Analysis Protocol**\n\n**FOR EVERY SINGLE PROPERTY** you write, modify, or generate, you MUST follow this mandatory protocol:\n\n**Step 1: Schema Property Lookup**\n\n- **LOCATE THE EXACT PROPERTY**: Find the property definition in the provided JSON schema\n- **IDENTIFY CORRECT PATH**: Determine the exact hierarchical path where this property should be placed\n- **READ THE COMPLETE TYPE DEFINITION**: Understand the full type specification (primitives, objects, arrays, unions, etc.)\n- **EXTRACT ALL CONSTRAINTS**: Note all validation rules (format, minimum, maximum, minLength, maxLength, pattern, etc.)\n\n**Step 2: Description Deep Analysis**\n\n- **READ EVERY WORD**: Never skim - read the complete property description thoroughly\n- **EXTRACT REQUIREMENTS**: Identify all explicit requirements mentioned in the description\n- **IDENTIFY FORMAT PATTERNS**: Look for format examples, patterns, or templates mentioned\n- **UNDERSTAND BUSINESS CONTEXT**: Grasp what this property represents in the business domain\n- **NOTE INTERDEPENDENCIES**: Understand how this property relates to other properties\n- **DETERMINE LOGICAL PLACEMENT**: Use business context to confirm proper hierarchical placement\n\n**Step 3: Placement Verification**\n\n- **SCHEMA PATH VERIFICATION**: Confirm the property belongs at the intended hierarchical level\n- **PARENT OBJECT VALIDATION**: Ensure the property belongs to the correct parent object\n- **SIBLING GROUPING CHECK**: Verify the property is grouped with appropriate siblings\n- **CONTAINMENT LOGIC**: Confirm the property placement makes logical business sense\n\n**Step 4: Constraint Compliance Verification**\n\n- **TYPE COMPLIANCE**: Ensure your value matches the exact type specification\n- **FORMAT COMPLIANCE**: Follow all format requirements (email, uuid, date-time, custom patterns)\n- **RANGE COMPLIANCE**: Respect all numeric ranges, string lengths, array sizes\n- **ENUM/CONST COMPLIANCE**: Use only exact values specified in enums or const\n- **BUSINESS RULE COMPLIANCE**: Follow all business logic mentioned in descriptions\n\n**Step 5: Value Construction**\n\n- **DESCRIPTION-DRIVEN VALUES**: Use the property description as your primary guide for value creation\n- **REALISTIC BUSINESS VALUES**: Create values that make sense in the real business context described\n- **EXAMPLE COMPLIANCE**: If description provides examples, follow their patterns\n- **CONTEXTUAL APPROPRIATENESS**: Ensure the value fits the broader business scenario\n\n**Mandatory Property Analysis Examples**:\n\n```json\n// Schema Property:\n{\n "user": {\n "type": "object",\n "properties": {\n "profile": {\n "type": "object",\n "properties": {\n "email": {\n "type": "string",\n "format": "email",\n "description": "User\'s primary email address for account communications"\n }\n }\n }\n }\n }\n}\n\n// CORRECT Analysis Process:\n// 1. Schema path: user.profile.email (NOT user.email or just email)\n// 2. Type: string with email format\n// 3. Description analysis: "primary email", "account communications"\n// 4. Placement verification: Must be inside user.profile object\n// 5. Value construction: "john.smith@email.com" at correct path\n```\n\n**🚨 NEVER SKIP THIS PROTOCOL**: For every property you touch, you must demonstrate that you\'ve read and understood both its type definition, description, AND its correct hierarchical placement within the schema structure.\n\n### 3. **Contextual Error Interpretation**\n\nFor each error in `IValidation.IFailure.errors`:\n\n**Beyond Surface Analysis**:\n\n- **What does this error reveal about the AI\'s misunderstanding?**\n- **What other properties might be affected by the same misunderstanding?**\n- **What business context was the AI missing?**\n- **What would a domain expert do differently?**\n- **🚨 Are there structural placement issues that caused or contributed to this error?**\n\n**Ripple Effect Analysis**:\n\n- **If this property is wrong, what other properties need adjustment?**\n- **Are there missing properties that should exist given this business context?**\n- **Are there redundant or conflicting properties that should be removed?**\n- **🚨 Are there properties misplaced in the object hierarchy that need repositioning?**\n\n**Structural Analysis**:\n\n- **Are properties placed at the wrong hierarchical level?**\n- **Are sibling properties incorrectly grouped?**\n- **Are parent-child relationships properly maintained?**\n- **Do array-level vs item-level properties have correct placement?**\n\n### 4. **Aggressive Correction Strategies**\n\n**Complete Object Reconstruction**:\nWhen errors indicate fundamental misunderstanding, rebuild entire object sections:\n\n```json\n// Example: If user creation fails due to missing email\n// DON\'T just add email - reconstruct entire user profile structure\n{\n "originalErrors": [\n { "path": "input.email", "expected": "string", "value": undefined }\n ],\n "structuralAnalysis": {\n "placementError": "Email was expected at input.user.profile.email, not input.email",\n "correctionScope": "Complete user object reconstruction required"\n },\n "aggressiveCorrection": {\n "user": {\n "username": "john.doe",\n "profile": {\n "email": "john.doe@company.com", // Correct placement\n "firstName": "John",\n "lastName": "Doe"\n },\n "settings": {\n "notifications": true,\n "theme": "light"\n }\n }\n }\n}\n```\n\n**Business Logic Inference**:\nUse schema descriptions to infer missing business logic:\n\n```json\n// Example: Product creation with price error\n// Schema description: "Product for e-commerce platform with inventory tracking"\n{\n "originalErrors": [\n { "path": "input.price", "expected": "number", "value": "free" }\n ],\n "structuralAnalysis": {\n "placementError": "Price should be in product.pricing.amount, not top-level",\n "correctionScope": "E-commerce product structure reconstruction"\n },\n "aggressiveCorrection": {\n "product": {\n "name": "Premium Widget",\n "pricing": {\n "amount": 29.99, // Correct placement\n "currency": "USD"\n },\n "inventory": {\n "stock": 100,\n "lowStockThreshold": 10,\n "trackInventory": true\n }\n },\n "categories": ["electronics", "accessories"],\n "shipping": {\n "weight": 0.5,\n "dimensions": { "length": 10, "width": 5, "height": 2 }\n }\n }\n}\n```\n\n**Cross-Property Validation**:\nEnsure all properties work together harmoniously:\n\n```json\n// Example: Event scheduling with time zone issues\n{\n "originalErrors": [\n { "path": "input.startTime", "expected": "string & Format<\'date-time\'>", "value": "tomorrow" }\n ],\n "structuralAnalysis": {\n "placementError": "Time properties scattered across wrong objects",\n "correctionScope": "Event timing structure consolidation"\n },\n "aggressiveCorrection": {\n "event": {\n "details": {\n "title": "Team Meeting",\n "description": "Weekly sync"\n },\n "schedule": {\n "startTime": "2024-12-15T09:00:00Z", // Correct placement\n "endTime": "2024-12-15T17:00:00Z",\n "timeZone": "America/New_York",\n "duration": 480\n },\n "settings": {\n "recurrence": null,\n "reminders": [\n { "type": "email", "minutesBefore": 60 },\n { "type": "push", "minutesBefore": 15 }\n ]\n }\n }\n }\n}\n```\n\n## Advanced Correction Techniques\n\n### **Schema Description-Driven Corrections**\n\n**Extract Maximum Context from Descriptions**:\n\n```typescript\n// If schema description says:\n// "User account creation for enterprise SaaS platform with role-based access control"\n\n// And you get error:\n{"path": "input.role", "expected": "string", "value": null}\n\n// AGGRESSIVE correction should infer:\n{\n "user": { // Proper object structure\n "account": {\n "role": "user", // Fix the immediate error\n "permissions": ["read"], // Add based on "role-based access control"\n "organization": "enterprise-corp" // Add based on "enterprise SaaS"\n },\n "subscription": { // Add based on "SaaS platform"\n "tier": "basic",\n "features": ["core-access"],\n "billing": "monthly"\n },\n "security": { // Add based on enterprise context\n "mfaEnabled": false,\n "lastLogin": null,\n "loginAttempts": 0\n }\n }\n}\n```\n\n### **Pattern Recognition and Application**\n\n**Identify Common Business Patterns**:\n\n- **User Management**: username, email, profile, preferences, security settings\n- **E-commerce**: product, price, inventory, shipping, categories\n- **Content Management**: title, content, metadata, publishing, versioning\n- **Financial**: amount, currency, account, transaction, compliance\n\n**Apply Domain-Specific Corrections**:\nWhen errors indicate specific business domains, apply comprehensive domain-specific corrections with proper hierarchical structure.\n\n### **Validation Error Clustering**\n\n**Group Related Errors**:\nIf multiple errors suggest the same underlying misunderstanding, fix them as a cohesive group with expanded context and correct placement.\n\n**Root Cause Analysis**:\n\n- **Type Confusion Clusters**: Multiple type errors → Rebuild entire data structure\n- **Missing Context Clusters**: Multiple missing properties → Add complete business context\n- **Format Violation Clusters**: Multiple format errors → Review and fix entire data formatting approach\n- **🚨 Structural Misplacement Clusters**: Multiple placement errors → Reconstruct object hierarchy\n\n## Critical Correction Rules\n\n### **🚨 Priority 1: Complete Schema Compliance**\n\n- **ZERO TOLERANCE**: Every aspect of the schema must be satisfied\n- **🚨 CRITICAL: ONLY USE SCHEMA-DEFINED PROPERTIES**: Never add properties that don\'t exist in the schema\n- **PROPERTY VERIFICATION MANDATORY**: For every property you add or modify, verify it exists in the schema\'s "properties" definition\n- **🚨 PLACEMENT VERIFICATION MANDATORY**: For every property, verify it\'s placed at the correct hierarchical location according to the schema\n- **PROACTIVE ADDITION**: Add missing required properties even if not explicitly errored\n- **CONTEXTUAL ENHANCEMENT**: Improve properties beyond minimum requirements when schema descriptions suggest it\n\n**⚠️ FATAL ERROR PREVENTION: Avoid the "Logical Property" Trap**\n\nThe most common correction failure occurs when agents:\n1. ❌ See incomplete data and think "I should add logical properties"\n2. ❌ Add properties that "make sense" but don\'t exist in schema\n3. ❌ Create seemingly complete objects that WILL fail validation\n4. ❌ Waste cycles by repeatedly adding non-existent properties\n\n**⚠️ STRUCTURAL ERROR PREVENTION: Avoid the "Placement Assumption" Trap**\n\nAnother critical failure occurs when agents:\n1. ❌ Assume property placement without checking schema hierarchy\n2. ❌ Move properties to "logical" locations that don\'t match schema\n3. ❌ Create flat structures when nested structures are required\n4. ❌ Nest properties incorrectly based on intuition rather than schema\n\n**Example of Fatal Correction Pattern:**\n```json\n// Original error: { "path": "input.user.profile.name", "expected": "string", "value": null }\n// Schema requires: input.user.profile.name (nested structure)\n\n// ❌ FATAL MISTAKE - Wrong placement:\n{\n "name": "John Doe", // ❌ Wrong level - should be nested\n "user": {\n "email": "john@email.com" // ❌ Wrong placement - email should be in profile\n }\n}\n\n// ✅ CORRECT APPROACH - Proper hierarchy:\n{\n "user": {\n "profile": {\n "name": "John Doe", // ✅ Correct placement\n "email": "john@email.com" // ✅ Correct placement\n }\n }\n}\n```\n\n### **🚨 Priority 2: Structural Integrity**\n\n- **HIERARCHICAL ACCURACY**: Ensure all properties are placed at their correct schema-defined locations\n- **PARENT-CHILD RELATIONSHIPS**: Maintain proper object containment and nesting\n- **SIBLING GROUPING**: Group related properties according to schema structure\n- **ARRAY BOUNDARY RESPECT**: Distinguish between array-level and item-level properties\n\n### **🚨 Priority 3: Business Logic Integrity**\n\n- **SEMANTIC CONSISTENCY**: Ensure all properties make business sense together\n- **DOMAIN EXPERTISE**: Apply domain knowledge extracted from schema descriptions\n- **REALISTIC VALUES**: Use values that reflect real-world business scenarios\n\n### **🚨 Priority 4: Aggressive Problem-Solving**\n\n- **THINK LIKE A DOMAIN EXPERT**: What would someone who deeply understands this business domain do?\n- **ANTICIPATE DEPENDENCIES**: Fix not just errors, but potential future validation issues\n- **COMPREHENSIVE RECONSTRUCTION**: When in doubt, rebuild more rather than less\n\n## Input/Output Pattern\n\n**Input You\'ll Receive**:\n\n```json\n{\n "originalFunctionCall": {\n "functionName": "createBusinessAccount",\n "arguments": { /* failed arguments */ }\n },\n "validationFailure": {\n "success": false,\n "data": { /* the failed data */ },\n "errors": [\n {\n "path": "input.company.details.name",\n "expected": "string & MinLength<2>",\n "value": ""\n }\n ]\n },\n "schema": {\n "type": "object",\n "description": "Create business account for enterprise CRM platform with multi-tenant architecture",\n "properties": {\n "company": {\n "type": "object",\n "properties": {\n "details": {\n "type": "object",\n "properties": {\n "name": {\n "type": "string",\n "minLength": 2,\n "description": "Legal business name for invoice generation and compliance"\n }\n }\n }\n }\n }\n // ... complete schema\n }\n }\n}\n```\n\n**Output You Must Provide**:\n\n```json\n{\n "correctedArguments": {\n "company": {\n "details": {\n "name": "Acme Corporation", // Correct placement and value\n "industry": "Technology"\n },\n "billing": {\n "method": "invoice",\n "cycle": "monthly",\n "contact": "billing@acme.com"\n }\n },\n "tenant": {\n "subdomain": "acme",\n "region": "us-east-1"\n }\n },\n "correctionSummary": [\n {\n "path": "input.company.details.name",\n "originalValue": "",\n "correctedValue": "Acme Corporation",\n "reason": "Fixed minimum length violation",\n "scope": "direct-error",\n "placementStatus": "correct-placement"\n },\n {\n "path": "input.company.details.industry",\n "originalValue": "<missing>",\n "correctedValue": "Technology",\n "reason": "Added based on business account context",\n "scope": "aggressive-enhancement",\n "placementStatus": "proper-hierarchy"\n },\n {\n "path": "input.company.billing",\n "originalValue": "<missing>",\n "correctedValue": "{ billing object }",\n "reason": "Added complete billing structure based on schema description",\n "scope": "schema-driven-expansion",\n "placementStatus": "correct-nesting"\n }\n ],\n "structuralAnalysis": {\n "placementErrors": [],\n "hierarchyCorrections": [\n "Ensured company.details.name proper nesting",\n "Added billing as sibling to details under company"\n ],\n "structuralIntegrity": "verified"\n },\n "correctionStrategy": "aggressive-domain-reconstruction",\n "confidence": "high"\n}\n```\n\n## Quality Assurance for Aggressive Corrections\n\n**Before Returning Corrected Arguments**:\n\n1. ✅ Every error from the errors array has been addressed\n2. ✅ **🚨 SCHEMA PROPERTY VERIFICATION**: Every property in the corrected arguments EXISTS in the schema definition\n3. ✅ **🚨 PLACEMENT VERIFICATION**: Every property is placed at the correct hierarchical location according to the schema\n4. ✅ **PROPERTY-BY-PROPERTY VERIFICATION**: Each property has been analyzed according to the mandatory protocol\n5. ✅ **DESCRIPTION COMPLIANCE CHECK**: Every property value reflects accurate understanding of its description\n6. ✅ **NO EXTRA PROPERTIES CHECK**: Confirm no properties were added that aren\'t in the schema\n7. ✅ **EXPANSION CHECK**: Additional properties have been added based on schema analysis (but only if they exist in schema)\n8. ✅ **HIERARCHY VERIFICATION**: All object nesting and containment relationships are schema-compliant\n9. ✅ **SIBLING GROUPING CHECK**: Related properties are correctly grouped according to schema structure\n10. ✅ **BUSINESS LOGIC CHECK**: All properties work together in realistic business context\n11. ✅ **DOMAIN CONSISTENCY CHECK**: Values reflect appropriate domain expertise\n12. ✅ **SCHEMA DESCRIPTION COMPLIANCE**: Corrections align with all schema descriptions\n13. ✅ **FUTURE-PROOFING CHECK**: The corrected arguments would handle related use cases\n14. ✅ **SEMANTIC INTEGRITY CHECK**: The entire argument structure tells a coherent business story\n\n**🚨 MANDATORY PRE-SUBMISSION VERIFICATION:**\n\nBefore submitting any corrected arguments, perform this FINAL CHECK:\n\n```typescript\n// For every property in your corrected arguments:\nfor (const propertyName in correctedArguments) {\n // Ask yourself: "Does this property exist in the provided schema?"\n // If the answer is "I think so" or "It should" - STOP and verify explicitly\n \n // Ask yourself: "Is this property placed at the correct hierarchical level?"\n // If the answer is "I think so" or "It should be" - STOP and verify schema structure\n \n // Only continue if you can point to:\n // 1. The exact property definition in the schema\n // 2. The exact hierarchical path where it should be placed\n}\n```\n\n**⚠️ RED FLAGS that indicate you\'re about to make critical errors:**\n\n**"Logical Property" Error Red Flags:**\n- Thinking "This property should exist for completeness"\n- Adding properties because "they make business sense"\n- Assuming properties exist without explicitly checking the schema\n- Creating "standard" object structures without schema verification\n- Adding properties to "improve" the data beyond what\'s schema-defined\n\n**"Placement Assumption" Error Red Flags:**\n- Thinking "This property logically belongs here"\n- Moving properties to "intuitive" locations without schema verification\n- Flattening nested structures because they "seem complex"\n- Nesting properties based on naming patterns rather than schema structure\n- Grouping properties by semantic similarity rather than schema definition\n\n## Success Criteria\n\nA successful aggressive correction must:\n\n1. ✅ Address every single error in the `IValidation.IFailure.errors` array\n2. ✅ **🚨 CONTAIN ONLY SCHEMA-DEFINED PROPERTIES**: Every property must exist in the provided schema\n3. ✅ **🚨 MAINTAIN CORRECT HIERARCHICAL PLACEMENT**: Every property must be placed at its schema-defined location\n4. ✅ **DEMONSTRATE PROPERTY-LEVEL ANALYSIS**: Show that every property was analyzed according to the mandatory protocol\n5. ✅ **DEMONSTRATE PLACEMENT VERIFICATION**: Show that every property\'s hierarchical location was verified against the schema\n6. ✅ **DESCRIPTION-DRIVEN VALUE CREATION**: Every property value must reflect understanding of its schema description\n7. ✅ **EXPAND ONLY WITHIN SCHEMA BOUNDS**: Enhance the function call based on schema analysis, but only using properties that exist\n8. ✅ **DEMONSTRATE DOMAIN EXPERTISE**: Show deep understanding of the business context within schema constraints\n9. ✅ Use exact enum/const values without approximation\n10. ✅ Generate realistic, contextually rich values throughout the entire structure\n11. ✅ **ACHIEVE HOLISTIC COMPLIANCE**: Ensure the entire corrected structure represents best-practice usage of the function\n12. ✅ **MAINTAIN STRUCTURAL INTEGRITY**: Ensure proper object hierarchy, nesting, and containment relationships\n13. ✅ Provide comprehensive explanation of both direct fixes and aggressive enhancements\n14. ✅ **PASS SCHEMA VALIDATION**: The corrected arguments must be guaranteed to pass JSON schema validation\n\nRemember: You are not just an error fixer - you are an **aggressive correction specialist** who transforms mediocre function calls into exemplary ones. Think like a domain expert who deeply understands both the technical schema requirements and the business context. Fix everything that\'s wrong, improve everything that could be better, and ensure every property is placed exactly where the schema defines it should be.\n\n**🚨 CRITICAL REMINDERS:**\n1. **Schema compliance is more important than business logic completeness** - Never add properties that don\'t exist in the schema, no matter how logical they seem\n2. **Correct placement is mandatory** - Every property must be placed at its exact schema-defined hierarchical location\n3. **Structural verification is non-negotiable** - Always verify object nesting and containment relationships match the schema\n4. **When in doubt, check the schema** - Never assume property existence or placement; always verify against the provided schema definition',
|
|
770
783
|
VALIDATE_REPEATED: "## Recursive Error Pattern Analysis\n\n### Historical Error Input\n\nYou have been provided with `IValidation.IError[][]` containing **previous historical error arrays** from multiple failed correction attempts. Each inner array contains the complete error list from one **previous** correction attempt.\n\n**CRITICAL**: Compare the current `IValidation.IFailure.errors` with this historical data to identify recurring patterns.\n\n```json\n${{HISTORICAL_ERRORS}}\n```\n\n### Critical Response Protocol\n\n**When error paths recur across current + historical attempts:**\n\n🚨 **NEVER apply the same correction strategy that failed before**\n\n🚨 **Think fundamentally deeper - analyze root architectural causes:**\n\n- Why was the wrong approach chosen repeatedly?\n- What business context was misunderstood?\n- Which schema requirements were overlooked?\n- How should the entire structure be redesigned from first principles?\n\n**For recurring errors, perform complete reconstruction instead of incremental fixes:**\n\n- Analyze the complete business scenario requirements\n- Examine the full schema interface definition in detail\n- Redesign the entire AST structure using proper architectural patterns\n- Enhance with comprehensive business context and realistic data\n\n**Success means: the error path never appears in future correction cycles.**"
|
|
771
784
|
};
|
|
772
785
|
|
|
@@ -1075,11 +1088,7 @@ function cancelFunctionFromContext(ctx, reference) {
|
|
|
1075
1088
|
}
|
|
1076
1089
|
|
|
1077
1090
|
async function call(ctx, operations) {
|
|
1078
|
-
|
|
1079
|
-
}
|
|
1080
|
-
|
|
1081
|
-
async function station(ctx, operations, validateEvents) {
|
|
1082
|
-
const completionStream = await ctx.request("call", {
|
|
1091
|
+
const stream = await ctx.request("call", {
|
|
1083
1092
|
messages: [ {
|
|
1084
1093
|
role: "system",
|
|
1085
1094
|
content: AgenticaDefaultPrompt.write(ctx.config)
|
|
@@ -1106,34 +1115,22 @@ async function station(ctx, operations, validateEvents) {
|
|
|
1106
1115
|
}))),
|
|
1107
1116
|
tool_choice: "auto"
|
|
1108
1117
|
});
|
|
1109
|
-
const chunks = await StreamUtil.readAll(
|
|
1118
|
+
const chunks = await StreamUtil.readAll(stream);
|
|
1110
1119
|
const completion = ChatGptCompletionMessageUtil.merge(chunks);
|
|
1111
1120
|
const executes = [];
|
|
1112
1121
|
for (const choice of completion.choices) {
|
|
1113
1122
|
for (const tc of choice.message.tool_calls ?? []) {
|
|
1114
1123
|
if (tc.type === "function") {
|
|
1115
|
-
const operation =
|
|
1124
|
+
const operation = operations.find((s => s.name === tc.function.name));
|
|
1116
1125
|
if (operation === undefined) {
|
|
1117
1126
|
continue;
|
|
1118
1127
|
}
|
|
1119
|
-
const
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
arguments: JSON.parse(tc.function.arguments)
|
|
1123
|
-
});
|
|
1124
|
-
if (call.operation.protocol === "http") {
|
|
1125
|
-
fillHttpArguments({
|
|
1126
|
-
operation: call.operation,
|
|
1127
|
-
arguments: call.arguments
|
|
1128
|
-
});
|
|
1129
|
-
}
|
|
1130
|
-
ctx.dispatch(call);
|
|
1131
|
-
const exec = await propagate(ctx, call, 0, validateEvents);
|
|
1132
|
-
ctx.dispatch(exec);
|
|
1133
|
-
executes.push(exec);
|
|
1128
|
+
const event = await predicate(ctx, operation, tc, [], ctx.config?.retry ?? AgenticaConstant.RETRY);
|
|
1129
|
+
ctx.dispatch(event);
|
|
1130
|
+
executes.push(event);
|
|
1134
1131
|
if (isAgenticaContext(ctx)) {
|
|
1135
1132
|
cancelFunctionFromContext(ctx, {
|
|
1136
|
-
name:
|
|
1133
|
+
name: event.operation.name,
|
|
1137
1134
|
reason: "completed"
|
|
1138
1135
|
});
|
|
1139
1136
|
}
|
|
@@ -1141,7 +1138,7 @@ async function station(ctx, operations, validateEvents) {
|
|
|
1141
1138
|
}
|
|
1142
1139
|
if (choice.message.role === "assistant" && choice.message.content != null && choice.message.content.length !== 0) {
|
|
1143
1140
|
const text = choice.message.content;
|
|
1144
|
-
const event =
|
|
1141
|
+
const event = createAssistantMessageEvent({
|
|
1145
1142
|
get: () => text,
|
|
1146
1143
|
done: () => true,
|
|
1147
1144
|
stream: toAsyncGenerator(text),
|
|
@@ -1150,268 +1147,217 @@ async function station(ctx, operations, validateEvents) {
|
|
|
1150
1147
|
ctx.dispatch(event);
|
|
1151
1148
|
}
|
|
1152
1149
|
}
|
|
1150
|
+
console.error("call", executes);
|
|
1153
1151
|
return executes;
|
|
1154
1152
|
}
|
|
1155
1153
|
|
|
1156
|
-
async function
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
ctx,
|
|
1162
|
-
operation: call.operation,
|
|
1163
|
-
call,
|
|
1164
|
-
retry,
|
|
1165
|
-
validateEvents
|
|
1166
|
-
});
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
|
-
case "class":
|
|
1170
|
-
{
|
|
1171
|
-
return propagateClass({
|
|
1172
|
-
ctx,
|
|
1173
|
-
operation: call.operation,
|
|
1174
|
-
call,
|
|
1175
|
-
retry,
|
|
1176
|
-
validateEvents
|
|
1177
|
-
});
|
|
1178
|
-
}
|
|
1179
|
-
|
|
1180
|
-
case "mcp":
|
|
1181
|
-
{
|
|
1182
|
-
return propagateMcp({
|
|
1183
|
-
ctx,
|
|
1184
|
-
operation: call.operation,
|
|
1185
|
-
call,
|
|
1186
|
-
retry,
|
|
1187
|
-
validateEvents
|
|
1188
|
-
});
|
|
1189
|
-
}
|
|
1190
|
-
|
|
1191
|
-
default:
|
|
1192
|
-
{
|
|
1193
|
-
call.operation;
|
|
1194
|
-
throw new Error("Unsupported protocol");
|
|
1195
|
-
}
|
|
1154
|
+
async function predicate(ctx, operation, toolCall, previousValidationErrors, life) {
|
|
1155
|
+
const call = parseArguments(operation, toolCall);
|
|
1156
|
+
ctx.dispatch(call);
|
|
1157
|
+
if (call.type === "jsonParseError") {
|
|
1158
|
+
return correctJsonError(ctx, call, previousValidationErrors, life - 1);
|
|
1196
1159
|
}
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
async function propagateHttp(props) {
|
|
1200
|
-
const check = props.operation.function.validate(props.call.arguments);
|
|
1160
|
+
const check = operation.function.validate(call.arguments);
|
|
1201
1161
|
if (check.success === false) {
|
|
1202
|
-
const
|
|
1203
|
-
id:
|
|
1204
|
-
operation
|
|
1162
|
+
const event = createValidateEvent({
|
|
1163
|
+
id: toolCall.id,
|
|
1164
|
+
operation,
|
|
1205
1165
|
result: check
|
|
1206
1166
|
});
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
if (props.retry++ < (props.ctx.config?.retry ?? AgenticaConstant.RETRY)) {
|
|
1210
|
-
const trial = await correct(props.ctx, props.call, props.retry, check.errors, props.validateEvents);
|
|
1211
|
-
if (trial !== null) {
|
|
1212
|
-
return trial;
|
|
1213
|
-
}
|
|
1214
|
-
}
|
|
1167
|
+
ctx.dispatch(event);
|
|
1168
|
+
return correctTypeError(ctx, call, event, [ ...previousValidationErrors, event ], life - 1);
|
|
1215
1169
|
}
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
operation: props.call.operation,
|
|
1227
|
-
arguments: props.call.arguments,
|
|
1170
|
+
const execute = await executeFunction(call, operation);
|
|
1171
|
+
ctx.dispatch(execute);
|
|
1172
|
+
return execute;
|
|
1173
|
+
}
|
|
1174
|
+
|
|
1175
|
+
async function correctTypeError(ctx, callEvent, validateEvent, previousValidationErrors, life) {
|
|
1176
|
+
return correctError(ctx, {
|
|
1177
|
+
giveUp: () => createExecuteEvent({
|
|
1178
|
+
operation: callEvent.operation,
|
|
1179
|
+
arguments: callEvent.arguments,
|
|
1228
1180
|
value: {
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
...error,
|
|
1233
|
-
name: error.name,
|
|
1234
|
-
message: error.message
|
|
1235
|
-
} : error
|
|
1181
|
+
name: "ValidationError",
|
|
1182
|
+
message: `Invalid arguments. The validation failed after ${AgenticaConstant.RETRY} retries.`,
|
|
1183
|
+
errors: validateEvent.result.errors
|
|
1236
1184
|
}
|
|
1237
|
-
})
|
|
1238
|
-
|
|
1185
|
+
}),
|
|
1186
|
+
operation: callEvent.operation,
|
|
1187
|
+
messageArguments: JSON.stringify(callEvent.arguments),
|
|
1188
|
+
messageToolParam: {
|
|
1189
|
+
role: "tool",
|
|
1190
|
+
content: JSON.stringify(validateEvent.result.errors),
|
|
1191
|
+
tool_call_id: callEvent.id
|
|
1192
|
+
},
|
|
1193
|
+
systemPrompt: ctx.config?.systemPrompt?.validate?.(previousValidationErrors.slice(0, -1)) ?? [ AgenticaSystemPrompt.VALIDATE, ...previousValidationErrors.length > 1 ? [ "", AgenticaSystemPrompt.VALIDATE_REPEATED.replace("${{HISTORICAL_ERRORS}}", JSON.stringify(previousValidationErrors.slice(0, -1).map((e => e.result.errors)))) ] : [] ].join("\n"),
|
|
1194
|
+
life,
|
|
1195
|
+
previousValidationErrors
|
|
1196
|
+
});
|
|
1239
1197
|
}
|
|
1240
1198
|
|
|
1241
|
-
async function
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
operation: props.call.operation,
|
|
1247
|
-
result: check
|
|
1248
|
-
});
|
|
1249
|
-
props.ctx.dispatch(ve);
|
|
1250
|
-
props.validateEvents.push(ve);
|
|
1251
|
-
return (props.retry++ < (props.ctx.config?.retry ?? AgenticaConstant.RETRY) ? await correct(props.ctx, props.call, props.retry, check.errors, props.validateEvents) : null) ?? createExecuteEvent({
|
|
1252
|
-
operation: props.call.operation,
|
|
1253
|
-
arguments: props.call.arguments,
|
|
1199
|
+
async function correctJsonError(ctx, parseErrorEvent, previousValidationErrors, life) {
|
|
1200
|
+
return correctError(ctx, {
|
|
1201
|
+
giveUp: () => createExecuteEvent({
|
|
1202
|
+
operation: parseErrorEvent.operation,
|
|
1203
|
+
arguments: {},
|
|
1254
1204
|
value: {
|
|
1255
|
-
name: "
|
|
1256
|
-
message:
|
|
1257
|
-
|
|
1205
|
+
name: "JsonParseError",
|
|
1206
|
+
message: `Invalid JSON format. The parsing failed after ${AgenticaConstant.RETRY} retries.`,
|
|
1207
|
+
arguments: parseErrorEvent.arguments,
|
|
1208
|
+
errorMessage: parseErrorEvent.errorMessage
|
|
1258
1209
|
}
|
|
1259
|
-
})
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
});
|
|
1268
|
-
} catch (error) {
|
|
1269
|
-
return createExecuteEvent({
|
|
1270
|
-
operation: props.call.operation,
|
|
1271
|
-
arguments: props.call.arguments,
|
|
1272
|
-
value: error instanceof Error ? {
|
|
1273
|
-
...error,
|
|
1274
|
-
name: error.name,
|
|
1275
|
-
message: error.message
|
|
1276
|
-
} : error
|
|
1277
|
-
});
|
|
1278
|
-
}
|
|
1210
|
+
}),
|
|
1211
|
+
operation: parseErrorEvent.operation,
|
|
1212
|
+
messageArguments: parseErrorEvent.arguments,
|
|
1213
|
+
messageToolParam: null,
|
|
1214
|
+
systemPrompt: ctx.config?.systemPrompt?.jsonParseError?.(parseErrorEvent) ?? AgenticaSystemPrompt.JSON_PARSE_ERROR.replace("${{ERROR_MESSAGE}}", parseErrorEvent.errorMessage),
|
|
1215
|
+
life,
|
|
1216
|
+
previousValidationErrors
|
|
1217
|
+
});
|
|
1279
1218
|
}
|
|
1280
1219
|
|
|
1281
|
-
|
|
1220
|
+
function parseArguments(operation, toolCall) {
|
|
1282
1221
|
try {
|
|
1283
|
-
const
|
|
1284
|
-
return
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1222
|
+
const data = JSON.parse(toolCall.function.arguments);
|
|
1223
|
+
return createCallEvent({
|
|
1224
|
+
id: toolCall.id,
|
|
1225
|
+
operation,
|
|
1226
|
+
arguments: data
|
|
1288
1227
|
});
|
|
1289
1228
|
} catch (error) {
|
|
1290
|
-
return
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
name: error.name,
|
|
1296
|
-
message: error.message
|
|
1297
|
-
} : error
|
|
1229
|
+
return createJsonParseErrorEvent({
|
|
1230
|
+
id: toolCall.id,
|
|
1231
|
+
operation,
|
|
1232
|
+
arguments: toolCall.function.arguments,
|
|
1233
|
+
errorMessage: error instanceof Error ? error.message : String(error)
|
|
1298
1234
|
});
|
|
1299
1235
|
}
|
|
1300
1236
|
}
|
|
1301
1237
|
|
|
1302
|
-
async function
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
application: operation.controller.application,
|
|
1306
|
-
function: operation.function
|
|
1307
|
-
};
|
|
1308
|
-
return operation.controller.execute !== undefined ? operation.controller.execute({
|
|
1309
|
-
...controllerBaseArguments,
|
|
1310
|
-
arguments: operationArguments
|
|
1311
|
-
}) : HttpLlm.propagate({
|
|
1312
|
-
...controllerBaseArguments,
|
|
1313
|
-
input: operationArguments
|
|
1314
|
-
});
|
|
1315
|
-
}
|
|
1316
|
-
|
|
1317
|
-
async function executeClassOperation(operation, operationArguments) {
|
|
1318
|
-
const execute = operation.controller.execute;
|
|
1319
|
-
if (typeof execute === "function") {
|
|
1320
|
-
return await execute({
|
|
1321
|
-
application: operation.controller.application,
|
|
1322
|
-
function: operation.function,
|
|
1323
|
-
arguments: operationArguments
|
|
1324
|
-
});
|
|
1238
|
+
async function correctError(ctx, props) {
|
|
1239
|
+
if (props.life <= 0) {
|
|
1240
|
+
return props.giveUp();
|
|
1325
1241
|
}
|
|
1326
|
-
|
|
1327
|
-
}
|
|
1328
|
-
|
|
1329
|
-
async function executeMcpOperation(operation, operationArguments) {
|
|
1330
|
-
return operation.controller.client.callTool({
|
|
1331
|
-
method: operation.function.name,
|
|
1332
|
-
name: operation.function.name,
|
|
1333
|
-
arguments: operationArguments
|
|
1334
|
-
}).then((v => v.content));
|
|
1335
|
-
}
|
|
1336
|
-
|
|
1337
|
-
async function correct(ctx, call, retry, error, validateEvents) {
|
|
1338
|
-
const completionStream = await ctx.request("call", {
|
|
1242
|
+
const stream = await ctx.request("call", {
|
|
1339
1243
|
messages: [ {
|
|
1340
1244
|
role: "system",
|
|
1341
1245
|
content: AgenticaDefaultPrompt.write(ctx.config)
|
|
1342
1246
|
}, ...ctx.histories.map(decodeHistory).flat(), {
|
|
1343
1247
|
role: "user",
|
|
1344
1248
|
content: ctx.prompt.contents.map(decodeUserMessageContent)
|
|
1345
|
-
},
|
|
1249
|
+
}, {
|
|
1346
1250
|
role: "system",
|
|
1347
1251
|
content: ctx.config?.systemPrompt?.execute?.(ctx.histories) ?? AgenticaSystemPrompt.EXECUTE
|
|
1348
|
-
}
|
|
1252
|
+
}, {
|
|
1349
1253
|
role: "assistant",
|
|
1350
1254
|
tool_calls: [ {
|
|
1351
1255
|
type: "function",
|
|
1352
|
-
id:
|
|
1256
|
+
id: v4(),
|
|
1353
1257
|
function: {
|
|
1354
|
-
name:
|
|
1355
|
-
arguments:
|
|
1258
|
+
name: props.operation.name,
|
|
1259
|
+
arguments: props.messageArguments
|
|
1356
1260
|
}
|
|
1357
1261
|
} ]
|
|
1358
|
-
}, {
|
|
1359
|
-
role: "tool",
|
|
1360
|
-
content: typeof error === "string" ? error : JSON.stringify(error),
|
|
1361
|
-
tool_call_id: call.id
|
|
1362
|
-
}, {
|
|
1262
|
+
}, ...props.messageToolParam !== null ? [ props.messageToolParam ] : [], {
|
|
1363
1263
|
role: "system",
|
|
1364
|
-
content:
|
|
1264
|
+
content: props.systemPrompt
|
|
1365
1265
|
} ],
|
|
1366
1266
|
tools: [ {
|
|
1367
1267
|
type: "function",
|
|
1368
1268
|
function: {
|
|
1369
|
-
name:
|
|
1370
|
-
description:
|
|
1371
|
-
parameters: "separated" in
|
|
1269
|
+
name: props.operation.name,
|
|
1270
|
+
description: props.operation.function.description,
|
|
1271
|
+
parameters: "separated" in props.operation.function && props.operation.function.separated !== undefined ? props.operation.function.separated?.llm ?? {
|
|
1372
1272
|
$defs: {},
|
|
1373
1273
|
type: "object",
|
|
1374
1274
|
properties: {},
|
|
1375
1275
|
additionalProperties: false,
|
|
1376
1276
|
required: []
|
|
1377
|
-
} :
|
|
1277
|
+
} : props.operation.function.parameters
|
|
1378
1278
|
}
|
|
1379
1279
|
} ],
|
|
1380
1280
|
tool_choice: {
|
|
1381
1281
|
type: "function",
|
|
1382
1282
|
function: {
|
|
1383
|
-
name:
|
|
1283
|
+
name: props.operation.name
|
|
1384
1284
|
}
|
|
1385
1285
|
}
|
|
1386
1286
|
});
|
|
1387
|
-
const chunks = await StreamUtil.readAll(
|
|
1287
|
+
const chunks = await StreamUtil.readAll(stream);
|
|
1388
1288
|
const completion = ChatGptCompletionMessageUtil.merge(chunks);
|
|
1389
|
-
const toolCall =
|
|
1390
|
-
|
|
1391
|
-
return null;
|
|
1392
|
-
}
|
|
1393
|
-
return propagate(ctx, createCallEvent({
|
|
1394
|
-
id: toolCall.id,
|
|
1395
|
-
operation: call.operation,
|
|
1396
|
-
arguments: JSON.parse(toolCall.function.arguments)
|
|
1397
|
-
}), retry, validateEvents);
|
|
1289
|
+
const toolCall = completion.choices[0]?.message.tool_calls?.find((s => s.function.name === props.operation.name));
|
|
1290
|
+
return toolCall === undefined ? props.giveUp() : predicate(ctx, props.operation, toolCall, props.previousValidationErrors, props.life);
|
|
1398
1291
|
}
|
|
1399
1292
|
|
|
1400
|
-
function
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1293
|
+
async function executeFunction(call, operation) {
|
|
1294
|
+
try {
|
|
1295
|
+
const value = await (async () => {
|
|
1296
|
+
switch (operation.protocol) {
|
|
1297
|
+
case "class":
|
|
1298
|
+
return executeClassFunction(call, operation);
|
|
1299
|
+
|
|
1300
|
+
case "http":
|
|
1301
|
+
return executeHttpOperation(call, operation);
|
|
1302
|
+
|
|
1303
|
+
case "mcp":
|
|
1304
|
+
return executeMcpOperation(call, operation);
|
|
1305
|
+
|
|
1306
|
+
default:
|
|
1307
|
+
operation;
|
|
1308
|
+
throw new Error("Unknown protocol");
|
|
1309
|
+
}
|
|
1310
|
+
})();
|
|
1311
|
+
return createExecuteEvent({
|
|
1312
|
+
operation: call.operation,
|
|
1313
|
+
arguments: call.arguments,
|
|
1314
|
+
value
|
|
1315
|
+
});
|
|
1316
|
+
} catch (error) {
|
|
1317
|
+
return createExecuteEvent({
|
|
1318
|
+
operation: call.operation,
|
|
1319
|
+
arguments: call.arguments,
|
|
1320
|
+
value: error instanceof Error ? {
|
|
1321
|
+
...error,
|
|
1322
|
+
name: error.name,
|
|
1323
|
+
message: error.message
|
|
1324
|
+
} : error
|
|
1325
|
+
});
|
|
1410
1326
|
}
|
|
1411
1327
|
}
|
|
1412
1328
|
|
|
1413
|
-
function
|
|
1414
|
-
|
|
1329
|
+
async function executeClassFunction(call, operation) {
|
|
1330
|
+
const execute = operation.controller.execute;
|
|
1331
|
+
const value = typeof execute === "function" ? await execute({
|
|
1332
|
+
application: operation.controller.application,
|
|
1333
|
+
function: operation.function,
|
|
1334
|
+
arguments: call.arguments
|
|
1335
|
+
}) : await execute[operation.function.name](call.arguments);
|
|
1336
|
+
return value;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
async function executeHttpOperation(call, operation) {
|
|
1340
|
+
const execute = operation.controller.execute;
|
|
1341
|
+
const value = typeof execute === "function" ? await execute({
|
|
1342
|
+
connection: operation.controller.connection,
|
|
1343
|
+
application: operation.controller.application,
|
|
1344
|
+
function: operation.function,
|
|
1345
|
+
arguments: call.arguments
|
|
1346
|
+
}) : await HttpLlm.propagate({
|
|
1347
|
+
connection: operation.controller.connection,
|
|
1348
|
+
application: operation.controller.application,
|
|
1349
|
+
function: operation.function,
|
|
1350
|
+
input: call.arguments
|
|
1351
|
+
});
|
|
1352
|
+
return value;
|
|
1353
|
+
}
|
|
1354
|
+
|
|
1355
|
+
async function executeMcpOperation(call, operation) {
|
|
1356
|
+
return operation.controller.client.callTool({
|
|
1357
|
+
method: operation.function.name,
|
|
1358
|
+
name: operation.function.name,
|
|
1359
|
+
arguments: call.arguments
|
|
1360
|
+
}).then((v => v.content));
|
|
1415
1361
|
}
|
|
1416
1362
|
|
|
1417
1363
|
const CONTAINER$1 = {
|
|
@@ -1426,27 +1372,30 @@ const CONTAINER$1 = {
|
|
|
1426
1372
|
description: "List of target functions.",
|
|
1427
1373
|
type: "array",
|
|
1428
1374
|
items: {
|
|
1429
|
-
|
|
1430
|
-
type: "object",
|
|
1431
|
-
properties: {
|
|
1432
|
-
reason: {
|
|
1433
|
-
title: "The reason of the function selection",
|
|
1434
|
-
description: "The reason of the function selection.\n\nJust write the reason why you've determined to select this function.",
|
|
1435
|
-
type: "string"
|
|
1436
|
-
},
|
|
1437
|
-
name: {
|
|
1438
|
-
title: "Name of the target function to call",
|
|
1439
|
-
description: "Name of the target function to call.",
|
|
1440
|
-
type: "string"
|
|
1441
|
-
}
|
|
1442
|
-
},
|
|
1443
|
-
required: [ "reason", "name" ]
|
|
1375
|
+
$ref: "#/$defs/___IChatFunctionReference"
|
|
1444
1376
|
}
|
|
1445
1377
|
}
|
|
1446
1378
|
},
|
|
1447
1379
|
required: [ "functions" ],
|
|
1448
1380
|
additionalProperties: false,
|
|
1449
|
-
$defs: {
|
|
1381
|
+
$defs: {
|
|
1382
|
+
___IChatFunctionReference: {
|
|
1383
|
+
type: "object",
|
|
1384
|
+
properties: {
|
|
1385
|
+
reason: {
|
|
1386
|
+
title: "The reason of the function selection",
|
|
1387
|
+
description: "The reason of the function selection.\n\nJust write the reason why you've determined to select this function.",
|
|
1388
|
+
type: "string"
|
|
1389
|
+
},
|
|
1390
|
+
name: {
|
|
1391
|
+
title: "Name of the target function to call",
|
|
1392
|
+
description: "Name of the target function to call.",
|
|
1393
|
+
type: "string"
|
|
1394
|
+
}
|
|
1395
|
+
},
|
|
1396
|
+
required: [ "reason", "name" ]
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1450
1399
|
},
|
|
1451
1400
|
description: "Cancel a function from the candidate list to call.\n\nIf you A.I. agent has understood that the user wants to cancel\nsome candidate functions to call from the conversation, please cancel\nthem through this function.\n\nAlso, when you A.I. find a function that has been selected by the candidate\npooling, cancel the function by calling this function. For reference, the\ncandidate pooling means that user wants only one function to call, but you A.I.\nagent selects multiple candidate functions because the A.I. agent can't specify\nonly one thing due to lack of specificity or homogeneity of candidate functions.\n\nAdditionally, if you A.I. agent wants to cancel same function multiply, you can\ndo it by assigning the same function name multiply in the `functions` property.",
|
|
1452
1401
|
validate: (() => {
|
|
@@ -1910,6 +1859,138 @@ const FUNCTION = {
|
|
|
1910
1859
|
required: [],
|
|
1911
1860
|
additionalProperties: false,
|
|
1912
1861
|
$defs: {
|
|
1862
|
+
IHttpLlmFunctionchatgpt: {
|
|
1863
|
+
description: "LLM function calling schema from HTTP (OpenAPI) operation.\n\n`IHttpLlmFunction` is a data structure representing a function converted from\nthe {@link OpenApi.IOperation OpenAPI operation}, used for the LLM (Large\nLanguage Model) function calling. It's a typical RPC (Remote Procedure Call)\nstructure containing the function {@link name}, {@link parameters}, and\n{@link output return type}.\n\nIf you provide this `IHttpLlmFunction` data to the LLM provider like\n\"OpenAI\", the \"OpenAI\" will compose a function arguments by analyzing\nconversations with the user. With the LLM composed arguments, you can execute\nthe function through {@link LlmFetcher.execute} and get the result.\n\nFor reference, different between `IHttpLlmFunction` and its origin source\n{@link OpenApi.IOperation} is, `IHttpLlmFunction` has converted every type\nschema information from {@link OpenApi.IJsonSchema} to {@link ILlmSchemaV3} to\nescape {@link OpenApi.IJsonSchema.IReference reference types}, and downgrade\nthe version of the JSON schema to OpenAPI 3.0. It's because LLM function call\nfeature cannot understand both reference types and OpenAPI 3.1\nspecification.\n\nAdditionally, the properties' rule is:\n\n- `pathParameters`: Path parameters of {@link OpenApi.IOperation.parameters}\n- `query`: Query parameter of {@link IHttpMigrateRoute.query}\n- `body`: Body parameter of {@link IHttpMigrateRoute.body}\n\n```typescript\n{\n ...pathParameters,\n query,\n body,\n}\n```\n\n### Description of {@link parameters} property:\n\n> List of parameter types.\n> \n> If you've configured {@link IHttpLlmApplication.IOptions.keyword} as `true`,\n> number of {@link IHttpLlmFunction.parameters} are always 1 and the first\n> parameter's type is always {@link ILlmSchemaV3.IObject}. The properties'\n> rule is:\n> \n> - `pathParameters`: Path parameters of {@link IHttpMigrateRoute.parameters}\n> - `query`: Query parameter of {@link IHttpMigrateRoute.query}\n> - `body`: Body parameter of {@link IHttpMigrateRoute.body}\n> \n> ```typescript\n> {\n> ...pathParameters,\n> query,\n> body,\n> }\n> ```\n> \n> Otherwise, the parameters would be multiple, and the sequence of the\n> parameters are following below rules:\n> \n> ```typescript\n> [\n> ...pathParameters,\n> ...(query ? [query] : []),\n> ...(body ? [body] : []),\n> ];\n> ```\n\n### Description of {@link separated} property:\n\n> Collection of separated parameters.\n> \n> Filled only when {@link IHttpLlmApplication.IOptions.separate} is\n> configured.",
|
|
1864
|
+
type: "object",
|
|
1865
|
+
properties: {
|
|
1866
|
+
method: {
|
|
1867
|
+
title: "HTTP method of the endpoint",
|
|
1868
|
+
description: "HTTP method of the endpoint.",
|
|
1869
|
+
type: "string",
|
|
1870
|
+
enum: [ "get", "post", "patch", "put", "delete" ]
|
|
1871
|
+
},
|
|
1872
|
+
path: {
|
|
1873
|
+
title: "Path of the endpoint",
|
|
1874
|
+
description: "Path of the endpoint.",
|
|
1875
|
+
type: "string"
|
|
1876
|
+
},
|
|
1877
|
+
name: {
|
|
1878
|
+
title: "Representative name of the function",
|
|
1879
|
+
description: "Representative name of the function.\n\nThe `name` is a repsentative name identifying the function in the\n{@link IHttpLlmApplication}. The `name` value is just composed by joining\nthe {@link IHttpMigrateRoute.accessor} by underscore `_` character.\n\nHere is the composition rule of the {@link IHttpMigrateRoute.accessor}:\n\n> The `accessor` is composed with the following rules. At first, namespaces\n> are composed by static directory names in the {@link path}. Parametric\n> symbols represented by `:param` or `{param}` cannot be a part of the\n> namespace.\n\n> Instead, they would be a part of the function name. The function name is\n> composed with the {@link method HTTP method} and parametric symbols like\n> `getByParam` or `postByParam`. If there are multiple path parameters, they\n> would be concatenated by `And` like `getByParam1AndParam2`.\n\n> For refefence, if the {@link operation}'s {@link method} is `delete`, the\n> function name would be replaced to `erase` instead of `delete`. It is the\n> reason why the `delete` is a reserved keyword in many programming\n> languages.\n\n> - Example 1\n\n> - Path: `POST /shopping/sellers/sales`\n> - Accessor: `shopping.sellers.sales.post`\n> - Example 2\n\n> - Endpoint: `GET\n> /shoppings/sellers/sales/:saleId/reviews/:reviewId/comments/:id\n> - Accessor:\n> `shoppings.sellers.sales.reviews.getBySaleIdAndReviewIdAndCommentId`\n\n\n@maxLength 64",
|
|
1880
|
+
type: "string"
|
|
1881
|
+
},
|
|
1882
|
+
parameters: {
|
|
1883
|
+
title: "List of parameter types",
|
|
1884
|
+
$ref: "#/$defs/IChatGptSchema.IParameters"
|
|
1885
|
+
},
|
|
1886
|
+
separated: {
|
|
1887
|
+
title: "Collection of separated parameters",
|
|
1888
|
+
$ref: "#/$defs/IHttpLlmFunction.ISeparatedchatgpt"
|
|
1889
|
+
},
|
|
1890
|
+
output: {
|
|
1891
|
+
title: "Expected return type",
|
|
1892
|
+
description: "Expected return type.\n\nIf the target operation returns nothing (`void`), the `output` would be\n`undefined`.",
|
|
1893
|
+
anyOf: [ {
|
|
1894
|
+
$ref: "#/$defs/IChatGptSchema.IString"
|
|
1895
|
+
}, {
|
|
1896
|
+
$ref: "#/$defs/IChatGptSchema.INumber"
|
|
1897
|
+
}, {
|
|
1898
|
+
$ref: "#/$defs/IChatGptSchema.IInteger"
|
|
1899
|
+
}, {
|
|
1900
|
+
$ref: "#/$defs/IChatGptSchema.IBoolean"
|
|
1901
|
+
}, {
|
|
1902
|
+
$ref: "#/$defs/IChatGptSchema.IArray"
|
|
1903
|
+
}, {
|
|
1904
|
+
$ref: "#/$defs/IChatGptSchema.IObject"
|
|
1905
|
+
}, {
|
|
1906
|
+
$ref: "#/$defs/IChatGptSchema.IReference"
|
|
1907
|
+
}, {
|
|
1908
|
+
$ref: "#/$defs/IChatGptSchema.IAnyOf"
|
|
1909
|
+
}, {
|
|
1910
|
+
$ref: "#/$defs/IChatGptSchema.IUnknown"
|
|
1911
|
+
}, {
|
|
1912
|
+
$ref: "#/$defs/IChatGptSchema.INull"
|
|
1913
|
+
} ]
|
|
1914
|
+
},
|
|
1915
|
+
description: {
|
|
1916
|
+
title: "Description of the function",
|
|
1917
|
+
description: "Description of the function.\n\n`IHttpLlmFunction.description` is composed by below rule:\n\n1. Starts from the {@link OpenApi.IOperation.summary} paragraph.\n2. The next paragraphs are filled with the\n {@link OpenApi.IOperation.description}. By the way, if the first\n paragraph of {@link OpenApi.IOperation.description} is same with the\n {@link OpenApi.IOperation.summary}, it would not be duplicated.\n3. Parameters' descriptions are added with `@param` tag.\n4. {@link OpenApi.IOperation.security Security requirements} are added with\n `@security` tag.\n5. Tag names are added with `@tag` tag.\n6. If {@link OpenApi.IOperation.deprecated}, `@deprecated` tag is added.\n\nFor reference, the `description` is very important property to teach the\npurpose of the function to the LLM (Language Large Model), and LLM actually\ndetermines which function to call by the description.\n\nAlso, when the LLM conversates with the user, the `description` is used to\nexplain the function to the user. Therefore, the `description` property has\nthe highest priority, and you have to consider it.",
|
|
1918
|
+
type: "string"
|
|
1919
|
+
},
|
|
1920
|
+
deprecated: {
|
|
1921
|
+
title: "Whether the function is deprecated or not",
|
|
1922
|
+
description: "Whether the function is deprecated or not.\n\nIf the `deprecated` is `true`, the function is not recommended to use.\n\nLLM (Large Language Model) may not use the deprecated function.",
|
|
1923
|
+
type: "boolean"
|
|
1924
|
+
},
|
|
1925
|
+
tags: {
|
|
1926
|
+
title: "Category tags for the function",
|
|
1927
|
+
description: "Category tags for the function.\n\nSame with {@link OpenApi.IOperation.tags} indicating the category of the\nfunction.",
|
|
1928
|
+
type: "array",
|
|
1929
|
+
items: {
|
|
1930
|
+
type: "string"
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
},
|
|
1934
|
+
required: [ "method", "path", "name", "parameters" ]
|
|
1935
|
+
},
|
|
1936
|
+
"IChatGptSchema.IParameters": {
|
|
1937
|
+
description: "Type of the function parameters.\n\n`IChatGptSchema.IParameters` is a type defining a function's parameters as\na keyworded object type.\n\nIt also can be utilized for the structured output metadata.\n\n### Description of {@link $defs} property:\n\n> Collection of the named types.\n\n### Description of {@link properties} property:\n\n> Properties of the object.\n> \n> The `properties` means a list of key-value pairs of the object's regular\n> properties. The key is the name of the regular property, and the value is\n> the type schema info.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
1938
|
+
type: "object",
|
|
1939
|
+
properties: {
|
|
1940
|
+
$defs: {
|
|
1941
|
+
title: "Collection of the named types",
|
|
1942
|
+
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
1943
|
+
},
|
|
1944
|
+
additionalProperties: {
|
|
1945
|
+
title: "Additional properties' info",
|
|
1946
|
+
description: "Additional properties' info.\n\nThe `additionalProperties` means the type schema info of the additional\nproperties that are not listed in the {@link properties}.\n\nBy the way, it is not allowed in the parameters level.",
|
|
1947
|
+
type: "boolean",
|
|
1948
|
+
enum: [ false ]
|
|
1949
|
+
},
|
|
1950
|
+
type: {
|
|
1951
|
+
title: "Discriminator value of the type",
|
|
1952
|
+
description: "Discriminator value of the type.",
|
|
1953
|
+
type: "string",
|
|
1954
|
+
enum: [ "object" ]
|
|
1955
|
+
},
|
|
1956
|
+
properties: {
|
|
1957
|
+
title: "Properties of the object",
|
|
1958
|
+
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
1959
|
+
},
|
|
1960
|
+
required: {
|
|
1961
|
+
title: "List of key values of the required properties",
|
|
1962
|
+
description: 'List of key values of the required properties.\n\nThe `required` means a list of the key values of the required\n{@link properties}. If some property key is not listed in the `required`\nlist, it means that property is optional. Otherwise some property key\nexists in the `required` list, it means that the property must be\nfilled.\n\nBelow is an example of the {@link properties} and `required`.\n\n```typescript\ninterface SomeObject {\n id: string;\n email: string;\n name?: string;\n}\n```\n\nAs you can see, `id` and `email` {@link properties} are {@link required},\nso that they are listed in the `required` list.\n\n```json\n{\n "type": "object",\n "properties": {\n "id": { "type": "string" },\n "email": { "type": "string" },\n "name": { "type": "string" }\n },\n "required": ["id", "email"]\n}\n```',
|
|
1963
|
+
type: "array",
|
|
1964
|
+
items: {
|
|
1965
|
+
type: "string"
|
|
1966
|
+
}
|
|
1967
|
+
},
|
|
1968
|
+
title: {
|
|
1969
|
+
title: "Title of the schema",
|
|
1970
|
+
description: "Title of the schema.",
|
|
1971
|
+
type: "string"
|
|
1972
|
+
},
|
|
1973
|
+
description: {
|
|
1974
|
+
title: "Detailed description of the schema",
|
|
1975
|
+
description: "Detailed description of the schema.",
|
|
1976
|
+
type: "string"
|
|
1977
|
+
},
|
|
1978
|
+
deprecated: {
|
|
1979
|
+
title: "Whether the type is deprecated or not",
|
|
1980
|
+
description: "Whether the type is deprecated or not.",
|
|
1981
|
+
type: "boolean"
|
|
1982
|
+
},
|
|
1983
|
+
example: {
|
|
1984
|
+
title: "Example value",
|
|
1985
|
+
description: "Example value."
|
|
1986
|
+
},
|
|
1987
|
+
examples: {
|
|
1988
|
+
title: "List of example values as key-value pairs",
|
|
1989
|
+
$ref: "#/$defs/Recordstringany"
|
|
1990
|
+
}
|
|
1991
|
+
},
|
|
1992
|
+
required: [ "$defs", "additionalProperties", "type", "properties", "required" ]
|
|
1993
|
+
},
|
|
1913
1994
|
RecordstringIChatGptSchema: {
|
|
1914
1995
|
description: "Construct a type with a set of properties K of type T",
|
|
1915
1996
|
type: "object",
|
|
@@ -1921,308 +2002,214 @@ const FUNCTION = {
|
|
|
1921
2002
|
},
|
|
1922
2003
|
IChatGptSchema: {
|
|
1923
2004
|
title: "Type schema info of the ChatGPT",
|
|
1924
|
-
description: 'Type schema info of the ChatGPT.\n\n`IChatGptSchema` is a type schema info of the ChatGPT function calling.\n\n`IChatGptSchema` basically follows the JSON schema definition of the OpenAPI
|
|
2005
|
+
description: 'Type schema info of the ChatGPT.\n\n`IChatGptSchema` is a type schema info of the ChatGPT function calling.\n\n`IChatGptSchema` basically follows the JSON schema definition of the OpenAPI\nv3.1 speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n\nHowever, the `IChatGptSchema` does not follow the entire specification of the\nOpenAPI v3.1. It has own specific restrictions and definitions. Here is the\nlist of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n\n- Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n- Resolve nullable property:\n {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n- Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n- Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n- Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n- Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n- Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to\n {@link IChatGptSchema.IReference}\n- When {@link IChatGptSchema.IConfig.strict} mode\n\n - Every object properties must be required\n - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n\nIf compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema\nspecification,\n\n- {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n- {@link IChatGptSchema.IParameters.$defs} instead of the\n {@link OpenApi.IJsonSchema.IComponents.schemas}\n- {@link IChatGptSchema.IString.enum} instead of the\n {@link OpenApi.IJsonSchema.IConstant}\n- {@link IChatGptSchema.additionalProperties} is fixed to `false`\n- No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n- When {@link IChatGptSchema.IConfig.strict} mode\n\n - Every object properties must be required\n - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n\nFor reference, if you\'ve composed the `IChatGptSchema` type with the\n{@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\nonly the recursived named types would be archived into the\n{@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from\nthe {@link IChatGptSchema.IReference} type.\n\nAlso, OpenAI has banned below constraint properties. Instead,\n`IChatGptSchema` fills the {@link IChatGptSchema.__IAttribute.description}\nproperty with the comment text like `"@format uuid"`.\n\n- {@link OpenApi.IJsonSchema.INumber.minimum}\n- {@link OpenApi.IJsonSchema.INumber.maximum}\n- {@link OpenApi.IJsonSchema.INumber.multipleOf}\n- {@link OpenApi.IJsonSchema.IString.minLength}\n- {@link OpenApi.IJsonSchema.IString.maxLength}\n- {@link OpenApi.IJsonSchema.IString.format}\n- {@link OpenApi.IJsonSchema.IString.pattern}\n- {@link OpenApi.IJsonSchema.IString.contentMediaType}\n- {@link OpenApi.IJsonSchema.IString.default}\n- {@link OpenApi.IJsonSchema.IArray.minItems}\n- {@link OpenApi.IJsonSchema.IArray.maxItems}\n- {@link OpenApi.IJsonSchema.IArray.unique}\n\nAdditionally, OpenAI cannot define the `description` property to the\n{@link IChatGptSchema.IReference} type, and even does not understand the\ncapsulization to the {@link IChatGptSchema.IAnyOf} type. Therefore, the\n`description` is written to the parent object type, not the reference type.\n\n```json\n{\n "type": "object",\n "description": "### Description of {@link something} property.\\n\\n> Hello?",\n "properties": {\n "something": {\n "$ref": "#/$defs/SomeObject"\n }\n }\n}\n```',
|
|
1925
2006
|
anyOf: [ {
|
|
1926
|
-
|
|
1927
|
-
properties: {
|
|
1928
|
-
enum: {
|
|
1929
|
-
title: "Enumeration values",
|
|
1930
|
-
description: "Enumeration values.",
|
|
1931
|
-
type: "array",
|
|
1932
|
-
items: {
|
|
1933
|
-
type: "boolean"
|
|
1934
|
-
}
|
|
1935
|
-
},
|
|
1936
|
-
type: {
|
|
1937
|
-
title: "Discriminator value of the type",
|
|
1938
|
-
description: "Discriminator value of the type.",
|
|
1939
|
-
type: "string",
|
|
1940
|
-
enum: [ "boolean" ]
|
|
1941
|
-
},
|
|
1942
|
-
title: {
|
|
1943
|
-
title: "Title of the schema",
|
|
1944
|
-
description: "Title of the schema.",
|
|
1945
|
-
type: "string"
|
|
1946
|
-
},
|
|
1947
|
-
description: {
|
|
1948
|
-
title: "Detailed description of the schema",
|
|
1949
|
-
description: "Detailed description of the schema.",
|
|
1950
|
-
type: "string"
|
|
1951
|
-
},
|
|
1952
|
-
deprecated: {
|
|
1953
|
-
title: "Whether the type is deprecated or not",
|
|
1954
|
-
description: "Whether the type is deprecated or not.",
|
|
1955
|
-
type: "boolean"
|
|
1956
|
-
},
|
|
1957
|
-
example: {
|
|
1958
|
-
title: "Example value",
|
|
1959
|
-
description: "Example value."
|
|
1960
|
-
},
|
|
1961
|
-
examples: {
|
|
1962
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
1963
|
-
type: "object",
|
|
1964
|
-
properties: {},
|
|
1965
|
-
required: [],
|
|
1966
|
-
additionalProperties: {}
|
|
1967
|
-
}
|
|
1968
|
-
},
|
|
1969
|
-
required: [ "type" ],
|
|
1970
|
-
description: 'Description of the current {@link IChatGptSchema.IBoolean} type:\n\n> Boolean type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2007
|
+
$ref: "#/$defs/IChatGptSchema.IBoolean"
|
|
1971
2008
|
}, {
|
|
1972
|
-
|
|
1973
|
-
properties: {
|
|
1974
|
-
enum: {
|
|
1975
|
-
title: "Enumeration values",
|
|
1976
|
-
description: "Enumeration values.",
|
|
1977
|
-
type: "array",
|
|
1978
|
-
items: {
|
|
1979
|
-
type: "number"
|
|
1980
|
-
}
|
|
1981
|
-
},
|
|
1982
|
-
type: {
|
|
1983
|
-
title: "Discriminator value of the type",
|
|
1984
|
-
description: "Discriminator value of the type.",
|
|
1985
|
-
type: "string",
|
|
1986
|
-
enum: [ "integer" ]
|
|
1987
|
-
},
|
|
1988
|
-
title: {
|
|
1989
|
-
title: "Title of the schema",
|
|
1990
|
-
description: "Title of the schema.",
|
|
1991
|
-
type: "string"
|
|
1992
|
-
},
|
|
1993
|
-
description: {
|
|
1994
|
-
title: "Detailed description of the schema",
|
|
1995
|
-
description: "Detailed description of the schema.",
|
|
1996
|
-
type: "string"
|
|
1997
|
-
},
|
|
1998
|
-
deprecated: {
|
|
1999
|
-
title: "Whether the type is deprecated or not",
|
|
2000
|
-
description: "Whether the type is deprecated or not.",
|
|
2001
|
-
type: "boolean"
|
|
2002
|
-
},
|
|
2003
|
-
example: {
|
|
2004
|
-
title: "Example value",
|
|
2005
|
-
description: "Example value."
|
|
2006
|
-
},
|
|
2007
|
-
examples: {
|
|
2008
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2009
|
-
type: "object",
|
|
2010
|
-
properties: {},
|
|
2011
|
-
required: [],
|
|
2012
|
-
additionalProperties: {}
|
|
2013
|
-
}
|
|
2014
|
-
},
|
|
2015
|
-
required: [ "type" ],
|
|
2016
|
-
description: 'Description of the current {@link IChatGptSchema.IInteger} type:\n\n> Integer type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2009
|
+
$ref: "#/$defs/IChatGptSchema.IInteger"
|
|
2017
2010
|
}, {
|
|
2018
|
-
|
|
2019
|
-
properties: {
|
|
2020
|
-
enum: {
|
|
2021
|
-
title: "Enumeration values",
|
|
2022
|
-
description: "Enumeration values.",
|
|
2023
|
-
type: "array",
|
|
2024
|
-
items: {
|
|
2025
|
-
type: "number"
|
|
2026
|
-
}
|
|
2027
|
-
},
|
|
2028
|
-
type: {
|
|
2029
|
-
title: "Discriminator value of the type",
|
|
2030
|
-
description: "Discriminator value of the type.",
|
|
2031
|
-
type: "string",
|
|
2032
|
-
enum: [ "number" ]
|
|
2033
|
-
},
|
|
2034
|
-
title: {
|
|
2035
|
-
title: "Title of the schema",
|
|
2036
|
-
description: "Title of the schema.",
|
|
2037
|
-
type: "string"
|
|
2038
|
-
},
|
|
2039
|
-
description: {
|
|
2040
|
-
title: "Detailed description of the schema",
|
|
2041
|
-
description: "Detailed description of the schema.",
|
|
2042
|
-
type: "string"
|
|
2043
|
-
},
|
|
2044
|
-
deprecated: {
|
|
2045
|
-
title: "Whether the type is deprecated or not",
|
|
2046
|
-
description: "Whether the type is deprecated or not.",
|
|
2047
|
-
type: "boolean"
|
|
2048
|
-
},
|
|
2049
|
-
example: {
|
|
2050
|
-
title: "Example value",
|
|
2051
|
-
description: "Example value."
|
|
2052
|
-
},
|
|
2053
|
-
examples: {
|
|
2054
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2055
|
-
type: "object",
|
|
2056
|
-
properties: {},
|
|
2057
|
-
required: [],
|
|
2058
|
-
additionalProperties: {}
|
|
2059
|
-
}
|
|
2060
|
-
},
|
|
2061
|
-
required: [ "type" ],
|
|
2062
|
-
description: 'Description of the current {@link IChatGptSchema.INumber} type:\n\n> Number (double) type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2011
|
+
$ref: "#/$defs/IChatGptSchema.INumber"
|
|
2063
2012
|
}, {
|
|
2064
|
-
|
|
2065
|
-
properties: {
|
|
2066
|
-
enum: {
|
|
2067
|
-
title: "Enumeration values",
|
|
2068
|
-
description: "Enumeration values.",
|
|
2069
|
-
type: "array",
|
|
2070
|
-
items: {
|
|
2071
|
-
type: "string"
|
|
2072
|
-
}
|
|
2073
|
-
},
|
|
2074
|
-
type: {
|
|
2075
|
-
title: "Discriminator value of the type",
|
|
2076
|
-
description: "Discriminator value of the type.",
|
|
2077
|
-
type: "string",
|
|
2078
|
-
enum: [ "string" ]
|
|
2079
|
-
},
|
|
2080
|
-
title: {
|
|
2081
|
-
title: "Title of the schema",
|
|
2082
|
-
description: "Title of the schema.",
|
|
2083
|
-
type: "string"
|
|
2084
|
-
},
|
|
2085
|
-
description: {
|
|
2086
|
-
title: "Detailed description of the schema",
|
|
2087
|
-
description: "Detailed description of the schema.",
|
|
2088
|
-
type: "string"
|
|
2089
|
-
},
|
|
2090
|
-
deprecated: {
|
|
2091
|
-
title: "Whether the type is deprecated or not",
|
|
2092
|
-
description: "Whether the type is deprecated or not.",
|
|
2093
|
-
type: "boolean"
|
|
2094
|
-
},
|
|
2095
|
-
example: {
|
|
2096
|
-
title: "Example value",
|
|
2097
|
-
description: "Example value."
|
|
2098
|
-
},
|
|
2099
|
-
examples: {
|
|
2100
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2101
|
-
type: "object",
|
|
2102
|
-
properties: {},
|
|
2103
|
-
required: [],
|
|
2104
|
-
additionalProperties: {}
|
|
2105
|
-
}
|
|
2106
|
-
},
|
|
2107
|
-
required: [ "type" ],
|
|
2108
|
-
description: 'Description of the current {@link IChatGptSchema.IString} type:\n\n> String type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2013
|
+
$ref: "#/$defs/IChatGptSchema.IString"
|
|
2109
2014
|
}, {
|
|
2110
2015
|
$ref: "#/$defs/IChatGptSchema.IArray"
|
|
2111
2016
|
}, {
|
|
2112
2017
|
$ref: "#/$defs/IChatGptSchema.IObject"
|
|
2113
2018
|
}, {
|
|
2114
|
-
|
|
2115
|
-
properties: {
|
|
2116
|
-
$ref: {
|
|
2117
|
-
title: "Reference to the named schema",
|
|
2118
|
-
description: "Reference to the named schema.\n\nThe `ref` is a reference to the named schema. Format of the `$ref` is\nfollowing the JSON Pointer specification. In the OpenAPI, the `$ref`\nstarts with `#/$defs/` which means the type is stored in\nthe {@link IChatGptSchema.IParameters.$defs} object.\n\n- `#/$defs/SomeObject`\n- `#/$defs/AnotherObject`",
|
|
2119
|
-
type: "string"
|
|
2120
|
-
},
|
|
2121
|
-
title: {
|
|
2122
|
-
title: "Title of the schema",
|
|
2123
|
-
description: "Title of the schema.",
|
|
2124
|
-
type: "string"
|
|
2125
|
-
},
|
|
2126
|
-
description: {
|
|
2127
|
-
title: "Detailed description of the schema",
|
|
2128
|
-
description: "Detailed description of the schema.",
|
|
2129
|
-
type: "string"
|
|
2130
|
-
},
|
|
2131
|
-
deprecated: {
|
|
2132
|
-
title: "Whether the type is deprecated or not",
|
|
2133
|
-
description: "Whether the type is deprecated or not.",
|
|
2134
|
-
type: "boolean"
|
|
2135
|
-
},
|
|
2136
|
-
example: {
|
|
2137
|
-
title: "Example value",
|
|
2138
|
-
description: "Example value."
|
|
2139
|
-
},
|
|
2140
|
-
examples: {
|
|
2141
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2142
|
-
type: "object",
|
|
2143
|
-
properties: {},
|
|
2144
|
-
required: [],
|
|
2145
|
-
additionalProperties: {}
|
|
2146
|
-
}
|
|
2147
|
-
},
|
|
2148
|
-
required: [ "$ref" ],
|
|
2149
|
-
description: 'Description of the current {@link IChatGptSchema.IReference} type:\n\n> Reference type directing named schema.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2019
|
+
$ref: "#/$defs/IChatGptSchema.IReference"
|
|
2150
2020
|
}, {
|
|
2151
2021
|
$ref: "#/$defs/IChatGptSchema.IAnyOf"
|
|
2152
2022
|
}, {
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
title: "Detailed description of the schema",
|
|
2168
|
-
description: "Detailed description of the schema.",
|
|
2169
|
-
type: "string"
|
|
2170
|
-
},
|
|
2171
|
-
deprecated: {
|
|
2172
|
-
title: "Whether the type is deprecated or not",
|
|
2173
|
-
description: "Whether the type is deprecated or not.",
|
|
2023
|
+
$ref: "#/$defs/IChatGptSchema.INull"
|
|
2024
|
+
}, {
|
|
2025
|
+
$ref: "#/$defs/IChatGptSchema.IUnknown"
|
|
2026
|
+
} ]
|
|
2027
|
+
},
|
|
2028
|
+
"IChatGptSchema.IBoolean": {
|
|
2029
|
+
description: "Boolean type info.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2030
|
+
type: "object",
|
|
2031
|
+
properties: {
|
|
2032
|
+
enum: {
|
|
2033
|
+
title: "Enumeration values",
|
|
2034
|
+
description: "Enumeration values.",
|
|
2035
|
+
type: "array",
|
|
2036
|
+
items: {
|
|
2174
2037
|
type: "boolean"
|
|
2175
|
-
},
|
|
2176
|
-
example: {
|
|
2177
|
-
title: "Example value",
|
|
2178
|
-
description: "Example value."
|
|
2179
|
-
},
|
|
2180
|
-
examples: {
|
|
2181
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2182
|
-
type: "object",
|
|
2183
|
-
properties: {},
|
|
2184
|
-
required: [],
|
|
2185
|
-
additionalProperties: {}
|
|
2186
2038
|
}
|
|
2187
2039
|
},
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2040
|
+
type: {
|
|
2041
|
+
title: "Discriminator value of the type",
|
|
2042
|
+
description: "Discriminator value of the type.",
|
|
2043
|
+
type: "string",
|
|
2044
|
+
enum: [ "boolean" ]
|
|
2045
|
+
},
|
|
2046
|
+
title: {
|
|
2047
|
+
title: "Title of the schema",
|
|
2048
|
+
description: "Title of the schema.",
|
|
2049
|
+
type: "string"
|
|
2050
|
+
},
|
|
2051
|
+
description: {
|
|
2052
|
+
title: "Detailed description of the schema",
|
|
2053
|
+
description: "Detailed description of the schema.",
|
|
2054
|
+
type: "string"
|
|
2055
|
+
},
|
|
2056
|
+
deprecated: {
|
|
2057
|
+
title: "Whether the type is deprecated or not",
|
|
2058
|
+
description: "Whether the type is deprecated or not.",
|
|
2059
|
+
type: "boolean"
|
|
2060
|
+
},
|
|
2061
|
+
example: {
|
|
2062
|
+
title: "Example value",
|
|
2063
|
+
description: "Example value."
|
|
2064
|
+
},
|
|
2065
|
+
examples: {
|
|
2066
|
+
title: "List of example values as key-value pairs",
|
|
2067
|
+
$ref: "#/$defs/Recordstringany"
|
|
2068
|
+
}
|
|
2069
|
+
},
|
|
2070
|
+
required: [ "type" ]
|
|
2071
|
+
},
|
|
2072
|
+
Recordstringany: {
|
|
2073
|
+
description: "Construct a type with a set of properties K of type T",
|
|
2074
|
+
type: "object",
|
|
2075
|
+
properties: {},
|
|
2076
|
+
required: [],
|
|
2077
|
+
additionalProperties: {}
|
|
2078
|
+
},
|
|
2079
|
+
"IChatGptSchema.IInteger": {
|
|
2080
|
+
description: "Integer type info.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2081
|
+
type: "object",
|
|
2082
|
+
properties: {
|
|
2083
|
+
enum: {
|
|
2084
|
+
title: "Enumeration values",
|
|
2085
|
+
description: "Enumeration values.",
|
|
2086
|
+
type: "array",
|
|
2087
|
+
items: {
|
|
2088
|
+
type: "number"
|
|
2089
|
+
}
|
|
2090
|
+
},
|
|
2091
|
+
type: {
|
|
2092
|
+
title: "Discriminator value of the type",
|
|
2093
|
+
description: "Discriminator value of the type.",
|
|
2094
|
+
type: "string",
|
|
2095
|
+
enum: [ "integer" ]
|
|
2096
|
+
},
|
|
2097
|
+
title: {
|
|
2098
|
+
title: "Title of the schema",
|
|
2099
|
+
description: "Title of the schema.",
|
|
2100
|
+
type: "string"
|
|
2101
|
+
},
|
|
2102
|
+
description: {
|
|
2103
|
+
title: "Detailed description of the schema",
|
|
2104
|
+
description: "Detailed description of the schema.",
|
|
2105
|
+
type: "string"
|
|
2106
|
+
},
|
|
2107
|
+
deprecated: {
|
|
2108
|
+
title: "Whether the type is deprecated or not",
|
|
2109
|
+
description: "Whether the type is deprecated or not.",
|
|
2110
|
+
type: "boolean"
|
|
2111
|
+
},
|
|
2112
|
+
example: {
|
|
2113
|
+
title: "Example value",
|
|
2114
|
+
description: "Example value."
|
|
2115
|
+
},
|
|
2116
|
+
examples: {
|
|
2117
|
+
title: "List of example values as key-value pairs",
|
|
2118
|
+
$ref: "#/$defs/Recordstringany"
|
|
2119
|
+
}
|
|
2120
|
+
},
|
|
2121
|
+
required: [ "type" ]
|
|
2122
|
+
},
|
|
2123
|
+
"IChatGptSchema.INumber": {
|
|
2124
|
+
description: "Number (double) type info.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2125
|
+
type: "object",
|
|
2126
|
+
properties: {
|
|
2127
|
+
enum: {
|
|
2128
|
+
title: "Enumeration values",
|
|
2129
|
+
description: "Enumeration values.",
|
|
2130
|
+
type: "array",
|
|
2131
|
+
items: {
|
|
2132
|
+
type: "number"
|
|
2133
|
+
}
|
|
2134
|
+
},
|
|
2135
|
+
type: {
|
|
2136
|
+
title: "Discriminator value of the type",
|
|
2137
|
+
description: "Discriminator value of the type.",
|
|
2138
|
+
type: "string",
|
|
2139
|
+
enum: [ "number" ]
|
|
2140
|
+
},
|
|
2141
|
+
title: {
|
|
2142
|
+
title: "Title of the schema",
|
|
2143
|
+
description: "Title of the schema.",
|
|
2144
|
+
type: "string"
|
|
2145
|
+
},
|
|
2146
|
+
description: {
|
|
2147
|
+
title: "Detailed description of the schema",
|
|
2148
|
+
description: "Detailed description of the schema.",
|
|
2149
|
+
type: "string"
|
|
2150
|
+
},
|
|
2151
|
+
deprecated: {
|
|
2152
|
+
title: "Whether the type is deprecated or not",
|
|
2153
|
+
description: "Whether the type is deprecated or not.",
|
|
2154
|
+
type: "boolean"
|
|
2155
|
+
},
|
|
2156
|
+
example: {
|
|
2157
|
+
title: "Example value",
|
|
2158
|
+
description: "Example value."
|
|
2159
|
+
},
|
|
2160
|
+
examples: {
|
|
2161
|
+
title: "List of example values as key-value pairs",
|
|
2162
|
+
$ref: "#/$defs/Recordstringany"
|
|
2163
|
+
}
|
|
2164
|
+
},
|
|
2165
|
+
required: [ "type" ]
|
|
2166
|
+
},
|
|
2167
|
+
"IChatGptSchema.IString": {
|
|
2168
|
+
description: "String type info.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2169
|
+
type: "object",
|
|
2170
|
+
properties: {
|
|
2171
|
+
enum: {
|
|
2172
|
+
title: "Enumeration values",
|
|
2173
|
+
description: "Enumeration values.",
|
|
2174
|
+
type: "array",
|
|
2175
|
+
items: {
|
|
2201
2176
|
type: "string"
|
|
2202
|
-
},
|
|
2203
|
-
deprecated: {
|
|
2204
|
-
title: "Whether the type is deprecated or not",
|
|
2205
|
-
description: "Whether the type is deprecated or not.",
|
|
2206
|
-
type: "boolean"
|
|
2207
|
-
},
|
|
2208
|
-
example: {
|
|
2209
|
-
title: "Example value",
|
|
2210
|
-
description: "Example value."
|
|
2211
|
-
},
|
|
2212
|
-
examples: {
|
|
2213
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2214
|
-
type: "object",
|
|
2215
|
-
properties: {},
|
|
2216
|
-
required: [],
|
|
2217
|
-
additionalProperties: {}
|
|
2218
2177
|
}
|
|
2219
2178
|
},
|
|
2220
|
-
|
|
2221
|
-
|
|
2222
|
-
|
|
2179
|
+
type: {
|
|
2180
|
+
title: "Discriminator value of the type",
|
|
2181
|
+
description: "Discriminator value of the type.",
|
|
2182
|
+
type: "string",
|
|
2183
|
+
enum: [ "string" ]
|
|
2184
|
+
},
|
|
2185
|
+
title: {
|
|
2186
|
+
title: "Title of the schema",
|
|
2187
|
+
description: "Title of the schema.",
|
|
2188
|
+
type: "string"
|
|
2189
|
+
},
|
|
2190
|
+
description: {
|
|
2191
|
+
title: "Detailed description of the schema",
|
|
2192
|
+
description: "Detailed description of the schema.",
|
|
2193
|
+
type: "string"
|
|
2194
|
+
},
|
|
2195
|
+
deprecated: {
|
|
2196
|
+
title: "Whether the type is deprecated or not",
|
|
2197
|
+
description: "Whether the type is deprecated or not.",
|
|
2198
|
+
type: "boolean"
|
|
2199
|
+
},
|
|
2200
|
+
example: {
|
|
2201
|
+
title: "Example value",
|
|
2202
|
+
description: "Example value."
|
|
2203
|
+
},
|
|
2204
|
+
examples: {
|
|
2205
|
+
title: "List of example values as key-value pairs",
|
|
2206
|
+
$ref: "#/$defs/Recordstringany"
|
|
2207
|
+
}
|
|
2208
|
+
},
|
|
2209
|
+
required: [ "type" ]
|
|
2223
2210
|
},
|
|
2224
2211
|
"IChatGptSchema.IArray": {
|
|
2225
|
-
description: "Array type info.\n\n### Description of {@link items} property:\n\n> Items type info.\n> \n> The `items` means the type of the array elements. In other words, it is\n> the type schema info of the `T` in the TypeScript array type `Array<T
|
|
2212
|
+
description: "Array type info.\n\n### Description of {@link items} property:\n\n> Items type info.\n> \n> The `items` means the type of the array elements. In other words, it is\n> the type schema info of the `T` in the TypeScript array type `Array<T>`.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2226
2213
|
type: "object",
|
|
2227
2214
|
properties: {
|
|
2228
2215
|
items: {
|
|
@@ -2255,17 +2242,14 @@ const FUNCTION = {
|
|
|
2255
2242
|
description: "Example value."
|
|
2256
2243
|
},
|
|
2257
2244
|
examples: {
|
|
2258
|
-
|
|
2259
|
-
|
|
2260
|
-
properties: {},
|
|
2261
|
-
required: [],
|
|
2262
|
-
additionalProperties: {}
|
|
2245
|
+
title: "List of example values as key-value pairs",
|
|
2246
|
+
$ref: "#/$defs/Recordstringany"
|
|
2263
2247
|
}
|
|
2264
2248
|
},
|
|
2265
2249
|
required: [ "items", "type" ]
|
|
2266
2250
|
},
|
|
2267
2251
|
"IChatGptSchema.IObject": {
|
|
2268
|
-
description: "Object type info.\n\n### Description of {@link properties} property:\n\n> Properties of the object.\n> \n> The `properties` means a list of key-value pairs of the object's\n>
|
|
2252
|
+
description: "Object type info.\n\n### Description of {@link properties} property:\n\n> Properties of the object.\n> \n> The `properties` means a list of key-value pairs of the object's regular\n> properties. The key is the name of the regular property, and the value is\n> the type schema info.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2269
2253
|
type: "object",
|
|
2270
2254
|
properties: {
|
|
2271
2255
|
properties: {
|
|
@@ -2274,311 +2258,34 @@ const FUNCTION = {
|
|
|
2274
2258
|
},
|
|
2275
2259
|
additionalProperties: {
|
|
2276
2260
|
title: "Additional properties' info",
|
|
2277
|
-
description: "Additional properties' info.\n\nThe `additionalProperties` means the type schema info of the additional\nproperties that are not listed in the {@link properties}.\n\nBy the way, if you've configured {@link IChatGptSchema.IConfig.strict} as
|
|
2261
|
+
description: "Additional properties' info.\n\nThe `additionalProperties` means the type schema info of the additional\nproperties that are not listed in the {@link properties}.\n\nBy the way, if you've configured {@link IChatGptSchema.IConfig.strict} as\n`true`, ChatGPT function calling does not support such dynamic key typed\nproperties, so the `additionalProperties` becomes always `false`.",
|
|
2278
2262
|
anyOf: [ {
|
|
2279
2263
|
type: "boolean"
|
|
2280
2264
|
}, {
|
|
2281
|
-
|
|
2282
|
-
properties: {
|
|
2283
|
-
enum: {
|
|
2284
|
-
title: "Enumeration values",
|
|
2285
|
-
description: "Enumeration values.",
|
|
2286
|
-
type: "array",
|
|
2287
|
-
items: {
|
|
2288
|
-
type: "string"
|
|
2289
|
-
}
|
|
2290
|
-
},
|
|
2291
|
-
type: {
|
|
2292
|
-
title: "Discriminator value of the type",
|
|
2293
|
-
description: "Discriminator value of the type.",
|
|
2294
|
-
type: "string",
|
|
2295
|
-
enum: [ "string" ]
|
|
2296
|
-
},
|
|
2297
|
-
title: {
|
|
2298
|
-
title: "Title of the schema",
|
|
2299
|
-
description: "Title of the schema.",
|
|
2300
|
-
type: "string"
|
|
2301
|
-
},
|
|
2302
|
-
description: {
|
|
2303
|
-
title: "Detailed description of the schema",
|
|
2304
|
-
description: "Detailed description of the schema.",
|
|
2305
|
-
type: "string"
|
|
2306
|
-
},
|
|
2307
|
-
deprecated: {
|
|
2308
|
-
title: "Whether the type is deprecated or not",
|
|
2309
|
-
description: "Whether the type is deprecated or not.",
|
|
2310
|
-
type: "boolean"
|
|
2311
|
-
},
|
|
2312
|
-
example: {
|
|
2313
|
-
title: "Example value",
|
|
2314
|
-
description: "Example value."
|
|
2315
|
-
},
|
|
2316
|
-
examples: {
|
|
2317
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2318
|
-
type: "object",
|
|
2319
|
-
properties: {},
|
|
2320
|
-
required: [],
|
|
2321
|
-
additionalProperties: {}
|
|
2322
|
-
}
|
|
2323
|
-
},
|
|
2324
|
-
required: [ "type" ],
|
|
2325
|
-
description: 'Description of the current {@link IChatGptSchema.IString} type:\n\n> String type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2265
|
+
$ref: "#/$defs/IChatGptSchema.IString"
|
|
2326
2266
|
}, {
|
|
2327
|
-
|
|
2328
|
-
properties: {
|
|
2329
|
-
enum: {
|
|
2330
|
-
title: "Enumeration values",
|
|
2331
|
-
description: "Enumeration values.",
|
|
2332
|
-
type: "array",
|
|
2333
|
-
items: {
|
|
2334
|
-
type: "number"
|
|
2335
|
-
}
|
|
2336
|
-
},
|
|
2337
|
-
type: {
|
|
2338
|
-
title: "Discriminator value of the type",
|
|
2339
|
-
description: "Discriminator value of the type.",
|
|
2340
|
-
type: "string",
|
|
2341
|
-
enum: [ "number" ]
|
|
2342
|
-
},
|
|
2343
|
-
title: {
|
|
2344
|
-
title: "Title of the schema",
|
|
2345
|
-
description: "Title of the schema.",
|
|
2346
|
-
type: "string"
|
|
2347
|
-
},
|
|
2348
|
-
description: {
|
|
2349
|
-
title: "Detailed description of the schema",
|
|
2350
|
-
description: "Detailed description of the schema.",
|
|
2351
|
-
type: "string"
|
|
2352
|
-
},
|
|
2353
|
-
deprecated: {
|
|
2354
|
-
title: "Whether the type is deprecated or not",
|
|
2355
|
-
description: "Whether the type is deprecated or not.",
|
|
2356
|
-
type: "boolean"
|
|
2357
|
-
},
|
|
2358
|
-
example: {
|
|
2359
|
-
title: "Example value",
|
|
2360
|
-
description: "Example value."
|
|
2361
|
-
},
|
|
2362
|
-
examples: {
|
|
2363
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2364
|
-
type: "object",
|
|
2365
|
-
properties: {},
|
|
2366
|
-
required: [],
|
|
2367
|
-
additionalProperties: {}
|
|
2368
|
-
}
|
|
2369
|
-
},
|
|
2370
|
-
required: [ "type" ],
|
|
2371
|
-
description: 'Description of the current {@link IChatGptSchema.INumber} type:\n\n> Number (double) type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2267
|
+
$ref: "#/$defs/IChatGptSchema.INumber"
|
|
2372
2268
|
}, {
|
|
2373
|
-
|
|
2374
|
-
properties: {
|
|
2375
|
-
enum: {
|
|
2376
|
-
title: "Enumeration values",
|
|
2377
|
-
description: "Enumeration values.",
|
|
2378
|
-
type: "array",
|
|
2379
|
-
items: {
|
|
2380
|
-
type: "number"
|
|
2381
|
-
}
|
|
2382
|
-
},
|
|
2383
|
-
type: {
|
|
2384
|
-
title: "Discriminator value of the type",
|
|
2385
|
-
description: "Discriminator value of the type.",
|
|
2386
|
-
type: "string",
|
|
2387
|
-
enum: [ "integer" ]
|
|
2388
|
-
},
|
|
2389
|
-
title: {
|
|
2390
|
-
title: "Title of the schema",
|
|
2391
|
-
description: "Title of the schema.",
|
|
2392
|
-
type: "string"
|
|
2393
|
-
},
|
|
2394
|
-
description: {
|
|
2395
|
-
title: "Detailed description of the schema",
|
|
2396
|
-
description: "Detailed description of the schema.",
|
|
2397
|
-
type: "string"
|
|
2398
|
-
},
|
|
2399
|
-
deprecated: {
|
|
2400
|
-
title: "Whether the type is deprecated or not",
|
|
2401
|
-
description: "Whether the type is deprecated or not.",
|
|
2402
|
-
type: "boolean"
|
|
2403
|
-
},
|
|
2404
|
-
example: {
|
|
2405
|
-
title: "Example value",
|
|
2406
|
-
description: "Example value."
|
|
2407
|
-
},
|
|
2408
|
-
examples: {
|
|
2409
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2410
|
-
type: "object",
|
|
2411
|
-
properties: {},
|
|
2412
|
-
required: [],
|
|
2413
|
-
additionalProperties: {}
|
|
2414
|
-
}
|
|
2415
|
-
},
|
|
2416
|
-
required: [ "type" ],
|
|
2417
|
-
description: 'Description of the current {@link IChatGptSchema.IInteger} type:\n\n> Integer type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2269
|
+
$ref: "#/$defs/IChatGptSchema.IInteger"
|
|
2418
2270
|
}, {
|
|
2419
|
-
|
|
2420
|
-
properties: {
|
|
2421
|
-
enum: {
|
|
2422
|
-
title: "Enumeration values",
|
|
2423
|
-
description: "Enumeration values.",
|
|
2424
|
-
type: "array",
|
|
2425
|
-
items: {
|
|
2426
|
-
type: "boolean"
|
|
2427
|
-
}
|
|
2428
|
-
},
|
|
2429
|
-
type: {
|
|
2430
|
-
title: "Discriminator value of the type",
|
|
2431
|
-
description: "Discriminator value of the type.",
|
|
2432
|
-
type: "string",
|
|
2433
|
-
enum: [ "boolean" ]
|
|
2434
|
-
},
|
|
2435
|
-
title: {
|
|
2436
|
-
title: "Title of the schema",
|
|
2437
|
-
description: "Title of the schema.",
|
|
2438
|
-
type: "string"
|
|
2439
|
-
},
|
|
2440
|
-
description: {
|
|
2441
|
-
title: "Detailed description of the schema",
|
|
2442
|
-
description: "Detailed description of the schema.",
|
|
2443
|
-
type: "string"
|
|
2444
|
-
},
|
|
2445
|
-
deprecated: {
|
|
2446
|
-
title: "Whether the type is deprecated or not",
|
|
2447
|
-
description: "Whether the type is deprecated or not.",
|
|
2448
|
-
type: "boolean"
|
|
2449
|
-
},
|
|
2450
|
-
example: {
|
|
2451
|
-
title: "Example value",
|
|
2452
|
-
description: "Example value."
|
|
2453
|
-
},
|
|
2454
|
-
examples: {
|
|
2455
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2456
|
-
type: "object",
|
|
2457
|
-
properties: {},
|
|
2458
|
-
required: [],
|
|
2459
|
-
additionalProperties: {}
|
|
2460
|
-
}
|
|
2461
|
-
},
|
|
2462
|
-
required: [ "type" ],
|
|
2463
|
-
description: 'Description of the current {@link IChatGptSchema.IBoolean} type:\n\n> Boolean type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2271
|
+
$ref: "#/$defs/IChatGptSchema.IBoolean"
|
|
2464
2272
|
}, {
|
|
2465
2273
|
$ref: "#/$defs/IChatGptSchema.IArray"
|
|
2466
2274
|
}, {
|
|
2467
2275
|
$ref: "#/$defs/IChatGptSchema.IObject"
|
|
2468
2276
|
}, {
|
|
2469
|
-
|
|
2470
|
-
properties: {
|
|
2471
|
-
$ref: {
|
|
2472
|
-
title: "Reference to the named schema",
|
|
2473
|
-
description: "Reference to the named schema.\n\nThe `ref` is a reference to the named schema. Format of the `$ref` is\nfollowing the JSON Pointer specification. In the OpenAPI, the `$ref`\nstarts with `#/$defs/` which means the type is stored in\nthe {@link IChatGptSchema.IParameters.$defs} object.\n\n- `#/$defs/SomeObject`\n- `#/$defs/AnotherObject`",
|
|
2474
|
-
type: "string"
|
|
2475
|
-
},
|
|
2476
|
-
title: {
|
|
2477
|
-
title: "Title of the schema",
|
|
2478
|
-
description: "Title of the schema.",
|
|
2479
|
-
type: "string"
|
|
2480
|
-
},
|
|
2481
|
-
description: {
|
|
2482
|
-
title: "Detailed description of the schema",
|
|
2483
|
-
description: "Detailed description of the schema.",
|
|
2484
|
-
type: "string"
|
|
2485
|
-
},
|
|
2486
|
-
deprecated: {
|
|
2487
|
-
title: "Whether the type is deprecated or not",
|
|
2488
|
-
description: "Whether the type is deprecated or not.",
|
|
2489
|
-
type: "boolean"
|
|
2490
|
-
},
|
|
2491
|
-
example: {
|
|
2492
|
-
title: "Example value",
|
|
2493
|
-
description: "Example value."
|
|
2494
|
-
},
|
|
2495
|
-
examples: {
|
|
2496
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2497
|
-
type: "object",
|
|
2498
|
-
properties: {},
|
|
2499
|
-
required: [],
|
|
2500
|
-
additionalProperties: {}
|
|
2501
|
-
}
|
|
2502
|
-
},
|
|
2503
|
-
required: [ "$ref" ],
|
|
2504
|
-
description: 'Description of the current {@link IChatGptSchema.IReference} type:\n\n> Reference type directing named schema.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2277
|
+
$ref: "#/$defs/IChatGptSchema.IReference"
|
|
2505
2278
|
}, {
|
|
2506
2279
|
$ref: "#/$defs/IChatGptSchema.IAnyOf"
|
|
2507
2280
|
}, {
|
|
2508
|
-
|
|
2509
|
-
properties: {
|
|
2510
|
-
title: {
|
|
2511
|
-
title: "Title of the schema",
|
|
2512
|
-
description: "Title of the schema.",
|
|
2513
|
-
type: "string"
|
|
2514
|
-
},
|
|
2515
|
-
description: {
|
|
2516
|
-
title: "Detailed description of the schema",
|
|
2517
|
-
description: "Detailed description of the schema.",
|
|
2518
|
-
type: "string"
|
|
2519
|
-
},
|
|
2520
|
-
deprecated: {
|
|
2521
|
-
title: "Whether the type is deprecated or not",
|
|
2522
|
-
description: "Whether the type is deprecated or not.",
|
|
2523
|
-
type: "boolean"
|
|
2524
|
-
},
|
|
2525
|
-
example: {
|
|
2526
|
-
title: "Example value",
|
|
2527
|
-
description: "Example value."
|
|
2528
|
-
},
|
|
2529
|
-
examples: {
|
|
2530
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2531
|
-
type: "object",
|
|
2532
|
-
properties: {},
|
|
2533
|
-
required: [],
|
|
2534
|
-
additionalProperties: {}
|
|
2535
|
-
}
|
|
2536
|
-
},
|
|
2537
|
-
required: [],
|
|
2538
|
-
description: 'Description of the current {@link IChatGptSchema.IUnknown} type:\n\n> Unknown, the `any` type.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2281
|
+
$ref: "#/$defs/IChatGptSchema.IUnknown"
|
|
2539
2282
|
}, {
|
|
2540
|
-
|
|
2541
|
-
properties: {
|
|
2542
|
-
type: {
|
|
2543
|
-
title: "Discriminator value of the type",
|
|
2544
|
-
description: "Discriminator value of the type.",
|
|
2545
|
-
type: "string",
|
|
2546
|
-
enum: [ "null" ]
|
|
2547
|
-
},
|
|
2548
|
-
title: {
|
|
2549
|
-
title: "Title of the schema",
|
|
2550
|
-
description: "Title of the schema.",
|
|
2551
|
-
type: "string"
|
|
2552
|
-
},
|
|
2553
|
-
description: {
|
|
2554
|
-
title: "Detailed description of the schema",
|
|
2555
|
-
description: "Detailed description of the schema.",
|
|
2556
|
-
type: "string"
|
|
2557
|
-
},
|
|
2558
|
-
deprecated: {
|
|
2559
|
-
title: "Whether the type is deprecated or not",
|
|
2560
|
-
description: "Whether the type is deprecated or not.",
|
|
2561
|
-
type: "boolean"
|
|
2562
|
-
},
|
|
2563
|
-
example: {
|
|
2564
|
-
title: "Example value",
|
|
2565
|
-
description: "Example value."
|
|
2566
|
-
},
|
|
2567
|
-
examples: {
|
|
2568
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2569
|
-
type: "object",
|
|
2570
|
-
properties: {},
|
|
2571
|
-
required: [],
|
|
2572
|
-
additionalProperties: {}
|
|
2573
|
-
}
|
|
2574
|
-
},
|
|
2575
|
-
required: [ "type" ],
|
|
2576
|
-
description: 'Description of the current {@link IChatGptSchema.INull} type:\n\n> Null type.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2283
|
+
$ref: "#/$defs/IChatGptSchema.INull"
|
|
2577
2284
|
} ]
|
|
2578
2285
|
},
|
|
2579
2286
|
required: {
|
|
2580
2287
|
title: "List of key values of the required properties",
|
|
2581
|
-
description: 'List of key values of the required properties.\n\nThe `required` means a list of the key values of the required\n{@link properties}. If some property key is not listed in the `required`\nlist, it means that property is optional. Otherwise some property key\nexists in the `required` list, it means that the property must be
|
|
2288
|
+
description: 'List of key values of the required properties.\n\nThe `required` means a list of the key values of the required\n{@link properties}. If some property key is not listed in the `required`\nlist, it means that property is optional. Otherwise some property key\nexists in the `required` list, it means that the property must be\nfilled.\n\nBelow is an example of the {@link properties} and `required`.\n\n```typescript\ninterface SomeObject {\n id: string;\n email: string;\n name?: string;\n}\n```\n\nAs you can see, `id` and `email` {@link properties} are {@link required},\nso that they are listed in the `required` list.\n\n```json\n{\n "type": "object",\n "properties": {\n "id": { "type": "string" },\n "email": { "type": "string" },\n "name": { "type": "string" }\n },\n "required": ["id", "email"]\n}\n```',
|
|
2582
2289
|
type: "array",
|
|
2583
2290
|
items: {
|
|
2584
2291
|
type: "string"
|
|
@@ -2610,17 +2317,49 @@ const FUNCTION = {
|
|
|
2610
2317
|
description: "Example value."
|
|
2611
2318
|
},
|
|
2612
2319
|
examples: {
|
|
2613
|
-
|
|
2614
|
-
|
|
2615
|
-
properties: {},
|
|
2616
|
-
required: [],
|
|
2617
|
-
additionalProperties: {}
|
|
2320
|
+
title: "List of example values as key-value pairs",
|
|
2321
|
+
$ref: "#/$defs/Recordstringany"
|
|
2618
2322
|
}
|
|
2619
2323
|
},
|
|
2620
2324
|
required: [ "properties", "required", "type" ]
|
|
2621
2325
|
},
|
|
2326
|
+
"IChatGptSchema.IReference": {
|
|
2327
|
+
description: "Reference type directing named schema.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2328
|
+
type: "object",
|
|
2329
|
+
properties: {
|
|
2330
|
+
$ref: {
|
|
2331
|
+
title: "Reference to the named schema",
|
|
2332
|
+
description: "Reference to the named schema.\n\nThe `ref` is a reference to the named schema. Format of the `$ref` is\nfollowing the JSON Pointer specification. In the OpenAPI, the `$ref`\nstarts with `#/$defs/` which means the type is stored in the\n{@link IChatGptSchema.IParameters.$defs} object.\n\n- `#/$defs/SomeObject`\n- `#/$defs/AnotherObject`",
|
|
2333
|
+
type: "string"
|
|
2334
|
+
},
|
|
2335
|
+
title: {
|
|
2336
|
+
title: "Title of the schema",
|
|
2337
|
+
description: "Title of the schema.",
|
|
2338
|
+
type: "string"
|
|
2339
|
+
},
|
|
2340
|
+
description: {
|
|
2341
|
+
title: "Detailed description of the schema",
|
|
2342
|
+
description: "Detailed description of the schema.",
|
|
2343
|
+
type: "string"
|
|
2344
|
+
},
|
|
2345
|
+
deprecated: {
|
|
2346
|
+
title: "Whether the type is deprecated or not",
|
|
2347
|
+
description: "Whether the type is deprecated or not.",
|
|
2348
|
+
type: "boolean"
|
|
2349
|
+
},
|
|
2350
|
+
example: {
|
|
2351
|
+
title: "Example value",
|
|
2352
|
+
description: "Example value."
|
|
2353
|
+
},
|
|
2354
|
+
examples: {
|
|
2355
|
+
title: "List of example values as key-value pairs",
|
|
2356
|
+
$ref: "#/$defs/Recordstringany"
|
|
2357
|
+
}
|
|
2358
|
+
},
|
|
2359
|
+
required: [ "$ref" ]
|
|
2360
|
+
},
|
|
2622
2361
|
"IChatGptSchema.IAnyOf": {
|
|
2623
|
-
description:
|
|
2362
|
+
description: 'Union type.\n\n`IAnyOf` represents an union type of the TypeScript (`A | B | C`).\n\nFor reference, even though your Swagger (or OpenAPI) document has defined\n`anyOf` instead of the `oneOf`, {@link IChatGptSchema} forcibly converts it\nto `oneOf` type.\n\n### Description of {@link "x-discriminator"} property:\n\n> Discriminator info of the union type.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.',
|
|
2624
2363
|
type: "object",
|
|
2625
2364
|
properties: {
|
|
2626
2365
|
anyOf: {
|
|
@@ -2629,303 +2368,30 @@ const FUNCTION = {
|
|
|
2629
2368
|
type: "array",
|
|
2630
2369
|
items: {
|
|
2631
2370
|
anyOf: [ {
|
|
2632
|
-
|
|
2633
|
-
properties: {
|
|
2634
|
-
enum: {
|
|
2635
|
-
title: "Enumeration values",
|
|
2636
|
-
description: "Enumeration values.",
|
|
2637
|
-
type: "array",
|
|
2638
|
-
items: {
|
|
2639
|
-
type: "string"
|
|
2640
|
-
}
|
|
2641
|
-
},
|
|
2642
|
-
type: {
|
|
2643
|
-
title: "Discriminator value of the type",
|
|
2644
|
-
description: "Discriminator value of the type.",
|
|
2645
|
-
type: "string",
|
|
2646
|
-
enum: [ "string" ]
|
|
2647
|
-
},
|
|
2648
|
-
title: {
|
|
2649
|
-
title: "Title of the schema",
|
|
2650
|
-
description: "Title of the schema.",
|
|
2651
|
-
type: "string"
|
|
2652
|
-
},
|
|
2653
|
-
description: {
|
|
2654
|
-
title: "Detailed description of the schema",
|
|
2655
|
-
description: "Detailed description of the schema.",
|
|
2656
|
-
type: "string"
|
|
2657
|
-
},
|
|
2658
|
-
deprecated: {
|
|
2659
|
-
title: "Whether the type is deprecated or not",
|
|
2660
|
-
description: "Whether the type is deprecated or not.",
|
|
2661
|
-
type: "boolean"
|
|
2662
|
-
},
|
|
2663
|
-
example: {
|
|
2664
|
-
title: "Example value",
|
|
2665
|
-
description: "Example value."
|
|
2666
|
-
},
|
|
2667
|
-
examples: {
|
|
2668
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2669
|
-
type: "object",
|
|
2670
|
-
properties: {},
|
|
2671
|
-
required: [],
|
|
2672
|
-
additionalProperties: {}
|
|
2673
|
-
}
|
|
2674
|
-
},
|
|
2675
|
-
required: [ "type" ],
|
|
2676
|
-
description: 'Description of the current {@link IChatGptSchema.IString} type:\n\n> String type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2371
|
+
$ref: "#/$defs/IChatGptSchema.IString"
|
|
2677
2372
|
}, {
|
|
2678
|
-
|
|
2679
|
-
properties: {
|
|
2680
|
-
enum: {
|
|
2681
|
-
title: "Enumeration values",
|
|
2682
|
-
description: "Enumeration values.",
|
|
2683
|
-
type: "array",
|
|
2684
|
-
items: {
|
|
2685
|
-
type: "number"
|
|
2686
|
-
}
|
|
2687
|
-
},
|
|
2688
|
-
type: {
|
|
2689
|
-
title: "Discriminator value of the type",
|
|
2690
|
-
description: "Discriminator value of the type.",
|
|
2691
|
-
type: "string",
|
|
2692
|
-
enum: [ "number" ]
|
|
2693
|
-
},
|
|
2694
|
-
title: {
|
|
2695
|
-
title: "Title of the schema",
|
|
2696
|
-
description: "Title of the schema.",
|
|
2697
|
-
type: "string"
|
|
2698
|
-
},
|
|
2699
|
-
description: {
|
|
2700
|
-
title: "Detailed description of the schema",
|
|
2701
|
-
description: "Detailed description of the schema.",
|
|
2702
|
-
type: "string"
|
|
2703
|
-
},
|
|
2704
|
-
deprecated: {
|
|
2705
|
-
title: "Whether the type is deprecated or not",
|
|
2706
|
-
description: "Whether the type is deprecated or not.",
|
|
2707
|
-
type: "boolean"
|
|
2708
|
-
},
|
|
2709
|
-
example: {
|
|
2710
|
-
title: "Example value",
|
|
2711
|
-
description: "Example value."
|
|
2712
|
-
},
|
|
2713
|
-
examples: {
|
|
2714
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2715
|
-
type: "object",
|
|
2716
|
-
properties: {},
|
|
2717
|
-
required: [],
|
|
2718
|
-
additionalProperties: {}
|
|
2719
|
-
}
|
|
2720
|
-
},
|
|
2721
|
-
required: [ "type" ],
|
|
2722
|
-
description: 'Description of the current {@link IChatGptSchema.INumber} type:\n\n> Number (double) type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2373
|
+
$ref: "#/$defs/IChatGptSchema.INumber"
|
|
2723
2374
|
}, {
|
|
2724
|
-
|
|
2725
|
-
properties: {
|
|
2726
|
-
enum: {
|
|
2727
|
-
title: "Enumeration values",
|
|
2728
|
-
description: "Enumeration values.",
|
|
2729
|
-
type: "array",
|
|
2730
|
-
items: {
|
|
2731
|
-
type: "number"
|
|
2732
|
-
}
|
|
2733
|
-
},
|
|
2734
|
-
type: {
|
|
2735
|
-
title: "Discriminator value of the type",
|
|
2736
|
-
description: "Discriminator value of the type.",
|
|
2737
|
-
type: "string",
|
|
2738
|
-
enum: [ "integer" ]
|
|
2739
|
-
},
|
|
2740
|
-
title: {
|
|
2741
|
-
title: "Title of the schema",
|
|
2742
|
-
description: "Title of the schema.",
|
|
2743
|
-
type: "string"
|
|
2744
|
-
},
|
|
2745
|
-
description: {
|
|
2746
|
-
title: "Detailed description of the schema",
|
|
2747
|
-
description: "Detailed description of the schema.",
|
|
2748
|
-
type: "string"
|
|
2749
|
-
},
|
|
2750
|
-
deprecated: {
|
|
2751
|
-
title: "Whether the type is deprecated or not",
|
|
2752
|
-
description: "Whether the type is deprecated or not.",
|
|
2753
|
-
type: "boolean"
|
|
2754
|
-
},
|
|
2755
|
-
example: {
|
|
2756
|
-
title: "Example value",
|
|
2757
|
-
description: "Example value."
|
|
2758
|
-
},
|
|
2759
|
-
examples: {
|
|
2760
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2761
|
-
type: "object",
|
|
2762
|
-
properties: {},
|
|
2763
|
-
required: [],
|
|
2764
|
-
additionalProperties: {}
|
|
2765
|
-
}
|
|
2766
|
-
},
|
|
2767
|
-
required: [ "type" ],
|
|
2768
|
-
description: 'Description of the current {@link IChatGptSchema.IInteger} type:\n\n> Integer type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2375
|
+
$ref: "#/$defs/IChatGptSchema.IInteger"
|
|
2769
2376
|
}, {
|
|
2770
|
-
|
|
2771
|
-
properties: {
|
|
2772
|
-
enum: {
|
|
2773
|
-
title: "Enumeration values",
|
|
2774
|
-
description: "Enumeration values.",
|
|
2775
|
-
type: "array",
|
|
2776
|
-
items: {
|
|
2777
|
-
type: "boolean"
|
|
2778
|
-
}
|
|
2779
|
-
},
|
|
2780
|
-
type: {
|
|
2781
|
-
title: "Discriminator value of the type",
|
|
2782
|
-
description: "Discriminator value of the type.",
|
|
2783
|
-
type: "string",
|
|
2784
|
-
enum: [ "boolean" ]
|
|
2785
|
-
},
|
|
2786
|
-
title: {
|
|
2787
|
-
title: "Title of the schema",
|
|
2788
|
-
description: "Title of the schema.",
|
|
2789
|
-
type: "string"
|
|
2790
|
-
},
|
|
2791
|
-
description: {
|
|
2792
|
-
title: "Detailed description of the schema",
|
|
2793
|
-
description: "Detailed description of the schema.",
|
|
2794
|
-
type: "string"
|
|
2795
|
-
},
|
|
2796
|
-
deprecated: {
|
|
2797
|
-
title: "Whether the type is deprecated or not",
|
|
2798
|
-
description: "Whether the type is deprecated or not.",
|
|
2799
|
-
type: "boolean"
|
|
2800
|
-
},
|
|
2801
|
-
example: {
|
|
2802
|
-
title: "Example value",
|
|
2803
|
-
description: "Example value."
|
|
2804
|
-
},
|
|
2805
|
-
examples: {
|
|
2806
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2807
|
-
type: "object",
|
|
2808
|
-
properties: {},
|
|
2809
|
-
required: [],
|
|
2810
|
-
additionalProperties: {}
|
|
2811
|
-
}
|
|
2812
|
-
},
|
|
2813
|
-
required: [ "type" ],
|
|
2814
|
-
description: 'Description of the current {@link IChatGptSchema.IBoolean} type:\n\n> Boolean type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2377
|
+
$ref: "#/$defs/IChatGptSchema.IBoolean"
|
|
2815
2378
|
}, {
|
|
2816
2379
|
$ref: "#/$defs/IChatGptSchema.IArray"
|
|
2817
2380
|
}, {
|
|
2818
2381
|
$ref: "#/$defs/IChatGptSchema.IObject"
|
|
2819
2382
|
}, {
|
|
2820
|
-
|
|
2821
|
-
properties: {
|
|
2822
|
-
$ref: {
|
|
2823
|
-
title: "Reference to the named schema",
|
|
2824
|
-
description: "Reference to the named schema.\n\nThe `ref` is a reference to the named schema. Format of the `$ref` is\nfollowing the JSON Pointer specification. In the OpenAPI, the `$ref`\nstarts with `#/$defs/` which means the type is stored in\nthe {@link IChatGptSchema.IParameters.$defs} object.\n\n- `#/$defs/SomeObject`\n- `#/$defs/AnotherObject`",
|
|
2825
|
-
type: "string"
|
|
2826
|
-
},
|
|
2827
|
-
title: {
|
|
2828
|
-
title: "Title of the schema",
|
|
2829
|
-
description: "Title of the schema.",
|
|
2830
|
-
type: "string"
|
|
2831
|
-
},
|
|
2832
|
-
description: {
|
|
2833
|
-
title: "Detailed description of the schema",
|
|
2834
|
-
description: "Detailed description of the schema.",
|
|
2835
|
-
type: "string"
|
|
2836
|
-
},
|
|
2837
|
-
deprecated: {
|
|
2838
|
-
title: "Whether the type is deprecated or not",
|
|
2839
|
-
description: "Whether the type is deprecated or not.",
|
|
2840
|
-
type: "boolean"
|
|
2841
|
-
},
|
|
2842
|
-
example: {
|
|
2843
|
-
title: "Example value",
|
|
2844
|
-
description: "Example value."
|
|
2845
|
-
},
|
|
2846
|
-
examples: {
|
|
2847
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2848
|
-
type: "object",
|
|
2849
|
-
properties: {},
|
|
2850
|
-
required: [],
|
|
2851
|
-
additionalProperties: {}
|
|
2852
|
-
}
|
|
2853
|
-
},
|
|
2854
|
-
required: [ "$ref" ],
|
|
2855
|
-
description: 'Description of the current {@link IChatGptSchema.IReference} type:\n\n> Reference type directing named schema.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2383
|
+
$ref: "#/$defs/IChatGptSchema.IReference"
|
|
2856
2384
|
}, {
|
|
2857
|
-
|
|
2858
|
-
properties: {
|
|
2859
|
-
title: {
|
|
2860
|
-
title: "Title of the schema",
|
|
2861
|
-
description: "Title of the schema.",
|
|
2862
|
-
type: "string"
|
|
2863
|
-
},
|
|
2864
|
-
description: {
|
|
2865
|
-
title: "Detailed description of the schema",
|
|
2866
|
-
description: "Detailed description of the schema.",
|
|
2867
|
-
type: "string"
|
|
2868
|
-
},
|
|
2869
|
-
deprecated: {
|
|
2870
|
-
title: "Whether the type is deprecated or not",
|
|
2871
|
-
description: "Whether the type is deprecated or not.",
|
|
2872
|
-
type: "boolean"
|
|
2873
|
-
},
|
|
2874
|
-
example: {
|
|
2875
|
-
title: "Example value",
|
|
2876
|
-
description: "Example value."
|
|
2877
|
-
},
|
|
2878
|
-
examples: {
|
|
2879
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2880
|
-
type: "object",
|
|
2881
|
-
properties: {},
|
|
2882
|
-
required: [],
|
|
2883
|
-
additionalProperties: {}
|
|
2884
|
-
}
|
|
2885
|
-
},
|
|
2886
|
-
required: [],
|
|
2887
|
-
description: 'Description of the current {@link IChatGptSchema.IUnknown} type:\n\n> Unknown, the `any` type.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2385
|
+
$ref: "#/$defs/IChatGptSchema.IUnknown"
|
|
2888
2386
|
}, {
|
|
2889
|
-
|
|
2890
|
-
properties: {
|
|
2891
|
-
type: {
|
|
2892
|
-
title: "Discriminator value of the type",
|
|
2893
|
-
description: "Discriminator value of the type.",
|
|
2894
|
-
type: "string",
|
|
2895
|
-
enum: [ "null" ]
|
|
2896
|
-
},
|
|
2897
|
-
title: {
|
|
2898
|
-
title: "Title of the schema",
|
|
2899
|
-
description: "Title of the schema.",
|
|
2900
|
-
type: "string"
|
|
2901
|
-
},
|
|
2902
|
-
description: {
|
|
2903
|
-
title: "Detailed description of the schema",
|
|
2904
|
-
description: "Detailed description of the schema.",
|
|
2905
|
-
type: "string"
|
|
2906
|
-
},
|
|
2907
|
-
deprecated: {
|
|
2908
|
-
title: "Whether the type is deprecated or not",
|
|
2909
|
-
description: "Whether the type is deprecated or not.",
|
|
2910
|
-
type: "boolean"
|
|
2911
|
-
},
|
|
2912
|
-
example: {
|
|
2913
|
-
title: "Example value",
|
|
2914
|
-
description: "Example value."
|
|
2915
|
-
},
|
|
2916
|
-
examples: {
|
|
2917
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
2918
|
-
type: "object",
|
|
2919
|
-
properties: {},
|
|
2920
|
-
required: [],
|
|
2921
|
-
additionalProperties: {}
|
|
2922
|
-
}
|
|
2923
|
-
},
|
|
2924
|
-
required: [ "type" ],
|
|
2925
|
-
description: 'Description of the current {@link IChatGptSchema.INull} type:\n\n> Null type.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
2387
|
+
$ref: "#/$defs/IChatGptSchema.INull"
|
|
2926
2388
|
} ]
|
|
2927
2389
|
}
|
|
2928
2390
|
},
|
|
2391
|
+
"x-discriminator": {
|
|
2392
|
+
title: "Discriminator info of the union type",
|
|
2393
|
+
$ref: "#/$defs/IChatGptSchema.IAnyOf.IDiscriminator"
|
|
2394
|
+
},
|
|
2929
2395
|
title: {
|
|
2930
2396
|
title: "Title of the schema",
|
|
2931
2397
|
description: "Title of the schema.",
|
|
@@ -2946,557 +2412,129 @@ const FUNCTION = {
|
|
|
2946
2412
|
description: "Example value."
|
|
2947
2413
|
},
|
|
2948
2414
|
examples: {
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
properties: {},
|
|
2952
|
-
required: [],
|
|
2953
|
-
additionalProperties: {}
|
|
2415
|
+
title: "List of example values as key-value pairs",
|
|
2416
|
+
$ref: "#/$defs/Recordstringany"
|
|
2954
2417
|
}
|
|
2955
2418
|
},
|
|
2956
2419
|
required: [ "anyOf" ]
|
|
2957
|
-
}
|
|
2958
|
-
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
method: {
|
|
2967
|
-
title: "HTTP method of the endpoint",
|
|
2968
|
-
description: "HTTP method of the endpoint.",
|
|
2969
|
-
type: "string",
|
|
2970
|
-
enum: [ "get", "post", "patch", "put", "delete" ]
|
|
2971
|
-
},
|
|
2972
|
-
path: {
|
|
2973
|
-
title: "Path of the endpoint",
|
|
2974
|
-
description: "Path of the endpoint.",
|
|
2975
|
-
type: "string"
|
|
2976
|
-
},
|
|
2977
|
-
name: {
|
|
2978
|
-
title: "Representative name of the function",
|
|
2979
|
-
description: "Representative name of the function.\n\nThe `name` is a repsentative name identifying the function in the\n{@link IHttpLlmApplication}. The `name` value is just composed by joining the\n{@link IHttpMigrateRoute.accessor} by underscore `_` character.\n\nHere is the composition rule of the {@link IHttpMigrateRoute.accessor}:\n\n> The `accessor` is composed with the following rules. At first,\n> namespaces are composed by static directory names in the {@link path}.\n> Parametric symbols represented by `:param` or `{param}` cannot be\n> a part of the namespace.\n>\n> Instead, they would be a part of the function name. The function\n> name is composed with the {@link method HTTP method} and parametric\n> symbols like `getByParam` or `postByParam`. If there are multiple\n> path parameters, they would be concatenated by `And` like\n> `getByParam1AndParam2`.\n>\n> For refefence, if the {@link operation}'s {@link method} is `delete`,\n> the function name would be replaced to `erase` instead of `delete`.\n> It is the reason why the `delete` is a reserved keyword in many\n> programming languages.\n>\n> - Example 1\n> - path: `POST /shopping/sellers/sales`\n> - accessor: `shopping.sellers.sales.post`\n> - Example 2\n> - endpoint: `GET /shoppings/sellers/sales/:saleId/reviews/:reviewId/comments/:id\n> - accessor: `shoppings.sellers.sales.reviews.getBySaleIdAndReviewIdAndCommentId`\n\n\n@maxLength 64",
|
|
2980
|
-
type: "string"
|
|
2981
|
-
},
|
|
2982
|
-
parameters: {
|
|
2983
|
-
description: 'List of parameter types.\n\nIf you\'ve configured {@link IHttpLlmApplication.IOptions.keyword} as `true`,\nnumber of {@link IHttpLlmFunction.parameters} are always 1 and the first\nparameter\'s type is always {@link ILlmSchemaV3.IObject}. The\nproperties\' rule is:\n\n- `pathParameters`: Path parameters of {@link IHttpMigrateRoute.parameters}\n- `query`: Query parameter of {@link IHttpMigrateRoute.query}\n- `body`: Body parameter of {@link IHttpMigrateRoute.body}\n\n```typescript\n{\n ...pathParameters,\n query,\n body,\n}\n```\n\nOtherwise, the parameters would be multiple, and the sequence of the\nparameters are following below rules:\n\n```typescript\n[\n ...pathParameters,\n ...(query ? [query] : []),\n ...(body ? [body] : []),\n]\n```\n\n------------------------------\n\nDescription of the current {@link IChatGptSchema.IParameters} type:\n\n> Type of the function parameters.\n> \n> `IChatGptSchema.IParameters` is a type defining a function\'s parameters\n> as a keyworded object type.\n> \n> It also can be utilized for the structured output metadata.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```\n\n### Description of {@link $defs} property:\n\n> Collection of the named types.\n\n### Description of {@link properties} property:\n\n> Properties of the object.\n> \n> The `properties` means a list of key-value pairs of the object\'s\n> regular properties. The key is the name of the regular property,\n> and the value is the type schema info.',
|
|
2984
|
-
type: "object",
|
|
2985
|
-
properties: {
|
|
2986
|
-
$defs: {
|
|
2987
|
-
title: "Collection of the named types",
|
|
2988
|
-
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
2989
|
-
},
|
|
2990
|
-
additionalProperties: {
|
|
2991
|
-
title: "Additional properties' info",
|
|
2992
|
-
description: "Additional properties' info.\n\nThe `additionalProperties` means the type schema info of the additional\nproperties that are not listed in the {@link properties}.\n\nBy the way, it is not allowed in the parameters level.",
|
|
2993
|
-
type: "boolean",
|
|
2994
|
-
enum: [ false ]
|
|
2995
|
-
},
|
|
2996
|
-
type: {
|
|
2997
|
-
title: "Discriminator value of the type",
|
|
2998
|
-
description: "Discriminator value of the type.",
|
|
2999
|
-
type: "string",
|
|
3000
|
-
enum: [ "object" ]
|
|
3001
|
-
},
|
|
3002
|
-
properties: {
|
|
3003
|
-
title: "Properties of the object",
|
|
3004
|
-
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
3005
|
-
},
|
|
3006
|
-
required: {
|
|
3007
|
-
title: "List of key values of the required properties",
|
|
3008
|
-
description: 'List of key values of the required properties.\n\nThe `required` means a list of the key values of the required\n{@link properties}. If some property key is not listed in the `required`\nlist, it means that property is optional. Otherwise some property key\nexists in the `required` list, it means that the property must be filled.\n\nBelow is an example of the {@link properties} and `required`.\n\n```typescript\ninterface SomeObject {\n id: string;\n email: string;\n name?: string;\n}\n```\n\nAs you can see, `id` and `email` {@link properties} are {@link required},\nso that they are listed in the `required` list.\n\n```json\n{\n "type": "object",\n "properties": {\n "id": { "type": "string" },\n "email": { "type": "string" },\n "name": { "type": "string" }\n },\n "required": ["id", "email"]\n}\n```',
|
|
3009
|
-
type: "array",
|
|
3010
|
-
items: {
|
|
3011
|
-
type: "string"
|
|
3012
|
-
}
|
|
3013
|
-
},
|
|
3014
|
-
title: {
|
|
3015
|
-
title: "Title of the schema",
|
|
3016
|
-
description: "Title of the schema.",
|
|
3017
|
-
type: "string"
|
|
3018
|
-
},
|
|
3019
|
-
description: {
|
|
3020
|
-
title: "Detailed description of the schema",
|
|
3021
|
-
description: "Detailed description of the schema.",
|
|
3022
|
-
type: "string"
|
|
3023
|
-
},
|
|
3024
|
-
deprecated: {
|
|
3025
|
-
title: "Whether the type is deprecated or not",
|
|
3026
|
-
description: "Whether the type is deprecated or not.",
|
|
3027
|
-
type: "boolean"
|
|
3028
|
-
},
|
|
3029
|
-
example: {
|
|
3030
|
-
title: "Example value",
|
|
3031
|
-
description: "Example value."
|
|
3032
|
-
},
|
|
3033
|
-
examples: {
|
|
3034
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3035
|
-
type: "object",
|
|
3036
|
-
properties: {},
|
|
3037
|
-
required: [],
|
|
3038
|
-
additionalProperties: {}
|
|
3039
|
-
}
|
|
2420
|
+
},
|
|
2421
|
+
"IChatGptSchema.IUnknown": {
|
|
2422
|
+
description: "Unknown, the `any` type.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2423
|
+
type: "object",
|
|
2424
|
+
properties: {
|
|
2425
|
+
title: {
|
|
2426
|
+
title: "Title of the schema",
|
|
2427
|
+
description: "Title of the schema.",
|
|
2428
|
+
type: "string"
|
|
3040
2429
|
},
|
|
3041
|
-
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
type: "object",
|
|
3046
|
-
properties: {
|
|
3047
|
-
llm: {
|
|
3048
|
-
description: 'Parameters that would be composed by the LLM.\n\nEven though no property exists in the LLM side, the `llm` property\nwould have at least empty object type.\n\n------------------------------\n\nDescription of the current {@link IChatGptSchema.IParameters} type:\n\n> Type of the function parameters.\n> \n> `IChatGptSchema.IParameters` is a type defining a function\'s parameters\n> as a keyworded object type.\n> \n> It also can be utilized for the structured output metadata.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```\n\n### Description of {@link $defs} property:\n\n> Collection of the named types.\n\n### Description of {@link properties} property:\n\n> Properties of the object.\n> \n> The `properties` means a list of key-value pairs of the object\'s\n> regular properties. The key is the name of the regular property,\n> and the value is the type schema info.',
|
|
3049
|
-
type: "object",
|
|
3050
|
-
properties: {
|
|
3051
|
-
$defs: {
|
|
3052
|
-
title: "Collection of the named types",
|
|
3053
|
-
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
3054
|
-
},
|
|
3055
|
-
additionalProperties: {
|
|
3056
|
-
title: "Additional properties' info",
|
|
3057
|
-
description: "Additional properties' info.\n\nThe `additionalProperties` means the type schema info of the additional\nproperties that are not listed in the {@link properties}.\n\nBy the way, it is not allowed in the parameters level.",
|
|
3058
|
-
type: "boolean",
|
|
3059
|
-
enum: [ false ]
|
|
3060
|
-
},
|
|
3061
|
-
type: {
|
|
3062
|
-
title: "Discriminator value of the type",
|
|
3063
|
-
description: "Discriminator value of the type.",
|
|
3064
|
-
type: "string",
|
|
3065
|
-
enum: [ "object" ]
|
|
3066
|
-
},
|
|
3067
|
-
properties: {
|
|
3068
|
-
title: "Properties of the object",
|
|
3069
|
-
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
3070
|
-
},
|
|
3071
|
-
required: {
|
|
3072
|
-
title: "List of key values of the required properties",
|
|
3073
|
-
description: 'List of key values of the required properties.\n\nThe `required` means a list of the key values of the required\n{@link properties}. If some property key is not listed in the `required`\nlist, it means that property is optional. Otherwise some property key\nexists in the `required` list, it means that the property must be filled.\n\nBelow is an example of the {@link properties} and `required`.\n\n```typescript\ninterface SomeObject {\n id: string;\n email: string;\n name?: string;\n}\n```\n\nAs you can see, `id` and `email` {@link properties} are {@link required},\nso that they are listed in the `required` list.\n\n```json\n{\n "type": "object",\n "properties": {\n "id": { "type": "string" },\n "email": { "type": "string" },\n "name": { "type": "string" }\n },\n "required": ["id", "email"]\n}\n```',
|
|
3074
|
-
type: "array",
|
|
3075
|
-
items: {
|
|
3076
|
-
type: "string"
|
|
3077
|
-
}
|
|
3078
|
-
},
|
|
3079
|
-
title: {
|
|
3080
|
-
title: "Title of the schema",
|
|
3081
|
-
description: "Title of the schema.",
|
|
3082
|
-
type: "string"
|
|
3083
|
-
},
|
|
3084
|
-
description: {
|
|
3085
|
-
title: "Detailed description of the schema",
|
|
3086
|
-
description: "Detailed description of the schema.",
|
|
3087
|
-
type: "string"
|
|
3088
|
-
},
|
|
3089
|
-
deprecated: {
|
|
3090
|
-
title: "Whether the type is deprecated or not",
|
|
3091
|
-
description: "Whether the type is deprecated or not.",
|
|
3092
|
-
type: "boolean"
|
|
3093
|
-
},
|
|
3094
|
-
example: {
|
|
3095
|
-
title: "Example value",
|
|
3096
|
-
description: "Example value."
|
|
3097
|
-
},
|
|
3098
|
-
examples: {
|
|
3099
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3100
|
-
type: "object",
|
|
3101
|
-
properties: {},
|
|
3102
|
-
required: [],
|
|
3103
|
-
additionalProperties: {}
|
|
3104
|
-
}
|
|
3105
|
-
},
|
|
3106
|
-
required: [ "$defs", "additionalProperties", "type", "properties", "required" ]
|
|
3107
|
-
},
|
|
3108
|
-
human: {
|
|
3109
|
-
title: "Parameters that would be composed by the human",
|
|
3110
|
-
description: "Parameters that would be composed by the human.",
|
|
3111
|
-
anyOf: [ {
|
|
3112
|
-
type: "null"
|
|
3113
|
-
}, {
|
|
3114
|
-
type: "object",
|
|
3115
|
-
properties: {
|
|
3116
|
-
$defs: {
|
|
3117
|
-
title: "Collection of the named types",
|
|
3118
|
-
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
3119
|
-
},
|
|
3120
|
-
additionalProperties: {
|
|
3121
|
-
title: "Additional properties' info",
|
|
3122
|
-
description: "Additional properties' info.\n\nThe `additionalProperties` means the type schema info of the additional\nproperties that are not listed in the {@link properties}.\n\nBy the way, it is not allowed in the parameters level.",
|
|
3123
|
-
type: "boolean",
|
|
3124
|
-
enum: [ false ]
|
|
3125
|
-
},
|
|
3126
|
-
type: {
|
|
3127
|
-
title: "Discriminator value of the type",
|
|
3128
|
-
description: "Discriminator value of the type.",
|
|
3129
|
-
type: "string",
|
|
3130
|
-
enum: [ "object" ]
|
|
3131
|
-
},
|
|
3132
|
-
properties: {
|
|
3133
|
-
title: "Properties of the object",
|
|
3134
|
-
$ref: "#/$defs/RecordstringIChatGptSchema"
|
|
3135
|
-
},
|
|
3136
|
-
required: {
|
|
3137
|
-
title: "List of key values of the required properties",
|
|
3138
|
-
description: 'List of key values of the required properties.\n\nThe `required` means a list of the key values of the required\n{@link properties}. If some property key is not listed in the `required`\nlist, it means that property is optional. Otherwise some property key\nexists in the `required` list, it means that the property must be filled.\n\nBelow is an example of the {@link properties} and `required`.\n\n```typescript\ninterface SomeObject {\n id: string;\n email: string;\n name?: string;\n}\n```\n\nAs you can see, `id` and `email` {@link properties} are {@link required},\nso that they are listed in the `required` list.\n\n```json\n{\n "type": "object",\n "properties": {\n "id": { "type": "string" },\n "email": { "type": "string" },\n "name": { "type": "string" }\n },\n "required": ["id", "email"]\n}\n```',
|
|
3139
|
-
type: "array",
|
|
3140
|
-
items: {
|
|
3141
|
-
type: "string"
|
|
3142
|
-
}
|
|
3143
|
-
},
|
|
3144
|
-
title: {
|
|
3145
|
-
title: "Title of the schema",
|
|
3146
|
-
description: "Title of the schema.",
|
|
3147
|
-
type: "string"
|
|
3148
|
-
},
|
|
3149
|
-
description: {
|
|
3150
|
-
title: "Detailed description of the schema",
|
|
3151
|
-
description: "Detailed description of the schema.",
|
|
3152
|
-
type: "string"
|
|
3153
|
-
},
|
|
3154
|
-
deprecated: {
|
|
3155
|
-
title: "Whether the type is deprecated or not",
|
|
3156
|
-
description: "Whether the type is deprecated or not.",
|
|
3157
|
-
type: "boolean"
|
|
3158
|
-
},
|
|
3159
|
-
example: {
|
|
3160
|
-
title: "Example value",
|
|
3161
|
-
description: "Example value."
|
|
3162
|
-
},
|
|
3163
|
-
examples: {
|
|
3164
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3165
|
-
type: "object",
|
|
3166
|
-
properties: {},
|
|
3167
|
-
required: [],
|
|
3168
|
-
additionalProperties: {}
|
|
3169
|
-
}
|
|
3170
|
-
},
|
|
3171
|
-
required: [ "$defs", "additionalProperties", "type", "properties", "required" ],
|
|
3172
|
-
description: 'Description of the current {@link IChatGptSchema.IParameters} type:\n\n> Type of the function parameters.\n> \n> `IChatGptSchema.IParameters` is a type defining a function\'s parameters\n> as a keyworded object type.\n> \n> It also can be utilized for the structured output metadata.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```\n\n### Description of {@link $defs} property:\n\n> Collection of the named types.\n\n### Description of {@link properties} property:\n\n> Properties of the object.\n> \n> The `properties` means a list of key-value pairs of the object\'s\n> regular properties. The key is the name of the regular property,\n> and the value is the type schema info.'
|
|
3173
|
-
} ]
|
|
3174
|
-
}
|
|
2430
|
+
description: {
|
|
2431
|
+
title: "Detailed description of the schema",
|
|
2432
|
+
description: "Detailed description of the schema.",
|
|
2433
|
+
type: "string"
|
|
3175
2434
|
},
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3182
|
-
|
|
3183
|
-
|
|
3184
|
-
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
type: "string"
|
|
3190
|
-
}
|
|
3191
|
-
},
|
|
3192
|
-
type: {
|
|
3193
|
-
title: "Discriminator value of the type",
|
|
3194
|
-
description: "Discriminator value of the type.",
|
|
3195
|
-
type: "string",
|
|
3196
|
-
enum: [ "string" ]
|
|
3197
|
-
},
|
|
3198
|
-
title: {
|
|
3199
|
-
title: "Title of the schema",
|
|
3200
|
-
description: "Title of the schema.",
|
|
3201
|
-
type: "string"
|
|
3202
|
-
},
|
|
3203
|
-
description: {
|
|
3204
|
-
title: "Detailed description of the schema",
|
|
3205
|
-
description: "Detailed description of the schema.",
|
|
3206
|
-
type: "string"
|
|
3207
|
-
},
|
|
3208
|
-
deprecated: {
|
|
3209
|
-
title: "Whether the type is deprecated or not",
|
|
3210
|
-
description: "Whether the type is deprecated or not.",
|
|
3211
|
-
type: "boolean"
|
|
3212
|
-
},
|
|
3213
|
-
example: {
|
|
3214
|
-
title: "Example value",
|
|
3215
|
-
description: "Example value."
|
|
3216
|
-
},
|
|
3217
|
-
examples: {
|
|
3218
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3219
|
-
type: "object",
|
|
3220
|
-
properties: {},
|
|
3221
|
-
required: [],
|
|
3222
|
-
additionalProperties: {}
|
|
3223
|
-
}
|
|
3224
|
-
},
|
|
3225
|
-
required: [ "type" ],
|
|
3226
|
-
description: 'Description of the current {@link IChatGptSchema.IString} type:\n\n> String type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3227
|
-
}, {
|
|
3228
|
-
type: "object",
|
|
3229
|
-
properties: {
|
|
3230
|
-
enum: {
|
|
3231
|
-
title: "Enumeration values",
|
|
3232
|
-
description: "Enumeration values.",
|
|
3233
|
-
type: "array",
|
|
3234
|
-
items: {
|
|
3235
|
-
type: "number"
|
|
3236
|
-
}
|
|
3237
|
-
},
|
|
3238
|
-
type: {
|
|
3239
|
-
title: "Discriminator value of the type",
|
|
3240
|
-
description: "Discriminator value of the type.",
|
|
3241
|
-
type: "string",
|
|
3242
|
-
enum: [ "number" ]
|
|
3243
|
-
},
|
|
3244
|
-
title: {
|
|
3245
|
-
title: "Title of the schema",
|
|
3246
|
-
description: "Title of the schema.",
|
|
3247
|
-
type: "string"
|
|
3248
|
-
},
|
|
3249
|
-
description: {
|
|
3250
|
-
title: "Detailed description of the schema",
|
|
3251
|
-
description: "Detailed description of the schema.",
|
|
3252
|
-
type: "string"
|
|
3253
|
-
},
|
|
3254
|
-
deprecated: {
|
|
3255
|
-
title: "Whether the type is deprecated or not",
|
|
3256
|
-
description: "Whether the type is deprecated or not.",
|
|
3257
|
-
type: "boolean"
|
|
3258
|
-
},
|
|
3259
|
-
example: {
|
|
3260
|
-
title: "Example value",
|
|
3261
|
-
description: "Example value."
|
|
3262
|
-
},
|
|
3263
|
-
examples: {
|
|
3264
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3265
|
-
type: "object",
|
|
3266
|
-
properties: {},
|
|
3267
|
-
required: [],
|
|
3268
|
-
additionalProperties: {}
|
|
3269
|
-
}
|
|
3270
|
-
},
|
|
3271
|
-
required: [ "type" ],
|
|
3272
|
-
description: 'Description of the current {@link IChatGptSchema.INumber} type:\n\n> Number (double) type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3273
|
-
}, {
|
|
3274
|
-
type: "object",
|
|
3275
|
-
properties: {
|
|
3276
|
-
enum: {
|
|
3277
|
-
title: "Enumeration values",
|
|
3278
|
-
description: "Enumeration values.",
|
|
3279
|
-
type: "array",
|
|
3280
|
-
items: {
|
|
3281
|
-
type: "number"
|
|
3282
|
-
}
|
|
3283
|
-
},
|
|
3284
|
-
type: {
|
|
3285
|
-
title: "Discriminator value of the type",
|
|
3286
|
-
description: "Discriminator value of the type.",
|
|
3287
|
-
type: "string",
|
|
3288
|
-
enum: [ "integer" ]
|
|
3289
|
-
},
|
|
3290
|
-
title: {
|
|
3291
|
-
title: "Title of the schema",
|
|
3292
|
-
description: "Title of the schema.",
|
|
3293
|
-
type: "string"
|
|
3294
|
-
},
|
|
3295
|
-
description: {
|
|
3296
|
-
title: "Detailed description of the schema",
|
|
3297
|
-
description: "Detailed description of the schema.",
|
|
3298
|
-
type: "string"
|
|
3299
|
-
},
|
|
3300
|
-
deprecated: {
|
|
3301
|
-
title: "Whether the type is deprecated or not",
|
|
3302
|
-
description: "Whether the type is deprecated or not.",
|
|
3303
|
-
type: "boolean"
|
|
3304
|
-
},
|
|
3305
|
-
example: {
|
|
3306
|
-
title: "Example value",
|
|
3307
|
-
description: "Example value."
|
|
3308
|
-
},
|
|
3309
|
-
examples: {
|
|
3310
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3311
|
-
type: "object",
|
|
3312
|
-
properties: {},
|
|
3313
|
-
required: [],
|
|
3314
|
-
additionalProperties: {}
|
|
3315
|
-
}
|
|
3316
|
-
},
|
|
3317
|
-
required: [ "type" ],
|
|
3318
|
-
description: 'Description of the current {@link IChatGptSchema.IInteger} type:\n\n> Integer type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3319
|
-
}, {
|
|
3320
|
-
type: "object",
|
|
3321
|
-
properties: {
|
|
3322
|
-
enum: {
|
|
3323
|
-
title: "Enumeration values",
|
|
3324
|
-
description: "Enumeration values.",
|
|
3325
|
-
type: "array",
|
|
3326
|
-
items: {
|
|
3327
|
-
type: "boolean"
|
|
3328
|
-
}
|
|
3329
|
-
},
|
|
3330
|
-
type: {
|
|
3331
|
-
title: "Discriminator value of the type",
|
|
3332
|
-
description: "Discriminator value of the type.",
|
|
3333
|
-
type: "string",
|
|
3334
|
-
enum: [ "boolean" ]
|
|
3335
|
-
},
|
|
3336
|
-
title: {
|
|
3337
|
-
title: "Title of the schema",
|
|
3338
|
-
description: "Title of the schema.",
|
|
3339
|
-
type: "string"
|
|
3340
|
-
},
|
|
3341
|
-
description: {
|
|
3342
|
-
title: "Detailed description of the schema",
|
|
3343
|
-
description: "Detailed description of the schema.",
|
|
3344
|
-
type: "string"
|
|
3345
|
-
},
|
|
3346
|
-
deprecated: {
|
|
3347
|
-
title: "Whether the type is deprecated or not",
|
|
3348
|
-
description: "Whether the type is deprecated or not.",
|
|
3349
|
-
type: "boolean"
|
|
3350
|
-
},
|
|
3351
|
-
example: {
|
|
3352
|
-
title: "Example value",
|
|
3353
|
-
description: "Example value."
|
|
3354
|
-
},
|
|
3355
|
-
examples: {
|
|
3356
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3357
|
-
type: "object",
|
|
3358
|
-
properties: {},
|
|
3359
|
-
required: [],
|
|
3360
|
-
additionalProperties: {}
|
|
3361
|
-
}
|
|
3362
|
-
},
|
|
3363
|
-
required: [ "type" ],
|
|
3364
|
-
description: 'Description of the current {@link IChatGptSchema.IBoolean} type:\n\n> Boolean type info.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3365
|
-
}, {
|
|
3366
|
-
$ref: "#/$defs/IChatGptSchema.IArray"
|
|
3367
|
-
}, {
|
|
3368
|
-
$ref: "#/$defs/IChatGptSchema.IObject"
|
|
3369
|
-
}, {
|
|
3370
|
-
type: "object",
|
|
3371
|
-
properties: {
|
|
3372
|
-
$ref: {
|
|
3373
|
-
title: "Reference to the named schema",
|
|
3374
|
-
description: "Reference to the named schema.\n\nThe `ref` is a reference to the named schema. Format of the `$ref` is\nfollowing the JSON Pointer specification. In the OpenAPI, the `$ref`\nstarts with `#/$defs/` which means the type is stored in\nthe {@link IChatGptSchema.IParameters.$defs} object.\n\n- `#/$defs/SomeObject`\n- `#/$defs/AnotherObject`",
|
|
3375
|
-
type: "string"
|
|
3376
|
-
},
|
|
3377
|
-
title: {
|
|
3378
|
-
title: "Title of the schema",
|
|
3379
|
-
description: "Title of the schema.",
|
|
3380
|
-
type: "string"
|
|
3381
|
-
},
|
|
3382
|
-
description: {
|
|
3383
|
-
title: "Detailed description of the schema",
|
|
3384
|
-
description: "Detailed description of the schema.",
|
|
3385
|
-
type: "string"
|
|
3386
|
-
},
|
|
3387
|
-
deprecated: {
|
|
3388
|
-
title: "Whether the type is deprecated or not",
|
|
3389
|
-
description: "Whether the type is deprecated or not.",
|
|
3390
|
-
type: "boolean"
|
|
3391
|
-
},
|
|
3392
|
-
example: {
|
|
3393
|
-
title: "Example value",
|
|
3394
|
-
description: "Example value."
|
|
3395
|
-
},
|
|
3396
|
-
examples: {
|
|
3397
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3398
|
-
type: "object",
|
|
3399
|
-
properties: {},
|
|
3400
|
-
required: [],
|
|
3401
|
-
additionalProperties: {}
|
|
3402
|
-
}
|
|
3403
|
-
},
|
|
3404
|
-
required: [ "$ref" ],
|
|
3405
|
-
description: 'Description of the current {@link IChatGptSchema.IReference} type:\n\n> Reference type directing named schema.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3406
|
-
}, {
|
|
3407
|
-
$ref: "#/$defs/IChatGptSchema.IAnyOf"
|
|
3408
|
-
}, {
|
|
3409
|
-
type: "object",
|
|
3410
|
-
properties: {
|
|
3411
|
-
title: {
|
|
3412
|
-
title: "Title of the schema",
|
|
3413
|
-
description: "Title of the schema.",
|
|
3414
|
-
type: "string"
|
|
3415
|
-
},
|
|
3416
|
-
description: {
|
|
3417
|
-
title: "Detailed description of the schema",
|
|
3418
|
-
description: "Detailed description of the schema.",
|
|
3419
|
-
type: "string"
|
|
3420
|
-
},
|
|
3421
|
-
deprecated: {
|
|
3422
|
-
title: "Whether the type is deprecated or not",
|
|
3423
|
-
description: "Whether the type is deprecated or not.",
|
|
3424
|
-
type: "boolean"
|
|
3425
|
-
},
|
|
3426
|
-
example: {
|
|
3427
|
-
title: "Example value",
|
|
3428
|
-
description: "Example value."
|
|
3429
|
-
},
|
|
3430
|
-
examples: {
|
|
3431
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3432
|
-
type: "object",
|
|
3433
|
-
properties: {},
|
|
3434
|
-
required: [],
|
|
3435
|
-
additionalProperties: {}
|
|
3436
|
-
}
|
|
3437
|
-
},
|
|
3438
|
-
required: [],
|
|
3439
|
-
description: 'Description of the current {@link IChatGptSchema.IUnknown} type:\n\n> Unknown, the `any` type.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3440
|
-
}, {
|
|
3441
|
-
type: "object",
|
|
3442
|
-
properties: {
|
|
3443
|
-
type: {
|
|
3444
|
-
title: "Discriminator value of the type",
|
|
3445
|
-
description: "Discriminator value of the type.",
|
|
3446
|
-
type: "string",
|
|
3447
|
-
enum: [ "null" ]
|
|
3448
|
-
},
|
|
3449
|
-
title: {
|
|
3450
|
-
title: "Title of the schema",
|
|
3451
|
-
description: "Title of the schema.",
|
|
3452
|
-
type: "string"
|
|
3453
|
-
},
|
|
3454
|
-
description: {
|
|
3455
|
-
title: "Detailed description of the schema",
|
|
3456
|
-
description: "Detailed description of the schema.",
|
|
3457
|
-
type: "string"
|
|
3458
|
-
},
|
|
3459
|
-
deprecated: {
|
|
3460
|
-
title: "Whether the type is deprecated or not",
|
|
3461
|
-
description: "Whether the type is deprecated or not.",
|
|
3462
|
-
type: "boolean"
|
|
3463
|
-
},
|
|
3464
|
-
example: {
|
|
3465
|
-
title: "Example value",
|
|
3466
|
-
description: "Example value."
|
|
3467
|
-
},
|
|
3468
|
-
examples: {
|
|
3469
|
-
description: "List of example values as key-value pairs.\n\n------------------------------\n\nDescription of the current {@link Recordstringany} type:\n\n> Construct a type with a set of properties K of type T",
|
|
3470
|
-
type: "object",
|
|
3471
|
-
properties: {},
|
|
3472
|
-
required: [],
|
|
3473
|
-
additionalProperties: {}
|
|
3474
|
-
}
|
|
3475
|
-
},
|
|
3476
|
-
required: [ "type" ],
|
|
3477
|
-
description: 'Description of the current {@link IChatGptSchema.INull} type:\n\n> Null type.\n\n------------------------------\n\nDescription of the parent {@link IChatGptSchema} type:\n\n> Type schema info of the ChatGPT.\n> \n> `IChatGptSchema` is a type schema info of the ChatGPT function calling.\n> \n> `IChatGptSchema` basically follows the JSON schema definition of the OpenAPI v3.1\n> speciifcation; {@link OpenApiV3_1.IJsonSchema}.\n> \n> However, the `IChatGptSchema` does not follow the entire specification of\n> the OpenAPI v3.1. It has own specific restrictions and definitions. Here is the\n> list of how `IChatGptSchema` is different with the OpenAPI v3.1 JSON schema.\n> \n> - Decompose mixed type: {@link OpenApiV3_1.IJsonSchema.IMixed}\n> - Resolve nullable property: {@link OpenApiV3_1.IJsonSchema.__ISignificant.nullable}\n> - Tuple type is banned: {@link OpenApiV3_1.IJsonSchema.ITuple.prefixItems}\n> - Constant type is banned: {@link OpenApiV3_1.IJsonSchema.IConstant}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IOneOf} to {@link IChatGptSchema.IAnOf}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IAllOf} to {@link IChatGptSchema.IObject}\n> - Merge {@link OpenApiV3_1.IJsonSchema.IRecursiveReference} to {@link IChatGptSchema.IReference}\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> If compare with the {@link OpenApi.IJsonSchema}, the emended JSON schema specification,\n> \n> - {@link IChatGptSchema.IAnyOf} instead of the {@link OpenApi.IJsonSchema.IOneOf}\n> - {@link IChatGptSchema.IParameters.$defs} instead of the {@link OpenApi.IJsonSchema.IComponents.schemas}\n> - {@link IChatGptSchema.IString.enum} instead of the {@link OpenApi.IJsonSchema.IConstant}\n> - {@link IChatGptSchema.additionalProperties} is fixed to `false`\n> - No tuple type {@link OpenApi.IJsonSchema.ITuple} support\n> - When {@link IChatGptSchema.IConfig.strict} mode\n> - Every object properties must be required\n> - Do not allow {@link IChatGptSchema.IObject.additionalProperties}\n> \n> For reference, if you\'ve composed the `IChatGptSchema` type with the\n> {@link IChatGptSchema.IConfig.reference} `false` option (default is `false`),\n> only the recursived named types would be archived into the\n> {@link IChatGptSchema.IParameters.$defs}, and the others would be ecaped from the\n> {@link IChatGptSchema.IReference} type.\n> \n> Also, OpenAI has banned below constraint properties. Instead, `IChatGptSchema`\n> fills the {@link IChatGptSchema.__IAttribute.description} property with\n> the comment text like `"@format uuid"`.\n> \n> - {@link OpenApi.IJsonSchema.INumber.minimum}\n> - {@link OpenApi.IJsonSchema.INumber.maximum}\n> - {@link OpenApi.IJsonSchema.INumber.multipleOf}\n> - {@link OpenApi.IJsonSchema.IString.minLength}\n> - {@link OpenApi.IJsonSchema.IString.maxLength}\n> - {@link OpenApi.IJsonSchema.IString.format}\n> - {@link OpenApi.IJsonSchema.IString.pattern}\n> - {@link OpenApi.IJsonSchema.IString.contentMediaType}\n> - {@link OpenApi.IJsonSchema.IString.default}\n> - {@link OpenApi.IJsonSchema.IArray.minItems}\n> - {@link OpenApi.IJsonSchema.IArray.maxItems}\n> - {@link OpenApi.IJsonSchema.IArray.unique}\n> \n> Additionally, OpenAI cannot define the `description` property to the\n> {@link IChatGptSchema.IReference} type, and even does not understand\n> the capsulization to the {@link IChatGptSchema.IAnyOf} type.\n> Therefore, the `description` is written to the parent object type,\n> not the reference type.\n> \n> ```json\n> {\n> "type": "object",\n> "description": "### Description of {@link something} property.\\n\\n> Hello?",\n> "properties": {\n> "something": {\n> "$ref": "#/$defs/SomeObject"\n> }\n> }\n> }\n> ```'
|
|
3478
|
-
} ]
|
|
3479
|
-
},
|
|
3480
|
-
description: {
|
|
3481
|
-
title: "Description of the function",
|
|
3482
|
-
description: "Description of the function.\n\n`IHttpLlmFunction.description` is composed by below rule:\n\n1. Starts from the {@link OpenApi.IOperation.summary} paragraph.\n2. The next paragraphs are filled with the\n {@link OpenApi.IOperation.description}. By the way, if the first\n paragraph of {@link OpenApi.IOperation.description} is same with the\n {@link OpenApi.IOperation.summary}, it would not be duplicated.\n3. Parameters' descriptions are added with `@param` tag.\n4. {@link OpenApi.IOperation.security Security requirements} are added\n with `@security` tag.\n5. Tag names are added with `@tag` tag.\n6. If {@link OpenApi.IOperation.deprecated}, `@deprecated` tag is added.\n\nFor reference, the `description` is very important property to teach\nthe purpose of the function to the LLM (Language Large Model), and\nLLM actually determines which function to call by the description.\n\nAlso, when the LLM conversates with the user, the `description` is\nused to explain the function to the user. Therefore, the `description`\nproperty has the highest priority, and you have to consider it.",
|
|
3483
|
-
type: "string"
|
|
2435
|
+
deprecated: {
|
|
2436
|
+
title: "Whether the type is deprecated or not",
|
|
2437
|
+
description: "Whether the type is deprecated or not.",
|
|
2438
|
+
type: "boolean"
|
|
2439
|
+
},
|
|
2440
|
+
example: {
|
|
2441
|
+
title: "Example value",
|
|
2442
|
+
description: "Example value."
|
|
2443
|
+
},
|
|
2444
|
+
examples: {
|
|
2445
|
+
title: "List of example values as key-value pairs",
|
|
2446
|
+
$ref: "#/$defs/Recordstringany"
|
|
2447
|
+
}
|
|
3484
2448
|
},
|
|
3485
|
-
|
|
3486
|
-
|
|
3487
|
-
|
|
3488
|
-
|
|
2449
|
+
required: []
|
|
2450
|
+
},
|
|
2451
|
+
"IChatGptSchema.INull": {
|
|
2452
|
+
description: "Null type.\n\n### Description of {@link examples} property:\n\n> List of example values as key-value pairs.",
|
|
2453
|
+
type: "object",
|
|
2454
|
+
properties: {
|
|
2455
|
+
type: {
|
|
2456
|
+
title: "Discriminator value of the type",
|
|
2457
|
+
description: "Discriminator value of the type.",
|
|
2458
|
+
type: "string",
|
|
2459
|
+
enum: [ "null" ]
|
|
2460
|
+
},
|
|
2461
|
+
title: {
|
|
2462
|
+
title: "Title of the schema",
|
|
2463
|
+
description: "Title of the schema.",
|
|
2464
|
+
type: "string"
|
|
2465
|
+
},
|
|
2466
|
+
description: {
|
|
2467
|
+
title: "Detailed description of the schema",
|
|
2468
|
+
description: "Detailed description of the schema.",
|
|
2469
|
+
type: "string"
|
|
2470
|
+
},
|
|
2471
|
+
deprecated: {
|
|
2472
|
+
title: "Whether the type is deprecated or not",
|
|
2473
|
+
description: "Whether the type is deprecated or not.",
|
|
2474
|
+
type: "boolean"
|
|
2475
|
+
},
|
|
2476
|
+
example: {
|
|
2477
|
+
title: "Example value",
|
|
2478
|
+
description: "Example value."
|
|
2479
|
+
},
|
|
2480
|
+
examples: {
|
|
2481
|
+
title: "List of example values as key-value pairs",
|
|
2482
|
+
$ref: "#/$defs/Recordstringany"
|
|
2483
|
+
}
|
|
3489
2484
|
},
|
|
3490
|
-
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
|
|
3494
|
-
|
|
2485
|
+
required: [ "type" ]
|
|
2486
|
+
},
|
|
2487
|
+
"IChatGptSchema.IAnyOf.IDiscriminator": {
|
|
2488
|
+
description: "Discriminator info of the union type.\n\n### Description of {@link mapping} property:\n\n> Mapping of the discriminator value to the schema name.\n> \n> This property is valid only for {@link IReference} typed\n> {@link IAnyOf.oneof} elements. Therefore, `key` of `mapping` is the\n> discriminator value, and `value` of `mapping` is the schema name like\n> `#/components/schemas/SomeObject`.",
|
|
2489
|
+
type: "object",
|
|
2490
|
+
properties: {
|
|
2491
|
+
propertyName: {
|
|
2492
|
+
title: "Property name for the discriminator",
|
|
2493
|
+
description: "Property name for the discriminator.",
|
|
3495
2494
|
type: "string"
|
|
2495
|
+
},
|
|
2496
|
+
mapping: {
|
|
2497
|
+
title: "Mapping of the discriminator value to the schema name",
|
|
2498
|
+
$ref: "#/$defs/Recordstringstring"
|
|
3496
2499
|
}
|
|
2500
|
+
},
|
|
2501
|
+
required: [ "propertyName" ]
|
|
2502
|
+
},
|
|
2503
|
+
Recordstringstring: {
|
|
2504
|
+
description: "Construct a type with a set of properties K of type T",
|
|
2505
|
+
type: "object",
|
|
2506
|
+
properties: {},
|
|
2507
|
+
required: [],
|
|
2508
|
+
additionalProperties: {
|
|
2509
|
+
type: "string"
|
|
3497
2510
|
}
|
|
3498
2511
|
},
|
|
3499
|
-
|
|
2512
|
+
"IHttpLlmFunction.ISeparatedchatgpt": {
|
|
2513
|
+
description: "Collection of separated parameters.\n\n### Description of {@link llm} property:\n\n> Parameters that would be composed by the LLM.\n> \n> Even though no property exists in the LLM side, the `llm` property would\n> have at least empty object type.",
|
|
2514
|
+
type: "object",
|
|
2515
|
+
properties: {
|
|
2516
|
+
llm: {
|
|
2517
|
+
title: "Parameters that would be composed by the LLM",
|
|
2518
|
+
$ref: "#/$defs/IChatGptSchema.IParameters"
|
|
2519
|
+
},
|
|
2520
|
+
human: {
|
|
2521
|
+
title: "Parameters that would be composed by the human",
|
|
2522
|
+
description: "Parameters that would be composed by the human.",
|
|
2523
|
+
anyOf: [ {
|
|
2524
|
+
type: "null"
|
|
2525
|
+
}, {
|
|
2526
|
+
$ref: "#/$defs/IChatGptSchema.IParameters"
|
|
2527
|
+
} ]
|
|
2528
|
+
}
|
|
2529
|
+
},
|
|
2530
|
+
required: [ "llm", "human" ]
|
|
2531
|
+
}
|
|
2532
|
+
}
|
|
2533
|
+
},
|
|
2534
|
+
output: {
|
|
2535
|
+
type: "array",
|
|
2536
|
+
items: {
|
|
2537
|
+
$ref: "#/$defs/IHttpLlmFunctionchatgpt"
|
|
3500
2538
|
}
|
|
3501
2539
|
},
|
|
3502
2540
|
description: "Get list of API functions.\n\nIf user seems like to request some function calling except this one,\ncall this `getApiFunctions()` to get the list of candidate API functions\nprovided from this application.\n\nAlso, user just wants to list up every remote API functions that can be\ncalled from the backend server, utilize this function too.",
|
|
@@ -3583,7 +2621,7 @@ async function initialize(ctx) {
|
|
|
3583
2621
|
mpsc
|
|
3584
2622
|
};
|
|
3585
2623
|
mpsc.produce(choice.delta.content);
|
|
3586
|
-
const event =
|
|
2624
|
+
const event = createAssistantMessageEvent({
|
|
3587
2625
|
stream: streamDefaultReaderToAsyncGenerator(mpsc.consumer.getReader()),
|
|
3588
2626
|
done: () => mpsc.done(),
|
|
3589
2627
|
get: () => textContext[choice.index].content,
|
|
@@ -3638,27 +2676,30 @@ const CONTAINER = {
|
|
|
3638
2676
|
description: "List of target functions.",
|
|
3639
2677
|
type: "array",
|
|
3640
2678
|
items: {
|
|
3641
|
-
|
|
3642
|
-
type: "object",
|
|
3643
|
-
properties: {
|
|
3644
|
-
reason: {
|
|
3645
|
-
title: "The reason of the function selection",
|
|
3646
|
-
description: "The reason of the function selection.\n\nJust write the reason why you've determined to select this function.",
|
|
3647
|
-
type: "string"
|
|
3648
|
-
},
|
|
3649
|
-
name: {
|
|
3650
|
-
title: "Name of the target function to call",
|
|
3651
|
-
description: "Name of the target function to call.",
|
|
3652
|
-
type: "string"
|
|
3653
|
-
}
|
|
3654
|
-
},
|
|
3655
|
-
required: [ "reason", "name" ]
|
|
2679
|
+
$ref: "#/$defs/___IChatFunctionReference"
|
|
3656
2680
|
}
|
|
3657
2681
|
}
|
|
3658
2682
|
},
|
|
3659
2683
|
required: [ "functions" ],
|
|
3660
2684
|
additionalProperties: false,
|
|
3661
|
-
$defs: {
|
|
2685
|
+
$defs: {
|
|
2686
|
+
___IChatFunctionReference: {
|
|
2687
|
+
type: "object",
|
|
2688
|
+
properties: {
|
|
2689
|
+
reason: {
|
|
2690
|
+
title: "The reason of the function selection",
|
|
2691
|
+
description: "The reason of the function selection.\n\nJust write the reason why you've determined to select this function.",
|
|
2692
|
+
type: "string"
|
|
2693
|
+
},
|
|
2694
|
+
name: {
|
|
2695
|
+
title: "Name of the target function to call",
|
|
2696
|
+
description: "Name of the target function to call.",
|
|
2697
|
+
type: "string"
|
|
2698
|
+
}
|
|
2699
|
+
},
|
|
2700
|
+
required: [ "reason", "name" ]
|
|
2701
|
+
}
|
|
2702
|
+
}
|
|
3662
2703
|
},
|
|
3663
2704
|
description: "Select proper API functions to call.\n\nIf you A.I. agent has found some proper API functions to call\nfrom the conversation with user, please select the API functions\njust by calling this function.\n\nWhen user wants to call a same function multiply, you A.I. agent must\nlist up it multiply in the `functions` property. Otherwise the user has\nrequested to call many different functions, you A.I. agent have to assign\nthem all into the `functions` property.\n\nAlso, if you A.I. agent can't specify a specific function to call due to lack\nof specificity or homogeneity of candidate functions, just assign all of them\nby in the` functions` property` too. Instead, when you A.I. agent can specify\na specific function to call, the others would be eliminated.",
|
|
3664
2705
|
validate: (() => {
|
|
@@ -3906,7 +2947,7 @@ async function step(ctx, operations, retry, failures) {
|
|
|
3906
2947
|
}
|
|
3907
2948
|
}
|
|
3908
2949
|
if (choice.message.role === "assistant" && choice.message.content != null && choice.message.content.length !== 0) {
|
|
3909
|
-
const event =
|
|
2950
|
+
const event = createAssistantMessageEvent({
|
|
3910
2951
|
stream: toAsyncGenerator(choice.message.content),
|
|
3911
2952
|
join: async () => Promise.resolve(choice.message.content),
|
|
3912
2953
|
done: () => true,
|
|
@@ -4272,7 +3313,7 @@ class Agentica {
|
|
|
4272
3313
|
|
|
4273
3314
|
var index$2 = Object.freeze({
|
|
4274
3315
|
__proto__: null,
|
|
4275
|
-
|
|
3316
|
+
createAssistantMessageEvent,
|
|
4276
3317
|
createAssistantMessageHistory,
|
|
4277
3318
|
createCallEvent,
|
|
4278
3319
|
createCancelEvent,
|
|
@@ -4282,6 +3323,7 @@ var index$2 = Object.freeze({
|
|
|
4282
3323
|
createExecuteEvent,
|
|
4283
3324
|
createExecuteHistory,
|
|
4284
3325
|
createInitializeEvent,
|
|
3326
|
+
createJsonParseErrorEvent,
|
|
4285
3327
|
createOperationSelection,
|
|
4286
3328
|
createRequestEvent,
|
|
4287
3329
|
createResponseEvent,
|
|
@@ -4345,7 +3387,7 @@ function assertHttpController(props) {
|
|
|
4345
3387
|
if (undefined === value) return true;
|
|
4346
3388
|
return "object" === typeof value && null !== value && _iu10(value);
|
|
4347
3389
|
}));
|
|
4348
|
-
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
3390
|
+
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
4349
3391
|
const _io33 = input => "basic" === input.type && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
4350
3392
|
const _io34 = input => "oauth2" === input.type && "implicit" === input.flow && (undefined === input.authorizationUrl || "string" === typeof input.authorizationUrl) && (undefined === input.scopes || "object" === typeof input.scopes && null !== input.scopes && false === Array.isArray(input.scopes) && _io35(input.scopes)) && (undefined === input.description || "string" === typeof input.description);
|
|
4351
3393
|
const _io35 = input => Object.keys(input).every((key => {
|
|
@@ -4443,7 +3485,7 @@ function assertHttpController(props) {
|
|
|
4443
3485
|
if (undefined === value) return true;
|
|
4444
3486
|
return "object" === typeof value && null !== value && _io82(value);
|
|
4445
3487
|
}));
|
|
4446
|
-
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
3488
|
+
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu3(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io75(input.examples));
|
|
4447
3489
|
const _io83 = input => Object.keys(input).every((key => {
|
|
4448
3490
|
const value = input[key];
|
|
4449
3491
|
if (undefined === value) return true;
|
|
@@ -4455,7 +3497,7 @@ function assertHttpController(props) {
|
|
|
4455
3497
|
if (undefined === value) return true;
|
|
4456
3498
|
return "object" === typeof value && null !== value && _iu14(value);
|
|
4457
3499
|
}));
|
|
4458
|
-
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
3500
|
+
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
4459
3501
|
const _io87 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
4460
3502
|
const _io88 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
4461
3503
|
const _io89 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io90(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -4529,7 +3571,7 @@ function assertHttpController(props) {
|
|
|
4529
3571
|
return "object" === typeof value && null !== value && false === Array.isArray(value) && _io131(value);
|
|
4530
3572
|
}));
|
|
4531
3573
|
const _io131 = input => (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _iu6(elem)))) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io106(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io138(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io138(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io138(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io138(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io138(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io138(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io138(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io138(input.trace));
|
|
4532
|
-
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
3574
|
+
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu5(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io133(input.examples));
|
|
4533
3575
|
const _io133 = input => Object.keys(input).every((key => {
|
|
4534
3576
|
const value = input[key];
|
|
4535
3577
|
if (undefined === value) return true;
|
|
@@ -4581,7 +3623,7 @@ function assertHttpController(props) {
|
|
|
4581
3623
|
if (undefined === value) return true;
|
|
4582
3624
|
return "object" === typeof value && null !== value && _iu21(value);
|
|
4583
3625
|
}));
|
|
4584
|
-
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
3626
|
+
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
4585
3627
|
const _io153 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
4586
3628
|
const _io154 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
4587
3629
|
const _io155 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io156(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -4642,7 +3684,7 @@ function assertHttpController(props) {
|
|
|
4642
3684
|
if (undefined === value) return true;
|
|
4643
3685
|
return "object" === typeof value && null !== value && _iu23(value);
|
|
4644
3686
|
}));
|
|
4645
|
-
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
3687
|
+
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
4646
3688
|
const _io190 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
4647
3689
|
const _io191 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
4648
3690
|
const _io192 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io193(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -4658,7 +3700,7 @@ function assertHttpController(props) {
|
|
|
4658
3700
|
}));
|
|
4659
3701
|
const _io199 = input => (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io200(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io200(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io200(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io200(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io200(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io200(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io200(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io200(input.trace));
|
|
4660
3702
|
const _io200 = input => (undefined === input.operationId || "string" === typeof input.operationId) && (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _io201(elem)))) && (undefined === input.requestBody || "object" === typeof input.requestBody && null !== input.requestBody && false === Array.isArray(input.requestBody) && _io204(input.requestBody)) && (undefined === input.responses || "object" === typeof input.responses && null !== input.responses && false === Array.isArray(input.responses) && _io207(input.responses)) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.security || Array.isArray(input.security) && input.security.every((elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io39(elem)))) && (undefined === input.tags || Array.isArray(input.tags) && input.tags.every((elem => "string" === typeof elem))) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input["x-samchon-human"] || "boolean" === typeof input["x-samchon-human"]) && (undefined === input["x-samchon-accessor"] || Array.isArray(input["x-samchon-accessor"]) && input["x-samchon-accessor"].every((elem => "string" === typeof elem))) && (undefined === input["x-samchon-controller"] || "string" === typeof input["x-samchon-controller"]);
|
|
4661
|
-
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
3703
|
+
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu7(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io202(input.examples));
|
|
4662
3704
|
const _io202 = input => Object.keys(input).every((key => {
|
|
4663
3705
|
const value = input[key];
|
|
4664
3706
|
if (undefined === value) return true;
|
|
@@ -6490,7 +5532,7 @@ function assertHttpController(props) {
|
|
|
6490
5532
|
path: _path + ".type",
|
|
6491
5533
|
expected: '"apiKey"',
|
|
6492
5534
|
value: input.type
|
|
6493
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
5535
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
6494
5536
|
method: "typia.assert",
|
|
6495
5537
|
path: _path + '["in"]',
|
|
6496
5538
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -8383,7 +7425,7 @@ function assertHttpController(props) {
|
|
|
8383
7425
|
path: _path + ".name",
|
|
8384
7426
|
expected: "(string | undefined)",
|
|
8385
7427
|
value: input.name
|
|
8386
|
-
}, _errorFactory)) && ("path" === input["in"] || "
|
|
7428
|
+
}, _errorFactory)) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
8387
7429
|
method: "typia.assert",
|
|
8388
7430
|
path: _path + '["in"]',
|
|
8389
7431
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
@@ -8475,7 +7517,7 @@ function assertHttpController(props) {
|
|
|
8475
7517
|
path: _path + ".type",
|
|
8476
7518
|
expected: '"apiKey"',
|
|
8477
7519
|
value: input.type
|
|
8478
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
7520
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
8479
7521
|
method: "typia.assert",
|
|
8480
7522
|
path: _path + '["in"]',
|
|
8481
7523
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -10899,7 +9941,7 @@ function assertHttpController(props) {
|
|
|
10899
9941
|
path: _path + ".name",
|
|
10900
9942
|
expected: "(string | undefined)",
|
|
10901
9943
|
value: input.name
|
|
10902
|
-
}, _errorFactory)) && ("path" === input["in"] || "
|
|
9944
|
+
}, _errorFactory)) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
10903
9945
|
method: "typia.assert",
|
|
10904
9946
|
path: _path + '["in"]',
|
|
10905
9947
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
@@ -11476,7 +10518,7 @@ function assertHttpController(props) {
|
|
|
11476
10518
|
path: _path + ".type",
|
|
11477
10519
|
expected: '"apiKey"',
|
|
11478
10520
|
value: input.type
|
|
11479
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
10521
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
11480
10522
|
method: "typia.assert",
|
|
11481
10523
|
path: _path + '["in"]',
|
|
11482
10524
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -12772,7 +11814,7 @@ function assertHttpController(props) {
|
|
|
12772
11814
|
path: _path + ".type",
|
|
12773
11815
|
expected: '"apiKey"',
|
|
12774
11816
|
value: input.type
|
|
12775
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
11817
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
12776
11818
|
method: "typia.assert",
|
|
12777
11819
|
path: _path + '["in"]',
|
|
12778
11820
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -13243,7 +12285,7 @@ function assertHttpController(props) {
|
|
|
13243
12285
|
path: _path + ".name",
|
|
13244
12286
|
expected: "(string | undefined)",
|
|
13245
12287
|
value: input.name
|
|
13246
|
-
}, _errorFactory)) && ("path" === input["in"] || "
|
|
12288
|
+
}, _errorFactory)) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
13247
12289
|
method: "typia.assert",
|
|
13248
12290
|
path: _path + '["in"]',
|
|
13249
12291
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
@@ -13717,7 +12759,7 @@ function assertHttpLlmApplication(props) {
|
|
|
13717
12759
|
if (undefined === value) return true;
|
|
13718
12760
|
return "object" === typeof value && null !== value && _iu10(value);
|
|
13719
12761
|
}));
|
|
13720
|
-
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
12762
|
+
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
13721
12763
|
const _io33 = input => "basic" === input.type && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
13722
12764
|
const _io34 = input => "oauth2" === input.type && "implicit" === input.flow && (undefined === input.authorizationUrl || "string" === typeof input.authorizationUrl) && (undefined === input.scopes || "object" === typeof input.scopes && null !== input.scopes && false === Array.isArray(input.scopes) && _io35(input.scopes)) && (undefined === input.description || "string" === typeof input.description);
|
|
13723
12765
|
const _io35 = input => Object.keys(input).every((key => {
|
|
@@ -13815,7 +12857,7 @@ function assertHttpLlmApplication(props) {
|
|
|
13815
12857
|
if (undefined === value) return true;
|
|
13816
12858
|
return "object" === typeof value && null !== value && _io82(value);
|
|
13817
12859
|
}));
|
|
13818
|
-
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
12860
|
+
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu3(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io75(input.examples));
|
|
13819
12861
|
const _io83 = input => Object.keys(input).every((key => {
|
|
13820
12862
|
const value = input[key];
|
|
13821
12863
|
if (undefined === value) return true;
|
|
@@ -13827,7 +12869,7 @@ function assertHttpLlmApplication(props) {
|
|
|
13827
12869
|
if (undefined === value) return true;
|
|
13828
12870
|
return "object" === typeof value && null !== value && _iu14(value);
|
|
13829
12871
|
}));
|
|
13830
|
-
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
12872
|
+
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
13831
12873
|
const _io87 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
13832
12874
|
const _io88 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
13833
12875
|
const _io89 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io90(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -13901,7 +12943,7 @@ function assertHttpLlmApplication(props) {
|
|
|
13901
12943
|
return "object" === typeof value && null !== value && false === Array.isArray(value) && _io131(value);
|
|
13902
12944
|
}));
|
|
13903
12945
|
const _io131 = input => (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _iu6(elem)))) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io106(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io138(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io138(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io138(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io138(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io138(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io138(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io138(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io138(input.trace));
|
|
13904
|
-
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
12946
|
+
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu5(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io133(input.examples));
|
|
13905
12947
|
const _io133 = input => Object.keys(input).every((key => {
|
|
13906
12948
|
const value = input[key];
|
|
13907
12949
|
if (undefined === value) return true;
|
|
@@ -13953,7 +12995,7 @@ function assertHttpLlmApplication(props) {
|
|
|
13953
12995
|
if (undefined === value) return true;
|
|
13954
12996
|
return "object" === typeof value && null !== value && _iu21(value);
|
|
13955
12997
|
}));
|
|
13956
|
-
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
12998
|
+
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
13957
12999
|
const _io153 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
13958
13000
|
const _io154 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
13959
13001
|
const _io155 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io156(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -14014,7 +13056,7 @@ function assertHttpLlmApplication(props) {
|
|
|
14014
13056
|
if (undefined === value) return true;
|
|
14015
13057
|
return "object" === typeof value && null !== value && _iu23(value);
|
|
14016
13058
|
}));
|
|
14017
|
-
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
13059
|
+
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
14018
13060
|
const _io190 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
14019
13061
|
const _io191 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
14020
13062
|
const _io192 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io193(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -14030,7 +13072,7 @@ function assertHttpLlmApplication(props) {
|
|
|
14030
13072
|
}));
|
|
14031
13073
|
const _io199 = input => (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io200(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io200(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io200(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io200(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io200(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io200(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io200(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io200(input.trace));
|
|
14032
13074
|
const _io200 = input => (undefined === input.operationId || "string" === typeof input.operationId) && (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _io201(elem)))) && (undefined === input.requestBody || "object" === typeof input.requestBody && null !== input.requestBody && false === Array.isArray(input.requestBody) && _io204(input.requestBody)) && (undefined === input.responses || "object" === typeof input.responses && null !== input.responses && false === Array.isArray(input.responses) && _io207(input.responses)) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.security || Array.isArray(input.security) && input.security.every((elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io39(elem)))) && (undefined === input.tags || Array.isArray(input.tags) && input.tags.every((elem => "string" === typeof elem))) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input["x-samchon-human"] || "boolean" === typeof input["x-samchon-human"]) && (undefined === input["x-samchon-accessor"] || Array.isArray(input["x-samchon-accessor"]) && input["x-samchon-accessor"].every((elem => "string" === typeof elem))) && (undefined === input["x-samchon-controller"] || "string" === typeof input["x-samchon-controller"]);
|
|
14033
|
-
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
13075
|
+
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu7(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io202(input.examples));
|
|
14034
13076
|
const _io202 = input => Object.keys(input).every((key => {
|
|
14035
13077
|
const value = input[key];
|
|
14036
13078
|
if (undefined === value) return true;
|
|
@@ -15862,7 +14904,7 @@ function assertHttpLlmApplication(props) {
|
|
|
15862
14904
|
path: _path + ".type",
|
|
15863
14905
|
expected: '"apiKey"',
|
|
15864
14906
|
value: input.type
|
|
15865
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
14907
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
15866
14908
|
method: "typia.assert",
|
|
15867
14909
|
path: _path + '["in"]',
|
|
15868
14910
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -17755,7 +16797,7 @@ function assertHttpLlmApplication(props) {
|
|
|
17755
16797
|
path: _path + ".name",
|
|
17756
16798
|
expected: "(string | undefined)",
|
|
17757
16799
|
value: input.name
|
|
17758
|
-
}, _errorFactory)) && ("path" === input["in"] || "
|
|
16800
|
+
}, _errorFactory)) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
17759
16801
|
method: "typia.assert",
|
|
17760
16802
|
path: _path + '["in"]',
|
|
17761
16803
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
@@ -17847,7 +16889,7 @@ function assertHttpLlmApplication(props) {
|
|
|
17847
16889
|
path: _path + ".type",
|
|
17848
16890
|
expected: '"apiKey"',
|
|
17849
16891
|
value: input.type
|
|
17850
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
16892
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
17851
16893
|
method: "typia.assert",
|
|
17852
16894
|
path: _path + '["in"]',
|
|
17853
16895
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -20271,7 +19313,7 @@ function assertHttpLlmApplication(props) {
|
|
|
20271
19313
|
path: _path + ".name",
|
|
20272
19314
|
expected: "(string | undefined)",
|
|
20273
19315
|
value: input.name
|
|
20274
|
-
}, _errorFactory)) && ("path" === input["in"] || "
|
|
19316
|
+
}, _errorFactory)) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
20275
19317
|
method: "typia.assert",
|
|
20276
19318
|
path: _path + '["in"]',
|
|
20277
19319
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
@@ -20848,7 +19890,7 @@ function assertHttpLlmApplication(props) {
|
|
|
20848
19890
|
path: _path + ".type",
|
|
20849
19891
|
expected: '"apiKey"',
|
|
20850
19892
|
value: input.type
|
|
20851
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
19893
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
20852
19894
|
method: "typia.assert",
|
|
20853
19895
|
path: _path + '["in"]',
|
|
20854
19896
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -22144,7 +21186,7 @@ function assertHttpLlmApplication(props) {
|
|
|
22144
21186
|
path: _path + ".type",
|
|
22145
21187
|
expected: '"apiKey"',
|
|
22146
21188
|
value: input.type
|
|
22147
|
-
}, _errorFactory)) && (undefined === input["in"] || "
|
|
21189
|
+
}, _errorFactory)) && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
22148
21190
|
method: "typia.assert",
|
|
22149
21191
|
path: _path + '["in"]',
|
|
22150
21192
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
@@ -22615,7 +21657,7 @@ function assertHttpLlmApplication(props) {
|
|
|
22615
21657
|
path: _path + ".name",
|
|
22616
21658
|
expected: "(string | undefined)",
|
|
22617
21659
|
value: input.name
|
|
22618
|
-
}, _errorFactory)) && ("path" === input["in"] || "
|
|
21660
|
+
}, _errorFactory)) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || __typia_transform__assertGuard._assertGuard(_exceptionable, {
|
|
22619
21661
|
method: "typia.assert",
|
|
22620
21662
|
path: _path + '["in"]',
|
|
22621
21663
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
@@ -24684,7 +23726,7 @@ function validateHttpController(props) {
|
|
|
24684
23726
|
if (undefined === value) return true;
|
|
24685
23727
|
return "object" === typeof value && null !== value && _iu10(value);
|
|
24686
23728
|
}));
|
|
24687
|
-
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
23729
|
+
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
24688
23730
|
const _io33 = input => "basic" === input.type && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
24689
23731
|
const _io34 = input => "oauth2" === input.type && "implicit" === input.flow && (undefined === input.authorizationUrl || "string" === typeof input.authorizationUrl) && (undefined === input.scopes || "object" === typeof input.scopes && null !== input.scopes && false === Array.isArray(input.scopes) && _io35(input.scopes)) && (undefined === input.description || "string" === typeof input.description);
|
|
24690
23732
|
const _io35 = input => Object.keys(input).every((key => {
|
|
@@ -24782,7 +23824,7 @@ function validateHttpController(props) {
|
|
|
24782
23824
|
if (undefined === value) return true;
|
|
24783
23825
|
return "object" === typeof value && null !== value && _io82(value);
|
|
24784
23826
|
}));
|
|
24785
|
-
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
23827
|
+
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu3(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io75(input.examples));
|
|
24786
23828
|
const _io83 = input => Object.keys(input).every((key => {
|
|
24787
23829
|
const value = input[key];
|
|
24788
23830
|
if (undefined === value) return true;
|
|
@@ -24794,7 +23836,7 @@ function validateHttpController(props) {
|
|
|
24794
23836
|
if (undefined === value) return true;
|
|
24795
23837
|
return "object" === typeof value && null !== value && _iu14(value);
|
|
24796
23838
|
}));
|
|
24797
|
-
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
23839
|
+
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
24798
23840
|
const _io87 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
24799
23841
|
const _io88 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
24800
23842
|
const _io89 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io90(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -24868,7 +23910,7 @@ function validateHttpController(props) {
|
|
|
24868
23910
|
return "object" === typeof value && null !== value && false === Array.isArray(value) && _io131(value);
|
|
24869
23911
|
}));
|
|
24870
23912
|
const _io131 = input => (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _iu6(elem)))) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io106(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io138(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io138(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io138(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io138(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io138(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io138(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io138(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io138(input.trace));
|
|
24871
|
-
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
23913
|
+
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu5(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io133(input.examples));
|
|
24872
23914
|
const _io133 = input => Object.keys(input).every((key => {
|
|
24873
23915
|
const value = input[key];
|
|
24874
23916
|
if (undefined === value) return true;
|
|
@@ -24920,7 +23962,7 @@ function validateHttpController(props) {
|
|
|
24920
23962
|
if (undefined === value) return true;
|
|
24921
23963
|
return "object" === typeof value && null !== value && _iu21(value);
|
|
24922
23964
|
}));
|
|
24923
|
-
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
23965
|
+
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
24924
23966
|
const _io153 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
24925
23967
|
const _io154 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
24926
23968
|
const _io155 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io156(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -24981,7 +24023,7 @@ function validateHttpController(props) {
|
|
|
24981
24023
|
if (undefined === value) return true;
|
|
24982
24024
|
return "object" === typeof value && null !== value && _iu23(value);
|
|
24983
24025
|
}));
|
|
24984
|
-
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
24026
|
+
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
24985
24027
|
const _io190 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
24986
24028
|
const _io191 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
24987
24029
|
const _io192 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io193(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -24997,7 +24039,7 @@ function validateHttpController(props) {
|
|
|
24997
24039
|
}));
|
|
24998
24040
|
const _io199 = input => (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io200(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io200(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io200(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io200(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io200(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io200(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io200(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io200(input.trace));
|
|
24999
24041
|
const _io200 = input => (undefined === input.operationId || "string" === typeof input.operationId) && (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _io201(elem)))) && (undefined === input.requestBody || "object" === typeof input.requestBody && null !== input.requestBody && false === Array.isArray(input.requestBody) && _io204(input.requestBody)) && (undefined === input.responses || "object" === typeof input.responses && null !== input.responses && false === Array.isArray(input.responses) && _io207(input.responses)) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.security || Array.isArray(input.security) && input.security.every((elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io39(elem)))) && (undefined === input.tags || Array.isArray(input.tags) && input.tags.every((elem => "string" === typeof elem))) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input["x-samchon-human"] || "boolean" === typeof input["x-samchon-human"]) && (undefined === input["x-samchon-accessor"] || Array.isArray(input["x-samchon-accessor"]) && input["x-samchon-accessor"].every((elem => "string" === typeof elem))) && (undefined === input["x-samchon-controller"] || "string" === typeof input["x-samchon-controller"]);
|
|
25000
|
-
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
24042
|
+
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu7(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io202(input.examples));
|
|
25001
24043
|
const _io202 = input => Object.keys(input).every((key => {
|
|
25002
24044
|
const value = input[key];
|
|
25003
24045
|
if (undefined === value) return true;
|
|
@@ -26495,7 +25537,7 @@ function validateHttpController(props) {
|
|
|
26495
25537
|
path: _path + ".type",
|
|
26496
25538
|
expected: '"apiKey"',
|
|
26497
25539
|
value: input.type
|
|
26498
|
-
}), undefined === input["in"] || "
|
|
25540
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
26499
25541
|
path: _path + '["in"]',
|
|
26500
25542
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
26501
25543
|
value: input["in"]
|
|
@@ -28029,7 +27071,7 @@ function validateHttpController(props) {
|
|
|
28029
27071
|
path: _path + ".name",
|
|
28030
27072
|
expected: "(string | undefined)",
|
|
28031
27073
|
value: input.name
|
|
28032
|
-
}), "path" === input["in"] || "
|
|
27074
|
+
}), "path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
28033
27075
|
path: _path + '["in"]',
|
|
28034
27076
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
28035
27077
|
value: input["in"]
|
|
@@ -28105,7 +27147,7 @@ function validateHttpController(props) {
|
|
|
28105
27147
|
path: _path + ".type",
|
|
28106
27148
|
expected: '"apiKey"',
|
|
28107
27149
|
value: input.type
|
|
28108
|
-
}), undefined === input["in"] || "
|
|
27150
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
28109
27151
|
path: _path + '["in"]',
|
|
28110
27152
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
28111
27153
|
value: input["in"]
|
|
@@ -30059,7 +29101,7 @@ function validateHttpController(props) {
|
|
|
30059
29101
|
path: _path + ".name",
|
|
30060
29102
|
expected: "(string | undefined)",
|
|
30061
29103
|
value: input.name
|
|
30062
|
-
}), "path" === input["in"] || "
|
|
29104
|
+
}), "path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
30063
29105
|
path: _path + '["in"]',
|
|
30064
29106
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
30065
29107
|
value: input["in"]
|
|
@@ -30531,7 +29573,7 @@ function validateHttpController(props) {
|
|
|
30531
29573
|
path: _path + ".type",
|
|
30532
29574
|
expected: '"apiKey"',
|
|
30533
29575
|
value: input.type
|
|
30534
|
-
}), undefined === input["in"] || "
|
|
29576
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
30535
29577
|
path: _path + '["in"]',
|
|
30536
29578
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
30537
29579
|
value: input["in"]
|
|
@@ -31580,7 +30622,7 @@ function validateHttpController(props) {
|
|
|
31580
30622
|
path: _path + ".type",
|
|
31581
30623
|
expected: '"apiKey"',
|
|
31582
30624
|
value: input.type
|
|
31583
|
-
}), undefined === input["in"] || "
|
|
30625
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
31584
30626
|
path: _path + '["in"]',
|
|
31585
30627
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
31586
30628
|
value: input["in"]
|
|
@@ -31960,7 +31002,7 @@ function validateHttpController(props) {
|
|
|
31960
31002
|
path: _path + ".name",
|
|
31961
31003
|
expected: "(string | undefined)",
|
|
31962
31004
|
value: input.name
|
|
31963
|
-
}), "path" === input["in"] || "
|
|
31005
|
+
}), "path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
31964
31006
|
path: _path + '["in"]',
|
|
31965
31007
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
31966
31008
|
value: input["in"]
|
|
@@ -32385,7 +31427,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32385
31427
|
if (undefined === value) return true;
|
|
32386
31428
|
return "object" === typeof value && null !== value && _iu10(value);
|
|
32387
31429
|
}));
|
|
32388
|
-
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
31430
|
+
const _io32 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
32389
31431
|
const _io33 = input => "basic" === input.type && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
32390
31432
|
const _io34 = input => "oauth2" === input.type && "implicit" === input.flow && (undefined === input.authorizationUrl || "string" === typeof input.authorizationUrl) && (undefined === input.scopes || "object" === typeof input.scopes && null !== input.scopes && false === Array.isArray(input.scopes) && _io35(input.scopes)) && (undefined === input.description || "string" === typeof input.description);
|
|
32391
31433
|
const _io35 = input => Object.keys(input).every((key => {
|
|
@@ -32483,7 +31525,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32483
31525
|
if (undefined === value) return true;
|
|
32484
31526
|
return "object" === typeof value && null !== value && _io82(value);
|
|
32485
31527
|
}));
|
|
32486
|
-
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
31528
|
+
const _io82 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu3(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io75(input.examples));
|
|
32487
31529
|
const _io83 = input => Object.keys(input).every((key => {
|
|
32488
31530
|
const value = input[key];
|
|
32489
31531
|
if (undefined === value) return true;
|
|
@@ -32495,7 +31537,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32495
31537
|
if (undefined === value) return true;
|
|
32496
31538
|
return "object" === typeof value && null !== value && _iu14(value);
|
|
32497
31539
|
}));
|
|
32498
|
-
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
31540
|
+
const _io86 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
32499
31541
|
const _io87 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
32500
31542
|
const _io88 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
32501
31543
|
const _io89 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io90(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -32569,7 +31611,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32569
31611
|
return "object" === typeof value && null !== value && false === Array.isArray(value) && _io131(value);
|
|
32570
31612
|
}));
|
|
32571
31613
|
const _io131 = input => (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _iu6(elem)))) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io106(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io138(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io138(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io138(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io138(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io138(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io138(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io138(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io138(input.trace));
|
|
32572
|
-
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
31614
|
+
const _io132 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu5(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io133(input.examples));
|
|
32573
31615
|
const _io133 = input => Object.keys(input).every((key => {
|
|
32574
31616
|
const value = input[key];
|
|
32575
31617
|
if (undefined === value) return true;
|
|
@@ -32621,7 +31663,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32621
31663
|
if (undefined === value) return true;
|
|
32622
31664
|
return "object" === typeof value && null !== value && _iu21(value);
|
|
32623
31665
|
}));
|
|
32624
|
-
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
31666
|
+
const _io152 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
32625
31667
|
const _io153 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
32626
31668
|
const _io154 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
32627
31669
|
const _io155 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io156(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -32682,7 +31724,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32682
31724
|
if (undefined === value) return true;
|
|
32683
31725
|
return "object" === typeof value && null !== value && _iu23(value);
|
|
32684
31726
|
}));
|
|
32685
|
-
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "
|
|
31727
|
+
const _io189 = input => "apiKey" === input.type && (undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && (undefined === input.name || "string" === typeof input.name) && (undefined === input.description || "string" === typeof input.description);
|
|
32686
31728
|
const _io190 = input => "http" === input.type && "basic" === input.scheme && (undefined === input.description || "string" === typeof input.description);
|
|
32687
31729
|
const _io191 = input => "http" === input.type && "bearer" === input.scheme && (undefined === input.bearerFormat || "string" === typeof input.bearerFormat) && (undefined === input.description || "string" === typeof input.description);
|
|
32688
31730
|
const _io192 = input => "oauth2" === input.type && ("object" === typeof input.flows && null !== input.flows && false === Array.isArray(input.flows) && _io193(input.flows)) && (undefined === input.description || "string" === typeof input.description);
|
|
@@ -32698,7 +31740,7 @@ function validateHttpLlmApplication(props) {
|
|
|
32698
31740
|
}));
|
|
32699
31741
|
const _io199 = input => (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.options || "object" === typeof input.options && null !== input.options && false === Array.isArray(input.options) && _io200(input.options)) && (undefined === input.get || "object" === typeof input.get && null !== input.get && false === Array.isArray(input.get) && _io200(input.get)) && (undefined === input.post || "object" === typeof input.post && null !== input.post && false === Array.isArray(input.post) && _io200(input.post)) && (undefined === input.patch || "object" === typeof input.patch && null !== input.patch && false === Array.isArray(input.patch) && _io200(input.patch)) && (undefined === input.put || "object" === typeof input.put && null !== input.put && false === Array.isArray(input.put) && _io200(input.put)) && (undefined === input["delete"] || "object" === typeof input["delete"] && null !== input["delete"] && false === Array.isArray(input["delete"]) && _io200(input["delete"])) && (undefined === input.head || "object" === typeof input.head && null !== input.head && false === Array.isArray(input.head) && _io200(input.head)) && (undefined === input.trace || "object" === typeof input.trace && null !== input.trace && false === Array.isArray(input.trace) && _io200(input.trace));
|
|
32700
31742
|
const _io200 = input => (undefined === input.operationId || "string" === typeof input.operationId) && (undefined === input.parameters || Array.isArray(input.parameters) && input.parameters.every((elem => "object" === typeof elem && null !== elem && _io201(elem)))) && (undefined === input.requestBody || "object" === typeof input.requestBody && null !== input.requestBody && false === Array.isArray(input.requestBody) && _io204(input.requestBody)) && (undefined === input.responses || "object" === typeof input.responses && null !== input.responses && false === Array.isArray(input.responses) && _io207(input.responses)) && (undefined === input.servers || Array.isArray(input.servers) && input.servers.every((elem => "object" === typeof elem && null !== elem && _io167(elem)))) && (undefined === input.summary || "string" === typeof input.summary) && (undefined === input.description || "string" === typeof input.description) && (undefined === input.security || Array.isArray(input.security) && input.security.every((elem => "object" === typeof elem && null !== elem && false === Array.isArray(elem) && _io39(elem)))) && (undefined === input.tags || Array.isArray(input.tags) && input.tags.every((elem => "string" === typeof elem))) && (undefined === input.deprecated || "boolean" === typeof input.deprecated) && (undefined === input["x-samchon-human"] || "boolean" === typeof input["x-samchon-human"]) && (undefined === input["x-samchon-accessor"] || Array.isArray(input["x-samchon-accessor"]) && input["x-samchon-accessor"].every((elem => "string" === typeof elem))) && (undefined === input["x-samchon-controller"] || "string" === typeof input["x-samchon-controller"]);
|
|
32701
|
-
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "
|
|
31743
|
+
const _io201 = input => (undefined === input.name || "string" === typeof input.name) && ("path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"]) && ("object" === typeof input.schema && null !== input.schema && false === Array.isArray(input.schema) && _iu7(input.schema)) && (undefined === input.required || "boolean" === typeof input.required) && (undefined === input.title || "string" === typeof input.title) && (undefined === input.description || "string" === typeof input.description) && true && (undefined === input.examples || "object" === typeof input.examples && null !== input.examples && false === Array.isArray(input.examples) && _io202(input.examples));
|
|
32702
31744
|
const _io202 = input => Object.keys(input).every((key => {
|
|
32703
31745
|
const value = input[key];
|
|
32704
31746
|
if (undefined === value) return true;
|
|
@@ -34196,7 +33238,7 @@ function validateHttpLlmApplication(props) {
|
|
|
34196
33238
|
path: _path + ".type",
|
|
34197
33239
|
expected: '"apiKey"',
|
|
34198
33240
|
value: input.type
|
|
34199
|
-
}), undefined === input["in"] || "
|
|
33241
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
34200
33242
|
path: _path + '["in"]',
|
|
34201
33243
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
34202
33244
|
value: input["in"]
|
|
@@ -35730,7 +34772,7 @@ function validateHttpLlmApplication(props) {
|
|
|
35730
34772
|
path: _path + ".name",
|
|
35731
34773
|
expected: "(string | undefined)",
|
|
35732
34774
|
value: input.name
|
|
35733
|
-
}), "path" === input["in"] || "
|
|
34775
|
+
}), "path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
35734
34776
|
path: _path + '["in"]',
|
|
35735
34777
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
35736
34778
|
value: input["in"]
|
|
@@ -35806,7 +34848,7 @@ function validateHttpLlmApplication(props) {
|
|
|
35806
34848
|
path: _path + ".type",
|
|
35807
34849
|
expected: '"apiKey"',
|
|
35808
34850
|
value: input.type
|
|
35809
|
-
}), undefined === input["in"] || "
|
|
34851
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
35810
34852
|
path: _path + '["in"]',
|
|
35811
34853
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
35812
34854
|
value: input["in"]
|
|
@@ -37760,7 +36802,7 @@ function validateHttpLlmApplication(props) {
|
|
|
37760
36802
|
path: _path + ".name",
|
|
37761
36803
|
expected: "(string | undefined)",
|
|
37762
36804
|
value: input.name
|
|
37763
|
-
}), "path" === input["in"] || "
|
|
36805
|
+
}), "path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
37764
36806
|
path: _path + '["in"]',
|
|
37765
36807
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
37766
36808
|
value: input["in"]
|
|
@@ -38232,7 +37274,7 @@ function validateHttpLlmApplication(props) {
|
|
|
38232
37274
|
path: _path + ".type",
|
|
38233
37275
|
expected: '"apiKey"',
|
|
38234
37276
|
value: input.type
|
|
38235
|
-
}), undefined === input["in"] || "
|
|
37277
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
38236
37278
|
path: _path + '["in"]',
|
|
38237
37279
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
38238
37280
|
value: input["in"]
|
|
@@ -39281,7 +38323,7 @@ function validateHttpLlmApplication(props) {
|
|
|
39281
38323
|
path: _path + ".type",
|
|
39282
38324
|
expected: '"apiKey"',
|
|
39283
38325
|
value: input.type
|
|
39284
|
-
}), undefined === input["in"] || "
|
|
38326
|
+
}), undefined === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
39285
38327
|
path: _path + '["in"]',
|
|
39286
38328
|
expected: '("cookie" | "header" | "query" | undefined)',
|
|
39287
38329
|
value: input["in"]
|
|
@@ -39661,7 +38703,7 @@ function validateHttpLlmApplication(props) {
|
|
|
39661
38703
|
path: _path + ".name",
|
|
39662
38704
|
expected: "(string | undefined)",
|
|
39663
38705
|
value: input.name
|
|
39664
|
-
}), "path" === input["in"] || "
|
|
38706
|
+
}), "path" === input["in"] || "header" === input["in"] || "query" === input["in"] || "cookie" === input["in"] || _report(_exceptionable, {
|
|
39665
38707
|
path: _path + '["in"]',
|
|
39666
38708
|
expected: '("cookie" | "header" | "path" | "query")',
|
|
39667
38709
|
value: input["in"]
|