{"version":3,"sources":["../src/agent-schema.ts"],"names":["IDENT","assert","condition","message","isRecord","v","validateModel","raw","out","validateTool","index","tool","t","validateMemory","validateAgentSchema","names","i","s","parseAgentSchema","text","options","renderAgentSchemaModule","schema"],"mappings":"aA6CA,IAAMA,CAAAA,CAAQ,2BAAA,CAEd,SAASC,CAAAA,CAAOC,CAAAA,CAAoBC,CAAAA,CAAoC,CACtE,GAAI,CAACD,CAAAA,CAAW,MAAM,IAAI,KAAA,CAAM,CAAA,sBAAA,EAAyBC,CAAO,CAAA,CAAE,CACpE,CAEA,SAASC,CAAAA,CAASC,CAAAA,CAA0C,CAC1D,OAAO,OAAOA,CAAAA,EAAM,QAAA,EAAYA,CAAAA,GAAM,IAAA,EAAQ,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAC,CAChE,CAEA,SAASC,CAAAA,CAAcC,CAAAA,CAAgC,CACrDN,CAAAA,CAAOG,CAAAA,CAASG,CAAG,CAAA,CAAG,yBAAyB,CAAA,CAC/CN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,QAAA,EAAa,QAAA,EAAYA,CAAAA,CAAI,QAAA,CAAS,MAAA,CAAS,CAAA,CAAG,4BAA4B,CAAA,CAChG,IAAMC,CAAAA,CAAwB,CAAE,QAAA,CAAUD,CAAAA,CAAI,QAAS,CAAA,CACvD,OAAIA,CAAAA,CAAI,KAAA,GAAU,MAAA,GAChBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,KAAA,EAAU,QAAA,CAAU,8BAA8B,CAAA,CACpEC,CAAAA,CAAI,KAAA,CAAQD,CAAAA,CAAI,KAAA,CAAA,CAEdA,CAAAA,CAAI,WAAA,GAAgB,MAAA,GACtBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,WAAA,EAAgB,QAAA,CAAU,oCAAoC,CAAA,CAChFC,CAAAA,CAAI,WAAA,CAAcD,CAAAA,CAAI,WAAA,CAAA,CAEpBA,CAAAA,CAAI,SAAA,GAAc,MAAA,GACpBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,SAAA,EAAc,QAAA,CAAU,kCAAkC,CAAA,CAC5EC,CAAAA,CAAI,SAAA,CAAYD,CAAAA,CAAI,SAAA,CAAA,CAElBA,CAAAA,CAAI,OAAA,GAAY,MAAA,GAClBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,OAAA,EAAY,QAAA,CAAU,gCAAgC,CAAA,CACxEC,CAAAA,CAAI,OAAA,CAAUD,CAAAA,CAAI,OAAA,CAAA,CAEbC,CACT,CAEA,SAASC,CAAAA,CAAaF,CAAAA,CAAcG,CAAAA,CAAgC,CAClET,CAAAA,CAAOG,CAAAA,CAASG,CAAG,CAAA,CAAG,CAAA,MAAA,EAASG,CAAK,CAAA,mBAAA,CAAqB,CAAA,CACzDT,CAAAA,CAAO,OAAOM,CAAAA,CAAI,IAAA,EAAS,QAAA,EAAYP,CAAAA,CAAM,IAAA,CAAKO,CAAAA,CAAI,IAAI,CAAA,CAAG,CAAA,MAAA,EAASG,CAAK,CAAA,2CAAA,CAA6C,CAAA,CACxH,IAAMC,CAAAA,CAAwB,CAAE,IAAA,CAAMJ,CAAAA,CAAI,IAAK,CAAA,CAC/C,OAAIA,CAAAA,CAAI,WAAA,GAAgB,MAAA,GACtBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,WAAA,EAAgB,QAAA,CAAU,CAAA,MAAA,EAASG,CAAK,CAAA,4BAAA,CAA8B,CAAA,CACxFC,CAAAA,CAAK,WAAA,CAAcJ,CAAAA,CAAI,WAAA,CAAA,CAErBA,CAAAA,CAAI,MAAA,GAAW,MAAA,GACjBN,CAAAA,CAAOG,CAAAA,CAASG,CAAAA,CAAI,MAAM,CAAA,CAAG,CAAA,MAAA,EAASG,CAAK,CAAA,0BAAA,CAA4B,CAAA,CACvEC,CAAAA,CAAK,MAAA,CAASJ,CAAAA,CAAI,MAAA,CAAA,CAEhBA,CAAAA,CAAI,cAAA,GAAmB,MAAA,GACzBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,cAAA,EAAmB,QAAA,CAAU,CAAA,MAAA,EAASG,CAAK,CAAA,+BAAA,CAAiC,CAAA,CAC9FC,CAAAA,CAAK,cAAA,CAAiBJ,CAAAA,CAAI,cAAA,CAAA,CAExBA,CAAAA,CAAI,oBAAA,GAAyB,MAAA,GAC/BN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,oBAAA,EAAyB,SAAA,CAAW,CAAA,MAAA,EAASG,CAAK,CAAA,sCAAA,CAAwC,CAAA,CAC5GC,CAAAA,CAAK,oBAAA,CAAuBJ,CAAAA,CAAI,oBAAA,CAAA,CAE9BA,CAAAA,CAAI,IAAA,GAAS,MAAA,GACfN,CAAAA,CAAO,KAAA,CAAM,OAAA,CAAQM,CAAAA,CAAI,IAAI,CAAA,EAAKA,CAAAA,CAAI,IAAA,CAAK,KAAA,CAAMK,CAAAA,EAAK,OAAOA,CAAAA,EAAM,QAAQ,CAAA,CAAG,CAAA,MAAA,EAASF,CAAK,CAAA,uBAAA,CAAyB,CAAA,CACrHC,CAAAA,CAAK,IAAA,CAAOJ,CAAAA,CAAI,IAAA,CAAA,CAEXI,CACT,CAEA,SAASE,CAAAA,CAAeN,CAAAA,CAAiC,CACvDN,CAAAA,CAAOG,CAAAA,CAASG,CAAG,CAAA,CAAG,0BAA0B,CAAA,CAChDN,CAAAA,CACEM,CAAAA,CAAI,IAAA,GAAS,UAAA,EAAcA,CAAAA,CAAI,IAAA,GAAS,cAAA,EAAkBA,CAAAA,CAAI,IAAA,GAAS,QAAA,CACvE,4DACF,CAAA,CACA,IAAMC,CAAAA,CAAyB,CAAE,IAAA,CAAMD,CAAAA,CAAI,IAAK,CAAA,CAChD,OAAIA,CAAAA,CAAI,GAAA,GAAQ,MAAA,GACdN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,GAAA,EAAQ,QAAA,CAAU,6BAA6B,CAAA,CACjEC,CAAAA,CAAI,GAAA,CAAMD,CAAAA,CAAI,GAAA,CAAA,CAEZA,CAAAA,CAAI,OAAA,GAAY,MAAA,GAClBN,CAAAA,CAAOG,CAAAA,CAASG,CAAAA,CAAI,OAAO,CAAA,CAAG,kCAAkC,CAAA,CAChEC,CAAAA,CAAI,OAAA,CAAUD,CAAAA,CAAI,OAAA,CAAA,CAEbC,CACT,CAOO,SAASM,CAAAA,CAAoBP,CAAAA,CAA2B,CAC7DN,CAAAA,CAAOG,CAAAA,CAASG,CAAG,CAAA,CAAG,+BAA+B,CAAA,CACrDN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,IAAA,EAAS,QAAA,EAAYP,CAAAA,CAAM,IAAA,CAAKO,CAAAA,CAAI,IAAI,CAAA,CAAG,2CAA2C,CAAA,CACxGN,CAAAA,CAAOM,CAAAA,CAAI,KAAA,GAAU,MAAA,CAAW,mBAAmB,CAAA,CAEnD,IAAMC,CAAAA,CAAmB,CACvB,IAAA,CAAMD,CAAAA,CAAI,IAAA,CACV,KAAA,CAAOD,CAAAA,CAAcC,CAAAA,CAAI,KAAK,CAChC,CAAA,CASA,GARIA,CAAAA,CAAI,WAAA,GAAgB,MAAA,GACtBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,WAAA,EAAgB,QAAA,CAAU,8BAA8B,CAAA,CAC1EC,CAAAA,CAAI,WAAA,CAAcD,CAAAA,CAAI,WAAA,CAAA,CAEpBA,CAAAA,CAAI,YAAA,GAAiB,MAAA,GACvBN,CAAAA,CAAO,OAAOM,CAAAA,CAAI,YAAA,EAAiB,QAAA,CAAU,+BAA+B,CAAA,CAC5EC,CAAAA,CAAI,YAAA,CAAeD,CAAAA,CAAI,YAAA,CAAA,CAErBA,CAAAA,CAAI,KAAA,GAAU,MAAA,CAAW,CAC3BN,CAAAA,CAAO,KAAA,CAAM,OAAA,CAAQM,CAAAA,CAAI,KAAK,CAAA,CAAG,wBAAwB,CAAA,CACzD,IAAMQ,CAAAA,CAAQ,IAAI,GAAA,CAClBP,CAAAA,CAAI,KAAA,CAAQD,CAAAA,CAAI,KAAA,CAAM,GAAA,CAAI,CAACK,CAAAA,CAAGI,CAAAA,GAAM,CAClC,IAAML,CAAAA,CAAOF,CAAAA,CAAaG,CAAAA,CAAGI,CAAC,CAAA,CAC9B,OAAAf,CAAAA,CAAO,CAACc,CAAAA,CAAM,GAAA,CAAIJ,CAAAA,CAAK,IAAI,CAAA,CAAG,CAAA,qBAAA,EAAwBA,CAAAA,CAAK,IAAI,CAAA,CAAE,CAAA,CACjEI,CAAAA,CAAM,GAAA,CAAIJ,CAAAA,CAAK,IAAI,CAAA,CACZA,CACT,CAAC,EACH,CACA,OAAIJ,CAAAA,CAAI,MAAA,GAAW,MAAA,GAAWC,CAAAA,CAAI,MAAA,CAASK,CAAAA,CAAeN,CAAAA,CAAI,MAAM,CAAA,CAAA,CAChEA,CAAAA,CAAI,MAAA,GAAW,MAAA,GACjBN,CAAAA,CAAO,KAAA,CAAM,OAAA,CAAQM,CAAAA,CAAI,MAAM,CAAA,EAAKA,CAAAA,CAAI,MAAA,CAAO,KAAA,CAAMU,CAAAA,EAAK,OAAOA,CAAAA,EAAM,QAAQ,CAAA,CAAG,yBAAyB,CAAA,CAC3GT,CAAAA,CAAI,MAAA,CAASD,CAAAA,CAAI,MAAA,CAAA,CAEfA,CAAAA,CAAI,QAAA,GAAa,MAAA,GACnBN,CAAAA,CAAOG,CAAAA,CAASG,CAAAA,CAAI,QAAQ,CAAA,CAAG,4BAA4B,CAAA,CAC3DC,CAAAA,CAAI,QAAA,CAAWD,CAAAA,CAAI,QAAA,CAAA,CAEdC,CACT,CAMO,SAASU,CAAAA,CAAiBC,CAAAA,CAAcC,CAAAA,CAAmC,EAAC,CAAgB,CACjG,IAAMb,CAAAA,CAAMa,CAAAA,CAAQ,MAAA,CAASA,CAAAA,CAAQ,MAAA,CAAOD,CAAI,CAAA,CAAI,IAAA,CAAK,KAAA,CAAMA,CAAI,CAAA,CACnE,OAAOL,CAAAA,CAAoBP,CAAG,CAChC,CAMO,SAASc,CAAAA,CAAwBC,CAAAA,CAA6B,CAEnE,OAAO,CAAA;;AAAA,qBAAA,EADS,IAAA,CAAK,SAAA,CAAUA,CAAAA,CAAQ,IAAA,CAAM,CAAC,CAC2D,CAAA;AAAA,CAC3G","file":"agent-schema.cjs","sourcesContent":["import type { JSONSchema7 } from 'json-schema'\n\nexport interface AgentSchemaModel {\n  provider: string\n  model?: string\n  temperature?: number\n  maxTokens?: number\n  baseUrl?: string\n}\n\nexport interface AgentSchemaTool {\n  name: string\n  description?: string\n  schema?: JSONSchema7\n  /** Free-form hint string handed to code generators. */\n  implementation?: string\n  requiresConfirmation?: boolean\n  tags?: string[]\n}\n\nexport interface AgentSchemaMemory {\n  kind: 'inMemory' | 'localStorage' | 'custom'\n  key?: string\n  options?: Record<string, unknown>\n}\n\nexport interface AgentSchema {\n  name: string\n  description?: string\n  systemPrompt?: string\n  model: AgentSchemaModel\n  tools?: AgentSchemaTool[]\n  memory?: AgentSchemaMemory\n  skills?: string[]\n  metadata?: Record<string, unknown>\n}\n\nexport interface ParseAgentSchemaOptions {\n  /**\n   * Parser for non-JSON input (e.g. YAML). Defaults to `JSON.parse`.\n   * Keeps the core zero-dep: bring your own YAML parser.\n   */\n  parser?: (input: string) => unknown\n}\n\nconst IDENT = /^[a-zA-Z_][a-zA-Z0-9_-]*$/\n\nfunction assert(condition: unknown, message: string): asserts condition {\n  if (!condition) throw new Error(`Invalid agent schema: ${message}`)\n}\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n  return typeof v === 'object' && v !== null && !Array.isArray(v)\n}\n\nfunction validateModel(raw: unknown): AgentSchemaModel {\n  assert(isRecord(raw), 'model must be an object')\n  assert(typeof raw.provider === 'string' && raw.provider.length > 0, 'model.provider is required')\n  const out: AgentSchemaModel = { provider: raw.provider }\n  if (raw.model !== undefined) {\n    assert(typeof raw.model === 'string', 'model.model must be a string')\n    out.model = raw.model\n  }\n  if (raw.temperature !== undefined) {\n    assert(typeof raw.temperature === 'number', 'model.temperature must be a number')\n    out.temperature = raw.temperature\n  }\n  if (raw.maxTokens !== undefined) {\n    assert(typeof raw.maxTokens === 'number', 'model.maxTokens must be a number')\n    out.maxTokens = raw.maxTokens\n  }\n  if (raw.baseUrl !== undefined) {\n    assert(typeof raw.baseUrl === 'string', 'model.baseUrl must be a string')\n    out.baseUrl = raw.baseUrl\n  }\n  return out\n}\n\nfunction validateTool(raw: unknown, index: number): AgentSchemaTool {\n  assert(isRecord(raw), `tools[${index}] must be an object`)\n  assert(typeof raw.name === 'string' && IDENT.test(raw.name), `tools[${index}].name must match /[a-zA-Z_][a-zA-Z0-9_-]*/`)\n  const tool: AgentSchemaTool = { name: raw.name }\n  if (raw.description !== undefined) {\n    assert(typeof raw.description === 'string', `tools[${index}].description must be string`)\n    tool.description = raw.description\n  }\n  if (raw.schema !== undefined) {\n    assert(isRecord(raw.schema), `tools[${index}].schema must be an object`)\n    tool.schema = raw.schema as JSONSchema7\n  }\n  if (raw.implementation !== undefined) {\n    assert(typeof raw.implementation === 'string', `tools[${index}].implementation must be string`)\n    tool.implementation = raw.implementation\n  }\n  if (raw.requiresConfirmation !== undefined) {\n    assert(typeof raw.requiresConfirmation === 'boolean', `tools[${index}].requiresConfirmation must be boolean`)\n    tool.requiresConfirmation = raw.requiresConfirmation\n  }\n  if (raw.tags !== undefined) {\n    assert(Array.isArray(raw.tags) && raw.tags.every(t => typeof t === 'string'), `tools[${index}].tags must be string[]`)\n    tool.tags = raw.tags as string[]\n  }\n  return tool\n}\n\nfunction validateMemory(raw: unknown): AgentSchemaMemory {\n  assert(isRecord(raw), 'memory must be an object')\n  assert(\n    raw.kind === 'inMemory' || raw.kind === 'localStorage' || raw.kind === 'custom',\n    `memory.kind must be 'inMemory' | 'localStorage' | 'custom'`,\n  )\n  const out: AgentSchemaMemory = { kind: raw.kind }\n  if (raw.key !== undefined) {\n    assert(typeof raw.key === 'string', 'memory.key must be a string')\n    out.key = raw.key\n  }\n  if (raw.options !== undefined) {\n    assert(isRecord(raw.options), 'memory.options must be an object')\n    out.options = raw.options\n  }\n  return out\n}\n\n/**\n * Validate a raw agent-schema object (e.g. a parsed YAML / JSON\n * document) into a typed `AgentSchema`. Throws on the first problem\n * with a descriptive path.\n */\nexport function validateAgentSchema(raw: unknown): AgentSchema {\n  assert(isRecord(raw), 'schema root must be an object')\n  assert(typeof raw.name === 'string' && IDENT.test(raw.name), `name must match /[a-zA-Z_][a-zA-Z0-9_-]*/`)\n  assert(raw.model !== undefined, 'model is required')\n\n  const out: AgentSchema = {\n    name: raw.name,\n    model: validateModel(raw.model),\n  }\n  if (raw.description !== undefined) {\n    assert(typeof raw.description === 'string', 'description must be a string')\n    out.description = raw.description\n  }\n  if (raw.systemPrompt !== undefined) {\n    assert(typeof raw.systemPrompt === 'string', 'systemPrompt must be a string')\n    out.systemPrompt = raw.systemPrompt\n  }\n  if (raw.tools !== undefined) {\n    assert(Array.isArray(raw.tools), 'tools must be an array')\n    const names = new Set<string>()\n    out.tools = raw.tools.map((t, i) => {\n      const tool = validateTool(t, i)\n      assert(!names.has(tool.name), `duplicate tool name: ${tool.name}`)\n      names.add(tool.name)\n      return tool\n    })\n  }\n  if (raw.memory !== undefined) out.memory = validateMemory(raw.memory)\n  if (raw.skills !== undefined) {\n    assert(Array.isArray(raw.skills) && raw.skills.every(s => typeof s === 'string'), 'skills must be string[]')\n    out.skills = raw.skills as string[]\n  }\n  if (raw.metadata !== undefined) {\n    assert(isRecord(raw.metadata), 'metadata must be an object')\n    out.metadata = raw.metadata\n  }\n  return out\n}\n\n/**\n * Parse a JSON (default) or text-format agent definition. Provide\n * `options.parser` for YAML or other formats. Keeps core zero-dep.\n */\nexport function parseAgentSchema(text: string, options: ParseAgentSchemaOptions = {}): AgentSchema {\n  const raw = options.parser ? options.parser(text) : JSON.parse(text)\n  return validateAgentSchema(raw)\n}\n\n/**\n * Render a TypeScript module source string that re-exports a typed\n * `AgentSchema` constant. Useful for \"compile YAML → .ts\" build steps.\n */\nexport function renderAgentSchemaModule(schema: AgentSchema): string {\n  const literal = JSON.stringify(schema, null, 2)\n  return `import type { AgentSchema } from '@agentskit/core/agent-schema'\\n\\nexport const agent = ${literal} as const satisfies AgentSchema\\n`\n}\n"]}