{"version":3,"sources":["../src/manifest.ts"],"names":["MANIFEST_VERSION","isRecord","v","assert","cond","msg","validateManifest","raw","out","i","s"],"mappings":"aASO,IAAMA,EAAmB,UAqChC,SAASC,EAASC,CAAAA,CAA0C,CAC1D,OAAO,OAAOA,CAAAA,EAAM,UAAYA,CAAAA,GAAM,IAAA,EAAQ,CAAC,KAAA,CAAM,OAAA,CAAQA,CAAC,CAChE,CAEA,SAASC,CAAAA,CAAOC,CAAAA,CAAeC,CAAAA,CAA2B,CACxD,GAAI,CAACD,CAAAA,CAAM,MAAM,IAAI,KAAA,CAAM,qBAAqBC,CAAG,CAAA,CAAE,CACvD,CAEO,SAASC,EAAiBC,CAAAA,CAAwB,CACvDJ,EAAOF,CAAAA,CAASM,CAAG,EAAG,wBAAwB,CAAA,CAC9CJ,CAAAA,CAAOI,CAAAA,CAAI,kBAAoBP,CAAAA,CAAkB,CAAA,yBAAA,EAA4BA,CAAgB,CAAA,CAAA,CAAG,CAAA,CAChGG,EAAO,OAAOI,CAAAA,CAAI,MAAS,QAAA,CAAU,eAAe,EACpDJ,CAAAA,CAAO,OAAOI,EAAI,OAAA,EAAY,QAAA,CAAU,kBAAkB,CAAA,CAE1D,IAAMC,CAAAA,CAAgB,CACpB,gBAAiBR,CAAAA,CACjB,IAAA,CAAMO,EAAI,IAAA,CACV,OAAA,CAASA,EAAI,OACf,CAAA,CACA,OAAI,OAAOA,CAAAA,CAAI,WAAc,QAAA,GAAUC,CAAAA,CAAI,UAAYD,CAAAA,CAAI,SAAA,CAAA,CACvD,OAAOA,CAAAA,CAAI,QAAA,EAAa,QAAA,GAAUC,CAAAA,CAAI,SAAWD,CAAAA,CAAI,QAAA,CAAA,CACrD,OAAOA,CAAAA,CAAI,WAAA,EAAgB,WAAUC,CAAAA,CAAI,WAAA,CAAcD,EAAI,WAAA,CAAA,CAC3DN,CAAAA,CAASM,EAAI,QAAQ,CAAA,GAAGC,EAAI,QAAA,CAAWD,CAAAA,CAAI,UAE3CA,CAAAA,CAAI,KAAA,GAAU,MAAA,GAChBJ,CAAAA,CAAO,MAAM,OAAA,CAAQI,CAAAA,CAAI,KAAK,CAAA,CAAG,qBAAqB,EACtDC,CAAAA,CAAI,KAAA,CAAQD,EAAI,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA,CAAYE,CAAAA,IACrCN,EAAOF,CAAAA,CAAS,CAAC,GAAK,OAAO,CAAA,CAAE,IAAA,EAAS,QAAA,CAAU,SAASQ,CAAC,CAAA,eAAA,CAAiB,EACtE,CAAA,CACR,CAAA,CAAA,CAECF,EAAI,MAAA,GAAW,MAAA,GACjBJ,EAAO,KAAA,CAAM,OAAA,CAAQI,EAAI,MAAM,CAAA,CAAG,sBAAsB,CAAA,CACxDC,CAAAA,CAAI,OAASD,CAAAA,CAAI,MAAA,CAAO,IAAI,CAACG,CAAAA,CAAYD,KACvCN,CAAAA,CACEF,CAAAA,CAASS,CAAC,CAAA,EAAK,OAAOA,EAAE,IAAA,EAAS,QAAA,EAAY,OAAOA,CAAAA,CAAE,YAAA,EAAiB,SACvE,CAAA,OAAA,EAAUD,CAAC,gCACb,CAAA,CACOC,CAAAA,CACR,GAEIF,CACT","file":"manifest.cjs","sourcesContent":["/**\n * Skill + Tool Manifest — a serialization format for packaging\n * AgentsKit skills/tools for distribution. Compatible with MCP\n * tool descriptors (tools section reuses `inputSchema`), so a\n * manifest can round-trip through an MCP server without loss.\n */\n\nimport type { JSONSchema7 } from 'json-schema'\n\nexport const MANIFEST_VERSION = '2026-04'\n\nexport interface ManifestTool {\n  name: string\n  description?: string\n  /** JSON Schema for the tool's arguments. Matches MCP `inputSchema`. */\n  inputSchema?: JSONSchema7\n  tags?: string[]\n  category?: string\n  requiresConfirmation?: boolean\n}\n\nexport interface ManifestSkill {\n  name: string\n  description?: string\n  /** System prompt template. */\n  systemPrompt: string\n  /** Tools this skill expects to be available. */\n  tools?: string[]\n  /** Names of other skills this one can delegate to. */\n  delegates?: string[]\n  examples?: Array<{ input: string; output: string }>\n}\n\nexport interface Manifest {\n  manifestVersion: typeof MANIFEST_VERSION\n  name: string\n  version: string\n  publisher?: string\n  homepage?: string\n  description?: string\n  tools?: ManifestTool[]\n  skills?: ManifestSkill[]\n  /** Free-form metadata (license, repo, compatibility). */\n  metadata?: Record<string, unknown>\n}\n\nfunction isRecord(v: unknown): v is Record<string, unknown> {\n  return typeof v === 'object' && v !== null && !Array.isArray(v)\n}\n\nfunction assert(cond: unknown, msg: string): asserts cond {\n  if (!cond) throw new Error(`Invalid manifest: ${msg}`)\n}\n\nexport function validateManifest(raw: unknown): Manifest {\n  assert(isRecord(raw), 'root must be an object')\n  assert(raw.manifestVersion === MANIFEST_VERSION, `manifestVersion must be \"${MANIFEST_VERSION}\"`)\n  assert(typeof raw.name === 'string', 'name required')\n  assert(typeof raw.version === 'string', 'version required')\n\n  const out: Manifest = {\n    manifestVersion: MANIFEST_VERSION,\n    name: raw.name,\n    version: raw.version,\n  }\n  if (typeof raw.publisher === 'string') out.publisher = raw.publisher\n  if (typeof raw.homepage === 'string') out.homepage = raw.homepage\n  if (typeof raw.description === 'string') out.description = raw.description\n  if (isRecord(raw.metadata)) out.metadata = raw.metadata\n\n  if (raw.tools !== undefined) {\n    assert(Array.isArray(raw.tools), 'tools must be array')\n    out.tools = raw.tools.map((t: unknown, i: number) => {\n      assert(isRecord(t) && typeof t.name === 'string', `tools[${i}].name required`)\n      return t as unknown as ManifestTool\n    })\n  }\n  if (raw.skills !== undefined) {\n    assert(Array.isArray(raw.skills), 'skills must be array')\n    out.skills = raw.skills.map((s: unknown, i: number) => {\n      assert(\n        isRecord(s) && typeof s.name === 'string' && typeof s.systemPrompt === 'string',\n        `skills[${i}].name + systemPrompt required`,\n      )\n      return s as unknown as ManifestSkill\n    })\n  }\n  return out\n}\n"]}