diff --git a/bin/knowledge-mcp.js b/bin/knowledge-mcp.js index 2c7d5b3..7d31b88 100755 --- a/bin/knowledge-mcp.js +++ b/bin/knowledge-mcp.js @@ -16494,6 +16494,9 @@ function wrap(client) { ...input.id ? { id: input.id } : {}, title: input.title, content: input.content, + ...input.description !== undefined ? { description: input.description } : {}, + ...input.reach ? { reach: input.reach } : {}, + ...input.consequence ? { consequence: input.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], ...input.metadata ? { metadata: input.metadata } : {} @@ -17613,6 +17616,87 @@ function makeShortId(id) { // src/item-store.ts import { existsSync as existsSync3 } from "fs"; + +// src/knowledge-taxonomy.ts +var REACH_VALUES = ["fleet", "project", "seat", "self"]; +var CONSEQUENCE_VALUES = ["blocking", "standing", "reference"]; +var DESCRIPTION_MIN_LENGTH = 24; +var DESCRIPTION_MAX_LENGTH = 280; + +class KnowledgeDescriptionRequiredError extends Error { + code = "description_required"; + constructor(reason) { + super(`${reason} Every knowledge item must carry a one-line description: it is what the ` + "fleet-wide change notification shows an agent who has not opened the item, alongside the title. " + `Supply it with --description "<${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars saying what this is for>". ` + "It is required rather than optional because the equivalent optional field on mementos " + "(when_to_use) is populated on zero rows."); + this.name = "KnowledgeDescriptionRequiredError"; + } +} + +class KnowledgeTaxonomyValueError extends Error { + code = "taxonomy_value_invalid"; + constructor(field, received, allowed) { + super(`Invalid --${field} value ${JSON.stringify(received)}. ` + `Use one of: ${allowed.join(", ")}.`); + this.name = "KnowledgeTaxonomyValueError"; + } +} +function validateDescription(raw) { + if (raw === undefined || raw === null) { + throw new KnowledgeDescriptionRequiredError("No description was supplied."); + } + if (typeof raw !== "string") { + throw new KnowledgeDescriptionRequiredError(`The description must be a string, received ${typeof raw}.`); + } + const trimmed = raw.trim(); + if (trimmed.length === 0) { + throw new KnowledgeDescriptionRequiredError("The description was empty or whitespace only."); + } + if (trimmed.length < DESCRIPTION_MIN_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the minimum is ${DESCRIPTION_MIN_LENGTH}.`); + } + if (trimmed.length > DESCRIPTION_MAX_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the maximum is ${DESCRIPTION_MAX_LENGTH}.`); + } + return trimmed; +} +function normalizeAxis(field, raw, allowed) { + if (typeof raw !== "string") { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + const value = raw.trim().toLowerCase(); + if (!allowed.includes(value)) { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + return value; +} +function normalizeReach(raw) { + return normalizeAxis("reach", raw, REACH_VALUES); +} +function normalizeConsequence(raw) { + return normalizeAxis("consequence", raw, CONSEQUENCE_VALUES); +} +function normalizeTaxonomyInput(input) { + const result = {}; + if (input.reach !== undefined && input.reach !== null) + result.reach = normalizeReach(input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeConsequence(input.consequence); + } + return result; +} + +// src/item-store.ts +function assertCreatable(input) { + const description = validateDescription(input.description); + const axes = normalizeTaxonomyInput(input); + return { description, ...axes }; +} +function assertPatchable(patch) { + const result = {}; + if (patch.description !== undefined) + result.description = validateDescription(patch.description); + Object.assign(result, normalizeTaxonomyInput(patch)); + return result; +} + class VersionHistoryUnsupportedError extends Error { location; code = "version_history_unsupported"; @@ -17654,6 +17738,7 @@ class LocalItemStore { return store.items.find((item) => matchesId(item, idOrShort)) ?? null; } async create(input) { + const checked = assertCreatable(input); return withLock(this.storePath, () => { const db = loadStore(this.storePath); const now = new Date().toISOString(); @@ -17663,6 +17748,9 @@ class LocalItemStore { short_id: makeShortId(id), title: input.title, content: input.content, + description: checked.description, + ...checked.reach ? { reach: checked.reach } : {}, + ...checked.consequence ? { consequence: checked.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], metadata: input.metadata ?? {}, @@ -17677,6 +17765,7 @@ class LocalItemStore { }, { createParent: true }); } async update(idOrShort, patch, options = {}) { + const checked = assertPatchable(patch); return withLock(this.storePath, () => { const db = loadStore(this.storePath); const idx = db.items.findIndex((item2) => matchesId(item2, idOrShort)); @@ -17691,6 +17780,12 @@ class LocalItemStore { item.title = patch.title; if (patch.content !== undefined) item.content = patch.content; + if (checked.description !== undefined) + item.description = checked.description; + if (checked.reach !== undefined) + item.reach = checked.reach; + if (checked.consequence !== undefined) + item.consequence = checked.consequence; if (patch.url !== undefined) item.url = patch.url; if (patch.tags !== undefined) @@ -17757,17 +17852,22 @@ class ApiItemStore { return this.cloud.get(idOrShort); } async create(input) { + const checked = assertCreatable(input); return this.cloud.create({ ...input.id ? { id: input.id } : {}, title: input.title, content: input.content, + description: checked.description, + ...checked.reach ? { reach: checked.reach } : {}, + ...checked.consequence ? { consequence: checked.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], ...input.metadata ? { metadata: input.metadata } : {} }); } async update(idOrShort, patch, options = {}) { - return this.cloud.update(idOrShort, patch, { expectedVersion: options.expectedVersion }); + const checked = assertPatchable(patch); + return this.cloud.update(idOrShort, { ...patch, ...checked }, { expectedVersion: options.expectedVersion }); } async delete(idOrShort) { return this.cloud.delete(idOrShort); @@ -31646,6 +31746,9 @@ function ensureSyncMetaTable(db) { // src/mcp.js var storePathField = exports_external.string().optional().describe("Path to the JSON store file"); var scopeField = exports_external.enum(["local", "global", "project"]).optional().describe("Workspace scope"); +var descriptionField = exports_external.string().min(DESCRIPTION_MIN_LENGTH).max(DESCRIPTION_MAX_LENGTH).describe(`REQUIRED. One line (${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars) saying what this item is FOR. ` + "It is shown beside the title in the fleet-wide change notification, so another agent can " + "decide whether to open the item without fetching its body."); +var reachField = exports_external.enum(REACH_VALUES).optional().describe('Who this binds. Optional; unmarked is treated as "self" by readers.'); +var consequenceField = exports_external.enum(CONSEQUENCE_VALUES).optional().describe('What a reader loses by not reading it. Optional; unmarked is treated as "reference".'); function jsonText(data) { return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] }; } @@ -32925,14 +33028,26 @@ function buildServer() { registerTool(server, "ok_add", "Add a knowledge item", "Add a new item to the knowledge store", { title: exports_external.string().describe("Item title"), content: exports_external.string().describe("Item content/body"), + description: descriptionField, + reach: reachField, + consequence: consequenceField, tags: exports_external.array(exports_external.string()).optional().describe("Tags to attach"), metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional().describe("Metadata key-value pairs"), url: exports_external.string().optional().describe("Source URL or URI"), store_path: storePathField, scope: scopeField - }, async ({ title, content, tags, metadata, url: url2, store_path, scope }) => { + }, async ({ title, content, description, reach, consequence, tags, metadata, url: url2, store_path, scope }) => { const store = itemStoreFor(store_path, scope); - const item = await store.create({ title, content, url: url2 ?? null, tags: tags ?? [], metadata: metadata ?? {} }); + const item = await store.create({ + title, + content, + description, + ...reach ? { reach } : {}, + ...consequence ? { consequence } : {}, + url: url2 ?? null, + tags: tags ?? [], + metadata: metadata ?? {} + }); return jsonText({ ok: true, item, message: `Added ${item.id}` }); }); registerTool(server, "ok_list", "List knowledge items", "List compact item summaries with pagination, search, tag filtering, and sorting", { @@ -33057,17 +33172,29 @@ function buildServer() { id: exports_external.string(), title: exports_external.string().optional(), content: exports_external.string().optional(), + description: descriptionField.optional(), + reach: reachField, + consequence: consequenceField, tags: exports_external.array(exports_external.string()).optional(), metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(), store_path: storePathField, scope: scopeField - }, async ({ id, title, content, tags, metadata, store_path, scope }) => { + }, async ({ id, title, content, description, reach, consequence, tags, metadata, store_path, scope }) => { const store = itemStoreFor(store_path, scope); const existing = await store.get(id); if (!existing) { if (!title || !content) return errorText("New item requires both title and content."); - const created = await store.create({ id, title, content, tags: tags ?? [], metadata: metadata ?? {} }); + const created = await store.create({ + id, + title, + content, + description, + ...reach ? { reach } : {}, + ...consequence ? { consequence } : {}, + tags: tags ?? [], + metadata: metadata ?? {} + }); return jsonText({ ok: true, item: created }); } const patch = {}; @@ -33075,6 +33202,12 @@ function buildServer() { patch.title = title; if (content !== undefined) patch.content = content; + if (description !== undefined) + patch.description = description; + if (reach !== undefined) + patch.reach = reach; + if (consequence !== undefined) + patch.consequence = consequence; if (tags) patch.tags = [...new Set([...existing.tags ?? [], ...tags])]; if (metadata) @@ -33239,14 +33372,22 @@ function buildServer() { for (const item of imported.items) { if (item.id && existingIds.has(item.id)) continue; - const created = await store.create({ - id: item.id, - title: item.title, - content: item.content, - url: item.url ?? null, - tags: item.tags ?? [], - metadata: item.metadata ?? {} - }); + let created; + try { + created = await store.create({ + id: item.id, + title: item.title, + content: item.content, + description: item.description, + ...item.reach ? { reach: item.reach } : {}, + ...item.consequence ? { consequence: item.consequence } : {}, + url: item.url ?? null, + tags: item.tags ?? [], + metadata: item.metadata ?? {} + }); + } catch (error51) { + return errorText(`Import stopped at item ${item.id ?? "(no id)"} (${item.title ?? "untitled"}): ` + `${error51 instanceof Error ? error51.message : String(error51)} ` + `${added} item(s) were imported before this one.`); + } existingIds.add(created.id); added += 1; } @@ -33257,6 +33398,9 @@ function buildServer() { id: exports_external.string().optional(), title: exports_external.string(), content: exports_external.string(), + description: descriptionField, + reach: reachField, + consequence: consequenceField, tags: exports_external.array(exports_external.string()).optional(), metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional(), created_at: exports_external.string().optional(), @@ -33279,6 +33423,9 @@ function buildServer() { id: entry.id, title: entry.title, content: entry.content, + description: entry.description, + ...entry.reach ? { reach: entry.reach } : {}, + ...entry.consequence ? { consequence: entry.consequence } : {}, tags: entry.tags ?? [], metadata: entry.metadata ?? {} }); diff --git a/bin/knowledge-serve.js b/bin/knowledge-serve.js index cb96475..29bd1f5 100755 --- a/bin/knowledge-serve.js +++ b/bin/knowledge-serve.js @@ -709,6 +709,63 @@ function knowledgeRegistryContract(input) { }; } +// src/knowledge-taxonomy.ts +var REACH_VALUES = ["fleet", "project", "seat", "self"]; +var CONSEQUENCE_VALUES = ["blocking", "standing", "reference"]; +var DESCRIPTION_MIN_LENGTH = 24; +var DESCRIPTION_MAX_LENGTH = 280; + +class KnowledgeDescriptionRequiredError extends Error { + code = "description_required"; + constructor(reason) { + super(`${reason} Every knowledge item must carry a one-line description: it is what the ` + "fleet-wide change notification shows an agent who has not opened the item, alongside the title. " + `Supply it with --description "<${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars saying what this is for>". ` + "It is required rather than optional because the equivalent optional field on mementos " + "(when_to_use) is populated on zero rows."); + this.name = "KnowledgeDescriptionRequiredError"; + } +} + +class KnowledgeTaxonomyValueError extends Error { + code = "taxonomy_value_invalid"; + constructor(field, received, allowed) { + super(`Invalid --${field} value ${JSON.stringify(received)}. ` + `Use one of: ${allowed.join(", ")}.`); + this.name = "KnowledgeTaxonomyValueError"; + } +} +function validateDescription(raw) { + if (raw === undefined || raw === null) { + throw new KnowledgeDescriptionRequiredError("No description was supplied."); + } + if (typeof raw !== "string") { + throw new KnowledgeDescriptionRequiredError(`The description must be a string, received ${typeof raw}.`); + } + const trimmed = raw.trim(); + if (trimmed.length === 0) { + throw new KnowledgeDescriptionRequiredError("The description was empty or whitespace only."); + } + if (trimmed.length < DESCRIPTION_MIN_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the minimum is ${DESCRIPTION_MIN_LENGTH}.`); + } + if (trimmed.length > DESCRIPTION_MAX_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the maximum is ${DESCRIPTION_MAX_LENGTH}.`); + } + return trimmed; +} +function normalizeAxis(field, raw, allowed) { + if (typeof raw !== "string") { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + const value = raw.trim().toLowerCase(); + if (!allowed.includes(value)) { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + return value; +} +function normalizeReach(raw) { + return normalizeAxis("reach", raw, REACH_VALUES); +} +function normalizeConsequence(raw) { + return normalizeAxis("consequence", raw, CONSEQUENCE_VALUES); +} + // src/workspace.ts import { dirname, join, resolve } from "path"; var HASNA_KNOWLEDGE_APP_PATH = join(".hasna", "knowledge"); @@ -770,6 +827,29 @@ class VersionConflictError extends Error { this.name = "VersionConflictError"; } } +function validateNoteDescription(raw) { + try { + return validateDescription(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : "description is required"); + } +} +function normalizeNoteAxis(field, raw) { + try { + return field === "reach" ? normalizeReach(raw) : normalizeConsequence(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : `invalid ${field}`); + } +} +function normalizeNoteTaxonomy(input) { + const result = {}; + if (input.reach !== undefined && input.reach !== null) + result.reach = normalizeNoteAxis("reach", input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeNoteAxis("consequence", input.consequence); + } + return result; +} function parseJsonColumn(value, fallback) { if (value == null) return fallback; @@ -821,6 +901,9 @@ function rowToItem(row) { short_id: row.short_id ?? null, title: String(row.title ?? ""), content: String(row.content ?? ""), + description: row.description ?? null, + reach: row.reach ?? null, + consequence: row.consequence ?? null, url: row.url ?? null, tags: parseJson(row.tags, []), metadata: parseJson(row.metadata, {}), @@ -849,14 +932,19 @@ class NoteRepo { if (!input.title || typeof input.title !== "string") { throw new HttpError(400, "title is required"); } + const description = validateNoteDescription(input.description); + const axes = normalizeNoteTaxonomy(input); const now = new Date().toISOString(); const suppliedId = typeof input.id === "string" ? input.id.trim() : ""; if (suppliedId) { - const row2 = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$8) + const row2 = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$11) ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, + description = EXCLUDED.description, + reach = EXCLUDED.reach, + consequence = EXCLUDED.consequence, url = EXCLUDED.url, tags = EXCLUDED.tags, metadata = EXCLUDED.metadata, @@ -866,6 +954,9 @@ class NoteRepo { makeShortId(suppliedId), input.title, input.content ?? "", + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -874,13 +965,16 @@ class NoteRepo { return rowToItem(row2); } const id = makeId(); - const row = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$9) + const row = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$12) RETURNING *`, [ id, makeShortId(id), input.title, input.content ?? "", + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -927,6 +1021,13 @@ class NoteRepo { push("title", patch.title); if (patch.content !== undefined) push("content", patch.content); + if (patch.description !== undefined) + push("description", validateNoteDescription(patch.description)); + if (patch.reach !== undefined) + push("reach", patch.reach === null ? null : normalizeNoteAxis("reach", patch.reach)); + if (patch.consequence !== undefined) { + push("consequence", patch.consequence === null ? null : normalizeNoteAxis("consequence", patch.consequence)); + } if (patch.url !== undefined) push("url", patch.url); if (patch.tags !== undefined) diff --git a/bin/knowledge.js b/bin/knowledge.js index c363050..6be3a56 100755 --- a/bin/knowledge.js +++ b/bin/knowledge.js @@ -1,9 +1,9 @@ #!/usr/bin/env bun // @bun -var t8=Object.create;var{getPrototypeOf:o8,defineProperty:BN,getOwnPropertyNames:p8}=Object;var e8=Object.prototype.hasOwnProperty;function a8(_){return this[_]}var s8,_Y,$Y=(_,$,g)=>{var U=_!=null&&typeof _==="object";if(U){var D=$?s8??=new WeakMap:_Y??=new WeakMap,I=D.get(_);if(I)return I}g=_!=null?t8(o8(_)):{};let j=$||!_||!_.__esModule?BN(g,"default",{value:_,enumerable:!0}):g;for(let N of p8(_))if(!e8.call(j,N))BN(j,N,{get:a8.bind(_,N),enumerable:!0});if(U)D.set(_,j);return j};var e6=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var gY=(_)=>_;function DY(_,$){this[_]=gY.bind(null,$)}var r$=(_,$)=>{for(var g in $)BN(_,g,{get:$[g],enumerable:!0,configurable:!0,set:DY.bind($,g)})};var w=(_,$)=>()=>(_&&($=_(_=0)),$);var O_=import.meta.require;function Y(_,$,g){function U(N,O){if(!N._zod)Object.defineProperty(N,"_zod",{value:{def:O,constr:j,traits:new Set},enumerable:!1});if(N._zod.traits.has(_))return;N._zod.traits.add(_),$(N,O);let A=j.prototype,L=Object.keys(A);for(let z=0;z{if(g?.Parent&&N instanceof g.Parent)return!0;return N?._zod?.traits?.has(_)}}),Object.defineProperty(j,"name",{value:_}),j}function Z_(_){if(_)Object.assign(A4,_);return A4}var YX,RI,GI,x$,L4,A4;var J4=w(()=>{RI=Object.freeze({status:"aborted"});GI=Symbol("zod_brand");x$=class x$ extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};L4=class L4 extends Error{constructor(_){super(`Encountered unidirectional transform during encode: ${_}`);this.name="ZodEncodeError"}};(YX=globalThis).__zod_globalConfig??(YX.__zod_globalConfig={});A4=globalThis.__zod_globalConfig});var H={};r$(H,{unwrapMessage:()=>og,uint8ArrayToHex:()=>WK,uint8ArrayToBase64url:()=>zK,uint8ArrayToBase64:()=>qX,stringifyPrimitive:()=>F,slugify:()=>hE,shallowClone:()=>nE,safeExtend:()=>EK,required:()=>LK,randomString:()=>$K,propertyKeyTypes:()=>ag,promiseAllObject:()=>_K,primitiveTypes:()=>dE,prefixIssues:()=>s_,pick:()=>IK,partial:()=>AK,parsedType:()=>M,optionalKeys:()=>mE,omit:()=>jK,objectClone:()=>eB,numKeys:()=>gK,nullish:()=>M6,normalizeParams:()=>C,mergeDefs:()=>D6,merge:()=>OK,jsonStringifyReplacer:()=>V0,joinValues:()=>B,issue:()=>M0,isPlainObject:()=>b6,isObject:()=>P4,hexToUint8Array:()=>SK,getSizableOrigin:()=>sg,getParsedType:()=>DK,getLengthableOrigin:()=>_D,getEnumValues:()=>pg,getElementAtPath:()=>sB,floatSafeRemainder:()=>yE,finalizeIssue:()=>l_,extend:()=>NK,explicitlyAborted:()=>tE,escapeRegex:()=>P$,esc:()=>YI,defineLazy:()=>$_,createTransparentProxy:()=>UK,cloneDef:()=>aB,clone:()=>y_,cleanRegex:()=>eg,cleanEnum:()=>JK,captureStackTrace:()=>QI,cached:()=>F0,base64urlToUint8Array:()=>PK,base64ToUint8Array:()=>TX,assignProp:()=>Z6,assertNotEqual:()=>lB,assertNever:()=>oB,assertIs:()=>tB,assertEqual:()=>iB,assert:()=>pB,allowsEval:()=>cE,aborted:()=>H6,NUMBER_FORMAT_RANGES:()=>iE,Class:()=>BX,BIGINT_FORMAT_RANGES:()=>lE});function iB(_){return _}function lB(_){return _}function tB(_){}function oB(_){throw Error("Unexpected value in exhaustive check")}function pB(_){}function pg(_){let $=Object.values(_).filter((U)=>typeof U==="number");return Object.entries(_).filter(([U,D])=>$.indexOf(+U)===-1).map(([U,D])=>D)}function B(_,$="|"){return _.map((g)=>F(g)).join($)}function V0(_,$){if(typeof $==="bigint")return $.toString();return $}function F0(_){return{get value(){{let g=_();return Object.defineProperty(this,"value",{value:g}),g}throw Error("cached value already set")}}}function M6(_){return _===null||_===void 0}function eg(_){let $=_.startsWith("^")?1:0,g=_.endsWith("$")?_.length-1:_.length;return _.slice($,g)}function yE(_,$){let g=_/$,U=Math.round(g),D=Number.EPSILON*Math.max(Math.abs(g),1);if(Math.abs(g-U)g?.[U],_)}function _K(_){let $=Object.keys(_),g=$.map((U)=>_[U]);return Promise.all(g).then((U)=>{let D={};for(let I=0;I<$.length;I++)D[$[I]]=U[I];return D})}function $K(_=10){let g="";for(let U=0;U<_;U++)g+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return g}function YI(_){return JSON.stringify(_)}function hE(_){return _.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function P4(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)}function b6(_){if(P4(_)===!1)return!1;let $=_.constructor;if($===void 0)return!0;if(typeof $!=="function")return!0;let g=$.prototype;if(P4(g)===!1)return!1;if(Object.prototype.hasOwnProperty.call(g,"isPrototypeOf")===!1)return!1;return!0}function nE(_){if(b6(_))return{..._};if(Array.isArray(_))return[..._];if(_ instanceof Map)return new Map(_);if(_ instanceof Set)return new Set(_);return _}function gK(_){let $=0;for(let g in _)if(Object.prototype.hasOwnProperty.call(_,g))$++;return $}function P$(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function y_(_,$,g){let U=new _._zod.constr($??_._zod.def);if(!$||g?.parent)U._zod.parent=_;return U}function C(_){let $=_;if(!$)return{};if(typeof $==="string")return{error:()=>$};if($?.message!==void 0){if($?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");$.error=$.message}if(delete $.message,typeof $.error==="string")return{...$,error:()=>$.error};return $}function UK(_){let $;return new Proxy({},{get(g,U,D){return $??($=_()),Reflect.get($,U,D)},set(g,U,D,I){return $??($=_()),Reflect.set($,U,D,I)},has(g,U){return $??($=_()),Reflect.has($,U)},deleteProperty(g,U){return $??($=_()),Reflect.deleteProperty($,U)},ownKeys(g){return $??($=_()),Reflect.ownKeys($)},getOwnPropertyDescriptor(g,U){return $??($=_()),Reflect.getOwnPropertyDescriptor($,U)},defineProperty(g,U,D){return $??($=_()),Reflect.defineProperty($,U,D)}})}function F(_){if(typeof _==="bigint")return _.toString()+"n";if(typeof _==="string")return`"${_}"`;return`${_}`}function mE(_){return Object.keys(_).filter(($)=>{return _[$]._zod.optin==="optional"&&_[$]._zod.optout==="optional"})}function IK(_,$){let g=_._zod.def,U=g.checks;if(U&&U.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let I=D6(_._zod.def,{get shape(){let j={};for(let N in $){if(!(N in g.shape))throw Error(`Unrecognized key: "${N}"`);if(!$[N])continue;j[N]=g.shape[N]}return Z6(this,"shape",j),j},checks:[]});return y_(_,I)}function jK(_,$){let g=_._zod.def,U=g.checks;if(U&&U.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let I=D6(_._zod.def,{get shape(){let j={..._._zod.def.shape};for(let N in $){if(!(N in g.shape))throw Error(`Unrecognized key: "${N}"`);if(!$[N])continue;delete j[N]}return Z6(this,"shape",j),j},checks:[]});return y_(_,I)}function NK(_,$){if(!b6($))throw Error("Invalid input to extend: expected a plain object");let g=_._zod.def.checks;if(g&&g.length>0){let I=_._zod.def.shape;for(let j in $)if(Object.getOwnPropertyDescriptor(I,j)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let D=D6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$};return Z6(this,"shape",I),I}});return y_(_,D)}function EK(_,$){if(!b6($))throw Error("Invalid input to safeExtend: expected a plain object");let g=D6(_._zod.def,{get shape(){let U={..._._zod.def.shape,...$};return Z6(this,"shape",U),U}});return y_(_,g)}function OK(_,$){if(_._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let g=D6(_._zod.def,{get shape(){let U={..._._zod.def.shape,...$._zod.def.shape};return Z6(this,"shape",U),U},get catchall(){return $._zod.def.catchall},checks:$._zod.def.checks??[]});return y_(_,g)}function AK(_,$,g){let D=$._zod.def.checks;if(D&&D.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let j=D6($._zod.def,{get shape(){let N=$._zod.def.shape,O={...N};if(g)for(let A in g){if(!(A in N))throw Error(`Unrecognized key: "${A}"`);if(!g[A])continue;O[A]=_?new _({type:"optional",innerType:N[A]}):N[A]}else for(let A in N)O[A]=_?new _({type:"optional",innerType:N[A]}):N[A];return Z6(this,"shape",O),O},checks:[]});return y_($,j)}function LK(_,$,g){let U=D6($._zod.def,{get shape(){let D=$._zod.def.shape,I={...D};if(g)for(let j in g){if(!(j in I))throw Error(`Unrecognized key: "${j}"`);if(!g[j])continue;I[j]=new _({type:"nonoptional",innerType:D[j]})}else for(let j in D)I[j]=new _({type:"nonoptional",innerType:D[j]});return Z6(this,"shape",I),I}});return y_($,U)}function H6(_,$=0){if(_.aborted===!0)return!0;for(let g=$;g<_.issues.length;g++)if(_.issues[g]?.continue!==!0)return!0;return!1}function tE(_,$=0){if(_.aborted===!0)return!0;for(let g=$;g<_.issues.length;g++)if(_.issues[g]?.continue===!1)return!0;return!1}function s_(_,$){return $.map((g)=>{var U;return(U=g).path??(U.path=[]),g.path.unshift(_),g})}function og(_){return typeof _==="string"?_:_?.message}function l_(_,$,g){let U=_.message?_.message:og(_.inst?._zod.def?.error?.(_))??og($?.error?.(_))??og(g.customError?.(_))??og(g.localeError?.(_))??"Invalid input",{inst:D,continue:I,input:j,...N}=_;if(N.path??(N.path=[]),N.message=U,$?.reportInput)N.input=j;return N}function sg(_){if(_ instanceof Set)return"set";if(_ instanceof Map)return"map";if(_ instanceof File)return"file";return"unknown"}function _D(_){if(Array.isArray(_))return"array";if(typeof _==="string")return"string";return"unknown"}function M(_){let $=typeof _;switch($){case"number":return Number.isNaN(_)?"nan":"number";case"object":{if(_===null)return"null";if(Array.isArray(_))return"array";let g=_;if(g&&Object.getPrototypeOf(g)!==Object.prototype&&"constructor"in g&&g.constructor)return g.constructor.name}}return $}function M0(..._){let[$,g,U]=_;if(typeof $==="string")return{message:$,code:"custom",input:g,inst:U};return{...$}}function JK(_){return Object.entries(_).filter(([$,g])=>{return Number.isNaN(Number.parseInt($,10))}).map(($)=>$[1])}function TX(_){let $=atob(_),g=new Uint8Array($.length);for(let U=0;U<$.length;U++)g[U]=$.charCodeAt(U);return g}function qX(_){let $="";for(let g=0;g<_.length;g++)$+=String.fromCharCode(_[g]);return btoa($)}function PK(_){let $=_.replace(/-/g,"+").replace(/_/g,"/"),g="=".repeat((4-$.length%4)%4);return TX($+g)}function zK(_){return qX(_).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function SK(_){let $=_.replace(/^0x/,"");if($.length%2!==0)throw Error("Invalid hex string length");let g=new Uint8Array($.length/2);for(let U=0;U<$.length;U+=2)g[U/2]=Number.parseInt($.slice(U,U+2),16);return g}function WK(_){return Array.from(_).map(($)=>$.toString(16).padStart(2,"0")).join("")}class BX{constructor(..._){}}var QX,QI,cE,DK=(_)=>{let $=typeof _;switch($){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(_)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":if(Array.isArray(_))return"array";if(_===null)return"null";if(_.then&&typeof _.then==="function"&&_.catch&&typeof _.catch==="function")return"promise";if(typeof Map<"u"&&_ instanceof Map)return"map";if(typeof Set<"u"&&_ instanceof Set)return"set";if(typeof Date<"u"&&_ instanceof Date)return"date";if(typeof File<"u"&&_ instanceof File)return"file";return"object";default:throw Error(`Unknown data type: ${$}`)}},ag,dE,iE,lE;var c=w(()=>{J4();QX=Symbol("evaluating");QI="captureStackTrace"in Error?Error.captureStackTrace:(..._)=>{};cE=F0(()=>{if(A4.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(_){return!1}});ag=new Set(["string","number","symbol"]),dE=new Set(["string","number","bigint","boolean","symbol","undefined"]);iE={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},lE={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]}});function Z0(_,$=(g)=>g.message){let g={},U=[];for(let D of _.issues)if(D.path.length>0)g[D.path[0]]=g[D.path[0]]||[],g[D.path[0]].push($(D));else U.push($(D));return{formErrors:U,fieldErrors:g}}function b0(_,$=(g)=>g.message){let g={_errors:[]},U=(D,I=[])=>{for(let j of D.issues)if(j.code==="invalid_union"&&j.errors.length)j.errors.map((N)=>U({issues:N},[...I,...j.path]));else if(j.code==="invalid_key")U({issues:j.issues},[...I,...j.path]);else if(j.code==="invalid_element")U({issues:j.issues},[...I,...j.path]);else{let N=[...I,...j.path];if(N.length===0)g._errors.push($(j));else{let O=g,A=0;while(Ag.message){let g={errors:[]},U=(D,I=[])=>{var j,N;for(let O of D.issues)if(O.code==="invalid_union"&&O.errors.length)O.errors.map((A)=>U({issues:A},[...I,...O.path]));else if(O.code==="invalid_key")U({issues:O.issues},[...I,...O.path]);else if(O.code==="invalid_element")U({issues:O.issues},[...I,...O.path]);else{let A=[...I,...O.path];if(A.length===0){g.errors.push($(O));continue}let L=g,z=0;while(ztypeof U==="object"?U.key:U);for(let U of g)if(typeof U==="number")$.push(`[${U}]`);else if(typeof U==="symbol")$.push(`[${JSON.stringify(String(U))}]`);else if(/[^\w$]/.test(U))$.push(`[${JSON.stringify(U)}]`);else{if($.length)$.push(".");$.push(U)}return $.join("")}function qI(_){let $=[],g=[..._.issues].sort((U,D)=>(U.path??[]).length-(D.path??[]).length);for(let U of g)if($.push(`\u2716 ${U.message}`),U.path?.length)$.push(` \u2192 at ${VX(U.path)}`);return $.join(` -`)}var KX=(_,$)=>{_.name="$ZodError",Object.defineProperty(_,"_zod",{value:_._zod,enumerable:!1}),Object.defineProperty(_,"issues",{value:$,enumerable:!1}),_.message=JSON.stringify($,V0,2),Object.defineProperty(_,"toString",{value:()=>_.message,enumerable:!1})},$D,_$;var oE=w(()=>{J4();c();$D=Y("$ZodError",KX),_$=Y("$ZodError",KX,{Parent:Error})});var H0=(_)=>($,g,U,D)=>{let I=U?{...U,async:!1}:{async:!1},j=$._zod.run({value:g,issues:[]},I);if(j instanceof Promise)throw new x$;if(j.issues.length){let N=new(D?.Err??_)(j.issues.map((O)=>l_(O,I,Z_())));throw QI(N,D?.callee),N}return j.value},BI,k0=(_)=>async($,g,U,D)=>{let I=U?{...U,async:!0}:{async:!0},j=$._zod.run({value:g,issues:[]},I);if(j instanceof Promise)j=await j;if(j.issues.length){let N=new(D?.Err??_)(j.issues.map((O)=>l_(O,I,Z_())));throw QI(N,D?.callee),N}return j.value},KI,C0=(_)=>($,g,U)=>{let D=U?{...U,async:!1}:{async:!1},I=$._zod.run({value:g,issues:[]},D);if(I instanceof Promise)throw new x$;return I.issues.length?{success:!1,error:new(_??$D)(I.issues.map((j)=>l_(j,D,Z_())))}:{success:!0,data:I.value}},pE,r0=(_)=>async($,g,U)=>{let D=U?{...U,async:!0}:{async:!0},I=$._zod.run({value:g,issues:[]},D);if(I instanceof Promise)I=await I;return I.issues.length?{success:!1,error:new _(I.issues.map((j)=>l_(j,D,Z_())))}:{success:!0,data:I.value}},eE,VI=(_)=>($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return H0(_)($,g,D)},RK,FI=(_)=>($,g,U)=>{return H0(_)($,g,U)},GK,MI=(_)=>async($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return k0(_)($,g,D)},YK,ZI=(_)=>async($,g,U)=>{return k0(_)($,g,U)},QK,bI=(_)=>($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return C0(_)($,g,D)},TK,HI=(_)=>($,g,U)=>{return C0(_)($,g,U)},qK,kI=(_)=>async($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return r0(_)($,g,D)},BK,CI=(_)=>async($,g,U)=>{return r0(_)($,g,U)},KK;var aE=w(()=>{J4();oE();c();BI=H0(_$),KI=k0(_$),pE=C0(_$),eE=r0(_$),RK=VI(_$),GK=FI(_$),YK=MI(_$),QK=ZI(_$),TK=bI(_$),qK=HI(_$),BK=kI(_$),KK=CI(_$)});var $$={};r$($$,{xid:()=>g2,uuid7:()=>ZK,uuid6:()=>MK,uuid4:()=>FK,uuid:()=>z4,uppercase:()=>F2,unicodeEmail:()=>FX,undefined:()=>K2,ulid:()=>$2,time:()=>R2,string:()=>Y2,sha512_hex:()=>pK,sha512_base64url:()=>aK,sha512_base64:()=>eK,sha384_hex:()=>lK,sha384_base64url:()=>oK,sha384_base64:()=>tK,sha256_hex:()=>dK,sha256_base64url:()=>iK,sha256_base64:()=>mK,sha1_hex:()=>hK,sha1_base64url:()=>nK,sha1_base64:()=>cK,rfc5322Email:()=>HK,number:()=>gD,null:()=>B2,nanoid:()=>U2,md5_hex:()=>uK,md5_base64url:()=>yK,md5_base64:()=>xK,mac:()=>L2,lowercase:()=>V2,ksuid:()=>D2,ipv6:()=>A2,ipv4:()=>O2,integer:()=>T2,idnEmail:()=>kK,httpProtocol:()=>S2,html5Email:()=>bK,hostname:()=>vK,hex:()=>fK,guid:()=>j2,extendedDuration:()=>VK,emoji:()=>E2,email:()=>N2,e164:()=>W2,duration:()=>I2,domain:()=>wK,datetime:()=>G2,date:()=>X2,cuid2:()=>_2,cuid:()=>sE,cidrv6:()=>P2,cidrv4:()=>J2,browserEmail:()=>CK,boolean:()=>q2,bigint:()=>Q2,base64url:()=>rI,base64:()=>z2});function E2(){return new RegExp(rK,"u")}function ZX(_){return typeof _.precision==="number"?_.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":_.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${_.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function R2(_){return new RegExp(`^${ZX(_)}$`)}function G2(_){let $=ZX({precision:_.precision}),g=["Z"];if(_.local)g.push("");if(_.offset)g.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let U=`${$}(?:${g.join("|")})`;return new RegExp(`^${MX}T(?:${U})$`)}function DD(_,$){return new RegExp(`^[A-Za-z0-9+/]{${_}}${$}$`)}function UD(_){return new RegExp(`^[A-Za-z0-9_-]{${_}}$`)}var sE,_2,$2,g2,D2,U2,I2,VK,j2,z4=(_)=>{if(!_)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${_}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)},FK,MK,ZK,N2,bK,HK,FX,kK,CK,rK="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",O2,A2,L2=(_)=>{let $=P$(_??":");return new RegExp(`^(?:[0-9A-F]{2}${$}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${$}){5}[0-9a-f]{2}$`)},J2,P2,z2,rI,vK,wK,S2,W2,MX="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",X2,Y2=(_)=>{let $=_?`[\\s\\S]{${_?.minimum??0},${_?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${$}$`)},Q2,T2,gD,q2,B2,K2,V2,F2,fK,uK,xK,yK,hK,cK,nK,dK,mK,iK,lK,tK,oK,pK,eK,aK;var vI=w(()=>{c();sE=/^[cC][0-9a-z]{6,}$/,_2=/^[0-9a-z]+$/,$2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,g2=/^[0-9a-vA-V]{20}$/,D2=/^[A-Za-z0-9]{27}$/,U2=/^[a-zA-Z0-9_-]{21}$/,I2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,VK=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,j2=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,FK=z4(4),MK=z4(6),ZK=z4(7),N2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,bK=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,HK=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,FX=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,kK=FX,CK=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;O2=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,A2=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,J2=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,P2=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,z2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,rI=/^[A-Za-z0-9_-]*$/,vK=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,wK=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,S2=/^https?$/,W2=/^\+[1-9]\d{6,14}$/,X2=new RegExp(`^${MX}$`);Q2=/^-?\d+n?$/,T2=/^-?\d+$/,gD=/^-?\d+(?:\.\d+)?$/,q2=/^(?:true|false)$/i,B2=/^null$/i,K2=/^undefined$/i,V2=/^[^A-Z]*$/,F2=/^[^a-z]*$/,fK=/^[0-9a-fA-F]*$/;uK=/^[0-9a-fA-F]{32}$/,xK=DD(22,"=="),yK=UD(22),hK=/^[0-9a-fA-F]{40}$/,cK=DD(27,"="),nK=UD(27),dK=/^[0-9a-fA-F]{64}$/,mK=DD(43,"="),iK=UD(43),lK=/^[0-9a-fA-F]{96}$/,tK=DD(64,""),oK=UD(64),pK=/^[0-9a-fA-F]{128}$/,eK=DD(86,"=="),aK=UD(86)});function bX(_,$,g){if(_.issues.length)$.issues.push(...s_(g,_.issues))}var Y_,HX,wI,fI,M2,Z2,b2,H2,k2,C2,r2,v2,w2,v0,f2,u2,x2,y2,h2,c2,n2,d2,m2;var uI=w(()=>{J4();vI();c();Y_=Y("$ZodCheck",(_,$)=>{var g;_._zod??(_._zod={}),_._zod.def=$,(g=_._zod).onattach??(g.onattach=[])}),HX={number:"number",bigint:"bigint",object:"date"},wI=Y("$ZodCheckLessThan",(_,$)=>{Y_.init(_,$);let g=HX[typeof $.value];_._zod.onattach.push((U)=>{let D=U._zod.bag,I=($.inclusive?D.maximum:D.exclusiveMaximum)??Number.POSITIVE_INFINITY;if($.value{if($.inclusive?U.value<=$.value:U.value<$.value)return;U.issues.push({origin:g,code:"too_big",maximum:typeof $.value==="object"?$.value.getTime():$.value,input:U.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),fI=Y("$ZodCheckGreaterThan",(_,$)=>{Y_.init(_,$);let g=HX[typeof $.value];_._zod.onattach.push((U)=>{let D=U._zod.bag,I=($.inclusive?D.minimum:D.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if($.value>I)if($.inclusive)D.minimum=$.value;else D.exclusiveMinimum=$.value}),_._zod.check=(U)=>{if($.inclusive?U.value>=$.value:U.value>$.value)return;U.issues.push({origin:g,code:"too_small",minimum:typeof $.value==="object"?$.value.getTime():$.value,input:U.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),M2=Y("$ZodCheckMultipleOf",(_,$)=>{Y_.init(_,$),_._zod.onattach.push((g)=>{var U;(U=g._zod.bag).multipleOf??(U.multipleOf=$.value)}),_._zod.check=(g)=>{if(typeof g.value!==typeof $.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof g.value==="bigint"?g.value%$.value===BigInt(0):yE(g.value,$.value)===0)return;g.issues.push({origin:typeof g.value,code:"not_multiple_of",divisor:$.value,input:g.value,inst:_,continue:!$.abort})}}),Z2=Y("$ZodCheckNumberFormat",(_,$)=>{Y_.init(_,$),$.format=$.format||"float64";let g=$.format?.includes("int"),U=g?"int":"number",[D,I]=iE[$.format];_._zod.onattach.push((j)=>{let N=j._zod.bag;if(N.format=$.format,N.minimum=D,N.maximum=I,g)N.pattern=T2}),_._zod.check=(j)=>{let N=j.value;if(g){if(!Number.isInteger(N)){j.issues.push({expected:U,format:$.format,code:"invalid_type",continue:!1,input:N,inst:_});return}if(!Number.isSafeInteger(N)){if(N>0)j.issues.push({input:N,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:_,origin:U,inclusive:!0,continue:!$.abort});else j.issues.push({input:N,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:_,origin:U,inclusive:!0,continue:!$.abort});return}}if(NI)j.issues.push({origin:"number",input:N,code:"too_big",maximum:I,inclusive:!0,inst:_,continue:!$.abort})}}),b2=Y("$ZodCheckBigIntFormat",(_,$)=>{Y_.init(_,$);let[g,U]=lE[$.format];_._zod.onattach.push((D)=>{let I=D._zod.bag;I.format=$.format,I.minimum=g,I.maximum=U}),_._zod.check=(D)=>{let I=D.value;if(IU)D.issues.push({origin:"bigint",input:I,code:"too_big",maximum:U,inclusive:!0,inst:_,continue:!$.abort})}}),H2=Y("$ZodCheckMaxSize",(_,$)=>{var g;Y_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!M6(D)&&D.size!==void 0}),_._zod.onattach.push((U)=>{let D=U._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum{let D=U.value;if(D.size<=$.maximum)return;U.issues.push({origin:sg(D),code:"too_big",maximum:$.maximum,inclusive:!0,input:D,inst:_,continue:!$.abort})}}),k2=Y("$ZodCheckMinSize",(_,$)=>{var g;Y_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!M6(D)&&D.size!==void 0}),_._zod.onattach.push((U)=>{let D=U._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>D)U._zod.bag.minimum=$.minimum}),_._zod.check=(U)=>{let D=U.value;if(D.size>=$.minimum)return;U.issues.push({origin:sg(D),code:"too_small",minimum:$.minimum,inclusive:!0,input:D,inst:_,continue:!$.abort})}}),C2=Y("$ZodCheckSizeEquals",(_,$)=>{var g;Y_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!M6(D)&&D.size!==void 0}),_._zod.onattach.push((U)=>{let D=U._zod.bag;D.minimum=$.size,D.maximum=$.size,D.size=$.size}),_._zod.check=(U)=>{let D=U.value,I=D.size;if(I===$.size)return;let j=I>$.size;U.issues.push({origin:sg(D),...j?{code:"too_big",maximum:$.size}:{code:"too_small",minimum:$.size},inclusive:!0,exact:!0,input:U.value,inst:_,continue:!$.abort})}}),r2=Y("$ZodCheckMaxLength",(_,$)=>{var g;Y_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!M6(D)&&D.length!==void 0}),_._zod.onattach.push((U)=>{let D=U._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum{let D=U.value;if(D.length<=$.maximum)return;let j=_D(D);U.issues.push({origin:j,code:"too_big",maximum:$.maximum,inclusive:!0,input:D,inst:_,continue:!$.abort})}}),v2=Y("$ZodCheckMinLength",(_,$)=>{var g;Y_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!M6(D)&&D.length!==void 0}),_._zod.onattach.push((U)=>{let D=U._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>D)U._zod.bag.minimum=$.minimum}),_._zod.check=(U)=>{let D=U.value;if(D.length>=$.minimum)return;let j=_D(D);U.issues.push({origin:j,code:"too_small",minimum:$.minimum,inclusive:!0,input:D,inst:_,continue:!$.abort})}}),w2=Y("$ZodCheckLengthEquals",(_,$)=>{var g;Y_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!M6(D)&&D.length!==void 0}),_._zod.onattach.push((U)=>{let D=U._zod.bag;D.minimum=$.length,D.maximum=$.length,D.length=$.length}),_._zod.check=(U)=>{let D=U.value,I=D.length;if(I===$.length)return;let j=_D(D),N=I>$.length;U.issues.push({origin:j,...N?{code:"too_big",maximum:$.length}:{code:"too_small",minimum:$.length},inclusive:!0,exact:!0,input:U.value,inst:_,continue:!$.abort})}}),v0=Y("$ZodCheckStringFormat",(_,$)=>{var g,U;if(Y_.init(_,$),_._zod.onattach.push((D)=>{let I=D._zod.bag;if(I.format=$.format,$.pattern)I.patterns??(I.patterns=new Set),I.patterns.add($.pattern)}),$.pattern)(g=_._zod).check??(g.check=(D)=>{if($.pattern.lastIndex=0,$.pattern.test(D.value))return;D.issues.push({origin:"string",code:"invalid_format",format:$.format,input:D.value,...$.pattern?{pattern:$.pattern.toString()}:{},inst:_,continue:!$.abort})});else(U=_._zod).check??(U.check=()=>{})}),f2=Y("$ZodCheckRegex",(_,$)=>{v0.init(_,$),_._zod.check=(g)=>{if($.pattern.lastIndex=0,$.pattern.test(g.value))return;g.issues.push({origin:"string",code:"invalid_format",format:"regex",input:g.value,pattern:$.pattern.toString(),inst:_,continue:!$.abort})}}),u2=Y("$ZodCheckLowerCase",(_,$)=>{$.pattern??($.pattern=V2),v0.init(_,$)}),x2=Y("$ZodCheckUpperCase",(_,$)=>{$.pattern??($.pattern=F2),v0.init(_,$)}),y2=Y("$ZodCheckIncludes",(_,$)=>{Y_.init(_,$);let g=P$($.includes),U=new RegExp(typeof $.position==="number"?`^.{${$.position}}${g}`:g);$.pattern=U,_._zod.onattach.push((D)=>{let I=D._zod.bag;I.patterns??(I.patterns=new Set),I.patterns.add(U)}),_._zod.check=(D)=>{if(D.value.includes($.includes,$.position))return;D.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:$.includes,input:D.value,inst:_,continue:!$.abort})}}),h2=Y("$ZodCheckStartsWith",(_,$)=>{Y_.init(_,$);let g=new RegExp(`^${P$($.prefix)}.*`);$.pattern??($.pattern=g),_._zod.onattach.push((U)=>{let D=U._zod.bag;D.patterns??(D.patterns=new Set),D.patterns.add(g)}),_._zod.check=(U)=>{if(U.value.startsWith($.prefix))return;U.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:$.prefix,input:U.value,inst:_,continue:!$.abort})}}),c2=Y("$ZodCheckEndsWith",(_,$)=>{Y_.init(_,$);let g=new RegExp(`.*${P$($.suffix)}$`);$.pattern??($.pattern=g),_._zod.onattach.push((U)=>{let D=U._zod.bag;D.patterns??(D.patterns=new Set),D.patterns.add(g)}),_._zod.check=(U)=>{if(U.value.endsWith($.suffix))return;U.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:$.suffix,input:U.value,inst:_,continue:!$.abort})}});n2=Y("$ZodCheckProperty",(_,$)=>{Y_.init(_,$),_._zod.check=(g)=>{let U=$.schema._zod.run({value:g.value[$.property],issues:[]},{});if(U instanceof Promise)return U.then((D)=>bX(D,g,$.property));bX(U,g,$.property);return}}),d2=Y("$ZodCheckMimeType",(_,$)=>{Y_.init(_,$);let g=new Set($.mime);_._zod.onattach.push((U)=>{U._zod.bag.mime=$.mime}),_._zod.check=(U)=>{if(g.has(U.value.type))return;U.issues.push({code:"invalid_value",values:$.mime,input:U.value.type,inst:_,continue:!$.abort})}}),m2=Y("$ZodCheckOverwrite",(_,$)=>{Y_.init(_,$),_._zod.check=(g)=>{g.value=$.tx(g.value)}})});class xI{constructor(_=[]){if(this.content=[],this.indent=0,this)this.args=_}indented(_){this.indent+=1,_(this),this.indent-=1}write(_){if(typeof _==="function"){_(this,{execution:"sync"}),_(this,{execution:"async"});return}let g=_.split(` -`).filter((I)=>I),U=Math.min(...g.map((I)=>I.length-I.trimStart().length)),D=g.map((I)=>I.slice(U)).map((I)=>" ".repeat(this.indent*2)+I);for(let I of D)this.content.push(I)}compile(){let _=Function,$=this?.args,U=[...(this?.content??[""]).map((D)=>` ${D}`)];return new _(...$,U.join(` -`))}}var i2;var l2=w(()=>{i2={major:4,minor:4,patch:3}});function SO(_){if(_==="")return!0;if(/\s/.test(_))return!1;if(_.length%4!==0)return!1;try{return atob(_),!0}catch{return!1}}function lX(_){if(!rI.test(_))return!1;let $=_.replace(/[-_]/g,(U)=>U==="-"?"+":"/"),g=$.padEnd(Math.ceil($.length/4)*4,"=");return SO(g)}function tX(_,$=null){try{let g=_.split(".");if(g.length!==3)return!1;let[U]=g;if(!U)return!1;let D=JSON.parse(atob(U));if("typ"in D&&D?.typ!=="JWT")return!1;if(!D.alg)return!1;if($&&(!("alg"in D)||D.alg!==$))return!1;return!0}catch{return!1}}function CX(_,$,g){if(_.issues.length)$.issues.push(...s_(g,_.issues));$.value[g]=_.value}function nI(_,$,g,U,D,I){let j=g in U;if(_.issues.length){if(D&&I&&!j)return;$.issues.push(...s_(g,_.issues))}if(!j&&!D){if(!_.issues.length)$.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[g]});return}if(_.value===void 0){if(j)$.value[g]=void 0}else $.value[g]=_.value}function oX(_){let $=Object.keys(_.shape);for(let U of $)if(!_.shape?.[U]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${U}": expected a Zod schema`);let g=mE(_.shape);return{..._,keys:$,keySet:new Set($),numKeys:$.length,optionalKeys:new Set(g)}}function pX(_,$,g,U,D,I){let j=[],N=D.keySet,O=D.catchall._zod,A=O.def.type,L=O.optin==="optional",z=O.optout==="optional";for(let W in $){if(W==="__proto__")continue;if(N.has(W))continue;if(A==="never"){j.push(W);continue}let J=O.run({value:$[W],issues:[]},U);if(J instanceof Promise)_.push(J.then((P)=>nI(P,g,W,$,L,z)));else nI(J,g,W,$,L,z)}if(j.length)g.issues.push({code:"unrecognized_keys",keys:j,input:$,inst:I});if(!_.length)return g;return Promise.all(_).then(()=>{return g})}function rX(_,$,g,U){for(let I of _)if(I.issues.length===0)return $.value=I.value,$;let D=_.filter((I)=>!H6(I));if(D.length===1)return $.value=D[0].value,D[0];return $.issues.push({code:"invalid_union",input:$.value,inst:g,errors:_.map((I)=>I.issues.map((j)=>l_(j,U,Z_())))}),$}function vX(_,$,g,U){let D=_.filter((I)=>I.issues.length===0);if(D.length===1)return $.value=D[0].value,$;if(D.length===0)$.issues.push({code:"invalid_union",input:$.value,inst:g,errors:_.map((I)=>I.issues.map((j)=>l_(j,U,Z_())))});else $.issues.push({code:"invalid_union",input:$.value,inst:g,errors:[],inclusive:!1});return $}function t2(_,$){if(_===$)return{valid:!0,data:_};if(_ instanceof Date&&$ instanceof Date&&+_===+$)return{valid:!0,data:_};if(b6(_)&&b6($)){let g=Object.keys($),U=Object.keys(_).filter((I)=>g.indexOf(I)!==-1),D={..._,...$};for(let I of U){let j=t2(_[I],$[I]);if(!j.valid)return{valid:!1,mergeErrorPath:[I,...j.mergeErrorPath]};D[I]=j.data}return{valid:!0,data:D}}if(Array.isArray(_)&&Array.isArray($)){if(_.length!==$.length)return{valid:!1,mergeErrorPath:[]};let g=[];for(let U=0;U<_.length;U++){let D=_[U],I=$[U],j=t2(D,I);if(!j.valid)return{valid:!1,mergeErrorPath:[U,...j.mergeErrorPath]};g.push(j.data)}return{valid:!0,data:g}}return{valid:!1,mergeErrorPath:[]}}function wX(_,$,g){let U=new Map,D;for(let N of $.issues)if(N.code==="unrecognized_keys"){D??(D=N);for(let O of N.keys){if(!U.has(O))U.set(O,{});U.get(O).l=!0}}else _.issues.push(N);for(let N of g.issues)if(N.code==="unrecognized_keys")for(let O of N.keys){if(!U.has(O))U.set(O,{});U.get(O).r=!0}else _.issues.push(N);let I=[...U].filter(([,N])=>N.l&&N.r).map(([N])=>N);if(I.length&&D)_.issues.push({...D,keys:I});if(H6(_))return _;let j=t2($.value,g.value);if(!j.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(j.mergeErrorPath)}`);return _.value=j.data,_}function fX(_,$){for(let g=_.length-1;g>=0;g--)if(_[g]._zod[$]!=="optional")return g+1;return 0}function uX(_,$,g){if(_.issues.length)$.issues.push(...s_(g,_.issues));$.value[g]=_.value}function xX(_,$,g,U,D){for(let I=0;I=D){$.value.length=I;break}$.issues.push(...s_(I,j.issues))}$.value[I]=j.value}for(let I=$.value.length-1;I>=U.length;I--)if(g[I]._zod.optout==="optional"&&$.value[I]===void 0)$.value.length=I;else break;return $}function yX(_,$,g,U,D,I,j){if(_.issues.length)if(ag.has(typeof U))g.issues.push(...s_(U,_.issues));else g.issues.push({code:"invalid_key",origin:"map",input:D,inst:I,issues:_.issues.map((N)=>l_(N,j,Z_()))});if($.issues.length)if(ag.has(typeof U))g.issues.push(...s_(U,$.issues));else g.issues.push({origin:"map",code:"invalid_element",input:D,inst:I,key:U,issues:$.issues.map((N)=>l_(N,j,Z_()))});g.value.set(_.value,$.value)}function hX(_,$){if(_.issues.length)$.issues.push(..._.issues);$.value.add(_.value)}function cX(_,$){if($===void 0&&(_.issues.length||_.fallback))return{issues:[],value:void 0};return _}function nX(_,$){if(_.value===void 0)_.value=$.defaultValue;return _}function dX(_,$){if(!_.issues.length&&_.value===void 0)_.issues.push({code:"invalid_type",expected:"nonoptional",input:_.value,inst:$});return _}function yI(_,$,g){if(_.issues.length)return _.aborted=!0,_;return $._zod.run({value:_.value,issues:_.issues,fallback:_.fallback},g)}function hI(_,$,g){if(_.issues.length)return _.aborted=!0,_;if((g.direction||"forward")==="forward"){let D=$.transform(_.value,_);if(D instanceof Promise)return D.then((I)=>cI(_,I,$.out,g));return cI(_,D,$.out,g)}else{let D=$.reverseTransform(_.value,_);if(D instanceof Promise)return D.then((I)=>cI(_,I,$.in,g));return cI(_,D,$.in,g)}}function cI(_,$,g,U){if(_.issues.length)return _.aborted=!0,_;return g._zod.run({value:$,issues:_.issues},U)}function mX(_){return _.value=Object.freeze(_.value),_}function iX(_,$,g,U){if(!_){let D={code:"custom",input:g,inst:U,path:[...U._zod.def.path??[]],continue:!U._zod.def.abort};if(U._zod.def.params)D.params=U._zod.def.params;$.issues.push(M0(D))}}var l,S4,R_,o2,p2,e2,a2,s2,_O,$O,gO,DO,UO,IO,jO,NO,EO,OO,AO,LO,JO,PO,zO,WO,XO,RO,GO,YO,dI,QO,ID,mI,TO,qO,BO,KO,VO,FO,MO,ZO,bO,HO,eX,kO,jD,CO,rO,vO,iI,wO,fO,uO,xO,yO,hO,cO,lI,nO,dO,mO,iO,lO,tO,oO,pO,tI,ND,eO,aO,sO,_A,$A,gA,DA;var UA=w(()=>{uI();J4();aE();vI();c();l2();c();l=Y("$ZodType",(_,$)=>{var g;_??(_={}),_._zod.def=$,_._zod.bag=_._zod.bag||{},_._zod.version=i2;let U=[..._._zod.def.checks??[]];if(_._zod.traits.has("$ZodCheck"))U.unshift(_);for(let D of U)for(let I of D._zod.onattach)I(_);if(U.length===0)(g=_._zod).deferred??(g.deferred=[]),_._zod.deferred?.push(()=>{_._zod.run=_._zod.parse});else{let D=(j,N,O)=>{let A=H6(j),L;for(let z of N){if(z._zod.def.when){if(tE(j))continue;if(!z._zod.def.when(j))continue}else if(A)continue;let W=j.issues.length,J=z._zod.check(j);if(J instanceof Promise&&O?.async===!1)throw new x$;if(L||J instanceof Promise)L=(L??Promise.resolve()).then(async()=>{if(await J,j.issues.length===W)return;if(!A)A=H6(j,W)});else{if(j.issues.length===W)continue;if(!A)A=H6(j,W)}}if(L)return L.then(()=>{return j});return j},I=(j,N,O)=>{if(H6(j))return j.aborted=!0,j;let A=D(N,U,O);if(A instanceof Promise){if(O.async===!1)throw new x$;return A.then((L)=>_._zod.parse(L,O))}return _._zod.parse(A,O)};_._zod.run=(j,N)=>{if(N.skipChecks)return _._zod.parse(j,N);if(N.direction==="backward"){let A=_._zod.parse({value:j.value,issues:[]},{...N,skipChecks:!0});if(A instanceof Promise)return A.then((L)=>{return I(L,j,N)});return I(A,j,N)}let O=_._zod.parse(j,N);if(O instanceof Promise){if(N.async===!1)throw new x$;return O.then((A)=>D(A,U,N))}return D(O,U,N)}}$_(_,"~standard",()=>({validate:(D)=>{try{let I=pE(_,D);return I.success?{value:I.data}:{issues:I.error?.issues}}catch(I){return eE(_,D).then((j)=>j.success?{value:j.data}:{issues:j.error?.issues})}},vendor:"zod",version:1}))}),S4=Y("$ZodString",(_,$)=>{l.init(_,$),_._zod.pattern=[..._?._zod.bag?.patterns??[]].pop()??Y2(_._zod.bag),_._zod.parse=(g,U)=>{if($.coerce)try{g.value=String(g.value)}catch(D){}if(typeof g.value==="string")return g;return g.issues.push({expected:"string",code:"invalid_type",input:g.value,inst:_}),g}}),R_=Y("$ZodStringFormat",(_,$)=>{v0.init(_,$),S4.init(_,$)}),o2=Y("$ZodGUID",(_,$)=>{$.pattern??($.pattern=j2),R_.init(_,$)}),p2=Y("$ZodUUID",(_,$)=>{if($.version){let U={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[$.version];if(U===void 0)throw Error(`Invalid UUID version: "${$.version}"`);$.pattern??($.pattern=z4(U))}else $.pattern??($.pattern=z4());R_.init(_,$)}),e2=Y("$ZodEmail",(_,$)=>{$.pattern??($.pattern=N2),R_.init(_,$)}),a2=Y("$ZodURL",(_,$)=>{R_.init(_,$),_._zod.check=(g)=>{try{let U=g.value.trim();if(!$.normalize&&$.protocol?.source===S2.source){if(!/^https?:\/\//i.test(U)){g.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:g.value,inst:_,continue:!$.abort});return}}let D=new URL(U);if($.hostname){if($.hostname.lastIndex=0,!$.hostname.test(D.hostname))g.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:$.hostname.source,input:g.value,inst:_,continue:!$.abort})}if($.protocol){if($.protocol.lastIndex=0,!$.protocol.test(D.protocol.endsWith(":")?D.protocol.slice(0,-1):D.protocol))g.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:$.protocol.source,input:g.value,inst:_,continue:!$.abort})}if($.normalize)g.value=D.href;else g.value=U;return}catch(U){g.issues.push({code:"invalid_format",format:"url",input:g.value,inst:_,continue:!$.abort})}}}),s2=Y("$ZodEmoji",(_,$)=>{$.pattern??($.pattern=E2()),R_.init(_,$)}),_O=Y("$ZodNanoID",(_,$)=>{$.pattern??($.pattern=U2),R_.init(_,$)}),$O=Y("$ZodCUID",(_,$)=>{$.pattern??($.pattern=sE),R_.init(_,$)}),gO=Y("$ZodCUID2",(_,$)=>{$.pattern??($.pattern=_2),R_.init(_,$)}),DO=Y("$ZodULID",(_,$)=>{$.pattern??($.pattern=$2),R_.init(_,$)}),UO=Y("$ZodXID",(_,$)=>{$.pattern??($.pattern=g2),R_.init(_,$)}),IO=Y("$ZodKSUID",(_,$)=>{$.pattern??($.pattern=D2),R_.init(_,$)}),jO=Y("$ZodISODateTime",(_,$)=>{$.pattern??($.pattern=G2($)),R_.init(_,$)}),NO=Y("$ZodISODate",(_,$)=>{$.pattern??($.pattern=X2),R_.init(_,$)}),EO=Y("$ZodISOTime",(_,$)=>{$.pattern??($.pattern=R2($)),R_.init(_,$)}),OO=Y("$ZodISODuration",(_,$)=>{$.pattern??($.pattern=I2),R_.init(_,$)}),AO=Y("$ZodIPv4",(_,$)=>{$.pattern??($.pattern=O2),R_.init(_,$),_._zod.bag.format="ipv4"}),LO=Y("$ZodIPv6",(_,$)=>{$.pattern??($.pattern=A2),R_.init(_,$),_._zod.bag.format="ipv6",_._zod.check=(g)=>{try{new URL(`http://[${g.value}]`)}catch{g.issues.push({code:"invalid_format",format:"ipv6",input:g.value,inst:_,continue:!$.abort})}}}),JO=Y("$ZodMAC",(_,$)=>{$.pattern??($.pattern=L2($.delimiter)),R_.init(_,$),_._zod.bag.format="mac"}),PO=Y("$ZodCIDRv4",(_,$)=>{$.pattern??($.pattern=J2),R_.init(_,$)}),zO=Y("$ZodCIDRv6",(_,$)=>{$.pattern??($.pattern=P2),R_.init(_,$),_._zod.check=(g)=>{let U=g.value.split("/");try{if(U.length!==2)throw Error();let[D,I]=U;if(!I)throw Error();let j=Number(I);if(`${j}`!==I)throw Error();if(j<0||j>128)throw Error();new URL(`http://[${D}]`)}catch{g.issues.push({code:"invalid_format",format:"cidrv6",input:g.value,inst:_,continue:!$.abort})}}});WO=Y("$ZodBase64",(_,$)=>{$.pattern??($.pattern=z2),R_.init(_,$),_._zod.bag.contentEncoding="base64",_._zod.check=(g)=>{if(SO(g.value))return;g.issues.push({code:"invalid_format",format:"base64",input:g.value,inst:_,continue:!$.abort})}});XO=Y("$ZodBase64URL",(_,$)=>{$.pattern??($.pattern=rI),R_.init(_,$),_._zod.bag.contentEncoding="base64url",_._zod.check=(g)=>{if(lX(g.value))return;g.issues.push({code:"invalid_format",format:"base64url",input:g.value,inst:_,continue:!$.abort})}}),RO=Y("$ZodE164",(_,$)=>{$.pattern??($.pattern=W2),R_.init(_,$)});GO=Y("$ZodJWT",(_,$)=>{R_.init(_,$),_._zod.check=(g)=>{if(tX(g.value,$.alg))return;g.issues.push({code:"invalid_format",format:"jwt",input:g.value,inst:_,continue:!$.abort})}}),YO=Y("$ZodCustomStringFormat",(_,$)=>{R_.init(_,$),_._zod.check=(g)=>{if($.fn(g.value))return;g.issues.push({code:"invalid_format",format:$.format,input:g.value,inst:_,continue:!$.abort})}}),dI=Y("$ZodNumber",(_,$)=>{l.init(_,$),_._zod.pattern=_._zod.bag.pattern??gD,_._zod.parse=(g,U)=>{if($.coerce)try{g.value=Number(g.value)}catch(j){}let D=g.value;if(typeof D==="number"&&!Number.isNaN(D)&&Number.isFinite(D))return g;let I=typeof D==="number"?Number.isNaN(D)?"NaN":!Number.isFinite(D)?"Infinity":void 0:void 0;return g.issues.push({expected:"number",code:"invalid_type",input:D,inst:_,...I?{received:I}:{}}),g}}),QO=Y("$ZodNumberFormat",(_,$)=>{Z2.init(_,$),dI.init(_,$)}),ID=Y("$ZodBoolean",(_,$)=>{l.init(_,$),_._zod.pattern=q2,_._zod.parse=(g,U)=>{if($.coerce)try{g.value=Boolean(g.value)}catch(I){}let D=g.value;if(typeof D==="boolean")return g;return g.issues.push({expected:"boolean",code:"invalid_type",input:D,inst:_}),g}}),mI=Y("$ZodBigInt",(_,$)=>{l.init(_,$),_._zod.pattern=Q2,_._zod.parse=(g,U)=>{if($.coerce)try{g.value=BigInt(g.value)}catch(D){}if(typeof g.value==="bigint")return g;return g.issues.push({expected:"bigint",code:"invalid_type",input:g.value,inst:_}),g}}),TO=Y("$ZodBigIntFormat",(_,$)=>{b2.init(_,$),mI.init(_,$)}),qO=Y("$ZodSymbol",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(typeof D==="symbol")return g;return g.issues.push({expected:"symbol",code:"invalid_type",input:D,inst:_}),g}}),BO=Y("$ZodUndefined",(_,$)=>{l.init(_,$),_._zod.pattern=K2,_._zod.values=new Set([void 0]),_._zod.parse=(g,U)=>{let D=g.value;if(typeof D>"u")return g;return g.issues.push({expected:"undefined",code:"invalid_type",input:D,inst:_}),g}}),KO=Y("$ZodNull",(_,$)=>{l.init(_,$),_._zod.pattern=B2,_._zod.values=new Set([null]),_._zod.parse=(g,U)=>{let D=g.value;if(D===null)return g;return g.issues.push({expected:"null",code:"invalid_type",input:D,inst:_}),g}}),VO=Y("$ZodAny",(_,$)=>{l.init(_,$),_._zod.parse=(g)=>g}),FO=Y("$ZodUnknown",(_,$)=>{l.init(_,$),_._zod.parse=(g)=>g}),MO=Y("$ZodNever",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{return g.issues.push({expected:"never",code:"invalid_type",input:g.value,inst:_}),g}}),ZO=Y("$ZodVoid",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(typeof D>"u")return g;return g.issues.push({expected:"void",code:"invalid_type",input:D,inst:_}),g}}),bO=Y("$ZodDate",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{if($.coerce)try{g.value=new Date(g.value)}catch(N){}let D=g.value,I=D instanceof Date;if(I&&!Number.isNaN(D.getTime()))return g;return g.issues.push({expected:"date",code:"invalid_type",input:D,...I?{received:"Invalid Date"}:{},inst:_}),g}});HO=Y("$ZodArray",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(!Array.isArray(D))return g.issues.push({expected:"array",code:"invalid_type",input:D,inst:_}),g;g.value=Array(D.length);let I=[];for(let j=0;jCX(A,g,j)));else CX(O,g,j)}if(I.length)return Promise.all(I).then(()=>g);return g}});eX=Y("$ZodObject",(_,$)=>{if(l.init(_,$),!Object.getOwnPropertyDescriptor($,"shape")?.get){let N=$.shape;Object.defineProperty($,"shape",{get:()=>{let O={...N};return Object.defineProperty($,"shape",{value:O}),O}})}let U=F0(()=>oX($));$_(_._zod,"propValues",()=>{let N=$.shape,O={};for(let A in N){let L=N[A]._zod;if(L.values){O[A]??(O[A]=new Set);for(let z of L.values)O[A].add(z)}}return O});let D=P4,I=$.catchall,j;_._zod.parse=(N,O)=>{j??(j=U.value);let A=N.value;if(!D(A))return N.issues.push({expected:"object",code:"invalid_type",input:A,inst:_}),N;N.value={};let L=[],z=j.shape;for(let W of j.keys){let J=z[W],P=J._zod.optin==="optional",S=J._zod.optout==="optional",X=J._zod.run({value:A[W],issues:[]},O);if(X instanceof Promise)L.push(X.then((G)=>nI(G,N,W,A,P,S)));else nI(X,N,W,A,P,S)}if(!I)return L.length?Promise.all(L).then(()=>N):N;return pX(L,A,N,O,U.value,_)}}),kO=Y("$ZodObjectJIT",(_,$)=>{eX.init(_,$);let g=_._zod.parse,U=F0(()=>oX($)),D=(W)=>{let J=new xI(["shape","payload","ctx"]),P=U.value,S=(K)=>{let Q=YI(K);return`shape[${Q}]._zod.run({ value: input[${Q}], issues: [] }, ctx)`};J.write("const input = payload.value;");let X=Object.create(null),G=0;for(let K of P.keys)X[K]=`key_${G++}`;J.write("const newResult = {};");for(let K of P.keys){let Q=X[K],T=YI(K),q=W[K],V=q?._zod?.optin==="optional",Z=q?._zod?.optout==="optional";if(J.write(`const ${Q} = ${S(K)};`),V&&Z)J.write(` +var EY=Object.create;var{getPrototypeOf:OY,defineProperty:VN,getOwnPropertyNames:AY}=Object;var LY=Object.prototype.hasOwnProperty;function JY(_){return this[_]}var PY,zY,SY=(_,$,D)=>{var g=_!=null&&typeof _==="object";if(g){var U=$?PY??=new WeakMap:zY??=new WeakMap,I=U.get(_);if(I)return I}D=_!=null?EY(OY(_)):{};let j=$||!_||!_.__esModule?VN(D,"default",{value:_,enumerable:!0}):D;for(let N of AY(_))if(!LY.call(j,N))VN(j,N,{get:JY.bind(_,N),enumerable:!0});if(g)U.set(_,j);return j};var e6=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var WY=(_)=>_;function XY(_,$){this[_]=WY.bind(null,$)}var v$=(_,$)=>{for(var D in $)VN(_,D,{get:$[D],enumerable:!0,configurable:!0,set:XY.bind($,D)})};var w=(_,$)=>()=>(_&&($=_(_=0)),$);var O_=import.meta.require;function Y(_,$,D){function g(N,O){if(!N._zod)Object.defineProperty(N,"_zod",{value:{def:O,constr:j,traits:new Set},enumerable:!1});if(N._zod.traits.has(_))return;N._zod.traits.add(_),$(N,O);let A=j.prototype,L=Object.keys(A);for(let z=0;z{if(D?.Parent&&N instanceof D.Parent)return!0;return N?._zod?.traits?.has(_)}}),Object.defineProperty(j,"name",{value:_}),j}function Z_(_){if(_)Object.assign(A4,_);return A4}var CX,RI,YI,x$,L4,A4;var J4=w(()=>{RI=Object.freeze({status:"aborted"});YI=Symbol("zod_brand");x$=class x$ extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};L4=class L4 extends Error{constructor(_){super(`Encountered unidirectional transform during encode: ${_}`);this.name="ZodEncodeError"}};(CX=globalThis).__zod_globalConfig??(CX.__zod_globalConfig={});A4=globalThis.__zod_globalConfig});var H={};v$(H,{unwrapMessage:()=>pD,uint8ArrayToHex:()=>kV,uint8ArrayToBase64url:()=>bV,uint8ArrayToBase64:()=>wX,stringifyPrimitive:()=>K,slugify:()=>o2,shallowClone:()=>e2,safeExtend:()=>qV,required:()=>KV,randomString:()=>XV,propertyKeyTypes:()=>sD,promiseAllObject:()=>WV,primitiveTypes:()=>a2,prefixIssues:()=>s_,pick:()=>QV,partial:()=>FV,parsedType:()=>M,optionalKeys:()=>s2,omit:()=>TV,objectClone:()=>PV,numKeys:()=>GV,nullish:()=>M6,normalizeParams:()=>C,mergeDefs:()=>U6,merge:()=>VV,jsonStringifyReplacer:()=>K0,joinValues:()=>q,issue:()=>Z0,isPlainObject:()=>b6,isObject:()=>P4,hexToUint8Array:()=>HV,getSizableOrigin:()=>_U,getParsedType:()=>RV,getLengthableOrigin:()=>$U,getEnumValues:()=>eD,getElementAtPath:()=>SV,floatSafeRemainder:()=>t2,finalizeIssue:()=>l_,extend:()=>BV,explicitlyAborted:()=>DE,escapeRegex:()=>P$,esc:()=>QI,defineLazy:()=>$_,createTransparentProxy:()=>YV,cloneDef:()=>zV,clone:()=>y_,cleanRegex:()=>aD,cleanEnum:()=>MV,captureStackTrace:()=>TI,cached:()=>M0,base64urlToUint8Array:()=>ZV,base64ToUint8Array:()=>fX,assignProp:()=>Z6,assertNotEqual:()=>OV,assertNever:()=>LV,assertIs:()=>AV,assertEqual:()=>EV,assert:()=>JV,allowsEval:()=>p2,aborted:()=>H6,NUMBER_FORMAT_RANGES:()=>_E,Class:()=>rX,BIGINT_FORMAT_RANGES:()=>$E});function EV(_){return _}function OV(_){return _}function AV(_){}function LV(_){throw Error("Unexpected value in exhaustive check")}function JV(_){}function eD(_){let $=Object.values(_).filter((g)=>typeof g==="number");return Object.entries(_).filter(([g,U])=>$.indexOf(+g)===-1).map(([g,U])=>U)}function q(_,$="|"){return _.map((D)=>K(D)).join($)}function K0(_,$){if(typeof $==="bigint")return $.toString();return $}function M0(_){return{get value(){{let D=_();return Object.defineProperty(this,"value",{value:D}),D}throw Error("cached value already set")}}}function M6(_){return _===null||_===void 0}function aD(_){let $=_.startsWith("^")?1:0,D=_.endsWith("$")?_.length-1:_.length;return _.slice($,D)}function t2(_,$){let D=_/$,g=Math.round(D),U=Number.EPSILON*Math.max(Math.abs(D),1);if(Math.abs(D-g)D?.[g],_)}function WV(_){let $=Object.keys(_),D=$.map((g)=>_[g]);return Promise.all(D).then((g)=>{let U={};for(let I=0;I<$.length;I++)U[$[I]]=g[I];return U})}function XV(_=10){let D="";for(let g=0;g<_;g++)D+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return D}function QI(_){return JSON.stringify(_)}function o2(_){return _.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function P4(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)}function b6(_){if(P4(_)===!1)return!1;let $=_.constructor;if($===void 0)return!0;if(typeof $!=="function")return!0;let D=$.prototype;if(P4(D)===!1)return!1;if(Object.prototype.hasOwnProperty.call(D,"isPrototypeOf")===!1)return!1;return!0}function e2(_){if(b6(_))return{..._};if(Array.isArray(_))return[..._];if(_ instanceof Map)return new Map(_);if(_ instanceof Set)return new Set(_);return _}function GV(_){let $=0;for(let D in _)if(Object.prototype.hasOwnProperty.call(_,D))$++;return $}function P$(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function y_(_,$,D){let g=new _._zod.constr($??_._zod.def);if(!$||D?.parent)g._zod.parent=_;return g}function C(_){let $=_;if(!$)return{};if(typeof $==="string")return{error:()=>$};if($?.message!==void 0){if($?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");$.error=$.message}if(delete $.message,typeof $.error==="string")return{...$,error:()=>$.error};return $}function YV(_){let $;return new Proxy({},{get(D,g,U){return $??($=_()),Reflect.get($,g,U)},set(D,g,U,I){return $??($=_()),Reflect.set($,g,U,I)},has(D,g){return $??($=_()),Reflect.has($,g)},deleteProperty(D,g){return $??($=_()),Reflect.deleteProperty($,g)},ownKeys(D){return $??($=_()),Reflect.ownKeys($)},getOwnPropertyDescriptor(D,g){return $??($=_()),Reflect.getOwnPropertyDescriptor($,g)},defineProperty(D,g,U){return $??($=_()),Reflect.defineProperty($,g,U)}})}function K(_){if(typeof _==="bigint")return _.toString()+"n";if(typeof _==="string")return`"${_}"`;return`${_}`}function s2(_){return Object.keys(_).filter(($)=>{return _[$]._zod.optin==="optional"&&_[$]._zod.optout==="optional"})}function QV(_,$){let D=_._zod.def,g=D.checks;if(g&&g.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let I=U6(_._zod.def,{get shape(){let j={};for(let N in $){if(!(N in D.shape))throw Error(`Unrecognized key: "${N}"`);if(!$[N])continue;j[N]=D.shape[N]}return Z6(this,"shape",j),j},checks:[]});return y_(_,I)}function TV(_,$){let D=_._zod.def,g=D.checks;if(g&&g.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let I=U6(_._zod.def,{get shape(){let j={..._._zod.def.shape};for(let N in $){if(!(N in D.shape))throw Error(`Unrecognized key: "${N}"`);if(!$[N])continue;delete j[N]}return Z6(this,"shape",j),j},checks:[]});return y_(_,I)}function BV(_,$){if(!b6($))throw Error("Invalid input to extend: expected a plain object");let D=_._zod.def.checks;if(D&&D.length>0){let I=_._zod.def.shape;for(let j in $)if(Object.getOwnPropertyDescriptor(I,j)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let U=U6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$};return Z6(this,"shape",I),I}});return y_(_,U)}function qV(_,$){if(!b6($))throw Error("Invalid input to safeExtend: expected a plain object");let D=U6(_._zod.def,{get shape(){let g={..._._zod.def.shape,...$};return Z6(this,"shape",g),g}});return y_(_,D)}function VV(_,$){if(_._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let D=U6(_._zod.def,{get shape(){let g={..._._zod.def.shape,...$._zod.def.shape};return Z6(this,"shape",g),g},get catchall(){return $._zod.def.catchall},checks:$._zod.def.checks??[]});return y_(_,D)}function FV(_,$,D){let U=$._zod.def.checks;if(U&&U.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let j=U6($._zod.def,{get shape(){let N=$._zod.def.shape,O={...N};if(D)for(let A in D){if(!(A in N))throw Error(`Unrecognized key: "${A}"`);if(!D[A])continue;O[A]=_?new _({type:"optional",innerType:N[A]}):N[A]}else for(let A in N)O[A]=_?new _({type:"optional",innerType:N[A]}):N[A];return Z6(this,"shape",O),O},checks:[]});return y_($,j)}function KV(_,$,D){let g=U6($._zod.def,{get shape(){let U=$._zod.def.shape,I={...U};if(D)for(let j in D){if(!(j in I))throw Error(`Unrecognized key: "${j}"`);if(!D[j])continue;I[j]=new _({type:"nonoptional",innerType:U[j]})}else for(let j in U)I[j]=new _({type:"nonoptional",innerType:U[j]});return Z6(this,"shape",I),I}});return y_($,g)}function H6(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue!==!0)return!0;return!1}function DE(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue===!1)return!0;return!1}function s_(_,$){return $.map((D)=>{var g;return(g=D).path??(g.path=[]),D.path.unshift(_),D})}function pD(_){return typeof _==="string"?_:_?.message}function l_(_,$,D){let g=_.message?_.message:pD(_.inst?._zod.def?.error?.(_))??pD($?.error?.(_))??pD(D.customError?.(_))??pD(D.localeError?.(_))??"Invalid input",{inst:U,continue:I,input:j,...N}=_;if(N.path??(N.path=[]),N.message=g,$?.reportInput)N.input=j;return N}function _U(_){if(_ instanceof Set)return"set";if(_ instanceof Map)return"map";if(_ instanceof File)return"file";return"unknown"}function $U(_){if(Array.isArray(_))return"array";if(typeof _==="string")return"string";return"unknown"}function M(_){let $=typeof _;switch($){case"number":return Number.isNaN(_)?"nan":"number";case"object":{if(_===null)return"null";if(Array.isArray(_))return"array";let D=_;if(D&&Object.getPrototypeOf(D)!==Object.prototype&&"constructor"in D&&D.constructor)return D.constructor.name}}return $}function Z0(..._){let[$,D,g]=_;if(typeof $==="string")return{message:$,code:"custom",input:D,inst:g};return{...$}}function MV(_){return Object.entries(_).filter(([$,D])=>{return Number.isNaN(Number.parseInt($,10))}).map(($)=>$[1])}function fX(_){let $=atob(_),D=new Uint8Array($.length);for(let g=0;g<$.length;g++)D[g]=$.charCodeAt(g);return D}function wX(_){let $="";for(let D=0;D<_.length;D++)$+=String.fromCharCode(_[D]);return btoa($)}function ZV(_){let $=_.replace(/-/g,"+").replace(/_/g,"/"),D="=".repeat((4-$.length%4)%4);return fX($+D)}function bV(_){return wX(_).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function HV(_){let $=_.replace(/^0x/,"");if($.length%2!==0)throw Error("Invalid hex string length");let D=new Uint8Array($.length/2);for(let g=0;g<$.length;g+=2)D[g/2]=Number.parseInt($.slice(g,g+2),16);return D}function kV(_){return Array.from(_).map(($)=>$.toString(16).padStart(2,"0")).join("")}class rX{constructor(..._){}}var vX,TI,p2,RV=(_)=>{let $=typeof _;switch($){case"undefined":return"undefined";case"string":return"string";case"number":return Number.isNaN(_)?"nan":"number";case"boolean":return"boolean";case"function":return"function";case"bigint":return"bigint";case"symbol":return"symbol";case"object":if(Array.isArray(_))return"array";if(_===null)return"null";if(_.then&&typeof _.then==="function"&&_.catch&&typeof _.catch==="function")return"promise";if(typeof Map<"u"&&_ instanceof Map)return"map";if(typeof Set<"u"&&_ instanceof Set)return"set";if(typeof Date<"u"&&_ instanceof Date)return"date";if(typeof File<"u"&&_ instanceof File)return"file";return"object";default:throw Error(`Unknown data type: ${$}`)}},sD,a2,_E,$E;var c=w(()=>{J4();vX=Symbol("evaluating");TI="captureStackTrace"in Error?Error.captureStackTrace:(..._)=>{};p2=M0(()=>{if(A4.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(_){return!1}});sD=new Set(["string","number","symbol"]),a2=new Set(["string","number","bigint","boolean","symbol","undefined"]);_E={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-340282346638528860000000000000000000000,340282346638528860000000000000000000000],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]},$E={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]}});function b0(_,$=(D)=>D.message){let D={},g=[];for(let U of _.issues)if(U.path.length>0)D[U.path[0]]=D[U.path[0]]||[],D[U.path[0]].push($(U));else g.push($(U));return{formErrors:g,fieldErrors:D}}function H0(_,$=(D)=>D.message){let D={_errors:[]},g=(U,I=[])=>{for(let j of U.issues)if(j.code==="invalid_union"&&j.errors.length)j.errors.map((N)=>g({issues:N},[...I,...j.path]));else if(j.code==="invalid_key")g({issues:j.issues},[...I,...j.path]);else if(j.code==="invalid_element")g({issues:j.issues},[...I,...j.path]);else{let N=[...I,...j.path];if(N.length===0)D._errors.push($(j));else{let O=D,A=0;while(AD.message){let D={errors:[]},g=(U,I=[])=>{var j,N;for(let O of U.issues)if(O.code==="invalid_union"&&O.errors.length)O.errors.map((A)=>g({issues:A},[...I,...O.path]));else if(O.code==="invalid_key")g({issues:O.issues},[...I,...O.path]);else if(O.code==="invalid_element")g({issues:O.issues},[...I,...O.path]);else{let A=[...I,...O.path];if(A.length===0){D.errors.push($(O));continue}let L=D,z=0;while(ztypeof g==="object"?g.key:g);for(let g of D)if(typeof g==="number")$.push(`[${g}]`);else if(typeof g==="symbol")$.push(`[${JSON.stringify(String(g))}]`);else if(/[^\w$]/.test(g))$.push(`[${JSON.stringify(g)}]`);else{if($.length)$.push(".");$.push(g)}return $.join("")}function qI(_){let $=[],D=[..._.issues].sort((g,U)=>(g.path??[]).length-(U.path??[]).length);for(let g of D)if($.push(`\u2716 ${g.message}`),g.path?.length)$.push(` \u2192 at ${xX(g.path)}`);return $.join(` +`)}var uX=(_,$)=>{_.name="$ZodError",Object.defineProperty(_,"_zod",{value:_._zod,enumerable:!1}),Object.defineProperty(_,"issues",{value:$,enumerable:!1}),_.message=JSON.stringify($,K0,2),Object.defineProperty(_,"toString",{value:()=>_.message,enumerable:!1})},DU,_$;var UE=w(()=>{J4();c();DU=Y("$ZodError",uX),_$=Y("$ZodError",uX,{Parent:Error})});var k0=(_)=>($,D,g,U)=>{let I=g?{...g,async:!1}:{async:!1},j=$._zod.run({value:D,issues:[]},I);if(j instanceof Promise)throw new x$;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((O)=>l_(O,I,Z_())));throw TI(N,U?.callee),N}return j.value},VI,C0=(_)=>async($,D,g,U)=>{let I=g?{...g,async:!0}:{async:!0},j=$._zod.run({value:D,issues:[]},I);if(j instanceof Promise)j=await j;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((O)=>l_(O,I,Z_())));throw TI(N,U?.callee),N}return j.value},FI,v0=(_)=>($,D,g)=>{let U=g?{...g,async:!1}:{async:!1},I=$._zod.run({value:D,issues:[]},U);if(I instanceof Promise)throw new x$;return I.issues.length?{success:!1,error:new(_??DU)(I.issues.map((j)=>l_(j,U,Z_())))}:{success:!0,data:I.value}},gE,f0=(_)=>async($,D,g)=>{let U=g?{...g,async:!0}:{async:!0},I=$._zod.run({value:D,issues:[]},U);if(I instanceof Promise)I=await I;return I.issues.length?{success:!1,error:new _(I.issues.map((j)=>l_(j,U,Z_())))}:{success:!0,data:I.value}},IE,KI=(_)=>($,D,g)=>{let U=g?{...g,direction:"backward"}:{direction:"backward"};return k0(_)($,D,U)},vV,MI=(_)=>($,D,g)=>{return k0(_)($,D,g)},fV,ZI=(_)=>async($,D,g)=>{let U=g?{...g,direction:"backward"}:{direction:"backward"};return C0(_)($,D,U)},wV,bI=(_)=>async($,D,g)=>{return C0(_)($,D,g)},rV,HI=(_)=>($,D,g)=>{let U=g?{...g,direction:"backward"}:{direction:"backward"};return v0(_)($,D,U)},uV,kI=(_)=>($,D,g)=>{return v0(_)($,D,g)},xV,CI=(_)=>async($,D,g)=>{let U=g?{...g,direction:"backward"}:{direction:"backward"};return f0(_)($,D,U)},yV,vI=(_)=>async($,D,g)=>{return f0(_)($,D,g)},hV;var jE=w(()=>{J4();UE();c();VI=k0(_$),FI=C0(_$),gE=v0(_$),IE=f0(_$),vV=KI(_$),fV=MI(_$),wV=ZI(_$),rV=bI(_$),uV=HI(_$),xV=kI(_$),yV=CI(_$),hV=vI(_$)});var $$={};v$($$,{xid:()=>AE,uuid7:()=>mV,uuid6:()=>dV,uuid4:()=>nV,uuid:()=>z4,uppercase:()=>fE,unicodeEmail:()=>yX,undefined:()=>CE,ulid:()=>OE,time:()=>FE,string:()=>ME,sha512_hex:()=>JF,sha512_base64url:()=>zF,sha512_base64:()=>PF,sha384_hex:()=>OF,sha384_base64url:()=>LF,sha384_base64:()=>AF,sha256_hex:()=>jF,sha256_base64url:()=>EF,sha256_base64:()=>NF,sha1_hex:()=>UF,sha1_base64url:()=>IF,sha1_base64:()=>gF,rfc5322Email:()=>lV,number:()=>UU,null:()=>kE,nanoid:()=>JE,md5_hex:()=>_F,md5_base64url:()=>DF,md5_base64:()=>$F,mac:()=>RE,lowercase:()=>vE,ksuid:()=>LE,ipv6:()=>GE,ipv4:()=>XE,integer:()=>bE,idnEmail:()=>tV,httpProtocol:()=>BE,html5Email:()=>iV,hostname:()=>eV,hex:()=>sV,guid:()=>zE,extendedDuration:()=>cV,emoji:()=>WE,email:()=>SE,e164:()=>qE,duration:()=>PE,domain:()=>aV,datetime:()=>KE,date:()=>VE,cuid2:()=>EE,cuid:()=>NE,cidrv6:()=>QE,cidrv4:()=>YE,browserEmail:()=>oV,boolean:()=>HE,bigint:()=>ZE,base64url:()=>fI,base64:()=>TE});function WE(){return new RegExp(pV,"u")}function cX(_){return typeof _.precision==="number"?_.precision===-1?"(?:[01]\\d|2[0-3]):[0-5]\\d":_.precision===0?"(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d":`(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d\\.\\d{${_.precision}}`:"(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?"}function FE(_){return new RegExp(`^${cX(_)}$`)}function KE(_){let $=cX({precision:_.precision}),D=["Z"];if(_.local)D.push("");if(_.offset)D.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let g=`${$}(?:${D.join("|")})`;return new RegExp(`^${hX}T(?:${g})$`)}function gU(_,$){return new RegExp(`^[A-Za-z0-9+/]{${_}}${$}$`)}function IU(_){return new RegExp(`^[A-Za-z0-9_-]{${_}}$`)}var NE,EE,OE,AE,LE,JE,PE,cV,zE,z4=(_)=>{if(!_)return/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${_}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`)},nV,dV,mV,SE,iV,lV,yX,tV,oV,pV="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",XE,GE,RE=(_)=>{let $=P$(_??":");return new RegExp(`^(?:[0-9A-F]{2}${$}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${$}){5}[0-9a-f]{2}$`)},YE,QE,TE,fI,eV,aV,BE,qE,hX="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",VE,ME=(_)=>{let $=_?`[\\s\\S]{${_?.minimum??0},${_?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${$}$`)},ZE,bE,UU,HE,kE,CE,vE,fE,sV,_F,$F,DF,UF,gF,IF,jF,NF,EF,OF,AF,LF,JF,PF,zF;var wI=w(()=>{c();NE=/^[cC][0-9a-z]{6,}$/,EE=/^[0-9a-z]+$/,OE=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,AE=/^[0-9a-vA-V]{20}$/,LE=/^[A-Za-z0-9]{27}$/,JE=/^[a-zA-Z0-9_-]{21}$/,PE=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,cV=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,zE=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,nV=z4(4),dV=z4(6),mV=z4(7),SE=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,iV=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,lV=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,yX=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,tV=yX,oV=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;XE=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,GE=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,YE=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,QE=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,TE=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,fI=/^[A-Za-z0-9_-]*$/,eV=/^(?=.{1,253}\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\.?$/,aV=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,BE=/^https?$/,qE=/^\+[1-9]\d{6,14}$/,VE=new RegExp(`^${hX}$`);ZE=/^-?\d+n?$/,bE=/^-?\d+$/,UU=/^-?\d+(?:\.\d+)?$/,HE=/^(?:true|false)$/i,kE=/^null$/i,CE=/^undefined$/i,vE=/^[^A-Z]*$/,fE=/^[^a-z]*$/,sV=/^[0-9a-fA-F]*$/;_F=/^[0-9a-fA-F]{32}$/,$F=gU(22,"=="),DF=IU(22),UF=/^[0-9a-fA-F]{40}$/,gF=gU(27,"="),IF=IU(27),jF=/^[0-9a-fA-F]{64}$/,NF=gU(43,"="),EF=IU(43),OF=/^[0-9a-fA-F]{96}$/,AF=gU(64,""),LF=IU(64),JF=/^[0-9a-fA-F]{128}$/,PF=gU(86,"=="),zF=IU(86)});function nX(_,$,D){if(_.issues.length)$.issues.push(...s_(D,_.issues))}var Y_,dX,rI,uI,wE,rE,uE,xE,yE,hE,cE,nE,dE,w0,mE,iE,lE,tE,oE,pE,eE,aE,sE;var xI=w(()=>{J4();wI();c();Y_=Y("$ZodCheck",(_,$)=>{var D;_._zod??(_._zod={}),_._zod.def=$,(D=_._zod).onattach??(D.onattach=[])}),dX={number:"number",bigint:"bigint",object:"date"},rI=Y("$ZodCheckLessThan",(_,$)=>{Y_.init(_,$);let D=dX[typeof $.value];_._zod.onattach.push((g)=>{let U=g._zod.bag,I=($.inclusive?U.maximum:U.exclusiveMaximum)??Number.POSITIVE_INFINITY;if($.value{if($.inclusive?g.value<=$.value:g.value<$.value)return;g.issues.push({origin:D,code:"too_big",maximum:typeof $.value==="object"?$.value.getTime():$.value,input:g.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),uI=Y("$ZodCheckGreaterThan",(_,$)=>{Y_.init(_,$);let D=dX[typeof $.value];_._zod.onattach.push((g)=>{let U=g._zod.bag,I=($.inclusive?U.minimum:U.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if($.value>I)if($.inclusive)U.minimum=$.value;else U.exclusiveMinimum=$.value}),_._zod.check=(g)=>{if($.inclusive?g.value>=$.value:g.value>$.value)return;g.issues.push({origin:D,code:"too_small",minimum:typeof $.value==="object"?$.value.getTime():$.value,input:g.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),wE=Y("$ZodCheckMultipleOf",(_,$)=>{Y_.init(_,$),_._zod.onattach.push((D)=>{var g;(g=D._zod.bag).multipleOf??(g.multipleOf=$.value)}),_._zod.check=(D)=>{if(typeof D.value!==typeof $.value)throw Error("Cannot mix number and bigint in multiple_of check.");if(typeof D.value==="bigint"?D.value%$.value===BigInt(0):t2(D.value,$.value)===0)return;D.issues.push({origin:typeof D.value,code:"not_multiple_of",divisor:$.value,input:D.value,inst:_,continue:!$.abort})}}),rE=Y("$ZodCheckNumberFormat",(_,$)=>{Y_.init(_,$),$.format=$.format||"float64";let D=$.format?.includes("int"),g=D?"int":"number",[U,I]=_E[$.format];_._zod.onattach.push((j)=>{let N=j._zod.bag;if(N.format=$.format,N.minimum=U,N.maximum=I,D)N.pattern=bE}),_._zod.check=(j)=>{let N=j.value;if(D){if(!Number.isInteger(N)){j.issues.push({expected:g,format:$.format,code:"invalid_type",continue:!1,input:N,inst:_});return}if(!Number.isSafeInteger(N)){if(N>0)j.issues.push({input:N,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:_,origin:g,inclusive:!0,continue:!$.abort});else j.issues.push({input:N,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:_,origin:g,inclusive:!0,continue:!$.abort});return}}if(NI)j.issues.push({origin:"number",input:N,code:"too_big",maximum:I,inclusive:!0,inst:_,continue:!$.abort})}}),uE=Y("$ZodCheckBigIntFormat",(_,$)=>{Y_.init(_,$);let[D,g]=$E[$.format];_._zod.onattach.push((U)=>{let I=U._zod.bag;I.format=$.format,I.minimum=D,I.maximum=g}),_._zod.check=(U)=>{let I=U.value;if(Ig)U.issues.push({origin:"bigint",input:I,code:"too_big",maximum:g,inclusive:!0,inst:_,continue:!$.abort})}}),xE=Y("$ZodCheckMaxSize",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(g)=>{let U=g.value;return!M6(U)&&U.size!==void 0}),_._zod.onattach.push((g)=>{let U=g._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum{let U=g.value;if(U.size<=$.maximum)return;g.issues.push({origin:_U(U),code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),yE=Y("$ZodCheckMinSize",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(g)=>{let U=g.value;return!M6(U)&&U.size!==void 0}),_._zod.onattach.push((g)=>{let U=g._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)g._zod.bag.minimum=$.minimum}),_._zod.check=(g)=>{let U=g.value;if(U.size>=$.minimum)return;g.issues.push({origin:_U(U),code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),hE=Y("$ZodCheckSizeEquals",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(g)=>{let U=g.value;return!M6(U)&&U.size!==void 0}),_._zod.onattach.push((g)=>{let U=g._zod.bag;U.minimum=$.size,U.maximum=$.size,U.size=$.size}),_._zod.check=(g)=>{let U=g.value,I=U.size;if(I===$.size)return;let j=I>$.size;g.issues.push({origin:_U(U),...j?{code:"too_big",maximum:$.size}:{code:"too_small",minimum:$.size},inclusive:!0,exact:!0,input:g.value,inst:_,continue:!$.abort})}}),cE=Y("$ZodCheckMaxLength",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(g)=>{let U=g.value;return!M6(U)&&U.length!==void 0}),_._zod.onattach.push((g)=>{let U=g._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum{let U=g.value;if(U.length<=$.maximum)return;let j=$U(U);g.issues.push({origin:j,code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),nE=Y("$ZodCheckMinLength",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(g)=>{let U=g.value;return!M6(U)&&U.length!==void 0}),_._zod.onattach.push((g)=>{let U=g._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)g._zod.bag.minimum=$.minimum}),_._zod.check=(g)=>{let U=g.value;if(U.length>=$.minimum)return;let j=$U(U);g.issues.push({origin:j,code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),dE=Y("$ZodCheckLengthEquals",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(g)=>{let U=g.value;return!M6(U)&&U.length!==void 0}),_._zod.onattach.push((g)=>{let U=g._zod.bag;U.minimum=$.length,U.maximum=$.length,U.length=$.length}),_._zod.check=(g)=>{let U=g.value,I=U.length;if(I===$.length)return;let j=$U(U),N=I>$.length;g.issues.push({origin:j,...N?{code:"too_big",maximum:$.length}:{code:"too_small",minimum:$.length},inclusive:!0,exact:!0,input:g.value,inst:_,continue:!$.abort})}}),w0=Y("$ZodCheckStringFormat",(_,$)=>{var D,g;if(Y_.init(_,$),_._zod.onattach.push((U)=>{let I=U._zod.bag;if(I.format=$.format,$.pattern)I.patterns??(I.patterns=new Set),I.patterns.add($.pattern)}),$.pattern)(D=_._zod).check??(D.check=(U)=>{if($.pattern.lastIndex=0,$.pattern.test(U.value))return;U.issues.push({origin:"string",code:"invalid_format",format:$.format,input:U.value,...$.pattern?{pattern:$.pattern.toString()}:{},inst:_,continue:!$.abort})});else(g=_._zod).check??(g.check=()=>{})}),mE=Y("$ZodCheckRegex",(_,$)=>{w0.init(_,$),_._zod.check=(D)=>{if($.pattern.lastIndex=0,$.pattern.test(D.value))return;D.issues.push({origin:"string",code:"invalid_format",format:"regex",input:D.value,pattern:$.pattern.toString(),inst:_,continue:!$.abort})}}),iE=Y("$ZodCheckLowerCase",(_,$)=>{$.pattern??($.pattern=vE),w0.init(_,$)}),lE=Y("$ZodCheckUpperCase",(_,$)=>{$.pattern??($.pattern=fE),w0.init(_,$)}),tE=Y("$ZodCheckIncludes",(_,$)=>{Y_.init(_,$);let D=P$($.includes),g=new RegExp(typeof $.position==="number"?`^.{${$.position}}${D}`:D);$.pattern=g,_._zod.onattach.push((U)=>{let I=U._zod.bag;I.patterns??(I.patterns=new Set),I.patterns.add(g)}),_._zod.check=(U)=>{if(U.value.includes($.includes,$.position))return;U.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:$.includes,input:U.value,inst:_,continue:!$.abort})}}),oE=Y("$ZodCheckStartsWith",(_,$)=>{Y_.init(_,$);let D=new RegExp(`^${P$($.prefix)}.*`);$.pattern??($.pattern=D),_._zod.onattach.push((g)=>{let U=g._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(g)=>{if(g.value.startsWith($.prefix))return;g.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:$.prefix,input:g.value,inst:_,continue:!$.abort})}}),pE=Y("$ZodCheckEndsWith",(_,$)=>{Y_.init(_,$);let D=new RegExp(`.*${P$($.suffix)}$`);$.pattern??($.pattern=D),_._zod.onattach.push((g)=>{let U=g._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(g)=>{if(g.value.endsWith($.suffix))return;g.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:$.suffix,input:g.value,inst:_,continue:!$.abort})}});eE=Y("$ZodCheckProperty",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{let g=$.schema._zod.run({value:D.value[$.property],issues:[]},{});if(g instanceof Promise)return g.then((U)=>nX(U,D,$.property));nX(g,D,$.property);return}}),aE=Y("$ZodCheckMimeType",(_,$)=>{Y_.init(_,$);let D=new Set($.mime);_._zod.onattach.push((g)=>{g._zod.bag.mime=$.mime}),_._zod.check=(g)=>{if(D.has(g.value.type))return;g.issues.push({code:"invalid_value",values:$.mime,input:g.value.type,inst:_,continue:!$.abort})}}),sE=Y("$ZodCheckOverwrite",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{D.value=$.tx(D.value)}})});class yI{constructor(_=[]){if(this.content=[],this.indent=0,this)this.args=_}indented(_){this.indent+=1,_(this),this.indent-=1}write(_){if(typeof _==="function"){_(this,{execution:"sync"}),_(this,{execution:"async"});return}let D=_.split(` +`).filter((I)=>I),g=Math.min(...D.map((I)=>I.length-I.trimStart().length)),U=D.map((I)=>I.slice(g)).map((I)=>" ".repeat(this.indent*2)+I);for(let I of U)this.content.push(I)}compile(){let _=Function,$=this?.args,g=[...(this?.content??[""]).map((U)=>` ${U}`)];return new _(...$,g.join(` +`))}}var _O;var $O=w(()=>{_O={major:4,minor:4,patch:3}});function BO(_){if(_==="")return!0;if(/\s/.test(_))return!1;if(_.length%4!==0)return!1;try{return atob(_),!0}catch{return!1}}function j5(_){if(!fI.test(_))return!1;let $=_.replace(/[-_]/g,(g)=>g==="-"?"+":"/"),D=$.padEnd(Math.ceil($.length/4)*4,"=");return BO(D)}function N5(_,$=null){try{let D=_.split(".");if(D.length!==3)return!1;let[g]=D;if(!g)return!1;let U=JSON.parse(atob(g));if("typ"in U&&U?.typ!=="JWT")return!1;if(!U.alg)return!1;if($&&(!("alg"in U)||U.alg!==$))return!1;return!0}catch{return!1}}function iX(_,$,D){if(_.issues.length)$.issues.push(...s_(D,_.issues));$.value[D]=_.value}function dI(_,$,D,g,U,I){let j=D in g;if(_.issues.length){if(U&&I&&!j)return;$.issues.push(...s_(D,_.issues))}if(!j&&!U){if(!_.issues.length)$.issues.push({code:"invalid_type",expected:"nonoptional",input:void 0,path:[D]});return}if(_.value===void 0){if(j)$.value[D]=void 0}else $.value[D]=_.value}function E5(_){let $=Object.keys(_.shape);for(let g of $)if(!_.shape?.[g]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${g}": expected a Zod schema`);let D=s2(_.shape);return{..._,keys:$,keySet:new Set($),numKeys:$.length,optionalKeys:new Set(D)}}function O5(_,$,D,g,U,I){let j=[],N=U.keySet,O=U.catchall._zod,A=O.def.type,L=O.optin==="optional",z=O.optout==="optional";for(let W in $){if(W==="__proto__")continue;if(N.has(W))continue;if(A==="never"){j.push(W);continue}let J=O.run({value:$[W],issues:[]},g);if(J instanceof Promise)_.push(J.then((P)=>dI(P,D,W,$,L,z)));else dI(J,D,W,$,L,z)}if(j.length)D.issues.push({code:"unrecognized_keys",keys:j,input:$,inst:I});if(!_.length)return D;return Promise.all(_).then(()=>{return D})}function lX(_,$,D,g){for(let I of _)if(I.issues.length===0)return $.value=I.value,$;let U=_.filter((I)=>!H6(I));if(U.length===1)return $.value=U[0].value,U[0];return $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:_.map((I)=>I.issues.map((j)=>l_(j,g,Z_())))}),$}function tX(_,$,D,g){let U=_.filter((I)=>I.issues.length===0);if(U.length===1)return $.value=U[0].value,$;if(U.length===0)$.issues.push({code:"invalid_union",input:$.value,inst:D,errors:_.map((I)=>I.issues.map((j)=>l_(j,g,Z_())))});else $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:[],inclusive:!1});return $}function DO(_,$){if(_===$)return{valid:!0,data:_};if(_ instanceof Date&&$ instanceof Date&&+_===+$)return{valid:!0,data:_};if(b6(_)&&b6($)){let D=Object.keys($),g=Object.keys(_).filter((I)=>D.indexOf(I)!==-1),U={..._,...$};for(let I of g){let j=DO(_[I],$[I]);if(!j.valid)return{valid:!1,mergeErrorPath:[I,...j.mergeErrorPath]};U[I]=j.data}return{valid:!0,data:U}}if(Array.isArray(_)&&Array.isArray($)){if(_.length!==$.length)return{valid:!1,mergeErrorPath:[]};let D=[];for(let g=0;g<_.length;g++){let U=_[g],I=$[g],j=DO(U,I);if(!j.valid)return{valid:!1,mergeErrorPath:[g,...j.mergeErrorPath]};D.push(j.data)}return{valid:!0,data:D}}return{valid:!1,mergeErrorPath:[]}}function oX(_,$,D){let g=new Map,U;for(let N of $.issues)if(N.code==="unrecognized_keys"){U??(U=N);for(let O of N.keys){if(!g.has(O))g.set(O,{});g.get(O).l=!0}}else _.issues.push(N);for(let N of D.issues)if(N.code==="unrecognized_keys")for(let O of N.keys){if(!g.has(O))g.set(O,{});g.get(O).r=!0}else _.issues.push(N);let I=[...g].filter(([,N])=>N.l&&N.r).map(([N])=>N);if(I.length&&U)_.issues.push({...U,keys:I});if(H6(_))return _;let j=DO($.value,D.value);if(!j.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(j.mergeErrorPath)}`);return _.value=j.data,_}function pX(_,$){for(let D=_.length-1;D>=0;D--)if(_[D]._zod[$]!=="optional")return D+1;return 0}function eX(_,$,D){if(_.issues.length)$.issues.push(...s_(D,_.issues));$.value[D]=_.value}function aX(_,$,D,g,U){for(let I=0;I=U){$.value.length=I;break}$.issues.push(...s_(I,j.issues))}$.value[I]=j.value}for(let I=$.value.length-1;I>=g.length;I--)if(D[I]._zod.optout==="optional"&&$.value[I]===void 0)$.value.length=I;else break;return $}function sX(_,$,D,g,U,I,j){if(_.issues.length)if(sD.has(typeof g))D.issues.push(...s_(g,_.issues));else D.issues.push({code:"invalid_key",origin:"map",input:U,inst:I,issues:_.issues.map((N)=>l_(N,j,Z_()))});if($.issues.length)if(sD.has(typeof g))D.issues.push(...s_(g,$.issues));else D.issues.push({origin:"map",code:"invalid_element",input:U,inst:I,key:g,issues:$.issues.map((N)=>l_(N,j,Z_()))});D.value.set(_.value,$.value)}function _5(_,$){if(_.issues.length)$.issues.push(..._.issues);$.value.add(_.value)}function $5(_,$){if($===void 0&&(_.issues.length||_.fallback))return{issues:[],value:void 0};return _}function D5(_,$){if(_.value===void 0)_.value=$.defaultValue;return _}function U5(_,$){if(!_.issues.length&&_.value===void 0)_.issues.push({code:"invalid_type",expected:"nonoptional",input:_.value,inst:$});return _}function hI(_,$,D){if(_.issues.length)return _.aborted=!0,_;return $._zod.run({value:_.value,issues:_.issues,fallback:_.fallback},D)}function cI(_,$,D){if(_.issues.length)return _.aborted=!0,_;if((D.direction||"forward")==="forward"){let U=$.transform(_.value,_);if(U instanceof Promise)return U.then((I)=>nI(_,I,$.out,D));return nI(_,U,$.out,D)}else{let U=$.reverseTransform(_.value,_);if(U instanceof Promise)return U.then((I)=>nI(_,I,$.in,D));return nI(_,U,$.in,D)}}function nI(_,$,D,g){if(_.issues.length)return _.aborted=!0,_;return D._zod.run({value:$,issues:_.issues},g)}function g5(_){return _.value=Object.freeze(_.value),_}function I5(_,$,D,g){if(!_){let U={code:"custom",input:D,inst:g,path:[...g._zod.def.path??[]],continue:!g._zod.def.abort};if(g._zod.def.params)U.params=g._zod.def.params;$.issues.push(Z0(U))}}var l,S4,G_,UO,gO,IO,jO,NO,EO,OO,AO,LO,JO,PO,zO,SO,WO,XO,GO,RO,YO,QO,TO,qO,VO,FO,KO,MO,mI,ZO,jU,iI,bO,HO,kO,CO,vO,fO,wO,rO,uO,xO,A5,yO,NU,hO,cO,nO,lI,dO,mO,iO,lO,tO,oO,pO,tI,eO,aO,sO,_A,$A,DA,UA,gA,oI,EU,IA,jA,NA,EA,OA,AA,LA;var JA=w(()=>{xI();J4();jE();wI();c();$O();c();l=Y("$ZodType",(_,$)=>{var D;_??(_={}),_._zod.def=$,_._zod.bag=_._zod.bag||{},_._zod.version=_O;let g=[..._._zod.def.checks??[]];if(_._zod.traits.has("$ZodCheck"))g.unshift(_);for(let U of g)for(let I of U._zod.onattach)I(_);if(g.length===0)(D=_._zod).deferred??(D.deferred=[]),_._zod.deferred?.push(()=>{_._zod.run=_._zod.parse});else{let U=(j,N,O)=>{let A=H6(j),L;for(let z of N){if(z._zod.def.when){if(DE(j))continue;if(!z._zod.def.when(j))continue}else if(A)continue;let W=j.issues.length,J=z._zod.check(j);if(J instanceof Promise&&O?.async===!1)throw new x$;if(L||J instanceof Promise)L=(L??Promise.resolve()).then(async()=>{if(await J,j.issues.length===W)return;if(!A)A=H6(j,W)});else{if(j.issues.length===W)continue;if(!A)A=H6(j,W)}}if(L)return L.then(()=>{return j});return j},I=(j,N,O)=>{if(H6(j))return j.aborted=!0,j;let A=U(N,g,O);if(A instanceof Promise){if(O.async===!1)throw new x$;return A.then((L)=>_._zod.parse(L,O))}return _._zod.parse(A,O)};_._zod.run=(j,N)=>{if(N.skipChecks)return _._zod.parse(j,N);if(N.direction==="backward"){let A=_._zod.parse({value:j.value,issues:[]},{...N,skipChecks:!0});if(A instanceof Promise)return A.then((L)=>{return I(L,j,N)});return I(A,j,N)}let O=_._zod.parse(j,N);if(O instanceof Promise){if(N.async===!1)throw new x$;return O.then((A)=>U(A,g,N))}return U(O,g,N)}}$_(_,"~standard",()=>({validate:(U)=>{try{let I=gE(_,U);return I.success?{value:I.data}:{issues:I.error?.issues}}catch(I){return IE(_,U).then((j)=>j.success?{value:j.data}:{issues:j.error?.issues})}},vendor:"zod",version:1}))}),S4=Y("$ZodString",(_,$)=>{l.init(_,$),_._zod.pattern=[..._?._zod.bag?.patterns??[]].pop()??ME(_._zod.bag),_._zod.parse=(D,g)=>{if($.coerce)try{D.value=String(D.value)}catch(U){}if(typeof D.value==="string")return D;return D.issues.push({expected:"string",code:"invalid_type",input:D.value,inst:_}),D}}),G_=Y("$ZodStringFormat",(_,$)=>{w0.init(_,$),S4.init(_,$)}),UO=Y("$ZodGUID",(_,$)=>{$.pattern??($.pattern=zE),G_.init(_,$)}),gO=Y("$ZodUUID",(_,$)=>{if($.version){let g={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[$.version];if(g===void 0)throw Error(`Invalid UUID version: "${$.version}"`);$.pattern??($.pattern=z4(g))}else $.pattern??($.pattern=z4());G_.init(_,$)}),IO=Y("$ZodEmail",(_,$)=>{$.pattern??($.pattern=SE),G_.init(_,$)}),jO=Y("$ZodURL",(_,$)=>{G_.init(_,$),_._zod.check=(D)=>{try{let g=D.value.trim();if(!$.normalize&&$.protocol?.source===BE.source){if(!/^https?:\/\//i.test(g)){D.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:D.value,inst:_,continue:!$.abort});return}}let U=new URL(g);if($.hostname){if($.hostname.lastIndex=0,!$.hostname.test(U.hostname))D.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:$.hostname.source,input:D.value,inst:_,continue:!$.abort})}if($.protocol){if($.protocol.lastIndex=0,!$.protocol.test(U.protocol.endsWith(":")?U.protocol.slice(0,-1):U.protocol))D.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:$.protocol.source,input:D.value,inst:_,continue:!$.abort})}if($.normalize)D.value=U.href;else D.value=g;return}catch(g){D.issues.push({code:"invalid_format",format:"url",input:D.value,inst:_,continue:!$.abort})}}}),NO=Y("$ZodEmoji",(_,$)=>{$.pattern??($.pattern=WE()),G_.init(_,$)}),EO=Y("$ZodNanoID",(_,$)=>{$.pattern??($.pattern=JE),G_.init(_,$)}),OO=Y("$ZodCUID",(_,$)=>{$.pattern??($.pattern=NE),G_.init(_,$)}),AO=Y("$ZodCUID2",(_,$)=>{$.pattern??($.pattern=EE),G_.init(_,$)}),LO=Y("$ZodULID",(_,$)=>{$.pattern??($.pattern=OE),G_.init(_,$)}),JO=Y("$ZodXID",(_,$)=>{$.pattern??($.pattern=AE),G_.init(_,$)}),PO=Y("$ZodKSUID",(_,$)=>{$.pattern??($.pattern=LE),G_.init(_,$)}),zO=Y("$ZodISODateTime",(_,$)=>{$.pattern??($.pattern=KE($)),G_.init(_,$)}),SO=Y("$ZodISODate",(_,$)=>{$.pattern??($.pattern=VE),G_.init(_,$)}),WO=Y("$ZodISOTime",(_,$)=>{$.pattern??($.pattern=FE($)),G_.init(_,$)}),XO=Y("$ZodISODuration",(_,$)=>{$.pattern??($.pattern=PE),G_.init(_,$)}),GO=Y("$ZodIPv4",(_,$)=>{$.pattern??($.pattern=XE),G_.init(_,$),_._zod.bag.format="ipv4"}),RO=Y("$ZodIPv6",(_,$)=>{$.pattern??($.pattern=GE),G_.init(_,$),_._zod.bag.format="ipv6",_._zod.check=(D)=>{try{new URL(`http://[${D.value}]`)}catch{D.issues.push({code:"invalid_format",format:"ipv6",input:D.value,inst:_,continue:!$.abort})}}}),YO=Y("$ZodMAC",(_,$)=>{$.pattern??($.pattern=RE($.delimiter)),G_.init(_,$),_._zod.bag.format="mac"}),QO=Y("$ZodCIDRv4",(_,$)=>{$.pattern??($.pattern=YE),G_.init(_,$)}),TO=Y("$ZodCIDRv6",(_,$)=>{$.pattern??($.pattern=QE),G_.init(_,$),_._zod.check=(D)=>{let g=D.value.split("/");try{if(g.length!==2)throw Error();let[U,I]=g;if(!I)throw Error();let j=Number(I);if(`${j}`!==I)throw Error();if(j<0||j>128)throw Error();new URL(`http://[${U}]`)}catch{D.issues.push({code:"invalid_format",format:"cidrv6",input:D.value,inst:_,continue:!$.abort})}}});qO=Y("$ZodBase64",(_,$)=>{$.pattern??($.pattern=TE),G_.init(_,$),_._zod.bag.contentEncoding="base64",_._zod.check=(D)=>{if(BO(D.value))return;D.issues.push({code:"invalid_format",format:"base64",input:D.value,inst:_,continue:!$.abort})}});VO=Y("$ZodBase64URL",(_,$)=>{$.pattern??($.pattern=fI),G_.init(_,$),_._zod.bag.contentEncoding="base64url",_._zod.check=(D)=>{if(j5(D.value))return;D.issues.push({code:"invalid_format",format:"base64url",input:D.value,inst:_,continue:!$.abort})}}),FO=Y("$ZodE164",(_,$)=>{$.pattern??($.pattern=qE),G_.init(_,$)});KO=Y("$ZodJWT",(_,$)=>{G_.init(_,$),_._zod.check=(D)=>{if(N5(D.value,$.alg))return;D.issues.push({code:"invalid_format",format:"jwt",input:D.value,inst:_,continue:!$.abort})}}),MO=Y("$ZodCustomStringFormat",(_,$)=>{G_.init(_,$),_._zod.check=(D)=>{if($.fn(D.value))return;D.issues.push({code:"invalid_format",format:$.format,input:D.value,inst:_,continue:!$.abort})}}),mI=Y("$ZodNumber",(_,$)=>{l.init(_,$),_._zod.pattern=_._zod.bag.pattern??UU,_._zod.parse=(D,g)=>{if($.coerce)try{D.value=Number(D.value)}catch(j){}let U=D.value;if(typeof U==="number"&&!Number.isNaN(U)&&Number.isFinite(U))return D;let I=typeof U==="number"?Number.isNaN(U)?"NaN":!Number.isFinite(U)?"Infinity":void 0:void 0;return D.issues.push({expected:"number",code:"invalid_type",input:U,inst:_,...I?{received:I}:{}}),D}}),ZO=Y("$ZodNumberFormat",(_,$)=>{rE.init(_,$),mI.init(_,$)}),jU=Y("$ZodBoolean",(_,$)=>{l.init(_,$),_._zod.pattern=HE,_._zod.parse=(D,g)=>{if($.coerce)try{D.value=Boolean(D.value)}catch(I){}let U=D.value;if(typeof U==="boolean")return D;return D.issues.push({expected:"boolean",code:"invalid_type",input:U,inst:_}),D}}),iI=Y("$ZodBigInt",(_,$)=>{l.init(_,$),_._zod.pattern=ZE,_._zod.parse=(D,g)=>{if($.coerce)try{D.value=BigInt(D.value)}catch(U){}if(typeof D.value==="bigint")return D;return D.issues.push({expected:"bigint",code:"invalid_type",input:D.value,inst:_}),D}}),bO=Y("$ZodBigIntFormat",(_,$)=>{uE.init(_,$),iI.init(_,$)}),HO=Y("$ZodSymbol",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(typeof U==="symbol")return D;return D.issues.push({expected:"symbol",code:"invalid_type",input:U,inst:_}),D}}),kO=Y("$ZodUndefined",(_,$)=>{l.init(_,$),_._zod.pattern=CE,_._zod.values=new Set([void 0]),_._zod.parse=(D,g)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"undefined",code:"invalid_type",input:U,inst:_}),D}}),CO=Y("$ZodNull",(_,$)=>{l.init(_,$),_._zod.pattern=kE,_._zod.values=new Set([null]),_._zod.parse=(D,g)=>{let U=D.value;if(U===null)return D;return D.issues.push({expected:"null",code:"invalid_type",input:U,inst:_}),D}}),vO=Y("$ZodAny",(_,$)=>{l.init(_,$),_._zod.parse=(D)=>D}),fO=Y("$ZodUnknown",(_,$)=>{l.init(_,$),_._zod.parse=(D)=>D}),wO=Y("$ZodNever",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{return D.issues.push({expected:"never",code:"invalid_type",input:D.value,inst:_}),D}}),rO=Y("$ZodVoid",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"void",code:"invalid_type",input:U,inst:_}),D}}),uO=Y("$ZodDate",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{if($.coerce)try{D.value=new Date(D.value)}catch(N){}let U=D.value,I=U instanceof Date;if(I&&!Number.isNaN(U.getTime()))return D;return D.issues.push({expected:"date",code:"invalid_type",input:U,...I?{received:"Invalid Date"}:{},inst:_}),D}});xO=Y("$ZodArray",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(!Array.isArray(U))return D.issues.push({expected:"array",code:"invalid_type",input:U,inst:_}),D;D.value=Array(U.length);let I=[];for(let j=0;jiX(A,D,j)));else iX(O,D,j)}if(I.length)return Promise.all(I).then(()=>D);return D}});A5=Y("$ZodObject",(_,$)=>{if(l.init(_,$),!Object.getOwnPropertyDescriptor($,"shape")?.get){let N=$.shape;Object.defineProperty($,"shape",{get:()=>{let O={...N};return Object.defineProperty($,"shape",{value:O}),O}})}let g=M0(()=>E5($));$_(_._zod,"propValues",()=>{let N=$.shape,O={};for(let A in N){let L=N[A]._zod;if(L.values){O[A]??(O[A]=new Set);for(let z of L.values)O[A].add(z)}}return O});let U=P4,I=$.catchall,j;_._zod.parse=(N,O)=>{j??(j=g.value);let A=N.value;if(!U(A))return N.issues.push({expected:"object",code:"invalid_type",input:A,inst:_}),N;N.value={};let L=[],z=j.shape;for(let W of j.keys){let J=z[W],P=J._zod.optin==="optional",S=J._zod.optout==="optional",X=J._zod.run({value:A[W],issues:[]},O);if(X instanceof Promise)L.push(X.then((R)=>dI(R,N,W,A,P,S)));else dI(X,N,W,A,P,S)}if(!I)return L.length?Promise.all(L).then(()=>N):N;return O5(L,A,N,O,g.value,_)}}),yO=Y("$ZodObjectJIT",(_,$)=>{A5.init(_,$);let D=_._zod.parse,g=M0(()=>E5($)),U=(W)=>{let J=new yI(["shape","payload","ctx"]),P=g.value,S=(V)=>{let Q=QI(V);return`shape[${Q}]._zod.run({ value: input[${Q}], issues: [] }, ctx)`};J.write("const input = payload.value;");let X=Object.create(null),R=0;for(let V of P.keys)X[V]=`key_${R++}`;J.write("const newResult = {};");for(let V of P.keys){let Q=X[V],T=QI(V),B=W[V],F=B?._zod?.optin==="optional",Z=B?._zod?.optout==="optional";if(J.write(`const ${Q} = ${S(V)};`),F&&Z)J.write(` if (${Q}.issues.length) { if (${T} in input) { payload.issues = payload.issues.concat(${Q}.issues.map(iss => ({ @@ -21,7 +21,7 @@ var t8=Object.create;var{getPrototypeOf:o8,defineProperty:BN,getOwnPropertyNames newResult[${T}] = ${Q}.value; } - `);else if(!V)J.write(` + `);else if(!F)J.write(` const ${Q}_present = ${T} in input; if (${Q}.issues.length) { payload.issues = payload.issues.concat(${Q}.issues.map(iss => ({ @@ -62,44 +62,44 @@ var t8=Object.create;var{getPrototypeOf:o8,defineProperty:BN,getOwnPropertyNames newResult[${T}] = ${Q}.value; } - `)}J.write("payload.value = newResult;"),J.write("return payload;");let R=J.compile();return(K,Q)=>R(W,K,Q)},I,j=P4,N=!A4.jitless,A=N&&cE.value,L=$.catchall,z;_._zod.parse=(W,J)=>{z??(z=U.value);let P=W.value;if(!j(P))return W.issues.push({expected:"object",code:"invalid_type",input:P,inst:_}),W;if(N&&A&&J?.async===!1&&J.jitless!==!0){if(!I)I=D($.shape);if(W=I(W,J),!L)return W;return pX([],P,W,J,z,_)}return g(W,J)}});jD=Y("$ZodUnion",(_,$)=>{l.init(_,$),$_(_._zod,"optin",()=>$.options.some((U)=>U._zod.optin==="optional")?"optional":void 0),$_(_._zod,"optout",()=>$.options.some((U)=>U._zod.optout==="optional")?"optional":void 0),$_(_._zod,"values",()=>{if($.options.every((U)=>U._zod.values))return new Set($.options.flatMap((U)=>Array.from(U._zod.values)));return}),$_(_._zod,"pattern",()=>{if($.options.every((U)=>U._zod.pattern)){let U=$.options.map((D)=>D._zod.pattern);return new RegExp(`^(${U.map((D)=>eg(D.source)).join("|")})$`)}return});let g=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(U,D)=>{if(g)return g(U,D);let I=!1,j=[];for(let N of $.options){let O=N._zod.run({value:U.value,issues:[]},D);if(O instanceof Promise)j.push(O),I=!0;else{if(O.issues.length===0)return O;j.push(O)}}if(!I)return rX(j,U,_,D);return Promise.all(j).then((N)=>{return rX(N,U,_,D)})}});CO=Y("$ZodXor",(_,$)=>{jD.init(_,$),$.inclusive=!1;let g=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(U,D)=>{if(g)return g(U,D);let I=!1,j=[];for(let N of $.options){let O=N._zod.run({value:U.value,issues:[]},D);if(O instanceof Promise)j.push(O),I=!0;else j.push(O)}if(!I)return vX(j,U,_,D);return Promise.all(j).then((N)=>{return vX(N,U,_,D)})}}),rO=Y("$ZodDiscriminatedUnion",(_,$)=>{$.inclusive=!1,jD.init(_,$);let g=_._zod.parse;$_(_._zod,"propValues",()=>{let D={};for(let I of $.options){let j=I._zod.propValues;if(!j||Object.keys(j).length===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(I)}"`);for(let[N,O]of Object.entries(j)){if(!D[N])D[N]=new Set;for(let A of O)D[N].add(A)}}return D});let U=F0(()=>{let D=$.options,I=new Map;for(let j of D){let N=j._zod.propValues?.[$.discriminator];if(!N||N.size===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(j)}"`);for(let O of N){if(I.has(O))throw Error(`Duplicate discriminator value "${String(O)}"`);I.set(O,j)}}return I});_._zod.parse=(D,I)=>{let j=D.value;if(!P4(j))return D.issues.push({code:"invalid_type",expected:"object",input:j,inst:_}),D;let N=U.value.get(j?.[$.discriminator]);if(N)return N._zod.run(D,I);if($.unionFallback||I.direction==="backward")return g(D,I);return D.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:$.discriminator,options:Array.from(U.value.keys()),input:j,path:[$.discriminator],inst:_}),D}}),vO=Y("$ZodIntersection",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value,I=$.left._zod.run({value:D,issues:[]},U),j=$.right._zod.run({value:D,issues:[]},U);if(I instanceof Promise||j instanceof Promise)return Promise.all([I,j]).then(([O,A])=>{return wX(g,O,A)});return wX(g,I,j)}});iI=Y("$ZodTuple",(_,$)=>{l.init(_,$);let g=$.items;_._zod.parse=(U,D)=>{let I=U.value;if(!Array.isArray(I))return U.issues.push({input:I,inst:_,expected:"tuple",code:"invalid_type"}),U;U.value=[];let j=[],N=fX(g,"optin"),O=fX(g,"optout");if(!$.rest){if(I.lengthg.length)U.issues.push({code:"too_big",maximum:g.length,inclusive:!0,input:I,inst:_,origin:"array"})}let A=Array(g.length);for(let L=0;L{A[L]=W}));else A[L]=z}if($.rest){let L=g.length-1,z=I.slice(g.length);for(let W of z){L++;let J=$.rest._zod.run({value:W,issues:[]},D);if(J instanceof Promise)j.push(J.then((P)=>uX(P,U,L)));else uX(J,U,L)}}if(j.length)return Promise.all(j).then(()=>xX(A,U,g,I,O));return xX(A,U,g,I,O)}});wO=Y("$ZodRecord",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(!b6(D))return g.issues.push({expected:"record",code:"invalid_type",input:D,inst:_}),g;let I=[],j=$.keyType._zod.values;if(j){g.value={};let N=new Set;for(let A of j)if(typeof A==="string"||typeof A==="number"||typeof A==="symbol"){N.add(typeof A==="number"?A.toString():A);let L=$.keyType._zod.run({value:A,issues:[]},U);if(L instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(L.issues.length){g.issues.push({code:"invalid_key",origin:"record",issues:L.issues.map((J)=>l_(J,U,Z_())),input:A,path:[A],inst:_});continue}let z=L.value,W=$.valueType._zod.run({value:D[A],issues:[]},U);if(W instanceof Promise)I.push(W.then((J)=>{if(J.issues.length)g.issues.push(...s_(A,J.issues));g.value[z]=J.value}));else{if(W.issues.length)g.issues.push(...s_(A,W.issues));g.value[z]=W.value}}let O;for(let A in D)if(!N.has(A))O=O??[],O.push(A);if(O&&O.length>0)g.issues.push({code:"unrecognized_keys",input:D,inst:_,keys:O})}else{g.value={};for(let N of Reflect.ownKeys(D)){if(N==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(D,N))continue;let O=$.keyType._zod.run({value:N,issues:[]},U);if(O instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof N==="string"&&gD.test(N)&&O.issues.length){let z=$.keyType._zod.run({value:Number(N),issues:[]},U);if(z instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(z.issues.length===0)O=z}if(O.issues.length){if($.mode==="loose")g.value[N]=D[N];else g.issues.push({code:"invalid_key",origin:"record",issues:O.issues.map((z)=>l_(z,U,Z_())),input:N,path:[N],inst:_});continue}let L=$.valueType._zod.run({value:D[N],issues:[]},U);if(L instanceof Promise)I.push(L.then((z)=>{if(z.issues.length)g.issues.push(...s_(N,z.issues));g.value[O.value]=z.value}));else{if(L.issues.length)g.issues.push(...s_(N,L.issues));g.value[O.value]=L.value}}}if(I.length)return Promise.all(I).then(()=>g);return g}}),fO=Y("$ZodMap",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(!(D instanceof Map))return g.issues.push({expected:"map",code:"invalid_type",input:D,inst:_}),g;let I=[];g.value=new Map;for(let[j,N]of D){let O=$.keyType._zod.run({value:j,issues:[]},U),A=$.valueType._zod.run({value:N,issues:[]},U);if(O instanceof Promise||A instanceof Promise)I.push(Promise.all([O,A]).then(([L,z])=>{yX(L,z,g,j,D,_,U)}));else yX(O,A,g,j,D,_,U)}if(I.length)return Promise.all(I).then(()=>g);return g}});uO=Y("$ZodSet",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(!(D instanceof Set))return g.issues.push({input:D,inst:_,expected:"set",code:"invalid_type"}),g;let I=[];g.value=new Set;for(let j of D){let N=$.valueType._zod.run({value:j,issues:[]},U);if(N instanceof Promise)I.push(N.then((O)=>hX(O,g)));else hX(N,g)}if(I.length)return Promise.all(I).then(()=>g);return g}});xO=Y("$ZodEnum",(_,$)=>{l.init(_,$);let g=pg($.entries),U=new Set(g);_._zod.values=U,_._zod.pattern=new RegExp(`^(${g.filter((D)=>ag.has(typeof D)).map((D)=>typeof D==="string"?P$(D):D.toString()).join("|")})$`),_._zod.parse=(D,I)=>{let j=D.value;if(U.has(j))return D;return D.issues.push({code:"invalid_value",values:g,input:j,inst:_}),D}}),yO=Y("$ZodLiteral",(_,$)=>{if(l.init(_,$),$.values.length===0)throw Error("Cannot create literal schema with no valid values");let g=new Set($.values);_._zod.values=g,_._zod.pattern=new RegExp(`^(${$.values.map((U)=>typeof U==="string"?P$(U):U?P$(U.toString()):String(U)).join("|")})$`),_._zod.parse=(U,D)=>{let I=U.value;if(g.has(I))return U;return U.issues.push({code:"invalid_value",values:$.values,input:I,inst:_}),U}}),hO=Y("$ZodFile",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(D instanceof File)return g;return g.issues.push({expected:"file",code:"invalid_type",input:D,inst:_}),g}}),cO=Y("$ZodTransform",(_,$)=>{l.init(_,$),_._zod.optin="optional",_._zod.parse=(g,U)=>{if(U.direction==="backward")throw new L4(_.constructor.name);let D=$.transform(g.value,g);if(U.async)return(D instanceof Promise?D:Promise.resolve(D)).then((j)=>{return g.value=j,g.fallback=!0,g});if(D instanceof Promise)throw new x$;return g.value=D,g.fallback=!0,g}});lI=Y("$ZodOptional",(_,$)=>{l.init(_,$),_._zod.optin="optional",_._zod.optout="optional",$_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,void 0]):void 0}),$_(_._zod,"pattern",()=>{let g=$.innerType._zod.pattern;return g?new RegExp(`^(${eg(g.source)})?$`):void 0}),_._zod.parse=(g,U)=>{if($.innerType._zod.optin==="optional"){let D=g.value,I=$.innerType._zod.run(g,U);if(I instanceof Promise)return I.then((j)=>cX(j,D));return cX(I,D)}if(g.value===void 0)return g;return $.innerType._zod.run(g,U)}}),nO=Y("$ZodExactOptional",(_,$)=>{lI.init(_,$),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"pattern",()=>$.innerType._zod.pattern),_._zod.parse=(g,U)=>{return $.innerType._zod.run(g,U)}}),dO=Y("$ZodNullable",(_,$)=>{l.init(_,$),$_(_._zod,"optin",()=>$.innerType._zod.optin),$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"pattern",()=>{let g=$.innerType._zod.pattern;return g?new RegExp(`^(${eg(g.source)}|null)$`):void 0}),$_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,null]):void 0}),_._zod.parse=(g,U)=>{if(g.value===null)return g;return $.innerType._zod.run(g,U)}}),mO=Y("$ZodDefault",(_,$)=>{l.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(g,U)=>{if(U.direction==="backward")return $.innerType._zod.run(g,U);if(g.value===void 0)return g.value=$.defaultValue,g;let D=$.innerType._zod.run(g,U);if(D instanceof Promise)return D.then((I)=>nX(I,$));return nX(D,$)}});iO=Y("$ZodPrefault",(_,$)=>{l.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(g,U)=>{if(U.direction==="backward")return $.innerType._zod.run(g,U);if(g.value===void 0)g.value=$.defaultValue;return $.innerType._zod.run(g,U)}}),lO=Y("$ZodNonOptional",(_,$)=>{l.init(_,$),$_(_._zod,"values",()=>{let g=$.innerType._zod.values;return g?new Set([...g].filter((U)=>U!==void 0)):void 0}),_._zod.parse=(g,U)=>{let D=$.innerType._zod.run(g,U);if(D instanceof Promise)return D.then((I)=>dX(I,_));return dX(D,_)}});tO=Y("$ZodSuccess",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{if(U.direction==="backward")throw new L4("ZodSuccess");let D=$.innerType._zod.run(g,U);if(D instanceof Promise)return D.then((I)=>{return g.value=I.issues.length===0,g});return g.value=D.issues.length===0,g}}),oO=Y("$ZodCatch",(_,$)=>{l.init(_,$),_._zod.optin="optional",$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(g,U)=>{if(U.direction==="backward")return $.innerType._zod.run(g,U);let D=$.innerType._zod.run(g,U);if(D instanceof Promise)return D.then((I)=>{if(g.value=I.value,I.issues.length)g.value=$.catchValue({...g,error:{issues:I.issues.map((j)=>l_(j,U,Z_()))},input:g.value}),g.issues=[],g.fallback=!0;return g});if(g.value=D.value,D.issues.length)g.value=$.catchValue({...g,error:{issues:D.issues.map((I)=>l_(I,U,Z_()))},input:g.value}),g.issues=[],g.fallback=!0;return g}}),pO=Y("$ZodNaN",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{if(typeof g.value!=="number"||!Number.isNaN(g.value))return g.issues.push({input:g.value,inst:_,expected:"nan",code:"invalid_type"}),g;return g}}),tI=Y("$ZodPipe",(_,$)=>{l.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(g,U)=>{if(U.direction==="backward"){let I=$.out._zod.run(g,U);if(I instanceof Promise)return I.then((j)=>yI(j,$.in,U));return yI(I,$.in,U)}let D=$.in._zod.run(g,U);if(D instanceof Promise)return D.then((I)=>yI(I,$.out,U));return yI(D,$.out,U)}});ND=Y("$ZodCodec",(_,$)=>{l.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(g,U)=>{if((U.direction||"forward")==="forward"){let I=$.in._zod.run(g,U);if(I instanceof Promise)return I.then((j)=>hI(j,$,U));return hI(I,$,U)}else{let I=$.out._zod.run(g,U);if(I instanceof Promise)return I.then((j)=>hI(j,$,U));return hI(I,$,U)}}});eO=Y("$ZodPreprocess",(_,$)=>{tI.init(_,$)}),aO=Y("$ZodReadonly",(_,$)=>{l.init(_,$),$_(_._zod,"propValues",()=>$.innerType._zod.propValues),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"optin",()=>$.innerType?._zod?.optin),$_(_._zod,"optout",()=>$.innerType?._zod?.optout),_._zod.parse=(g,U)=>{if(U.direction==="backward")return $.innerType._zod.run(g,U);let D=$.innerType._zod.run(g,U);if(D instanceof Promise)return D.then(mX);return mX(D)}});sO=Y("$ZodTemplateLiteral",(_,$)=>{l.init(_,$);let g=[];for(let U of $.parts)if(typeof U==="object"&&U!==null){if(!U._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...U._zod.traits].shift()}`);let D=U._zod.pattern instanceof RegExp?U._zod.pattern.source:U._zod.pattern;if(!D)throw Error(`Invalid template literal part: ${U._zod.traits}`);let I=D.startsWith("^")?1:0,j=D.endsWith("$")?D.length-1:D.length;g.push(D.slice(I,j))}else if(U===null||dE.has(typeof U))g.push(P$(`${U}`));else throw Error(`Invalid template literal part: ${U}`);_._zod.pattern=new RegExp(`^${g.join("")}$`),_._zod.parse=(U,D)=>{if(typeof U.value!=="string")return U.issues.push({input:U.value,inst:_,expected:"string",code:"invalid_type"}),U;if(_._zod.pattern.lastIndex=0,!_._zod.pattern.test(U.value))return U.issues.push({input:U.value,inst:_,code:"invalid_format",format:$.format??"template_literal",pattern:_._zod.pattern.source}),U;return U}}),_A=Y("$ZodFunction",(_,$)=>{return l.init(_,$),_._def=$,_._zod.def=$,_.implement=(g)=>{if(typeof g!=="function")throw Error("implement() must be called with a function");return function(...U){let D=_._def.input?BI(_._def.input,U):U,I=Reflect.apply(g,this,D);if(_._def.output)return BI(_._def.output,I);return I}},_.implementAsync=(g)=>{if(typeof g!=="function")throw Error("implementAsync() must be called with a function");return async function(...U){let D=_._def.input?await KI(_._def.input,U):U,I=await Reflect.apply(g,this,D);if(_._def.output)return await KI(_._def.output,I);return I}},_._zod.parse=(g,U)=>{if(typeof g.value!=="function")return g.issues.push({code:"invalid_type",expected:"function",input:g.value,inst:_}),g;if(_._def.output&&_._def.output._zod.def.type==="promise")g.value=_.implementAsync(g.value);else g.value=_.implement(g.value);return g},_.input=(...g)=>{let U=_.constructor;if(Array.isArray(g[0]))return new U({type:"function",input:new iI({type:"tuple",items:g[0],rest:g[1]}),output:_._def.output});return new U({type:"function",input:g[0],output:_._def.output})},_.output=(g)=>{return new _.constructor({type:"function",input:_._def.input,output:g})},_}),$A=Y("$ZodPromise",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{return Promise.resolve(g.value).then((D)=>$.innerType._zod.run({value:D,issues:[]},U))}}),gA=Y("$ZodLazy",(_,$)=>{l.init(_,$),$_(_._zod,"innerType",()=>{let g=$;if(!g._cachedInner)g._cachedInner=$.getter();return g._cachedInner}),$_(_._zod,"pattern",()=>_._zod.innerType?._zod?.pattern),$_(_._zod,"propValues",()=>_._zod.innerType?._zod?.propValues),$_(_._zod,"optin",()=>_._zod.innerType?._zod?.optin??void 0),$_(_._zod,"optout",()=>_._zod.innerType?._zod?.optout??void 0),_._zod.parse=(g,U)=>{return _._zod.innerType._zod.run(g,U)}}),DA=Y("$ZodCustom",(_,$)=>{Y_.init(_,$),l.init(_,$),_._zod.parse=(g,U)=>{return g},_._zod.check=(g)=>{let U=g.value,D=$.fn(U);if(D instanceof Promise)return D.then((I)=>iX(I,g,U,_));iX(D,g,U,_);return}})});function IA(){return{localeError:$V()}}var $V=()=>{let _={string:{unit:"\u062D\u0631\u0641",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},file:{unit:"\u0628\u0627\u064A\u062A",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},array:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},set:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"}};function $(D){return _[D]??null}let g={regex:"\u0645\u062F\u062E\u0644",email:"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",url:"\u0631\u0627\u0628\u0637",emoji:"\u0625\u064A\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",date:"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO",time:"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",duration:"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO",ipv4:"\u0639\u0646\u0648\u0627\u0646 IPv4",ipv6:"\u0639\u0646\u0648\u0627\u0646 IPv6",cidrv4:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4",cidrv6:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6",base64:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded",base64url:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded",json_string:"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON",e164:"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164",jwt:"JWT",template_literal:"\u0645\u062F\u062E\u0644"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${D.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${N}`;return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${I}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${N}`}case"invalid_value":if(D.values.length===1)return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${F(D.values[0])}`;return`\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${D.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${I} ${D.maximum.toString()} ${j.unit??"\u0639\u0646\u0635\u0631"}`;return`\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${D.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${I} ${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${D.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${I} ${D.minimum.toString()} ${j.unit}`;return`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${D.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${I} ${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${D.prefix}"`;if(I.format==="ends_with")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${I.suffix}"`;if(I.format==="includes")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${I.includes}"`;if(I.format==="regex")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${I.pattern}`;return`${g[I.format]??D.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`}case"not_multiple_of":return`\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${D.divisor}`;case"unrecognized_keys":return`\u0645\u0639\u0631\u0641${D.keys.length>1?"\u0627\u062A":""} \u063A\u0631\u064A\u0628${D.keys.length>1?"\u0629":""}: ${B(D.keys,"\u060C ")}`;case"invalid_key":return`\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${D.origin}`;case"invalid_union":return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644";case"invalid_element":return`\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${D.origin}`;default:return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"}}};var aX=w(()=>{c()});function jA(){return{localeError:gV()}}var gV=()=>{let _={string:{unit:"simvol",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"element",verb:"olmal\u0131d\u0131r"},set:{unit:"element",verb:"olmal\u0131d\u0131r"}};function $(D){return _[D]??null}let g={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${D.expected}, daxil olan ${N}`;return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${I}, daxil olan ${N}`}case"invalid_value":if(D.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${F(D.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${D.origin??"d\u0259y\u0259r"} ${I}${D.maximum.toString()} ${j.unit??"element"}`;return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${D.origin??"d\u0259y\u0259r"} ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${D.origin} ${I}${D.minimum.toString()} ${j.unit}`;return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${D.origin} ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Yanl\u0131\u015F m\u0259tn: "${I.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`;if(I.format==="ends_with")return`Yanl\u0131\u015F m\u0259tn: "${I.suffix}" il\u0259 bitm\u0259lidir`;if(I.format==="includes")return`Yanl\u0131\u015F m\u0259tn: "${I.includes}" daxil olmal\u0131d\u0131r`;if(I.format==="regex")return`Yanl\u0131\u015F m\u0259tn: ${I.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;return`Yanl\u0131\u015F ${g[I.format]??D.format}`}case"not_multiple_of":return`Yanl\u0131\u015F \u0259d\u0259d: ${D.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`;case"unrecognized_keys":return`Tan\u0131nmayan a\xE7ar${D.keys.length>1?"lar":""}: ${B(D.keys,", ")}`;case"invalid_key":return`${D.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`;case"invalid_union":return"Yanl\u0131\u015F d\u0259y\u0259r";case"invalid_element":return`${D.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;default:return"Yanl\u0131\u015F d\u0259y\u0259r"}}};var sX=w(()=>{c()});function _5(_,$,g,U){let D=Math.abs(_),I=D%10,j=D%100;if(j>=11&&j<=19)return U;if(I===1)return $;if(I>=2&&I<=4)return g;return U}function NA(){return{localeError:DV()}}var DV=()=>{let _={string:{unit:{one:"\u0441\u0456\u043C\u0432\u0430\u043B",few:"\u0441\u0456\u043C\u0432\u0430\u043B\u044B",many:"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u044B",many:"\u0431\u0430\u0439\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"}};function $(D){return _[D]??null}let g={regex:"\u0443\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0430\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0447\u0430\u0441",duration:"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0430\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0430\u0441",cidrv4:"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",base64:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64",base64url:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url",json_string:"JSON \u0440\u0430\u0434\u043E\u043A",e164:"\u043D\u0443\u043C\u0430\u0440 E.164",jwt:"JWT",template_literal:"\u0443\u0432\u043E\u0434"},U={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${D.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${N}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${I}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${N}`}case"invalid_value":if(D.values.length===1)return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${F(D.values[0])}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j){let N=Number(D.maximum),O=_5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${D.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${j.verb} ${I}${D.maximum.toString()} ${O}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${D.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j){let N=Number(D.minimum),O=_5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${D.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${j.verb} ${I}${D.minimum.toString()} ${O}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${D.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${I.includes}"`;if(I.format==="regex")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${I.pattern}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${g[I.format]??D.format}`}case"not_multiple_of":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${D.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${D.keys.length>1?"\u043A\u043B\u044E\u0447\u044B":"\u043A\u043B\u044E\u0447"}: ${B(D.keys,", ")}`;case"invalid_key":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${D.origin}`;case"invalid_union":return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434";case"invalid_element":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${D.origin}`;default:return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"}}};var $5=w(()=>{c()});function EA(){return{localeError:UV()}}var UV=()=>{let _={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},file:{unit:"\u0431\u0430\u0439\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"}};function $(D){return _[D]??null}let g={regex:"\u0432\u0445\u043E\u0434",email:"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0436\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",base64url:"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",json_string:"JSON \u043D\u0438\u0437",e164:"E.164 \u043D\u043E\u043C\u0435\u0440",jwt:"JWT",template_literal:"\u0432\u0445\u043E\u0434"},U={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${D.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${N}`;return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${I}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${N}`}case"invalid_value":if(D.values.length===1)return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${F(D.values[0])}`;return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${D.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${I}${D.maximum.toString()} ${j.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`;return`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${D.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${D.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${I}${D.minimum.toString()} ${j.unit}`;return`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${D.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${I.pattern}`;let j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";if(I.format==="emoji")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(I.format==="datetime")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(I.format==="date")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";if(I.format==="time")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(I.format==="duration")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";return`${j} ${g[I.format]??D.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${D.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${D.keys.length>1?"\u0438":""} \u043A\u043B\u044E\u0447${D.keys.length>1?"\u043E\u0432\u0435":""}: ${B(D.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${D.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434";case"invalid_element":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${D.origin}`;default:return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"}}};var g5=w(()=>{c()});function OA(){return{localeError:IV()}}var IV=()=>{let _={string:{unit:"car\xE0cters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function $(D){return _[D]??null}let g={regex:"entrada",email:"adre\xE7a electr\xF2nica",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i hora ISO",date:"data ISO",time:"hora ISO",duration:"durada ISO",ipv4:"adre\xE7a IPv4",ipv6:"adre\xE7a IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Tipus inv\xE0lid: s'esperava instanceof ${D.expected}, s'ha rebut ${N}`;return`Tipus inv\xE0lid: s'esperava ${I}, s'ha rebut ${N}`}case"invalid_value":if(D.values.length===1)return`Valor inv\xE0lid: s'esperava ${F(D.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${B(D.values," o ")}`;case"too_big":{let I=D.inclusive?"com a m\xE0xim":"menys de",j=$(D.origin);if(j)return`Massa gran: s'esperava que ${D.origin??"el valor"} contingu\xE9s ${I} ${D.maximum.toString()} ${j.unit??"elements"}`;return`Massa gran: s'esperava que ${D.origin??"el valor"} fos ${I} ${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?"com a m\xEDnim":"m\xE9s de",j=$(D.origin);if(j)return`Massa petit: s'esperava que ${D.origin} contingu\xE9s ${I} ${D.minimum.toString()} ${j.unit}`;return`Massa petit: s'esperava que ${D.origin} fos ${I} ${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Format inv\xE0lid: ha de comen\xE7ar amb "${I.prefix}"`;if(I.format==="ends_with")return`Format inv\xE0lid: ha d'acabar amb "${I.suffix}"`;if(I.format==="includes")return`Format inv\xE0lid: ha d'incloure "${I.includes}"`;if(I.format==="regex")return`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${I.pattern}`;return`Format inv\xE0lid per a ${g[I.format]??D.format}`}case"not_multiple_of":return`N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${D.divisor}`;case"unrecognized_keys":return`Clau${D.keys.length>1?"s":""} no reconeguda${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Clau inv\xE0lida a ${D.origin}`;case"invalid_union":return"Entrada inv\xE0lida";case"invalid_element":return`Element inv\xE0lid a ${D.origin}`;default:return"Entrada inv\xE0lida"}}};var D5=w(()=>{c()});function AA(){return{localeError:jV()}}var jV=()=>{let _={string:{unit:"znak\u016F",verb:"m\xEDt"},file:{unit:"bajt\u016F",verb:"m\xEDt"},array:{unit:"prvk\u016F",verb:"m\xEDt"},set:{unit:"prvk\u016F",verb:"m\xEDt"}};function $(D){return _[D]??null}let g={regex:"regul\xE1rn\xED v\xFDraz",email:"e-mailov\xE1 adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"datum a \u010Das ve form\xE1tu ISO",date:"datum ve form\xE1tu ISO",time:"\u010Das ve form\xE1tu ISO",duration:"doba trv\xE1n\xED ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64",base64url:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url",json_string:"\u0159et\u011Bzec ve form\xE1tu JSON",e164:"\u010D\xEDslo E.164",jwt:"JWT",template_literal:"vstup"},U={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${D.expected}, obdr\u017Eeno ${N}`;return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${I}, obdr\u017Eeno ${N}`}case"invalid_value":if(D.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${F(D.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${D.origin??"hodnota"} mus\xED m\xEDt ${I}${D.maximum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${D.origin??"hodnota"} mus\xED b\xFDt ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${D.origin??"hodnota"} mus\xED m\xEDt ${I}${D.minimum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${D.origin??"hodnota"} mus\xED b\xFDt ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${I.prefix}"`;if(I.format==="ends_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${I.suffix}"`;if(I.format==="includes")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${I.includes}"`;if(I.format==="regex")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${I.pattern}`;return`Neplatn\xFD form\xE1t ${g[I.format]??D.format}`}case"not_multiple_of":return`Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${D.divisor}`;case"unrecognized_keys":return`Nezn\xE1m\xE9 kl\xED\u010De: ${B(D.keys,", ")}`;case"invalid_key":return`Neplatn\xFD kl\xED\u010D v ${D.origin}`;case"invalid_union":return"Neplatn\xFD vstup";case"invalid_element":return`Neplatn\xE1 hodnota v ${D.origin}`;default:return"Neplatn\xFD vstup"}}};var U5=w(()=>{c()});function LA(){return{localeError:NV()}}var NV=()=>{let _={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function $(D){return _[D]??null}let g={regex:"input",email:"e-mailadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkesl\xE6t",date:"ISO-dato",time:"ISO-klokkesl\xE6t",duration:"ISO-varighed",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodet streng",base64url:"base64url-kodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},U={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"s\xE6t",file:"fil"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ugyldigt input: forventede instanceof ${D.expected}, fik ${N}`;return`Ugyldigt input: forventede ${I}, fik ${N}`}case"invalid_value":if(D.values.length===1)return`Ugyldig v\xE6rdi: forventede ${F(D.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),N=U[D.origin]??D.origin;if(j)return`For stor: forventede ${N??"value"} ${j.verb} ${I} ${D.maximum.toString()} ${j.unit??"elementer"}`;return`For stor: forventede ${N??"value"} havde ${I} ${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),N=U[D.origin]??D.origin;if(j)return`For lille: forventede ${N} ${j.verb} ${I} ${D.minimum.toString()} ${j.unit}`;return`For lille: forventede ${N} havde ${I} ${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Ugyldig streng: skal starte med "${I.prefix}"`;if(I.format==="ends_with")return`Ugyldig streng: skal ende med "${I.suffix}"`;if(I.format==="includes")return`Ugyldig streng: skal indeholde "${I.includes}"`;if(I.format==="regex")return`Ugyldig streng: skal matche m\xF8nsteret ${I.pattern}`;return`Ugyldig ${g[I.format]??D.format}`}case"not_multiple_of":return`Ugyldigt tal: skal v\xE6re deleligt med ${D.divisor}`;case"unrecognized_keys":return`${D.keys.length>1?"Ukendte n\xF8gler":"Ukendt n\xF8gle"}: ${B(D.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8gle i ${D.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig v\xE6rdi i ${D.origin}`;default:return"Ugyldigt input"}}};var I5=w(()=>{c()});function JA(){return{localeError:EV()}}var EV=()=>{let _={string:{unit:"Zeichen",verb:"zu haben"},file:{unit:"Bytes",verb:"zu haben"},array:{unit:"Elemente",verb:"zu haben"},set:{unit:"Elemente",verb:"zu haben"}};function $(D){return _[D]??null}let g={regex:"Eingabe",email:"E-Mail-Adresse",url:"URL",emoji:"Emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-Datum und -Uhrzeit",date:"ISO-Datum",time:"ISO-Uhrzeit",duration:"ISO-Dauer",ipv4:"IPv4-Adresse",ipv6:"IPv6-Adresse",cidrv4:"IPv4-Bereich",cidrv6:"IPv6-Bereich",base64:"Base64-codierter String",base64url:"Base64-URL-codierter String",json_string:"JSON-String",e164:"E.164-Nummer",jwt:"JWT",template_literal:"Eingabe"},U={nan:"NaN",number:"Zahl",array:"Array"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ung\xFCltige Eingabe: erwartet instanceof ${D.expected}, erhalten ${N}`;return`Ung\xFCltige Eingabe: erwartet ${I}, erhalten ${N}`}case"invalid_value":if(D.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${F(D.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Zu gro\xDF: erwartet, dass ${D.origin??"Wert"} ${I}${D.maximum.toString()} ${j.unit??"Elemente"} hat`;return`Zu gro\xDF: erwartet, dass ${D.origin??"Wert"} ${I}${D.maximum.toString()} ist`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Zu klein: erwartet, dass ${D.origin} ${I}${D.minimum.toString()} ${j.unit} hat`;return`Zu klein: erwartet, dass ${D.origin} ${I}${D.minimum.toString()} ist`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Ung\xFCltiger String: muss mit "${I.prefix}" beginnen`;if(I.format==="ends_with")return`Ung\xFCltiger String: muss mit "${I.suffix}" enden`;if(I.format==="includes")return`Ung\xFCltiger String: muss "${I.includes}" enthalten`;if(I.format==="regex")return`Ung\xFCltiger String: muss dem Muster ${I.pattern} entsprechen`;return`Ung\xFCltig: ${g[I.format]??D.format}`}case"not_multiple_of":return`Ung\xFCltige Zahl: muss ein Vielfaches von ${D.divisor} sein`;case"unrecognized_keys":return`${D.keys.length>1?"Unbekannte Schl\xFCssel":"Unbekannter Schl\xFCssel"}: ${B(D.keys,", ")}`;case"invalid_key":return`Ung\xFCltiger Schl\xFCssel in ${D.origin}`;case"invalid_union":return"Ung\xFCltige Eingabe";case"invalid_element":return`Ung\xFCltiger Wert in ${D.origin}`;default:return"Ung\xFCltige Eingabe"}}};var j5=w(()=>{c()});function PA(){return{localeError:OV()}}var OV=()=>{let _={string:{unit:"\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},file:{unit:"bytes",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},array:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},set:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},map:{unit:"\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"}};function $(D){return _[D]??null}let g={regex:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2",email:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1",date:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1",time:"ISO \u03CE\u03C1\u03B1",duration:"ISO \u03B4\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1",ipv4:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv4",ipv6:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv6",mac:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 MAC",cidrv4:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv4",cidrv6:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv6",base64:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64",base64url:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64url",json_string:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC JSON",e164:"\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 E.164",jwt:"JWT",template_literal:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(typeof D.expected==="string"&&/^[A-Z]/.test(D.expected))return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD instanceof ${D.expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${N}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${I}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${N}`}case"invalid_value":if(D.values.length===1)return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${F(D.values[0])}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${D.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${I}${D.maximum.toString()} ${j.unit??"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1"}`;return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${D.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${D.origin} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${I}${D.minimum.toString()} ${j.unit}`;return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${D.origin} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03BC\u03B5 "${I.prefix}"`;if(I.format==="ends_with")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 "${I.suffix}"`;if(I.format==="includes")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 "${I.includes}"`;if(I.format==="regex")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03BF\u03C4\u03AF\u03B2\u03BF ${I.pattern}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${g[I.format]??D.format}`}case"not_multiple_of":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03BF\u03C5 ${D.divisor}`;case"unrecognized_keys":return`\u0386\u03B3\u03BD\u03C9\u03C3\u03C4${D.keys.length>1?"\u03B1":"\u03BF"} \u03BA\u03BB\u03B5\u03B9\u03B4${D.keys.length>1?"\u03B9\u03AC":"\u03AF"}: ${B(D.keys,", ")}`;case"invalid_key":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03C4\u03BF ${D.origin}`;case"invalid_union":return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2";case"invalid_element":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C3\u03C4\u03BF ${D.origin}`;default:return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"}}};var N5=w(()=>{c()});function ED(){return{localeError:AV()}}var AV=()=>{let _={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function $(D){return _[D]??null}let g={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;return`Invalid input: expected ${I}, received ${N}`}case"invalid_value":if(D.values.length===1)return`Invalid input: expected ${F(D.values[0])}`;return`Invalid option: expected one of ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Too big: expected ${D.origin??"value"} to have ${I}${D.maximum.toString()} ${j.unit??"elements"}`;return`Too big: expected ${D.origin??"value"} to be ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Too small: expected ${D.origin} to have ${I}${D.minimum.toString()} ${j.unit}`;return`Too small: expected ${D.origin} to be ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Invalid string: must start with "${I.prefix}"`;if(I.format==="ends_with")return`Invalid string: must end with "${I.suffix}"`;if(I.format==="includes")return`Invalid string: must include "${I.includes}"`;if(I.format==="regex")return`Invalid string: must match pattern ${I.pattern}`;return`Invalid ${g[I.format]??D.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${D.divisor}`;case"unrecognized_keys":return`Unrecognized key${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Invalid key in ${D.origin}`;case"invalid_union":if(D.options&&Array.isArray(D.options)&&D.options.length>0)return`Invalid discriminator value. Expected ${D.options.map((j)=>`'${j}'`).join(" | ")}`;return"Invalid input";case"invalid_element":return`Invalid value in ${D.origin}`;default:return"Invalid input"}}};var zA=w(()=>{c()});function SA(){return{localeError:LV()}}var LV=()=>{let _={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function $(D){return _[D]??null}let g={regex:"enigo",email:"retadreso",url:"URL",emoji:"emo\u011Dio",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datotempo",date:"ISO-dato",time:"ISO-tempo",duration:"ISO-da\u016Dro",ipv4:"IPv4-adreso",ipv6:"IPv6-adreso",cidrv4:"IPv4-rango",cidrv6:"IPv6-rango",base64:"64-ume kodita karaktraro",base64url:"URL-64-ume kodita karaktraro",json_string:"JSON-karaktraro",e164:"E.164-nombro",jwt:"JWT",template_literal:"enigo"},U={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Nevalida enigo: atendi\u011Dis instanceof ${D.expected}, ricevi\u011Dis ${N}`;return`Nevalida enigo: atendi\u011Dis ${I}, ricevi\u011Dis ${N}`}case"invalid_value":if(D.values.length===1)return`Nevalida enigo: atendi\u011Dis ${F(D.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Tro granda: atendi\u011Dis ke ${D.origin??"valoro"} havu ${I}${D.maximum.toString()} ${j.unit??"elementojn"}`;return`Tro granda: atendi\u011Dis ke ${D.origin??"valoro"} havu ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Tro malgranda: atendi\u011Dis ke ${D.origin} havu ${I}${D.minimum.toString()} ${j.unit}`;return`Tro malgranda: atendi\u011Dis ke ${D.origin} estu ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Nevalida karaktraro: devas komenci\u011Di per "${I.prefix}"`;if(I.format==="ends_with")return`Nevalida karaktraro: devas fini\u011Di per "${I.suffix}"`;if(I.format==="includes")return`Nevalida karaktraro: devas inkluzivi "${I.includes}"`;if(I.format==="regex")return`Nevalida karaktraro: devas kongrui kun la modelo ${I.pattern}`;return`Nevalida ${g[I.format]??D.format}`}case"not_multiple_of":return`Nevalida nombro: devas esti oblo de ${D.divisor}`;case"unrecognized_keys":return`Nekonata${D.keys.length>1?"j":""} \u015Dlosilo${D.keys.length>1?"j":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Nevalida \u015Dlosilo en ${D.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${D.origin}`;default:return"Nevalida enigo"}}};var E5=w(()=>{c()});function WA(){return{localeError:JV()}}var JV=()=>{let _={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function $(D){return _[D]??null}let g={regex:"entrada",email:"direcci\xF3n de correo electr\xF3nico",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"fecha y hora ISO",date:"fecha ISO",time:"hora ISO",duration:"duraci\xF3n ISO",ipv4:"direcci\xF3n IPv4",ipv6:"direcci\xF3n IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},U={nan:"NaN",string:"texto",number:"n\xFAmero",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"n\xFAmero grande",symbol:"s\xEDmbolo",undefined:"indefinido",null:"nulo",function:"funci\xF3n",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeraci\xF3n",union:"uni\xF3n",literal:"literal",promise:"promesa",void:"vac\xEDo",never:"nunca",unknown:"desconocido",any:"cualquiera"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Entrada inv\xE1lida: se esperaba instanceof ${D.expected}, recibido ${N}`;return`Entrada inv\xE1lida: se esperaba ${I}, recibido ${N}`}case"invalid_value":if(D.values.length===1)return`Entrada inv\xE1lida: se esperaba ${F(D.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),N=U[D.origin]??D.origin;if(j)return`Demasiado grande: se esperaba que ${N??"valor"} tuviera ${I}${D.maximum.toString()} ${j.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${N??"valor"} fuera ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),N=U[D.origin]??D.origin;if(j)return`Demasiado peque\xF1o: se esperaba que ${N} tuviera ${I}${D.minimum.toString()} ${j.unit}`;return`Demasiado peque\xF1o: se esperaba que ${N} fuera ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Cadena inv\xE1lida: debe comenzar con "${I.prefix}"`;if(I.format==="ends_with")return`Cadena inv\xE1lida: debe terminar en "${I.suffix}"`;if(I.format==="includes")return`Cadena inv\xE1lida: debe incluir "${I.includes}"`;if(I.format==="regex")return`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${I.pattern}`;return`Inv\xE1lido ${g[I.format]??D.format}`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${D.divisor}`;case"unrecognized_keys":return`Llave${D.keys.length>1?"s":""} desconocida${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${U[D.origin]??D.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${U[D.origin]??D.origin}`;default:return"Entrada inv\xE1lida"}}};var O5=w(()=>{c()});function XA(){return{localeError:PV()}}var PV=()=>{let _={string:{unit:"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},file:{unit:"\u0628\u0627\u06CC\u062A",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},array:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},set:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"}};function $(D){return _[D]??null}let g={regex:"\u0648\u0631\u0648\u062F\u06CC",email:"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644",url:"URL",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",date:"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648",time:"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",duration:"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",ipv4:"IPv4 \u0622\u062F\u0631\u0633",ipv6:"IPv6 \u0622\u062F\u0631\u0633",cidrv4:"IPv4 \u062F\u0627\u0645\u0646\u0647",cidrv6:"IPv6 \u062F\u0627\u0645\u0646\u0647",base64:"base64-encoded \u0631\u0634\u062A\u0647",base64url:"base64url-encoded \u0631\u0634\u062A\u0647",json_string:"JSON \u0631\u0634\u062A\u0647",e164:"E.164 \u0639\u062F\u062F",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u06CC"},U={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${D.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${N} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${I} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${N} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`}case"invalid_value":if(D.values.length===1)return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${F(D.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;return`\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${B(D.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${D.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${I}${D.maximum.toString()} ${j.unit??"\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${D.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${I}${D.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${D.origin} \u0628\u0627\u06CC\u062F ${I}${D.minimum.toString()} ${j.unit} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${D.origin} \u0628\u0627\u06CC\u062F ${I}${D.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${I.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;if(I.format==="ends_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${I.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;if(I.format==="includes")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${I.includes}" \u0628\u0627\u0634\u062F`;if(I.format==="regex")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${I.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;return`${g[I.format]??D.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`}case"not_multiple_of":return`\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${D.divisor} \u0628\u0627\u0634\u062F`;case"unrecognized_keys":return`\u06A9\u0644\u06CC\u062F${D.keys.length>1?"\u0647\u0627\u06CC":""} \u0646\u0627\u0634\u0646\u0627\u0633: ${B(D.keys,", ")}`;case"invalid_key":return`\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${D.origin}`;case"invalid_union":return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631";case"invalid_element":return`\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${D.origin}`;default:return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631"}}};var A5=w(()=>{c()});function RA(){return{localeError:zV()}}var zV=()=>{let _={string:{unit:"merkki\xE4",subject:"merkkijonon"},file:{unit:"tavua",subject:"tiedoston"},array:{unit:"alkiota",subject:"listan"},set:{unit:"alkiota",subject:"joukon"},number:{unit:"",subject:"luvun"},bigint:{unit:"",subject:"suuren kokonaisluvun"},int:{unit:"",subject:"kokonaisluvun"},date:{unit:"",subject:"p\xE4iv\xE4m\xE4\xE4r\xE4n"}};function $(D){return _[D]??null}let g={regex:"s\xE4\xE4nn\xF6llinen lauseke",email:"s\xE4hk\xF6postiosoite",url:"URL-osoite",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-aikaleima",date:"ISO-p\xE4iv\xE4m\xE4\xE4r\xE4",time:"ISO-aika",duration:"ISO-kesto",ipv4:"IPv4-osoite",ipv6:"IPv6-osoite",cidrv4:"IPv4-alue",cidrv6:"IPv6-alue",base64:"base64-koodattu merkkijono",base64url:"base64url-koodattu merkkijono",json_string:"JSON-merkkijono",e164:"E.164-luku",jwt:"JWT",template_literal:"templaattimerkkijono"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Virheellinen tyyppi: odotettiin instanceof ${D.expected}, oli ${N}`;return`Virheellinen tyyppi: odotettiin ${I}, oli ${N}`}case"invalid_value":if(D.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${F(D.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Liian suuri: ${j.subject} t\xE4ytyy olla ${I}${D.maximum.toString()} ${j.unit}`.trim();return`Liian suuri: arvon t\xE4ytyy olla ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Liian pieni: ${j.subject} t\xE4ytyy olla ${I}${D.minimum.toString()} ${j.unit}`.trim();return`Liian pieni: arvon t\xE4ytyy olla ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${I.prefix}"`;if(I.format==="ends_with")return`Virheellinen sy\xF6te: t\xE4ytyy loppua "${I.suffix}"`;if(I.format==="includes")return`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${I.includes}"`;if(I.format==="regex")return`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${I.pattern}`;return`Virheellinen ${g[I.format]??D.format}`}case"not_multiple_of":return`Virheellinen luku: t\xE4ytyy olla luvun ${D.divisor} monikerta`;case"unrecognized_keys":return`${D.keys.length>1?"Tuntemattomat avaimet":"Tuntematon avain"}: ${B(D.keys,", ")}`;case"invalid_key":return"Virheellinen avain tietueessa";case"invalid_union":return"Virheellinen unioni";case"invalid_element":return"Virheellinen arvo joukossa";default:return"Virheellinen sy\xF6te"}}};var L5=w(()=>{c()});function GA(){return{localeError:SV()}}var SV=()=>{let _={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function $(D){return _[D]??null}let g={regex:"entr\xE9e",email:"adresse e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date et heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},U={string:"cha\xEEne",number:"nombre",int:"entier",boolean:"bool\xE9en",bigint:"grand entier",symbol:"symbole",undefined:"ind\xE9fini",null:"null",never:"jamais",void:"vide",date:"date",array:"tableau",object:"objet",tuple:"tuple",record:"enregistrement",map:"carte",set:"ensemble",file:"fichier",nonoptional:"non-optionnel",nan:"NaN",function:"fonction"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Entr\xE9e invalide : instanceof ${D.expected} attendu, ${N} re\xE7u`;return`Entr\xE9e invalide : ${I} attendu, ${N} re\xE7u`}case"invalid_value":if(D.values.length===1)return`Entr\xE9e invalide : ${F(D.values[0])} attendu`;return`Option invalide : une valeur parmi ${B(D.values,"|")} attendue`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Trop grand : ${U[D.origin]??"valeur"} doit ${j.verb} ${I}${D.maximum.toString()} ${j.unit??"\xE9l\xE9ment(s)"}`;return`Trop grand : ${U[D.origin]??"valeur"} doit \xEAtre ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Trop petit : ${U[D.origin]??"valeur"} doit ${j.verb} ${I}${D.minimum.toString()} ${j.unit}`;return`Trop petit : ${U[D.origin]??"valeur"} doit \xEAtre ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${I.prefix}"`;if(I.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${I.suffix}"`;if(I.format==="includes")return`Cha\xEEne invalide : doit inclure "${I.includes}"`;if(I.format==="regex")return`Cha\xEEne invalide : doit correspondre au mod\xE8le ${I.pattern}`;return`${g[I.format]??D.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${D.divisor}`;case"unrecognized_keys":return`Cl\xE9${D.keys.length>1?"s":""} non reconnue${D.keys.length>1?"s":""} : ${B(D.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${D.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${D.origin}`;default:return"Entr\xE9e invalide"}}};var J5=w(()=>{c()});function YA(){return{localeError:WV()}}var WV=()=>{let _={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function $(D){return _[D]??null}let g={regex:"entr\xE9e",email:"adresse courriel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date-heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Entr\xE9e invalide : attendu instanceof ${D.expected}, re\xE7u ${N}`;return`Entr\xE9e invalide : attendu ${I}, re\xE7u ${N}`}case"invalid_value":if(D.values.length===1)return`Entr\xE9e invalide : attendu ${F(D.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"\u2264":"<",j=$(D.origin);if(j)return`Trop grand : attendu que ${D.origin??"la valeur"} ait ${I}${D.maximum.toString()} ${j.unit}`;return`Trop grand : attendu que ${D.origin??"la valeur"} soit ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?"\u2265":">",j=$(D.origin);if(j)return`Trop petit : attendu que ${D.origin} ait ${I}${D.minimum.toString()} ${j.unit}`;return`Trop petit : attendu que ${D.origin} soit ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${I.prefix}"`;if(I.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${I.suffix}"`;if(I.format==="includes")return`Cha\xEEne invalide : doit inclure "${I.includes}"`;if(I.format==="regex")return`Cha\xEEne invalide : doit correspondre au motif ${I.pattern}`;return`${g[I.format]??D.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${D.divisor}`;case"unrecognized_keys":return`Cl\xE9${D.keys.length>1?"s":""} non reconnue${D.keys.length>1?"s":""} : ${B(D.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${D.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${D.origin}`;default:return"Entr\xE9e invalide"}}};var P5=w(()=>{c()});function QA(){return{localeError:XV()}}var XV=()=>{let _={string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA",gender:"f"},number:{label:"\u05DE\u05E1\u05E4\u05E8",gender:"m"},boolean:{label:"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA",gender:"m"},array:{label:"\u05DE\u05E2\u05E8\u05DA",gender:"m"},object:{label:"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8",gender:"m"},null:{label:"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)",gender:"m"},undefined:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)",gender:"m"},symbol:{label:"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)",gender:"m"},function:{label:"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4",gender:"f"},map:{label:"\u05DE\u05E4\u05D4 (Map)",gender:"f"},set:{label:"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)",gender:"f"},file:{label:"\u05E7\u05D5\u05D1\u05E5",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2",gender:"m"},value:{label:"\u05E2\u05E8\u05DA",gender:"m"}},$={string:{unit:"\u05EA\u05D5\u05D5\u05D9\u05DD",shortLabel:"\u05E7\u05E6\u05E8",longLabel:"\u05D0\u05E8\u05D5\u05DA"},file:{unit:"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},array:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},set:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},number:{unit:"",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"}},g=(A)=>A?_[A]:void 0,U=(A)=>{let L=g(A);if(L)return L.label;return A??_.unknown.label},D=(A)=>`\u05D4${U(A)}`,I=(A)=>{return(g(A)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"},j=(A)=>{if(!A)return null;return $[A]??null},N={regex:{label:"\u05E7\u05DC\u05D8",gender:"m"},email:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC",gender:"f"},url:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA",gender:"f"},emoji:{label:"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9",gender:"m"},uuid:{label:"UUID",gender:"m"},nanoid:{label:"nanoid",gender:"m"},guid:{label:"GUID",gender:"m"},cuid:{label:"cuid",gender:"m"},cuid2:{label:"cuid2",gender:"m"},ulid:{label:"ULID",gender:"m"},xid:{label:"XID",gender:"m"},ksuid:{label:"KSUID",gender:"m"},datetime:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA ISO",gender:"m"},time:{label:"\u05D6\u05DE\u05DF ISO",gender:"m"},duration:{label:"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO",gender:"m"},ipv4:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4",gender:"f"},ipv6:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6",gender:"f"},cidrv4:{label:"\u05D8\u05D5\u05D5\u05D7 IPv4",gender:"m"},cidrv6:{label:"\u05D8\u05D5\u05D5\u05D7 IPv6",gender:"m"},base64:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64",gender:"f"},base64url:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA",gender:"f"},json_string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON",gender:"f"},e164:{label:"\u05DE\u05E1\u05E4\u05E8 E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},includes:{label:"\u05E7\u05DC\u05D8",gender:"m"},lowercase:{label:"\u05E7\u05DC\u05D8",gender:"m"},starts_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},uppercase:{label:"\u05E7\u05DC\u05D8",gender:"m"}},O={nan:"NaN"};return(A)=>{switch(A.code){case"invalid_type":{let L=A.expected,z=O[L??""]??U(L),W=M(A.input),J=O[W]??_[W]?.label??W;if(/^[A-Z]/.test(A.expected))return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${A.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${J}`;return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${z}, \u05D4\u05EA\u05E7\u05D1\u05DC ${J}`}case"invalid_value":{if(A.values.length===1)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${F(A.values[0])}`;let L=A.values.map((J)=>F(J));if(A.values.length===2)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${L[0]} \u05D0\u05D5 ${L[1]}`;let z=L[L.length-1];return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${L.slice(0,-1).join(", ")} \u05D0\u05D5 ${z}`}case"too_big":{let L=j(A.origin),z=D(A.origin??"value");if(A.origin==="string")return`${L?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${A.maximum.toString()} ${L?.unit??""} ${A.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(A.origin==="number"){let P=A.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${A.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${A.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${P}`}if(A.origin==="array"||A.origin==="set"){let P=A.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",S=A.inclusive?`${A.maximum} ${L?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${A.maximum} ${L?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${z} ${P} \u05DC\u05D4\u05DB\u05D9\u05DC ${S}`.trim()}let W=A.inclusive?"<=":"<",J=I(A.origin??"value");if(L?.unit)return`${L.longLabel} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.maximum.toString()} ${L.unit}`;return`${L?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.maximum.toString()}`}case"too_small":{let L=j(A.origin),z=D(A.origin??"value");if(A.origin==="string")return`${L?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${A.minimum.toString()} ${L?.unit??""} ${A.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(A.origin==="number"){let P=A.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${A.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${A.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${P}`}if(A.origin==="array"||A.origin==="set"){let P=A.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(A.minimum===1&&A.inclusive){let X=A.origin==="set"?"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3":"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3";return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${z} ${P} \u05DC\u05D4\u05DB\u05D9\u05DC ${X}`}let S=A.inclusive?`${A.minimum} ${L?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${A.minimum} ${L?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${z} ${P} \u05DC\u05D4\u05DB\u05D9\u05DC ${S}`.trim()}let W=A.inclusive?">=":">",J=I(A.origin??"value");if(L?.unit)return`${L.shortLabel} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.minimum.toString()} ${L.unit}`;return`${L?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.minimum.toString()}`}case"invalid_format":{let L=A;if(L.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${L.prefix}"`;if(L.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${L.suffix}"`;if(L.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${L.includes}"`;if(L.format==="regex")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${L.pattern}`;let z=N[L.format],W=z?.label??L.format,P=(z?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${W} \u05DC\u05D0 ${P}`}case"not_multiple_of":return`\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${A.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${A.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${A.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${B(A.keys,", ")}`;case"invalid_key":return"\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8";case"invalid_union":return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";case"invalid_element":return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${D(A.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};var z5=w(()=>{c()});function TA(){return{localeError:RV()}}var RV=()=>{let _={string:{unit:"znakova",verb:"imati"},file:{unit:"bajtova",verb:"imati"},array:{unit:"stavki",verb:"imati"},set:{unit:"stavki",verb:"imati"}};function $(D){return _[D]??null}let g={regex:"unos",email:"email adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum i vrijeme",date:"ISO datum",time:"ISO vrijeme",duration:"ISO trajanje",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"IPv4 raspon",cidrv6:"IPv6 raspon",base64:"base64 kodirani tekst",base64url:"base64url kodirani tekst",json_string:"JSON tekst",e164:"E.164 broj",jwt:"JWT",template_literal:"unos"},U={nan:"NaN",string:"tekst",number:"broj",boolean:"boolean",array:"niz",object:"objekt",set:"skup",file:"datoteka",date:"datum",bigint:"bigint",symbol:"simbol",undefined:"undefined",null:"null",function:"funkcija",map:"mapa"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Neispravan unos: o\u010Dekuje se instanceof ${D.expected}, a primljeno je ${N}`;return`Neispravan unos: o\u010Dekuje se ${I}, a primljeno je ${N}`}case"invalid_value":if(D.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${F(D.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),N=U[D.origin]??D.origin;if(j)return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} ima ${I}${D.maximum.toString()} ${j.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} bude ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),N=U[D.origin]??D.origin;if(j)return`Premalo: o\u010Dekivano da ${N} ima ${I}${D.minimum.toString()} ${j.unit}`;return`Premalo: o\u010Dekivano da ${N} bude ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Neispravan tekst: mora zapo\u010Dinjati s "${I.prefix}"`;if(I.format==="ends_with")return`Neispravan tekst: mora zavr\u0161avati s "${I.suffix}"`;if(I.format==="includes")return`Neispravan tekst: mora sadr\u017Eavati "${I.includes}"`;if(I.format==="regex")return`Neispravan tekst: mora odgovarati uzorku ${I.pattern}`;return`Neispravna ${g[I.format]??D.format}`}case"not_multiple_of":return`Neispravan broj: mora biti vi\u0161ekratnik od ${D.divisor}`;case"unrecognized_keys":return`Neprepoznat${D.keys.length>1?"i klju\u010Devi":" klju\u010D"}: ${B(D.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${U[D.origin]??D.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${U[D.origin]??D.origin}`;default:return"Neispravan unos"}}};var S5=w(()=>{c()});function qA(){return{localeError:GV()}}var GV=()=>{let _={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function $(D){return _[D]??null}let g={regex:"bemenet",email:"email c\xEDm",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO id\u0151b\xE9lyeg",date:"ISO d\xE1tum",time:"ISO id\u0151",duration:"ISO id\u0151intervallum",ipv4:"IPv4 c\xEDm",ipv6:"IPv6 c\xEDm",cidrv4:"IPv4 tartom\xE1ny",cidrv6:"IPv6 tartom\xE1ny",base64:"base64-k\xF3dolt string",base64url:"base64url-k\xF3dolt string",json_string:"JSON string",e164:"E.164 sz\xE1m",jwt:"JWT",template_literal:"bemenet"},U={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${D.expected}, a kapott \xE9rt\xE9k ${N}`;return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${I}, a kapott \xE9rt\xE9k ${N}`}case"invalid_value":if(D.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${F(D.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`T\xFAl nagy: ${D.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${I}${D.maximum.toString()} ${j.unit??"elem"}`;return`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${D.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${D.origin} m\xE9rete t\xFAl kicsi ${I}${D.minimum.toString()} ${j.unit}`;return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${D.origin} t\xFAl kicsi ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\xC9rv\xE9nytelen string: "${I.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`;if(I.format==="ends_with")return`\xC9rv\xE9nytelen string: "${I.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`;if(I.format==="includes")return`\xC9rv\xE9nytelen string: "${I.includes}" \xE9rt\xE9ket kell tartalmaznia`;if(I.format==="regex")return`\xC9rv\xE9nytelen string: ${I.pattern} mint\xE1nak kell megfelelnie`;return`\xC9rv\xE9nytelen ${g[I.format]??D.format}`}case"not_multiple_of":return`\xC9rv\xE9nytelen sz\xE1m: ${D.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`\xC9rv\xE9nytelen kulcs ${D.origin}`;case"invalid_union":return"\xC9rv\xE9nytelen bemenet";case"invalid_element":return`\xC9rv\xE9nytelen \xE9rt\xE9k: ${D.origin}`;default:return"\xC9rv\xE9nytelen bemenet"}}};var W5=w(()=>{c()});function X5(_,$,g){return Math.abs(_)===1?$:g}function w0(_){if(!_)return"";let $=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],g=_[_.length-1];return _+($.includes(g)?"\u0576":"\u0568")}function BA(){return{localeError:YV()}}var YV=()=>{let _={string:{unit:{one:"\u0576\u0577\u0561\u0576",many:"\u0576\u0577\u0561\u0576\u0576\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},file:{unit:{one:"\u0562\u0561\u0575\u0569",many:"\u0562\u0561\u0575\u0569\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},array:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},set:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"}};function $(D){return _[D]??null}let g={regex:"\u0574\u0578\u0582\u057F\u0584",email:"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565",url:"URL",emoji:"\u0567\u0574\u0578\u057B\u056B",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574",date:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E",time:"ISO \u056A\u0561\u0574",duration:"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",ipv4:"IPv4 \u0570\u0561\u057D\u0581\u0565",ipv6:"IPv6 \u0570\u0561\u057D\u0581\u0565",cidrv4:"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",cidrv6:"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",base64:"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",base64url:"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",json_string:"JSON \u057F\u0578\u0572",e164:"E.164 \u0570\u0561\u0574\u0561\u0580",jwt:"JWT",template_literal:"\u0574\u0578\u0582\u057F\u0584"},U={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${D.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${N}`;return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${I}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${N}`}case"invalid_value":if(D.values.length===1)return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${F(D.values[1])}`;return`\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j){let N=Number(D.maximum),O=X5(N,j.unit.one,j.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${w0(D.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${I}${D.maximum.toString()} ${O}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${w0(D.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j){let N=Number(D.minimum),O=X5(N,j.unit.one,j.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${w0(D.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${I}${D.minimum.toString()} ${O}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${w0(D.origin)} \u056C\u056B\u0576\u056B ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${I.prefix}"-\u0578\u057E`;if(I.format==="ends_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${I.suffix}"-\u0578\u057E`;if(I.format==="includes")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${I.includes}"`;if(I.format==="regex")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${I.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;return`\u054D\u056D\u0561\u056C ${g[I.format]??D.format}`}case"not_multiple_of":return`\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${D.divisor}-\u056B`;case"unrecognized_keys":return`\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${D.keys.length>1?"\u0576\u0565\u0580":""}. ${B(D.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${w0(D.origin)}-\u0578\u0582\u0574`;case"invalid_union":return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574";case"invalid_element":return`\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${w0(D.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};var R5=w(()=>{c()});function KA(){return{localeError:QV()}}var QV=()=>{let _={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function $(D){return _[D]??null}let g={regex:"input",email:"alamat email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tanggal dan waktu format ISO",date:"tanggal format ISO",time:"jam format ISO",duration:"durasi format ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"rentang alamat IPv4",cidrv6:"rentang alamat IPv6",base64:"string dengan enkode base64",base64url:"string dengan enkode base64url",json_string:"string JSON",e164:"angka E.164",jwt:"JWT",template_literal:"input"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Input tidak valid: diharapkan instanceof ${D.expected}, diterima ${N}`;return`Input tidak valid: diharapkan ${I}, diterima ${N}`}case"invalid_value":if(D.values.length===1)return`Input tidak valid: diharapkan ${F(D.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Terlalu besar: diharapkan ${D.origin??"value"} memiliki ${I}${D.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: diharapkan ${D.origin??"value"} menjadi ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Terlalu kecil: diharapkan ${D.origin} memiliki ${I}${D.minimum.toString()} ${j.unit}`;return`Terlalu kecil: diharapkan ${D.origin} menjadi ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`String tidak valid: harus dimulai dengan "${I.prefix}"`;if(I.format==="ends_with")return`String tidak valid: harus berakhir dengan "${I.suffix}"`;if(I.format==="includes")return`String tidak valid: harus menyertakan "${I.includes}"`;if(I.format==="regex")return`String tidak valid: harus sesuai pola ${I.pattern}`;return`${g[I.format]??D.format} tidak valid`}case"not_multiple_of":return`Angka tidak valid: harus kelipatan dari ${D.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali ${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Kunci tidak valid di ${D.origin}`;case"invalid_union":return"Input tidak valid";case"invalid_element":return`Nilai tidak valid di ${D.origin}`;default:return"Input tidak valid"}}};var G5=w(()=>{c()});function VA(){return{localeError:TV()}}var TV=()=>{let _={string:{unit:"stafi",verb:"a\xF0 hafa"},file:{unit:"b\xE6ti",verb:"a\xF0 hafa"},array:{unit:"hluti",verb:"a\xF0 hafa"},set:{unit:"hluti",verb:"a\xF0 hafa"}};function $(D){return _[D]??null}let g={regex:"gildi",email:"netfang",url:"vefsl\xF3\xF0",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dagsetning og t\xEDmi",date:"ISO dagsetning",time:"ISO t\xEDmi",duration:"ISO t\xEDmalengd",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded strengur",base64url:"base64url-encoded strengur",json_string:"JSON strengur",e164:"E.164 t\xF6lugildi",jwt:"JWT",template_literal:"gildi"},U={nan:"NaN",number:"n\xFAmer",array:"fylki"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Rangt gildi: \xDE\xFA sl\xF3st inn ${N} \xFEar sem \xE1 a\xF0 vera instanceof ${D.expected}`;return`Rangt gildi: \xDE\xFA sl\xF3st inn ${N} \xFEar sem \xE1 a\xF0 vera ${I}`}case"invalid_value":if(D.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${F(D.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${D.origin??"gildi"} hafi ${I}${D.maximum.toString()} ${j.unit??"hluti"}`;return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${D.origin??"gildi"} s\xE9 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${D.origin} hafi ${I}${D.minimum.toString()} ${j.unit}`;return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${D.origin} s\xE9 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${I.prefix}"`;if(I.format==="ends_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${I.suffix}"`;if(I.format==="includes")return`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${I.includes}"`;if(I.format==="regex")return`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${I.pattern}`;return`Rangt ${g[I.format]??D.format}`}case"not_multiple_of":return`R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${D.divisor}`;case"unrecognized_keys":return`\xD3\xFEekkt ${D.keys.length>1?"ir lyklar":"ur lykill"}: ${B(D.keys,", ")}`;case"invalid_key":return`Rangur lykill \xED ${D.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi \xED ${D.origin}`;default:return"Rangt gildi"}}};var Y5=w(()=>{c()});function FA(){return{localeError:qV()}}var qV=()=>{let _={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function $(D){return _[D]??null}let g={regex:"input",email:"indirizzo email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e ora ISO",date:"data ISO",time:"ora ISO",duration:"durata ISO",ipv4:"indirizzo IPv4",ipv6:"indirizzo IPv6",cidrv4:"intervallo IPv4",cidrv6:"intervallo IPv6",base64:"stringa codificata in base64",base64url:"URL codificata in base64",json_string:"stringa JSON",e164:"numero E.164",jwt:"JWT",template_literal:"input"},U={nan:"NaN",number:"numero",array:"vettore"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Input non valido: atteso instanceof ${D.expected}, ricevuto ${N}`;return`Input non valido: atteso ${I}, ricevuto ${N}`}case"invalid_value":if(D.values.length===1)return`Input non valido: atteso ${F(D.values[0])}`;return`Opzione non valida: atteso uno tra ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Troppo grande: ${D.origin??"valore"} deve avere ${I}${D.maximum.toString()} ${j.unit??"elementi"}`;return`Troppo grande: ${D.origin??"valore"} deve essere ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Troppo piccolo: ${D.origin} deve avere ${I}${D.minimum.toString()} ${j.unit}`;return`Troppo piccolo: ${D.origin} deve essere ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Stringa non valida: deve iniziare con "${I.prefix}"`;if(I.format==="ends_with")return`Stringa non valida: deve terminare con "${I.suffix}"`;if(I.format==="includes")return`Stringa non valida: deve includere "${I.includes}"`;if(I.format==="regex")return`Stringa non valida: deve corrispondere al pattern ${I.pattern}`;return`Input non valido: ${g[I.format]??D.format}`}case"not_multiple_of":return`Numero non valido: deve essere un multiplo di ${D.divisor}`;case"unrecognized_keys":return`Chiav${D.keys.length>1?"i":"e"} non riconosciut${D.keys.length>1?"e":"a"}: ${B(D.keys,", ")}`;case"invalid_key":return`Chiave non valida in ${D.origin}`;case"invalid_union":return"Input non valido";case"invalid_element":return`Valore non valido in ${D.origin}`;default:return"Input non valido"}}};var Q5=w(()=>{c()});function MA(){return{localeError:BV()}}var BV=()=>{let _={string:{unit:"\u6587\u5B57",verb:"\u3067\u3042\u308B"},file:{unit:"\u30D0\u30A4\u30C8",verb:"\u3067\u3042\u308B"},array:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"},set:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"}};function $(D){return _[D]??null}let g={regex:"\u5165\u529B\u5024",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",url:"URL",emoji:"\u7D75\u6587\u5B57",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u6642",date:"ISO\u65E5\u4ED8",time:"ISO\u6642\u523B",duration:"ISO\u671F\u9593",ipv4:"IPv4\u30A2\u30C9\u30EC\u30B9",ipv6:"IPv6\u30A2\u30C9\u30EC\u30B9",cidrv4:"IPv4\u7BC4\u56F2",cidrv6:"IPv6\u7BC4\u56F2",base64:"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",base64url:"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",json_string:"JSON\u6587\u5B57\u5217",e164:"E.164\u756A\u53F7",jwt:"JWT",template_literal:"\u5165\u529B\u5024"},U={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u7121\u52B9\u306A\u5165\u529B: instanceof ${D.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${N}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u5165\u529B: ${I}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${N}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}case"invalid_value":if(D.values.length===1)return`\u7121\u52B9\u306A\u5165\u529B: ${F(D.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${B(D.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let I=D.inclusive?"\u4EE5\u4E0B\u3067\u3042\u308B":"\u3088\u308A\u5C0F\u3055\u3044",j=$(D.origin);if(j)return`\u5927\u304D\u3059\u304E\u308B\u5024: ${D.origin??"\u5024"}\u306F${D.maximum.toString()}${j.unit??"\u8981\u7D20"}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5927\u304D\u3059\u304E\u308B\u5024: ${D.origin??"\u5024"}\u306F${D.maximum.toString()}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let I=D.inclusive?"\u4EE5\u4E0A\u3067\u3042\u308B":"\u3088\u308A\u5927\u304D\u3044",j=$(D.origin);if(j)return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${D.origin}\u306F${D.minimum.toString()}${j.unit}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${D.origin}\u306F${D.minimum.toString()}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${I.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(I.format==="ends_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${I.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(I.format==="includes")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${I.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(I.format==="regex")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${I.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u7121\u52B9\u306A${g[I.format]??D.format}`}case"not_multiple_of":return`\u7121\u52B9\u306A\u6570\u5024: ${D.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"unrecognized_keys":return`\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${D.keys.length>1?"\u7FA4":""}: ${B(D.keys,"\u3001")}`;case"invalid_key":return`${D.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;case"invalid_union":return"\u7121\u52B9\u306A\u5165\u529B";case"invalid_element":return`${D.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;default:return"\u7121\u52B9\u306A\u5165\u529B"}}};var T5=w(()=>{c()});function ZA(){return{localeError:KV()}}var KV=()=>{let _={string:{unit:"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},file:{unit:"\u10D1\u10D0\u10D8\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},array:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},set:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"}};function $(D){return _[D]??null}let g={regex:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0",email:"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",url:"URL",emoji:"\u10D4\u10DB\u10DD\u10EF\u10D8",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD",date:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8",time:"\u10D3\u10E0\u10DD",duration:"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0",ipv4:"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",ipv6:"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",cidrv4:"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",cidrv6:"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",base64:"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",base64url:"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",json_string:"JSON \u10D5\u10D4\u10DA\u10D8",e164:"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8",jwt:"JWT",template_literal:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"},U={nan:"NaN",number:"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8",string:"\u10D5\u10D4\u10DA\u10D8",boolean:"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8",function:"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0",array:"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${D.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${N}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${I}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${N}`}case"invalid_value":if(D.values.length===1)return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${F(D.values[0])}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${B(D.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${D.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${j.verb} ${I}${D.maximum.toString()} ${j.unit}`;return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${D.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${D.origin} ${j.verb} ${I}${D.minimum.toString()} ${j.unit}`;return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${D.origin} \u10D8\u10E7\u10DD\u10E1 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${I.prefix}"-\u10D8\u10D7`;if(I.format==="ends_with")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${I.suffix}"-\u10D8\u10D7`;if(I.format==="includes")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${I.includes}"-\u10E1`;if(I.format==="regex")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${I.pattern}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${D.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;case"unrecognized_keys":return`\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${D.keys.length>1?"\u10D4\u10D1\u10D8":"\u10D8"}: ${B(D.keys,", ")}`;case"invalid_key":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${D.origin}-\u10E8\u10D8`;case"invalid_union":return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0";case"invalid_element":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${D.origin}-\u10E8\u10D8`;default:return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"}}};var q5=w(()=>{c()});function OD(){return{localeError:VV()}}var VV=()=>{let _={string:{unit:"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},file:{unit:"\u1794\u17C3",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},array:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},set:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"}};function $(D){return _[D]??null}let g={regex:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B",email:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B",url:"URL",emoji:"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO",date:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO",time:"\u1798\u17C9\u17C4\u1784 ISO",duration:"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO",ipv4:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",ipv6:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",cidrv4:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",cidrv6:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",base64:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64",base64url:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url",json_string:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON",e164:"\u179B\u17C1\u1781 E.164",jwt:"JWT",template_literal:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B"},U={nan:"NaN",number:"\u179B\u17C1\u1781",array:"\u17A2\u17B6\u179A\u17C1 (Array)",null:"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${D.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${N}`;return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${I} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${N}`}case"invalid_value":if(D.values.length===1)return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${F(D.values[0])}`;return`\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${D.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${I} ${D.maximum.toString()} ${j.unit??"\u1792\u17B6\u178F\u17BB"}`;return`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${D.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${I} ${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${D.origin} ${I} ${D.minimum.toString()} ${j.unit}`;return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${D.origin} ${I} ${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${I.prefix}"`;if(I.format==="ends_with")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${I.suffix}"`;if(I.format==="includes")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${I.includes}"`;if(I.format==="regex")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${I.pattern}`;return`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${D.divisor}`;case"unrecognized_keys":return`\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${B(D.keys,", ")}`;case"invalid_key":return`\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${D.origin}`;case"invalid_union":return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C";case"invalid_element":return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${D.origin}`;default:return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C"}}};var bA=w(()=>{c()});function HA(){return OD()}var B5=w(()=>{bA()});function kA(){return{localeError:FV()}}var FV=()=>{let _={string:{unit:"\uBB38\uC790",verb:"to have"},file:{unit:"\uBC14\uC774\uD2B8",verb:"to have"},array:{unit:"\uAC1C",verb:"to have"},set:{unit:"\uAC1C",verb:"to have"}};function $(D){return _[D]??null}let g={regex:"\uC785\uB825",email:"\uC774\uBA54\uC77C \uC8FC\uC18C",url:"URL",emoji:"\uC774\uBAA8\uC9C0",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \uB0A0\uC9DC\uC2DC\uAC04",date:"ISO \uB0A0\uC9DC",time:"ISO \uC2DC\uAC04",duration:"ISO \uAE30\uAC04",ipv4:"IPv4 \uC8FC\uC18C",ipv6:"IPv6 \uC8FC\uC18C",cidrv4:"IPv4 \uBC94\uC704",cidrv6:"IPv6 \uBC94\uC704",base64:"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",base64url:"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",json_string:"JSON \uBB38\uC790\uC5F4",e164:"E.164 \uBC88\uD638",jwt:"JWT",template_literal:"\uC785\uB825"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${D.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${N}\uC785\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${I}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${N}\uC785\uB2C8\uB2E4`}case"invalid_value":if(D.values.length===1)return`\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${F(D.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${B(D.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let I=D.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",j=I==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(D.origin),O=N?.unit??"\uC694\uC18C";if(N)return`${D.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${D.maximum.toString()}${O} ${I}${j}`;return`${D.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${D.maximum.toString()} ${I}${j}`}case"too_small":{let I=D.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",j=I==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(D.origin),O=N?.unit??"\uC694\uC18C";if(N)return`${D.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${D.minimum.toString()}${O} ${I}${j}`;return`${D.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${D.minimum.toString()} ${I}${j}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${I.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;if(I.format==="ends_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${I.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;if(I.format==="includes")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${I.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;if(I.format==="regex")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${I.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C ${g[I.format]??D.format}`}case"not_multiple_of":return`\uC798\uBABB\uB41C \uC22B\uC790: ${D.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"unrecognized_keys":return`\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${B(D.keys,", ")}`;case"invalid_key":return`\uC798\uBABB\uB41C \uD0A4: ${D.origin}`;case"invalid_union":return"\uC798\uBABB\uB41C \uC785\uB825";case"invalid_element":return`\uC798\uBABB\uB41C \uAC12: ${D.origin}`;default:return"\uC798\uBABB\uB41C \uC785\uB825"}}};var K5=w(()=>{c()});function V5(_){let $=Math.abs(_),g=$%10,U=$%100;if(U>=11&&U<=19||g===0)return"many";if(g===1)return"one";return"few"}function CA(){return{localeError:MV()}}var AD=(_)=>{return _.charAt(0).toUpperCase()+_.slice(1)},MV=()=>{let _={string:{unit:{one:"simbolis",few:"simboliai",many:"simboli\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne ilgesn\u0117 kaip",notInclusive:"turi b\u016Bti trumpesn\u0117 kaip"},bigger:{inclusive:"turi b\u016Bti ne trumpesn\u0117 kaip",notInclusive:"turi b\u016Bti ilgesn\u0117 kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"bait\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne didesnis kaip",notInclusive:"turi b\u016Bti ma\u017Eesnis kaip"},bigger:{inclusive:"turi b\u016Bti ne ma\u017Eesnis kaip",notInclusive:"turi b\u016Bti didesnis kaip"}}},array:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}},set:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}}};function $(D,I,j,N){let O=_[D]??null;if(O===null)return O;return{unit:O.unit[I],verb:O.verb[N][j?"inclusive":"notInclusive"]}}let g={regex:"\u012Fvestis",email:"el. pa\u0161to adresas",url:"URL",emoji:"jaustukas",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO data ir laikas",date:"ISO data",time:"ISO laikas",duration:"ISO trukm\u0117",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 u\u017Ekoduota eilut\u0117",base64url:"base64url u\u017Ekoduota eilut\u0117",json_string:"JSON eilut\u0117",e164:"E.164 numeris",jwt:"JWT",template_literal:"\u012Fvestis"},U={nan:"NaN",number:"skai\u010Dius",bigint:"sveikasis skai\u010Dius",string:"eilut\u0117",boolean:"login\u0117 reik\u0161m\u0117",undefined:"neapibr\u0117\u017Eta reik\u0161m\u0117",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulin\u0117 reik\u0161m\u0117"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Gautas tipas ${N}, o tik\u0117tasi - instanceof ${D.expected}`;return`Gautas tipas ${N}, o tik\u0117tasi - ${I}`}case"invalid_value":if(D.values.length===1)return`Privalo b\u016Bti ${F(D.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${B(D.values,"|")} pasirinkim\u0173`;case"too_big":{let I=U[D.origin]??D.origin,j=$(D.origin,V5(Number(D.maximum)),D.inclusive??!1,"smaller");if(j?.verb)return`${AD(I??D.origin??"reik\u0161m\u0117")} ${j.verb} ${D.maximum.toString()} ${j.unit??"element\u0173"}`;let N=D.inclusive?"ne didesnis kaip":"ma\u017Eesnis kaip";return`${AD(I??D.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${D.maximum.toString()} ${j?.unit}`}case"too_small":{let I=U[D.origin]??D.origin,j=$(D.origin,V5(Number(D.minimum)),D.inclusive??!1,"bigger");if(j?.verb)return`${AD(I??D.origin??"reik\u0161m\u0117")} ${j.verb} ${D.minimum.toString()} ${j.unit??"element\u0173"}`;let N=D.inclusive?"ne ma\u017Eesnis kaip":"didesnis kaip";return`${AD(I??D.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${D.minimum.toString()} ${j?.unit}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Eilut\u0117 privalo prasid\u0117ti "${I.prefix}"`;if(I.format==="ends_with")return`Eilut\u0117 privalo pasibaigti "${I.suffix}"`;if(I.format==="includes")return`Eilut\u0117 privalo \u012Ftraukti "${I.includes}"`;if(I.format==="regex")return`Eilut\u0117 privalo atitikti ${I.pattern}`;return`Neteisingas ${g[I.format]??D.format}`}case"not_multiple_of":return`Skai\u010Dius privalo b\u016Bti ${D.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpa\u017Eint${D.keys.length>1?"i":"as"} rakt${D.keys.length>1?"ai":"as"}: ${B(D.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let I=U[D.origin]??D.origin;return`${AD(I??D.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};var F5=w(()=>{c()});function rA(){return{localeError:ZV()}}var ZV=()=>{let _={string:{unit:"\u0437\u043D\u0430\u0446\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},file:{unit:"\u0431\u0430\u0458\u0442\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},array:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},set:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"}};function $(D){return _[D]??null}let g={regex:"\u0432\u043D\u0435\u0441",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430",url:"URL",emoji:"\u0435\u043C\u043E\u045F\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0443\u043C",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430",cidrv4:"IPv4 \u043E\u043F\u0441\u0435\u0433",cidrv6:"IPv6 \u043E\u043F\u0441\u0435\u0433",base64:"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",base64url:"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",json_string:"JSON \u043D\u0438\u0437\u0430",e164:"E.164 \u0431\u0440\u043E\u0458",jwt:"JWT",template_literal:"\u0432\u043D\u0435\u0441"},U={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${D.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`;return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${I}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`}case"invalid_value":if(D.values.length===1)return`Invalid input: expected ${F(D.values[0])}`;return`\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${D.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${I}${D.maximum.toString()} ${j.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`;return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${D.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${D.origin} \u0434\u0430 \u0438\u043C\u0430 ${I}${D.minimum.toString()} ${j.unit}`;return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${D.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${I.pattern}`;return`Invalid ${g[I.format]??D.format}`}case"not_multiple_of":return`\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${D.divisor}`;case"unrecognized_keys":return`${D.keys.length>1?"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438":"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${B(D.keys,", ")}`;case"invalid_key":return`\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${D.origin}`;case"invalid_union":return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441";case"invalid_element":return`\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${D.origin}`;default:return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"}}};var M5=w(()=>{c()});function vA(){return{localeError:bV()}}var bV=()=>{let _={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function $(D){return _[D]??null}let g={regex:"input",email:"alamat e-mel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tarikh masa ISO",date:"tarikh ISO",time:"masa ISO",duration:"tempoh ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"julat IPv4",cidrv6:"julat IPv6",base64:"string dikodkan base64",base64url:"string dikodkan base64url",json_string:"string JSON",e164:"nombor E.164",jwt:"JWT",template_literal:"input"},U={nan:"NaN",number:"nombor"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Input tidak sah: dijangka instanceof ${D.expected}, diterima ${N}`;return`Input tidak sah: dijangka ${I}, diterima ${N}`}case"invalid_value":if(D.values.length===1)return`Input tidak sah: dijangka ${F(D.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Terlalu besar: dijangka ${D.origin??"nilai"} ${j.verb} ${I}${D.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: dijangka ${D.origin??"nilai"} adalah ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Terlalu kecil: dijangka ${D.origin} ${j.verb} ${I}${D.minimum.toString()} ${j.unit}`;return`Terlalu kecil: dijangka ${D.origin} adalah ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`String tidak sah: mesti bermula dengan "${I.prefix}"`;if(I.format==="ends_with")return`String tidak sah: mesti berakhir dengan "${I.suffix}"`;if(I.format==="includes")return`String tidak sah: mesti mengandungi "${I.includes}"`;if(I.format==="regex")return`String tidak sah: mesti sepadan dengan corak ${I.pattern}`;return`${g[I.format]??D.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${D.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${B(D.keys,", ")}`;case"invalid_key":return`Kunci tidak sah dalam ${D.origin}`;case"invalid_union":return"Input tidak sah";case"invalid_element":return`Nilai tidak sah dalam ${D.origin}`;default:return"Input tidak sah"}}};var Z5=w(()=>{c()});function wA(){return{localeError:HV()}}var HV=()=>{let _={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function $(D){return _[D]??null}let g={regex:"invoer",email:"emailadres",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum en tijd",date:"ISO datum",time:"ISO tijd",duration:"ISO duur",ipv4:"IPv4-adres",ipv6:"IPv6-adres",cidrv4:"IPv4-bereik",cidrv6:"IPv6-bereik",base64:"base64-gecodeerde tekst",base64url:"base64 URL-gecodeerde tekst",json_string:"JSON string",e164:"E.164-nummer",jwt:"JWT",template_literal:"invoer"},U={nan:"NaN",number:"getal"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ongeldige invoer: verwacht instanceof ${D.expected}, ontving ${N}`;return`Ongeldige invoer: verwacht ${I}, ontving ${N}`}case"invalid_value":if(D.values.length===1)return`Ongeldige invoer: verwacht ${F(D.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),N=D.origin==="date"?"laat":D.origin==="string"?"lang":"groot";if(j)return`Te ${N}: verwacht dat ${D.origin??"waarde"} ${I}${D.maximum.toString()} ${j.unit??"elementen"} ${j.verb}`;return`Te ${N}: verwacht dat ${D.origin??"waarde"} ${I}${D.maximum.toString()} is`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),N=D.origin==="date"?"vroeg":D.origin==="string"?"kort":"klein";if(j)return`Te ${N}: verwacht dat ${D.origin} ${I}${D.minimum.toString()} ${j.unit} ${j.verb}`;return`Te ${N}: verwacht dat ${D.origin} ${I}${D.minimum.toString()} is`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Ongeldige tekst: moet met "${I.prefix}" beginnen`;if(I.format==="ends_with")return`Ongeldige tekst: moet op "${I.suffix}" eindigen`;if(I.format==="includes")return`Ongeldige tekst: moet "${I.includes}" bevatten`;if(I.format==="regex")return`Ongeldige tekst: moet overeenkomen met patroon ${I.pattern}`;return`Ongeldig: ${g[I.format]??D.format}`}case"not_multiple_of":return`Ongeldig getal: moet een veelvoud van ${D.divisor} zijn`;case"unrecognized_keys":return`Onbekende key${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Ongeldige key in ${D.origin}`;case"invalid_union":return"Ongeldige invoer";case"invalid_element":return`Ongeldige waarde in ${D.origin}`;default:return"Ongeldige invoer"}}};var b5=w(()=>{c()});function fA(){return{localeError:kV()}}var kV=()=>{let _={string:{unit:"tegn",verb:"\xE5 ha"},file:{unit:"bytes",verb:"\xE5 ha"},array:{unit:"elementer",verb:"\xE5 inneholde"},set:{unit:"elementer",verb:"\xE5 inneholde"}};function $(D){return _[D]??null}let g={regex:"input",email:"e-postadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslett",date:"ISO-dato",time:"ISO-klokkeslett",duration:"ISO-varighet",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spekter",cidrv6:"IPv6-spekter",base64:"base64-enkodet streng",base64url:"base64url-enkodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},U={nan:"NaN",number:"tall",array:"liste"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ugyldig input: forventet instanceof ${D.expected}, fikk ${N}`;return`Ugyldig input: forventet ${I}, fikk ${N}`}case"invalid_value":if(D.values.length===1)return`Ugyldig verdi: forventet ${F(D.values[0])}`;return`Ugyldig valg: forventet en av ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`For stor(t): forventet ${D.origin??"value"} til \xE5 ha ${I}${D.maximum.toString()} ${j.unit??"elementer"}`;return`For stor(t): forventet ${D.origin??"value"} til \xE5 ha ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`For lite(n): forventet ${D.origin} til \xE5 ha ${I}${D.minimum.toString()} ${j.unit}`;return`For lite(n): forventet ${D.origin} til \xE5 ha ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Ugyldig streng: m\xE5 starte med "${I.prefix}"`;if(I.format==="ends_with")return`Ugyldig streng: m\xE5 ende med "${I.suffix}"`;if(I.format==="includes")return`Ugyldig streng: m\xE5 inneholde "${I.includes}"`;if(I.format==="regex")return`Ugyldig streng: m\xE5 matche m\xF8nsteret ${I.pattern}`;return`Ugyldig ${g[I.format]??D.format}`}case"not_multiple_of":return`Ugyldig tall: m\xE5 v\xE6re et multiplum av ${D.divisor}`;case"unrecognized_keys":return`${D.keys.length>1?"Ukjente n\xF8kler":"Ukjent n\xF8kkel"}: ${B(D.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8kkel i ${D.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${D.origin}`;default:return"Ugyldig input"}}};var H5=w(()=>{c()});function uA(){return{localeError:CV()}}var CV=()=>{let _={string:{unit:"harf",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"unsur",verb:"olmal\u0131d\u0131r"},set:{unit:"unsur",verb:"olmal\u0131d\u0131r"}};function $(D){return _[D]??null}let g={regex:"giren",email:"epostag\xE2h",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO heng\xE2m\u0131",date:"ISO tarihi",time:"ISO zaman\u0131",duration:"ISO m\xFCddeti",ipv4:"IPv4 ni\u015F\xE2n\u0131",ipv6:"IPv6 ni\u015F\xE2n\u0131",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-\u015Fifreli metin",base64url:"base64url-\u015Fifreli metin",json_string:"JSON metin",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"giren"},U={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`F\xE2sit giren: umulan instanceof ${D.expected}, al\u0131nan ${N}`;return`F\xE2sit giren: umulan ${I}, al\u0131nan ${N}`}case"invalid_value":if(D.values.length===1)return`F\xE2sit giren: umulan ${F(D.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Fazla b\xFCy\xFCk: ${D.origin??"value"}, ${I}${D.maximum.toString()} ${j.unit??"elements"} sahip olmal\u0131yd\u0131.`;return`Fazla b\xFCy\xFCk: ${D.origin??"value"}, ${I}${D.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Fazla k\xFC\xE7\xFCk: ${D.origin}, ${I}${D.minimum.toString()} ${j.unit} sahip olmal\u0131yd\u0131.`;return`Fazla k\xFC\xE7\xFCk: ${D.origin}, ${I}${D.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`F\xE2sit metin: "${I.prefix}" ile ba\u015Flamal\u0131.`;if(I.format==="ends_with")return`F\xE2sit metin: "${I.suffix}" ile bitmeli.`;if(I.format==="includes")return`F\xE2sit metin: "${I.includes}" ihtiv\xE2 etmeli.`;if(I.format==="regex")return`F\xE2sit metin: ${I.pattern} nak\u015F\u0131na uymal\u0131.`;return`F\xE2sit ${g[I.format]??D.format}`}case"not_multiple_of":return`F\xE2sit say\u0131: ${D.divisor} kat\u0131 olmal\u0131yd\u0131.`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar ${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`${D.origin} i\xE7in tan\u0131nmayan anahtar var.`;case"invalid_union":return"Giren tan\u0131namad\u0131.";case"invalid_element":return`${D.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`;default:return"K\u0131ymet tan\u0131namad\u0131."}}};var k5=w(()=>{c()});function xA(){return{localeError:rV()}}var rV=()=>{let _={string:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},file:{unit:"\u0628\u0627\u06CC\u067C\u0633",verb:"\u0648\u0644\u0631\u064A"},array:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},set:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"}};function $(D){return _[D]??null}let g={regex:"\u0648\u0631\u0648\u062F\u064A",email:"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9",url:"\u06CC\u0648 \u0622\u0631 \u0627\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A",date:"\u0646\u06D0\u067C\u0647",time:"\u0648\u062E\u062A",duration:"\u0645\u0648\u062F\u0647",ipv4:"\u062F IPv4 \u067E\u062A\u0647",ipv6:"\u062F IPv6 \u067E\u062A\u0647",cidrv4:"\u062F IPv4 \u0633\u0627\u062D\u0647",cidrv6:"\u062F IPv6 \u0633\u0627\u062D\u0647",base64:"base64-encoded \u0645\u062A\u0646",base64url:"base64url-encoded \u0645\u062A\u0646",json_string:"JSON \u0645\u062A\u0646",e164:"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u064A"},U={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${D.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${N} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${I} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${N} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`}case"invalid_value":if(D.values.length===1)return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${F(D.values[0])} \u0648\u0627\u06CC`;return`\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${B(D.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${D.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${I}${D.maximum.toString()} ${j.unit??"\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${D.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${I}${D.maximum.toString()} \u0648\u064A`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${D.origin} \u0628\u0627\u06CC\u062F ${I}${D.minimum.toString()} ${j.unit} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${D.origin} \u0628\u0627\u06CC\u062F ${I}${D.minimum.toString()} \u0648\u064A`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${I.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;if(I.format==="ends_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${I.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;if(I.format==="includes")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${I.includes}" \u0648\u0644\u0631\u064A`;if(I.format==="regex")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${I.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;return`${g[I.format]??D.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`}case"not_multiple_of":return`\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${D.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;case"unrecognized_keys":return`\u0646\u0627\u0633\u0645 ${D.keys.length>1?"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647":"\u06A9\u0644\u06CC\u0689"}: ${B(D.keys,", ")}`;case"invalid_key":return`\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${D.origin} \u06A9\u06D0`;case"invalid_union":return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A";case"invalid_element":return`\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${D.origin} \u06A9\u06D0`;default:return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A"}}};var C5=w(()=>{c()});function yA(){return{localeError:vV()}}var vV=()=>{let _={string:{unit:"znak\xF3w",verb:"mie\u0107"},file:{unit:"bajt\xF3w",verb:"mie\u0107"},array:{unit:"element\xF3w",verb:"mie\u0107"},set:{unit:"element\xF3w",verb:"mie\u0107"}};function $(D){return _[D]??null}let g={regex:"wyra\u017Cenie",email:"adres email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i godzina w formacie ISO",date:"data w formacie ISO",time:"godzina w formacie ISO",duration:"czas trwania ISO",ipv4:"adres IPv4",ipv6:"adres IPv6",cidrv4:"zakres IPv4",cidrv6:"zakres IPv6",base64:"ci\u0105g znak\xF3w zakodowany w formacie base64",base64url:"ci\u0105g znak\xF3w zakodowany w formacie base64url",json_string:"ci\u0105g znak\xF3w w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wej\u015Bcie"},U={nan:"NaN",number:"liczba",array:"tablica"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${D.expected}, otrzymano ${N}`;return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${I}, otrzymano ${N}`}case"invalid_value":if(D.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${F(D.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${D.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${I}${D.maximum.toString()} ${j.unit??"element\xF3w"}`;return`Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${D.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${D.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${I}${D.minimum.toString()} ${j.unit??"element\xF3w"}`;return`Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${D.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${I.prefix}"`;if(I.format==="ends_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${I.suffix}"`;if(I.format==="includes")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${I.includes}"`;if(I.format==="regex")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${I.pattern}`;return`Nieprawid\u0142ow(y/a/e) ${g[I.format]??D.format}`}case"not_multiple_of":return`Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${D.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Nieprawid\u0142owy klucz w ${D.origin}`;case"invalid_union":return"Nieprawid\u0142owe dane wej\u015Bciowe";case"invalid_element":return`Nieprawid\u0142owa warto\u015B\u0107 w ${D.origin}`;default:return"Nieprawid\u0142owe dane wej\u015Bciowe"}}};var r5=w(()=>{c()});function hA(){return{localeError:wV()}}var wV=()=>{let _={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function $(D){return _[D]??null}let g={regex:"padr\xE3o",email:"endere\xE7o de e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e hora ISO",date:"data ISO",time:"hora ISO",duration:"dura\xE7\xE3o ISO",ipv4:"endere\xE7o IPv4",ipv6:"endere\xE7o IPv6",cidrv4:"faixa de IPv4",cidrv6:"faixa de IPv6",base64:"texto codificado em base64",base64url:"URL codificada em base64",json_string:"texto JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},U={nan:"NaN",number:"n\xFAmero",null:"nulo"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Tipo inv\xE1lido: esperado instanceof ${D.expected}, recebido ${N}`;return`Tipo inv\xE1lido: esperado ${I}, recebido ${N}`}case"invalid_value":if(D.values.length===1)return`Entrada inv\xE1lida: esperado ${F(D.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Muito grande: esperado que ${D.origin??"valor"} tivesse ${I}${D.maximum.toString()} ${j.unit??"elementos"}`;return`Muito grande: esperado que ${D.origin??"valor"} fosse ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Muito pequeno: esperado que ${D.origin} tivesse ${I}${D.minimum.toString()} ${j.unit}`;return`Muito pequeno: esperado que ${D.origin} fosse ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Texto inv\xE1lido: deve come\xE7ar com "${I.prefix}"`;if(I.format==="ends_with")return`Texto inv\xE1lido: deve terminar com "${I.suffix}"`;if(I.format==="includes")return`Texto inv\xE1lido: deve incluir "${I.includes}"`;if(I.format==="regex")return`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${I.pattern}`;return`${g[I.format]??D.format} inv\xE1lido`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${D.divisor}`;case"unrecognized_keys":return`Chave${D.keys.length>1?"s":""} desconhecida${D.keys.length>1?"s":""}: ${B(D.keys,", ")}`;case"invalid_key":return`Chave inv\xE1lida em ${D.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido em ${D.origin}`;default:return"Campo inv\xE1lido"}}};var v5=w(()=>{c()});function cA(){return{localeError:fV()}}var fV=()=>{let _={string:{unit:"caractere",verb:"s\u0103 aib\u0103"},file:{unit:"octe\u021Bi",verb:"s\u0103 aib\u0103"},array:{unit:"elemente",verb:"s\u0103 aib\u0103"},set:{unit:"elemente",verb:"s\u0103 aib\u0103"},map:{unit:"intr\u0103ri",verb:"s\u0103 aib\u0103"}};function $(D){return _[D]??null}let g={regex:"intrare",email:"adres\u0103 de email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"dat\u0103 \u0219i or\u0103 ISO",date:"dat\u0103 ISO",time:"or\u0103 ISO",duration:"durat\u0103 ISO",ipv4:"adres\u0103 IPv4",ipv6:"adres\u0103 IPv6",mac:"adres\u0103 MAC",cidrv4:"interval IPv4",cidrv6:"interval IPv6",base64:"\u0219ir codat base64",base64url:"\u0219ir codat base64url",json_string:"\u0219ir JSON",e164:"num\u0103r E.164",jwt:"JWT",template_literal:"intrare"},U={nan:"NaN",string:"\u0219ir",number:"num\u0103r",boolean:"boolean",function:"func\u021Bie",array:"matrice",object:"obiect",undefined:"nedefinit",symbol:"simbol",bigint:"num\u0103r mare",void:"void",never:"never",map:"hart\u0103",set:"set"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;return`Intrare invalid\u0103: a\u0219teptat ${I}, primit ${N}`}case"invalid_value":if(D.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${F(D.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Prea mare: a\u0219teptat ca ${D.origin??"valoarea"} ${j.verb} ${I}${D.maximum.toString()} ${j.unit??"elemente"}`;return`Prea mare: a\u0219teptat ca ${D.origin??"valoarea"} s\u0103 fie ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Prea mic: a\u0219teptat ca ${D.origin} ${j.verb} ${I}${D.minimum.toString()} ${j.unit}`;return`Prea mic: a\u0219teptat ca ${D.origin} s\u0103 fie ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${I.prefix}"`;if(I.format==="ends_with")return`\u0218ir invalid: trebuie s\u0103 se termine cu "${I.suffix}"`;if(I.format==="includes")return`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${I.includes}"`;if(I.format==="regex")return`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${I.pattern}`;return`Format invalid: ${g[I.format]??D.format}`}case"not_multiple_of":return`Num\u0103r invalid: trebuie s\u0103 fie multiplu de ${D.divisor}`;case"unrecognized_keys":return`Chei nerecunoscute: ${B(D.keys,", ")}`;case"invalid_key":return`Cheie invalid\u0103 \xEEn ${D.origin}`;case"invalid_union":return"Intrare invalid\u0103";case"invalid_element":return`Valoare invalid\u0103 \xEEn ${D.origin}`;default:return"Intrare invalid\u0103"}}};var w5=w(()=>{c()});function f5(_,$,g,U){let D=Math.abs(_),I=D%10,j=D%100;if(j>=11&&j<=19)return U;if(I===1)return $;if(I>=2&&I<=4)return g;return U}function nA(){return{localeError:uV()}}var uV=()=>{let _={string:{unit:{one:"\u0441\u0438\u043C\u0432\u043E\u043B",few:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",many:"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u0430",many:"\u0431\u0430\u0439\u0442"},verb:"\u0438\u043C\u0435\u0442\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"}};function $(D){return _[D]??null}let g={regex:"\u0432\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u044F",duration:"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64",base64url:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url",json_string:"JSON \u0441\u0442\u0440\u043E\u043A\u0430",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0432\u043E\u0434"},U={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${D.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${N}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${I}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${N}`}case"invalid_value":if(D.values.length===1)return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${F(D.values[0])}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j){let N=Number(D.maximum),O=f5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${D.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${I}${D.maximum.toString()} ${O}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${D.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j){let N=Number(D.minimum),O=f5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${D.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${I}${D.minimum.toString()} ${O}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${D.origin} \u0431\u0443\u0434\u0435\u0442 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${I.pattern}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${D.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${D.keys.length>1?"\u044B\u0435":"\u044B\u0439"} \u043A\u043B\u044E\u0447${D.keys.length>1?"\u0438":""}: ${B(D.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${D.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435";case"invalid_element":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${D.origin}`;default:return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"}}};var u5=w(()=>{c()});function dA(){return{localeError:xV()}}var xV=()=>{let _={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function $(D){return _[D]??null}let g={regex:"vnos",email:"e-po\u0161tni naslov",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum in \u010Das",date:"ISO datum",time:"ISO \u010Das",duration:"ISO trajanje",ipv4:"IPv4 naslov",ipv6:"IPv6 naslov",cidrv4:"obseg IPv4",cidrv6:"obseg IPv6",base64:"base64 kodiran niz",base64url:"base64url kodiran niz",json_string:"JSON niz",e164:"E.164 \u0161tevilka",jwt:"JWT",template_literal:"vnos"},U={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Neveljaven vnos: pri\u010Dakovano instanceof ${D.expected}, prejeto ${N}`;return`Neveljaven vnos: pri\u010Dakovano ${I}, prejeto ${N}`}case"invalid_value":if(D.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${F(D.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Preveliko: pri\u010Dakovano, da bo ${D.origin??"vrednost"} imelo ${I}${D.maximum.toString()} ${j.unit??"elementov"}`;return`Preveliko: pri\u010Dakovano, da bo ${D.origin??"vrednost"} ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Premajhno: pri\u010Dakovano, da bo ${D.origin} imelo ${I}${D.minimum.toString()} ${j.unit}`;return`Premajhno: pri\u010Dakovano, da bo ${D.origin} ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Neveljaven niz: mora se za\u010Deti z "${I.prefix}"`;if(I.format==="ends_with")return`Neveljaven niz: mora se kon\u010Dati z "${I.suffix}"`;if(I.format==="includes")return`Neveljaven niz: mora vsebovati "${I.includes}"`;if(I.format==="regex")return`Neveljaven niz: mora ustrezati vzorcu ${I.pattern}`;return`Neveljaven ${g[I.format]??D.format}`}case"not_multiple_of":return`Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${D.divisor}`;case"unrecognized_keys":return`Neprepoznan${D.keys.length>1?"i klju\u010Di":" klju\u010D"}: ${B(D.keys,", ")}`;case"invalid_key":return`Neveljaven klju\u010D v ${D.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${D.origin}`;default:return"Neveljaven vnos"}}};var x5=w(()=>{c()});function mA(){return{localeError:yV()}}var yV=()=>{let _={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att inneh\xE5lla"},set:{unit:"objekt",verb:"att inneh\xE5lla"}};function $(D){return _[D]??null}let g={regex:"regulj\xE4rt uttryck",email:"e-postadress",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datum och tid",date:"ISO-datum",time:"ISO-tid",duration:"ISO-varaktighet",ipv4:"IPv4-intervall",ipv6:"IPv6-intervall",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodad str\xE4ng",base64url:"base64url-kodad str\xE4ng",json_string:"JSON-str\xE4ng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"},U={nan:"NaN",number:"antal",array:"lista"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${D.expected}, fick ${N}`;return`Ogiltig inmatning: f\xF6rv\xE4ntat ${I}, fick ${N}`}case"invalid_value":if(D.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${F(D.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`F\xF6r stor(t): f\xF6rv\xE4ntade ${D.origin??"v\xE4rdet"} att ha ${I}${D.maximum.toString()} ${j.unit??"element"}`;return`F\xF6r stor(t): f\xF6rv\xE4ntat ${D.origin??"v\xE4rdet"} att ha ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`F\xF6r lite(t): f\xF6rv\xE4ntade ${D.origin??"v\xE4rdet"} att ha ${I}${D.minimum.toString()} ${j.unit}`;return`F\xF6r lite(t): f\xF6rv\xE4ntade ${D.origin??"v\xE4rdet"} att ha ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${I.prefix}"`;if(I.format==="ends_with")return`Ogiltig str\xE4ng: m\xE5ste sluta med "${I.suffix}"`;if(I.format==="includes")return`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${I.includes}"`;if(I.format==="regex")return`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${I.pattern}"`;return`Ogiltig(t) ${g[I.format]??D.format}`}case"not_multiple_of":return`Ogiltigt tal: m\xE5ste vara en multipel av ${D.divisor}`;case"unrecognized_keys":return`${D.keys.length>1?"Ok\xE4nda nycklar":"Ok\xE4nd nyckel"}: ${B(D.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${D.origin??"v\xE4rdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt v\xE4rde i ${D.origin??"v\xE4rdet"}`;default:return"Ogiltig input"}}};var y5=w(()=>{c()});function iA(){return{localeError:hV()}}var hV=()=>{let _={string:{unit:"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},file:{unit:"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},array:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},set:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"}};function $(D){return _[D]??null}let g={regex:"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1",email:"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",date:"ISO \u0BA4\u0BC7\u0BA4\u0BBF",time:"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",duration:"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1",ipv4:"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",ipv6:"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",cidrv4:"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",cidrv6:"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",base64:"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD",base64url:"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD",json_string:"JSON \u0B9A\u0BB0\u0BAE\u0BCD",e164:"E.164 \u0B8E\u0BA3\u0BCD",jwt:"JWT",template_literal:"input"},U={nan:"NaN",number:"\u0B8E\u0BA3\u0BCD",array:"\u0B85\u0BA3\u0BBF",null:"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${D.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${N}`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${I}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${N}`}case"invalid_value":if(D.values.length===1)return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${F(D.values[0])}`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${B(D.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${D.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${I}${D.maximum.toString()} ${j.unit??"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${D.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${I}${D.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${D.origin} ${I}${D.minimum.toString()} ${j.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${D.origin} ${I}${D.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${I.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(I.format==="ends_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${I.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(I.format==="includes")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${I.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(I.format==="regex")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${I.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${D.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;case"unrecognized_keys":return`\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${D.keys.length>1?"\u0B95\u0BB3\u0BCD":""}: ${B(D.keys,", ")}`;case"invalid_key":return`${D.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;case"invalid_union":return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1";case"invalid_element":return`${D.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;default:return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"}}};var h5=w(()=>{c()});function lA(){return{localeError:cV()}}var cV=()=>{let _={string:{unit:"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},file:{unit:"\u0E44\u0E1A\u0E15\u0E4C",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},array:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},set:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"}};function $(D){return _[D]??null}let g={regex:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19",email:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25",url:"URL",emoji:"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",date:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO",time:"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",duration:"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",ipv4:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4",ipv6:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6",cidrv4:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4",cidrv6:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6",base64:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64",base64url:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL",json_string:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON",e164:"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)",jwt:"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT",template_literal:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19"},U={nan:"NaN",number:"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02",array:"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)",null:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${D.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${N}`;return`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${I} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${N}`}case"invalid_value":if(D.values.length===1)return`\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${F(D.values[0])}`;return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19":"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",j=$(D.origin);if(j)return`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${D.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${D.maximum.toString()} ${j.unit??"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`;return`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${D.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22":"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",j=$(D.origin);if(j)return`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${D.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${D.minimum.toString()} ${j.unit}`;return`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${D.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${I.prefix}"`;if(I.format==="ends_with")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${I.suffix}"`;if(I.format==="includes")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${I.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;if(I.format==="regex")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${I.pattern}`;return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${g[I.format]??D.format}`}case"not_multiple_of":return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${D.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;case"unrecognized_keys":return`\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${B(D.keys,", ")}`;case"invalid_key":return`\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${D.origin}`;case"invalid_union":return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49";case"invalid_element":return`\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${D.origin}`;default:return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07"}}};var c5=w(()=>{c()});function tA(){return{localeError:nV()}}var nV=()=>{let _={string:{unit:"karakter",verb:"olmal\u0131"},file:{unit:"bayt",verb:"olmal\u0131"},array:{unit:"\xF6\u011Fe",verb:"olmal\u0131"},set:{unit:"\xF6\u011Fe",verb:"olmal\u0131"}};function $(D){return _[D]??null}let g={regex:"girdi",email:"e-posta adresi",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO tarih ve saat",date:"ISO tarih",time:"ISO saat",duration:"ISO s\xFCre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aral\u0131\u011F\u0131",cidrv6:"IPv6 aral\u0131\u011F\u0131",base64:"base64 ile \u015Fifrelenmi\u015F metin",base64url:"base64url ile \u015Fifrelenmi\u015F metin",json_string:"JSON dizesi",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"\u015Eablon dizesi"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ge\xE7ersiz de\u011Fer: beklenen instanceof ${D.expected}, al\u0131nan ${N}`;return`Ge\xE7ersiz de\u011Fer: beklenen ${I}, al\u0131nan ${N}`}case"invalid_value":if(D.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${F(D.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\xC7ok b\xFCy\xFCk: beklenen ${D.origin??"de\u011Fer"} ${I}${D.maximum.toString()} ${j.unit??"\xF6\u011Fe"}`;return`\xC7ok b\xFCy\xFCk: beklenen ${D.origin??"de\u011Fer"} ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\xC7ok k\xFC\xE7\xFCk: beklenen ${D.origin} ${I}${D.minimum.toString()} ${j.unit}`;return`\xC7ok k\xFC\xE7\xFCk: beklenen ${D.origin} ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Ge\xE7ersiz metin: "${I.prefix}" ile ba\u015Flamal\u0131`;if(I.format==="ends_with")return`Ge\xE7ersiz metin: "${I.suffix}" ile bitmeli`;if(I.format==="includes")return`Ge\xE7ersiz metin: "${I.includes}" i\xE7ermeli`;if(I.format==="regex")return`Ge\xE7ersiz metin: ${I.pattern} desenine uymal\u0131`;return`Ge\xE7ersiz ${g[I.format]??D.format}`}case"not_multiple_of":return`Ge\xE7ersiz say\u0131: ${D.divisor} ile tam b\xF6l\xFCnebilmeli`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar${D.keys.length>1?"lar":""}: ${B(D.keys,", ")}`;case"invalid_key":return`${D.origin} i\xE7inde ge\xE7ersiz anahtar`;case"invalid_union":return"Ge\xE7ersiz de\u011Fer";case"invalid_element":return`${D.origin} i\xE7inde ge\xE7ersiz de\u011Fer`;default:return"Ge\xE7ersiz de\u011Fer"}}};var n5=w(()=>{c()});function LD(){return{localeError:dV()}}var dV=()=>{let _={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},file:{unit:"\u0431\u0430\u0439\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"}};function $(D){return _[D]??null}let g={regex:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO",date:"\u0434\u0430\u0442\u0430 ISO",time:"\u0447\u0430\u0441 ISO",duration:"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO",ipv4:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4",ipv6:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6",cidrv4:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4",cidrv6:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6",base64:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64",base64url:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url",json_string:"\u0440\u044F\u0434\u043E\u043A JSON",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"},U={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${D.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${N}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${I}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${N}`}case"invalid_value":if(D.values.length===1)return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${F(D.values[0])}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${D.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${j.verb} ${I}${D.maximum.toString()} ${j.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`;return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${D.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${D.origin} ${j.verb} ${I}${D.minimum.toString()} ${j.unit}`;return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${D.origin} \u0431\u0443\u0434\u0435 ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${I.pattern}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${D.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${D.keys.length>1?"\u0456":""}: ${B(D.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${D.origin}`;case"invalid_union":return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456";case"invalid_element":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${D.origin}`;default:return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"}}};var oA=w(()=>{c()});function pA(){return LD()}var d5=w(()=>{oA()});function eA(){return{localeError:mV()}}var mV=()=>{let _={string:{unit:"\u062D\u0631\u0648\u0641",verb:"\u06C1\u0648\u0646\u0627"},file:{unit:"\u0628\u0627\u0626\u0679\u0633",verb:"\u06C1\u0648\u0646\u0627"},array:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"},set:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"}};function $(D){return _[D]??null}let g={regex:"\u0627\u0646 \u067E\u0679",email:"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633",url:"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",uuidv4:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4",uuidv6:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6",nanoid:"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC",guid:"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid2:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2",ulid:"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC",xid:"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC",ksuid:"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",datetime:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645",date:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E",time:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A",duration:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A",ipv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633",ipv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633",cidrv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C",cidrv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C",base64:"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",base64url:"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",json_string:"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF",e164:"\u0627\u06CC 164 \u0646\u0645\u0628\u0631",jwt:"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC",template_literal:"\u0627\u0646 \u067E\u0679"},U={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${D.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${N} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${I} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${N} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}case"invalid_value":if(D.values.length===1)return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${F(D.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${B(D.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${D.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${I}${D.maximum.toString()} ${j.unit??"\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${D.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${I}${D.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${D.origin} \u06A9\u06D2 ${I}${D.minimum.toString()} ${j.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${D.origin} \u06A9\u0627 ${I}${D.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${I.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(I.format==="ends_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${I.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(I.format==="includes")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${I.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(I.format==="regex")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${I.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;return`\u063A\u0644\u0637 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${D.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;case"unrecognized_keys":return`\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${D.keys.length>1?"\u0632":""}: ${B(D.keys,"\u060C ")}`;case"invalid_key":return`${D.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;case"invalid_union":return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679";case"invalid_element":return`${D.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;default:return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"}}};var m5=w(()=>{c()});function aA(){return{localeError:iV()}}var iV=()=>{let _={string:{unit:"belgi",verb:"bo\u2018lishi kerak"},file:{unit:"bayt",verb:"bo\u2018lishi kerak"},array:{unit:"element",verb:"bo\u2018lishi kerak"},set:{unit:"element",verb:"bo\u2018lishi kerak"},map:{unit:"yozuv",verb:"bo\u2018lishi kerak"}};function $(D){return _[D]??null}let g={regex:"kirish",email:"elektron pochta manzili",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO sana va vaqti",date:"ISO sana",time:"ISO vaqt",duration:"ISO davomiylik",ipv4:"IPv4 manzil",ipv6:"IPv6 manzil",mac:"MAC manzil",cidrv4:"IPv4 diapazon",cidrv6:"IPv6 diapazon",base64:"base64 kodlangan satr",base64url:"base64url kodlangan satr",json_string:"JSON satr",e164:"E.164 raqam",jwt:"JWT",template_literal:"kirish"},U={nan:"NaN",number:"raqam",array:"massiv"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Noto\u2018g\u2018ri kirish: kutilgan instanceof ${D.expected}, qabul qilingan ${N}`;return`Noto\u2018g\u2018ri kirish: kutilgan ${I}, qabul qilingan ${N}`}case"invalid_value":if(D.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${F(D.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Juda katta: kutilgan ${D.origin??"qiymat"} ${I}${D.maximum.toString()} ${j.unit} ${j.verb}`;return`Juda katta: kutilgan ${D.origin??"qiymat"} ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Juda kichik: kutilgan ${D.origin} ${I}${D.minimum.toString()} ${j.unit} ${j.verb}`;return`Juda kichik: kutilgan ${D.origin} ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Noto\u2018g\u2018ri satr: "${I.prefix}" bilan boshlanishi kerak`;if(I.format==="ends_with")return`Noto\u2018g\u2018ri satr: "${I.suffix}" bilan tugashi kerak`;if(I.format==="includes")return`Noto\u2018g\u2018ri satr: "${I.includes}" ni o\u2018z ichiga olishi kerak`;if(I.format==="regex")return`Noto\u2018g\u2018ri satr: ${I.pattern} shabloniga mos kelishi kerak`;return`Noto\u2018g\u2018ri ${g[I.format]??D.format}`}case"not_multiple_of":return`Noto\u2018g\u2018ri raqam: ${D.divisor} ning karralisi bo\u2018lishi kerak`;case"unrecognized_keys":return`Noma\u2019lum kalit${D.keys.length>1?"lar":""}: ${B(D.keys,", ")}`;case"invalid_key":return`${D.origin} dagi kalit noto\u2018g\u2018ri`;case"invalid_union":return"Noto\u2018g\u2018ri kirish";case"invalid_element":return`${D.origin} da noto\u2018g\u2018ri qiymat`;default:return"Noto\u2018g\u2018ri kirish"}}};var i5=w(()=>{c()});function sA(){return{localeError:lV()}}var lV=()=>{let _={string:{unit:"k\xFD t\u1EF1",verb:"c\xF3"},file:{unit:"byte",verb:"c\xF3"},array:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"},set:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"}};function $(D){return _[D]??null}let g={regex:"\u0111\u1EA7u v\xE0o",email:"\u0111\u1ECBa ch\u1EC9 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ng\xE0y gi\u1EDD ISO",date:"ng\xE0y ISO",time:"gi\u1EDD ISO",duration:"kho\u1EA3ng th\u1EDDi gian ISO",ipv4:"\u0111\u1ECBa ch\u1EC9 IPv4",ipv6:"\u0111\u1ECBa ch\u1EC9 IPv6",cidrv4:"d\u1EA3i IPv4",cidrv6:"d\u1EA3i IPv6",base64:"chu\u1ED7i m\xE3 h\xF3a base64",base64url:"chu\u1ED7i m\xE3 h\xF3a base64url",json_string:"chu\u1ED7i JSON",e164:"s\u1ED1 E.164",jwt:"JWT",template_literal:"\u0111\u1EA7u v\xE0o"},U={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${D.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${N}`;return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${I}, nh\u1EADn \u0111\u01B0\u1EE3c ${N}`}case"invalid_value":if(D.values.length===1)return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${F(D.values[0])}`;return`T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${D.origin??"gi\xE1 tr\u1ECB"} ${j.verb} ${I}${D.maximum.toString()} ${j.unit??"ph\u1EA7n t\u1EED"}`;return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${D.origin??"gi\xE1 tr\u1ECB"} ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${D.origin} ${j.verb} ${I}${D.minimum.toString()} ${j.unit}`;return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${D.origin} ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${I.prefix}"`;if(I.format==="ends_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${I.suffix}"`;if(I.format==="includes")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${I.includes}"`;if(I.format==="regex")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${I.pattern}`;return`${g[I.format]??D.format} kh\xF4ng h\u1EE3p l\u1EC7`}case"not_multiple_of":return`S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${D.divisor}`;case"unrecognized_keys":return`Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${B(D.keys,", ")}`;case"invalid_key":return`Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${D.origin}`;case"invalid_union":return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7";case"invalid_element":return`Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${D.origin}`;default:return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"}}};var l5=w(()=>{c()});function _L(){return{localeError:tV()}}var tV=()=>{let _={string:{unit:"\u5B57\u7B26",verb:"\u5305\u542B"},file:{unit:"\u5B57\u8282",verb:"\u5305\u542B"},array:{unit:"\u9879",verb:"\u5305\u542B"},set:{unit:"\u9879",verb:"\u5305\u542B"}};function $(D){return _[D]??null}let g={regex:"\u8F93\u5165",email:"\u7535\u5B50\u90AE\u4EF6",url:"URL",emoji:"\u8868\u60C5\u7B26\u53F7",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u671F\u65F6\u95F4",date:"ISO\u65E5\u671F",time:"ISO\u65F6\u95F4",duration:"ISO\u65F6\u957F",ipv4:"IPv4\u5730\u5740",ipv6:"IPv6\u5730\u5740",cidrv4:"IPv4\u7F51\u6BB5",cidrv6:"IPv6\u7F51\u6BB5",base64:"base64\u7F16\u7801\u5B57\u7B26\u4E32",base64url:"base64url\u7F16\u7801\u5B57\u7B26\u4E32",json_string:"JSON\u5B57\u7B26\u4E32",e164:"E.164\u53F7\u7801",jwt:"JWT",template_literal:"\u8F93\u5165"},U={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${D.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`;return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${I}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`}case"invalid_value":if(D.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${F(D.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${D.origin??"\u503C"} ${I}${D.maximum.toString()} ${j.unit??"\u4E2A\u5143\u7D20"}`;return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${D.origin??"\u503C"} ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${D.origin} ${I}${D.minimum.toString()} ${j.unit}`;return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${D.origin} ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${I.prefix}" \u5F00\u5934`;if(I.format==="ends_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${I.suffix}" \u7ED3\u5C3E`;if(I.format==="includes")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${I.includes}"`;if(I.format==="regex")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${I.pattern}`;return`\u65E0\u6548${g[I.format]??D.format}`}case"not_multiple_of":return`\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${D.divisor} \u7684\u500D\u6570`;case"unrecognized_keys":return`\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${B(D.keys,", ")}`;case"invalid_key":return`${D.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;case"invalid_union":return"\u65E0\u6548\u8F93\u5165";case"invalid_element":return`${D.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;default:return"\u65E0\u6548\u8F93\u5165"}}};var t5=w(()=>{c()});function $L(){return{localeError:oV()}}var oV=()=>{let _={string:{unit:"\u5B57\u5143",verb:"\u64C1\u6709"},file:{unit:"\u4F4D\u5143\u7D44",verb:"\u64C1\u6709"},array:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"},set:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"}};function $(D){return _[D]??null}let g={regex:"\u8F38\u5165",email:"\u90F5\u4EF6\u5730\u5740",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u65E5\u671F\u6642\u9593",date:"ISO \u65E5\u671F",time:"ISO \u6642\u9593",duration:"ISO \u671F\u9593",ipv4:"IPv4 \u4F4D\u5740",ipv6:"IPv6 \u4F4D\u5740",cidrv4:"IPv4 \u7BC4\u570D",cidrv6:"IPv6 \u7BC4\u570D",base64:"base64 \u7DE8\u78BC\u5B57\u4E32",base64url:"base64url \u7DE8\u78BC\u5B57\u4E32",json_string:"JSON \u5B57\u4E32",e164:"E.164 \u6578\u503C",jwt:"JWT",template_literal:"\u8F38\u5165"},U={nan:"NaN"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${D.expected}\uFF0C\u4F46\u6536\u5230 ${N}`;return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${I}\uFF0C\u4F46\u6536\u5230 ${N}`}case"invalid_value":if(D.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${F(D.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${D.origin??"\u503C"} \u61C9\u70BA ${I}${D.maximum.toString()} ${j.unit??"\u500B\u5143\u7D20"}`;return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${D.origin??"\u503C"} \u61C9\u70BA ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${D.origin} \u61C9\u70BA ${I}${D.minimum.toString()} ${j.unit}`;return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${D.origin} \u61C9\u70BA ${I}${D.minimum.toString()}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${I.prefix}" \u958B\u982D`;if(I.format==="ends_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${I.suffix}" \u7D50\u5C3E`;if(I.format==="includes")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${I.includes}"`;if(I.format==="regex")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${I.pattern}`;return`\u7121\u6548\u7684 ${g[I.format]??D.format}`}case"not_multiple_of":return`\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${D.divisor} \u7684\u500D\u6578`;case"unrecognized_keys":return`\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${D.keys.length>1?"\u5011":""}\uFF1A${B(D.keys,"\u3001")}`;case"invalid_key":return`${D.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;case"invalid_union":return"\u7121\u6548\u7684\u8F38\u5165\u503C";case"invalid_element":return`${D.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;default:return"\u7121\u6548\u7684\u8F38\u5165\u503C"}}};var o5=w(()=>{c()});function gL(){return{localeError:pV()}}var pV=()=>{let _={string:{unit:"\xE0mi",verb:"n\xED"},file:{unit:"bytes",verb:"n\xED"},array:{unit:"nkan",verb:"n\xED"},set:{unit:"nkan",verb:"n\xED"}};function $(D){return _[D]??null}let g={regex:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9",email:"\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\xE0k\xF3k\xF2 ISO",date:"\u1ECDj\u1ECD\u0301 ISO",time:"\xE0k\xF3k\xF2 ISO",duration:"\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO",ipv4:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv4",ipv6:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv6",cidrv4:"\xE0gb\xE8gb\xE8 IPv4",cidrv6:"\xE0gb\xE8gb\xE8 IPv6",base64:"\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64",base64url:"\u1ECD\u0300r\u1ECD\u0300 base64url",json_string:"\u1ECD\u0300r\u1ECD\u0300 JSON",e164:"n\u1ECD\u0301mb\xE0 E.164",jwt:"JWT",template_literal:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9"},U={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return(D)=>{switch(D.code){case"invalid_type":{let I=U[D.expected]??D.expected,j=M(D.input),N=U[j]??j;if(/^[A-Z]/.test(D.expected))return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${D.expected}, \xE0m\u1ECD\u0300 a r\xED ${N}`;return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${I}, \xE0m\u1ECD\u0300 a r\xED ${N}`}case"invalid_value":if(D.values.length===1)return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${F(D.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${B(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j)return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${D.origin??"iye"} ${j.verb} ${I}${D.maximum} ${j.unit}`;return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${I}${D.maximum}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin);if(j)return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${D.origin} ${j.verb} ${I}${D.minimum} ${j.unit}`;return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${I}${D.minimum}`}case"invalid_format":{let I=D;if(I.format==="starts_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${I.prefix}"`;if(I.format==="ends_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${I.suffix}"`;if(I.format==="includes")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${I.includes}"`;if(I.format==="regex")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${I.pattern}`;return`A\u1E63\xEC\u1E63e: ${g[I.format]??D.format}`}case"not_multiple_of":return`N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${D.divisor}`;case"unrecognized_keys":return`B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${B(D.keys,", ")}`;case"invalid_key":return`B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${D.origin}`;case"invalid_union":return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e";case"invalid_element":return`Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${D.origin}`;default:return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"}}};var p5=w(()=>{c()});var f0={};r$(f0,{zhTW:()=>$L,zhCN:()=>_L,yo:()=>gL,vi:()=>sA,uz:()=>aA,ur:()=>eA,uk:()=>LD,ua:()=>pA,tr:()=>tA,th:()=>lA,ta:()=>iA,sv:()=>mA,sl:()=>dA,ru:()=>nA,ro:()=>cA,pt:()=>hA,ps:()=>xA,pl:()=>yA,ota:()=>uA,no:()=>fA,nl:()=>wA,ms:()=>vA,mk:()=>rA,lt:()=>CA,ko:()=>kA,km:()=>OD,kh:()=>HA,ka:()=>ZA,ja:()=>MA,it:()=>FA,is:()=>VA,id:()=>KA,hy:()=>BA,hu:()=>qA,hr:()=>TA,he:()=>QA,frCA:()=>YA,fr:()=>GA,fi:()=>RA,fa:()=>XA,es:()=>WA,eo:()=>SA,en:()=>ED,el:()=>PA,de:()=>JA,da:()=>LA,cs:()=>AA,ca:()=>OA,bg:()=>EA,be:()=>NA,az:()=>jA,ar:()=>IA});var DL=w(()=>{aX();sX();$5();g5();D5();U5();I5();j5();N5();zA();E5();O5();A5();L5();J5();P5();z5();S5();W5();R5();G5();Y5();Q5();T5();q5();B5();bA();K5();F5();M5();Z5();b5();H5();k5();C5();r5();v5();w5();u5();x5();y5();h5();c5();n5();d5();oA();m5();i5();l5();t5();o5();p5()});class UL{constructor(){this._map=new WeakMap,this._idmap=new Map}add(_,...$){let g=$[0];if(this._map.set(_,g),g&&typeof g==="object"&&"id"in g)this._idmap.set(g.id,_);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(_){let $=this._map.get(_);if($&&typeof $==="object"&&"id"in $)this._idmap.delete($.id);return this._map.delete(_),this}get(_){let $=_._zod.parent;if($){let g={...this.get($)??{}};delete g.id;let U={...g,...this._map.get(_)};return Object.keys(U).length?U:void 0}return this._map.get(_)}has(_){return this._map.has(_)}}function JD(){return new UL}var e5,oI,pI,f_;var PD=w(()=>{oI=Symbol("ZodOutput"),pI=Symbol("ZodInput");(e5=globalThis).__zod_globalRegistry??(e5.__zod_globalRegistry=JD());f_=globalThis.__zod_globalRegistry});function IL(_,$){return new _({type:"string",...C($)})}function jL(_,$){return new _({type:"string",coerce:!0,...C($)})}function eI(_,$){return new _({type:"string",format:"email",check:"string_format",abort:!1,...C($)})}function zD(_,$){return new _({type:"string",format:"guid",check:"string_format",abort:!1,...C($)})}function aI(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,...C($)})}function sI(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...C($)})}function _1(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...C($)})}function $1(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...C($)})}function SD(_,$){return new _({type:"string",format:"url",check:"string_format",abort:!1,...C($)})}function g1(_,$){return new _({type:"string",format:"emoji",check:"string_format",abort:!1,...C($)})}function D1(_,$){return new _({type:"string",format:"nanoid",check:"string_format",abort:!1,...C($)})}function U1(_,$){return new _({type:"string",format:"cuid",check:"string_format",abort:!1,...C($)})}function I1(_,$){return new _({type:"string",format:"cuid2",check:"string_format",abort:!1,...C($)})}function j1(_,$){return new _({type:"string",format:"ulid",check:"string_format",abort:!1,...C($)})}function N1(_,$){return new _({type:"string",format:"xid",check:"string_format",abort:!1,...C($)})}function E1(_,$){return new _({type:"string",format:"ksuid",check:"string_format",abort:!1,...C($)})}function O1(_,$){return new _({type:"string",format:"ipv4",check:"string_format",abort:!1,...C($)})}function A1(_,$){return new _({type:"string",format:"ipv6",check:"string_format",abort:!1,...C($)})}function NL(_,$){return new _({type:"string",format:"mac",check:"string_format",abort:!1,...C($)})}function L1(_,$){return new _({type:"string",format:"cidrv4",check:"string_format",abort:!1,...C($)})}function J1(_,$){return new _({type:"string",format:"cidrv6",check:"string_format",abort:!1,...C($)})}function P1(_,$){return new _({type:"string",format:"base64",check:"string_format",abort:!1,...C($)})}function z1(_,$){return new _({type:"string",format:"base64url",check:"string_format",abort:!1,...C($)})}function S1(_,$){return new _({type:"string",format:"e164",check:"string_format",abort:!1,...C($)})}function W1(_,$){return new _({type:"string",format:"jwt",check:"string_format",abort:!1,...C($)})}function EL(_,$){return new _({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...C($)})}function OL(_,$){return new _({type:"string",format:"date",check:"string_format",...C($)})}function AL(_,$){return new _({type:"string",format:"time",check:"string_format",precision:null,...C($)})}function LL(_,$){return new _({type:"string",format:"duration",check:"string_format",...C($)})}function JL(_,$){return new _({type:"number",checks:[],...C($)})}function PL(_,$){return new _({type:"number",coerce:!0,checks:[],...C($)})}function zL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"safeint",...C($)})}function SL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float32",...C($)})}function WL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float64",...C($)})}function XL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"int32",...C($)})}function RL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"uint32",...C($)})}function GL(_,$){return new _({type:"boolean",...C($)})}function YL(_,$){return new _({type:"boolean",coerce:!0,...C($)})}function QL(_,$){return new _({type:"bigint",...C($)})}function TL(_,$){return new _({type:"bigint",coerce:!0,...C($)})}function qL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...C($)})}function BL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...C($)})}function KL(_,$){return new _({type:"symbol",...C($)})}function VL(_,$){return new _({type:"undefined",...C($)})}function FL(_,$){return new _({type:"null",...C($)})}function ML(_){return new _({type:"any"})}function ZL(_){return new _({type:"unknown"})}function bL(_,$){return new _({type:"never",...C($)})}function HL(_,$){return new _({type:"void",...C($)})}function kL(_,$){return new _({type:"date",...C($)})}function CL(_,$){return new _({type:"date",coerce:!0,...C($)})}function rL(_,$){return new _({type:"nan",...C($)})}function Q$(_,$){return new wI({check:"less_than",...C($),value:_,inclusive:!1})}function g$(_,$){return new wI({check:"less_than",...C($),value:_,inclusive:!0})}function T$(_,$){return new fI({check:"greater_than",...C($),value:_,inclusive:!1})}function h_(_,$){return new fI({check:"greater_than",...C($),value:_,inclusive:!0})}function WD(_){return T$(0,_)}function XD(_){return Q$(0,_)}function RD(_){return g$(0,_)}function GD(_){return h_(0,_)}function U6(_,$){return new M2({check:"multiple_of",...C($),value:_})}function I6(_,$){return new H2({check:"max_size",...C($),maximum:_})}function q$(_,$){return new k2({check:"min_size",...C($),minimum:_})}function k6(_,$){return new C2({check:"size_equals",...C($),size:_})}function C6(_,$){return new r2({check:"max_length",...C($),maximum:_})}function y$(_,$){return new v2({check:"min_length",...C($),minimum:_})}function r6(_,$){return new w2({check:"length_equals",...C($),length:_})}function W4(_,$){return new f2({check:"string_format",format:"regex",...C($),pattern:_})}function X4(_){return new u2({check:"string_format",format:"lowercase",...C(_)})}function R4(_){return new x2({check:"string_format",format:"uppercase",...C(_)})}function G4(_,$){return new y2({check:"string_format",format:"includes",...C($),includes:_})}function Y4(_,$){return new h2({check:"string_format",format:"starts_with",...C($),prefix:_})}function Q4(_,$){return new c2({check:"string_format",format:"ends_with",...C($),suffix:_})}function YD(_,$,g){return new n2({check:"property",property:_,schema:$,...C(g)})}function T4(_,$){return new d2({check:"mime_type",mime:_,...C($)})}function z$(_){return new m2({check:"overwrite",tx:_})}function q4(_){return z$(($)=>$.normalize(_))}function B4(){return z$((_)=>_.trim())}function K4(){return z$((_)=>_.toLowerCase())}function V4(){return z$((_)=>_.toUpperCase())}function F4(){return z$((_)=>hE(_))}function vL(_,$,g){return new _({type:"array",element:$,...C(g)})}function aV(_,$,g){return new _({type:"union",options:$,...C(g)})}function sV(_,$,g){return new _({type:"union",options:$,inclusive:!1,...C(g)})}function _F(_,$,g,U){return new _({type:"union",options:g,discriminator:$,...C(U)})}function $F(_,$,g){return new _({type:"intersection",left:$,right:g})}function gF(_,$,g,U){let D=g instanceof l;return new _({type:"tuple",items:$,rest:D?g:null,...C(D?U:g)})}function DF(_,$,g,U){return new _({type:"record",keyType:$,valueType:g,...C(U)})}function UF(_,$,g,U){return new _({type:"map",keyType:$,valueType:g,...C(U)})}function IF(_,$,g){return new _({type:"set",valueType:$,...C(g)})}function jF(_,$,g){let U=Array.isArray($)?Object.fromEntries($.map((D)=>[D,D])):$;return new _({type:"enum",entries:U,...C(g)})}function NF(_,$,g){return new _({type:"enum",entries:$,...C(g)})}function EF(_,$,g){return new _({type:"literal",values:Array.isArray($)?$:[$],...C(g)})}function wL(_,$){return new _({type:"file",...C($)})}function OF(_,$){return new _({type:"transform",transform:$})}function AF(_,$){return new _({type:"optional",innerType:$})}function LF(_,$){return new _({type:"nullable",innerType:$})}function JF(_,$,g){return new _({type:"default",innerType:$,get defaultValue(){return typeof g==="function"?g():nE(g)}})}function PF(_,$,g){return new _({type:"nonoptional",innerType:$,...C(g)})}function zF(_,$){return new _({type:"success",innerType:$})}function SF(_,$,g){return new _({type:"catch",innerType:$,catchValue:typeof g==="function"?g:()=>g})}function WF(_,$,g){return new _({type:"pipe",in:$,out:g})}function XF(_,$){return new _({type:"readonly",innerType:$})}function RF(_,$,g){return new _({type:"template_literal",parts:$,...C(g)})}function GF(_,$){return new _({type:"lazy",getter:$})}function YF(_,$){return new _({type:"promise",innerType:$})}function fL(_,$,g){let U=C(g);return U.abort??(U.abort=!0),new _({type:"custom",check:"custom",fn:$,...U})}function uL(_,$,g){return new _({type:"custom",check:"custom",fn:$,...C(g)})}function xL(_,$){let g=a5((U)=>{return U.addIssue=(D)=>{if(typeof D==="string")U.issues.push(M0(D,U.value,g._zod.def));else{let I=D;if(I.fatal)I.continue=!1;I.code??(I.code="custom"),I.input??(I.input=U.value),I.inst??(I.inst=g),I.continue??(I.continue=!g._zod.def.abort),U.issues.push(M0(I))}},_(U.value,U)},$);return g}function a5(_,$){let g=new Y_({check:"custom",...C($)});return g._zod.check=_,g}function yL(_){let $=new Y_({check:"describe"});return $._zod.onattach=[(g)=>{let U=f_.get(g)??{};f_.add(g,{...U,description:_})}],$._zod.check=()=>{},$}function hL(_){let $=new Y_({check:"meta"});return $._zod.onattach=[(g)=>{let U=f_.get(g)??{};f_.add(g,{...U,..._})}],$._zod.check=()=>{},$}function cL(_,$){let g=C($),U=g.truthy??["true","1","yes","on","y","enabled"],D=g.falsy??["false","0","no","off","n","disabled"];if(g.case!=="sensitive")U=U.map((J)=>typeof J==="string"?J.toLowerCase():J),D=D.map((J)=>typeof J==="string"?J.toLowerCase():J);let I=new Set(U),j=new Set(D),N=_.Codec??ND,O=_.Boolean??ID,L=new(_.String??S4)({type:"string",error:g.error}),z=new O({type:"boolean",error:g.error}),W=new N({type:"pipe",in:L,out:z,transform:(J,P)=>{let S=J;if(g.case!=="sensitive")S=S.toLowerCase();if(I.has(S))return!0;else if(j.has(S))return!1;else return P.issues.push({code:"invalid_value",expected:"stringbool",values:[...I,...j],input:P.value,inst:W,continue:!1}),{}},reverseTransform:(J,P)=>{if(J===!0)return U[0]||"true";else return D[0]||"false"},error:g.error});return W}function u0(_,$,g,U={}){let D=C(U),I={...C(U),check:"string_format",type:"string",format:$,fn:typeof g==="function"?g:(N)=>g.test(N),...D};if(g instanceof RegExp)I.pattern=g;return new _(I)}var X1;var s5=w(()=>{uI();PD();UA();c();X1={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function v6(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";return{processors:_.processors??{},metadataRegistry:_?.metadata??f_,target:$,unrepresentable:_?.unrepresentable??"throw",override:_?.override??(()=>{}),io:_?.io??"output",counter:0,seen:new Map,cycles:_?.cycles??"ref",reused:_?.reused??"inline",external:_?.external??void 0}}function A_(_,$,g={path:[],schemaPath:[]}){var U;let D=_._zod.def,I=$.seen.get(_);if(I){if(I.count++,g.schemaPath.includes(_))I.cycle=g.path;return I.schema}let j={schema:{},count:1,cycle:void 0,path:g.path};$.seen.set(_,j);let N=_._zod.toJSONSchema?.();if(N)j.schema=N;else{let L={...g,schemaPath:[...g.schemaPath,_],path:g.path};if(_._zod.processJSONSchema)_._zod.processJSONSchema($,j.schema,L);else{let W=j.schema,J=$.processors[D.type];if(!J)throw Error(`[toJSONSchema]: Non-representable type encountered: ${D.type}`);J(_,$,W,L)}let z=_._zod.parent;if(z){if(!j.ref)j.ref=z;A_(z,$,L),$.seen.get(z).isParent=!0}}let O=$.metadataRegistry.get(_);if(O)Object.assign(j.schema,O);if($.io==="input"&&t_(_))delete j.schema.examples,delete j.schema.default;if($.io==="input"&&"_prefault"in j.schema)(U=j.schema).default??(U.default=j.schema._prefault);return delete j.schema._prefault,$.seen.get(_).schema}function w6(_,$){let g=_.seen.get($);if(!g)throw Error("Unprocessed schema. This is a bug in Zod.");let U=new Map;for(let j of _.seen.entries()){let N=_.metadataRegistry.get(j[0])?.id;if(N){let O=U.get(N);if(O&&O!==j[0])throw Error(`Duplicate schema id "${N}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);U.set(N,j[0])}}let D=(j)=>{let N=_.target==="draft-2020-12"?"$defs":"definitions";if(_.external){let z=_.external.registry.get(j[0])?.id,W=_.external.uri??((P)=>P);if(z)return{ref:W(z)};let J=j[1].defId??j[1].schema.id??`schema${_.counter++}`;return j[1].defId=J,{defId:J,ref:`${W("__shared")}#/${N}/${J}`}}if(j[1]===g)return{ref:"#"};let A=`${"#"}/${N}/`,L=j[1].schema.id??`__schema${_.counter++}`;return{defId:L,ref:A+L}},I=(j)=>{if(j[1].schema.$ref)return;let N=j[1],{ref:O,defId:A}=D(j);if(N.def={...N.schema},A)N.defId=A;let L=N.schema;for(let z in L)delete L[z];L.$ref=O};if(_.cycles==="throw")for(let j of _.seen.entries()){let N=j[1];if(N.cycle)throw Error(`Cycle detected: #/${N.cycle?.join("/")}/ + `)}J.write("payload.value = newResult;"),J.write("return payload;");let G=J.compile();return(V,Q)=>G(W,V,Q)},I,j=P4,N=!A4.jitless,A=N&&p2.value,L=$.catchall,z;_._zod.parse=(W,J)=>{z??(z=g.value);let P=W.value;if(!j(P))return W.issues.push({expected:"object",code:"invalid_type",input:P,inst:_}),W;if(N&&A&&J?.async===!1&&J.jitless!==!0){if(!I)I=U($.shape);if(W=I(W,J),!L)return W;return O5([],P,W,J,z,_)}return D(W,J)}});NU=Y("$ZodUnion",(_,$)=>{l.init(_,$),$_(_._zod,"optin",()=>$.options.some((g)=>g._zod.optin==="optional")?"optional":void 0),$_(_._zod,"optout",()=>$.options.some((g)=>g._zod.optout==="optional")?"optional":void 0),$_(_._zod,"values",()=>{if($.options.every((g)=>g._zod.values))return new Set($.options.flatMap((g)=>Array.from(g._zod.values)));return}),$_(_._zod,"pattern",()=>{if($.options.every((g)=>g._zod.pattern)){let g=$.options.map((U)=>U._zod.pattern);return new RegExp(`^(${g.map((U)=>aD(U.source)).join("|")})$`)}return});let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(g,U)=>{if(D)return D(g,U);let I=!1,j=[];for(let N of $.options){let O=N._zod.run({value:g.value,issues:[]},U);if(O instanceof Promise)j.push(O),I=!0;else{if(O.issues.length===0)return O;j.push(O)}}if(!I)return lX(j,g,_,U);return Promise.all(j).then((N)=>{return lX(N,g,_,U)})}});hO=Y("$ZodXor",(_,$)=>{NU.init(_,$),$.inclusive=!1;let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(g,U)=>{if(D)return D(g,U);let I=!1,j=[];for(let N of $.options){let O=N._zod.run({value:g.value,issues:[]},U);if(O instanceof Promise)j.push(O),I=!0;else j.push(O)}if(!I)return tX(j,g,_,U);return Promise.all(j).then((N)=>{return tX(N,g,_,U)})}}),cO=Y("$ZodDiscriminatedUnion",(_,$)=>{$.inclusive=!1,NU.init(_,$);let D=_._zod.parse;$_(_._zod,"propValues",()=>{let U={};for(let I of $.options){let j=I._zod.propValues;if(!j||Object.keys(j).length===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(I)}"`);for(let[N,O]of Object.entries(j)){if(!U[N])U[N]=new Set;for(let A of O)U[N].add(A)}}return U});let g=M0(()=>{let U=$.options,I=new Map;for(let j of U){let N=j._zod.propValues?.[$.discriminator];if(!N||N.size===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(j)}"`);for(let O of N){if(I.has(O))throw Error(`Duplicate discriminator value "${String(O)}"`);I.set(O,j)}}return I});_._zod.parse=(U,I)=>{let j=U.value;if(!P4(j))return U.issues.push({code:"invalid_type",expected:"object",input:j,inst:_}),U;let N=g.value.get(j?.[$.discriminator]);if(N)return N._zod.run(U,I);if($.unionFallback||I.direction==="backward")return D(U,I);return U.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:$.discriminator,options:Array.from(g.value.keys()),input:j,path:[$.discriminator],inst:_}),U}}),nO=Y("$ZodIntersection",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value,I=$.left._zod.run({value:U,issues:[]},g),j=$.right._zod.run({value:U,issues:[]},g);if(I instanceof Promise||j instanceof Promise)return Promise.all([I,j]).then(([O,A])=>{return oX(D,O,A)});return oX(D,I,j)}});lI=Y("$ZodTuple",(_,$)=>{l.init(_,$);let D=$.items;_._zod.parse=(g,U)=>{let I=g.value;if(!Array.isArray(I))return g.issues.push({input:I,inst:_,expected:"tuple",code:"invalid_type"}),g;g.value=[];let j=[],N=pX(D,"optin"),O=pX(D,"optout");if(!$.rest){if(I.lengthD.length)g.issues.push({code:"too_big",maximum:D.length,inclusive:!0,input:I,inst:_,origin:"array"})}let A=Array(D.length);for(let L=0;L{A[L]=W}));else A[L]=z}if($.rest){let L=D.length-1,z=I.slice(D.length);for(let W of z){L++;let J=$.rest._zod.run({value:W,issues:[]},U);if(J instanceof Promise)j.push(J.then((P)=>eX(P,g,L)));else eX(J,g,L)}}if(j.length)return Promise.all(j).then(()=>aX(A,g,D,I,O));return aX(A,g,D,I,O)}});dO=Y("$ZodRecord",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(!b6(U))return D.issues.push({expected:"record",code:"invalid_type",input:U,inst:_}),D;let I=[],j=$.keyType._zod.values;if(j){D.value={};let N=new Set;for(let A of j)if(typeof A==="string"||typeof A==="number"||typeof A==="symbol"){N.add(typeof A==="number"?A.toString():A);let L=$.keyType._zod.run({value:A,issues:[]},g);if(L instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(L.issues.length){D.issues.push({code:"invalid_key",origin:"record",issues:L.issues.map((J)=>l_(J,g,Z_())),input:A,path:[A],inst:_});continue}let z=L.value,W=$.valueType._zod.run({value:U[A],issues:[]},g);if(W instanceof Promise)I.push(W.then((J)=>{if(J.issues.length)D.issues.push(...s_(A,J.issues));D.value[z]=J.value}));else{if(W.issues.length)D.issues.push(...s_(A,W.issues));D.value[z]=W.value}}let O;for(let A in U)if(!N.has(A))O=O??[],O.push(A);if(O&&O.length>0)D.issues.push({code:"unrecognized_keys",input:U,inst:_,keys:O})}else{D.value={};for(let N of Reflect.ownKeys(U)){if(N==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(U,N))continue;let O=$.keyType._zod.run({value:N,issues:[]},g);if(O instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof N==="string"&&UU.test(N)&&O.issues.length){let z=$.keyType._zod.run({value:Number(N),issues:[]},g);if(z instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(z.issues.length===0)O=z}if(O.issues.length){if($.mode==="loose")D.value[N]=U[N];else D.issues.push({code:"invalid_key",origin:"record",issues:O.issues.map((z)=>l_(z,g,Z_())),input:N,path:[N],inst:_});continue}let L=$.valueType._zod.run({value:U[N],issues:[]},g);if(L instanceof Promise)I.push(L.then((z)=>{if(z.issues.length)D.issues.push(...s_(N,z.issues));D.value[O.value]=z.value}));else{if(L.issues.length)D.issues.push(...s_(N,L.issues));D.value[O.value]=L.value}}}if(I.length)return Promise.all(I).then(()=>D);return D}}),mO=Y("$ZodMap",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(!(U instanceof Map))return D.issues.push({expected:"map",code:"invalid_type",input:U,inst:_}),D;let I=[];D.value=new Map;for(let[j,N]of U){let O=$.keyType._zod.run({value:j,issues:[]},g),A=$.valueType._zod.run({value:N,issues:[]},g);if(O instanceof Promise||A instanceof Promise)I.push(Promise.all([O,A]).then(([L,z])=>{sX(L,z,D,j,U,_,g)}));else sX(O,A,D,j,U,_,g)}if(I.length)return Promise.all(I).then(()=>D);return D}});iO=Y("$ZodSet",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(!(U instanceof Set))return D.issues.push({input:U,inst:_,expected:"set",code:"invalid_type"}),D;let I=[];D.value=new Set;for(let j of U){let N=$.valueType._zod.run({value:j,issues:[]},g);if(N instanceof Promise)I.push(N.then((O)=>_5(O,D)));else _5(N,D)}if(I.length)return Promise.all(I).then(()=>D);return D}});lO=Y("$ZodEnum",(_,$)=>{l.init(_,$);let D=eD($.entries),g=new Set(D);_._zod.values=g,_._zod.pattern=new RegExp(`^(${D.filter((U)=>sD.has(typeof U)).map((U)=>typeof U==="string"?P$(U):U.toString()).join("|")})$`),_._zod.parse=(U,I)=>{let j=U.value;if(g.has(j))return U;return U.issues.push({code:"invalid_value",values:D,input:j,inst:_}),U}}),tO=Y("$ZodLiteral",(_,$)=>{if(l.init(_,$),$.values.length===0)throw Error("Cannot create literal schema with no valid values");let D=new Set($.values);_._zod.values=D,_._zod.pattern=new RegExp(`^(${$.values.map((g)=>typeof g==="string"?P$(g):g?P$(g.toString()):String(g)).join("|")})$`),_._zod.parse=(g,U)=>{let I=g.value;if(D.has(I))return g;return g.issues.push({code:"invalid_value",values:$.values,input:I,inst:_}),g}}),oO=Y("$ZodFile",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{let U=D.value;if(U instanceof File)return D;return D.issues.push({expected:"file",code:"invalid_type",input:U,inst:_}),D}}),pO=Y("$ZodTransform",(_,$)=>{l.init(_,$),_._zod.optin="optional",_._zod.parse=(D,g)=>{if(g.direction==="backward")throw new L4(_.constructor.name);let U=$.transform(D.value,D);if(g.async)return(U instanceof Promise?U:Promise.resolve(U)).then((j)=>{return D.value=j,D.fallback=!0,D});if(U instanceof Promise)throw new x$;return D.value=U,D.fallback=!0,D}});tI=Y("$ZodOptional",(_,$)=>{l.init(_,$),_._zod.optin="optional",_._zod.optout="optional",$_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,void 0]):void 0}),$_(_._zod,"pattern",()=>{let D=$.innerType._zod.pattern;return D?new RegExp(`^(${aD(D.source)})?$`):void 0}),_._zod.parse=(D,g)=>{if($.innerType._zod.optin==="optional"){let U=D.value,I=$.innerType._zod.run(D,g);if(I instanceof Promise)return I.then((j)=>$5(j,U));return $5(I,U)}if(D.value===void 0)return D;return $.innerType._zod.run(D,g)}}),eO=Y("$ZodExactOptional",(_,$)=>{tI.init(_,$),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"pattern",()=>$.innerType._zod.pattern),_._zod.parse=(D,g)=>{return $.innerType._zod.run(D,g)}}),aO=Y("$ZodNullable",(_,$)=>{l.init(_,$),$_(_._zod,"optin",()=>$.innerType._zod.optin),$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"pattern",()=>{let D=$.innerType._zod.pattern;return D?new RegExp(`^(${aD(D.source)}|null)$`):void 0}),$_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,null]):void 0}),_._zod.parse=(D,g)=>{if(D.value===null)return D;return $.innerType._zod.run(D,g)}}),sO=Y("$ZodDefault",(_,$)=>{l.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,g)=>{if(g.direction==="backward")return $.innerType._zod.run(D,g);if(D.value===void 0)return D.value=$.defaultValue,D;let U=$.innerType._zod.run(D,g);if(U instanceof Promise)return U.then((I)=>D5(I,$));return D5(U,$)}});_A=Y("$ZodPrefault",(_,$)=>{l.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,g)=>{if(g.direction==="backward")return $.innerType._zod.run(D,g);if(D.value===void 0)D.value=$.defaultValue;return $.innerType._zod.run(D,g)}}),$A=Y("$ZodNonOptional",(_,$)=>{l.init(_,$),$_(_._zod,"values",()=>{let D=$.innerType._zod.values;return D?new Set([...D].filter((g)=>g!==void 0)):void 0}),_._zod.parse=(D,g)=>{let U=$.innerType._zod.run(D,g);if(U instanceof Promise)return U.then((I)=>U5(I,_));return U5(U,_)}});DA=Y("$ZodSuccess",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{if(g.direction==="backward")throw new L4("ZodSuccess");let U=$.innerType._zod.run(D,g);if(U instanceof Promise)return U.then((I)=>{return D.value=I.issues.length===0,D});return D.value=U.issues.length===0,D}}),UA=Y("$ZodCatch",(_,$)=>{l.init(_,$),_._zod.optin="optional",$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,g)=>{if(g.direction==="backward")return $.innerType._zod.run(D,g);let U=$.innerType._zod.run(D,g);if(U instanceof Promise)return U.then((I)=>{if(D.value=I.value,I.issues.length)D.value=$.catchValue({...D,error:{issues:I.issues.map((j)=>l_(j,g,Z_()))},input:D.value}),D.issues=[],D.fallback=!0;return D});if(D.value=U.value,U.issues.length)D.value=$.catchValue({...D,error:{issues:U.issues.map((I)=>l_(I,g,Z_()))},input:D.value}),D.issues=[],D.fallback=!0;return D}}),gA=Y("$ZodNaN",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{if(typeof D.value!=="number"||!Number.isNaN(D.value))return D.issues.push({input:D.value,inst:_,expected:"nan",code:"invalid_type"}),D;return D}}),oI=Y("$ZodPipe",(_,$)=>{l.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,g)=>{if(g.direction==="backward"){let I=$.out._zod.run(D,g);if(I instanceof Promise)return I.then((j)=>hI(j,$.in,g));return hI(I,$.in,g)}let U=$.in._zod.run(D,g);if(U instanceof Promise)return U.then((I)=>hI(I,$.out,g));return hI(U,$.out,g)}});EU=Y("$ZodCodec",(_,$)=>{l.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,g)=>{if((g.direction||"forward")==="forward"){let I=$.in._zod.run(D,g);if(I instanceof Promise)return I.then((j)=>cI(j,$,g));return cI(I,$,g)}else{let I=$.out._zod.run(D,g);if(I instanceof Promise)return I.then((j)=>cI(j,$,g));return cI(I,$,g)}}});IA=Y("$ZodPreprocess",(_,$)=>{oI.init(_,$)}),jA=Y("$ZodReadonly",(_,$)=>{l.init(_,$),$_(_._zod,"propValues",()=>$.innerType._zod.propValues),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"optin",()=>$.innerType?._zod?.optin),$_(_._zod,"optout",()=>$.innerType?._zod?.optout),_._zod.parse=(D,g)=>{if(g.direction==="backward")return $.innerType._zod.run(D,g);let U=$.innerType._zod.run(D,g);if(U instanceof Promise)return U.then(g5);return g5(U)}});NA=Y("$ZodTemplateLiteral",(_,$)=>{l.init(_,$);let D=[];for(let g of $.parts)if(typeof g==="object"&&g!==null){if(!g._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...g._zod.traits].shift()}`);let U=g._zod.pattern instanceof RegExp?g._zod.pattern.source:g._zod.pattern;if(!U)throw Error(`Invalid template literal part: ${g._zod.traits}`);let I=U.startsWith("^")?1:0,j=U.endsWith("$")?U.length-1:U.length;D.push(U.slice(I,j))}else if(g===null||a2.has(typeof g))D.push(P$(`${g}`));else throw Error(`Invalid template literal part: ${g}`);_._zod.pattern=new RegExp(`^${D.join("")}$`),_._zod.parse=(g,U)=>{if(typeof g.value!=="string")return g.issues.push({input:g.value,inst:_,expected:"string",code:"invalid_type"}),g;if(_._zod.pattern.lastIndex=0,!_._zod.pattern.test(g.value))return g.issues.push({input:g.value,inst:_,code:"invalid_format",format:$.format??"template_literal",pattern:_._zod.pattern.source}),g;return g}}),EA=Y("$ZodFunction",(_,$)=>{return l.init(_,$),_._def=$,_._zod.def=$,_.implement=(D)=>{if(typeof D!=="function")throw Error("implement() must be called with a function");return function(...g){let U=_._def.input?VI(_._def.input,g):g,I=Reflect.apply(D,this,U);if(_._def.output)return VI(_._def.output,I);return I}},_.implementAsync=(D)=>{if(typeof D!=="function")throw Error("implementAsync() must be called with a function");return async function(...g){let U=_._def.input?await FI(_._def.input,g):g,I=await Reflect.apply(D,this,U);if(_._def.output)return await FI(_._def.output,I);return I}},_._zod.parse=(D,g)=>{if(typeof D.value!=="function")return D.issues.push({code:"invalid_type",expected:"function",input:D.value,inst:_}),D;if(_._def.output&&_._def.output._zod.def.type==="promise")D.value=_.implementAsync(D.value);else D.value=_.implement(D.value);return D},_.input=(...D)=>{let g=_.constructor;if(Array.isArray(D[0]))return new g({type:"function",input:new lI({type:"tuple",items:D[0],rest:D[1]}),output:_._def.output});return new g({type:"function",input:D[0],output:_._def.output})},_.output=(D)=>{return new _.constructor({type:"function",input:_._def.input,output:D})},_}),OA=Y("$ZodPromise",(_,$)=>{l.init(_,$),_._zod.parse=(D,g)=>{return Promise.resolve(D.value).then((U)=>$.innerType._zod.run({value:U,issues:[]},g))}}),AA=Y("$ZodLazy",(_,$)=>{l.init(_,$),$_(_._zod,"innerType",()=>{let D=$;if(!D._cachedInner)D._cachedInner=$.getter();return D._cachedInner}),$_(_._zod,"pattern",()=>_._zod.innerType?._zod?.pattern),$_(_._zod,"propValues",()=>_._zod.innerType?._zod?.propValues),$_(_._zod,"optin",()=>_._zod.innerType?._zod?.optin??void 0),$_(_._zod,"optout",()=>_._zod.innerType?._zod?.optout??void 0),_._zod.parse=(D,g)=>{return _._zod.innerType._zod.run(D,g)}}),LA=Y("$ZodCustom",(_,$)=>{Y_.init(_,$),l.init(_,$),_._zod.parse=(D,g)=>{return D},_._zod.check=(D)=>{let g=D.value,U=$.fn(g);if(U instanceof Promise)return U.then((I)=>I5(I,D,g,_));I5(U,D,g,_);return}})});function PA(){return{localeError:XF()}}var XF=()=>{let _={string:{unit:"\u062D\u0631\u0641",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},file:{unit:"\u0628\u0627\u064A\u062A",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},array:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"},set:{unit:"\u0639\u0646\u0635\u0631",verb:"\u0623\u0646 \u064A\u062D\u0648\u064A"}};function $(U){return _[U]??null}let D={regex:"\u0645\u062F\u062E\u0644",email:"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A",url:"\u0631\u0627\u0628\u0637",emoji:"\u0625\u064A\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",date:"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO",time:"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO",duration:"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO",ipv4:"\u0639\u0646\u0648\u0627\u0646 IPv4",ipv6:"\u0639\u0646\u0648\u0627\u0646 IPv6",cidrv4:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4",cidrv6:"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6",base64:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded",base64url:"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded",json_string:"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON",e164:"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164",jwt:"JWT",template_literal:"\u0645\u062F\u062E\u0644"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${U.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${N}`;return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${I}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${N}`}case"invalid_value":if(U.values.length===1)return`\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${K(U.values[0])}`;return`\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${U.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${I} ${U.maximum.toString()} ${j.unit??"\u0639\u0646\u0635\u0631"}`;return`\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${U.origin??"\u0627\u0644\u0642\u064A\u0645\u0629"} ${I} ${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${U.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${I} ${U.minimum.toString()} ${j.unit}`;return`\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${U.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${I} ${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 "${U.prefix}"`;if(I.format==="ends_with")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 "${I.suffix}"`;if(I.format==="includes")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 "${I.includes}"`;if(I.format==="regex")return`\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${I.pattern}`;return`${D[I.format]??U.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`}case"not_multiple_of":return`\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${U.divisor}`;case"unrecognized_keys":return`\u0645\u0639\u0631\u0641${U.keys.length>1?"\u0627\u062A":""} \u063A\u0631\u064A\u0628${U.keys.length>1?"\u0629":""}: ${q(U.keys,"\u060C ")}`;case"invalid_key":return`\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${U.origin}`;case"invalid_union":return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644";case"invalid_element":return`\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${U.origin}`;default:return"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644"}}};var L5=w(()=>{c()});function zA(){return{localeError:GF()}}var GF=()=>{let _={string:{unit:"simvol",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"element",verb:"olmal\u0131d\u0131r"},set:{unit:"element",verb:"olmal\u0131d\u0131r"}};function $(U){return _[U]??null}let D={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n instanceof ${U.expected}, daxil olan ${N}`;return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${I}, daxil olan ${N}`}case"invalid_value":if(U.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${K(U.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${I}${U.maximum.toString()} ${j.unit??"element"}`;return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${I}${U.minimum.toString()} ${j.unit}`;return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Yanl\u0131\u015F m\u0259tn: "${I.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`;if(I.format==="ends_with")return`Yanl\u0131\u015F m\u0259tn: "${I.suffix}" il\u0259 bitm\u0259lidir`;if(I.format==="includes")return`Yanl\u0131\u015F m\u0259tn: "${I.includes}" daxil olmal\u0131d\u0131r`;if(I.format==="regex")return`Yanl\u0131\u015F m\u0259tn: ${I.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;return`Yanl\u0131\u015F ${D[I.format]??U.format}`}case"not_multiple_of":return`Yanl\u0131\u015F \u0259d\u0259d: ${U.divisor} il\u0259 b\xF6l\xFCn\u0259 bil\u0259n olmal\u0131d\u0131r`;case"unrecognized_keys":return`Tan\u0131nmayan a\xE7ar${U.keys.length>1?"lar":""}: ${q(U.keys,", ")}`;case"invalid_key":return`${U.origin} daxilind\u0259 yanl\u0131\u015F a\xE7ar`;case"invalid_union":return"Yanl\u0131\u015F d\u0259y\u0259r";case"invalid_element":return`${U.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;default:return"Yanl\u0131\u015F d\u0259y\u0259r"}}};var J5=w(()=>{c()});function P5(_,$,D,g){let U=Math.abs(_),I=U%10,j=U%100;if(j>=11&&j<=19)return g;if(I===1)return $;if(I>=2&&I<=4)return D;return g}function SA(){return{localeError:RF()}}var RF=()=>{let _={string:{unit:{one:"\u0441\u0456\u043C\u0432\u0430\u043B",few:"\u0441\u0456\u043C\u0432\u0430\u043B\u044B",many:"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u044B",many:"\u0431\u0430\u0439\u0442\u0430\u045E"},verb:"\u043C\u0435\u0446\u044C"}};function $(U){return _[U]??null}let D={regex:"\u0443\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0430\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0447\u0430\u0441",duration:"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0430\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0430\u0441",cidrv4:"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D",base64:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64",base64url:"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url",json_string:"JSON \u0440\u0430\u0434\u043E\u043A",e164:"\u043D\u0443\u043C\u0430\u0440 E.164",jwt:"JWT",template_literal:"\u0443\u0432\u043E\u0434"},g={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${U.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${N}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${I}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${N}`}case"invalid_value":if(U.values.length===1)return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${K(U.values[0])}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),O=P5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${U.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${j.verb} ${I}${U.maximum.toString()} ${O}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${U.origin??"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),O=P5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${U.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${j.verb} ${I}${U.minimum.toString()} ${O}`}return`\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${U.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C "${I.includes}"`;if(I.format==="regex")return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${I.pattern}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${D[I.format]??U.format}`}case"not_multiple_of":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${U.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${U.keys.length>1?"\u043A\u043B\u044E\u0447\u044B":"\u043A\u043B\u044E\u0447"}: ${q(U.keys,", ")}`;case"invalid_key":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${U.origin}`;case"invalid_union":return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434";case"invalid_element":return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${U.origin}`;default:return"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434"}}};var z5=w(()=>{c()});function WA(){return{localeError:YF()}}var YF=()=>{let _={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},file:{unit:"\u0431\u0430\u0439\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430",verb:"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430"}};function $(U){return _[U]??null}let D={regex:"\u0432\u0445\u043E\u0434",email:"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0436\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",base64url:"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437",json_string:"JSON \u043D\u0438\u0437",e164:"E.164 \u043D\u043E\u043C\u0435\u0440",jwt:"JWT",template_literal:"\u0432\u0445\u043E\u0434"},g={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${U.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${N}`;return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${I}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${N}`}case"invalid_value":if(U.values.length===1)return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${K(U.values[0])}`;return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${U.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${I}${U.maximum.toString()} ${j.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430"}`;return`\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${U.origin??"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${U.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${I}${U.minimum.toString()} ${j.unit}`;return`\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${U.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${I.pattern}`;let j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";if(I.format==="emoji")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(I.format==="datetime")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(I.format==="date")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";if(I.format==="time")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(I.format==="duration")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";return`${j} ${D[I.format]??U.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${U.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${U.keys.length>1?"\u0438":""} \u043A\u043B\u044E\u0447${U.keys.length>1?"\u043E\u0432\u0435":""}: ${q(U.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${U.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434";case"invalid_element":return`\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${U.origin}`;default:return"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434"}}};var S5=w(()=>{c()});function XA(){return{localeError:QF()}}var QF=()=>{let _={string:{unit:"car\xE0cters",verb:"contenir"},file:{unit:"bytes",verb:"contenir"},array:{unit:"elements",verb:"contenir"},set:{unit:"elements",verb:"contenir"}};function $(U){return _[U]??null}let D={regex:"entrada",email:"adre\xE7a electr\xF2nica",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i hora ISO",date:"data ISO",time:"hora ISO",duration:"durada ISO",ipv4:"adre\xE7a IPv4",ipv6:"adre\xE7a IPv6",cidrv4:"rang IPv4",cidrv6:"rang IPv6",base64:"cadena codificada en base64",base64url:"cadena codificada en base64url",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Tipus inv\xE0lid: s'esperava instanceof ${U.expected}, s'ha rebut ${N}`;return`Tipus inv\xE0lid: s'esperava ${I}, s'ha rebut ${N}`}case"invalid_value":if(U.values.length===1)return`Valor inv\xE0lid: s'esperava ${K(U.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${q(U.values," o ")}`;case"too_big":{let I=U.inclusive?"com a m\xE0xim":"menys de",j=$(U.origin);if(j)return`Massa gran: s'esperava que ${U.origin??"el valor"} contingu\xE9s ${I} ${U.maximum.toString()} ${j.unit??"elements"}`;return`Massa gran: s'esperava que ${U.origin??"el valor"} fos ${I} ${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?"com a m\xEDnim":"m\xE9s de",j=$(U.origin);if(j)return`Massa petit: s'esperava que ${U.origin} contingu\xE9s ${I} ${U.minimum.toString()} ${j.unit}`;return`Massa petit: s'esperava que ${U.origin} fos ${I} ${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Format inv\xE0lid: ha de comen\xE7ar amb "${I.prefix}"`;if(I.format==="ends_with")return`Format inv\xE0lid: ha d'acabar amb "${I.suffix}"`;if(I.format==="includes")return`Format inv\xE0lid: ha d'incloure "${I.includes}"`;if(I.format==="regex")return`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${I.pattern}`;return`Format inv\xE0lid per a ${D[I.format]??U.format}`}case"not_multiple_of":return`N\xFAmero inv\xE0lid: ha de ser m\xFAltiple de ${U.divisor}`;case"unrecognized_keys":return`Clau${U.keys.length>1?"s":""} no reconeguda${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Clau inv\xE0lida a ${U.origin}`;case"invalid_union":return"Entrada inv\xE0lida";case"invalid_element":return`Element inv\xE0lid a ${U.origin}`;default:return"Entrada inv\xE0lida"}}};var W5=w(()=>{c()});function GA(){return{localeError:TF()}}var TF=()=>{let _={string:{unit:"znak\u016F",verb:"m\xEDt"},file:{unit:"bajt\u016F",verb:"m\xEDt"},array:{unit:"prvk\u016F",verb:"m\xEDt"},set:{unit:"prvk\u016F",verb:"m\xEDt"}};function $(U){return _[U]??null}let D={regex:"regul\xE1rn\xED v\xFDraz",email:"e-mailov\xE1 adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"datum a \u010Das ve form\xE1tu ISO",date:"datum ve form\xE1tu ISO",time:"\u010Das ve form\xE1tu ISO",duration:"doba trv\xE1n\xED ISO",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"rozsah IPv4",cidrv6:"rozsah IPv6",base64:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64",base64url:"\u0159et\u011Bzec zak\xF3dovan\xFD ve form\xE1tu base64url",json_string:"\u0159et\u011Bzec ve form\xE1tu JSON",e164:"\u010D\xEDslo E.164",jwt:"JWT",template_literal:"vstup"},g={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${U.expected}, obdr\u017Eeno ${N}`;return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${I}, obdr\u017Eeno ${N}`}case"invalid_value":if(U.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${K(U.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${I}${U.maximum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${I}${U.minimum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${I.prefix}"`;if(I.format==="ends_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${I.suffix}"`;if(I.format==="includes")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${I.includes}"`;if(I.format==="regex")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${I.pattern}`;return`Neplatn\xFD form\xE1t ${D[I.format]??U.format}`}case"not_multiple_of":return`Neplatn\xE9 \u010D\xEDslo: mus\xED b\xFDt n\xE1sobkem ${U.divisor}`;case"unrecognized_keys":return`Nezn\xE1m\xE9 kl\xED\u010De: ${q(U.keys,", ")}`;case"invalid_key":return`Neplatn\xFD kl\xED\u010D v ${U.origin}`;case"invalid_union":return"Neplatn\xFD vstup";case"invalid_element":return`Neplatn\xE1 hodnota v ${U.origin}`;default:return"Neplatn\xFD vstup"}}};var X5=w(()=>{c()});function RA(){return{localeError:BF()}}var BF=()=>{let _={string:{unit:"tegn",verb:"havde"},file:{unit:"bytes",verb:"havde"},array:{unit:"elementer",verb:"indeholdt"},set:{unit:"elementer",verb:"indeholdt"}};function $(U){return _[U]??null}let D={regex:"input",email:"e-mailadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkesl\xE6t",date:"ISO-dato",time:"ISO-klokkesl\xE6t",duration:"ISO-varighed",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodet streng",base64url:"base64url-kodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},g={nan:"NaN",string:"streng",number:"tal",boolean:"boolean",array:"liste",object:"objekt",set:"s\xE6t",file:"fil"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldigt input: forventede instanceof ${U.expected}, fik ${N}`;return`Ugyldigt input: forventede ${I}, fik ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig v\xE6rdi: forventede ${K(U.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin),N=g[U.origin]??U.origin;if(j)return`For stor: forventede ${N??"value"} ${j.verb} ${I} ${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor: forventede ${N??"value"} havde ${I} ${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin),N=g[U.origin]??U.origin;if(j)return`For lille: forventede ${N} ${j.verb} ${I} ${U.minimum.toString()} ${j.unit}`;return`For lille: forventede ${N} havde ${I} ${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Ugyldig streng: skal starte med "${I.prefix}"`;if(I.format==="ends_with")return`Ugyldig streng: skal ende med "${I.suffix}"`;if(I.format==="includes")return`Ugyldig streng: skal indeholde "${I.includes}"`;if(I.format==="regex")return`Ugyldig streng: skal matche m\xF8nsteret ${I.pattern}`;return`Ugyldig ${D[I.format]??U.format}`}case"not_multiple_of":return`Ugyldigt tal: skal v\xE6re deleligt med ${U.divisor}`;case"unrecognized_keys":return`${U.keys.length>1?"Ukendte n\xF8gler":"Ukendt n\xF8gle"}: ${q(U.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8gle i ${U.origin}`;case"invalid_union":return"Ugyldigt input: matcher ingen af de tilladte typer";case"invalid_element":return`Ugyldig v\xE6rdi i ${U.origin}`;default:return"Ugyldigt input"}}};var G5=w(()=>{c()});function YA(){return{localeError:qF()}}var qF=()=>{let _={string:{unit:"Zeichen",verb:"zu haben"},file:{unit:"Bytes",verb:"zu haben"},array:{unit:"Elemente",verb:"zu haben"},set:{unit:"Elemente",verb:"zu haben"}};function $(U){return _[U]??null}let D={regex:"Eingabe",email:"E-Mail-Adresse",url:"URL",emoji:"Emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-Datum und -Uhrzeit",date:"ISO-Datum",time:"ISO-Uhrzeit",duration:"ISO-Dauer",ipv4:"IPv4-Adresse",ipv6:"IPv6-Adresse",cidrv4:"IPv4-Bereich",cidrv6:"IPv6-Bereich",base64:"Base64-codierter String",base64url:"Base64-URL-codierter String",json_string:"JSON-String",e164:"E.164-Nummer",jwt:"JWT",template_literal:"Eingabe"},g={nan:"NaN",number:"Zahl",array:"Array"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Ung\xFCltige Eingabe: erwartet instanceof ${U.expected}, erhalten ${N}`;return`Ung\xFCltige Eingabe: erwartet ${I}, erhalten ${N}`}case"invalid_value":if(U.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${K(U.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${I}${U.maximum.toString()} ${j.unit??"Elemente"} hat`;return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${I}${U.maximum.toString()} ist`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Zu klein: erwartet, dass ${U.origin} ${I}${U.minimum.toString()} ${j.unit} hat`;return`Zu klein: erwartet, dass ${U.origin} ${I}${U.minimum.toString()} ist`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Ung\xFCltiger String: muss mit "${I.prefix}" beginnen`;if(I.format==="ends_with")return`Ung\xFCltiger String: muss mit "${I.suffix}" enden`;if(I.format==="includes")return`Ung\xFCltiger String: muss "${I.includes}" enthalten`;if(I.format==="regex")return`Ung\xFCltiger String: muss dem Muster ${I.pattern} entsprechen`;return`Ung\xFCltig: ${D[I.format]??U.format}`}case"not_multiple_of":return`Ung\xFCltige Zahl: muss ein Vielfaches von ${U.divisor} sein`;case"unrecognized_keys":return`${U.keys.length>1?"Unbekannte Schl\xFCssel":"Unbekannter Schl\xFCssel"}: ${q(U.keys,", ")}`;case"invalid_key":return`Ung\xFCltiger Schl\xFCssel in ${U.origin}`;case"invalid_union":return"Ung\xFCltige Eingabe";case"invalid_element":return`Ung\xFCltiger Wert in ${U.origin}`;default:return"Ung\xFCltige Eingabe"}}};var R5=w(()=>{c()});function QA(){return{localeError:VF()}}var VF=()=>{let _={string:{unit:"\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},file:{unit:"bytes",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},array:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},set:{unit:"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"},map:{unit:"\u03BA\u03B1\u03C4\u03B1\u03C7\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2",verb:"\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9"}};function $(U){return _[U]??null}let D={regex:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2",email:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1",date:"ISO \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1",time:"ISO \u03CE\u03C1\u03B1",duration:"ISO \u03B4\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1",ipv4:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv4",ipv6:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IPv6",mac:"\u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 MAC",cidrv4:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv4",cidrv6:"\u03B5\u03CD\u03C1\u03BF\u03C2 IPv6",base64:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64",base64url:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7 \u03C3\u03B5 base64url",json_string:"\u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC JSON",e164:"\u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 E.164",jwt:"JWT",template_literal:"\u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(typeof U.expected==="string"&&/^[A-Z]/.test(U.expected))return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD instanceof ${U.expected}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${N}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${I}, \u03BB\u03AE\u03C6\u03B8\u03B7\u03BA\u03B5 ${N}`}case"invalid_value":if(U.values.length===1)return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${K(U.values[0])}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${U.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${I}${U.maximum.toString()} ${j.unit??"\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1"}`;return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B5\u03B3\u03AC\u03BB\u03BF: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${U.origin??"\u03C4\u03B9\u03BC\u03AE"} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${U.origin} \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 ${I}${U.minimum.toString()} ${j.unit}`;return`\u03A0\u03BF\u03BB\u03CD \u03BC\u03B9\u03BA\u03C1\u03CC: \u03B1\u03BD\u03B1\u03BC\u03B5\u03BD\u03CC\u03C4\u03B1\u03BD ${U.origin} \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03BC\u03B5 "${I.prefix}"`;if(I.format==="ends_with")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B5\u03BB\u03B5\u03B9\u03CE\u03BD\u03B5\u03B9 \u03BC\u03B5 "${I.suffix}"`;if(I.format==="includes")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 "${I.includes}"`;if(I.format==="regex")return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C3\u03C5\u03BC\u03B2\u03BF\u03BB\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03BC\u03BF\u03C4\u03AF\u03B2\u03BF ${I.pattern}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${D[I.format]??U.format}`}case"not_multiple_of":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2: \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03AC\u03C3\u03B9\u03BF \u03C4\u03BF\u03C5 ${U.divisor}`;case"unrecognized_keys":return`\u0386\u03B3\u03BD\u03C9\u03C3\u03C4${U.keys.length>1?"\u03B1":"\u03BF"} \u03BA\u03BB\u03B5\u03B9\u03B4${U.keys.length>1?"\u03B9\u03AC":"\u03AF"}: ${q(U.keys,", ")}`;case"invalid_key":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03BB\u03B5\u03B9\u03B4\u03AF \u03C3\u03C4\u03BF ${U.origin}`;case"invalid_union":return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2";case"invalid_element":return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C3\u03C4\u03BF ${U.origin}`;default:return"\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03B7 \u03B5\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2"}}};var Y5=w(()=>{c()});function OU(){return{localeError:FF()}}var FF=()=>{let _={string:{unit:"characters",verb:"to have"},file:{unit:"bytes",verb:"to have"},array:{unit:"items",verb:"to have"},set:{unit:"items",verb:"to have"},map:{unit:"entries",verb:"to have"}};function $(U){return _[U]??null}let D={regex:"input",email:"email address",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datetime",date:"ISO date",time:"ISO time",duration:"ISO duration",ipv4:"IPv4 address",ipv6:"IPv6 address",mac:"MAC address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded string",base64url:"base64url-encoded string",json_string:"JSON string",e164:"E.164 number",jwt:"JWT",template_literal:"input"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;return`Invalid input: expected ${I}, received ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${K(U.values[0])}`;return`Invalid option: expected one of ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Too big: expected ${U.origin??"value"} to have ${I}${U.maximum.toString()} ${j.unit??"elements"}`;return`Too big: expected ${U.origin??"value"} to be ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Too small: expected ${U.origin} to have ${I}${U.minimum.toString()} ${j.unit}`;return`Too small: expected ${U.origin} to be ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Invalid string: must start with "${I.prefix}"`;if(I.format==="ends_with")return`Invalid string: must end with "${I.suffix}"`;if(I.format==="includes")return`Invalid string: must include "${I.includes}"`;if(I.format==="regex")return`Invalid string: must match pattern ${I.pattern}`;return`Invalid ${D[I.format]??U.format}`}case"not_multiple_of":return`Invalid number: must be a multiple of ${U.divisor}`;case"unrecognized_keys":return`Unrecognized key${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Invalid key in ${U.origin}`;case"invalid_union":if(U.options&&Array.isArray(U.options)&&U.options.length>0)return`Invalid discriminator value. Expected ${U.options.map((j)=>`'${j}'`).join(" | ")}`;return"Invalid input";case"invalid_element":return`Invalid value in ${U.origin}`;default:return"Invalid input"}}};var TA=w(()=>{c()});function BA(){return{localeError:KF()}}var KF=()=>{let _={string:{unit:"karaktrojn",verb:"havi"},file:{unit:"bajtojn",verb:"havi"},array:{unit:"elementojn",verb:"havi"},set:{unit:"elementojn",verb:"havi"}};function $(U){return _[U]??null}let D={regex:"enigo",email:"retadreso",url:"URL",emoji:"emo\u011Dio",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datotempo",date:"ISO-dato",time:"ISO-tempo",duration:"ISO-da\u016Dro",ipv4:"IPv4-adreso",ipv6:"IPv6-adreso",cidrv4:"IPv4-rango",cidrv6:"IPv6-rango",base64:"64-ume kodita karaktraro",base64url:"URL-64-ume kodita karaktraro",json_string:"JSON-karaktraro",e164:"E.164-nombro",jwt:"JWT",template_literal:"enigo"},g={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Nevalida enigo: atendi\u011Dis instanceof ${U.expected}, ricevi\u011Dis ${N}`;return`Nevalida enigo: atendi\u011Dis ${I}, ricevi\u011Dis ${N}`}case"invalid_value":if(U.values.length===1)return`Nevalida enigo: atendi\u011Dis ${K(U.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${I}${U.maximum.toString()} ${j.unit??"elementojn"}`;return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Tro malgranda: atendi\u011Dis ke ${U.origin} havu ${I}${U.minimum.toString()} ${j.unit}`;return`Tro malgranda: atendi\u011Dis ke ${U.origin} estu ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Nevalida karaktraro: devas komenci\u011Di per "${I.prefix}"`;if(I.format==="ends_with")return`Nevalida karaktraro: devas fini\u011Di per "${I.suffix}"`;if(I.format==="includes")return`Nevalida karaktraro: devas inkluzivi "${I.includes}"`;if(I.format==="regex")return`Nevalida karaktraro: devas kongrui kun la modelo ${I.pattern}`;return`Nevalida ${D[I.format]??U.format}`}case"not_multiple_of":return`Nevalida nombro: devas esti oblo de ${U.divisor}`;case"unrecognized_keys":return`Nekonata${U.keys.length>1?"j":""} \u015Dlosilo${U.keys.length>1?"j":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Nevalida \u015Dlosilo en ${U.origin}`;case"invalid_union":return"Nevalida enigo";case"invalid_element":return`Nevalida valoro en ${U.origin}`;default:return"Nevalida enigo"}}};var Q5=w(()=>{c()});function qA(){return{localeError:MF()}}var MF=()=>{let _={string:{unit:"caracteres",verb:"tener"},file:{unit:"bytes",verb:"tener"},array:{unit:"elementos",verb:"tener"},set:{unit:"elementos",verb:"tener"}};function $(U){return _[U]??null}let D={regex:"entrada",email:"direcci\xF3n de correo electr\xF3nico",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"fecha y hora ISO",date:"fecha ISO",time:"hora ISO",duration:"duraci\xF3n ISO",ipv4:"direcci\xF3n IPv4",ipv6:"direcci\xF3n IPv6",cidrv4:"rango IPv4",cidrv6:"rango IPv6",base64:"cadena codificada en base64",base64url:"URL codificada en base64",json_string:"cadena JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},g={nan:"NaN",string:"texto",number:"n\xFAmero",boolean:"booleano",array:"arreglo",object:"objeto",set:"conjunto",file:"archivo",date:"fecha",bigint:"n\xFAmero grande",symbol:"s\xEDmbolo",undefined:"indefinido",null:"nulo",function:"funci\xF3n",map:"mapa",record:"registro",tuple:"tupla",enum:"enumeraci\xF3n",union:"uni\xF3n",literal:"literal",promise:"promesa",void:"vac\xEDo",never:"nunca",unknown:"desconocido",any:"cualquiera"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Entrada inv\xE1lida: se esperaba instanceof ${U.expected}, recibido ${N}`;return`Entrada inv\xE1lida: se esperaba ${I}, recibido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: se esperaba ${K(U.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin),N=g[U.origin]??U.origin;if(j)return`Demasiado grande: se esperaba que ${N??"valor"} tuviera ${I}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${N??"valor"} fuera ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin),N=g[U.origin]??U.origin;if(j)return`Demasiado peque\xF1o: se esperaba que ${N} tuviera ${I}${U.minimum.toString()} ${j.unit}`;return`Demasiado peque\xF1o: se esperaba que ${N} fuera ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Cadena inv\xE1lida: debe comenzar con "${I.prefix}"`;if(I.format==="ends_with")return`Cadena inv\xE1lida: debe terminar en "${I.suffix}"`;if(I.format==="includes")return`Cadena inv\xE1lida: debe incluir "${I.includes}"`;if(I.format==="regex")return`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${I.pattern}`;return`Inv\xE1lido ${D[I.format]??U.format}`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: debe ser m\xFAltiplo de ${U.divisor}`;case"unrecognized_keys":return`Llave${U.keys.length>1?"s":""} desconocida${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${g[U.origin]??U.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${g[U.origin]??U.origin}`;default:return"Entrada inv\xE1lida"}}};var T5=w(()=>{c()});function VA(){return{localeError:ZF()}}var ZF=()=>{let _={string:{unit:"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},file:{unit:"\u0628\u0627\u06CC\u062A",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},array:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"},set:{unit:"\u0622\u06CC\u062A\u0645",verb:"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F"}};function $(U){return _[U]??null}let D={regex:"\u0648\u0631\u0648\u062F\u06CC",email:"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644",url:"URL",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",date:"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648",time:"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",duration:"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648",ipv4:"IPv4 \u0622\u062F\u0631\u0633",ipv6:"IPv6 \u0622\u062F\u0631\u0633",cidrv4:"IPv4 \u062F\u0627\u0645\u0646\u0647",cidrv6:"IPv6 \u062F\u0627\u0645\u0646\u0647",base64:"base64-encoded \u0631\u0634\u062A\u0647",base64url:"base64url-encoded \u0631\u0634\u062A\u0647",json_string:"JSON \u0631\u0634\u062A\u0647",e164:"E.164 \u0639\u062F\u062F",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u06CC"},g={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${U.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${N} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${I} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${N} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`}case"invalid_value":if(U.values.length===1)return`\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${K(U.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;return`\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${q(U.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${U.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${I}${U.maximum.toString()} ${j.unit??"\u0639\u0646\u0635\u0631"} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${U.origin??"\u0645\u0642\u062F\u0627\u0631"} \u0628\u0627\u06CC\u062F ${I}${U.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${I}${U.minimum.toString()} ${j.unit} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${I}${U.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${I.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;if(I.format==="ends_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${I.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;if(I.format==="includes")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${I.includes}" \u0628\u0627\u0634\u062F`;if(I.format==="regex")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${I.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;return`${D[I.format]??U.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`}case"not_multiple_of":return`\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${U.divisor} \u0628\u0627\u0634\u062F`;case"unrecognized_keys":return`\u06A9\u0644\u06CC\u062F${U.keys.length>1?"\u0647\u0627\u06CC":""} \u0646\u0627\u0634\u0646\u0627\u0633: ${q(U.keys,", ")}`;case"invalid_key":return`\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${U.origin}`;case"invalid_union":return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631";case"invalid_element":return`\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${U.origin}`;default:return"\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631"}}};var B5=w(()=>{c()});function FA(){return{localeError:bF()}}var bF=()=>{let _={string:{unit:"merkki\xE4",subject:"merkkijonon"},file:{unit:"tavua",subject:"tiedoston"},array:{unit:"alkiota",subject:"listan"},set:{unit:"alkiota",subject:"joukon"},number:{unit:"",subject:"luvun"},bigint:{unit:"",subject:"suuren kokonaisluvun"},int:{unit:"",subject:"kokonaisluvun"},date:{unit:"",subject:"p\xE4iv\xE4m\xE4\xE4r\xE4n"}};function $(U){return _[U]??null}let D={regex:"s\xE4\xE4nn\xF6llinen lauseke",email:"s\xE4hk\xF6postiosoite",url:"URL-osoite",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-aikaleima",date:"ISO-p\xE4iv\xE4m\xE4\xE4r\xE4",time:"ISO-aika",duration:"ISO-kesto",ipv4:"IPv4-osoite",ipv6:"IPv6-osoite",cidrv4:"IPv4-alue",cidrv6:"IPv6-alue",base64:"base64-koodattu merkkijono",base64url:"base64url-koodattu merkkijono",json_string:"JSON-merkkijono",e164:"E.164-luku",jwt:"JWT",template_literal:"templaattimerkkijono"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Virheellinen tyyppi: odotettiin instanceof ${U.expected}, oli ${N}`;return`Virheellinen tyyppi: odotettiin ${I}, oli ${N}`}case"invalid_value":if(U.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${K(U.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Liian suuri: ${j.subject} t\xE4ytyy olla ${I}${U.maximum.toString()} ${j.unit}`.trim();return`Liian suuri: arvon t\xE4ytyy olla ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Liian pieni: ${j.subject} t\xE4ytyy olla ${I}${U.minimum.toString()} ${j.unit}`.trim();return`Liian pieni: arvon t\xE4ytyy olla ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${I.prefix}"`;if(I.format==="ends_with")return`Virheellinen sy\xF6te: t\xE4ytyy loppua "${I.suffix}"`;if(I.format==="includes")return`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${I.includes}"`;if(I.format==="regex")return`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${I.pattern}`;return`Virheellinen ${D[I.format]??U.format}`}case"not_multiple_of":return`Virheellinen luku: t\xE4ytyy olla luvun ${U.divisor} monikerta`;case"unrecognized_keys":return`${U.keys.length>1?"Tuntemattomat avaimet":"Tuntematon avain"}: ${q(U.keys,", ")}`;case"invalid_key":return"Virheellinen avain tietueessa";case"invalid_union":return"Virheellinen unioni";case"invalid_element":return"Virheellinen arvo joukossa";default:return"Virheellinen sy\xF6te"}}};var q5=w(()=>{c()});function KA(){return{localeError:HF()}}var HF=()=>{let _={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function $(U){return _[U]??null}let D={regex:"entr\xE9e",email:"adresse e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date et heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},g={string:"cha\xEEne",number:"nombre",int:"entier",boolean:"bool\xE9en",bigint:"grand entier",symbol:"symbole",undefined:"ind\xE9fini",null:"null",never:"jamais",void:"vide",date:"date",array:"tableau",object:"objet",tuple:"tuple",record:"enregistrement",map:"carte",set:"ensemble",file:"fichier",nonoptional:"non-optionnel",nan:"NaN",function:"fonction"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : instanceof ${U.expected} attendu, ${N} re\xE7u`;return`Entr\xE9e invalide : ${I} attendu, ${N} re\xE7u`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : ${K(U.values[0])} attendu`;return`Option invalide : une valeur parmi ${q(U.values,"|")} attendue`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Trop grand : ${g[U.origin]??"valeur"} doit ${j.verb} ${I}${U.maximum.toString()} ${j.unit??"\xE9l\xE9ment(s)"}`;return`Trop grand : ${g[U.origin]??"valeur"} doit \xEAtre ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Trop petit : ${g[U.origin]??"valeur"} doit ${j.verb} ${I}${U.minimum.toString()} ${j.unit}`;return`Trop petit : ${g[U.origin]??"valeur"} doit \xEAtre ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${I.prefix}"`;if(I.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${I.suffix}"`;if(I.format==="includes")return`Cha\xEEne invalide : doit inclure "${I.includes}"`;if(I.format==="regex")return`Cha\xEEne invalide : doit correspondre au mod\xE8le ${I.pattern}`;return`${D[I.format]??U.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${U.divisor}`;case"unrecognized_keys":return`Cl\xE9${U.keys.length>1?"s":""} non reconnue${U.keys.length>1?"s":""} : ${q(U.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${U.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${U.origin}`;default:return"Entr\xE9e invalide"}}};var V5=w(()=>{c()});function MA(){return{localeError:kF()}}var kF=()=>{let _={string:{unit:"caract\xE8res",verb:"avoir"},file:{unit:"octets",verb:"avoir"},array:{unit:"\xE9l\xE9ments",verb:"avoir"},set:{unit:"\xE9l\xE9ments",verb:"avoir"}};function $(U){return _[U]??null}let D={regex:"entr\xE9e",email:"adresse courriel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"date-heure ISO",date:"date ISO",time:"heure ISO",duration:"dur\xE9e ISO",ipv4:"adresse IPv4",ipv6:"adresse IPv6",cidrv4:"plage IPv4",cidrv6:"plage IPv6",base64:"cha\xEEne encod\xE9e en base64",base64url:"cha\xEEne encod\xE9e en base64url",json_string:"cha\xEEne JSON",e164:"num\xE9ro E.164",jwt:"JWT",template_literal:"entr\xE9e"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : attendu instanceof ${U.expected}, re\xE7u ${N}`;return`Entr\xE9e invalide : attendu ${I}, re\xE7u ${N}`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : attendu ${K(U.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"\u2264":"<",j=$(U.origin);if(j)return`Trop grand : attendu que ${U.origin??"la valeur"} ait ${I}${U.maximum.toString()} ${j.unit}`;return`Trop grand : attendu que ${U.origin??"la valeur"} soit ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?"\u2265":">",j=$(U.origin);if(j)return`Trop petit : attendu que ${U.origin} ait ${I}${U.minimum.toString()} ${j.unit}`;return`Trop petit : attendu que ${U.origin} soit ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${I.prefix}"`;if(I.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${I.suffix}"`;if(I.format==="includes")return`Cha\xEEne invalide : doit inclure "${I.includes}"`;if(I.format==="regex")return`Cha\xEEne invalide : doit correspondre au motif ${I.pattern}`;return`${D[I.format]??U.format} invalide`}case"not_multiple_of":return`Nombre invalide : doit \xEAtre un multiple de ${U.divisor}`;case"unrecognized_keys":return`Cl\xE9${U.keys.length>1?"s":""} non reconnue${U.keys.length>1?"s":""} : ${q(U.keys,", ")}`;case"invalid_key":return`Cl\xE9 invalide dans ${U.origin}`;case"invalid_union":return"Entr\xE9e invalide";case"invalid_element":return`Valeur invalide dans ${U.origin}`;default:return"Entr\xE9e invalide"}}};var F5=w(()=>{c()});function ZA(){return{localeError:CF()}}var CF=()=>{let _={string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA",gender:"f"},number:{label:"\u05DE\u05E1\u05E4\u05E8",gender:"m"},boolean:{label:"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9",gender:"m"},bigint:{label:"BigInt",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA",gender:"m"},array:{label:"\u05DE\u05E2\u05E8\u05DA",gender:"m"},object:{label:"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8",gender:"m"},null:{label:"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)",gender:"m"},undefined:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)",gender:"m"},symbol:{label:"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)",gender:"m"},function:{label:"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4",gender:"f"},map:{label:"\u05DE\u05E4\u05D4 (Map)",gender:"f"},set:{label:"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)",gender:"f"},file:{label:"\u05E7\u05D5\u05D1\u05E5",gender:"m"},promise:{label:"Promise",gender:"m"},NaN:{label:"NaN",gender:"m"},unknown:{label:"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2",gender:"m"},value:{label:"\u05E2\u05E8\u05DA",gender:"m"}},$={string:{unit:"\u05EA\u05D5\u05D5\u05D9\u05DD",shortLabel:"\u05E7\u05E6\u05E8",longLabel:"\u05D0\u05E8\u05D5\u05DA"},file:{unit:"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},array:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},set:{unit:"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"},number:{unit:"",shortLabel:"\u05E7\u05D8\u05DF",longLabel:"\u05D2\u05D3\u05D5\u05DC"}},D=(A)=>A?_[A]:void 0,g=(A)=>{let L=D(A);if(L)return L.label;return A??_.unknown.label},U=(A)=>`\u05D4${g(A)}`,I=(A)=>{return(D(A)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"},j=(A)=>{if(!A)return null;return $[A]??null},N={regex:{label:"\u05E7\u05DC\u05D8",gender:"m"},email:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC",gender:"f"},url:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA",gender:"f"},emoji:{label:"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9",gender:"m"},uuid:{label:"UUID",gender:"m"},nanoid:{label:"nanoid",gender:"m"},guid:{label:"GUID",gender:"m"},cuid:{label:"cuid",gender:"m"},cuid2:{label:"cuid2",gender:"m"},ulid:{label:"ULID",gender:"m"},xid:{label:"XID",gender:"m"},ksuid:{label:"KSUID",gender:"m"},datetime:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO",gender:"m"},date:{label:"\u05EA\u05D0\u05E8\u05D9\u05DA ISO",gender:"m"},time:{label:"\u05D6\u05DE\u05DF ISO",gender:"m"},duration:{label:"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO",gender:"m"},ipv4:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4",gender:"f"},ipv6:{label:"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6",gender:"f"},cidrv4:{label:"\u05D8\u05D5\u05D5\u05D7 IPv4",gender:"m"},cidrv6:{label:"\u05D8\u05D5\u05D5\u05D7 IPv6",gender:"m"},base64:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64",gender:"f"},base64url:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA",gender:"f"},json_string:{label:"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON",gender:"f"},e164:{label:"\u05DE\u05E1\u05E4\u05E8 E.164",gender:"m"},jwt:{label:"JWT",gender:"m"},ends_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},includes:{label:"\u05E7\u05DC\u05D8",gender:"m"},lowercase:{label:"\u05E7\u05DC\u05D8",gender:"m"},starts_with:{label:"\u05E7\u05DC\u05D8",gender:"m"},uppercase:{label:"\u05E7\u05DC\u05D8",gender:"m"}},O={nan:"NaN"};return(A)=>{switch(A.code){case"invalid_type":{let L=A.expected,z=O[L??""]??g(L),W=M(A.input),J=O[W]??_[W]?.label??W;if(/^[A-Z]/.test(A.expected))return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${A.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${J}`;return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${z}, \u05D4\u05EA\u05E7\u05D1\u05DC ${J}`}case"invalid_value":{if(A.values.length===1)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${K(A.values[0])}`;let L=A.values.map((J)=>K(J));if(A.values.length===2)return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${L[0]} \u05D0\u05D5 ${L[1]}`;let z=L[L.length-1];return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${L.slice(0,-1).join(", ")} \u05D0\u05D5 ${z}`}case"too_big":{let L=j(A.origin),z=U(A.origin??"value");if(A.origin==="string")return`${L?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${A.maximum.toString()} ${L?.unit??""} ${A.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(A.origin==="number"){let P=A.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${A.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${A.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${P}`}if(A.origin==="array"||A.origin==="set"){let P=A.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",S=A.inclusive?`${A.maximum} ${L?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${A.maximum} ${L?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${z} ${P} \u05DC\u05D4\u05DB\u05D9\u05DC ${S}`.trim()}let W=A.inclusive?"<=":"<",J=I(A.origin??"value");if(L?.unit)return`${L.longLabel} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.maximum.toString()} ${L.unit}`;return`${L?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.maximum.toString()}`}case"too_small":{let L=j(A.origin),z=U(A.origin??"value");if(A.origin==="string")return`${L?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${A.minimum.toString()} ${L?.unit??""} ${A.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(A.origin==="number"){let P=A.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${A.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${A.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${z} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${P}`}if(A.origin==="array"||A.origin==="set"){let P=A.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(A.minimum===1&&A.inclusive){let X=A.origin==="set"?"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3":"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3";return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${z} ${P} \u05DC\u05D4\u05DB\u05D9\u05DC ${X}`}let S=A.inclusive?`${A.minimum} ${L?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${A.minimum} ${L?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${z} ${P} \u05DC\u05D4\u05DB\u05D9\u05DC ${S}`.trim()}let W=A.inclusive?">=":">",J=I(A.origin??"value");if(L?.unit)return`${L.shortLabel} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.minimum.toString()} ${L.unit}`;return`${L?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${z} ${J} ${W}${A.minimum.toString()}`}case"invalid_format":{let L=A;if(L.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${L.prefix}"`;if(L.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${L.suffix}"`;if(L.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${L.includes}"`;if(L.format==="regex")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${L.pattern}`;let z=N[L.format],W=z?.label??L.format,P=(z?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${W} \u05DC\u05D0 ${P}`}case"not_multiple_of":return`\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${A.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${A.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${A.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${q(A.keys,", ")}`;case"invalid_key":return"\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8";case"invalid_union":return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF";case"invalid_element":return`\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${U(A.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};var K5=w(()=>{c()});function bA(){return{localeError:vF()}}var vF=()=>{let _={string:{unit:"znakova",verb:"imati"},file:{unit:"bajtova",verb:"imati"},array:{unit:"stavki",verb:"imati"},set:{unit:"stavki",verb:"imati"}};function $(U){return _[U]??null}let D={regex:"unos",email:"email adresa",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum i vrijeme",date:"ISO datum",time:"ISO vrijeme",duration:"ISO trajanje",ipv4:"IPv4 adresa",ipv6:"IPv6 adresa",cidrv4:"IPv4 raspon",cidrv6:"IPv6 raspon",base64:"base64 kodirani tekst",base64url:"base64url kodirani tekst",json_string:"JSON tekst",e164:"E.164 broj",jwt:"JWT",template_literal:"unos"},g={nan:"NaN",string:"tekst",number:"broj",boolean:"boolean",array:"niz",object:"objekt",set:"skup",file:"datoteka",date:"datum",bigint:"bigint",symbol:"simbol",undefined:"undefined",null:"null",function:"funkcija",map:"mapa"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Neispravan unos: o\u010Dekuje se instanceof ${U.expected}, a primljeno je ${N}`;return`Neispravan unos: o\u010Dekuje se ${I}, a primljeno je ${N}`}case"invalid_value":if(U.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${K(U.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin),N=g[U.origin]??U.origin;if(j)return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} ima ${I}${U.maximum.toString()} ${j.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} bude ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin),N=g[U.origin]??U.origin;if(j)return`Premalo: o\u010Dekivano da ${N} ima ${I}${U.minimum.toString()} ${j.unit}`;return`Premalo: o\u010Dekivano da ${N} bude ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Neispravan tekst: mora zapo\u010Dinjati s "${I.prefix}"`;if(I.format==="ends_with")return`Neispravan tekst: mora zavr\u0161avati s "${I.suffix}"`;if(I.format==="includes")return`Neispravan tekst: mora sadr\u017Eavati "${I.includes}"`;if(I.format==="regex")return`Neispravan tekst: mora odgovarati uzorku ${I.pattern}`;return`Neispravna ${D[I.format]??U.format}`}case"not_multiple_of":return`Neispravan broj: mora biti vi\u0161ekratnik od ${U.divisor}`;case"unrecognized_keys":return`Neprepoznat${U.keys.length>1?"i klju\u010Devi":" klju\u010D"}: ${q(U.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${g[U.origin]??U.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${g[U.origin]??U.origin}`;default:return"Neispravan unos"}}};var M5=w(()=>{c()});function HA(){return{localeError:fF()}}var fF=()=>{let _={string:{unit:"karakter",verb:"legyen"},file:{unit:"byte",verb:"legyen"},array:{unit:"elem",verb:"legyen"},set:{unit:"elem",verb:"legyen"}};function $(U){return _[U]??null}let D={regex:"bemenet",email:"email c\xEDm",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO id\u0151b\xE9lyeg",date:"ISO d\xE1tum",time:"ISO id\u0151",duration:"ISO id\u0151intervallum",ipv4:"IPv4 c\xEDm",ipv6:"IPv6 c\xEDm",cidrv4:"IPv4 tartom\xE1ny",cidrv6:"IPv6 tartom\xE1ny",base64:"base64-k\xF3dolt string",base64url:"base64url-k\xF3dolt string",json_string:"JSON string",e164:"E.164 sz\xE1m",jwt:"JWT",template_literal:"bemenet"},g={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k instanceof ${U.expected}, a kapott \xE9rt\xE9k ${N}`;return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${I}, a kapott \xE9rt\xE9k ${N}`}case"invalid_value":if(U.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${K(U.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`T\xFAl nagy: ${U.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${I}${U.maximum.toString()} ${j.unit??"elem"}`;return`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${U.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} m\xE9rete t\xFAl kicsi ${I}${U.minimum.toString()} ${j.unit}`;return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} t\xFAl kicsi ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\xC9rv\xE9nytelen string: "${I.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`;if(I.format==="ends_with")return`\xC9rv\xE9nytelen string: "${I.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`;if(I.format==="includes")return`\xC9rv\xE9nytelen string: "${I.includes}" \xE9rt\xE9ket kell tartalmaznia`;if(I.format==="regex")return`\xC9rv\xE9nytelen string: ${I.pattern} mint\xE1nak kell megfelelnie`;return`\xC9rv\xE9nytelen ${D[I.format]??U.format}`}case"not_multiple_of":return`\xC9rv\xE9nytelen sz\xE1m: ${U.divisor} t\xF6bbsz\xF6r\xF6s\xE9nek kell lennie`;case"unrecognized_keys":return`Ismeretlen kulcs${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`\xC9rv\xE9nytelen kulcs ${U.origin}`;case"invalid_union":return"\xC9rv\xE9nytelen bemenet";case"invalid_element":return`\xC9rv\xE9nytelen \xE9rt\xE9k: ${U.origin}`;default:return"\xC9rv\xE9nytelen bemenet"}}};var Z5=w(()=>{c()});function b5(_,$,D){return Math.abs(_)===1?$:D}function r0(_){if(!_)return"";let $=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],D=_[_.length-1];return _+($.includes(D)?"\u0576":"\u0568")}function kA(){return{localeError:wF()}}var wF=()=>{let _={string:{unit:{one:"\u0576\u0577\u0561\u0576",many:"\u0576\u0577\u0561\u0576\u0576\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},file:{unit:{one:"\u0562\u0561\u0575\u0569",many:"\u0562\u0561\u0575\u0569\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},array:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"},set:{unit:{one:"\u057F\u0561\u0580\u0580",many:"\u057F\u0561\u0580\u0580\u0565\u0580"},verb:"\u0578\u0582\u0576\u0565\u0576\u0561\u056C"}};function $(U){return _[U]??null}let D={regex:"\u0574\u0578\u0582\u057F\u0584",email:"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565",url:"URL",emoji:"\u0567\u0574\u0578\u057B\u056B",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574",date:"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E",time:"ISO \u056A\u0561\u0574",duration:"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576",ipv4:"IPv4 \u0570\u0561\u057D\u0581\u0565",ipv6:"IPv6 \u0570\u0561\u057D\u0581\u0565",cidrv4:"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",cidrv6:"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584",base64:"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",base64url:"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572",json_string:"JSON \u057F\u0578\u0572",e164:"E.164 \u0570\u0561\u0574\u0561\u0580",jwt:"JWT",template_literal:"\u0574\u0578\u0582\u057F\u0584"},g={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${U.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${N}`;return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${I}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${N}`}case"invalid_value":if(U.values.length===1)return`\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${K(U.values[1])}`;return`\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),O=b5(N,j.unit.one,j.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${r0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${I}${U.maximum.toString()} ${O}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${r0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),O=b5(N,j.unit.one,j.unit.many);return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${r0(U.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${I}${U.minimum.toString()} ${O}`}return`\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${r0(U.origin)} \u056C\u056B\u0576\u056B ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${I.prefix}"-\u0578\u057E`;if(I.format==="ends_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${I.suffix}"-\u0578\u057E`;if(I.format==="includes")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B "${I.includes}"`;if(I.format==="regex")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${I.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;return`\u054D\u056D\u0561\u056C ${D[I.format]??U.format}`}case"not_multiple_of":return`\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${U.divisor}-\u056B`;case"unrecognized_keys":return`\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${U.keys.length>1?"\u0576\u0565\u0580":""}. ${q(U.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${r0(U.origin)}-\u0578\u0582\u0574`;case"invalid_union":return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574";case"invalid_element":return`\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${r0(U.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};var H5=w(()=>{c()});function CA(){return{localeError:rF()}}var rF=()=>{let _={string:{unit:"karakter",verb:"memiliki"},file:{unit:"byte",verb:"memiliki"},array:{unit:"item",verb:"memiliki"},set:{unit:"item",verb:"memiliki"}};function $(U){return _[U]??null}let D={regex:"input",email:"alamat email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tanggal dan waktu format ISO",date:"tanggal format ISO",time:"jam format ISO",duration:"durasi format ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"rentang alamat IPv4",cidrv6:"rentang alamat IPv6",base64:"string dengan enkode base64",base64url:"string dengan enkode base64url",json_string:"string JSON",e164:"angka E.164",jwt:"JWT",template_literal:"input"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak valid: diharapkan instanceof ${U.expected}, diterima ${N}`;return`Input tidak valid: diharapkan ${I}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak valid: diharapkan ${K(U.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: diharapkan ${U.origin??"value"} memiliki ${I}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: diharapkan ${U.origin??"value"} menjadi ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: diharapkan ${U.origin} memiliki ${I}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: diharapkan ${U.origin} menjadi ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`String tidak valid: harus dimulai dengan "${I.prefix}"`;if(I.format==="ends_with")return`String tidak valid: harus berakhir dengan "${I.suffix}"`;if(I.format==="includes")return`String tidak valid: harus menyertakan "${I.includes}"`;if(I.format==="regex")return`String tidak valid: harus sesuai pola ${I.pattern}`;return`${D[I.format]??U.format} tidak valid`}case"not_multiple_of":return`Angka tidak valid: harus kelipatan dari ${U.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali ${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Kunci tidak valid di ${U.origin}`;case"invalid_union":return"Input tidak valid";case"invalid_element":return`Nilai tidak valid di ${U.origin}`;default:return"Input tidak valid"}}};var k5=w(()=>{c()});function vA(){return{localeError:uF()}}var uF=()=>{let _={string:{unit:"stafi",verb:"a\xF0 hafa"},file:{unit:"b\xE6ti",verb:"a\xF0 hafa"},array:{unit:"hluti",verb:"a\xF0 hafa"},set:{unit:"hluti",verb:"a\xF0 hafa"}};function $(U){return _[U]??null}let D={regex:"gildi",email:"netfang",url:"vefsl\xF3\xF0",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dagsetning og t\xEDmi",date:"ISO dagsetning",time:"ISO t\xEDmi",duration:"ISO t\xEDmalengd",ipv4:"IPv4 address",ipv6:"IPv6 address",cidrv4:"IPv4 range",cidrv6:"IPv6 range",base64:"base64-encoded strengur",base64url:"base64url-encoded strengur",json_string:"JSON strengur",e164:"E.164 t\xF6lugildi",jwt:"JWT",template_literal:"gildi"},g={nan:"NaN",number:"n\xFAmer",array:"fylki"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Rangt gildi: \xDE\xFA sl\xF3st inn ${N} \xFEar sem \xE1 a\xF0 vera instanceof ${U.expected}`;return`Rangt gildi: \xDE\xFA sl\xF3st inn ${N} \xFEar sem \xE1 a\xF0 vera ${I}`}case"invalid_value":if(U.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${K(U.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} hafi ${I}${U.maximum.toString()} ${j.unit??"hluti"}`;return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} s\xE9 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} hafi ${I}${U.minimum.toString()} ${j.unit}`;return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} s\xE9 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${I.prefix}"`;if(I.format==="ends_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${I.suffix}"`;if(I.format==="includes")return`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${I.includes}"`;if(I.format==="regex")return`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${I.pattern}`;return`Rangt ${D[I.format]??U.format}`}case"not_multiple_of":return`R\xF6ng tala: ver\xF0ur a\xF0 vera margfeldi af ${U.divisor}`;case"unrecognized_keys":return`\xD3\xFEekkt ${U.keys.length>1?"ir lyklar":"ur lykill"}: ${q(U.keys,", ")}`;case"invalid_key":return`Rangur lykill \xED ${U.origin}`;case"invalid_union":return"Rangt gildi";case"invalid_element":return`Rangt gildi \xED ${U.origin}`;default:return"Rangt gildi"}}};var C5=w(()=>{c()});function fA(){return{localeError:xF()}}var xF=()=>{let _={string:{unit:"caratteri",verb:"avere"},file:{unit:"byte",verb:"avere"},array:{unit:"elementi",verb:"avere"},set:{unit:"elementi",verb:"avere"}};function $(U){return _[U]??null}let D={regex:"input",email:"indirizzo email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e ora ISO",date:"data ISO",time:"ora ISO",duration:"durata ISO",ipv4:"indirizzo IPv4",ipv6:"indirizzo IPv6",cidrv4:"intervallo IPv4",cidrv6:"intervallo IPv6",base64:"stringa codificata in base64",base64url:"URL codificata in base64",json_string:"stringa JSON",e164:"numero E.164",jwt:"JWT",template_literal:"input"},g={nan:"NaN",number:"numero",array:"vettore"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Input non valido: atteso instanceof ${U.expected}, ricevuto ${N}`;return`Input non valido: atteso ${I}, ricevuto ${N}`}case"invalid_value":if(U.values.length===1)return`Input non valido: atteso ${K(U.values[0])}`;return`Opzione non valida: atteso uno tra ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Troppo grande: ${U.origin??"valore"} deve avere ${I}${U.maximum.toString()} ${j.unit??"elementi"}`;return`Troppo grande: ${U.origin??"valore"} deve essere ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Troppo piccolo: ${U.origin} deve avere ${I}${U.minimum.toString()} ${j.unit}`;return`Troppo piccolo: ${U.origin} deve essere ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Stringa non valida: deve iniziare con "${I.prefix}"`;if(I.format==="ends_with")return`Stringa non valida: deve terminare con "${I.suffix}"`;if(I.format==="includes")return`Stringa non valida: deve includere "${I.includes}"`;if(I.format==="regex")return`Stringa non valida: deve corrispondere al pattern ${I.pattern}`;return`Input non valido: ${D[I.format]??U.format}`}case"not_multiple_of":return`Numero non valido: deve essere un multiplo di ${U.divisor}`;case"unrecognized_keys":return`Chiav${U.keys.length>1?"i":"e"} non riconosciut${U.keys.length>1?"e":"a"}: ${q(U.keys,", ")}`;case"invalid_key":return`Chiave non valida in ${U.origin}`;case"invalid_union":return"Input non valido";case"invalid_element":return`Valore non valido in ${U.origin}`;default:return"Input non valido"}}};var v5=w(()=>{c()});function wA(){return{localeError:yF()}}var yF=()=>{let _={string:{unit:"\u6587\u5B57",verb:"\u3067\u3042\u308B"},file:{unit:"\u30D0\u30A4\u30C8",verb:"\u3067\u3042\u308B"},array:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"},set:{unit:"\u8981\u7D20",verb:"\u3067\u3042\u308B"}};function $(U){return _[U]??null}let D={regex:"\u5165\u529B\u5024",email:"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9",url:"URL",emoji:"\u7D75\u6587\u5B57",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u6642",date:"ISO\u65E5\u4ED8",time:"ISO\u6642\u523B",duration:"ISO\u671F\u9593",ipv4:"IPv4\u30A2\u30C9\u30EC\u30B9",ipv6:"IPv6\u30A2\u30C9\u30EC\u30B9",cidrv4:"IPv4\u7BC4\u56F2",cidrv6:"IPv6\u7BC4\u56F2",base64:"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",base64url:"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217",json_string:"JSON\u6587\u5B57\u5217",e164:"E.164\u756A\u53F7",jwt:"JWT",template_literal:"\u5165\u529B\u5024"},g={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u7121\u52B9\u306A\u5165\u529B: instanceof ${U.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${N}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u5165\u529B: ${I}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${N}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}case"invalid_value":if(U.values.length===1)return`\u7121\u52B9\u306A\u5165\u529B: ${K(U.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${q(U.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let I=U.inclusive?"\u4EE5\u4E0B\u3067\u3042\u308B":"\u3088\u308A\u5C0F\u3055\u3044",j=$(U.origin);if(j)return`\u5927\u304D\u3059\u304E\u308B\u5024: ${U.origin??"\u5024"}\u306F${U.maximum.toString()}${j.unit??"\u8981\u7D20"}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5927\u304D\u3059\u304E\u308B\u5024: ${U.origin??"\u5024"}\u306F${U.maximum.toString()}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let I=U.inclusive?"\u4EE5\u4E0A\u3067\u3042\u308B":"\u3088\u308A\u5927\u304D\u3044",j=$(U.origin);if(j)return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${U.origin}\u306F${U.minimum.toString()}${j.unit}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${U.origin}\u306F${U.minimum.toString()}${I}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${I.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(I.format==="ends_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${I.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(I.format==="includes")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${I.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(I.format==="regex")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${I.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u7121\u52B9\u306A${D[I.format]??U.format}`}case"not_multiple_of":return`\u7121\u52B9\u306A\u6570\u5024: ${U.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"unrecognized_keys":return`\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${U.keys.length>1?"\u7FA4":""}: ${q(U.keys,"\u3001")}`;case"invalid_key":return`${U.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;case"invalid_union":return"\u7121\u52B9\u306A\u5165\u529B";case"invalid_element":return`${U.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;default:return"\u7121\u52B9\u306A\u5165\u529B"}}};var f5=w(()=>{c()});function rA(){return{localeError:hF()}}var hF=()=>{let _={string:{unit:"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},file:{unit:"\u10D1\u10D0\u10D8\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},array:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"},set:{unit:"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8",verb:"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1"}};function $(U){return _[U]??null}let D={regex:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0",email:"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",url:"URL",emoji:"\u10D4\u10DB\u10DD\u10EF\u10D8",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD",date:"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8",time:"\u10D3\u10E0\u10DD",duration:"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0",ipv4:"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",ipv6:"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8",cidrv4:"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",cidrv6:"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8",base64:"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",base64url:"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10D5\u10D4\u10DA\u10D8",json_string:"JSON \u10D5\u10D4\u10DA\u10D8",e164:"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8",jwt:"JWT",template_literal:"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"},g={nan:"NaN",number:"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8",string:"\u10D5\u10D4\u10DA\u10D8",boolean:"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8",function:"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0",array:"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${U.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${N}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${I}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${N}`}case"invalid_value":if(U.values.length===1)return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${K(U.values[0])}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${q(U.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${U.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} ${j.verb} ${I}${U.maximum.toString()} ${j.unit}`;return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${U.origin??"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0"} \u10D8\u10E7\u10DD\u10E1 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${U.origin} ${j.verb} ${I}${U.minimum.toString()} ${j.unit}`;return`\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${U.origin} \u10D8\u10E7\u10DD\u10E1 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${I.prefix}"-\u10D8\u10D7`;if(I.format==="ends_with")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 "${I.suffix}"-\u10D8\u10D7`;if(I.format==="includes")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 "${I.includes}"-\u10E1`;if(I.format==="regex")return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D4\u10DA\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${I.pattern}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${U.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;case"unrecognized_keys":return`\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${U.keys.length>1?"\u10D4\u10D1\u10D8":"\u10D8"}: ${q(U.keys,", ")}`;case"invalid_key":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${U.origin}-\u10E8\u10D8`;case"invalid_union":return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0";case"invalid_element":return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${U.origin}-\u10E8\u10D8`;default:return"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0"}}};var w5=w(()=>{c()});function AU(){return{localeError:cF()}}var cF=()=>{let _={string:{unit:"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},file:{unit:"\u1794\u17C3",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},array:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"},set:{unit:"\u1792\u17B6\u178F\u17BB",verb:"\u1782\u17BD\u179A\u1798\u17B6\u1793"}};function $(U){return _[U]??null}let D={regex:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B",email:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B",url:"URL",emoji:"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO",date:"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO",time:"\u1798\u17C9\u17C4\u1784 ISO",duration:"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO",ipv4:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",ipv6:"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",cidrv4:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4",cidrv6:"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6",base64:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64",base64url:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url",json_string:"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON",e164:"\u179B\u17C1\u1781 E.164",jwt:"JWT",template_literal:"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B"},g={nan:"NaN",number:"\u179B\u17C1\u1781",array:"\u17A2\u17B6\u179A\u17C1 (Array)",null:"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${U.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${N}`;return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${I} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${N}`}case"invalid_value":if(U.values.length===1)return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${K(U.values[0])}`;return`\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${I} ${U.maximum.toString()} ${j.unit??"\u1792\u17B6\u178F\u17BB"}`;return`\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin??"\u178F\u1798\u17D2\u179B\u17C3"} ${I} ${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin} ${I} ${U.minimum.toString()} ${j.unit}`;return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin} ${I} ${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 "${I.prefix}"`;if(I.format==="ends_with")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 "${I.suffix}"`;if(I.format==="includes")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 "${I.includes}"`;if(I.format==="regex")return`\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${I.pattern}`;return`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${U.divisor}`;case"unrecognized_keys":return`\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${q(U.keys,", ")}`;case"invalid_key":return`\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${U.origin}`;case"invalid_union":return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C";case"invalid_element":return`\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${U.origin}`;default:return"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C"}}};var uA=w(()=>{c()});function xA(){return AU()}var r5=w(()=>{uA()});function yA(){return{localeError:nF()}}var nF=()=>{let _={string:{unit:"\uBB38\uC790",verb:"to have"},file:{unit:"\uBC14\uC774\uD2B8",verb:"to have"},array:{unit:"\uAC1C",verb:"to have"},set:{unit:"\uAC1C",verb:"to have"}};function $(U){return _[U]??null}let D={regex:"\uC785\uB825",email:"\uC774\uBA54\uC77C \uC8FC\uC18C",url:"URL",emoji:"\uC774\uBAA8\uC9C0",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \uB0A0\uC9DC\uC2DC\uAC04",date:"ISO \uB0A0\uC9DC",time:"ISO \uC2DC\uAC04",duration:"ISO \uAE30\uAC04",ipv4:"IPv4 \uC8FC\uC18C",ipv6:"IPv6 \uC8FC\uC18C",cidrv4:"IPv4 \uBC94\uC704",cidrv6:"IPv6 \uBC94\uC704",base64:"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",base64url:"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4",json_string:"JSON \uBB38\uC790\uC5F4",e164:"E.164 \uBC88\uD638",jwt:"JWT",template_literal:"\uC785\uB825"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${U.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${N}\uC785\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${I}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${N}\uC785\uB2C8\uB2E4`}case"invalid_value":if(U.values.length===1)return`\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${K(U.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${q(U.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let I=U.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",j=I==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),O=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()}${O} ${I}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()} ${I}${j}`}case"too_small":{let I=U.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",j=I==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),O=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()}${O} ${I}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()} ${I}${j}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${I.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;if(I.format==="ends_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${I.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;if(I.format==="includes")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${I.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;if(I.format==="regex")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${I.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C ${D[I.format]??U.format}`}case"not_multiple_of":return`\uC798\uBABB\uB41C \uC22B\uC790: ${U.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"unrecognized_keys":return`\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${q(U.keys,", ")}`;case"invalid_key":return`\uC798\uBABB\uB41C \uD0A4: ${U.origin}`;case"invalid_union":return"\uC798\uBABB\uB41C \uC785\uB825";case"invalid_element":return`\uC798\uBABB\uB41C \uAC12: ${U.origin}`;default:return"\uC798\uBABB\uB41C \uC785\uB825"}}};var u5=w(()=>{c()});function x5(_){let $=Math.abs(_),D=$%10,g=$%100;if(g>=11&&g<=19||D===0)return"many";if(D===1)return"one";return"few"}function hA(){return{localeError:dF()}}var LU=(_)=>{return _.charAt(0).toUpperCase()+_.slice(1)},dF=()=>{let _={string:{unit:{one:"simbolis",few:"simboliai",many:"simboli\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne ilgesn\u0117 kaip",notInclusive:"turi b\u016Bti trumpesn\u0117 kaip"},bigger:{inclusive:"turi b\u016Bti ne trumpesn\u0117 kaip",notInclusive:"turi b\u016Bti ilgesn\u0117 kaip"}}},file:{unit:{one:"baitas",few:"baitai",many:"bait\u0173"},verb:{smaller:{inclusive:"turi b\u016Bti ne didesnis kaip",notInclusive:"turi b\u016Bti ma\u017Eesnis kaip"},bigger:{inclusive:"turi b\u016Bti ne ma\u017Eesnis kaip",notInclusive:"turi b\u016Bti didesnis kaip"}}},array:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}},set:{unit:{one:"element\u0105",few:"elementus",many:"element\u0173"},verb:{smaller:{inclusive:"turi tur\u0117ti ne daugiau kaip",notInclusive:"turi tur\u0117ti ma\u017Eiau kaip"},bigger:{inclusive:"turi tur\u0117ti ne ma\u017Eiau kaip",notInclusive:"turi tur\u0117ti daugiau kaip"}}}};function $(U,I,j,N){let O=_[U]??null;if(O===null)return O;return{unit:O.unit[I],verb:O.verb[N][j?"inclusive":"notInclusive"]}}let D={regex:"\u012Fvestis",email:"el. pa\u0161to adresas",url:"URL",emoji:"jaustukas",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO data ir laikas",date:"ISO data",time:"ISO laikas",duration:"ISO trukm\u0117",ipv4:"IPv4 adresas",ipv6:"IPv6 adresas",cidrv4:"IPv4 tinklo prefiksas (CIDR)",cidrv6:"IPv6 tinklo prefiksas (CIDR)",base64:"base64 u\u017Ekoduota eilut\u0117",base64url:"base64url u\u017Ekoduota eilut\u0117",json_string:"JSON eilut\u0117",e164:"E.164 numeris",jwt:"JWT",template_literal:"\u012Fvestis"},g={nan:"NaN",number:"skai\u010Dius",bigint:"sveikasis skai\u010Dius",string:"eilut\u0117",boolean:"login\u0117 reik\u0161m\u0117",undefined:"neapibr\u0117\u017Eta reik\u0161m\u0117",function:"funkcija",symbol:"simbolis",array:"masyvas",object:"objektas",null:"nulin\u0117 reik\u0161m\u0117"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Gautas tipas ${N}, o tik\u0117tasi - instanceof ${U.expected}`;return`Gautas tipas ${N}, o tik\u0117tasi - ${I}`}case"invalid_value":if(U.values.length===1)return`Privalo b\u016Bti ${K(U.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${q(U.values,"|")} pasirinkim\u0173`;case"too_big":{let I=g[U.origin]??U.origin,j=$(U.origin,x5(Number(U.maximum)),U.inclusive??!1,"smaller");if(j?.verb)return`${LU(I??U.origin??"reik\u0161m\u0117")} ${j.verb} ${U.maximum.toString()} ${j.unit??"element\u0173"}`;let N=U.inclusive?"ne didesnis kaip":"ma\u017Eesnis kaip";return`${LU(I??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.maximum.toString()} ${j?.unit}`}case"too_small":{let I=g[U.origin]??U.origin,j=$(U.origin,x5(Number(U.minimum)),U.inclusive??!1,"bigger");if(j?.verb)return`${LU(I??U.origin??"reik\u0161m\u0117")} ${j.verb} ${U.minimum.toString()} ${j.unit??"element\u0173"}`;let N=U.inclusive?"ne ma\u017Eesnis kaip":"didesnis kaip";return`${LU(I??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.minimum.toString()} ${j?.unit}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Eilut\u0117 privalo prasid\u0117ti "${I.prefix}"`;if(I.format==="ends_with")return`Eilut\u0117 privalo pasibaigti "${I.suffix}"`;if(I.format==="includes")return`Eilut\u0117 privalo \u012Ftraukti "${I.includes}"`;if(I.format==="regex")return`Eilut\u0117 privalo atitikti ${I.pattern}`;return`Neteisingas ${D[I.format]??U.format}`}case"not_multiple_of":return`Skai\u010Dius privalo b\u016Bti ${U.divisor} kartotinis.`;case"unrecognized_keys":return`Neatpa\u017Eint${U.keys.length>1?"i":"as"} rakt${U.keys.length>1?"ai":"as"}: ${q(U.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let I=g[U.origin]??U.origin;return`${LU(I??U.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};var y5=w(()=>{c()});function cA(){return{localeError:mF()}}var mF=()=>{let _={string:{unit:"\u0437\u043D\u0430\u0446\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},file:{unit:"\u0431\u0430\u0458\u0442\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},array:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"},set:{unit:"\u0441\u0442\u0430\u0432\u043A\u0438",verb:"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442"}};function $(U){return _[U]??null}let D={regex:"\u0432\u043D\u0435\u0441",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430",url:"URL",emoji:"\u0435\u043C\u043E\u045F\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435",date:"ISO \u0434\u0430\u0442\u0443\u043C",time:"ISO \u0432\u0440\u0435\u043C\u0435",duration:"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430",cidrv4:"IPv4 \u043E\u043F\u0441\u0435\u0433",cidrv6:"IPv6 \u043E\u043F\u0441\u0435\u0433",base64:"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",base64url:"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430",json_string:"JSON \u043D\u0438\u0437\u0430",e164:"E.164 \u0431\u0440\u043E\u0458",jwt:"JWT",template_literal:"\u0432\u043D\u0435\u0441"},g={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${U.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`;return`\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${I}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${K(U.values[0])}`;return`\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${U.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0438\u043C\u0430 ${I}${U.maximum.toString()} ${j.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438"}`;return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${U.origin??"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${U.origin} \u0434\u0430 \u0438\u043C\u0430 ${I}${U.minimum.toString()} ${j.unit}`;return`\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${U.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${I.pattern}`;return`Invalid ${D[I.format]??U.format}`}case"not_multiple_of":return`\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${U.divisor}`;case"unrecognized_keys":return`${U.keys.length>1?"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438":"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447"}: ${q(U.keys,", ")}`;case"invalid_key":return`\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${U.origin}`;case"invalid_union":return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441";case"invalid_element":return`\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${U.origin}`;default:return"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441"}}};var h5=w(()=>{c()});function nA(){return{localeError:iF()}}var iF=()=>{let _={string:{unit:"aksara",verb:"mempunyai"},file:{unit:"bait",verb:"mempunyai"},array:{unit:"elemen",verb:"mempunyai"},set:{unit:"elemen",verb:"mempunyai"}};function $(U){return _[U]??null}let D={regex:"input",email:"alamat e-mel",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"tarikh masa ISO",date:"tarikh ISO",time:"masa ISO",duration:"tempoh ISO",ipv4:"alamat IPv4",ipv6:"alamat IPv6",cidrv4:"julat IPv4",cidrv6:"julat IPv6",base64:"string dikodkan base64",base64url:"string dikodkan base64url",json_string:"string JSON",e164:"nombor E.164",jwt:"JWT",template_literal:"input"},g={nan:"NaN",number:"nombor"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak sah: dijangka instanceof ${U.expected}, diterima ${N}`;return`Input tidak sah: dijangka ${I}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak sah: dijangka ${K(U.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: dijangka ${U.origin??"nilai"} ${j.verb} ${I}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: dijangka ${U.origin??"nilai"} adalah ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: dijangka ${U.origin} ${j.verb} ${I}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: dijangka ${U.origin} adalah ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`String tidak sah: mesti bermula dengan "${I.prefix}"`;if(I.format==="ends_with")return`String tidak sah: mesti berakhir dengan "${I.suffix}"`;if(I.format==="includes")return`String tidak sah: mesti mengandungi "${I.includes}"`;if(I.format==="regex")return`String tidak sah: mesti sepadan dengan corak ${I.pattern}`;return`${D[I.format]??U.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${U.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${q(U.keys,", ")}`;case"invalid_key":return`Kunci tidak sah dalam ${U.origin}`;case"invalid_union":return"Input tidak sah";case"invalid_element":return`Nilai tidak sah dalam ${U.origin}`;default:return"Input tidak sah"}}};var c5=w(()=>{c()});function dA(){return{localeError:lF()}}var lF=()=>{let _={string:{unit:"tekens",verb:"heeft"},file:{unit:"bytes",verb:"heeft"},array:{unit:"elementen",verb:"heeft"},set:{unit:"elementen",verb:"heeft"}};function $(U){return _[U]??null}let D={regex:"invoer",email:"emailadres",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum en tijd",date:"ISO datum",time:"ISO tijd",duration:"ISO duur",ipv4:"IPv4-adres",ipv6:"IPv6-adres",cidrv4:"IPv4-bereik",cidrv6:"IPv6-bereik",base64:"base64-gecodeerde tekst",base64url:"base64 URL-gecodeerde tekst",json_string:"JSON string",e164:"E.164-nummer",jwt:"JWT",template_literal:"invoer"},g={nan:"NaN",number:"getal"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Ongeldige invoer: verwacht instanceof ${U.expected}, ontving ${N}`;return`Ongeldige invoer: verwacht ${I}, ontving ${N}`}case"invalid_value":if(U.values.length===1)return`Ongeldige invoer: verwacht ${K(U.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin),N=U.origin==="date"?"laat":U.origin==="string"?"lang":"groot";if(j)return`Te ${N}: verwacht dat ${U.origin??"waarde"} ${I}${U.maximum.toString()} ${j.unit??"elementen"} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin??"waarde"} ${I}${U.maximum.toString()} is`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin),N=U.origin==="date"?"vroeg":U.origin==="string"?"kort":"klein";if(j)return`Te ${N}: verwacht dat ${U.origin} ${I}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin} ${I}${U.minimum.toString()} is`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Ongeldige tekst: moet met "${I.prefix}" beginnen`;if(I.format==="ends_with")return`Ongeldige tekst: moet op "${I.suffix}" eindigen`;if(I.format==="includes")return`Ongeldige tekst: moet "${I.includes}" bevatten`;if(I.format==="regex")return`Ongeldige tekst: moet overeenkomen met patroon ${I.pattern}`;return`Ongeldig: ${D[I.format]??U.format}`}case"not_multiple_of":return`Ongeldig getal: moet een veelvoud van ${U.divisor} zijn`;case"unrecognized_keys":return`Onbekende key${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Ongeldige key in ${U.origin}`;case"invalid_union":return"Ongeldige invoer";case"invalid_element":return`Ongeldige waarde in ${U.origin}`;default:return"Ongeldige invoer"}}};var n5=w(()=>{c()});function mA(){return{localeError:tF()}}var tF=()=>{let _={string:{unit:"tegn",verb:"\xE5 ha"},file:{unit:"bytes",verb:"\xE5 ha"},array:{unit:"elementer",verb:"\xE5 inneholde"},set:{unit:"elementer",verb:"\xE5 inneholde"}};function $(U){return _[U]??null}let D={regex:"input",email:"e-postadresse",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO dato- og klokkeslett",date:"ISO-dato",time:"ISO-klokkeslett",duration:"ISO-varighet",ipv4:"IPv4-omr\xE5de",ipv6:"IPv6-omr\xE5de",cidrv4:"IPv4-spekter",cidrv6:"IPv6-spekter",base64:"base64-enkodet streng",base64url:"base64url-enkodet streng",json_string:"JSON-streng",e164:"E.164-nummer",jwt:"JWT",template_literal:"input"},g={nan:"NaN",number:"tall",array:"liste"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldig input: forventet instanceof ${U.expected}, fikk ${N}`;return`Ugyldig input: forventet ${I}, fikk ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig verdi: forventet ${K(U.values[0])}`;return`Ugyldig valg: forventet en av ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${I}${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`For lite(n): forventet ${U.origin} til \xE5 ha ${I}${U.minimum.toString()} ${j.unit}`;return`For lite(n): forventet ${U.origin} til \xE5 ha ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Ugyldig streng: m\xE5 starte med "${I.prefix}"`;if(I.format==="ends_with")return`Ugyldig streng: m\xE5 ende med "${I.suffix}"`;if(I.format==="includes")return`Ugyldig streng: m\xE5 inneholde "${I.includes}"`;if(I.format==="regex")return`Ugyldig streng: m\xE5 matche m\xF8nsteret ${I.pattern}`;return`Ugyldig ${D[I.format]??U.format}`}case"not_multiple_of":return`Ugyldig tall: m\xE5 v\xE6re et multiplum av ${U.divisor}`;case"unrecognized_keys":return`${U.keys.length>1?"Ukjente n\xF8kler":"Ukjent n\xF8kkel"}: ${q(U.keys,", ")}`;case"invalid_key":return`Ugyldig n\xF8kkel i ${U.origin}`;case"invalid_union":return"Ugyldig input";case"invalid_element":return`Ugyldig verdi i ${U.origin}`;default:return"Ugyldig input"}}};var d5=w(()=>{c()});function iA(){return{localeError:oF()}}var oF=()=>{let _={string:{unit:"harf",verb:"olmal\u0131d\u0131r"},file:{unit:"bayt",verb:"olmal\u0131d\u0131r"},array:{unit:"unsur",verb:"olmal\u0131d\u0131r"},set:{unit:"unsur",verb:"olmal\u0131d\u0131r"}};function $(U){return _[U]??null}let D={regex:"giren",email:"epostag\xE2h",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO heng\xE2m\u0131",date:"ISO tarihi",time:"ISO zaman\u0131",duration:"ISO m\xFCddeti",ipv4:"IPv4 ni\u015F\xE2n\u0131",ipv6:"IPv6 ni\u015F\xE2n\u0131",cidrv4:"IPv4 menzili",cidrv6:"IPv6 menzili",base64:"base64-\u015Fifreli metin",base64url:"base64url-\u015Fifreli metin",json_string:"JSON metin",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"giren"},g={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`F\xE2sit giren: umulan instanceof ${U.expected}, al\u0131nan ${N}`;return`F\xE2sit giren: umulan ${I}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`F\xE2sit giren: umulan ${K(U.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${I}${U.maximum.toString()} ${j.unit??"elements"} sahip olmal\u0131yd\u0131.`;return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${I}${U.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${I}${U.minimum.toString()} ${j.unit} sahip olmal\u0131yd\u0131.`;return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${I}${U.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`F\xE2sit metin: "${I.prefix}" ile ba\u015Flamal\u0131.`;if(I.format==="ends_with")return`F\xE2sit metin: "${I.suffix}" ile bitmeli.`;if(I.format==="includes")return`F\xE2sit metin: "${I.includes}" ihtiv\xE2 etmeli.`;if(I.format==="regex")return`F\xE2sit metin: ${I.pattern} nak\u015F\u0131na uymal\u0131.`;return`F\xE2sit ${D[I.format]??U.format}`}case"not_multiple_of":return`F\xE2sit say\u0131: ${U.divisor} kat\u0131 olmal\u0131yd\u0131.`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar ${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`${U.origin} i\xE7in tan\u0131nmayan anahtar var.`;case"invalid_union":return"Giren tan\u0131namad\u0131.";case"invalid_element":return`${U.origin} i\xE7in tan\u0131nmayan k\u0131ymet var.`;default:return"K\u0131ymet tan\u0131namad\u0131."}}};var m5=w(()=>{c()});function lA(){return{localeError:pF()}}var pF=()=>{let _={string:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},file:{unit:"\u0628\u0627\u06CC\u067C\u0633",verb:"\u0648\u0644\u0631\u064A"},array:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"},set:{unit:"\u062A\u0648\u06A9\u064A",verb:"\u0648\u0644\u0631\u064A"}};function $(U){return _[U]??null}let D={regex:"\u0648\u0631\u0648\u062F\u064A",email:"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9",url:"\u06CC\u0648 \u0622\u0631 \u0627\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u064A",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A",date:"\u0646\u06D0\u067C\u0647",time:"\u0648\u062E\u062A",duration:"\u0645\u0648\u062F\u0647",ipv4:"\u062F IPv4 \u067E\u062A\u0647",ipv6:"\u062F IPv6 \u067E\u062A\u0647",cidrv4:"\u062F IPv4 \u0633\u0627\u062D\u0647",cidrv6:"\u062F IPv6 \u0633\u0627\u062D\u0647",base64:"base64-encoded \u0645\u062A\u0646",base64url:"base64url-encoded \u0645\u062A\u0646",json_string:"JSON \u0645\u062A\u0646",e164:"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647",jwt:"JWT",template_literal:"\u0648\u0631\u0648\u062F\u064A"},g={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${U.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${N} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${I} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${N} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`}case"invalid_value":if(U.values.length===1)return`\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${K(U.values[0])} \u0648\u0627\u06CC`;return`\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${q(U.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${U.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${I}${U.maximum.toString()} ${j.unit??"\u0639\u0646\u0635\u0631\u0648\u0646\u0647"} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${U.origin??"\u0627\u0631\u0632\u069A\u062A"} \u0628\u0627\u06CC\u062F ${I}${U.maximum.toString()} \u0648\u064A`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${I}${U.minimum.toString()} ${j.unit} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${I}${U.minimum.toString()} \u0648\u064A`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${I.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;if(I.format==="ends_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${I.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;if(I.format==="includes")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${I.includes}" \u0648\u0644\u0631\u064A`;if(I.format==="regex")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${I.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;return`${D[I.format]??U.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`}case"not_multiple_of":return`\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${U.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;case"unrecognized_keys":return`\u0646\u0627\u0633\u0645 ${U.keys.length>1?"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647":"\u06A9\u0644\u06CC\u0689"}: ${q(U.keys,", ")}`;case"invalid_key":return`\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${U.origin} \u06A9\u06D0`;case"invalid_union":return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A";case"invalid_element":return`\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${U.origin} \u06A9\u06D0`;default:return"\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A"}}};var i5=w(()=>{c()});function tA(){return{localeError:eF()}}var eF=()=>{let _={string:{unit:"znak\xF3w",verb:"mie\u0107"},file:{unit:"bajt\xF3w",verb:"mie\u0107"},array:{unit:"element\xF3w",verb:"mie\u0107"},set:{unit:"element\xF3w",verb:"mie\u0107"}};function $(U){return _[U]??null}let D={regex:"wyra\u017Cenie",email:"adres email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data i godzina w formacie ISO",date:"data w formacie ISO",time:"godzina w formacie ISO",duration:"czas trwania ISO",ipv4:"adres IPv4",ipv6:"adres IPv6",cidrv4:"zakres IPv4",cidrv6:"zakres IPv6",base64:"ci\u0105g znak\xF3w zakodowany w formacie base64",base64url:"ci\u0105g znak\xF3w zakodowany w formacie base64url",json_string:"ci\u0105g znak\xF3w w formacie JSON",e164:"liczba E.164",jwt:"JWT",template_literal:"wej\u015Bcie"},g={nan:"NaN",number:"liczba",array:"tablica"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${U.expected}, otrzymano ${N}`;return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${I}, otrzymano ${N}`}case"invalid_value":if(U.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${K(U.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${U.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${I}${U.maximum.toString()} ${j.unit??"element\xF3w"}`;return`Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${U.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${U.origin??"warto\u015B\u0107"} b\u0119dzie mie\u0107 ${I}${U.minimum.toString()} ${j.unit??"element\xF3w"}`;return`Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${U.origin??"warto\u015B\u0107"} b\u0119dzie wynosi\u0107 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${I.prefix}"`;if(I.format==="ends_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${I.suffix}"`;if(I.format==="includes")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${I.includes}"`;if(I.format==="regex")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${I.pattern}`;return`Nieprawid\u0142ow(y/a/e) ${D[I.format]??U.format}`}case"not_multiple_of":return`Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${U.divisor}`;case"unrecognized_keys":return`Nierozpoznane klucze${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Nieprawid\u0142owy klucz w ${U.origin}`;case"invalid_union":return"Nieprawid\u0142owe dane wej\u015Bciowe";case"invalid_element":return`Nieprawid\u0142owa warto\u015B\u0107 w ${U.origin}`;default:return"Nieprawid\u0142owe dane wej\u015Bciowe"}}};var l5=w(()=>{c()});function oA(){return{localeError:aF()}}var aF=()=>{let _={string:{unit:"caracteres",verb:"ter"},file:{unit:"bytes",verb:"ter"},array:{unit:"itens",verb:"ter"},set:{unit:"itens",verb:"ter"}};function $(U){return _[U]??null}let D={regex:"padr\xE3o",email:"endere\xE7o de e-mail",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"data e hora ISO",date:"data ISO",time:"hora ISO",duration:"dura\xE7\xE3o ISO",ipv4:"endere\xE7o IPv4",ipv6:"endere\xE7o IPv6",cidrv4:"faixa de IPv4",cidrv6:"faixa de IPv6",base64:"texto codificado em base64",base64url:"URL codificada em base64",json_string:"texto JSON",e164:"n\xFAmero E.164",jwt:"JWT",template_literal:"entrada"},g={nan:"NaN",number:"n\xFAmero",null:"nulo"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Tipo inv\xE1lido: esperado instanceof ${U.expected}, recebido ${N}`;return`Tipo inv\xE1lido: esperado ${I}, recebido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: esperado ${K(U.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Muito grande: esperado que ${U.origin??"valor"} tivesse ${I}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Muito grande: esperado que ${U.origin??"valor"} fosse ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Muito pequeno: esperado que ${U.origin} tivesse ${I}${U.minimum.toString()} ${j.unit}`;return`Muito pequeno: esperado que ${U.origin} fosse ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Texto inv\xE1lido: deve come\xE7ar com "${I.prefix}"`;if(I.format==="ends_with")return`Texto inv\xE1lido: deve terminar com "${I.suffix}"`;if(I.format==="includes")return`Texto inv\xE1lido: deve incluir "${I.includes}"`;if(I.format==="regex")return`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${I.pattern}`;return`${D[I.format]??U.format} inv\xE1lido`}case"not_multiple_of":return`N\xFAmero inv\xE1lido: deve ser m\xFAltiplo de ${U.divisor}`;case"unrecognized_keys":return`Chave${U.keys.length>1?"s":""} desconhecida${U.keys.length>1?"s":""}: ${q(U.keys,", ")}`;case"invalid_key":return`Chave inv\xE1lida em ${U.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido em ${U.origin}`;default:return"Campo inv\xE1lido"}}};var t5=w(()=>{c()});function pA(){return{localeError:sF()}}var sF=()=>{let _={string:{unit:"caractere",verb:"s\u0103 aib\u0103"},file:{unit:"octe\u021Bi",verb:"s\u0103 aib\u0103"},array:{unit:"elemente",verb:"s\u0103 aib\u0103"},set:{unit:"elemente",verb:"s\u0103 aib\u0103"},map:{unit:"intr\u0103ri",verb:"s\u0103 aib\u0103"}};function $(U){return _[U]??null}let D={regex:"intrare",email:"adres\u0103 de email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"dat\u0103 \u0219i or\u0103 ISO",date:"dat\u0103 ISO",time:"or\u0103 ISO",duration:"durat\u0103 ISO",ipv4:"adres\u0103 IPv4",ipv6:"adres\u0103 IPv6",mac:"adres\u0103 MAC",cidrv4:"interval IPv4",cidrv6:"interval IPv6",base64:"\u0219ir codat base64",base64url:"\u0219ir codat base64url",json_string:"\u0219ir JSON",e164:"num\u0103r E.164",jwt:"JWT",template_literal:"intrare"},g={nan:"NaN",string:"\u0219ir",number:"num\u0103r",boolean:"boolean",function:"func\u021Bie",array:"matrice",object:"obiect",undefined:"nedefinit",symbol:"simbol",bigint:"num\u0103r mare",void:"void",never:"never",map:"hart\u0103",set:"set"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;return`Intrare invalid\u0103: a\u0219teptat ${I}, primit ${N}`}case"invalid_value":if(U.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${K(U.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} ${j.verb} ${I}${U.maximum.toString()} ${j.unit??"elemente"}`;return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} s\u0103 fie ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Prea mic: a\u0219teptat ca ${U.origin} ${j.verb} ${I}${U.minimum.toString()} ${j.unit}`;return`Prea mic: a\u0219teptat ca ${U.origin} s\u0103 fie ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${I.prefix}"`;if(I.format==="ends_with")return`\u0218ir invalid: trebuie s\u0103 se termine cu "${I.suffix}"`;if(I.format==="includes")return`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${I.includes}"`;if(I.format==="regex")return`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${I.pattern}`;return`Format invalid: ${D[I.format]??U.format}`}case"not_multiple_of":return`Num\u0103r invalid: trebuie s\u0103 fie multiplu de ${U.divisor}`;case"unrecognized_keys":return`Chei nerecunoscute: ${q(U.keys,", ")}`;case"invalid_key":return`Cheie invalid\u0103 \xEEn ${U.origin}`;case"invalid_union":return"Intrare invalid\u0103";case"invalid_element":return`Valoare invalid\u0103 \xEEn ${U.origin}`;default:return"Intrare invalid\u0103"}}};var o5=w(()=>{c()});function p5(_,$,D,g){let U=Math.abs(_),I=U%10,j=U%100;if(j>=11&&j<=19)return g;if(I===1)return $;if(I>=2&&I<=4)return D;return g}function eA(){return{localeError:_K()}}var _K=()=>{let _={string:{unit:{one:"\u0441\u0438\u043C\u0432\u043E\u043B",few:"\u0441\u0438\u043C\u0432\u043E\u043B\u0430",many:"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},file:{unit:{one:"\u0431\u0430\u0439\u0442",few:"\u0431\u0430\u0439\u0442\u0430",many:"\u0431\u0430\u0439\u0442"},verb:"\u0438\u043C\u0435\u0442\u044C"},array:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"},set:{unit:{one:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442",few:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430",many:"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432"},verb:"\u0438\u043C\u0435\u0442\u044C"}};function $(U){return _[U]??null}let D={regex:"\u0432\u0432\u043E\u0434",email:"email \u0430\u0434\u0440\u0435\u0441",url:"URL",emoji:"\u044D\u043C\u043E\u0434\u0437\u0438",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F",date:"ISO \u0434\u0430\u0442\u0430",time:"ISO \u0432\u0440\u0435\u043C\u044F",duration:"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C",ipv4:"IPv4 \u0430\u0434\u0440\u0435\u0441",ipv6:"IPv6 \u0430\u0434\u0440\u0435\u0441",cidrv4:"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",cidrv6:"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D",base64:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64",base64url:"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url",json_string:"JSON \u0441\u0442\u0440\u043E\u043A\u0430",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0432\u043E\u0434"},g={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${U.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${N}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${I}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${N}`}case"invalid_value":if(U.values.length===1)return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${K(U.values[0])}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),O=p5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${U.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${I}${U.maximum.toString()} ${O}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${U.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435"} \u0431\u0443\u0434\u0435\u0442 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),O=p5(N,j.unit.one,j.unit.few,j.unit.many);return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${U.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${I}${U.minimum.toString()} ${O}`}return`\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${U.origin} \u0431\u0443\u0434\u0435\u0442 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${I.pattern}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${U.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${U.keys.length>1?"\u044B\u0435":"\u044B\u0439"} \u043A\u043B\u044E\u0447${U.keys.length>1?"\u0438":""}: ${q(U.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${U.origin}`;case"invalid_union":return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435";case"invalid_element":return`\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${U.origin}`;default:return"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435"}}};var e5=w(()=>{c()});function aA(){return{localeError:$K()}}var $K=()=>{let _={string:{unit:"znakov",verb:"imeti"},file:{unit:"bajtov",verb:"imeti"},array:{unit:"elementov",verb:"imeti"},set:{unit:"elementov",verb:"imeti"}};function $(U){return _[U]??null}let D={regex:"vnos",email:"e-po\u0161tni naslov",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO datum in \u010Das",date:"ISO datum",time:"ISO \u010Das",duration:"ISO trajanje",ipv4:"IPv4 naslov",ipv6:"IPv6 naslov",cidrv4:"obseg IPv4",cidrv6:"obseg IPv6",base64:"base64 kodiran niz",base64url:"base64url kodiran niz",json_string:"JSON niz",e164:"E.164 \u0161tevilka",jwt:"JWT",template_literal:"vnos"},g={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Neveljaven vnos: pri\u010Dakovano instanceof ${U.expected}, prejeto ${N}`;return`Neveljaven vnos: pri\u010Dakovano ${I}, prejeto ${N}`}case"invalid_value":if(U.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${K(U.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} imelo ${I}${U.maximum.toString()} ${j.unit??"elementov"}`;return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Premajhno: pri\u010Dakovano, da bo ${U.origin} imelo ${I}${U.minimum.toString()} ${j.unit}`;return`Premajhno: pri\u010Dakovano, da bo ${U.origin} ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Neveljaven niz: mora se za\u010Deti z "${I.prefix}"`;if(I.format==="ends_with")return`Neveljaven niz: mora se kon\u010Dati z "${I.suffix}"`;if(I.format==="includes")return`Neveljaven niz: mora vsebovati "${I.includes}"`;if(I.format==="regex")return`Neveljaven niz: mora ustrezati vzorcu ${I.pattern}`;return`Neveljaven ${D[I.format]??U.format}`}case"not_multiple_of":return`Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${U.divisor}`;case"unrecognized_keys":return`Neprepoznan${U.keys.length>1?"i klju\u010Di":" klju\u010D"}: ${q(U.keys,", ")}`;case"invalid_key":return`Neveljaven klju\u010D v ${U.origin}`;case"invalid_union":return"Neveljaven vnos";case"invalid_element":return`Neveljavna vrednost v ${U.origin}`;default:return"Neveljaven vnos"}}};var a5=w(()=>{c()});function sA(){return{localeError:DK()}}var DK=()=>{let _={string:{unit:"tecken",verb:"att ha"},file:{unit:"bytes",verb:"att ha"},array:{unit:"objekt",verb:"att inneh\xE5lla"},set:{unit:"objekt",verb:"att inneh\xE5lla"}};function $(U){return _[U]??null}let D={regex:"regulj\xE4rt uttryck",email:"e-postadress",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO-datum och tid",date:"ISO-datum",time:"ISO-tid",duration:"ISO-varaktighet",ipv4:"IPv4-intervall",ipv6:"IPv6-intervall",cidrv4:"IPv4-spektrum",cidrv6:"IPv6-spektrum",base64:"base64-kodad str\xE4ng",base64url:"base64url-kodad str\xE4ng",json_string:"JSON-str\xE4ng",e164:"E.164-nummer",jwt:"JWT",template_literal:"mall-literal"},g={nan:"NaN",number:"antal",array:"lista"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${U.expected}, fick ${N}`;return`Ogiltig inmatning: f\xF6rv\xE4ntat ${I}, fick ${N}`}case"invalid_value":if(U.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${K(U.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`F\xF6r stor(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${I}${U.maximum.toString()} ${j.unit??"element"}`;return`F\xF6r stor(t): f\xF6rv\xE4ntat ${U.origin??"v\xE4rdet"} att ha ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${I}${U.minimum.toString()} ${j.unit}`;return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${I.prefix}"`;if(I.format==="ends_with")return`Ogiltig str\xE4ng: m\xE5ste sluta med "${I.suffix}"`;if(I.format==="includes")return`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${I.includes}"`;if(I.format==="regex")return`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${I.pattern}"`;return`Ogiltig(t) ${D[I.format]??U.format}`}case"not_multiple_of":return`Ogiltigt tal: m\xE5ste vara en multipel av ${U.divisor}`;case"unrecognized_keys":return`${U.keys.length>1?"Ok\xE4nda nycklar":"Ok\xE4nd nyckel"}: ${q(U.keys,", ")}`;case"invalid_key":return`Ogiltig nyckel i ${U.origin??"v\xE4rdet"}`;case"invalid_union":return"Ogiltig input";case"invalid_element":return`Ogiltigt v\xE4rde i ${U.origin??"v\xE4rdet"}`;default:return"Ogiltig input"}}};var s5=w(()=>{c()});function _L(){return{localeError:UK()}}var UK=()=>{let _={string:{unit:"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},file:{unit:"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},array:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"},set:{unit:"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD",verb:"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD"}};function $(U){return _[U]??null}let D={regex:"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1",email:"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",date:"ISO \u0BA4\u0BC7\u0BA4\u0BBF",time:"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD",duration:"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1",ipv4:"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",ipv6:"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF",cidrv4:"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",cidrv6:"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1",base64:"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD",base64url:"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD",json_string:"JSON \u0B9A\u0BB0\u0BAE\u0BCD",e164:"E.164 \u0B8E\u0BA3\u0BCD",jwt:"JWT",template_literal:"input"},g={nan:"NaN",number:"\u0B8E\u0BA3\u0BCD",array:"\u0B85\u0BA3\u0BBF",null:"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${U.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${N}`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${I}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${N}`}case"invalid_value":if(U.values.length===1)return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${K(U.values[0])}`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${q(U.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${U.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${I}${U.maximum.toString()} ${j.unit??"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${U.origin??"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1"} ${I}${U.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${U.origin} ${I}${U.minimum.toString()} ${j.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${U.origin} ${I}${U.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${I.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(I.format==="ends_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${I.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(I.format==="includes")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${I.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(I.format==="regex")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${I.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${U.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;case"unrecognized_keys":return`\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${U.keys.length>1?"\u0B95\u0BB3\u0BCD":""}: ${q(U.keys,", ")}`;case"invalid_key":return`${U.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;case"invalid_union":return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1";case"invalid_element":return`${U.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;default:return"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1"}}};var _9=w(()=>{c()});function $L(){return{localeError:gK()}}var gK=()=>{let _={string:{unit:"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},file:{unit:"\u0E44\u0E1A\u0E15\u0E4C",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},array:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"},set:{unit:"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",verb:"\u0E04\u0E27\u0E23\u0E21\u0E35"}};function $(U){return _[U]??null}let D={regex:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19",email:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25",url:"URL",emoji:"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",date:"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO",time:"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",duration:"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO",ipv4:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4",ipv6:"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6",cidrv4:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4",cidrv6:"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6",base64:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64",base64url:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL",json_string:"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON",e164:"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)",jwt:"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT",template_literal:"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19"},g={nan:"NaN",number:"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02",array:"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)",null:"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${U.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${N}`;return`\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${I} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${N}`}case"invalid_value":if(U.values.length===1)return`\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${K(U.values[0])}`;return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19":"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32",j=$(U.origin);if(j)return`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${U.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${U.maximum.toString()} ${j.unit??"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23"}`;return`\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${U.origin??"\u0E04\u0E48\u0E32"} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22":"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32",j=$(U.origin);if(j)return`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${U.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${U.minimum.toString()} ${j.unit}`;return`\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${U.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${I} ${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 "${I.prefix}"`;if(I.format==="ends_with")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 "${I.suffix}"`;if(I.format==="includes")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 "${I.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;if(I.format==="regex")return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${I.pattern}`;return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${D[I.format]??U.format}`}case"not_multiple_of":return`\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${U.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;case"unrecognized_keys":return`\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${q(U.keys,", ")}`;case"invalid_key":return`\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${U.origin}`;case"invalid_union":return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49";case"invalid_element":return`\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${U.origin}`;default:return"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07"}}};var $9=w(()=>{c()});function DL(){return{localeError:IK()}}var IK=()=>{let _={string:{unit:"karakter",verb:"olmal\u0131"},file:{unit:"bayt",verb:"olmal\u0131"},array:{unit:"\xF6\u011Fe",verb:"olmal\u0131"},set:{unit:"\xF6\u011Fe",verb:"olmal\u0131"}};function $(U){return _[U]??null}let D={regex:"girdi",email:"e-posta adresi",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO tarih ve saat",date:"ISO tarih",time:"ISO saat",duration:"ISO s\xFCre",ipv4:"IPv4 adresi",ipv6:"IPv6 adresi",cidrv4:"IPv4 aral\u0131\u011F\u0131",cidrv6:"IPv6 aral\u0131\u011F\u0131",base64:"base64 ile \u015Fifrelenmi\u015F metin",base64url:"base64url ile \u015Fifrelenmi\u015F metin",json_string:"JSON dizesi",e164:"E.164 say\u0131s\u0131",jwt:"JWT",template_literal:"\u015Eablon dizesi"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Ge\xE7ersiz de\u011Fer: beklenen instanceof ${U.expected}, al\u0131nan ${N}`;return`Ge\xE7ersiz de\u011Fer: beklenen ${I}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${K(U.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${I}${U.maximum.toString()} ${j.unit??"\xF6\u011Fe"}`;return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${I}${U.minimum.toString()} ${j.unit}`;return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Ge\xE7ersiz metin: "${I.prefix}" ile ba\u015Flamal\u0131`;if(I.format==="ends_with")return`Ge\xE7ersiz metin: "${I.suffix}" ile bitmeli`;if(I.format==="includes")return`Ge\xE7ersiz metin: "${I.includes}" i\xE7ermeli`;if(I.format==="regex")return`Ge\xE7ersiz metin: ${I.pattern} desenine uymal\u0131`;return`Ge\xE7ersiz ${D[I.format]??U.format}`}case"not_multiple_of":return`Ge\xE7ersiz say\u0131: ${U.divisor} ile tam b\xF6l\xFCnebilmeli`;case"unrecognized_keys":return`Tan\u0131nmayan anahtar${U.keys.length>1?"lar":""}: ${q(U.keys,", ")}`;case"invalid_key":return`${U.origin} i\xE7inde ge\xE7ersiz anahtar`;case"invalid_union":return"Ge\xE7ersiz de\u011Fer";case"invalid_element":return`${U.origin} i\xE7inde ge\xE7ersiz de\u011Fer`;default:return"Ge\xE7ersiz de\u011Fer"}}};var D9=w(()=>{c()});function JU(){return{localeError:jK()}}var jK=()=>{let _={string:{unit:"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},file:{unit:"\u0431\u0430\u0439\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},array:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"},set:{unit:"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432",verb:"\u043C\u0430\u0442\u0438\u043C\u0435"}};function $(U){return _[U]??null}let D={regex:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456",email:"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438",url:"URL",emoji:"\u0435\u043C\u043E\u0434\u0437\u0456",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO",date:"\u0434\u0430\u0442\u0430 ISO",time:"\u0447\u0430\u0441 ISO",duration:"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO",ipv4:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4",ipv6:"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6",cidrv4:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4",cidrv6:"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6",base64:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64",base64url:"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url",json_string:"\u0440\u044F\u0434\u043E\u043A JSON",e164:"\u043D\u043E\u043C\u0435\u0440 E.164",jwt:"JWT",template_literal:"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"},g={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${U.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${N}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${I}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${N}`}case"invalid_value":if(U.values.length===1)return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${K(U.values[0])}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${U.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} ${j.verb} ${I}${U.maximum.toString()} ${j.unit??"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432"}`;return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${U.origin??"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F"} \u0431\u0443\u0434\u0435 ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${U.origin} ${j.verb} ${I}${U.minimum.toString()} ${j.unit}`;return`\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${U.origin} \u0431\u0443\u0434\u0435 ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 "${I.prefix}"`;if(I.format==="ends_with")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 "${I.suffix}"`;if(I.format==="includes")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 "${I.includes}"`;if(I.format==="regex")return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${I.pattern}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${U.divisor}`;case"unrecognized_keys":return`\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${U.keys.length>1?"\u0456":""}: ${q(U.keys,", ")}`;case"invalid_key":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${U.origin}`;case"invalid_union":return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456";case"invalid_element":return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${U.origin}`;default:return"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456"}}};var UL=w(()=>{c()});function gL(){return JU()}var U9=w(()=>{UL()});function IL(){return{localeError:NK()}}var NK=()=>{let _={string:{unit:"\u062D\u0631\u0648\u0641",verb:"\u06C1\u0648\u0646\u0627"},file:{unit:"\u0628\u0627\u0626\u0679\u0633",verb:"\u06C1\u0648\u0646\u0627"},array:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"},set:{unit:"\u0622\u0626\u0679\u0645\u0632",verb:"\u06C1\u0648\u0646\u0627"}};function $(U){return _[U]??null}let D={regex:"\u0627\u0646 \u067E\u0679",email:"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633",url:"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644",emoji:"\u0627\u06CC\u0645\u0648\u062C\u06CC",uuid:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",uuidv4:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4",uuidv6:"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6",nanoid:"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC",guid:"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",cuid2:"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2",ulid:"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC",xid:"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC",ksuid:"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC",datetime:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645",date:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E",time:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A",duration:"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A",ipv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633",ipv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633",cidrv4:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C",cidrv6:"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C",base64:"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",base64url:"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF",json_string:"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF",e164:"\u0627\u06CC 164 \u0646\u0645\u0628\u0631",jwt:"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC",template_literal:"\u0627\u0646 \u067E\u0679"},g={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${U.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${N} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${I} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${N} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}case"invalid_value":if(U.values.length===1)return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${K(U.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${q(U.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${U.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${I}${U.maximum.toString()} ${j.unit??"\u0639\u0646\u0627\u0635\u0631"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${U.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u0627 ${I}${U.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${U.origin} \u06A9\u06D2 ${I}${U.minimum.toString()} ${j.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${U.origin} \u06A9\u0627 ${I}${U.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${I.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(I.format==="ends_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${I.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(I.format==="includes")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${I.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(I.format==="regex")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${I.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;return`\u063A\u0644\u0637 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${U.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;case"unrecognized_keys":return`\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${U.keys.length>1?"\u0632":""}: ${q(U.keys,"\u060C ")}`;case"invalid_key":return`${U.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;case"invalid_union":return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679";case"invalid_element":return`${U.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;default:return"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679"}}};var g9=w(()=>{c()});function jL(){return{localeError:EK()}}var EK=()=>{let _={string:{unit:"belgi",verb:"bo\u2018lishi kerak"},file:{unit:"bayt",verb:"bo\u2018lishi kerak"},array:{unit:"element",verb:"bo\u2018lishi kerak"},set:{unit:"element",verb:"bo\u2018lishi kerak"},map:{unit:"yozuv",verb:"bo\u2018lishi kerak"}};function $(U){return _[U]??null}let D={regex:"kirish",email:"elektron pochta manzili",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO sana va vaqti",date:"ISO sana",time:"ISO vaqt",duration:"ISO davomiylik",ipv4:"IPv4 manzil",ipv6:"IPv6 manzil",mac:"MAC manzil",cidrv4:"IPv4 diapazon",cidrv6:"IPv6 diapazon",base64:"base64 kodlangan satr",base64url:"base64url kodlangan satr",json_string:"JSON satr",e164:"E.164 raqam",jwt:"JWT",template_literal:"kirish"},g={nan:"NaN",number:"raqam",array:"massiv"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`Noto\u2018g\u2018ri kirish: kutilgan instanceof ${U.expected}, qabul qilingan ${N}`;return`Noto\u2018g\u2018ri kirish: kutilgan ${I}, qabul qilingan ${N}`}case"invalid_value":if(U.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${K(U.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Juda katta: kutilgan ${U.origin??"qiymat"} ${I}${U.maximum.toString()} ${j.unit} ${j.verb}`;return`Juda katta: kutilgan ${U.origin??"qiymat"} ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Juda kichik: kutilgan ${U.origin} ${I}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Juda kichik: kutilgan ${U.origin} ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Noto\u2018g\u2018ri satr: "${I.prefix}" bilan boshlanishi kerak`;if(I.format==="ends_with")return`Noto\u2018g\u2018ri satr: "${I.suffix}" bilan tugashi kerak`;if(I.format==="includes")return`Noto\u2018g\u2018ri satr: "${I.includes}" ni o\u2018z ichiga olishi kerak`;if(I.format==="regex")return`Noto\u2018g\u2018ri satr: ${I.pattern} shabloniga mos kelishi kerak`;return`Noto\u2018g\u2018ri ${D[I.format]??U.format}`}case"not_multiple_of":return`Noto\u2018g\u2018ri raqam: ${U.divisor} ning karralisi bo\u2018lishi kerak`;case"unrecognized_keys":return`Noma\u2019lum kalit${U.keys.length>1?"lar":""}: ${q(U.keys,", ")}`;case"invalid_key":return`${U.origin} dagi kalit noto\u2018g\u2018ri`;case"invalid_union":return"Noto\u2018g\u2018ri kirish";case"invalid_element":return`${U.origin} da noto\u2018g\u2018ri qiymat`;default:return"Noto\u2018g\u2018ri kirish"}}};var I9=w(()=>{c()});function NL(){return{localeError:OK()}}var OK=()=>{let _={string:{unit:"k\xFD t\u1EF1",verb:"c\xF3"},file:{unit:"byte",verb:"c\xF3"},array:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"},set:{unit:"ph\u1EA7n t\u1EED",verb:"c\xF3"}};function $(U){return _[U]??null}let D={regex:"\u0111\u1EA7u v\xE0o",email:"\u0111\u1ECBa ch\u1EC9 email",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ng\xE0y gi\u1EDD ISO",date:"ng\xE0y ISO",time:"gi\u1EDD ISO",duration:"kho\u1EA3ng th\u1EDDi gian ISO",ipv4:"\u0111\u1ECBa ch\u1EC9 IPv4",ipv6:"\u0111\u1ECBa ch\u1EC9 IPv6",cidrv4:"d\u1EA3i IPv4",cidrv6:"d\u1EA3i IPv6",base64:"chu\u1ED7i m\xE3 h\xF3a base64",base64url:"chu\u1ED7i m\xE3 h\xF3a base64url",json_string:"chu\u1ED7i JSON",e164:"s\u1ED1 E.164",jwt:"JWT",template_literal:"\u0111\u1EA7u v\xE0o"},g={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${U.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${N}`;return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${I}, nh\u1EADn \u0111\u01B0\u1EE3c ${N}`}case"invalid_value":if(U.values.length===1)return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${K(U.values[0])}`;return`T\xF9y ch\u1ECDn kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\xE1c gi\xE1 tr\u1ECB ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${j.verb} ${I}${U.maximum.toString()} ${j.unit??"ph\u1EA7n t\u1EED"}`;return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${j.verb} ${I}${U.minimum.toString()} ${j.unit}`;return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${I.prefix}"`;if(I.format==="ends_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${I.suffix}"`;if(I.format==="includes")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${I.includes}"`;if(I.format==="regex")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${I.pattern}`;return`${D[I.format]??U.format} kh\xF4ng h\u1EE3p l\u1EC7`}case"not_multiple_of":return`S\u1ED1 kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\xE0 b\u1ED9i s\u1ED1 c\u1EE7a ${U.divisor}`;case"unrecognized_keys":return`Kh\xF3a kh\xF4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${q(U.keys,", ")}`;case"invalid_key":return`Kh\xF3a kh\xF4ng h\u1EE3p l\u1EC7 trong ${U.origin}`;case"invalid_union":return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7";case"invalid_element":return`Gi\xE1 tr\u1ECB kh\xF4ng h\u1EE3p l\u1EC7 trong ${U.origin}`;default:return"\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7"}}};var j9=w(()=>{c()});function EL(){return{localeError:AK()}}var AK=()=>{let _={string:{unit:"\u5B57\u7B26",verb:"\u5305\u542B"},file:{unit:"\u5B57\u8282",verb:"\u5305\u542B"},array:{unit:"\u9879",verb:"\u5305\u542B"},set:{unit:"\u9879",verb:"\u5305\u542B"}};function $(U){return _[U]??null}let D={regex:"\u8F93\u5165",email:"\u7535\u5B50\u90AE\u4EF6",url:"URL",emoji:"\u8868\u60C5\u7B26\u53F7",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO\u65E5\u671F\u65F6\u95F4",date:"ISO\u65E5\u671F",time:"ISO\u65F6\u95F4",duration:"ISO\u65F6\u957F",ipv4:"IPv4\u5730\u5740",ipv6:"IPv6\u5730\u5740",cidrv4:"IPv4\u7F51\u6BB5",cidrv6:"IPv6\u7F51\u6BB5",base64:"base64\u7F16\u7801\u5B57\u7B26\u4E32",base64url:"base64url\u7F16\u7801\u5B57\u7B26\u4E32",json_string:"JSON\u5B57\u7B26\u4E32",e164:"E.164\u53F7\u7801",jwt:"JWT",template_literal:"\u8F93\u5165"},g={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${U.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`;return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${I}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`}case"invalid_value":if(U.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${K(U.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${I}${U.maximum.toString()} ${j.unit??"\u4E2A\u5143\u7D20"}`;return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${I}${U.minimum.toString()} ${j.unit}`;return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${I.prefix}" \u5F00\u5934`;if(I.format==="ends_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${I.suffix}" \u7ED3\u5C3E`;if(I.format==="includes")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${I.includes}"`;if(I.format==="regex")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${I.pattern}`;return`\u65E0\u6548${D[I.format]??U.format}`}case"not_multiple_of":return`\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${U.divisor} \u7684\u500D\u6570`;case"unrecognized_keys":return`\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${q(U.keys,", ")}`;case"invalid_key":return`${U.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;case"invalid_union":return"\u65E0\u6548\u8F93\u5165";case"invalid_element":return`${U.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;default:return"\u65E0\u6548\u8F93\u5165"}}};var N9=w(()=>{c()});function OL(){return{localeError:LK()}}var LK=()=>{let _={string:{unit:"\u5B57\u5143",verb:"\u64C1\u6709"},file:{unit:"\u4F4D\u5143\u7D44",verb:"\u64C1\u6709"},array:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"},set:{unit:"\u9805\u76EE",verb:"\u64C1\u6709"}};function $(U){return _[U]??null}let D={regex:"\u8F38\u5165",email:"\u90F5\u4EF6\u5730\u5740",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"ISO \u65E5\u671F\u6642\u9593",date:"ISO \u65E5\u671F",time:"ISO \u6642\u9593",duration:"ISO \u671F\u9593",ipv4:"IPv4 \u4F4D\u5740",ipv6:"IPv6 \u4F4D\u5740",cidrv4:"IPv4 \u7BC4\u570D",cidrv6:"IPv6 \u7BC4\u570D",base64:"base64 \u7DE8\u78BC\u5B57\u4E32",base64url:"base64url \u7DE8\u78BC\u5B57\u4E32",json_string:"JSON \u5B57\u4E32",e164:"E.164 \u6578\u503C",jwt:"JWT",template_literal:"\u8F38\u5165"},g={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${U.expected}\uFF0C\u4F46\u6536\u5230 ${N}`;return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${I}\uFF0C\u4F46\u6536\u5230 ${N}`}case"invalid_value":if(U.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${K(U.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${I}${U.maximum.toString()} ${j.unit??"\u500B\u5143\u7D20"}`;return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${I}${U.maximum.toString()}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${I}${U.minimum.toString()} ${j.unit}`;return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${I}${U.minimum.toString()}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${I.prefix}" \u958B\u982D`;if(I.format==="ends_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${I.suffix}" \u7D50\u5C3E`;if(I.format==="includes")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${I.includes}"`;if(I.format==="regex")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${I.pattern}`;return`\u7121\u6548\u7684 ${D[I.format]??U.format}`}case"not_multiple_of":return`\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${U.divisor} \u7684\u500D\u6578`;case"unrecognized_keys":return`\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${U.keys.length>1?"\u5011":""}\uFF1A${q(U.keys,"\u3001")}`;case"invalid_key":return`${U.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;case"invalid_union":return"\u7121\u6548\u7684\u8F38\u5165\u503C";case"invalid_element":return`${U.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;default:return"\u7121\u6548\u7684\u8F38\u5165\u503C"}}};var E9=w(()=>{c()});function AL(){return{localeError:JK()}}var JK=()=>{let _={string:{unit:"\xE0mi",verb:"n\xED"},file:{unit:"bytes",verb:"n\xED"},array:{unit:"nkan",verb:"n\xED"},set:{unit:"nkan",verb:"n\xED"}};function $(U){return _[U]??null}let D={regex:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9",email:"\xE0d\xEDr\u1EB9\u0301s\xEC \xECm\u1EB9\u0301l\xEC",url:"URL",emoji:"emoji",uuid:"UUID",uuidv4:"UUIDv4",uuidv6:"UUIDv6",nanoid:"nanoid",guid:"GUID",cuid:"cuid",cuid2:"cuid2",ulid:"ULID",xid:"XID",ksuid:"KSUID",datetime:"\xE0k\xF3k\xF2 ISO",date:"\u1ECDj\u1ECD\u0301 ISO",time:"\xE0k\xF3k\xF2 ISO",duration:"\xE0k\xF3k\xF2 t\xF3 p\xE9 ISO",ipv4:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv4",ipv6:"\xE0d\xEDr\u1EB9\u0301s\xEC IPv6",cidrv4:"\xE0gb\xE8gb\xE8 IPv4",cidrv6:"\xE0gb\xE8gb\xE8 IPv6",base64:"\u1ECD\u0300r\u1ECD\u0300 t\xED a k\u1ECD\u0301 n\xED base64",base64url:"\u1ECD\u0300r\u1ECD\u0300 base64url",json_string:"\u1ECD\u0300r\u1ECD\u0300 JSON",e164:"n\u1ECD\u0301mb\xE0 E.164",jwt:"JWT",template_literal:"\u1EB9\u0300r\u1ECD \xECb\xE1w\u1ECDl\xE9"},g={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return(U)=>{switch(U.code){case"invalid_type":{let I=g[U.expected]??U.expected,j=M(U.input),N=g[j]??j;if(/^[A-Z]/.test(U.expected))return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi instanceof ${U.expected}, \xE0m\u1ECD\u0300 a r\xED ${N}`;return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${I}, \xE0m\u1ECD\u0300 a r\xED ${N}`}case"invalid_value":if(U.values.length===1)return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${K(U.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${q(U.values,"|")}`;case"too_big":{let I=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${U.origin??"iye"} ${j.verb} ${I}${U.maximum} ${j.unit}`;return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${I}${U.maximum}`}case"too_small":{let I=U.inclusive?">=":">",j=$(U.origin);if(j)return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 p\xE9 ${U.origin} ${j.verb} ${I}${U.minimum} ${j.unit}`;return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${I}${U.minimum}`}case"invalid_format":{let I=U;if(I.format==="starts_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\xFA "${I.prefix}"`;if(I.format==="ends_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${I.suffix}"`;if(I.format==="includes")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${I.includes}"`;if(I.format==="regex")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${I.pattern}`;return`A\u1E63\xEC\u1E63e: ${D[I.format]??U.format}`}case"not_multiple_of":return`N\u1ECD\u0301mb\xE0 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \xE8y\xE0 p\xEDp\xEDn ti ${U.divisor}`;case"unrecognized_keys":return`B\u1ECDt\xECn\xEC \xE0\xECm\u1ECD\u0300: ${q(U.keys,", ")}`;case"invalid_key":return`B\u1ECDt\xECn\xEC a\u1E63\xEC\u1E63e n\xEDn\xFA ${U.origin}`;case"invalid_union":return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e";case"invalid_element":return`Iye a\u1E63\xEC\u1E63e n\xEDn\xFA ${U.origin}`;default:return"\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e"}}};var O9=w(()=>{c()});var u0={};v$(u0,{zhTW:()=>OL,zhCN:()=>EL,yo:()=>AL,vi:()=>NL,uz:()=>jL,ur:()=>IL,uk:()=>JU,ua:()=>gL,tr:()=>DL,th:()=>$L,ta:()=>_L,sv:()=>sA,sl:()=>aA,ru:()=>eA,ro:()=>pA,pt:()=>oA,ps:()=>lA,pl:()=>tA,ota:()=>iA,no:()=>mA,nl:()=>dA,ms:()=>nA,mk:()=>cA,lt:()=>hA,ko:()=>yA,km:()=>AU,kh:()=>xA,ka:()=>rA,ja:()=>wA,it:()=>fA,is:()=>vA,id:()=>CA,hy:()=>kA,hu:()=>HA,hr:()=>bA,he:()=>ZA,frCA:()=>MA,fr:()=>KA,fi:()=>FA,fa:()=>VA,es:()=>qA,eo:()=>BA,en:()=>OU,el:()=>QA,de:()=>YA,da:()=>RA,cs:()=>GA,ca:()=>XA,bg:()=>WA,be:()=>SA,az:()=>zA,ar:()=>PA});var LL=w(()=>{L5();J5();z5();S5();W5();X5();G5();R5();Y5();TA();Q5();T5();B5();q5();V5();F5();K5();M5();Z5();H5();k5();C5();v5();f5();w5();r5();uA();u5();y5();h5();c5();n5();d5();m5();i5();l5();t5();o5();e5();a5();s5();_9();$9();D9();U9();UL();g9();I9();j9();N9();E9();O9()});class JL{constructor(){this._map=new WeakMap,this._idmap=new Map}add(_,...$){let D=$[0];if(this._map.set(_,D),D&&typeof D==="object"&&"id"in D)this._idmap.set(D.id,_);return this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(_){let $=this._map.get(_);if($&&typeof $==="object"&&"id"in $)this._idmap.delete($.id);return this._map.delete(_),this}get(_){let $=_._zod.parent;if($){let D={...this.get($)??{}};delete D.id;let g={...D,...this._map.get(_)};return Object.keys(g).length?g:void 0}return this._map.get(_)}has(_){return this._map.has(_)}}function PU(){return new JL}var A9,pI,eI,r_;var zU=w(()=>{pI=Symbol("ZodOutput"),eI=Symbol("ZodInput");(A9=globalThis).__zod_globalRegistry??(A9.__zod_globalRegistry=PU());r_=globalThis.__zod_globalRegistry});function PL(_,$){return new _({type:"string",...C($)})}function zL(_,$){return new _({type:"string",coerce:!0,...C($)})}function aI(_,$){return new _({type:"string",format:"email",check:"string_format",abort:!1,...C($)})}function SU(_,$){return new _({type:"string",format:"guid",check:"string_format",abort:!1,...C($)})}function sI(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,...C($)})}function _1(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...C($)})}function $1(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...C($)})}function D1(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...C($)})}function WU(_,$){return new _({type:"string",format:"url",check:"string_format",abort:!1,...C($)})}function U1(_,$){return new _({type:"string",format:"emoji",check:"string_format",abort:!1,...C($)})}function g1(_,$){return new _({type:"string",format:"nanoid",check:"string_format",abort:!1,...C($)})}function I1(_,$){return new _({type:"string",format:"cuid",check:"string_format",abort:!1,...C($)})}function j1(_,$){return new _({type:"string",format:"cuid2",check:"string_format",abort:!1,...C($)})}function N1(_,$){return new _({type:"string",format:"ulid",check:"string_format",abort:!1,...C($)})}function E1(_,$){return new _({type:"string",format:"xid",check:"string_format",abort:!1,...C($)})}function O1(_,$){return new _({type:"string",format:"ksuid",check:"string_format",abort:!1,...C($)})}function A1(_,$){return new _({type:"string",format:"ipv4",check:"string_format",abort:!1,...C($)})}function L1(_,$){return new _({type:"string",format:"ipv6",check:"string_format",abort:!1,...C($)})}function SL(_,$){return new _({type:"string",format:"mac",check:"string_format",abort:!1,...C($)})}function J1(_,$){return new _({type:"string",format:"cidrv4",check:"string_format",abort:!1,...C($)})}function P1(_,$){return new _({type:"string",format:"cidrv6",check:"string_format",abort:!1,...C($)})}function z1(_,$){return new _({type:"string",format:"base64",check:"string_format",abort:!1,...C($)})}function S1(_,$){return new _({type:"string",format:"base64url",check:"string_format",abort:!1,...C($)})}function W1(_,$){return new _({type:"string",format:"e164",check:"string_format",abort:!1,...C($)})}function X1(_,$){return new _({type:"string",format:"jwt",check:"string_format",abort:!1,...C($)})}function WL(_,$){return new _({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...C($)})}function XL(_,$){return new _({type:"string",format:"date",check:"string_format",...C($)})}function GL(_,$){return new _({type:"string",format:"time",check:"string_format",precision:null,...C($)})}function RL(_,$){return new _({type:"string",format:"duration",check:"string_format",...C($)})}function YL(_,$){return new _({type:"number",checks:[],...C($)})}function QL(_,$){return new _({type:"number",coerce:!0,checks:[],...C($)})}function TL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"safeint",...C($)})}function BL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float32",...C($)})}function qL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float64",...C($)})}function VL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"int32",...C($)})}function FL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"uint32",...C($)})}function KL(_,$){return new _({type:"boolean",...C($)})}function ML(_,$){return new _({type:"boolean",coerce:!0,...C($)})}function ZL(_,$){return new _({type:"bigint",...C($)})}function bL(_,$){return new _({type:"bigint",coerce:!0,...C($)})}function HL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...C($)})}function kL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...C($)})}function CL(_,$){return new _({type:"symbol",...C($)})}function vL(_,$){return new _({type:"undefined",...C($)})}function fL(_,$){return new _({type:"null",...C($)})}function wL(_){return new _({type:"any"})}function rL(_){return new _({type:"unknown"})}function uL(_,$){return new _({type:"never",...C($)})}function xL(_,$){return new _({type:"void",...C($)})}function yL(_,$){return new _({type:"date",...C($)})}function hL(_,$){return new _({type:"date",coerce:!0,...C($)})}function cL(_,$){return new _({type:"nan",...C($)})}function Q$(_,$){return new rI({check:"less_than",...C($),value:_,inclusive:!1})}function D$(_,$){return new rI({check:"less_than",...C($),value:_,inclusive:!0})}function T$(_,$){return new uI({check:"greater_than",...C($),value:_,inclusive:!1})}function h_(_,$){return new uI({check:"greater_than",...C($),value:_,inclusive:!0})}function XU(_){return T$(0,_)}function GU(_){return Q$(0,_)}function RU(_){return D$(0,_)}function YU(_){return h_(0,_)}function g6(_,$){return new wE({check:"multiple_of",...C($),value:_})}function I6(_,$){return new xE({check:"max_size",...C($),maximum:_})}function B$(_,$){return new yE({check:"min_size",...C($),minimum:_})}function k6(_,$){return new hE({check:"size_equals",...C($),size:_})}function C6(_,$){return new cE({check:"max_length",...C($),maximum:_})}function y$(_,$){return new nE({check:"min_length",...C($),minimum:_})}function v6(_,$){return new dE({check:"length_equals",...C($),length:_})}function W4(_,$){return new mE({check:"string_format",format:"regex",...C($),pattern:_})}function X4(_){return new iE({check:"string_format",format:"lowercase",...C(_)})}function G4(_){return new lE({check:"string_format",format:"uppercase",...C(_)})}function R4(_,$){return new tE({check:"string_format",format:"includes",...C($),includes:_})}function Y4(_,$){return new oE({check:"string_format",format:"starts_with",...C($),prefix:_})}function Q4(_,$){return new pE({check:"string_format",format:"ends_with",...C($),suffix:_})}function QU(_,$,D){return new eE({check:"property",property:_,schema:$,...C(D)})}function T4(_,$){return new aE({check:"mime_type",mime:_,...C($)})}function z$(_){return new sE({check:"overwrite",tx:_})}function B4(_){return z$(($)=>$.normalize(_))}function q4(){return z$((_)=>_.trim())}function V4(){return z$((_)=>_.toLowerCase())}function F4(){return z$((_)=>_.toUpperCase())}function K4(){return z$((_)=>o2(_))}function nL(_,$,D){return new _({type:"array",element:$,...C(D)})}function zK(_,$,D){return new _({type:"union",options:$,...C(D)})}function SK(_,$,D){return new _({type:"union",options:$,inclusive:!1,...C(D)})}function WK(_,$,D,g){return new _({type:"union",options:D,discriminator:$,...C(g)})}function XK(_,$,D){return new _({type:"intersection",left:$,right:D})}function GK(_,$,D,g){let U=D instanceof l;return new _({type:"tuple",items:$,rest:U?D:null,...C(U?g:D)})}function RK(_,$,D,g){return new _({type:"record",keyType:$,valueType:D,...C(g)})}function YK(_,$,D,g){return new _({type:"map",keyType:$,valueType:D,...C(g)})}function QK(_,$,D){return new _({type:"set",valueType:$,...C(D)})}function TK(_,$,D){let g=Array.isArray($)?Object.fromEntries($.map((U)=>[U,U])):$;return new _({type:"enum",entries:g,...C(D)})}function BK(_,$,D){return new _({type:"enum",entries:$,...C(D)})}function qK(_,$,D){return new _({type:"literal",values:Array.isArray($)?$:[$],...C(D)})}function dL(_,$){return new _({type:"file",...C($)})}function VK(_,$){return new _({type:"transform",transform:$})}function FK(_,$){return new _({type:"optional",innerType:$})}function KK(_,$){return new _({type:"nullable",innerType:$})}function MK(_,$,D){return new _({type:"default",innerType:$,get defaultValue(){return typeof D==="function"?D():e2(D)}})}function ZK(_,$,D){return new _({type:"nonoptional",innerType:$,...C(D)})}function bK(_,$){return new _({type:"success",innerType:$})}function HK(_,$,D){return new _({type:"catch",innerType:$,catchValue:typeof D==="function"?D:()=>D})}function kK(_,$,D){return new _({type:"pipe",in:$,out:D})}function CK(_,$){return new _({type:"readonly",innerType:$})}function vK(_,$,D){return new _({type:"template_literal",parts:$,...C(D)})}function fK(_,$){return new _({type:"lazy",getter:$})}function wK(_,$){return new _({type:"promise",innerType:$})}function mL(_,$,D){let g=C(D);return g.abort??(g.abort=!0),new _({type:"custom",check:"custom",fn:$,...g})}function iL(_,$,D){return new _({type:"custom",check:"custom",fn:$,...C(D)})}function lL(_,$){let D=L9((g)=>{return g.addIssue=(U)=>{if(typeof U==="string")g.issues.push(Z0(U,g.value,D._zod.def));else{let I=U;if(I.fatal)I.continue=!1;I.code??(I.code="custom"),I.input??(I.input=g.value),I.inst??(I.inst=D),I.continue??(I.continue=!D._zod.def.abort),g.issues.push(Z0(I))}},_(g.value,g)},$);return D}function L9(_,$){let D=new Y_({check:"custom",...C($)});return D._zod.check=_,D}function tL(_){let $=new Y_({check:"describe"});return $._zod.onattach=[(D)=>{let g=r_.get(D)??{};r_.add(D,{...g,description:_})}],$._zod.check=()=>{},$}function oL(_){let $=new Y_({check:"meta"});return $._zod.onattach=[(D)=>{let g=r_.get(D)??{};r_.add(D,{...g,..._})}],$._zod.check=()=>{},$}function pL(_,$){let D=C($),g=D.truthy??["true","1","yes","on","y","enabled"],U=D.falsy??["false","0","no","off","n","disabled"];if(D.case!=="sensitive")g=g.map((J)=>typeof J==="string"?J.toLowerCase():J),U=U.map((J)=>typeof J==="string"?J.toLowerCase():J);let I=new Set(g),j=new Set(U),N=_.Codec??EU,O=_.Boolean??jU,L=new(_.String??S4)({type:"string",error:D.error}),z=new O({type:"boolean",error:D.error}),W=new N({type:"pipe",in:L,out:z,transform:(J,P)=>{let S=J;if(D.case!=="sensitive")S=S.toLowerCase();if(I.has(S))return!0;else if(j.has(S))return!1;else return P.issues.push({code:"invalid_value",expected:"stringbool",values:[...I,...j],input:P.value,inst:W,continue:!1}),{}},reverseTransform:(J,P)=>{if(J===!0)return g[0]||"true";else return U[0]||"false"},error:D.error});return W}function x0(_,$,D,g={}){let U=C(g),I={...C(g),check:"string_format",type:"string",format:$,fn:typeof D==="function"?D:(N)=>D.test(N),...U};if(D instanceof RegExp)I.pattern=D;return new _(I)}var G1;var J9=w(()=>{xI();zU();JA();c();G1={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function f6(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";return{processors:_.processors??{},metadataRegistry:_?.metadata??r_,target:$,unrepresentable:_?.unrepresentable??"throw",override:_?.override??(()=>{}),io:_?.io??"output",counter:0,seen:new Map,cycles:_?.cycles??"ref",reused:_?.reused??"inline",external:_?.external??void 0}}function A_(_,$,D={path:[],schemaPath:[]}){var g;let U=_._zod.def,I=$.seen.get(_);if(I){if(I.count++,D.schemaPath.includes(_))I.cycle=D.path;return I.schema}let j={schema:{},count:1,cycle:void 0,path:D.path};$.seen.set(_,j);let N=_._zod.toJSONSchema?.();if(N)j.schema=N;else{let L={...D,schemaPath:[...D.schemaPath,_],path:D.path};if(_._zod.processJSONSchema)_._zod.processJSONSchema($,j.schema,L);else{let W=j.schema,J=$.processors[U.type];if(!J)throw Error(`[toJSONSchema]: Non-representable type encountered: ${U.type}`);J(_,$,W,L)}let z=_._zod.parent;if(z){if(!j.ref)j.ref=z;A_(z,$,L),$.seen.get(z).isParent=!0}}let O=$.metadataRegistry.get(_);if(O)Object.assign(j.schema,O);if($.io==="input"&&t_(_))delete j.schema.examples,delete j.schema.default;if($.io==="input"&&"_prefault"in j.schema)(g=j.schema).default??(g.default=j.schema._prefault);return delete j.schema._prefault,$.seen.get(_).schema}function w6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let g=new Map;for(let j of _.seen.entries()){let N=_.metadataRegistry.get(j[0])?.id;if(N){let O=g.get(N);if(O&&O!==j[0])throw Error(`Duplicate schema id "${N}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);g.set(N,j[0])}}let U=(j)=>{let N=_.target==="draft-2020-12"?"$defs":"definitions";if(_.external){let z=_.external.registry.get(j[0])?.id,W=_.external.uri??((P)=>P);if(z)return{ref:W(z)};let J=j[1].defId??j[1].schema.id??`schema${_.counter++}`;return j[1].defId=J,{defId:J,ref:`${W("__shared")}#/${N}/${J}`}}if(j[1]===D)return{ref:"#"};let A=`${"#"}/${N}/`,L=j[1].schema.id??`__schema${_.counter++}`;return{defId:L,ref:A+L}},I=(j)=>{if(j[1].schema.$ref)return;let N=j[1],{ref:O,defId:A}=U(j);if(N.def={...N.schema},A)N.defId=A;let L=N.schema;for(let z in L)delete L[z];L.$ref=O};if(_.cycles==="throw")for(let j of _.seen.entries()){let N=j[1];if(N.cycle)throw Error(`Cycle detected: #/${N.cycle?.join("/")}/ -Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let j of _.seen.entries()){let N=j[1];if($===j[0]){I(j);continue}if(_.external){let A=_.external.registry.get(j[0])?.id;if($!==j[0]&&A){I(j);continue}}if(_.metadataRegistry.get(j[0])?.id){I(j);continue}if(N.cycle){I(j);continue}if(N.count>1){if(_.reused==="ref"){I(j);continue}}}}function f6(_,$){let g=_.seen.get($);if(!g)throw Error("Unprocessed schema. This is a bug in Zod.");let U=(N)=>{let O=_.seen.get(N);if(O.ref===null)return;let A=O.def??O.schema,L={...A},z=O.ref;if(O.ref=null,z){U(z);let J=_.seen.get(z),P=J.schema;if(P.$ref&&(_.target==="draft-07"||_.target==="draft-04"||_.target==="openapi-3.0"))A.allOf=A.allOf??[],A.allOf.push(P);else Object.assign(A,P);if(Object.assign(A,L),N._zod.parent===z)for(let X in A){if(X==="$ref"||X==="allOf")continue;if(!(X in L))delete A[X]}if(P.$ref&&J.def)for(let X in A){if(X==="$ref"||X==="allOf")continue;if(X in J.def&&JSON.stringify(A[X])===JSON.stringify(J.def[X]))delete A[X]}}let W=N._zod.parent;if(W&&W!==z){U(W);let J=_.seen.get(W);if(J?.schema.$ref){if(A.$ref=J.schema.$ref,J.def)for(let P in A){if(P==="$ref"||P==="allOf")continue;if(P in J.def&&JSON.stringify(A[P])===JSON.stringify(J.def[P]))delete A[P]}}}_.override({zodSchema:N,jsonSchema:A,path:O.path??[]})};for(let N of[..._.seen.entries()].reverse())U(N[0]);let D={};if(_.target==="draft-2020-12")D.$schema="https://json-schema.org/draft/2020-12/schema";else if(_.target==="draft-07")D.$schema="http://json-schema.org/draft-07/schema#";else if(_.target==="draft-04")D.$schema="http://json-schema.org/draft-04/schema#";else if(_.target==="openapi-3.0");if(_.external?.uri){let N=_.external.registry.get($)?.id;if(!N)throw Error("Schema is missing an `id` property");D.$id=_.external.uri(N)}Object.assign(D,g.def??g.schema);let I=_.metadataRegistry.get($)?.id;if(I!==void 0&&D.id===I)delete D.id;let j=_.external?.defs??{};for(let N of _.seen.entries()){let O=N[1];if(O.def&&O.defId){if(O.def.id===O.defId)delete O.def.id;j[O.defId]=O.def}}if(_.external);else if(Object.keys(j).length>0)if(_.target==="draft-2020-12")D.$defs=j;else D.definitions=j;try{let N=JSON.parse(JSON.stringify(D));return Object.defineProperty(N,"~standard",{value:{...$["~standard"],jsonSchema:{input:x0($,"input",_.processors),output:x0($,"output",_.processors)}},enumerable:!1,writable:!1}),N}catch(N){throw Error("Error converting schema to JSON.")}}function t_(_,$){let g=$??{seen:new Set};if(g.seen.has(_))return!1;g.seen.add(_);let U=_._zod.def;if(U.type==="transform")return!0;if(U.type==="array")return t_(U.element,g);if(U.type==="set")return t_(U.valueType,g);if(U.type==="lazy")return t_(U.getter(),g);if(U.type==="promise"||U.type==="optional"||U.type==="nonoptional"||U.type==="nullable"||U.type==="readonly"||U.type==="default"||U.type==="prefault")return t_(U.innerType,g);if(U.type==="intersection")return t_(U.left,g)||t_(U.right,g);if(U.type==="record"||U.type==="map")return t_(U.keyType,g)||t_(U.valueType,g);if(U.type==="pipe"){if(_._zod.traits.has("$ZodCodec"))return!0;return t_(U.in,g)||t_(U.out,g)}if(U.type==="object"){for(let D in U.shape)if(t_(U.shape[D],g))return!0;return!1}if(U.type==="union"){for(let D of U.options)if(t_(D,g))return!0;return!1}if(U.type==="tuple"){for(let D of U.items)if(t_(D,g))return!0;if(U.rest&&t_(U.rest,g))return!0;return!1}return!1}var nL=(_,$={})=>(g)=>{let U=v6({...g,processors:$});return A_(_,U),w6(U,_),f6(U,_)},x0=(_,$,g={})=>(U)=>{let{libraryOptions:D,target:I}=U??{},j=v6({...D??{},target:I,io:$,processors:g});return A_(_,j),w6(j,_),f6(j,_)};var QD=w(()=>{PD()});function TD(_,$){if("_idmap"in _){let U=_,D=v6({...$,processors:R1}),I={};for(let O of U._idmap.entries()){let[A,L]=O;A_(L,D)}let j={},N={registry:U,uri:$?.uri,defs:I};D.external=N;for(let O of U._idmap.entries()){let[A,L]=O;w6(D,L),j[A]=f6(D,L)}if(Object.keys(I).length>0){let O=D.target==="draft-2020-12"?"$defs":"definitions";j.__shared={[O]:I}}return{schemas:j}}let g=v6({...$,processors:R1});return A_(_,g),w6(g,_),f6(g,_)}var QF,dL=(_,$,g,U)=>{let D=g;D.type="string";let{minimum:I,maximum:j,format:N,patterns:O,contentEncoding:A}=_._zod.bag;if(typeof I==="number")D.minLength=I;if(typeof j==="number")D.maxLength=j;if(N){if(D.format=QF[N]??N,D.format==="")delete D.format;if(N==="time")delete D.format}if(A)D.contentEncoding=A;if(O&&O.size>0){let L=[...O];if(L.length===1)D.pattern=L[0].source;else if(L.length>1)D.allOf=[...L.map((z)=>({...$.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"?{type:"string"}:{},pattern:z.source}))]}},mL=(_,$,g,U)=>{let D=g,{minimum:I,maximum:j,format:N,multipleOf:O,exclusiveMaximum:A,exclusiveMinimum:L}=_._zod.bag;if(typeof N==="string"&&N.includes("int"))D.type="integer";else D.type="number";let z=typeof L==="number"&&L>=(I??Number.NEGATIVE_INFINITY),W=typeof A==="number"&&A<=(j??Number.POSITIVE_INFINITY),J=$.target==="draft-04"||$.target==="openapi-3.0";if(z)if(J)D.minimum=L,D.exclusiveMinimum=!0;else D.exclusiveMinimum=L;else if(typeof I==="number")D.minimum=I;if(W)if(J)D.maximum=A,D.exclusiveMaximum=!0;else D.exclusiveMaximum=A;else if(typeof j==="number")D.maximum=j;if(typeof O==="number")D.multipleOf=O},iL=(_,$,g,U)=>{g.type="boolean"},lL=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},tL=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},oL=(_,$,g,U)=>{if($.target==="openapi-3.0")g.type="string",g.nullable=!0,g.enum=[null];else g.type="null"},pL=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},eL=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},aL=(_,$,g,U)=>{g.not={}},sL=(_,$,g,U)=>{},_J=(_,$,g,U)=>{},$J=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},gJ=(_,$,g,U)=>{let D=_._zod.def,I=pg(D.entries);if(I.every((j)=>typeof j==="number"))g.type="number";if(I.every((j)=>typeof j==="string"))g.type="string";g.enum=I},DJ=(_,$,g,U)=>{let D=_._zod.def,I=[];for(let j of D.values)if(j===void 0){if($.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof j==="bigint")if($.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else I.push(Number(j));else I.push(j);if(I.length===0);else if(I.length===1){let j=I[0];if(g.type=j===null?"null":typeof j,$.target==="draft-04"||$.target==="openapi-3.0")g.enum=[j];else g.const=j}else{if(I.every((j)=>typeof j==="number"))g.type="number";if(I.every((j)=>typeof j==="string"))g.type="string";if(I.every((j)=>typeof j==="boolean"))g.type="boolean";if(I.every((j)=>j===null))g.type="null";g.enum=I}},UJ=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},IJ=(_,$,g,U)=>{let D=g,I=_._zod.pattern;if(!I)throw Error("Pattern not found in template literal");D.type="string",D.pattern=I.source},jJ=(_,$,g,U)=>{let D=g,I={type:"string",format:"binary",contentEncoding:"binary"},{minimum:j,maximum:N,mime:O}=_._zod.bag;if(j!==void 0)I.minLength=j;if(N!==void 0)I.maxLength=N;if(O)if(O.length===1)I.contentMediaType=O[0],Object.assign(D,I);else Object.assign(D,I),D.anyOf=O.map((A)=>({contentMediaType:A}));else Object.assign(D,I)},NJ=(_,$,g,U)=>{g.type="boolean"},EJ=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},OJ=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},AJ=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},LJ=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},JJ=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},PJ=(_,$,g,U)=>{let D=g,I=_._zod.def,{minimum:j,maximum:N}=_._zod.bag;if(typeof j==="number")D.minItems=j;if(typeof N==="number")D.maxItems=N;D.type="array",D.items=A_(I.element,$,{...U,path:[...U.path,"items"]})},zJ=(_,$,g,U)=>{let D=g,I=_._zod.def;D.type="object",D.properties={};let j=I.shape;for(let A in j)D.properties[A]=A_(j[A],$,{...U,path:[...U.path,"properties",A]});let N=new Set(Object.keys(j)),O=new Set([...N].filter((A)=>{let L=I.shape[A]._zod;if($.io==="input")return L.optin===void 0;else return L.optout===void 0}));if(O.size>0)D.required=Array.from(O);if(I.catchall?._zod.def.type==="never")D.additionalProperties=!1;else if(!I.catchall){if($.io==="output")D.additionalProperties=!1}else if(I.catchall)D.additionalProperties=A_(I.catchall,$,{...U,path:[...U.path,"additionalProperties"]})},G1=(_,$,g,U)=>{let D=_._zod.def,I=D.inclusive===!1,j=D.options.map((N,O)=>A_(N,$,{...U,path:[...U.path,I?"oneOf":"anyOf",O]}));if(I)g.oneOf=j;else g.anyOf=j},SJ=(_,$,g,U)=>{let D=_._zod.def,I=A_(D.left,$,{...U,path:[...U.path,"allOf",0]}),j=A_(D.right,$,{...U,path:[...U.path,"allOf",1]}),N=(A)=>("allOf"in A)&&Object.keys(A).length===1,O=[...N(I)?I.allOf:[I],...N(j)?j.allOf:[j]];g.allOf=O},WJ=(_,$,g,U)=>{let D=g,I=_._zod.def;D.type="array";let j=$.target==="draft-2020-12"?"prefixItems":"items",N=$.target==="draft-2020-12"?"items":$.target==="openapi-3.0"?"items":"additionalItems",O=I.items.map((W,J)=>A_(W,$,{...U,path:[...U.path,j,J]})),A=I.rest?A_(I.rest,$,{...U,path:[...U.path,N,...$.target==="openapi-3.0"?[I.items.length]:[]]}):null;if($.target==="draft-2020-12"){if(D.prefixItems=O,A)D.items=A}else if($.target==="openapi-3.0"){if(D.items={anyOf:O},A)D.items.anyOf.push(A);if(D.minItems=O.length,!A)D.maxItems=O.length}else if(D.items=O,A)D.additionalItems=A;let{minimum:L,maximum:z}=_._zod.bag;if(typeof L==="number")D.minItems=L;if(typeof z==="number")D.maxItems=z},XJ=(_,$,g,U)=>{let D=g,I=_._zod.def;D.type="object";let j=I.keyType,O=j._zod.bag?.patterns;if(I.mode==="loose"&&O&&O.size>0){let L=A_(I.valueType,$,{...U,path:[...U.path,"patternProperties","*"]});D.patternProperties={};for(let z of O)D.patternProperties[z.source]=L}else{if($.target==="draft-07"||$.target==="draft-2020-12")D.propertyNames=A_(I.keyType,$,{...U,path:[...U.path,"propertyNames"]});D.additionalProperties=A_(I.valueType,$,{...U,path:[...U.path,"additionalProperties"]})}let A=j._zod.values;if(A){let L=[...A].filter((z)=>typeof z==="string"||typeof z==="number");if(L.length>0)D.required=L}},RJ=(_,$,g,U)=>{let D=_._zod.def,I=A_(D.innerType,$,U),j=$.seen.get(_);if($.target==="openapi-3.0")j.ref=D.innerType,g.nullable=!0;else g.anyOf=[I,{type:"null"}]},GJ=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType},YJ=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType,g.default=JSON.parse(JSON.stringify(D.defaultValue))},QJ=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);if(I.ref=D.innerType,$.io==="input")g._prefault=JSON.parse(JSON.stringify(D.defaultValue))},TJ=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType;let j;try{j=D.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}g.default=j},qJ=(_,$,g,U)=>{let D=_._zod.def,I=D.in._zod.traits.has("$ZodTransform"),j=$.io==="input"?I?D.out:D.in:D.out;A_(j,$,U);let N=$.seen.get(_);N.ref=j},BJ=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType,g.readOnly=!0},KJ=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType},Y1=(_,$,g,U)=>{let D=_._zod.def;A_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType},VJ=(_,$,g,U)=>{let D=_._zod.innerType;A_(D,$,U);let I=$.seen.get(_);I.ref=D},R1;var qD=w(()=>{QD();c();QF={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},R1={string:dL,number:mL,boolean:iL,bigint:lL,symbol:tL,null:oL,undefined:pL,void:eL,never:aL,any:sL,unknown:_J,date:$J,enum:gJ,literal:DJ,nan:UJ,template_literal:IJ,file:jJ,success:NJ,custom:EJ,function:OJ,transform:AJ,map:LJ,set:JJ,array:PJ,object:zJ,union:G1,intersection:SJ,tuple:WJ,record:XJ,nullable:RJ,nonoptional:GJ,default:YJ,prefault:QJ,catch:TJ,pipe:qJ,readonly:BJ,promise:KJ,optional:Y1,lazy:VJ}});class FJ{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(_){this.ctx.counter=_}get seen(){return this.ctx.seen}constructor(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";this.ctx=v6({processors:R1,target:$,..._?.metadata&&{metadata:_.metadata},..._?.unrepresentable&&{unrepresentable:_.unrepresentable},..._?.override&&{override:_.override},..._?.io&&{io:_.io}})}process(_,$={path:[],schemaPath:[]}){return A_(_,this.ctx,$)}emit(_,$){if($){if($.cycles)this.ctx.cycles=$.cycles;if($.reused)this.ctx.reused=$.reused;if($.external)this.ctx.external=$.external}w6(this.ctx,_);let g=f6(this.ctx,_),{"~standard":U,...D}=g;return D}}var _R=w(()=>{qD();QD()});var $R={};var gR=()=>{};var h$={};r$(h$,{version:()=>i2,util:()=>H,treeifyError:()=>TI,toJSONSchema:()=>TD,toDotPath:()=>VX,safeParseAsync:()=>eE,safeParse:()=>pE,safeEncodeAsync:()=>BK,safeEncode:()=>TK,safeDecodeAsync:()=>KK,safeDecode:()=>qK,registry:()=>JD,regexes:()=>$$,process:()=>A_,prettifyError:()=>qI,parseAsync:()=>KI,parse:()=>BI,meta:()=>hL,locales:()=>f0,isValidJWT:()=>tX,isValidBase64URL:()=>lX,isValidBase64:()=>SO,initializeContext:()=>v6,globalRegistry:()=>f_,globalConfig:()=>A4,formatError:()=>b0,flattenError:()=>Z0,finalize:()=>f6,extractDefs:()=>w6,encodeAsync:()=>YK,encode:()=>RK,describe:()=>yL,decodeAsync:()=>QK,decode:()=>GK,createToJSONSchemaMethod:()=>nL,createStandardJSONSchemaMethod:()=>x0,config:()=>Z_,clone:()=>y_,_xor:()=>sV,_xid:()=>N1,_void:()=>HL,_uuidv7:()=>$1,_uuidv6:()=>_1,_uuidv4:()=>sI,_uuid:()=>aI,_url:()=>SD,_uppercase:()=>R4,_unknown:()=>ZL,_union:()=>aV,_undefined:()=>VL,_ulid:()=>j1,_uint64:()=>BL,_uint32:()=>RL,_tuple:()=>gF,_trim:()=>B4,_transform:()=>OF,_toUpperCase:()=>V4,_toLowerCase:()=>K4,_templateLiteral:()=>RF,_symbol:()=>KL,_superRefine:()=>xL,_success:()=>zF,_stringbool:()=>cL,_stringFormat:()=>u0,_string:()=>IL,_startsWith:()=>Y4,_slugify:()=>F4,_size:()=>k6,_set:()=>IF,_safeParseAsync:()=>r0,_safeParse:()=>C0,_safeEncodeAsync:()=>kI,_safeEncode:()=>bI,_safeDecodeAsync:()=>CI,_safeDecode:()=>HI,_regex:()=>W4,_refine:()=>uL,_record:()=>DF,_readonly:()=>XF,_property:()=>YD,_promise:()=>YF,_positive:()=>WD,_pipe:()=>WF,_parseAsync:()=>k0,_parse:()=>H0,_overwrite:()=>z$,_optional:()=>AF,_number:()=>JL,_nullable:()=>LF,_null:()=>FL,_normalize:()=>q4,_nonpositive:()=>RD,_nonoptional:()=>PF,_nonnegative:()=>GD,_never:()=>bL,_negative:()=>XD,_nativeEnum:()=>NF,_nanoid:()=>D1,_nan:()=>rL,_multipleOf:()=>U6,_minSize:()=>q$,_minLength:()=>y$,_min:()=>h_,_mime:()=>T4,_maxSize:()=>I6,_maxLength:()=>C6,_max:()=>g$,_map:()=>UF,_mac:()=>NL,_lte:()=>g$,_lt:()=>Q$,_lowercase:()=>X4,_literal:()=>EF,_length:()=>r6,_lazy:()=>GF,_ksuid:()=>E1,_jwt:()=>W1,_isoTime:()=>AL,_isoDuration:()=>LL,_isoDateTime:()=>EL,_isoDate:()=>OL,_ipv6:()=>A1,_ipv4:()=>O1,_intersection:()=>$F,_int64:()=>qL,_int32:()=>XL,_int:()=>zL,_includes:()=>G4,_guid:()=>zD,_gte:()=>h_,_gt:()=>T$,_float64:()=>WL,_float32:()=>SL,_file:()=>wL,_enum:()=>jF,_endsWith:()=>Q4,_encodeAsync:()=>MI,_encode:()=>VI,_emoji:()=>g1,_email:()=>eI,_e164:()=>S1,_discriminatedUnion:()=>_F,_default:()=>JF,_decodeAsync:()=>ZI,_decode:()=>FI,_date:()=>kL,_custom:()=>fL,_cuid2:()=>I1,_cuid:()=>U1,_coercedString:()=>jL,_coercedNumber:()=>PL,_coercedDate:()=>CL,_coercedBoolean:()=>YL,_coercedBigint:()=>TL,_cidrv6:()=>J1,_cidrv4:()=>L1,_check:()=>a5,_catch:()=>SF,_boolean:()=>GL,_bigint:()=>QL,_base64url:()=>z1,_base64:()=>P1,_array:()=>vL,_any:()=>ML,TimePrecision:()=>X1,NEVER:()=>RI,JSONSchemaGenerator:()=>FJ,JSONSchema:()=>$R,Doc:()=>xI,$output:()=>oI,$input:()=>pI,$constructor:()=>Y,$brand:()=>GI,$ZodXor:()=>CO,$ZodXID:()=>UO,$ZodVoid:()=>ZO,$ZodUnknown:()=>FO,$ZodUnion:()=>jD,$ZodUndefined:()=>BO,$ZodUUID:()=>p2,$ZodURL:()=>a2,$ZodULID:()=>DO,$ZodType:()=>l,$ZodTuple:()=>iI,$ZodTransform:()=>cO,$ZodTemplateLiteral:()=>sO,$ZodSymbol:()=>qO,$ZodSuccess:()=>tO,$ZodStringFormat:()=>R_,$ZodString:()=>S4,$ZodSet:()=>uO,$ZodRegistry:()=>UL,$ZodRecord:()=>wO,$ZodRealError:()=>_$,$ZodReadonly:()=>aO,$ZodPromise:()=>$A,$ZodPreprocess:()=>eO,$ZodPrefault:()=>iO,$ZodPipe:()=>tI,$ZodOptional:()=>lI,$ZodObjectJIT:()=>kO,$ZodObject:()=>eX,$ZodNumberFormat:()=>QO,$ZodNumber:()=>dI,$ZodNullable:()=>dO,$ZodNull:()=>KO,$ZodNonOptional:()=>lO,$ZodNever:()=>MO,$ZodNanoID:()=>_O,$ZodNaN:()=>pO,$ZodMap:()=>fO,$ZodMAC:()=>JO,$ZodLiteral:()=>yO,$ZodLazy:()=>gA,$ZodKSUID:()=>IO,$ZodJWT:()=>GO,$ZodIntersection:()=>vO,$ZodISOTime:()=>EO,$ZodISODuration:()=>OO,$ZodISODateTime:()=>jO,$ZodISODate:()=>NO,$ZodIPv6:()=>LO,$ZodIPv4:()=>AO,$ZodGUID:()=>o2,$ZodFunction:()=>_A,$ZodFile:()=>hO,$ZodExactOptional:()=>nO,$ZodError:()=>$D,$ZodEnum:()=>xO,$ZodEncodeError:()=>L4,$ZodEmoji:()=>s2,$ZodEmail:()=>e2,$ZodE164:()=>RO,$ZodDiscriminatedUnion:()=>rO,$ZodDefault:()=>mO,$ZodDate:()=>bO,$ZodCustomStringFormat:()=>YO,$ZodCustom:()=>DA,$ZodCodec:()=>ND,$ZodCheckUpperCase:()=>x2,$ZodCheckStringFormat:()=>v0,$ZodCheckStartsWith:()=>h2,$ZodCheckSizeEquals:()=>C2,$ZodCheckRegex:()=>f2,$ZodCheckProperty:()=>n2,$ZodCheckOverwrite:()=>m2,$ZodCheckNumberFormat:()=>Z2,$ZodCheckMultipleOf:()=>M2,$ZodCheckMinSize:()=>k2,$ZodCheckMinLength:()=>v2,$ZodCheckMimeType:()=>d2,$ZodCheckMaxSize:()=>H2,$ZodCheckMaxLength:()=>r2,$ZodCheckLowerCase:()=>u2,$ZodCheckLessThan:()=>wI,$ZodCheckLengthEquals:()=>w2,$ZodCheckIncludes:()=>y2,$ZodCheckGreaterThan:()=>fI,$ZodCheckEndsWith:()=>c2,$ZodCheckBigIntFormat:()=>b2,$ZodCheck:()=>Y_,$ZodCatch:()=>oO,$ZodCUID2:()=>gO,$ZodCUID:()=>$O,$ZodCIDRv6:()=>zO,$ZodCIDRv4:()=>PO,$ZodBoolean:()=>ID,$ZodBigIntFormat:()=>TO,$ZodBigInt:()=>mI,$ZodBase64URL:()=>XO,$ZodBase64:()=>WO,$ZodAsyncError:()=>x$,$ZodArray:()=>HO,$ZodAny:()=>VO});var N$=w(()=>{c();vI();DL();qD();_R();gR();J4();aE();oE();UA();uI();l2();PD();s5();QD()});var Q1={};r$(Q1,{uppercase:()=>R4,trim:()=>B4,toUpperCase:()=>V4,toLowerCase:()=>K4,startsWith:()=>Y4,slugify:()=>F4,size:()=>k6,regex:()=>W4,property:()=>YD,positive:()=>WD,overwrite:()=>z$,normalize:()=>q4,nonpositive:()=>RD,nonnegative:()=>GD,negative:()=>XD,multipleOf:()=>U6,minSize:()=>q$,minLength:()=>y$,mime:()=>T4,maxSize:()=>I6,maxLength:()=>C6,lte:()=>g$,lt:()=>Q$,lowercase:()=>X4,length:()=>r6,includes:()=>G4,gte:()=>h_,gt:()=>T$,endsWith:()=>Q4});var T1=w(()=>{N$()});var M4={};r$(M4,{time:()=>bJ,duration:()=>HJ,datetime:()=>MJ,date:()=>ZJ,ZodISOTime:()=>VD,ZodISODuration:()=>FD,ZodISODateTime:()=>BD,ZodISODate:()=>KD});function MJ(_){return EL(BD,_)}function ZJ(_){return OL(KD,_)}function bJ(_){return AL(VD,_)}function HJ(_){return LL(FD,_)}var BD,KD,VD,FD;var MD=w(()=>{N$();bD();BD=Y("ZodISODateTime",(_,$)=>{jO.init(_,$),z_.init(_,$)});KD=Y("ZodISODate",(_,$)=>{NO.init(_,$),z_.init(_,$)});VD=Y("ZodISOTime",(_,$)=>{EO.init(_,$),z_.init(_,$)});FD=Y("ZodISODuration",(_,$)=>{OO.init(_,$),z_.init(_,$)})});var DR=(_,$)=>{$D.init(_,$),_.name="ZodError",Object.defineProperties(_,{format:{value:(g)=>b0(_,g)},flatten:{value:(g)=>Z0(_,g)},addIssue:{value:(g)=>{_.issues.push(g),_.message=JSON.stringify(_.issues,V0,2)}},addIssues:{value:(g)=>{_.issues.push(...g),_.message=JSON.stringify(_.issues,V0,2)}},isEmpty:{get(){return _.issues.length===0}}})},UR,o_;var kJ=w(()=>{N$();N$();c();UR=Y("ZodError",DR),o_=Y("ZodError",DR,{Parent:Error})});var q1,B1,K1,V1,F1,M1,Z1,b1,H1,k1,C1,r1;var CJ=w(()=>{N$();kJ();q1=H0(o_),B1=k0(o_),K1=C0(o_),V1=r0(o_),F1=VI(o_),M1=FI(o_),Z1=MI(o_),b1=ZI(o_),H1=bI(o_),k1=HI(o_),C1=kI(o_),r1=CI(o_)});var ZD={};r$(ZD,{xor:()=>BP,xid:()=>lJ,void:()=>RP,uuidv7:()=>xJ,uuidv6:()=>uJ,uuidv4:()=>fJ,uuid:()=>wJ,url:()=>yJ,unknown:()=>u6,union:()=>sD,undefined:()=>WP,ulid:()=>iJ,uint64:()=>zP,uint32:()=>LP,tuple:()=>a1,transform:()=>$U,templateLiteral:()=>uP,symbol:()=>SP,superRefine:()=>Vj,success:()=>rP,stringbool:()=>iP,stringFormat:()=>UP,string:()=>y0,strictObject:()=>TP,set:()=>ZP,refine:()=>Kj,record:()=>s1,readonly:()=>Gj,promise:()=>xP,preprocess:()=>tP,prefault:()=>Lj,pipe:()=>kD,partialRecord:()=>VP,optional:()=>c0,object:()=>QP,number:()=>w1,nullish:()=>CP,nullable:()=>n0,null:()=>h1,nonoptional:()=>Jj,never:()=>aD,nativeEnum:()=>bP,nanoid:()=>nJ,nan:()=>vP,meta:()=>dP,map:()=>MP,mac:()=>pJ,looseRecord:()=>FP,looseObject:()=>qP,literal:()=>HP,lazy:()=>Tj,ksuid:()=>tJ,keyof:()=>YP,jwt:()=>DP,json:()=>lP,ipv6:()=>eJ,ipv4:()=>oJ,invertCodec:()=>fP,intersection:()=>p1,int64:()=>PP,int32:()=>AP,int:()=>HD,instanceof:()=>mP,httpUrl:()=>hJ,hostname:()=>IP,hex:()=>jP,hash:()=>NP,guid:()=>vJ,function:()=>yP,float64:()=>OP,float32:()=>EP,file:()=>kP,exactOptional:()=>jj,enum:()=>_U,emoji:()=>cJ,email:()=>rJ,e164:()=>gP,discriminatedUnion:()=>KP,describe:()=>nP,date:()=>GP,custom:()=>cP,cuid2:()=>mJ,cuid:()=>dJ,codec:()=>wP,cidrv6:()=>sJ,cidrv4:()=>aJ,check:()=>hP,catch:()=>Sj,boolean:()=>f1,bigint:()=>JP,base64url:()=>$P,base64:()=>_P,array:()=>i0,any:()=>XP,_function:()=>yP,_default:()=>Oj,_ZodString:()=>rD,ZodXor:()=>l1,ZodXID:()=>hD,ZodVoid:()=>m1,ZodUnknown:()=>n1,ZodUnion:()=>t0,ZodUndefined:()=>x1,ZodUUID:()=>B$,ZodURL:()=>d0,ZodULID:()=>yD,ZodType:()=>o,ZodTuple:()=>e1,ZodTransform:()=>Uj,ZodTemplateLiteral:()=>Yj,ZodSymbol:()=>u1,ZodSuccess:()=>Pj,ZodStringFormat:()=>z_,ZodString:()=>H4,ZodSet:()=>$j,ZodRecord:()=>Z4,ZodReadonly:()=>Rj,ZodPromise:()=>qj,ZodPreprocess:()=>Xj,ZodPrefault:()=>Aj,ZodPipe:()=>o0,ZodOptional:()=>gU,ZodObject:()=>l0,ZodNumberFormat:()=>x6,ZodNumber:()=>C4,ZodNullable:()=>Nj,ZodNull:()=>y1,ZodNonOptional:()=>DU,ZodNever:()=>d1,ZodNanoID:()=>fD,ZodNaN:()=>Wj,ZodMap:()=>_j,ZodMAC:()=>v1,ZodLiteral:()=>gj,ZodLazy:()=>Qj,ZodKSUID:()=>cD,ZodJWT:()=>pD,ZodIntersection:()=>o1,ZodIPv6:()=>dD,ZodIPv4:()=>nD,ZodGUID:()=>h0,ZodFunction:()=>Bj,ZodFile:()=>Dj,ZodExactOptional:()=>Ij,ZodEnum:()=>b4,ZodEmoji:()=>wD,ZodEmail:()=>vD,ZodE164:()=>oD,ZodDiscriminatedUnion:()=>t1,ZodDefault:()=>Ej,ZodDate:()=>m0,ZodCustomStringFormat:()=>k4,ZodCustom:()=>e0,ZodCodec:()=>p0,ZodCatch:()=>zj,ZodCUID2:()=>xD,ZodCUID:()=>uD,ZodCIDRv6:()=>iD,ZodCIDRv4:()=>mD,ZodBoolean:()=>r4,ZodBigIntFormat:()=>eD,ZodBigInt:()=>v4,ZodBase64URL:()=>tD,ZodBase64:()=>lD,ZodArray:()=>i1,ZodAny:()=>c1});function CD(_,$,g){let U=Object.getPrototypeOf(_),D=IR.get(U);if(!D)D=new Set,IR.set(U,D);if(D.has($))return;D.add($);for(let I in g){let j=g[I];Object.defineProperty(U,I,{configurable:!0,enumerable:!1,get(){let N=j.bind(this);return Object.defineProperty(this,I,{configurable:!0,writable:!0,enumerable:!0,value:N}),N},set(N){Object.defineProperty(this,I,{configurable:!0,writable:!0,enumerable:!0,value:N})}})}}function y0(_){return IL(H4,_)}function rJ(_){return eI(vD,_)}function vJ(_){return zD(h0,_)}function wJ(_){return aI(B$,_)}function fJ(_){return sI(B$,_)}function uJ(_){return _1(B$,_)}function xJ(_){return $1(B$,_)}function yJ(_){return SD(d0,_)}function hJ(_){return SD(d0,{protocol:$$.httpProtocol,hostname:$$.domain,...H.normalizeParams(_)})}function cJ(_){return g1(wD,_)}function nJ(_){return D1(fD,_)}function dJ(_){return U1(uD,_)}function mJ(_){return I1(xD,_)}function iJ(_){return j1(yD,_)}function lJ(_){return N1(hD,_)}function tJ(_){return E1(cD,_)}function oJ(_){return O1(nD,_)}function pJ(_){return NL(v1,_)}function eJ(_){return A1(dD,_)}function aJ(_){return L1(mD,_)}function sJ(_){return J1(iD,_)}function _P(_){return P1(lD,_)}function $P(_){return z1(tD,_)}function gP(_){return S1(oD,_)}function DP(_){return W1(pD,_)}function UP(_,$,g={}){return u0(k4,_,$,g)}function IP(_){return u0(k4,"hostname",$$.hostname,_)}function jP(_){return u0(k4,"hex",$$.hex,_)}function NP(_,$){let g=$?.enc??"hex",U=`${_}_${g}`,D=$$[U];if(!D)throw Error(`Unrecognized hash format: ${U}`);return u0(k4,U,D,$)}function w1(_){return JL(C4,_)}function HD(_){return zL(x6,_)}function EP(_){return SL(x6,_)}function OP(_){return WL(x6,_)}function AP(_){return XL(x6,_)}function LP(_){return RL(x6,_)}function f1(_){return GL(r4,_)}function JP(_){return QL(v4,_)}function PP(_){return qL(eD,_)}function zP(_){return BL(eD,_)}function SP(_){return KL(u1,_)}function WP(_){return VL(x1,_)}function h1(_){return FL(y1,_)}function XP(){return ML(c1)}function u6(){return ZL(n1)}function aD(_){return bL(d1,_)}function RP(_){return HL(m1,_)}function GP(_){return kL(m0,_)}function i0(_,$){return vL(i1,_,$)}function YP(_){let $=_._zod.def.shape;return _U(Object.keys($))}function QP(_,$){let g={type:"object",shape:_??{},...H.normalizeParams($)};return new l0(g)}function TP(_,$){return new l0({type:"object",shape:_,catchall:aD(),...H.normalizeParams($)})}function qP(_,$){return new l0({type:"object",shape:_,catchall:u6(),...H.normalizeParams($)})}function sD(_,$){return new t0({type:"union",options:_,...H.normalizeParams($)})}function BP(_,$){return new l1({type:"union",options:_,inclusive:!1,...H.normalizeParams($)})}function KP(_,$,g){return new t1({type:"union",options:$,discriminator:_,...H.normalizeParams(g)})}function p1(_,$){return new o1({type:"intersection",left:_,right:$})}function a1(_,$,g){let U=$ instanceof l,D=U?g:$;return new e1({type:"tuple",items:_,rest:U?$:null,...H.normalizeParams(D)})}function s1(_,$,g){if(!$||!$._zod)return new Z4({type:"record",keyType:y0(),valueType:_,...H.normalizeParams($)});return new Z4({type:"record",keyType:_,valueType:$,...H.normalizeParams(g)})}function VP(_,$,g){let U=y_(_);return U._zod.values=void 0,new Z4({type:"record",keyType:U,valueType:$,...H.normalizeParams(g)})}function FP(_,$,g){return new Z4({type:"record",keyType:_,valueType:$,mode:"loose",...H.normalizeParams(g)})}function MP(_,$,g){return new _j({type:"map",keyType:_,valueType:$,...H.normalizeParams(g)})}function ZP(_,$){return new $j({type:"set",valueType:_,...H.normalizeParams($)})}function _U(_,$){let g=Array.isArray(_)?Object.fromEntries(_.map((U)=>[U,U])):_;return new b4({type:"enum",entries:g,...H.normalizeParams($)})}function bP(_,$){return new b4({type:"enum",entries:_,...H.normalizeParams($)})}function HP(_,$){return new gj({type:"literal",values:Array.isArray(_)?_:[_],...H.normalizeParams($)})}function kP(_){return wL(Dj,_)}function $U(_){return new Uj({type:"transform",transform:_})}function c0(_){return new gU({type:"optional",innerType:_})}function jj(_){return new Ij({type:"optional",innerType:_})}function n0(_){return new Nj({type:"nullable",innerType:_})}function CP(_){return c0(n0(_))}function Oj(_,$){return new Ej({type:"default",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Lj(_,$){return new Aj({type:"prefault",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Jj(_,$){return new DU({type:"nonoptional",innerType:_,...H.normalizeParams($)})}function rP(_){return new Pj({type:"success",innerType:_})}function Sj(_,$){return new zj({type:"catch",innerType:_,catchValue:typeof $==="function"?$:()=>$})}function vP(_){return rL(Wj,_)}function kD(_,$){return new o0({type:"pipe",in:_,out:$})}function wP(_,$,g){return new p0({type:"pipe",in:_,out:$,transform:g.decode,reverseTransform:g.encode})}function fP(_){let $=_._zod.def;return new p0({type:"pipe",in:$.out,out:$.in,transform:$.reverseTransform,reverseTransform:$.transform})}function Gj(_){return new Rj({type:"readonly",innerType:_})}function uP(_,$){return new Yj({type:"template_literal",parts:_,...H.normalizeParams($)})}function Tj(_){return new Qj({type:"lazy",getter:_})}function xP(_){return new qj({type:"promise",innerType:_})}function yP(_){return new Bj({type:"function",input:Array.isArray(_?.input)?a1(_?.input):_?.input??i0(u6()),output:_?.output??u6()})}function hP(_){let $=new Y_({check:"custom"});return $._zod.check=_,$}function cP(_,$){return fL(e0,_??(()=>!0),$)}function Kj(_,$={}){return uL(e0,_,$)}function Vj(_,$){return xL(_,$)}function mP(_,$={}){let g=new e0({type:"custom",check:"custom",fn:(U)=>U instanceof _,abort:!0,...H.normalizeParams($)});return g._zod.bag.Class=_,g._zod.check=(U)=>{if(!(U.value instanceof _))U.issues.push({code:"invalid_type",expected:_.name,input:U.value,inst:g,path:[...g._zod.def.path??[]]})},g}function lP(_){let $=Tj(()=>{return sD([y0(_),w1(),f1(),h1(),i0($),s1(y0(),$)])});return $}function tP(_,$){return new Xj({type:"pipe",in:$U(_),out:$})}var IR,o,rD,H4,z_,vD,h0,B$,d0,wD,fD,uD,xD,yD,hD,cD,nD,v1,dD,mD,iD,lD,tD,oD,pD,k4,C4,x6,r4,v4,eD,u1,x1,y1,c1,n1,d1,m1,m0,i1,l0,t0,l1,t1,o1,e1,Z4,_j,$j,b4,gj,Dj,Uj,gU,Ij,Nj,Ej,Aj,DU,Pj,zj,Wj,o0,p0,Xj,Rj,Yj,Qj,qj,Bj,e0,nP,dP,iP=(..._)=>cL({Codec:p0,Boolean:r4,String:H4},..._);var bD=w(()=>{N$();N$();qD();QD();T1();MD();CJ();IR=new WeakMap;o=Y("ZodType",(_,$)=>{return l.init(_,$),Object.assign(_["~standard"],{jsonSchema:{input:x0(_,"input"),output:x0(_,"output")}}),_.toJSONSchema=nL(_,{}),_.def=$,_.type=$.type,Object.defineProperty(_,"_def",{value:$}),_.parse=(g,U)=>q1(_,g,U,{callee:_.parse}),_.safeParse=(g,U)=>K1(_,g,U),_.parseAsync=async(g,U)=>B1(_,g,U,{callee:_.parseAsync}),_.safeParseAsync=async(g,U)=>V1(_,g,U),_.spa=_.safeParseAsync,_.encode=(g,U)=>F1(_,g,U),_.decode=(g,U)=>M1(_,g,U),_.encodeAsync=async(g,U)=>Z1(_,g,U),_.decodeAsync=async(g,U)=>b1(_,g,U),_.safeEncode=(g,U)=>H1(_,g,U),_.safeDecode=(g,U)=>k1(_,g,U),_.safeEncodeAsync=async(g,U)=>C1(_,g,U),_.safeDecodeAsync=async(g,U)=>r1(_,g,U),CD(_,"ZodType",{check(...g){let U=this.def;return this.clone(H.mergeDefs(U,{checks:[...U.checks??[],...g.map((D)=>typeof D==="function"?{_zod:{check:D,def:{check:"custom"},onattach:[]}}:D)]}),{parent:!0})},with(...g){return this.check(...g)},clone(g,U){return y_(this,g,U)},brand(){return this},register(g,U){return g.add(this,U),this},refine(g,U){return this.check(Kj(g,U))},superRefine(g,U){return this.check(Vj(g,U))},overwrite(g){return this.check(z$(g))},optional(){return c0(this)},exactOptional(){return jj(this)},nullable(){return n0(this)},nullish(){return c0(n0(this))},nonoptional(g){return Jj(this,g)},array(){return i0(this)},or(g){return sD([this,g])},and(g){return p1(this,g)},transform(g){return kD(this,$U(g))},default(g){return Oj(this,g)},prefault(g){return Lj(this,g)},catch(g){return Sj(this,g)},pipe(g){return kD(this,g)},readonly(){return Gj(this)},describe(g){let U=this.clone();return f_.add(U,{description:g}),U},meta(...g){if(g.length===0)return f_.get(this);let U=this.clone();return f_.add(U,g[0]),U},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(g){return g(this)}}),Object.defineProperty(_,"description",{get(){return f_.get(_)?.description},configurable:!0}),_}),rD=Y("_ZodString",(_,$)=>{S4.init(_,$),o.init(_,$),_._zod.processJSONSchema=(U,D,I)=>dL(_,U,D,I);let g=_._zod.bag;_.format=g.format??null,_.minLength=g.minimum??null,_.maxLength=g.maximum??null,CD(_,"_ZodString",{regex(...U){return this.check(W4(...U))},includes(...U){return this.check(G4(...U))},startsWith(...U){return this.check(Y4(...U))},endsWith(...U){return this.check(Q4(...U))},min(...U){return this.check(y$(...U))},max(...U){return this.check(C6(...U))},length(...U){return this.check(r6(...U))},nonempty(...U){return this.check(y$(1,...U))},lowercase(U){return this.check(X4(U))},uppercase(U){return this.check(R4(U))},trim(){return this.check(B4())},normalize(...U){return this.check(q4(...U))},toLowerCase(){return this.check(K4())},toUpperCase(){return this.check(V4())},slugify(){return this.check(F4())}})}),H4=Y("ZodString",(_,$)=>{S4.init(_,$),rD.init(_,$),_.email=(g)=>_.check(eI(vD,g)),_.url=(g)=>_.check(SD(d0,g)),_.jwt=(g)=>_.check(W1(pD,g)),_.emoji=(g)=>_.check(g1(wD,g)),_.guid=(g)=>_.check(zD(h0,g)),_.uuid=(g)=>_.check(aI(B$,g)),_.uuidv4=(g)=>_.check(sI(B$,g)),_.uuidv6=(g)=>_.check(_1(B$,g)),_.uuidv7=(g)=>_.check($1(B$,g)),_.nanoid=(g)=>_.check(D1(fD,g)),_.guid=(g)=>_.check(zD(h0,g)),_.cuid=(g)=>_.check(U1(uD,g)),_.cuid2=(g)=>_.check(I1(xD,g)),_.ulid=(g)=>_.check(j1(yD,g)),_.base64=(g)=>_.check(P1(lD,g)),_.base64url=(g)=>_.check(z1(tD,g)),_.xid=(g)=>_.check(N1(hD,g)),_.ksuid=(g)=>_.check(E1(cD,g)),_.ipv4=(g)=>_.check(O1(nD,g)),_.ipv6=(g)=>_.check(A1(dD,g)),_.cidrv4=(g)=>_.check(L1(mD,g)),_.cidrv6=(g)=>_.check(J1(iD,g)),_.e164=(g)=>_.check(S1(oD,g)),_.datetime=(g)=>_.check(MJ(g)),_.date=(g)=>_.check(ZJ(g)),_.time=(g)=>_.check(bJ(g)),_.duration=(g)=>_.check(HJ(g))});z_=Y("ZodStringFormat",(_,$)=>{R_.init(_,$),rD.init(_,$)}),vD=Y("ZodEmail",(_,$)=>{e2.init(_,$),z_.init(_,$)});h0=Y("ZodGUID",(_,$)=>{o2.init(_,$),z_.init(_,$)});B$=Y("ZodUUID",(_,$)=>{p2.init(_,$),z_.init(_,$)});d0=Y("ZodURL",(_,$)=>{a2.init(_,$),z_.init(_,$)});wD=Y("ZodEmoji",(_,$)=>{s2.init(_,$),z_.init(_,$)});fD=Y("ZodNanoID",(_,$)=>{_O.init(_,$),z_.init(_,$)});uD=Y("ZodCUID",(_,$)=>{$O.init(_,$),z_.init(_,$)});xD=Y("ZodCUID2",(_,$)=>{gO.init(_,$),z_.init(_,$)});yD=Y("ZodULID",(_,$)=>{DO.init(_,$),z_.init(_,$)});hD=Y("ZodXID",(_,$)=>{UO.init(_,$),z_.init(_,$)});cD=Y("ZodKSUID",(_,$)=>{IO.init(_,$),z_.init(_,$)});nD=Y("ZodIPv4",(_,$)=>{AO.init(_,$),z_.init(_,$)});v1=Y("ZodMAC",(_,$)=>{JO.init(_,$),z_.init(_,$)});dD=Y("ZodIPv6",(_,$)=>{LO.init(_,$),z_.init(_,$)});mD=Y("ZodCIDRv4",(_,$)=>{PO.init(_,$),z_.init(_,$)});iD=Y("ZodCIDRv6",(_,$)=>{zO.init(_,$),z_.init(_,$)});lD=Y("ZodBase64",(_,$)=>{WO.init(_,$),z_.init(_,$)});tD=Y("ZodBase64URL",(_,$)=>{XO.init(_,$),z_.init(_,$)});oD=Y("ZodE164",(_,$)=>{RO.init(_,$),z_.init(_,$)});pD=Y("ZodJWT",(_,$)=>{GO.init(_,$),z_.init(_,$)});k4=Y("ZodCustomStringFormat",(_,$)=>{YO.init(_,$),z_.init(_,$)});C4=Y("ZodNumber",(_,$)=>{dI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(U,D,I)=>mL(_,U,D,I),CD(_,"ZodNumber",{gt(U,D){return this.check(T$(U,D))},gte(U,D){return this.check(h_(U,D))},min(U,D){return this.check(h_(U,D))},lt(U,D){return this.check(Q$(U,D))},lte(U,D){return this.check(g$(U,D))},max(U,D){return this.check(g$(U,D))},int(U){return this.check(HD(U))},safe(U){return this.check(HD(U))},positive(U){return this.check(T$(0,U))},nonnegative(U){return this.check(h_(0,U))},negative(U){return this.check(Q$(0,U))},nonpositive(U){return this.check(g$(0,U))},multipleOf(U,D){return this.check(U6(U,D))},step(U,D){return this.check(U6(U,D))},finite(){return this}});let g=_._zod.bag;_.minValue=Math.max(g.minimum??Number.NEGATIVE_INFINITY,g.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,_.maxValue=Math.min(g.maximum??Number.POSITIVE_INFINITY,g.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,_.isInt=(g.format??"").includes("int")||Number.isSafeInteger(g.multipleOf??0.5),_.isFinite=!0,_.format=g.format??null});x6=Y("ZodNumberFormat",(_,$)=>{QO.init(_,$),C4.init(_,$)});r4=Y("ZodBoolean",(_,$)=>{ID.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>iL(_,g,U,D)});v4=Y("ZodBigInt",(_,$)=>{mI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(U,D,I)=>lL(_,U,D,I),_.gte=(U,D)=>_.check(h_(U,D)),_.min=(U,D)=>_.check(h_(U,D)),_.gt=(U,D)=>_.check(T$(U,D)),_.gte=(U,D)=>_.check(h_(U,D)),_.min=(U,D)=>_.check(h_(U,D)),_.lt=(U,D)=>_.check(Q$(U,D)),_.lte=(U,D)=>_.check(g$(U,D)),_.max=(U,D)=>_.check(g$(U,D)),_.positive=(U)=>_.check(T$(BigInt(0),U)),_.negative=(U)=>_.check(Q$(BigInt(0),U)),_.nonpositive=(U)=>_.check(g$(BigInt(0),U)),_.nonnegative=(U)=>_.check(h_(BigInt(0),U)),_.multipleOf=(U,D)=>_.check(U6(U,D));let g=_._zod.bag;_.minValue=g.minimum??null,_.maxValue=g.maximum??null,_.format=g.format??null});eD=Y("ZodBigIntFormat",(_,$)=>{TO.init(_,$),v4.init(_,$)});u1=Y("ZodSymbol",(_,$)=>{qO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>tL(_,g,U,D)});x1=Y("ZodUndefined",(_,$)=>{BO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>pL(_,g,U,D)});y1=Y("ZodNull",(_,$)=>{KO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>oL(_,g,U,D)});c1=Y("ZodAny",(_,$)=>{VO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>sL(_,g,U,D)});n1=Y("ZodUnknown",(_,$)=>{FO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>_J(_,g,U,D)});d1=Y("ZodNever",(_,$)=>{MO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>aL(_,g,U,D)});m1=Y("ZodVoid",(_,$)=>{ZO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>eL(_,g,U,D)});m0=Y("ZodDate",(_,$)=>{bO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(U,D,I)=>$J(_,U,D,I),_.min=(U,D)=>_.check(h_(U,D)),_.max=(U,D)=>_.check(g$(U,D));let g=_._zod.bag;_.minDate=g.minimum?new Date(g.minimum):null,_.maxDate=g.maximum?new Date(g.maximum):null});i1=Y("ZodArray",(_,$)=>{HO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>PJ(_,g,U,D),_.element=$.element,CD(_,"ZodArray",{min(g,U){return this.check(y$(g,U))},nonempty(g){return this.check(y$(1,g))},max(g,U){return this.check(C6(g,U))},length(g,U){return this.check(r6(g,U))},unwrap(){return this.element}})});l0=Y("ZodObject",(_,$)=>{kO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>zJ(_,g,U,D),H.defineLazy(_,"shape",()=>{return $.shape}),CD(_,"ZodObject",{keyof(){return _U(Object.keys(this._zod.def.shape))},catchall(g){return this.clone({...this._zod.def,catchall:g})},passthrough(){return this.clone({...this._zod.def,catchall:u6()})},loose(){return this.clone({...this._zod.def,catchall:u6()})},strict(){return this.clone({...this._zod.def,catchall:aD()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(g){return H.extend(this,g)},safeExtend(g){return H.safeExtend(this,g)},merge(g){return H.merge(this,g)},pick(g){return H.pick(this,g)},omit(g){return H.omit(this,g)},partial(...g){return H.partial(gU,this,g[0])},required(...g){return H.required(DU,this,g[0])}})});t0=Y("ZodUnion",(_,$)=>{jD.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>G1(_,g,U,D),_.options=$.options});l1=Y("ZodXor",(_,$)=>{t0.init(_,$),CO.init(_,$),_._zod.processJSONSchema=(g,U,D)=>G1(_,g,U,D),_.options=$.options});t1=Y("ZodDiscriminatedUnion",(_,$)=>{t0.init(_,$),rO.init(_,$)});o1=Y("ZodIntersection",(_,$)=>{vO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>SJ(_,g,U,D)});e1=Y("ZodTuple",(_,$)=>{iI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>WJ(_,g,U,D),_.rest=(g)=>_.clone({..._._zod.def,rest:g})});Z4=Y("ZodRecord",(_,$)=>{wO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>XJ(_,g,U,D),_.keyType=$.keyType,_.valueType=$.valueType});_j=Y("ZodMap",(_,$)=>{fO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>LJ(_,g,U,D),_.keyType=$.keyType,_.valueType=$.valueType,_.min=(...g)=>_.check(q$(...g)),_.nonempty=(g)=>_.check(q$(1,g)),_.max=(...g)=>_.check(I6(...g)),_.size=(...g)=>_.check(k6(...g))});$j=Y("ZodSet",(_,$)=>{uO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>JJ(_,g,U,D),_.min=(...g)=>_.check(q$(...g)),_.nonempty=(g)=>_.check(q$(1,g)),_.max=(...g)=>_.check(I6(...g)),_.size=(...g)=>_.check(k6(...g))});b4=Y("ZodEnum",(_,$)=>{xO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(U,D,I)=>gJ(_,U,D,I),_.enum=$.entries,_.options=Object.values($.entries);let g=new Set(Object.keys($.entries));_.extract=(U,D)=>{let I={};for(let j of U)if(g.has(j))I[j]=$.entries[j];else throw Error(`Key ${j} not found in enum`);return new b4({...$,checks:[],...H.normalizeParams(D),entries:I})},_.exclude=(U,D)=>{let I={...$.entries};for(let j of U)if(g.has(j))delete I[j];else throw Error(`Key ${j} not found in enum`);return new b4({...$,checks:[],...H.normalizeParams(D),entries:I})}});gj=Y("ZodLiteral",(_,$)=>{yO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>DJ(_,g,U,D),_.values=new Set($.values),Object.defineProperty(_,"value",{get(){if($.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return $.values[0]}})});Dj=Y("ZodFile",(_,$)=>{hO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>jJ(_,g,U,D),_.min=(g,U)=>_.check(q$(g,U)),_.max=(g,U)=>_.check(I6(g,U)),_.mime=(g,U)=>_.check(T4(Array.isArray(g)?g:[g],U))});Uj=Y("ZodTransform",(_,$)=>{cO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>AJ(_,g,U,D),_._zod.parse=(g,U)=>{if(U.direction==="backward")throw new L4(_.constructor.name);g.addIssue=(I)=>{if(typeof I==="string")g.issues.push(H.issue(I,g.value,$));else{let j=I;if(j.fatal)j.continue=!1;j.code??(j.code="custom"),j.input??(j.input=g.value),j.inst??(j.inst=_),g.issues.push(H.issue(j))}};let D=$.transform(g.value,g);if(D instanceof Promise)return D.then((I)=>{return g.value=I,g.fallback=!0,g});return g.value=D,g.fallback=!0,g}});gU=Y("ZodOptional",(_,$)=>{lI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>Y1(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Ij=Y("ZodExactOptional",(_,$)=>{nO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>Y1(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Nj=Y("ZodNullable",(_,$)=>{dO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>RJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Ej=Y("ZodDefault",(_,$)=>{mO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>YJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType,_.removeDefault=_.unwrap});Aj=Y("ZodPrefault",(_,$)=>{iO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>QJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});DU=Y("ZodNonOptional",(_,$)=>{lO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>GJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Pj=Y("ZodSuccess",(_,$)=>{tO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>NJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});zj=Y("ZodCatch",(_,$)=>{oO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>TJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType,_.removeCatch=_.unwrap});Wj=Y("ZodNaN",(_,$)=>{pO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>UJ(_,g,U,D)});o0=Y("ZodPipe",(_,$)=>{tI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>qJ(_,g,U,D),_.in=$.in,_.out=$.out});p0=Y("ZodCodec",(_,$)=>{o0.init(_,$),ND.init(_,$)});Xj=Y("ZodPreprocess",(_,$)=>{o0.init(_,$),eO.init(_,$)}),Rj=Y("ZodReadonly",(_,$)=>{aO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>BJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Yj=Y("ZodTemplateLiteral",(_,$)=>{sO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>IJ(_,g,U,D)});Qj=Y("ZodLazy",(_,$)=>{gA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>VJ(_,g,U,D),_.unwrap=()=>_._zod.def.getter()});qj=Y("ZodPromise",(_,$)=>{$A.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>KJ(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Bj=Y("ZodFunction",(_,$)=>{_A.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>OJ(_,g,U,D)});e0=Y("ZodCustom",(_,$)=>{DA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,D)=>EJ(_,g,U,D)});nP=yL,dP=hL});function NR(_){Z_({customError:_})}function ER(){return Z_().customError}var jR,Fj;var OR=w(()=>{N$();jR={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};(function(_){})(Fj||(Fj={}))});function KF(_,$){let g=_.$schema;if(g==="https://json-schema.org/draft/2020-12/schema")return"draft-2020-12";if(g==="http://json-schema.org/draft-07/schema#")return"draft-7";if(g==="http://json-schema.org/draft-04/schema#")return"draft-4";return $??"draft-2020-12"}function VF(_,$){if(!_.startsWith("#"))throw Error("External $ref is not supported, only local refs (#/...) are allowed");let g=_.slice(1).split("/").filter(Boolean);if(g.length===0)return $.rootSchema;let U=$.version==="draft-2020-12"?"$defs":"definitions";if(g[0]===U){let D=g[1];if(!D||!$.defs[D])throw Error(`Reference not found: ${_}`);return $.defs[D]}throw Error(`Reference not found: ${_}`)}function AR(_,$){if(_.not!==void 0){if(typeof _.not==="object"&&Object.keys(_.not).length===0)return f.never();throw Error("not is not supported in Zod (except { not: {} } for never)")}if(_.unevaluatedItems!==void 0)throw Error("unevaluatedItems is not supported");if(_.unevaluatedProperties!==void 0)throw Error("unevaluatedProperties is not supported");if(_.if!==void 0||_.then!==void 0||_.else!==void 0)throw Error("Conditional schemas (if/then/else) are not supported");if(_.dependentSchemas!==void 0||_.dependentRequired!==void 0)throw Error("dependentSchemas and dependentRequired are not supported");if(_.$ref){let D=_.$ref;if($.refs.has(D))return $.refs.get(D);if($.processing.has(D))return f.lazy(()=>{if(!$.refs.has(D))throw Error(`Circular reference not resolved: ${D}`);return $.refs.get(D)});$.processing.add(D);let I=VF(D,$),j=c_(I,$);return $.refs.set(D,j),$.processing.delete(D),j}if(_.enum!==void 0){let D=_.enum;if($.version==="openapi-3.0"&&_.nullable===!0&&D.length===1&&D[0]===null)return f.null();if(D.length===0)return f.never();if(D.length===1)return f.literal(D[0]);if(D.every((j)=>typeof j==="string"))return f.enum(D);let I=D.map((j)=>f.literal(j));if(I.length<2)return I[0];return f.union([I[0],I[1],...I.slice(2)])}if(_.const!==void 0)return f.literal(_.const);let g=_.type;if(Array.isArray(g)){let D=g.map((I)=>{let j={..._,type:I};return AR(j,$)});if(D.length===0)return f.never();if(D.length===1)return D[0];return f.union(D)}if(!g)return f.any();let U;switch(g){case"string":{let D=f.string();if(_.format){let I=_.format;if(I==="email")D=D.check(f.email());else if(I==="uri"||I==="uri-reference")D=D.check(f.url());else if(I==="uuid"||I==="guid")D=D.check(f.uuid());else if(I==="date-time")D=D.check(f.iso.datetime());else if(I==="date")D=D.check(f.iso.date());else if(I==="time")D=D.check(f.iso.time());else if(I==="duration")D=D.check(f.iso.duration());else if(I==="ipv4")D=D.check(f.ipv4());else if(I==="ipv6")D=D.check(f.ipv6());else if(I==="mac")D=D.check(f.mac());else if(I==="cidr")D=D.check(f.cidrv4());else if(I==="cidr-v6")D=D.check(f.cidrv6());else if(I==="base64")D=D.check(f.base64());else if(I==="base64url")D=D.check(f.base64url());else if(I==="e164")D=D.check(f.e164());else if(I==="jwt")D=D.check(f.jwt());else if(I==="emoji")D=D.check(f.emoji());else if(I==="nanoid")D=D.check(f.nanoid());else if(I==="cuid")D=D.check(f.cuid());else if(I==="cuid2")D=D.check(f.cuid2());else if(I==="ulid")D=D.check(f.ulid());else if(I==="xid")D=D.check(f.xid());else if(I==="ksuid")D=D.check(f.ksuid())}if(typeof _.minLength==="number")D=D.min(_.minLength);if(typeof _.maxLength==="number")D=D.max(_.maxLength);if(_.pattern)D=D.regex(new RegExp(_.pattern));U=D;break}case"number":case"integer":{let D=g==="integer"?f.number().int():f.number();if(typeof _.minimum==="number")D=D.min(_.minimum);if(typeof _.maximum==="number")D=D.max(_.maximum);if(typeof _.exclusiveMinimum==="number")D=D.gt(_.exclusiveMinimum);else if(_.exclusiveMinimum===!0&&typeof _.minimum==="number")D=D.gt(_.minimum);if(typeof _.exclusiveMaximum==="number")D=D.lt(_.exclusiveMaximum);else if(_.exclusiveMaximum===!0&&typeof _.maximum==="number")D=D.lt(_.maximum);if(typeof _.multipleOf==="number")D=D.multipleOf(_.multipleOf);U=D;break}case"boolean":{U=f.boolean();break}case"null":{U=f.null();break}case"object":{let D={},I=_.properties||{},j=new Set(_.required||[]);for(let[O,A]of Object.entries(I)){let L=c_(A,$);D[O]=j.has(O)?L:L.optional()}if(_.propertyNames){let O=c_(_.propertyNames,$),A=_.additionalProperties&&typeof _.additionalProperties==="object"?c_(_.additionalProperties,$):f.any();if(Object.keys(D).length===0){U=f.record(O,A);break}let L=f.object(D).passthrough(),z=f.looseRecord(O,A);U=f.intersection(L,z);break}if(_.patternProperties){let O=_.patternProperties,A=Object.keys(O),L=[];for(let W of A){let J=c_(O[W],$),P=f.string().regex(new RegExp(W));L.push(f.looseRecord(P,J))}let z=[];if(Object.keys(D).length>0)z.push(f.object(D).passthrough());if(z.push(...L),z.length===0)U=f.object({}).passthrough();else if(z.length===1)U=z[0];else{let W=f.intersection(z[0],z[1]);for(let J=2;Jc_(O,$)),N=I&&typeof I==="object"&&!Array.isArray(I)?c_(I,$):void 0;if(N)U=f.tuple(j).rest(N);else U=f.tuple(j);if(typeof _.minItems==="number")U=U.check(f.minLength(_.minItems));if(typeof _.maxItems==="number")U=U.check(f.maxLength(_.maxItems))}else if(Array.isArray(I)){let j=I.map((O)=>c_(O,$)),N=_.additionalItems&&typeof _.additionalItems==="object"?c_(_.additionalItems,$):void 0;if(N)U=f.tuple(j).rest(N);else U=f.tuple(j);if(typeof _.minItems==="number")U=U.check(f.minLength(_.minItems));if(typeof _.maxItems==="number")U=U.check(f.maxLength(_.maxItems))}else if(I!==void 0){let j=c_(I,$),N=f.array(j);if(typeof _.minItems==="number")N=N.min(_.minItems);if(typeof _.maxItems==="number")N=N.max(_.maxItems);U=N}else U=f.array(f.any());break}default:throw Error(`Unsupported type: ${g}`)}return U}function c_(_,$){if(typeof _==="boolean")return _?f.any():f.never();let g=AR(_,$),U=_.type||_.enum!==void 0||_.const!==void 0;if(_.anyOf&&Array.isArray(_.anyOf)){let N=_.anyOf.map((A)=>c_(A,$)),O=f.union(N);g=U?f.intersection(g,O):O}if(_.oneOf&&Array.isArray(_.oneOf)){let N=_.oneOf.map((A)=>c_(A,$)),O=f.xor(N);g=U?f.intersection(g,O):O}if(_.allOf&&Array.isArray(_.allOf))if(_.allOf.length===0)g=U?g:f.any();else{let N=U?g:c_(_.allOf[0],$),O=U?0:1;for(let A=O;A<_.allOf.length;A++)N=f.intersection(N,c_(_.allOf[A],$));g=N}if(_.nullable===!0&&$.version==="openapi-3.0")g=f.nullable(g);if(_.readOnly===!0)g=f.readonly(g);if(_.default!==void 0)g=g.default(_.default);let D={},I=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let N of I)if(N in _)D[N]=_[N];let j=["contentEncoding","contentMediaType","contentSchema"];for(let N of j)if(N in _)D[N]=_[N];for(let N of Object.keys(_))if(!BF.has(N))D[N]=_[N];if(Object.keys(D).length>0)$.registry.add(g,D);if(_.description)g=g.describe(_.description);return g}function oP(_,$){if(typeof _==="boolean")return _?f.any():f.never();let g;try{g=JSON.parse(JSON.stringify(_))}catch{throw Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let U=KF(g,$?.defaultTarget),D=g.$defs||g.definitions||{},I={version:U,defs:D,refs:new Map,processing:new Set,rootSchema:g,registry:$?.registry??f_};return c_(g,I)}var f,BF;var LR=w(()=>{PD();T1();MD();bD();f={...ZD,...Q1,iso:M4},BF=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"])});var Mj={};r$(Mj,{string:()=>FF,number:()=>MF,date:()=>HF,boolean:()=>ZF,bigint:()=>bF});function FF(_){return jL(H4,_)}function MF(_){return PL(C4,_)}function ZF(_){return YL(r4,_)}function bF(_){return TL(v4,_)}function HF(_){return CL(m0,_)}var JR=w(()=>{N$();bD()});var Zj={};r$(Zj,{xor:()=>BP,xid:()=>lJ,void:()=>RP,uuidv7:()=>xJ,uuidv6:()=>uJ,uuidv4:()=>fJ,uuid:()=>wJ,util:()=>H,url:()=>yJ,uppercase:()=>R4,unknown:()=>u6,union:()=>sD,undefined:()=>WP,ulid:()=>iJ,uint64:()=>zP,uint32:()=>LP,tuple:()=>a1,trim:()=>B4,treeifyError:()=>TI,transform:()=>$U,toUpperCase:()=>V4,toLowerCase:()=>K4,toJSONSchema:()=>TD,templateLiteral:()=>uP,symbol:()=>SP,superRefine:()=>Vj,success:()=>rP,stringbool:()=>iP,stringFormat:()=>UP,string:()=>y0,strictObject:()=>TP,startsWith:()=>Y4,slugify:()=>F4,size:()=>k6,setErrorMap:()=>NR,set:()=>ZP,safeParseAsync:()=>V1,safeParse:()=>K1,safeEncodeAsync:()=>C1,safeEncode:()=>H1,safeDecodeAsync:()=>r1,safeDecode:()=>k1,registry:()=>JD,regexes:()=>$$,regex:()=>W4,refine:()=>Kj,record:()=>s1,readonly:()=>Gj,property:()=>YD,promise:()=>xP,prettifyError:()=>qI,preprocess:()=>tP,prefault:()=>Lj,positive:()=>WD,pipe:()=>kD,partialRecord:()=>VP,parseAsync:()=>B1,parse:()=>q1,overwrite:()=>z$,optional:()=>c0,object:()=>QP,number:()=>w1,nullish:()=>CP,nullable:()=>n0,null:()=>h1,normalize:()=>q4,nonpositive:()=>RD,nonoptional:()=>Jj,nonnegative:()=>GD,never:()=>aD,negative:()=>XD,nativeEnum:()=>bP,nanoid:()=>nJ,nan:()=>vP,multipleOf:()=>U6,minSize:()=>q$,minLength:()=>y$,mime:()=>T4,meta:()=>dP,maxSize:()=>I6,maxLength:()=>C6,map:()=>MP,mac:()=>pJ,lte:()=>g$,lt:()=>Q$,lowercase:()=>X4,looseRecord:()=>FP,looseObject:()=>qP,locales:()=>f0,literal:()=>HP,length:()=>r6,lazy:()=>Tj,ksuid:()=>tJ,keyof:()=>YP,jwt:()=>DP,json:()=>lP,iso:()=>M4,ipv6:()=>eJ,ipv4:()=>oJ,invertCodec:()=>fP,intersection:()=>p1,int64:()=>PP,int32:()=>AP,int:()=>HD,instanceof:()=>mP,includes:()=>G4,httpUrl:()=>hJ,hostname:()=>IP,hex:()=>jP,hash:()=>NP,guid:()=>vJ,gte:()=>h_,gt:()=>T$,globalRegistry:()=>f_,getErrorMap:()=>ER,function:()=>yP,fromJSONSchema:()=>oP,formatError:()=>b0,float64:()=>OP,float32:()=>EP,flattenError:()=>Z0,file:()=>kP,exactOptional:()=>jj,enum:()=>_U,endsWith:()=>Q4,encodeAsync:()=>Z1,encode:()=>F1,emoji:()=>cJ,email:()=>rJ,e164:()=>gP,discriminatedUnion:()=>KP,describe:()=>nP,decodeAsync:()=>b1,decode:()=>M1,date:()=>GP,custom:()=>cP,cuid2:()=>mJ,cuid:()=>dJ,core:()=>h$,config:()=>Z_,coerce:()=>Mj,codec:()=>wP,clone:()=>y_,cidrv6:()=>sJ,cidrv4:()=>aJ,check:()=>hP,catch:()=>Sj,boolean:()=>f1,bigint:()=>JP,base64url:()=>$P,base64:()=>_P,array:()=>i0,any:()=>XP,_function:()=>yP,_default:()=>Oj,_ZodString:()=>rD,ZodXor:()=>l1,ZodXID:()=>hD,ZodVoid:()=>m1,ZodUnknown:()=>n1,ZodUnion:()=>t0,ZodUndefined:()=>x1,ZodUUID:()=>B$,ZodURL:()=>d0,ZodULID:()=>yD,ZodType:()=>o,ZodTuple:()=>e1,ZodTransform:()=>Uj,ZodTemplateLiteral:()=>Yj,ZodSymbol:()=>u1,ZodSuccess:()=>Pj,ZodStringFormat:()=>z_,ZodString:()=>H4,ZodSet:()=>$j,ZodRecord:()=>Z4,ZodRealError:()=>o_,ZodReadonly:()=>Rj,ZodPromise:()=>qj,ZodPreprocess:()=>Xj,ZodPrefault:()=>Aj,ZodPipe:()=>o0,ZodOptional:()=>gU,ZodObject:()=>l0,ZodNumberFormat:()=>x6,ZodNumber:()=>C4,ZodNullable:()=>Nj,ZodNull:()=>y1,ZodNonOptional:()=>DU,ZodNever:()=>d1,ZodNanoID:()=>fD,ZodNaN:()=>Wj,ZodMap:()=>_j,ZodMAC:()=>v1,ZodLiteral:()=>gj,ZodLazy:()=>Qj,ZodKSUID:()=>cD,ZodJWT:()=>pD,ZodIssueCode:()=>jR,ZodIntersection:()=>o1,ZodISOTime:()=>VD,ZodISODuration:()=>FD,ZodISODateTime:()=>BD,ZodISODate:()=>KD,ZodIPv6:()=>dD,ZodIPv4:()=>nD,ZodGUID:()=>h0,ZodFunction:()=>Bj,ZodFirstPartyTypeKind:()=>Fj,ZodFile:()=>Dj,ZodExactOptional:()=>Ij,ZodError:()=>UR,ZodEnum:()=>b4,ZodEmoji:()=>wD,ZodEmail:()=>vD,ZodE164:()=>oD,ZodDiscriminatedUnion:()=>t1,ZodDefault:()=>Ej,ZodDate:()=>m0,ZodCustomStringFormat:()=>k4,ZodCustom:()=>e0,ZodCodec:()=>p0,ZodCatch:()=>zj,ZodCUID2:()=>xD,ZodCUID:()=>uD,ZodCIDRv6:()=>iD,ZodCIDRv4:()=>mD,ZodBoolean:()=>r4,ZodBigIntFormat:()=>eD,ZodBigInt:()=>v4,ZodBase64URL:()=>tD,ZodBase64:()=>lD,ZodArray:()=>i1,ZodAny:()=>c1,TimePrecision:()=>X1,NEVER:()=>RI,$output:()=>oI,$input:()=>pI,$brand:()=>GI});var pP=w(()=>{N$();N$();zA();N$();qD();LR();DL();MD();MD();JR();bD();T1();kJ();CJ();OR();Z_(ED())});var PR={};r$(PR,{z:()=>Zj,xor:()=>BP,xid:()=>lJ,void:()=>RP,uuidv7:()=>xJ,uuidv6:()=>uJ,uuidv4:()=>fJ,uuid:()=>wJ,util:()=>H,url:()=>yJ,uppercase:()=>R4,unknown:()=>u6,union:()=>sD,undefined:()=>WP,ulid:()=>iJ,uint64:()=>zP,uint32:()=>LP,tuple:()=>a1,trim:()=>B4,treeifyError:()=>TI,transform:()=>$U,toUpperCase:()=>V4,toLowerCase:()=>K4,toJSONSchema:()=>TD,templateLiteral:()=>uP,symbol:()=>SP,superRefine:()=>Vj,success:()=>rP,stringbool:()=>iP,stringFormat:()=>UP,string:()=>y0,strictObject:()=>TP,startsWith:()=>Y4,slugify:()=>F4,size:()=>k6,setErrorMap:()=>NR,set:()=>ZP,safeParseAsync:()=>V1,safeParse:()=>K1,safeEncodeAsync:()=>C1,safeEncode:()=>H1,safeDecodeAsync:()=>r1,safeDecode:()=>k1,registry:()=>JD,regexes:()=>$$,regex:()=>W4,refine:()=>Kj,record:()=>s1,readonly:()=>Gj,property:()=>YD,promise:()=>xP,prettifyError:()=>qI,preprocess:()=>tP,prefault:()=>Lj,positive:()=>WD,pipe:()=>kD,partialRecord:()=>VP,parseAsync:()=>B1,parse:()=>q1,overwrite:()=>z$,optional:()=>c0,object:()=>QP,number:()=>w1,nullish:()=>CP,nullable:()=>n0,null:()=>h1,normalize:()=>q4,nonpositive:()=>RD,nonoptional:()=>Jj,nonnegative:()=>GD,never:()=>aD,negative:()=>XD,nativeEnum:()=>bP,nanoid:()=>nJ,nan:()=>vP,multipleOf:()=>U6,minSize:()=>q$,minLength:()=>y$,mime:()=>T4,meta:()=>dP,maxSize:()=>I6,maxLength:()=>C6,map:()=>MP,mac:()=>pJ,lte:()=>g$,lt:()=>Q$,lowercase:()=>X4,looseRecord:()=>FP,looseObject:()=>qP,locales:()=>f0,literal:()=>HP,length:()=>r6,lazy:()=>Tj,ksuid:()=>tJ,keyof:()=>YP,jwt:()=>DP,json:()=>lP,iso:()=>M4,ipv6:()=>eJ,ipv4:()=>oJ,invertCodec:()=>fP,intersection:()=>p1,int64:()=>PP,int32:()=>AP,int:()=>HD,instanceof:()=>mP,includes:()=>G4,httpUrl:()=>hJ,hostname:()=>IP,hex:()=>jP,hash:()=>NP,guid:()=>vJ,gte:()=>h_,gt:()=>T$,globalRegistry:()=>f_,getErrorMap:()=>ER,function:()=>yP,fromJSONSchema:()=>oP,formatError:()=>b0,float64:()=>OP,float32:()=>EP,flattenError:()=>Z0,file:()=>kP,exactOptional:()=>jj,enum:()=>_U,endsWith:()=>Q4,encodeAsync:()=>Z1,encode:()=>F1,emoji:()=>cJ,email:()=>rJ,e164:()=>gP,discriminatedUnion:()=>KP,describe:()=>nP,default:()=>kF,decodeAsync:()=>b1,decode:()=>M1,date:()=>GP,custom:()=>cP,cuid2:()=>mJ,cuid:()=>dJ,core:()=>h$,config:()=>Z_,coerce:()=>Mj,codec:()=>wP,clone:()=>y_,cidrv6:()=>sJ,cidrv4:()=>aJ,check:()=>hP,catch:()=>Sj,boolean:()=>f1,bigint:()=>JP,base64url:()=>$P,base64:()=>_P,array:()=>i0,any:()=>XP,_function:()=>yP,_default:()=>Oj,_ZodString:()=>rD,ZodXor:()=>l1,ZodXID:()=>hD,ZodVoid:()=>m1,ZodUnknown:()=>n1,ZodUnion:()=>t0,ZodUndefined:()=>x1,ZodUUID:()=>B$,ZodURL:()=>d0,ZodULID:()=>yD,ZodType:()=>o,ZodTuple:()=>e1,ZodTransform:()=>Uj,ZodTemplateLiteral:()=>Yj,ZodSymbol:()=>u1,ZodSuccess:()=>Pj,ZodStringFormat:()=>z_,ZodString:()=>H4,ZodSet:()=>$j,ZodRecord:()=>Z4,ZodRealError:()=>o_,ZodReadonly:()=>Rj,ZodPromise:()=>qj,ZodPreprocess:()=>Xj,ZodPrefault:()=>Aj,ZodPipe:()=>o0,ZodOptional:()=>gU,ZodObject:()=>l0,ZodNumberFormat:()=>x6,ZodNumber:()=>C4,ZodNullable:()=>Nj,ZodNull:()=>y1,ZodNonOptional:()=>DU,ZodNever:()=>d1,ZodNanoID:()=>fD,ZodNaN:()=>Wj,ZodMap:()=>_j,ZodMAC:()=>v1,ZodLiteral:()=>gj,ZodLazy:()=>Qj,ZodKSUID:()=>cD,ZodJWT:()=>pD,ZodIssueCode:()=>jR,ZodIntersection:()=>o1,ZodISOTime:()=>VD,ZodISODuration:()=>FD,ZodISODateTime:()=>BD,ZodISODate:()=>KD,ZodIPv6:()=>dD,ZodIPv4:()=>nD,ZodGUID:()=>h0,ZodFunction:()=>Bj,ZodFirstPartyTypeKind:()=>Fj,ZodFile:()=>Dj,ZodExactOptional:()=>Ij,ZodError:()=>UR,ZodEnum:()=>b4,ZodEmoji:()=>wD,ZodEmail:()=>vD,ZodE164:()=>oD,ZodDiscriminatedUnion:()=>t1,ZodDefault:()=>Ej,ZodDate:()=>m0,ZodCustomStringFormat:()=>k4,ZodCustom:()=>e0,ZodCodec:()=>p0,ZodCatch:()=>zj,ZodCUID2:()=>xD,ZodCUID:()=>uD,ZodCIDRv6:()=>iD,ZodCIDRv4:()=>mD,ZodBoolean:()=>r4,ZodBigIntFormat:()=>eD,ZodBigInt:()=>v4,ZodBase64URL:()=>tD,ZodBase64:()=>lD,ZodArray:()=>i1,ZodAny:()=>c1,TimePrecision:()=>X1,NEVER:()=>RI,$output:()=>oI,$input:()=>pI,$brand:()=>GI});var kF;var zR=w(()=>{pP();pP();kF=Zj});var BU=e6((Br)=>{class p3 extends Error{constructor(_,$,g){super(g);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=$,this.exitCode=_,this.nestedError=void 0}}class $8 extends p3{constructor(_){super(1,"commander.invalidArgument",_);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}Br.CommanderError=p3;Br.InvalidArgumentError=$8});var SN=e6((Zr)=>{var{InvalidArgumentError:Fr}=BU();class g8{constructor(_,$){switch(this.description=$||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,_[0]){case"<":this.required=!0,this._name=_.slice(1,-1);break;case"[":this.required=!1,this._name=_.slice(1,-1);break;default:this.required=!0,this._name=_;break}if(this._name.length>3&&this._name.slice(-3)==="...")this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_concatValue(_,$){if($===this.defaultValue||!Array.isArray($))return[_];return $.concat(_)}default(_,$){return this.defaultValue=_,this.defaultValueDescription=$,this}argParser(_){return this.parseArg=_,this}choices(_){return this.argChoices=_.slice(),this.parseArg=($,g)=>{if(!this.argChoices.includes($))throw new Fr(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue($,g);return $},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function Mr(_){let $=_.name()+(_.variadic===!0?"...":"");return _.required?"<"+$+">":"["+$+"]"}Zr.Argument=g8;Zr.humanReadableArgName=Mr});var e3=e6((Cr)=>{var{humanReadableArgName:kr}=SN();class D8{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(_){this.helpWidth=this.helpWidth??_.helpWidth??80}visibleCommands(_){let $=_.commands.filter((U)=>!U._hidden),g=_._getHelpCommand();if(g&&!g._hidden)$.push(g);if(this.sortSubcommands)$.sort((U,D)=>{return U.name().localeCompare(D.name())});return $}compareOptions(_,$){let g=(U)=>{return U.short?U.short.replace(/^-/,""):U.long.replace(/^--/,"")};return g(_).localeCompare(g($))}visibleOptions(_){let $=_.options.filter((U)=>!U.hidden),g=_._getHelpOption();if(g&&!g.hidden){let U=g.short&&_._findOption(g.short),D=g.long&&_._findOption(g.long);if(!U&&!D)$.push(g);else if(g.long&&!D)$.push(_.createOption(g.long,g.description));else if(g.short&&!U)$.push(_.createOption(g.short,g.description))}if(this.sortOptions)$.sort(this.compareOptions);return $}visibleGlobalOptions(_){if(!this.showGlobalOptions)return[];let $=[];for(let g=_.parent;g;g=g.parent){let U=g.options.filter((D)=>!D.hidden);$.push(...U)}if(this.sortOptions)$.sort(this.compareOptions);return $}visibleArguments(_){if(_._argsDescription)_.registeredArguments.forEach(($)=>{$.description=$.description||_._argsDescription[$.name()]||""});if(_.registeredArguments.find(($)=>$.description))return _.registeredArguments;return[]}subcommandTerm(_){let $=_.registeredArguments.map((g)=>kr(g)).join(" ");return _._name+(_._aliases[0]?"|"+_._aliases[0]:"")+(_.options.length?" [options]":"")+($?" "+$:"")}optionTerm(_){return _.flags}argumentTerm(_){return _.name()}longestSubcommandTermLength(_,$){return $.visibleCommands(_).reduce((g,U)=>{return Math.max(g,this.displayWidth($.styleSubcommandTerm($.subcommandTerm(U))))},0)}longestOptionTermLength(_,$){return $.visibleOptions(_).reduce((g,U)=>{return Math.max(g,this.displayWidth($.styleOptionTerm($.optionTerm(U))))},0)}longestGlobalOptionTermLength(_,$){return $.visibleGlobalOptions(_).reduce((g,U)=>{return Math.max(g,this.displayWidth($.styleOptionTerm($.optionTerm(U))))},0)}longestArgumentTermLength(_,$){return $.visibleArguments(_).reduce((g,U)=>{return Math.max(g,this.displayWidth($.styleArgumentTerm($.argumentTerm(U))))},0)}commandUsage(_){let $=_._name;if(_._aliases[0])$=$+"|"+_._aliases[0];let g="";for(let U=_.parent;U;U=U.parent)g=U.name()+" "+g;return g+$+" "+_.usage()}commandDescription(_){return _.description()}subcommandDescription(_){return _.summary()||_.description()}optionDescription(_){let $=[];if(_.argChoices)$.push(`choices: ${_.argChoices.map((g)=>JSON.stringify(g)).join(", ")}`);if(_.defaultValue!==void 0){if(_.required||_.optional||_.isBoolean()&&typeof _.defaultValue==="boolean")$.push(`default: ${_.defaultValueDescription||JSON.stringify(_.defaultValue)}`)}if(_.presetArg!==void 0&&_.optional)$.push(`preset: ${JSON.stringify(_.presetArg)}`);if(_.envVar!==void 0)$.push(`env: ${_.envVar}`);if($.length>0)return`${_.description} (${$.join(", ")})`;return _.description}argumentDescription(_){let $=[];if(_.argChoices)$.push(`choices: ${_.argChoices.map((g)=>JSON.stringify(g)).join(", ")}`);if(_.defaultValue!==void 0)$.push(`default: ${_.defaultValueDescription||JSON.stringify(_.defaultValue)}`);if($.length>0){let g=`(${$.join(", ")})`;if(_.description)return`${_.description} ${g}`;return g}return _.description}formatHelp(_,$){let g=$.padWidth(_,$),U=$.helpWidth??80;function D(L,z){return $.formatItem(L,g,z,$)}let I=[`${$.styleTitle("Usage:")} ${$.styleUsage($.commandUsage(_))}`,""],j=$.commandDescription(_);if(j.length>0)I=I.concat([$.boxWrap($.styleCommandDescription(j),U),""]);let N=$.visibleArguments(_).map((L)=>{return D($.styleArgumentTerm($.argumentTerm(L)),$.styleArgumentDescription($.argumentDescription(L)))});if(N.length>0)I=I.concat([$.styleTitle("Arguments:"),...N,""]);let O=$.visibleOptions(_).map((L)=>{return D($.styleOptionTerm($.optionTerm(L)),$.styleOptionDescription($.optionDescription(L)))});if(O.length>0)I=I.concat([$.styleTitle("Options:"),...O,""]);if($.showGlobalOptions){let L=$.visibleGlobalOptions(_).map((z)=>{return D($.styleOptionTerm($.optionTerm(z)),$.styleOptionDescription($.optionDescription(z)))});if(L.length>0)I=I.concat([$.styleTitle("Global Options:"),...L,""])}let A=$.visibleCommands(_).map((L)=>{return D($.styleSubcommandTerm($.subcommandTerm(L)),$.styleSubcommandDescription($.subcommandDescription(L)))});if(A.length>0)I=I.concat([$.styleTitle("Commands:"),...A,""]);return I.join(` -`)}displayWidth(_){return U8(_).length}styleTitle(_){return _}styleUsage(_){return _.split(" ").map(($)=>{if($==="[options]")return this.styleOptionText($);if($==="[command]")return this.styleSubcommandText($);if($[0]==="["||$[0]==="<")return this.styleArgumentText($);return this.styleCommandText($)}).join(" ")}styleCommandDescription(_){return this.styleDescriptionText(_)}styleOptionDescription(_){return this.styleDescriptionText(_)}styleSubcommandDescription(_){return this.styleDescriptionText(_)}styleArgumentDescription(_){return this.styleDescriptionText(_)}styleDescriptionText(_){return _}styleOptionTerm(_){return this.styleOptionText(_)}styleSubcommandTerm(_){return _.split(" ").map(($)=>{if($==="[options]")return this.styleOptionText($);if($[0]==="["||$[0]==="<")return this.styleArgumentText($);return this.styleSubcommandText($)}).join(" ")}styleArgumentTerm(_){return this.styleArgumentText(_)}styleOptionText(_){return _}styleArgumentText(_){return _}styleSubcommandText(_){return _}styleCommandText(_){return _}padWidth(_,$){return Math.max($.longestOptionTermLength(_,$),$.longestGlobalOptionTermLength(_,$),$.longestSubcommandTermLength(_,$),$.longestArgumentTermLength(_,$))}preformatted(_){return/\n[^\S\r\n]/.test(_)}formatItem(_,$,g,U){let I=" ".repeat(2);if(!g)return I+_;let j=_.padEnd($+_.length-U.displayWidth(_)),N=2,A=(this.helpWidth??80)-$-N-2,L;if(A1){if(_.reused==="ref"){I(j);continue}}}}function r6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let g=(N)=>{let O=_.seen.get(N);if(O.ref===null)return;let A=O.def??O.schema,L={...A},z=O.ref;if(O.ref=null,z){g(z);let J=_.seen.get(z),P=J.schema;if(P.$ref&&(_.target==="draft-07"||_.target==="draft-04"||_.target==="openapi-3.0"))A.allOf=A.allOf??[],A.allOf.push(P);else Object.assign(A,P);if(Object.assign(A,L),N._zod.parent===z)for(let X in A){if(X==="$ref"||X==="allOf")continue;if(!(X in L))delete A[X]}if(P.$ref&&J.def)for(let X in A){if(X==="$ref"||X==="allOf")continue;if(X in J.def&&JSON.stringify(A[X])===JSON.stringify(J.def[X]))delete A[X]}}let W=N._zod.parent;if(W&&W!==z){g(W);let J=_.seen.get(W);if(J?.schema.$ref){if(A.$ref=J.schema.$ref,J.def)for(let P in A){if(P==="$ref"||P==="allOf")continue;if(P in J.def&&JSON.stringify(A[P])===JSON.stringify(J.def[P]))delete A[P]}}}_.override({zodSchema:N,jsonSchema:A,path:O.path??[]})};for(let N of[..._.seen.entries()].reverse())g(N[0]);let U={};if(_.target==="draft-2020-12")U.$schema="https://json-schema.org/draft/2020-12/schema";else if(_.target==="draft-07")U.$schema="http://json-schema.org/draft-07/schema#";else if(_.target==="draft-04")U.$schema="http://json-schema.org/draft-04/schema#";else if(_.target==="openapi-3.0");if(_.external?.uri){let N=_.external.registry.get($)?.id;if(!N)throw Error("Schema is missing an `id` property");U.$id=_.external.uri(N)}Object.assign(U,D.def??D.schema);let I=_.metadataRegistry.get($)?.id;if(I!==void 0&&U.id===I)delete U.id;let j=_.external?.defs??{};for(let N of _.seen.entries()){let O=N[1];if(O.def&&O.defId){if(O.def.id===O.defId)delete O.def.id;j[O.defId]=O.def}}if(_.external);else if(Object.keys(j).length>0)if(_.target==="draft-2020-12")U.$defs=j;else U.definitions=j;try{let N=JSON.parse(JSON.stringify(U));return Object.defineProperty(N,"~standard",{value:{...$["~standard"],jsonSchema:{input:y0($,"input",_.processors),output:y0($,"output",_.processors)}},enumerable:!1,writable:!1}),N}catch(N){throw Error("Error converting schema to JSON.")}}function t_(_,$){let D=$??{seen:new Set};if(D.seen.has(_))return!1;D.seen.add(_);let g=_._zod.def;if(g.type==="transform")return!0;if(g.type==="array")return t_(g.element,D);if(g.type==="set")return t_(g.valueType,D);if(g.type==="lazy")return t_(g.getter(),D);if(g.type==="promise"||g.type==="optional"||g.type==="nonoptional"||g.type==="nullable"||g.type==="readonly"||g.type==="default"||g.type==="prefault")return t_(g.innerType,D);if(g.type==="intersection")return t_(g.left,D)||t_(g.right,D);if(g.type==="record"||g.type==="map")return t_(g.keyType,D)||t_(g.valueType,D);if(g.type==="pipe"){if(_._zod.traits.has("$ZodCodec"))return!0;return t_(g.in,D)||t_(g.out,D)}if(g.type==="object"){for(let U in g.shape)if(t_(g.shape[U],D))return!0;return!1}if(g.type==="union"){for(let U of g.options)if(t_(U,D))return!0;return!1}if(g.type==="tuple"){for(let U of g.items)if(t_(U,D))return!0;if(g.rest&&t_(g.rest,D))return!0;return!1}return!1}var eL=(_,$={})=>(D)=>{let g=f6({...D,processors:$});return A_(_,g),w6(g,_),r6(g,_)},y0=(_,$,D={})=>(g)=>{let{libraryOptions:U,target:I}=g??{},j=f6({...U??{},target:I,io:$,processors:D});return A_(_,j),w6(j,_),r6(j,_)};var TU=w(()=>{zU()});function BU(_,$){if("_idmap"in _){let g=_,U=f6({...$,processors:R1}),I={};for(let O of g._idmap.entries()){let[A,L]=O;A_(L,U)}let j={},N={registry:g,uri:$?.uri,defs:I};U.external=N;for(let O of g._idmap.entries()){let[A,L]=O;w6(U,L),j[A]=r6(U,L)}if(Object.keys(I).length>0){let O=U.target==="draft-2020-12"?"$defs":"definitions";j.__shared={[O]:I}}return{schemas:j}}let D=f6({...$,processors:R1});return A_(_,D),w6(D,_),r6(D,_)}var rK,aL=(_,$,D,g)=>{let U=D;U.type="string";let{minimum:I,maximum:j,format:N,patterns:O,contentEncoding:A}=_._zod.bag;if(typeof I==="number")U.minLength=I;if(typeof j==="number")U.maxLength=j;if(N){if(U.format=rK[N]??N,U.format==="")delete U.format;if(N==="time")delete U.format}if(A)U.contentEncoding=A;if(O&&O.size>0){let L=[...O];if(L.length===1)U.pattern=L[0].source;else if(L.length>1)U.allOf=[...L.map((z)=>({...$.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"?{type:"string"}:{},pattern:z.source}))]}},sL=(_,$,D,g)=>{let U=D,{minimum:I,maximum:j,format:N,multipleOf:O,exclusiveMaximum:A,exclusiveMinimum:L}=_._zod.bag;if(typeof N==="string"&&N.includes("int"))U.type="integer";else U.type="number";let z=typeof L==="number"&&L>=(I??Number.NEGATIVE_INFINITY),W=typeof A==="number"&&A<=(j??Number.POSITIVE_INFINITY),J=$.target==="draft-04"||$.target==="openapi-3.0";if(z)if(J)U.minimum=L,U.exclusiveMinimum=!0;else U.exclusiveMinimum=L;else if(typeof I==="number")U.minimum=I;if(W)if(J)U.maximum=A,U.exclusiveMaximum=!0;else U.exclusiveMaximum=A;else if(typeof j==="number")U.maximum=j;if(typeof O==="number")U.multipleOf=O},_J=(_,$,D,g)=>{D.type="boolean"},$J=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},DJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},UJ=(_,$,D,g)=>{if($.target==="openapi-3.0")D.type="string",D.nullable=!0,D.enum=[null];else D.type="null"},gJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},IJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},jJ=(_,$,D,g)=>{D.not={}},NJ=(_,$,D,g)=>{},EJ=(_,$,D,g)=>{},OJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},AJ=(_,$,D,g)=>{let U=_._zod.def,I=eD(U.entries);if(I.every((j)=>typeof j==="number"))D.type="number";if(I.every((j)=>typeof j==="string"))D.type="string";D.enum=I},LJ=(_,$,D,g)=>{let U=_._zod.def,I=[];for(let j of U.values)if(j===void 0){if($.unrepresentable==="throw")throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof j==="bigint")if($.unrepresentable==="throw")throw Error("BigInt literals cannot be represented in JSON Schema");else I.push(Number(j));else I.push(j);if(I.length===0);else if(I.length===1){let j=I[0];if(D.type=j===null?"null":typeof j,$.target==="draft-04"||$.target==="openapi-3.0")D.enum=[j];else D.const=j}else{if(I.every((j)=>typeof j==="number"))D.type="number";if(I.every((j)=>typeof j==="string"))D.type="string";if(I.every((j)=>typeof j==="boolean"))D.type="boolean";if(I.every((j)=>j===null))D.type="null";D.enum=I}},JJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},PJ=(_,$,D,g)=>{let U=D,I=_._zod.pattern;if(!I)throw Error("Pattern not found in template literal");U.type="string",U.pattern=I.source},zJ=(_,$,D,g)=>{let U=D,I={type:"string",format:"binary",contentEncoding:"binary"},{minimum:j,maximum:N,mime:O}=_._zod.bag;if(j!==void 0)I.minLength=j;if(N!==void 0)I.maxLength=N;if(O)if(O.length===1)I.contentMediaType=O[0],Object.assign(U,I);else Object.assign(U,I),U.anyOf=O.map((A)=>({contentMediaType:A}));else Object.assign(U,I)},SJ=(_,$,D,g)=>{D.type="boolean"},WJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},XJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},GJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},RJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},YJ=(_,$,D,g)=>{if($.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},QJ=(_,$,D,g)=>{let U=D,I=_._zod.def,{minimum:j,maximum:N}=_._zod.bag;if(typeof j==="number")U.minItems=j;if(typeof N==="number")U.maxItems=N;U.type="array",U.items=A_(I.element,$,{...g,path:[...g.path,"items"]})},TJ=(_,$,D,g)=>{let U=D,I=_._zod.def;U.type="object",U.properties={};let j=I.shape;for(let A in j)U.properties[A]=A_(j[A],$,{...g,path:[...g.path,"properties",A]});let N=new Set(Object.keys(j)),O=new Set([...N].filter((A)=>{let L=I.shape[A]._zod;if($.io==="input")return L.optin===void 0;else return L.optout===void 0}));if(O.size>0)U.required=Array.from(O);if(I.catchall?._zod.def.type==="never")U.additionalProperties=!1;else if(!I.catchall){if($.io==="output")U.additionalProperties=!1}else if(I.catchall)U.additionalProperties=A_(I.catchall,$,{...g,path:[...g.path,"additionalProperties"]})},Y1=(_,$,D,g)=>{let U=_._zod.def,I=U.inclusive===!1,j=U.options.map((N,O)=>A_(N,$,{...g,path:[...g.path,I?"oneOf":"anyOf",O]}));if(I)D.oneOf=j;else D.anyOf=j},BJ=(_,$,D,g)=>{let U=_._zod.def,I=A_(U.left,$,{...g,path:[...g.path,"allOf",0]}),j=A_(U.right,$,{...g,path:[...g.path,"allOf",1]}),N=(A)=>("allOf"in A)&&Object.keys(A).length===1,O=[...N(I)?I.allOf:[I],...N(j)?j.allOf:[j]];D.allOf=O},qJ=(_,$,D,g)=>{let U=D,I=_._zod.def;U.type="array";let j=$.target==="draft-2020-12"?"prefixItems":"items",N=$.target==="draft-2020-12"?"items":$.target==="openapi-3.0"?"items":"additionalItems",O=I.items.map((W,J)=>A_(W,$,{...g,path:[...g.path,j,J]})),A=I.rest?A_(I.rest,$,{...g,path:[...g.path,N,...$.target==="openapi-3.0"?[I.items.length]:[]]}):null;if($.target==="draft-2020-12"){if(U.prefixItems=O,A)U.items=A}else if($.target==="openapi-3.0"){if(U.items={anyOf:O},A)U.items.anyOf.push(A);if(U.minItems=O.length,!A)U.maxItems=O.length}else if(U.items=O,A)U.additionalItems=A;let{minimum:L,maximum:z}=_._zod.bag;if(typeof L==="number")U.minItems=L;if(typeof z==="number")U.maxItems=z},VJ=(_,$,D,g)=>{let U=D,I=_._zod.def;U.type="object";let j=I.keyType,O=j._zod.bag?.patterns;if(I.mode==="loose"&&O&&O.size>0){let L=A_(I.valueType,$,{...g,path:[...g.path,"patternProperties","*"]});U.patternProperties={};for(let z of O)U.patternProperties[z.source]=L}else{if($.target==="draft-07"||$.target==="draft-2020-12")U.propertyNames=A_(I.keyType,$,{...g,path:[...g.path,"propertyNames"]});U.additionalProperties=A_(I.valueType,$,{...g,path:[...g.path,"additionalProperties"]})}let A=j._zod.values;if(A){let L=[...A].filter((z)=>typeof z==="string"||typeof z==="number");if(L.length>0)U.required=L}},FJ=(_,$,D,g)=>{let U=_._zod.def,I=A_(U.innerType,$,g),j=$.seen.get(_);if($.target==="openapi-3.0")j.ref=U.innerType,D.nullable=!0;else D.anyOf=[I,{type:"null"}]},KJ=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);I.ref=U.innerType},MJ=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);I.ref=U.innerType,D.default=JSON.parse(JSON.stringify(U.defaultValue))},ZJ=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);if(I.ref=U.innerType,$.io==="input")D._prefault=JSON.parse(JSON.stringify(U.defaultValue))},bJ=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);I.ref=U.innerType;let j;try{j=U.catchValue(void 0)}catch{throw Error("Dynamic catch values are not supported in JSON Schema")}D.default=j},HJ=(_,$,D,g)=>{let U=_._zod.def,I=U.in._zod.traits.has("$ZodTransform"),j=$.io==="input"?I?U.out:U.in:U.out;A_(j,$,g);let N=$.seen.get(_);N.ref=j},kJ=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);I.ref=U.innerType,D.readOnly=!0},CJ=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);I.ref=U.innerType},Q1=(_,$,D,g)=>{let U=_._zod.def;A_(U.innerType,$,g);let I=$.seen.get(_);I.ref=U.innerType},vJ=(_,$,D,g)=>{let U=_._zod.innerType;A_(U,$,g);let I=$.seen.get(_);I.ref=U},R1;var qU=w(()=>{TU();c();rK={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},R1={string:aL,number:sL,boolean:_J,bigint:$J,symbol:DJ,null:UJ,undefined:gJ,void:IJ,never:jJ,any:NJ,unknown:EJ,date:OJ,enum:AJ,literal:LJ,nan:JJ,template_literal:PJ,file:zJ,success:SJ,custom:WJ,function:XJ,transform:GJ,map:RJ,set:YJ,array:QJ,object:TJ,union:Y1,intersection:BJ,tuple:qJ,record:VJ,nullable:FJ,nonoptional:KJ,default:MJ,prefault:ZJ,catch:bJ,pipe:HJ,readonly:kJ,promise:CJ,optional:Q1,lazy:vJ}});class fJ{get metadataRegistry(){return this.ctx.metadataRegistry}get target(){return this.ctx.target}get unrepresentable(){return this.ctx.unrepresentable}get override(){return this.ctx.override}get io(){return this.ctx.io}get counter(){return this.ctx.counter}set counter(_){this.ctx.counter=_}get seen(){return this.ctx.seen}constructor(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";this.ctx=f6({processors:R1,target:$,..._?.metadata&&{metadata:_.metadata},..._?.unrepresentable&&{unrepresentable:_.unrepresentable},..._?.override&&{override:_.override},..._?.io&&{io:_.io}})}process(_,$={path:[],schemaPath:[]}){return A_(_,this.ctx,$)}emit(_,$){if($){if($.cycles)this.ctx.cycles=$.cycles;if($.reused)this.ctx.reused=$.reused;if($.external)this.ctx.external=$.external}w6(this.ctx,_);let D=r6(this.ctx,_),{"~standard":g,...U}=D;return U}}var P9=w(()=>{qU();TU()});var z9={};var S9=()=>{};var h$={};v$(h$,{version:()=>_O,util:()=>H,treeifyError:()=>BI,toJSONSchema:()=>BU,toDotPath:()=>xX,safeParseAsync:()=>IE,safeParse:()=>gE,safeEncodeAsync:()=>yV,safeEncode:()=>uV,safeDecodeAsync:()=>hV,safeDecode:()=>xV,registry:()=>PU,regexes:()=>$$,process:()=>A_,prettifyError:()=>qI,parseAsync:()=>FI,parse:()=>VI,meta:()=>oL,locales:()=>u0,isValidJWT:()=>N5,isValidBase64URL:()=>j5,isValidBase64:()=>BO,initializeContext:()=>f6,globalRegistry:()=>r_,globalConfig:()=>A4,formatError:()=>H0,flattenError:()=>b0,finalize:()=>r6,extractDefs:()=>w6,encodeAsync:()=>wV,encode:()=>vV,describe:()=>tL,decodeAsync:()=>rV,decode:()=>fV,createToJSONSchemaMethod:()=>eL,createStandardJSONSchemaMethod:()=>y0,config:()=>Z_,clone:()=>y_,_xor:()=>SK,_xid:()=>E1,_void:()=>xL,_uuidv7:()=>D1,_uuidv6:()=>$1,_uuidv4:()=>_1,_uuid:()=>sI,_url:()=>WU,_uppercase:()=>G4,_unknown:()=>rL,_union:()=>zK,_undefined:()=>vL,_ulid:()=>N1,_uint64:()=>kL,_uint32:()=>FL,_tuple:()=>GK,_trim:()=>q4,_transform:()=>VK,_toUpperCase:()=>F4,_toLowerCase:()=>V4,_templateLiteral:()=>vK,_symbol:()=>CL,_superRefine:()=>lL,_success:()=>bK,_stringbool:()=>pL,_stringFormat:()=>x0,_string:()=>PL,_startsWith:()=>Y4,_slugify:()=>K4,_size:()=>k6,_set:()=>QK,_safeParseAsync:()=>f0,_safeParse:()=>v0,_safeEncodeAsync:()=>CI,_safeEncode:()=>HI,_safeDecodeAsync:()=>vI,_safeDecode:()=>kI,_regex:()=>W4,_refine:()=>iL,_record:()=>RK,_readonly:()=>CK,_property:()=>QU,_promise:()=>wK,_positive:()=>XU,_pipe:()=>kK,_parseAsync:()=>C0,_parse:()=>k0,_overwrite:()=>z$,_optional:()=>FK,_number:()=>YL,_nullable:()=>KK,_null:()=>fL,_normalize:()=>B4,_nonpositive:()=>RU,_nonoptional:()=>ZK,_nonnegative:()=>YU,_never:()=>uL,_negative:()=>GU,_nativeEnum:()=>BK,_nanoid:()=>g1,_nan:()=>cL,_multipleOf:()=>g6,_minSize:()=>B$,_minLength:()=>y$,_min:()=>h_,_mime:()=>T4,_maxSize:()=>I6,_maxLength:()=>C6,_max:()=>D$,_map:()=>YK,_mac:()=>SL,_lte:()=>D$,_lt:()=>Q$,_lowercase:()=>X4,_literal:()=>qK,_length:()=>v6,_lazy:()=>fK,_ksuid:()=>O1,_jwt:()=>X1,_isoTime:()=>GL,_isoDuration:()=>RL,_isoDateTime:()=>WL,_isoDate:()=>XL,_ipv6:()=>L1,_ipv4:()=>A1,_intersection:()=>XK,_int64:()=>HL,_int32:()=>VL,_int:()=>TL,_includes:()=>R4,_guid:()=>SU,_gte:()=>h_,_gt:()=>T$,_float64:()=>qL,_float32:()=>BL,_file:()=>dL,_enum:()=>TK,_endsWith:()=>Q4,_encodeAsync:()=>ZI,_encode:()=>KI,_emoji:()=>U1,_email:()=>aI,_e164:()=>W1,_discriminatedUnion:()=>WK,_default:()=>MK,_decodeAsync:()=>bI,_decode:()=>MI,_date:()=>yL,_custom:()=>mL,_cuid2:()=>j1,_cuid:()=>I1,_coercedString:()=>zL,_coercedNumber:()=>QL,_coercedDate:()=>hL,_coercedBoolean:()=>ML,_coercedBigint:()=>bL,_cidrv6:()=>P1,_cidrv4:()=>J1,_check:()=>L9,_catch:()=>HK,_boolean:()=>KL,_bigint:()=>ZL,_base64url:()=>S1,_base64:()=>z1,_array:()=>nL,_any:()=>wL,TimePrecision:()=>G1,NEVER:()=>RI,JSONSchemaGenerator:()=>fJ,JSONSchema:()=>z9,Doc:()=>yI,$output:()=>pI,$input:()=>eI,$constructor:()=>Y,$brand:()=>YI,$ZodXor:()=>hO,$ZodXID:()=>JO,$ZodVoid:()=>rO,$ZodUnknown:()=>fO,$ZodUnion:()=>NU,$ZodUndefined:()=>kO,$ZodUUID:()=>gO,$ZodURL:()=>jO,$ZodULID:()=>LO,$ZodType:()=>l,$ZodTuple:()=>lI,$ZodTransform:()=>pO,$ZodTemplateLiteral:()=>NA,$ZodSymbol:()=>HO,$ZodSuccess:()=>DA,$ZodStringFormat:()=>G_,$ZodString:()=>S4,$ZodSet:()=>iO,$ZodRegistry:()=>JL,$ZodRecord:()=>dO,$ZodRealError:()=>_$,$ZodReadonly:()=>jA,$ZodPromise:()=>OA,$ZodPreprocess:()=>IA,$ZodPrefault:()=>_A,$ZodPipe:()=>oI,$ZodOptional:()=>tI,$ZodObjectJIT:()=>yO,$ZodObject:()=>A5,$ZodNumberFormat:()=>ZO,$ZodNumber:()=>mI,$ZodNullable:()=>aO,$ZodNull:()=>CO,$ZodNonOptional:()=>$A,$ZodNever:()=>wO,$ZodNanoID:()=>EO,$ZodNaN:()=>gA,$ZodMap:()=>mO,$ZodMAC:()=>YO,$ZodLiteral:()=>tO,$ZodLazy:()=>AA,$ZodKSUID:()=>PO,$ZodJWT:()=>KO,$ZodIntersection:()=>nO,$ZodISOTime:()=>WO,$ZodISODuration:()=>XO,$ZodISODateTime:()=>zO,$ZodISODate:()=>SO,$ZodIPv6:()=>RO,$ZodIPv4:()=>GO,$ZodGUID:()=>UO,$ZodFunction:()=>EA,$ZodFile:()=>oO,$ZodExactOptional:()=>eO,$ZodError:()=>DU,$ZodEnum:()=>lO,$ZodEncodeError:()=>L4,$ZodEmoji:()=>NO,$ZodEmail:()=>IO,$ZodE164:()=>FO,$ZodDiscriminatedUnion:()=>cO,$ZodDefault:()=>sO,$ZodDate:()=>uO,$ZodCustomStringFormat:()=>MO,$ZodCustom:()=>LA,$ZodCodec:()=>EU,$ZodCheckUpperCase:()=>lE,$ZodCheckStringFormat:()=>w0,$ZodCheckStartsWith:()=>oE,$ZodCheckSizeEquals:()=>hE,$ZodCheckRegex:()=>mE,$ZodCheckProperty:()=>eE,$ZodCheckOverwrite:()=>sE,$ZodCheckNumberFormat:()=>rE,$ZodCheckMultipleOf:()=>wE,$ZodCheckMinSize:()=>yE,$ZodCheckMinLength:()=>nE,$ZodCheckMimeType:()=>aE,$ZodCheckMaxSize:()=>xE,$ZodCheckMaxLength:()=>cE,$ZodCheckLowerCase:()=>iE,$ZodCheckLessThan:()=>rI,$ZodCheckLengthEquals:()=>dE,$ZodCheckIncludes:()=>tE,$ZodCheckGreaterThan:()=>uI,$ZodCheckEndsWith:()=>pE,$ZodCheckBigIntFormat:()=>uE,$ZodCheck:()=>Y_,$ZodCatch:()=>UA,$ZodCUID2:()=>AO,$ZodCUID:()=>OO,$ZodCIDRv6:()=>TO,$ZodCIDRv4:()=>QO,$ZodBoolean:()=>jU,$ZodBigIntFormat:()=>bO,$ZodBigInt:()=>iI,$ZodBase64URL:()=>VO,$ZodBase64:()=>qO,$ZodAsyncError:()=>x$,$ZodArray:()=>xO,$ZodAny:()=>vO});var N$=w(()=>{c();wI();LL();qU();P9();S9();J4();jE();UE();JA();xI();$O();zU();J9();TU()});var T1={};v$(T1,{uppercase:()=>G4,trim:()=>q4,toUpperCase:()=>F4,toLowerCase:()=>V4,startsWith:()=>Y4,slugify:()=>K4,size:()=>k6,regex:()=>W4,property:()=>QU,positive:()=>XU,overwrite:()=>z$,normalize:()=>B4,nonpositive:()=>RU,nonnegative:()=>YU,negative:()=>GU,multipleOf:()=>g6,minSize:()=>B$,minLength:()=>y$,mime:()=>T4,maxSize:()=>I6,maxLength:()=>C6,lte:()=>D$,lt:()=>Q$,lowercase:()=>X4,length:()=>v6,includes:()=>R4,gte:()=>h_,gt:()=>T$,endsWith:()=>Q4});var B1=w(()=>{N$()});var M4={};v$(M4,{time:()=>uJ,duration:()=>xJ,datetime:()=>wJ,date:()=>rJ,ZodISOTime:()=>KU,ZodISODuration:()=>MU,ZodISODateTime:()=>VU,ZodISODate:()=>FU});function wJ(_){return WL(VU,_)}function rJ(_){return XL(FU,_)}function uJ(_){return GL(KU,_)}function xJ(_){return RL(MU,_)}var VU,FU,KU,MU;var ZU=w(()=>{N$();HU();VU=Y("ZodISODateTime",(_,$)=>{zO.init(_,$),z_.init(_,$)});FU=Y("ZodISODate",(_,$)=>{SO.init(_,$),z_.init(_,$)});KU=Y("ZodISOTime",(_,$)=>{WO.init(_,$),z_.init(_,$)});MU=Y("ZodISODuration",(_,$)=>{XO.init(_,$),z_.init(_,$)})});var W9=(_,$)=>{DU.init(_,$),_.name="ZodError",Object.defineProperties(_,{format:{value:(D)=>H0(_,D)},flatten:{value:(D)=>b0(_,D)},addIssue:{value:(D)=>{_.issues.push(D),_.message=JSON.stringify(_.issues,K0,2)}},addIssues:{value:(D)=>{_.issues.push(...D),_.message=JSON.stringify(_.issues,K0,2)}},isEmpty:{get(){return _.issues.length===0}}})},X9,o_;var yJ=w(()=>{N$();N$();c();X9=Y("ZodError",W9),o_=Y("ZodError",W9,{Parent:Error})});var q1,V1,F1,K1,M1,Z1,b1,H1,k1,C1,v1,f1;var hJ=w(()=>{N$();yJ();q1=k0(o_),V1=C0(o_),F1=v0(o_),K1=f0(o_),M1=KI(o_),Z1=MI(o_),b1=ZI(o_),H1=bI(o_),k1=HI(o_),C1=kI(o_),v1=CI(o_),f1=vI(o_)});var bU={};v$(bU,{xor:()=>k3,xid:()=>$3,void:()=>F3,uuidv7:()=>lJ,uuidv6:()=>iJ,uuidv4:()=>mJ,uuid:()=>dJ,url:()=>tJ,unknown:()=>u6,union:()=>_g,undefined:()=>q3,ulid:()=>_3,uint64:()=>T3,uint32:()=>R3,tuple:()=>s1,transform:()=>Dg,templateLiteral:()=>i3,symbol:()=>B3,superRefine:()=>Kj,success:()=>c3,stringbool:()=>_P,stringFormat:()=>J3,string:()=>h0,strictObject:()=>b3,set:()=>r3,refine:()=>Fj,record:()=>_j,readonly:()=>Yj,promise:()=>l3,preprocess:()=>DP,prefault:()=>Jj,pipe:()=>CU,partialRecord:()=>v3,optional:()=>n0,object:()=>Z3,number:()=>r1,nullish:()=>h3,nullable:()=>d0,null:()=>c1,nonoptional:()=>Pj,never:()=>sU,nativeEnum:()=>u3,nanoid:()=>eJ,nan:()=>n3,meta:()=>a3,map:()=>w3,mac:()=>g3,looseRecord:()=>f3,looseObject:()=>H3,literal:()=>x3,lazy:()=>Bj,ksuid:()=>D3,keyof:()=>M3,jwt:()=>L3,json:()=>$P,ipv6:()=>I3,ipv4:()=>U3,invertCodec:()=>m3,intersection:()=>e1,int64:()=>Q3,int32:()=>G3,int:()=>kU,instanceof:()=>s3,httpUrl:()=>oJ,hostname:()=>P3,hex:()=>z3,hash:()=>S3,guid:()=>nJ,function:()=>t3,float64:()=>X3,float32:()=>W3,file:()=>y3,exactOptional:()=>Nj,enum:()=>$g,emoji:()=>pJ,email:()=>cJ,e164:()=>A3,discriminatedUnion:()=>C3,describe:()=>e3,date:()=>K3,custom:()=>p3,cuid2:()=>sJ,cuid:()=>aJ,codec:()=>d3,cidrv6:()=>N3,cidrv4:()=>j3,check:()=>o3,catch:()=>Wj,boolean:()=>u1,bigint:()=>Y3,base64url:()=>O3,base64:()=>E3,array:()=>l0,any:()=>V3,_function:()=>t3,_default:()=>Aj,_ZodString:()=>fU,ZodXor:()=>t1,ZodXID:()=>cU,ZodVoid:()=>i1,ZodUnknown:()=>d1,ZodUnion:()=>o0,ZodUndefined:()=>y1,ZodUUID:()=>q$,ZodURL:()=>m0,ZodULID:()=>hU,ZodType:()=>o,ZodTuple:()=>a1,ZodTransform:()=>Ij,ZodTemplateLiteral:()=>Qj,ZodSymbol:()=>x1,ZodSuccess:()=>zj,ZodStringFormat:()=>z_,ZodString:()=>H4,ZodSet:()=>Dj,ZodRecord:()=>Z4,ZodReadonly:()=>Rj,ZodPromise:()=>qj,ZodPreprocess:()=>Gj,ZodPrefault:()=>Lj,ZodPipe:()=>p0,ZodOptional:()=>Ug,ZodObject:()=>t0,ZodNumberFormat:()=>x6,ZodNumber:()=>C4,ZodNullable:()=>Ej,ZodNull:()=>h1,ZodNonOptional:()=>gg,ZodNever:()=>m1,ZodNanoID:()=>uU,ZodNaN:()=>Xj,ZodMap:()=>$j,ZodMAC:()=>w1,ZodLiteral:()=>Uj,ZodLazy:()=>Tj,ZodKSUID:()=>nU,ZodJWT:()=>eU,ZodIntersection:()=>p1,ZodIPv6:()=>mU,ZodIPv4:()=>dU,ZodGUID:()=>c0,ZodFunction:()=>Vj,ZodFile:()=>gj,ZodExactOptional:()=>jj,ZodEnum:()=>b4,ZodEmoji:()=>rU,ZodEmail:()=>wU,ZodE164:()=>pU,ZodDiscriminatedUnion:()=>o1,ZodDefault:()=>Oj,ZodDate:()=>i0,ZodCustomStringFormat:()=>k4,ZodCustom:()=>a0,ZodCodec:()=>e0,ZodCatch:()=>Sj,ZodCUID2:()=>yU,ZodCUID:()=>xU,ZodCIDRv6:()=>lU,ZodCIDRv4:()=>iU,ZodBoolean:()=>v4,ZodBigIntFormat:()=>aU,ZodBigInt:()=>f4,ZodBase64URL:()=>oU,ZodBase64:()=>tU,ZodArray:()=>l1,ZodAny:()=>n1});function vU(_,$,D){let g=Object.getPrototypeOf(_),U=G9.get(g);if(!U)U=new Set,G9.set(g,U);if(U.has($))return;U.add($);for(let I in D){let j=D[I];Object.defineProperty(g,I,{configurable:!0,enumerable:!1,get(){let N=j.bind(this);return Object.defineProperty(this,I,{configurable:!0,writable:!0,enumerable:!0,value:N}),N},set(N){Object.defineProperty(this,I,{configurable:!0,writable:!0,enumerable:!0,value:N})}})}}function h0(_){return PL(H4,_)}function cJ(_){return aI(wU,_)}function nJ(_){return SU(c0,_)}function dJ(_){return sI(q$,_)}function mJ(_){return _1(q$,_)}function iJ(_){return $1(q$,_)}function lJ(_){return D1(q$,_)}function tJ(_){return WU(m0,_)}function oJ(_){return WU(m0,{protocol:$$.httpProtocol,hostname:$$.domain,...H.normalizeParams(_)})}function pJ(_){return U1(rU,_)}function eJ(_){return g1(uU,_)}function aJ(_){return I1(xU,_)}function sJ(_){return j1(yU,_)}function _3(_){return N1(hU,_)}function $3(_){return E1(cU,_)}function D3(_){return O1(nU,_)}function U3(_){return A1(dU,_)}function g3(_){return SL(w1,_)}function I3(_){return L1(mU,_)}function j3(_){return J1(iU,_)}function N3(_){return P1(lU,_)}function E3(_){return z1(tU,_)}function O3(_){return S1(oU,_)}function A3(_){return W1(pU,_)}function L3(_){return X1(eU,_)}function J3(_,$,D={}){return x0(k4,_,$,D)}function P3(_){return x0(k4,"hostname",$$.hostname,_)}function z3(_){return x0(k4,"hex",$$.hex,_)}function S3(_,$){let D=$?.enc??"hex",g=`${_}_${D}`,U=$$[g];if(!U)throw Error(`Unrecognized hash format: ${g}`);return x0(k4,g,U,$)}function r1(_){return YL(C4,_)}function kU(_){return TL(x6,_)}function W3(_){return BL(x6,_)}function X3(_){return qL(x6,_)}function G3(_){return VL(x6,_)}function R3(_){return FL(x6,_)}function u1(_){return KL(v4,_)}function Y3(_){return ZL(f4,_)}function Q3(_){return HL(aU,_)}function T3(_){return kL(aU,_)}function B3(_){return CL(x1,_)}function q3(_){return vL(y1,_)}function c1(_){return fL(h1,_)}function V3(){return wL(n1)}function u6(){return rL(d1)}function sU(_){return uL(m1,_)}function F3(_){return xL(i1,_)}function K3(_){return yL(i0,_)}function l0(_,$){return nL(l1,_,$)}function M3(_){let $=_._zod.def.shape;return $g(Object.keys($))}function Z3(_,$){let D={type:"object",shape:_??{},...H.normalizeParams($)};return new t0(D)}function b3(_,$){return new t0({type:"object",shape:_,catchall:sU(),...H.normalizeParams($)})}function H3(_,$){return new t0({type:"object",shape:_,catchall:u6(),...H.normalizeParams($)})}function _g(_,$){return new o0({type:"union",options:_,...H.normalizeParams($)})}function k3(_,$){return new t1({type:"union",options:_,inclusive:!1,...H.normalizeParams($)})}function C3(_,$,D){return new o1({type:"union",options:$,discriminator:_,...H.normalizeParams(D)})}function e1(_,$){return new p1({type:"intersection",left:_,right:$})}function s1(_,$,D){let g=$ instanceof l,U=g?D:$;return new a1({type:"tuple",items:_,rest:g?$:null,...H.normalizeParams(U)})}function _j(_,$,D){if(!$||!$._zod)return new Z4({type:"record",keyType:h0(),valueType:_,...H.normalizeParams($)});return new Z4({type:"record",keyType:_,valueType:$,...H.normalizeParams(D)})}function v3(_,$,D){let g=y_(_);return g._zod.values=void 0,new Z4({type:"record",keyType:g,valueType:$,...H.normalizeParams(D)})}function f3(_,$,D){return new Z4({type:"record",keyType:_,valueType:$,mode:"loose",...H.normalizeParams(D)})}function w3(_,$,D){return new $j({type:"map",keyType:_,valueType:$,...H.normalizeParams(D)})}function r3(_,$){return new Dj({type:"set",valueType:_,...H.normalizeParams($)})}function $g(_,$){let D=Array.isArray(_)?Object.fromEntries(_.map((g)=>[g,g])):_;return new b4({type:"enum",entries:D,...H.normalizeParams($)})}function u3(_,$){return new b4({type:"enum",entries:_,...H.normalizeParams($)})}function x3(_,$){return new Uj({type:"literal",values:Array.isArray(_)?_:[_],...H.normalizeParams($)})}function y3(_){return dL(gj,_)}function Dg(_){return new Ij({type:"transform",transform:_})}function n0(_){return new Ug({type:"optional",innerType:_})}function Nj(_){return new jj({type:"optional",innerType:_})}function d0(_){return new Ej({type:"nullable",innerType:_})}function h3(_){return n0(d0(_))}function Aj(_,$){return new Oj({type:"default",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Jj(_,$){return new Lj({type:"prefault",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Pj(_,$){return new gg({type:"nonoptional",innerType:_,...H.normalizeParams($)})}function c3(_){return new zj({type:"success",innerType:_})}function Wj(_,$){return new Sj({type:"catch",innerType:_,catchValue:typeof $==="function"?$:()=>$})}function n3(_){return cL(Xj,_)}function CU(_,$){return new p0({type:"pipe",in:_,out:$})}function d3(_,$,D){return new e0({type:"pipe",in:_,out:$,transform:D.decode,reverseTransform:D.encode})}function m3(_){let $=_._zod.def;return new e0({type:"pipe",in:$.out,out:$.in,transform:$.reverseTransform,reverseTransform:$.transform})}function Yj(_){return new Rj({type:"readonly",innerType:_})}function i3(_,$){return new Qj({type:"template_literal",parts:_,...H.normalizeParams($)})}function Bj(_){return new Tj({type:"lazy",getter:_})}function l3(_){return new qj({type:"promise",innerType:_})}function t3(_){return new Vj({type:"function",input:Array.isArray(_?.input)?s1(_?.input):_?.input??l0(u6()),output:_?.output??u6()})}function o3(_){let $=new Y_({check:"custom"});return $._zod.check=_,$}function p3(_,$){return mL(a0,_??(()=>!0),$)}function Fj(_,$={}){return iL(a0,_,$)}function Kj(_,$){return lL(_,$)}function s3(_,$={}){let D=new a0({type:"custom",check:"custom",fn:(g)=>g instanceof _,abort:!0,...H.normalizeParams($)});return D._zod.bag.Class=_,D._zod.check=(g)=>{if(!(g.value instanceof _))g.issues.push({code:"invalid_type",expected:_.name,input:g.value,inst:D,path:[...D._zod.def.path??[]]})},D}function $P(_){let $=Bj(()=>{return _g([h0(_),r1(),u1(),c1(),l0($),_j(h0(),$)])});return $}function DP(_,$){return new Gj({type:"pipe",in:Dg(_),out:$})}var G9,o,fU,H4,z_,wU,c0,q$,m0,rU,uU,xU,yU,hU,cU,nU,dU,w1,mU,iU,lU,tU,oU,pU,eU,k4,C4,x6,v4,f4,aU,x1,y1,h1,n1,d1,m1,i1,i0,l1,t0,o0,t1,o1,p1,a1,Z4,$j,Dj,b4,Uj,gj,Ij,Ug,jj,Ej,Oj,Lj,gg,zj,Sj,Xj,p0,e0,Gj,Rj,Qj,Tj,qj,Vj,a0,e3,a3,_P=(..._)=>pL({Codec:e0,Boolean:v4,String:H4},..._);var HU=w(()=>{N$();N$();qU();TU();B1();ZU();hJ();G9=new WeakMap;o=Y("ZodType",(_,$)=>{return l.init(_,$),Object.assign(_["~standard"],{jsonSchema:{input:y0(_,"input"),output:y0(_,"output")}}),_.toJSONSchema=eL(_,{}),_.def=$,_.type=$.type,Object.defineProperty(_,"_def",{value:$}),_.parse=(D,g)=>q1(_,D,g,{callee:_.parse}),_.safeParse=(D,g)=>F1(_,D,g),_.parseAsync=async(D,g)=>V1(_,D,g,{callee:_.parseAsync}),_.safeParseAsync=async(D,g)=>K1(_,D,g),_.spa=_.safeParseAsync,_.encode=(D,g)=>M1(_,D,g),_.decode=(D,g)=>Z1(_,D,g),_.encodeAsync=async(D,g)=>b1(_,D,g),_.decodeAsync=async(D,g)=>H1(_,D,g),_.safeEncode=(D,g)=>k1(_,D,g),_.safeDecode=(D,g)=>C1(_,D,g),_.safeEncodeAsync=async(D,g)=>v1(_,D,g),_.safeDecodeAsync=async(D,g)=>f1(_,D,g),vU(_,"ZodType",{check(...D){let g=this.def;return this.clone(H.mergeDefs(g,{checks:[...g.checks??[],...D.map((U)=>typeof U==="function"?{_zod:{check:U,def:{check:"custom"},onattach:[]}}:U)]}),{parent:!0})},with(...D){return this.check(...D)},clone(D,g){return y_(this,D,g)},brand(){return this},register(D,g){return D.add(this,g),this},refine(D,g){return this.check(Fj(D,g))},superRefine(D,g){return this.check(Kj(D,g))},overwrite(D){return this.check(z$(D))},optional(){return n0(this)},exactOptional(){return Nj(this)},nullable(){return d0(this)},nullish(){return n0(d0(this))},nonoptional(D){return Pj(this,D)},array(){return l0(this)},or(D){return _g([this,D])},and(D){return e1(this,D)},transform(D){return CU(this,Dg(D))},default(D){return Aj(this,D)},prefault(D){return Jj(this,D)},catch(D){return Wj(this,D)},pipe(D){return CU(this,D)},readonly(){return Yj(this)},describe(D){let g=this.clone();return r_.add(g,{description:D}),g},meta(...D){if(D.length===0)return r_.get(this);let g=this.clone();return r_.add(g,D[0]),g},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(D){return D(this)}}),Object.defineProperty(_,"description",{get(){return r_.get(_)?.description},configurable:!0}),_}),fU=Y("_ZodString",(_,$)=>{S4.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,I)=>aL(_,g,U,I);let D=_._zod.bag;_.format=D.format??null,_.minLength=D.minimum??null,_.maxLength=D.maximum??null,vU(_,"_ZodString",{regex(...g){return this.check(W4(...g))},includes(...g){return this.check(R4(...g))},startsWith(...g){return this.check(Y4(...g))},endsWith(...g){return this.check(Q4(...g))},min(...g){return this.check(y$(...g))},max(...g){return this.check(C6(...g))},length(...g){return this.check(v6(...g))},nonempty(...g){return this.check(y$(1,...g))},lowercase(g){return this.check(X4(g))},uppercase(g){return this.check(G4(g))},trim(){return this.check(q4())},normalize(...g){return this.check(B4(...g))},toLowerCase(){return this.check(V4())},toUpperCase(){return this.check(F4())},slugify(){return this.check(K4())}})}),H4=Y("ZodString",(_,$)=>{S4.init(_,$),fU.init(_,$),_.email=(D)=>_.check(aI(wU,D)),_.url=(D)=>_.check(WU(m0,D)),_.jwt=(D)=>_.check(X1(eU,D)),_.emoji=(D)=>_.check(U1(rU,D)),_.guid=(D)=>_.check(SU(c0,D)),_.uuid=(D)=>_.check(sI(q$,D)),_.uuidv4=(D)=>_.check(_1(q$,D)),_.uuidv6=(D)=>_.check($1(q$,D)),_.uuidv7=(D)=>_.check(D1(q$,D)),_.nanoid=(D)=>_.check(g1(uU,D)),_.guid=(D)=>_.check(SU(c0,D)),_.cuid=(D)=>_.check(I1(xU,D)),_.cuid2=(D)=>_.check(j1(yU,D)),_.ulid=(D)=>_.check(N1(hU,D)),_.base64=(D)=>_.check(z1(tU,D)),_.base64url=(D)=>_.check(S1(oU,D)),_.xid=(D)=>_.check(E1(cU,D)),_.ksuid=(D)=>_.check(O1(nU,D)),_.ipv4=(D)=>_.check(A1(dU,D)),_.ipv6=(D)=>_.check(L1(mU,D)),_.cidrv4=(D)=>_.check(J1(iU,D)),_.cidrv6=(D)=>_.check(P1(lU,D)),_.e164=(D)=>_.check(W1(pU,D)),_.datetime=(D)=>_.check(wJ(D)),_.date=(D)=>_.check(rJ(D)),_.time=(D)=>_.check(uJ(D)),_.duration=(D)=>_.check(xJ(D))});z_=Y("ZodStringFormat",(_,$)=>{G_.init(_,$),fU.init(_,$)}),wU=Y("ZodEmail",(_,$)=>{IO.init(_,$),z_.init(_,$)});c0=Y("ZodGUID",(_,$)=>{UO.init(_,$),z_.init(_,$)});q$=Y("ZodUUID",(_,$)=>{gO.init(_,$),z_.init(_,$)});m0=Y("ZodURL",(_,$)=>{jO.init(_,$),z_.init(_,$)});rU=Y("ZodEmoji",(_,$)=>{NO.init(_,$),z_.init(_,$)});uU=Y("ZodNanoID",(_,$)=>{EO.init(_,$),z_.init(_,$)});xU=Y("ZodCUID",(_,$)=>{OO.init(_,$),z_.init(_,$)});yU=Y("ZodCUID2",(_,$)=>{AO.init(_,$),z_.init(_,$)});hU=Y("ZodULID",(_,$)=>{LO.init(_,$),z_.init(_,$)});cU=Y("ZodXID",(_,$)=>{JO.init(_,$),z_.init(_,$)});nU=Y("ZodKSUID",(_,$)=>{PO.init(_,$),z_.init(_,$)});dU=Y("ZodIPv4",(_,$)=>{GO.init(_,$),z_.init(_,$)});w1=Y("ZodMAC",(_,$)=>{YO.init(_,$),z_.init(_,$)});mU=Y("ZodIPv6",(_,$)=>{RO.init(_,$),z_.init(_,$)});iU=Y("ZodCIDRv4",(_,$)=>{QO.init(_,$),z_.init(_,$)});lU=Y("ZodCIDRv6",(_,$)=>{TO.init(_,$),z_.init(_,$)});tU=Y("ZodBase64",(_,$)=>{qO.init(_,$),z_.init(_,$)});oU=Y("ZodBase64URL",(_,$)=>{VO.init(_,$),z_.init(_,$)});pU=Y("ZodE164",(_,$)=>{FO.init(_,$),z_.init(_,$)});eU=Y("ZodJWT",(_,$)=>{KO.init(_,$),z_.init(_,$)});k4=Y("ZodCustomStringFormat",(_,$)=>{MO.init(_,$),z_.init(_,$)});C4=Y("ZodNumber",(_,$)=>{mI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,I)=>sL(_,g,U,I),vU(_,"ZodNumber",{gt(g,U){return this.check(T$(g,U))},gte(g,U){return this.check(h_(g,U))},min(g,U){return this.check(h_(g,U))},lt(g,U){return this.check(Q$(g,U))},lte(g,U){return this.check(D$(g,U))},max(g,U){return this.check(D$(g,U))},int(g){return this.check(kU(g))},safe(g){return this.check(kU(g))},positive(g){return this.check(T$(0,g))},nonnegative(g){return this.check(h_(0,g))},negative(g){return this.check(Q$(0,g))},nonpositive(g){return this.check(D$(0,g))},multipleOf(g,U){return this.check(g6(g,U))},step(g,U){return this.check(g6(g,U))},finite(){return this}});let D=_._zod.bag;_.minValue=Math.max(D.minimum??Number.NEGATIVE_INFINITY,D.exclusiveMinimum??Number.NEGATIVE_INFINITY)??null,_.maxValue=Math.min(D.maximum??Number.POSITIVE_INFINITY,D.exclusiveMaximum??Number.POSITIVE_INFINITY)??null,_.isInt=(D.format??"").includes("int")||Number.isSafeInteger(D.multipleOf??0.5),_.isFinite=!0,_.format=D.format??null});x6=Y("ZodNumberFormat",(_,$)=>{ZO.init(_,$),C4.init(_,$)});v4=Y("ZodBoolean",(_,$)=>{jU.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>_J(_,D,g,U)});f4=Y("ZodBigInt",(_,$)=>{iI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,I)=>$J(_,g,U,I),_.gte=(g,U)=>_.check(h_(g,U)),_.min=(g,U)=>_.check(h_(g,U)),_.gt=(g,U)=>_.check(T$(g,U)),_.gte=(g,U)=>_.check(h_(g,U)),_.min=(g,U)=>_.check(h_(g,U)),_.lt=(g,U)=>_.check(Q$(g,U)),_.lte=(g,U)=>_.check(D$(g,U)),_.max=(g,U)=>_.check(D$(g,U)),_.positive=(g)=>_.check(T$(BigInt(0),g)),_.negative=(g)=>_.check(Q$(BigInt(0),g)),_.nonpositive=(g)=>_.check(D$(BigInt(0),g)),_.nonnegative=(g)=>_.check(h_(BigInt(0),g)),_.multipleOf=(g,U)=>_.check(g6(g,U));let D=_._zod.bag;_.minValue=D.minimum??null,_.maxValue=D.maximum??null,_.format=D.format??null});aU=Y("ZodBigIntFormat",(_,$)=>{bO.init(_,$),f4.init(_,$)});x1=Y("ZodSymbol",(_,$)=>{HO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>DJ(_,D,g,U)});y1=Y("ZodUndefined",(_,$)=>{kO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>gJ(_,D,g,U)});h1=Y("ZodNull",(_,$)=>{CO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>UJ(_,D,g,U)});n1=Y("ZodAny",(_,$)=>{vO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>NJ(_,D,g,U)});d1=Y("ZodUnknown",(_,$)=>{fO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>EJ(_,D,g,U)});m1=Y("ZodNever",(_,$)=>{wO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>jJ(_,D,g,U)});i1=Y("ZodVoid",(_,$)=>{rO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>IJ(_,D,g,U)});i0=Y("ZodDate",(_,$)=>{uO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,I)=>OJ(_,g,U,I),_.min=(g,U)=>_.check(h_(g,U)),_.max=(g,U)=>_.check(D$(g,U));let D=_._zod.bag;_.minDate=D.minimum?new Date(D.minimum):null,_.maxDate=D.maximum?new Date(D.maximum):null});l1=Y("ZodArray",(_,$)=>{xO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>QJ(_,D,g,U),_.element=$.element,vU(_,"ZodArray",{min(D,g){return this.check(y$(D,g))},nonempty(D){return this.check(y$(1,D))},max(D,g){return this.check(C6(D,g))},length(D,g){return this.check(v6(D,g))},unwrap(){return this.element}})});t0=Y("ZodObject",(_,$)=>{yO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>TJ(_,D,g,U),H.defineLazy(_,"shape",()=>{return $.shape}),vU(_,"ZodObject",{keyof(){return $g(Object.keys(this._zod.def.shape))},catchall(D){return this.clone({...this._zod.def,catchall:D})},passthrough(){return this.clone({...this._zod.def,catchall:u6()})},loose(){return this.clone({...this._zod.def,catchall:u6()})},strict(){return this.clone({...this._zod.def,catchall:sU()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(D){return H.extend(this,D)},safeExtend(D){return H.safeExtend(this,D)},merge(D){return H.merge(this,D)},pick(D){return H.pick(this,D)},omit(D){return H.omit(this,D)},partial(...D){return H.partial(Ug,this,D[0])},required(...D){return H.required(gg,this,D[0])}})});o0=Y("ZodUnion",(_,$)=>{NU.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>Y1(_,D,g,U),_.options=$.options});t1=Y("ZodXor",(_,$)=>{o0.init(_,$),hO.init(_,$),_._zod.processJSONSchema=(D,g,U)=>Y1(_,D,g,U),_.options=$.options});o1=Y("ZodDiscriminatedUnion",(_,$)=>{o0.init(_,$),cO.init(_,$)});p1=Y("ZodIntersection",(_,$)=>{nO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>BJ(_,D,g,U)});a1=Y("ZodTuple",(_,$)=>{lI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>qJ(_,D,g,U),_.rest=(D)=>_.clone({..._._zod.def,rest:D})});Z4=Y("ZodRecord",(_,$)=>{dO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>VJ(_,D,g,U),_.keyType=$.keyType,_.valueType=$.valueType});$j=Y("ZodMap",(_,$)=>{mO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>RJ(_,D,g,U),_.keyType=$.keyType,_.valueType=$.valueType,_.min=(...D)=>_.check(B$(...D)),_.nonempty=(D)=>_.check(B$(1,D)),_.max=(...D)=>_.check(I6(...D)),_.size=(...D)=>_.check(k6(...D))});Dj=Y("ZodSet",(_,$)=>{iO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>YJ(_,D,g,U),_.min=(...D)=>_.check(B$(...D)),_.nonempty=(D)=>_.check(B$(1,D)),_.max=(...D)=>_.check(I6(...D)),_.size=(...D)=>_.check(k6(...D))});b4=Y("ZodEnum",(_,$)=>{lO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(g,U,I)=>AJ(_,g,U,I),_.enum=$.entries,_.options=Object.values($.entries);let D=new Set(Object.keys($.entries));_.extract=(g,U)=>{let I={};for(let j of g)if(D.has(j))I[j]=$.entries[j];else throw Error(`Key ${j} not found in enum`);return new b4({...$,checks:[],...H.normalizeParams(U),entries:I})},_.exclude=(g,U)=>{let I={...$.entries};for(let j of g)if(D.has(j))delete I[j];else throw Error(`Key ${j} not found in enum`);return new b4({...$,checks:[],...H.normalizeParams(U),entries:I})}});Uj=Y("ZodLiteral",(_,$)=>{tO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>LJ(_,D,g,U),_.values=new Set($.values),Object.defineProperty(_,"value",{get(){if($.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return $.values[0]}})});gj=Y("ZodFile",(_,$)=>{oO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>zJ(_,D,g,U),_.min=(D,g)=>_.check(B$(D,g)),_.max=(D,g)=>_.check(I6(D,g)),_.mime=(D,g)=>_.check(T4(Array.isArray(D)?D:[D],g))});Ij=Y("ZodTransform",(_,$)=>{pO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>GJ(_,D,g,U),_._zod.parse=(D,g)=>{if(g.direction==="backward")throw new L4(_.constructor.name);D.addIssue=(I)=>{if(typeof I==="string")D.issues.push(H.issue(I,D.value,$));else{let j=I;if(j.fatal)j.continue=!1;j.code??(j.code="custom"),j.input??(j.input=D.value),j.inst??(j.inst=_),D.issues.push(H.issue(j))}};let U=$.transform(D.value,D);if(U instanceof Promise)return U.then((I)=>{return D.value=I,D.fallback=!0,D});return D.value=U,D.fallback=!0,D}});Ug=Y("ZodOptional",(_,$)=>{tI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>Q1(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});jj=Y("ZodExactOptional",(_,$)=>{eO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>Q1(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});Ej=Y("ZodNullable",(_,$)=>{aO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>FJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});Oj=Y("ZodDefault",(_,$)=>{sO.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>MJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType,_.removeDefault=_.unwrap});Lj=Y("ZodPrefault",(_,$)=>{_A.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>ZJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});gg=Y("ZodNonOptional",(_,$)=>{$A.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>KJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});zj=Y("ZodSuccess",(_,$)=>{DA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>SJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});Sj=Y("ZodCatch",(_,$)=>{UA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>bJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType,_.removeCatch=_.unwrap});Xj=Y("ZodNaN",(_,$)=>{gA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>JJ(_,D,g,U)});p0=Y("ZodPipe",(_,$)=>{oI.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>HJ(_,D,g,U),_.in=$.in,_.out=$.out});e0=Y("ZodCodec",(_,$)=>{p0.init(_,$),EU.init(_,$)});Gj=Y("ZodPreprocess",(_,$)=>{p0.init(_,$),IA.init(_,$)}),Rj=Y("ZodReadonly",(_,$)=>{jA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>kJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});Qj=Y("ZodTemplateLiteral",(_,$)=>{NA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>PJ(_,D,g,U)});Tj=Y("ZodLazy",(_,$)=>{AA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>vJ(_,D,g,U),_.unwrap=()=>_._zod.def.getter()});qj=Y("ZodPromise",(_,$)=>{OA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>CJ(_,D,g,U),_.unwrap=()=>_._zod.def.innerType});Vj=Y("ZodFunction",(_,$)=>{EA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>XJ(_,D,g,U)});a0=Y("ZodCustom",(_,$)=>{LA.init(_,$),o.init(_,$),_._zod.processJSONSchema=(D,g,U)=>WJ(_,D,g,U)});e3=tL,a3=oL});function Y9(_){Z_({customError:_})}function Q9(){return Z_().customError}var R9,Mj;var T9=w(()=>{N$();R9={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};(function(_){})(Mj||(Mj={}))});function hK(_,$){let D=_.$schema;if(D==="https://json-schema.org/draft/2020-12/schema")return"draft-2020-12";if(D==="http://json-schema.org/draft-07/schema#")return"draft-7";if(D==="http://json-schema.org/draft-04/schema#")return"draft-4";return $??"draft-2020-12"}function cK(_,$){if(!_.startsWith("#"))throw Error("External $ref is not supported, only local refs (#/...) are allowed");let D=_.slice(1).split("/").filter(Boolean);if(D.length===0)return $.rootSchema;let g=$.version==="draft-2020-12"?"$defs":"definitions";if(D[0]===g){let U=D[1];if(!U||!$.defs[U])throw Error(`Reference not found: ${_}`);return $.defs[U]}throw Error(`Reference not found: ${_}`)}function B9(_,$){if(_.not!==void 0){if(typeof _.not==="object"&&Object.keys(_.not).length===0)return r.never();throw Error("not is not supported in Zod (except { not: {} } for never)")}if(_.unevaluatedItems!==void 0)throw Error("unevaluatedItems is not supported");if(_.unevaluatedProperties!==void 0)throw Error("unevaluatedProperties is not supported");if(_.if!==void 0||_.then!==void 0||_.else!==void 0)throw Error("Conditional schemas (if/then/else) are not supported");if(_.dependentSchemas!==void 0||_.dependentRequired!==void 0)throw Error("dependentSchemas and dependentRequired are not supported");if(_.$ref){let U=_.$ref;if($.refs.has(U))return $.refs.get(U);if($.processing.has(U))return r.lazy(()=>{if(!$.refs.has(U))throw Error(`Circular reference not resolved: ${U}`);return $.refs.get(U)});$.processing.add(U);let I=cK(U,$),j=c_(I,$);return $.refs.set(U,j),$.processing.delete(U),j}if(_.enum!==void 0){let U=_.enum;if($.version==="openapi-3.0"&&_.nullable===!0&&U.length===1&&U[0]===null)return r.null();if(U.length===0)return r.never();if(U.length===1)return r.literal(U[0]);if(U.every((j)=>typeof j==="string"))return r.enum(U);let I=U.map((j)=>r.literal(j));if(I.length<2)return I[0];return r.union([I[0],I[1],...I.slice(2)])}if(_.const!==void 0)return r.literal(_.const);let D=_.type;if(Array.isArray(D)){let U=D.map((I)=>{let j={..._,type:I};return B9(j,$)});if(U.length===0)return r.never();if(U.length===1)return U[0];return r.union(U)}if(!D)return r.any();let g;switch(D){case"string":{let U=r.string();if(_.format){let I=_.format;if(I==="email")U=U.check(r.email());else if(I==="uri"||I==="uri-reference")U=U.check(r.url());else if(I==="uuid"||I==="guid")U=U.check(r.uuid());else if(I==="date-time")U=U.check(r.iso.datetime());else if(I==="date")U=U.check(r.iso.date());else if(I==="time")U=U.check(r.iso.time());else if(I==="duration")U=U.check(r.iso.duration());else if(I==="ipv4")U=U.check(r.ipv4());else if(I==="ipv6")U=U.check(r.ipv6());else if(I==="mac")U=U.check(r.mac());else if(I==="cidr")U=U.check(r.cidrv4());else if(I==="cidr-v6")U=U.check(r.cidrv6());else if(I==="base64")U=U.check(r.base64());else if(I==="base64url")U=U.check(r.base64url());else if(I==="e164")U=U.check(r.e164());else if(I==="jwt")U=U.check(r.jwt());else if(I==="emoji")U=U.check(r.emoji());else if(I==="nanoid")U=U.check(r.nanoid());else if(I==="cuid")U=U.check(r.cuid());else if(I==="cuid2")U=U.check(r.cuid2());else if(I==="ulid")U=U.check(r.ulid());else if(I==="xid")U=U.check(r.xid());else if(I==="ksuid")U=U.check(r.ksuid())}if(typeof _.minLength==="number")U=U.min(_.minLength);if(typeof _.maxLength==="number")U=U.max(_.maxLength);if(_.pattern)U=U.regex(new RegExp(_.pattern));g=U;break}case"number":case"integer":{let U=D==="integer"?r.number().int():r.number();if(typeof _.minimum==="number")U=U.min(_.minimum);if(typeof _.maximum==="number")U=U.max(_.maximum);if(typeof _.exclusiveMinimum==="number")U=U.gt(_.exclusiveMinimum);else if(_.exclusiveMinimum===!0&&typeof _.minimum==="number")U=U.gt(_.minimum);if(typeof _.exclusiveMaximum==="number")U=U.lt(_.exclusiveMaximum);else if(_.exclusiveMaximum===!0&&typeof _.maximum==="number")U=U.lt(_.maximum);if(typeof _.multipleOf==="number")U=U.multipleOf(_.multipleOf);g=U;break}case"boolean":{g=r.boolean();break}case"null":{g=r.null();break}case"object":{let U={},I=_.properties||{},j=new Set(_.required||[]);for(let[O,A]of Object.entries(I)){let L=c_(A,$);U[O]=j.has(O)?L:L.optional()}if(_.propertyNames){let O=c_(_.propertyNames,$),A=_.additionalProperties&&typeof _.additionalProperties==="object"?c_(_.additionalProperties,$):r.any();if(Object.keys(U).length===0){g=r.record(O,A);break}let L=r.object(U).passthrough(),z=r.looseRecord(O,A);g=r.intersection(L,z);break}if(_.patternProperties){let O=_.patternProperties,A=Object.keys(O),L=[];for(let W of A){let J=c_(O[W],$),P=r.string().regex(new RegExp(W));L.push(r.looseRecord(P,J))}let z=[];if(Object.keys(U).length>0)z.push(r.object(U).passthrough());if(z.push(...L),z.length===0)g=r.object({}).passthrough();else if(z.length===1)g=z[0];else{let W=r.intersection(z[0],z[1]);for(let J=2;Jc_(O,$)),N=I&&typeof I==="object"&&!Array.isArray(I)?c_(I,$):void 0;if(N)g=r.tuple(j).rest(N);else g=r.tuple(j);if(typeof _.minItems==="number")g=g.check(r.minLength(_.minItems));if(typeof _.maxItems==="number")g=g.check(r.maxLength(_.maxItems))}else if(Array.isArray(I)){let j=I.map((O)=>c_(O,$)),N=_.additionalItems&&typeof _.additionalItems==="object"?c_(_.additionalItems,$):void 0;if(N)g=r.tuple(j).rest(N);else g=r.tuple(j);if(typeof _.minItems==="number")g=g.check(r.minLength(_.minItems));if(typeof _.maxItems==="number")g=g.check(r.maxLength(_.maxItems))}else if(I!==void 0){let j=c_(I,$),N=r.array(j);if(typeof _.minItems==="number")N=N.min(_.minItems);if(typeof _.maxItems==="number")N=N.max(_.maxItems);g=N}else g=r.array(r.any());break}default:throw Error(`Unsupported type: ${D}`)}return g}function c_(_,$){if(typeof _==="boolean")return _?r.any():r.never();let D=B9(_,$),g=_.type||_.enum!==void 0||_.const!==void 0;if(_.anyOf&&Array.isArray(_.anyOf)){let N=_.anyOf.map((A)=>c_(A,$)),O=r.union(N);D=g?r.intersection(D,O):O}if(_.oneOf&&Array.isArray(_.oneOf)){let N=_.oneOf.map((A)=>c_(A,$)),O=r.xor(N);D=g?r.intersection(D,O):O}if(_.allOf&&Array.isArray(_.allOf))if(_.allOf.length===0)D=g?D:r.any();else{let N=g?D:c_(_.allOf[0],$),O=g?0:1;for(let A=O;A<_.allOf.length;A++)N=r.intersection(N,c_(_.allOf[A],$));D=N}if(_.nullable===!0&&$.version==="openapi-3.0")D=r.nullable(D);if(_.readOnly===!0)D=r.readonly(D);if(_.default!==void 0)D=D.default(_.default);let U={},I=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let N of I)if(N in _)U[N]=_[N];let j=["contentEncoding","contentMediaType","contentSchema"];for(let N of j)if(N in _)U[N]=_[N];for(let N of Object.keys(_))if(!yK.has(N))U[N]=_[N];if(Object.keys(U).length>0)$.registry.add(D,U);if(_.description)D=D.describe(_.description);return D}function UP(_,$){if(typeof _==="boolean")return _?r.any():r.never();let D;try{D=JSON.parse(JSON.stringify(_))}catch{throw Error("fromJSONSchema input is not valid JSON (possibly cyclic); use $defs/$ref for recursive schemas")}let g=hK(D,$?.defaultTarget),U=D.$defs||D.definitions||{},I={version:g,defs:U,refs:new Map,processing:new Set,rootSchema:D,registry:$?.registry??r_};return c_(D,I)}var r,yK;var q9=w(()=>{zU();B1();ZU();HU();r={...bU,...T1,iso:M4},yK=new Set(["$schema","$ref","$defs","definitions","$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor","type","enum","const","anyOf","oneOf","allOf","not","properties","required","additionalProperties","patternProperties","propertyNames","minProperties","maxProperties","items","prefixItems","additionalItems","minItems","maxItems","uniqueItems","contains","minContains","maxContains","minLength","maxLength","pattern","format","minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","description","default","contentEncoding","contentMediaType","contentSchema","unevaluatedItems","unevaluatedProperties","if","then","else","dependentSchemas","dependentRequired","nullable","readOnly"])});var Zj={};v$(Zj,{string:()=>nK,number:()=>dK,date:()=>lK,boolean:()=>mK,bigint:()=>iK});function nK(_){return zL(H4,_)}function dK(_){return QL(C4,_)}function mK(_){return ML(v4,_)}function iK(_){return bL(f4,_)}function lK(_){return hL(i0,_)}var V9=w(()=>{N$();HU()});var bj={};v$(bj,{xor:()=>k3,xid:()=>$3,void:()=>F3,uuidv7:()=>lJ,uuidv6:()=>iJ,uuidv4:()=>mJ,uuid:()=>dJ,util:()=>H,url:()=>tJ,uppercase:()=>G4,unknown:()=>u6,union:()=>_g,undefined:()=>q3,ulid:()=>_3,uint64:()=>T3,uint32:()=>R3,tuple:()=>s1,trim:()=>q4,treeifyError:()=>BI,transform:()=>Dg,toUpperCase:()=>F4,toLowerCase:()=>V4,toJSONSchema:()=>BU,templateLiteral:()=>i3,symbol:()=>B3,superRefine:()=>Kj,success:()=>c3,stringbool:()=>_P,stringFormat:()=>J3,string:()=>h0,strictObject:()=>b3,startsWith:()=>Y4,slugify:()=>K4,size:()=>k6,setErrorMap:()=>Y9,set:()=>r3,safeParseAsync:()=>K1,safeParse:()=>F1,safeEncodeAsync:()=>v1,safeEncode:()=>k1,safeDecodeAsync:()=>f1,safeDecode:()=>C1,registry:()=>PU,regexes:()=>$$,regex:()=>W4,refine:()=>Fj,record:()=>_j,readonly:()=>Yj,property:()=>QU,promise:()=>l3,prettifyError:()=>qI,preprocess:()=>DP,prefault:()=>Jj,positive:()=>XU,pipe:()=>CU,partialRecord:()=>v3,parseAsync:()=>V1,parse:()=>q1,overwrite:()=>z$,optional:()=>n0,object:()=>Z3,number:()=>r1,nullish:()=>h3,nullable:()=>d0,null:()=>c1,normalize:()=>B4,nonpositive:()=>RU,nonoptional:()=>Pj,nonnegative:()=>YU,never:()=>sU,negative:()=>GU,nativeEnum:()=>u3,nanoid:()=>eJ,nan:()=>n3,multipleOf:()=>g6,minSize:()=>B$,minLength:()=>y$,mime:()=>T4,meta:()=>a3,maxSize:()=>I6,maxLength:()=>C6,map:()=>w3,mac:()=>g3,lte:()=>D$,lt:()=>Q$,lowercase:()=>X4,looseRecord:()=>f3,looseObject:()=>H3,locales:()=>u0,literal:()=>x3,length:()=>v6,lazy:()=>Bj,ksuid:()=>D3,keyof:()=>M3,jwt:()=>L3,json:()=>$P,iso:()=>M4,ipv6:()=>I3,ipv4:()=>U3,invertCodec:()=>m3,intersection:()=>e1,int64:()=>Q3,int32:()=>G3,int:()=>kU,instanceof:()=>s3,includes:()=>R4,httpUrl:()=>oJ,hostname:()=>P3,hex:()=>z3,hash:()=>S3,guid:()=>nJ,gte:()=>h_,gt:()=>T$,globalRegistry:()=>r_,getErrorMap:()=>Q9,function:()=>t3,fromJSONSchema:()=>UP,formatError:()=>H0,float64:()=>X3,float32:()=>W3,flattenError:()=>b0,file:()=>y3,exactOptional:()=>Nj,enum:()=>$g,endsWith:()=>Q4,encodeAsync:()=>b1,encode:()=>M1,emoji:()=>pJ,email:()=>cJ,e164:()=>A3,discriminatedUnion:()=>C3,describe:()=>e3,decodeAsync:()=>H1,decode:()=>Z1,date:()=>K3,custom:()=>p3,cuid2:()=>sJ,cuid:()=>aJ,core:()=>h$,config:()=>Z_,coerce:()=>Zj,codec:()=>d3,clone:()=>y_,cidrv6:()=>N3,cidrv4:()=>j3,check:()=>o3,catch:()=>Wj,boolean:()=>u1,bigint:()=>Y3,base64url:()=>O3,base64:()=>E3,array:()=>l0,any:()=>V3,_function:()=>t3,_default:()=>Aj,_ZodString:()=>fU,ZodXor:()=>t1,ZodXID:()=>cU,ZodVoid:()=>i1,ZodUnknown:()=>d1,ZodUnion:()=>o0,ZodUndefined:()=>y1,ZodUUID:()=>q$,ZodURL:()=>m0,ZodULID:()=>hU,ZodType:()=>o,ZodTuple:()=>a1,ZodTransform:()=>Ij,ZodTemplateLiteral:()=>Qj,ZodSymbol:()=>x1,ZodSuccess:()=>zj,ZodStringFormat:()=>z_,ZodString:()=>H4,ZodSet:()=>Dj,ZodRecord:()=>Z4,ZodRealError:()=>o_,ZodReadonly:()=>Rj,ZodPromise:()=>qj,ZodPreprocess:()=>Gj,ZodPrefault:()=>Lj,ZodPipe:()=>p0,ZodOptional:()=>Ug,ZodObject:()=>t0,ZodNumberFormat:()=>x6,ZodNumber:()=>C4,ZodNullable:()=>Ej,ZodNull:()=>h1,ZodNonOptional:()=>gg,ZodNever:()=>m1,ZodNanoID:()=>uU,ZodNaN:()=>Xj,ZodMap:()=>$j,ZodMAC:()=>w1,ZodLiteral:()=>Uj,ZodLazy:()=>Tj,ZodKSUID:()=>nU,ZodJWT:()=>eU,ZodIssueCode:()=>R9,ZodIntersection:()=>p1,ZodISOTime:()=>KU,ZodISODuration:()=>MU,ZodISODateTime:()=>VU,ZodISODate:()=>FU,ZodIPv6:()=>mU,ZodIPv4:()=>dU,ZodGUID:()=>c0,ZodFunction:()=>Vj,ZodFirstPartyTypeKind:()=>Mj,ZodFile:()=>gj,ZodExactOptional:()=>jj,ZodError:()=>X9,ZodEnum:()=>b4,ZodEmoji:()=>rU,ZodEmail:()=>wU,ZodE164:()=>pU,ZodDiscriminatedUnion:()=>o1,ZodDefault:()=>Oj,ZodDate:()=>i0,ZodCustomStringFormat:()=>k4,ZodCustom:()=>a0,ZodCodec:()=>e0,ZodCatch:()=>Sj,ZodCUID2:()=>yU,ZodCUID:()=>xU,ZodCIDRv6:()=>lU,ZodCIDRv4:()=>iU,ZodBoolean:()=>v4,ZodBigIntFormat:()=>aU,ZodBigInt:()=>f4,ZodBase64URL:()=>oU,ZodBase64:()=>tU,ZodArray:()=>l1,ZodAny:()=>n1,TimePrecision:()=>G1,NEVER:()=>RI,$output:()=>pI,$input:()=>eI,$brand:()=>YI});var gP=w(()=>{N$();N$();TA();N$();qU();q9();LL();ZU();ZU();V9();HU();B1();yJ();hJ();T9();Z_(OU())});var F9={};v$(F9,{z:()=>bj,xor:()=>k3,xid:()=>$3,void:()=>F3,uuidv7:()=>lJ,uuidv6:()=>iJ,uuidv4:()=>mJ,uuid:()=>dJ,util:()=>H,url:()=>tJ,uppercase:()=>G4,unknown:()=>u6,union:()=>_g,undefined:()=>q3,ulid:()=>_3,uint64:()=>T3,uint32:()=>R3,tuple:()=>s1,trim:()=>q4,treeifyError:()=>BI,transform:()=>Dg,toUpperCase:()=>F4,toLowerCase:()=>V4,toJSONSchema:()=>BU,templateLiteral:()=>i3,symbol:()=>B3,superRefine:()=>Kj,success:()=>c3,stringbool:()=>_P,stringFormat:()=>J3,string:()=>h0,strictObject:()=>b3,startsWith:()=>Y4,slugify:()=>K4,size:()=>k6,setErrorMap:()=>Y9,set:()=>r3,safeParseAsync:()=>K1,safeParse:()=>F1,safeEncodeAsync:()=>v1,safeEncode:()=>k1,safeDecodeAsync:()=>f1,safeDecode:()=>C1,registry:()=>PU,regexes:()=>$$,regex:()=>W4,refine:()=>Fj,record:()=>_j,readonly:()=>Yj,property:()=>QU,promise:()=>l3,prettifyError:()=>qI,preprocess:()=>DP,prefault:()=>Jj,positive:()=>XU,pipe:()=>CU,partialRecord:()=>v3,parseAsync:()=>V1,parse:()=>q1,overwrite:()=>z$,optional:()=>n0,object:()=>Z3,number:()=>r1,nullish:()=>h3,nullable:()=>d0,null:()=>c1,normalize:()=>B4,nonpositive:()=>RU,nonoptional:()=>Pj,nonnegative:()=>YU,never:()=>sU,negative:()=>GU,nativeEnum:()=>u3,nanoid:()=>eJ,nan:()=>n3,multipleOf:()=>g6,minSize:()=>B$,minLength:()=>y$,mime:()=>T4,meta:()=>a3,maxSize:()=>I6,maxLength:()=>C6,map:()=>w3,mac:()=>g3,lte:()=>D$,lt:()=>Q$,lowercase:()=>X4,looseRecord:()=>f3,looseObject:()=>H3,locales:()=>u0,literal:()=>x3,length:()=>v6,lazy:()=>Bj,ksuid:()=>D3,keyof:()=>M3,jwt:()=>L3,json:()=>$P,iso:()=>M4,ipv6:()=>I3,ipv4:()=>U3,invertCodec:()=>m3,intersection:()=>e1,int64:()=>Q3,int32:()=>G3,int:()=>kU,instanceof:()=>s3,includes:()=>R4,httpUrl:()=>oJ,hostname:()=>P3,hex:()=>z3,hash:()=>S3,guid:()=>nJ,gte:()=>h_,gt:()=>T$,globalRegistry:()=>r_,getErrorMap:()=>Q9,function:()=>t3,fromJSONSchema:()=>UP,formatError:()=>H0,float64:()=>X3,float32:()=>W3,flattenError:()=>b0,file:()=>y3,exactOptional:()=>Nj,enum:()=>$g,endsWith:()=>Q4,encodeAsync:()=>b1,encode:()=>M1,emoji:()=>pJ,email:()=>cJ,e164:()=>A3,discriminatedUnion:()=>C3,describe:()=>e3,default:()=>tK,decodeAsync:()=>H1,decode:()=>Z1,date:()=>K3,custom:()=>p3,cuid2:()=>sJ,cuid:()=>aJ,core:()=>h$,config:()=>Z_,coerce:()=>Zj,codec:()=>d3,clone:()=>y_,cidrv6:()=>N3,cidrv4:()=>j3,check:()=>o3,catch:()=>Wj,boolean:()=>u1,bigint:()=>Y3,base64url:()=>O3,base64:()=>E3,array:()=>l0,any:()=>V3,_function:()=>t3,_default:()=>Aj,_ZodString:()=>fU,ZodXor:()=>t1,ZodXID:()=>cU,ZodVoid:()=>i1,ZodUnknown:()=>d1,ZodUnion:()=>o0,ZodUndefined:()=>y1,ZodUUID:()=>q$,ZodURL:()=>m0,ZodULID:()=>hU,ZodType:()=>o,ZodTuple:()=>a1,ZodTransform:()=>Ij,ZodTemplateLiteral:()=>Qj,ZodSymbol:()=>x1,ZodSuccess:()=>zj,ZodStringFormat:()=>z_,ZodString:()=>H4,ZodSet:()=>Dj,ZodRecord:()=>Z4,ZodRealError:()=>o_,ZodReadonly:()=>Rj,ZodPromise:()=>qj,ZodPreprocess:()=>Gj,ZodPrefault:()=>Lj,ZodPipe:()=>p0,ZodOptional:()=>Ug,ZodObject:()=>t0,ZodNumberFormat:()=>x6,ZodNumber:()=>C4,ZodNullable:()=>Ej,ZodNull:()=>h1,ZodNonOptional:()=>gg,ZodNever:()=>m1,ZodNanoID:()=>uU,ZodNaN:()=>Xj,ZodMap:()=>$j,ZodMAC:()=>w1,ZodLiteral:()=>Uj,ZodLazy:()=>Tj,ZodKSUID:()=>nU,ZodJWT:()=>eU,ZodIssueCode:()=>R9,ZodIntersection:()=>p1,ZodISOTime:()=>KU,ZodISODuration:()=>MU,ZodISODateTime:()=>VU,ZodISODate:()=>FU,ZodIPv6:()=>mU,ZodIPv4:()=>dU,ZodGUID:()=>c0,ZodFunction:()=>Vj,ZodFirstPartyTypeKind:()=>Mj,ZodFile:()=>gj,ZodExactOptional:()=>jj,ZodError:()=>X9,ZodEnum:()=>b4,ZodEmoji:()=>rU,ZodEmail:()=>wU,ZodE164:()=>pU,ZodDiscriminatedUnion:()=>o1,ZodDefault:()=>Oj,ZodDate:()=>i0,ZodCustomStringFormat:()=>k4,ZodCustom:()=>a0,ZodCodec:()=>e0,ZodCatch:()=>Sj,ZodCUID2:()=>yU,ZodCUID:()=>xU,ZodCIDRv6:()=>lU,ZodCIDRv4:()=>iU,ZodBoolean:()=>v4,ZodBigIntFormat:()=>aU,ZodBigInt:()=>f4,ZodBase64URL:()=>oU,ZodBase64:()=>tU,ZodArray:()=>l1,ZodAny:()=>n1,TimePrecision:()=>G1,NEVER:()=>RI,$output:()=>pI,$input:()=>eI,$brand:()=>YI});var tK;var K9=w(()=>{gP();gP();tK=bj});var Vg=e6((yv)=>{class gz extends Error{constructor(_,$,D){super(D);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=$,this.exitCode=_,this.nestedError=void 0}}class zR extends gz{constructor(_){super(1,"commander.invalidArgument",_);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}yv.CommanderError=gz;yv.InvalidArgumentError=zR});var WN=e6((mv)=>{var{InvalidArgumentError:nv}=Vg();class SR{constructor(_,$){switch(this.description=$||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,_[0]){case"<":this.required=!0,this._name=_.slice(1,-1);break;case"[":this.required=!1,this._name=_.slice(1,-1);break;default:this.required=!0,this._name=_;break}if(this._name.length>3&&this._name.slice(-3)==="...")this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_concatValue(_,$){if($===this.defaultValue||!Array.isArray($))return[_];return $.concat(_)}default(_,$){return this.defaultValue=_,this.defaultValueDescription=$,this}argParser(_){return this.parseArg=_,this}choices(_){return this.argChoices=_.slice(),this.parseArg=($,D)=>{if(!this.argChoices.includes($))throw new nv(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue($,D);return $},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function dv(_){let $=_.name()+(_.variadic===!0?"...":"");return _.required?"<"+$+">":"["+$+"]"}mv.Argument=SR;mv.humanReadableArgName=dv});var Iz=e6((ov)=>{var{humanReadableArgName:tv}=WN();class WR{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(_){this.helpWidth=this.helpWidth??_.helpWidth??80}visibleCommands(_){let $=_.commands.filter((g)=>!g._hidden),D=_._getHelpCommand();if(D&&!D._hidden)$.push(D);if(this.sortSubcommands)$.sort((g,U)=>{return g.name().localeCompare(U.name())});return $}compareOptions(_,$){let D=(g)=>{return g.short?g.short.replace(/^-/,""):g.long.replace(/^--/,"")};return D(_).localeCompare(D($))}visibleOptions(_){let $=_.options.filter((g)=>!g.hidden),D=_._getHelpOption();if(D&&!D.hidden){let g=D.short&&_._findOption(D.short),U=D.long&&_._findOption(D.long);if(!g&&!U)$.push(D);else if(D.long&&!U)$.push(_.createOption(D.long,D.description));else if(D.short&&!g)$.push(_.createOption(D.short,D.description))}if(this.sortOptions)$.sort(this.compareOptions);return $}visibleGlobalOptions(_){if(!this.showGlobalOptions)return[];let $=[];for(let D=_.parent;D;D=D.parent){let g=D.options.filter((U)=>!U.hidden);$.push(...g)}if(this.sortOptions)$.sort(this.compareOptions);return $}visibleArguments(_){if(_._argsDescription)_.registeredArguments.forEach(($)=>{$.description=$.description||_._argsDescription[$.name()]||""});if(_.registeredArguments.find(($)=>$.description))return _.registeredArguments;return[]}subcommandTerm(_){let $=_.registeredArguments.map((D)=>tv(D)).join(" ");return _._name+(_._aliases[0]?"|"+_._aliases[0]:"")+(_.options.length?" [options]":"")+($?" "+$:"")}optionTerm(_){return _.flags}argumentTerm(_){return _.name()}longestSubcommandTermLength(_,$){return $.visibleCommands(_).reduce((D,g)=>{return Math.max(D,this.displayWidth($.styleSubcommandTerm($.subcommandTerm(g))))},0)}longestOptionTermLength(_,$){return $.visibleOptions(_).reduce((D,g)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(g))))},0)}longestGlobalOptionTermLength(_,$){return $.visibleGlobalOptions(_).reduce((D,g)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(g))))},0)}longestArgumentTermLength(_,$){return $.visibleArguments(_).reduce((D,g)=>{return Math.max(D,this.displayWidth($.styleArgumentTerm($.argumentTerm(g))))},0)}commandUsage(_){let $=_._name;if(_._aliases[0])$=$+"|"+_._aliases[0];let D="";for(let g=_.parent;g;g=g.parent)D=g.name()+" "+D;return D+$+" "+_.usage()}commandDescription(_){return _.description()}subcommandDescription(_){return _.summary()||_.description()}optionDescription(_){let $=[];if(_.argChoices)$.push(`choices: ${_.argChoices.map((D)=>JSON.stringify(D)).join(", ")}`);if(_.defaultValue!==void 0){if(_.required||_.optional||_.isBoolean()&&typeof _.defaultValue==="boolean")$.push(`default: ${_.defaultValueDescription||JSON.stringify(_.defaultValue)}`)}if(_.presetArg!==void 0&&_.optional)$.push(`preset: ${JSON.stringify(_.presetArg)}`);if(_.envVar!==void 0)$.push(`env: ${_.envVar}`);if($.length>0)return`${_.description} (${$.join(", ")})`;return _.description}argumentDescription(_){let $=[];if(_.argChoices)$.push(`choices: ${_.argChoices.map((D)=>JSON.stringify(D)).join(", ")}`);if(_.defaultValue!==void 0)$.push(`default: ${_.defaultValueDescription||JSON.stringify(_.defaultValue)}`);if($.length>0){let D=`(${$.join(", ")})`;if(_.description)return`${_.description} ${D}`;return D}return _.description}formatHelp(_,$){let D=$.padWidth(_,$),g=$.helpWidth??80;function U(L,z){return $.formatItem(L,D,z,$)}let I=[`${$.styleTitle("Usage:")} ${$.styleUsage($.commandUsage(_))}`,""],j=$.commandDescription(_);if(j.length>0)I=I.concat([$.boxWrap($.styleCommandDescription(j),g),""]);let N=$.visibleArguments(_).map((L)=>{return U($.styleArgumentTerm($.argumentTerm(L)),$.styleArgumentDescription($.argumentDescription(L)))});if(N.length>0)I=I.concat([$.styleTitle("Arguments:"),...N,""]);let O=$.visibleOptions(_).map((L)=>{return U($.styleOptionTerm($.optionTerm(L)),$.styleOptionDescription($.optionDescription(L)))});if(O.length>0)I=I.concat([$.styleTitle("Options:"),...O,""]);if($.showGlobalOptions){let L=$.visibleGlobalOptions(_).map((z)=>{return U($.styleOptionTerm($.optionTerm(z)),$.styleOptionDescription($.optionDescription(z)))});if(L.length>0)I=I.concat([$.styleTitle("Global Options:"),...L,""])}let A=$.visibleCommands(_).map((L)=>{return U($.styleSubcommandTerm($.subcommandTerm(L)),$.styleSubcommandDescription($.subcommandDescription(L)))});if(A.length>0)I=I.concat([$.styleTitle("Commands:"),...A,""]);return I.join(` +`)}displayWidth(_){return XR(_).length}styleTitle(_){return _}styleUsage(_){return _.split(" ").map(($)=>{if($==="[options]")return this.styleOptionText($);if($==="[command]")return this.styleSubcommandText($);if($[0]==="["||$[0]==="<")return this.styleArgumentText($);return this.styleCommandText($)}).join(" ")}styleCommandDescription(_){return this.styleDescriptionText(_)}styleOptionDescription(_){return this.styleDescriptionText(_)}styleSubcommandDescription(_){return this.styleDescriptionText(_)}styleArgumentDescription(_){return this.styleDescriptionText(_)}styleDescriptionText(_){return _}styleOptionTerm(_){return this.styleOptionText(_)}styleSubcommandTerm(_){return _.split(" ").map(($)=>{if($==="[options]")return this.styleOptionText($);if($[0]==="["||$[0]==="<")return this.styleArgumentText($);return this.styleSubcommandText($)}).join(" ")}styleArgumentTerm(_){return this.styleArgumentText(_)}styleOptionText(_){return _}styleArgumentText(_){return _}styleSubcommandText(_){return _}styleCommandText(_){return _}padWidth(_,$){return Math.max($.longestOptionTermLength(_,$),$.longestGlobalOptionTermLength(_,$),$.longestSubcommandTermLength(_,$),$.longestArgumentTermLength(_,$))}preformatted(_){return/\n[^\S\r\n]/.test(_)}formatItem(_,$,D,g){let I=" ".repeat(2);if(!D)return I+_;let j=_.padEnd($+_.length-g.displayWidth(_)),N=2,A=(this.helpWidth??80)-$-N-2,L;if(A{let j=I.match(U);if(j===null){D.push("");return}let N=[j.shift()],O=this.displayWidth(N[0]);j.forEach((A)=>{let L=this.displayWidth(A);if(O+L<=$){N.push(A),O+=L;return}D.push(N.join(""));let z=A.trimStart();N=[z],O=this.displayWidth(z)}),D.push(N.join(""))}),D.join(` -`)}}function U8(_){let $=/\x1b\[\d*(;\d*)*m/g;return _.replace($,"")}Cr.Help=D8;Cr.stripColor=U8});var a3=e6((ur)=>{var{InvalidArgumentError:wr}=BU();class j8{constructor(_,$){this.flags=_,this.description=$||"",this.required=_.includes("<"),this.optional=_.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(_),this.mandatory=!1;let g=fr(_);if(this.short=g.shortFlag,this.long=g.longFlag,this.negate=!1,this.long)this.negate=this.long.startsWith("--no-");this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(_,$){return this.defaultValue=_,this.defaultValueDescription=$,this}preset(_){return this.presetArg=_,this}conflicts(_){return this.conflictsWith=this.conflictsWith.concat(_),this}implies(_){let $=_;if(typeof _==="string")$={[_]:!0};return this.implied=Object.assign(this.implied||{},$),this}env(_){return this.envVar=_,this}argParser(_){return this.parseArg=_,this}makeOptionMandatory(_=!0){return this.mandatory=!!_,this}hideHelp(_=!0){return this.hidden=!!_,this}_concatValue(_,$){if($===this.defaultValue||!Array.isArray($))return[_];return $.concat(_)}choices(_){return this.argChoices=_.slice(),this.parseArg=($,g)=>{if(!this.argChoices.includes($))throw new wr(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue($,g);return $},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return I8(this.name().replace(/^no-/,""));return I8(this.name())}is(_){return this.short===_||this.long===_}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class N8{constructor(_){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,_.forEach(($)=>{if($.negate)this.negativeOptions.set($.attributeName(),$);else this.positiveOptions.set($.attributeName(),$)}),this.negativeOptions.forEach(($,g)=>{if(this.positiveOptions.has(g))this.dualOptions.add(g)})}valueFromOption(_,$){let g=$.attributeName();if(!this.dualOptions.has(g))return!0;let U=this.negativeOptions.get(g).presetArg,D=U!==void 0?U:!1;return $.negate===(D===_)}}function I8(_){return _.split("-").reduce(($,g)=>{return $+g[0].toUpperCase()+g.slice(1)})}function fr(_){let $,g,U=/^-[^-]$/,D=/^--[^-]/,I=_.split(/[ |,]+/).concat("guard");if(U.test(I[0]))$=I.shift();if(D.test(I[0]))g=I.shift();if(!$&&U.test(I[0]))$=I.shift();if(!$&&D.test(I[0]))$=g,g=I.shift();if(I[0].startsWith("-")){let j=I[0],N=`option creation failed due to '${j}' in option flags '${_}'`;if(/^-[^-][^-]/.test(j))throw Error(`${N} +${I}`)}boxWrap(_,$){if(${let j=I.match(g);if(j===null){U.push("");return}let N=[j.shift()],O=this.displayWidth(N[0]);j.forEach((A)=>{let L=this.displayWidth(A);if(O+L<=$){N.push(A),O+=L;return}U.push(N.join(""));let z=A.trimStart();N=[z],O=this.displayWidth(z)}),U.push(N.join(""))}),U.join(` +`)}}function XR(_){let $=/\x1b\[\d*(;\d*)*m/g;return _.replace($,"")}ov.Help=WR;ov.stripColor=XR});var jz=e6((_f)=>{var{InvalidArgumentError:av}=Vg();class RR{constructor(_,$){this.flags=_,this.description=$||"",this.required=_.includes("<"),this.optional=_.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(_),this.mandatory=!1;let D=sv(_);if(this.short=D.shortFlag,this.long=D.longFlag,this.negate=!1,this.long)this.negate=this.long.startsWith("--no-");this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(_,$){return this.defaultValue=_,this.defaultValueDescription=$,this}preset(_){return this.presetArg=_,this}conflicts(_){return this.conflictsWith=this.conflictsWith.concat(_),this}implies(_){let $=_;if(typeof _==="string")$={[_]:!0};return this.implied=Object.assign(this.implied||{},$),this}env(_){return this.envVar=_,this}argParser(_){return this.parseArg=_,this}makeOptionMandatory(_=!0){return this.mandatory=!!_,this}hideHelp(_=!0){return this.hidden=!!_,this}_concatValue(_,$){if($===this.defaultValue||!Array.isArray($))return[_];return $.concat(_)}choices(_){return this.argChoices=_.slice(),this.parseArg=($,D)=>{if(!this.argChoices.includes($))throw new av(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._concatValue($,D);return $},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return GR(this.name().replace(/^no-/,""));return GR(this.name())}is(_){return this.short===_||this.long===_}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class YR{constructor(_){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,_.forEach(($)=>{if($.negate)this.negativeOptions.set($.attributeName(),$);else this.positiveOptions.set($.attributeName(),$)}),this.negativeOptions.forEach(($,D)=>{if(this.positiveOptions.has(D))this.dualOptions.add(D)})}valueFromOption(_,$){let D=$.attributeName();if(!this.dualOptions.has(D))return!0;let g=this.negativeOptions.get(D).presetArg,U=g!==void 0?g:!1;return $.negate===(U===_)}}function GR(_){return _.split("-").reduce(($,D)=>{return $+D[0].toUpperCase()+D.slice(1)})}function sv(_){let $,D,g=/^-[^-]$/,U=/^--[^-]/,I=_.split(/[ |,]+/).concat("guard");if(g.test(I[0]))$=I.shift();if(U.test(I[0]))D=I.shift();if(!$&&g.test(I[0]))$=I.shift();if(!$&&U.test(I[0]))$=D,D=I.shift();if(I[0].startsWith("-")){let j=I[0],N=`option creation failed due to '${j}' in option flags '${_}'`;if(/^-[^-][^-]/.test(j))throw Error(`${N} - a short flag is a single dash and a single character - either use a single dash and a single character (for a short flag) - - or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(U.test(j))throw Error(`${N} -- too many short flags`);if(D.test(j))throw Error(`${N} + - or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(g.test(j))throw Error(`${N} +- too many short flags`);if(U.test(j))throw Error(`${N} - too many long flags`);throw Error(`${N} -- unrecognised flag format`)}if($===void 0&&g===void 0)throw Error(`option creation failed due to no flags found in '${_}'.`);return{shortFlag:$,longFlag:g}}ur.Option=j8;ur.DualOptions=N8});var E8=e6((nr)=>{function hr(_,$){if(Math.abs(_.length-$.length)>3)return Math.max(_.length,$.length);let g=[];for(let U=0;U<=_.length;U++)g[U]=[U];for(let U=0;U<=$.length;U++)g[0][U]=U;for(let U=1;U<=$.length;U++)for(let D=1;D<=_.length;D++){let I=1;if(_[D-1]===$[U-1])I=0;else I=1;if(g[D][U]=Math.min(g[D-1][U]+1,g[D][U-1]+1,g[D-1][U-1]+I),D>1&&U>1&&_[D-1]===$[U-2]&&_[D-2]===$[U-1])g[D][U]=Math.min(g[D][U],g[D-2][U-2]+1)}return g[_.length][$.length]}function cr(_,$){if(!$||$.length===0)return"";$=Array.from(new Set($));let g=_.startsWith("--");if(g)_=_.slice(2),$=$.map((j)=>j.slice(2));let U=[],D=3,I=0.4;if($.forEach((j)=>{if(j.length<=1)return;let N=hr(_,j),O=Math.max(_.length,j.length);if((O-N)/O>I){if(Nj.localeCompare(N)),g)U=U.map((j)=>`--${j}`);if(U.length>1)return` -(Did you mean one of ${U.join(", ")}?)`;if(U.length===1)return` -(Did you mean ${U[0]}?)`;return""}nr.suggestSimilar=cr});var J8=e6((er)=>{var mr=O_("events").EventEmitter,s3=O_("child_process"),S6=O_("path"),WN=O_("fs"),E_=O_("process"),{Argument:ir,humanReadableArgName:lr}=SN(),{CommanderError:_z}=BU(),{Help:tr,stripColor:or}=e3(),{Option:O8,DualOptions:pr}=a3(),{suggestSimilar:A8}=E8();class gz extends mr{constructor(_){super();this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=_||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:($)=>E_.stdout.write($),writeErr:($)=>E_.stderr.write($),outputError:($,g)=>g($),getOutHelpWidth:()=>E_.stdout.isTTY?E_.stdout.columns:void 0,getErrHelpWidth:()=>E_.stderr.isTTY?E_.stderr.columns:void 0,getOutHasColors:()=>$z()??(E_.stdout.isTTY&&E_.stdout.hasColors?.()),getErrHasColors:()=>$z()??(E_.stderr.isTTY&&E_.stderr.hasColors?.()),stripColor:($)=>or($)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(_){return this._outputConfiguration=_._outputConfiguration,this._helpOption=_._helpOption,this._helpCommand=_._helpCommand,this._helpConfiguration=_._helpConfiguration,this._exitCallback=_._exitCallback,this._storeOptionsAsProperties=_._storeOptionsAsProperties,this._combineFlagAndOptionalValue=_._combineFlagAndOptionalValue,this._allowExcessArguments=_._allowExcessArguments,this._enablePositionalOptions=_._enablePositionalOptions,this._showHelpAfterError=_._showHelpAfterError,this._showSuggestionAfterError=_._showSuggestionAfterError,this}_getCommandAndAncestors(){let _=[];for(let $=this;$;$=$.parent)_.push($);return _}command(_,$,g){let U=$,D=g;if(typeof U==="object"&&U!==null)D=U,U=null;D=D||{};let[,I,j]=_.match(/([^ ]+) *(.*)/),N=this.createCommand(I);if(U)N.description(U),N._executableHandler=!0;if(D.isDefault)this._defaultCommandName=N._name;if(N._hidden=!!(D.noHelp||D.hidden),N._executableFile=D.executableFile||null,j)N.arguments(j);if(this._registerCommand(N),N.parent=this,N.copyInheritedSettings(this),U)return this;return N}createCommand(_){return new gz(_)}createHelp(){return Object.assign(new tr,this.configureHelp())}configureHelp(_){if(_===void 0)return this._helpConfiguration;return this._helpConfiguration=_,this}configureOutput(_){if(_===void 0)return this._outputConfiguration;return Object.assign(this._outputConfiguration,_),this}showHelpAfterError(_=!0){if(typeof _!=="string")_=!!_;return this._showHelpAfterError=_,this}showSuggestionAfterError(_=!0){return this._showSuggestionAfterError=!!_,this}addCommand(_,$){if(!_._name)throw Error(`Command passed to .addCommand() must have a name -- specify the name in Command constructor or using .name()`);if($=$||{},$.isDefault)this._defaultCommandName=_._name;if($.noHelp||$.hidden)_._hidden=!0;return this._registerCommand(_),_.parent=this,_._checkForBrokenPassThrough(),this}createArgument(_,$){return new ir(_,$)}argument(_,$,g,U){let D=this.createArgument(_,$);if(typeof g==="function")D.default(U).argParser(g);else D.default(g);return this.addArgument(D),this}arguments(_){return _.trim().split(/ +/).forEach(($)=>{this.argument($)}),this}addArgument(_){let $=this.registeredArguments.slice(-1)[0];if($&&$.variadic)throw Error(`only the last argument can be variadic '${$.name()}'`);if(_.required&&_.defaultValue!==void 0&&_.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${_.name()}'`);return this.registeredArguments.push(_),this}helpCommand(_,$){if(typeof _==="boolean")return this._addImplicitHelpCommand=_,this;_=_??"help [command]";let[,g,U]=_.match(/([^ ]+) *(.*)/),D=$??"display help for command",I=this.createCommand(g);if(I.helpOption(!1),U)I.arguments(U);if(D)I.description(D);return this._addImplicitHelpCommand=!0,this._helpCommand=I,this}addHelpCommand(_,$){if(typeof _!=="object")return this.helpCommand(_,$),this;return this._addImplicitHelpCommand=!0,this._helpCommand=_,this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook(_,$){let g=["preSubcommand","preAction","postAction"];if(!g.includes(_))throw Error(`Unexpected value for event passed to hook : '${_}'. -Expecting one of '${g.join("', '")}'`);if(this._lifeCycleHooks[_])this._lifeCycleHooks[_].push($);else this._lifeCycleHooks[_]=[$];return this}exitOverride(_){if(_)this._exitCallback=_;else this._exitCallback=($)=>{if($.code!=="commander.executeSubCommandAsync")throw $};return this}_exit(_,$,g){if(this._exitCallback)this._exitCallback(new _z(_,$,g));E_.exit(_)}action(_){let $=(g)=>{let U=this.registeredArguments.length,D=g.slice(0,U);if(this._storeOptionsAsProperties)D[U]=this;else D[U]=this.opts();return D.push(this),_.apply(this,D)};return this._actionHandler=$,this}createOption(_,$){return new O8(_,$)}_callParseArg(_,$,g,U){try{return _.parseArg($,g)}catch(D){if(D.code==="commander.invalidArgument"){let I=`${U} ${D.message}`;this.error(I,{exitCode:D.exitCode,code:D.code})}throw D}}_registerOption(_){let $=_.short&&this._findOption(_.short)||_.long&&this._findOption(_.long);if($){let g=_.long&&this._findOption(_.long)?_.long:_.short;throw Error(`Cannot add option '${_.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${g}' -- already used by option '${$.flags}'`)}this.options.push(_)}_registerCommand(_){let $=(U)=>{return[U.name()].concat(U.aliases())},g=$(_).find((U)=>this._findCommand(U));if(g){let U=$(this._findCommand(g)).join("|"),D=$(_).join("|");throw Error(`cannot add command '${D}' as already have command '${U}'`)}this.commands.push(_)}addOption(_){this._registerOption(_);let $=_.name(),g=_.attributeName();if(_.negate){let D=_.long.replace(/^--no-/,"--");if(!this._findOption(D))this.setOptionValueWithSource(g,_.defaultValue===void 0?!0:_.defaultValue,"default")}else if(_.defaultValue!==void 0)this.setOptionValueWithSource(g,_.defaultValue,"default");let U=(D,I,j)=>{if(D==null&&_.presetArg!==void 0)D=_.presetArg;let N=this.getOptionValue(g);if(D!==null&&_.parseArg)D=this._callParseArg(_,D,N,I);else if(D!==null&&_.variadic)D=_._concatValue(D,N);if(D==null)if(_.negate)D=!1;else if(_.isBoolean()||_.optional)D=!0;else D="";this.setOptionValueWithSource(g,D,j)};if(this.on("option:"+$,(D)=>{let I=`error: option '${_.flags}' argument '${D}' is invalid.`;U(D,I,"cli")}),_.envVar)this.on("optionEnv:"+$,(D)=>{let I=`error: option '${_.flags}' value '${D}' from env '${_.envVar}' is invalid.`;U(D,I,"env")});return this}_optionEx(_,$,g,U,D){if(typeof $==="object"&&$ instanceof O8)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let I=this.createOption($,g);if(I.makeOptionMandatory(!!_.mandatory),typeof U==="function")I.default(D).argParser(U);else if(U instanceof RegExp){let j=U;U=(N,O)=>{let A=j.exec(N);return A?A[0]:O},I.default(D).argParser(U)}else I.default(U);return this.addOption(I)}option(_,$,g,U){return this._optionEx({},_,$,g,U)}requiredOption(_,$,g,U){return this._optionEx({mandatory:!0},_,$,g,U)}combineFlagAndOptionalValue(_=!0){return this._combineFlagAndOptionalValue=!!_,this}allowUnknownOption(_=!0){return this._allowUnknownOption=!!_,this}allowExcessArguments(_=!0){return this._allowExcessArguments=!!_,this}enablePositionalOptions(_=!0){return this._enablePositionalOptions=!!_,this}passThroughOptions(_=!0){return this._passThroughOptions=!!_,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(_=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!_,this}getOptionValue(_){if(this._storeOptionsAsProperties)return this[_];return this._optionValues[_]}setOptionValue(_,$){return this.setOptionValueWithSource(_,$,void 0)}setOptionValueWithSource(_,$,g){if(this._storeOptionsAsProperties)this[_]=$;else this._optionValues[_]=$;return this._optionValueSources[_]=g,this}getOptionValueSource(_){return this._optionValueSources[_]}getOptionValueSourceWithGlobals(_){let $;return this._getCommandAndAncestors().forEach((g)=>{if(g.getOptionValueSource(_)!==void 0)$=g.getOptionValueSource(_)}),$}_prepareUserArgs(_,$){if(_!==void 0&&!Array.isArray(_))throw Error("first parameter to parse must be array or undefined");if($=$||{},_===void 0&&$.from===void 0){if(E_.versions?.electron)$.from="electron";let U=E_.execArgv??[];if(U.includes("-e")||U.includes("--eval")||U.includes("-p")||U.includes("--print"))$.from="eval"}if(_===void 0)_=E_.argv;this.rawArgs=_.slice();let g;switch($.from){case void 0:case"node":this._scriptPath=_[1],g=_.slice(2);break;case"electron":if(E_.defaultApp)this._scriptPath=_[1],g=_.slice(2);else g=_.slice(1);break;case"user":g=_.slice(0);break;case"eval":g=_.slice(1);break;default:throw Error(`unexpected parse option { from: '${$.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",g}parse(_,$){this._prepareForParse();let g=this._prepareUserArgs(_,$);return this._parseCommand([],g),this}async parseAsync(_,$){this._prepareForParse();let g=this._prepareUserArgs(_,$);return await this._parseCommand([],g),this}_prepareForParse(){if(this._savedState===null)this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true. -- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(_,$,g){if(WN.existsSync(_))return;let U=$?`searched for local subcommand relative to directory '${$}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",D=`'${_}' does not exist - - if '${g}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead +- unrecognised flag format`)}if($===void 0&&D===void 0)throw Error(`option creation failed due to no flags found in '${_}'.`);return{shortFlag:$,longFlag:D}}_f.Option=RR;_f.DualOptions=YR});var QR=e6((If)=>{function Uf(_,$){if(Math.abs(_.length-$.length)>3)return Math.max(_.length,$.length);let D=[];for(let g=0;g<=_.length;g++)D[g]=[g];for(let g=0;g<=$.length;g++)D[0][g]=g;for(let g=1;g<=$.length;g++)for(let U=1;U<=_.length;U++){let I=1;if(_[U-1]===$[g-1])I=0;else I=1;if(D[U][g]=Math.min(D[U-1][g]+1,D[U][g-1]+1,D[U-1][g-1]+I),U>1&&g>1&&_[U-1]===$[g-2]&&_[U-2]===$[g-1])D[U][g]=Math.min(D[U][g],D[U-2][g-2]+1)}return D[_.length][$.length]}function gf(_,$){if(!$||$.length===0)return"";$=Array.from(new Set($));let D=_.startsWith("--");if(D)_=_.slice(2),$=$.map((j)=>j.slice(2));let g=[],U=3,I=0.4;if($.forEach((j)=>{if(j.length<=1)return;let N=Uf(_,j),O=Math.max(_.length,j.length);if((O-N)/O>I){if(Nj.localeCompare(N)),D)g=g.map((j)=>`--${j}`);if(g.length>1)return` +(Did you mean one of ${g.join(", ")}?)`;if(g.length===1)return` +(Did you mean ${g[0]}?)`;return""}If.suggestSimilar=gf});var VR=e6((Pf)=>{var Nf=O_("events").EventEmitter,Nz=O_("child_process"),S6=O_("path"),XN=O_("fs"),E_=O_("process"),{Argument:Ef,humanReadableArgName:Of}=WN(),{CommanderError:Ez}=Vg(),{Help:Af,stripColor:Lf}=Iz(),{Option:TR,DualOptions:Jf}=jz(),{suggestSimilar:BR}=QR();class Az extends Nf{constructor(_){super();this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=_||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:($)=>E_.stdout.write($),writeErr:($)=>E_.stderr.write($),outputError:($,D)=>D($),getOutHelpWidth:()=>E_.stdout.isTTY?E_.stdout.columns:void 0,getErrHelpWidth:()=>E_.stderr.isTTY?E_.stderr.columns:void 0,getOutHasColors:()=>Oz()??(E_.stdout.isTTY&&E_.stdout.hasColors?.()),getErrHasColors:()=>Oz()??(E_.stderr.isTTY&&E_.stderr.hasColors?.()),stripColor:($)=>Lf($)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(_){return this._outputConfiguration=_._outputConfiguration,this._helpOption=_._helpOption,this._helpCommand=_._helpCommand,this._helpConfiguration=_._helpConfiguration,this._exitCallback=_._exitCallback,this._storeOptionsAsProperties=_._storeOptionsAsProperties,this._combineFlagAndOptionalValue=_._combineFlagAndOptionalValue,this._allowExcessArguments=_._allowExcessArguments,this._enablePositionalOptions=_._enablePositionalOptions,this._showHelpAfterError=_._showHelpAfterError,this._showSuggestionAfterError=_._showSuggestionAfterError,this}_getCommandAndAncestors(){let _=[];for(let $=this;$;$=$.parent)_.push($);return _}command(_,$,D){let g=$,U=D;if(typeof g==="object"&&g!==null)U=g,g=null;U=U||{};let[,I,j]=_.match(/([^ ]+) *(.*)/),N=this.createCommand(I);if(g)N.description(g),N._executableHandler=!0;if(U.isDefault)this._defaultCommandName=N._name;if(N._hidden=!!(U.noHelp||U.hidden),N._executableFile=U.executableFile||null,j)N.arguments(j);if(this._registerCommand(N),N.parent=this,N.copyInheritedSettings(this),g)return this;return N}createCommand(_){return new Az(_)}createHelp(){return Object.assign(new Af,this.configureHelp())}configureHelp(_){if(_===void 0)return this._helpConfiguration;return this._helpConfiguration=_,this}configureOutput(_){if(_===void 0)return this._outputConfiguration;return Object.assign(this._outputConfiguration,_),this}showHelpAfterError(_=!0){if(typeof _!=="string")_=!!_;return this._showHelpAfterError=_,this}showSuggestionAfterError(_=!0){return this._showSuggestionAfterError=!!_,this}addCommand(_,$){if(!_._name)throw Error(`Command passed to .addCommand() must have a name +- specify the name in Command constructor or using .name()`);if($=$||{},$.isDefault)this._defaultCommandName=_._name;if($.noHelp||$.hidden)_._hidden=!0;return this._registerCommand(_),_.parent=this,_._checkForBrokenPassThrough(),this}createArgument(_,$){return new Ef(_,$)}argument(_,$,D,g){let U=this.createArgument(_,$);if(typeof D==="function")U.default(g).argParser(D);else U.default(D);return this.addArgument(U),this}arguments(_){return _.trim().split(/ +/).forEach(($)=>{this.argument($)}),this}addArgument(_){let $=this.registeredArguments.slice(-1)[0];if($&&$.variadic)throw Error(`only the last argument can be variadic '${$.name()}'`);if(_.required&&_.defaultValue!==void 0&&_.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${_.name()}'`);return this.registeredArguments.push(_),this}helpCommand(_,$){if(typeof _==="boolean")return this._addImplicitHelpCommand=_,this;_=_??"help [command]";let[,D,g]=_.match(/([^ ]+) *(.*)/),U=$??"display help for command",I=this.createCommand(D);if(I.helpOption(!1),g)I.arguments(g);if(U)I.description(U);return this._addImplicitHelpCommand=!0,this._helpCommand=I,this}addHelpCommand(_,$){if(typeof _!=="object")return this.helpCommand(_,$),this;return this._addImplicitHelpCommand=!0,this._helpCommand=_,this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook(_,$){let D=["preSubcommand","preAction","postAction"];if(!D.includes(_))throw Error(`Unexpected value for event passed to hook : '${_}'. +Expecting one of '${D.join("', '")}'`);if(this._lifeCycleHooks[_])this._lifeCycleHooks[_].push($);else this._lifeCycleHooks[_]=[$];return this}exitOverride(_){if(_)this._exitCallback=_;else this._exitCallback=($)=>{if($.code!=="commander.executeSubCommandAsync")throw $};return this}_exit(_,$,D){if(this._exitCallback)this._exitCallback(new Ez(_,$,D));E_.exit(_)}action(_){let $=(D)=>{let g=this.registeredArguments.length,U=D.slice(0,g);if(this._storeOptionsAsProperties)U[g]=this;else U[g]=this.opts();return U.push(this),_.apply(this,U)};return this._actionHandler=$,this}createOption(_,$){return new TR(_,$)}_callParseArg(_,$,D,g){try{return _.parseArg($,D)}catch(U){if(U.code==="commander.invalidArgument"){let I=`${g} ${U.message}`;this.error(I,{exitCode:U.exitCode,code:U.code})}throw U}}_registerOption(_){let $=_.short&&this._findOption(_.short)||_.long&&this._findOption(_.long);if($){let D=_.long&&this._findOption(_.long)?_.long:_.short;throw Error(`Cannot add option '${_.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${D}' +- already used by option '${$.flags}'`)}this.options.push(_)}_registerCommand(_){let $=(g)=>{return[g.name()].concat(g.aliases())},D=$(_).find((g)=>this._findCommand(g));if(D){let g=$(this._findCommand(D)).join("|"),U=$(_).join("|");throw Error(`cannot add command '${U}' as already have command '${g}'`)}this.commands.push(_)}addOption(_){this._registerOption(_);let $=_.name(),D=_.attributeName();if(_.negate){let U=_.long.replace(/^--no-/,"--");if(!this._findOption(U))this.setOptionValueWithSource(D,_.defaultValue===void 0?!0:_.defaultValue,"default")}else if(_.defaultValue!==void 0)this.setOptionValueWithSource(D,_.defaultValue,"default");let g=(U,I,j)=>{if(U==null&&_.presetArg!==void 0)U=_.presetArg;let N=this.getOptionValue(D);if(U!==null&&_.parseArg)U=this._callParseArg(_,U,N,I);else if(U!==null&&_.variadic)U=_._concatValue(U,N);if(U==null)if(_.negate)U=!1;else if(_.isBoolean()||_.optional)U=!0;else U="";this.setOptionValueWithSource(D,U,j)};if(this.on("option:"+$,(U)=>{let I=`error: option '${_.flags}' argument '${U}' is invalid.`;g(U,I,"cli")}),_.envVar)this.on("optionEnv:"+$,(U)=>{let I=`error: option '${_.flags}' value '${U}' from env '${_.envVar}' is invalid.`;g(U,I,"env")});return this}_optionEx(_,$,D,g,U){if(typeof $==="object"&&$ instanceof TR)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let I=this.createOption($,D);if(I.makeOptionMandatory(!!_.mandatory),typeof g==="function")I.default(U).argParser(g);else if(g instanceof RegExp){let j=g;g=(N,O)=>{let A=j.exec(N);return A?A[0]:O},I.default(U).argParser(g)}else I.default(g);return this.addOption(I)}option(_,$,D,g){return this._optionEx({},_,$,D,g)}requiredOption(_,$,D,g){return this._optionEx({mandatory:!0},_,$,D,g)}combineFlagAndOptionalValue(_=!0){return this._combineFlagAndOptionalValue=!!_,this}allowUnknownOption(_=!0){return this._allowUnknownOption=!!_,this}allowExcessArguments(_=!0){return this._allowExcessArguments=!!_,this}enablePositionalOptions(_=!0){return this._enablePositionalOptions=!!_,this}passThroughOptions(_=!0){return this._passThroughOptions=!!_,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(_=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!_,this}getOptionValue(_){if(this._storeOptionsAsProperties)return this[_];return this._optionValues[_]}setOptionValue(_,$){return this.setOptionValueWithSource(_,$,void 0)}setOptionValueWithSource(_,$,D){if(this._storeOptionsAsProperties)this[_]=$;else this._optionValues[_]=$;return this._optionValueSources[_]=D,this}getOptionValueSource(_){return this._optionValueSources[_]}getOptionValueSourceWithGlobals(_){let $;return this._getCommandAndAncestors().forEach((D)=>{if(D.getOptionValueSource(_)!==void 0)$=D.getOptionValueSource(_)}),$}_prepareUserArgs(_,$){if(_!==void 0&&!Array.isArray(_))throw Error("first parameter to parse must be array or undefined");if($=$||{},_===void 0&&$.from===void 0){if(E_.versions?.electron)$.from="electron";let g=E_.execArgv??[];if(g.includes("-e")||g.includes("--eval")||g.includes("-p")||g.includes("--print"))$.from="eval"}if(_===void 0)_=E_.argv;this.rawArgs=_.slice();let D;switch($.from){case void 0:case"node":this._scriptPath=_[1],D=_.slice(2);break;case"electron":if(E_.defaultApp)this._scriptPath=_[1],D=_.slice(2);else D=_.slice(1);break;case"user":D=_.slice(0);break;case"eval":D=_.slice(1);break;default:throw Error(`unexpected parse option { from: '${$.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",D}parse(_,$){this._prepareForParse();let D=this._prepareUserArgs(_,$);return this._parseCommand([],D),this}async parseAsync(_,$){this._prepareForParse();let D=this._prepareUserArgs(_,$);return await this._parseCommand([],D),this}_prepareForParse(){if(this._savedState===null)this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true. +- either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(_,$,D){if(XN.existsSync(_))return;let g=$?`searched for local subcommand relative to directory '${$}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",U=`'${_}' does not exist + - if '${D}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead - if the default executable name is not suitable, use the executableFile option to supply a custom name or path - - ${U}`;throw Error(D)}_executeSubCommand(_,$){$=$.slice();let g=!1,U=[".js",".ts",".tsx",".mjs",".cjs"];function D(A,L){let z=S6.resolve(A,L);if(WN.existsSync(z))return z;if(U.includes(S6.extname(L)))return;let W=U.find((J)=>WN.existsSync(`${z}${J}`));if(W)return`${z}${W}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let I=_._executableFile||`${this._name}-${_._name}`,j=this._executableDir||"";if(this._scriptPath){let A;try{A=WN.realpathSync(this._scriptPath)}catch{A=this._scriptPath}j=S6.resolve(S6.dirname(A),j)}if(j){let A=D(j,I);if(!A&&!_._executableFile&&this._scriptPath){let L=S6.basename(this._scriptPath,S6.extname(this._scriptPath));if(L!==this._name)A=D(j,`${L}-${_._name}`)}I=A||I}g=U.includes(S6.extname(I));let N;if(E_.platform!=="win32")if(g)$.unshift(I),$=L8(E_.execArgv).concat($),N=s3.spawn(E_.argv[0],$,{stdio:"inherit"});else N=s3.spawn(I,$,{stdio:"inherit"});else this._checkForMissingExecutable(I,j,_._name),$.unshift(I),$=L8(E_.execArgv).concat($),N=s3.spawn(E_.execPath,$,{stdio:"inherit"});if(!N.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((L)=>{E_.on(L,()=>{if(N.killed===!1&&N.exitCode===null)N.kill(L)})});let O=this._exitCallback;N.on("close",(A)=>{if(A=A??1,!O)E_.exit(A);else O(new _z(A,"commander.executeSubCommandAsync","(close)"))}),N.on("error",(A)=>{if(A.code==="ENOENT")this._checkForMissingExecutable(I,j,_._name);else if(A.code==="EACCES")throw Error(`'${I}' not executable`);if(!O)E_.exit(1);else{let L=new _z(1,"commander.executeSubCommandAsync","(error)");L.nestedError=A,O(L)}}),this.runningCommand=N}_dispatchSubcommand(_,$,g){let U=this._findCommand(_);if(!U)this.help({error:!0});U._prepareForParse();let D;return D=this._chainOrCallSubCommandHook(D,U,"preSubcommand"),D=this._chainOrCall(D,()=>{if(U._executableHandler)this._executeSubCommand(U,$.concat(g));else return U._parseCommand($,g)}),D}_dispatchHelpCommand(_){if(!_)this.help();let $=this._findCommand(_);if($&&!$._executableHandler)$.help();return this._dispatchSubcommand(_,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((_,$)=>{if(_.required&&this.args[$]==null)this.missingArgument(_.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let _=(g,U,D)=>{let I=U;if(U!==null&&g.parseArg){let j=`error: command-argument value '${U}' is invalid for argument '${g.name()}'.`;I=this._callParseArg(g,U,D,j)}return I};this._checkNumberOfArguments();let $=[];this.registeredArguments.forEach((g,U)=>{let D=g.defaultValue;if(g.variadic){if(U{return _(g,j,I)},g.defaultValue)}else if(D===void 0)D=[]}else if(U$());return $()}_chainOrCallHooks(_,$){let g=_,U=[];if(this._getCommandAndAncestors().reverse().filter((D)=>D._lifeCycleHooks[$]!==void 0).forEach((D)=>{D._lifeCycleHooks[$].forEach((I)=>{U.push({hookedCommand:D,callback:I})})}),$==="postAction")U.reverse();return U.forEach((D)=>{g=this._chainOrCall(g,()=>{return D.callback(D.hookedCommand,this)})}),g}_chainOrCallSubCommandHook(_,$,g){let U=_;if(this._lifeCycleHooks[g]!==void 0)this._lifeCycleHooks[g].forEach((D)=>{U=this._chainOrCall(U,()=>{return D(this,$)})});return U}_parseCommand(_,$){let g=this.parseOptions($);if(this._parseOptionsEnv(),this._parseOptionsImplied(),_=_.concat(g.operands),$=g.unknown,this.args=_.concat($),_&&this._findCommand(_[0]))return this._dispatchSubcommand(_[0],_.slice(1),$);if(this._getHelpCommand()&&_[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(_[1]);if(this._defaultCommandName)return this._outputHelpIfRequested($),this._dispatchSubcommand(this._defaultCommandName,_,$);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(g.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let U=()=>{if(g.unknown.length>0)this.unknownOption(g.unknown[0])},D=`command:${this.name()}`;if(this._actionHandler){U(),this._processArguments();let I;if(I=this._chainOrCallHooks(I,"preAction"),I=this._chainOrCall(I,()=>this._actionHandler(this.processedArgs)),this.parent)I=this._chainOrCall(I,()=>{this.parent.emit(D,_,$)});return I=this._chainOrCallHooks(I,"postAction"),I}if(this.parent&&this.parent.listenerCount(D))U(),this._processArguments(),this.parent.emit(D,_,$);else if(_.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",_,$);if(this.listenerCount("command:*"))this.emit("command:*",_,$);else if(this.commands.length)this.unknownCommand();else U(),this._processArguments()}else if(this.commands.length)U(),this.help({error:!0});else U(),this._processArguments()}_findCommand(_){if(!_)return;return this.commands.find(($)=>$._name===_||$._aliases.includes(_))}_findOption(_){return this.options.find(($)=>$.is(_))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((_)=>{_.options.forEach(($)=>{if($.mandatory&&_.getOptionValue($.attributeName())===void 0)_.missingMandatoryOptionValue($)})})}_checkForConflictingLocalOptions(){let _=this.options.filter((g)=>{let U=g.attributeName();if(this.getOptionValue(U)===void 0)return!1;return this.getOptionValueSource(U)!=="default"});_.filter((g)=>g.conflictsWith.length>0).forEach((g)=>{let U=_.find((D)=>g.conflictsWith.includes(D.attributeName()));if(U)this._conflictingOption(g,U)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((_)=>{_._checkForConflictingLocalOptions()})}parseOptions(_){let $=[],g=[],U=$,D=_.slice();function I(N){return N.length>1&&N[0]==="-"}let j=null;while(D.length){let N=D.shift();if(N==="--"){if(U===g)U.push(N);U.push(...D);break}if(j&&!I(N)){this.emit(`option:${j.name()}`,N);continue}if(j=null,I(N)){let O=this._findOption(N);if(O){if(O.required){let A=D.shift();if(A===void 0)this.optionMissingArgument(O);this.emit(`option:${O.name()}`,A)}else if(O.optional){let A=null;if(D.length>0&&!I(D[0]))A=D.shift();this.emit(`option:${O.name()}`,A)}else this.emit(`option:${O.name()}`);j=O.variadic?O:null;continue}}if(N.length>2&&N[0]==="-"&&N[1]!=="-"){let O=this._findOption(`-${N[1]}`);if(O){if(O.required||O.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${O.name()}`,N.slice(2));else this.emit(`option:${O.name()}`),D.unshift(`-${N.slice(2)}`);continue}}if(/^--[^=]+=/.test(N)){let O=N.indexOf("="),A=this._findOption(N.slice(0,O));if(A&&(A.required||A.optional)){this.emit(`option:${A.name()}`,N.slice(O+1));continue}}if(I(N))U=g;if((this._enablePositionalOptions||this._passThroughOptions)&&$.length===0&&g.length===0){if(this._findCommand(N)){if($.push(N),D.length>0)g.push(...D);break}else if(this._getHelpCommand()&&N===this._getHelpCommand().name()){if($.push(N),D.length>0)$.push(...D);break}else if(this._defaultCommandName){if(g.push(N),D.length>0)g.push(...D);break}}if(this._passThroughOptions){if(U.push(N),D.length>0)U.push(...D);break}U.push(N)}return{operands:$,unknown:g}}opts(){if(this._storeOptionsAsProperties){let _={},$=this.options.length;for(let g=0;g<$;g++){let U=this.options[g].attributeName();_[U]=U===this._versionOptionName?this._version:this[U]}return _}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((_,$)=>Object.assign(_,$.opts()),{})}error(_,$){if(this._outputConfiguration.outputError(`${_} + - ${g}`;throw Error(U)}_executeSubCommand(_,$){$=$.slice();let D=!1,g=[".js",".ts",".tsx",".mjs",".cjs"];function U(A,L){let z=S6.resolve(A,L);if(XN.existsSync(z))return z;if(g.includes(S6.extname(L)))return;let W=g.find((J)=>XN.existsSync(`${z}${J}`));if(W)return`${z}${W}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let I=_._executableFile||`${this._name}-${_._name}`,j=this._executableDir||"";if(this._scriptPath){let A;try{A=XN.realpathSync(this._scriptPath)}catch{A=this._scriptPath}j=S6.resolve(S6.dirname(A),j)}if(j){let A=U(j,I);if(!A&&!_._executableFile&&this._scriptPath){let L=S6.basename(this._scriptPath,S6.extname(this._scriptPath));if(L!==this._name)A=U(j,`${L}-${_._name}`)}I=A||I}D=g.includes(S6.extname(I));let N;if(E_.platform!=="win32")if(D)$.unshift(I),$=qR(E_.execArgv).concat($),N=Nz.spawn(E_.argv[0],$,{stdio:"inherit"});else N=Nz.spawn(I,$,{stdio:"inherit"});else this._checkForMissingExecutable(I,j,_._name),$.unshift(I),$=qR(E_.execArgv).concat($),N=Nz.spawn(E_.execPath,$,{stdio:"inherit"});if(!N.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((L)=>{E_.on(L,()=>{if(N.killed===!1&&N.exitCode===null)N.kill(L)})});let O=this._exitCallback;N.on("close",(A)=>{if(A=A??1,!O)E_.exit(A);else O(new Ez(A,"commander.executeSubCommandAsync","(close)"))}),N.on("error",(A)=>{if(A.code==="ENOENT")this._checkForMissingExecutable(I,j,_._name);else if(A.code==="EACCES")throw Error(`'${I}' not executable`);if(!O)E_.exit(1);else{let L=new Ez(1,"commander.executeSubCommandAsync","(error)");L.nestedError=A,O(L)}}),this.runningCommand=N}_dispatchSubcommand(_,$,D){let g=this._findCommand(_);if(!g)this.help({error:!0});g._prepareForParse();let U;return U=this._chainOrCallSubCommandHook(U,g,"preSubcommand"),U=this._chainOrCall(U,()=>{if(g._executableHandler)this._executeSubCommand(g,$.concat(D));else return g._parseCommand($,D)}),U}_dispatchHelpCommand(_){if(!_)this.help();let $=this._findCommand(_);if($&&!$._executableHandler)$.help();return this._dispatchSubcommand(_,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((_,$)=>{if(_.required&&this.args[$]==null)this.missingArgument(_.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let _=(D,g,U)=>{let I=g;if(g!==null&&D.parseArg){let j=`error: command-argument value '${g}' is invalid for argument '${D.name()}'.`;I=this._callParseArg(D,g,U,j)}return I};this._checkNumberOfArguments();let $=[];this.registeredArguments.forEach((D,g)=>{let U=D.defaultValue;if(D.variadic){if(g{return _(D,j,I)},D.defaultValue)}else if(U===void 0)U=[]}else if(g$());return $()}_chainOrCallHooks(_,$){let D=_,g=[];if(this._getCommandAndAncestors().reverse().filter((U)=>U._lifeCycleHooks[$]!==void 0).forEach((U)=>{U._lifeCycleHooks[$].forEach((I)=>{g.push({hookedCommand:U,callback:I})})}),$==="postAction")g.reverse();return g.forEach((U)=>{D=this._chainOrCall(D,()=>{return U.callback(U.hookedCommand,this)})}),D}_chainOrCallSubCommandHook(_,$,D){let g=_;if(this._lifeCycleHooks[D]!==void 0)this._lifeCycleHooks[D].forEach((U)=>{g=this._chainOrCall(g,()=>{return U(this,$)})});return g}_parseCommand(_,$){let D=this.parseOptions($);if(this._parseOptionsEnv(),this._parseOptionsImplied(),_=_.concat(D.operands),$=D.unknown,this.args=_.concat($),_&&this._findCommand(_[0]))return this._dispatchSubcommand(_[0],_.slice(1),$);if(this._getHelpCommand()&&_[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(_[1]);if(this._defaultCommandName)return this._outputHelpIfRequested($),this._dispatchSubcommand(this._defaultCommandName,_,$);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(D.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let g=()=>{if(D.unknown.length>0)this.unknownOption(D.unknown[0])},U=`command:${this.name()}`;if(this._actionHandler){g(),this._processArguments();let I;if(I=this._chainOrCallHooks(I,"preAction"),I=this._chainOrCall(I,()=>this._actionHandler(this.processedArgs)),this.parent)I=this._chainOrCall(I,()=>{this.parent.emit(U,_,$)});return I=this._chainOrCallHooks(I,"postAction"),I}if(this.parent&&this.parent.listenerCount(U))g(),this._processArguments(),this.parent.emit(U,_,$);else if(_.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",_,$);if(this.listenerCount("command:*"))this.emit("command:*",_,$);else if(this.commands.length)this.unknownCommand();else g(),this._processArguments()}else if(this.commands.length)g(),this.help({error:!0});else g(),this._processArguments()}_findCommand(_){if(!_)return;return this.commands.find(($)=>$._name===_||$._aliases.includes(_))}_findOption(_){return this.options.find(($)=>$.is(_))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((_)=>{_.options.forEach(($)=>{if($.mandatory&&_.getOptionValue($.attributeName())===void 0)_.missingMandatoryOptionValue($)})})}_checkForConflictingLocalOptions(){let _=this.options.filter((D)=>{let g=D.attributeName();if(this.getOptionValue(g)===void 0)return!1;return this.getOptionValueSource(g)!=="default"});_.filter((D)=>D.conflictsWith.length>0).forEach((D)=>{let g=_.find((U)=>D.conflictsWith.includes(U.attributeName()));if(g)this._conflictingOption(D,g)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((_)=>{_._checkForConflictingLocalOptions()})}parseOptions(_){let $=[],D=[],g=$,U=_.slice();function I(N){return N.length>1&&N[0]==="-"}let j=null;while(U.length){let N=U.shift();if(N==="--"){if(g===D)g.push(N);g.push(...U);break}if(j&&!I(N)){this.emit(`option:${j.name()}`,N);continue}if(j=null,I(N)){let O=this._findOption(N);if(O){if(O.required){let A=U.shift();if(A===void 0)this.optionMissingArgument(O);this.emit(`option:${O.name()}`,A)}else if(O.optional){let A=null;if(U.length>0&&!I(U[0]))A=U.shift();this.emit(`option:${O.name()}`,A)}else this.emit(`option:${O.name()}`);j=O.variadic?O:null;continue}}if(N.length>2&&N[0]==="-"&&N[1]!=="-"){let O=this._findOption(`-${N[1]}`);if(O){if(O.required||O.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${O.name()}`,N.slice(2));else this.emit(`option:${O.name()}`),U.unshift(`-${N.slice(2)}`);continue}}if(/^--[^=]+=/.test(N)){let O=N.indexOf("="),A=this._findOption(N.slice(0,O));if(A&&(A.required||A.optional)){this.emit(`option:${A.name()}`,N.slice(O+1));continue}}if(I(N))g=D;if((this._enablePositionalOptions||this._passThroughOptions)&&$.length===0&&D.length===0){if(this._findCommand(N)){if($.push(N),U.length>0)D.push(...U);break}else if(this._getHelpCommand()&&N===this._getHelpCommand().name()){if($.push(N),U.length>0)$.push(...U);break}else if(this._defaultCommandName){if(D.push(N),U.length>0)D.push(...U);break}}if(this._passThroughOptions){if(g.push(N),U.length>0)g.push(...U);break}g.push(N)}return{operands:$,unknown:D}}opts(){if(this._storeOptionsAsProperties){let _={},$=this.options.length;for(let D=0;D<$;D++){let g=this.options[D].attributeName();_[g]=g===this._versionOptionName?this._version:this[g]}return _}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((_,$)=>Object.assign(_,$.opts()),{})}error(_,$){if(this._outputConfiguration.outputError(`${_} `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError} `);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(` -`),this.outputHelp({error:!0});let g=$||{},U=g.exitCode||1,D=g.code||"commander.error";this._exit(U,D,_)}_parseOptionsEnv(){this.options.forEach((_)=>{if(_.envVar&&_.envVar in E_.env){let $=_.attributeName();if(this.getOptionValue($)===void 0||["default","config","env"].includes(this.getOptionValueSource($)))if(_.required||_.optional)this.emit(`optionEnv:${_.name()}`,E_.env[_.envVar]);else this.emit(`optionEnv:${_.name()}`)}})}_parseOptionsImplied(){let _=new pr(this.options),$=(g)=>{return this.getOptionValue(g)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(g))};this.options.filter((g)=>g.implied!==void 0&&$(g.attributeName())&&_.valueFromOption(this.getOptionValue(g.attributeName()),g)).forEach((g)=>{Object.keys(g.implied).filter((U)=>!$(U)).forEach((U)=>{this.setOptionValueWithSource(U,g.implied[U],"implied")})})}missingArgument(_){let $=`error: missing required argument '${_}'`;this.error($,{code:"commander.missingArgument"})}optionMissingArgument(_){let $=`error: option '${_.flags}' argument missing`;this.error($,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(_){let $=`error: required option '${_.flags}' not specified`;this.error($,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(_,$){let g=(I)=>{let j=I.attributeName(),N=this.getOptionValue(j),O=this.options.find((L)=>L.negate&&j===L.attributeName()),A=this.options.find((L)=>!L.negate&&j===L.attributeName());if(O&&(O.presetArg===void 0&&N===!1||O.presetArg!==void 0&&N===O.presetArg))return O;return A||I},U=(I)=>{let j=g(I),N=j.attributeName();if(this.getOptionValueSource(N)==="env")return`environment variable '${j.envVar}'`;return`option '${j.flags}'`},D=`error: ${U(_)} cannot be used with ${U($)}`;this.error(D,{code:"commander.conflictingOption"})}unknownOption(_){if(this._allowUnknownOption)return;let $="";if(_.startsWith("--")&&this._showSuggestionAfterError){let U=[],D=this;do{let I=D.createHelp().visibleOptions(D).filter((j)=>j.long).map((j)=>j.long);U=U.concat(I),D=D.parent}while(D&&!D._enablePositionalOptions);$=A8(_,U)}let g=`error: unknown option '${_}'${$}`;this.error(g,{code:"commander.unknownOption"})}_excessArguments(_){if(this._allowExcessArguments)return;let $=this.registeredArguments.length,g=$===1?"":"s",D=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${$} argument${g} but got ${_.length}.`;this.error(D,{code:"commander.excessArguments"})}unknownCommand(){let _=this.args[0],$="";if(this._showSuggestionAfterError){let U=[];this.createHelp().visibleCommands(this).forEach((D)=>{if(U.push(D.name()),D.alias())U.push(D.alias())}),$=A8(_,U)}let g=`error: unknown command '${_}'${$}`;this.error(g,{code:"commander.unknownCommand"})}version(_,$,g){if(_===void 0)return this._version;this._version=_,$=$||"-V, --version",g=g||"output the version number";let U=this.createOption($,g);return this._versionOptionName=U.attributeName(),this._registerOption(U),this.on("option:"+U.name(),()=>{this._outputConfiguration.writeOut(`${_} -`),this._exit(0,"commander.version",_)}),this}description(_,$){if(_===void 0&&$===void 0)return this._description;if(this._description=_,$)this._argsDescription=$;return this}summary(_){if(_===void 0)return this._summary;return this._summary=_,this}alias(_){if(_===void 0)return this._aliases[0];let $=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)$=this.commands[this.commands.length-1];if(_===$._name)throw Error("Command alias can't be the same as its name");let g=this.parent?._findCommand(_);if(g){let U=[g.name()].concat(g.aliases()).join("|");throw Error(`cannot add alias '${_}' to command '${this.name()}' as already have command '${U}'`)}return $._aliases.push(_),this}aliases(_){if(_===void 0)return this._aliases;return _.forEach(($)=>this.alias($)),this}usage(_){if(_===void 0){if(this._usage)return this._usage;let $=this.registeredArguments.map((g)=>{return lr(g)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?$:[]).join(" ")}return this._usage=_,this}name(_){if(_===void 0)return this._name;return this._name=_,this}nameFromFilename(_){return this._name=S6.basename(_,S6.extname(_)),this}executableDir(_){if(_===void 0)return this._executableDir;return this._executableDir=_,this}helpInformation(_){let $=this.createHelp(),g=this._getOutputContext(_);$.prepareContext({error:g.error,helpWidth:g.helpWidth,outputHasColors:g.hasColors});let U=$.formatHelp(this,$);if(g.hasColors)return U;return this._outputConfiguration.stripColor(U)}_getOutputContext(_){_=_||{};let $=!!_.error,g,U,D;if($)g=(j)=>this._outputConfiguration.writeErr(j),U=this._outputConfiguration.getErrHasColors(),D=this._outputConfiguration.getErrHelpWidth();else g=(j)=>this._outputConfiguration.writeOut(j),U=this._outputConfiguration.getOutHasColors(),D=this._outputConfiguration.getOutHelpWidth();return{error:$,write:(j)=>{if(!U)j=this._outputConfiguration.stripColor(j);return g(j)},hasColors:U,helpWidth:D}}outputHelp(_){let $;if(typeof _==="function")$=_,_=void 0;let g=this._getOutputContext(_),U={error:g.error,write:g.write,command:this};this._getCommandAndAncestors().reverse().forEach((I)=>I.emit("beforeAllHelp",U)),this.emit("beforeHelp",U);let D=this.helpInformation({error:g.error});if($){if(D=$(D),typeof D!=="string"&&!Buffer.isBuffer(D))throw Error("outputHelp callback must return a string or a Buffer")}if(g.write(D),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",U),this._getCommandAndAncestors().forEach((I)=>I.emit("afterAllHelp",U))}helpOption(_,$){if(typeof _==="boolean"){if(_)this._helpOption=this._helpOption??void 0;else this._helpOption=null;return this}return _=_??"-h, --help",$=$??"display help for command",this._helpOption=this.createOption(_,$),this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(_){return this._helpOption=_,this}help(_){this.outputHelp(_);let $=Number(E_.exitCode??0);if($===0&&_&&typeof _!=="function"&&_.error)$=1;this._exit($,"commander.help","(outputHelp)")}addHelpText(_,$){let g=["beforeAll","before","after","afterAll"];if(!g.includes(_))throw Error(`Unexpected value for position to addHelpText. -Expecting one of '${g.join("', '")}'`);let U=`${_}Help`;return this.on(U,(D)=>{let I;if(typeof $==="function")I=$({error:D.error,command:D.command});else I=$;if(I)D.write(`${I} -`)}),this}_outputHelpIfRequested(_){let $=this._getHelpOption();if($&&_.find((U)=>$.is(U)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function L8(_){return _.map(($)=>{if(!$.startsWith("--inspect"))return $;let g,U="127.0.0.1",D="9229",I;if((I=$.match(/^(--inspect(-brk)?)$/))!==null)g=I[1];else if((I=$.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(g=I[1],/^\d+$/.test(I[3]))D=I[3];else U=I[3];else if((I=$.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)g=I[1],U=I[3],D=I[4];if(g&&D!=="0")return`${g}=${U}:${parseInt(D)+1}`;return $})}function $z(){if(E_.env.NO_COLOR||E_.env.FORCE_COLOR==="0"||E_.env.FORCE_COLOR==="false")return!1;if(E_.env.FORCE_COLOR||E_.env.CLICOLOR_FORCE!==void 0)return!0;return}er.Command=gz;er.useColor=$z});var W8=e6((gv)=>{var{Argument:P8}=SN(),{Command:Dz}=J8(),{CommanderError:_v,InvalidArgumentError:z8}=BU(),{Help:$v}=e3(),{Option:S8}=a3();gv.program=new Dz;gv.createCommand=(_)=>new Dz(_);gv.createOption=(_,$)=>new S8(_,$);gv.createArgument=(_,$)=>new P8(_,$);gv.Command=Dz;gv.Option=S8;gv.Argument=P8;gv.Help=$v;gv.CommanderError=_v;gv.InvalidArgumentError=z8;gv.InvalidOptionArgumentError=z8});import{chmodSync as Tz,closeSync as Zg,existsSync as U0,fsyncSync as CN,lstatSync as OY,openSync as rN,readFileSync as bg,renameSync as qz,unlinkSync as vN,writeFileSync as wN}from"fs";import{randomUUID as Hg}from"crypto";import{basename as AY,dirname as Bz,join as kN}from"path";import{chmodSync as Pz,existsSync as UY,mkdirSync as KN,readFileSync as IY,writeFileSync as zz}from"fs";import{homedir as VN}from"os";import{dirname as jY,join as x_,resolve as Sz}from"path";var l$=x_(".hasna","knowledge"),Wz=x_(".hasna","apps","knowledge"),P_={division:"xyz",app_type:"opensource",app:"knowledge",env:"prod",local_path:l$,s3:{bucket:"example-knowledge-prod",region:"us-east-1",profile:"example-infra",prefix:".hasna/knowledge",server_side_encryption:"AES256"},secrets:{env:"example/knowledge/prod/env",aws:"example/knowledge/prod/aws",s3:"example/knowledge/prod/s3",rds:null,future_rds:"example/knowledge/prod/rds"},source_owner:"open-files",evidence_doc:"docs/canonical-secrets-bootstrap-2026-06-08.md"};function Xz(){return{type:"s3",artifacts_root:"artifacts",s3:{bucket:P_.s3.bucket,prefix:P_.s3.prefix,region:P_.s3.region,profile:P_.s3.profile,server_side_encryption:P_.s3.server_side_encryption}}}function Fg(){return x_(VN(),".open-knowledge","db.json")}function ZU(){return x_(VN(),".hasna","knowledge")}function FN(_=process.cwd()){return Sz(_,l$)}function NY(){return x_(VN(),Wz)}function EY(_=process.cwd()){return Sz(_,Wz)}function MN(_,$=process.cwd()){if(_==="project"||_==="local")return D$(EY($));return D$(NY())}function D$(_){return{home:_,configPath:x_(_,"config.json"),jsonStorePath:x_(_,"db.json"),knowledgeDbPath:x_(_,"knowledge.db"),artifactsDir:x_(_,"artifacts"),cacheDir:x_(_,"cache"),exportsDir:x_(_,"exports"),indexesDir:x_(_,"indexes"),logsDir:x_(_,"logs"),runsDir:x_(_,"runs"),schemasDir:x_(_,"schemas"),wikiDir:x_(_,"wiki")}}function Mg(){return{version:1,mode:"local",hosted:{api_url:"https://knowledge.md"},storage:{type:"local",artifacts_root:"artifacts"},sources:{preferred_ref:"open-files",allowed_schemes:["open-files","s3","file","https","http"]},providers:{default_model:"openai:gpt-5.2",aliases:{fast:"openai:gpt-5-mini",reasoning:"anthropic:claude-opus-4-6",sonnet:"anthropic:claude-sonnet-4-6",deepseek:"deepseek:deepseek-chat","deepseek-reasoning":"deepseek:deepseek-reasoner"},openai:{api_key_env:"OPENAI_API_KEY",default_model:"gpt-5.2"},anthropic:{api_key_env:"ANTHROPIC_API_KEY",default_model:"claude-sonnet-4-6"},deepseek:{api_key_env:"DEEPSEEK_API_KEY",default_model:"deepseek-chat"}},embeddings:{default_model:"openai:text-embedding-3-small",dimensions:1536,batch_size:64,max_parallel_calls:4},safety:{network:{web_search_enabled:!1,s3_reads_enabled:!1,allowed_s3_buckets:[]},redaction:{enabled:!0},approvals:{generated_writes_require_approval:!0}}}}function D0(_){let $=D$(_);KN($.home,{recursive:!0,mode:448});for(let g of[$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir])KN(g,{recursive:!0,mode:448});if(!UY($.configPath))zz($.configPath,`${JSON.stringify(Mg(),null,2)} -`,{mode:384}),Pz($.configPath,384);return $}function bU(_,$=process.cwd()){if(_==="project"||_==="local")return D$(FN($));return D$(ZU())}function X6(_){KN(jY(_),{recursive:!0})}function ZN(_){let $=IY(_,"utf8");return JSON.parse($)}function Rz(_,$){X6(_),zz(_,`${JSON.stringify($,null,2)} -`,{mode:384}),Pz(_,384)}function Kz(_,$){if(!$)return!0;let g=$.toLowerCase();return _.id.toLowerCase().includes(g)||_.title.toLowerCase().includes(g)||_.content.toLowerCase().includes(g)}function kU(){return D$(ZU()).jsonStorePath}function kg(_){if(_===kU()&&U0(Fg()))uN();if(!U0(_))X6(_),Mz(_,`${JSON.stringify({items:[]},null,2)} -`)}function LY(_){return _.toISOString().replace(/[:.]/g,"-")}function fN(_){let $=[`id:${_.id}`];if(typeof _.short_id==="string"&&_.short_id.length>0)$.push(`short_id:${_.short_id}`);return $}function JY(_){let $=new Set;for(let g of _)for(let U of fN(g))$.add(U);return $}function PY(_,$){return fN($).some((g)=>_.has(g))}function bN(_,$){X6(_),wN(_,`${JSON.stringify($,null,2)} -`,{mode:384}),Tz(_,384)}function Gz(_){let $=JSON.parse(bg(_,"utf8"));if(!$||typeof $!=="object"||!Array.isArray($.items))return{store:{items:[]},skippedInvalid:0};let g={items:[]},U=0;for(let D of $.items)if(D&&typeof D==="object"&&typeof D.id==="string"&&D.id.length>0)g.items.push(D);else U+=1;return{store:g,skippedInvalid:U}}function uN(_={}){if(_.dryRun===!0)return Yz(_);return v$(kU(),()=>Yz(_),{createParent:!0})}function Yz(_={}){let $=_.dryRun===!0,g=_.now??new Date,U=D$(ZU()),D=Fg(),I=U.jsonStorePath,j=U0(D),N=U0(I),O={ok:!0,dry_run:$,legacy_path:D,canonical_path:I,legacy_exists:j,canonical_existed:N,canonical_created:!1,would_create_canonical:!1,imported:0,skipped_existing:0,skipped_invalid:0,backup_path:null,report_path:null,errors:[],message:j?"Legacy global store already imported":"No legacy global store found"};if(!j)return O;let A;try{let P=Gz(D);A=P.store,O.skipped_invalid=P.skippedInvalid}catch(P){return O.ok=!1,O.errors.push(`Could not read legacy store: ${P instanceof Error?P.message:String(P)}`),O.message="Legacy global store import failed",O}let L={items:[]};if(N)try{L=Gz(I).store}catch(P){return O.ok=!1,O.errors.push(`Could not read canonical store: ${P instanceof Error?P.message:String(P)}`),O.message="Legacy global store import failed",O}let z=JY(L.items),W={items:[...L.items]};for(let P of A.items){if(!P?.id){O.skipped_invalid+=1;continue}if(PY(z,P)){O.skipped_existing+=1;continue}W.items.push(P);for(let S of fN(P))z.add(S);O.imported+=1}if(O.would_create_canonical=!N&&O.imported>0,O.canonical_created=!$&&O.would_create_canonical,O.message=O.imported>0?`Imported ${O.imported} legacy item(s) into canonical knowledge store`:"Legacy global store already imported",$||O.imported===0)return O;let J=`${LY(g)}-${Hg().slice(0,8)}`;if(N)O.backup_path=kN(U.exportsDir,`legacy-open-knowledge-db-before-import-${J}.json`),bN(O.backup_path,L);return bN(I,W),O.report_path=kN(U.runsDir,`legacy-open-knowledge-import-${J}.json`),bN(O.report_path,O),O}function I0(_){if(!U0(_))return{exists:!1,items:[]};let $=bg(_,"utf8"),g=JSON.parse($);if(!g||!Array.isArray(g.items))return{exists:!0,items:[]};return{exists:!0,items:g.items}}function zY(_){return`${_}.lock`}var HU=1e4,Vz=25,Qz=120000,SY=new Int32Array(new SharedArrayBuffer(4));function xN(_){return typeof _==="object"&&_!==null&&"code"in _?String(_.code):void 0}function Fz(_){let $=null;try{$=rN(Bz(_),"r"),CN($)}catch{}finally{if($!==null)try{Zg($)}catch{}}}var HN=new Set;function Mz(_,$){X6(_);let g=kN(Bz(_),`.${AY(_)}.tmp.${Hg()}`),U=null;try{U=rN(g,"wx",384),wN(U,$),CN(U),Zg(U),U=null,qz(g,_);try{Tz(_,384)}catch{}Fz(_)}catch(D){if(U!==null)try{Zg(U)}catch{}try{vN(g)}catch{}throw D}}function Zz(_){Atomics.wait(SY,0,0,_)}function WY(_){if(typeof _!=="number"||!Number.isInteger(_)||_<=0)return!1;try{return process.kill(_,0),!0}catch($){return xN($)!=="ESRCH"}}function bz(_,$){try{let g=bg(_,"utf8"),U=JSON.parse(g);if(typeof U.ts==="number")return $-U.ts>Qz&&!WY(U.pid)}catch{}try{return $-OY(_).mtimeMs>Qz}catch{return!1}}function XY(_){let $=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z"),g=`${_}.stale.${$}.${Hg()}`;try{qz(_,g)}catch(U){if(xN(U)!=="ENOENT")throw U;return}}function RY(_){let $=Hg(),g=`${_}.breaker`,U=Date.now();while(Date.now()-U{U=I};while(Date.now()-gbY)return null;g=BY(_,"utf8")}catch{return null}let U=vY(g);for(let D of $){let I=U.get(D)?.trim();if(I)return I}return null}function j0(_,$,g){if(!CY.test(g))return;throw new rg(_,`The credential from ${$} contains characters that cannot be sent in an HTTP header (a control character or non-ASCII byte). A file written with CR-only line endings is the usual cause. Rewrite that credential file with one LF-terminated KEY=value line. The value is not shown here, and is deliberately never logged.`,[$])}var wY=Symbol.for("nodejs.util.inspect.custom");function N0(_){let{apiKey:$,...g}=_,U={...g};return Object.defineProperty(U,"apiKey",{value:$,enumerable:!1,writable:!1,configurable:!1}),Object.defineProperty(U,wY,{value:()=>({...g,apiKey:"[redacted]"}),enumerable:!1,writable:!1,configurable:!1}),U}function fY(_,$){return j0(_,"explicit apiKey option",$),N0({apiKey:$,tier:"argument",source:"explicit apiKey option",deliberate:!0,deprecated:!1,diskCandidates:[],warning:null})}function uz(_,$){for(let g of $){let U=_[g]?.trim();if(U)return{key:g,value:U}}return null}var xz=Symbol.for("hasna:contracts:credentialDeprecationNotices");function uY(){let _=globalThis,$=_[xz];if($ instanceof Set)return $;let g=new Set;return _[xz]=g,g}function xY(_){if(typeof process<"u"&&process.stderr)process.stderr.write(`${_} -`)}function nN(_,$,g={}){let{apiKeyKeys:U}=nz(_),D=dz(_,$),I=g.apiKey?.trim();if(I)return j0(_,"the explicit apiKey argument",I),N0({apiKey:I,tier:"argument",source:"explicit apiKey argument",deliberate:!0,deprecated:!1,diskCandidates:D,warning:null});let j=qY(_),N=$[j];if(N!==void 0){let z=N.trim();if(!z)throw new rg(_,`${j} is set but empty. It is a deliberate override, so it is not resolved around: either give it a real key or unset it to fall back to the credential on disk.`,[j]);return j0(_,j,z),N0({apiKey:z,tier:"override",source:j,deliberate:!0,deprecated:!1,diskCandidates:D,warning:null})}let O=g.profile?.trim()||$[yN]?.trim();if(O){let z=g.profile?.trim()?"explicit profile argument":yN;if(!kY.test(O))throw new rg(_,`Profile name from ${z} is not usable in a path. Use letters, digits, dot, dash, or underscore.`,[z]);let W=mz(_,$,O);for(let J of W){let P=fz(J,U);if(P)return j0(_,J,P),N0({apiKey:P,tier:"profile",source:J,deliberate:!0,deprecated:!1,diskCandidates:W,warning:null})}throw new rg(_,`Profile '${O}' (from ${z}) has no ${U[0]} for '${_}'. Looked in: ${W.join(", ")||""}. `+"A profile names WHICH identity to use, so it is never resolved around \u2014 "+`create the profile's credential file or unset ${yN}.`,W)}let A=D.map((z)=>({path:z,value:fz(z,U)})).filter((z)=>z.value!==null);if(A.length>0){let z=A[0];j0(_,z.path,z.value);let W=[...A.slice(1).filter((P)=>P.value!==z.value).map((P)=>P.path),...(()=>{let P=uz($,U);return P&&P.value!==z.value?[P.key]:[]})()],J=W.length>0?`Credential sources disagree for '${_}': ${z.path} and ${W.join(", ")} hold different keys. ${z.path} wins, because a file on `+"disk is re-read on every call while an environment variable is a snapshot. Reconcile them \u2014 "+"a rotation that updated only one leaves the other to fail 401 wherever it is loaded first.":null;return N0({apiKey:z.value,tier:"disk",source:z.path,deliberate:!1,deprecated:!1,diskCandidates:D,warning:J})}let L=uz($,U);if(L){j0(_,L.key,L.value);let z=D.length>0?`Put the current key in ${D[0]} \u2014 it is re-read on every call, so rotations take effect immediately.`:"This environment has no HOME, so no credential file could be consulted at all; the disk tier is unavailable here and this process will keep using the environment snapshot.",W=`[${_}] DEPRECATED: the API key came from ${L.key} in this process's environment. Environment variables are a snapshot taken when this process started, so a shell that started before a key rotation keeps using the old key until it exits. ${z}`,J=g.onDeprecation??xY,P=uY();if(!P.has(_))P.add(_),J(W);return N0({apiKey:L.value,tier:"legacy-env",source:L.key,deliberate:!1,deprecated:!0,diskCandidates:D,warning:W})}return null}var R6="HASNA_FLEET_API_DOMAIN",E0="your-deployment.example",mN=/[\u0000-\u001f\u007f]/,iz=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;function CU(_){if(_.length===0||_.length>253||mN.test(_)||/[^\x00-\x7f]/.test(_))return!1;return _.split(".").every(($)=>$.length<=63&&!$.startsWith("xn--")&&iz.test($))}function yY(_){let $=_[R6];if($===void 0)return{domain:E0,source:"default",misconfigured:!0,warning:`${R6} is not set; using the non-resolving ${E0} fallback.`};let g=$.trim().toLowerCase();if(mN.test($)||!CU(g))return{domain:E0,source:R6,misconfigured:!0,warning:`${R6} is blank or invalid; using the non-resolving ${E0} fallback.`};return{domain:g,source:R6,misconfigured:!1,warning:null}}function lz(_){if(_.length>63||!iz.test(_))throw Error("App name must be one lowercase DNS label.");return _}function hY(_,$){let g=`${lz(_)}.${$}`;if(!CU(g))throw Error("Composed cloud hostname must be a valid DNS domain");return g}function cY(_,$){let g=lz(_),U=yY($),D=`${g}.${U.domain}`;if(CU(D))return{baseUrl:`https://${D}`,source:U.source,misconfigured:U.misconfigured,warning:U.warning};return{baseUrl:`https://${hY(g,E0)}`,source:U.source,misconfigured:!0,warning:`${R6} cannot form a valid composed cloud hostname for app '${g}'; using the non-resolving ${E0} fallback.`}}function hN(_,$,g={}){for(let U of $){let D=_[U],I=D?.trim();if(I)return{key:U,value:g.preserveRaw?D:I}}return null}function nY(_){let $=/^[a-z][a-z0-9+.-]*:\/\//i.exec(_);if(!$)throw Error("API URL must be absolute.");let g=_.slice($[0].length),U=g.search(/[/?#]/),D=U===-1?g:g.slice(0,U);if(!D)throw Error("API URL must include a hostname.");return D}function yz(_){if(!/^[0-9]+$/.test(_)||_.length>1&&_.startsWith("0"))throw Error("API URL authority must contain a canonical port between 1 and 65535.");let $=Number(_);if(!Number.isSafeInteger($)||$<1||$>65535)throw Error("API URL authority must contain a canonical port between 1 and 65535.")}function dY(_){let $;if(_.startsWith("[")){let g=_.indexOf("]");if(g===-1)throw Error("API URL authority must contain a canonical hostname.");$=_.slice(0,g+1);let U=_.slice(g+1);if(U){if(!U.startsWith(":"))throw Error("API URL authority must contain a canonical hostname and port.");yz(U.slice(1))}if(vz($.slice(1,-1))!==6)throw Error("API URL authority must contain a canonical IPv6 literal.")}else{let g=_.indexOf(":"),U=_.lastIndexOf(":");if(g!==U)throw Error("IPv6 API URL authorities must use brackets.");if(U!==-1){let N=_.slice(U+1);yz(N),$=_.slice(0,U)}else $=_;let D=vz($),j=$.split(".").every((N)=>/^(?:0x[0-9a-f]+|[0-9]+)$/i.test(N));if(D!==4&&j||D!==4&&!CU($.toLowerCase()))throw Error("API URL authority must contain a canonical ASCII hostname.")}return $.toLowerCase()}function mY(_){return/^(?:localhost|127\.0\.0\.1|\[::1\])(?::[0-9]+)?$/i.test(_)}function tz(_){if(mN.test(_))throw Error("API URL must not contain ASCII control characters.");let $=_.trim(),g=nY($);if(g.includes("@")||g.includes("\\")||g.includes("%")||/[^\x00-\x7f]/.test(g))throw Error("API URL authority must be canonical ASCII without credentials.");let U=dY(g),D=new URL($);if(D.protocol!=="http:"&&D.protocol!=="https:")throw Error("API URL must use http or https.");if(D.username||D.password)throw Error("API URL must not include credentials.");if(!D.hostname||D.hostname.endsWith("."))throw Error("API URL must include a canonical hostname.");if(D.hostname.toLowerCase()!==U)throw Error("API URL authority must not rely on parser hostname normalization.");if(D.hostname.split(".").some((j)=>j.toLowerCase().startsWith("xn--")))throw Error("API URL must not use IDN or punycode hostnames.");if(D.protocol==="http:"&&!mY(g))throw Error("API URL may use http only for an exact loopback authority.");if(D.search||D.hash)throw Error("API URL must not include a query string or fragment.");let I=D.pathname.replace(/\/+$/,"");if(I.endsWith("/v1"))I=I.slice(0,-3);return D.pathname=`${I}/v1`,D.toString().replace(/\/+$/,"")}function iY(_,$=process.env,g={}){let U=nz(_),D=hN($,U.modeKeys),I=hN($,U.apiUrlKeys,{preserveRaw:!0}),j=hN($,U.apiKeyKeys),N="sqlite",O="default",A=[],L;if(D)N=TY(D.value).mode,O=D.key;else if(I){if(L=nN(_,$,g.credentials),L)N="postgres",O=`${I.key}+${L.source}`}if(N==="sqlite")return{transport:"sqlite",mode:N,modeSource:O,baseUrl:null,apiUrlSource:null,apiKeyPresent:Boolean(j),apiKeySource:j?j.key:null,apiKeyTier:null,misconfigured:!1,warning:A.length>0?A.join(" "):null};if(L===void 0)L=nN(_,$,g.credentials);if(!L){let P=oz(_,$);return A.push(`${O}=postgres but no API key could be resolved for '${_}'. A client reaches server data over HTTP only; refusing to route. Using the local sqlite store. Looked for a credential file at ${P}, then for ${U.apiKeyKeys[0]} in the environment.`),{transport:"sqlite",mode:N,modeSource:O,baseUrl:null,apiUrlSource:null,apiKeyPresent:!1,apiKeySource:null,apiKeyTier:null,misconfigured:!0,warning:A.join(" ")}}if(L.warning)A.push(L.warning);let z=null,W=I?.key??($[R6]===void 0?"default":R6),J;try{if(!I)z=cY(_,$),W=z.source;let P=I?.value??z.baseUrl;J=tz(P)}catch(P){let S=P instanceof Error?P.message:String(P);return A.push(`Invalid API URL from ${W}: ${S}. Using local store.`),{transport:"sqlite",mode:N,modeSource:O,baseUrl:null,apiUrlSource:null,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:!0,warning:A.join(" ")}}if(z?.warning)A.push(z.warning);return{transport:"http",mode:N,modeSource:O,baseUrl:J,apiUrlSource:W,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:z?.misconfigured??!1,warning:A.length>0?A.join(" "):null}}function oz(_,$){let g=dz(_,$);return g.length>0?g.join(" or "):""}class O0 extends Error{status;method;path;body;credentialSource;credentialTier;constructor(_,$,g,U,D){let I=D?`. ${D.guidance}`:"";super(`Hasna cloud request failed: ${_} ${$} -> ${g}${I}`);this.name="HasnaHttpError",this.status=g,this.method=_,this.path=$,this.body=U,this.credentialSource=D?.source??null,this.credentialTier=D?.tier??null}}function lY(_,$){if(typeof $==="function")return $();return fY(_,$)}function tY(_){let $=`The API key for this request came from ${_.source}`;if(_.deliberate)return`${$} \u2014 a credential you selected deliberately. It was NOT substituted with any other key: `+"falling back here would authenticate as a different principal than the one you named, which is exactly the failure an override exists to prevent. Rotate that key, or unset the override to use the credential on disk.";if(_.deprecated){let g=_.diskCandidates[0],U=g?`Write the CURRENT key to ${g} \u2014 that file is re-read on every call, so rotations take `+`effect immediately and in every shell. Do not simply unset ${_.source}: nothing was found on disk, so that would leave this client with no credential at all.`:"This environment has no HOME, so no credential file could be consulted; the disk tier is unavailable here and there is nothing to fall back to. Set HOME, or supply the key explicitly.";return`${$}, a variable in this process's environment \u2014 which is a snapshot taken when the process `+`started. A STALE SHELL is the most common cause of this error: this shell exported the key before it was rotated, and will keep sending the old one until it exits. ${U}`}return`${$}, which was re-read from disk on this very call \u2014 so a stale shell is NOT the cause here. `+"The stored credential is genuinely being rejected: rotate it, or re-run the fleet key distribution so this machine gets the current key."}var oY=[408,425,429,500,502,503,504],pY=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),eY=new Set(["host",":authority","forwarded","x-forwarded-host","x-original-host"]);function hz(_,$){if(!_)return;let g=Object.keys(_).find((U)=>eY.has(U.trim().toLowerCase()));if(g)throw Error(`Authenticated ${$} headers must not set authority header '${g}'.`)}function aY(_,$){if(!$)return _;let g=$ instanceof URLSearchParams?$:new URLSearchParams;if(!($ instanceof URLSearchParams))for(let[D,I]of Object.entries($)){if(I===null||I===void 0)continue;if(Array.isArray(I))for(let j of I)g.append(D,String(j));else g.append(D,String(I))}let U=g.toString();if(!U)return _;return`${_}${_.includes("?")?"&":"?"}${U}`}var sY=(_)=>new Promise(($)=>setTimeout($,_));function _Q(_){let $=_.fetchImpl??((A,L)=>fetch(A,L)),g=tz(_.baseUrl),U=_.timeoutMs??30000,D=_.sleepImpl??sY,I=_.retry;function j(A){let L=A!==void 0?A:I;if(L===!1)return null;let z=L??{};return{retries:z.retries??2,baseDelayMs:z.baseDelayMs??200,maxDelayMs:z.maxDelayMs??2000,retryStatuses:z.retryStatuses??[...oY]}}async function N(A,L,z,W,J,P){hz(_.headers,"transport"),hz(J.headers,"request");let S={"x-api-key":P.apiKey,Authorization:`Bearer ${P.apiKey}`,Accept:"application/json",..._.headers??{},...J.headers??{}};if(J.idempotencyKey)S["Idempotency-Key"]=J.idempotencyKey;let X={method:A,headers:S,redirect:"manual"};if(W!==void 0)S["Content-Type"]="application/json",X.body=JSON.stringify(W);let G=new AbortController,R=()=>G.abort();if(J.signal)if(J.signal.aborted)G.abort();else J.signal.addEventListener("abort",R,{once:!0});let K=setTimeout(()=>G.abort(),J.timeoutMs??U);X.signal=G.signal;let Q;try{Q=await $(z,X)}catch(V){let Z=V instanceof Error?V:Error(String(V));if(J.signal?.aborted)return{ok:!1,retryable:!1,error:Z};return{ok:!1,retryable:!0,error:Z}}finally{if(clearTimeout(K),J.signal)J.signal.removeEventListener("abort",R)}let T=await Q.text(),q=void 0;if(T.length>0)try{q=JSON.parse(T)}catch{q=T}if(!Q.ok){if(Q.status>=300&&Q.status<400)return{ok:!1,retryable:!1,error:new O0(A,L,Q.status,q)};if(Q.status===401||Q.status===403)return{ok:!1,retryable:!1,error:new O0(A,L,Q.status,q,{source:P.source,tier:P.tier,guidance:tY(P)})};let V=j(J.retry);return{ok:!1,retryable:V?V.retryStatuses.includes(Q.status):!1,error:new O0(A,L,Q.status,q)}}return{ok:!0,value:q}}async function O(A,L,z,W={}){let J=A.toUpperCase(),P=aY(L.startsWith("/")?L:`/${L}`,W.query),S=`${g}${P}`,X=j(W.retry),G=pY.has(J)||Boolean(W.idempotencyKey),R=X&&G?X.retries+1:1,K=lY(_.name,_.apiKey),Q=null;for(let T=1;T<=R;T++){let q=await N(J,P,S,z,W,K);if(q.ok)return q.value;if(Q=q,!(X!==null&&G&&q.retryable&&TO("GET",A,void 0,L),post:(A,L,z)=>O("POST",A,L,z),put:(A,L,z)=>O("PUT",A,L,z),patch:(A,L,z)=>O("PATCH",A,L,z),del:(A,L,z)=>O("DELETE",A,L,z)}}function $Q(_,$=process.env,g){let U=g?.credentials,D=iY(_,$,{...U?{credentials:U}:{}});if(D.misconfigured)throw Error(D.warning??`Client for '${_}' is misconfigured for the API client.`);if(D.transport==="sqlite"||!D.baseUrl)return{transport:"sqlite",client:null,resolution:D};let I=()=>{let j=nN(_,$,U);if(!j)throw Error(`Client for '${_}' resolved to the http transport but no API key is available any more. Looked at ${oz(_,$)}, then the environment. A credential file that was removed after this client was built is the usual cause.`);return j};return{transport:"http",client:_Q({name:_,baseUrl:D.baseUrl,apiKey:I,...g?.fetchImpl?{fetchImpl:g.fetchImpl}:{},...g?.headers?{headers:g.headers}:{},...g?.timeoutMs?{timeoutMs:g.timeoutMs}:{},...g?.retry!==void 0?{retry:g.retry}:{},...g?.sleepImpl?{sleepImpl:g.sleepImpl}:{}}),resolution:D}}function dN(_){let $=_.replace(/^\/+|\/+$/g,"");if(!$)throw Error("resource must be a non-empty path segment");return`/${$}`}function cN(_,$){if($===void 0||$===null||`${$}`.length===0)throw Error("id must be a non-empty string");return`${dN(_)}/${encodeURIComponent(String($))}`}function gQ(){let _=globalThis;if(_.crypto?.randomUUID)return _.crypto.randomUUID();return`idmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function DQ(_){if(Array.isArray(_))return _;if(_&&typeof _==="object"){let $=_;for(let g of["items","data","results","rows","records"])if(Array.isArray($[g]))return $[g]}return[]}function UQ(_){if(_&&typeof _==="object"){let $=_;for(let g of["total","count","totalCount","total_count"])if(typeof $[g]==="number")return $[g]}return null}function IQ(_){if(_&&typeof _==="object"){let $=_;for(let g of["cursor","nextCursor","next_cursor","next"])if(typeof $[g]==="string")return $[g]}return null}function jQ(_,$){return{name:_,baseUrl:$.baseUrl,transport:$,async list(g,U={}){let D=await $.get(dN(g),U);return{items:DQ(D),total:UQ(D),cursor:IQ(D),raw:D}},async get(g,U,D={}){try{return await $.get(cN(g,U),D)}catch(I){if(I instanceof O0&&I.status===404)return null;throw I}},async create(g,U,D={}){let{idempotencyKey:I,...j}=D;return $.post(dN(g),U,{...j,idempotencyKey:I??gQ()})},async update(g,U,D,I={}){let{method:j="PATCH",idempotencyKey:N,...O}=I;return(j==="PUT"?$.put:$.patch)(cN(g,U),D,{...O,...N?{idempotencyKey:N}:{}})},async delete(g,U,D={}){try{await $.del(cN(g,U),void 0,D)}catch(I){if(I instanceof O0&&I.status===404)return;throw I}}}}function iN(_,$=process.env,g){let U=$Q(_,$,g);if(U.transport==="http")return{transport:"http",client:jQ(_,U.client)};return{transport:"sqlite",client:null}}function NQ(_){return _.toUpperCase().replace(/-/g,"_")}function pz(_){let $=NQ(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function vg(_){let $=_.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return{mode:"sqlite"};if($==="postgres"||$==="postgresql")return{mode:"postgres"};throw Error(`Unknown storage mode '${_}'. The runtime-placement axis was removed; set sqlite for the on-box SQLite file or postgres for a PostgreSQL server (DATABASE_URL).`)}function rU(_){let $=_.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return{mode:"sqlite"};if($==="postgres"||$==="postgresql")return{mode:"postgres"};throw Error(`Unknown storage mode '${_}'. The runtime-placement axis was removed; set sqlite for the on-box SQLite file or postgres for a PostgreSQL server (DATABASE_URL).`)}import Df from"pg";class vU extends Error{scheme;port;constructor(_,$){super(_);this.name="KnowledgeNetworkGuardError",this.scheme=$.scheme,this.port=$.port}}function A0(_=process.env){return(_.NODE_ENV??"").trim().toLowerCase()==="test"}function ez(_){let $=_.split(".");if($.length!==4)return!1;if(!$.every((g)=>/^\d{1,3}$/.test(g)&&Number(g)<=255))return!1;return $[0]==="127"}function JQ(_){let $=_.trim().toLowerCase();if($.length===0)return!1;if($==="localhost"||$.endsWith(".localhost"))return!0;if(ez($))return!0;if(!$.startsWith("[")||!$.endsWith("]"))return!1;let g=$.slice(1,-1);if(g==="::1"||/^(0:){7}1$/.test(g))return!0;let U=g.split(":").pop()??"";if(/^(::ffff:|::)/.test(g)&&ez(U))return!0;return/^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(g)}function _S(_){if(typeof _==="string")return _;if(_ instanceof URL)return _.href;return _.url}function az(_,$=process.env){if(!A0($))return;let g=_S(_),U;try{U=new URL(g)}catch{throw new vU("knowledge: refused an outbound request with an unparseable target while NODE_ENV=test. Under test, only loopback requests are permitted.",{scheme:"unknown",port:""})}if(JQ(U.hostname))return;throw new vU(`knowledge: refused a non-loopback ${U.protocol.replace(":","")} request while NODE_ENV=test (target host withheld on purpose). This process resolved to the cloud backend under test, which means a read or write was about to leave the machine and reach the live store. Select the mode explicitly (HASNA_KNOWLEDGE_STORAGE_MODE=sqlite) or point the API URL at 127.0.0.1 for a hermetic test.`,{scheme:U.protocol.replace(":",""),port:U.port})}var PQ=new Set([301,302,303,307,308]),sz=5;function zQ(_,$){if($?.method)return $.method.toUpperCase();if(typeof _!=="string"&&!(_ instanceof URL))return _.method.toUpperCase();return"GET"}async function wU(_,$){if(az(_),!A0()||$?.redirect!==void 0)return fetch(_,$);let g=_S(_),U=zQ(_,$),D=$?.body,I=await fetch(_,{...$??{},redirect:"manual"});for(let j=0;PQ.has(I.status);j++){let N=I.headers.get("location");if(!N)return I;let O=new URL(N,g).href;if(az(O),j>=sz){let L=new URL(O);throw new vU(`knowledge: refused to follow more than ${sz} redirects while NODE_ENV=test (target host withheld on purpose). Under test the guard follows redirects itself so every hop is checked, and a chain this long is a loop, not a route.`,{scheme:L.protocol.replace(":",""),port:L.port})}if(I.status===303||(I.status===301||I.status===302)&&U!=="GET"&&U!=="HEAD")U="GET",D=void 0;let A={...$??{},method:U,redirect:"manual"};if(D===void 0)delete A.body;else A.body=D;I=await fetch(O,A),g=O}return I}var uU="knowledge",lN=pz(uU),o$=lN.modeKeys,xU=lN.apiUrlKeys,yU=lN.apiKeyKeys;function fU(_,$){return $.filter((g)=>(_[g]??"").trim().length>0)}function wg(_=process.env){let $=[...fU(_,xU),...fU(_,yU)],g=o$[0];for(let U of o$){let D=_[U]?.trim();if(!D)continue;let I;try{I=rU(D)}catch(N){let O=N instanceof Error?N.message:String(N);throw Error(`knowledge: ${U}=${D} is not a valid mode. ${O}`)}let j=[];if(U!==g)j.push(`Using alias env ${U}; the canonical key is ${g}.`);if(I.mode==="sqlite"&&$.length>0)j.push(`${U}=sqlite pins the on-box store; ${$.join(", ")} are set but ignored.`);return{mode:I.mode,source:{kind:"env",name:U,value:D},pointer_env_present:$,pointer_ignored:I.mode==="sqlite"&&$.length>0,warning:j.length>0?j.join(" "):null}}return{mode:"sqlite",source:{kind:"default",name:null,value:null},pointer_env_present:$,pointer_ignored:$.length>0,warning:$.length>0?`${$.join(", ")} are set but do NOT select a backend: mode is sqlite by default. Set ${g}=postgres to route reads and writes to the API, or unset those vars to silence this note.`:null}}var SQ=["postgres"],WQ=["sqlite"],$S=new Map;function gS(_,$,g){let U=$===vg;if(U){let D=$S.get(_);if(D!==void 0)return D}for(let D of _)try{if($(D),U)$S.set(_,D);return D}catch{}throw Error(`knowledge: no known storage token is accepted by the installed @hasna/contracts (tried ${_.join(", ")}). The storage-mode enum has changed; add the new token to ${g} in src/knowledge-mode.ts.`)}function XQ(_=vg){return gS(SQ,_,"SERVER_MODE_CANDIDATES")}function RQ(_=vg){return gS(WQ,_,"LOCAL_MODE_CANDIDATES")}function GQ(_,$=vg){return _==="postgres"?XQ($):RQ($)}function tN(_,$){return{..._,[o$[0]]:GQ($)}}class DS extends Error{code="knowledge_mode_unset_with_api_url";constructor(_){let $=o$[0];super(`knowledge: ${_.join(", ")} names an API store, but no mode variable says to use it, so this command would silently read and write the on-box store instead. Set ${$}=postgres to use the API, or ${$}=sqlite to confirm you want the on-box store. Run 'knowledge mode' to see the full resolution.`);this.name="HalfConfiguredKnowledgeClientError"}}function US(_=process.env,$={}){let g=wg(_);if($.storePathOverridden)return g;if(g.source.kind!=="default")return g;let U=fU(_,xU);if(U.length===0)return g;throw new DS(U)}function IS(_=process.env){let $=wg(_);return{...$,store_transport:$.mode==="postgres"?"api":"local",api_key_present:fU(_,yU).length>0,network_guard_active:A0(_)}}function jS(_){return{fetchImpl:wU,...A0(_)?{retry:!1}:{}}}var G6="notes";class L0 extends Error{expected;current;code="version_conflict";constructor(_,$){super(`version_conflict: this edit was written against version ${_} but the stored entry is now at version ${$}. Nothing was written. Re-read the entry and re-apply only if the fields you are changing are untouched between the two versions.`);this.expected=_;this.current=$;this.name="KnowledgeVersionConflictError"}}function YQ(_){let $={};if(_.search)$.search=_.search;if(_.limit!==void 0)$.limit=_.limit;if(_.offset!==void 0)$.offset=_.offset;if(_.includeArchived||_.archivedOnly)$.includeArchived=!0;return $}function QQ(_){return{baseUrl:_.baseUrl,async list($={}){let g=$.limit??200,U=YQ({...$,limit:Math.min(Math.max(g,1),200)}),D=await _.list(G6,{query:U}),I=D.items;if($.archivedOnly)I=I.filter((j)=>j.archived===!0);if($.tag){let j=$.tag.toLowerCase();I=I.filter((N)=>(N.tags??[]).some((O)=>O.toLowerCase()===j))}return{items:I,total:D.total}},async get($){return _.get(G6,$)},async create($){return _.create(G6,{...$.id?{id:$.id}:{},title:$.title,content:$.content,url:$.url??null,tags:$.tags??[],...$.metadata?{metadata:$.metadata}:{}})},async update($,g,U={}){try{return await _.update(G6,$,g,{...U.expectedVersion!==void 0?{headers:{"if-match":String(U.expectedVersion)}}:{}})}catch(D){if(oN(D))return null;let I=TQ(D);if(I)throw I;throw D}},async delete($){let g=await _.get(G6,$);if(!g)return!1;return await _.delete(G6,g.id),!0},async listVersions($,g={}){try{return await _.transport.get(`/${G6}/${encodeURIComponent($)}/versions`,{query:{limit:g.limit,offset:g.offset}})}catch(U){if(oN(U))return null;throw U}},async getVersion($,g){try{return await _.transport.get(`/${G6}/${encodeURIComponent($)}/versions/${g}`)}catch(U){if(oN(U))return null;throw U}}}}function TQ(_){if(!_||typeof _!=="object")return null;if(_.status!==409)return null;let $=_.body,U=(typeof $==="string"?qQ($):$)??{};if(U.error!=="version_conflict")return null;return new L0(Number(U.expected??0),Number(U.current??0))}function qQ(_){try{return JSON.parse(_)}catch{return null}}function oN(_){return Boolean(_&&typeof _==="object"&&_.status===404)}function fg(_=process.env){if(wg(_).mode!=="postgres")return null;let $=iN(uU,tN(_,"postgres"),jS(_));if($.transport!=="http")return null;return QQ($.client)}function Y6(_=process.env){if(wg(_).mode!=="postgres")return!1;return iN(uU,tN(_,"postgres"),jS(_)).transport==="http"}async function hU(_){let g=[];for(let U=0;;U+=200){let{items:D}=await _.list({includeArchived:!0,limit:200,offset:U});if(g.push(...D),D.length<200)break;if(U>1e5)break}return g}class eN extends Error{location;code="version_history_unsupported";constructor(_){super(`Version history is not kept by the local JSON knowledge store (${_}). It has no version line, so an empty history here would be a claim, not a measurement. Entry versioning lives in the Postgres-backed store: point this CLI at it (HASNA_KNOWLEDGE_STORAGE_MODE=postgres plus the API url/key) and re-run.`);this.location=_;this.name="VersionHistoryUnsupportedError"}}function pN(_,$){return _.id===$||_.short_id===$}class NS{storePath;kind="local";supportsVersions=!1;constructor(_){this.storePath=_}async listVersions(){throw new eN(this.storePath)}async getVersion(){throw new eN(this.storePath)}get location(){return this.storePath}get exists(){return BQ(this.storePath)}async listAll(){let _=I0(this.storePath);return{items:_.items,exists:_.exists}}async get(_){return I0(this.storePath).items.find((g)=>pN(g,_))??null}async create(_){return v$(this.storePath,()=>{let $=Cg(this.storePath),g=new Date().toISOString(),U=_.id??Cz(),D={id:U,short_id:rz(U),title:_.title,content:_.content,url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:!1,created_at:g,updated_at:g,version:1};return $.items.push(D),t$(this.storePath,$),D},{createParent:!0})}async update(_,$,g={}){return v$(this.storePath,()=>{let U=Cg(this.storePath),D=U.items.findIndex((N)=>pN(N,_));if(D===-1)return null;let I=U.items[D],j=I.version??1;if(g.expectedVersion!==void 0&&g.expectedVersion!==j)throw new L0(g.expectedVersion,j);if($.title!==void 0)I.title=$.title;if($.content!==void 0)I.content=$.content;if($.url!==void 0)I.url=$.url;if($.tags!==void 0)I.tags=$.tags;if($.metadata!==void 0)I.metadata=$.metadata;if($.archived!==void 0)I.archived=$.archived;return I.updated_at=new Date().toISOString(),I.version=j+1,U.items[D]=I,t$(this.storePath,U),I},{createParent:!0})}async delete(_){return v$(this.storePath,()=>{let $=Cg(this.storePath),g=$.items.length;$.items=$.items.filter((D)=>!pN(D,_));let U=g!==$.items.length;if(U)t$(this.storePath,$);return U},{createParent:!0})}async deleteMany(_){if(_.length===0)return 0;let $=new Set(_);return v$(this.storePath,()=>{let g=Cg(this.storePath),U=g.items.length;g.items=g.items.filter((I)=>!$.has(I.id)&&!(I.short_id!=null&&$.has(I.short_id)));let D=U-g.items.length;if(D>0)t$(this.storePath,g);return D},{createParent:!0})}}class ES{cloud;kind="api";exists=!0;supportsVersions=!0;constructor(_){this.cloud=_}async listVersions(_,$={}){return this.cloud.listVersions(_,$)}async getVersion(_,$){return this.cloud.getVersion(_,$)}get location(){return this.cloud.baseUrl}async listAll(){return{items:await hU(this.cloud),exists:!0}}async get(_){return this.cloud.get(_)}async create(_){return this.cloud.create({..._.id?{id:_.id}:{},title:_.title,content:_.content,url:_.url??null,tags:_.tags??[],..._.metadata?{metadata:_.metadata}:{}})}async update(_,$,g={}){return this.cloud.update(_,$,{expectedVersion:g.expectedVersion})}async delete(_){return this.cloud.delete(_)}async deleteMany(_){let $=0;for(let g of _)if(await this.cloud.delete(g))$+=1;return $}}function cU(_){let $=_.storePathOverridden?null:fg(_.env??process.env);if($)return new ES($);return new NS(_.storePath)}function OS(_){let $=_??"";if($==="")return[];return $.replace(/\n$/,"").split(` -`)}var aN=5000;function KQ(_,$){let g=OS(_),U=OS($);if(g.length>aN||U.length>aN)throw Error(`Refusing to line-diff ${Math.max(g.length,U.length)} lines (limit ${aN}). Fetch the two versions and diff them with a dedicated tool.`);let D=Array.from({length:g.length+1},()=>Array(U.length+1).fill(0));for(let O=g.length-1;O>=0;O-=1)for(let A=U.length-1;A>=0;A-=1)D[O][A]=g[O]===U[A]?D[O+1][A+1]+1:Math.max(D[O+1][A],D[O][A+1]);let I=[],j=0,N=0;while(j=D[j][N+1])I.push({op:"remove",from_line:j+1,to_line:null,text:g[j]}),j+=1;else I.push({op:"add",from_line:null,to_line:N+1,text:U[N]}),N+=1;while(j{if(!VQ(_[N],$[N]))g.push({field:N,from:_[N]??null,to:$[N]??null})};U("title"),U("url"),U("tags"),U("metadata"),U("archived");let D=KQ(_.content,$.content),I=D.filter((N)=>N.op==="add").length,j=D.filter((N)=>N.op==="remove").length;return{identical:g.length===0&&I===0&&j===0,fields:g,content:D,added:I,removed:j}}function LS(_,$,g){let U=[`--- ${$}`,`+++ ${g}`];if(_.identical)return U.push("(no changes)"),U.join(` -`);for(let D of _.fields)U.push(`~ ${D.field}: ${JSON.stringify(D.from)} -> ${JSON.stringify(D.to)}`);if(_.added===0&&_.removed===0){if(_.fields.length>0)U.push("(content unchanged)")}else{U.push(`@@ content +${_.added} -${_.removed} @@`);for(let D of _.content){let I=D.op==="add"?"+":D.op==="remove"?"-":" ";U.push(`${I}${D.text}`)}}return U.join(` -`)}import{Database as JS}from"bun:sqlite";function nU(_="catalog"){if(Y6()){let $=o$[0];throw Error(`knowledge: ${_} builds/reads the on-box sqlite RAG catalog (source ingestion, chunk embeddings, wiki compilation, cross-machine sync, machine registry). That local indexing pipeline is not available in cloud mode. In cloud mode the shared corpus is the cloud knowledge-items: 'add/list/get/update/delete' item commands AND 'search/ask/build/context' over that shared corpus all route to the cloud. Set ${$}=local `+"(or unset it \u2014 local is the default) to use the full local catalog pipeline; run 'knowledge mode' to see "+"which variable selected the current backend.")}}var FQ="porter unicode61 remove_diacritics 2",PS=` +`),this.outputHelp({error:!0});let D=$||{},g=D.exitCode||1,U=D.code||"commander.error";this._exit(g,U,_)}_parseOptionsEnv(){this.options.forEach((_)=>{if(_.envVar&&_.envVar in E_.env){let $=_.attributeName();if(this.getOptionValue($)===void 0||["default","config","env"].includes(this.getOptionValueSource($)))if(_.required||_.optional)this.emit(`optionEnv:${_.name()}`,E_.env[_.envVar]);else this.emit(`optionEnv:${_.name()}`)}})}_parseOptionsImplied(){let _=new Jf(this.options),$=(D)=>{return this.getOptionValue(D)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(D))};this.options.filter((D)=>D.implied!==void 0&&$(D.attributeName())&&_.valueFromOption(this.getOptionValue(D.attributeName()),D)).forEach((D)=>{Object.keys(D.implied).filter((g)=>!$(g)).forEach((g)=>{this.setOptionValueWithSource(g,D.implied[g],"implied")})})}missingArgument(_){let $=`error: missing required argument '${_}'`;this.error($,{code:"commander.missingArgument"})}optionMissingArgument(_){let $=`error: option '${_.flags}' argument missing`;this.error($,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(_){let $=`error: required option '${_.flags}' not specified`;this.error($,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(_,$){let D=(I)=>{let j=I.attributeName(),N=this.getOptionValue(j),O=this.options.find((L)=>L.negate&&j===L.attributeName()),A=this.options.find((L)=>!L.negate&&j===L.attributeName());if(O&&(O.presetArg===void 0&&N===!1||O.presetArg!==void 0&&N===O.presetArg))return O;return A||I},g=(I)=>{let j=D(I),N=j.attributeName();if(this.getOptionValueSource(N)==="env")return`environment variable '${j.envVar}'`;return`option '${j.flags}'`},U=`error: ${g(_)} cannot be used with ${g($)}`;this.error(U,{code:"commander.conflictingOption"})}unknownOption(_){if(this._allowUnknownOption)return;let $="";if(_.startsWith("--")&&this._showSuggestionAfterError){let g=[],U=this;do{let I=U.createHelp().visibleOptions(U).filter((j)=>j.long).map((j)=>j.long);g=g.concat(I),U=U.parent}while(U&&!U._enablePositionalOptions);$=BR(_,g)}let D=`error: unknown option '${_}'${$}`;this.error(D,{code:"commander.unknownOption"})}_excessArguments(_){if(this._allowExcessArguments)return;let $=this.registeredArguments.length,D=$===1?"":"s",U=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${$} argument${D} but got ${_.length}.`;this.error(U,{code:"commander.excessArguments"})}unknownCommand(){let _=this.args[0],$="";if(this._showSuggestionAfterError){let g=[];this.createHelp().visibleCommands(this).forEach((U)=>{if(g.push(U.name()),U.alias())g.push(U.alias())}),$=BR(_,g)}let D=`error: unknown command '${_}'${$}`;this.error(D,{code:"commander.unknownCommand"})}version(_,$,D){if(_===void 0)return this._version;this._version=_,$=$||"-V, --version",D=D||"output the version number";let g=this.createOption($,D);return this._versionOptionName=g.attributeName(),this._registerOption(g),this.on("option:"+g.name(),()=>{this._outputConfiguration.writeOut(`${_} +`),this._exit(0,"commander.version",_)}),this}description(_,$){if(_===void 0&&$===void 0)return this._description;if(this._description=_,$)this._argsDescription=$;return this}summary(_){if(_===void 0)return this._summary;return this._summary=_,this}alias(_){if(_===void 0)return this._aliases[0];let $=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)$=this.commands[this.commands.length-1];if(_===$._name)throw Error("Command alias can't be the same as its name");let D=this.parent?._findCommand(_);if(D){let g=[D.name()].concat(D.aliases()).join("|");throw Error(`cannot add alias '${_}' to command '${this.name()}' as already have command '${g}'`)}return $._aliases.push(_),this}aliases(_){if(_===void 0)return this._aliases;return _.forEach(($)=>this.alias($)),this}usage(_){if(_===void 0){if(this._usage)return this._usage;let $=this.registeredArguments.map((D)=>{return Of(D)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?$:[]).join(" ")}return this._usage=_,this}name(_){if(_===void 0)return this._name;return this._name=_,this}nameFromFilename(_){return this._name=S6.basename(_,S6.extname(_)),this}executableDir(_){if(_===void 0)return this._executableDir;return this._executableDir=_,this}helpInformation(_){let $=this.createHelp(),D=this._getOutputContext(_);$.prepareContext({error:D.error,helpWidth:D.helpWidth,outputHasColors:D.hasColors});let g=$.formatHelp(this,$);if(D.hasColors)return g;return this._outputConfiguration.stripColor(g)}_getOutputContext(_){_=_||{};let $=!!_.error,D,g,U;if($)D=(j)=>this._outputConfiguration.writeErr(j),g=this._outputConfiguration.getErrHasColors(),U=this._outputConfiguration.getErrHelpWidth();else D=(j)=>this._outputConfiguration.writeOut(j),g=this._outputConfiguration.getOutHasColors(),U=this._outputConfiguration.getOutHelpWidth();return{error:$,write:(j)=>{if(!g)j=this._outputConfiguration.stripColor(j);return D(j)},hasColors:g,helpWidth:U}}outputHelp(_){let $;if(typeof _==="function")$=_,_=void 0;let D=this._getOutputContext(_),g={error:D.error,write:D.write,command:this};this._getCommandAndAncestors().reverse().forEach((I)=>I.emit("beforeAllHelp",g)),this.emit("beforeHelp",g);let U=this.helpInformation({error:D.error});if($){if(U=$(U),typeof U!=="string"&&!Buffer.isBuffer(U))throw Error("outputHelp callback must return a string or a Buffer")}if(D.write(U),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",g),this._getCommandAndAncestors().forEach((I)=>I.emit("afterAllHelp",g))}helpOption(_,$){if(typeof _==="boolean"){if(_)this._helpOption=this._helpOption??void 0;else this._helpOption=null;return this}return _=_??"-h, --help",$=$??"display help for command",this._helpOption=this.createOption(_,$),this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(_){return this._helpOption=_,this}help(_){this.outputHelp(_);let $=Number(E_.exitCode??0);if($===0&&_&&typeof _!=="function"&&_.error)$=1;this._exit($,"commander.help","(outputHelp)")}addHelpText(_,$){let D=["beforeAll","before","after","afterAll"];if(!D.includes(_))throw Error(`Unexpected value for position to addHelpText. +Expecting one of '${D.join("', '")}'`);let g=`${_}Help`;return this.on(g,(U)=>{let I;if(typeof $==="function")I=$({error:U.error,command:U.command});else I=$;if(I)U.write(`${I} +`)}),this}_outputHelpIfRequested(_){let $=this._getHelpOption();if($&&_.find((g)=>$.is(g)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function qR(_){return _.map(($)=>{if(!$.startsWith("--inspect"))return $;let D,g="127.0.0.1",U="9229",I;if((I=$.match(/^(--inspect(-brk)?)$/))!==null)D=I[1];else if((I=$.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(D=I[1],/^\d+$/.test(I[3]))U=I[3];else g=I[3];else if((I=$.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)D=I[1],g=I[3],U=I[4];if(D&&U!=="0")return`${D}=${g}:${parseInt(U)+1}`;return $})}function Oz(){if(E_.env.NO_COLOR||E_.env.FORCE_COLOR==="0"||E_.env.FORCE_COLOR==="false")return!1;if(E_.env.FORCE_COLOR||E_.env.CLICOLOR_FORCE!==void 0)return!0;return}Pf.Command=Az;Pf.useColor=Oz});var ZR=e6((Gf)=>{var{Argument:FR}=WN(),{Command:Lz}=VR(),{CommanderError:Wf,InvalidArgumentError:KR}=Vg(),{Help:Xf}=Iz(),{Option:MR}=jz();Gf.program=new Lz;Gf.createCommand=(_)=>new Lz(_);Gf.createOption=(_,$)=>new MR(_,$);Gf.createArgument=(_,$)=>new FR(_,$);Gf.Command=Lz;Gf.Option=MR;Gf.Argument=FR;Gf.Help=Xf;Gf.CommanderError=Wf;Gf.InvalidArgumentError=KR;Gf.InvalidOptionArgumentError=KR});import{chmodSync as bz,closeSync as bD,existsSync as g0,fsyncSync as vN,lstatSync as BY,openSync as fN,readFileSync as HD,renameSync as Hz,unlinkSync as wN,writeFileSync as rN}from"fs";import{randomUUID as kD}from"crypto";import{basename as qY,dirname as kz,join as CN}from"path";import{chmodSync as Qz,existsSync as GY,mkdirSync as FN,readFileSync as RY,writeFileSync as Tz}from"fs";import{homedir as KN}from"os";import{dirname as YY,join as x_,resolve as Bz}from"path";var l$=x_(".hasna","knowledge"),qz=x_(".hasna","apps","knowledge"),P_={division:"xyz",app_type:"opensource",app:"knowledge",env:"prod",local_path:l$,s3:{bucket:"example-knowledge-prod",region:"us-east-1",profile:"example-infra",prefix:".hasna/knowledge",server_side_encryption:"AES256"},secrets:{env:"example/knowledge/prod/env",aws:"example/knowledge/prod/aws",s3:"example/knowledge/prod/s3",rds:null,future_rds:"example/knowledge/prod/rds"},source_owner:"open-files",evidence_doc:"docs/canonical-secrets-bootstrap-2026-06-08.md"};function Vz(){return{type:"s3",artifacts_root:"artifacts",s3:{bucket:P_.s3.bucket,prefix:P_.s3.prefix,region:P_.s3.region,profile:P_.s3.profile,server_side_encryption:P_.s3.server_side_encryption}}}function MD(){return x_(KN(),".open-knowledge","db.json")}function bg(){return x_(KN(),".hasna","knowledge")}function MN(_=process.cwd()){return Bz(_,l$)}function QY(){return x_(KN(),qz)}function TY(_=process.cwd()){return Bz(_,qz)}function ZN(_,$=process.cwd()){if(_==="project"||_==="local")return U$(TY($));return U$(QY())}function U$(_){return{home:_,configPath:x_(_,"config.json"),jsonStorePath:x_(_,"db.json"),knowledgeDbPath:x_(_,"knowledge.db"),artifactsDir:x_(_,"artifacts"),cacheDir:x_(_,"cache"),exportsDir:x_(_,"exports"),indexesDir:x_(_,"indexes"),logsDir:x_(_,"logs"),runsDir:x_(_,"runs"),schemasDir:x_(_,"schemas"),wikiDir:x_(_,"wiki")}}function ZD(){return{version:1,mode:"local",hosted:{api_url:"https://knowledge.md"},storage:{type:"local",artifacts_root:"artifacts"},sources:{preferred_ref:"open-files",allowed_schemes:["open-files","s3","file","https","http"]},providers:{default_model:"openai:gpt-5.2",aliases:{fast:"openai:gpt-5-mini",reasoning:"anthropic:claude-opus-4-6",sonnet:"anthropic:claude-sonnet-4-6",deepseek:"deepseek:deepseek-chat","deepseek-reasoning":"deepseek:deepseek-reasoner"},openai:{api_key_env:"OPENAI_API_KEY",default_model:"gpt-5.2"},anthropic:{api_key_env:"ANTHROPIC_API_KEY",default_model:"claude-sonnet-4-6"},deepseek:{api_key_env:"DEEPSEEK_API_KEY",default_model:"deepseek-chat"}},embeddings:{default_model:"openai:text-embedding-3-small",dimensions:1536,batch_size:64,max_parallel_calls:4},safety:{network:{web_search_enabled:!1,s3_reads_enabled:!1,allowed_s3_buckets:[]},redaction:{enabled:!0},approvals:{generated_writes_require_approval:!0}}}}function U0(_){let $=U$(_);FN($.home,{recursive:!0,mode:448});for(let D of[$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir])FN(D,{recursive:!0,mode:448});if(!GY($.configPath))Tz($.configPath,`${JSON.stringify(ZD(),null,2)} +`,{mode:384}),Qz($.configPath,384);return $}function Hg(_,$=process.cwd()){if(_==="project"||_==="local")return U$(MN($));return U$(bg())}function X6(_){FN(YY(_),{recursive:!0})}function bN(_){let $=RY(_,"utf8");return JSON.parse($)}function Fz(_,$){X6(_),Tz(_,`${JSON.stringify($,null,2)} +`,{mode:384}),Qz(_,384)}function Cz(_,$){if(!$)return!0;let D=$.toLowerCase();return _.id.toLowerCase().includes(D)||_.title.toLowerCase().includes(D)||_.content.toLowerCase().includes(D)}function Cg(){return U$(bg()).jsonStorePath}function CD(_){if(_===Cg()&&g0(MD()))xN();if(!g0(_))X6(_),wz(_,`${JSON.stringify({items:[]},null,2)} +`)}function VY(_){return _.toISOString().replace(/[:.]/g,"-")}function uN(_){let $=[`id:${_.id}`];if(typeof _.short_id==="string"&&_.short_id.length>0)$.push(`short_id:${_.short_id}`);return $}function FY(_){let $=new Set;for(let D of _)for(let g of uN(D))$.add(g);return $}function KY(_,$){return uN($).some((D)=>_.has(D))}function HN(_,$){X6(_),rN(_,`${JSON.stringify($,null,2)} +`,{mode:384}),bz(_,384)}function Kz(_){let $=JSON.parse(HD(_,"utf8"));if(!$||typeof $!=="object"||!Array.isArray($.items))return{store:{items:[]},skippedInvalid:0};let D={items:[]},g=0;for(let U of $.items)if(U&&typeof U==="object"&&typeof U.id==="string"&&U.id.length>0)D.items.push(U);else g+=1;return{store:D,skippedInvalid:g}}function xN(_={}){if(_.dryRun===!0)return Mz(_);return f$(Cg(),()=>Mz(_),{createParent:!0})}function Mz(_={}){let $=_.dryRun===!0,D=_.now??new Date,g=U$(bg()),U=MD(),I=g.jsonStorePath,j=g0(U),N=g0(I),O={ok:!0,dry_run:$,legacy_path:U,canonical_path:I,legacy_exists:j,canonical_existed:N,canonical_created:!1,would_create_canonical:!1,imported:0,skipped_existing:0,skipped_invalid:0,backup_path:null,report_path:null,errors:[],message:j?"Legacy global store already imported":"No legacy global store found"};if(!j)return O;let A;try{let P=Kz(U);A=P.store,O.skipped_invalid=P.skippedInvalid}catch(P){return O.ok=!1,O.errors.push(`Could not read legacy store: ${P instanceof Error?P.message:String(P)}`),O.message="Legacy global store import failed",O}let L={items:[]};if(N)try{L=Kz(I).store}catch(P){return O.ok=!1,O.errors.push(`Could not read canonical store: ${P instanceof Error?P.message:String(P)}`),O.message="Legacy global store import failed",O}let z=FY(L.items),W={items:[...L.items]};for(let P of A.items){if(!P?.id){O.skipped_invalid+=1;continue}if(KY(z,P)){O.skipped_existing+=1;continue}W.items.push(P);for(let S of uN(P))z.add(S);O.imported+=1}if(O.would_create_canonical=!N&&O.imported>0,O.canonical_created=!$&&O.would_create_canonical,O.message=O.imported>0?`Imported ${O.imported} legacy item(s) into canonical knowledge store`:"Legacy global store already imported",$||O.imported===0)return O;let J=`${VY(D)}-${kD().slice(0,8)}`;if(N)O.backup_path=CN(g.exportsDir,`legacy-open-knowledge-db-before-import-${J}.json`),HN(O.backup_path,L);return HN(I,W),O.report_path=CN(g.runsDir,`legacy-open-knowledge-import-${J}.json`),HN(O.report_path,O),O}function I0(_){if(!g0(_))return{exists:!1,items:[]};let $=HD(_,"utf8"),D=JSON.parse($);if(!D||!Array.isArray(D.items))return{exists:!0,items:[]};return{exists:!0,items:D.items}}function MY(_){return`${_}.lock`}var kg=1e4,vz=25,Zz=120000,ZY=new Int32Array(new SharedArrayBuffer(4));function yN(_){return typeof _==="object"&&_!==null&&"code"in _?String(_.code):void 0}function fz(_){let $=null;try{$=fN(kz(_),"r"),vN($)}catch{}finally{if($!==null)try{bD($)}catch{}}}var kN=new Set;function wz(_,$){X6(_);let D=CN(kz(_),`.${qY(_)}.tmp.${kD()}`),g=null;try{g=fN(D,"wx",384),rN(g,$),vN(g),bD(g),g=null,Hz(D,_);try{bz(_,384)}catch{}fz(_)}catch(U){if(g!==null)try{bD(g)}catch{}try{wN(D)}catch{}throw U}}function rz(_){Atomics.wait(ZY,0,0,_)}function bY(_){if(typeof _!=="number"||!Number.isInteger(_)||_<=0)return!1;try{return process.kill(_,0),!0}catch($){return yN($)!=="ESRCH"}}function uz(_,$){try{let D=HD(_,"utf8"),g=JSON.parse(D);if(typeof g.ts==="number")return $-g.ts>Zz&&!bY(g.pid)}catch{}try{return $-BY(_).mtimeMs>Zz}catch{return!1}}function HY(_){let $=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z"),D=`${_}.stale.${$}.${kD()}`;try{Hz(_,D)}catch(g){if(yN(g)!=="ENOENT")throw g;return}}function kY(_){let $=kD(),D=`${_}.breaker`,g=Date.now();while(Date.now()-g{g=I};while(Date.now()-DdY)return null;D=uY(_,"utf8")}catch{return null}let g=oY(D);for(let U of $){let I=g.get(U)?.trim();if(I)return I}return null}function j0(_,$,D){if(!lY.test(D))return;throw new fD(_,`The credential from ${$} contains characters that cannot be sent in an HTTP header (a control character or non-ASCII byte). A file written with CR-only line endings is the usual cause. Rewrite that credential file with one LF-terminated KEY=value line. The value is not shown here, and is deliberately never logged.`,[$])}var pY=Symbol.for("nodejs.util.inspect.custom");function N0(_){let{apiKey:$,...D}=_,g={...D};return Object.defineProperty(g,"apiKey",{value:$,enumerable:!1,writable:!1,configurable:!1}),Object.defineProperty(g,pY,{value:()=>({...D,apiKey:"[redacted]"}),enumerable:!1,writable:!1,configurable:!1}),g}function eY(_,$){return j0(_,"explicit apiKey option",$),N0({apiKey:$,tier:"argument",source:"explicit apiKey option",deliberate:!0,deprecated:!1,diskCandidates:[],warning:null})}function iz(_,$){for(let D of $){let g=_[D]?.trim();if(g)return{key:D,value:g}}return null}var lz=Symbol.for("hasna:contracts:credentialDeprecationNotices");function aY(){let _=globalThis,$=_[lz];if($ instanceof Set)return $;let D=new Set;return _[lz]=D,D}function sY(_){if(typeof process<"u"&&process.stderr)process.stderr.write(`${_} +`)}function dN(_,$,D={}){let{apiKeyKeys:g}=ez(_),U=az(_,$),I=D.apiKey?.trim();if(I)return j0(_,"the explicit apiKey argument",I),N0({apiKey:I,tier:"argument",source:"explicit apiKey argument",deliberate:!0,deprecated:!1,diskCandidates:U,warning:null});let j=rY(_),N=$[j];if(N!==void 0){let z=N.trim();if(!z)throw new fD(_,`${j} is set but empty. It is a deliberate override, so it is not resolved around: either give it a real key or unset it to fall back to the credential on disk.`,[j]);return j0(_,j,z),N0({apiKey:z,tier:"override",source:j,deliberate:!0,deprecated:!1,diskCandidates:U,warning:null})}let O=D.profile?.trim()||$[hN]?.trim();if(O){let z=D.profile?.trim()?"explicit profile argument":hN;if(!iY.test(O))throw new fD(_,`Profile name from ${z} is not usable in a path. Use letters, digits, dot, dash, or underscore.`,[z]);let W=sz(_,$,O);for(let J of W){let P=mz(J,g);if(P)return j0(_,J,P),N0({apiKey:P,tier:"profile",source:J,deliberate:!0,deprecated:!1,diskCandidates:W,warning:null})}throw new fD(_,`Profile '${O}' (from ${z}) has no ${g[0]} for '${_}'. Looked in: ${W.join(", ")||""}. `+"A profile names WHICH identity to use, so it is never resolved around \u2014 "+`create the profile's credential file or unset ${hN}.`,W)}let A=U.map((z)=>({path:z,value:mz(z,g)})).filter((z)=>z.value!==null);if(A.length>0){let z=A[0];j0(_,z.path,z.value);let W=[...A.slice(1).filter((P)=>P.value!==z.value).map((P)=>P.path),...(()=>{let P=iz($,g);return P&&P.value!==z.value?[P.key]:[]})()],J=W.length>0?`Credential sources disagree for '${_}': ${z.path} and ${W.join(", ")} hold different keys. ${z.path} wins, because a file on `+"disk is re-read on every call while an environment variable is a snapshot. Reconcile them \u2014 "+"a rotation that updated only one leaves the other to fail 401 wherever it is loaded first.":null;return N0({apiKey:z.value,tier:"disk",source:z.path,deliberate:!1,deprecated:!1,diskCandidates:U,warning:J})}let L=iz($,g);if(L){j0(_,L.key,L.value);let z=U.length>0?`Put the current key in ${U[0]} \u2014 it is re-read on every call, so rotations take effect immediately.`:"This environment has no HOME, so no credential file could be consulted at all; the disk tier is unavailable here and this process will keep using the environment snapshot.",W=`[${_}] DEPRECATED: the API key came from ${L.key} in this process's environment. Environment variables are a snapshot taken when this process started, so a shell that started before a key rotation keeps using the old key until it exits. ${z}`,J=D.onDeprecation??sY,P=aY();if(!P.has(_))P.add(_),J(W);return N0({apiKey:L.value,tier:"legacy-env",source:L.key,deliberate:!1,deprecated:!0,diskCandidates:U,warning:W})}return null}var G6="HASNA_FLEET_API_DOMAIN",E0="your-deployment.example",iN=/[\u0000-\u001f\u007f]/,_S=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;function vg(_){if(_.length===0||_.length>253||iN.test(_)||/[^\x00-\x7f]/.test(_))return!1;return _.split(".").every(($)=>$.length<=63&&!$.startsWith("xn--")&&_S.test($))}function _Q(_){let $=_[G6];if($===void 0)return{domain:E0,source:"default",misconfigured:!0,warning:`${G6} is not set; using the non-resolving ${E0} fallback.`};let D=$.trim().toLowerCase();if(iN.test($)||!vg(D))return{domain:E0,source:G6,misconfigured:!0,warning:`${G6} is blank or invalid; using the non-resolving ${E0} fallback.`};return{domain:D,source:G6,misconfigured:!1,warning:null}}function $S(_){if(_.length>63||!_S.test(_))throw Error("App name must be one lowercase DNS label.");return _}function $Q(_,$){let D=`${$S(_)}.${$}`;if(!vg(D))throw Error("Composed cloud hostname must be a valid DNS domain");return D}function DQ(_,$){let D=$S(_),g=_Q($),U=`${D}.${g.domain}`;if(vg(U))return{baseUrl:`https://${U}`,source:g.source,misconfigured:g.misconfigured,warning:g.warning};return{baseUrl:`https://${$Q(D,E0)}`,source:g.source,misconfigured:!0,warning:`${G6} cannot form a valid composed cloud hostname for app '${D}'; using the non-resolving ${E0} fallback.`}}function cN(_,$,D={}){for(let g of $){let U=_[g],I=U?.trim();if(I)return{key:g,value:D.preserveRaw?U:I}}return null}function UQ(_){let $=/^[a-z][a-z0-9+.-]*:\/\//i.exec(_);if(!$)throw Error("API URL must be absolute.");let D=_.slice($[0].length),g=D.search(/[/?#]/),U=g===-1?D:D.slice(0,g);if(!U)throw Error("API URL must include a hostname.");return U}function tz(_){if(!/^[0-9]+$/.test(_)||_.length>1&&_.startsWith("0"))throw Error("API URL authority must contain a canonical port between 1 and 65535.");let $=Number(_);if(!Number.isSafeInteger($)||$<1||$>65535)throw Error("API URL authority must contain a canonical port between 1 and 65535.")}function gQ(_){let $;if(_.startsWith("[")){let D=_.indexOf("]");if(D===-1)throw Error("API URL authority must contain a canonical hostname.");$=_.slice(0,D+1);let g=_.slice(D+1);if(g){if(!g.startsWith(":"))throw Error("API URL authority must contain a canonical hostname and port.");tz(g.slice(1))}if(nz($.slice(1,-1))!==6)throw Error("API URL authority must contain a canonical IPv6 literal.")}else{let D=_.indexOf(":"),g=_.lastIndexOf(":");if(D!==g)throw Error("IPv6 API URL authorities must use brackets.");if(g!==-1){let N=_.slice(g+1);tz(N),$=_.slice(0,g)}else $=_;let U=nz($),j=$.split(".").every((N)=>/^(?:0x[0-9a-f]+|[0-9]+)$/i.test(N));if(U!==4&&j||U!==4&&!vg($.toLowerCase()))throw Error("API URL authority must contain a canonical ASCII hostname.")}return $.toLowerCase()}function IQ(_){return/^(?:localhost|127\.0\.0\.1|\[::1\])(?::[0-9]+)?$/i.test(_)}function DS(_){if(iN.test(_))throw Error("API URL must not contain ASCII control characters.");let $=_.trim(),D=UQ($);if(D.includes("@")||D.includes("\\")||D.includes("%")||/[^\x00-\x7f]/.test(D))throw Error("API URL authority must be canonical ASCII without credentials.");let g=gQ(D),U=new URL($);if(U.protocol!=="http:"&&U.protocol!=="https:")throw Error("API URL must use http or https.");if(U.username||U.password)throw Error("API URL must not include credentials.");if(!U.hostname||U.hostname.endsWith("."))throw Error("API URL must include a canonical hostname.");if(U.hostname.toLowerCase()!==g)throw Error("API URL authority must not rely on parser hostname normalization.");if(U.hostname.split(".").some((j)=>j.toLowerCase().startsWith("xn--")))throw Error("API URL must not use IDN or punycode hostnames.");if(U.protocol==="http:"&&!IQ(D))throw Error("API URL may use http only for an exact loopback authority.");if(U.search||U.hash)throw Error("API URL must not include a query string or fragment.");let I=U.pathname.replace(/\/+$/,"");if(I.endsWith("/v1"))I=I.slice(0,-3);return U.pathname=`${I}/v1`,U.toString().replace(/\/+$/,"")}function jQ(_,$=process.env,D={}){let g=ez(_),U=cN($,g.modeKeys),I=cN($,g.apiUrlKeys,{preserveRaw:!0}),j=cN($,g.apiKeyKeys),N="sqlite",O="default",A=[],L;if(U)N=wY(U.value).mode,O=U.key;else if(I){if(L=dN(_,$,D.credentials),L)N="postgres",O=`${I.key}+${L.source}`}if(N==="sqlite")return{transport:"sqlite",mode:N,modeSource:O,baseUrl:null,apiUrlSource:null,apiKeyPresent:Boolean(j),apiKeySource:j?j.key:null,apiKeyTier:null,misconfigured:!1,warning:A.length>0?A.join(" "):null};if(L===void 0)L=dN(_,$,D.credentials);if(!L){let P=US(_,$);return A.push(`${O}=postgres but no API key could be resolved for '${_}'. A client reaches server data over HTTP only; refusing to route. Using the local sqlite store. Looked for a credential file at ${P}, then for ${g.apiKeyKeys[0]} in the environment.`),{transport:"sqlite",mode:N,modeSource:O,baseUrl:null,apiUrlSource:null,apiKeyPresent:!1,apiKeySource:null,apiKeyTier:null,misconfigured:!0,warning:A.join(" ")}}if(L.warning)A.push(L.warning);let z=null,W=I?.key??($[G6]===void 0?"default":G6),J;try{if(!I)z=DQ(_,$),W=z.source;let P=I?.value??z.baseUrl;J=DS(P)}catch(P){let S=P instanceof Error?P.message:String(P);return A.push(`Invalid API URL from ${W}: ${S}. Using local store.`),{transport:"sqlite",mode:N,modeSource:O,baseUrl:null,apiUrlSource:null,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:!0,warning:A.join(" ")}}if(z?.warning)A.push(z.warning);return{transport:"http",mode:N,modeSource:O,baseUrl:J,apiUrlSource:W,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:z?.misconfigured??!1,warning:A.length>0?A.join(" "):null}}function US(_,$){let D=az(_,$);return D.length>0?D.join(" or "):""}class O0 extends Error{status;method;path;body;credentialSource;credentialTier;constructor(_,$,D,g,U){let I=U?`. ${U.guidance}`:"";super(`Hasna cloud request failed: ${_} ${$} -> ${D}${I}`);this.name="HasnaHttpError",this.status=D,this.method=_,this.path=$,this.body=g,this.credentialSource=U?.source??null,this.credentialTier=U?.tier??null}}function NQ(_,$){if(typeof $==="function")return $();return eY(_,$)}function EQ(_){let $=`The API key for this request came from ${_.source}`;if(_.deliberate)return`${$} \u2014 a credential you selected deliberately. It was NOT substituted with any other key: `+"falling back here would authenticate as a different principal than the one you named, which is exactly the failure an override exists to prevent. Rotate that key, or unset the override to use the credential on disk.";if(_.deprecated){let D=_.diskCandidates[0],g=D?`Write the CURRENT key to ${D} \u2014 that file is re-read on every call, so rotations take `+`effect immediately and in every shell. Do not simply unset ${_.source}: nothing was found on disk, so that would leave this client with no credential at all.`:"This environment has no HOME, so no credential file could be consulted; the disk tier is unavailable here and there is nothing to fall back to. Set HOME, or supply the key explicitly.";return`${$}, a variable in this process's environment \u2014 which is a snapshot taken when the process `+`started. A STALE SHELL is the most common cause of this error: this shell exported the key before it was rotated, and will keep sending the old one until it exits. ${g}`}return`${$}, which was re-read from disk on this very call \u2014 so a stale shell is NOT the cause here. `+"The stored credential is genuinely being rejected: rotate it, or re-run the fleet key distribution so this machine gets the current key."}var OQ=[408,425,429,500,502,503,504],AQ=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),LQ=new Set(["host",":authority","forwarded","x-forwarded-host","x-original-host"]);function oz(_,$){if(!_)return;let D=Object.keys(_).find((g)=>LQ.has(g.trim().toLowerCase()));if(D)throw Error(`Authenticated ${$} headers must not set authority header '${D}'.`)}function JQ(_,$){if(!$)return _;let D=$ instanceof URLSearchParams?$:new URLSearchParams;if(!($ instanceof URLSearchParams))for(let[U,I]of Object.entries($)){if(I===null||I===void 0)continue;if(Array.isArray(I))for(let j of I)D.append(U,String(j));else D.append(U,String(I))}let g=D.toString();if(!g)return _;return`${_}${_.includes("?")?"&":"?"}${g}`}var PQ=(_)=>new Promise(($)=>setTimeout($,_));function zQ(_){let $=_.fetchImpl??((A,L)=>fetch(A,L)),D=DS(_.baseUrl),g=_.timeoutMs??30000,U=_.sleepImpl??PQ,I=_.retry;function j(A){let L=A!==void 0?A:I;if(L===!1)return null;let z=L??{};return{retries:z.retries??2,baseDelayMs:z.baseDelayMs??200,maxDelayMs:z.maxDelayMs??2000,retryStatuses:z.retryStatuses??[...OQ]}}async function N(A,L,z,W,J,P){oz(_.headers,"transport"),oz(J.headers,"request");let S={"x-api-key":P.apiKey,Authorization:`Bearer ${P.apiKey}`,Accept:"application/json",..._.headers??{},...J.headers??{}};if(J.idempotencyKey)S["Idempotency-Key"]=J.idempotencyKey;let X={method:A,headers:S,redirect:"manual"};if(W!==void 0)S["Content-Type"]="application/json",X.body=JSON.stringify(W);let R=new AbortController,G=()=>R.abort();if(J.signal)if(J.signal.aborted)R.abort();else J.signal.addEventListener("abort",G,{once:!0});let V=setTimeout(()=>R.abort(),J.timeoutMs??g);X.signal=R.signal;let Q;try{Q=await $(z,X)}catch(F){let Z=F instanceof Error?F:Error(String(F));if(J.signal?.aborted)return{ok:!1,retryable:!1,error:Z};return{ok:!1,retryable:!0,error:Z}}finally{if(clearTimeout(V),J.signal)J.signal.removeEventListener("abort",G)}let T=await Q.text(),B=void 0;if(T.length>0)try{B=JSON.parse(T)}catch{B=T}if(!Q.ok){if(Q.status>=300&&Q.status<400)return{ok:!1,retryable:!1,error:new O0(A,L,Q.status,B)};if(Q.status===401||Q.status===403)return{ok:!1,retryable:!1,error:new O0(A,L,Q.status,B,{source:P.source,tier:P.tier,guidance:EQ(P)})};let F=j(J.retry);return{ok:!1,retryable:F?F.retryStatuses.includes(Q.status):!1,error:new O0(A,L,Q.status,B)}}return{ok:!0,value:B}}async function O(A,L,z,W={}){let J=A.toUpperCase(),P=JQ(L.startsWith("/")?L:`/${L}`,W.query),S=`${D}${P}`,X=j(W.retry),R=AQ.has(J)||Boolean(W.idempotencyKey),G=X&&R?X.retries+1:1,V=NQ(_.name,_.apiKey),Q=null;for(let T=1;T<=G;T++){let B=await N(J,P,S,z,W,V);if(B.ok)return B.value;if(Q=B,!(X!==null&&R&&B.retryable&&TO("GET",A,void 0,L),post:(A,L,z)=>O("POST",A,L,z),put:(A,L,z)=>O("PUT",A,L,z),patch:(A,L,z)=>O("PATCH",A,L,z),del:(A,L,z)=>O("DELETE",A,L,z)}}function SQ(_,$=process.env,D){let g=D?.credentials,U=jQ(_,$,{...g?{credentials:g}:{}});if(U.misconfigured)throw Error(U.warning??`Client for '${_}' is misconfigured for the API client.`);if(U.transport==="sqlite"||!U.baseUrl)return{transport:"sqlite",client:null,resolution:U};let I=()=>{let j=dN(_,$,g);if(!j)throw Error(`Client for '${_}' resolved to the http transport but no API key is available any more. Looked at ${US(_,$)}, then the environment. A credential file that was removed after this client was built is the usual cause.`);return j};return{transport:"http",client:zQ({name:_,baseUrl:U.baseUrl,apiKey:I,...D?.fetchImpl?{fetchImpl:D.fetchImpl}:{},...D?.headers?{headers:D.headers}:{},...D?.timeoutMs?{timeoutMs:D.timeoutMs}:{},...D?.retry!==void 0?{retry:D.retry}:{},...D?.sleepImpl?{sleepImpl:D.sleepImpl}:{}}),resolution:U}}function mN(_){let $=_.replace(/^\/+|\/+$/g,"");if(!$)throw Error("resource must be a non-empty path segment");return`/${$}`}function nN(_,$){if($===void 0||$===null||`${$}`.length===0)throw Error("id must be a non-empty string");return`${mN(_)}/${encodeURIComponent(String($))}`}function WQ(){let _=globalThis;if(_.crypto?.randomUUID)return _.crypto.randomUUID();return`idmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function XQ(_){if(Array.isArray(_))return _;if(_&&typeof _==="object"){let $=_;for(let D of["items","data","results","rows","records"])if(Array.isArray($[D]))return $[D]}return[]}function GQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["total","count","totalCount","total_count"])if(typeof $[D]==="number")return $[D]}return null}function RQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["cursor","nextCursor","next_cursor","next"])if(typeof $[D]==="string")return $[D]}return null}function YQ(_,$){return{name:_,baseUrl:$.baseUrl,transport:$,async list(D,g={}){let U=await $.get(mN(D),g);return{items:XQ(U),total:GQ(U),cursor:RQ(U),raw:U}},async get(D,g,U={}){try{return await $.get(nN(D,g),U)}catch(I){if(I instanceof O0&&I.status===404)return null;throw I}},async create(D,g,U={}){let{idempotencyKey:I,...j}=U;return $.post(mN(D),g,{...j,idempotencyKey:I??WQ()})},async update(D,g,U,I={}){let{method:j="PATCH",idempotencyKey:N,...O}=I;return(j==="PUT"?$.put:$.patch)(nN(D,g),U,{...O,...N?{idempotencyKey:N}:{}})},async delete(D,g,U={}){try{await $.del(nN(D,g),void 0,U)}catch(I){if(I instanceof O0&&I.status===404)return;throw I}}}}function lN(_,$=process.env,D){let g=SQ(_,$,D);if(g.transport==="http")return{transport:"http",client:YQ(_,g.client)};return{transport:"sqlite",client:null}}function QQ(_){return _.toUpperCase().replace(/-/g,"_")}function gS(_){let $=QQ(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function wD(_){let $=_.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return{mode:"sqlite"};if($==="postgres"||$==="postgresql")return{mode:"postgres"};throw Error(`Unknown storage mode '${_}'. The runtime-placement axis was removed; set sqlite for the on-box SQLite file or postgres for a PostgreSQL server (DATABASE_URL).`)}function fg(_){let $=_.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return{mode:"sqlite"};if($==="postgres"||$==="postgresql")return{mode:"postgres"};throw Error(`Unknown storage mode '${_}'. The runtime-placement axis was removed; set sqlite for the on-box SQLite file or postgres for a PostgreSQL server (DATABASE_URL).`)}import Yr from"pg";class wg extends Error{scheme;port;constructor(_,$){super(_);this.name="KnowledgeNetworkGuardError",this.scheme=$.scheme,this.port=$.port}}function A0(_=process.env){return(_.NODE_ENV??"").trim().toLowerCase()==="test"}function IS(_){let $=_.split(".");if($.length!==4)return!1;if(!$.every((D)=>/^\d{1,3}$/.test(D)&&Number(D)<=255))return!1;return $[0]==="127"}function FQ(_){let $=_.trim().toLowerCase();if($.length===0)return!1;if($==="localhost"||$.endsWith(".localhost"))return!0;if(IS($))return!0;if(!$.startsWith("[")||!$.endsWith("]"))return!1;let D=$.slice(1,-1);if(D==="::1"||/^(0:){7}1$/.test(D))return!0;let g=D.split(":").pop()??"";if(/^(::ffff:|::)/.test(D)&&IS(g))return!0;return/^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(D)}function ES(_){if(typeof _==="string")return _;if(_ instanceof URL)return _.href;return _.url}function jS(_,$=process.env){if(!A0($))return;let D=ES(_),g;try{g=new URL(D)}catch{throw new wg("knowledge: refused an outbound request with an unparseable target while NODE_ENV=test. Under test, only loopback requests are permitted.",{scheme:"unknown",port:""})}if(FQ(g.hostname))return;throw new wg(`knowledge: refused a non-loopback ${g.protocol.replace(":","")} request while NODE_ENV=test (target host withheld on purpose). This process resolved to the cloud backend under test, which means a read or write was about to leave the machine and reach the live store. Select the mode explicitly (HASNA_KNOWLEDGE_STORAGE_MODE=sqlite) or point the API URL at 127.0.0.1 for a hermetic test.`,{scheme:g.protocol.replace(":",""),port:g.port})}var KQ=new Set([301,302,303,307,308]),NS=5;function MQ(_,$){if($?.method)return $.method.toUpperCase();if(typeof _!=="string"&&!(_ instanceof URL))return _.method.toUpperCase();return"GET"}async function rg(_,$){if(jS(_),!A0()||$?.redirect!==void 0)return fetch(_,$);let D=ES(_),g=MQ(_,$),U=$?.body,I=await fetch(_,{...$??{},redirect:"manual"});for(let j=0;KQ.has(I.status);j++){let N=I.headers.get("location");if(!N)return I;let O=new URL(N,D).href;if(jS(O),j>=NS){let L=new URL(O);throw new wg(`knowledge: refused to follow more than ${NS} redirects while NODE_ENV=test (target host withheld on purpose). Under test the guard follows redirects itself so every hop is checked, and a chain this long is a loop, not a route.`,{scheme:L.protocol.replace(":",""),port:L.port})}if(I.status===303||(I.status===301||I.status===302)&&g!=="GET"&&g!=="HEAD")g="GET",U=void 0;let A={...$??{},method:g,redirect:"manual"};if(U===void 0)delete A.body;else A.body=U;I=await fetch(O,A),D=O}return I}var xg="knowledge",tN=gS(xg),o$=tN.modeKeys,yg=tN.apiUrlKeys,hg=tN.apiKeyKeys;function ug(_,$){return $.filter((D)=>(_[D]??"").trim().length>0)}function rD(_=process.env){let $=[...ug(_,yg),...ug(_,hg)],D=o$[0];for(let g of o$){let U=_[g]?.trim();if(!U)continue;let I;try{I=fg(U)}catch(N){let O=N instanceof Error?N.message:String(N);throw Error(`knowledge: ${g}=${U} is not a valid mode. ${O}`)}let j=[];if(g!==D)j.push(`Using alias env ${g}; the canonical key is ${D}.`);if(I.mode==="sqlite"&&$.length>0)j.push(`${g}=sqlite pins the on-box store; ${$.join(", ")} are set but ignored.`);return{mode:I.mode,source:{kind:"env",name:g,value:U},pointer_env_present:$,pointer_ignored:I.mode==="sqlite"&&$.length>0,warning:j.length>0?j.join(" "):null}}return{mode:"sqlite",source:{kind:"default",name:null,value:null},pointer_env_present:$,pointer_ignored:$.length>0,warning:$.length>0?`${$.join(", ")} are set but do NOT select a backend: mode is sqlite by default. Set ${D}=postgres to route reads and writes to the API, or unset those vars to silence this note.`:null}}var ZQ=["postgres"],bQ=["sqlite"],OS=new Map;function AS(_,$,D){let g=$===wD;if(g){let U=OS.get(_);if(U!==void 0)return U}for(let U of _)try{if($(U),g)OS.set(_,U);return U}catch{}throw Error(`knowledge: no known storage token is accepted by the installed @hasna/contracts (tried ${_.join(", ")}). The storage-mode enum has changed; add the new token to ${D} in src/knowledge-mode.ts.`)}function HQ(_=wD){return AS(ZQ,_,"SERVER_MODE_CANDIDATES")}function kQ(_=wD){return AS(bQ,_,"LOCAL_MODE_CANDIDATES")}function CQ(_,$=wD){return _==="postgres"?HQ($):kQ($)}function oN(_,$){return{..._,[o$[0]]:CQ($)}}class LS extends Error{code="knowledge_mode_unset_with_api_url";constructor(_){let $=o$[0];super(`knowledge: ${_.join(", ")} names an API store, but no mode variable says to use it, so this command would silently read and write the on-box store instead. Set ${$}=postgres to use the API, or ${$}=sqlite to confirm you want the on-box store. Run 'knowledge mode' to see the full resolution.`);this.name="HalfConfiguredKnowledgeClientError"}}function JS(_=process.env,$={}){let D=rD(_);if($.storePathOverridden)return D;if(D.source.kind!=="default")return D;let g=ug(_,yg);if(g.length===0)return D;throw new LS(g)}function PS(_=process.env){let $=rD(_);return{...$,store_transport:$.mode==="postgres"?"api":"local",api_key_present:ug(_,hg).length>0,network_guard_active:A0(_)}}function zS(_){return{fetchImpl:rg,...A0(_)?{retry:!1}:{}}}var R6="notes";class L0 extends Error{expected;current;code="version_conflict";constructor(_,$){super(`version_conflict: this edit was written against version ${_} but the stored entry is now at version ${$}. Nothing was written. Re-read the entry and re-apply only if the fields you are changing are untouched between the two versions.`);this.expected=_;this.current=$;this.name="KnowledgeVersionConflictError"}}function vQ(_){let $={};if(_.search)$.search=_.search;if(_.limit!==void 0)$.limit=_.limit;if(_.offset!==void 0)$.offset=_.offset;if(_.includeArchived||_.archivedOnly)$.includeArchived=!0;return $}function fQ(_){return{baseUrl:_.baseUrl,async list($={}){let D=$.limit??200,g=vQ({...$,limit:Math.min(Math.max(D,1),200)}),U=await _.list(R6,{query:g}),I=U.items;if($.archivedOnly)I=I.filter((j)=>j.archived===!0);if($.tag){let j=$.tag.toLowerCase();I=I.filter((N)=>(N.tags??[]).some((O)=>O.toLowerCase()===j))}return{items:I,total:U.total}},async get($){return _.get(R6,$)},async create($){return _.create(R6,{...$.id?{id:$.id}:{},title:$.title,content:$.content,...$.description!==void 0?{description:$.description}:{},...$.reach?{reach:$.reach}:{},...$.consequence?{consequence:$.consequence}:{},url:$.url??null,tags:$.tags??[],...$.metadata?{metadata:$.metadata}:{}})},async update($,D,g={}){try{return await _.update(R6,$,D,{...g.expectedVersion!==void 0?{headers:{"if-match":String(g.expectedVersion)}}:{}})}catch(U){if(pN(U))return null;let I=wQ(U);if(I)throw I;throw U}},async delete($){let D=await _.get(R6,$);if(!D)return!1;return await _.delete(R6,D.id),!0},async listVersions($,D={}){try{return await _.transport.get(`/${R6}/${encodeURIComponent($)}/versions`,{query:{limit:D.limit,offset:D.offset}})}catch(g){if(pN(g))return null;throw g}},async getVersion($,D){try{return await _.transport.get(`/${R6}/${encodeURIComponent($)}/versions/${D}`)}catch(g){if(pN(g))return null;throw g}}}}function wQ(_){if(!_||typeof _!=="object")return null;if(_.status!==409)return null;let $=_.body,g=(typeof $==="string"?rQ($):$)??{};if(g.error!=="version_conflict")return null;return new L0(Number(g.expected??0),Number(g.current??0))}function rQ(_){try{return JSON.parse(_)}catch{return null}}function pN(_){return Boolean(_&&typeof _==="object"&&_.status===404)}function uD(_=process.env){if(rD(_).mode!=="postgres")return null;let $=lN(xg,oN(_,"postgres"),zS(_));if($.transport!=="http")return null;return fQ($.client)}function Y6(_=process.env){if(rD(_).mode!=="postgres")return!1;return lN(xg,oN(_,"postgres"),zS(_)).transport==="http"}async function cg(_){let D=[];for(let g=0;;g+=200){let{items:U}=await _.list({includeArchived:!0,limit:200,offset:g});if(D.push(...U),U.length<200)break;if(g>1e5)break}return D}var aN=["fleet","project","seat","self"],sN=["blocking","standing","reference"],SS="self",WS="reference",_2=24,$2=280;class J0 extends Error{code="description_required";constructor(_){super(`${_} Every knowledge item must carry a one-line description: it is what the fleet-wide change notification shows an agent who has not opened the item, alongside the title. Supply it with --description "<24-280 chars saying what this is for>". It is required rather than optional because the equivalent optional field on mementos (when_to_use) is populated on zero rows.`);this.name="KnowledgeDescriptionRequiredError"}}class eN extends Error{code="taxonomy_value_invalid";constructor(_,$,D){super(`Invalid --${_} value ${JSON.stringify($)}. Use one of: ${D.join(", ")}.`);this.name="KnowledgeTaxonomyValueError"}}function D2(_){if(_===void 0||_===null)throw new J0("No description was supplied.");if(typeof _!=="string")throw new J0(`The description must be a string, received ${typeof _}.`);let $=_.trim();if($.length===0)throw new J0("The description was empty or whitespace only.");if($.length<24)throw new J0(`The description is ${$.length} characters; the minimum is 24.`);if($.length>280)throw new J0(`The description is ${$.length} characters; the maximum is 280.`);return $}function XS(_,$,D){if(typeof $!=="string")throw new eN(_,$,D);let g=$.trim().toLowerCase();if(!D.includes(g))throw new eN(_,$,D);return g}function uQ(_){return XS("reach",_,aN)}function xQ(_){return XS("consequence",_,sN)}function U2(_){let $={};if(_.reach!==void 0&&_.reach!==null)$.reach=uQ(_.reach);if(_.consequence!==void 0&&_.consequence!==null)$.consequence=xQ(_.consequence);return $}function GS(_){let $=D2(_.description),D=U2(_);return{description:$,...D}}function RS(_){let $={};if(_.description!==void 0)$.description=D2(_.description);return Object.assign($,U2(_)),$}class I2 extends Error{location;code="version_history_unsupported";constructor(_){super(`Version history is not kept by the local JSON knowledge store (${_}). It has no version line, so an empty history here would be a claim, not a measurement. Entry versioning lives in the Postgres-backed store: point this CLI at it (HASNA_KNOWLEDGE_STORAGE_MODE=postgres plus the API url/key) and re-run.`);this.location=_;this.name="VersionHistoryUnsupportedError"}}function g2(_,$){return _.id===$||_.short_id===$}class YS{storePath;kind="local";supportsVersions=!1;constructor(_){this.storePath=_}async listVersions(){throw new I2(this.storePath)}async getVersion(){throw new I2(this.storePath)}get location(){return this.storePath}get exists(){return yQ(this.storePath)}async listAll(){let _=I0(this.storePath);return{items:_.items,exists:_.exists}}async get(_){return I0(this.storePath).items.find((D)=>g2(D,_))??null}async create(_){let $=GS(_);return f$(this.storePath,()=>{let D=vD(this.storePath),g=new Date().toISOString(),U=_.id??hz(),I={id:U,short_id:cz(U),title:_.title,content:_.content,description:$.description,...$.reach?{reach:$.reach}:{},...$.consequence?{consequence:$.consequence}:{},url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:!1,created_at:g,updated_at:g,version:1};return D.items.push(I),t$(this.storePath,D),I},{createParent:!0})}async update(_,$,D={}){let g=RS($);return f$(this.storePath,()=>{let U=vD(this.storePath),I=U.items.findIndex((O)=>g2(O,_));if(I===-1)return null;let j=U.items[I],N=j.version??1;if(D.expectedVersion!==void 0&&D.expectedVersion!==N)throw new L0(D.expectedVersion,N);if($.title!==void 0)j.title=$.title;if($.content!==void 0)j.content=$.content;if(g.description!==void 0)j.description=g.description;if(g.reach!==void 0)j.reach=g.reach;if(g.consequence!==void 0)j.consequence=g.consequence;if($.url!==void 0)j.url=$.url;if($.tags!==void 0)j.tags=$.tags;if($.metadata!==void 0)j.metadata=$.metadata;if($.archived!==void 0)j.archived=$.archived;return j.updated_at=new Date().toISOString(),j.version=N+1,U.items[I]=j,t$(this.storePath,U),j},{createParent:!0})}async delete(_){return f$(this.storePath,()=>{let $=vD(this.storePath),D=$.items.length;$.items=$.items.filter((U)=>!g2(U,_));let g=D!==$.items.length;if(g)t$(this.storePath,$);return g},{createParent:!0})}async deleteMany(_){if(_.length===0)return 0;let $=new Set(_);return f$(this.storePath,()=>{let D=vD(this.storePath),g=D.items.length;D.items=D.items.filter((I)=>!$.has(I.id)&&!(I.short_id!=null&&$.has(I.short_id)));let U=g-D.items.length;if(U>0)t$(this.storePath,D);return U},{createParent:!0})}}class QS{cloud;kind="api";exists=!0;supportsVersions=!0;constructor(_){this.cloud=_}async listVersions(_,$={}){return this.cloud.listVersions(_,$)}async getVersion(_,$){return this.cloud.getVersion(_,$)}get location(){return this.cloud.baseUrl}async listAll(){return{items:await cg(this.cloud),exists:!0}}async get(_){return this.cloud.get(_)}async create(_){let $=GS(_);return this.cloud.create({..._.id?{id:_.id}:{},title:_.title,content:_.content,description:$.description,...$.reach?{reach:$.reach}:{},...$.consequence?{consequence:$.consequence}:{},url:_.url??null,tags:_.tags??[],..._.metadata?{metadata:_.metadata}:{}})}async update(_,$,D={}){let g=RS($);return this.cloud.update(_,{...$,...g},{expectedVersion:D.expectedVersion})}async delete(_){return this.cloud.delete(_)}async deleteMany(_){let $=0;for(let D of _)if(await this.cloud.delete(D))$+=1;return $}}function ng(_){let $=_.storePathOverridden?null:uD(_.env??process.env);if($)return new QS($);return new YS(_.storePath)}function TS(_){let $=_??"";if($==="")return[];return $.replace(/\n$/,"").split(` +`)}var j2=5000;function hQ(_,$){let D=TS(_),g=TS($);if(D.length>j2||g.length>j2)throw Error(`Refusing to line-diff ${Math.max(D.length,g.length)} lines (limit ${j2}). Fetch the two versions and diff them with a dedicated tool.`);let U=Array.from({length:D.length+1},()=>Array(g.length+1).fill(0));for(let O=D.length-1;O>=0;O-=1)for(let A=g.length-1;A>=0;A-=1)U[O][A]=D[O]===g[A]?U[O+1][A+1]+1:Math.max(U[O+1][A],U[O][A+1]);let I=[],j=0,N=0;while(j=U[j][N+1])I.push({op:"remove",from_line:j+1,to_line:null,text:D[j]}),j+=1;else I.push({op:"add",from_line:null,to_line:N+1,text:g[N]}),N+=1;while(j{if(!cQ(_[N],$[N]))D.push({field:N,from:_[N]??null,to:$[N]??null})};g("title"),g("url"),g("tags"),g("metadata"),g("archived");let U=hQ(_.content,$.content),I=U.filter((N)=>N.op==="add").length,j=U.filter((N)=>N.op==="remove").length;return{identical:D.length===0&&I===0&&j===0,fields:D,content:U,added:I,removed:j}}function qS(_,$,D){let g=[`--- ${$}`,`+++ ${D}`];if(_.identical)return g.push("(no changes)"),g.join(` +`);for(let U of _.fields)g.push(`~ ${U.field}: ${JSON.stringify(U.from)} -> ${JSON.stringify(U.to)}`);if(_.added===0&&_.removed===0){if(_.fields.length>0)g.push("(content unchanged)")}else{g.push(`@@ content +${_.added} -${_.removed} @@`);for(let U of _.content){let I=U.op==="add"?"+":U.op==="remove"?"-":" ";g.push(`${I}${U.text}`)}}return g.join(` +`)}import{Database as VS}from"bun:sqlite";function dg(_="catalog"){if(Y6()){let $=o$[0];throw Error(`knowledge: ${_} builds/reads the on-box sqlite RAG catalog (source ingestion, chunk embeddings, wiki compilation, cross-machine sync, machine registry). That local indexing pipeline is not available in cloud mode. In cloud mode the shared corpus is the cloud knowledge-items: 'add/list/get/update/delete' item commands AND 'search/ask/build/context' over that shared corpus all route to the cloud. Set ${$}=local `+"(or unset it \u2014 local is the default) to use the full local catalog pipeline; run 'knowledge mode' to see "+"which variable selected the current backend.")}}var nQ="porter unicode61 remove_diacritics 2",FS=` PRAGMA journal_mode = WAL; PRAGMA foreign_keys = ON; @@ -266,7 +266,7 @@ CREATE VIRTUAL TABLE IF NOT EXISTS chunks_fts USING fts5( INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (1, datetime('now')); -`,MQ=` +`,dQ=` DROP TABLE IF EXISTS chunks_fts; CREATE VIRTUAL TABLE IF NOT EXISTS chunks_fts USING fts5( @@ -279,7 +279,7 @@ CREATE VIRTUAL TABLE IF NOT EXISTS chunks_fts USING fts5( INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (2, datetime('now')); -`,ZQ=` +`,mQ=` CREATE TABLE IF NOT EXISTS audit_events ( id TEXT PRIMARY KEY, event_type TEXT NOT NULL, @@ -310,7 +310,7 @@ CREATE INDEX IF NOT EXISTS idx_approval_gates_status ON approval_gates(status); INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (3, datetime('now')); -`,bQ=` +`,iQ=` CREATE TABLE IF NOT EXISTS vector_index_entries ( id TEXT PRIMARY KEY, chunk_id TEXT NOT NULL REFERENCES chunks(id) ON DELETE CASCADE, @@ -341,7 +341,7 @@ CREATE INDEX IF NOT EXISTS idx_vector_index_status ON vector_index_entries(statu INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (4, datetime('now')); -`,HQ=` +`,lQ=` CREATE TABLE IF NOT EXISTS reindex_queue ( id TEXT PRIMARY KEY, kind TEXT NOT NULL, @@ -362,7 +362,7 @@ CREATE INDEX IF NOT EXISTS idx_reindex_queue_source_uri ON reindex_queue(source_ INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (5, datetime('now')); -`,zS=` +`,KS=` CREATE TABLE IF NOT EXISTS knowledge_machines ( machine_id TEXT PRIMARY KEY, hostname TEXT, @@ -437,7 +437,7 @@ CREATE INDEX IF NOT EXISTS idx_sync_conflicts_entity ON knowledge_sync_conflicts INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (6, datetime('now')); -`,kQ=` +`,tQ=` CREATE TABLE IF NOT EXISTS knowledge_sync_table_clocks ( table_name TEXT NOT NULL, machine_id TEXT NOT NULL, @@ -477,7 +477,7 @@ CREATE INDEX IF NOT EXISTS idx_sync_imports_status ON knowledge_sync_imports(sta INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (7, datetime('now')); -`,CQ=` +`,oQ=` CREATE INDEX IF NOT EXISTS idx_wiki_pages_lifecycle_status ON wiki_pages(status, valid_to); CREATE INDEX IF NOT EXISTS idx_wiki_pages_last_verified ON wiki_pages(last_verified_at); CREATE INDEX IF NOT EXISTS idx_wiki_pages_supersedes ON wiki_pages(supersedes); @@ -485,7 +485,7 @@ CREATE INDEX IF NOT EXISTS idx_wiki_pages_superseded_by ON wiki_pages(superseded INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (8, datetime('now')); -`,rQ=` +`,pQ=` BEGIN; CREATE TEMP TABLE _chunks_fts_backup AS @@ -498,7 +498,7 @@ CREATE VIRTUAL TABLE chunks_fts USING fts5( text, title, source_uri, - tokenize='${FQ}' + tokenize='${nQ}' ); INSERT INTO chunks_fts (chunk_id, text, title, source_uri) @@ -510,7 +510,7 @@ INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now')); COMMIT; -`,vQ=` +`,eQ=` CREATE TABLE IF NOT EXISTS knowledge_promotion_candidates ( id TEXT PRIMARY KEY, record_kind TEXT NOT NULL, @@ -571,14 +571,14 @@ CREATE INDEX IF NOT EXISTS idx_durable_records_validity INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (10, datetime('now')); -`;function v(_){nU("opening the local knowledge.db catalog"),X6(_);let $=new JS(_);return $.exec("PRAGMA foreign_keys = ON;"),$.exec("PRAGMA busy_timeout = 5000;"),$}function SS(_){return nU("reading the local knowledge.db catalog"),new JS(_,{readonly:!0})}function h(_){let $=v(_);try{if($.exec(PS),v_($)<2)$.exec(MQ);if(v_($)<3)$.exec(ZQ);if(v_($)<4)$.exec(bQ);if(v_($)<5)$.exec(HQ);if(v_($)<6)$.exec(zS);if(wQ($))fQ($);if(uQ($))xQ($);if(yQ($))hQ($);if(cQ($))nQ($);return{path:_,schema_version:v_($)}}finally{$.close()}}function v_(_){return _.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0}function F_(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function sN(_){return`"${_.replaceAll('"','""')}"`}function e$(_,$){let g=_.query("SELECT name FROM sqlite_master WHERE type IN ('table', 'virtual') AND name = ?").get($);return Boolean(g)}function p$(_,$,g){if(!e$(_,$))return!1;return _.query(`PRAGMA table_info(${sN($)})`).all().some((D)=>D.name===g)}function Q6(_,$,g,U){if(!p$(_,$,g))_.exec(`ALTER TABLE ${sN($)} ADD COLUMN ${sN(g)} ${U};`)}function wQ(_){return v_(_)<7||!p$(_,"knowledge_sync_changes","logical_clock")||!p$(_,"knowledge_sync_changes","bundle_id")||!e$(_,"knowledge_sync_table_clocks")||!e$(_,"knowledge_sync_imports")}function fQ(_){if(!e$(_,"knowledge_sync_changes"))_.exec(zS);Q6(_,"knowledge_sync_changes","logical_clock","INTEGER NOT NULL DEFAULT 0"),Q6(_,"knowledge_sync_changes","bundle_id","TEXT"),_.exec(kQ)}function uQ(_){return v_(_)<8||!p$(_,"wiki_pages","valid_from")||!p$(_,"wiki_pages","valid_to")||!p$(_,"wiki_pages","supersedes")||!p$(_,"wiki_pages","superseded_by")||!p$(_,"wiki_pages","confidence")||!p$(_,"wiki_pages","last_verified_at")}function xQ(_){if(!e$(_,"wiki_pages"))_.exec(PS);Q6(_,"wiki_pages","valid_from","TEXT"),Q6(_,"wiki_pages","valid_to","TEXT"),Q6(_,"wiki_pages","supersedes","TEXT"),Q6(_,"wiki_pages","superseded_by","TEXT"),Q6(_,"wiki_pages","confidence","REAL"),Q6(_,"wiki_pages","last_verified_at","TEXT"),_.exec(` +`;function f(_){dg("opening the local knowledge.db catalog"),X6(_);let $=new VS(_);return $.exec("PRAGMA foreign_keys = ON;"),$.exec("PRAGMA busy_timeout = 5000;"),$}function MS(_){return dg("reading the local knowledge.db catalog"),new VS(_,{readonly:!0})}function h(_){let $=f(_);try{if($.exec(FS),f_($)<2)$.exec(dQ);if(f_($)<3)$.exec(mQ);if(f_($)<4)$.exec(iQ);if(f_($)<5)$.exec(lQ);if(f_($)<6)$.exec(KS);if(aQ($))sQ($);if(_7($))$7($);if(D7($))U7($);if(g7($))I7($);return{path:_,schema_version:f_($)}}finally{$.close()}}function f_(_){return _.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0}function K_(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function N2(_){return`"${_.replaceAll('"','""')}"`}function e$(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type IN ('table', 'virtual') AND name = ?").get($);return Boolean(D)}function p$(_,$,D){if(!e$(_,$))return!1;return _.query(`PRAGMA table_info(${N2($)})`).all().some((U)=>U.name===D)}function Q6(_,$,D,g){if(!p$(_,$,D))_.exec(`ALTER TABLE ${N2($)} ADD COLUMN ${N2(D)} ${g};`)}function aQ(_){return f_(_)<7||!p$(_,"knowledge_sync_changes","logical_clock")||!p$(_,"knowledge_sync_changes","bundle_id")||!e$(_,"knowledge_sync_table_clocks")||!e$(_,"knowledge_sync_imports")}function sQ(_){if(!e$(_,"knowledge_sync_changes"))_.exec(KS);Q6(_,"knowledge_sync_changes","logical_clock","INTEGER NOT NULL DEFAULT 0"),Q6(_,"knowledge_sync_changes","bundle_id","TEXT"),_.exec(tQ)}function _7(_){return f_(_)<8||!p$(_,"wiki_pages","valid_from")||!p$(_,"wiki_pages","valid_to")||!p$(_,"wiki_pages","supersedes")||!p$(_,"wiki_pages","superseded_by")||!p$(_,"wiki_pages","confidence")||!p$(_,"wiki_pages","last_verified_at")}function $7(_){if(!e$(_,"wiki_pages"))_.exec(FS);Q6(_,"wiki_pages","valid_from","TEXT"),Q6(_,"wiki_pages","valid_to","TEXT"),Q6(_,"wiki_pages","supersedes","TEXT"),Q6(_,"wiki_pages","superseded_by","TEXT"),Q6(_,"wiki_pages","confidence","REAL"),Q6(_,"wiki_pages","last_verified_at","TEXT"),_.exec(` UPDATE wiki_pages SET valid_from = COALESCE(valid_from, created_at), last_verified_at = COALESCE(last_verified_at, updated_at), confidence = COALESCE(confidence, 0.8) WHERE valid_from IS NULL OR last_verified_at IS NULL OR confidence IS NULL; - `),_.exec(CQ)}function WS(_){let $=_.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?").get("chunks_fts");return Boolean($?.sql&&$.sql.includes("remove_diacritics"))}function yQ(_){if(!e$(_,"chunks_fts"))return!1;return v_(_)<9||!WS(_)}function hQ(_){if(!e$(_,"chunks_fts"))return;if(WS(_)){_.exec("INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now'));");return}_.exec(rQ)}function cQ(_){return v_(_)<10||!e$(_,"knowledge_promotion_candidates")||!e$(_,"durable_knowledge_records")}function nQ(_){_.exec(vQ)}function _E(_){let $=v(_);try{return{schema_version:v_($),sources:F_($,"sources"),source_revisions:F_($,"source_revisions"),chunks:F_($,"chunks"),wiki_pages:F_($,"wiki_pages"),citations:F_($,"citations"),indexes:F_($,"knowledge_indexes"),runs:F_($,"runs"),run_events:F_($,"run_events"),redaction_findings:F_($,"redaction_findings"),audit_events:F_($,"audit_events"),approval_gates:F_($,"approval_gates"),storage_objects:F_($,"storage_objects"),embeddings:F_($,"chunk_embeddings"),vector_entries:F_($,"vector_index_entries"),reindex_queue:F_($,"reindex_queue"),knowledge_machines:F_($,"knowledge_machines"),sync_snapshots:F_($,"knowledge_sync_snapshots"),sync_changes:F_($,"knowledge_sync_changes"),sync_conflicts:F_($,"knowledge_sync_conflicts"),sync_table_clocks:F_($,"knowledge_sync_table_clocks"),sync_imports:F_($,"knowledge_sync_imports"),promotion_candidates:F_($,"knowledge_promotion_candidates"),durable_records:F_($,"durable_knowledge_records")}}finally{$.close()}}import{chmodSync as dQ,existsSync as mQ,mkdirSync as XS,readFileSync as iQ,statSync as lQ,writeFileSync as tQ}from"fs";import{dirname as oQ,join as $E,relative as pQ,sep as eQ}from"path";import{pathToFileURL as aQ}from"url";function w$(_){let $=_.replace(/\\/g,"/").trim();if(!$||$.startsWith("/"))throw Error(`Invalid artifact key: ${_}`);let g=$.split("/").filter(Boolean);if(g.length===0||g.some((U)=>U==="."||U===".."))throw Error(`Invalid artifact key: ${_}`);return g.join("/")}function gE(_,$){let g=pQ(_,$);if(g.startsWith("..")||g===".."||g.startsWith(`..${eQ}`))throw Error(`Artifact path escapes root: ${$}`)}function sQ(_){if(!_)return;let $={};for(let[g,U]of Object.entries(_))if(typeof U==="string")$[g]=U;else if(typeof U==="number"||typeof U==="boolean")$[g]=String(U);return Object.keys($).length>0?$:void 0}class RS{root;type="local";canRead=!0;canWrite=!0;constructor(_){this.root=_;XS(_,{recursive:!0,mode:448})}async put(_){let $=w$(_.key),g=$E(this.root,$);return gE(this.root,g),XS(oQ(g),{recursive:!0,mode:448}),tQ(g,_.body,{mode:384}),dQ(g,384),{key:$,uri:aQ(g).href,modified_at:lQ(g).mtime.toISOString()}}async getText(_){let $=w$(_),g=$E(this.root,$);return gE(this.root,g),iQ(g,"utf8")}async exists(_){let $=w$(_),g=$E(this.root,$);return gE(this.root,g),mQ(g)}}class GS{options;type="s3";canRead=!0;canWrite=!0;client;constructor(_){this.options=_;this.client=_.client}async getClient(){if(this.client)return this.client;let[{S3Client:_},{fromIni:$}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]);return this.client=new _({region:this.options.region,credentials:this.options.profile?$({profile:this.options.profile}):void 0,maxAttempts:this.options.max_attempts}),this.client}objectKey(_){let $=w$(_),g=this.options.prefix?w$(this.options.prefix):"";return g?`${g}/${$}`:$}async put(_){let[{PutObjectCommand:$},g]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),U=w$(_.key),D=this.objectKey(U);return await g.send(new $({Bucket:this.options.bucket,Key:D,Body:_.body,ContentType:_.content_type,Metadata:sQ(_.metadata),ServerSideEncryption:this.options.server_side_encryption,SSEKMSKeyId:this.options.kms_key_id})),{key:U,uri:`s3://${this.options.bucket}/${D}`,modified_at:new Date().toISOString()}}async getText(_){let[{GetObjectCommand:$},g]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),U=this.objectKey(_),D=await g.send(new $({Bucket:this.options.bucket,Key:U}));if(!D.Body)return"";return await D.Body.transformToString()}async exists(_){let[{HeadObjectCommand:$},g]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),U=this.objectKey(_);try{return await g.send(new $({Bucket:this.options.bucket,Key:U})),!0}catch(D){let I=D instanceof Error?D.name:"";if(I==="NotFound"||I==="NoSuchKey"||I==="NotFoundError")return!1;throw D}}}function DE(_,$){if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)throw Error("S3 artifact storage requires storage.s3.bucket");return new GS({bucket:_.storage.s3.bucket,prefix:_.storage.s3.prefix,region:_.storage.s3.region,profile:_.storage.s3.profile,max_attempts:_.storage.s3.max_attempts,server_side_encryption:_.storage.s3.server_side_encryption,kms_key_id:_.storage.s3.kms_key_id})}return new RS($.artifactsDir)}import{createHash as LU}from"crypto";import{spawnSync as iZ}from"child_process";import{existsSync as W_,readFileSync as lZ}from"fs";import{hostname as tZ}from"os";import{join as CG,resolve as lG}from"path";import{createHash as K7,randomUUID as V7}from"crypto";import{createHash as ET,randomUUID as OT}from"crypto";import{existsSync as IE,readdirSync as AT}from"fs";import{join as FS}from"path";import{pathToFileURL as LT}from"url";import{existsSync as _T,mkdirSync as $T,readFileSync as gT,unlinkSync as DT,writeFileSync as UT}from"fs";import{homedir as IT}from"os";import{dirname as jT,join as YS}from"path";var UE="https://knowledge.md";function a$(_){let $=new URL(_);if($.protocol!=="http:"&&$.protocol!=="https:")throw Error("Knowledge API URL must use http or https.");let g=$.pathname.replace(/\/+$/,"");if(g==="/api"||g==="/api/v1")$.pathname="/";else if(g.endsWith("/api/v1"))$.pathname=g.slice(0,-7)||"/";else if(g.endsWith("/api"))$.pathname=g.slice(0,-4)||"/";return $.toString().replace(/\/+$/,"")}function dU(_=process.env){if(_.HASNA_KNOWLEDGE_AUTH_PATH)return _.HASNA_KNOWLEDGE_AUTH_PATH;let $=_.HASNA_KNOWLEDGE_AUTH_DIR??YS(IT(),".hasna","knowledge");return YS($,"auth.json")}function QS(_,$=process.env){return a$($.KNOWLEDGE_API_URL??_?.hosted?.api_url??UE)}function TS(_=process.env){try{let $=dU(_);if(!_T($))return null;let g=JSON.parse(gT($,"utf8"));return typeof g.api_key==="string"&&g.api_key.length>0?g:null}catch{return null}}function qS(_,$=process.env){let g=dU($),U={..._,api_url:_.api_url?a$(_.api_url):void 0,created_at:_.created_at??new Date().toISOString()};return $T(jT(g),{recursive:!0,mode:448}),UT(g,`${JSON.stringify(U,null,2)} -`,{mode:384}),U}function BS(_=process.env){try{return DT(dU(_)),!0}catch{return!1}}function NT(_=process.env){if(_.KNOWLEDGE_API_KEY)return{apiKey:_.KNOWLEDGE_API_KEY,source:"env"};if(_.HASNA_KNOWLEDGE_API_KEY)return{apiKey:_.HASNA_KNOWLEDGE_API_KEY,source:"env"};let $=TS(_);return $?.api_key?{apiKey:$.api_key,source:"file"}:{apiKey:null,source:"none"}}function KS(_,$=process.env){let g=TS($),U=NT($),D=$.KNOWLEDGE_API_URL?QS(_,$):g?.api_url?a$(g.api_url):QS(_,$);return{authenticated:Boolean(U.apiKey),source:U.source,api_url:D,auth_path:dU($),email:U.source==="file"?g?.email??null:null,org_id:U.source==="file"?g?.org_id??null:null,org_slug:U.source==="file"?g?.org_slug??null:null,user_id:U.source==="file"?g?.user_id??null:null,api_key_present:Boolean(U.apiKey)}}var VS=2;var MS=[{kind:"schema",prefix:"schemas/",description:"Machine-readable agent schemas and source rules."},{kind:"index",prefix:"indexes/",description:"Small orientation indexes and future shard manifests."},{kind:"log",prefix:"logs/",description:"Append-only JSONL run and wiki-maintenance log partitions."},{kind:"run",prefix:"runs/",description:"Prompt/tool/cost ledgers and generated output records."},{kind:"wiki_page",prefix:"wiki/",description:"Generated cited Markdown pages, not raw source files."},{kind:"export",prefix:"exports/",description:"Portable exports and snapshots of derived knowledge state."}],JT=["cloud.env","knowledge.db.pre-cloud-*.bak","db.json.pre-cloud-*.bak","migration-exports"];function ZS(_){let $=[];if(IE(FS(_.home,"cloud.env")))$.push("cloud.env");if(IE(FS(_.home,"migration-exports")))$.push("migration-exports");if(IE(_.home)){for(let g of AT(_.home))if(/^(?:knowledge\.db|db\.json)\.pre-cloud-.+\.bak$/i.test(g))$.push(g)}return $}function J0(_){let $=typeof _==="string"?Buffer.from(_):Buffer.from(_);return{hash:`sha256:${ET("sha256").update($).digest("hex")}`,size_bytes:$.byteLength}}function bS(_){return MS.find((g)=>_.startsWith(g.prefix))?.kind??"artifact"}function mU(_,$,g="global"){let U=jE(_,$),D=_.storage.s3??null,I=D?.prefix?.replace(/^\/+|\/+$/g,"")??"",j=D?`s3://${D.bucket}/${I?`${I}/`:""}`:"",N=P_.s3.prefix.replace(/^\/+|\/+$/g,""),O=`s3://${P_.s3.bucket}/${N}/`,A=_.storage.type==="s3"&&D?.bucket===P_.s3.bucket&&(D.region??null)===P_.s3.region;return{scope:g,mode:_.mode,storage_type:_.storage.type,workspace_home:$.home,local_layout:{app_path:l$,config_path:$.configPath,json_store_path:$.jsonStorePath,knowledge_db_path:$.knowledgeDbPath,directories:{artifacts:$.artifactsDir,cache:$.cacheDir,exports:$.exportsDir,indexes:$.indexesDir,logs:$.logsDir,runs:$.runsDir,schemas:$.schemasDir,wiki:$.wikiDir}},artifact_store:{type:_.storage.type,artifacts_root:_.storage.artifacts_root,uri_prefix:_.storage.type==="s3"?j:LT(`${$.artifactsDir}/`).href,s3:D?{bucket:D.bucket,prefix:I,region:D.region??null,profile:D.profile??null,server_side_encryption:D.server_side_encryption??null,kms_key_configured:Boolean(D.kms_key_id)}:null},canonical_example:{division:P_.division,app_type:P_.app_type,app:P_.app,env:P_.env,active:A,local_path:P_.local_path,s3:{bucket:P_.s3.bucket,region:P_.s3.region,profile:P_.s3.profile,prefix:N,uri_prefix:O,server_side_encryption:P_.s3.server_side_encryption},secrets:{env:P_.secrets.env,aws:P_.secrets.aws,s3:P_.secrets.s3,rds:P_.secrets.rds,future_rds:P_.secrets.future_rds},evidence_doc:P_.evidence_doc},hosted:{enabled:_.mode==="hosted",api_url:a$(_.hosted?.api_url??UE),api_url_env:"KNOWLEDGE_API_URL",api_key_env:"KNOWLEDGE_API_KEY",auth_storage:"~/.hasna/knowledge/auth.json",registry_contract_version:VS,requires_hosted_account_for_local_use:!1},secret_handling:{workspace_env_files_supported:!1,forbidden_workspace_files:JT,forbidden_workspace_files_present:ZS($),runtime_env_keys:["HASNA_KNOWLEDGE_STORAGE_MODE","KNOWLEDGE_STORAGE_MODE","HASNA_KNOWLEDGE_DATABASE_URL","KNOWLEDGE_DATABASE_URL"],secret_ref_authority:"open-secrets",approved_secret_refs:{env:P_.secrets.env,aws:P_.secrets.aws,s3:P_.secrets.s3,rds:P_.secrets.rds},db_url_rotation_decision:{status:"blocked_without_secret_authority",reason:"No live secret mutation authority is available in @hasna/knowledge. Rotate the DB URL only through the approved secret authority if separate evidence proves the URL propagated to backups, exports, sync bundles, reports, or copied artifacts.",authority_required:!0}},source_ownership:{owner:"open-files",preferred_ref:_.sources.preferred_ref,allowed_schemes:_.sources.allowed_schemes,raw_source_bytes_stored_in_open_knowledge:!1,stores:["source refs","source revisions and hashes","citation spans","redacted extracted chunks","embeddings","generated wiki artifacts","indexes","run ledgers"],does_not_store:["raw open-files bytes","S3 object credentials","connector secrets","hosted tenant ownership state"]},private_fleet_boundary:{manifest_authority:"open-machines",source_ref_authority:"open-files",secret_ref_authority:"open-secrets",raw_private_manifest_bytes_stored_in_open_knowledge:!1,accepted_source_ref_schemes:_.sources.allowed_schemes.filter((L)=>["open-files","s3","file"].includes(L)),stores:["source refs for private manifests","redacted setup decisions","runbook summaries","citation spans into approved knowledge sources","machine setup evidence hashes"],does_not_store:["private fleet manifests","machine hostnames","machine serial numbers","sudo passwords","VNC passwords","SSH private keys","GitHub App private keys","secret values"],example_manifest_ref:"open-files://source/private-fleet-manifest/path/machines.json"},generated_artifacts:MS,scalability:{catalog:"knowledge.db tracks sources, revisions, chunks, citations, indexes, runs, and storage_objects.",indexes:"Indexes are cataloged DB rows plus sharded artifacts, not one giant index.md.",logs:"Logs use dated JSONL partitions under logs/yyyy/mm/dd.jsonl.",markdown:"Markdown pages are the readable wiki layer over DB/object-store state."},warnings:U.warnings}}function jE(_,$){let g=[],U=[],D=ZS($);for(let I of D)g.push(`Forbidden Knowledge workspace file present: ${I}. Move secrets to open-secrets/runtime env and remove or replace legacy backups/exports with redacted owner-only artifacts.`);if(!$.home.endsWith(l$))U.push(`Workspace home does not end with ${l$}: ${$.home}`);if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)g.push("storage.s3.bucket is required when storage.type is s3.");if(!_.storage.s3?.prefix)U.push("storage.s3.prefix is empty; generated knowledge artifacts will be written at the bucket root.");if(_.mode==="local")U.push("storage.type is s3 while mode is local; this is valid for BYO S3, but hosted wrappers should set mode to hosted.")}if(_.storage.type==="local"&&_.storage.s3)U.push("storage.s3 is configured but ignored while storage.type is local.");if(_.sources.preferred_ref!=="open-files")U.push("sources.preferred_ref should stay open-files for durable company knowledge.");if(!_.sources.allowed_schemes.includes("open-files"))g.push("sources.allowed_schemes must include open-files.");if(_.mode==="hosted"&&_.hosted?.api_url)try{a$(_.hosted.api_url)}catch{g.push("hosted.api_url must be an http(s) URL when mode is hosted.")}return{ok:g.length===0,errors:g,warnings:U}}function s$(_,$,g=new Date){let U=g.toISOString(),D=_.prepare(` + `),_.exec(oQ)}function ZS(_){let $=_.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?").get("chunks_fts");return Boolean($?.sql&&$.sql.includes("remove_diacritics"))}function D7(_){if(!e$(_,"chunks_fts"))return!1;return f_(_)<9||!ZS(_)}function U7(_){if(!e$(_,"chunks_fts"))return;if(ZS(_)){_.exec("INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now'));");return}_.exec(pQ)}function g7(_){return f_(_)<10||!e$(_,"knowledge_promotion_candidates")||!e$(_,"durable_knowledge_records")}function I7(_){_.exec(eQ)}function E2(_){let $=f(_);try{return{schema_version:f_($),sources:K_($,"sources"),source_revisions:K_($,"source_revisions"),chunks:K_($,"chunks"),wiki_pages:K_($,"wiki_pages"),citations:K_($,"citations"),indexes:K_($,"knowledge_indexes"),runs:K_($,"runs"),run_events:K_($,"run_events"),redaction_findings:K_($,"redaction_findings"),audit_events:K_($,"audit_events"),approval_gates:K_($,"approval_gates"),storage_objects:K_($,"storage_objects"),embeddings:K_($,"chunk_embeddings"),vector_entries:K_($,"vector_index_entries"),reindex_queue:K_($,"reindex_queue"),knowledge_machines:K_($,"knowledge_machines"),sync_snapshots:K_($,"knowledge_sync_snapshots"),sync_changes:K_($,"knowledge_sync_changes"),sync_conflicts:K_($,"knowledge_sync_conflicts"),sync_table_clocks:K_($,"knowledge_sync_table_clocks"),sync_imports:K_($,"knowledge_sync_imports"),promotion_candidates:K_($,"knowledge_promotion_candidates"),durable_records:K_($,"durable_knowledge_records")}}finally{$.close()}}import{chmodSync as j7,existsSync as N7,mkdirSync as bS,readFileSync as E7,statSync as O7,writeFileSync as A7}from"fs";import{dirname as L7,join as O2,relative as J7,sep as P7}from"path";import{pathToFileURL as z7}from"url";function w$(_){let $=_.replace(/\\/g,"/").trim();if(!$||$.startsWith("/"))throw Error(`Invalid artifact key: ${_}`);let D=$.split("/").filter(Boolean);if(D.length===0||D.some((g)=>g==="."||g===".."))throw Error(`Invalid artifact key: ${_}`);return D.join("/")}function A2(_,$){let D=J7(_,$);if(D.startsWith("..")||D===".."||D.startsWith(`..${P7}`))throw Error(`Artifact path escapes root: ${$}`)}function S7(_){if(!_)return;let $={};for(let[D,g]of Object.entries(_))if(typeof g==="string")$[D]=g;else if(typeof g==="number"||typeof g==="boolean")$[D]=String(g);return Object.keys($).length>0?$:void 0}class HS{root;type="local";canRead=!0;canWrite=!0;constructor(_){this.root=_;bS(_,{recursive:!0,mode:448})}async put(_){let $=w$(_.key),D=O2(this.root,$);return A2(this.root,D),bS(L7(D),{recursive:!0,mode:448}),A7(D,_.body,{mode:384}),j7(D,384),{key:$,uri:z7(D).href,modified_at:O7(D).mtime.toISOString()}}async getText(_){let $=w$(_),D=O2(this.root,$);return A2(this.root,D),E7(D,"utf8")}async exists(_){let $=w$(_),D=O2(this.root,$);return A2(this.root,D),N7(D)}}class kS{options;type="s3";canRead=!0;canWrite=!0;client;constructor(_){this.options=_;this.client=_.client}async getClient(){if(this.client)return this.client;let[{S3Client:_},{fromIni:$}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]);return this.client=new _({region:this.options.region,credentials:this.options.profile?$({profile:this.options.profile}):void 0,maxAttempts:this.options.max_attempts}),this.client}objectKey(_){let $=w$(_),D=this.options.prefix?w$(this.options.prefix):"";return D?`${D}/${$}`:$}async put(_){let[{PutObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),g=w$(_.key),U=this.objectKey(g);return await D.send(new $({Bucket:this.options.bucket,Key:U,Body:_.body,ContentType:_.content_type,Metadata:S7(_.metadata),ServerSideEncryption:this.options.server_side_encryption,SSEKMSKeyId:this.options.kms_key_id})),{key:g,uri:`s3://${this.options.bucket}/${U}`,modified_at:new Date().toISOString()}}async getText(_){let[{GetObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),g=this.objectKey(_),U=await D.send(new $({Bucket:this.options.bucket,Key:g}));if(!U.Body)return"";return await U.Body.transformToString()}async exists(_){let[{HeadObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),g=this.objectKey(_);try{return await D.send(new $({Bucket:this.options.bucket,Key:g})),!0}catch(U){let I=U instanceof Error?U.name:"";if(I==="NotFound"||I==="NoSuchKey"||I==="NotFoundError")return!1;throw U}}}function L2(_,$){if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)throw Error("S3 artifact storage requires storage.s3.bucket");return new kS({bucket:_.storage.s3.bucket,prefix:_.storage.s3.prefix,region:_.storage.s3.region,profile:_.storage.s3.profile,max_attempts:_.storage.s3.max_attempts,server_side_encryption:_.storage.s3.server_side_encryption,kms_key_id:_.storage.s3.kms_key_id})}return new HS($.artifactsDir)}import{createHash as Jg}from"crypto";import{spawnSync as Eb}from"child_process";import{existsSync as W_,readFileSync as Ob}from"fs";import{hostname as Ab}from"os";import{join as iG,resolve as j8}from"path";import{createHash as hT,randomUUID as cT}from"crypto";import{createHash as q7,randomUUID as V7}from"crypto";import{existsSync as P2,readdirSync as F7}from"fs";import{join as yS}from"path";import{pathToFileURL as K7}from"url";import{existsSync as W7,mkdirSync as X7,readFileSync as G7,unlinkSync as R7,writeFileSync as Y7}from"fs";import{homedir as Q7}from"os";import{dirname as T7,join as CS}from"path";var J2="https://knowledge.md";function a$(_){let $=new URL(_);if($.protocol!=="http:"&&$.protocol!=="https:")throw Error("Knowledge API URL must use http or https.");let D=$.pathname.replace(/\/+$/,"");if(D==="/api"||D==="/api/v1")$.pathname="/";else if(D.endsWith("/api/v1"))$.pathname=D.slice(0,-7)||"/";else if(D.endsWith("/api"))$.pathname=D.slice(0,-4)||"/";return $.toString().replace(/\/+$/,"")}function mg(_=process.env){if(_.HASNA_KNOWLEDGE_AUTH_PATH)return _.HASNA_KNOWLEDGE_AUTH_PATH;let $=_.HASNA_KNOWLEDGE_AUTH_DIR??CS(Q7(),".hasna","knowledge");return CS($,"auth.json")}function vS(_,$=process.env){return a$($.KNOWLEDGE_API_URL??_?.hosted?.api_url??J2)}function fS(_=process.env){try{let $=mg(_);if(!W7($))return null;let D=JSON.parse(G7($,"utf8"));return typeof D.api_key==="string"&&D.api_key.length>0?D:null}catch{return null}}function wS(_,$=process.env){let D=mg($),g={..._,api_url:_.api_url?a$(_.api_url):void 0,created_at:_.created_at??new Date().toISOString()};return X7(T7(D),{recursive:!0,mode:448}),Y7(D,`${JSON.stringify(g,null,2)} +`,{mode:384}),g}function rS(_=process.env){try{return R7(mg(_)),!0}catch{return!1}}function B7(_=process.env){if(_.KNOWLEDGE_API_KEY)return{apiKey:_.KNOWLEDGE_API_KEY,source:"env"};if(_.HASNA_KNOWLEDGE_API_KEY)return{apiKey:_.HASNA_KNOWLEDGE_API_KEY,source:"env"};let $=fS(_);return $?.api_key?{apiKey:$.api_key,source:"file"}:{apiKey:null,source:"none"}}function uS(_,$=process.env){let D=fS($),g=B7($),U=$.KNOWLEDGE_API_URL?vS(_,$):D?.api_url?a$(D.api_url):vS(_,$);return{authenticated:Boolean(g.apiKey),source:g.source,api_url:U,auth_path:mg($),email:g.source==="file"?D?.email??null:null,org_id:g.source==="file"?D?.org_id??null:null,org_slug:g.source==="file"?D?.org_slug??null:null,user_id:g.source==="file"?D?.user_id??null:null,api_key_present:Boolean(g.apiKey)}}var xS=2;var hS=[{kind:"schema",prefix:"schemas/",description:"Machine-readable agent schemas and source rules."},{kind:"index",prefix:"indexes/",description:"Small orientation indexes and future shard manifests."},{kind:"log",prefix:"logs/",description:"Append-only JSONL run and wiki-maintenance log partitions."},{kind:"run",prefix:"runs/",description:"Prompt/tool/cost ledgers and generated output records."},{kind:"wiki_page",prefix:"wiki/",description:"Generated cited Markdown pages, not raw source files."},{kind:"export",prefix:"exports/",description:"Portable exports and snapshots of derived knowledge state."}],M7=["cloud.env","knowledge.db.pre-cloud-*.bak","db.json.pre-cloud-*.bak","migration-exports"];function cS(_){let $=[];if(P2(yS(_.home,"cloud.env")))$.push("cloud.env");if(P2(yS(_.home,"migration-exports")))$.push("migration-exports");if(P2(_.home)){for(let D of F7(_.home))if(/^(?:knowledge\.db|db\.json)\.pre-cloud-.+\.bak$/i.test(D))$.push(D)}return $}function P0(_){let $=typeof _==="string"?Buffer.from(_):Buffer.from(_);return{hash:`sha256:${q7("sha256").update($).digest("hex")}`,size_bytes:$.byteLength}}function nS(_){return hS.find((D)=>_.startsWith(D.prefix))?.kind??"artifact"}function ig(_,$,D="global"){let g=z2(_,$),U=_.storage.s3??null,I=U?.prefix?.replace(/^\/+|\/+$/g,"")??"",j=U?`s3://${U.bucket}/${I?`${I}/`:""}`:"",N=P_.s3.prefix.replace(/^\/+|\/+$/g,""),O=`s3://${P_.s3.bucket}/${N}/`,A=_.storage.type==="s3"&&U?.bucket===P_.s3.bucket&&(U.region??null)===P_.s3.region;return{scope:D,mode:_.mode,storage_type:_.storage.type,workspace_home:$.home,local_layout:{app_path:l$,config_path:$.configPath,json_store_path:$.jsonStorePath,knowledge_db_path:$.knowledgeDbPath,directories:{artifacts:$.artifactsDir,cache:$.cacheDir,exports:$.exportsDir,indexes:$.indexesDir,logs:$.logsDir,runs:$.runsDir,schemas:$.schemasDir,wiki:$.wikiDir}},artifact_store:{type:_.storage.type,artifacts_root:_.storage.artifacts_root,uri_prefix:_.storage.type==="s3"?j:K7(`${$.artifactsDir}/`).href,s3:U?{bucket:U.bucket,prefix:I,region:U.region??null,profile:U.profile??null,server_side_encryption:U.server_side_encryption??null,kms_key_configured:Boolean(U.kms_key_id)}:null},canonical_example:{division:P_.division,app_type:P_.app_type,app:P_.app,env:P_.env,active:A,local_path:P_.local_path,s3:{bucket:P_.s3.bucket,region:P_.s3.region,profile:P_.s3.profile,prefix:N,uri_prefix:O,server_side_encryption:P_.s3.server_side_encryption},secrets:{env:P_.secrets.env,aws:P_.secrets.aws,s3:P_.secrets.s3,rds:P_.secrets.rds,future_rds:P_.secrets.future_rds},evidence_doc:P_.evidence_doc},hosted:{enabled:_.mode==="hosted",api_url:a$(_.hosted?.api_url??J2),api_url_env:"KNOWLEDGE_API_URL",api_key_env:"KNOWLEDGE_API_KEY",auth_storage:"~/.hasna/knowledge/auth.json",registry_contract_version:xS,requires_hosted_account_for_local_use:!1},secret_handling:{workspace_env_files_supported:!1,forbidden_workspace_files:M7,forbidden_workspace_files_present:cS($),runtime_env_keys:["HASNA_KNOWLEDGE_STORAGE_MODE","KNOWLEDGE_STORAGE_MODE","HASNA_KNOWLEDGE_DATABASE_URL","KNOWLEDGE_DATABASE_URL"],secret_ref_authority:"open-secrets",approved_secret_refs:{env:P_.secrets.env,aws:P_.secrets.aws,s3:P_.secrets.s3,rds:P_.secrets.rds},db_url_rotation_decision:{status:"blocked_without_secret_authority",reason:"No live secret mutation authority is available in @hasna/knowledge. Rotate the DB URL only through the approved secret authority if separate evidence proves the URL propagated to backups, exports, sync bundles, reports, or copied artifacts.",authority_required:!0}},source_ownership:{owner:"open-files",preferred_ref:_.sources.preferred_ref,allowed_schemes:_.sources.allowed_schemes,raw_source_bytes_stored_in_open_knowledge:!1,stores:["source refs","source revisions and hashes","citation spans","redacted extracted chunks","embeddings","generated wiki artifacts","indexes","run ledgers"],does_not_store:["raw open-files bytes","S3 object credentials","connector secrets","hosted tenant ownership state"]},private_fleet_boundary:{manifest_authority:"open-machines",source_ref_authority:"open-files",secret_ref_authority:"open-secrets",raw_private_manifest_bytes_stored_in_open_knowledge:!1,accepted_source_ref_schemes:_.sources.allowed_schemes.filter((L)=>["open-files","s3","file"].includes(L)),stores:["source refs for private manifests","redacted setup decisions","runbook summaries","citation spans into approved knowledge sources","machine setup evidence hashes"],does_not_store:["private fleet manifests","machine hostnames","machine serial numbers","sudo passwords","VNC passwords","SSH private keys","GitHub App private keys","secret values"],example_manifest_ref:"open-files://source/private-fleet-manifest/path/machines.json"},generated_artifacts:hS,scalability:{catalog:"knowledge.db tracks sources, revisions, chunks, citations, indexes, runs, and storage_objects.",indexes:"Indexes are cataloged DB rows plus sharded artifacts, not one giant index.md.",logs:"Logs use dated JSONL partitions under logs/yyyy/mm/dd.jsonl.",markdown:"Markdown pages are the readable wiki layer over DB/object-store state."},warnings:g.warnings}}function z2(_,$){let D=[],g=[],U=cS($);for(let I of U)D.push(`Forbidden Knowledge workspace file present: ${I}. Move secrets to open-secrets/runtime env and remove or replace legacy backups/exports with redacted owner-only artifacts.`);if(!$.home.endsWith(l$))g.push(`Workspace home does not end with ${l$}: ${$.home}`);if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)D.push("storage.s3.bucket is required when storage.type is s3.");if(!_.storage.s3?.prefix)g.push("storage.s3.prefix is empty; generated knowledge artifacts will be written at the bucket root.");if(_.mode==="local")g.push("storage.type is s3 while mode is local; this is valid for BYO S3, but hosted wrappers should set mode to hosted.")}if(_.storage.type==="local"&&_.storage.s3)g.push("storage.s3 is configured but ignored while storage.type is local.");if(_.sources.preferred_ref!=="open-files")g.push("sources.preferred_ref should stay open-files for durable company knowledge.");if(!_.sources.allowed_schemes.includes("open-files"))D.push("sources.allowed_schemes must include open-files.");if(_.mode==="hosted"&&_.hosted?.api_url)try{a$(_.hosted.api_url)}catch{D.push("hosted.api_url must be an http(s) URL when mode is hosted.")}return{ok:D.length===0,errors:D,warnings:g}}function s$(_,$,D=new Date){let g=D.toISOString(),U=_.prepare(` INSERT INTO storage_objects ( id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json, created_at, updated_at ) @@ -590,49 +590,49 @@ VALUES (10, datetime('now')); size_bytes = excluded.size_bytes, metadata_json = excluded.metadata_json, updated_at = excluded.updated_at - `);_.transaction((j)=>{for(let N of j){let O={key:N.key,...N.modified_at?{artifact_modified_at:N.modified_at}:{},...N.metadata??{}};D.run(OT(),N.uri,N.kind,N.content_type??null,N.hash??null,N.size_bytes??null,JSON.stringify(O),U,U)}})($)}function NE(_){return["deleted","stale","invalidated","reindex_required"].includes((_??"").toLowerCase())}function T6(_){let $=_.status??null;return{source_owner:"open-files",source_ref:_.source_ref??null,source_uri:_.source_uri??null,source_kind:_.source_kind??null,source_revision_id:_.source_revision_id??null,revision:_.revision??null,hash:_.hash??null,chunk_id:_.chunk_id??null,start_offset:_.start_offset??null,end_offset:_.end_offset??null,status:$,read_only:!0,citation_required:!0,resolver:_.resolver??null,stale:NE($)}}function U$(_){return{source_owner:"open-files",generated_from:_.generated_from,artifact_key:_.artifact_key,source_refs:_.source_refs??[],read_only_sources:!0,citation_required:_.citation_required??!0,raw_source_bytes_stored_in_open_knowledge:!1}}function HS(_,$){return{..._,provenance:$}}import{createHash as W7}from"crypto";import{existsSync as X7,readFileSync as R7}from"fs";import{basename as oU}from"path";import{createHash as xT}from"crypto";import{existsSync as yT,readFileSync as hT}from"fs";import{basename as cT}from"path";import{fileURLToPath as PT}from"url";function kS(_,$){if(!_)throw Error($);return _}function zT(_){let g=_.slice(13).split("/").filter(Boolean),U=g[0];if(U!=="file"&&U!=="source")throw Error("Invalid open-files ref. Expected open-files://file/, open-files://file//revision/, or open-files://source//path/.");let D=kS(g[1],"Invalid open-files ref. Missing id.");if(U==="file"){if(g.length===2)return{kind:"open-files",uri:_,entity:U,id:D};if(g[2]==="revision"&&g[3]&&g.length===4)return{kind:"open-files",uri:_,entity:U,id:D,revision_id:decodeURIComponent(g[3])};throw Error("Invalid open-files file ref. Expected open-files://file//revision/.")}let I=g.indexOf("path"),j=I>=0?decodeURIComponent(g.slice(I+1).join("/")):void 0;return{kind:"open-files",uri:_,entity:U,id:D,path:j}}function ST(_){let $=new URL(_),g=kS($.hostname,"Invalid s3 ref. Missing bucket."),U=decodeURIComponent($.pathname.replace(/^\/+/,""));if(!U)throw Error("Invalid s3 ref. Missing object key.");return{kind:"s3",uri:_,bucket:g,key:U}}function WT(_){return{kind:"file",uri:_,path:PT(_)}}function XT(_){let $=new URL(_);return{kind:"web",uri:_,url:$.toString()}}function A$(_){if(_.startsWith("open-files://"))return zT(_);if(_.startsWith("s3://"))return ST(_);if(_.startsWith("file://"))return WT(_);if(_.startsWith("https://")||_.startsWith("http://"))return XT(_);throw Error(`Unsupported source ref scheme: ${_}`)}function CS(_,$=A$(_)){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function rS(_){let $=A$(_);return $.kind==="open-files"&&$.entity==="file"?$.revision_id??null:null}import{createHash as RT,randomUUID as OE}from"crypto";import{relative as GT,resolve as wS,sep as YT}from"path";function vS(_){let $=process.env[_];return $==="1"||$==="true"||$==="yes"}function fS(_,$){let g=_,U=new Set(g.safety?.network?.allowed_s3_buckets??[]);if(_.storage.type==="s3"&&_.storage.s3?.bucket)U.add(_.storage.s3.bucket);if(process.env.HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS)for(let D of process.env.HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.split(",").map((I)=>I.trim()).filter(Boolean))U.add(D);return{mode:_.mode,allowWriteRoots:[$.home,$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir].map((D)=>wS(D)),readOnlySourceAccess:!0,network:{webSearchEnabled:g.safety?.network?.web_search_enabled??vS("HASNA_KNOWLEDGE_WEB_SEARCH"),s3ReadsEnabled:g.safety?.network?.s3_reads_enabled??vS("HASNA_KNOWLEDGE_ALLOW_S3_READS"),allowedS3Buckets:[...U].sort()},redaction:{enabled:g.safety?.redaction?.enabled??!0},approvals:{generatedWritesRequireApproval:g.safety?.approvals?.generated_writes_require_approval??!0}}}function QT(_,$){let g=GT(_,$);return g===""||!g.startsWith("..")&&g!==".."&&!g.startsWith(`..${YT}`)}function _6(_,$){let g=wS(_);if(!$.allowWriteRoots.some((U)=>QT(U,g)))throw Error(`Safety policy denied write outside .hasna/knowledge: ${_}`)}function q6(_,$){let U=new URL(_).hostname;if(!$.network.s3ReadsEnabled)throw Error("Safety policy denied S3 read. Set safety.network.s3_reads_enabled=true or HASNA_KNOWLEDGE_ALLOW_S3_READS=1.");if(!$.network.allowedS3Buckets.includes(U))throw Error(`Safety policy denied S3 bucket "${U}". Add it to safety.network.allowed_s3_buckets or HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.`)}function P0(_){if(!_.network.webSearchEnabled)throw Error("Safety policy denied web search. Set safety.network.web_search_enabled=true or HASNA_KNOWLEDGE_WEB_SEARCH=1.")}var uS=[{type:"private_key_block",severity:"high",regex:/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,replacement:"[REDACTED:private_key_block]"},{type:"secret_assignment",severity:"high",regex:/\b(?:api[_-]?key|secret|token|password)\s*[:=]\s*['"]?[^'"\s]{8,}/gi,replacement:"[REDACTED:secret_assignment]"},{type:"openai_api_key",severity:"high",regex:/\bsk-[A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:openai_api_key]"},{type:"anthropic_api_key",severity:"high",regex:new RegExp(`\\b${["sk","ant"].join("-")}-[A-Za-z0-9_-]{20,}\\b`,"g"),replacement:"[REDACTED:anthropic_api_key]"},{type:"aws_access_key_id",severity:"high",regex:/\bA(?:KIA|SIA)[A-Z0-9]{16}\b/g,replacement:"[REDACTED:aws_access_key_id]"}];function u_(_,$){if($&&!$.redaction.enabled)return{text:_,findings:[]};let g=_,U=[];for(let D of uS)g=g.replace(D.regex,(I,...j)=>{let N=typeof j.at(-2)==="number"?j.at(-2):g.indexOf(I);return U.push({type:D.type,severity:D.severity,start:Math.max(0,N),end:Math.max(0,N+I.length)}),D.replacement});return{text:g,findings:U}}function TT(_){return`audit_${RT("sha256").update(`${_.event_type}\x00${_.action}\x00${_.target_uri??""}\x00${_.created_at??""}\x00${JSON.stringify(_.metadata??{})}\x00${OE()}`).digest("hex").slice(0,24)}`}function EE(_,$=0){if($>6)return"[Truncated:depth]";if(typeof _==="string")return _.length>1000?`${_.slice(0,1000)}...[Truncated:${_.length-1000} chars]`:_;if(typeof _==="number"||typeof _==="boolean"||_===null||_===void 0)return _;if(Array.isArray(_)){let g=_.slice(0,25).map((U)=>EE(U,$+1));if(_.length>25)g.push(`[Truncated:${_.length-25} items]`);return g}if(typeof _==="object"){let g={},U=Object.entries(_).slice(0,50);for(let[I,j]of U)g[I]=EE(j,$+1);let D=Object.keys(_).length;if(D>U.length)g.__truncated_keys=D-U.length;return g}return String(_)}function X_(_,$){let g=$.created_at??new Date().toISOString(),U=EE($.metadata??{}),D=TT({...$,metadata:U,created_at:g});return _.run(`INSERT INTO audit_events (id, event_type, action, target_uri, decision, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?)`,[D,$.event_type,$.action,$.target_uri??null,$.decision,JSON.stringify(U),g]),D}function z0(_,$){let g=$.created_at??new Date().toISOString();for(let U of $.findings)_.run(`INSERT INTO redaction_findings (id, source_uri, run_id, severity, finding_type, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?)`,[`redact_${OE()}`,$.source_uri??null,$.run_id??null,U.severity,U.type,JSON.stringify({...$.metadata??{},start:U.start,end:U.end}),g]);return $.findings.length}function iU(_,$){let g=$.created_at??new Date().toISOString(),U=`approval_${OE()}`;return _.run(`INSERT INTO approval_gates (id, action, target_uri, status, reason, approved_by, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[U,$.action,$.target_uri??null,"approved",$.reason??null,$.approved_by??"local-cli",JSON.stringify($.metadata??{}),g,g]),{id:U,status:"approved"}}var qT=[{type:"github_token",severity:"high",regex:/\bgh[pousr]_[A-Za-z0-9_]{20,}\b/g,replacement:"[REDACTED:github_token]"},{type:"github_pat_token",severity:"high",regex:/\bgithub[_]pat[_][A-Za-z0-9_]{20,}\b/g,replacement:"[REDACTED:github_pat_token]"},{type:"package_registry_token",severity:"high",regex:/\bnpm_[A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:package_registry_token]"},{type:"context7_token",severity:"high",regex:/\bctx7sk[-][A-Za-z0-9_-]{10,}\b/g,replacement:"[REDACTED:context7_token]"},{type:"xai_api_key",severity:"high",regex:/\bxai[-][A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:xai_api_key]"},{type:"google_api_key",severity:"high",regex:/\bAIza[A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:google_api_key]"}];uS.push(...qT);function BT(_,$,g){let U=_.query(`SELECT id FROM approval_gates + `);_.transaction((j)=>{for(let N of j){let O={key:N.key,...N.modified_at?{artifact_modified_at:N.modified_at}:{},...N.metadata??{}};U.run(V7(),N.uri,N.kind,N.content_type??null,N.hash??null,N.size_bytes??null,JSON.stringify(O),g,g)}})($)}function S2(_){return["deleted","stale","invalidated","reindex_required"].includes((_??"").toLowerCase())}function T6(_){let $=_.status??null;return{source_owner:"open-files",source_ref:_.source_ref??null,source_uri:_.source_uri??null,source_kind:_.source_kind??null,source_revision_id:_.source_revision_id??null,revision:_.revision??null,hash:_.hash??null,chunk_id:_.chunk_id??null,start_offset:_.start_offset??null,end_offset:_.end_offset??null,status:$,read_only:!0,citation_required:!0,resolver:_.resolver??null,stale:S2($)}}function g$(_){return{source_owner:"open-files",generated_from:_.generated_from,artifact_key:_.artifact_key,source_refs:_.source_refs??[],read_only_sources:!0,citation_required:_.citation_required??!0,raw_source_bytes_stored_in_open_knowledge:!1}}function dS(_,$){return{..._,provenance:$}}import{createHash as kT}from"crypto";import{existsSync as CT,readFileSync as vT}from"fs";import{basename as pg}from"path";import{createHash as $T}from"crypto";import{existsSync as DT,readFileSync as UT}from"fs";import{basename as gT}from"path";import{fileURLToPath as Z7}from"url";function mS(_,$){if(!_)throw Error($);return _}function b7(_){let D=_.slice(13).split("/").filter(Boolean),g=D[0];if(g!=="file"&&g!=="source")throw Error("Invalid open-files ref. Expected open-files://file/, open-files://file//revision/, or open-files://source//path/.");let U=mS(D[1],"Invalid open-files ref. Missing id.");if(g==="file"){if(D.length===2)return{kind:"open-files",uri:_,entity:g,id:U};if(D[2]==="revision"&&D[3]&&D.length===4)return{kind:"open-files",uri:_,entity:g,id:U,revision_id:decodeURIComponent(D[3])};throw Error("Invalid open-files file ref. Expected open-files://file//revision/.")}let I=D.indexOf("path"),j=I>=0?decodeURIComponent(D.slice(I+1).join("/")):void 0;return{kind:"open-files",uri:_,entity:g,id:U,path:j}}function H7(_){let $=new URL(_),D=mS($.hostname,"Invalid s3 ref. Missing bucket."),g=decodeURIComponent($.pathname.replace(/^\/+/,""));if(!g)throw Error("Invalid s3 ref. Missing object key.");return{kind:"s3",uri:_,bucket:D,key:g}}function k7(_){return{kind:"file",uri:_,path:Z7(_)}}function C7(_){let $=new URL(_);return{kind:"web",uri:_,url:$.toString()}}function A$(_){if(_.startsWith("open-files://"))return b7(_);if(_.startsWith("s3://"))return H7(_);if(_.startsWith("file://"))return k7(_);if(_.startsWith("https://")||_.startsWith("http://"))return C7(_);throw Error(`Unsupported source ref scheme: ${_}`)}function iS(_,$=A$(_)){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function lS(_){let $=A$(_);return $.kind==="open-files"&&$.entity==="file"?$.revision_id??null:null}import{createHash as v7,randomUUID as X2}from"crypto";import{relative as f7,resolve as oS,sep as w7}from"path";function tS(_){let $=process.env[_];return $==="1"||$==="true"||$==="yes"}function pS(_,$){let D=_,g=new Set(D.safety?.network?.allowed_s3_buckets??[]);if(_.storage.type==="s3"&&_.storage.s3?.bucket)g.add(_.storage.s3.bucket);if(process.env.HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS)for(let U of process.env.HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.split(",").map((I)=>I.trim()).filter(Boolean))g.add(U);return{mode:_.mode,allowWriteRoots:[$.home,$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir].map((U)=>oS(U)),readOnlySourceAccess:!0,network:{webSearchEnabled:D.safety?.network?.web_search_enabled??tS("HASNA_KNOWLEDGE_WEB_SEARCH"),s3ReadsEnabled:D.safety?.network?.s3_reads_enabled??tS("HASNA_KNOWLEDGE_ALLOW_S3_READS"),allowedS3Buckets:[...g].sort()},redaction:{enabled:D.safety?.redaction?.enabled??!0},approvals:{generatedWritesRequireApproval:D.safety?.approvals?.generated_writes_require_approval??!0}}}function r7(_,$){let D=f7(_,$);return D===""||!D.startsWith("..")&&D!==".."&&!D.startsWith(`..${w7}`)}function _6(_,$){let D=oS(_);if(!$.allowWriteRoots.some((g)=>r7(g,D)))throw Error(`Safety policy denied write outside .hasna/knowledge: ${_}`)}function B6(_,$){let g=new URL(_).hostname;if(!$.network.s3ReadsEnabled)throw Error("Safety policy denied S3 read. Set safety.network.s3_reads_enabled=true or HASNA_KNOWLEDGE_ALLOW_S3_READS=1.");if(!$.network.allowedS3Buckets.includes(g))throw Error(`Safety policy denied S3 bucket "${g}". Add it to safety.network.allowed_s3_buckets or HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.`)}function z0(_){if(!_.network.webSearchEnabled)throw Error("Safety policy denied web search. Set safety.network.web_search_enabled=true or HASNA_KNOWLEDGE_WEB_SEARCH=1.")}var eS=[{type:"private_key_block",severity:"high",regex:/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,replacement:"[REDACTED:private_key_block]"},{type:"secret_assignment",severity:"high",regex:/\b(?:api[_-]?key|secret|token|password)\s*[:=]\s*['"]?[^'"\s]{8,}/gi,replacement:"[REDACTED:secret_assignment]"},{type:"openai_api_key",severity:"high",regex:/\bsk-[A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:openai_api_key]"},{type:"anthropic_api_key",severity:"high",regex:new RegExp(`\\b${["sk","ant"].join("-")}-[A-Za-z0-9_-]{20,}\\b`,"g"),replacement:"[REDACTED:anthropic_api_key]"},{type:"aws_access_key_id",severity:"high",regex:/\bA(?:KIA|SIA)[A-Z0-9]{16}\b/g,replacement:"[REDACTED:aws_access_key_id]"}];function u_(_,$){if($&&!$.redaction.enabled)return{text:_,findings:[]};let D=_,g=[];for(let U of eS)D=D.replace(U.regex,(I,...j)=>{let N=typeof j.at(-2)==="number"?j.at(-2):D.indexOf(I);return g.push({type:U.type,severity:U.severity,start:Math.max(0,N),end:Math.max(0,N+I.length)}),U.replacement});return{text:D,findings:g}}function u7(_){return`audit_${v7("sha256").update(`${_.event_type}\x00${_.action}\x00${_.target_uri??""}\x00${_.created_at??""}\x00${JSON.stringify(_.metadata??{})}\x00${X2()}`).digest("hex").slice(0,24)}`}function W2(_,$=0){if($>6)return"[Truncated:depth]";if(typeof _==="string")return _.length>1000?`${_.slice(0,1000)}...[Truncated:${_.length-1000} chars]`:_;if(typeof _==="number"||typeof _==="boolean"||_===null||_===void 0)return _;if(Array.isArray(_)){let D=_.slice(0,25).map((g)=>W2(g,$+1));if(_.length>25)D.push(`[Truncated:${_.length-25} items]`);return D}if(typeof _==="object"){let D={},g=Object.entries(_).slice(0,50);for(let[I,j]of g)D[I]=W2(j,$+1);let U=Object.keys(_).length;if(U>g.length)D.__truncated_keys=U-g.length;return D}return String(_)}function X_(_,$){let D=$.created_at??new Date().toISOString(),g=W2($.metadata??{}),U=u7({...$,metadata:g,created_at:D});return _.run(`INSERT INTO audit_events (id, event_type, action, target_uri, decision, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?)`,[U,$.event_type,$.action,$.target_uri??null,$.decision,JSON.stringify(g),D]),U}function S0(_,$){let D=$.created_at??new Date().toISOString();for(let g of $.findings)_.run(`INSERT INTO redaction_findings (id, source_uri, run_id, severity, finding_type, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?)`,[`redact_${X2()}`,$.source_uri??null,$.run_id??null,g.severity,g.type,JSON.stringify({...$.metadata??{},start:g.start,end:g.end}),D]);return $.findings.length}function lg(_,$){let D=$.created_at??new Date().toISOString(),g=`approval_${X2()}`;return _.run(`INSERT INTO approval_gates (id, action, target_uri, status, reason, approved_by, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[g,$.action,$.target_uri??null,"approved",$.reason??null,$.approved_by??"local-cli",JSON.stringify($.metadata??{}),D,D]),{id:g,status:"approved"}}var x7=[{type:"github_token",severity:"high",regex:/\bgh[pousr]_[A-Za-z0-9_]{20,}\b/g,replacement:"[REDACTED:github_token]"},{type:"github_pat_token",severity:"high",regex:/\bgithub[_]pat[_][A-Za-z0-9_]{20,}\b/g,replacement:"[REDACTED:github_pat_token]"},{type:"package_registry_token",severity:"high",regex:/\bnpm_[A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:package_registry_token]"},{type:"context7_token",severity:"high",regex:/\bctx7sk[-][A-Za-z0-9_-]{10,}\b/g,replacement:"[REDACTED:context7_token]"},{type:"xai_api_key",severity:"high",regex:/\bxai[-][A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:xai_api_key]"},{type:"google_api_key",severity:"high",regex:/\bAIza[A-Za-z0-9_-]{20,}\b/g,replacement:"[REDACTED:google_api_key]"}];eS.push(...x7);function y7(_,$,D){let g=_.query(`SELECT id FROM approval_gates WHERE action = ? AND status = 'approved' AND (target_uri IS NULL OR target_uri = ? OR ? IS NULL) - ORDER BY updated_at DESC LIMIT 1`).get($,g??null,g??null);return Boolean(U)}function xS(_,$,g,U){let D=g==="generated_write"&&$.approvals.generatedWritesRequireApproval,I=!D||BT(_,g,U);return{action:g,target_uri:U??null,approval_required:D,approved:I,decision:I?"allow":"requires_approval"}}import{createHash as KT}from"crypto";import{realpathSync as VT}from"fs";import{homedir as FT,tmpdir as MT}from"os";var a6=String.raw`[^\s"'<>),\]}]`,LE=String.raw`[^/\\\s"'<>]+`,cS=/file:\/\/[^\s"'<>),\]}]+/gi,ZT=/\/[^\s"'<>),\]}]*\.hasna\/[^\s"'<>),\]}]*/g,nS=/(?:~|\/(?:home|Users)\/[^/\s"'<>]+)?\/?\.hasna(?:\/[^\s"'<>),\]}]*)?/gi,dS=new RegExp(String.raw`/(?:home|Users)/${LE}/(?:workspace|Workspace)/${a6}*`,"g"),bT=[new RegExp(String.raw`/(?:home|Users)/${LE}(?:/${a6}*)?`,"g"),new RegExp(String.raw`(?:/private)?/var/(?:folders|tmp)/${a6}+`,"g"),new RegExp(String.raw`(?:/private)?/tmp/${a6}+`,"g"),new RegExp(String.raw`(?),\]}]+)\b/gi,iS=/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s"'<>),\]}]+/gi,HT=new Set(["content_base64"]);function kT(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function CT(_){return _.length>=4&&_!=="/"&&!/^[A-Za-z]:[\\/]?$/.test(_)}var yS=null,AE=[];function rT(){let _=new Set;for(let g of[FT(),MT()]){if(!g)continue;_.add(g);try{_.add(VT(g))}catch{}}let $=[..._].sort().join("\x00");if($===yS)return AE;return yS=$,AE=[..._].filter(CT).sort((g,U)=>U.length-g.length).map((g)=>new RegExp(`${kT(g)}(?:[/\\\\]${a6}*)?`,"g")),AE}function L$(_){return KT("sha256").update(_).digest("hex").slice(0,12)}function vT(_){return _.length<=80?_:`${_.slice(0,77)}...`}function hS(_){return/(?:^|\/)\.hasna(?:\/|$)/i.test(_)||/\b(?:knowledge\.db|db\.json|cloud\.env)\b/i.test(_)||/\bmigration-exports\//i.test(_)}function wT(_,$,g,U){for(let D of _.matchAll(cS)){let I=D[0];if(!g.allowFileSourceRefs||hS(I))U.push({type:hS(I)?"private_file_uri":"local_file_uri",severity:"high",path:$,preview:vT(I.replace(/^file:\/\/.*/,`[redacted:file-uri:${L$(I)}]`))})}for(let D of _.matchAll(nS))U.push({type:"private_hasna_path",severity:"high",path:$,preview:`[redacted:.hasna:${L$(D[0])}]`});for(let D of _.matchAll(mS))U.push({type:D[0].toLowerCase()==="cloud.env"?"workspace_env_file":"raw_database_or_export_ref",severity:"high",path:$,preview:`[redacted:${L$(D[0])}]`});for(let D of _.matchAll(iS))U.push({type:"database_url",severity:"high",path:$,preview:`[redacted:database-url:${L$(D[0])}]`});if(!g.allowPrivateWorkspaceRefs)for(let D of _.matchAll(dS))U.push({type:"private_workspace_path",severity:"medium",path:$,preview:`[redacted:workspace:${L$(D[0])}]`})}function fT(_,$={},g="$"){let U=[],D=(I,j)=>{if(typeof I==="string"){wT(I,j,$,U);return}if(!I||typeof I!=="object")return;if(Array.isArray(I)){I.forEach((N,O)=>D(N,`${j}[${O}]`));return}for(let[N,O]of Object.entries(I))D(O,`${j}.${N}`)};return D(_,g),U}function s6(_,$={}){let g=fT(_,$);if(g.length===0)return;let U=new Map;for(let I of g)U.set(I.type,(U.get(I.type)??0)+1);let D=[...U.entries()].map(([I,j])=>`${I}:${j}`).join(", ");throw Error(`Knowledge private-ref lint failed (${D}). Store open-files/s3 refs or approved runtime secret refs instead of private .hasna, file://, raw DB/export, or cloud.env refs.`)}function uT(_){let $=u_(_).text.replace(iS,(g)=>`[REDACTED:database-url:${L$(g)}]`).replace(cS,(g)=>`[REDACTED:local-file-uri:${L$(g)}]`).replace(ZT,(g)=>`[REDACTED:local-hasna-path:${L$(g)}]`).replace(dS,(g)=>`[REDACTED:private-workspace:${L$(g)}]`);for(let g of[...rT(),...bT])$=$.replace(g,(U)=>`[REDACTED:local-path:${L$(U)}]`);return $.replace(nS,(g)=>`[REDACTED:hasna-path:${L$(g)}]`).replace(mS,(g)=>`[REDACTED:private-artifact:${L$(g)}]`)}function q_(_){if(typeof _==="string")return uT(_);if(!_||typeof _!=="object")return _;if(Array.isArray(_))return _.map((g)=>q_(g));let $={};for(let[g,U]of Object.entries(_))$[g]=HT.has(g)?U:q_(U);return $}var nT=20971520,lS=1e4,dT=10;function PE(_,$){return`${_}_${xT("sha256").update($).digest("hex").slice(0,20)}`}function _4(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function N_(_){return typeof _==="string"&&_.length>0?_:void 0}function mT(_){return typeof _==="number"&&Number.isFinite(_)?_:void 0}function iT(_){let $=N_(_.source_ref)??N_(_.source_uri)??N_(_.uri);if($)return $;let g=N_(_.file_id);if(g){let I=N_(_.revision_id)??N_(_.revision),j=`open-files://file/${encodeURIComponent(g)}`;return I?`${j}/revision/${encodeURIComponent(I)}`:j}let U=N_(_.source_id),D=N_(_.path);if(U&&D)return`open-files://source/${encodeURIComponent(U)}/path/${encodeURIComponent(D)}`;throw Error("Manifest item is missing source_ref, file_id, or source_id/path.")}function lT(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function tT(_){let $=N_(_.extracted_text)??N_(_.text)??N_(_.content_text)??N_(_.markdown);if($!==void 0)return $;let g=_.content;return typeof g==="string"?g:null}function oT(_){let $=N_(_.extracted_text_ref)??N_(_.extracted_text_uri)??N_(_.text_ref);if($)return $;let g=_4(_.content);return N_(g?.extracted_text_ref)??N_(g?.extracted_text_uri)??null}function pT(_){let $=N_(_.path);return N_(_.title)??N_(_.name)??($?cT($):null)}function eT(_){return N_(_.hash)??N_(_.checksum)??N_(_.sha256)??null}var tS=new Set(["text","content","content_text","extracted_text","markdown","raw","raw_text","raw_bytes","raw_content","raw_body","raw_file","source_raw","source_raw_bytes","source_bytes","source_content","source_body","file_bytes","file_content","content_bytes","content_base64","document_bytes","document_content","document_base64","binary","binary_content","binary_base64","bytes","body","blob","data","payload"]);function oS(_){return _.toLowerCase().replace(/[\s-]+/g,"_")}function JE(_){if(Array.isArray(_))return _.map((U)=>JE(U));let $=_4(_);if(!$)return _;let g={};for(let[U,D]of Object.entries($)){if(tS.has(oS(U)))continue;g[U]=JE(D)}return g}function aT(_,$,g){return N_(_.revision_id)??N_(_.revision)??N_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??g??N_(_.updated_at)??"current"}function sT(_,$){let g={};for(let[U,D]of Object.entries(_)){if(tS.has(oS(U)))continue;g[U]=q_(JE(D))}return g.source_ref=$.sourceRef,g.source_uri=$.sourceUri,g.status=$.status,g}function _7(_,$,g={}){let U=iT(_);s6(U,{allowFileSourceRefs:g.allowFileSourceRefs===!0});let D=A$(U),I=lT(U,D),j=eT(_),N=N_(_.status)??"active";return{raw:_,sourceRef:U,sourceUri:I,kind:D.kind,title:pT(_),revision:aT(_,D,j),hash:j,extractedTextUri:oT(_),text:tT(_),metadata:sT(_,{sourceRef:U,sourceUri:I,status:N}),acl:_.permissions??_.acl??{},status:N,updatedAt:N_(_.updated_at)??$}}function $7(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let g=JSON.parse($);if(!Array.isArray(g))throw Error("Manifest array parse failed.");return g.map((U)=>{let D=_4(U);if(!D)throw Error("Manifest array entries must be objects.");return D})}if($.startsWith("{"))try{let g=JSON.parse($),U=_4(g);if(!U)throw Error("Manifest object parse failed.");if(Array.isArray(U.items))return U.items.map((D)=>{let I=_4(D);if(!I)throw Error("Manifest items entries must be objects.");return I});if("source_ref"in U||"source_uri"in U||"file_id"in U)return[U]}catch(g){let U=$.split(/\r?\n/).filter((D)=>D.trim().length>0);if(U.length<=1)throw g;return U.map((D)=>{let I=_4(JSON.parse(D));if(!I)throw Error("Manifest JSONL entries must be objects.");return I})}return $.split(/\r?\n/).filter((g)=>g.trim().length>0).map((g)=>{let U=_4(JSON.parse(g));if(!U)throw Error("Manifest JSONL entries must be objects.");return U})}async function g7(_,$,g){let U=new URL(_),D=U.hostname,I=decodeURIComponent(U.pathname.replace(/^\/+/,""));if(!D||!I)throw Error(`Invalid S3 manifest URI: ${_}`);if(g)q6(_,g);let[{S3Client:j,GetObjectCommand:N},{fromIni:O}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),A=$?.storage.type==="s3"&&$.storage.s3?.bucket===D?$.storage.s3:void 0,z=await new j({region:A?.region,credentials:A?.profile?O({profile:A.profile}):void 0,maxAttempts:A?.max_attempts}).send(new N({Bucket:D,Key:I}));if(!z.Body)return"";return await z.Body.transformToString()}async function D7(_,$,g,U=nT){let D=_.startsWith("s3://")?await g7(_,$,g):(()=>{if(!yT(_))throw Error(`Manifest not found: ${_}`);return hT(_,"utf8")})(),I=Buffer.byteLength(D);if(I>U)throw Error(`Manifest input is too large: ${I} bytes exceeds ${U} byte limit.`);return D}function U7(_,$,g){let U=_.replace(/\r\n/g,` -`);if(!U.trim())return[];let D=[],I=0;while(I),\]}]`,R2=String.raw`[^/\\\s"'<>]+`,$W=/file:\/\/[^\s"'<>),\]}]+/gi,m7=/\/[^\s"'<>),\]}]*\.hasna\/[^\s"'<>),\]}]*/g,DW=/(?:~|\/(?:home|Users)\/[^/\s"'<>]+)?\/?\.hasna(?:\/[^\s"'<>),\]}]*)?/gi,UW=new RegExp(String.raw`/(?:home|Users)/${R2}/(?:workspace|Workspace)/${a6}*`,"g"),i7=[new RegExp(String.raw`/(?:home|Users)/${R2}(?:/${a6}*)?`,"g"),new RegExp(String.raw`(?:/private)?/var/(?:folders|tmp)/${a6}+`,"g"),new RegExp(String.raw`(?:/private)?/tmp/${a6}+`,"g"),new RegExp(String.raw`(?),\]}]+)\b/gi,IW=/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s"'<>),\]}]+/gi,l7=new Set(["content_base64"]);function t7(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function o7(_){return _.length>=4&&_!=="/"&&!/^[A-Za-z]:[\\/]?$/.test(_)}var sS=null,G2=[];function p7(){let _=new Set;for(let D of[n7(),d7()]){if(!D)continue;_.add(D);try{_.add(c7(D))}catch{}}let $=[..._].sort().join("\x00");if($===sS)return G2;return sS=$,G2=[..._].filter(o7).sort((D,g)=>g.length-D.length).map((D)=>new RegExp(`${t7(D)}(?:[/\\\\]${a6}*)?`,"g")),G2}function L$(_){return h7("sha256").update(_).digest("hex").slice(0,12)}function e7(_){return _.length<=80?_:`${_.slice(0,77)}...`}function _W(_){return/(?:^|\/)\.hasna(?:\/|$)/i.test(_)||/\b(?:knowledge\.db|db\.json|cloud\.env)\b/i.test(_)||/\bmigration-exports\//i.test(_)}function a7(_,$,D,g){for(let U of _.matchAll($W)){let I=U[0];if(!D.allowFileSourceRefs||_W(I))g.push({type:_W(I)?"private_file_uri":"local_file_uri",severity:"high",path:$,preview:e7(I.replace(/^file:\/\/.*/,`[redacted:file-uri:${L$(I)}]`))})}for(let U of _.matchAll(DW))g.push({type:"private_hasna_path",severity:"high",path:$,preview:`[redacted:.hasna:${L$(U[0])}]`});for(let U of _.matchAll(gW))g.push({type:U[0].toLowerCase()==="cloud.env"?"workspace_env_file":"raw_database_or_export_ref",severity:"high",path:$,preview:`[redacted:${L$(U[0])}]`});for(let U of _.matchAll(IW))g.push({type:"database_url",severity:"high",path:$,preview:`[redacted:database-url:${L$(U[0])}]`});if(!D.allowPrivateWorkspaceRefs)for(let U of _.matchAll(UW))g.push({type:"private_workspace_path",severity:"medium",path:$,preview:`[redacted:workspace:${L$(U[0])}]`})}function s7(_,$={},D="$"){let g=[],U=(I,j)=>{if(typeof I==="string"){a7(I,j,$,g);return}if(!I||typeof I!=="object")return;if(Array.isArray(I)){I.forEach((N,O)=>U(N,`${j}[${O}]`));return}for(let[N,O]of Object.entries(I))U(O,`${j}.${N}`)};return U(_,D),g}function s6(_,$={}){let D=s7(_,$);if(D.length===0)return;let g=new Map;for(let I of D)g.set(I.type,(g.get(I.type)??0)+1);let U=[...g.entries()].map(([I,j])=>`${I}:${j}`).join(", ");throw Error(`Knowledge private-ref lint failed (${U}). Store open-files/s3 refs or approved runtime secret refs instead of private .hasna, file://, raw DB/export, or cloud.env refs.`)}function _T(_){let $=u_(_).text.replace(IW,(D)=>`[REDACTED:database-url:${L$(D)}]`).replace($W,(D)=>`[REDACTED:local-file-uri:${L$(D)}]`).replace(m7,(D)=>`[REDACTED:local-hasna-path:${L$(D)}]`).replace(UW,(D)=>`[REDACTED:private-workspace:${L$(D)}]`);for(let D of[...p7(),...i7])$=$.replace(D,(g)=>`[REDACTED:local-path:${L$(g)}]`);return $.replace(DW,(D)=>`[REDACTED:hasna-path:${L$(D)}]`).replace(gW,(D)=>`[REDACTED:private-artifact:${L$(D)}]`)}function B_(_){if(typeof _==="string")return _T(_);if(!_||typeof _!=="object")return _;if(Array.isArray(_))return _.map((D)=>B_(D));let $={};for(let[D,g]of Object.entries(_))$[D]=l7.has(D)?g:B_(g);return $}var IT=20971520,jW=1e4,jT=10;function Q2(_,$){return`${_}_${$T("sha256").update($).digest("hex").slice(0,20)}`}function _4(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function N_(_){return typeof _==="string"&&_.length>0?_:void 0}function NT(_){return typeof _==="number"&&Number.isFinite(_)?_:void 0}function ET(_){let $=N_(_.source_ref)??N_(_.source_uri)??N_(_.uri);if($)return $;let D=N_(_.file_id);if(D){let I=N_(_.revision_id)??N_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return I?`${j}/revision/${encodeURIComponent(I)}`:j}let g=N_(_.source_id),U=N_(_.path);if(g&&U)return`open-files://source/${encodeURIComponent(g)}/path/${encodeURIComponent(U)}`;throw Error("Manifest item is missing source_ref, file_id, or source_id/path.")}function OT(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function AT(_){let $=N_(_.extracted_text)??N_(_.text)??N_(_.content_text)??N_(_.markdown);if($!==void 0)return $;let D=_.content;return typeof D==="string"?D:null}function LT(_){let $=N_(_.extracted_text_ref)??N_(_.extracted_text_uri)??N_(_.text_ref);if($)return $;let D=_4(_.content);return N_(D?.extracted_text_ref)??N_(D?.extracted_text_uri)??null}function JT(_){let $=N_(_.path);return N_(_.title)??N_(_.name)??($?gT($):null)}function PT(_){return N_(_.hash)??N_(_.checksum)??N_(_.sha256)??null}var NW=new Set(["text","content","content_text","extracted_text","markdown","raw","raw_text","raw_bytes","raw_content","raw_body","raw_file","source_raw","source_raw_bytes","source_bytes","source_content","source_body","file_bytes","file_content","content_bytes","content_base64","document_bytes","document_content","document_base64","binary","binary_content","binary_base64","bytes","body","blob","data","payload"]);function EW(_){return _.toLowerCase().replace(/[\s-]+/g,"_")}function Y2(_){if(Array.isArray(_))return _.map((g)=>Y2(g));let $=_4(_);if(!$)return _;let D={};for(let[g,U]of Object.entries($)){if(NW.has(EW(g)))continue;D[g]=Y2(U)}return D}function zT(_,$,D){return N_(_.revision_id)??N_(_.revision)??N_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??N_(_.updated_at)??"current"}function ST(_,$){let D={};for(let[g,U]of Object.entries(_)){if(NW.has(EW(g)))continue;D[g]=B_(Y2(U))}return D.source_ref=$.sourceRef,D.source_uri=$.sourceUri,D.status=$.status,D}function WT(_,$,D={}){let g=ET(_);s6(g,{allowFileSourceRefs:D.allowFileSourceRefs===!0});let U=A$(g),I=OT(g,U),j=PT(_),N=N_(_.status)??"active";return{raw:_,sourceRef:g,sourceUri:I,kind:U.kind,title:JT(_),revision:zT(_,U,j),hash:j,extractedTextUri:LT(_),text:AT(_),metadata:ST(_,{sourceRef:g,sourceUri:I,status:N}),acl:_.permissions??_.acl??{},status:N,updatedAt:N_(_.updated_at)??$}}function XT(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Manifest array parse failed.");return D.map((g)=>{let U=_4(g);if(!U)throw Error("Manifest array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),g=_4(D);if(!g)throw Error("Manifest object parse failed.");if(Array.isArray(g.items))return g.items.map((U)=>{let I=_4(U);if(!I)throw Error("Manifest items entries must be objects.");return I});if("source_ref"in g||"source_uri"in g||"file_id"in g)return[g]}catch(D){let g=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(g.length<=1)throw D;return g.map((U)=>{let I=_4(JSON.parse(U));if(!I)throw Error("Manifest JSONL entries must be objects.");return I})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let g=_4(JSON.parse(D));if(!g)throw Error("Manifest JSONL entries must be objects.");return g})}async function GT(_,$,D){let g=new URL(_),U=g.hostname,I=decodeURIComponent(g.pathname.replace(/^\/+/,""));if(!U||!I)throw Error(`Invalid S3 manifest URI: ${_}`);if(D)B6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:O}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),A=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,z=await new j({region:A?.region,credentials:A?.profile?O({profile:A.profile}):void 0,maxAttempts:A?.max_attempts}).send(new N({Bucket:U,Key:I}));if(!z.Body)return"";return await z.Body.transformToString()}async function RT(_,$,D,g=IT){let U=_.startsWith("s3://")?await GT(_,$,D):(()=>{if(!DT(_))throw Error(`Manifest not found: ${_}`);return UT(_,"utf8")})(),I=Buffer.byteLength(U);if(I>g)throw Error(`Manifest input is too large: ${I} bytes exceeds ${g} byte limit.`);return U}function YT(_,$,D){let g=_.replace(/\r\n/g,` +`);if(!g.trim())return[];let U=[],I=0;while(II+Math.floor($*0.5))N=z+(z===A?2:1)}let O=U.slice(I,N).trim();if(O)D.push({ordinal:D.length,text:O,startOffset:I,endOffset:N});if(N>=U.length)break;I=Math.max(0,N-g)}return D}function I7(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function j7(_,$){let g=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($);for(let U of g)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[U.id]);return _.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]),g.length}function N7(_,$,g){let U=PE("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) +`,j),L=g.lastIndexOf(". ",j),z=Math.max(A,L);if(z>I+Math.floor($*0.5))N=z+(z===A?2:1)}let O=g.slice(I,N).trim();if(O)U.push({ordinal:U.length,text:O,startOffset:I,endOffset:N});if(N>=g.length)break;I=Math.max(0,N-D)}return U}function QT(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function TT(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($);for(let g of D)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[g.id]);return _.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]),D.length}function BT(_,$,D){let g=Q2("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(uri) DO UPDATE SET kind = excluded.kind, title = excluded.title, metadata_json = excluded.metadata_json, acl_json = excluded.acl_json, - updated_at = excluded.updated_at`,[U,$.sourceUri,$.kind,$.title,JSON.stringify($.metadata),JSON.stringify($.acl??{}),g,$.updatedAt]);let D=_.query("SELECT id FROM sources WHERE uri = ?").get($.sourceUri);if(!D)throw Error(`Failed to upsert source: ${$.sourceUri}`);return D.id}function E7(_,$,g,U){let D=PE("rev",`${$}\x00${g.revision}`);_.run(`INSERT INTO source_revisions (id, source_id, revision, hash, extracted_text_uri, metadata_json, created_at) + updated_at = excluded.updated_at`,[g,$.sourceUri,$.kind,$.title,JSON.stringify($.metadata),JSON.stringify($.acl??{}),D,$.updatedAt]);let U=_.query("SELECT id FROM sources WHERE uri = ?").get($.sourceUri);if(!U)throw Error(`Failed to upsert source: ${$.sourceUri}`);return U.id}function qT(_,$,D,g){let U=Q2("rev",`${$}\x00${D.revision}`);_.run(`INSERT INTO source_revisions (id, source_id, revision, hash, extracted_text_uri, metadata_json, created_at) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(source_id, revision) DO UPDATE SET hash = excluded.hash, extracted_text_uri = excluded.extracted_text_uri, - metadata_json = excluded.metadata_json`,[D,$,g.revision,g.hash,g.extractedTextUri,JSON.stringify(g.metadata),U]);let I=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,g.revision);if(!I)throw Error(`Failed to upsert source revision: ${g.sourceRef}`);return I.id}function O7(_,$,g,U,D,I,j){if(!g.text||g.status.toLowerCase()==="deleted")return{chunksInserted:0,redactions:0};let N=u_(g.text,j);if(N.findings.length>0)z0(_,{source_uri:g.sourceUri,findings:N.findings,metadata:{source_ref:g.sourceRef,revision:g.revision},created_at:U}),X_(_,{event_type:"redaction",action:"source_text_redact",target_uri:g.sourceUri,decision:"redacted",metadata:{findings:N.findings.length,source_ref:g.sourceRef,revision:g.revision},created_at:U});let O=U7(N.text,D,I);for(let A of O){let L=PE("chk",`${$}\x00${A.ordinal}\x00${A.text}`),z=T6({source_ref:g.sourceRef,source_uri:g.sourceUri,source_kind:g.kind,source_revision_id:$,revision:g.revision,hash:g.hash,chunk_id:L,start_offset:A.startOffset,end_offset:A.endOffset,status:g.status,resolver:"open-files-read-only"}),W=HS({source_ref:g.sourceRef,source_uri:g.sourceUri,source_kind:g.kind,source_revision_id:$,revision:g.revision,hash:g.hash,status:g.status,path:N_(g.raw.path)??null,mime:N_(g.raw.mime)??N_(g.raw.content_type)??null,size:mT(g.raw.size)??null},z);_.run(`INSERT INTO chunks (id, source_revision_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[L,$,"source",A.ordinal,A.text,I7(A.text),A.startOffset,A.endOffset,JSON.stringify(W),U]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[L,A.text,g.title??"",g.sourceUri])}return{chunksInserted:O.length,redactions:N.findings.length}}async function pS(_){let $=_.now??new Date;if(_.safetyPolicy)_6(_.dbPath,_.safetyPolicy);h(_.dbPath);let g=await D7(_.input,_.config,_.safetyPolicy,_.maxInputBytes),U=$7(g),D=_.maxItems??lS;if(U.length>D)throw Error(`Manifest contains too many items: ${U.length} exceeds ${D} item limit.`);return $4({dbPath:_.dbPath,items:U,sourceLabel:_.input,allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")===!0,safetyPolicy:_.safetyPolicy,now:$,maxChunkChars:_.maxChunkChars,chunkOverlapChars:_.chunkOverlapChars,maxItems:_.maxItems})}async function $4(_){let $=(_.now??new Date).toISOString(),g=_.maxChunkChars??4000,U=_.chunkOverlapChars??200,D=_.maxItems??lS;if(g<500)throw Error("maxChunkChars must be at least 500.");if(U<0||U>=g)throw Error("chunkOverlapChars must be less than maxChunkChars.");if(_.items.length>D)throw Error(`Manifest contains too many items: ${_.items.length} exceeds ${D} item limit.`);if(_.safetyPolicy)_6(_.dbPath,_.safetyPolicy);h(_.dbPath);let I=v(_.dbPath);try{return I.transaction(()=>{let N=new Set,O=new Set,A=0,L=0,z=0,W=0,J=[];X_(I,{event_type:"source_read",action:_.readAction??(_.sourceLabel.startsWith("s3://")?"s3_manifest_read":"local_manifest_read"),target_uri:_.sourceLabel,decision:"allow",metadata:{items:_.items.length,read_only:!0},created_at:$});for(let P of _.items){let S=_7(P,$,{allowFileSourceRefs:_.allowFileSourceRefs});if(J.length0)return U}return null}function eS(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return null}function A7(_,$){let g=_.mode;if(typeof g==="string"&&g!=="read_only")throw Error(`Source resolver denied ${$}. Permission mode is ${g}, expected read_only.`);let U=_.denied_purposes;if(Array.isArray(U)&&U.includes($))throw Error(`Source resolver denied ${$}. Purpose is explicitly denied.`);let D=_.allowed_purposes;if(Array.isArray(D)&&D.length>0&&!D.includes($))throw Error(`Source resolver denied ${$}. Allowed purposes: ${D.join(", ")}`)}function L7(_,$,g){if(!$)return g;try{let U=A$(_);if(U.kind==="open-files"&&U.entity==="file")return`${_}/revision/${encodeURIComponent($.revision)}`}catch{return g}return g}function J7(_,$,g){return _.query(`SELECT id, uri, kind, title, metadata_json, acl_json, updated_at + metadata_json = excluded.metadata_json`,[U,$,D.revision,D.hash,D.extractedTextUri,JSON.stringify(D.metadata),g]);let I=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision);if(!I)throw Error(`Failed to upsert source revision: ${D.sourceRef}`);return I.id}function VT(_,$,D,g,U,I,j){if(!D.text||D.status.toLowerCase()==="deleted")return{chunksInserted:0,redactions:0};let N=u_(D.text,j);if(N.findings.length>0)S0(_,{source_uri:D.sourceUri,findings:N.findings,metadata:{source_ref:D.sourceRef,revision:D.revision},created_at:g}),X_(_,{event_type:"redaction",action:"source_text_redact",target_uri:D.sourceUri,decision:"redacted",metadata:{findings:N.findings.length,source_ref:D.sourceRef,revision:D.revision},created_at:g});let O=YT(N.text,U,I);for(let A of O){let L=Q2("chk",`${$}\x00${A.ordinal}\x00${A.text}`),z=T6({source_ref:D.sourceRef,source_uri:D.sourceUri,source_kind:D.kind,source_revision_id:$,revision:D.revision,hash:D.hash,chunk_id:L,start_offset:A.startOffset,end_offset:A.endOffset,status:D.status,resolver:"open-files-read-only"}),W=dS({source_ref:D.sourceRef,source_uri:D.sourceUri,source_kind:D.kind,source_revision_id:$,revision:D.revision,hash:D.hash,status:D.status,path:N_(D.raw.path)??null,mime:N_(D.raw.mime)??N_(D.raw.content_type)??null,size:NT(D.raw.size)??null},z);_.run(`INSERT INTO chunks (id, source_revision_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[L,$,"source",A.ordinal,A.text,QT(A.text),A.startOffset,A.endOffset,JSON.stringify(W),g]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[L,A.text,D.title??"",D.sourceUri])}return{chunksInserted:O.length,redactions:N.findings.length}}async function OW(_){let $=_.now??new Date;if(_.safetyPolicy)_6(_.dbPath,_.safetyPolicy);h(_.dbPath);let D=await RT(_.input,_.config,_.safetyPolicy,_.maxInputBytes),g=XT(D),U=_.maxItems??jW;if(g.length>U)throw Error(`Manifest contains too many items: ${g.length} exceeds ${U} item limit.`);return $4({dbPath:_.dbPath,items:g,sourceLabel:_.input,allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")===!0,safetyPolicy:_.safetyPolicy,now:$,maxChunkChars:_.maxChunkChars,chunkOverlapChars:_.chunkOverlapChars,maxItems:_.maxItems})}async function $4(_){let $=(_.now??new Date).toISOString(),D=_.maxChunkChars??4000,g=_.chunkOverlapChars??200,U=_.maxItems??jW;if(D<500)throw Error("maxChunkChars must be at least 500.");if(g<0||g>=D)throw Error("chunkOverlapChars must be less than maxChunkChars.");if(_.items.length>U)throw Error(`Manifest contains too many items: ${_.items.length} exceeds ${U} item limit.`);if(_.safetyPolicy)_6(_.dbPath,_.safetyPolicy);h(_.dbPath);let I=f(_.dbPath);try{return I.transaction(()=>{let N=new Set,O=new Set,A=0,L=0,z=0,W=0,J=[];X_(I,{event_type:"source_read",action:_.readAction??(_.sourceLabel.startsWith("s3://")?"s3_manifest_read":"local_manifest_read"),target_uri:_.sourceLabel,decision:"allow",metadata:{items:_.items.length,read_only:!0},created_at:$});for(let P of _.items){let S=WT(P,$,{allowFileSourceRefs:_.allowFileSourceRefs});if(J.length0)return g}return null}function AW(_,$){for(let D of $){let g=_[D];if(typeof g==="number"&&Number.isFinite(g))return g}return null}function FT(_,$){let D=_.mode;if(typeof D==="string"&&D!=="read_only")throw Error(`Source resolver denied ${$}. Permission mode is ${D}, expected read_only.`);let g=_.denied_purposes;if(Array.isArray(g)&&g.includes($))throw Error(`Source resolver denied ${$}. Purpose is explicitly denied.`);let U=_.allowed_purposes;if(Array.isArray(U)&&U.length>0&&!U.includes($))throw Error(`Source resolver denied ${$}. Allowed purposes: ${U.join(", ")}`)}function KT(_,$,D){if(!$)return D;try{let g=A$(_);if(g.kind==="open-files"&&g.entity==="file")return`${_}/revision/${encodeURIComponent($.revision)}`}catch{return D}return D}function MT(_,$,D){return _.query(`SELECT id, uri, kind, title, metadata_json, acl_json, updated_at FROM sources WHERE uri = ? OR uri = ? ORDER BY CASE WHEN uri = ? THEN 0 ELSE 1 END - LIMIT 1`).get($,g,$)??null}function P7(_,$,g){if(g)return _.query(`SELECT id, revision, hash, extracted_text_uri, metadata_json, created_at + LIMIT 1`).get($,D,$)??null}function ZT(_,$,D){if(D)return _.query(`SELECT id, revision, hash, extracted_text_uri, metadata_json, created_at FROM source_revisions WHERE source_id = ? AND revision = ? - LIMIT 1`).get($,g)??null;return _.query(`SELECT id, revision, hash, extracted_text_uri, metadata_json, created_at + LIMIT 1`).get($,D)??null;return _.query(`SELECT id, revision, hash, extracted_text_uri, metadata_json, created_at FROM source_revisions WHERE source_id = ? ORDER BY created_at DESC, revision DESC - LIMIT 1`).get($)??null}function z7(_,$){if(!$)return 0;return _.query("SELECT COUNT(*) AS n FROM chunks WHERE source_revision_id = ?").get($)?.n??0}function S7(_,$,g){if(!$||g<=0)return[];return _.query(`SELECT id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json + LIMIT 1`).get($)??null}function bT(_,$){if(!$)return 0;return _.query("SELECT COUNT(*) AS n FROM chunks WHERE source_revision_id = ?").get($)?.n??0}function HT(_,$,D){if(!$||D<=0)return[];return _.query(`SELECT id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json FROM chunks WHERE source_revision_id = ? ORDER BY ordinal ASC - LIMIT ?`).all($,g)}async function tU(_){let $=_.purpose??"knowledge_answer",g=Math.max(0,Math.min(_.limit??10,100)),U=(_.now??new Date).toISOString(),D=A$(_.sourceRef),I=CS(_.sourceRef,D),j=rS(_.sourceRef);if(_.safetyPolicy){if(!_.safetyPolicy.readOnlySourceAccess)throw Error("Safety policy denied source resolution.");_6(_.dbPath,_.safetyPolicy)}h(_.dbPath);let N=v(_.dbPath);try{return N.transaction(()=>{let O=J7(N,I,_.sourceRef);if(!O)return X_(N,{event_type:"source_read",action:"open_files_resolve_missing",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:I},created_at:U}),{source_ref:_.sourceRef,source_uri:I,purpose:$,read_only:!0,resolved:!1,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:null,revision:null,content:{mime:null,size:null,hash:null,text_available:!1,chunks_total:0,chunks_returned:0,char_count_returned:0,extracted_text_ref:null,bytes_available:!1,bytes_exposed:!1},chunks:[],citations:[]};let A=lU(O.metadata_json),L=lU(O.acl_json);try{A7(L,$)}catch(Q){throw X_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"deny",metadata:{purpose:$,read_only:!0,source_uri:O.uri,error:Q instanceof Error?Q.message:String(Q)},created_at:U}),Q}let z=P7(N,O.id,j),W=lU(z?.metadata_json),J=z7(N,z?.id??null),P=S7(N,z?.id??null,g),S=L7(O.uri,z,_.sourceRef),X=P.map((Q)=>{let T=lU(Q.metadata_json),q={resolver:"open-files-read-only",mode:"local_catalog",purpose:$,read_only:!0,source_ref:g4(T,["source_ref"])??S,source_uri:O.uri,source_revision_id:z?.id??null,revision:z?.revision??null,hash:z?.hash??g4(T,["hash"]),chunk_id:Q.id,start_offset:Q.start_offset,end_offset:Q.end_offset,resolved_at:U},V=T6({source_ref:q.source_ref,source_uri:q.source_uri,source_kind:O.kind,source_revision_id:q.source_revision_id,revision:q.revision,hash:q.hash,chunk_id:Q.id,start_offset:Q.start_offset,end_offset:Q.end_offset,status:g4(T,["status"]),resolver:q.resolver});return{id:Q.id,kind:Q.kind,ordinal:Q.ordinal,text:Q.text,token_count:Q.token_count,start_offset:Q.start_offset,end_offset:Q.end_offset,metadata:T,evidence:q,provenance:V}}),G=X.map((Q)=>({source_ref:Q.evidence.source_ref,source_uri:O.uri,chunk_id:Q.id,quote:Q.text.slice(0,500),start_offset:Q.start_offset,end_offset:Q.end_offset,evidence:Q.evidence,provenance:Q.provenance}));X_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:O.uri,revision:z?.revision??null,chunks_returned:X.length,chunks_total:J},created_at:U});let R=g4(A,["mime","content_type"])??g4(W,["mime","content_type"]),K=eS(A,["size","size_bytes"])??eS(W,["size","size_bytes"]);return{source_ref:S,source_uri:O.uri,purpose:$,read_only:!0,resolved:!0,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:{id:O.id,uri:O.uri,kind:O.kind,title:O.title,metadata:A,permissions:L,updated_at:O.updated_at},revision:z?{id:z.id,revision:z.revision,hash:z.hash,extracted_text_uri:z.extracted_text_uri,metadata:W,created_at:z.created_at,reindex_required:W.reindex_required===!0}:null,content:{mime:R,size:K,hash:z?.hash??g4(A,["hash","checksum","sha256"]),text_available:J>0,chunks_total:J,chunks_returned:X.length,char_count_returned:X.reduce((Q,T)=>Q+T.text.length,0),extracted_text_ref:z?.extracted_text_uri??g4(W,["extracted_text_ref","extracted_text_uri"]),bytes_available:!1,bytes_exposed:!1},chunks:X,citations:G}})()}finally{N.close()}}function S0(_){return`sha256:${W7("sha256").update(_).digest("hex")}`}function G7(_){return _.replace(//gi," ").replace(//gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\s+\n/g,` + LIMIT ?`).all($,D)}async function og(_){let $=_.purpose??"knowledge_answer",D=Math.max(0,Math.min(_.limit??10,100)),g=(_.now??new Date).toISOString(),U=A$(_.sourceRef),I=iS(_.sourceRef,U),j=lS(_.sourceRef);if(_.safetyPolicy){if(!_.safetyPolicy.readOnlySourceAccess)throw Error("Safety policy denied source resolution.");_6(_.dbPath,_.safetyPolicy)}h(_.dbPath);let N=f(_.dbPath);try{return N.transaction(()=>{let O=MT(N,I,_.sourceRef);if(!O)return X_(N,{event_type:"source_read",action:"open_files_resolve_missing",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:I},created_at:g}),{source_ref:_.sourceRef,source_uri:I,purpose:$,read_only:!0,resolved:!1,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:null,revision:null,content:{mime:null,size:null,hash:null,text_available:!1,chunks_total:0,chunks_returned:0,char_count_returned:0,extracted_text_ref:null,bytes_available:!1,bytes_exposed:!1},chunks:[],citations:[]};let A=tg(O.metadata_json),L=tg(O.acl_json);try{FT(L,$)}catch(Q){throw X_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"deny",metadata:{purpose:$,read_only:!0,source_uri:O.uri,error:Q instanceof Error?Q.message:String(Q)},created_at:g}),Q}let z=ZT(N,O.id,j),W=tg(z?.metadata_json),J=bT(N,z?.id??null),P=HT(N,z?.id??null,D),S=KT(O.uri,z,_.sourceRef),X=P.map((Q)=>{let T=tg(Q.metadata_json),B={resolver:"open-files-read-only",mode:"local_catalog",purpose:$,read_only:!0,source_ref:D4(T,["source_ref"])??S,source_uri:O.uri,source_revision_id:z?.id??null,revision:z?.revision??null,hash:z?.hash??D4(T,["hash"]),chunk_id:Q.id,start_offset:Q.start_offset,end_offset:Q.end_offset,resolved_at:g},F=T6({source_ref:B.source_ref,source_uri:B.source_uri,source_kind:O.kind,source_revision_id:B.source_revision_id,revision:B.revision,hash:B.hash,chunk_id:Q.id,start_offset:Q.start_offset,end_offset:Q.end_offset,status:D4(T,["status"]),resolver:B.resolver});return{id:Q.id,kind:Q.kind,ordinal:Q.ordinal,text:Q.text,token_count:Q.token_count,start_offset:Q.start_offset,end_offset:Q.end_offset,metadata:T,evidence:B,provenance:F}}),R=X.map((Q)=>({source_ref:Q.evidence.source_ref,source_uri:O.uri,chunk_id:Q.id,quote:Q.text.slice(0,500),start_offset:Q.start_offset,end_offset:Q.end_offset,evidence:Q.evidence,provenance:Q.provenance}));X_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:O.uri,revision:z?.revision??null,chunks_returned:X.length,chunks_total:J},created_at:g});let G=D4(A,["mime","content_type"])??D4(W,["mime","content_type"]),V=AW(A,["size","size_bytes"])??AW(W,["size","size_bytes"]);return{source_ref:S,source_uri:O.uri,purpose:$,read_only:!0,resolved:!0,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:{id:O.id,uri:O.uri,kind:O.kind,title:O.title,metadata:A,permissions:L,updated_at:O.updated_at},revision:z?{id:z.id,revision:z.revision,hash:z.hash,extracted_text_uri:z.extracted_text_uri,metadata:W,created_at:z.created_at,reindex_required:W.reindex_required===!0}:null,content:{mime:G,size:V,hash:z?.hash??D4(A,["hash","checksum","sha256"]),text_available:J>0,chunks_total:J,chunks_returned:X.length,char_count_returned:X.reduce((Q,T)=>Q+T.text.length,0),extracted_text_ref:z?.extracted_text_uri??D4(W,["extracted_text_ref","extracted_text_uri"]),bytes_available:!1,bytes_exposed:!1},chunks:X,citations:R}})()}finally{N.close()}}function W0(_){return`sha256:${kT("sha256").update(_).digest("hex")}`}function fT(_){return _.replace(//gi," ").replace(//gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\s+\n/g,` `).replace(/\n\s+/g,` -`).replace(/[ \t]{2,}/g," ").trim()}async function Y7(_,$,g){let U=new URL(_),D=U.hostname,I=decodeURIComponent(U.pathname.replace(/^\/+/,""));if(!D||!I)throw Error(`Invalid S3 source URI: ${_}`);if(g)q6(_,g);let[{S3Client:j,GetObjectCommand:N},{fromIni:O}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),A=$?.storage.type==="s3"&&$.storage.s3?.bucket===D?$.storage.s3:void 0,z=await new j({region:A?.region,credentials:A?.profile?O({profile:A.profile}):void 0,maxAttempts:A?.max_attempts}).send(new N({Bucket:D,Key:I}));if(!z.Body)return"";return await z.Body.transformToString()}async function Q7(_,$){if($)P0($);let g=await wU(_,{headers:{accept:"text/markdown,text/plain,text/html,application/json;q=0.8,*/*;q=0.5","user-agent":"@hasna/knowledge source-ingest"}});if(!g.ok)throw Error(`Web source read failed ${g.status}: ${_}`);let U=g.headers.get("content-type"),D=await g.text();return{text:U?.includes("html")?G7(D):D,mime:U}}function pU(_){if(_.kind==="file")return oU(_.path);if(_.kind==="s3")return oU(_.key);if(_.kind==="web")return oU(new URL(_.url).pathname)||_.url;return _.path?oU(_.path):_.id}async function aS(_,$,g){if(_.kind==="file"){if(!X7(_.path))throw Error(`Source file not found: ${_.path}`);let U=R7(_.path,"utf8");return{text:U,contentSource:"file",title:pU(_),mime:"text/plain",size:U.length,hash:S0(U),revision:null,extractedTextRef:null,metadata:{path:_.path},permissions:{mode:"read_only"}}}if(_.kind==="s3"){let U=await Y7(_.uri,$,g);return{text:U,contentSource:"s3",title:pU(_),mime:"text/plain",size:U.length,hash:S0(U),revision:null,extractedTextRef:null,metadata:{bucket:_.bucket,key:_.key},permissions:{mode:"read_only"}}}if(_.kind==="web"){let U=await Q7(_.url,g);return{text:U.text,contentSource:"web",title:pU(_),mime:U.mime,size:U.text.length,hash:S0(U.text),revision:null,extractedTextRef:null,metadata:{url:_.url},permissions:{mode:"read_only"}}}throw Error(`Direct source reading is not available for ${_.uri}`)}async function T7(_,$,g){if(_.startsWith("open-files://"))throw Error("Open-files extracted text refs require an open-files resolver API. Ingest an open-files manifest with extracted_text or an extracted_text_ref using file://, s3://, or https://.");let U=A$(_);return{text:(await aS(U,$,g)).text,contentSource:"extracted_text_ref"}}async function q7(_){let $=await tU({dbPath:_.dbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",limit:100,safetyPolicy:_.safetyPolicy,now:_.now});if(!$.resolved)throw Error("Open-files source is not in the local knowledge catalog. Ingest an open-files manifest first or use the open-files resolver API.");if($.revision?.extracted_text_uri&&!$.content.text_available){let U=await T7($.revision.extracted_text_uri,_.config,_.safetyPolicy);return{text:U.text,contentSource:U.contentSource,title:$.source?.title??null,mime:$.content.mime,size:U.text.length,hash:$.revision.hash??S0(U.text),revision:$.revision.revision,extractedTextRef:$.revision.extracted_text_uri,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}if($.chunks.length===0)throw Error("Open-files source has no extracted text chunks yet. Ingest an open-files manifest with extracted_text or extracted_text_ref first.");let g=$.chunks.map((U)=>U.text).join(` +`).replace(/[ \t]{2,}/g," ").trim()}async function wT(_,$,D){let g=new URL(_),U=g.hostname,I=decodeURIComponent(g.pathname.replace(/^\/+/,""));if(!U||!I)throw Error(`Invalid S3 source URI: ${_}`);if(D)B6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:O}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),A=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,z=await new j({region:A?.region,credentials:A?.profile?O({profile:A.profile}):void 0,maxAttempts:A?.max_attempts}).send(new N({Bucket:U,Key:I}));if(!z.Body)return"";return await z.Body.transformToString()}async function rT(_,$){if($)z0($);let D=await rg(_,{headers:{accept:"text/markdown,text/plain,text/html,application/json;q=0.8,*/*;q=0.5","user-agent":"@hasna/knowledge source-ingest"}});if(!D.ok)throw Error(`Web source read failed ${D.status}: ${_}`);let g=D.headers.get("content-type"),U=await D.text();return{text:g?.includes("html")?fT(U):U,mime:g}}function eg(_){if(_.kind==="file")return pg(_.path);if(_.kind==="s3")return pg(_.key);if(_.kind==="web")return pg(new URL(_.url).pathname)||_.url;return _.path?pg(_.path):_.id}async function LW(_,$,D){if(_.kind==="file"){if(!CT(_.path))throw Error(`Source file not found: ${_.path}`);let g=vT(_.path,"utf8");return{text:g,contentSource:"file",title:eg(_),mime:"text/plain",size:g.length,hash:W0(g),revision:null,extractedTextRef:null,metadata:{path:_.path},permissions:{mode:"read_only"}}}if(_.kind==="s3"){let g=await wT(_.uri,$,D);return{text:g,contentSource:"s3",title:eg(_),mime:"text/plain",size:g.length,hash:W0(g),revision:null,extractedTextRef:null,metadata:{bucket:_.bucket,key:_.key},permissions:{mode:"read_only"}}}if(_.kind==="web"){let g=await rT(_.url,D);return{text:g.text,contentSource:"web",title:eg(_),mime:g.mime,size:g.text.length,hash:W0(g.text),revision:null,extractedTextRef:null,metadata:{url:_.url},permissions:{mode:"read_only"}}}throw Error(`Direct source reading is not available for ${_.uri}`)}async function uT(_,$,D){if(_.startsWith("open-files://"))throw Error("Open-files extracted text refs require an open-files resolver API. Ingest an open-files manifest with extracted_text or an extracted_text_ref using file://, s3://, or https://.");let g=A$(_);return{text:(await LW(g,$,D)).text,contentSource:"extracted_text_ref"}}async function xT(_){let $=await og({dbPath:_.dbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",limit:100,safetyPolicy:_.safetyPolicy,now:_.now});if(!$.resolved)throw Error("Open-files source is not in the local knowledge catalog. Ingest an open-files manifest first or use the open-files resolver API.");if($.revision?.extracted_text_uri&&!$.content.text_available){let g=await uT($.revision.extracted_text_uri,_.config,_.safetyPolicy);return{text:g.text,contentSource:g.contentSource,title:$.source?.title??null,mime:$.content.mime,size:g.text.length,hash:$.revision.hash??W0(g.text),revision:$.revision.revision,extractedTextRef:$.revision.extracted_text_uri,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}if($.chunks.length===0)throw Error("Open-files source has no extracted text chunks yet. Ingest an open-files manifest with extracted_text or extracted_text_ref first.");let D=$.chunks.map((g)=>g.text).join(` -`);return{text:g,contentSource:"catalog_chunks",title:$.source?.title??null,mime:$.content.mime,size:g.length,hash:$.revision?.hash??S0(g),revision:$.revision?.revision??null,extractedTextRef:$.revision?.extracted_text_uri??null,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}function B7(_,$,g,U){let D=g.hash??S0(g.text),I={...q_(g.metadata),source_ref:_,content_source:g.contentSource,read_only:!0},j={source_ref:_,name:g.title??pU($),mime:g.mime??"text/plain",size:g.size??g.text.length,hash:D,revision:g.revision??D,status:"active",updated_at:new Date().toISOString(),permissions:{mode:"read_only",allowed_purposes:[U],...g.permissions},metadata:I,extracted_text_ref:g.extractedTextRef,extracted_text:g.text};if($.kind==="open-files"){if($.entity==="file")j.file_id=$.id;if($.entity==="source")j.source_id=$.id,j.path=$.path}if($.kind==="file")j.path=$.path;if($.kind==="s3")j.path=$.key;if($.kind==="web")j.url=$.url;return j}async function eU(_){let $=_.purpose??"knowledge_index";s6(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1});let g=A$(_.sourceRef),U=g.kind==="open-files"?await q7(_):await aS(g,_.config,_.safetyPolicy),D=B7(_.sourceRef,g,U,$);return{...await $4({dbPath:_.dbPath,items:[D],sourceLabel:_.sourceRef,readAction:"source_ref_ingest_read",allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1,safetyPolicy:_.safetyPolicy,now:_.now}),source_ref:_.sourceRef,content_source:U.contentSource,read_only:!0,hash:String(D.hash)}}function aU(_,$){return`${_}_${K7("sha256").update($).digest("hex").slice(0,20)}`}function F7(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"note"}function zE(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function M7(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function sS(_){return Array.from(new Set((_??[]).map(($)=>$.trim()).filter(Boolean)))}function Z7(_){let $=_.path?.trim()||`wiki/notes/${F7(_.title)}.md`,g=$.replace(/\\/g,"/");if(!g.startsWith("wiki/notes/")||!g.endsWith(".md"))throw Error("App wiki note paths must be relative wiki/notes/*.md artifact keys.");if(g.startsWith("/")||g.split("/").some((U)=>U===".."||U==="."))throw Error(`Invalid app wiki note path: ${$}`);return g}function b7(_){let $=[`# ${_.title}`,"",_.content.trim(),"",`Updated: ${_.now}`];if(_.tags.length>0)$.push("","Tags:",..._.tags.map((g)=>`- ${g}`));if(_.sourceRefs.length>0)$.push("","Source refs:",..._.sourceRefs.map((g)=>`- ${g}`));return $.push(""),$.join(` -`)}async function _W(_,$){let g=await _.put($);return{key:g.key,uri:g.uri,kind:$.key.startsWith("logs/")?"log":"wiki_page",content_type:$.content_type,modified_at:g.modified_at,...J0($.body),metadata:{...$.metadata??{}}}}async function H7(_,$,g){let U=String(g.getUTCFullYear()),D=String(g.getUTCMonth()+1).padStart(2,"0"),I=String(g.getUTCDate()).padStart(2,"0"),j=`logs/${U}/${D}/${I}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return _W(_,{key:j,body:`${N}${JSON.stringify($)} -`,content_type:"application/x-ndjson",metadata:{provenance:U$({generated_from:String($.event??"app_wiki_log"),artifact_key:j})}})}function k7(_){return{...q_(_.metadata??{}),app_wiki:!0,note:!0,artifact_key:_.path,tags:_.tags,source_refs:_.sourceRefs,provenance:_.provenance}}function SE(_){let $=zE(_.metadata_json);return{id:_.id,path:_.path,title:_.title,artifact_uri:_.artifact_uri,content_hash:_.content_hash,tags:Array.isArray($.tags)?$.tags.filter((g)=>typeof g==="string"):[],source_refs:Array.isArray($.source_refs)?$.source_refs.filter((g)=>typeof g==="string"):[],created_at:_.created_at,updated_at:_.updated_at}}function C7(_,$){return $.map((g)=>{let U=_.query(`SELECT +`);return{text:D,contentSource:"catalog_chunks",title:$.source?.title??null,mime:$.content.mime,size:D.length,hash:$.revision?.hash??W0(D),revision:$.revision?.revision??null,extractedTextRef:$.revision?.extracted_text_uri??null,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}function yT(_,$,D,g){let U=D.hash??W0(D.text),I={...B_(D.metadata),source_ref:_,content_source:D.contentSource,read_only:!0},j={source_ref:_,name:D.title??eg($),mime:D.mime??"text/plain",size:D.size??D.text.length,hash:U,revision:D.revision??U,status:"active",updated_at:new Date().toISOString(),permissions:{mode:"read_only",allowed_purposes:[g],...D.permissions},metadata:I,extracted_text_ref:D.extractedTextRef,extracted_text:D.text};if($.kind==="open-files"){if($.entity==="file")j.file_id=$.id;if($.entity==="source")j.source_id=$.id,j.path=$.path}if($.kind==="file")j.path=$.path;if($.kind==="s3")j.path=$.key;if($.kind==="web")j.url=$.url;return j}async function ag(_){let $=_.purpose??"knowledge_index";s6(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1});let D=A$(_.sourceRef),g=D.kind==="open-files"?await xT(_):await LW(D,_.config,_.safetyPolicy),U=yT(_.sourceRef,D,g,$);return{...await $4({dbPath:_.dbPath,items:[U],sourceLabel:_.sourceRef,readAction:"source_ref_ingest_read",allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1,safetyPolicy:_.safetyPolicy,now:_.now}),source_ref:_.sourceRef,content_source:g.contentSource,read_only:!0,hash:String(U.hash)}}function sg(_,$){return`${_}_${hT("sha256").update($).digest("hex").slice(0,20)}`}function nT(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"note"}function T2(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function dT(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function JW(_){return Array.from(new Set((_??[]).map(($)=>$.trim()).filter(Boolean)))}function mT(_){let $=_.path?.trim()||`wiki/notes/${nT(_.title)}.md`,D=$.replace(/\\/g,"/");if(!D.startsWith("wiki/notes/")||!D.endsWith(".md"))throw Error("App wiki note paths must be relative wiki/notes/*.md artifact keys.");if(D.startsWith("/")||D.split("/").some((g)=>g===".."||g==="."))throw Error(`Invalid app wiki note path: ${$}`);return D}function iT(_){let $=[`# ${_.title}`,"",_.content.trim(),"",`Updated: ${_.now}`];if(_.tags.length>0)$.push("","Tags:",..._.tags.map((D)=>`- ${D}`));if(_.sourceRefs.length>0)$.push("","Source refs:",..._.sourceRefs.map((D)=>`- ${D}`));return $.push(""),$.join(` +`)}async function PW(_,$){let D=await _.put($);return{key:D.key,uri:D.uri,kind:$.key.startsWith("logs/")?"log":"wiki_page",content_type:$.content_type,modified_at:D.modified_at,...P0($.body),metadata:{...$.metadata??{}}}}async function lT(_,$,D){let g=String(D.getUTCFullYear()),U=String(D.getUTCMonth()+1).padStart(2,"0"),I=String(D.getUTCDate()).padStart(2,"0"),j=`logs/${g}/${U}/${I}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return PW(_,{key:j,body:`${N}${JSON.stringify($)} +`,content_type:"application/x-ndjson",metadata:{provenance:g$({generated_from:String($.event??"app_wiki_log"),artifact_key:j})}})}function tT(_){return{...B_(_.metadata??{}),app_wiki:!0,note:!0,artifact_key:_.path,tags:_.tags,source_refs:_.sourceRefs,provenance:_.provenance}}function B2(_){let $=T2(_.metadata_json);return{id:_.id,path:_.path,title:_.title,artifact_uri:_.artifact_uri,content_hash:_.content_hash,tags:Array.isArray($.tags)?$.tags.filter((D)=>typeof D==="string"):[],source_refs:Array.isArray($.source_refs)?$.source_refs.filter((D)=>typeof D==="string"):[],created_at:_.created_at,updated_at:_.updated_at}}function oT(_,$){return $.map((D)=>{let g=_.query(`SELECT s.uri AS source_uri, c.id AS chunk_id, c.text, @@ -646,13 +646,13 @@ VALUES (10, datetime('now')); LEFT JOIN chunks c ON c.source_revision_id = sr.id WHERE s.uri = ? OR s.metadata_json LIKE ? ORDER BY sr.created_at DESC, c.ordinal ASC - LIMIT 1`).get(g,`%${g}%`),D=zE(U?.metadata_json);return{source_ref:g,source_uri:U?.source_uri??g,chunk_id:U?.chunk_id??null,quote:U?.text?U.text.replace(/\s+/g," ").slice(0,240):null,start_offset:U?.start_offset??null,end_offset:U?.end_offset??null,metadata:{source_ref:g,revision:U?.revision??D.revision,hash:U?.hash??D.hash}}})}function r7(_,$,g,U){_.run("DELETE FROM citations WHERE wiki_page_id = ?",[$]);let D=C7(_,g);for(let I of D)_.run(`INSERT INTO citations (id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[aU("cit",`${$}\x00${I.source_uri}\x00${I.chunk_id??V7()}`),$,I.chunk_id,I.source_uri,I.quote,I.start_offset,I.end_offset,JSON.stringify(I.metadata),U]);return D.length}function v7(_,$){_.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) + LIMIT 1`).get(D,`%${D}%`),U=T2(g?.metadata_json);return{source_ref:D,source_uri:g?.source_uri??D,chunk_id:g?.chunk_id??null,quote:g?.text?g.text.replace(/\s+/g," ").slice(0,240):null,start_offset:g?.start_offset??null,end_offset:g?.end_offset??null,metadata:{source_ref:D,revision:g?.revision??U.revision,hash:g?.hash??U.hash}}})}function pT(_,$,D,g){_.run("DELETE FROM citations WHERE wiki_page_id = ?",[$]);let U=oT(_,D);for(let I of U)_.run(`INSERT INTO citations (id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[sg("cit",`${$}\x00${I.source_uri}\x00${I.chunk_id??cT()}`),$,I.chunk_id,I.source_uri,I.quote,I.start_offset,I.end_offset,JSON.stringify(I.metadata),g]);return U.length}function eT(_,$){_.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(kind, name, shard_key) DO UPDATE SET artifact_uri = excluded.artifact_uri, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[aU("idx",`app-wiki-note\x00${$.path}`),"app_wiki_note",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash,tags:$.tags,source_refs:$.sourceRefs}),$.now,$.now])}function w7(_,$){_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) + updated_at = excluded.updated_at`,[sg("idx",`app-wiki-note\x00${$.path}`),"app_wiki_note",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash,tags:$.tags,source_refs:$.sourceRefs}),$.now,$.now])}function aT(_,$){_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(path) DO UPDATE SET title = excluded.title, @@ -660,22 +660,22 @@ VALUES (10, datetime('now')); content_hash = excluded.content_hash, status = excluded.status, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[$.pageId,$.path,$.title,$.artifactUri,$.contentHash,"active",JSON.stringify($.metadata),$.now,$.now]);let g=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($.pageId);for(let D of g)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[D.id]);_.run("DELETE FROM chunks WHERE wiki_page_id = ?",[$.pageId]);let U=aU("chk",`${$.pageId}\x00${$.contentHash}`);_.run(`INSERT INTO chunks (id, wiki_page_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[U,$.pageId,"wiki",0,$.body,M7($.body),0,$.body.length,JSON.stringify({...$.metadata,artifact_uri:$.artifactUri,content_hash:$.contentHash}),$.now]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[U,$.body,$.title,$.artifactUri])}function ug(_){if(_.scope==="global"&&_.allowGlobal!==!0)throw Error("Global app-wiki writes require allowGlobal=true or CLI --allow-global.");if(_.workspace.home.includes("/.husna/")||_.workspace.home.endsWith("/.husna"))throw Error(`Refusing app-wiki writes to legacy .husna path: ${_.workspace.home}`);if(_.workspace.home.includes("/.hasna/apps/knowledge"))throw Error(`Refusing app-wiki writes to legacy .hasna/apps/knowledge path: ${_.workspace.home}`);if(_.safetyPolicy)_6(_.workspace.knowledgeDbPath,_.safetyPolicy)}async function $W(_){ug(_);let $=h(_.workspace.knowledgeDbPath),g=v(_.workspace.knowledgeDbPath);try{X_(g,{event_type:"write",action:"app_wiki_init",target_uri:_.workspace.home,decision:"allow",metadata:{scope:_.scope,store_type:_.store.type,app_path:".hasna/knowledge"},created_at:(_.now??new Date).toISOString()})}finally{g.close()}return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,knowledge_db_path:_.workspace.knowledgeDbPath,schema_version:$.schema_version,store_type:_.store.type,global_write_allowed:_.scope==="global"&&_.allowGlobal===!0,message:`Initialized app wiki scope at ${_.workspace.home}`}}async function gW(_){ug(_);let $=_.now??new Date,g=$.toISOString(),U=sS(_.tags),D=sS(_.sourceRefs);for(let z of D)s6(z,{allowFileSourceRefs:_.safetyPolicy?.readOnlySourceAccess===!0});let I=Z7(_),j=b7({title:_.title,content:_.content,tags:U,sourceRefs:D,now:g}),N=U$({generated_from:"app_wiki_note",artifact_key:I,source_refs:D}),O=await _W(_.store,{key:I,body:j,content_type:"text/markdown",metadata:{generated_from:"app_wiki_note",provenance:N,scope:_.scope,tags:U.join(","),source_refs:D.join(",")}}),A=await H7(_.store,{ts:g,event:"app_wiki_note_written",page_key:I,source_refs:D,tags:U},$);h(_.workspace.knowledgeDbPath);let L=v(_.workspace.knowledgeDbPath);try{let z=aU("wiki",I),W=k7({path:I,tags:U,sourceRefs:D,provenance:N,metadata:_.metadata});s$(L,[O,A],$),w7(L,{pageId:z,path:I,title:_.title,artifactUri:O.uri,contentHash:O.hash??"",body:j,metadata:W,now:g});let J=r7(L,z,D,g);v7(L,{title:_.title,path:I,artifactUri:O.uri,contentHash:O.hash??"",tags:U,sourceRefs:D,now:g}),X_(L,{event_type:"write",action:"app_wiki_note_write",target_uri:O.uri,decision:"allow",metadata:{scope:_.scope,path:I,source_refs:D,tags:U},created_at:g});let P=L.query("SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE id = ?").get(z);if(!P)throw Error(`Failed to write app wiki note: ${I}`);return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,note:SE(P),artifact_uri:O.uri,content_hash:O.hash??"",citations_written:J,chunks_written:1,storage_objects_written:2,message:`Wrote app wiki note ${I}`}}finally{L.close()}}function DW(_){let $=Math.max(1,Math.min(_.limit??50,200));if(!_.dbPath)return[];h(_.dbPath);let g=v(_.dbPath);try{return g.query(`SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at + updated_at = excluded.updated_at`,[$.pageId,$.path,$.title,$.artifactUri,$.contentHash,"active",JSON.stringify($.metadata),$.now,$.now]);let D=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($.pageId);for(let U of D)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[U.id]);_.run("DELETE FROM chunks WHERE wiki_page_id = ?",[$.pageId]);let g=sg("chk",`${$.pageId}\x00${$.contentHash}`);_.run(`INSERT INTO chunks (id, wiki_page_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[g,$.pageId,"wiki",0,$.body,dT($.body),0,$.body.length,JSON.stringify({...$.metadata,artifact_uri:$.artifactUri,content_hash:$.contentHash}),$.now]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[g,$.body,$.title,$.artifactUri])}function xD(_){if(_.scope==="global"&&_.allowGlobal!==!0)throw Error("Global app-wiki writes require allowGlobal=true or CLI --allow-global.");if(_.workspace.home.includes("/.husna/")||_.workspace.home.endsWith("/.husna"))throw Error(`Refusing app-wiki writes to legacy .husna path: ${_.workspace.home}`);if(_.workspace.home.includes("/.hasna/apps/knowledge"))throw Error(`Refusing app-wiki writes to legacy .hasna/apps/knowledge path: ${_.workspace.home}`);if(_.safetyPolicy)_6(_.workspace.knowledgeDbPath,_.safetyPolicy)}async function zW(_){xD(_);let $=h(_.workspace.knowledgeDbPath),D=f(_.workspace.knowledgeDbPath);try{X_(D,{event_type:"write",action:"app_wiki_init",target_uri:_.workspace.home,decision:"allow",metadata:{scope:_.scope,store_type:_.store.type,app_path:".hasna/knowledge"},created_at:(_.now??new Date).toISOString()})}finally{D.close()}return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,knowledge_db_path:_.workspace.knowledgeDbPath,schema_version:$.schema_version,store_type:_.store.type,global_write_allowed:_.scope==="global"&&_.allowGlobal===!0,message:`Initialized app wiki scope at ${_.workspace.home}`}}async function SW(_){xD(_);let $=_.now??new Date,D=$.toISOString(),g=JW(_.tags),U=JW(_.sourceRefs);for(let z of U)s6(z,{allowFileSourceRefs:_.safetyPolicy?.readOnlySourceAccess===!0});let I=mT(_),j=iT({title:_.title,content:_.content,tags:g,sourceRefs:U,now:D}),N=g$({generated_from:"app_wiki_note",artifact_key:I,source_refs:U}),O=await PW(_.store,{key:I,body:j,content_type:"text/markdown",metadata:{generated_from:"app_wiki_note",provenance:N,scope:_.scope,tags:g.join(","),source_refs:U.join(",")}}),A=await lT(_.store,{ts:D,event:"app_wiki_note_written",page_key:I,source_refs:U,tags:g},$);h(_.workspace.knowledgeDbPath);let L=f(_.workspace.knowledgeDbPath);try{let z=sg("wiki",I),W=tT({path:I,tags:g,sourceRefs:U,provenance:N,metadata:_.metadata});s$(L,[O,A],$),aT(L,{pageId:z,path:I,title:_.title,artifactUri:O.uri,contentHash:O.hash??"",body:j,metadata:W,now:D});let J=pT(L,z,U,D);eT(L,{title:_.title,path:I,artifactUri:O.uri,contentHash:O.hash??"",tags:g,sourceRefs:U,now:D}),X_(L,{event_type:"write",action:"app_wiki_note_write",target_uri:O.uri,decision:"allow",metadata:{scope:_.scope,path:I,source_refs:U,tags:g},created_at:D});let P=L.query("SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE id = ?").get(z);if(!P)throw Error(`Failed to write app wiki note: ${I}`);return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,note:B2(P),artifact_uri:O.uri,content_hash:O.hash??"",citations_written:J,chunks_written:1,storage_objects_written:2,message:`Wrote app wiki note ${I}`}}finally{L.close()}}function WW(_){let $=Math.max(1,Math.min(_.limit??50,200));if(!_.dbPath)return[];h(_.dbPath);let D=f(_.dbPath);try{return D.query(`SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE status = 'active' AND path LIKE 'wiki/notes/%' AND metadata_json LIKE '%"app_wiki":true%' ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all($).map(SE)}finally{g.close()}}async function UW(_){h(_.dbPath);let $=v(_.dbPath);try{let g=$.query(`SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at + LIMIT ?`).all($).map(B2)}finally{D.close()}}async function XW(_){h(_.dbPath);let $=f(_.dbPath);try{let D=$.query(`SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE (id = ? OR path = ?) AND path LIKE 'wiki/notes/%' - AND metadata_json LIKE '%"app_wiki":true%'`).get(_.id,_.id);if(!g)return null;let U=$.query(`SELECT id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at + AND metadata_json LIKE '%"app_wiki":true%'`).get(_.id,_.id);if(!D)return null;let g=$.query(`SELECT id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at FROM citations WHERE wiki_page_id = ? - ORDER BY created_at ASC`).all(g.id).map((I)=>({...I,metadata:zE(I.metadata_json),metadata_json:void 0})),D=null;if(_.includeContent!==!1)try{D=await _.store.getText(g.path)}catch{D=null}return{ok:!0,note:SE(g),citations:U,content:D}}finally{$.close()}}async function IW(_){return ug(_),s6(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1}),eU({dbPath:_.workspace.knowledgeDbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",config:_.config,safetyPolicy:_.safetyPolicy})}import{randomUUID as BE}from"crypto";import{randomUUID as f7}from"crypto";var WE={openai:{api_key_env:"OPENAI_API_KEY",default_model:"gpt-5.2"},anthropic:{api_key_env:"ANTHROPIC_API_KEY",default_model:"claude-sonnet-4-6"},deepseek:{api_key_env:"DEEPSEEK_API_KEY",default_model:"deepseek-chat"}},u7={openai:{text_generation:!0,structured_output:!0,tool_usage:!0,tool_streaming:!0,image_input:!0,native_web_search:!0,reasoning:!0,embeddings:!0},anthropic:{text_generation:!0,structured_output:!0,tool_usage:!0,tool_streaming:!0,image_input:!0,native_web_search:!1,reasoning:!0,embeddings:!1},deepseek:{text_generation:!0,structured_output:!0,tool_usage:!0,tool_streaming:!0,image_input:!1,native_web_search:!1,reasoning:!0,embeddings:!1}},x7={default:"openai:gpt-5.2",fast:"openai:gpt-5-mini",reasoning:"anthropic:claude-opus-4-6",sonnet:"anthropic:claude-sonnet-4-6",deepseek:"deepseek:deepseek-chat","deepseek-reasoning":"deepseek:deepseek-reasoner"};function NW(_){return _?.providers??{}}function $6(_,$){let g=NW(_)[$]??{};return{...WE[$],...g}}function EW(_){let $=NW(_);return{...x7,...$.default_model?{default:$.default_model}:{},...$.aliases??{}}}function w_(_){let[$,...g]=_.split(":"),U=g.join(":");if($!=="openai"&&$!=="anthropic"&&$!=="deepseek")throw Error(`Unsupported AI provider: ${$}`);if(!U)throw Error(`Invalid model ref: ${_}. Expected provider:model.`);return{provider:$,model:U}}function G$(_,$){return EW($)[_]??_}function XE(_){let $=EW(_);return Object.entries($).map(([g,U])=>{let D=w_(U);return{alias:g,model_ref:U,provider:D.provider,model:D.model,default:g==="default",capabilities:u7[D.provider]}})}function OW(_,$=process.env){return Object.keys(WE).map((g)=>{let U=$6(_,g),D=Boolean($[U.api_key_env]);return{provider:g,api_key_env:U.api_key_env,configured:D,source:D?"env":"missing",base_url:U.base_url??null,default_model:U.default_model}})}function AW(_,$=process.env){return{default_model:G$("default",_),providers:OW(_,$),models:XE(_)}}function D4(_,$,g=process.env){let U=OW($,g).find((D)=>D.provider===_);if(!U)throw Error(`Unsupported AI provider: ${_}`);if(!U.configured)throw Error(`Missing ${U.api_key_env} for ${_}. Set the env var to use this provider.`);return U}async function y7(_){if(_==="openai"){let{createOpenAI:g}=await import("@ai-sdk/openai");return g}if(_==="anthropic"){let{createAnthropic:g}=await import("@ai-sdk/anthropic");return g}let{createDeepSeek:$}=await import("@ai-sdk/deepseek");return $}async function h7(_={}){let{createProviderRegistry:$}=await import("ai"),g=_.env??process.env,U={};for(let D of Object.keys(WE)){let I=$6(_.config,D),j=g[I.api_key_env];if(!j)continue;let N=_.factories?.[D]??await y7(D);U[D]=N({apiKey:j,baseURL:I.base_url})}return $(U)}async function xg(_,$={}){let g=G$(_,$.config),U=w_(g);return D4(U.provider,$.config,$.env),(await h7($)).languageModel(g)}function jW(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return 0}function U4(_){let $=_.usage??{};return{provider:_.provider,model:_.model,input_tokens:jW($,["inputTokens","promptTokens","input_tokens","prompt_tokens"]),output_tokens:jW($,["outputTokens","completionTokens","output_tokens","completion_tokens"]),cost_usd:_.costUsd??0,metadata:{usage:$,provider_metadata:_.providerMetadata??{}}}}function W0(_,$){let g=`usage_${f7()}`;return _.run(`INSERT INTO provider_usage (id, run_id, provider, model, input_tokens, output_tokens, cost_usd, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[g,$.run_id??null,$.provider,$.model,$.input_tokens,$.output_tokens,$.cost_usd,JSON.stringify($.metadata),$.created_at??new Date().toISOString()]),g}import{createHash as Jq}from"crypto";import{existsSync as o7,readFileSync as p7}from"fs";import{createHash as PW}from"crypto";var c7="openai:text-embedding-3-small",zW=1536;function sU(_){return _?.embeddings??{}}function LW(_,$){return`${_}_${PW("sha256").update($).digest("hex").slice(0,20)}`}function GE(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function Y$(_,$){for(let g of $){let U=_[g];if(typeof U==="string"&&U.length>0)return U}return null}function JW(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return null}function RE(_){return Math.sqrt(_.reduce(($,g)=>$+g*g,0))}function n7(_,$,g=RE($)){let U=RE(_);if(U===0||g===0)return 0;let D=Math.min(_.length,$.length),I=0;for(let j=0;j{let I=g[D%g.length]/255;return Number((I*2-1).toFixed(6))})}async function m7(_,$,g=process.env){D4("openai",$,g);let U=$6($,"openai"),{createOpenAI:D}=await import("@ai-sdk/openai"),I=D({apiKey:g[U.api_key_env],baseURL:U.base_url});if(I.embeddingModel)return I.embeddingModel(_);if(I.textEmbedding)return I.textEmbedding(_);if(I.textEmbeddingModel)return I.textEmbeddingModel(_);throw Error("OpenAI provider does not expose an embedding model factory.")}function I4(_,$){if(!_||_==="default"||_==="embedding")return sU($).default_model??c7;return _}async function SW(_,$={}){let g=I4($.modelRef,$.config),U=w_(g);if(U.provider!=="openai")throw Error(`Embedding provider ${U.provider} is not supported yet. Use openai:text-embedding-3-small.`);let D=$.dimensions??sU($.config).dimensions??zW;if($.fake)return{provider:U.provider,model:U.model,dimensions:D,vectors:_.map((A)=>d7(A,D)),usage:{input_tokens:_.reduce((A,L)=>A+Math.max(1,Math.ceil(L.split(/\s+/).filter(Boolean).length*1.25)),0)}};let{embedMany:I}=await import("ai"),j=await m7(U.model,$.config,$.env),N=await I({model:j,values:_,maxParallelCalls:$.maxParallelCalls??sU($.config).max_parallel_calls,providerOptions:{openai:{dimensions:D}}}),O=N.embeddings;return{provider:U.provider,model:U.model,dimensions:O[0]?.length??D,vectors:O,usage:{input_tokens:N.usage?.tokens??0}}}function i7(_,$){if($.sourceRevisionId)return _.query(`SELECT + ORDER BY created_at ASC`).all(D.id).map((I)=>({...I,metadata:T2(I.metadata_json),metadata_json:void 0})),U=null;if(_.includeContent!==!1)try{U=await _.store.getText(D.path)}catch{U=null}return{ok:!0,note:B2(D),citations:g,content:U}}finally{$.close()}}async function GW(_){return xD(_),s6(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1}),ag({dbPath:_.workspace.knowledgeDbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",config:_.config,safetyPolicy:_.safetyPolicy})}import{randomUUID as k2}from"crypto";import{randomUUID as sT}from"crypto";var q2={openai:{api_key_env:"OPENAI_API_KEY",default_model:"gpt-5.2"},anthropic:{api_key_env:"ANTHROPIC_API_KEY",default_model:"claude-sonnet-4-6"},deepseek:{api_key_env:"DEEPSEEK_API_KEY",default_model:"deepseek-chat"}},_B={openai:{text_generation:!0,structured_output:!0,tool_usage:!0,tool_streaming:!0,image_input:!0,native_web_search:!0,reasoning:!0,embeddings:!0},anthropic:{text_generation:!0,structured_output:!0,tool_usage:!0,tool_streaming:!0,image_input:!0,native_web_search:!1,reasoning:!0,embeddings:!1},deepseek:{text_generation:!0,structured_output:!0,tool_usage:!0,tool_streaming:!0,image_input:!1,native_web_search:!1,reasoning:!0,embeddings:!1}},$B={default:"openai:gpt-5.2",fast:"openai:gpt-5-mini",reasoning:"anthropic:claude-opus-4-6",sonnet:"anthropic:claude-sonnet-4-6",deepseek:"deepseek:deepseek-chat","deepseek-reasoning":"deepseek:deepseek-reasoner"};function YW(_){return _?.providers??{}}function $6(_,$){let D=YW(_)[$]??{};return{...q2[$],...D}}function QW(_){let $=YW(_);return{...$B,...$.default_model?{default:$.default_model}:{},...$.aliases??{}}}function w_(_){let[$,...D]=_.split(":"),g=D.join(":");if($!=="openai"&&$!=="anthropic"&&$!=="deepseek")throw Error(`Unsupported AI provider: ${$}`);if(!g)throw Error(`Invalid model ref: ${_}. Expected provider:model.`);return{provider:$,model:g}}function R$(_,$){return QW($)[_]??_}function V2(_){let $=QW(_);return Object.entries($).map(([D,g])=>{let U=w_(g);return{alias:D,model_ref:g,provider:U.provider,model:U.model,default:D==="default",capabilities:_B[U.provider]}})}function TW(_,$=process.env){return Object.keys(q2).map((D)=>{let g=$6(_,D),U=Boolean($[g.api_key_env]);return{provider:D,api_key_env:g.api_key_env,configured:U,source:U?"env":"missing",base_url:g.base_url??null,default_model:g.default_model}})}function BW(_,$=process.env){return{default_model:R$("default",_),providers:TW(_,$),models:V2(_)}}function U4(_,$,D=process.env){let g=TW($,D).find((U)=>U.provider===_);if(!g)throw Error(`Unsupported AI provider: ${_}`);if(!g.configured)throw Error(`Missing ${g.api_key_env} for ${_}. Set the env var to use this provider.`);return g}async function DB(_){if(_==="openai"){let{createOpenAI:D}=await import("@ai-sdk/openai");return D}if(_==="anthropic"){let{createAnthropic:D}=await import("@ai-sdk/anthropic");return D}let{createDeepSeek:$}=await import("@ai-sdk/deepseek");return $}async function UB(_={}){let{createProviderRegistry:$}=await import("ai"),D=_.env??process.env,g={};for(let U of Object.keys(q2)){let I=$6(_.config,U),j=D[I.api_key_env];if(!j)continue;let N=_.factories?.[U]??await DB(U);g[U]=N({apiKey:j,baseURL:I.base_url})}return $(g)}async function yD(_,$={}){let D=R$(_,$.config),g=w_(D);return U4(g.provider,$.config,$.env),(await UB($)).languageModel(D)}function RW(_,$){for(let D of $){let g=_[D];if(typeof g==="number"&&Number.isFinite(g))return g}return 0}function g4(_){let $=_.usage??{};return{provider:_.provider,model:_.model,input_tokens:RW($,["inputTokens","promptTokens","input_tokens","prompt_tokens"]),output_tokens:RW($,["outputTokens","completionTokens","output_tokens","completion_tokens"]),cost_usd:_.costUsd??0,metadata:{usage:$,provider_metadata:_.providerMetadata??{}}}}function X0(_,$){let D=`usage_${sT()}`;return _.run(`INSERT INTO provider_usage (id, run_id, provider, model, input_tokens, output_tokens, cost_usd, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[D,$.run_id??null,$.provider,$.model,$.input_tokens,$.output_tokens,$.cost_usd,JSON.stringify($.metadata),$.created_at??new Date().toISOString()]),D}import{createHash as MB}from"crypto";import{existsSync as LB,readFileSync as JB}from"fs";import{createHash as FW}from"crypto";var gB="openai:text-embedding-3-small",KW=1536;function _I(_){return _?.embeddings??{}}function qW(_,$){return`${_}_${FW("sha256").update($).digest("hex").slice(0,20)}`}function K2(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function Y$(_,$){for(let D of $){let g=_[D];if(typeof g==="string"&&g.length>0)return g}return null}function VW(_,$){for(let D of $){let g=_[D];if(typeof g==="number"&&Number.isFinite(g))return g}return null}function F2(_){return Math.sqrt(_.reduce(($,D)=>$+D*D,0))}function IB(_,$,D=F2($)){let g=F2(_);if(g===0||D===0)return 0;let U=Math.min(_.length,$.length),I=0;for(let j=0;j{let I=D[U%D.length]/255;return Number((I*2-1).toFixed(6))})}async function NB(_,$,D=process.env){U4("openai",$,D);let g=$6($,"openai"),{createOpenAI:U}=await import("@ai-sdk/openai"),I=U({apiKey:D[g.api_key_env],baseURL:g.base_url});if(I.embeddingModel)return I.embeddingModel(_);if(I.textEmbedding)return I.textEmbedding(_);if(I.textEmbeddingModel)return I.textEmbeddingModel(_);throw Error("OpenAI provider does not expose an embedding model factory.")}function I4(_,$){if(!_||_==="default"||_==="embedding")return _I($).default_model??gB;return _}async function MW(_,$={}){let D=I4($.modelRef,$.config),g=w_(D);if(g.provider!=="openai")throw Error(`Embedding provider ${g.provider} is not supported yet. Use openai:text-embedding-3-small.`);let U=$.dimensions??_I($.config).dimensions??KW;if($.fake)return{provider:g.provider,model:g.model,dimensions:U,vectors:_.map((A)=>jB(A,U)),usage:{input_tokens:_.reduce((A,L)=>A+Math.max(1,Math.ceil(L.split(/\s+/).filter(Boolean).length*1.25)),0)}};let{embedMany:I}=await import("ai"),j=await NB(g.model,$.config,$.env),N=await I({model:j,values:_,maxParallelCalls:$.maxParallelCalls??_I($.config).max_parallel_calls,providerOptions:{openai:{dimensions:U}}}),O=N.embeddings;return{provider:g.provider,model:g.model,dimensions:O[0]?.length??U,vectors:O,usage:{input_tokens:N.usage?.tokens??0}}}function EB(_,$){if($.sourceRevisionId)return _.query(`SELECT c.id, c.text, c.token_count, @@ -713,7 +713,7 @@ VALUES (10, datetime('now')); ON v.chunk_id = c.id AND v.provider = ? AND v.model = ? WHERE v.id IS NULL ORDER BY c.created_at ASC, c.ordinal ASC - LIMIT ?`).all($.provider,$.model,$.limit)}function l7(_){let $=GE(_.metadata_json),g=$.provenance;if(g&&typeof g==="object"&&!Array.isArray(g))return g;return T6({source_ref:Y$($,["source_ref"]),source_uri:_.source_uri??Y$($,["source_uri"]),source_kind:_.source_kind??Y$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??Y$($,["revision"]),hash:_.hash??Y$($,["hash"]),chunk_id:_.id,start_offset:_.start_offset??JW($,["start_offset"]),end_offset:_.end_offset??JW($,["end_offset"]),status:Y$($,["status"]),resolver:"open-files-read-only"})}function t7(_,$,g,U){let D=_.prepare(` + LIMIT ?`).all($.provider,$.model,$.limit)}function OB(_){let $=K2(_.metadata_json),D=$.provenance;if(D&&typeof D==="object"&&!Array.isArray(D))return D;return T6({source_ref:Y$($,["source_ref"]),source_uri:_.source_uri??Y$($,["source_uri"]),source_kind:_.source_kind??Y$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??Y$($,["revision"]),hash:_.hash??Y$($,["hash"]),chunk_id:_.id,start_offset:_.start_offset??VW($,["start_offset"]),end_offset:_.end_offset??VW($,["end_offset"]),status:Y$($,["status"]),resolver:"open-files-read-only"})}function AB(_,$,D,g){let U=_.prepare(` INSERT INTO chunk_embeddings (id, chunk_id, provider, model, dimensions, vector_json, created_at) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(chunk_id, provider, model) DO UPDATE SET @@ -742,10 +742,10 @@ VALUES (10, datetime('now')); status = excluded.status, metadata_json = excluded.metadata_json, updated_at = excluded.updated_at - `);return _.transaction(()=>{for(let N=0;N<$.length;N+=1){let O=$[N],A=g.vectors[N];if(!A)continue;let L=GE(O.metadata_json),z=l7(O),W=z.source_ref??Y$(L,["source_ref"]),J=z.source_uri??O.source_uri??Y$(L,["source_uri"]),P=z.revision??O.revision??Y$(L,["revision"]),S=z.hash??O.hash??Y$(L,["hash"]),X=z.status??Y$(L,["status"])??"active",G=JSON.stringify(A);D.run(LW("emb",`${O.id}\x00${g.provider}\x00${g.model}`),O.id,g.provider,g.model,g.dimensions,G,U),I.run(LW("vec",`${O.id}\x00${g.provider}\x00${g.model}`),O.id,O.source_revision_id,g.provider,g.model,g.dimensions,G,RE(A),J,W,P,S,z.start_offset,z.end_offset,O.token_count,X,JSON.stringify({...L,provenance:z,embedded_at:U}),U,U)}})(),$.length}async function _I(_){let $=I4(_.modelRef,_.config),g=w_($);if(g.provider!=="openai")throw Error(`Embedding provider ${g.provider} is not supported yet.`);let U=(_.now??new Date).toISOString(),D=Math.max(1,Math.min(_.limit??100,1000));h(_.dbPath);let I=v(_.dbPath),j;try{j=i7(I,{provider:g.provider,model:g.model,limit:D,sourceRevisionId:_.sourceRevisionId})}finally{I.close()}if(j.length===0)return{provider:g.provider,model:g.model,dimensions:_.dimensions??sU(_.config).dimensions??zW,chunks_seen:0,chunks_embedded:0,embeddings_upserted:0,vector_entries_upserted:0,usage:{input_tokens:0}};let N=await SW(j.map((A)=>A.text),_),O=v(_.dbPath);try{let A=t7(O,j,N,U);return{provider:N.provider,model:N.model,dimensions:N.dimensions,chunks_seen:j.length,chunks_embedded:j.length,embeddings_upserted:A,vector_entries_upserted:A,usage:N.usage}}finally{O.close()}}function WW(_){h(_);let $=v(_);try{let g=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,D=$.query(`SELECT provider, model, dimensions, COUNT(*) AS entries, MAX(updated_at) AS updated_at + `);return _.transaction(()=>{for(let N=0;N<$.length;N+=1){let O=$[N],A=D.vectors[N];if(!A)continue;let L=K2(O.metadata_json),z=OB(O),W=z.source_ref??Y$(L,["source_ref"]),J=z.source_uri??O.source_uri??Y$(L,["source_uri"]),P=z.revision??O.revision??Y$(L,["revision"]),S=z.hash??O.hash??Y$(L,["hash"]),X=z.status??Y$(L,["status"])??"active",R=JSON.stringify(A);U.run(qW("emb",`${O.id}\x00${D.provider}\x00${D.model}`),O.id,D.provider,D.model,D.dimensions,R,g),I.run(qW("vec",`${O.id}\x00${D.provider}\x00${D.model}`),O.id,O.source_revision_id,D.provider,D.model,D.dimensions,R,F2(A),J,W,P,S,z.start_offset,z.end_offset,O.token_count,X,JSON.stringify({...L,provenance:z,embedded_at:g}),g,g)}})(),$.length}async function $I(_){let $=I4(_.modelRef,_.config),D=w_($);if(D.provider!=="openai")throw Error(`Embedding provider ${D.provider} is not supported yet.`);let g=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??100,1000));h(_.dbPath);let I=f(_.dbPath),j;try{j=EB(I,{provider:D.provider,model:D.model,limit:U,sourceRevisionId:_.sourceRevisionId})}finally{I.close()}if(j.length===0)return{provider:D.provider,model:D.model,dimensions:_.dimensions??_I(_.config).dimensions??KW,chunks_seen:0,chunks_embedded:0,embeddings_upserted:0,vector_entries_upserted:0,usage:{input_tokens:0}};let N=await MW(j.map((A)=>A.text),_),O=f(_.dbPath);try{let A=AB(O,j,N,g);return{provider:N.provider,model:N.model,dimensions:N.dimensions,chunks_seen:j.length,chunks_embedded:j.length,embeddings_upserted:A,vector_entries_upserted:A,usage:N.usage}}finally{O.close()}}function ZW(_){h(_);let $=f(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,g=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,U=$.query(`SELECT provider, model, dimensions, COUNT(*) AS entries, MAX(updated_at) AS updated_at FROM vector_index_entries GROUP BY provider, model, dimensions - ORDER BY provider, model`).all();return{total_embeddings:g,total_vector_entries:U,indexes:D}}finally{$.close()}}async function $I(_){let $=I4(_.modelRef,_.config),g=w_($),U=Math.max(1,Math.min(_.limit??10,100)),D=await SW([_.query],_),I=D.vectors[0]??[];h(_.dbPath);let j=v(_.dbPath);try{let O=j.query(`SELECT + ORDER BY provider, model`).all();return{total_embeddings:D,total_vector_entries:g,indexes:U}}finally{$.close()}}async function DI(_){let $=I4(_.modelRef,_.config),D=w_($),g=Math.max(1,Math.min(_.limit??10,100)),U=await MW([_.query],_),I=U.vectors[0]??[];h(_.dbPath);let j=f(_.dbPath);try{let O=j.query(`SELECT v.chunk_id, c.text, v.vector_json, @@ -757,7 +757,7 @@ VALUES (10, datetime('now')); v.metadata_json FROM vector_index_entries v JOIN chunks c ON c.id = v.chunk_id - WHERE v.provider = ? AND v.model = ? AND v.status = 'active'`).all(g.provider,g.model).map((A)=>{let L=JSON.parse(A.vector_json),z=GE(A.metadata_json),W=z.provenance&&typeof z.provenance==="object"&&!Array.isArray(z.provenance)?z.provenance:null;return{chunk_id:A.chunk_id,score:n7(I,L,A.vector_norm),text:A.text,source_uri:A.source_uri,source_ref:A.source_ref,revision:A.revision,hash:A.hash,provenance:W}}).sort((A,L)=>L.score-A.score).slice(0,U);return{provider:g.provider,model:g.model,dimensions:D.dimensions,query:_.query,results:O}}finally{j.close()}}function gI(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function I$(_,$){for(let g of $){let U=_[g];if(typeof U==="string"&&U.length>0)return U}return null}function XW(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return null}function YW(_){return Array.from(new Set(_))}function QW(_){let $=_.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[];return YW($.filter((g)=>g.length>0)).slice(0,16)}function RW(_){return _.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[]}function e7(_){let $=[],g=/"([^"]*)"|(\S+)/g,U,D=!1;while((U=g.exec(_))!==null){if(U[1]!==void 0){let A=RW(U[1]);if(A.length>0)$.push({type:"phrase",value:A.join(" "),negate:D,prefix:!1});D=!1;continue}let I=U[2]??"";if(I==="OR"||I==="||"||I==="|"){$.push({type:"or",value:"",negate:!1,prefix:!1});continue}if(I==="AND"||I==="&&")continue;if(I==="NOT"){D=!0;continue}let j=D;if(D=!1,I.startsWith("-")&&I.length>1)j=!0,I=I.slice(1);let N=!1;if(I.endsWith("*"))N=!0,I=I.slice(0,-1);let O=RW(I);if(O.length===0)continue;$.push({type:O.length>1?"phrase":"term",value:O.join(" "),negate:j,prefix:N})}return $.slice(0,24)}function a7(_){if(_.type==="phrase")return`"${_.value}"`;return`"${_.value}"*`}function s7(_){let $=e7(_);if($.filter((j)=>j.type!=="or"&&!j.negate).length===0)return{and:null,or:null};let U=(j)=>{let N="",O=!1,A=[];for(let L of $){if(L.type==="or"){O=!0;continue}let z=a7(L);if(L.negate){A.push(z);continue}if(N.length===0)N=z;else N=O?`${N} OR ${z}`:`${N} ${j} ${z}`;O=!1}for(let L of A)N=`(${N}) NOT ${L}`;return N.length>0?N:null},D=U("AND"),I=U("OR");return{and:D,or:I!==D?I:null}}function _q(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function TW(_,$){return _.flatMap((g)=>Array.from({length:$},()=>`%${_q(g)}%`))}function $q(_,$){let g=Number.isFinite(_)?1/(1+Math.abs(_)):0,U=1/(1+$);return DI(Math.max(g,U))}function YE(_,$){if($.length===0)return 0;let g=$.filter((U)=>_.includes(U)).length;if(g===0)return 0;return DI(Math.min(0.85,0.35+g/$.length*0.5))}function gq(_){return DI(Math.max(0,Math.min(1,(_+1)/2)))}function DI(_){return Number(_.toFixed(6))}function R0(_,$){let g=_.keyword??0,U=_.semantic??0,D=_.catalog??0,I=$?.chunk_id?0.05:0;return DI(Math.min(1,g*0.55+U*0.4+D*0.35+I))}function QE(_){let $=_.provenance;return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Dq(_){let $=gI(_.chunk_metadata_json),g=QE($);if(g)return g;if(!_.source_revision_id&&!_.source_uri)return null;return T6({source_ref:I$($,["source_ref"]),source_uri:_.source_uri??I$($,["source_uri"]),source_kind:_.source_kind??I$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??I$($,["revision"]),hash:_.hash??I$($,["hash"]),chunk_id:_.chunk_id,start_offset:_.start_offset??XW($,["start_offset"]),end_offset:_.end_offset??XW($,["end_offset"]),status:I$($,["status"]),resolver:"open-files-read-only"})}function GW(_,$,g){if(!$)return[];try{return Uq(_,$,g)}catch{return[]}}function Uq(_,$,g){return _.query(`SELECT + WHERE v.provider = ? AND v.model = ? AND v.status = 'active'`).all(D.provider,D.model).map((A)=>{let L=JSON.parse(A.vector_json),z=K2(A.metadata_json),W=z.provenance&&typeof z.provenance==="object"&&!Array.isArray(z.provenance)?z.provenance:null;return{chunk_id:A.chunk_id,score:IB(I,L,A.vector_norm),text:A.text,source_uri:A.source_uri,source_ref:A.source_ref,revision:A.revision,hash:A.hash,provenance:W}}).sort((A,L)=>L.score-A.score).slice(0,g);return{provider:D.provider,model:D.model,dimensions:U.dimensions,query:_.query,results:O}}finally{j.close()}}function UI(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function I$(_,$){for(let D of $){let g=_[D];if(typeof g==="string"&&g.length>0)return g}return null}function bW(_,$){for(let D of $){let g=_[D];if(typeof g==="number"&&Number.isFinite(g))return g}return null}function CW(_){return Array.from(new Set(_))}function vW(_){let $=_.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[];return CW($.filter((D)=>D.length>0)).slice(0,16)}function HW(_){return _.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[]}function PB(_){let $=[],D=/"([^"]*)"|(\S+)/g,g,U=!1;while((g=D.exec(_))!==null){if(g[1]!==void 0){let A=HW(g[1]);if(A.length>0)$.push({type:"phrase",value:A.join(" "),negate:U,prefix:!1});U=!1;continue}let I=g[2]??"";if(I==="OR"||I==="||"||I==="|"){$.push({type:"or",value:"",negate:!1,prefix:!1});continue}if(I==="AND"||I==="&&")continue;if(I==="NOT"){U=!0;continue}let j=U;if(U=!1,I.startsWith("-")&&I.length>1)j=!0,I=I.slice(1);let N=!1;if(I.endsWith("*"))N=!0,I=I.slice(0,-1);let O=HW(I);if(O.length===0)continue;$.push({type:O.length>1?"phrase":"term",value:O.join(" "),negate:j,prefix:N})}return $.slice(0,24)}function zB(_){if(_.type==="phrase")return`"${_.value}"`;return`"${_.value}"*`}function SB(_){let $=PB(_);if($.filter((j)=>j.type!=="or"&&!j.negate).length===0)return{and:null,or:null};let g=(j)=>{let N="",O=!1,A=[];for(let L of $){if(L.type==="or"){O=!0;continue}let z=zB(L);if(L.negate){A.push(z);continue}if(N.length===0)N=z;else N=O?`${N} OR ${z}`:`${N} ${j} ${z}`;O=!1}for(let L of A)N=`(${N}) NOT ${L}`;return N.length>0?N:null},U=g("AND"),I=g("OR");return{and:U,or:I!==U?I:null}}function WB(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function fW(_,$){return _.flatMap((D)=>Array.from({length:$},()=>`%${WB(D)}%`))}function XB(_,$){let D=Number.isFinite(_)?1/(1+Math.abs(_)):0,g=1/(1+$);return gI(Math.max(D,g))}function M2(_,$){if($.length===0)return 0;let D=$.filter((g)=>_.includes(g)).length;if(D===0)return 0;return gI(Math.min(0.85,0.35+D/$.length*0.5))}function GB(_){return gI(Math.max(0,Math.min(1,(_+1)/2)))}function gI(_){return Number(_.toFixed(6))}function R0(_,$){let D=_.keyword??0,g=_.semantic??0,U=_.catalog??0,I=$?.chunk_id?0.05:0;return gI(Math.min(1,D*0.55+g*0.4+U*0.35+I))}function Z2(_){let $=_.provenance;return $&&typeof $==="object"&&!Array.isArray($)?$:null}function RB(_){let $=UI(_.chunk_metadata_json),D=Z2($);if(D)return D;if(!_.source_revision_id&&!_.source_uri)return null;return T6({source_ref:I$($,["source_ref"]),source_uri:_.source_uri??I$($,["source_uri"]),source_kind:_.source_kind??I$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??I$($,["revision"]),hash:_.hash??I$($,["hash"]),chunk_id:_.chunk_id,start_offset:_.start_offset??bW($,["start_offset"]),end_offset:_.end_offset??bW($,["end_offset"]),status:I$($,["status"]),resolver:"open-files-read-only"})}function kW(_,$,D){if(!$)return[];try{return YB(_,$,D)}catch{return[]}}function YB(_,$,D){return _.query(`SELECT chunks_fts.chunk_id, c.kind AS chunk_kind, c.wiki_page_id, @@ -786,49 +786,49 @@ VALUES (10, datetime('now')); LEFT JOIN wiki_pages wp ON wp.id = c.wiki_page_id WHERE chunks_fts MATCH ? ORDER BY rank ASC - LIMIT ?`).all($,g)}function qW(_,$){if($.length===0)return"1 = 0";return $.map(()=>`(${_.map((U)=>`lower(COALESCE(${U}, '')) LIKE ? ESCAPE '\\'`).join(" OR ")})`).join(" OR ")}function Iq(_,$,g){let U=["path","title","artifact_uri","metadata_json"];return _.query(`SELECT id, path, title, artifact_uri, content_hash, status, metadata_json + LIMIT ?`).all($,D)}function wW(_,$){if($.length===0)return"1 = 0";return $.map(()=>`(${_.map((g)=>`lower(COALESCE(${g}, '')) LIKE ? ESCAPE '\\'`).join(" OR ")})`).join(" OR ")}function QB(_,$,D){let g=["path","title","artifact_uri","metadata_json"];return _.query(`SELECT id, path, title, artifact_uri, content_hash, status, metadata_json FROM wiki_pages - WHERE status = 'active' AND (${qW(U,$)}) + WHERE status = 'active' AND (${wW(g,$)}) ORDER BY updated_at DESC - LIMIT ?`).all(...TW($,U.length),g)}function jq(_,$,g){let U=["kind","name","shard_key","artifact_uri","metadata_json"];return _.query(`SELECT id, kind, name, artifact_uri, shard_key, metadata_json + LIMIT ?`).all(...fW($,g.length),D)}function TB(_,$,D){let g=["kind","name","shard_key","artifact_uri","metadata_json"];return _.query(`SELECT id, kind, name, artifact_uri, shard_key, metadata_json FROM knowledge_indexes - WHERE ${qW(U,$)} + WHERE ${wW(g,$)} ORDER BY updated_at DESC - LIMIT ?`).all(...TW($,U.length),g)}function BW(_){if(!_||!o7(_))return[];try{let $=JSON.parse(p7(_,"utf8"));if(!$||!Array.isArray($.items))return[];return $.items.filter((g)=>{return Boolean(g&&typeof g==="object"&&typeof g.id==="string"&&typeof g.title==="string"&&typeof g.content==="string")})}catch{return[]}}function Nq(_){return[_.id,_.short_id,_.title,_.content,_.url,..._.tags??[]].filter(($)=>typeof $==="string"&&$.length>0).join(" ").toLowerCase()}function KW(_,$,g){if($.length===0)return[];return _.filter((U)=>U.archived!==!0).map((U)=>({item:U,haystack:Nq(U)})).filter(({haystack:U})=>$.some((D)=>U.includes(D))).map(({item:U,haystack:D})=>({item:U,score:YE(D,$)})).sort((U,D)=>D.score-U.score||U.item.id.localeCompare(D.item.id)).slice(0,g)}function Eq(_,$,g){return KW(BW(_),$,g)}function Oq(_,$){let g=gI(_.chunk_metadata_json),U=Dq(_),D=I$(g,["source_ref"]),I=_.source_uri??I$(g,["source_uri"]),j=Boolean(_.wiki_page_id),N={kind:j?"wiki_chunk":"source_chunk",id:_.chunk_id,title:j?_.wiki_title:_.source_title,text:_.text,score:0,scores:{keyword:$},source:I||D?{uri:I,ref:D,kind:_.source_kind??I$(g,["source_kind"]),revision:_.revision??I$(g,["revision"]),hash:_.hash??I$(g,["hash"])}:null,citation:{chunk_id:_.chunk_id,start_offset:_.start_offset,end_offset:_.end_offset},artifact:j?{uri:_.wiki_artifact_uri,path:_.wiki_path,hash:_.wiki_content_hash,shard_key:_.wiki_path}:null,provenance:U,reasons:["keyword_match"]};return N.score=R0(N.scores,N.citation),N}function VW(_,$){let g=`knowledge://item/${encodeURIComponent(_.id)}`,U={kind:"legacy_item",id:_.id,title:_.title,text:_.content,score:0,scores:{keyword:$},source:{uri:g,ref:g,kind:"legacy_item",revision:null,hash:null},citation:null,artifact:null,provenance:null,reasons:["legacy_note_match","keyword_match"]};return U.score=R0(U.scores,U.citation),U}function Aq(_,$){let g=gI(_.metadata_json),U=YE(`${_.path} ${_.title} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),D={kind:"wiki_page",id:_.id,title:_.title,text:null,score:0,scores:{catalog:U},source:null,citation:null,artifact:{uri:_.artifact_uri,path:_.path,hash:_.content_hash,shard_key:_.path},provenance:QE(g),reasons:["wiki_catalog_match"]};return D.score=R0(D.scores,D.citation),D}function Lq(_,$){let g=gI(_.metadata_json),U=YE(`${_.kind} ${_.name} ${_.shard_key??""} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),D={kind:"knowledge_index",id:_.id,title:_.name,text:null,score:0,scores:{catalog:U},source:null,citation:null,artifact:{uri:_.artifact_uri,path:I$(g,["artifact_key"]),hash:I$(g,["content_hash"]),shard_key:_.shard_key},provenance:QE(g),reasons:["index_catalog_match"]};return D.score=R0(D.scores,D.citation),D}function X0(_,$){let g=`${$.kind}:${$.id}`,U=_.get(g);if(!U){_.set(g,$);return}U.scores={keyword:Math.max(U.scores.keyword??0,$.scores.keyword??0)||void 0,semantic:Math.max(U.scores.semantic??0,$.scores.semantic??0)||void 0,catalog:Math.max(U.scores.catalog??0,$.scores.catalog??0)||void 0},U.reasons=YW([...U.reasons,...$.reasons]),U.text=U.text??$.text,U.title=U.title??$.title,U.source=U.source??$.source,U.citation=U.citation??$.citation,U.artifact=U.artifact??$.artifact,U.provenance=U.provenance??$.provenance,U.score=R0(U.scores,U.citation)}function FW(_){let $={source_chunk:0,wiki_chunk:1,legacy_item:2,wiki_page:3,knowledge_index:4};return _.sort((g,U)=>{if(U.score!==g.score)return U.score-g.score;return $[g.kind]-$[U.kind]||g.id.localeCompare(U.id)})}async function UI(_){let $=_.query.trim();if(!$)throw Error("Search query is required.");let g=Math.max(1,Math.min(_.limit??10,100)),U=Math.max(0,Math.floor(_.offset??0)),D=U+g,I=QW($),j=s7($),N=_.semantic===!0||_.fake===!0||Boolean(_.modelRef),O=[],A=null,L=null,z=null,W=0,J=0,P=0,S=new Map;h(_.dbPath);let X=v(_.dbPath);try{let K=Math.max(D*3,20),Q=GW(X,j.and,K);if(Q.length===0&&j.or)Q=GW(X,j.or,K);W=Q.length,Q.forEach((Z,e)=>X0(S,Oq(Z,$q(Z.rank,e))));let T=Iq(X,I,Math.max(D,10)),q=jq(X,I,Math.max(D,10)),V=Eq(_.legacyStorePath,I,Math.max(D,10));J=T.length+q.length,W+=V.length,V.forEach(({item:Z,score:e})=>X0(S,VW(Z,e))),T.forEach((Z)=>X0(S,Aq(Z,I))),q.forEach((Z)=>X0(S,Lq(Z,I)))}finally{X.close()}if(N)try{let K=await $I({dbPath:_.dbPath,query:$,limit:Math.max(D*3,20),config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,batchSize:_.batchSize,maxParallelCalls:_.maxParallelCalls});A=K.provider,L=K.model,z=K.dimensions,P=K.results.length;for(let Q of K.results){let T={kind:"source_chunk",id:Q.chunk_id,title:null,text:Q.text,score:0,scores:{semantic:gq(Q.score)},source:{uri:Q.source_uri,ref:Q.source_ref,kind:Q.provenance?.source_kind??null,revision:Q.revision,hash:Q.hash},citation:{chunk_id:Q.chunk_id,start_offset:Q.provenance?.start_offset??null,end_offset:Q.provenance?.end_offset??null},artifact:null,provenance:Q.provenance,reasons:["semantic_match"]};T.score=R0(T.scores,T.citation),X0(S,T)}}catch(K){O.push(`semantic_search_failed: ${K instanceof Error?K.message:String(K)}`)}let R=FW(Array.from(S.values())).slice(U,U+g);return{query:$,limit:g,offset:U,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:A,semantic_model:L,semantic_dimensions:z,counts:{keyword_results:W,catalog_results:J,semantic_results:P,merged_results:R.length},warnings:O,results:R}}async function II(_){return j4(BW(_.legacyStorePath),_,["knowledge_db_missing"])}async function j4(_,$,g=[]){let U=$.query.trim();if(!U)throw Error("Search query is required.");let D=Math.max(1,Math.min($.limit??10,100)),I=Math.max(0,Math.floor($.offset??0)),j=QW(U),N=$.semantic===!0||$.fake===!0||Boolean($.modelRef),O=new Map,A=KW(_,j,Math.max(I+D,10));A.forEach(({item:W,score:J})=>X0(O,VW(W,J)));let L=[...g];if(N)L.push("semantic_search_requires_local_catalog");let z=FW(Array.from(O.values())).slice(I,I+D);return{query:U,limit:D,offset:I,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:A.length,catalog_results:0,semantic_results:0,merged_results:z.length},warnings:L,results:z}}function MW(_,$){return`${_}_${Jq("sha256").update($).digest("hex").slice(0,20)}`}function ZW(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function Pq(_){return Array.from(new Set(ZW(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,16)}function zq(_){return[_.title,_.text].filter(Boolean).join(" ").toLowerCase()}function Sq(_,$){if($.length===0)return 0;let g=zq(_),U=$.filter((D)=>g.includes(D)).length;return Number((U/$.length).toFixed(6))}function Wq(_){if(!_)return!0;if("read_only"in _)return _.read_only===!0;if("read_only_sources"in _)return _.read_only_sources===!0;return!0}function bW(_){if(!_)return!1;if("stale"in _&&_.stale)return!0;if("status"in _)return NE(_.status);return!1}function Xq(_){if(bW(_.provenance))return 0;if(_.source?.hash||_.source?.revision)return 1;if(_.artifact?.hash)return 0.85;if(_.provenance&&"source_refs"in _.provenance&&_.provenance.source_refs.length>0)return 0.75;return 0.55}function Rq(_){if(_.citation?.chunk_id&&(_.source?.uri||_.artifact?.uri))return 1;if(_.provenance&&"citation_required"in _.provenance&&_.provenance.citation_required)return 0.75;if(_.artifact?.uri)return 0.65;return 0.35}function Gq(_){if(_.kind==="wiki_chunk")return 0.85;if(_.kind==="source_chunk")return 0.8;if(_.kind==="legacy_item")return 0.6;if(_.kind==="wiki_page")return 0.65;return 0.55}function Yq(_,$){let g={base_score:_.score,exact_score:Sq(_,$),citation_score:Rq(_),freshness_score:Xq(_),authority_score:Gq(_)},U=Math.min(1,g.base_score*0.65+g.exact_score*0.1+g.citation_score*0.1+g.freshness_score*0.1+g.authority_score*0.05),D=new Set(_.reasons);if(g.exact_score>0.5)D.add("exact_term");if(g.citation_score>=0.75)D.add("cited_source");if(g.freshness_score>=0.85)D.add("fresh_source");return{..._,score:Number(U.toFixed(6)),reasons:Array.from(D),rerank:{...g,final_score:Number(U.toFixed(6))}}}function HW(_,$){let g=_.text??_.title;if(!g)return null;let U=g.replace(/\s+/g," ").trim();return U.length<=$?U:`${U.slice(0,Math.max(0,$-1)).trim()}...`}function Qq(_){return{id:MW("cite",`${_.kind}\x00${_.id}\x00${_.source?.uri??""}\x00${_.artifact?.uri??""}`),result_id:_.id,kind:_.kind,source_uri:_.source?.uri??null,source_ref:_.source?.ref??null,artifact_uri:_.artifact?.uri??null,artifact_path:_.artifact?.path??null,revision:_.source?.revision??null,hash:_.source?.hash??_.artifact?.hash??null,chunk_id:_.citation?.chunk_id??null,start_offset:_.citation?.start_offset??null,end_offset:_.citation?.end_offset??null,quote:HW(_,500),provenance:_.provenance}}function Tq(_,$,g){let U=HW(_,g);if(!U)return null;return{id:MW("excerpt",`${_.kind}\x00${_.id}`),result_id:_.id,citation_id:$.id,kind:_.kind,text:U,score:_.score}}function jI(_){return _.map(()=>"?").join(", ")}function qq(_,$){let g=$.map((N)=>N.citation?.chunk_id).filter((N)=>Boolean(N)),U=$.filter((N)=>N.kind==="wiki_page").map((N)=>N.id),D=[],I=[];if(g.length===0&&U.length===0)return{citations:D,backlinks:I};let j=v(_);try{if(g.length>0)D.push(...j.query(`SELECT id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset + LIMIT ?`).all(...fW($,g.length),D)}function rW(_){if(!_||!LB(_))return[];try{let $=JSON.parse(JB(_,"utf8"));if(!$||!Array.isArray($.items))return[];return $.items.filter((D)=>{return Boolean(D&&typeof D==="object"&&typeof D.id==="string"&&typeof D.title==="string"&&typeof D.content==="string")})}catch{return[]}}function BB(_){return[_.id,_.short_id,_.title,_.content,_.url,..._.tags??[]].filter(($)=>typeof $==="string"&&$.length>0).join(" ").toLowerCase()}function uW(_,$,D){if($.length===0)return[];return _.filter((g)=>g.archived!==!0).map((g)=>({item:g,haystack:BB(g)})).filter(({haystack:g})=>$.some((U)=>g.includes(U))).map(({item:g,haystack:U})=>({item:g,score:M2(U,$)})).sort((g,U)=>U.score-g.score||g.item.id.localeCompare(U.item.id)).slice(0,D)}function qB(_,$,D){return uW(rW(_),$,D)}function VB(_,$){let D=UI(_.chunk_metadata_json),g=RB(_),U=I$(D,["source_ref"]),I=_.source_uri??I$(D,["source_uri"]),j=Boolean(_.wiki_page_id),N={kind:j?"wiki_chunk":"source_chunk",id:_.chunk_id,title:j?_.wiki_title:_.source_title,text:_.text,score:0,scores:{keyword:$},source:I||U?{uri:I,ref:U,kind:_.source_kind??I$(D,["source_kind"]),revision:_.revision??I$(D,["revision"]),hash:_.hash??I$(D,["hash"])}:null,citation:{chunk_id:_.chunk_id,start_offset:_.start_offset,end_offset:_.end_offset},artifact:j?{uri:_.wiki_artifact_uri,path:_.wiki_path,hash:_.wiki_content_hash,shard_key:_.wiki_path}:null,provenance:g,reasons:["keyword_match"]};return N.score=R0(N.scores,N.citation),N}function xW(_,$){let D=`knowledge://item/${encodeURIComponent(_.id)}`,g={kind:"legacy_item",id:_.id,title:_.title,text:_.content,score:0,scores:{keyword:$},source:{uri:D,ref:D,kind:"legacy_item",revision:null,hash:null},citation:null,artifact:null,provenance:null,reasons:["legacy_note_match","keyword_match"]};return g.score=R0(g.scores,g.citation),g}function FB(_,$){let D=UI(_.metadata_json),g=M2(`${_.path} ${_.title} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"wiki_page",id:_.id,title:_.title,text:null,score:0,scores:{catalog:g},source:null,citation:null,artifact:{uri:_.artifact_uri,path:_.path,hash:_.content_hash,shard_key:_.path},provenance:Z2(D),reasons:["wiki_catalog_match"]};return U.score=R0(U.scores,U.citation),U}function KB(_,$){let D=UI(_.metadata_json),g=M2(`${_.kind} ${_.name} ${_.shard_key??""} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"knowledge_index",id:_.id,title:_.name,text:null,score:0,scores:{catalog:g},source:null,citation:null,artifact:{uri:_.artifact_uri,path:I$(D,["artifact_key"]),hash:I$(D,["content_hash"]),shard_key:_.shard_key},provenance:Z2(D),reasons:["index_catalog_match"]};return U.score=R0(U.scores,U.citation),U}function G0(_,$){let D=`${$.kind}:${$.id}`,g=_.get(D);if(!g){_.set(D,$);return}g.scores={keyword:Math.max(g.scores.keyword??0,$.scores.keyword??0)||void 0,semantic:Math.max(g.scores.semantic??0,$.scores.semantic??0)||void 0,catalog:Math.max(g.scores.catalog??0,$.scores.catalog??0)||void 0},g.reasons=CW([...g.reasons,...$.reasons]),g.text=g.text??$.text,g.title=g.title??$.title,g.source=g.source??$.source,g.citation=g.citation??$.citation,g.artifact=g.artifact??$.artifact,g.provenance=g.provenance??$.provenance,g.score=R0(g.scores,g.citation)}function yW(_){let $={source_chunk:0,wiki_chunk:1,legacy_item:2,wiki_page:3,knowledge_index:4};return _.sort((D,g)=>{if(g.score!==D.score)return g.score-D.score;return $[D.kind]-$[g.kind]||D.id.localeCompare(g.id)})}async function II(_){let $=_.query.trim();if(!$)throw Error("Search query is required.");let D=Math.max(1,Math.min(_.limit??10,100)),g=Math.max(0,Math.floor(_.offset??0)),U=g+D,I=vW($),j=SB($),N=_.semantic===!0||_.fake===!0||Boolean(_.modelRef),O=[],A=null,L=null,z=null,W=0,J=0,P=0,S=new Map;h(_.dbPath);let X=f(_.dbPath);try{let V=Math.max(U*3,20),Q=kW(X,j.and,V);if(Q.length===0&&j.or)Q=kW(X,j.or,V);W=Q.length,Q.forEach((Z,e)=>G0(S,VB(Z,XB(Z.rank,e))));let T=QB(X,I,Math.max(U,10)),B=TB(X,I,Math.max(U,10)),F=qB(_.legacyStorePath,I,Math.max(U,10));J=T.length+B.length,W+=F.length,F.forEach(({item:Z,score:e})=>G0(S,xW(Z,e))),T.forEach((Z)=>G0(S,FB(Z,I))),B.forEach((Z)=>G0(S,KB(Z,I)))}finally{X.close()}if(N)try{let V=await DI({dbPath:_.dbPath,query:$,limit:Math.max(U*3,20),config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,batchSize:_.batchSize,maxParallelCalls:_.maxParallelCalls});A=V.provider,L=V.model,z=V.dimensions,P=V.results.length;for(let Q of V.results){let T={kind:"source_chunk",id:Q.chunk_id,title:null,text:Q.text,score:0,scores:{semantic:GB(Q.score)},source:{uri:Q.source_uri,ref:Q.source_ref,kind:Q.provenance?.source_kind??null,revision:Q.revision,hash:Q.hash},citation:{chunk_id:Q.chunk_id,start_offset:Q.provenance?.start_offset??null,end_offset:Q.provenance?.end_offset??null},artifact:null,provenance:Q.provenance,reasons:["semantic_match"]};T.score=R0(T.scores,T.citation),G0(S,T)}}catch(V){O.push(`semantic_search_failed: ${V instanceof Error?V.message:String(V)}`)}let G=yW(Array.from(S.values())).slice(g,g+D);return{query:$,limit:D,offset:g,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:A,semantic_model:L,semantic_dimensions:z,counts:{keyword_results:W,catalog_results:J,semantic_results:P,merged_results:G.length},warnings:O,results:G}}async function jI(_){return j4(rW(_.legacyStorePath),_,["knowledge_db_missing"])}async function j4(_,$,D=[]){let g=$.query.trim();if(!g)throw Error("Search query is required.");let U=Math.max(1,Math.min($.limit??10,100)),I=Math.max(0,Math.floor($.offset??0)),j=vW(g),N=$.semantic===!0||$.fake===!0||Boolean($.modelRef),O=new Map,A=uW(_,j,Math.max(I+U,10));A.forEach(({item:W,score:J})=>G0(O,xW(W,J)));let L=[...D];if(N)L.push("semantic_search_requires_local_catalog");let z=yW(Array.from(O.values())).slice(I,I+U);return{query:g,limit:U,offset:I,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:A.length,catalog_results:0,semantic_results:0,merged_results:z.length},warnings:L,results:z}}function hW(_,$){return`${_}_${MB("sha256").update($).digest("hex").slice(0,20)}`}function cW(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function ZB(_){return Array.from(new Set(cW(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,16)}function bB(_){return[_.title,_.text].filter(Boolean).join(" ").toLowerCase()}function HB(_,$){if($.length===0)return 0;let D=bB(_),g=$.filter((U)=>D.includes(U)).length;return Number((g/$.length).toFixed(6))}function kB(_){if(!_)return!0;if("read_only"in _)return _.read_only===!0;if("read_only_sources"in _)return _.read_only_sources===!0;return!0}function nW(_){if(!_)return!1;if("stale"in _&&_.stale)return!0;if("status"in _)return S2(_.status);return!1}function CB(_){if(nW(_.provenance))return 0;if(_.source?.hash||_.source?.revision)return 1;if(_.artifact?.hash)return 0.85;if(_.provenance&&"source_refs"in _.provenance&&_.provenance.source_refs.length>0)return 0.75;return 0.55}function vB(_){if(_.citation?.chunk_id&&(_.source?.uri||_.artifact?.uri))return 1;if(_.provenance&&"citation_required"in _.provenance&&_.provenance.citation_required)return 0.75;if(_.artifact?.uri)return 0.65;return 0.35}function fB(_){if(_.kind==="wiki_chunk")return 0.85;if(_.kind==="source_chunk")return 0.8;if(_.kind==="legacy_item")return 0.6;if(_.kind==="wiki_page")return 0.65;return 0.55}function wB(_,$){let D={base_score:_.score,exact_score:HB(_,$),citation_score:vB(_),freshness_score:CB(_),authority_score:fB(_)},g=Math.min(1,D.base_score*0.65+D.exact_score*0.1+D.citation_score*0.1+D.freshness_score*0.1+D.authority_score*0.05),U=new Set(_.reasons);if(D.exact_score>0.5)U.add("exact_term");if(D.citation_score>=0.75)U.add("cited_source");if(D.freshness_score>=0.85)U.add("fresh_source");return{..._,score:Number(g.toFixed(6)),reasons:Array.from(U),rerank:{...D,final_score:Number(g.toFixed(6))}}}function dW(_,$){let D=_.text??_.title;if(!D)return null;let g=D.replace(/\s+/g," ").trim();return g.length<=$?g:`${g.slice(0,Math.max(0,$-1)).trim()}...`}function rB(_){return{id:hW("cite",`${_.kind}\x00${_.id}\x00${_.source?.uri??""}\x00${_.artifact?.uri??""}`),result_id:_.id,kind:_.kind,source_uri:_.source?.uri??null,source_ref:_.source?.ref??null,artifact_uri:_.artifact?.uri??null,artifact_path:_.artifact?.path??null,revision:_.source?.revision??null,hash:_.source?.hash??_.artifact?.hash??null,chunk_id:_.citation?.chunk_id??null,start_offset:_.citation?.start_offset??null,end_offset:_.citation?.end_offset??null,quote:dW(_,500),provenance:_.provenance}}function uB(_,$,D){let g=dW(_,D);if(!g)return null;return{id:hW("excerpt",`${_.kind}\x00${_.id}`),result_id:_.id,citation_id:$.id,kind:_.kind,text:g,score:_.score}}function NI(_){return _.map(()=>"?").join(", ")}function xB(_,$){let D=$.map((N)=>N.citation?.chunk_id).filter((N)=>Boolean(N)),g=$.filter((N)=>N.kind==="wiki_page").map((N)=>N.id),U=[],I=[];if(D.length===0&&g.length===0)return{citations:U,backlinks:I};let j=f(_);try{if(D.length>0)U.push(...j.query(`SELECT id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset FROM citations - WHERE chunk_id IN (${jI(g)}) + WHERE chunk_id IN (${NI(D)}) ORDER BY created_at DESC - LIMIT 50`).all(...g));if(U.length>0)D.push(...j.query(`SELECT id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset + LIMIT 50`).all(...D));if(g.length>0)U.push(...j.query(`SELECT id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset FROM citations - WHERE wiki_page_id IN (${jI(U)}) + WHERE wiki_page_id IN (${NI(g)}) ORDER BY created_at DESC - LIMIT 50`).all(...U)),I.push(...j.query(`SELECT from_page_id, to_page_id, label + LIMIT 50`).all(...g)),I.push(...j.query(`SELECT from_page_id, to_page_id, label FROM wiki_backlinks - WHERE from_page_id IN (${jI(U)}) OR to_page_id IN (${jI(U)}) - LIMIT 50`).all(...U,...U))}finally{j.close()}return{citations:D,backlinks:I}}function G0(_,$={}){let g=Math.max(200,Math.min($.contextChars??1200,4000)),U=Pq(_.query),D=[..._.warnings],I=new Set,j=new Set,O=_.results.filter((z)=>{if(!Wq(z.provenance))return D.push(`permission_filtered: ${z.kind}:${z.id}`),I.add("Dropped a result because provenance was not read-only."),!1;if(bW(z.provenance))return D.push(`stale_filtered: ${z.kind}:${z.id}`),j.add("Dropped a stale result whose source status requires reindexing."),!1;return!0}).map((z)=>Yq(z,U)).sort((z,W)=>W.score-z.score||z.id.localeCompare(W.id)).slice(0,_.limit),A=O.map(Qq),L=O.map((z,W)=>Tq(z,A[W],g)).filter((z)=>Boolean(z));for(let z of O){if(z.provenance&&"read_only"in z.provenance&&z.provenance.read_only)I.add("All source-backed excerpts are read-only and citation-required.");if(z.rerank.freshness_score>=0.85)j.add("Fresh source revision/hash or artifact hash is present for top context.")}return{query:_.query,normalized_query:ZW(_.query),created_at:new Date().toISOString(),mode:_.mode,warnings:D,search_counts:_.counts,results:O,citations:A,excerpts:L,graph:$.dbPath?qq($.dbPath,O):{citations:[],backlinks:[]},notes:{permissions:Array.from(I),freshness:Array.from(j)}}}async function Y0(_){let $=await UI(_);return G0($,{dbPath:_.dbPath,contextChars:_.contextChars})}async function NI(_,$){let g=await j4(_,$);return G0(g,{contextChars:$.contextChars})}function Q0(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function qE(_){return`C${_+1}`}function CW(_,$){if($.excerpts.length===0)return`No indexed knowledge matched the prompt: ${_}`;return[`Found ${$.excerpts.length} relevant knowledge excerpt(s) for: ${_}`,"",...$.excerpts.slice(0,5).map((U,D)=>{let I=$.citations.find((N)=>N.id===U.citation_id),j=I?.source_ref??I?.source_uri??I?.artifact_path??I?.artifact_uri??"unknown source";return`[${qE(D)}] ${U.text} (${j})`})].join(` -`)}function rW(_,$){let g=$.citations.map((D,I)=>({id:qE(I),source_ref:D.source_ref,source_uri:D.source_uri,artifact_path:D.artifact_path,revision:D.revision,hash:D.hash,quote:D.quote})),U=$.excerpts.map((D,I)=>({id:qE(I),kind:D.kind,text:D.text,score:D.score}));return[`Prompt: ${_}`,"","Use only the provided context. Cite claims with citation ids like [C1]. If context is insufficient, say what is missing.","",`Context excerpts: -${JSON.stringify(U,null,2)}`,"",`Citations: -${JSON.stringify(g,null,2)}`].join(` -`)}function vW(_,$){if($.citations.length===0)return[];return[{kind:"answer_note",title:_.length>80?`${_.slice(0,77)}...`:_,citations:$.citations.map((g)=>g.id),requires_approval:!0}]}function Bq(_,$){let g=v(_);try{g.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[$.runId,"knowledge-prompt",$.prompt,$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.now])}finally{g.close()}}function TE(_,$){let g=v(_);try{g.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${BE()}`,$.runId,$.level,$.event,JSON.stringify($.metadata),$.now])}finally{g.close()}}function kW(_,$){let g=v(_);try{g.run(`UPDATE runs + WHERE from_page_id IN (${NI(g)}) OR to_page_id IN (${NI(g)}) + LIMIT 50`).all(...g,...g))}finally{j.close()}return{citations:U,backlinks:I}}function Y0(_,$={}){let D=Math.max(200,Math.min($.contextChars??1200,4000)),g=ZB(_.query),U=[..._.warnings],I=new Set,j=new Set,O=_.results.filter((z)=>{if(!kB(z.provenance))return U.push(`permission_filtered: ${z.kind}:${z.id}`),I.add("Dropped a result because provenance was not read-only."),!1;if(nW(z.provenance))return U.push(`stale_filtered: ${z.kind}:${z.id}`),j.add("Dropped a stale result whose source status requires reindexing."),!1;return!0}).map((z)=>wB(z,g)).sort((z,W)=>W.score-z.score||z.id.localeCompare(W.id)).slice(0,_.limit),A=O.map(rB),L=O.map((z,W)=>uB(z,A[W],D)).filter((z)=>Boolean(z));for(let z of O){if(z.provenance&&"read_only"in z.provenance&&z.provenance.read_only)I.add("All source-backed excerpts are read-only and citation-required.");if(z.rerank.freshness_score>=0.85)j.add("Fresh source revision/hash or artifact hash is present for top context.")}return{query:_.query,normalized_query:cW(_.query),created_at:new Date().toISOString(),mode:_.mode,warnings:U,search_counts:_.counts,results:O,citations:A,excerpts:L,graph:$.dbPath?xB($.dbPath,O):{citations:[],backlinks:[]},notes:{permissions:Array.from(I),freshness:Array.from(j)}}}async function Q0(_){let $=await II(_);return Y0($,{dbPath:_.dbPath,contextChars:_.contextChars})}async function EI(_,$){let D=await j4(_,$);return Y0(D,{contextChars:$.contextChars})}function T0(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function H2(_){return`C${_+1}`}function iW(_,$){if($.excerpts.length===0)return`No indexed knowledge matched the prompt: ${_}`;return[`Found ${$.excerpts.length} relevant knowledge excerpt(s) for: ${_}`,"",...$.excerpts.slice(0,5).map((g,U)=>{let I=$.citations.find((N)=>N.id===g.citation_id),j=I?.source_ref??I?.source_uri??I?.artifact_path??I?.artifact_uri??"unknown source";return`[${H2(U)}] ${g.text} (${j})`})].join(` +`)}function lW(_,$){let D=$.citations.map((U,I)=>({id:H2(I),source_ref:U.source_ref,source_uri:U.source_uri,artifact_path:U.artifact_path,revision:U.revision,hash:U.hash,quote:U.quote})),g=$.excerpts.map((U,I)=>({id:H2(I),kind:U.kind,text:U.text,score:U.score}));return[`Prompt: ${_}`,"","Use only the provided context. Cite claims with citation ids like [C1]. If context is insufficient, say what is missing.","",`Context excerpts: +${JSON.stringify(g,null,2)}`,"",`Citations: +${JSON.stringify(D,null,2)}`].join(` +`)}function tW(_,$){if($.citations.length===0)return[];return[{kind:"answer_note",title:_.length>80?`${_.slice(0,77)}...`:_,citations:$.citations.map((D)=>D.id),requires_approval:!0}]}function yB(_,$){let D=f(_);try{D.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[$.runId,"knowledge-prompt",$.prompt,$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.now])}finally{D.close()}}function b2(_,$){let D=f(_);try{D.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${k2()}`,$.runId,$.level,$.event,JSON.stringify($.metadata),$.now])}finally{D.close()}}function mW(_,$){let D=f(_);try{D.run(`UPDATE runs SET status = ?, provider = ?, model = ?, metadata_json = ?, updated_at = ? - WHERE id = ?`,[$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.runId])}finally{g.close()}}function Kq(_,$,g,U,D,I,j={}){let N=v(_);try{W0(N,{run_id:$,provider:U,model:D,input_tokens:g.input_tokens,output_tokens:g.output_tokens,cost_usd:g.cost_usd,metadata:j,created_at:I})}finally{N.close()}}async function wW(_){let $=_.prompt.trim();if(!$)throw Error("Knowledge prompt is required.");let g=(_.now??new Date).toISOString(),U=`run_${BE()}`,D=G$(_.modelRef??"default",_.config),I=w_(D);h(_.dbPath),Bq(_.dbPath,{runId:U,prompt:$,status:_.generate?"running":"dry_run",provider:_.generate?I.provider:"local",model:_.generate?I.model:"context-draft",metadata:{semantic:_.semantic===!0||_.fake===!0||Boolean(_.modelRef),approve_write:_.approveWrite===!0,generated:_.generate===!0},now:g});let{prompt:j,generate:N,approveWrite:O,now:A,...L}=_,z=await Y0({...L,query:$});TE(_.dbPath,{runId:U,level:"info",event:"context_retrieved",metadata:{results:z.results.length,citations:z.citations.length,warnings:z.warnings},now:g});let W=CW($,z),J=!1,P="local",S="context-draft",X={input_tokens:Q0($)+z.excerpts.reduce((Q,T)=>Q+Q0(T.text),0),output_tokens:Q0(W),cost_usd:0},G=[...z.warnings];if(_.generate)try{if(_.fake)J=!0,P=I.provider,S=I.model,W=`Fake generated answer for: ${$} + WHERE id = ?`,[$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.runId])}finally{D.close()}}function hB(_,$,D,g,U,I,j={}){let N=f(_);try{X0(N,{run_id:$,provider:g,model:U,input_tokens:D.input_tokens,output_tokens:D.output_tokens,cost_usd:D.cost_usd,metadata:j,created_at:I})}finally{N.close()}}async function oW(_){let $=_.prompt.trim();if(!$)throw Error("Knowledge prompt is required.");let D=(_.now??new Date).toISOString(),g=`run_${k2()}`,U=R$(_.modelRef??"default",_.config),I=w_(U);h(_.dbPath),yB(_.dbPath,{runId:g,prompt:$,status:_.generate?"running":"dry_run",provider:_.generate?I.provider:"local",model:_.generate?I.model:"context-draft",metadata:{semantic:_.semantic===!0||_.fake===!0||Boolean(_.modelRef),approve_write:_.approveWrite===!0,generated:_.generate===!0},now:D});let{prompt:j,generate:N,approveWrite:O,now:A,...L}=_,z=await Q0({...L,query:$});b2(_.dbPath,{runId:g,level:"info",event:"context_retrieved",metadata:{results:z.results.length,citations:z.citations.length,warnings:z.warnings},now:D});let W=iW($,z),J=!1,P="local",S="context-draft",X={input_tokens:T0($)+z.excerpts.reduce((Q,T)=>Q+T0(T.text),0),output_tokens:T0(W),cost_usd:0},R=[...z.warnings];if(_.generate)try{if(_.fake)J=!0,P=I.provider,S=I.model,W=`Fake generated answer for: ${$} -${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:_.config,env:_.env}),q=await Q({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:rW($,z)});J=!0,P=I.provider,S=I.model,W=q.text;let V=U4({provider:P,model:S,usage:q.usage,providerMetadata:q.providerMetadata});X={input_tokens:V.input_tokens,output_tokens:V.output_tokens,cost_usd:V.cost_usd}}}catch(Q){throw TE(_.dbPath,{runId:U,level:"error",event:"answer_generation_failed",metadata:{message:Q instanceof Error?Q.message:String(Q)},now:g}),kW(_.dbPath,{runId:U,status:"failed",provider:I.provider,model:I.model,metadata:{generated:!1,error:Q instanceof Error?Q.message:String(Q)},now:g}),Q}let R=vW($,z),K={approved:_.approveWrite===!0,durable_writes_performed:!1,reason:_.approveWrite?"Approval flag recorded; durable wiki writing is deferred to the wiki compile task.":"Dry-run mode: proposed wiki updates require approval before durable writes."};return TE(_.dbPath,{runId:U,level:"info",event:J?"answer_generated":"answer_drafted",metadata:{provider:P,model:S,proposed_updates:R.length,durable_writes_performed:!1},now:g}),Kq(_.dbPath,U,X,P,S,g,{generated:J,citations:z.citations.length}),kW(_.dbPath,{runId:U,status:J?"completed":"dry_run",provider:P,model:S,metadata:{generated:J,citations:z.citations.length,proposed_updates:R.length,approve_write:_.approveWrite===!0},now:g}),{run_id:U,prompt:$,generated:J,provider:P,model:S,answer:W,context:z,citations:z.citations,proposed_wiki_updates:R,write_policy:K,usage:X,warnings:G}}async function fW(_,$){let g=$.prompt.trim();if(!g)throw Error("Knowledge prompt is required.");let U=`run_${BE()}`,D=G$($.modelRef??"default",$.config),I=w_(D),{prompt:j,generate:N,approveWrite:O,now:A,...L}=$,z=await NI(_,{...L,query:g}),W=CW(g,z),J=!1,P="local",S="context-draft",X={input_tokens:Q0(g)+z.excerpts.reduce((Q,T)=>Q+Q0(T.text),0),output_tokens:Q0(W),cost_usd:0},G=[...z.warnings];if($.generate)if($.fake)J=!0,P=I.provider,S=I.model,W=`Fake generated answer for: ${g} +${W}`;else{let{generateText:Q}=await import("ai"),T=await yD(U,{config:_.config,env:_.env}),B=await Q({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:lW($,z)});J=!0,P=I.provider,S=I.model,W=B.text;let F=g4({provider:P,model:S,usage:B.usage,providerMetadata:B.providerMetadata});X={input_tokens:F.input_tokens,output_tokens:F.output_tokens,cost_usd:F.cost_usd}}}catch(Q){throw b2(_.dbPath,{runId:g,level:"error",event:"answer_generation_failed",metadata:{message:Q instanceof Error?Q.message:String(Q)},now:D}),mW(_.dbPath,{runId:g,status:"failed",provider:I.provider,model:I.model,metadata:{generated:!1,error:Q instanceof Error?Q.message:String(Q)},now:D}),Q}let G=tW($,z),V={approved:_.approveWrite===!0,durable_writes_performed:!1,reason:_.approveWrite?"Approval flag recorded; durable wiki writing is deferred to the wiki compile task.":"Dry-run mode: proposed wiki updates require approval before durable writes."};return b2(_.dbPath,{runId:g,level:"info",event:J?"answer_generated":"answer_drafted",metadata:{provider:P,model:S,proposed_updates:G.length,durable_writes_performed:!1},now:D}),hB(_.dbPath,g,X,P,S,D,{generated:J,citations:z.citations.length}),mW(_.dbPath,{runId:g,status:J?"completed":"dry_run",provider:P,model:S,metadata:{generated:J,citations:z.citations.length,proposed_updates:G.length,approve_write:_.approveWrite===!0},now:D}),{run_id:g,prompt:$,generated:J,provider:P,model:S,answer:W,context:z,citations:z.citations,proposed_wiki_updates:G,write_policy:V,usage:X,warnings:R}}async function pW(_,$){let D=$.prompt.trim();if(!D)throw Error("Knowledge prompt is required.");let g=`run_${k2()}`,U=R$($.modelRef??"default",$.config),I=w_(U),{prompt:j,generate:N,approveWrite:O,now:A,...L}=$,z=await EI(_,{...L,query:D}),W=iW(D,z),J=!1,P="local",S="context-draft",X={input_tokens:T0(D)+z.excerpts.reduce((Q,T)=>Q+T0(T.text),0),output_tokens:T0(W),cost_usd:0},R=[...z.warnings];if($.generate)if($.fake)J=!0,P=I.provider,S=I.model,W=`Fake generated answer for: ${D} -${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config,env:$.env}),q=await Q({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:rW(g,z)});J=!0,P=I.provider,S=I.model,W=q.text;let V=U4({provider:P,model:S,usage:q.usage,providerMetadata:q.providerMetadata});X={input_tokens:V.input_tokens,output_tokens:V.output_tokens,cost_usd:V.cost_usd}}let R=vW(g,z),K={approved:$.approveWrite===!0,durable_writes_performed:!1,reason:$.approveWrite?"Approval flag recorded; durable wiki writes require the local catalog (wiki compile) and are not available in cloud mode.":"Dry-run mode: proposed wiki updates require approval before durable writes."};return{run_id:U,prompt:g,generated:J,provider:P,model:S,answer:W,context:z,citations:z.citations,proposed_wiki_updates:R,write_policy:K,usage:X,warnings:G}}import{createHash as Vq}from"crypto";var Fq=1200,Mq=6,Zq=12000,bq=50,uW=800;function q0(_,$,g=16){return`${_}_${Vq("sha256").update($).digest("hex").slice(0,g)}`}function VE(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function FE(_){return VE(_).toLowerCase()}function Hq(_){return Array.from(new Set(FE(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,24)}function g6(_,$){let g=VE(_);if(g.length<=$)return g;let U="...";if($<=U.length)return g.slice(0,Math.max(0,$));return`${g.slice(0,$-U.length).trim()}${U}`}function xW(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function ME(_){return/(?:api[_-]?key|secret|token|password|private[_-]?key|credential)/i.test(_)}function KE(_){return Object.keys(_).filter(($)=>!ME($)).sort().slice(0,12)}function kq(_,$){for(let g of $){if(ME(g))continue;let U=_[g];if(typeof U==="string"&&U.trim())return U.trim()}return null}function yg(_,$){if(!_)return null;let g=u_(_,$).text;try{let U=new URL(g),D=["token","access_token","api_key","apikey","key","secret","password","signature","sig"];for(let I of D)U.searchParams.delete(I);for(let[I]of U.searchParams)if(ME(I))U.searchParams.delete(I);return U.toString()}catch{return g}}function f$(_,$,g){return yg(kq(_,$),g)}function EI(_){let $=[];for(let g of KE(_).slice(0,6)){let U=_[g];if(typeof U==="string"&&U.trim())$.push(`${g}=${g6(U,80)}`);else if(typeof U==="number"||typeof U==="boolean")$.push(`${g}=${String(U)}`);else if(U&&typeof U==="object")$.push(`${g}={...}`)}return $.join("; ")}function Cq(_){if(!_.trim())return 0;return Math.max(1,Math.ceil(_.length/4))}function yW(_){return Cq(JSON.stringify(_))}function rq(_){if(!Number.isFinite(_??NaN))return Fq;let $=Math.floor(_);if($g.includes(D)).length;return Number((U/$.length).toFixed(6))}function wq(_){return["This pack is read-only and performs no durable writes.","Use citation ids and refs instead of pasting raw artifacts into prompts.","Resolve source or artifact refs explicitly only when raw content is needed and allowed.","Run generated knowledge writes through approval-gated commands before applying.",_==="loops"||_==="runs"?"Run evidence is summarized from knowledge run ledgers; raw run artifacts remain referenced, not embedded.":"Search evidence is derived from indexed chunks/wiki catalog rows with citation metadata."]}function fq(_,$,g){let U=yg($.source_ref,g),D=yg($.source_uri,g),I=yg($.artifact_uri,g),j=yg($.artifact_path,g),N=U??D??j??I??$.id,O=$.quote?T0($.quote,g,_<3?220:140):null;return{citation:{id:q0("cite",`${$.id}\x00${N}`,12),kind:$.artifact_uri||$.artifact_path?"artifact":"source",ref:N,source_ref:U,source_uri:D,artifact_uri:I,artifact_path:j,run_id:null,run_event_id:null,revision:$.revision??null,hash:$.hash??null,chunk_id:$.chunk_id??null,offsets:{start:$.start_offset??null,end:$.end_offset??null},quote_preview:O?.text??null},redactions:O?.redactions??0}}async function uq(_,$){let g=(_.query??_.topic??"").trim();if(!g)throw Error("Context pack query is required for search source.");let{config:U,dbPath:D,limit:I,semantic:j,modelRef:N,dimensions:O,fake:A,env:L,batchSize:z,maxParallelCalls:W,legacyStorePath:J}=_,P=await Y0({dbPath:D,config:U,legacyStorePath:J,query:g,limit:Math.max($,I??$),semantic:j,modelRef:N,dimensions:O,fake:A,env:L,batchSize:z,maxParallelCalls:W,contextChars:Math.min(_.contextChars??700,1200)}),S=new Map,X=0;P.citations.forEach((Q,T)=>{let q=fq(T,Q,_.safetyPolicy);X+=q.redactions,S.set(Q.id,q.citation)});let G=P.excerpts.slice(0,Math.max($*2,$)).map((Q)=>{let T=P.results.find((e)=>e.id===Q.result_id),q=Q.citation_id?S.get(Q.citation_id):null,V=T0(Q.text,_.safetyPolicy,520);X+=V.redactions;let Z=T?.title??q?.ref??Q.kind;return{id:q0("ev",`${Q.kind}\x00${Q.result_id}\x00${Q.citation_id??""}`,14),kind:Q.kind,title:g6(Z,100),text_preview:V.text,score:Number(Q.score.toFixed(6)),citation_ids:q?[q.id]:[],provenance:{source:"search",record_ref:`${Q.kind}:${Q.result_id}`,created_at:P.created_at,updated_at:null,metadata_keys:[]}}}),R=new Set(G.flatMap((Q)=>Q.citation_ids));return{citations:Array.from(S.values()).filter((Q)=>R.has(Q.id)),evidence:G,duplicateCandidates:[],redactions:X,warnings:P.warnings,available:P.excerpts.length}}function xq(_,$,g){if($)return _.query(`SELECT id, type, prompt, status, provider, model, cost_tokens, cost_usd, metadata_json, created_at, updated_at +${W}`;else{let{generateText:Q}=await import("ai"),T=await yD(U,{config:$.config,env:$.env}),B=await Q({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:lW(D,z)});J=!0,P=I.provider,S=I.model,W=B.text;let F=g4({provider:P,model:S,usage:B.usage,providerMetadata:B.providerMetadata});X={input_tokens:F.input_tokens,output_tokens:F.output_tokens,cost_usd:F.cost_usd}}let G=tW(D,z),V={approved:$.approveWrite===!0,durable_writes_performed:!1,reason:$.approveWrite?"Approval flag recorded; durable wiki writes require the local catalog (wiki compile) and are not available in cloud mode.":"Dry-run mode: proposed wiki updates require approval before durable writes."};return{run_id:g,prompt:D,generated:J,provider:P,model:S,answer:W,context:z,citations:z.citations,proposed_wiki_updates:G,write_policy:V,usage:X,warnings:R}}import{createHash as cB}from"crypto";var nB=1200,dB=6,mB=12000,iB=50,eW=800;function q0(_,$,D=16){return`${_}_${cB("sha256").update($).digest("hex").slice(0,D)}`}function v2(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function f2(_){return v2(_).toLowerCase()}function lB(_){return Array.from(new Set(f2(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,24)}function D6(_,$){let D=v2(_);if(D.length<=$)return D;let g="...";if($<=g.length)return D.slice(0,Math.max(0,$));return`${D.slice(0,$-g.length).trim()}${g}`}function aW(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function w2(_){return/(?:api[_-]?key|secret|token|password|private[_-]?key|credential)/i.test(_)}function C2(_){return Object.keys(_).filter(($)=>!w2($)).sort().slice(0,12)}function tB(_,$){for(let D of $){if(w2(D))continue;let g=_[D];if(typeof g==="string"&&g.trim())return g.trim()}return null}function hD(_,$){if(!_)return null;let D=u_(_,$).text;try{let g=new URL(D),U=["token","access_token","api_key","apikey","key","secret","password","signature","sig"];for(let I of U)g.searchParams.delete(I);for(let[I]of g.searchParams)if(w2(I))g.searchParams.delete(I);return g.toString()}catch{return D}}function r$(_,$,D){return hD(tB(_,$),D)}function OI(_){let $=[];for(let D of C2(_).slice(0,6)){let g=_[D];if(typeof g==="string"&&g.trim())$.push(`${D}=${D6(g,80)}`);else if(typeof g==="number"||typeof g==="boolean")$.push(`${D}=${String(g)}`);else if(g&&typeof g==="object")$.push(`${D}={...}`)}return $.join("; ")}function oB(_){if(!_.trim())return 0;return Math.max(1,Math.ceil(_.length/4))}function sW(_){return oB(JSON.stringify(_))}function pB(_){if(!Number.isFinite(_??NaN))return nB;let $=Math.floor(_);if($D.includes(U)).length;return Number((g/$.length).toFixed(6))}function aB(_){return["This pack is read-only and performs no durable writes.","Use citation ids and refs instead of pasting raw artifacts into prompts.","Resolve source or artifact refs explicitly only when raw content is needed and allowed.","Run generated knowledge writes through approval-gated commands before applying.",_==="loops"||_==="runs"?"Run evidence is summarized from knowledge run ledgers; raw run artifacts remain referenced, not embedded.":"Search evidence is derived from indexed chunks/wiki catalog rows with citation metadata."]}function sB(_,$,D){let g=hD($.source_ref,D),U=hD($.source_uri,D),I=hD($.artifact_uri,D),j=hD($.artifact_path,D),N=g??U??j??I??$.id,O=$.quote?B0($.quote,D,_<3?220:140):null;return{citation:{id:q0("cite",`${$.id}\x00${N}`,12),kind:$.artifact_uri||$.artifact_path?"artifact":"source",ref:N,source_ref:g,source_uri:U,artifact_uri:I,artifact_path:j,run_id:null,run_event_id:null,revision:$.revision??null,hash:$.hash??null,chunk_id:$.chunk_id??null,offsets:{start:$.start_offset??null,end:$.end_offset??null},quote_preview:O?.text??null},redactions:O?.redactions??0}}async function _q(_,$){let D=(_.query??_.topic??"").trim();if(!D)throw Error("Context pack query is required for search source.");let{config:g,dbPath:U,limit:I,semantic:j,modelRef:N,dimensions:O,fake:A,env:L,batchSize:z,maxParallelCalls:W,legacyStorePath:J}=_,P=await Q0({dbPath:U,config:g,legacyStorePath:J,query:D,limit:Math.max($,I??$),semantic:j,modelRef:N,dimensions:O,fake:A,env:L,batchSize:z,maxParallelCalls:W,contextChars:Math.min(_.contextChars??700,1200)}),S=new Map,X=0;P.citations.forEach((Q,T)=>{let B=sB(T,Q,_.safetyPolicy);X+=B.redactions,S.set(Q.id,B.citation)});let R=P.excerpts.slice(0,Math.max($*2,$)).map((Q)=>{let T=P.results.find((e)=>e.id===Q.result_id),B=Q.citation_id?S.get(Q.citation_id):null,F=B0(Q.text,_.safetyPolicy,520);X+=F.redactions;let Z=T?.title??B?.ref??Q.kind;return{id:q0("ev",`${Q.kind}\x00${Q.result_id}\x00${Q.citation_id??""}`,14),kind:Q.kind,title:D6(Z,100),text_preview:F.text,score:Number(Q.score.toFixed(6)),citation_ids:B?[B.id]:[],provenance:{source:"search",record_ref:`${Q.kind}:${Q.result_id}`,created_at:P.created_at,updated_at:null,metadata_keys:[]}}}),G=new Set(R.flatMap((Q)=>Q.citation_ids));return{citations:Array.from(S.values()).filter((Q)=>G.has(Q.id)),evidence:R,duplicateCandidates:[],redactions:X,warnings:P.warnings,available:P.excerpts.length}}function $q(_,$,D){if($)return _.query(`SELECT id, type, prompt, status, provider, model, cost_tokens, cost_usd, metadata_json, created_at, updated_at FROM runs WHERE updated_at >= ? OR created_at >= ? ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all($,$,g);return _.query(`SELECT id, type, prompt, status, provider, model, cost_tokens, cost_usd, metadata_json, created_at, updated_at + LIMIT ?`).all($,$,D);return _.query(`SELECT id, type, prompt, status, provider, model, cost_tokens, cost_usd, metadata_json, created_at, updated_at FROM runs ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all(g)}function yq(_,$,g){if($.length===0)return[];let U=$.map(()=>"?").join(", ");return _.query(`SELECT id, run_id, level, event, metadata_json, created_at + LIMIT ?`).all(D)}function Dq(_,$,D){if($.length===0)return[];let g=$.map(()=>"?").join(", ");return _.query(`SELECT id, run_id, level, event, metadata_json, created_at FROM run_events - WHERE run_id IN (${U}) + WHERE run_id IN (${g}) ORDER BY created_at DESC - LIMIT ?`).all(...$,g)}function hq(_,$){return`${_.type} ${_.metadata_json} ${$.map((U)=>`${U.event} ${U.metadata_json}`).join(" ")}`.toLowerCase().includes("loop")}function cq(_,$,g){let U=f$($,["source_ref","source_uri","evidence_uri","receipt_uri"],g),D=f$($,["artifact_uri"],g),I=f$($,["artifact_path","artifact_key"],g),j=U??D??I??`knowledge://project/runs/${_.id}`,N=_.prompt?T0(_.prompt,g,180).text:null;return{id:q0("cite",`run\x00${_.id}\x00${j}`,12),kind:D||I?"artifact":"run",ref:j,source_ref:U?.startsWith("open-files://")?U:null,source_uri:U&&!U.startsWith("open-files://")?U:null,artifact_uri:D,artifact_path:I,run_id:_.id,run_event_id:null,revision:f$($,["revision"],g),hash:f$($,["hash","content_hash"],g),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function nq(_,$,g){let U=f$($,["source_ref","source_uri","evidence_uri","receipt_uri"],g),D=f$($,["artifact_uri"],g),I=f$($,["artifact_path","artifact_key"],g),j=U??D??I??`knowledge://project/runs/${_.run_id}`,N=T0(_.event,g,160).text;return{id:q0("cite",`event\x00${_.id}\x00${j}`,12),kind:D||I?"artifact":"run_event",ref:j,source_ref:U?.startsWith("open-files://")?U:null,source_uri:U&&!U.startsWith("open-files://")?U:null,artifact_uri:D,artifact_path:I,run_id:_.run_id,run_event_id:_.id,revision:f$($,["revision"],g),hash:f$($,["hash","content_hash"],g),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function dW(_){let $=new Map;for(let g of _){let U=FE(`${g.title} ${g.text_preview}`).replace(/\b(?:file|https?|s3):\/\/\S+/g,"").replace(/\b(?:run|evt|task|loop)_[a-z0-9_]+\b/g,"").replace(/[^a-z0-9 ]+/g,"").replace(/\b(?:run|event|completed|dry_run|pending)\b/g,"").replace(/\s+/g," ").trim().slice(0,220);if(!U)continue;$.set(U,[...$.get(U)??[],g.id])}return Array.from($.entries()).filter(([,g])=>g.length>1).map(([g,U])=>({id:q0("dup",g,12),reason:"normalized_text_match",evidence_ids:U,confidence:U.length>2?"high":"medium"}))}async function dq(_,$,g){let U=_.source==="loops"?"loops":"runs",D=(_.topic??_.query??"").trim(),I=Hq(D),j=nW(_.since,g),N=j.warning?[j.warning]:[];h(_.dbPath);let O=v(_.dbPath);try{let A=xq(O,j.cutoff,Math.max($*8,40)),L=yq(O,A.map((G)=>G.id),Math.max($*12,80)),z=new Map;for(let G of L)z.set(G.run_id,[...z.get(G.run_id)??[],G]);let J=(U==="loops"?A.filter((G)=>hq(G,z.get(G.id)??[])):A).map((G)=>{let R=xW(G.metadata_json),K=`${G.type} ${G.status} ${G.prompt??""} ${EI(R)} ${(z.get(G.id)??[]).map((Q)=>`${Q.event} ${Q.metadata_json}`).join(" ")}`;return{row:G,metadata:R,score:hW(K,I),text:K}}).filter((G)=>I.length===0||G.score>0).sort((G,R)=>R.score-G.score||R.row.updated_at.localeCompare(G.row.updated_at)||G.row.id.localeCompare(R.row.id)),P=[],S=[],X=0;for(let G of J.slice(0,Math.max($*2,$))){let R=cq(G.row,G.metadata,_.safetyPolicy);P.push(R);let K=EI(G.metadata),Q=[G.row.prompt,K].filter(Boolean).join(" | ")||`${G.row.type} ${G.row.status}`,T=T0(Q,_.safetyPolicy,420);X+=T.redactions,S.push({id:`run:${G.row.id}`,kind:G.row.type,title:g6(`${G.row.type}: ${G.row.status}`,100),text_preview:T.text,score:G.score,citation_ids:[R.id],provenance:{source:U,record_ref:`knowledge://project/runs/${G.row.id}`,created_at:G.row.created_at,updated_at:G.row.updated_at,metadata_keys:KE(G.metadata)}});let q=(z.get(G.row.id)??[]).map((V)=>{let Z=xW(V.metadata_json),e=`${V.event} ${EI(Z)} ${V.metadata_json}`;return{event:V,metadata:Z,score:hW(e,I),text:e}}).filter((V)=>I.length===0||V.score>0).sort((V,Z)=>Z.score-V.score||Z.event.created_at.localeCompare(V.event.created_at)||V.event.id.localeCompare(Z.event.id)).slice(0,2);for(let V of q){let Z=nq(V.event,V.metadata,_.safetyPolicy);P.push(Z);let e=T0(`${V.event}: ${EI(V.metadata)}`,_.safetyPolicy,320);X+=e.redactions,S.push({id:`event:${V.event.id}`,kind:`run_event:${V.event.level}`,title:g6(V.event.event,100),text_preview:e.text,score:V.score,citation_ids:[Z.id],provenance:{source:U,record_ref:`knowledge://project/runs/${V.event.run_id}`,created_at:V.event.created_at,updated_at:null,metadata_keys:KE(V.metadata)}})}}return{citations:P,evidence:S,duplicateCandidates:_.dedupe?dW(S):[],redactions:X,warnings:N,available:J.length}}finally{O.close()}}function mq(_){let $=_.purpose==="proposal"?`Proposal context: ${g6(_.query||"loop evidence",80)}`:`Knowledge context: ${g6(_.query,80)}`,g=_.evidence.slice(0,8).map((I)=>I.id),U=_.duplicates.slice(0,5).map((I)=>I.id),D=_.evidence.slice(0,5).map((I)=>`${I.id}: ${I.title}`);if(_.evidence.length===0)D.push("No matching bounded evidence was found.");return{title:$,bullets:D,evidence_ids:g,duplicate_candidate_ids:U,next_actions:_.source==="loops"?["Review duplicate_candidates before drafting a new proposal.","Use cited run refs for provenance; inspect a run only when more detail is needed.","Keep proposal writes approval-gated and idempotent."]:["Use evidence_ids and citation_ids in prompts instead of raw excerpts when possible.","Inspect cited refs only if the bounded preview is insufficient.","Use knowledge build/file-answer only with explicit approval for durable writes."]}}function mW(_){let $=new Set(_.evidence.flatMap((g)=>g.citation_ids));_.citations=_.citations.filter((g)=>$.has(g.id))}function cW(_){_.outline.evidence_ids=_.evidence.slice(0,8).map(($)=>$.id),_.outline.bullets=_.evidence.length>0?_.evidence.slice(0,5).map(($)=>`${$.id}: ${$.title}`):["No matching bounded evidence was found."],_.outline.duplicate_candidate_ids=_.duplicate_candidates.slice(0,5).map(($)=>$.id)}function iq(_){let $=_.budgets.max_tokens,g=new Set(_.warnings);while(yW(_)>$){let U=_.evidence.map((I,j)=>({entry:I,index:j})).filter(({entry:I})=>I.text_preview.length>180).sort((I,j)=>j.entry.text_preview.length-I.entry.text_preview.length)[0];if(U){U.entry.text_preview=g6(U.entry.text_preview,180),g.add("text_preview_truncated_for_token_budget");continue}let D=_.citations.filter((I)=>(I.quote_preview?.length??0)>120).sort((I,j)=>(j.quote_preview?.length??0)-(I.quote_preview?.length??0))[0];if(D?.quote_preview){D.quote_preview=g6(D.quote_preview,120),g.add("citation_quote_truncated_for_token_budget");continue}if(_.evidence.length>0){_.evidence.pop(),_.budgets.items_truncated+=1,_.duplicate_candidates=_.duplicate_candidates.map((I)=>({...I,evidence_ids:I.evidence_ids.filter((j)=>_.evidence.some((N)=>N.id===j))})).filter((I)=>I.evidence_ids.length>1),cW(_),g.add("evidence_truncated_for_token_budget"),mW(_);continue}if(_.outline.next_actions.length>1){_.outline.next_actions.pop(),g.add("outline_truncated_for_token_budget");continue}g.add("token_budget_floor_exceeded");break}if(_.warnings=Array.from(g).sort(),_.budgets.items_included=_.evidence.length,cW(_),_.budgets.estimated_tokens=yW(_),_.budgets.token_budget_exceeded=_.budgets.estimated_tokens>$,_.budgets.token_budget_exceeded)throw Error(`Unable to build context pack within ${$} token budget; increase --max-tokens.`);return _.message=`${_.evidence.length} bounded evidence item(s), estimated ${_.budgets.estimated_tokens}/${$} token(s)`,_}async function iW(_){let $=_.now??new Date,g=_.source??"search",U=_.purpose??(g==="loops"||g==="runs"?"proposal":"agent_context"),D=rq(_.maxTokens),I=vq(_.maxItems,_.limit),j=VE(_.query??_.topic??"");if(U==="proposal"&&g!=="search"&&!j)throw Error("Proposal context requires --topic or a positional topic.");if(g!=="search")h(_.dbPath);let N=nW(_.since,$).cutoff??_.since??"",O=g==="search"?await uq(_,I):await dq(_,I,$),A=O.evidence.sort((P,S)=>S.score-P.score||P.id.localeCompare(S.id)).slice(0,I),L=O.citations.filter((P,S,X)=>X.findIndex((G)=>G.id===P.id)===S).sort((P,S)=>P.id.localeCompare(S.id)),z=_.dedupe?dW(A):O.duplicateCandidates.filter((P)=>P.evidence_ids.every((S)=>A.some((X)=>X.id===S))),W=mq({source:g,purpose:U,query:j,evidence:A,duplicates:z}),J={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:g,purpose:U,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:q0("ctx",[g,U,j,N,_.dedupe===!0?"dedupe":"no-dedupe",_.semantic===!0?"semantic":"keyword",_.modelRef??"",_.limit??"",D,I,A.map((P)=>P.id).join(","),L.map((P)=>P.id).join(",")].join("\x00"),20),budgets:{max_tokens:D,estimated_tokens:0,max_items:I,items_included:A.length,items_available:O.available,items_truncated:Math.max(0,O.available-A.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:O.redactions,reminders:wq(g)},citations:L,evidence:A,duplicate_candidates:z,outline:W,warnings:O.warnings,message:`${A.length} bounded evidence item(s), estimated under ${D} token(s)`};return mW(J),iq(J)}import{randomUUID as WR}from"crypto";import{createHash as lq,randomUUID as tq}from"crypto";import{existsSync as oq,readFileSync as pq}from"fs";import{hostname as aW}from"os";import{fileURLToPath as sW}from"url";import{extname as eq,relative as _X,resolve as lW,sep as aq}from"path";var LI=["sources","wiki_pages","source_revisions","chunks","chunk_embeddings","wiki_backlinks","citations","knowledge_indexes","runs","run_events","provider_usage","redaction_findings","storage_objects","audit_events","approval_gates","vector_index_entries","reindex_queue","knowledge_machines","knowledge_sync_snapshots","knowledge_sync_changes","knowledge_sync_conflicts","knowledge_sync_table_clocks","knowledge_sync_imports"],V6=2,F6=1,mg={sources:["id"],wiki_pages:["id"],source_revisions:["id"],chunks:["id"],chunk_embeddings:["id"],wiki_backlinks:["from_page_id","to_page_id"],citations:["id"],knowledge_indexes:["id"],runs:["id"],run_events:["id"],provider_usage:["id"],redaction_findings:["id"],storage_objects:["id"],audit_events:["id"],approval_gates:["id"],vector_index_entries:["id"],reindex_queue:["id"],knowledge_machines:["machine_id"],knowledge_sync_snapshots:["id"],knowledge_sync_changes:["id"],knowledge_sync_conflicts:["id"],knowledge_sync_table_clocks:["table_name","machine_id"],knowledge_sync_imports:["bundle_id"]},ig=new Set(["storage_objects","knowledge_sync_changes","knowledge_sync_table_clocks","knowledge_sync_imports"]);function u$(_=new Date){return _.toISOString()}function rE(_){return`${_}_${Date.now().toString(36)}_${tq().slice(0,8)}`}function $X(_){let $=_?.trim();if($)return $;return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??aW()}function K0(_){if(Array.isArray(_))return`[${_.map(K0).join(",")}]`;if(_&&typeof _==="object"){let $=_;return`{${Object.keys($).sort().map((g)=>`${JSON.stringify(g)}:${K0($[g])}`).join(",")}}`}return JSON.stringify(_)}function cg(_){return`sha256:${lq("sha256").update(_).digest("hex")}`}function OI(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function PI(_,$){try{return JSON.parse(_)}catch{return $}}function j$(_){return`"${_.replace(/"/g,'""')}"`}function sq(_){if(_===void 0||_===null)return null;if(typeof _==="string"||typeof _==="number"||typeof _==="bigint"||typeof _==="boolean")return _;if(_ instanceof Date)return _.toISOString();if(Buffer.isBuffer(_)||_ instanceof Uint8Array)return _;if(typeof _==="object")return JSON.stringify(_);return String(_)}function gX(_,$){return $.filter((g)=>J$(_,g))}function J$(_,$){let g=_.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get($);return Boolean(g)}function _B(_,$){let g=_.query(`PRAGMA table_info(${j$($)})`).all();return new Set(g.map((U)=>U.name))}function $B(_,$,g){let U=_B(_,$);return g.filter((D)=>U.has(D))}function DX(_){if(!_||_.length===0)return[...LI];let $=new Set(LI),g=_.map((D)=>D.trim()).filter(Boolean),U=g.filter((D)=>!$.has(D));if(U.length>0)throw Error(`Unknown knowledge sync table(s): ${U.join(", ")}`);return g}function E4(_,$){return mg[_].map((U)=>`${U}=${JSON.stringify($[U]??null)}`).join("&")}var gB=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body_bytes"]);function ng(_,$=0){if($>8)return"[truncated-depth]";if(typeof _==="string")return _.length>4000?`${_.slice(0,4000)}...[truncated]`:_;if(_===null||typeof _!=="object")return _;if(Array.isArray(_))return _.slice(0,50).map((U)=>ng(U,$+1));let g={};for(let[U,D]of Object.entries(_)){if(gB.has(U.toLowerCase()))continue;g[U]=ng(D,$+1)}return g}function hg(_){if(!_)return null;return ng(_)}function vE(_){return cg(K0(_))}function DB(_,$){let g={};for(let[U,D]of Object.entries(_))if(U==="artifact_uri"&&typeof D==="string"&&$.has(D))g[U]=`artifact:${$.get(D)}`;else g[U]=D;return g}function N4(_,$=new Map){return vE(DB(_,$))}function UX(_,$){if(!J$(_,$))return[];return _.query(`SELECT * FROM ${j$($)} ORDER BY rowid ASC`).all()}function JI(_,$,g=new Map){return vE($.map((U)=>({key:E4(_,U),hash:N4(U,g)})).sort((U,D)=>U.key.localeCompare(D.key)))}function dg(_,$,g){return _.query("SELECT * FROM knowledge_sync_table_clocks WHERE table_name = ? AND machine_id = ?").get($,g)??null}function UB(_){if(!J$(_,"knowledge_sync_table_clocks"))return[];return _.query("SELECT * FROM knowledge_sync_table_clocks ORDER BY table_name ASC, machine_id ASC").all()}function zI(_,$){let g=$.now??u$(),D=dg(_,$.table,$.machineId)?.created_at??g;_.query(` + LIMIT ?`).all(...$,D)}function Uq(_,$){return`${_.type} ${_.metadata_json} ${$.map((g)=>`${g.event} ${g.metadata_json}`).join(" ")}`.toLowerCase().includes("loop")}function gq(_,$,D){let g=r$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=r$($,["artifact_uri"],D),I=r$($,["artifact_path","artifact_key"],D),j=g??U??I??`knowledge://project/runs/${_.id}`,N=_.prompt?B0(_.prompt,D,180).text:null;return{id:q0("cite",`run\x00${_.id}\x00${j}`,12),kind:U||I?"artifact":"run",ref:j,source_ref:g?.startsWith("open-files://")?g:null,source_uri:g&&!g.startsWith("open-files://")?g:null,artifact_uri:U,artifact_path:I,run_id:_.id,run_event_id:null,revision:r$($,["revision"],D),hash:r$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function Iq(_,$,D){let g=r$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=r$($,["artifact_uri"],D),I=r$($,["artifact_path","artifact_key"],D),j=g??U??I??`knowledge://project/runs/${_.run_id}`,N=B0(_.event,D,160).text;return{id:q0("cite",`event\x00${_.id}\x00${j}`,12),kind:U||I?"artifact":"run_event",ref:j,source_ref:g?.startsWith("open-files://")?g:null,source_uri:g&&!g.startsWith("open-files://")?g:null,artifact_uri:U,artifact_path:I,run_id:_.run_id,run_event_id:_.id,revision:r$($,["revision"],D),hash:r$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function UX(_){let $=new Map;for(let D of _){let g=f2(`${D.title} ${D.text_preview}`).replace(/\b(?:file|https?|s3):\/\/\S+/g,"").replace(/\b(?:run|evt|task|loop)_[a-z0-9_]+\b/g,"").replace(/[^a-z0-9 ]+/g,"").replace(/\b(?:run|event|completed|dry_run|pending)\b/g,"").replace(/\s+/g," ").trim().slice(0,220);if(!g)continue;$.set(g,[...$.get(g)??[],D.id])}return Array.from($.entries()).filter(([,D])=>D.length>1).map(([D,g])=>({id:q0("dup",D,12),reason:"normalized_text_match",evidence_ids:g,confidence:g.length>2?"high":"medium"}))}async function jq(_,$,D){let g=_.source==="loops"?"loops":"runs",U=(_.topic??_.query??"").trim(),I=lB(U),j=DX(_.since,D),N=j.warning?[j.warning]:[];h(_.dbPath);let O=f(_.dbPath);try{let A=$q(O,j.cutoff,Math.max($*8,40)),L=Dq(O,A.map((R)=>R.id),Math.max($*12,80)),z=new Map;for(let R of L)z.set(R.run_id,[...z.get(R.run_id)??[],R]);let J=(g==="loops"?A.filter((R)=>Uq(R,z.get(R.id)??[])):A).map((R)=>{let G=aW(R.metadata_json),V=`${R.type} ${R.status} ${R.prompt??""} ${OI(G)} ${(z.get(R.id)??[]).map((Q)=>`${Q.event} ${Q.metadata_json}`).join(" ")}`;return{row:R,metadata:G,score:_X(V,I),text:V}}).filter((R)=>I.length===0||R.score>0).sort((R,G)=>G.score-R.score||G.row.updated_at.localeCompare(R.row.updated_at)||R.row.id.localeCompare(G.row.id)),P=[],S=[],X=0;for(let R of J.slice(0,Math.max($*2,$))){let G=gq(R.row,R.metadata,_.safetyPolicy);P.push(G);let V=OI(R.metadata),Q=[R.row.prompt,V].filter(Boolean).join(" | ")||`${R.row.type} ${R.row.status}`,T=B0(Q,_.safetyPolicy,420);X+=T.redactions,S.push({id:`run:${R.row.id}`,kind:R.row.type,title:D6(`${R.row.type}: ${R.row.status}`,100),text_preview:T.text,score:R.score,citation_ids:[G.id],provenance:{source:g,record_ref:`knowledge://project/runs/${R.row.id}`,created_at:R.row.created_at,updated_at:R.row.updated_at,metadata_keys:C2(R.metadata)}});let B=(z.get(R.row.id)??[]).map((F)=>{let Z=aW(F.metadata_json),e=`${F.event} ${OI(Z)} ${F.metadata_json}`;return{event:F,metadata:Z,score:_X(e,I),text:e}}).filter((F)=>I.length===0||F.score>0).sort((F,Z)=>Z.score-F.score||Z.event.created_at.localeCompare(F.event.created_at)||F.event.id.localeCompare(Z.event.id)).slice(0,2);for(let F of B){let Z=Iq(F.event,F.metadata,_.safetyPolicy);P.push(Z);let e=B0(`${F.event}: ${OI(F.metadata)}`,_.safetyPolicy,320);X+=e.redactions,S.push({id:`event:${F.event.id}`,kind:`run_event:${F.event.level}`,title:D6(F.event.event,100),text_preview:e.text,score:F.score,citation_ids:[Z.id],provenance:{source:g,record_ref:`knowledge://project/runs/${F.event.run_id}`,created_at:F.event.created_at,updated_at:null,metadata_keys:C2(F.metadata)}})}}return{citations:P,evidence:S,duplicateCandidates:_.dedupe?UX(S):[],redactions:X,warnings:N,available:J.length}}finally{O.close()}}function Nq(_){let $=_.purpose==="proposal"?`Proposal context: ${D6(_.query||"loop evidence",80)}`:`Knowledge context: ${D6(_.query,80)}`,D=_.evidence.slice(0,8).map((I)=>I.id),g=_.duplicates.slice(0,5).map((I)=>I.id),U=_.evidence.slice(0,5).map((I)=>`${I.id}: ${I.title}`);if(_.evidence.length===0)U.push("No matching bounded evidence was found.");return{title:$,bullets:U,evidence_ids:D,duplicate_candidate_ids:g,next_actions:_.source==="loops"?["Review duplicate_candidates before drafting a new proposal.","Use cited run refs for provenance; inspect a run only when more detail is needed.","Keep proposal writes approval-gated and idempotent."]:["Use evidence_ids and citation_ids in prompts instead of raw excerpts when possible.","Inspect cited refs only if the bounded preview is insufficient.","Use knowledge build/file-answer only with explicit approval for durable writes."]}}function gX(_){let $=new Set(_.evidence.flatMap((D)=>D.citation_ids));_.citations=_.citations.filter((D)=>$.has(D.id))}function $X(_){_.outline.evidence_ids=_.evidence.slice(0,8).map(($)=>$.id),_.outline.bullets=_.evidence.length>0?_.evidence.slice(0,5).map(($)=>`${$.id}: ${$.title}`):["No matching bounded evidence was found."],_.outline.duplicate_candidate_ids=_.duplicate_candidates.slice(0,5).map(($)=>$.id)}function Eq(_){let $=_.budgets.max_tokens,D=new Set(_.warnings);while(sW(_)>$){let g=_.evidence.map((I,j)=>({entry:I,index:j})).filter(({entry:I})=>I.text_preview.length>180).sort((I,j)=>j.entry.text_preview.length-I.entry.text_preview.length)[0];if(g){g.entry.text_preview=D6(g.entry.text_preview,180),D.add("text_preview_truncated_for_token_budget");continue}let U=_.citations.filter((I)=>(I.quote_preview?.length??0)>120).sort((I,j)=>(j.quote_preview?.length??0)-(I.quote_preview?.length??0))[0];if(U?.quote_preview){U.quote_preview=D6(U.quote_preview,120),D.add("citation_quote_truncated_for_token_budget");continue}if(_.evidence.length>0){_.evidence.pop(),_.budgets.items_truncated+=1,_.duplicate_candidates=_.duplicate_candidates.map((I)=>({...I,evidence_ids:I.evidence_ids.filter((j)=>_.evidence.some((N)=>N.id===j))})).filter((I)=>I.evidence_ids.length>1),$X(_),D.add("evidence_truncated_for_token_budget"),gX(_);continue}if(_.outline.next_actions.length>1){_.outline.next_actions.pop(),D.add("outline_truncated_for_token_budget");continue}D.add("token_budget_floor_exceeded");break}if(_.warnings=Array.from(D).sort(),_.budgets.items_included=_.evidence.length,$X(_),_.budgets.estimated_tokens=sW(_),_.budgets.token_budget_exceeded=_.budgets.estimated_tokens>$,_.budgets.token_budget_exceeded)throw Error(`Unable to build context pack within ${$} token budget; increase --max-tokens.`);return _.message=`${_.evidence.length} bounded evidence item(s), estimated ${_.budgets.estimated_tokens}/${$} token(s)`,_}async function IX(_){let $=_.now??new Date,D=_.source??"search",g=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=pB(_.maxTokens),I=eB(_.maxItems,_.limit),j=v2(_.query??_.topic??"");if(g==="proposal"&&D!=="search"&&!j)throw Error("Proposal context requires --topic or a positional topic.");if(D!=="search")h(_.dbPath);let N=DX(_.since,$).cutoff??_.since??"",O=D==="search"?await _q(_,I):await jq(_,I,$),A=O.evidence.sort((P,S)=>S.score-P.score||P.id.localeCompare(S.id)).slice(0,I),L=O.citations.filter((P,S,X)=>X.findIndex((R)=>R.id===P.id)===S).sort((P,S)=>P.id.localeCompare(S.id)),z=_.dedupe?UX(A):O.duplicateCandidates.filter((P)=>P.evidence_ids.every((S)=>A.some((X)=>X.id===S))),W=Nq({source:D,purpose:g,query:j,evidence:A,duplicates:z}),J={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:D,purpose:g,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:q0("ctx",[D,g,j,N,_.dedupe===!0?"dedupe":"no-dedupe",_.semantic===!0?"semantic":"keyword",_.modelRef??"",_.limit??"",U,I,A.map((P)=>P.id).join(","),L.map((P)=>P.id).join(",")].join("\x00"),20),budgets:{max_tokens:U,estimated_tokens:0,max_items:I,items_included:A.length,items_available:O.available,items_truncated:Math.max(0,O.available-A.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:O.redactions,reminders:aB(D)},citations:L,evidence:A,duplicate_candidates:z,outline:W,warnings:O.warnings,message:`${A.length} bounded evidence item(s), estimated under ${U} token(s)`};return gX(J),Eq(J)}import{randomUUID as Z9}from"crypto";import{createHash as Oq,randomUUID as Aq}from"crypto";import{existsSync as Lq,readFileSync as Jq}from"fs";import{hostname as LX}from"os";import{fileURLToPath as JX}from"url";import{extname as Pq,relative as PX,resolve as jX,sep as zq}from"path";var JI=["sources","wiki_pages","source_revisions","chunks","chunk_embeddings","wiki_backlinks","citations","knowledge_indexes","runs","run_events","provider_usage","redaction_findings","storage_objects","audit_events","approval_gates","vector_index_entries","reindex_queue","knowledge_machines","knowledge_sync_snapshots","knowledge_sync_changes","knowledge_sync_conflicts","knowledge_sync_table_clocks","knowledge_sync_imports"],F6=2,K6=1,iD={sources:["id"],wiki_pages:["id"],source_revisions:["id"],chunks:["id"],chunk_embeddings:["id"],wiki_backlinks:["from_page_id","to_page_id"],citations:["id"],knowledge_indexes:["id"],runs:["id"],run_events:["id"],provider_usage:["id"],redaction_findings:["id"],storage_objects:["id"],audit_events:["id"],approval_gates:["id"],vector_index_entries:["id"],reindex_queue:["id"],knowledge_machines:["machine_id"],knowledge_sync_snapshots:["id"],knowledge_sync_changes:["id"],knowledge_sync_conflicts:["id"],knowledge_sync_table_clocks:["table_name","machine_id"],knowledge_sync_imports:["bundle_id"]},lD=new Set(["storage_objects","knowledge_sync_changes","knowledge_sync_table_clocks","knowledge_sync_imports"]);function u$(_=new Date){return _.toISOString()}function c2(_){return`${_}_${Date.now().toString(36)}_${Aq().slice(0,8)}`}function zX(_){let $=_?.trim();if($)return $;return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??LX()}function F0(_){if(Array.isArray(_))return`[${_.map(F0).join(",")}]`;if(_&&typeof _==="object"){let $=_;return`{${Object.keys($).sort().map((D)=>`${JSON.stringify(D)}:${F0($[D])}`).join(",")}}`}return JSON.stringify(_)}function nD(_){return`sha256:${Oq("sha256").update(_).digest("hex")}`}function AI(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function zI(_,$){try{return JSON.parse(_)}catch{return $}}function j$(_){return`"${_.replace(/"/g,'""')}"`}function Sq(_){if(_===void 0||_===null)return null;if(typeof _==="string"||typeof _==="number"||typeof _==="bigint"||typeof _==="boolean")return _;if(_ instanceof Date)return _.toISOString();if(Buffer.isBuffer(_)||_ instanceof Uint8Array)return _;if(typeof _==="object")return JSON.stringify(_);return String(_)}function SX(_,$){return $.filter((D)=>J$(_,D))}function J$(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get($);return Boolean(D)}function Wq(_,$){let D=_.query(`PRAGMA table_info(${j$($)})`).all();return new Set(D.map((g)=>g.name))}function Xq(_,$,D){let g=Wq(_,$);return D.filter((U)=>g.has(U))}function WX(_){if(!_||_.length===0)return[...JI];let $=new Set(JI),D=_.map((U)=>U.trim()).filter(Boolean),g=D.filter((U)=>!$.has(U));if(g.length>0)throw Error(`Unknown knowledge sync table(s): ${g.join(", ")}`);return D}function E4(_,$){return iD[_].map((g)=>`${g}=${JSON.stringify($[g]??null)}`).join("&")}var Gq=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body_bytes"]);function dD(_,$=0){if($>8)return"[truncated-depth]";if(typeof _==="string")return _.length>4000?`${_.slice(0,4000)}...[truncated]`:_;if(_===null||typeof _!=="object")return _;if(Array.isArray(_))return _.slice(0,50).map((g)=>dD(g,$+1));let D={};for(let[g,U]of Object.entries(_)){if(Gq.has(g.toLowerCase()))continue;D[g]=dD(U,$+1)}return D}function cD(_){if(!_)return null;return dD(_)}function n2(_){return nD(F0(_))}function Rq(_,$){let D={};for(let[g,U]of Object.entries(_))if(g==="artifact_uri"&&typeof U==="string"&&$.has(U))D[g]=`artifact:${$.get(U)}`;else D[g]=U;return D}function N4(_,$=new Map){return n2(Rq(_,$))}function XX(_,$){if(!J$(_,$))return[];return _.query(`SELECT * FROM ${j$($)} ORDER BY rowid ASC`).all()}function PI(_,$,D=new Map){return n2($.map((g)=>({key:E4(_,g),hash:N4(g,D)})).sort((g,U)=>g.key.localeCompare(U.key)))}function mD(_,$,D){return _.query("SELECT * FROM knowledge_sync_table_clocks WHERE table_name = ? AND machine_id = ?").get($,D)??null}function Yq(_){if(!J$(_,"knowledge_sync_table_clocks"))return[];return _.query("SELECT * FROM knowledge_sync_table_clocks ORDER BY table_name ASC, machine_id ASC").all()}function SI(_,$){let D=$.now??u$(),U=mD(_,$.table,$.machineId)?.created_at??D;_.query(` INSERT INTO knowledge_sync_table_clocks ( table_name, machine_id, logical_clock, high_water_hash, high_water_bundle_id, origin_machine_id, updated_by_machine_id, last_applied_at, metadata_json, @@ -843,17 +843,17 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, last_applied_at = excluded.last_applied_at, metadata_json = excluded.metadata_json, updated_at = excluded.updated_at - `).run($.table,$.machineId,$.logicalClock,$.highWaterHash,$.highWaterBundleId??null,$.originMachineId??$.machineId,$.updatedByMachineId??$.machineId,$.lastAppliedAt??g,JSON.stringify($.metadata??{}),D,g);let I=dg(_,$.table,$.machineId);if(!I)throw Error(`Failed to record sync clock for ${$.table}:${$.machineId}`);return I}function IB(_,$){let g=dg(_,$.table,$.machineId),U=g?.high_water_hash===$.highWaterHash?g.logical_clock:(g?.logical_clock??0)+1,D=$.record?zI(_,{table:$.table,machineId:$.machineId,logicalClock:U,highWaterHash:$.highWaterHash,highWaterBundleId:null,originMachineId:g?.origin_machine_id??$.machineId,updatedByMachineId:$.machineId,lastAppliedAt:$.now,metadata:{source:"export",row_count:$.rowCount},now:$.now}):{table_name:$.table,machine_id:$.machineId,logical_clock:U,high_water_hash:$.highWaterHash,high_water_bundle_id:g?.high_water_bundle_id??null,origin_machine_id:g?.origin_machine_id??$.machineId,updated_by_machine_id:$.machineId,last_applied_at:$.now,metadata_json:"{}",created_at:g?.created_at??$.now,updated_at:$.now};return{table:$.table,machine_id:$.machineId,logical_clock:D.logical_clock,high_water_hash:$.highWaterHash,high_water_bundle_id:D.high_water_bundle_id,row_count:$.rowCount,updated_at:D.updated_at}}function jB(_,$,g,U,D){if($.high_water_bundle_id=g,!U)return;zI(_,{table:$.table,machineId:$.machine_id,logicalClock:$.logical_clock,highWaterHash:$.high_water_hash,highWaterBundleId:g,originMachineId:$.machine_id,updatedByMachineId:$.machine_id,lastAppliedAt:D,metadata:{source:"export",row_count:$.row_count},now:D})}function IX(_,$){return _.table_clocks?.find((g)=>g.table===$)??null}function NB(_,$){if(!_||!$)return!1;return $.logical_clock<_.logical_clock}function EB(_,$,g){if(g.length===0)return 0;let U=$B(_,$,Object.keys(g[0]));if(U.length===0)return 0;let D=mg[$],I=U.map(j$).join(", "),j=U.map(()=>"?").join(", "),N=D.map(j$).join(", "),O=U.filter((J)=>!D.includes(J)),A=D[0],L=O.length>0?O.map((J)=>`${j$(J)} = excluded.${j$(J)}`).join(", "):`${j$(A)} = excluded.${j$(A)}`,z=_.query(`INSERT INTO ${j$($)} (${I}) VALUES (${j}) - ON CONFLICT (${N}) DO UPDATE SET ${L}`);return _.transaction((J)=>{for(let P of J)z.run(...U.map((S)=>sq(P[S])))})(g),g.length}function jX(_,$){let g=mg[_],U=[],D=$;for(let I=0;I=0?O.slice(0,z):O;try{U.push(JSON.parse(W))}catch{return null}D=z>=0&&L?O.slice(z+1):""}return D.length===0?U:null}function NX(_){return mg[_].map(($)=>`${j$($)} = ?`).join(" AND ")}function OB(_,$,g){if(!J$(_,"knowledge_sync_changes"))return new Map;let U=_.query(`SELECT entity_id, next_hash + `).run($.table,$.machineId,$.logicalClock,$.highWaterHash,$.highWaterBundleId??null,$.originMachineId??$.machineId,$.updatedByMachineId??$.machineId,$.lastAppliedAt??D,JSON.stringify($.metadata??{}),U,D);let I=mD(_,$.table,$.machineId);if(!I)throw Error(`Failed to record sync clock for ${$.table}:${$.machineId}`);return I}function Qq(_,$){let D=mD(_,$.table,$.machineId),g=D?.high_water_hash===$.highWaterHash?D.logical_clock:(D?.logical_clock??0)+1,U=$.record?SI(_,{table:$.table,machineId:$.machineId,logicalClock:g,highWaterHash:$.highWaterHash,highWaterBundleId:null,originMachineId:D?.origin_machine_id??$.machineId,updatedByMachineId:$.machineId,lastAppliedAt:$.now,metadata:{source:"export",row_count:$.rowCount},now:$.now}):{table_name:$.table,machine_id:$.machineId,logical_clock:g,high_water_hash:$.highWaterHash,high_water_bundle_id:D?.high_water_bundle_id??null,origin_machine_id:D?.origin_machine_id??$.machineId,updated_by_machine_id:$.machineId,last_applied_at:$.now,metadata_json:"{}",created_at:D?.created_at??$.now,updated_at:$.now};return{table:$.table,machine_id:$.machineId,logical_clock:U.logical_clock,high_water_hash:$.highWaterHash,high_water_bundle_id:U.high_water_bundle_id,row_count:$.rowCount,updated_at:U.updated_at}}function Tq(_,$,D,g,U){if($.high_water_bundle_id=D,!g)return;SI(_,{table:$.table,machineId:$.machine_id,logicalClock:$.logical_clock,highWaterHash:$.high_water_hash,highWaterBundleId:D,originMachineId:$.machine_id,updatedByMachineId:$.machine_id,lastAppliedAt:U,metadata:{source:"export",row_count:$.row_count},now:U})}function GX(_,$){return _.table_clocks?.find((D)=>D.table===$)??null}function Bq(_,$){if(!_||!$)return!1;return $.logical_clock<_.logical_clock}function qq(_,$,D){if(D.length===0)return 0;let g=Xq(_,$,Object.keys(D[0]));if(g.length===0)return 0;let U=iD[$],I=g.map(j$).join(", "),j=g.map(()=>"?").join(", "),N=U.map(j$).join(", "),O=g.filter((J)=>!U.includes(J)),A=U[0],L=O.length>0?O.map((J)=>`${j$(J)} = excluded.${j$(J)}`).join(", "):`${j$(A)} = excluded.${j$(A)}`,z=_.query(`INSERT INTO ${j$($)} (${I}) VALUES (${j}) + ON CONFLICT (${N}) DO UPDATE SET ${L}`);return _.transaction((J)=>{for(let P of J)z.run(...g.map((S)=>Sq(P[S])))})(D),D.length}function RX(_,$){let D=iD[_],g=[],U=$;for(let I=0;I=0?O.slice(0,z):O;try{g.push(JSON.parse(W))}catch{return null}U=z>=0&&L?O.slice(z+1):""}return U.length===0?g:null}function YX(_){return iD[_].map(($)=>`${j$($)} = ?`).join(" AND ")}function Vq(_,$,D){if(!J$(_,"knowledge_sync_changes"))return new Map;let g=_.query(`SELECT entity_id, next_hash FROM knowledge_sync_changes WHERE origin_machine_id = ? AND entity_kind = ? - ORDER BY created_at ASC, id ASC`).all(g,$),D=new Map;for(let I of U)D.set(I.entity_id,I.next_hash);return D}function AB(_,$){if(J$(_,"chunks_fts"))_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run($);if(J$(_,"chunk_embeddings"))_.query("DELETE FROM chunk_embeddings WHERE chunk_id = ?").run($);if(J$(_,"vector_index_entries"))_.query("DELETE FROM vector_index_entries WHERE chunk_id = ?").run($);if(J$(_,"citations"))_.query("DELETE FROM citations WHERE chunk_id = ?").run($)}function LB(_,$,g){let U=jX($,g);if(!U)return!1;let D=NX($),I=_.query(`SELECT * FROM ${j$($)} WHERE ${D} LIMIT 1`).get(...U);if(!I)return!1;if($==="chunks"&&typeof I.id==="string")AB(_,I.id);return _.query(`DELETE FROM ${j$($)} WHERE ${D}`).run(...U),!0}function JB(_,$){if(!J$(_,"chunks_fts"))return;for(let g of $){let U=typeof g.id==="string"?g.id:null,D=typeof g.text==="string"?g.text:null;if(!U||D===null)continue;let I="",j="",N=typeof g.source_revision_id==="string"?g.source_revision_id:null;if(N){let O=_.query(`SELECT s.title, s.uri + ORDER BY created_at ASC, id ASC`).all(D,$),U=new Map;for(let I of g)U.set(I.entity_id,I.next_hash);return U}function Fq(_,$){if(J$(_,"chunks_fts"))_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run($);if(J$(_,"chunk_embeddings"))_.query("DELETE FROM chunk_embeddings WHERE chunk_id = ?").run($);if(J$(_,"vector_index_entries"))_.query("DELETE FROM vector_index_entries WHERE chunk_id = ?").run($);if(J$(_,"citations"))_.query("DELETE FROM citations WHERE chunk_id = ?").run($)}function Kq(_,$,D){let g=RX($,D);if(!g)return!1;let U=YX($),I=_.query(`SELECT * FROM ${j$($)} WHERE ${U} LIMIT 1`).get(...g);if(!I)return!1;if($==="chunks"&&typeof I.id==="string")Fq(_,I.id);return _.query(`DELETE FROM ${j$($)} WHERE ${U}`).run(...g),!0}function Mq(_,$){if(!J$(_,"chunks_fts"))return;for(let D of $){let g=typeof D.id==="string"?D.id:null,U=typeof D.text==="string"?D.text:null;if(!g||U===null)continue;let I="",j="",N=typeof D.source_revision_id==="string"?D.source_revision_id:null;if(N){let O=_.query(`SELECT s.title, s.uri FROM source_revisions sr JOIN sources s ON s.id = sr.source_id WHERE sr.id = ? - LIMIT 1`).get(N);I=O?.title??"",j=O?.uri??""}if(!j&&typeof g.metadata_json==="string"){let O=PI(g.metadata_json,{});j=typeof O.source_uri==="string"?O.source_uri:""}_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run(U),_.query("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)").run(U,D,I,j)}}function PB(_,$,g){if($==="chunks")JB(_,g)}function zB(_,$){let g=_X(_,$);return g!==".."&&!g.startsWith("..")&&!g.startsWith(`..${aq}`)}function SB(_,$){let g=PI(_.metadata_json,{});if(typeof g.key==="string")return g.key;if(!_.artifact_uri.startsWith("file://"))return null;try{let U=sW(_.artifact_uri),D=lW($),I=lW(U);if(!zB(D,I))return null;let j=_X(D,I).replace(/\\/g,"/");return j?w$(j):null}catch{return null}}var WB=new Set([".csv",".html",".json",".jsonl",".log",".md",".txt",".xml",".yaml",".yml"]);function XB(_,$){let g=_?.toLowerCase()??"";if(g.startsWith("text/"))return!0;if(/(json|markdown|xml|yaml|csv)/.test(g))return!0;return $?WB.has(eq($).toLowerCase()):!1}function O4(_){let $=new Map;for(let g of _)if(g.key)$.set(g.artifact_uri,g.key);return $}function B6(_){return vE({key:_.key,kind:_.kind,hash:_.hash,size_bytes:_.size_bytes})}function SI(_){return _.key??_.artifact_uri}function RB(_,$){return _.artifact_uri.startsWith("s3://")&&$.artifact_store.type==="s3"&&_.artifact_uri.startsWith($.artifact_store.uri_prefix)}function EX(_){return Object.fromEntries(LI.map(($)=>[$,J$(_,$)?OI(_,$):0]))}function GB(_){return _.query(`SELECT artifact_uri, kind, hash, size_bytes + LIMIT 1`).get(N);I=O?.title??"",j=O?.uri??""}if(!j&&typeof D.metadata_json==="string"){let O=zI(D.metadata_json,{});j=typeof O.source_uri==="string"?O.source_uri:""}_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run(g),_.query("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)").run(g,U,I,j)}}function Zq(_,$,D){if($==="chunks")Mq(_,D)}function bq(_,$){let D=PX(_,$);return D!==".."&&!D.startsWith("..")&&!D.startsWith(`..${zq}`)}function Hq(_,$){let D=zI(_.metadata_json,{});if(typeof D.key==="string")return D.key;if(!_.artifact_uri.startsWith("file://"))return null;try{let g=JX(_.artifact_uri),U=jX($),I=jX(g);if(!bq(U,I))return null;let j=PX(U,I).replace(/\\/g,"/");return j?w$(j):null}catch{return null}}var kq=new Set([".csv",".html",".json",".jsonl",".log",".md",".txt",".xml",".yaml",".yml"]);function Cq(_,$){let D=_?.toLowerCase()??"";if(D.startsWith("text/"))return!0;if(/(json|markdown|xml|yaml|csv)/.test(D))return!0;return $?kq.has(Pq($).toLowerCase()):!1}function O4(_){let $=new Map;for(let D of _)if(D.key)$.set(D.artifact_uri,D.key);return $}function q6(_){return n2({key:_.key,kind:_.kind,hash:_.hash,size_bytes:_.size_bytes})}function WI(_){return _.key??_.artifact_uri}function vq(_,$){return _.artifact_uri.startsWith("s3://")&&$.artifact_store.type==="s3"&&_.artifact_uri.startsWith($.artifact_store.uri_prefix)}function QX(_){return Object.fromEntries(JI.map(($)=>[$,J$(_,$)?AI(_,$):0]))}function fq(_){return _.query(`SELECT artifact_uri, kind, hash, size_bytes FROM storage_objects - ORDER BY artifact_uri ASC`).all()}function YB(_,$){return{machine_id:_.machine_id,hostname:_.hostname,platform:_.platform,user_label:_.user,workspace_home:_.workspace_path,tailscale_dns:_.tailscale.dns_name,tailscale_ips_json:JSON.stringify(_.tailscale.ips),ssh_target:_.ssh.command_target,last_seen_at:_.local||_.tailscale.online===!0||_.heartbeat_status==="online"?$:_.last_heartbeat_at,capabilities_json:JSON.stringify({route_hints:_.route_hints,heartbeat_status:_.heartbeat_status,manifest_declared:_.manifest_declared}),metadata_json:JSON.stringify({..._.metadata,source:_.source,tags:_.tags,tailscale:_.tailscale,ssh:_.ssh}),created_at:$,updated_at:$}}function ZE(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function QB(_){if(!_)return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function K6(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function AI(_){return Object.fromEntries(Object.entries(_).filter(([,$])=>$!==void 0))}function B0(_){if(Array.isArray(_))return`[${_.map(B0).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).filter(([,$])=>$!==void 0).sort(([$],[g])=>$.localeCompare(g)).map(([$,g])=>`${JSON.stringify($)}:${B0(g)}`).join(",")}}`;return JSON.stringify(_)}function tW(_){let{recorded_at:$,...g}=_;return g}function M_(_){return typeof _==="string"&&_.length>0?_:null}function TB(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function oW(_){return typeof _==="boolean"?_:null}function qB(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function OX(_){let $=K6(_),g=M_($.observed_at),U=M_($.source_authority);if(!g||!U)return null;return{observed_at:g,verified_at:M_($.verified_at),expires_at:M_($.expires_at),ttl_ms:TB($.ttl_ms),source_authority:U,confidence:M_($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:qB($.reasons)}}function AX(_,$){if(!_||_.stale)return!1;if(!_.expires_at)return!0;let g=Date.parse(_.expires_at),U=Date.parse($);return Number.isNaN(g)||Number.isNaN(U)||g>U}function BB(_,$){return M_($.source)===_.source&&M_($.target)===_.target&&M_($.route)===_.route&&M_($.target_kind)===_.targetKind&&M_($.confidence)===_.confidence}function KB(_,$){return M_($.source)===_.source&&M_($.requested_machine_id)===_.requested_machine_id&&M_($.machine_id)===_.machine_id&&M_($.project_id)===_.project_id&&M_($.repo_name)===_.repo_name&&M_($.project_root)===_.project_root&&M_($.project_root_source)===_.project_root_source&&M_($.workspace_root)===_.workspace_root&&M_($.workspace_root_source)===_.workspace_root_source&&M_($.open_files_root)===_.open_files_root&&M_($.open_files_root_source)===_.open_files_root_source&&M_($.trust_status)===_.trust_status&&M_($.auth_status)===_.auth_status&&oW($.current)===_.current&&oW($.primary)===_.primary}function VB(_,$,g){if(!_)return null;let U=OX($.cacheability);if(U&&AX(U,g)&&BB(_,$))return{..._,cacheability:U};return _}function FB(_,$,g){if(!_)return null;let U=OX($.cacheability);if(U&&AX(U,g)&&KB(_,$))return{..._,cacheability:U};return _}function MB(_){return _.workspace?.machine_id??_.workspace?.requested_machine_id??_.machineId??_.route?.target??aW()}function ZB(_,$){let g=new Set,U=Array.isArray($.sources)?$.sources:[];for(let D of U)if(typeof D==="string")g.add(D);if(typeof $.source==="string")g.add($.source);if(_.route?.source)g.add(_.route.source);if(_.workspace?.source)g.add(_.workspace.source);return g.add("knowledge"),[...g].sort()}function pW(_,$){if($?.target&&($.route==="tailscale"||$.targetKind==="tailscale"))return $.target;return _?.tailscale_dns??null}function bB(_,$,g){let U=K6($.resolver_evidence),D=_.route?AI({source:_.route.source,target:_.route.target,route:_.route.route,target_kind:_.route.targetKind,confidence:_.route.confidence,adapter:_.route.adapter,evidence:_.route.evidence,cacheability:_.route.cacheability,warnings:_.route.warnings}):K6(U.route),I=_.workspace?AI({source:_.workspace.source,requested_machine_id:_.workspace.requested_machine_id,machine_id:_.workspace.machine_id,project_id:_.workspace.project_id,repo_name:_.workspace.repo_name,project_root:_.workspace.project_root,project_root_source:_.workspace.project_root_source,workspace_root:_.workspace.workspace_root,workspace_root_source:_.workspace.workspace_root_source,open_files_root:_.workspace.open_files_root,open_files_root_source:_.workspace.open_files_root_source,trust_status:_.workspace.trust_status,auth_status:_.workspace.auth_status,current:_.workspace.current,primary:_.workspace.primary,diagnostics:_.workspace.diagnostics,repair_hints:_.workspace.repair_hints,evidence:_.workspace.evidence,cacheability:_.workspace.cacheability,warnings:_.workspace.warnings}):K6(U.workspace);return AI({...U,recorded_at:g,route:D,workspace:I})}function LX(_,$){h(_);let g=v(_);try{let U=MB($),D=g.query("SELECT * FROM knowledge_machines WHERE machine_id = ?").get(U)??null,I=u$($.now),j=ZE(D?.capabilities_json),N=ZE(D?.metadata_json),O=K6(j.resolver),A=K6(N.resolver_evidence),L=K6(A.route),z=K6(A.workspace),W=VB($.route?.source==="registry"?null:$.route??null,L,I),J=FB($.workspace?.source==="registry"?null:$.workspace??null,z,I),P={...$,route:W,workspace:J},S={...j,resolver:AI({...O,route_source:W?.source??O.route_source,route_kind:W?.route??O.route_kind,route_target_kind:W?.targetKind??O.route_target_kind,route_confidence:W?.confidence??O.route_confidence,route_cacheable:W?.cacheability?.cacheable??O.route_cacheable,route_stale:W?.cacheability?.stale??O.route_stale,route_expires_at:W?.cacheability?.expires_at??O.route_expires_at,route_observed_at:W?.cacheability?.observed_at??O.route_observed_at,route_source_authority:W?.cacheability?.source_authority??O.route_source_authority,workspace_source:J?.source??O.workspace_source,project_root_source:J?.project_root_source??O.project_root_source,workspace_root_source:J?.workspace_root_source??O.workspace_root_source,open_files_root_source:J?.open_files_root_source??O.open_files_root_source,trust_status:J?.trust_status??O.trust_status,auth_status:J?.auth_status??O.auth_status,workspace_cacheable:J?.cacheability?.cacheable??O.workspace_cacheable,workspace_stale:J?.cacheability?.stale??O.workspace_stale,workspace_expires_at:J?.cacheability?.expires_at??O.workspace_expires_at,workspace_observed_at:J?.cacheability?.observed_at??O.workspace_observed_at,workspace_source_authority:J?.cacheability?.source_authority??O.workspace_source_authority}),route_fallback:Boolean(W?.target??D?.ssh_target),workspace_fallback:Boolean(J?.project_root??D?.workspace_home)},X=bB(P,N,I);if(D){let R=A;if(D.workspace_home===(J?.project_root??D.workspace_home??null)&&D.tailscale_dns===pW(D,W)&&D.ssh_target===(W?.target??D.ssh_target??null)&&B0(ZE(D.capabilities_json))===B0(S)&&B0(tW(R))===B0(tW(X)))return D}let G={machine_id:U,hostname:D?.hostname??null,platform:D?.platform??null,user_label:D?.user_label??null,workspace_home:J?.project_root??D?.workspace_home??null,tailscale_dns:pW(D,W),tailscale_ips_json:JSON.stringify(QB(D?.tailscale_ips_json)),ssh_target:W?.target??D?.ssh_target??null,last_seen_at:I,capabilities_json:JSON.stringify(S),metadata_json:JSON.stringify({...N,source:"knowledge",sources:ZB(P,N),resolver_evidence:X}),created_at:D?.created_at??I,updated_at:I};return JX(g,G),G}finally{g.close()}}function JX(_,$){_.query(` + ORDER BY artifact_uri ASC`).all()}function wq(_,$){return{machine_id:_.machine_id,hostname:_.hostname,platform:_.platform,user_label:_.user,workspace_home:_.workspace_path,tailscale_dns:_.tailscale.dns_name,tailscale_ips_json:JSON.stringify(_.tailscale.ips),ssh_target:_.ssh.command_target,last_seen_at:_.local||_.tailscale.online===!0||_.heartbeat_status==="online"?$:_.last_heartbeat_at,capabilities_json:JSON.stringify({route_hints:_.route_hints,heartbeat_status:_.heartbeat_status,manifest_declared:_.manifest_declared}),metadata_json:JSON.stringify({..._.metadata,source:_.source,tags:_.tags,tailscale:_.tailscale,ssh:_.ssh}),created_at:$,updated_at:$}}function r2(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function rq(_){if(!_)return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function V6(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function LI(_){return Object.fromEntries(Object.entries(_).filter(([,$])=>$!==void 0))}function V0(_){if(Array.isArray(_))return`[${_.map(V0).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).filter(([,$])=>$!==void 0).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${V0(D)}`).join(",")}}`;return JSON.stringify(_)}function NX(_){let{recorded_at:$,...D}=_;return D}function M_(_){return typeof _==="string"&&_.length>0?_:null}function uq(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function EX(_){return typeof _==="boolean"?_:null}function xq(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function TX(_){let $=V6(_),D=M_($.observed_at),g=M_($.source_authority);if(!D||!g)return null;return{observed_at:D,verified_at:M_($.verified_at),expires_at:M_($.expires_at),ttl_ms:uq($.ttl_ms),source_authority:g,confidence:M_($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:xq($.reasons)}}function BX(_,$){if(!_||_.stale)return!1;if(!_.expires_at)return!0;let D=Date.parse(_.expires_at),g=Date.parse($);return Number.isNaN(D)||Number.isNaN(g)||D>g}function yq(_,$){return M_($.source)===_.source&&M_($.target)===_.target&&M_($.route)===_.route&&M_($.target_kind)===_.targetKind&&M_($.confidence)===_.confidence}function hq(_,$){return M_($.source)===_.source&&M_($.requested_machine_id)===_.requested_machine_id&&M_($.machine_id)===_.machine_id&&M_($.project_id)===_.project_id&&M_($.repo_name)===_.repo_name&&M_($.project_root)===_.project_root&&M_($.project_root_source)===_.project_root_source&&M_($.workspace_root)===_.workspace_root&&M_($.workspace_root_source)===_.workspace_root_source&&M_($.open_files_root)===_.open_files_root&&M_($.open_files_root_source)===_.open_files_root_source&&M_($.trust_status)===_.trust_status&&M_($.auth_status)===_.auth_status&&EX($.current)===_.current&&EX($.primary)===_.primary}function cq(_,$,D){if(!_)return null;let g=TX($.cacheability);if(g&&BX(g,D)&&yq(_,$))return{..._,cacheability:g};return _}function nq(_,$,D){if(!_)return null;let g=TX($.cacheability);if(g&&BX(g,D)&&hq(_,$))return{..._,cacheability:g};return _}function dq(_){return _.workspace?.machine_id??_.workspace?.requested_machine_id??_.machineId??_.route?.target??LX()}function mq(_,$){let D=new Set,g=Array.isArray($.sources)?$.sources:[];for(let U of g)if(typeof U==="string")D.add(U);if(typeof $.source==="string")D.add($.source);if(_.route?.source)D.add(_.route.source);if(_.workspace?.source)D.add(_.workspace.source);return D.add("knowledge"),[...D].sort()}function OX(_,$){if($?.target&&($.route==="tailscale"||$.targetKind==="tailscale"))return $.target;return _?.tailscale_dns??null}function iq(_,$,D){let g=V6($.resolver_evidence),U=_.route?LI({source:_.route.source,target:_.route.target,route:_.route.route,target_kind:_.route.targetKind,confidence:_.route.confidence,adapter:_.route.adapter,evidence:_.route.evidence,cacheability:_.route.cacheability,warnings:_.route.warnings}):V6(g.route),I=_.workspace?LI({source:_.workspace.source,requested_machine_id:_.workspace.requested_machine_id,machine_id:_.workspace.machine_id,project_id:_.workspace.project_id,repo_name:_.workspace.repo_name,project_root:_.workspace.project_root,project_root_source:_.workspace.project_root_source,workspace_root:_.workspace.workspace_root,workspace_root_source:_.workspace.workspace_root_source,open_files_root:_.workspace.open_files_root,open_files_root_source:_.workspace.open_files_root_source,trust_status:_.workspace.trust_status,auth_status:_.workspace.auth_status,current:_.workspace.current,primary:_.workspace.primary,diagnostics:_.workspace.diagnostics,repair_hints:_.workspace.repair_hints,evidence:_.workspace.evidence,cacheability:_.workspace.cacheability,warnings:_.workspace.warnings}):V6(g.workspace);return LI({...g,recorded_at:D,route:U,workspace:I})}function qX(_,$){h(_);let D=f(_);try{let g=dq($),U=D.query("SELECT * FROM knowledge_machines WHERE machine_id = ?").get(g)??null,I=u$($.now),j=r2(U?.capabilities_json),N=r2(U?.metadata_json),O=V6(j.resolver),A=V6(N.resolver_evidence),L=V6(A.route),z=V6(A.workspace),W=cq($.route?.source==="registry"?null:$.route??null,L,I),J=nq($.workspace?.source==="registry"?null:$.workspace??null,z,I),P={...$,route:W,workspace:J},S={...j,resolver:LI({...O,route_source:W?.source??O.route_source,route_kind:W?.route??O.route_kind,route_target_kind:W?.targetKind??O.route_target_kind,route_confidence:W?.confidence??O.route_confidence,route_cacheable:W?.cacheability?.cacheable??O.route_cacheable,route_stale:W?.cacheability?.stale??O.route_stale,route_expires_at:W?.cacheability?.expires_at??O.route_expires_at,route_observed_at:W?.cacheability?.observed_at??O.route_observed_at,route_source_authority:W?.cacheability?.source_authority??O.route_source_authority,workspace_source:J?.source??O.workspace_source,project_root_source:J?.project_root_source??O.project_root_source,workspace_root_source:J?.workspace_root_source??O.workspace_root_source,open_files_root_source:J?.open_files_root_source??O.open_files_root_source,trust_status:J?.trust_status??O.trust_status,auth_status:J?.auth_status??O.auth_status,workspace_cacheable:J?.cacheability?.cacheable??O.workspace_cacheable,workspace_stale:J?.cacheability?.stale??O.workspace_stale,workspace_expires_at:J?.cacheability?.expires_at??O.workspace_expires_at,workspace_observed_at:J?.cacheability?.observed_at??O.workspace_observed_at,workspace_source_authority:J?.cacheability?.source_authority??O.workspace_source_authority}),route_fallback:Boolean(W?.target??U?.ssh_target),workspace_fallback:Boolean(J?.project_root??U?.workspace_home)},X=iq(P,N,I);if(U){let G=A;if(U.workspace_home===(J?.project_root??U.workspace_home??null)&&U.tailscale_dns===OX(U,W)&&U.ssh_target===(W?.target??U.ssh_target??null)&&V0(r2(U.capabilities_json))===V0(S)&&V0(NX(G))===V0(NX(X)))return U}let R={machine_id:g,hostname:U?.hostname??null,platform:U?.platform??null,user_label:U?.user_label??null,workspace_home:J?.project_root??U?.workspace_home??null,tailscale_dns:OX(U,W),tailscale_ips_json:JSON.stringify(rq(U?.tailscale_ips_json)),ssh_target:W?.target??U?.ssh_target??null,last_seen_at:I,capabilities_json:JSON.stringify(S),metadata_json:JSON.stringify({...N,source:"knowledge",sources:mq(P,N),resolver_evidence:X}),created_at:U?.created_at??I,updated_at:I};return VX(D,R),R}finally{D.close()}}function VX(_,$){_.query(` INSERT INTO knowledge_machines ( machine_id, hostname, platform, user_label, workspace_home, tailscale_dns, tailscale_ips_json, ssh_target, last_seen_at, capabilities_json, @@ -871,15 +871,15 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, capabilities_json = excluded.capabilities_json, metadata_json = excluded.metadata_json, updated_at = excluded.updated_at - `).run($.machine_id,$.hostname,$.platform,$.user_label,$.workspace_home,$.tailscale_dns,$.tailscale_ips_json,$.ssh_target,$.last_seen_at,$.capabilities_json,$.metadata_json,$.created_at,$.updated_at)}function HB(_,$,g=u$()){for(let U of $.machines)JX(_,YB(U,g));return $.machines.length}function wE(_){h(_);let $=v(_);try{return $.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all()}finally{$.close()}}function lg(_){h(_.dbPath);let $=v(_.dbPath),g=[],U=u$(_.now),D=$X(_.machineId),I=_.recordClocks!==!1;try{let j=gX($,DX(_.tables)),O=$.query(`SELECT id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json + `).run($.machine_id,$.hostname,$.platform,$.user_label,$.workspace_home,$.tailscale_dns,$.tailscale_ips_json,$.ssh_target,$.last_seen_at,$.capabilities_json,$.metadata_json,$.created_at,$.updated_at)}function lq(_,$,D=u$()){for(let g of $.machines)VX(_,wq(g,D));return $.machines.length}function d2(_){h(_);let $=f(_);try{return $.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all()}finally{$.close()}}function tD(_){h(_.dbPath);let $=f(_.dbPath),D=[],g=u$(_.now),U=zX(_.machineId),I=_.recordClocks!==!1;try{let j=SX($,WX(_.tables)),O=$.query(`SELECT id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all().map((P)=>{let S=SB(P,_.storage.local_layout.directories.artifacts),X={...P,key:S};if(_.includeArtifactContent!==!1&&S&&P.artifact_uri.startsWith("file://"))try{let G=sW(P.artifact_uri);if(oq(G))if(!XB(P.content_type,S))g.push(`artifact_content_not_embedded_binary:${P.id}`);else{let R=pq(G,"utf8"),K=q_(R);if(K!==R)g.push(`artifact_content_redacted:${P.id}`);X.content_base64=Buffer.from(K,"utf8").toString("base64"),X.hash=cg(K),X.size_bytes=Buffer.byteLength(K)}else g.push(`artifact_missing:${P.artifact_uri}`)}catch(G){g.push(`artifact_read_failed:${P.artifact_uri}:${G instanceof Error?G.message:String(G)}`)}else if(_.includeArtifactContent!==!1&&P.artifact_uri.startsWith("s3://"))g.push(`artifact_content_not_embedded:${P.artifact_uri}`);return X=q_(X),X}),A=O4(O),L=j.filter((P)=>!ig.has(P)).map((P)=>({table:P,primary_keys:mg[P],rows:UX($,P).map((S)=>q_(S))})),z=L.map((P)=>IB($,{table:P.table,machineId:D,highWaterHash:JI(P.table,P.rows,A),rowCount:P.rows.length,record:I,now:U})),W=cg(K0({source:{scope:_.scope,workspace_home:q_(_.workspaceHome),sqlite_schema_version:v_($),machine_id:D,artifact_root_uri:q_(_.storage.artifact_store.uri_prefix)},tables:L.map((P)=>({table:P.table,primary_keys:P.primary_keys,rows:P.rows.map((S)=>({key:E4(P.table,S),hash:N4(S,A)})).sort((S,X)=>S.key.localeCompare(X.key))})),table_clocks:z.map((P)=>({table:P.table,machine_id:P.machine_id,logical_clock:P.logical_clock,high_water_hash:P.high_water_hash,row_count:P.row_count})),artifacts:O.map((P)=>({identity:SI(P),fingerprint:B6(P)})).sort((P,S)=>P.identity.localeCompare(S.identity))})),J=`syncbundle_${W.replace("sha256:","").slice(0,32)}`;for(let P of z)jB($,P,J,I,U);return{ok:!0,format:"knowledge-sync-bundle",version:1,protocol_version:V6,min_protocol_version:F6,bundle_id:J,content_hash:W,generated_at:U,source:{scope:_.scope,workspace_home:q_(_.workspaceHome),sqlite_schema_version:v_($),machine_id:D,artifact_root_uri:q_(_.storage.artifact_store.uri_prefix)},table_clocks:z,tables:L,artifacts:O,warnings:q_(g),message:`${L.reduce((P,S)=>P+S.rows.length,0)} row(s), ${O.length} artifact(s) exported`}}finally{$.close()}}function kB(_,$){let g=typeof _.protocol_version==="number"?_.protocol_version:null,U=typeof _.min_protocol_version==="number"?_.min_protocol_version:null;if(g===null||U===null||gV6)throw Error(`Unsupported ${$} protocol. Expected knowledge sync protocol v${V6} with min v${F6}.`)}function CB(_){if(!_||_.format!=="knowledge-sync-bundle"||_.version!==1)throw Error("Invalid knowledge sync bundle.");kB(_,"knowledge sync bundle")}function fE(_,$){return _.tables.find((g)=>g.table===$)??null}function PX(_){if(typeof _.content_hash==="string"&&_.content_hash.length>0)return _.content_hash;return cg(K0({source:_.source,tables:_.tables.map(($)=>({table:$.table,rows:$.rows.map((g)=>({key:E4($.table,g),hash:N4(g,O4(_.artifacts))})).sort((g,U)=>g.key.localeCompare(U.key))})),artifacts:_.artifacts.map(($)=>({identity:SI($),fingerprint:B6($)})).sort(($,g)=>$.identity.localeCompare(g.identity))}))}function rB(_){if(typeof _.bundle_id==="string"&&_.bundle_id.length>0)return _.bundle_id;return`syncbundle_${PX(_).replace("sha256:","").slice(0,32)}`}function vB(_,$){return new Map($.map((g)=>[E4(_,g),g]))}function wB(_){return new Map(_.artifacts.map(($)=>[SI($),$]))}async function fB(_){let $=wB(_.targetBundle),g=new Map,U=[],D={source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:0,conflicts:0,missing_content:0};for(let I of _.bundle.artifacts){let j=SI(I),N=$.get(j);if(N&&B6(N)===B6(I)){if(N.artifact_uri)g.set(I.artifact_uri,N.artifact_uri);D.skipped+=1;continue}if(N&&B6(N)!==B6(I)){let P={entityKind:"storage_object",entityId:j,localMachineId:_.localMachineId,remoteMachineId:_.bundle.source.machine_id??"unknown",localHash:B6(N),remoteHash:B6(I),metadata:{direction:_.direction,target_artifact_uri:N.artifact_uri,source_artifact_uri:I.artifact_uri,local_artifact:ng(N),remote_artifact:ng(I)}};if(kE(_.db,P)){D.skipped+=1;continue}D.conflicts+=1,U.push(P);continue}let O=Boolean(I.key&&I.content_base64),A=RB(I,_.targetStorage);if(!O&&!A){D.missing_content+=1,_.warnings.push(`artifact_content_missing:${I.artifact_uri}`);continue}if(_.dryRun){D.copied+=1;continue}let L=I.artifact_uri;if(O&&I.key&&I.content_base64)L=(await _.targetStore.put({key:I.key,body:Buffer.from(I.content_base64,"base64"),content_type:I.content_type??void 0})).uri,g.set(I.artifact_uri,L);else if(A)g.set(I.artifact_uri,L);let z=PI(I.metadata_json,{}),W=typeof z.artifact_modified_at==="string"?z.artifact_modified_at:void 0,J={uri:L,key:I.key??z.key??I.artifact_uri,kind:I.kind,content_type:I.content_type??void 0,hash:I.hash??void 0,size_bytes:I.size_bytes??void 0,modified_at:W,metadata:{...z,synced_from_artifact_uri:I.artifact_uri,synced_from_machine_id:_.bundle.source.machine_id??void 0}};s$(_.db,[J]),D.copied+=1}return{result:D,uriMap:g,conflicts:U}}function bE(_,$){let g={..._};if(typeof g.artifact_uri==="string"&&$.has(g.artifact_uri))g.artifact_uri=$.get(g.artifact_uri);return g}function uB(_,$){let g=u$();_.query(` + ORDER BY artifact_uri ASC`).all().map((P)=>{let S=Hq(P,_.storage.local_layout.directories.artifacts),X={...P,key:S};if(_.includeArtifactContent!==!1&&S&&P.artifact_uri.startsWith("file://"))try{let R=JX(P.artifact_uri);if(Lq(R))if(!Cq(P.content_type,S))D.push(`artifact_content_not_embedded_binary:${P.id}`);else{let G=Jq(R,"utf8"),V=B_(G);if(V!==G)D.push(`artifact_content_redacted:${P.id}`);X.content_base64=Buffer.from(V,"utf8").toString("base64"),X.hash=nD(V),X.size_bytes=Buffer.byteLength(V)}else D.push(`artifact_missing:${P.artifact_uri}`)}catch(R){D.push(`artifact_read_failed:${P.artifact_uri}:${R instanceof Error?R.message:String(R)}`)}else if(_.includeArtifactContent!==!1&&P.artifact_uri.startsWith("s3://"))D.push(`artifact_content_not_embedded:${P.artifact_uri}`);return X=B_(X),X}),A=O4(O),L=j.filter((P)=>!lD.has(P)).map((P)=>({table:P,primary_keys:iD[P],rows:XX($,P).map((S)=>B_(S))})),z=L.map((P)=>Qq($,{table:P.table,machineId:U,highWaterHash:PI(P.table,P.rows,A),rowCount:P.rows.length,record:I,now:g})),W=nD(F0({source:{scope:_.scope,workspace_home:B_(_.workspaceHome),sqlite_schema_version:f_($),machine_id:U,artifact_root_uri:B_(_.storage.artifact_store.uri_prefix)},tables:L.map((P)=>({table:P.table,primary_keys:P.primary_keys,rows:P.rows.map((S)=>({key:E4(P.table,S),hash:N4(S,A)})).sort((S,X)=>S.key.localeCompare(X.key))})),table_clocks:z.map((P)=>({table:P.table,machine_id:P.machine_id,logical_clock:P.logical_clock,high_water_hash:P.high_water_hash,row_count:P.row_count})),artifacts:O.map((P)=>({identity:WI(P),fingerprint:q6(P)})).sort((P,S)=>P.identity.localeCompare(S.identity))})),J=`syncbundle_${W.replace("sha256:","").slice(0,32)}`;for(let P of z)Tq($,P,J,I,g);return{ok:!0,format:"knowledge-sync-bundle",version:1,protocol_version:F6,min_protocol_version:K6,bundle_id:J,content_hash:W,generated_at:g,source:{scope:_.scope,workspace_home:B_(_.workspaceHome),sqlite_schema_version:f_($),machine_id:U,artifact_root_uri:B_(_.storage.artifact_store.uri_prefix)},table_clocks:z,tables:L,artifacts:O,warnings:B_(D),message:`${L.reduce((P,S)=>P+S.rows.length,0)} row(s), ${O.length} artifact(s) exported`}}finally{$.close()}}function tq(_,$){let D=typeof _.protocol_version==="number"?_.protocol_version:null,g=typeof _.min_protocol_version==="number"?_.min_protocol_version:null;if(D===null||g===null||DF6)throw Error(`Unsupported ${$} protocol. Expected knowledge sync protocol v${F6} with min v${K6}.`)}function oq(_){if(!_||_.format!=="knowledge-sync-bundle"||_.version!==1)throw Error("Invalid knowledge sync bundle.");tq(_,"knowledge sync bundle")}function m2(_,$){return _.tables.find((D)=>D.table===$)??null}function FX(_){if(typeof _.content_hash==="string"&&_.content_hash.length>0)return _.content_hash;return nD(F0({source:_.source,tables:_.tables.map(($)=>({table:$.table,rows:$.rows.map((D)=>({key:E4($.table,D),hash:N4(D,O4(_.artifacts))})).sort((D,g)=>D.key.localeCompare(g.key))})),artifacts:_.artifacts.map(($)=>({identity:WI($),fingerprint:q6($)})).sort(($,D)=>$.identity.localeCompare(D.identity))}))}function pq(_){if(typeof _.bundle_id==="string"&&_.bundle_id.length>0)return _.bundle_id;return`syncbundle_${FX(_).replace("sha256:","").slice(0,32)}`}function eq(_,$){return new Map($.map((D)=>[E4(_,D),D]))}function aq(_){return new Map(_.artifacts.map(($)=>[WI($),$]))}async function sq(_){let $=aq(_.targetBundle),D=new Map,g=[],U={source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:0,conflicts:0,missing_content:0};for(let I of _.bundle.artifacts){let j=WI(I),N=$.get(j);if(N&&q6(N)===q6(I)){if(N.artifact_uri)D.set(I.artifact_uri,N.artifact_uri);U.skipped+=1;continue}if(N&&q6(N)!==q6(I)){let P={entityKind:"storage_object",entityId:j,localMachineId:_.localMachineId,remoteMachineId:_.bundle.source.machine_id??"unknown",localHash:q6(N),remoteHash:q6(I),metadata:{direction:_.direction,target_artifact_uri:N.artifact_uri,source_artifact_uri:I.artifact_uri,local_artifact:dD(N),remote_artifact:dD(I)}};if(y2(_.db,P)){U.skipped+=1;continue}U.conflicts+=1,g.push(P);continue}let O=Boolean(I.key&&I.content_base64),A=vq(I,_.targetStorage);if(!O&&!A){U.missing_content+=1,_.warnings.push(`artifact_content_missing:${I.artifact_uri}`);continue}if(_.dryRun){U.copied+=1;continue}let L=I.artifact_uri;if(O&&I.key&&I.content_base64)L=(await _.targetStore.put({key:I.key,body:Buffer.from(I.content_base64,"base64"),content_type:I.content_type??void 0})).uri,D.set(I.artifact_uri,L);else if(A)D.set(I.artifact_uri,L);let z=zI(I.metadata_json,{}),W=typeof z.artifact_modified_at==="string"?z.artifact_modified_at:void 0,J={uri:L,key:I.key??z.key??I.artifact_uri,kind:I.kind,content_type:I.content_type??void 0,hash:I.hash??void 0,size_bytes:I.size_bytes??void 0,modified_at:W,metadata:{...z,synced_from_artifact_uri:I.artifact_uri,synced_from_machine_id:_.bundle.source.machine_id??void 0}};s$(_.db,[J]),U.copied+=1}return{result:U,uriMap:D,conflicts:g}}function u2(_,$){let D={..._};if(typeof D.artifact_uri==="string"&&$.has(D.artifact_uri))D.artifact_uri=$.get(D.artifact_uri);return D}function _V(_,$){let D=u$();_.query(` INSERT INTO knowledge_sync_changes ( id, origin_machine_id, updated_by_machine_id, entity_kind, entity_id, operation, base_hash, next_hash, source_ref, source_revision_id, artifact_uri, logical_clock, bundle_id, metadata_json, created_at ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(rE("syncchg"),$.sourceMachineId,$.localMachineId,$.entityKind,$.entityId,$.direction,null,$.nextHash,typeof $.row?.source_ref==="string"?$.row.source_ref:typeof $.row?.source_uri==="string"?$.row.source_uri:null,typeof $.row?.source_revision_id==="string"?$.row.source_revision_id:null,typeof $.row?.artifact_uri==="string"?$.row.artifact_uri:null,$.logicalClock,$.bundleId,JSON.stringify({source_machine_id:$.sourceMachineId,bundle_id:$.bundleId}),g)}function kE(_,$){let g=$.localHash??"",U=$.remoteHash??"";if(_.query(` + `).run(c2("syncchg"),$.sourceMachineId,$.localMachineId,$.entityKind,$.entityId,$.direction,null,$.nextHash,typeof $.row?.source_ref==="string"?$.row.source_ref:typeof $.row?.source_uri==="string"?$.row.source_uri:null,typeof $.row?.source_revision_id==="string"?$.row.source_revision_id:null,typeof $.row?.artifact_uri==="string"?$.row.artifact_uri:null,$.logicalClock,$.bundleId,JSON.stringify({source_machine_id:$.sourceMachineId,bundle_id:$.bundleId}),D)}function y2(_,$){let D=$.localHash??"",g=$.remoteHash??"";if(_.query(` SELECT id FROM knowledge_sync_conflicts WHERE entity_kind = ? AND entity_id = ? @@ -890,7 +890,7 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, AND status IN ('resolved', 'ignored') AND resolved_at IS NOT NULL LIMIT 1 - `).get($.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,g,U))return!0;let I=_.query(` + `).get($.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,D,g))return!0;let I=_.query(` SELECT id FROM knowledge_sync_conflicts WHERE entity_kind = ? AND entity_id = ? @@ -901,7 +901,7 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, AND status IN ('resolved', 'ignored') AND resolved_at IS NOT NULL LIMIT 1 - `).get($.entityKind,$.entityId,$.remoteMachineId,$.localMachineId,U,g);return Boolean(I)}function HE(_,$){if(_.query(` + `).get($.entityKind,$.entityId,$.remoteMachineId,$.localMachineId,g,D);return Boolean(I)}function x2(_,$){if(_.query(` SELECT id FROM knowledge_sync_conflicts WHERE entity_kind = ? AND entity_id = ? @@ -912,13 +912,13 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, AND COALESCE(base_hash, '') = COALESCE(?, '') AND status = 'open' LIMIT 1 - `).get($.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,$.localHash??null,$.remoteHash??null,$.baseHash??null))return!1;let U=u$();return _.query(` + `).get($.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,$.localHash??null,$.remoteHash??null,$.baseHash??null))return!1;let g=u$();return _.query(` INSERT INTO knowledge_sync_conflicts ( id, entity_kind, entity_id, local_machine_id, remote_machine_id, local_hash, remote_hash, base_hash, status, resolution_strategy, proposed_patch_uri, approved_by, resolved_at, metadata_json, created_at ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(rE("syncconf"),$.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,$.localHash??null,$.remoteHash??null,$.baseHash??null,$.status??"open",$.resolutionStrategy??null,$.proposedPatchUri??null,$.approvedBy??null,$.resolvedAt??null,JSON.stringify($.metadata??{}),U),!0}function xB(_,$){return _.query("SELECT * FROM knowledge_sync_imports WHERE bundle_id = ?").get($)??null}function yB(_,$){let g=$.now??u$();_.query(` + `).run(c2("syncconf"),$.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,$.localHash??null,$.remoteHash??null,$.baseHash??null,$.status??"open",$.resolutionStrategy??null,$.proposedPatchUri??null,$.approvedBy??null,$.resolvedAt??null,JSON.stringify($.metadata??{}),g),!0}function $V(_,$){return _.query("SELECT * FROM knowledge_sync_imports WHERE bundle_id = ?").get($)??null}function DV(_,$){let D=$.now??u$();_.query(` INSERT INTO knowledge_sync_imports ( bundle_id, source_machine_id, target_machine_id, direction, status, content_hash, table_clocks_json, tables_json, generated_at, applied_at, @@ -928,13 +928,13 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, status = excluded.status, applied_at = excluded.applied_at, metadata_json = excluded.metadata_json - `).run($.bundleId,$.sourceMachineId,$.targetMachineId,$.direction,$.status,$.contentHash,JSON.stringify($.bundle.table_clocks??[]),JSON.stringify($.tableResults),$.bundle.generated_at,g,JSON.stringify({conflicts:$.conflicts,artifacts:$.artifacts,source_workspace_home:$.bundle.source.workspace_home}))}function hB(_){return{ok:!0,protocol_version:V6,min_protocol_version:F6,dry_run:!1,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:_.targetBundle.source.sqlite_schema_version,artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:_.bundle.tables.filter(($)=>!ig.has($.table)).map(($)=>({table:$.table,source_rows:$.rows.length,target_rows:fE(_.targetBundle,$.table)?.rows.length??0,inserted:0,updated:0,deleted:0,skipped:$.rows.length,conflicts:0,stale_skipped:0})),artifacts:{source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:_.bundle.artifacts.length,conflicts:0,missing_content:0},conflicts_created:0,bundle_id:_.bundleId,replayed:!0,clocks:{advanced:0,stale_tables:0},warnings:[..._.warnings,`bundle_replay_skipped:${_.bundleId}`],message:`Skipped already-applied bundle ${_.bundleId}`}}function cB(_,$){let g=O4(_.artifacts),U=O4($.artifacts);for(let D of _.tables){if(ig.has(D.table))continue;let I=fE($,D.table),N=IX(_,D.table)?.high_water_hash??JI(D.table,D.rows,g);if(JI(D.table,I?.rows??[],U)!==N)return!1}return!0}async function WI(_){CB(_.bundle),h(_.targetDbPath);let $=[..._.bundle.warnings],g=_.dryRun===!0,U=$X(_.localMachineId),D=_.bundle.source.machine_id??"unknown",I=rB(_.bundle),j=PX(_.bundle),N=_.targetBundle??lg({dbPath:_.targetDbPath,scope:_.targetScope,workspaceHome:_.targetWorkspaceHome,storage:_.targetStorage,machineId:U,includeArtifactContent:!1,recordClocks:!g}),O=v(_.targetDbPath);try{if(!g&&xB(O,I)&&cB(_.bundle,N))return hB({bundle:_.bundle,targetBundle:N,targetScope:_.targetScope,targetWorkspaceHome:_.targetWorkspaceHome,targetStorage:_.targetStorage,direction:_.direction,warnings:$,bundleId:I});let A=await fB({db:O,bundle:_.bundle,targetBundle:N,targetStorage:_.targetStorage,targetStore:_.targetStore,dryRun:g,direction:_.direction,localMachineId:U,warnings:$}),L=O4(_.bundle.artifacts),z=O4(N.artifacts),W=[],J=0,P=0,S=0;for(let R of _.bundle.tables){if(R.table==="storage_objects"||ig.has(R.table))continue;if(!J$(O,R.table))continue;let K=IX(_.bundle,R.table),Q=dg(O,R.table,D),T=fE(N,R.table),q=vB(R.table,T?.rows??[]),V=new Set(R.rows.map((I_)=>E4(R.table,I_))),Z=OB(O,R.table,D),e=[],D_={table:R.table,source_rows:R.rows.length,target_rows:T?.rows.length??0,inserted:0,updated:0,deleted:0,skipped:0,conflicts:0,stale_skipped:0};if(!K)$.push(`legacy_clock_missing:${R.table}`);else if(NB(Q,K)){S+=1,D_.skipped+=R.rows.length,D_.stale_skipped=R.rows.length,$.push(`stale_table_skipped:${R.table}:${D}:${K.logical_clock}`),W.push(D_);continue}for(let I_ of R.rows){let J_=E4(R.table,I_),a=q.get(J_),r_=N4(I_,L);if(!a){D_.inserted+=1,e.push(bE(I_,A.uriMap));continue}let K_=N4(a,z);if(K_===r_){D_.skipped+=1;continue}let G_=Z.get(J_);if(Z.has(J_)&&G_===K_){D_.updated+=1,e.push(bE(I_,A.uriMap));continue}let H_={entityKind:R.table,entityId:J_,localMachineId:U,remoteMachineId:D,localHash:K_,remoteHash:r_,baseHash:Q?.high_water_hash??null,metadata:{direction:_.direction,bundle_id:I,incoming_logical_clock:K?.logical_clock??null,current_logical_clock:Q?.logical_clock??null,source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:hg(a),remote_row:hg(I_)}};if(kE(O,H_)){D_.skipped+=1;continue}if(D_.conflicts+=1,!g&&HE(O,H_))J+=1}if(!g&&e.length>0){let I_=e.map((J_)=>bE(J_,A.uriMap));EB(O,R.table,I_),PB(O,R.table,I_);for(let J_ of I_)uB(O,{direction:_.direction,sourceMachineId:_.bundle.source.machine_id??"unknown",localMachineId:U,entityKind:R.table,entityId:E4(R.table,J_),nextHash:N4(J_,O4(_.bundle.artifacts)),logicalClock:K?.logical_clock??0,bundleId:I,row:J_})}for(let[I_,J_]of Z){if(V.has(I_))continue;let a=q.get(I_);if(!a)continue;let r_=N4(a,z);if(J_&&r_!==J_){let K_={entityKind:R.table,entityId:I_,localMachineId:U,remoteMachineId:D,localHash:r_,remoteHash:null,baseHash:J_,metadata:{direction:_.direction,bundle_id:I,reason:"remote_owned_row_missing_from_incoming_bundle",source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:hg(a),remote_row:null}};if(kE(O,K_)){D_.skipped+=1;continue}if(D_.conflicts+=1,!g&&HE(O,K_))J+=1;continue}if(D_.deleted+=1,!g)LB(O,R.table,I_)}if(!g&&K)zI(O,{table:R.table,machineId:D,logicalClock:K.logical_clock,highWaterHash:K.high_water_hash,highWaterBundleId:I,originMachineId:D,updatedByMachineId:U,lastAppliedAt:u$(),metadata:{source:"import",direction:_.direction,row_count:R.rows.length,inserted:D_.inserted,updated:D_.updated,deleted:D_.deleted,skipped:D_.skipped,conflicts:D_.conflicts}}),P+=1;W.push(D_)}for(let R of A.conflicts)if(!g){if(HE(O,{...R,baseHash:R.baseHash??null,metadata:{...R.metadata,bundle_id:I}}))J+=1}let X=W.reduce((R,K)=>R+K.inserted,0),G=W.reduce((R,K)=>R+K.conflicts,0)+A.result.conflicts;if(!g)yB(O,{bundle:_.bundle,bundleId:I,contentHash:j,sourceMachineId:D,targetMachineId:U,direction:_.direction,status:G===0?"applied":"conflicted",tableResults:W,conflicts:G,artifacts:A.result});return{ok:G===0,protocol_version:V6,min_protocol_version:F6,dry_run:g,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:v_(O),artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:W,artifacts:A.result,conflicts_created:J,bundle_id:I,replayed:!1,clocks:{advanced:P,stale_tables:S},warnings:$,message:`${_.dryRun?"Would import":"Imported"} ${X} row(s), copied ${A.result.copied} artifact(s), ${G} conflict(s)`}}finally{O.close()}}function zX(_){h(_.dbPath);let $=v(_.dbPath),g=u$(_.now);try{let U=_.topology?HB($,_.topology,g):0,D=EX($),I=q_(GB($)),j=_.machineId??_.topology?.local_machine_id??"unknown",N=q_(_.storage.artifact_store.uri_prefix),O=q_(_.workspaceHome),A=cg(K0({machine_id:j,scope:_.scope,workspace_home:O,sqlite_schema_version:v_($),artifact_root_uri:N,tables:D,artifacts:I})),L={id:rE("syncsnap"),machine_id:j,scope:_.scope,workspace_home:O,sqlite_schema_version:v_($),artifact_root_uri:N,content_hash:A,tables_json:JSON.stringify(D),artifact_hashes_json:JSON.stringify(I),created_at:g};$.query(` + `).run($.bundleId,$.sourceMachineId,$.targetMachineId,$.direction,$.status,$.contentHash,JSON.stringify($.bundle.table_clocks??[]),JSON.stringify($.tableResults),$.bundle.generated_at,D,JSON.stringify({conflicts:$.conflicts,artifacts:$.artifacts,source_workspace_home:$.bundle.source.workspace_home}))}function UV(_){return{ok:!0,protocol_version:F6,min_protocol_version:K6,dry_run:!1,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:_.targetBundle.source.sqlite_schema_version,artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:_.bundle.tables.filter(($)=>!lD.has($.table)).map(($)=>({table:$.table,source_rows:$.rows.length,target_rows:m2(_.targetBundle,$.table)?.rows.length??0,inserted:0,updated:0,deleted:0,skipped:$.rows.length,conflicts:0,stale_skipped:0})),artifacts:{source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:_.bundle.artifacts.length,conflicts:0,missing_content:0},conflicts_created:0,bundle_id:_.bundleId,replayed:!0,clocks:{advanced:0,stale_tables:0},warnings:[..._.warnings,`bundle_replay_skipped:${_.bundleId}`],message:`Skipped already-applied bundle ${_.bundleId}`}}function gV(_,$){let D=O4(_.artifacts),g=O4($.artifacts);for(let U of _.tables){if(lD.has(U.table))continue;let I=m2($,U.table),N=GX(_,U.table)?.high_water_hash??PI(U.table,U.rows,D);if(PI(U.table,I?.rows??[],g)!==N)return!1}return!0}async function XI(_){oq(_.bundle),h(_.targetDbPath);let $=[..._.bundle.warnings],D=_.dryRun===!0,g=zX(_.localMachineId),U=_.bundle.source.machine_id??"unknown",I=pq(_.bundle),j=FX(_.bundle),N=_.targetBundle??tD({dbPath:_.targetDbPath,scope:_.targetScope,workspaceHome:_.targetWorkspaceHome,storage:_.targetStorage,machineId:g,includeArtifactContent:!1,recordClocks:!D}),O=f(_.targetDbPath);try{if(!D&&$V(O,I)&&gV(_.bundle,N))return UV({bundle:_.bundle,targetBundle:N,targetScope:_.targetScope,targetWorkspaceHome:_.targetWorkspaceHome,targetStorage:_.targetStorage,direction:_.direction,warnings:$,bundleId:I});let A=await sq({db:O,bundle:_.bundle,targetBundle:N,targetStorage:_.targetStorage,targetStore:_.targetStore,dryRun:D,direction:_.direction,localMachineId:g,warnings:$}),L=O4(_.bundle.artifacts),z=O4(N.artifacts),W=[],J=0,P=0,S=0;for(let G of _.bundle.tables){if(G.table==="storage_objects"||lD.has(G.table))continue;if(!J$(O,G.table))continue;let V=GX(_.bundle,G.table),Q=mD(O,G.table,U),T=m2(N,G.table),B=eq(G.table,T?.rows??[]),F=new Set(G.rows.map((I_)=>E4(G.table,I_))),Z=Vq(O,G.table,U),e=[],U_={table:G.table,source_rows:G.rows.length,target_rows:T?.rows.length??0,inserted:0,updated:0,deleted:0,skipped:0,conflicts:0,stale_skipped:0};if(!V)$.push(`legacy_clock_missing:${G.table}`);else if(Bq(Q,V)){S+=1,U_.skipped+=G.rows.length,U_.stale_skipped=G.rows.length,$.push(`stale_table_skipped:${G.table}:${U}:${V.logical_clock}`),W.push(U_);continue}for(let I_ of G.rows){let J_=E4(G.table,I_),a=B.get(J_),v_=N4(I_,L);if(!a){U_.inserted+=1,e.push(u2(I_,A.uriMap));continue}let V_=N4(a,z);if(V_===v_){U_.skipped+=1;continue}let R_=Z.get(J_);if(Z.has(J_)&&R_===V_){U_.updated+=1,e.push(u2(I_,A.uriMap));continue}let H_={entityKind:G.table,entityId:J_,localMachineId:g,remoteMachineId:U,localHash:V_,remoteHash:v_,baseHash:Q?.high_water_hash??null,metadata:{direction:_.direction,bundle_id:I,incoming_logical_clock:V?.logical_clock??null,current_logical_clock:Q?.logical_clock??null,source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:cD(a),remote_row:cD(I_)}};if(y2(O,H_)){U_.skipped+=1;continue}if(U_.conflicts+=1,!D&&x2(O,H_))J+=1}if(!D&&e.length>0){let I_=e.map((J_)=>u2(J_,A.uriMap));qq(O,G.table,I_),Zq(O,G.table,I_);for(let J_ of I_)_V(O,{direction:_.direction,sourceMachineId:_.bundle.source.machine_id??"unknown",localMachineId:g,entityKind:G.table,entityId:E4(G.table,J_),nextHash:N4(J_,O4(_.bundle.artifacts)),logicalClock:V?.logical_clock??0,bundleId:I,row:J_})}for(let[I_,J_]of Z){if(F.has(I_))continue;let a=B.get(I_);if(!a)continue;let v_=N4(a,z);if(J_&&v_!==J_){let V_={entityKind:G.table,entityId:I_,localMachineId:g,remoteMachineId:U,localHash:v_,remoteHash:null,baseHash:J_,metadata:{direction:_.direction,bundle_id:I,reason:"remote_owned_row_missing_from_incoming_bundle",source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:cD(a),remote_row:null}};if(y2(O,V_)){U_.skipped+=1;continue}if(U_.conflicts+=1,!D&&x2(O,V_))J+=1;continue}if(U_.deleted+=1,!D)Kq(O,G.table,I_)}if(!D&&V)SI(O,{table:G.table,machineId:U,logicalClock:V.logical_clock,highWaterHash:V.high_water_hash,highWaterBundleId:I,originMachineId:U,updatedByMachineId:g,lastAppliedAt:u$(),metadata:{source:"import",direction:_.direction,row_count:G.rows.length,inserted:U_.inserted,updated:U_.updated,deleted:U_.deleted,skipped:U_.skipped,conflicts:U_.conflicts}}),P+=1;W.push(U_)}for(let G of A.conflicts)if(!D){if(x2(O,{...G,baseHash:G.baseHash??null,metadata:{...G.metadata,bundle_id:I}}))J+=1}let X=W.reduce((G,V)=>G+V.inserted,0),R=W.reduce((G,V)=>G+V.conflicts,0)+A.result.conflicts;if(!D)DV(O,{bundle:_.bundle,bundleId:I,contentHash:j,sourceMachineId:U,targetMachineId:g,direction:_.direction,status:R===0?"applied":"conflicted",tableResults:W,conflicts:R,artifacts:A.result});return{ok:R===0,protocol_version:F6,min_protocol_version:K6,dry_run:D,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:f_(O),artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:W,artifacts:A.result,conflicts_created:J,bundle_id:I,replayed:!1,clocks:{advanced:P,stale_tables:S},warnings:$,message:`${_.dryRun?"Would import":"Imported"} ${X} row(s), copied ${A.result.copied} artifact(s), ${R} conflict(s)`}}finally{O.close()}}function KX(_){h(_.dbPath);let $=f(_.dbPath),D=u$(_.now);try{let g=_.topology?lq($,_.topology,D):0,U=QX($),I=B_(fq($)),j=_.machineId??_.topology?.local_machine_id??"unknown",N=B_(_.storage.artifact_store.uri_prefix),O=B_(_.workspaceHome),A=nD(F0({machine_id:j,scope:_.scope,workspace_home:O,sqlite_schema_version:f_($),artifact_root_uri:N,tables:U,artifacts:I})),L={id:c2("syncsnap"),machine_id:j,scope:_.scope,workspace_home:O,sqlite_schema_version:f_($),artifact_root_uri:N,content_hash:A,tables_json:JSON.stringify(U),artifact_hashes_json:JSON.stringify(I),created_at:D};$.query(` INSERT INTO knowledge_sync_snapshots ( id, machine_id, scope, workspace_home, sqlite_schema_version, artifact_root_uri, content_hash, tables_json, artifact_hashes_json, created_at ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) - `).run(L.id,L.machine_id,L.scope,L.workspace_home,L.sqlite_schema_version,L.artifact_root_uri,L.content_hash,L.tables_json,L.artifact_hashes_json,L.created_at);let z=new Map;for(let W of gX($,DX()).filter((J)=>!ig.has(J))){let J=UX($,W).map((G)=>q_(G)),P=JI(W,J,z),S=dg($,W,j),X=S?.high_water_hash===P?S.logical_clock:(S?.logical_clock??0)+1;zI($,{table:W,machineId:j,logicalClock:X,highWaterHash:P,highWaterBundleId:L.id,originMachineId:S?.origin_machine_id??j,updatedByMachineId:j,lastAppliedAt:g,metadata:{source:"snapshot",row_count:J.length},now:g})}return{ok:!0,snapshot:{...L,tables:D,artifact_hashes:I},machines_upserted:U,message:`Recorded sync snapshot ${L.id}`}}finally{$.close()}}function SX(_){h(_.dbPath);let $=v(_.dbPath);try{let g=$.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all(),U=$.query("SELECT * FROM knowledge_sync_snapshots ORDER BY created_at DESC LIMIT 1").get()??null,D=$.query("SELECT status, COUNT(*) AS count FROM knowledge_sync_conflicts GROUP BY status ORDER BY status").all(),I=$.query("SELECT operation, COUNT(*) AS count FROM knowledge_sync_changes GROUP BY operation ORDER BY operation").all(),j=UB($),N=$.query("SELECT * FROM knowledge_sync_imports ORDER BY applied_at DESC LIMIT 1").get()??null,O=D.reduce((L,z)=>L+z.count,0),A=D.filter((L)=>L.status!=="resolved"&&L.status!=="ignored").reduce((L,z)=>L+z.count,0);return{ok:!0,scope:_.scope,workspace_home:q_(_.workspaceHome),sqlite_schema_version:v_($),local_machine_id:_.localMachineId??null,machines:{total:g.length,rows:q_(g)},snapshots:{total:OI($,"knowledge_sync_snapshots"),latest:q_(U)},changes:{total:OI($,"knowledge_sync_changes"),by_operation:I},clocks:{total:j.length,rows:j},imports:{total:OI($,"knowledge_sync_imports"),latest:q_(N)},conflicts:{total:O,by_status:D,open:A},table_counts:EX($),message:`${g.length} machine(s), ${A} open sync conflict(s)`}}finally{$.close()}}function uE(_){return{..._,metadata:PI(_.metadata_json,{})}}function XI(_,$){h(_);let g=v(_);try{let U=g.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($);return U?uE(U):null}finally{g.close()}}function WX(_,$={}){h(_);let g=v(_),U=Math.max(1,Math.min($.limit??50,200));try{return($.status?g.query("SELECT * FROM knowledge_sync_conflicts WHERE status = ? ORDER BY created_at DESC LIMIT ?").all($.status,U):g.query("SELECT * FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ?").all(U)).map(uE)}finally{g.close()}}function nB(_){return LI.includes(_)?_:null}function dB(_,$){let g=nB($.entity_kind);if(!g||!J$(_,g))return null;let U=jX(g,$.entity_id);if(!U)return null;let D=NX(g);return _.query(`SELECT * FROM ${j$(g)} WHERE ${D} LIMIT 1`).get(...U)}function mB(_,$){for(let g of $){let U=_[g];if(U&&typeof U==="object"&&!Array.isArray(U))return hg(U)}return null}function eW(_,$){if(typeof $!=="string")return;let g=$.trim();if(!g)return;if(g.startsWith("open-files://")||g.startsWith("s3://")||g.startsWith("file://")||g.startsWith("https://")||g.startsWith("http://"))_.add(g)}function CE(_,$=new Set,g=0){if(g>8||_===null||_===void 0)return $;if(typeof _==="string")return eW($,_),$;if(Array.isArray(_)){for(let U of _)CE(U,$,g+1);return $}if(typeof _==="object")for(let[U,D]of Object.entries(_)){if(U==="source_ref"||U==="source_uri"||U==="artifact_uri"||U.endsWith("_uri"))eW($,D);CE(D,$,g+1)}return $}function XX(_){let $=[{id:"conflict",kind:"metadata",ref:`knowledge-sync-conflict://${_.conflict.id}`,hash:_.conflict.base_hash,quote:`Conflict on ${_.conflict.entity_kind}:${_.conflict.entity_id}`}];if(_.localRow)$.push({id:"local-row",kind:"row",ref:`${_.conflict.entity_kind}:${_.conflict.entity_id}:local`,hash:_.conflict.local_hash,quote:JSON.stringify(_.localRow).slice(0,300)});if(_.remoteRow)$.push({id:"remote-row",kind:"row",ref:`${_.conflict.entity_kind}:${_.conflict.entity_id}:remote`,hash:_.conflict.remote_hash,quote:JSON.stringify(_.remoteRow).slice(0,300)});return _.sourceRefs.slice(0,10).forEach((g,U)=>{$.push({id:`source-${U+1}`,kind:g.startsWith("file://")||g.startsWith("s3://")?"artifact":"source_ref",ref:g,hash:null,quote:null})}),$}function RX(_,$){let g=XI(_,$);if(!g)throw Error(`Sync conflict not found: ${$}`);h(_);let U=v(_);try{let D=hg(dB(U,g)),I=mB(g.metadata,["remote_row","source_row","incoming_row"]),N=[...CE({conflict:{entity_kind:g.entity_kind,entity_id:g.entity_id,metadata:g.metadata},local_row:D,remote_row:I})].slice(0,25),O=[{name:"knowledge_sync_conflict_get",input:{id:$},output_summary:`${g.entity_kind}:${g.entity_id} status=${g.status}`},{name:"knowledge_catalog_row_get",input:{table:g.entity_kind,key:g.entity_id},output_summary:D?"local row found":"local row unavailable"},{name:"knowledge_source_ref_extract",input:{id:$},output_summary:`${N.length} source/artifact ref(s) found`}];return{conflict:g,local_row:D,remote_row:I,source_refs:N,citations:XX({conflict:g,localRow:D,remoteRow:I,sourceRefs:N}),read_only_tools:O}}finally{U.close()}}function tg(_,$){let g=XI(_,$);if(!g)throw Error(`Sync conflict not found: ${$}`);let U=g.entity_kind==="wiki_pages"?"manual-merge":"review-and-select",D=[`Conflict ${g.id} affects ${g.entity_kind}:${g.entity_id}.`,`Local machine ${g.local_machine_id} has ${g.local_hash??"unknown hash"}.`,`Remote machine ${g.remote_machine_id} has ${g.remote_hash??"unknown hash"}.`].join(" "),I=["Review this knowledge sync conflict before any durable write.",`Entity: ${g.entity_kind}:${g.entity_id}`,`Local machine/hash: ${g.local_machine_id} / ${g.local_hash??"unknown"}`,`Remote machine/hash: ${g.remote_machine_id} / ${g.remote_hash??"unknown"}`,`Base hash: ${g.base_hash??"unknown"}`,`Metadata: ${JSON.stringify(g.metadata)}`,"Return a concise merge recommendation with citations to the competing records. Do not write changes without approval."].join(` -`);return{ok:!0,conflict:g,requires_approval:!0,mode:"deterministic",proposed_strategy:U,summary:D,merge_prompt:I,proposed_patch:null,citations:XX({conflict:g,localRow:null,remoteRow:null,sourceRefs:[]}),confidence:null,agent:null,warnings:g.status==="resolved"?["conflict_already_resolved"]:[],message:`Prepared approval-gated merge proposal for ${g.id}`}}function GX(_,$){h(_);let g=v(_),U=u$();try{let D=g.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($.id);if(!D)throw Error(`Sync conflict not found: ${$.id}`);g.query(` + `).run(L.id,L.machine_id,L.scope,L.workspace_home,L.sqlite_schema_version,L.artifact_root_uri,L.content_hash,L.tables_json,L.artifact_hashes_json,L.created_at);let z=new Map;for(let W of SX($,WX()).filter((J)=>!lD.has(J))){let J=XX($,W).map((R)=>B_(R)),P=PI(W,J,z),S=mD($,W,j),X=S?.high_water_hash===P?S.logical_clock:(S?.logical_clock??0)+1;SI($,{table:W,machineId:j,logicalClock:X,highWaterHash:P,highWaterBundleId:L.id,originMachineId:S?.origin_machine_id??j,updatedByMachineId:j,lastAppliedAt:D,metadata:{source:"snapshot",row_count:J.length},now:D})}return{ok:!0,snapshot:{...L,tables:U,artifact_hashes:I},machines_upserted:g,message:`Recorded sync snapshot ${L.id}`}}finally{$.close()}}function MX(_){h(_.dbPath);let $=f(_.dbPath);try{let D=$.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all(),g=$.query("SELECT * FROM knowledge_sync_snapshots ORDER BY created_at DESC LIMIT 1").get()??null,U=$.query("SELECT status, COUNT(*) AS count FROM knowledge_sync_conflicts GROUP BY status ORDER BY status").all(),I=$.query("SELECT operation, COUNT(*) AS count FROM knowledge_sync_changes GROUP BY operation ORDER BY operation").all(),j=Yq($),N=$.query("SELECT * FROM knowledge_sync_imports ORDER BY applied_at DESC LIMIT 1").get()??null,O=U.reduce((L,z)=>L+z.count,0),A=U.filter((L)=>L.status!=="resolved"&&L.status!=="ignored").reduce((L,z)=>L+z.count,0);return{ok:!0,scope:_.scope,workspace_home:B_(_.workspaceHome),sqlite_schema_version:f_($),local_machine_id:_.localMachineId??null,machines:{total:D.length,rows:B_(D)},snapshots:{total:AI($,"knowledge_sync_snapshots"),latest:B_(g)},changes:{total:AI($,"knowledge_sync_changes"),by_operation:I},clocks:{total:j.length,rows:j},imports:{total:AI($,"knowledge_sync_imports"),latest:B_(N)},conflicts:{total:O,by_status:U,open:A},table_counts:QX($),message:`${D.length} machine(s), ${A} open sync conflict(s)`}}finally{$.close()}}function i2(_){return{..._,metadata:zI(_.metadata_json,{})}}function GI(_,$){h(_);let D=f(_);try{let g=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($);return g?i2(g):null}finally{D.close()}}function ZX(_,$={}){h(_);let D=f(_),g=Math.max(1,Math.min($.limit??50,200));try{return($.status?D.query("SELECT * FROM knowledge_sync_conflicts WHERE status = ? ORDER BY created_at DESC LIMIT ?").all($.status,g):D.query("SELECT * FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ?").all(g)).map(i2)}finally{D.close()}}function IV(_){return JI.includes(_)?_:null}function jV(_,$){let D=IV($.entity_kind);if(!D||!J$(_,D))return null;let g=RX(D,$.entity_id);if(!g)return null;let U=YX(D);return _.query(`SELECT * FROM ${j$(D)} WHERE ${U} LIMIT 1`).get(...g)}function NV(_,$){for(let D of $){let g=_[D];if(g&&typeof g==="object"&&!Array.isArray(g))return cD(g)}return null}function AX(_,$){if(typeof $!=="string")return;let D=$.trim();if(!D)return;if(D.startsWith("open-files://")||D.startsWith("s3://")||D.startsWith("file://")||D.startsWith("https://")||D.startsWith("http://"))_.add(D)}function h2(_,$=new Set,D=0){if(D>8||_===null||_===void 0)return $;if(typeof _==="string")return AX($,_),$;if(Array.isArray(_)){for(let g of _)h2(g,$,D+1);return $}if(typeof _==="object")for(let[g,U]of Object.entries(_)){if(g==="source_ref"||g==="source_uri"||g==="artifact_uri"||g.endsWith("_uri"))AX($,U);h2(U,$,D+1)}return $}function bX(_){let $=[{id:"conflict",kind:"metadata",ref:`knowledge-sync-conflict://${_.conflict.id}`,hash:_.conflict.base_hash,quote:`Conflict on ${_.conflict.entity_kind}:${_.conflict.entity_id}`}];if(_.localRow)$.push({id:"local-row",kind:"row",ref:`${_.conflict.entity_kind}:${_.conflict.entity_id}:local`,hash:_.conflict.local_hash,quote:JSON.stringify(_.localRow).slice(0,300)});if(_.remoteRow)$.push({id:"remote-row",kind:"row",ref:`${_.conflict.entity_kind}:${_.conflict.entity_id}:remote`,hash:_.conflict.remote_hash,quote:JSON.stringify(_.remoteRow).slice(0,300)});return _.sourceRefs.slice(0,10).forEach((D,g)=>{$.push({id:`source-${g+1}`,kind:D.startsWith("file://")||D.startsWith("s3://")?"artifact":"source_ref",ref:D,hash:null,quote:null})}),$}function HX(_,$){let D=GI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);h(_);let g=f(_);try{let U=cD(jV(g,D)),I=NV(D.metadata,["remote_row","source_row","incoming_row"]),N=[...h2({conflict:{entity_kind:D.entity_kind,entity_id:D.entity_id,metadata:D.metadata},local_row:U,remote_row:I})].slice(0,25),O=[{name:"knowledge_sync_conflict_get",input:{id:$},output_summary:`${D.entity_kind}:${D.entity_id} status=${D.status}`},{name:"knowledge_catalog_row_get",input:{table:D.entity_kind,key:D.entity_id},output_summary:U?"local row found":"local row unavailable"},{name:"knowledge_source_ref_extract",input:{id:$},output_summary:`${N.length} source/artifact ref(s) found`}];return{conflict:D,local_row:U,remote_row:I,source_refs:N,citations:bX({conflict:D,localRow:U,remoteRow:I,sourceRefs:N}),read_only_tools:O}}finally{g.close()}}function oD(_,$){let D=GI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);let g=D.entity_kind==="wiki_pages"?"manual-merge":"review-and-select",U=[`Conflict ${D.id} affects ${D.entity_kind}:${D.entity_id}.`,`Local machine ${D.local_machine_id} has ${D.local_hash??"unknown hash"}.`,`Remote machine ${D.remote_machine_id} has ${D.remote_hash??"unknown hash"}.`].join(" "),I=["Review this knowledge sync conflict before any durable write.",`Entity: ${D.entity_kind}:${D.entity_id}`,`Local machine/hash: ${D.local_machine_id} / ${D.local_hash??"unknown"}`,`Remote machine/hash: ${D.remote_machine_id} / ${D.remote_hash??"unknown"}`,`Base hash: ${D.base_hash??"unknown"}`,`Metadata: ${JSON.stringify(D.metadata)}`,"Return a concise merge recommendation with citations to the competing records. Do not write changes without approval."].join(` +`);return{ok:!0,conflict:D,requires_approval:!0,mode:"deterministic",proposed_strategy:g,summary:U,merge_prompt:I,proposed_patch:null,citations:bX({conflict:D,localRow:null,remoteRow:null,sourceRefs:[]}),confidence:null,agent:null,warnings:D.status==="resolved"?["conflict_already_resolved"]:[],message:`Prepared approval-gated merge proposal for ${D.id}`}}function kX(_,$){h(_);let D=f(_),g=u$();try{let U=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($.id);if(!U)throw Error(`Sync conflict not found: ${$.id}`);D.query(` UPDATE knowledge_sync_conflicts SET status = 'resolved', resolution_strategy = ?, @@ -942,27 +942,27 @@ ${W}`;else{let{generateText:Q}=await import("ai"),T=await xg(D,{config:$.config, approved_by = ?, resolved_at = ? WHERE id = ? - `).run($.strategy,$.proposedPatchUri??D.proposed_patch_uri,$.approvedBy,U,$.id);let I=g.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($.id);if(!I)throw Error(`Sync conflict not found after resolve: ${$.id}`);return uE(I)}finally{g.close()}}function eP(_){let g=(typeof _==="string"?_:JSON.stringify(_)).trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil(g*1.25))}function CF(_){let $=v(_.dbPath);try{$.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[_.runId,"sync-conflict-proposal",_.prompt,_.status,_.provider,_.model,JSON.stringify(_.metadata),_.now,_.now])}finally{$.close()}}function SR(_){let $=v(_.dbPath);try{$.run(`UPDATE runs + `).run($.strategy,$.proposedPatchUri??U.proposed_patch_uri,$.approvedBy,g,$.id);let I=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($.id);if(!I)throw Error(`Sync conflict not found after resolve: ${$.id}`);return i2(I)}finally{D.close()}}function IP(_){let D=(typeof _==="string"?_:JSON.stringify(_)).trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil(D*1.25))}function oK(_){let $=f(_.dbPath);try{$.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[_.runId,"sync-conflict-proposal",_.prompt,_.status,_.provider,_.model,JSON.stringify(_.metadata),_.now,_.now])}finally{$.close()}}function M9(_){let $=f(_.dbPath);try{$.run(`UPDATE runs SET status = ?, provider = ?, model = ?, cost_tokens = ?, cost_usd = ?, metadata_json = ?, updated_at = ? - WHERE id = ?`,[_.status,_.provider,_.model,_.usage.input_tokens+_.usage.output_tokens,_.usage.cost_usd,JSON.stringify(_.metadata),_.now,_.runId])}finally{$.close()}}function aP(_){let $=v(_.dbPath);try{$.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`event_${WR()}`,_.runId,_.level,_.event,JSON.stringify(_.metadata),_.now])}finally{$.close()}}function rF(_,$,g,U){let D=v(_);try{W0(D,{...g,run_id:$,created_at:U})}finally{D.close()}}function vF(_){return["Build an approval-gated merge proposal for this knowledge sync conflict.","Use only the supplied JSON evidence. Do not claim to inspect external files or write changes.","Return a patch recommendation that a human can review before approval.","",`Deterministic proposal: + WHERE id = ?`,[_.status,_.provider,_.model,_.usage.input_tokens+_.usage.output_tokens,_.usage.cost_usd,JSON.stringify(_.metadata),_.now,_.runId])}finally{$.close()}}function jP(_){let $=f(_.dbPath);try{$.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`event_${Z9()}`,_.runId,_.level,_.event,JSON.stringify(_.metadata),_.now])}finally{$.close()}}function pK(_,$,D,g){let U=f(_);try{X0(U,{...D,run_id:$,created_at:g})}finally{U.close()}}function eK(_){return["Build an approval-gated merge proposal for this knowledge sync conflict.","Use only the supplied JSON evidence. Do not claim to inspect external files or write changes.","Return a patch recommendation that a human can review before approval.","",`Deterministic proposal: ${JSON.stringify({proposed_strategy:_.deterministic.proposed_strategy,summary:_.deterministic.summary,warnings:_.deterministic.warnings},null,2)}`,"",`Conflict evidence: ${JSON.stringify(_.evidence,null,2)}`].join(` -`)}function wF(_){let $=typeof _==="number"&&Number.isFinite(_)?_:0.5;return Math.max(0,Math.min(1,$))}function fF(_,$){let g=_.kind==="choose_local"||_.kind==="choose_remote"||_.kind==="no_op"||_.kind==="custom"||_.kind==="manual_merge"?_.kind:"manual_merge";return{kind:g,target:typeof _.target==="string"&&_.target?_.target:$,strategy:typeof _.strategy==="string"&&_.strategy?_.strategy:g.replace("_","-"),summary:typeof _.summary==="string"&&_.summary?_.summary:"Review both sides before applying a merge.",diff:typeof _.diff==="string"&&_.diff?_.diff:null,metadata:_.metadata&&typeof _.metadata==="object"&&!Array.isArray(_.metadata)?_.metadata:{}}}function uF(_){let $=`${_.conflict.entity_kind}:${_.conflict.entity_id}`,g=Boolean(_.local_row&&_.remote_row);return{kind:g?"manual_merge":"custom",target:$,strategy:g?"manual-merge":"review-and-select",summary:g?`Fake AI proposal: compare local and remote ${$} row snapshots, then apply a reviewed manual merge.`:`Fake AI proposal: inspect ${$} with available conflict metadata before selecting a side.`,diff:g?[`--- ${$} local`,`+++ ${$} remote`,"@@ review-required @@",JSON.stringify({local:_.local_row,remote:_.remote_row},null,2).slice(0,1200)].join(` -`):null,metadata:{fake:!0,local_hash:_.conflict.local_hash,remote_hash:_.conflict.remote_hash,source_refs:_.source_refs}}}async function XR(_){let $=(_.now??new Date).toISOString();h(_.dbPath);let g=tg(_.dbPath,_.id),U=RX(_.dbPath,_.id),D=G$(_.modelRef??"default",_.config),I=w_(D),j=`run_${WR()}`,N=vF({deterministic:g,evidence:U});CF({dbPath:_.dbPath,runId:j,prompt:N,provider:I.provider,model:I.model,status:_.fake?"dry_run":"running",metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,read_only_tools:U.read_only_tools.map((W)=>W.name)},now:$}),aP({dbPath:_.dbPath,runId:j,level:"info",event:"conflict_evidence_retrieved",metadata:{citations:U.citations.length,source_refs:U.source_refs.length,read_only_tools:U.read_only_tools},now:$});let O,A,L=0.5,z={input_tokens:eP(N),output_tokens:0,cost_usd:0};if(_.fake)O=uF(U),A=O.summary,z.output_tokens=eP(A)+eP(O.diff??"");else try{let{generateObject:W}=await import("ai"),{z:J}=await Promise.resolve().then(() => (zR(),PR)),P=await xg(D,{config:_.config,env:_.env}),S=J.object({summary:J.string(),confidence:J.number().min(0).max(1),proposed_patch:J.object({kind:J.enum(["manual_merge","choose_local","choose_remote","no_op","custom"]),target:J.string(),strategy:J.string(),summary:J.string(),diff:J.string().nullable(),metadata:J.record(J.string(),J.unknown()).default({})})}),X=await W({model:P,schema:S,system:"You are a read-only knowledge sync conflict proposal agent. You produce reviewable proposals only; never approve or apply writes.",prompt:N});A=X.object.summary,L=wF(X.object.confidence),O=fF(X.object.proposed_patch,`${U.conflict.entity_kind}:${U.conflict.entity_id}`);let G=U4({provider:I.provider,model:I.model,usage:X.usage,providerMetadata:X.providerMetadata});z={input_tokens:G.input_tokens,output_tokens:G.output_tokens,cost_usd:G.cost_usd},rF(_.dbPath,j,G,$)}catch(W){throw aP({dbPath:_.dbPath,runId:j,level:"error",event:"conflict_proposal_generation_failed",metadata:{message:W instanceof Error?W.message:String(W)},now:$}),SR({dbPath:_.dbPath,runId:j,status:"failed",provider:I.provider,model:I.model,usage:z,metadata:{conflict_id:_.id,mode:"ai",error:W instanceof Error?W.message:String(W)},now:$}),W}return SR({dbPath:_.dbPath,runId:j,status:_.fake?"dry_run":"completed",provider:I.provider,model:I.model,usage:z,metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,confidence:L,proposed_strategy:O.strategy,citation_count:U.citations.length},now:$}),aP({dbPath:_.dbPath,runId:j,level:"info",event:_.fake?"fake_conflict_proposal_generated":"conflict_proposal_generated",metadata:{strategy:O.strategy,confidence:L,patch_kind:O.kind},now:$}),{...g,mode:"ai",proposed_strategy:O.strategy,summary:A,proposed_patch:O,citations:U.citations,confidence:L,agent:{generated:!0,provider:I.provider,model:I.model,run_id:j,read_only_tools:U.read_only_tools,usage:z},warnings:[...g.warnings,...U.remote_row?[]:["remote_row_snapshot_unavailable"]],message:`Prepared AI SDK approval-gated merge proposal for ${_.id}`}}import{createHash as xF,randomUUID as yF}from"crypto";import{existsSync as hF,readFileSync as cF}from"fs";import{basename as nF}from"path";function bj(_,$){return`${_}_${xF("sha256").update($).digest("hex").slice(0,20)}`}function a0(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function S_(_){return typeof _==="string"&&_.length>0?_:void 0}function dF(_){let $=S_(_.source_ref)??S_(_.source_uri)??S_(_.uri);if($)return $;let g=S_(_.file_id);if(g){let I=S_(_.revision_id)??S_(_.revision),j=`open-files://file/${encodeURIComponent(g)}`;return I?`${j}/revision/${encodeURIComponent(I)}`:j}let U=S_(_.source_id),D=S_(_.path);if(U&&D)return`open-files://source/${encodeURIComponent(U)}/path/${encodeURIComponent(D)}`;throw Error("Outbox event is missing source_ref, file_id, or source_id/path.")}function mF(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function iF(_){return S_(_.hash)??S_(_.checksum)??S_(_.sha256)??null}function lF(_,$,g){return S_(_.revision_id)??S_(_.revision)??S_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??g??null}function tF(_){return S_(_.previous_revision_id)??S_(_.previous_revision)??S_(_.previous_version_id)??null}function oF(_){return(S_(_.event_type)??S_(_.event)??S_(_.type)??S_(_.action)??S_(_.change_type)??"changed").toLowerCase()}function pF(_){let $=S_(_.path);return S_(_.title)??S_(_.name)??($?nF($):null)}function eF(_,$){let g=dF(_),U=A$(g),D=iF(_);return{raw:_,eventType:oF(_),sourceRef:g,sourceUri:mF(g,U),kind:U.kind,title:pF(_),revision:lF(_,U,D),previousRevision:tF(_),hash:D,status:S_(_.status)?.toLowerCase()??null,updatedAt:S_(_.updated_at)??$,acl:_.permissions??_.acl??void 0}}function aF(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let g=JSON.parse($);if(!Array.isArray(g))throw Error("Outbox array parse failed.");return g.map((U)=>{let D=a0(U);if(!D)throw Error("Outbox array entries must be objects.");return D})}if($.startsWith("{"))try{let g=JSON.parse($),U=a0(g);if(!U)throw Error("Outbox object parse failed.");if(Array.isArray(U.events))return U.events.map((D)=>{let I=a0(D);if(!I)throw Error("Outbox events entries must be objects.");return I});if("source_ref"in U||"source_uri"in U||"file_id"in U)return[U]}catch(g){let U=$.split(/\r?\n/).filter((D)=>D.trim().length>0);if(U.length<=1)throw g;return U.map((D)=>{let I=a0(JSON.parse(D));if(!I)throw Error("Outbox JSONL entries must be objects.");return I})}return $.split(/\r?\n/).filter((g)=>g.trim().length>0).map((g)=>{let U=a0(JSON.parse(g));if(!U)throw Error("Outbox JSONL entries must be objects.");return U})}async function sF(_,$,g){let U=new URL(_),D=U.hostname,I=decodeURIComponent(U.pathname.replace(/^\/+/,""));if(!D||!I)throw Error(`Invalid S3 outbox URI: ${_}`);if(g)q6(_,g);let[{S3Client:j,GetObjectCommand:N},{fromIni:O}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),A=$?.storage.type==="s3"&&$.storage.s3?.bucket===D?$.storage.s3:void 0,z=await new j({region:A?.region,credentials:A?.profile?O({profile:A.profile}):void 0,maxAttempts:A?.max_attempts}).send(new N({Bucket:D,Key:I}));if(!z.Body)return"";return await z.Body.transformToString()}async function _M(_,$,g){if(_.startsWith("s3://"))return sF(_,$,g);if(!hF(_))throw Error(`Outbox not found: ${_}`);return cF(_,"utf8")}function RR(_,$){let g={};if(_)try{g=a0(JSON.parse(_))??{}}catch{g={}}return JSON.stringify({...g,...$})}function $M(_,$,g){let U=bj("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) +`)}function aK(_){let $=typeof _==="number"&&Number.isFinite(_)?_:0.5;return Math.max(0,Math.min(1,$))}function sK(_,$){let D=_.kind==="choose_local"||_.kind==="choose_remote"||_.kind==="no_op"||_.kind==="custom"||_.kind==="manual_merge"?_.kind:"manual_merge";return{kind:D,target:typeof _.target==="string"&&_.target?_.target:$,strategy:typeof _.strategy==="string"&&_.strategy?_.strategy:D.replace("_","-"),summary:typeof _.summary==="string"&&_.summary?_.summary:"Review both sides before applying a merge.",diff:typeof _.diff==="string"&&_.diff?_.diff:null,metadata:_.metadata&&typeof _.metadata==="object"&&!Array.isArray(_.metadata)?_.metadata:{}}}function _M(_){let $=`${_.conflict.entity_kind}:${_.conflict.entity_id}`,D=Boolean(_.local_row&&_.remote_row);return{kind:D?"manual_merge":"custom",target:$,strategy:D?"manual-merge":"review-and-select",summary:D?`Fake AI proposal: compare local and remote ${$} row snapshots, then apply a reviewed manual merge.`:`Fake AI proposal: inspect ${$} with available conflict metadata before selecting a side.`,diff:D?[`--- ${$} local`,`+++ ${$} remote`,"@@ review-required @@",JSON.stringify({local:_.local_row,remote:_.remote_row},null,2).slice(0,1200)].join(` +`):null,metadata:{fake:!0,local_hash:_.conflict.local_hash,remote_hash:_.conflict.remote_hash,source_refs:_.source_refs}}}async function b9(_){let $=(_.now??new Date).toISOString();h(_.dbPath);let D=oD(_.dbPath,_.id),g=HX(_.dbPath,_.id),U=R$(_.modelRef??"default",_.config),I=w_(U),j=`run_${Z9()}`,N=eK({deterministic:D,evidence:g});oK({dbPath:_.dbPath,runId:j,prompt:N,provider:I.provider,model:I.model,status:_.fake?"dry_run":"running",metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,read_only_tools:g.read_only_tools.map((W)=>W.name)},now:$}),jP({dbPath:_.dbPath,runId:j,level:"info",event:"conflict_evidence_retrieved",metadata:{citations:g.citations.length,source_refs:g.source_refs.length,read_only_tools:g.read_only_tools},now:$});let O,A,L=0.5,z={input_tokens:IP(N),output_tokens:0,cost_usd:0};if(_.fake)O=_M(g),A=O.summary,z.output_tokens=IP(A)+IP(O.diff??"");else try{let{generateObject:W}=await import("ai"),{z:J}=await Promise.resolve().then(() => (K9(),F9)),P=await yD(U,{config:_.config,env:_.env}),S=J.object({summary:J.string(),confidence:J.number().min(0).max(1),proposed_patch:J.object({kind:J.enum(["manual_merge","choose_local","choose_remote","no_op","custom"]),target:J.string(),strategy:J.string(),summary:J.string(),diff:J.string().nullable(),metadata:J.record(J.string(),J.unknown()).default({})})}),X=await W({model:P,schema:S,system:"You are a read-only knowledge sync conflict proposal agent. You produce reviewable proposals only; never approve or apply writes.",prompt:N});A=X.object.summary,L=aK(X.object.confidence),O=sK(X.object.proposed_patch,`${g.conflict.entity_kind}:${g.conflict.entity_id}`);let R=g4({provider:I.provider,model:I.model,usage:X.usage,providerMetadata:X.providerMetadata});z={input_tokens:R.input_tokens,output_tokens:R.output_tokens,cost_usd:R.cost_usd},pK(_.dbPath,j,R,$)}catch(W){throw jP({dbPath:_.dbPath,runId:j,level:"error",event:"conflict_proposal_generation_failed",metadata:{message:W instanceof Error?W.message:String(W)},now:$}),M9({dbPath:_.dbPath,runId:j,status:"failed",provider:I.provider,model:I.model,usage:z,metadata:{conflict_id:_.id,mode:"ai",error:W instanceof Error?W.message:String(W)},now:$}),W}return M9({dbPath:_.dbPath,runId:j,status:_.fake?"dry_run":"completed",provider:I.provider,model:I.model,usage:z,metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,confidence:L,proposed_strategy:O.strategy,citation_count:g.citations.length},now:$}),jP({dbPath:_.dbPath,runId:j,level:"info",event:_.fake?"fake_conflict_proposal_generated":"conflict_proposal_generated",metadata:{strategy:O.strategy,confidence:L,patch_kind:O.kind},now:$}),{...D,mode:"ai",proposed_strategy:O.strategy,summary:A,proposed_patch:O,citations:g.citations,confidence:L,agent:{generated:!0,provider:I.provider,model:I.model,run_id:j,read_only_tools:g.read_only_tools,usage:z},warnings:[...D.warnings,...g.remote_row?[]:["remote_row_snapshot_unavailable"]],message:`Prepared AI SDK approval-gated merge proposal for ${_.id}`}}import{createHash as $M,randomUUID as DM}from"crypto";import{existsSync as UM,readFileSync as gM}from"fs";import{basename as IM}from"path";function Hj(_,$){return`${_}_${$M("sha256").update($).digest("hex").slice(0,20)}`}function s0(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function S_(_){return typeof _==="string"&&_.length>0?_:void 0}function jM(_){let $=S_(_.source_ref)??S_(_.source_uri)??S_(_.uri);if($)return $;let D=S_(_.file_id);if(D){let I=S_(_.revision_id)??S_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return I?`${j}/revision/${encodeURIComponent(I)}`:j}let g=S_(_.source_id),U=S_(_.path);if(g&&U)return`open-files://source/${encodeURIComponent(g)}/path/${encodeURIComponent(U)}`;throw Error("Outbox event is missing source_ref, file_id, or source_id/path.")}function NM(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function EM(_){return S_(_.hash)??S_(_.checksum)??S_(_.sha256)??null}function OM(_,$,D){return S_(_.revision_id)??S_(_.revision)??S_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??null}function AM(_){return S_(_.previous_revision_id)??S_(_.previous_revision)??S_(_.previous_version_id)??null}function LM(_){return(S_(_.event_type)??S_(_.event)??S_(_.type)??S_(_.action)??S_(_.change_type)??"changed").toLowerCase()}function JM(_){let $=S_(_.path);return S_(_.title)??S_(_.name)??($?IM($):null)}function PM(_,$){let D=jM(_),g=A$(D),U=EM(_);return{raw:_,eventType:LM(_),sourceRef:D,sourceUri:NM(D,g),kind:g.kind,title:JM(_),revision:OM(_,g,U),previousRevision:AM(_),hash:U,status:S_(_.status)?.toLowerCase()??null,updatedAt:S_(_.updated_at)??$,acl:_.permissions??_.acl??void 0}}function zM(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Outbox array parse failed.");return D.map((g)=>{let U=s0(g);if(!U)throw Error("Outbox array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),g=s0(D);if(!g)throw Error("Outbox object parse failed.");if(Array.isArray(g.events))return g.events.map((U)=>{let I=s0(U);if(!I)throw Error("Outbox events entries must be objects.");return I});if("source_ref"in g||"source_uri"in g||"file_id"in g)return[g]}catch(D){let g=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(g.length<=1)throw D;return g.map((U)=>{let I=s0(JSON.parse(U));if(!I)throw Error("Outbox JSONL entries must be objects.");return I})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let g=s0(JSON.parse(D));if(!g)throw Error("Outbox JSONL entries must be objects.");return g})}async function SM(_,$,D){let g=new URL(_),U=g.hostname,I=decodeURIComponent(g.pathname.replace(/^\/+/,""));if(!U||!I)throw Error(`Invalid S3 outbox URI: ${_}`);if(D)B6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:O}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),A=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,z=await new j({region:A?.region,credentials:A?.profile?O({profile:A.profile}):void 0,maxAttempts:A?.max_attempts}).send(new N({Bucket:U,Key:I}));if(!z.Body)return"";return await z.Body.transformToString()}async function WM(_,$,D){if(_.startsWith("s3://"))return SM(_,$,D);if(!UM(_))throw Error(`Outbox not found: ${_}`);return gM(_,"utf8")}function H9(_,$){let D={};if(_)try{D=s0(JSON.parse(_))??{}}catch{D={}}return JSON.stringify({...D,...$})}function XM(_,$,D){let g=Hj("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(uri) DO UPDATE SET kind = excluded.kind, title = COALESCE(excluded.title, sources.title), - updated_at = excluded.updated_at`,[U,$.sourceUri,$.kind,$.title,JSON.stringify({source_ref:$.sourceRef,source_uri:$.sourceUri,status:$.status,last_outbox_event:$.eventType}),JSON.stringify($.acl??{}),g,$.updatedAt]);let D=_.query("SELECT id, metadata_json, acl_json FROM sources WHERE uri = ?").get($.sourceUri);if(!D)throw Error(`Failed to upsert source for outbox event: ${$.sourceUri}`);let I={source_ref:$.sourceRef,source_uri:$.sourceUri,last_outbox_event:$.eventType,last_outbox_at:$.updatedAt};if($.status)I.status=$.status;if(S_($.raw.path))I.path=$.raw.path;return _.run("UPDATE sources SET metadata_json = ?, acl_json = CASE WHEN ? IS NULL THEN acl_json ELSE ? END, updated_at = ? WHERE id = ?",[RR(D.metadata_json,I),$.acl===void 0?null:JSON.stringify($.acl),$.acl===void 0?null:JSON.stringify($.acl),$.updatedAt,D.id]),D.id}function gM(_,$,g,U){if(!g.revision)return null;let D=bj("rev",`${$}\x00${g.revision}`),I={source_ref:g.sourceRef,source_uri:g.sourceUri,status:g.status,last_outbox_event:g.eventType,reindex_required:!0};return _.run(`INSERT INTO source_revisions (id, source_id, revision, hash, extracted_text_uri, metadata_json, created_at) + updated_at = excluded.updated_at`,[g,$.sourceUri,$.kind,$.title,JSON.stringify({source_ref:$.sourceRef,source_uri:$.sourceUri,status:$.status,last_outbox_event:$.eventType}),JSON.stringify($.acl??{}),D,$.updatedAt]);let U=_.query("SELECT id, metadata_json, acl_json FROM sources WHERE uri = ?").get($.sourceUri);if(!U)throw Error(`Failed to upsert source for outbox event: ${$.sourceUri}`);let I={source_ref:$.sourceRef,source_uri:$.sourceUri,last_outbox_event:$.eventType,last_outbox_at:$.updatedAt};if($.status)I.status=$.status;if(S_($.raw.path))I.path=$.raw.path;return _.run("UPDATE sources SET metadata_json = ?, acl_json = CASE WHEN ? IS NULL THEN acl_json ELSE ? END, updated_at = ? WHERE id = ?",[H9(U.metadata_json,I),$.acl===void 0?null:JSON.stringify($.acl),$.acl===void 0?null:JSON.stringify($.acl),$.updatedAt,U.id]),U.id}function GM(_,$,D,g){if(!D.revision)return null;let U=Hj("rev",`${$}\x00${D.revision}`),I={source_ref:D.sourceRef,source_uri:D.sourceUri,status:D.status,last_outbox_event:D.eventType,reindex_required:!0};return _.run(`INSERT INTO source_revisions (id, source_id, revision, hash, extracted_text_uri, metadata_json, created_at) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(source_id, revision) DO UPDATE SET hash = COALESCE(excluded.hash, source_revisions.hash), - metadata_json = excluded.metadata_json`,[D,$,g.revision,g.hash,S_(g.raw.extracted_text_ref)??null,JSON.stringify(I),U]),_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,g.revision)?.id??null}function DM(_,$,g){if(g.previousRevision){let U=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,g.previousRevision).map((D)=>D.id);if(U.length>0)return U}if(g.revision)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,g.revision).map((U)=>U.id);if(g.hash)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND hash = ?").all($,g.hash).map((U)=>U.id);return _.query("SELECT id FROM source_revisions WHERE source_id = ?").all($).map((U)=>U.id)}function UM(_,$){let g=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($),U=0,D=0;for(let j of g){let N=_.query("SELECT COUNT(*) AS n FROM chunk_embeddings WHERE chunk_id = ?").get(j.id);U+=N?.n??0;let O=_.query("SELECT COUNT(*) AS n FROM vector_index_entries WHERE chunk_id = ?").get(j.id);D+=O?.n??0,_.run("DELETE FROM vector_index_entries WHERE chunk_id = ?",[j.id]),_.run("DELETE FROM chunk_embeddings WHERE chunk_id = ?",[j.id]),_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[j.id])}_.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]);let I=_.query("SELECT metadata_json FROM source_revisions WHERE id = ?").get($);return _.run("UPDATE source_revisions SET metadata_json = ? WHERE id = ?",[RR(I?.metadata_json,{reindex_required:!0,invalidated_at:new Date().toISOString()}),$]),{chunksDeleted:g.length,embeddingsDeleted:U,vectorEntriesDeleted:D}}function IM(_,$){return $==="deleted"||["delete","deleted","remove","removed"].includes(_)}function jM(_){return["move","moved","rename","renamed","path_changed","canonical_key_changed"].includes(_)}function NM(_){return["permission","permissions","permission_changed","acl_changed","acl_revoked"].includes(_)}async function GR(_){let $=(_.now??new Date).toISOString();if(_.safetyPolicy)_6(_.dbPath,_.safetyPolicy);h(_.dbPath);let g=await _M(_.input,_.config,_.safetyPolicy),U=aF(g),D=v(_.dbPath),I=`run_${yF()}`;try{return D.transaction(()=>{D.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,"open-files-outbox",_.input,"completed","local","open-files-outbox",JSON.stringify({path:_.input,events:U.length}),$,$]);let j=new Set,N=new Set,O=0,A=0,L=0,z=0,W=0,J=0,P=0;return X_(D,{event_type:"source_read",action:_.input.startsWith("s3://")?"s3_outbox_read":"local_outbox_read",target_uri:_.input,decision:"allow",metadata:{events:U.length,read_only:!0},created_at:$}),U.forEach((S,X)=>{let G=eF(S,$),R=$M(D,G,$);j.add(R);let K=gM(D,R,G,$);if(K)N.add(K);let Q=DM(D,R,G);for(let T of Q){N.add(T);let q=UM(D,T);O+=q.chunksDeleted,A+=q.embeddingsDeleted,L+=q.vectorEntriesDeleted,z+=1}if(IM(G.eventType,G.status))W+=1;if(jM(G.eventType))J+=1;if(NM(G.eventType)||G.acl!==void 0)P+=1;D.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[bj("evt",`${I}\x00${X}\x00${G.sourceRef}\x00${G.eventType}`),I,"info",G.eventType,JSON.stringify({source_ref:G.sourceRef,source_uri:G.sourceUri,revision:G.revision,hash:G.hash,status:G.status,affected_revisions:Q.length}),G.updatedAt])}),D.run(`INSERT INTO provider_usage (id, run_id, provider, model, input_tokens, output_tokens, cost_usd, metadata_json, created_at) - VALUES (?, ?, ?, ?, 0, 0, 0, ?, ?)`,[bj("usage",I),I,"local","open-files-outbox",JSON.stringify({note:"No model provider used for outbox invalidation."}),$]),X_(D,{event_type:"write",action:"knowledge_outbox_invalidation",target_uri:_.dbPath,decision:"allow",metadata:{run_id:I,events:U.length,sources:j.size,revisions:N.size,chunks_deleted:O,embeddings_deleted:A,vector_entries_deleted:L},created_at:$}),{path:_.input,db_path:_.dbPath,run_id:I,events_seen:U.length,sources_touched:j.size,revisions_touched:N.size,chunks_deleted:O,embeddings_deleted:A,vector_entries_deleted:L,stale_revisions:z,deleted_sources:W,moved_sources:J,permission_updates:P}})()}finally{D.close()}}import{spawnSync as TR}from"child_process";import{hostname as u4,platform as qR,userInfo as EM}from"os";var OM=1,AM="@hasna/machines",LM="@hasna/machines/consumer";function d(_){return typeof _==="string"&&_.length>0?_:null}function y6(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function n_(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function wj(_){return typeof _==="boolean"?_:null}function JM(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function fj(_=qR()){let $=_.toLowerCase();if($==="darwin"||$==="macos")return"macos";if($==="win32"||$==="windows")return"windows";if($==="linux")return"linux";return _}function UU(_){let $=TR("bash",["-c",_],{encoding:"utf8",env:process.env});return{stdout:$.stdout||"",stderr:$.stderr||"",exitCode:$.status??1}}async function s0(_,$){return await _($)}async function IU(_,$){return(await s0($,`command -v ${_} >/dev/null 2>&1`)).exitCode===0}function PM(_){try{let $=JSON.parse(_);if(!$||typeof $!=="object")return null;return $}catch{return null}}function YR(_){if(!_)return null;return _.HostName??_.DNSName?.split(".")[0]??null}async function zM(_,$){let g=new Map;if(!await IU("tailscale",_))return $.push("tailscale_not_available"),{peers:g,selfKey:null};let U=await s0(_,"tailscale status --json");if(U.exitCode!==0)return $.push(`tailscale_status_failed:${U.stderr.trim()||U.exitCode}`),{peers:g,selfKey:null};let D=PM(U.stdout);if(!D)return $.push("tailscale_status_invalid_json"),{peers:g,selfKey:null};let I=(j)=>{let N=YR(j);if(N&&j)g.set(N,j)};I(D.Self);for(let j of Object.values(D.Peer??{}))I(j);return{peers:g,selfKey:YR(D.Self)}}function SM(_){return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??_??u4()}function WM(_){let $=_.machineId===_.localMachineId||_.machineId===u4(),g=_.peer?.DNSName?.replace(/\.$/,"")??null,U=g??_.peer?.TailscaleIPs?.[0]??null,D=[];if($)D.push({kind:"local",target:"localhost",reachable:!0});if(U)D.push({kind:"tailscale",target:U,reachable:_.peer?.Online??null});let I=D.find((j)=>j.kind==="local")??D.find((j)=>j.kind==="tailscale")??null;return{machine_id:_.machineId,hostname:_.peer?.HostName??($?u4():_.machineId),local:$,platform:_.peer?.OS?fj(_.peer.OS):$?fj():null,os:_.peer?.OS??($?qR():null),user:$?EM().username:null,workspace_path:null,manifest_declared:!1,heartbeat_status:"unknown",last_heartbeat_at:null,tailscale:{dns_name:g,ips:_.peer?.TailscaleIPs??[],online:_.peer?.Online??null,active:_.peer?.Active??null,last_seen:_.peer?.LastSeen??null},ssh:{address:null,route:I?.kind==="local"?"local":I?.kind==="tailscale"?"tailscale":"unknown",command_target:I?.target??null},route_hints:D,tags:[],metadata:{},source:"local"}}function XM(_){if(!Array.isArray(_))return[];return _.map(($)=>{let g=n_($),U=d(g.kind)??"unknown";return{kind:U==="local"||U==="lan"||U==="tailscale"||U==="ssh"?U:"unknown",target:d(g.target)??"",reachable:wj(g.reachable)}}).filter(($)=>$.target.length>0)}function RM(_,$){let g=d(_.machine_id)??d(_.hostname)??"unknown",U=n_(_.tailscale),D=n_(_.ssh),I=d(_.heartbeat_status),j=d(D.route);return{machine_id:g,hostname:d(_.hostname),local:g===$,platform:d(_.platform),os:d(_.os),user:d(_.user),workspace_path:d(_.workspace_path),manifest_declared:_.manifest_declared===!0,heartbeat_status:I==="online"||I==="offline"?I:"unknown",last_heartbeat_at:d(_.last_heartbeat_at),tailscale:{dns_name:d(U.dns_name),ips:y6(U.ips),online:wj(U.online),active:wj(U.active),last_seen:d(U.last_seen)},ssh:{address:d(D.address),route:j==="local"||j==="lan"||j==="tailscale"?j:"unknown",command_target:d(D.command_target)},route_hints:XM(_.route_hints),tags:y6(_.tags),metadata:n_(_.metadata),source:"open-machines"}}function GM(_,$){return`${$} machine${$===1?"":"s"} discovered via ${_}`}function E$(_){let $=_ instanceof Error?_.message:String(_);return $.includes("Cannot find module '@hasna/machines'")||$.includes("Cannot find module '@hasna/machines/consumer'")?"module_not_found":$}function jU(_){return _.adapterMode??"auto"}function BR(_){let $=_?.MACHINES_CONSUMER_CONTRACT?.schema_version;if(typeof $==="number")return $;let g=_?.MACHINES_CONSUMER_CONTRACT_VERSION;return typeof g==="number"?g:null}function uj(_){return typeof _.schema_version==="number"?_.schema_version:null}function NU(_){return typeof _==="number"&&_>OM?_:null}function xj(_){return{package:AM,entrypoint:LM,mode:_.mode,implementation:_.implementation,contract_version:_.contractVersion??null,available:_.available,error:_.error??null}}function j_(_,$="adapter_disabled"){return xj({mode:_,implementation:"disabled",available:!1,error:$})}function yj(_,$){let g=NU(BR($));if(!g)return null;return xj({mode:_,implementation:"disabled",available:!1,error:`unsupported_contract_version:${g}`,contractVersion:g})}function hj(_){return xj({mode:_,implementation:"cli",available:!0})}function cj(_,$){return xj({mode:_,implementation:"sdk",available:!0,contractVersion:BR($)})}function nj(_){try{return JSON.parse(_)}catch{return null}}function x4(_){return`'${_.replace(/'/g,"'\\''")}'`}function dj(_){return["machines",..._].map(x4).join(" ")}function mj(_){return _==="local"||_==="localhost"||_===u4()||_===process.env.HASNA_MACHINE_ID||_===process.env.OPEN_MACHINES_MACHINE_ID||_===process.env.MACHINE_ID}function YM(_,$){let g=mj(_),U=g?$:`ssh ${x4(_)} ${x4($)}`,D=TR("bash",["-c",U],{encoding:"utf8",env:process.env});return{stdout:D.stdout||"",stderr:D.stderr||"",exitCode:D.status??1,source:g?"local":"ssh"}}async function KR(_,$,g){return await _($,g)}function w4(_,$){if($)return"ok";return _===!1?"warn":"fail"}function f4(_){return _.replace(/[^a-zA-Z0-9_.@/-]+/g,"-").replace(/^-+|-+$/g,"")}function QM(_){if(_==="@hasna/knowledge")return"knowledge";if(_==="@hasna/machines")return"machines";return _.split("/").pop()??_}function TM(_){return _.trim().split(/\r?\n/).find(Boolean)??""}function VR(_){return _.match(/\b\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?\b/)?.[0]??null}function FR(_){let $={};for(let g of _.split(/\r?\n/)){let U=g.indexOf("=");if(U<=0)continue;$[g.slice(0,U)]=g.slice(U+1)}return $}function A6(_){return{id:_.id,kind:_.kind,status:_.status,target:_.target,expected:_.expected??null,actual:_.actual??null,detail:_.detail,source:_.source}}async function MR(_,$,g){let U=[`cmd=${x4($.command)}`,'path="$(command -v "$cmd" 2>/dev/null || true)"','printf "path=%s\\n" "$path"',`if [ -n "$path" ]; then version="$("$cmd" ${$.versionArgs??"--version"} 2>/dev/null || true)"; printf "version=%s\\n" "$version"; fi`].join("; "),D=await KR(g,_,U),I=FR(D.stdout);return{path:I.path||null,version:I.version?TM(I.version):null,stderr:D.stderr,source:D.source??(mj(_)?"local":"ssh")}}function QR(_){let $=_==="name"?String.raw`s/.*"name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p`:String.raw`s/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p`;return[`if command -v bun >/dev/null 2>&1; then bun -e "const p=JSON.parse(await Bun.file(process.argv[1]).text()); console.log(p.${_} ?? '')" "$pkg" 2>/dev/null`,`elif command -v node >/dev/null 2>&1; then node -e "const fs=require('fs'); const p=JSON.parse(fs.readFileSync(process.argv[1], 'utf8')); console.log(p.${_} || '')" "$pkg" 2>/dev/null`,`else sed -n '${$}' "$pkg" | head -n 1`,"fi"].join("; ")}async function qM(_,$,g){let U=[`path=${x4($.path)}`,'printf "exists=%s\\n" "$(test -d "$path" && printf yes || printf no)"','pkg="$path/package.json"','printf "package_json=%s\\n" "$(test -f "$pkg" && printf yes || printf no)"',`if [ -f "$pkg" ]; then printf "package_name=%s\\n" "$(${QR("name")})"; printf "version=%s\\n" "$(${QR("version")})"; fi`].join("; "),D=await KR(g,_,U),I=FR(D.stdout);return{exists:I.exists==="yes",packageJson:I.package_json==="yes",packageName:I.package_name||null,version:I.version||null,stderr:D.stderr,source:D.source??(mj(_)?"local":"ssh")}}async function BM(_,$,g){let U=await MR(_,$,g),D=Boolean(U.path),I=[A6({id:`command:${f4($.command)}:path`,kind:"command",status:w4($.required,D),target:$.command,expected:"available",actual:U.path??"missing",detail:D?`found at ${U.path}`:U.stderr||"command missing",source:U.source})];if($.expectedVersion){let j=VR(U.version??"");I.push(A6({id:`command:${f4($.command)}:version`,kind:"command",status:j===$.expectedVersion?"ok":w4($.required,!1),target:$.command,expected:$.expectedVersion,actual:j??U.version??"missing",detail:j?`version output: ${U.version}`:"version unavailable",source:U.source}))}return I}async function KM(_,$,g){let U=$.command??QM($.name),D=await MR(_,{command:U,expectedVersion:$.expectedVersion,required:$.required},g),I=Boolean(D.path),j=[A6({id:`package:${f4($.name)}:command`,kind:"package",status:w4($.required,I),target:$.name,expected:U,actual:D.path??"missing",detail:I?`${U} found at ${D.path}`:`${U} command missing`,source:D.source})];if($.expectedVersion){let N=VR(D.version??"");j.push(A6({id:`package:${f4($.name)}:version`,kind:"package",status:N===$.expectedVersion?"ok":w4($.required,!1),target:$.name,expected:$.expectedVersion,actual:N??D.version??"missing",detail:N?`version output: ${D.version}`:"version unavailable",source:D.source}))}return j}async function VM(_,$,g){let U=await qM(_,$,g),D=$.label??$.path,I=[A6({id:`workspace:${f4(D)}:path`,kind:"workspace",status:w4($.required,U.exists),target:D,expected:$.path,actual:U.exists?"exists":"missing",detail:U.exists?`workspace exists at ${$.path}`:U.stderr||`workspace missing at ${$.path}`,source:U.source})];if($.expectedPackageName)I.push(A6({id:`workspace:${f4(D)}:package-name`,kind:"workspace",status:U.packageName===$.expectedPackageName?"ok":w4($.required,!1),target:D,expected:$.expectedPackageName,actual:U.packageName??(U.packageJson?"missing-name":"missing-package-json"),detail:U.packageJson?"package.json inspected":"package.json missing",source:U.source}));if($.expectedVersion)I.push(A6({id:`workspace:${f4(D)}:version`,kind:"workspace",status:U.version===$.expectedVersion?"ok":w4($.required,!1),target:D,expected:$.expectedVersion,actual:U.version??(U.packageJson?"missing-version":"missing-package-json"),detail:U.packageJson?"package.json inspected":"package.json missing",source:U.source}));return I}function ZR(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:l$,workspace_home:$.knowledge?.workspace_home??null},message:GM(_.source,_.machines.length)}}async function ij(){try{return await import("@hasna/machines/consumer")}catch(_){if(E$(_)!=="module_not_found")throw _;return await import("@hasna/machines")}}function bR(_,$,g){let U=n_(_);if(NU(uj(U)))return null;let D=Array.isArray(U.machines)?U.machines:null,I=d(U.local_machine_id);if(!D||!I)return null;let j={ok:!0,source:"open-machines",generated_at:d(U.generated_at)??($.now??new Date).toISOString(),local_machine_id:I,local_hostname:d(U.local_hostname)??u4(),current_platform:d(U.current_platform)??fj(),machines:D.map((N)=>RM(N,I)),warnings:y6(U.warnings),adapter:g};return ZR(j,$)}function Hj(_){return _==="local"||_==="lan"||_==="tailscale"||_==="ssh"||_==="unknown"?_:null}function HR(_){let $=n_(_),g=d($.observed_at),U=d($.source_authority);if(!g||!U)return null;return{observed_at:g,verified_at:d($.verified_at),expires_at:d($.expires_at),ttl_ms:JM($.ttl_ms),source_authority:U,confidence:d($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:y6($.reasons)}}function kR(_,$){let g=n_(_);if(NU(uj(g)))return null;let U=d(g.target)??d(g.command_target);if(g.ok!==!0||!U)return null;let D=typeof g.evidence==="object"&&g.evidence!==null?g.evidence:null,I=typeof D?.selected_hint==="object"&&D.selected_hint!==null?D.selected_hint:null;return{target:U,route:Hj(g.route),targetKind:Hj(I?.kind)??Hj(g.source)??Hj(g.route),confidence:d(g.confidence),source:"open-machines",adapter:$,evidence:D,cacheability:HR(g.cacheability),warnings:y6(g.warnings)}}function sP(_){let $=n_(_);return{path:d($.path),source:d($.source)??"unresolved"}}function FM(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let g=n_($),U=d(g.id),D=d(g.status),I=d(g.severity),j=d(g.message);if(!U||!D||!I||!j)return[];return[{id:U,status:D,severity:I,message:j,path:d(g.path),source:d(g.source)??"unknown",path_exists:wj(g.path_exists)}]})}function MM(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let g=n_($),U=d(g.id),D=d(g.reason),I=y6(g.command),j=d(g.shell_command),N=y6(g.apply_command),O=d(g.apply_shell_command);if(!U||!D||!I.length||!j||!N.length||!O)return[];return[{id:U,reason:D,command:I,shell_command:j,apply_command:N,apply_shell_command:O}]})}function ZM(_){if(!(_.projectRootSource==="inferred"||_.openFilesRootSource==="inferred"||_.trustStatus==="untrusted"||_.authStatus==="unknown"||_.warnings.some((D)=>D.includes("inferred")||D.includes("untrusted")||D.includes("unknown_auth")||D.includes("missing"))))return[];let g=["machines","workspace","repair","--machine",_.requestedMachineId,"--project",_.projectId,"--repo",_.repoName,"--open-files-repo",_.openFilesRepoName??"open-files","--json"],U=[...g,"--apply"];return[{id:"machines_workspace_repair",reason:"Workspace paths or trust metadata need confirmation before remote knowledge sync.",command:g,shell_command:g.map(x4).join(" "),apply_command:U,apply_shell_command:U.map(x4).join(" ")}]}function CR(_,$,g){let U=n_(_);if(NU(uj(U)))return null;let D=n_(U.paths),I=n_(U.project),j=n_(U.machine),N=sP(D.project_root),O=sP(D.workspace_root),A=sP(D.open_files_root);if(U.ok!==!0||!N.path)return null;let L=typeof U.evidence==="object"&&U.evidence!==null?U.evidence:null,z=d(U.requested_machine_id)??$.machineId,W=d(I.project_id)??$.projectId??"open-knowledge",J=d(I.repo_name)??$.repoName??$.projectId??"open-knowledge",P=d(j.trust_status)??"unknown",S=d(j.auth_status)??"unknown",X=y6(U.warnings),G=FM(U.diagnostics),R=MM(U.repair_hints);return{ok:!0,source:"open-machines",adapter:g,requested_machine_id:z,machine_id:d(U.machine_id),project_id:W,repo_name:J,project_root:N.path,project_root_source:N.source,workspace_root:O.path,workspace_root_source:O.source,open_files_root:A.path,open_files_root_source:A.source,trust_status:P,auth_status:S,current:j.current===!0,primary:j.primary===!0,diagnostics:G,repair_hints:R.length?R:ZM({requestedMachineId:z,projectId:W,repoName:J,openFilesRepoName:$.openFilesRepoName,warnings:X,projectRootSource:N.source,openFilesRootSource:A.source,trustStatus:P,authStatus:S}),evidence:L,cacheability:HR(U.cacheability),warnings:X}}async function kj(_,$){let g=_.runner??UU;if(!await IU("machines",g))return null;let U=["topology","--json"];if(_.includeTailscale===!1)U.push("--no-tailscale");let D=await s0(g,dj(U));if(D.exitCode!==0)return null;return bR(nj(D.stdout),_,$)}async function j6(_,$){let g=[];if($.error)g.push(`open_machines_unavailable:${$.error}`);let U=_.runner??UU,D=_.includeTailscale===!1?{peers:new Map,selfKey:null}:await zM(U,g),I=SM(D.selfKey),N=[...new Set([I,...D.peers.keys()])].sort().map((O)=>WM({machineId:O,localMachineId:I,peer:D.peers.get(O)}));return ZR({ok:!0,source:"local",generated_at:(_.now??new Date).toISOString(),local_machine_id:I,local_hostname:u4(),current_platform:fj(),machines:N,warnings:g,adapter:$},_)}async function rR(_={}){let $=jU(_);if($==="disabled")return await j6(_,j_($));let g=hj($);try{if($!=="cli"){let D=await(_.loadOpenMachines??ij)(),I=yj($,D);if(I)return await j6(_,I);let j=cj($,D);if(D?.discoverMachineTopology){let N=D.discoverMachineTopology({includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),O=bR(N,_,j);if(O)return O;if($==="sdk")return await j6(_,j_($,"invalid_topology_shape"));return await kj(_,g)??await j6(_,j_($,"invalid_topology_shape"))}if($==="sdk")return await j6(_,j_($,"missing_discoverMachineTopology"));return await kj(_,g)??await j6(_,j_($,"missing_discoverMachineTopology"))}return await kj(_,g)??await j6(_,j_($,"machines_cli_unavailable"))}catch(U){if($==="sdk")return await j6(_,j_($,E$(U)));return await kj(_,g)??await j6(_,j_($,E$(U)))}}async function Cj(_,$){let g=_.runner??UU;if(!await IU("machines",g))return null;let U=["route","--machine",_.machineId,"--json"];if(_.includeTailscale===!1)U.push("--no-tailscale");let D=await s0(g,dj(U));if(D.exitCode!==0)return null;return kR(nj(D.stdout),$)}function N6(_,$){return{target:_,route:null,targetKind:null,confidence:null,source:"raw",adapter:$,evidence:null,cacheability:null,warnings:[]}}async function _3(_){let $=jU(_);if($==="disabled")return N6(_.machineId,j_($));let g=hj($);try{if($!=="cli"){let D=await(_.loadOpenMachines??ij)(),I=yj($,D);if(I)return N6(_.machineId,I);let j=cj($,D);if(D?.resolveMachineRoute){let N=kR(D.resolveMachineRoute(_.machineId,{includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),j);if(N)return N;if($==="sdk")return N6(_.machineId,j_($,"invalid_route_shape"));return await Cj(_,g)??N6(_.machineId,j_($,"invalid_route_shape"))}if($==="sdk")return N6(_.machineId,j_($,"missing_resolveMachineRoute"));return await Cj(_,g)??N6(_.machineId,j_($,"missing_resolveMachineRoute"))}return await Cj(_,g)??N6(_.machineId,j_($,"machines_cli_unavailable"))}catch(U){if($==="sdk")return{...N6(_.machineId,j_($,E$(U))),warnings:[E$(U)]};return await Cj(_,g)??{...N6(_.machineId,j_($,E$(U))),warnings:[E$(U)]}}}async function rj(_,$){let g=_.runner??UU;if(!await IU("machines",g))return null;let U=_.projectId??"open-knowledge",D=_.repoName??"open-knowledge",I=["workspace","resolve","--machine",_.machineId,"--project",U,"--repo",D,"--open-files-repo",_.openFilesRepoName??"open-files","--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let j=await s0(g,dj(I));if(j.exitCode!==0)return null;return CR(nj(j.stdout),_,$)}function bM(_){let $=_.peerWorkspace?.trim();if(!$)return null;return{ok:!0,source:"argument",adapter:j_(jU(_),"argument_override"),requested_machine_id:_.machineId,machine_id:_.machineId,project_id:_.projectId??"open-knowledge",repo_name:_.repoName??"open-knowledge",project_root:$,project_root_source:"argument",workspace_root:null,workspace_root_source:"unresolved",open_files_root:null,open_files_root_source:"unresolved",trust_status:"unknown",auth_status:"unknown",current:!1,primary:!1,diagnostics:[],repair_hints:[],evidence:null,cacheability:null,warnings:[]}}function E6(_,$,g){return{ok:!1,source:"raw",adapter:g,requested_machine_id:_.machineId,machine_id:null,project_id:_.projectId??"open-knowledge",repo_name:_.repoName??"open-knowledge",project_root:null,project_root_source:"unresolved",workspace_root:null,workspace_root_source:"unresolved",open_files_root:null,open_files_root_source:"unresolved",trust_status:"unknown",auth_status:"unknown",current:!1,primary:!1,diagnostics:[],repair_hints:[],evidence:null,cacheability:null,warnings:$}}async function lj(_){let $=bM(_);if($)return $;let g=jU(_);if(g==="disabled")return E6(_,["adapter_disabled"],j_(g));let U=hj(g);try{if(g!=="cli"){let I=await(_.loadOpenMachines??ij)(),j=yj(g,I);if(j)return E6(_,[`unsupported_contract_version:${j.contract_version}`],j);let N=cj(g,I);if(I?.resolveMachineWorkspace){let O=CR(I.resolveMachineWorkspace({machineId:_.machineId,projectId:_.projectId??"open-knowledge",repoName:_.repoName??"open-knowledge",openFilesRepoName:_.openFilesRepoName??"open-files",includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),_,N);if(O)return O;if(g==="sdk")return E6(_,["invalid_workspace_shape"],j_(g,"invalid_workspace_shape"));return await rj(_,U)??E6(_,["invalid_workspace_shape"],j_(g,"invalid_workspace_shape"))}if(g==="sdk")return E6(_,["missing_resolveMachineWorkspace"],j_(g,"missing_resolveMachineWorkspace"));return await rj(_,U)??E6(_,["missing_resolveMachineWorkspace"],j_(g,"missing_resolveMachineWorkspace"))}return await rj(_,U)??E6(_,["machines_cli_unavailable"],j_(g,"machines_cli_unavailable"))}catch(D){if(g==="sdk")return E6(_,[E$(D)],j_(g,E$(D)));return await rj(_,U)??E6(_,[E$(D)],j_(g,E$(D)))}}function vR(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:l$,workspace_home:$.knowledge?.workspace_home??null},message:_.ok?`Machine ${_.machine_id} passed knowledge preflight`:`Machine ${_.machine_id} failed knowledge preflight: ${_.summary.fail} failing check(s)`}}function wR(_,$,g){let U=n_(_);if(NU(uj(U)))return null;let D=Array.isArray(U.checks)?U.checks:null,I=d(U.machine_id)??d(U.machineId);if(!D||!I)return null;let j=D.map((O)=>{let A=n_(O),L=d(A.status),z=d(A.kind),W=d(A.source);return A6({id:d(A.id)??"unknown",kind:z==="command"||z==="package"||z==="workspace"?z:"command",status:L==="ok"||L==="warn"||L==="fail"?L:"fail",target:d(A.target)??"unknown",expected:d(A.expected),actual:d(A.actual),detail:d(A.detail)??"",source:W==="local"||W==="ssh"||W==="open-machines"?W:"open-machines"})}),N={ok:j.filter((O)=>O.status==="ok").length,warn:j.filter((O)=>O.status==="warn").length,fail:j.filter((O)=>O.status==="fail").length};return vR({ok:N.fail===0,source:"open-machines",machine_id:I,generated_at:d(U.generated_at)??($.now??new Date).toISOString(),checks:j,summary:N,adapter:g},$)}function HM(_){if(!_.runner)return UU;return async($)=>{let g=await _.runner?.("local",$);return{stdout:g?.stdout??"",stderr:g?.stderr??"",exitCode:g?.exitCode??1}}}function kM(_){return[_.name,_.command,_.expectedVersion].filter(($)=>Boolean($)).join(":")}function CM(_){let $=[_.expectedPackageName,_.expectedVersion].filter((U)=>Boolean(U)).join(":"),g=$?`${_.path}:${$}`:_.path;return _.label?`${_.label}=${g}`:g}async function vj(_,$){let g=HM(_);if(!await IU("machines",g))return null;let U=["compatibility","--json","--machine",_.machineId??"local"];for(let I of _.commands??[])U.push("--command",I.expectedVersion?`${I.command}:${I.expectedVersion}`:I.command);for(let I of _.packages??[])U.push("--package",kM(I));for(let I of _.workspaces??[])U.push("--workspace",CM(I));let D=await s0(g,dj(U));if(D.exitCode!==0)return null;return wR(nj(D.stdout),_,$)}async function O6(_,$){let g=_.machineId??u4(),U=_.runner??YM,D=_.commands??[{command:"bun",required:!0},{command:"knowledge",required:!0}],I=_.packages??[{name:"@hasna/knowledge",command:"knowledge",required:!0}],j=_.workspaces??[],N=[];for(let A of D)N.push(...await BM(g,A,U));for(let A of I)N.push(...await KM(g,A,U));for(let A of j)N.push(...await VM(g,A,U));if($.error)N.push(A6({id:"adapter:@hasna/machines",kind:"package",status:"warn",target:"@hasna/machines",expected:"optional",actual:$.error,detail:"Using knowledge local/ssh compatibility fallback",source:mj(g)?"local":"ssh"}));let O={ok:N.filter((A)=>A.status==="ok").length,warn:N.filter((A)=>A.status==="warn").length,fail:N.filter((A)=>A.status==="fail").length};return vR({ok:O.fail===0,source:"local",machine_id:g,generated_at:(_.now??new Date).toISOString(),checks:N,summary:O,adapter:$},_)}async function fR(_={}){let $=jU(_);if($==="disabled")return await O6(_,j_($));let g=hj($);try{if($!=="cli"){let D=await(_.loadOpenMachines??ij)(),I=yj($,D);if(I)return await O6(_,I);let j=cj($,D);if(D?.checkMachineCompatibility){let N=D.checkMachineCompatibility({machineId:_.machineId,commands:_.commands,packages:_.packages,workspaces:_.workspaces,runner:_.runner,now:_.now}),O=wR(N,_,j);if(O)return O;if($==="sdk")return await O6(_,j_($,"invalid_compatibility_shape"));return await vj(_,g)??await O6(_,j_($,"invalid_compatibility_shape"))}if($==="sdk")return await O6(_,j_($,"missing_checkMachineCompatibility"));return await vj(_,g)??await O6(_,j_($,"missing_checkMachineCompatibility"))}return await vj(_,g)??await O6(_,j_($,"machines_cli_unavailable"))}catch(U){if($==="sdk")return await O6(_,j_($,E$(U)));return await vj(_,g)??await O6(_,j_($,E$(U)))}}import{createHash as uR}from"crypto";function g3(_,$,g=24){return`${_}_${uR("sha256").update($).digest("hex").slice(0,g)}`}function _g(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function rM(_){return _g(_).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")}function K$(_,$){try{return JSON.parse(_)}catch{return $}}function h6(_){return{..._,record_kind:_.record_kind,source_kind:_.source_kind,status:_.status,source_refs:K$(_.source_refs_json,[]),evidence_refs:K$(_.evidence_refs_json,[]),requires_approval:_.requires_approval===1,checks:K$(_.checks_json,xR()),metadata:K$(_.metadata_json,{})}}function D3(_){return{..._,record_kind:_.record_kind,source_refs:K$(_.source_refs_json,[]),evidence_refs:K$(_.evidence_refs_json,[]),metadata:K$(_.metadata_json,{})}}function xR(){return{citations:{provided:0,valid:0,invalid:0,entries:[]},invalid_source_refs:[],stale_refs:[],duplicate_record_ids:[],duplicate_candidate_ids:[],conflicting_record_ids:[],conflicting_candidate_ids:[],approval_reasons:[]}}function vM(_){let $=typeof _==="string"?{ref:_}:_;return{ref:_g($.ref),citation_id:$.citation_id??null,chunk_id:$.chunk_id??null,revision:$.revision??null,hash:$.hash??null,observed_at:$.observed_at??null,expires_at:$.expires_at??null,status:$.status??null}}function yR(_){try{let $=new URL(_);return $.protocol.length>1&&($.hostname.length>0||$.pathname.length>0)}catch{return/^(?:cite|citation|chunk|run):[A-Za-z0-9._:-]+$/.test(_)}}function tj(_){return["deleted","stale","invalidated","reindex_required","expired","superseded"].includes((_??"").toLowerCase())}function $3(_){if(!_)return null;let $=K$(_,{});if($.stale===!0)return"stale";return typeof $.status==="string"?$.status:null}function wM(_){if(_.citation_id)return _.citation_id;return _.ref.match(/^(?:cite|citation):(.+)$/)?.[1]??null}function fM(_){if(_.chunk_id)return _.chunk_id;return _.ref.match(/^chunk:(.+)$/)?.[1]??null}function uM(_,$,g){let U=tj($.status)||Boolean($.expires_at&&$.expires_at<=g);if(!$.ref||!yR($.ref))return{ref:$.ref,valid:!1,resolved_by:"none",stale:U,reason:"invalid_reference"};let D=wM($),I=_.query(`SELECT c.id, c.source_uri, c.chunk_id, ch.metadata_json AS chunk_metadata_json, + metadata_json = excluded.metadata_json`,[U,$,D.revision,D.hash,S_(D.raw.extracted_text_ref)??null,JSON.stringify(I),g]),_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision)?.id??null}function RM(_,$,D){if(D.previousRevision){let g=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.previousRevision).map((U)=>U.id);if(g.length>0)return g}if(D.revision)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.revision).map((g)=>g.id);if(D.hash)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND hash = ?").all($,D.hash).map((g)=>g.id);return _.query("SELECT id FROM source_revisions WHERE source_id = ?").all($).map((g)=>g.id)}function YM(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($),g=0,U=0;for(let j of D){let N=_.query("SELECT COUNT(*) AS n FROM chunk_embeddings WHERE chunk_id = ?").get(j.id);g+=N?.n??0;let O=_.query("SELECT COUNT(*) AS n FROM vector_index_entries WHERE chunk_id = ?").get(j.id);U+=O?.n??0,_.run("DELETE FROM vector_index_entries WHERE chunk_id = ?",[j.id]),_.run("DELETE FROM chunk_embeddings WHERE chunk_id = ?",[j.id]),_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[j.id])}_.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]);let I=_.query("SELECT metadata_json FROM source_revisions WHERE id = ?").get($);return _.run("UPDATE source_revisions SET metadata_json = ? WHERE id = ?",[H9(I?.metadata_json,{reindex_required:!0,invalidated_at:new Date().toISOString()}),$]),{chunksDeleted:D.length,embeddingsDeleted:g,vectorEntriesDeleted:U}}function QM(_,$){return $==="deleted"||["delete","deleted","remove","removed"].includes(_)}function TM(_){return["move","moved","rename","renamed","path_changed","canonical_key_changed"].includes(_)}function BM(_){return["permission","permissions","permission_changed","acl_changed","acl_revoked"].includes(_)}async function k9(_){let $=(_.now??new Date).toISOString();if(_.safetyPolicy)_6(_.dbPath,_.safetyPolicy);h(_.dbPath);let D=await WM(_.input,_.config,_.safetyPolicy),g=zM(D),U=f(_.dbPath),I=`run_${DM()}`;try{return U.transaction(()=>{U.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,"open-files-outbox",_.input,"completed","local","open-files-outbox",JSON.stringify({path:_.input,events:g.length}),$,$]);let j=new Set,N=new Set,O=0,A=0,L=0,z=0,W=0,J=0,P=0;return X_(U,{event_type:"source_read",action:_.input.startsWith("s3://")?"s3_outbox_read":"local_outbox_read",target_uri:_.input,decision:"allow",metadata:{events:g.length,read_only:!0},created_at:$}),g.forEach((S,X)=>{let R=PM(S,$),G=XM(U,R,$);j.add(G);let V=GM(U,G,R,$);if(V)N.add(V);let Q=RM(U,G,R);for(let T of Q){N.add(T);let B=YM(U,T);O+=B.chunksDeleted,A+=B.embeddingsDeleted,L+=B.vectorEntriesDeleted,z+=1}if(QM(R.eventType,R.status))W+=1;if(TM(R.eventType))J+=1;if(BM(R.eventType)||R.acl!==void 0)P+=1;U.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[Hj("evt",`${I}\x00${X}\x00${R.sourceRef}\x00${R.eventType}`),I,"info",R.eventType,JSON.stringify({source_ref:R.sourceRef,source_uri:R.sourceUri,revision:R.revision,hash:R.hash,status:R.status,affected_revisions:Q.length}),R.updatedAt])}),U.run(`INSERT INTO provider_usage (id, run_id, provider, model, input_tokens, output_tokens, cost_usd, metadata_json, created_at) + VALUES (?, ?, ?, ?, 0, 0, 0, ?, ?)`,[Hj("usage",I),I,"local","open-files-outbox",JSON.stringify({note:"No model provider used for outbox invalidation."}),$]),X_(U,{event_type:"write",action:"knowledge_outbox_invalidation",target_uri:_.dbPath,decision:"allow",metadata:{run_id:I,events:g.length,sources:j.size,revisions:N.size,chunks_deleted:O,embeddings_deleted:A,vector_entries_deleted:L},created_at:$}),{path:_.input,db_path:_.dbPath,run_id:I,events_seen:g.length,sources_touched:j.size,revisions_touched:N.size,chunks_deleted:O,embeddings_deleted:A,vector_entries_deleted:L,stale_revisions:z,deleted_sources:W,moved_sources:J,permission_updates:P}})()}finally{U.close()}}import{spawnSync as f9}from"child_process";import{hostname as u4,platform as w9,userInfo as qM}from"os";var VM=1,FM="@hasna/machines",KM="@hasna/machines/consumer";function d(_){return typeof _==="string"&&_.length>0?_:null}function y6(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function n_(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function rj(_){return typeof _==="boolean"?_:null}function MM(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function uj(_=w9()){let $=_.toLowerCase();if($==="darwin"||$==="macos")return"macos";if($==="win32"||$==="windows")return"windows";if($==="linux")return"linux";return _}function Ig(_){let $=f9("bash",["-c",_],{encoding:"utf8",env:process.env});return{stdout:$.stdout||"",stderr:$.stderr||"",exitCode:$.status??1}}async function _D(_,$){return await _($)}async function jg(_,$){return(await _D($,`command -v ${_} >/dev/null 2>&1`)).exitCode===0}function ZM(_){try{let $=JSON.parse(_);if(!$||typeof $!=="object")return null;return $}catch{return null}}function C9(_){if(!_)return null;return _.HostName??_.DNSName?.split(".")[0]??null}async function bM(_,$){let D=new Map;if(!await jg("tailscale",_))return $.push("tailscale_not_available"),{peers:D,selfKey:null};let g=await _D(_,"tailscale status --json");if(g.exitCode!==0)return $.push(`tailscale_status_failed:${g.stderr.trim()||g.exitCode}`),{peers:D,selfKey:null};let U=ZM(g.stdout);if(!U)return $.push("tailscale_status_invalid_json"),{peers:D,selfKey:null};let I=(j)=>{let N=C9(j);if(N&&j)D.set(N,j)};I(U.Self);for(let j of Object.values(U.Peer??{}))I(j);return{peers:D,selfKey:C9(U.Self)}}function HM(_){return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??_??u4()}function kM(_){let $=_.machineId===_.localMachineId||_.machineId===u4(),D=_.peer?.DNSName?.replace(/\.$/,"")??null,g=D??_.peer?.TailscaleIPs?.[0]??null,U=[];if($)U.push({kind:"local",target:"localhost",reachable:!0});if(g)U.push({kind:"tailscale",target:g,reachable:_.peer?.Online??null});let I=U.find((j)=>j.kind==="local")??U.find((j)=>j.kind==="tailscale")??null;return{machine_id:_.machineId,hostname:_.peer?.HostName??($?u4():_.machineId),local:$,platform:_.peer?.OS?uj(_.peer.OS):$?uj():null,os:_.peer?.OS??($?w9():null),user:$?qM().username:null,workspace_path:null,manifest_declared:!1,heartbeat_status:"unknown",last_heartbeat_at:null,tailscale:{dns_name:D,ips:_.peer?.TailscaleIPs??[],online:_.peer?.Online??null,active:_.peer?.Active??null,last_seen:_.peer?.LastSeen??null},ssh:{address:null,route:I?.kind==="local"?"local":I?.kind==="tailscale"?"tailscale":"unknown",command_target:I?.target??null},route_hints:U,tags:[],metadata:{},source:"local"}}function CM(_){if(!Array.isArray(_))return[];return _.map(($)=>{let D=n_($),g=d(D.kind)??"unknown";return{kind:g==="local"||g==="lan"||g==="tailscale"||g==="ssh"?g:"unknown",target:d(D.target)??"",reachable:rj(D.reachable)}}).filter(($)=>$.target.length>0)}function vM(_,$){let D=d(_.machine_id)??d(_.hostname)??"unknown",g=n_(_.tailscale),U=n_(_.ssh),I=d(_.heartbeat_status),j=d(U.route);return{machine_id:D,hostname:d(_.hostname),local:D===$,platform:d(_.platform),os:d(_.os),user:d(_.user),workspace_path:d(_.workspace_path),manifest_declared:_.manifest_declared===!0,heartbeat_status:I==="online"||I==="offline"?I:"unknown",last_heartbeat_at:d(_.last_heartbeat_at),tailscale:{dns_name:d(g.dns_name),ips:y6(g.ips),online:rj(g.online),active:rj(g.active),last_seen:d(g.last_seen)},ssh:{address:d(U.address),route:j==="local"||j==="lan"||j==="tailscale"?j:"unknown",command_target:d(U.command_target)},route_hints:CM(_.route_hints),tags:y6(_.tags),metadata:n_(_.metadata),source:"open-machines"}}function fM(_,$){return`${$} machine${$===1?"":"s"} discovered via ${_}`}function E$(_){let $=_ instanceof Error?_.message:String(_);return $.includes("Cannot find module '@hasna/machines'")||$.includes("Cannot find module '@hasna/machines/consumer'")?"module_not_found":$}function Ng(_){return _.adapterMode??"auto"}function r9(_){let $=_?.MACHINES_CONSUMER_CONTRACT?.schema_version;if(typeof $==="number")return $;let D=_?.MACHINES_CONSUMER_CONTRACT_VERSION;return typeof D==="number"?D:null}function xj(_){return typeof _.schema_version==="number"?_.schema_version:null}function Eg(_){return typeof _==="number"&&_>VM?_:null}function yj(_){return{package:FM,entrypoint:KM,mode:_.mode,implementation:_.implementation,contract_version:_.contractVersion??null,available:_.available,error:_.error??null}}function j_(_,$="adapter_disabled"){return yj({mode:_,implementation:"disabled",available:!1,error:$})}function hj(_,$){let D=Eg(r9($));if(!D)return null;return yj({mode:_,implementation:"disabled",available:!1,error:`unsupported_contract_version:${D}`,contractVersion:D})}function cj(_){return yj({mode:_,implementation:"cli",available:!0})}function nj(_,$){return yj({mode:_,implementation:"sdk",available:!0,contractVersion:r9($)})}function dj(_){try{return JSON.parse(_)}catch{return null}}function x4(_){return`'${_.replace(/'/g,"'\\''")}'`}function mj(_){return["machines",..._].map(x4).join(" ")}function ij(_){return _==="local"||_==="localhost"||_===u4()||_===process.env.HASNA_MACHINE_ID||_===process.env.OPEN_MACHINES_MACHINE_ID||_===process.env.MACHINE_ID}function wM(_,$){let D=ij(_),g=D?$:`ssh ${x4(_)} ${x4($)}`,U=f9("bash",["-c",g],{encoding:"utf8",env:process.env});return{stdout:U.stdout||"",stderr:U.stderr||"",exitCode:U.status??1,source:D?"local":"ssh"}}async function u9(_,$,D){return await _($,D)}function w4(_,$){if($)return"ok";return _===!1?"warn":"fail"}function r4(_){return _.replace(/[^a-zA-Z0-9_.@/-]+/g,"-").replace(/^-+|-+$/g,"")}function rM(_){if(_==="@hasna/knowledge")return"knowledge";if(_==="@hasna/machines")return"machines";return _.split("/").pop()??_}function uM(_){return _.trim().split(/\r?\n/).find(Boolean)??""}function x9(_){return _.match(/\b\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?\b/)?.[0]??null}function y9(_){let $={};for(let D of _.split(/\r?\n/)){let g=D.indexOf("=");if(g<=0)continue;$[D.slice(0,g)]=D.slice(g+1)}return $}function A6(_){return{id:_.id,kind:_.kind,status:_.status,target:_.target,expected:_.expected??null,actual:_.actual??null,detail:_.detail,source:_.source}}async function h9(_,$,D){let g=[`cmd=${x4($.command)}`,'path="$(command -v "$cmd" 2>/dev/null || true)"','printf "path=%s\\n" "$path"',`if [ -n "$path" ]; then version="$("$cmd" ${$.versionArgs??"--version"} 2>/dev/null || true)"; printf "version=%s\\n" "$version"; fi`].join("; "),U=await u9(D,_,g),I=y9(U.stdout);return{path:I.path||null,version:I.version?uM(I.version):null,stderr:U.stderr,source:U.source??(ij(_)?"local":"ssh")}}function v9(_){let $=_==="name"?String.raw`s/.*"name"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p`:String.raw`s/.*"version"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p`;return[`if command -v bun >/dev/null 2>&1; then bun -e "const p=JSON.parse(await Bun.file(process.argv[1]).text()); console.log(p.${_} ?? '')" "$pkg" 2>/dev/null`,`elif command -v node >/dev/null 2>&1; then node -e "const fs=require('fs'); const p=JSON.parse(fs.readFileSync(process.argv[1], 'utf8')); console.log(p.${_} || '')" "$pkg" 2>/dev/null`,`else sed -n '${$}' "$pkg" | head -n 1`,"fi"].join("; ")}async function xM(_,$,D){let g=[`path=${x4($.path)}`,'printf "exists=%s\\n" "$(test -d "$path" && printf yes || printf no)"','pkg="$path/package.json"','printf "package_json=%s\\n" "$(test -f "$pkg" && printf yes || printf no)"',`if [ -f "$pkg" ]; then printf "package_name=%s\\n" "$(${v9("name")})"; printf "version=%s\\n" "$(${v9("version")})"; fi`].join("; "),U=await u9(D,_,g),I=y9(U.stdout);return{exists:I.exists==="yes",packageJson:I.package_json==="yes",packageName:I.package_name||null,version:I.version||null,stderr:U.stderr,source:U.source??(ij(_)?"local":"ssh")}}async function yM(_,$,D){let g=await h9(_,$,D),U=Boolean(g.path),I=[A6({id:`command:${r4($.command)}:path`,kind:"command",status:w4($.required,U),target:$.command,expected:"available",actual:g.path??"missing",detail:U?`found at ${g.path}`:g.stderr||"command missing",source:g.source})];if($.expectedVersion){let j=x9(g.version??"");I.push(A6({id:`command:${r4($.command)}:version`,kind:"command",status:j===$.expectedVersion?"ok":w4($.required,!1),target:$.command,expected:$.expectedVersion,actual:j??g.version??"missing",detail:j?`version output: ${g.version}`:"version unavailable",source:g.source}))}return I}async function hM(_,$,D){let g=$.command??rM($.name),U=await h9(_,{command:g,expectedVersion:$.expectedVersion,required:$.required},D),I=Boolean(U.path),j=[A6({id:`package:${r4($.name)}:command`,kind:"package",status:w4($.required,I),target:$.name,expected:g,actual:U.path??"missing",detail:I?`${g} found at ${U.path}`:`${g} command missing`,source:U.source})];if($.expectedVersion){let N=x9(U.version??"");j.push(A6({id:`package:${r4($.name)}:version`,kind:"package",status:N===$.expectedVersion?"ok":w4($.required,!1),target:$.name,expected:$.expectedVersion,actual:N??U.version??"missing",detail:N?`version output: ${U.version}`:"version unavailable",source:U.source}))}return j}async function cM(_,$,D){let g=await xM(_,$,D),U=$.label??$.path,I=[A6({id:`workspace:${r4(U)}:path`,kind:"workspace",status:w4($.required,g.exists),target:U,expected:$.path,actual:g.exists?"exists":"missing",detail:g.exists?`workspace exists at ${$.path}`:g.stderr||`workspace missing at ${$.path}`,source:g.source})];if($.expectedPackageName)I.push(A6({id:`workspace:${r4(U)}:package-name`,kind:"workspace",status:g.packageName===$.expectedPackageName?"ok":w4($.required,!1),target:U,expected:$.expectedPackageName,actual:g.packageName??(g.packageJson?"missing-name":"missing-package-json"),detail:g.packageJson?"package.json inspected":"package.json missing",source:g.source}));if($.expectedVersion)I.push(A6({id:`workspace:${r4(U)}:version`,kind:"workspace",status:g.version===$.expectedVersion?"ok":w4($.required,!1),target:U,expected:$.expectedVersion,actual:g.version??(g.packageJson?"missing-version":"missing-package-json"),detail:g.packageJson?"package.json inspected":"package.json missing",source:g.source}));return I}function c9(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:l$,workspace_home:$.knowledge?.workspace_home??null},message:fM(_.source,_.machines.length)}}async function lj(){try{return await import("@hasna/machines/consumer")}catch(_){if(E$(_)!=="module_not_found")throw _;return await import("@hasna/machines")}}function n9(_,$,D){let g=n_(_);if(Eg(xj(g)))return null;let U=Array.isArray(g.machines)?g.machines:null,I=d(g.local_machine_id);if(!U||!I)return null;let j={ok:!0,source:"open-machines",generated_at:d(g.generated_at)??($.now??new Date).toISOString(),local_machine_id:I,local_hostname:d(g.local_hostname)??u4(),current_platform:d(g.current_platform)??uj(),machines:U.map((N)=>vM(N,I)),warnings:y6(g.warnings),adapter:D};return c9(j,$)}function kj(_){return _==="local"||_==="lan"||_==="tailscale"||_==="ssh"||_==="unknown"?_:null}function d9(_){let $=n_(_),D=d($.observed_at),g=d($.source_authority);if(!D||!g)return null;return{observed_at:D,verified_at:d($.verified_at),expires_at:d($.expires_at),ttl_ms:MM($.ttl_ms),source_authority:g,confidence:d($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:y6($.reasons)}}function m9(_,$){let D=n_(_);if(Eg(xj(D)))return null;let g=d(D.target)??d(D.command_target);if(D.ok!==!0||!g)return null;let U=typeof D.evidence==="object"&&D.evidence!==null?D.evidence:null,I=typeof U?.selected_hint==="object"&&U.selected_hint!==null?U.selected_hint:null;return{target:g,route:kj(D.route),targetKind:kj(I?.kind)??kj(D.source)??kj(D.route),confidence:d(D.confidence),source:"open-machines",adapter:$,evidence:U,cacheability:d9(D.cacheability),warnings:y6(D.warnings)}}function NP(_){let $=n_(_);return{path:d($.path),source:d($.source)??"unresolved"}}function nM(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=n_($),g=d(D.id),U=d(D.status),I=d(D.severity),j=d(D.message);if(!g||!U||!I||!j)return[];return[{id:g,status:U,severity:I,message:j,path:d(D.path),source:d(D.source)??"unknown",path_exists:rj(D.path_exists)}]})}function dM(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=n_($),g=d(D.id),U=d(D.reason),I=y6(D.command),j=d(D.shell_command),N=y6(D.apply_command),O=d(D.apply_shell_command);if(!g||!U||!I.length||!j||!N.length||!O)return[];return[{id:g,reason:U,command:I,shell_command:j,apply_command:N,apply_shell_command:O}]})}function mM(_){if(!(_.projectRootSource==="inferred"||_.openFilesRootSource==="inferred"||_.trustStatus==="untrusted"||_.authStatus==="unknown"||_.warnings.some((U)=>U.includes("inferred")||U.includes("untrusted")||U.includes("unknown_auth")||U.includes("missing"))))return[];let D=["machines","workspace","repair","--machine",_.requestedMachineId,"--project",_.projectId,"--repo",_.repoName,"--open-files-repo",_.openFilesRepoName??"open-files","--json"],g=[...D,"--apply"];return[{id:"machines_workspace_repair",reason:"Workspace paths or trust metadata need confirmation before remote knowledge sync.",command:D,shell_command:D.map(x4).join(" "),apply_command:g,apply_shell_command:g.map(x4).join(" ")}]}function i9(_,$,D){let g=n_(_);if(Eg(xj(g)))return null;let U=n_(g.paths),I=n_(g.project),j=n_(g.machine),N=NP(U.project_root),O=NP(U.workspace_root),A=NP(U.open_files_root);if(g.ok!==!0||!N.path)return null;let L=typeof g.evidence==="object"&&g.evidence!==null?g.evidence:null,z=d(g.requested_machine_id)??$.machineId,W=d(I.project_id)??$.projectId??"open-knowledge",J=d(I.repo_name)??$.repoName??$.projectId??"open-knowledge",P=d(j.trust_status)??"unknown",S=d(j.auth_status)??"unknown",X=y6(g.warnings),R=nM(g.diagnostics),G=dM(g.repair_hints);return{ok:!0,source:"open-machines",adapter:D,requested_machine_id:z,machine_id:d(g.machine_id),project_id:W,repo_name:J,project_root:N.path,project_root_source:N.source,workspace_root:O.path,workspace_root_source:O.source,open_files_root:A.path,open_files_root_source:A.source,trust_status:P,auth_status:S,current:j.current===!0,primary:j.primary===!0,diagnostics:R,repair_hints:G.length?G:mM({requestedMachineId:z,projectId:W,repoName:J,openFilesRepoName:$.openFilesRepoName,warnings:X,projectRootSource:N.source,openFilesRootSource:A.source,trustStatus:P,authStatus:S}),evidence:L,cacheability:d9(g.cacheability),warnings:X}}async function Cj(_,$){let D=_.runner??Ig;if(!await jg("machines",D))return null;let g=["topology","--json"];if(_.includeTailscale===!1)g.push("--no-tailscale");let U=await _D(D,mj(g));if(U.exitCode!==0)return null;return n9(dj(U.stdout),_,$)}async function j6(_,$){let D=[];if($.error)D.push(`open_machines_unavailable:${$.error}`);let g=_.runner??Ig,U=_.includeTailscale===!1?{peers:new Map,selfKey:null}:await bM(g,D),I=HM(U.selfKey),N=[...new Set([I,...U.peers.keys()])].sort().map((O)=>kM({machineId:O,localMachineId:I,peer:U.peers.get(O)}));return c9({ok:!0,source:"local",generated_at:(_.now??new Date).toISOString(),local_machine_id:I,local_hostname:u4(),current_platform:uj(),machines:N,warnings:D,adapter:$},_)}async function l9(_={}){let $=Ng(_);if($==="disabled")return await j6(_,j_($));let D=cj($);try{if($!=="cli"){let U=await(_.loadOpenMachines??lj)(),I=hj($,U);if(I)return await j6(_,I);let j=nj($,U);if(U?.discoverMachineTopology){let N=U.discoverMachineTopology({includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),O=n9(N,_,j);if(O)return O;if($==="sdk")return await j6(_,j_($,"invalid_topology_shape"));return await Cj(_,D)??await j6(_,j_($,"invalid_topology_shape"))}if($==="sdk")return await j6(_,j_($,"missing_discoverMachineTopology"));return await Cj(_,D)??await j6(_,j_($,"missing_discoverMachineTopology"))}return await Cj(_,D)??await j6(_,j_($,"machines_cli_unavailable"))}catch(g){if($==="sdk")return await j6(_,j_($,E$(g)));return await Cj(_,D)??await j6(_,j_($,E$(g)))}}async function vj(_,$){let D=_.runner??Ig;if(!await jg("machines",D))return null;let g=["route","--machine",_.machineId,"--json"];if(_.includeTailscale===!1)g.push("--no-tailscale");let U=await _D(D,mj(g));if(U.exitCode!==0)return null;return m9(dj(U.stdout),$)}function N6(_,$){return{target:_,route:null,targetKind:null,confidence:null,source:"raw",adapter:$,evidence:null,cacheability:null,warnings:[]}}async function EP(_){let $=Ng(_);if($==="disabled")return N6(_.machineId,j_($));let D=cj($);try{if($!=="cli"){let U=await(_.loadOpenMachines??lj)(),I=hj($,U);if(I)return N6(_.machineId,I);let j=nj($,U);if(U?.resolveMachineRoute){let N=m9(U.resolveMachineRoute(_.machineId,{includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),j);if(N)return N;if($==="sdk")return N6(_.machineId,j_($,"invalid_route_shape"));return await vj(_,D)??N6(_.machineId,j_($,"invalid_route_shape"))}if($==="sdk")return N6(_.machineId,j_($,"missing_resolveMachineRoute"));return await vj(_,D)??N6(_.machineId,j_($,"missing_resolveMachineRoute"))}return await vj(_,D)??N6(_.machineId,j_($,"machines_cli_unavailable"))}catch(g){if($==="sdk")return{...N6(_.machineId,j_($,E$(g))),warnings:[E$(g)]};return await vj(_,D)??{...N6(_.machineId,j_($,E$(g))),warnings:[E$(g)]}}}async function fj(_,$){let D=_.runner??Ig;if(!await jg("machines",D))return null;let g=_.projectId??"open-knowledge",U=_.repoName??"open-knowledge",I=["workspace","resolve","--machine",_.machineId,"--project",g,"--repo",U,"--open-files-repo",_.openFilesRepoName??"open-files","--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let j=await _D(D,mj(I));if(j.exitCode!==0)return null;return i9(dj(j.stdout),_,$)}function iM(_){let $=_.peerWorkspace?.trim();if(!$)return null;return{ok:!0,source:"argument",adapter:j_(Ng(_),"argument_override"),requested_machine_id:_.machineId,machine_id:_.machineId,project_id:_.projectId??"open-knowledge",repo_name:_.repoName??"open-knowledge",project_root:$,project_root_source:"argument",workspace_root:null,workspace_root_source:"unresolved",open_files_root:null,open_files_root_source:"unresolved",trust_status:"unknown",auth_status:"unknown",current:!1,primary:!1,diagnostics:[],repair_hints:[],evidence:null,cacheability:null,warnings:[]}}function E6(_,$,D){return{ok:!1,source:"raw",adapter:D,requested_machine_id:_.machineId,machine_id:null,project_id:_.projectId??"open-knowledge",repo_name:_.repoName??"open-knowledge",project_root:null,project_root_source:"unresolved",workspace_root:null,workspace_root_source:"unresolved",open_files_root:null,open_files_root_source:"unresolved",trust_status:"unknown",auth_status:"unknown",current:!1,primary:!1,diagnostics:[],repair_hints:[],evidence:null,cacheability:null,warnings:$}}async function tj(_){let $=iM(_);if($)return $;let D=Ng(_);if(D==="disabled")return E6(_,["adapter_disabled"],j_(D));let g=cj(D);try{if(D!=="cli"){let I=await(_.loadOpenMachines??lj)(),j=hj(D,I);if(j)return E6(_,[`unsupported_contract_version:${j.contract_version}`],j);let N=nj(D,I);if(I?.resolveMachineWorkspace){let O=i9(I.resolveMachineWorkspace({machineId:_.machineId,projectId:_.projectId??"open-knowledge",repoName:_.repoName??"open-knowledge",openFilesRepoName:_.openFilesRepoName??"open-files",includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),_,N);if(O)return O;if(D==="sdk")return E6(_,["invalid_workspace_shape"],j_(D,"invalid_workspace_shape"));return await fj(_,g)??E6(_,["invalid_workspace_shape"],j_(D,"invalid_workspace_shape"))}if(D==="sdk")return E6(_,["missing_resolveMachineWorkspace"],j_(D,"missing_resolveMachineWorkspace"));return await fj(_,g)??E6(_,["missing_resolveMachineWorkspace"],j_(D,"missing_resolveMachineWorkspace"))}return await fj(_,g)??E6(_,["machines_cli_unavailable"],j_(D,"machines_cli_unavailable"))}catch(U){if(D==="sdk")return E6(_,[E$(U)],j_(D,E$(U)));return await fj(_,g)??E6(_,[E$(U)],j_(D,E$(U)))}}function t9(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:l$,workspace_home:$.knowledge?.workspace_home??null},message:_.ok?`Machine ${_.machine_id} passed knowledge preflight`:`Machine ${_.machine_id} failed knowledge preflight: ${_.summary.fail} failing check(s)`}}function o9(_,$,D){let g=n_(_);if(Eg(xj(g)))return null;let U=Array.isArray(g.checks)?g.checks:null,I=d(g.machine_id)??d(g.machineId);if(!U||!I)return null;let j=U.map((O)=>{let A=n_(O),L=d(A.status),z=d(A.kind),W=d(A.source);return A6({id:d(A.id)??"unknown",kind:z==="command"||z==="package"||z==="workspace"?z:"command",status:L==="ok"||L==="warn"||L==="fail"?L:"fail",target:d(A.target)??"unknown",expected:d(A.expected),actual:d(A.actual),detail:d(A.detail)??"",source:W==="local"||W==="ssh"||W==="open-machines"?W:"open-machines"})}),N={ok:j.filter((O)=>O.status==="ok").length,warn:j.filter((O)=>O.status==="warn").length,fail:j.filter((O)=>O.status==="fail").length};return t9({ok:N.fail===0,source:"open-machines",machine_id:I,generated_at:d(g.generated_at)??($.now??new Date).toISOString(),checks:j,summary:N,adapter:D},$)}function lM(_){if(!_.runner)return Ig;return async($)=>{let D=await _.runner?.("local",$);return{stdout:D?.stdout??"",stderr:D?.stderr??"",exitCode:D?.exitCode??1}}}function tM(_){return[_.name,_.command,_.expectedVersion].filter(($)=>Boolean($)).join(":")}function oM(_){let $=[_.expectedPackageName,_.expectedVersion].filter((g)=>Boolean(g)).join(":"),D=$?`${_.path}:${$}`:_.path;return _.label?`${_.label}=${D}`:D}async function wj(_,$){let D=lM(_);if(!await jg("machines",D))return null;let g=["compatibility","--json","--machine",_.machineId??"local"];for(let I of _.commands??[])g.push("--command",I.expectedVersion?`${I.command}:${I.expectedVersion}`:I.command);for(let I of _.packages??[])g.push("--package",tM(I));for(let I of _.workspaces??[])g.push("--workspace",oM(I));let U=await _D(D,mj(g));if(U.exitCode!==0)return null;return o9(dj(U.stdout),_,$)}async function O6(_,$){let D=_.machineId??u4(),g=_.runner??wM,U=_.commands??[{command:"bun",required:!0},{command:"knowledge",required:!0}],I=_.packages??[{name:"@hasna/knowledge",command:"knowledge",required:!0}],j=_.workspaces??[],N=[];for(let A of U)N.push(...await yM(D,A,g));for(let A of I)N.push(...await hM(D,A,g));for(let A of j)N.push(...await cM(D,A,g));if($.error)N.push(A6({id:"adapter:@hasna/machines",kind:"package",status:"warn",target:"@hasna/machines",expected:"optional",actual:$.error,detail:"Using knowledge local/ssh compatibility fallback",source:ij(D)?"local":"ssh"}));let O={ok:N.filter((A)=>A.status==="ok").length,warn:N.filter((A)=>A.status==="warn").length,fail:N.filter((A)=>A.status==="fail").length};return t9({ok:O.fail===0,source:"local",machine_id:D,generated_at:(_.now??new Date).toISOString(),checks:N,summary:O,adapter:$},_)}async function p9(_={}){let $=Ng(_);if($==="disabled")return await O6(_,j_($));let D=cj($);try{if($!=="cli"){let U=await(_.loadOpenMachines??lj)(),I=hj($,U);if(I)return await O6(_,I);let j=nj($,U);if(U?.checkMachineCompatibility){let N=U.checkMachineCompatibility({machineId:_.machineId,commands:_.commands,packages:_.packages,workspaces:_.workspaces,runner:_.runner,now:_.now}),O=o9(N,_,j);if(O)return O;if($==="sdk")return await O6(_,j_($,"invalid_compatibility_shape"));return await wj(_,D)??await O6(_,j_($,"invalid_compatibility_shape"))}if($==="sdk")return await O6(_,j_($,"missing_checkMachineCompatibility"));return await wj(_,D)??await O6(_,j_($,"missing_checkMachineCompatibility"))}return await wj(_,D)??await O6(_,j_($,"machines_cli_unavailable"))}catch(g){if($==="sdk")return await O6(_,j_($,E$(g)));return await wj(_,D)??await O6(_,j_($,E$(g)))}}import{createHash as e9}from"crypto";function AP(_,$,D=24){return`${_}_${e9("sha256").update($).digest("hex").slice(0,D)}`}function $D(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function pM(_){return $D(_).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")}function V$(_,$){try{return JSON.parse(_)}catch{return $}}function h6(_){return{..._,record_kind:_.record_kind,source_kind:_.source_kind,status:_.status,source_refs:V$(_.source_refs_json,[]),evidence_refs:V$(_.evidence_refs_json,[]),requires_approval:_.requires_approval===1,checks:V$(_.checks_json,a9()),metadata:V$(_.metadata_json,{})}}function LP(_){return{..._,record_kind:_.record_kind,source_refs:V$(_.source_refs_json,[]),evidence_refs:V$(_.evidence_refs_json,[]),metadata:V$(_.metadata_json,{})}}function a9(){return{citations:{provided:0,valid:0,invalid:0,entries:[]},invalid_source_refs:[],stale_refs:[],duplicate_record_ids:[],duplicate_candidate_ids:[],conflicting_record_ids:[],conflicting_candidate_ids:[],approval_reasons:[]}}function eM(_){let $=typeof _==="string"?{ref:_}:_;return{ref:$D($.ref),citation_id:$.citation_id??null,chunk_id:$.chunk_id??null,revision:$.revision??null,hash:$.hash??null,observed_at:$.observed_at??null,expires_at:$.expires_at??null,status:$.status??null}}function s9(_){try{let $=new URL(_);return $.protocol.length>1&&($.hostname.length>0||$.pathname.length>0)}catch{return/^(?:cite|citation|chunk|run):[A-Za-z0-9._:-]+$/.test(_)}}function oj(_){return["deleted","stale","invalidated","reindex_required","expired","superseded"].includes((_??"").toLowerCase())}function OP(_){if(!_)return null;let $=V$(_,{});if($.stale===!0)return"stale";return typeof $.status==="string"?$.status:null}function aM(_){if(_.citation_id)return _.citation_id;return _.ref.match(/^(?:cite|citation):(.+)$/)?.[1]??null}function sM(_){if(_.chunk_id)return _.chunk_id;return _.ref.match(/^chunk:(.+)$/)?.[1]??null}function _Z(_,$,D){let g=oj($.status)||Boolean($.expires_at&&$.expires_at<=D);if(!$.ref||!s9($.ref))return{ref:$.ref,valid:!1,resolved_by:"none",stale:g,reason:"invalid_reference"};let U=aM($),I=_.query(`SELECT c.id, c.source_uri, c.chunk_id, ch.metadata_json AS chunk_metadata_json, sr.hash AS revision_hash, sr.revision, sr.id AS source_revision_id, sr.source_id, sr.created_at AS revision_created_at, (SELECT MAX(newest.created_at) FROM source_revisions newest WHERE newest.source_id = sr.source_id) AS latest_revision_at @@ -971,9 +971,9 @@ ${JSON.stringify(_.evidence,null,2)}`].join(` LEFT JOIN source_revisions sr ON sr.id = ch.source_revision_id WHERE c.id = ? OR c.source_uri = ? ORDER BY c.created_at DESC - LIMIT 1`).get(D,$.ref);if(I){let A=Boolean($.hash&&I.revision_hash&&$.hash!==I.revision_hash),L=Boolean($.revision&&I.revision&&$.revision!==I.revision),z=Boolean(I.revision_created_at&&I.latest_revision_at&&I.revision_created_at!yR(z)),j.citations.entries=U.map((z)=>uM(_,z,g)),j.citations.provided=U.length,j.citations.valid=j.citations.entries.filter((z)=>z.valid).length,j.citations.invalid=j.citations.entries.length-j.citations.valid,j.stale_refs=j.citations.entries.filter((z)=>z.stale).map((z)=>z.ref),j.duplicate_record_ids=_.query(`SELECT id FROM durable_knowledge_records + WHERE ch.id = ?`).get(j);if(!A)return{ref:$.ref,valid:!1,resolved_by:"none",stale:g,reason:"chunk_not_found"};let L=Boolean($.hash&&A.hash&&$.hash!==A.hash||$.revision&&A.revision&&$.revision!==A.revision),z=g||oj(OP(A.metadata_json))||L;return{ref:$.ref,valid:!0,resolved_by:"chunk",stale:z,reason:L?"source_version_mismatch":z?"stale_chunk":null}}let N=_.query("SELECT metadata_json FROM sources WHERE uri = ? LIMIT 1").get($.ref);if(N){let A=g||oj(OP(N.metadata_json));return{ref:$.ref,valid:!0,resolved_by:"source",stale:A,reason:A?"stale_source":null}}let O=$.ref.match(/^knowledge:\/\/project\/runs\/([^/?#]+)/);if(O){if(!_.query("SELECT id FROM runs WHERE id = ?").get(decodeURIComponent(O[1])))return{ref:$.ref,valid:!1,resolved_by:"none",stale:g,reason:"run_not_found"};return{ref:$.ref,valid:!0,resolved_by:"run",stale:g,reason:g?"expired_evidence":null}}return{ref:$.ref,valid:!0,resolved_by:"external_uri",stale:g,reason:g?"expired_evidence":null}}function c6(_,$){return _.query("SELECT * FROM knowledge_promotion_candidates WHERE id = ?").get($)??null}function JP(_,$,D){let g=V$($.evidence_refs_json,[]),U=V$($.source_refs_json,[]),I=V$($.metadata_json,{}),j=a9();j.invalid_source_refs=U.filter((z)=>!s9(z)),j.citations.entries=g.map((z)=>_Z(_,z,D)),j.citations.provided=g.length,j.citations.valid=j.citations.entries.filter((z)=>z.valid).length,j.citations.invalid=j.citations.entries.length-j.citations.valid,j.stale_refs=j.citations.entries.filter((z)=>z.stale).map((z)=>z.ref),j.duplicate_record_ids=_.query(`SELECT id FROM durable_knowledge_records WHERE record_kind = ? AND content_hash = ? AND status IN ('active', 'conflicted') ORDER BY created_at`).all($.record_kind,$.content_hash).map((z)=>z.id),j.duplicate_candidate_ids=_.query(`SELECT id FROM knowledge_promotion_candidates WHERE id <> ? AND record_kind = ? AND content_hash = ? AND status NOT IN ('rejected') @@ -982,35 +982,35 @@ ${JSON.stringify(_.evidence,null,2)}`].join(` ORDER BY created_at`).all($.record_kind,$.canonical_key,$.content_hash).map((z)=>z.id),j.conflicting_candidate_ids=_.query(`SELECT id FROM knowledge_promotion_candidates WHERE id <> ? AND record_kind = ? AND canonical_key = ? AND content_hash <> ? AND status IN ('ready', 'needs_approval', 'promoted') - ORDER BY created_at`).all($.id,$.record_kind,$.canonical_key,$.content_hash).map((z)=>z.id);let N=j.duplicate_record_ids[0]??j.duplicate_candidate_ids[0]??null,O=D.length===0||U.length===0||j.invalid_source_refs.length>0||j.citations.invalid>0;if($.record_kind==="decision"||$.record_kind==="claim")j.approval_reasons.push(`${$.record_kind}_requires_review`);if(I.requested_approval===!0)j.approval_reasons.push("explicit_approval_request");if(j.stale_refs.length>0)j.approval_reasons.push("stale_evidence");if(j.conflicting_record_ids.length>0||j.conflicting_candidate_ids.length>0)j.approval_reasons.push("conflicting_knowledge");let A=j.approval_reasons.length>0,L=N?"duplicate":O?"blocked":A?"needs_approval":"ready";return _.run(`UPDATE knowledge_promotion_candidates + ORDER BY created_at`).all($.id,$.record_kind,$.canonical_key,$.content_hash).map((z)=>z.id);let N=j.duplicate_record_ids[0]??j.duplicate_candidate_ids[0]??null,O=U.length===0||g.length===0||j.invalid_source_refs.length>0||j.citations.invalid>0;if($.record_kind==="decision"||$.record_kind==="claim")j.approval_reasons.push(`${$.record_kind}_requires_review`);if(I.requested_approval===!0)j.approval_reasons.push("explicit_approval_request");if(j.stale_refs.length>0)j.approval_reasons.push("stale_evidence");if(j.conflicting_record_ids.length>0||j.conflicting_candidate_ids.length>0)j.approval_reasons.push("conflicting_knowledge");let A=j.approval_reasons.length>0,L=N?"duplicate":O?"blocked":A?"needs_approval":"ready";return _.run(`UPDATE knowledge_promotion_candidates SET status = ?, requires_approval = ?, checks_json = ?, duplicate_of = ?, updated_at = ?, reviewed_at = ? - WHERE id = ?`,[L,A?1:0,JSON.stringify(j),N,g,g,$.id]),h6(c6(_,$.id))}function hR(_,$){let g=["lesson","decision","claim"],U=["memento","session","report"];if(!g.includes($.kind))throw Error("Promotion kind must be lesson, decision, or claim.");if(!U.includes($.sourceKind))throw Error("Promotion source kind must be memento, session, or report.");let D=u_(_g($.title)),I=u_(_g($.content));if(!D.text)throw Error("Promotion title is required.");if(!I.text)throw Error("Promotion content is required.");let j=Array.from(new Set($.sourceRefs.map(_g).filter(Boolean))).sort(),N=$.evidenceRefs.map(vM).filter((S)=>S.ref.length>0).sort((S,X)=>S.ref.localeCompare(X.ref)),O=rM($.canonicalKey??D.text);if(!O)throw Error("Promotion canonical key is empty after normalization.");let A=`sha256:${uR("sha256").update(`${$.kind}\x00${_g(I.text).toLowerCase()}`).digest("hex")}`,L=g3("promote",[$.sourceKind,$.kind,O,A,...j].join("\x00")),z=g3("promotion",L),W=($.now??new Date).toISOString(),J={...$.metadata??{},requested_approval:$.requiresApproval===!0,confidence:$.confidence??null,valid_from:$.validFrom??W,valid_to:$.validTo??null,redactions:D.findings.length+I.findings.length};h(_);let P=v(_);try{let S=P.query("SELECT * FROM knowledge_promotion_candidates WHERE idempotency_key = ?").get(L);if(S)return{created:!1,candidate:h6(S)};P.run(`INSERT INTO knowledge_promotion_candidates ( + WHERE id = ?`,[L,A?1:0,JSON.stringify(j),N,D,D,$.id]),h6(c6(_,$.id))}function _G(_,$){let D=["lesson","decision","claim"],g=["memento","session","report"];if(!D.includes($.kind))throw Error("Promotion kind must be lesson, decision, or claim.");if(!g.includes($.sourceKind))throw Error("Promotion source kind must be memento, session, or report.");let U=u_($D($.title)),I=u_($D($.content));if(!U.text)throw Error("Promotion title is required.");if(!I.text)throw Error("Promotion content is required.");let j=Array.from(new Set($.sourceRefs.map($D).filter(Boolean))).sort(),N=$.evidenceRefs.map(eM).filter((S)=>S.ref.length>0).sort((S,X)=>S.ref.localeCompare(X.ref)),O=pM($.canonicalKey??U.text);if(!O)throw Error("Promotion canonical key is empty after normalization.");let A=`sha256:${e9("sha256").update(`${$.kind}\x00${$D(I.text).toLowerCase()}`).digest("hex")}`,L=AP("promote",[$.sourceKind,$.kind,O,A,...j].join("\x00")),z=AP("promotion",L),W=($.now??new Date).toISOString(),J={...$.metadata??{},requested_approval:$.requiresApproval===!0,confidence:$.confidence??null,valid_from:$.validFrom??W,valid_to:$.validTo??null,redactions:U.findings.length+I.findings.length};h(_);let P=f(_);try{let S=P.query("SELECT * FROM knowledge_promotion_candidates WHERE idempotency_key = ?").get(L);if(S)return{created:!1,candidate:h6(S)};P.run(`INSERT INTO knowledge_promotion_candidates ( id, record_kind, title, content, canonical_key, content_hash, source_kind, source_refs_json, evidence_refs_json, status, requires_approval, checks_json, idempotency_key, metadata_json, created_at, updated_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', 0, '{}', ?, ?, ?, ?)`,[z,$.kind,D.text,I.text,O,A,$.sourceKind,JSON.stringify(j),JSON.stringify(N),L,JSON.stringify(J),W,W]);let X=[...D.findings,...I.findings];if(X.length>0)z0(P,{source_uri:j[0]??`knowledge://promotion/${z}`,findings:X,metadata:{promotion_candidate_id:z},created_at:W});return X_(P,{event_type:"knowledge_promotion",action:"enqueue_promotion",target_uri:`knowledge://promotion/${z}`,decision:"info",metadata:{record_kind:$.kind,source_kind:$.sourceKind,source_refs:j},created_at:W}),{created:!0,candidate:U3(P,c6(P,z),W)}}finally{P.close()}}function cR(_,$){h(_);let g=v(_);try{let U=c6(g,$);return U?h6(U):null}finally{g.close()}}function nR(_,$={}){h(_);let g=Math.max(1,Math.min($.limit??50,200)),U=[],D=[];if($.status==="inbox"||!$.status)U.push("status IN ('ready', 'needs_approval', 'blocked')");else U.push("status = ?"),D.push($.status);if($.kind)U.push("record_kind = ?"),D.push($.kind);let I=v(_);try{return I.query(`SELECT * FROM knowledge_promotion_candidates - WHERE ${U.join(" AND ")} + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', 0, '{}', ?, ?, ?, ?)`,[z,$.kind,U.text,I.text,O,A,$.sourceKind,JSON.stringify(j),JSON.stringify(N),L,JSON.stringify(J),W,W]);let X=[...U.findings,...I.findings];if(X.length>0)S0(P,{source_uri:j[0]??`knowledge://promotion/${z}`,findings:X,metadata:{promotion_candidate_id:z},created_at:W});return X_(P,{event_type:"knowledge_promotion",action:"enqueue_promotion",target_uri:`knowledge://promotion/${z}`,decision:"info",metadata:{record_kind:$.kind,source_kind:$.sourceKind,source_refs:j},created_at:W}),{created:!0,candidate:JP(P,c6(P,z),W)}}finally{P.close()}}function $G(_,$){h(_);let D=f(_);try{let g=c6(D,$);return g?h6(g):null}finally{D.close()}}function DG(_,$={}){h(_);let D=Math.max(1,Math.min($.limit??50,200)),g=[],U=[];if($.status==="inbox"||!$.status)g.push("status IN ('ready', 'needs_approval', 'blocked')");else g.push("status = ?"),U.push($.status);if($.kind)g.push("record_kind = ?"),U.push($.kind);let I=f(_);try{return I.query(`SELECT * FROM knowledge_promotion_candidates + WHERE ${g.join(" AND ")} ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all(...D,g).map(h6)}finally{I.close()}}function dR(_,$,g=new Date){h(_);let U=v(_);try{let D=c6(U,$);if(!D)throw Error(`Promotion candidate not found: ${$}`);if(D.status==="promoted"||D.status==="rejected")return h6(D);return U3(U,D,g.toISOString())}finally{U.close()}}function mR(_,$,g={}){h(_);let U=v(_),D=(g.now??new Date).toISOString();try{let I=c6(U,$);if(!I)throw Error(`Promotion candidate not found: ${$}`);if(I.status==="promoted"&&I.promoted_record_id){let J=U.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(I.promoted_record_id);return{ok:!0,promoted:!1,requires_approval:I.requires_approval===1,candidate:h6(I),record:J?D3(J):null,approval_id:null,reason:"already_promoted"}}if(I.status==="rejected")throw Error(`Promotion candidate ${$} was rejected.`);let j=U3(U,I,D);if(j.status==="duplicate")return{ok:!0,promoted:!1,requires_approval:!1,candidate:j,record:null,approval_id:null,reason:"duplicate"};if(j.status==="blocked")return{ok:!1,promoted:!1,requires_approval:!1,candidate:j,record:null,approval_id:null,reason:"citation_check_failed"};if(j.requires_approval&&!g.approveWrite)return{ok:!1,promoted:!1,requires_approval:!0,candidate:j,record:null,approval_id:null,reason:"approval_required"};if(j.requires_approval&&!g.approvedBy?.trim())throw Error("Promotion approval requires --approved-by .");let N=j.requires_approval?g.approvedBy.trim():null,O=null;if(j.requires_approval)O=iU(U,{action:"promote_durable_knowledge",target_uri:`knowledge://promotion/${j.id}`,reason:j.checks.approval_reasons.join(", "),approved_by:N,metadata:{promotion_candidate_id:j.id,checks:j.checks},created_at:D}).id;let A=g3("durable",j.id),L={...j.metadata,promotion_candidate_id:j.id,source_kind:j.source_kind,checks:j.checks,approval_id:O,provenance:U$({generated_from:`knowledge://promotion/${j.id}`,artifact_key:`durable/${j.record_kind}/${j.canonical_key}`,source_refs:j.source_refs,citation_required:!0})};U.run(`INSERT INTO durable_knowledge_records ( + LIMIT ?`).all(...U,D).map(h6)}finally{I.close()}}function UG(_,$,D=new Date){h(_);let g=f(_);try{let U=c6(g,$);if(!U)throw Error(`Promotion candidate not found: ${$}`);if(U.status==="promoted"||U.status==="rejected")return h6(U);return JP(g,U,D.toISOString())}finally{g.close()}}function gG(_,$,D={}){h(_);let g=f(_),U=(D.now??new Date).toISOString();try{let I=c6(g,$);if(!I)throw Error(`Promotion candidate not found: ${$}`);if(I.status==="promoted"&&I.promoted_record_id){let J=g.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(I.promoted_record_id);return{ok:!0,promoted:!1,requires_approval:I.requires_approval===1,candidate:h6(I),record:J?LP(J):null,approval_id:null,reason:"already_promoted"}}if(I.status==="rejected")throw Error(`Promotion candidate ${$} was rejected.`);let j=JP(g,I,U);if(j.status==="duplicate")return{ok:!0,promoted:!1,requires_approval:!1,candidate:j,record:null,approval_id:null,reason:"duplicate"};if(j.status==="blocked")return{ok:!1,promoted:!1,requires_approval:!1,candidate:j,record:null,approval_id:null,reason:"citation_check_failed"};if(j.requires_approval&&!D.approveWrite)return{ok:!1,promoted:!1,requires_approval:!0,candidate:j,record:null,approval_id:null,reason:"approval_required"};if(j.requires_approval&&!D.approvedBy?.trim())throw Error("Promotion approval requires --approved-by .");let N=j.requires_approval?D.approvedBy.trim():null,O=null;if(j.requires_approval)O=lg(g,{action:"promote_durable_knowledge",target_uri:`knowledge://promotion/${j.id}`,reason:j.checks.approval_reasons.join(", "),approved_by:N,metadata:{promotion_candidate_id:j.id,checks:j.checks},created_at:U}).id;let A=AP("durable",j.id),L={...j.metadata,promotion_candidate_id:j.id,source_kind:j.source_kind,checks:j.checks,approval_id:O,provenance:g$({generated_from:`knowledge://promotion/${j.id}`,artifact_key:`durable/${j.record_kind}/${j.canonical_key}`,source_refs:j.source_refs,citation_required:!0})};g.run(`INSERT INTO durable_knowledge_records ( id, record_kind, title, content, canonical_key, content_hash, status, source_refs_json, evidence_refs_json, confidence, valid_from, valid_to, promoted_from_candidate_id, approved_by, metadata_json, created_at, updated_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[A,j.record_kind,j.title,j.content,j.canonical_key,j.content_hash,j.checks.conflicting_record_ids.length>0?"conflicted":"active",JSON.stringify(j.source_refs),JSON.stringify(j.evidence_refs),typeof j.metadata.confidence==="number"?j.metadata.confidence:null,typeof j.metadata.valid_from==="string"?j.metadata.valid_from:D,typeof j.metadata.valid_to==="string"?j.metadata.valid_to:null,j.id,N,JSON.stringify(L),D,D]),U.run(`UPDATE knowledge_promotion_candidates + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[A,j.record_kind,j.title,j.content,j.canonical_key,j.content_hash,j.checks.conflicting_record_ids.length>0?"conflicted":"active",JSON.stringify(j.source_refs),JSON.stringify(j.evidence_refs),typeof j.metadata.confidence==="number"?j.metadata.confidence:null,typeof j.metadata.valid_from==="string"?j.metadata.valid_from:U,typeof j.metadata.valid_to==="string"?j.metadata.valid_to:null,j.id,N,JSON.stringify(L),U,U]),g.run(`UPDATE knowledge_promotion_candidates SET status = 'promoted', approved_by = ?, promoted_record_id = ?, promoted_at = ?, updated_at = ? - WHERE id = ?`,[N,A,D,D,j.id]),X_(U,{event_type:"knowledge_promotion",action:"promote_durable_knowledge",target_uri:`knowledge://durable/${A}`,decision:"allow",metadata:{promotion_candidate_id:j.id,approval_id:O,source_refs:j.source_refs},created_at:D});let z=h6(c6(U,j.id)),W=U.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(A);return{ok:!0,promoted:!0,requires_approval:j.requires_approval,candidate:z,record:D3(W),approval_id:O,reason:null}}finally{U.close()}}function iR(_,$,g={}){h(_);let U=v(_),D=(g.now??new Date).toISOString();try{let I=c6(U,$);if(!I)throw Error(`Promotion candidate not found: ${$}`);if(I.status==="promoted")throw Error(`Promotion candidate ${$} is already promoted.`);return U.run(`UPDATE knowledge_promotion_candidates + WHERE id = ?`,[N,A,U,U,j.id]),X_(g,{event_type:"knowledge_promotion",action:"promote_durable_knowledge",target_uri:`knowledge://durable/${A}`,decision:"allow",metadata:{promotion_candidate_id:j.id,approval_id:O,source_refs:j.source_refs},created_at:U});let z=h6(c6(g,j.id)),W=g.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(A);return{ok:!0,promoted:!0,requires_approval:j.requires_approval,candidate:z,record:LP(W),approval_id:O,reason:null}}finally{g.close()}}function IG(_,$,D={}){h(_);let g=f(_),U=(D.now??new Date).toISOString();try{let I=c6(g,$);if(!I)throw Error(`Promotion candidate not found: ${$}`);if(I.status==="promoted")throw Error(`Promotion candidate ${$} is already promoted.`);return g.run(`UPDATE knowledge_promotion_candidates SET status = 'rejected', approved_by = ?, updated_at = ?, reviewed_at = ? - WHERE id = ?`,[g.rejectedBy?.trim()||null,D,D,$]),X_(U,{event_type:"knowledge_promotion",action:"reject_promotion",target_uri:`knowledge://promotion/${$}`,decision:"deny",metadata:{rejected_by:g.rejectedBy??null},created_at:D}),h6(c6(U,$))}finally{U.close()}}function lR(_,$={}){h(_);let g=[],U=[];if($.kind)g.push("record_kind = ?"),U.push($.kind);if($.status)g.push("status = ?"),U.push($.status);let D=Math.max(1,Math.min($.limit??50,200)),I=v(_);try{return I.query(`SELECT * FROM durable_knowledge_records - ${g.length?`WHERE ${g.join(" AND ")}`:""} + WHERE id = ?`,[D.rejectedBy?.trim()||null,U,U,$]),X_(g,{event_type:"knowledge_promotion",action:"reject_promotion",target_uri:`knowledge://promotion/${$}`,decision:"deny",metadata:{rejected_by:D.rejectedBy??null},created_at:U}),h6(c6(g,$))}finally{g.close()}}function jG(_,$={}){h(_);let D=[],g=[];if($.kind)D.push("record_kind = ?"),g.push($.kind);if($.status)D.push("status = ?"),g.push($.status);let U=Math.max(1,Math.min($.limit??50,200)),I=f(_);try{return I.query(`SELECT * FROM durable_knowledge_records + ${D.length?`WHERE ${D.join(" AND ")}`:""} ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all(...U,D).map(D3)}finally{I.close()}}import{createHash as xM,randomUUID as tR}from"crypto";function yM(_,$){return`${_}_${xM("sha256").update($).digest("hex").slice(0,20)}`}function hM(_){let $=v(_);try{let g=$.query("SELECT status, COUNT(*) AS n FROM reindex_queue GROUP BY status ORDER BY status").all();return Object.fromEntries(g.map((U)=>[U.status,U.n]))}finally{$.close()}}function oR(_,$){let g=I4($.modelRef,$.config),U=w_(g),D=v(_);try{return D.query(`SELECT c.id AS chunk_id, c.source_revision_id, s.uri AS source_uri + LIMIT ?`).all(...g,U).map(LP)}finally{I.close()}}import{createHash as $Z,randomUUID as NG}from"crypto";function DZ(_,$){return`${_}_${$Z("sha256").update($).digest("hex").slice(0,20)}`}function UZ(_){let $=f(_);try{let D=$.query("SELECT status, COUNT(*) AS n FROM reindex_queue GROUP BY status ORDER BY status").all();return Object.fromEntries(D.map((g)=>[g.status,g.n]))}finally{$.close()}}function EG(_,$){let D=I4($.modelRef,$.config),g=w_(D),U=f(_);try{return U.query(`SELECT c.id AS chunk_id, c.source_revision_id, s.uri AS source_uri FROM chunks c LEFT JOIN source_revisions sr ON sr.id = c.source_revision_id LEFT JOIN sources s ON s.id = sr.source_id LEFT JOIN vector_index_entries v ON v.chunk_id = c.id AND v.provider = ? AND v.model = ? WHERE v.id IS NULL - ORDER BY c.created_at ASC, c.ordinal ASC`).all(U.provider,U.model)}finally{D.close()}}function pR(_){h(_.dbPath);let $=v(_.dbPath);try{let g=$.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0,U=$.query("SELECT COUNT(*) AS n FROM chunks").get()?.n??0,D=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,I=oR(_.dbPath,_).length,j=$.query(`SELECT COUNT(*) AS n FROM source_revisions - WHERE metadata_json LIKE '%"reindex_required":true%' OR metadata_json LIKE '%"status":"stale"%'`).get()?.n??0;return{schema_version:g,chunks:U,vector_entries:D,missing_embeddings:I,queued:hM(_.dbPath),stale_revisions:j}}finally{$.close()}}function I3(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),g=_.reason??"missing_embedding",U=oR(_.dbPath,_),D=v(_.dbPath),I=0,j=0;try{D.transaction(()=>{for(let O of U){let A=yM("rq",`embedding\x00${O.chunk_id}\x00${g}`);if(D.query("SELECT id FROM reindex_queue WHERE kind = ? AND target_id = ? AND reason = ?").get("embedding",O.chunk_id,g)){j+=1;continue}D.run(`INSERT INTO reindex_queue (id, kind, target_id, source_uri, reason, status, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[A,"embedding",O.chunk_id,O.source_uri,g,"pending",JSON.stringify({source_revision_id:O.source_revision_id}),$,$]),I+=1}})()}finally{D.close()}return{enqueued:I,already_queued:j,reason:g}}function cM(_){let $=v(_);try{let g=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0;return $.run("DELETE FROM vector_index_entries"),$.run("DELETE FROM chunk_embeddings"),{embeddings:g,vectorEntries:U}}finally{$.close()}}function nM(_,$,g){let U=I4($.modelRef,$.config),D=w_(U),I=v(_);try{return I.run(`UPDATE reindex_queue + ORDER BY c.created_at ASC, c.ordinal ASC`).all(g.provider,g.model)}finally{U.close()}}function OG(_){h(_.dbPath);let $=f(_.dbPath);try{let D=$.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0,g=$.query("SELECT COUNT(*) AS n FROM chunks").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,I=EG(_.dbPath,_).length,j=$.query(`SELECT COUNT(*) AS n FROM source_revisions + WHERE metadata_json LIKE '%"reindex_required":true%' OR metadata_json LIKE '%"status":"stale"%'`).get()?.n??0;return{schema_version:D,chunks:g,vector_entries:U,missing_embeddings:I,queued:UZ(_.dbPath),stale_revisions:j}}finally{$.close()}}function PP(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),D=_.reason??"missing_embedding",g=EG(_.dbPath,_),U=f(_.dbPath),I=0,j=0;try{U.transaction(()=>{for(let O of g){let A=DZ("rq",`embedding\x00${O.chunk_id}\x00${D}`);if(U.query("SELECT id FROM reindex_queue WHERE kind = ? AND target_id = ? AND reason = ?").get("embedding",O.chunk_id,D)){j+=1;continue}U.run(`INSERT INTO reindex_queue (id, kind, target_id, source_uri, reason, status, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[A,"embedding",O.chunk_id,O.source_uri,D,"pending",JSON.stringify({source_revision_id:O.source_revision_id}),$,$]),I+=1}})()}finally{U.close()}return{enqueued:I,already_queued:j,reason:D}}function gZ(_){let $=f(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,g=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0;return $.run("DELETE FROM vector_index_entries"),$.run("DELETE FROM chunk_embeddings"),{embeddings:D,vectorEntries:g}}finally{$.close()}}function IZ(_,$,D){let g=I4($.modelRef,$.config),U=w_(g),I=f(_);try{return I.run(`UPDATE reindex_queue SET status = ?, updated_at = ? WHERE kind = ? AND status = ? @@ -1019,13 +1019,13 @@ ${JSON.stringify(_.evidence,null,2)}`].join(` WHERE v.chunk_id = reindex_queue.target_id AND v.provider = ? AND v.model = ? - )`,["completed",g,"embedding","pending",D.provider,D.model]).changes}finally{I.close()}}async function eR(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),g=`run_${tR()}`,U=_.full?cM(_.dbPath):{embeddings:0,vectorEntries:0},D=I3({..._,reason:_.full?"full_embedding_rebuild":"missing_embedding"}),I=v(_.dbPath);try{I.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[g,"embedding-refresh",_.full?"full":"incremental","running","local",I4(_.modelRef,_.config),JSON.stringify({full:_.full===!0,queued:D}),$,$])}finally{I.close()}let j=await _I({dbPath:_.dbPath,config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,limit:_.limit,now:_.now}),N=nM(_.dbPath,_,$),O=v(_.dbPath);try{O.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({full:_.full===!0,queued:D,indexed:j,completed_queue_items:N}),$,g]),O.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${tR()}`,g,"info","embedding_refresh_completed",JSON.stringify({queued:D,indexed:j,completed_queue_items:N}),$])}finally{O.close()}return{run_id:g,full:_.full===!0,deleted_embeddings:U.embeddings,deleted_vector_entries:U.vectorEntries,queued:D,indexed:j,completed_queue_items:N}}import{createHash as _G}from"crypto";import{existsSync as $G,lstatSync as dM,readdirSync as mM,readFileSync as iM,statSync as lM}from"fs";import{basename as $g,extname as tM,join as oM,relative as pM,resolve as O3,sep as eM}from"path";import{pathToFileURL as aR}from"url";var aM=100,sM=25,_Z=262144,$Z=5,gZ=new Set([".md",".mdx",".txt",".json",".jsonc",".toml",".yaml",".yml"]),j3=new Set(["CODEWITH.md","AGENTS.md","CLAUDE.md","RULES.md","INSTRUCTIONS.md"]),DZ=new Set([".git","node_modules","dist","build",".codewith-worktrees",".connect",".secrets",".tmp","tmp","auth_profiles","profiles","preserved","backup","backups","cache","logs","runs"]),UZ=/(^|[._-])(secret|secrets|token|tokens|credential|credentials|password|passwd|private[_-]?key|id_rsa)([._-]|$)/i,oj=/(agent|rule|rules|instruction|instructions|global|operating|standard|knowledge)/i;function N3(_){return`sha256:${_G("sha256").update(_).digest("hex")}`}function IZ(_){return`sha256:${_G("sha256").update(_).digest("hex")}`}function EU(_){return _.split(eM).join("/")}function E3(_,$){let g=pM(_,$);return g?EU(g):$g($)}function n6(_){return gZ.has(tM(_).toLowerCase())}function sR(_){return EU(_).split("/").some(($)=>UZ.test($))}function gG(_,$=220){let g=_.normalize("NFKC").trim().replace(/\s+/g," ");if(g.length<=$)return g;return`${g.slice(0,Math.max(0,$-1)).trim()}...`}function DG(_){if(!_)return 0;return _.split(/\r\n|\n|\r/).length}function UG(_){return{source_ref:_.sourceRef,source_path:_.sourcePath,line_start:_.lineCount>0?1:0,line_end:_.lineCount,content_hash:_.contentHash}}function jZ(){return[{base:".",maxDepth:0,spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:10,label:"root-rule-doc"},tags:["global-rules","rule-doc"],include:(_)=>j3.has(_)}},{base:".codewith",spec:{family:"codewith",owner:"codewith",scope:"global",precedence:{rank:20,label:"codewith"},tags:["global-rules","codewith","agent-instructions"],include:(_)=>{let $=EU(_),g=$g($);if(j3.has(g)||$==="config.toml")return!0;if($.endsWith("/SKILL.md"))return!0;if(/^(rules|instructions|prompts|plans)\//.test($)&&n6($))return!0;return!1}}},{base:".claude",spec:{family:"claude",owner:"claude",scope:"global",precedence:{rank:30,label:"claude-rules"},tags:["global-rules","claude","agent-instructions"],include:(_)=>{let $=EU(_);return $==="CLAUDE.md"||/^rules\//.test($)&&n6($)}}},{base:".codex",spec:{family:"codex",owner:"codex",scope:"global",precedence:{rank:40,label:"codex"},tags:["global-rules","codex","agent-instructions"],include:(_)=>{let $=EU(_),g=$g($);if(j3.has(g)||g==="config.toml")return!0;return/^(rules|instructions|prompts)\//.test($)&&n6($)}}},{base:".opencode",spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode"},tags:["global-rules","opencode","agent-instructions"],include:(_)=>oj.test(_)&&n6(_)}},{base:".",maxDepth:0,spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode-config"},tags:["global-rules","opencode","config"],include:(_)=>["opencode.json","opencode.jsonc","opencode.toml","opencode.yaml","opencode.yml"].includes(_)}},{base:".hasna/prompts",spec:{family:"prompt",owner:"hasna",scope:"global",precedence:{rank:60,label:"selected-prompts"},tags:["global-rules","prompt"],include:(_)=>oj.test(_)&&n6(_)}},{base:".hasna/plans",spec:{family:"plan",owner:"hasna",scope:"global",precedence:{rank:65,label:"selected-plans"},tags:["global-rules","plan"],include:(_)=>oj.test(_)&&n6(_)}},{base:"docs",spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:70,label:"rule-docs"},tags:["global-rules","rule-doc"],include:(_)=>oj.test(_)&&n6(_)}}]}function NZ(_,$){let g=new Map;for(let U of jZ()){let D=O3(_,U.base);if(!$G(D))continue;if(lM(D).isFile()){let j=$g(D);if(U.spec.include(j))g.set(D,{...U.spec,absPath:D});continue}IG({basePath:D,depth:0,maxDepth:U.maxDepth??$Z,spec:U.spec,candidates:g,skipped:$})}return[...g.values()].sort((U,D)=>{if(U.precedence.rank!==D.precedence.rank)return U.precedence.rank-D.precedence.rank;return U.absPath.localeCompare(D.absPath)})}function IG(_){let $=_.rootBasePath??_.basePath;if(_.depth>_.maxDepth)return;for(let g of mM(_.basePath,{withFileTypes:!0})){let U=oM(_.basePath,g.name),D=E3($,U);if(g.isSymbolicLink())continue;if(g.isDirectory()){if(DZ.has(g.name))continue;if(sR(D)){_.skipped.push({source_family:_.spec.family,source_path:U,reason:"sensitive_path"});continue}IG({..._,rootBasePath:$,basePath:U,depth:_.depth+1});continue}if(!g.isFile())continue;let I=E3(O3($),U);if(sR(I)){_.skipped.push({source_family:_.spec.family,source_path:U,reason:"sensitive_path"});continue}if(!_.spec.include(I))continue;if(!n6(U))continue;_.candidates.set(U,{..._.spec,absPath:U})}}function EZ(_){if((_.tags??[]).map((U)=>U.toLowerCase()).some((U)=>["rule","rules","agent","instructions","global-rules","global-agent-rules"].includes(U)))return!0;let g=`${_.title} -${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction|instructions|codewith|claude|codex|opencode)\b/.test(g)}function jG(_,$){let g={source_path:_.source_path,source_path_ref:_.source_path_ref,source_ref:_.source_ref,owner:_.owner,scope:_.scope,precedence:_.precedence,source_hash:_.source_hash,content_hash:_.content_hash,discovered_at:_.discovered_at,tags:_.tags,redaction_status:_.redaction_status,citations:_.citations};return{source_ref:_.source_ref,name:_.title,mime:"text/markdown",size:Buffer.byteLength($),hash:_.content_hash,revision:_.content_hash,status:"active",updated_at:_.discovered_at,permissions:{mode:"read_only",allowed_purposes:["knowledge_index","knowledge_answer","agent_context"]},rule_provenance:g,source_family:_.source_family,source_path_ref:_.source_path_ref,owner:_.owner,scope:_.scope,precedence:_.precedence,tags:_.tags,redaction_status:_.redaction_status,legacy_json_id:_.legacy_json_id??null,extracted_text:$}}function OZ(_){let $=dM(_.candidate.absPath),g=_.candidate.absPath,U=E3(_.root,g);if($.size>_.maxBytesPerFile){let J=aR(g).href;return{evidence:{source_family:_.candidate.family,title:$g(g),source_path:g,source_path_ref:U,source_ref:J,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:"sha256:skipped-too-large",content_hash:"sha256:skipped-too-large",discovered_at:_.discoveredAt,tags:[..._.candidate.tags,"skipped"],redaction_status:"refused",redactions:[],citations:[],bytes:$.size,line_count:0,importable:!1,skipped_reason:"max_bytes_exceeded",preview:null},text:"",manifest:null}}let D=iM(g),I=D.toString("utf8"),j=u_(I,_.safetyPolicy),O=j.findings.some((J)=>J.severity==="high")?"refused":j.findings.length>0?"redacted":"clean",A=N3(j.text),L=aR(g).href,z=DG(j.text),W={source_family:_.candidate.family,title:$g(g),source_path:g,source_path_ref:U,source_ref:L,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:IZ(D),content_hash:A,discovered_at:_.discoveredAt,tags:[..._.candidate.tags],redaction_status:O,redactions:j.findings.map((J)=>({type:J.type,severity:J.severity})),citations:[UG({sourceRef:L,sourcePath:g,lineCount:z,contentHash:A})],bytes:D.byteLength,line_count:z,importable:O!=="refused",skipped_reason:O==="refused"?"secret_refused":null,preview:O==="refused"?null:gG(j.text)};return{evidence:W,text:j.text,manifest:W.importable?jG(W,j.text):null}}function AZ(_){let $=u_(_.item.content,_.safetyPolicy),U=$.findings.some((A)=>A.severity==="high")?"refused":$.findings.length>0?"redacted":"clean",D=`open-files://source/legacy-json/path/${encodeURIComponent(_.item.id)}`,I=N3($.text),j=N3(_.item.content),N=DG($.text),O={source_family:"legacy_json",title:_.item.title,source_path:_.legacyStorePath,source_path_ref:`legacy-json:${_.item.id}`,source_ref:D,owner:"legacy-json",scope:_.scope,precedence:{rank:90,label:"legacy-json-note"},source_hash:j,content_hash:I,discovered_at:_.discoveredAt,tags:[...new Set(["global-rules","legacy-json",..._.item.tags??[]])],redaction_status:U,redactions:$.findings.map((A)=>({type:A.type,severity:A.severity})),citations:[UG({sourceRef:D,sourcePath:_.legacyStorePath,lineCount:N,contentHash:I})],bytes:Buffer.byteLength(_.item.content),line_count:N,importable:U!=="refused",skipped_reason:U==="refused"?"secret_refused":null,preview:U==="refused"?null:gG($.text),legacy_json_id:_.item.id};return{evidence:O,text:$.text,manifest:O.importable?jG(O,$.text):null}}function LZ(_){if(!_.legacyStorePath||!$G(_.legacyStorePath))return 0;let $=new Map(_.records.filter((g)=>g.legacy_json_id&&g.importable).map((g)=>[g.legacy_json_id,g]));if($.size===0)return 0;return v$(_.legacyStorePath,()=>{let g=I0(_.legacyStorePath);if(!g.exists)return 0;let U=0;for(let D of g.items){let I=$.get(D.id);if(!I)continue;let j=D.metadata??{};D.archived=!0,D.metadata={...j,knowledge_rules_import:{status:"deprecated_after_source_backed_promotion",deprecated_at:_.now,source_ref:I.source_ref,source_hash:I.source_hash,content_hash:I.content_hash,data_loss:!1}},D.tags=[...new Set([...D.tags??[],"deprecated:knowledge-rules-import"])],D.updated_at=_.now,U+=1}if(U>0)t$(_.legacyStorePath,{items:g.items});return U})}async function NG(_={}){let $=O3(_.root??process.cwd()),g=_.scope??"global",U=_.owner??"global-agent-rules-standard",D=_.dryRun!==!1,I=(_.now??new Date).toISOString(),j=Math.max(1,Math.min(_.maxItems??aM,1000)),N=Math.max(1,Math.min(_.limit??sM,100)),O=Math.max(1024,Math.min(_.maxBytesPerFile??_Z,2097152)),A=[],z=NZ($,A).slice(0,j).map((Z)=>OZ({root:$,candidate:{...Z,owner:Z.owner==="repository"?U:Z.owner,scope:g},discoveredAt:I,maxBytesPerFile:O,safetyPolicy:_.safetyPolicy})),J=(_.includeLegacy===!1||!_.legacyStorePath?{exists:!1,items:[]}:I0(_.legacyStorePath)).items.filter((Z)=>Z.archived!==!0&&EZ(Z)).slice(0,j),P=J.map((Z)=>AZ({item:Z,legacyStorePath:_.legacyStorePath,discoveredAt:I,scope:g,safetyPolicy:_.safetyPolicy})),S=[...z,...P].slice(0,j),X=S.map((Z)=>Z.evidence),R=S.filter((Z)=>Z.manifest).map((Z)=>Z.manifest),K=X.filter((Z)=>Z.redaction_status==="refused").length,Q=X.slice(0,N),T=A.slice(0,N),q=null,V=0;if(!D){if(!_.dbPath)throw Error("rules provenance apply mode requires dbPath.");if(R.length>0)q=await $4({dbPath:_.dbPath,items:R,sourceLabel:"knowledge://rules-provenance/global-agent-rules",readAction:"rules_provenance_import",allowFileSourceRefs:!0,safetyPolicy:_.safetyPolicy,now:_.now,maxItems:j});if(_.deprecateLegacy!==!1)V=LZ({legacyStorePath:_.legacyStorePath,records:X,now:I})}return{ok:K===0||R.length>0||D,workflow:"global-rules-provenance-import",dry_run:D,writes_performed:!D,root:$,scope:g,owner:U,discovered_at:I,max_items:j,evidence_limit:N,records_seen:X.length,records_importable:R.length,records_refused:K,records_skipped:A.length,evidence_truncated:X.length>Q.length,skipped_truncated:A.length>T.length,evidence:Q,skipped:T,import_result:q,legacy:{store_path:_.legacyStorePath??null,candidates:J.length,promoted:P.filter((Z)=>Z.manifest).length,deprecated:V,data_loss:!1},message:D?`Discovered ${X.length} rule source(s); ${R.length} importable, ${K} refused`:`Imported ${q?.items_seen??0} rule source(s); ${V} legacy note(s) deprecated`}}import{createHash as JZ,randomUUID as EG}from"crypto";function PZ(_){return`sha256:${JZ("sha256").update(_).digest("hex")}`}function OG(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function AG(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function d6(_){return typeof _==="string"&&_.length>0?_:null}function zZ(_){let $=AG(_),g=d6($.url)??d6($.uri)??d6($.sourceUrl);if(!g)return null;return{url:g,title:d6($.title)??d6($.name),snippet:d6($.snippet)??d6($.text)??d6($.description),provider_metadata:$}}function pj(_,$){if(Array.isArray(_)){for(let D of _)pj(D,$);return}let g=zZ(_);if(g)$.set(g.url,g);let U=AG(_);for(let D of["sources","results","citations","annotations","output"])if(U[D])pj(U[D],$)}function SZ(_,$){return Array.from({length:Math.min($,3)},(g,U)=>({url:`https://example.com/knowledge-web-${U+1}`,title:`Fake web source ${U+1}`,snippet:`Deterministic web-search fixture for "${_}"`,provider_metadata:{fake:!0,rank:U+1}}))}async function WZ(_){let{generateText:$}=await import("ai"),{createOpenAI:g}=await import("@ai-sdk/openai"),U=$6(_.config,"openai"),D=g({apiKey:_.env[U.api_key_env],baseURL:U.base_url}),I=D.tools?.webSearch;if(!I)throw Error("OpenAI provider does not expose tools.webSearch.");return $({model:D(_.model),prompt:_.query,tools:{web_search:I({externalWebAccess:!0,searchContextSize:"medium",..._.domains.length>0?{allowedDomains:_.domains}:{}})},toolChoice:{type:"tool",toolName:"web_search"}})}async function XZ(_){let{generateText:$}=await import("ai"),{createAnthropic:g}=await import("@ai-sdk/anthropic"),U=$6(_.config,"anthropic"),D=g({apiKey:_.env[U.api_key_env],baseURL:U.base_url}),I=D.tools?.webSearch_20250305??D.tools?.webSearch;if(!I)throw Error("Anthropic provider does not expose a web search tool.");return $({model:D(_.model),prompt:_.query,tools:{web_search:I({maxUses:_.maxUses,..._.domains.length>0?{allowedDomains:_.domains}:{}})}})}async function RZ(_,$,g){if(!_.fileResults||$.length===0)return 0;let U=$.map((I)=>{let j=[I.title,I.snippet,I.url].filter(Boolean).join(` -`),N=PZ(j);return{source_ref:I.url,name:I.title??I.url,url:I.url,mime:"text/plain",hash:N,revision:N,status:"active",updated_at:g,permissions:{mode:"read_only",allowed_purposes:["knowledge_answer","knowledge_index"]},metadata:{source_ref:I.url,content_source:"provider_web_search",provider_metadata:I.provider_metadata},extracted_text:j}});return(await $4({dbPath:_.dbPath,items:U,sourceLabel:`web-search:${_.query}`,readAction:"provider_web_search_file_results",safetyPolicy:_.safetyPolicy,now:new Date(g)})).sources_upserted}async function LG(_){let $=_.query.trim();if(!$)throw Error("Web search query is required.");let g=_.env??process.env,U=(_.now??new Date).toISOString(),D=Math.max(1,Math.min(_.limit??5,20)),I=Math.max(1,Math.min(_.maxUses??3,10)),j=_.domains??[],N=G$(_.modelRef??(_.provider?`${_.provider}:${$6(_.config,_.provider).default_model}`:"default"),_.config),O=w_(N),A=_.provider??O.provider,L=O.provider===A?O.model:$6(_.config,A).default_model,z=`run_${EG()}`;if(!_.fake&&_.safetyPolicy)P0(_.safetyPolicy);if(!_.fake&&A!=="openai"&&A!=="anthropic")throw Error(`Provider ${A} does not expose native web search yet.`);if(!_.fake)D4(A,_.config,g);h(_.dbPath);let W=v(_.dbPath);try{W.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[z,"provider-web-search",$,"running",A,L,JSON.stringify({domains:j,max_uses:I,fake:_.fake===!0}),U,U]),X_(W,{event_type:"source_read",action:_.fake?"fake_provider_web_search":"provider_web_search",target_uri:$,decision:"allow",metadata:{provider:A,model:L,domains:j,max_uses:I},created_at:U})}finally{W.close()}let J="",P=[],S={input_tokens:OG($),output_tokens:0,cost_usd:0},X=[];if(_.fake)P=SZ($,D),J=`Fake web search answer for: ${$}`,S.output_tokens=OG(J);else{let K=A==="openai"?await WZ({query:$,model:L,config:_.config,env:g,maxUses:I,domains:j}):await XZ({query:$,model:L,config:_.config,env:g,maxUses:I,domains:j});J=K.text;let Q=new Map;pj(K.sources,Q),pj(K.toolResults,Q),P=Array.from(Q.values()).slice(0,D);let T=U4({provider:A,model:L,usage:K.usage,providerMetadata:K.providerMetadata});S={input_tokens:T.input_tokens,output_tokens:T.output_tokens,cost_usd:T.cost_usd}}let G=await RZ(_,P,U),R=v(_.dbPath);try{R.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({domains:j,max_uses:I,sources:P.length,filed_sources:G,fake:_.fake===!0}),U,z]),R.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${EG()}`,z,"info","provider_web_search_completed",JSON.stringify({sources:P.length,filed_sources:G}),U]),W0(R,{run_id:z,provider:A,model:L,input_tokens:S.input_tokens,output_tokens:S.output_tokens,cost_usd:S.cost_usd,metadata:{web_search:!0,sources:P.length,filed_sources:G},created_at:U})}finally{R.close()}if(P.length===0)X.push("no_web_sources_returned");return{run_id:z,query:$,provider:A,model:L,answer:J,sources:P,filed_sources:G,usage:S,warnings:X}}import{createHash as GZ,randomUUID as YZ}from"crypto";function gg(_,$){return`${_}_${GZ("sha256").update($).digest("hex").slice(0,20)}`}function A3(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"knowledge-page"}function QZ(_){return{year:String(_.getUTCFullYear()),month:String(_.getUTCMonth()+1).padStart(2,"0"),day:String(_.getUTCDate()).padStart(2,"0")}}function TZ(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function JG(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function qZ(_){return Array.from(new Set((_??"").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,12)}function PG(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function BZ(_,$){let g=Math.max(1,Math.min($.limit??10,50)),U=$.sourceRefs??[],D=qZ($.query),I=["c.kind = 'source'"],j=[];if(U.length>0){I.push(`(${U.map(()=>"(s.uri = ? OR c.metadata_json LIKE ?)").join(" OR ")})`);for(let N of U)j.push(N,`%${PG(N)}%`)}if(D.length>0){I.push(`(${D.map(()=>"lower(c.text) LIKE ? ESCAPE '\\'").join(" OR ")})`);for(let N of D)j.push(`%${PG(N)}%`)}return j.push(g),_.query(`SELECT + )`,["completed",D,"embedding","pending",U.provider,U.model]).changes}finally{I.close()}}async function AG(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),D=`run_${NG()}`,g=_.full?gZ(_.dbPath):{embeddings:0,vectorEntries:0},U=PP({..._,reason:_.full?"full_embedding_rebuild":"missing_embedding"}),I=f(_.dbPath);try{I.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[D,"embedding-refresh",_.full?"full":"incremental","running","local",I4(_.modelRef,_.config),JSON.stringify({full:_.full===!0,queued:U}),$,$])}finally{I.close()}let j=await $I({dbPath:_.dbPath,config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,limit:_.limit,now:_.now}),N=IZ(_.dbPath,_,$),O=f(_.dbPath);try{O.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({full:_.full===!0,queued:U,indexed:j,completed_queue_items:N}),$,D]),O.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${NG()}`,D,"info","embedding_refresh_completed",JSON.stringify({queued:U,indexed:j,completed_queue_items:N}),$])}finally{O.close()}return{run_id:D,full:_.full===!0,deleted_embeddings:g.embeddings,deleted_vector_entries:g.vectorEntries,queued:U,indexed:j,completed_queue_items:N}}import{createHash as PG}from"crypto";import{existsSync as zG,lstatSync as jZ,readdirSync as NZ,readFileSync as EZ,statSync as OZ}from"fs";import{basename as DD,extname as AZ,join as LZ,relative as JZ,resolve as XP,sep as PZ}from"path";import{pathToFileURL as LG}from"url";var zZ=100,SZ=25,WZ=262144,XZ=5,GZ=new Set([".md",".mdx",".txt",".json",".jsonc",".toml",".yaml",".yml"]),zP=new Set(["CODEWITH.md","AGENTS.md","CLAUDE.md","RULES.md","INSTRUCTIONS.md"]),RZ=new Set([".git","node_modules","dist","build",".codewith-worktrees",".connect",".secrets",".tmp","tmp","auth_profiles","profiles","preserved","backup","backups","cache","logs","runs"]),YZ=/(^|[._-])(secret|secrets|token|tokens|credential|credentials|password|passwd|private[_-]?key|id_rsa)([._-]|$)/i,pj=/(agent|rule|rules|instruction|instructions|global|operating|standard|knowledge)/i;function SP(_){return`sha256:${PG("sha256").update(_).digest("hex")}`}function QZ(_){return`sha256:${PG("sha256").update(_).digest("hex")}`}function Og(_){return _.split(PZ).join("/")}function WP(_,$){let D=JZ(_,$);return D?Og(D):DD($)}function n6(_){return GZ.has(AZ(_).toLowerCase())}function JG(_){return Og(_).split("/").some(($)=>YZ.test($))}function SG(_,$=220){let D=_.normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function WG(_){if(!_)return 0;return _.split(/\r\n|\n|\r/).length}function XG(_){return{source_ref:_.sourceRef,source_path:_.sourcePath,line_start:_.lineCount>0?1:0,line_end:_.lineCount,content_hash:_.contentHash}}function TZ(){return[{base:".",maxDepth:0,spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:10,label:"root-rule-doc"},tags:["global-rules","rule-doc"],include:(_)=>zP.has(_)}},{base:".codewith",spec:{family:"codewith",owner:"codewith",scope:"global",precedence:{rank:20,label:"codewith"},tags:["global-rules","codewith","agent-instructions"],include:(_)=>{let $=Og(_),D=DD($);if(zP.has(D)||$==="config.toml")return!0;if($.endsWith("/SKILL.md"))return!0;if(/^(rules|instructions|prompts|plans)\//.test($)&&n6($))return!0;return!1}}},{base:".claude",spec:{family:"claude",owner:"claude",scope:"global",precedence:{rank:30,label:"claude-rules"},tags:["global-rules","claude","agent-instructions"],include:(_)=>{let $=Og(_);return $==="CLAUDE.md"||/^rules\//.test($)&&n6($)}}},{base:".codex",spec:{family:"codex",owner:"codex",scope:"global",precedence:{rank:40,label:"codex"},tags:["global-rules","codex","agent-instructions"],include:(_)=>{let $=Og(_),D=DD($);if(zP.has(D)||D==="config.toml")return!0;return/^(rules|instructions|prompts)\//.test($)&&n6($)}}},{base:".opencode",spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode"},tags:["global-rules","opencode","agent-instructions"],include:(_)=>pj.test(_)&&n6(_)}},{base:".",maxDepth:0,spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode-config"},tags:["global-rules","opencode","config"],include:(_)=>["opencode.json","opencode.jsonc","opencode.toml","opencode.yaml","opencode.yml"].includes(_)}},{base:".hasna/prompts",spec:{family:"prompt",owner:"hasna",scope:"global",precedence:{rank:60,label:"selected-prompts"},tags:["global-rules","prompt"],include:(_)=>pj.test(_)&&n6(_)}},{base:".hasna/plans",spec:{family:"plan",owner:"hasna",scope:"global",precedence:{rank:65,label:"selected-plans"},tags:["global-rules","plan"],include:(_)=>pj.test(_)&&n6(_)}},{base:"docs",spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:70,label:"rule-docs"},tags:["global-rules","rule-doc"],include:(_)=>pj.test(_)&&n6(_)}}]}function BZ(_,$){let D=new Map;for(let g of TZ()){let U=XP(_,g.base);if(!zG(U))continue;if(OZ(U).isFile()){let j=DD(U);if(g.spec.include(j))D.set(U,{...g.spec,absPath:U});continue}GG({basePath:U,depth:0,maxDepth:g.maxDepth??XZ,spec:g.spec,candidates:D,skipped:$})}return[...D.values()].sort((g,U)=>{if(g.precedence.rank!==U.precedence.rank)return g.precedence.rank-U.precedence.rank;return g.absPath.localeCompare(U.absPath)})}function GG(_){let $=_.rootBasePath??_.basePath;if(_.depth>_.maxDepth)return;for(let D of NZ(_.basePath,{withFileTypes:!0})){let g=LZ(_.basePath,D.name),U=WP($,g);if(D.isSymbolicLink())continue;if(D.isDirectory()){if(RZ.has(D.name))continue;if(JG(U)){_.skipped.push({source_family:_.spec.family,source_path:g,reason:"sensitive_path"});continue}GG({..._,rootBasePath:$,basePath:g,depth:_.depth+1});continue}if(!D.isFile())continue;let I=WP(XP($),g);if(JG(I)){_.skipped.push({source_family:_.spec.family,source_path:g,reason:"sensitive_path"});continue}if(!_.spec.include(I))continue;if(!n6(g))continue;_.candidates.set(g,{..._.spec,absPath:g})}}function qZ(_){if((_.tags??[]).map((g)=>g.toLowerCase()).some((g)=>["rule","rules","agent","instructions","global-rules","global-agent-rules"].includes(g)))return!0;let D=`${_.title} +${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction|instructions|codewith|claude|codex|opencode)\b/.test(D)}function RG(_,$){let D={source_path:_.source_path,source_path_ref:_.source_path_ref,source_ref:_.source_ref,owner:_.owner,scope:_.scope,precedence:_.precedence,source_hash:_.source_hash,content_hash:_.content_hash,discovered_at:_.discovered_at,tags:_.tags,redaction_status:_.redaction_status,citations:_.citations};return{source_ref:_.source_ref,name:_.title,mime:"text/markdown",size:Buffer.byteLength($),hash:_.content_hash,revision:_.content_hash,status:"active",updated_at:_.discovered_at,permissions:{mode:"read_only",allowed_purposes:["knowledge_index","knowledge_answer","agent_context"]},rule_provenance:D,source_family:_.source_family,source_path_ref:_.source_path_ref,owner:_.owner,scope:_.scope,precedence:_.precedence,tags:_.tags,redaction_status:_.redaction_status,legacy_json_id:_.legacy_json_id??null,extracted_text:$}}function VZ(_){let $=jZ(_.candidate.absPath),D=_.candidate.absPath,g=WP(_.root,D);if($.size>_.maxBytesPerFile){let J=LG(D).href;return{evidence:{source_family:_.candidate.family,title:DD(D),source_path:D,source_path_ref:g,source_ref:J,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:"sha256:skipped-too-large",content_hash:"sha256:skipped-too-large",discovered_at:_.discoveredAt,tags:[..._.candidate.tags,"skipped"],redaction_status:"refused",redactions:[],citations:[],bytes:$.size,line_count:0,importable:!1,skipped_reason:"max_bytes_exceeded",preview:null},text:"",manifest:null}}let U=EZ(D),I=U.toString("utf8"),j=u_(I,_.safetyPolicy),O=j.findings.some((J)=>J.severity==="high")?"refused":j.findings.length>0?"redacted":"clean",A=SP(j.text),L=LG(D).href,z=WG(j.text),W={source_family:_.candidate.family,title:DD(D),source_path:D,source_path_ref:g,source_ref:L,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:QZ(U),content_hash:A,discovered_at:_.discoveredAt,tags:[..._.candidate.tags],redaction_status:O,redactions:j.findings.map((J)=>({type:J.type,severity:J.severity})),citations:[XG({sourceRef:L,sourcePath:D,lineCount:z,contentHash:A})],bytes:U.byteLength,line_count:z,importable:O!=="refused",skipped_reason:O==="refused"?"secret_refused":null,preview:O==="refused"?null:SG(j.text)};return{evidence:W,text:j.text,manifest:W.importable?RG(W,j.text):null}}function FZ(_){let $=u_(_.item.content,_.safetyPolicy),g=$.findings.some((A)=>A.severity==="high")?"refused":$.findings.length>0?"redacted":"clean",U=`open-files://source/legacy-json/path/${encodeURIComponent(_.item.id)}`,I=SP($.text),j=SP(_.item.content),N=WG($.text),O={source_family:"legacy_json",title:_.item.title,source_path:_.legacyStorePath,source_path_ref:`legacy-json:${_.item.id}`,source_ref:U,owner:"legacy-json",scope:_.scope,precedence:{rank:90,label:"legacy-json-note"},source_hash:j,content_hash:I,discovered_at:_.discoveredAt,tags:[...new Set(["global-rules","legacy-json",..._.item.tags??[]])],redaction_status:g,redactions:$.findings.map((A)=>({type:A.type,severity:A.severity})),citations:[XG({sourceRef:U,sourcePath:_.legacyStorePath,lineCount:N,contentHash:I})],bytes:Buffer.byteLength(_.item.content),line_count:N,importable:g!=="refused",skipped_reason:g==="refused"?"secret_refused":null,preview:g==="refused"?null:SG($.text),legacy_json_id:_.item.id};return{evidence:O,text:$.text,manifest:O.importable?RG(O,$.text):null}}function KZ(_){if(!_.legacyStorePath||!zG(_.legacyStorePath))return 0;let $=new Map(_.records.filter((D)=>D.legacy_json_id&&D.importable).map((D)=>[D.legacy_json_id,D]));if($.size===0)return 0;return f$(_.legacyStorePath,()=>{let D=I0(_.legacyStorePath);if(!D.exists)return 0;let g=0;for(let U of D.items){let I=$.get(U.id);if(!I)continue;let j=U.metadata??{};U.archived=!0,U.metadata={...j,knowledge_rules_import:{status:"deprecated_after_source_backed_promotion",deprecated_at:_.now,source_ref:I.source_ref,source_hash:I.source_hash,content_hash:I.content_hash,data_loss:!1}},U.tags=[...new Set([...U.tags??[],"deprecated:knowledge-rules-import"])],U.updated_at=_.now,g+=1}if(g>0)t$(_.legacyStorePath,{items:D.items});return g})}async function YG(_={}){let $=XP(_.root??process.cwd()),D=_.scope??"global",g=_.owner??"global-agent-rules-standard",U=_.dryRun!==!1,I=(_.now??new Date).toISOString(),j=Math.max(1,Math.min(_.maxItems??zZ,1000)),N=Math.max(1,Math.min(_.limit??SZ,100)),O=Math.max(1024,Math.min(_.maxBytesPerFile??WZ,2097152)),A=[],z=BZ($,A).slice(0,j).map((Z)=>VZ({root:$,candidate:{...Z,owner:Z.owner==="repository"?g:Z.owner,scope:D},discoveredAt:I,maxBytesPerFile:O,safetyPolicy:_.safetyPolicy})),J=(_.includeLegacy===!1||!_.legacyStorePath?{exists:!1,items:[]}:I0(_.legacyStorePath)).items.filter((Z)=>Z.archived!==!0&&qZ(Z)).slice(0,j),P=J.map((Z)=>FZ({item:Z,legacyStorePath:_.legacyStorePath,discoveredAt:I,scope:D,safetyPolicy:_.safetyPolicy})),S=[...z,...P].slice(0,j),X=S.map((Z)=>Z.evidence),G=S.filter((Z)=>Z.manifest).map((Z)=>Z.manifest),V=X.filter((Z)=>Z.redaction_status==="refused").length,Q=X.slice(0,N),T=A.slice(0,N),B=null,F=0;if(!U){if(!_.dbPath)throw Error("rules provenance apply mode requires dbPath.");if(G.length>0)B=await $4({dbPath:_.dbPath,items:G,sourceLabel:"knowledge://rules-provenance/global-agent-rules",readAction:"rules_provenance_import",allowFileSourceRefs:!0,safetyPolicy:_.safetyPolicy,now:_.now,maxItems:j});if(_.deprecateLegacy!==!1)F=KZ({legacyStorePath:_.legacyStorePath,records:X,now:I})}return{ok:V===0||G.length>0||U,workflow:"global-rules-provenance-import",dry_run:U,writes_performed:!U,root:$,scope:D,owner:g,discovered_at:I,max_items:j,evidence_limit:N,records_seen:X.length,records_importable:G.length,records_refused:V,records_skipped:A.length,evidence_truncated:X.length>Q.length,skipped_truncated:A.length>T.length,evidence:Q,skipped:T,import_result:B,legacy:{store_path:_.legacyStorePath??null,candidates:J.length,promoted:P.filter((Z)=>Z.manifest).length,deprecated:F,data_loss:!1},message:U?`Discovered ${X.length} rule source(s); ${G.length} importable, ${V} refused`:`Imported ${B?.items_seen??0} rule source(s); ${F} legacy note(s) deprecated`}}import{createHash as MZ,randomUUID as QG}from"crypto";function ZZ(_){return`sha256:${MZ("sha256").update(_).digest("hex")}`}function TG(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function BG(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function d6(_){return typeof _==="string"&&_.length>0?_:null}function bZ(_){let $=BG(_),D=d6($.url)??d6($.uri)??d6($.sourceUrl);if(!D)return null;return{url:D,title:d6($.title)??d6($.name),snippet:d6($.snippet)??d6($.text)??d6($.description),provider_metadata:$}}function ej(_,$){if(Array.isArray(_)){for(let U of _)ej(U,$);return}let D=bZ(_);if(D)$.set(D.url,D);let g=BG(_);for(let U of["sources","results","citations","annotations","output"])if(g[U])ej(g[U],$)}function HZ(_,$){return Array.from({length:Math.min($,3)},(D,g)=>({url:`https://example.com/knowledge-web-${g+1}`,title:`Fake web source ${g+1}`,snippet:`Deterministic web-search fixture for "${_}"`,provider_metadata:{fake:!0,rank:g+1}}))}async function kZ(_){let{generateText:$}=await import("ai"),{createOpenAI:D}=await import("@ai-sdk/openai"),g=$6(_.config,"openai"),U=D({apiKey:_.env[g.api_key_env],baseURL:g.base_url}),I=U.tools?.webSearch;if(!I)throw Error("OpenAI provider does not expose tools.webSearch.");return $({model:U(_.model),prompt:_.query,tools:{web_search:I({externalWebAccess:!0,searchContextSize:"medium",..._.domains.length>0?{allowedDomains:_.domains}:{}})},toolChoice:{type:"tool",toolName:"web_search"}})}async function CZ(_){let{generateText:$}=await import("ai"),{createAnthropic:D}=await import("@ai-sdk/anthropic"),g=$6(_.config,"anthropic"),U=D({apiKey:_.env[g.api_key_env],baseURL:g.base_url}),I=U.tools?.webSearch_20250305??U.tools?.webSearch;if(!I)throw Error("Anthropic provider does not expose a web search tool.");return $({model:U(_.model),prompt:_.query,tools:{web_search:I({maxUses:_.maxUses,..._.domains.length>0?{allowedDomains:_.domains}:{}})}})}async function vZ(_,$,D){if(!_.fileResults||$.length===0)return 0;let g=$.map((I)=>{let j=[I.title,I.snippet,I.url].filter(Boolean).join(` +`),N=ZZ(j);return{source_ref:I.url,name:I.title??I.url,url:I.url,mime:"text/plain",hash:N,revision:N,status:"active",updated_at:D,permissions:{mode:"read_only",allowed_purposes:["knowledge_answer","knowledge_index"]},metadata:{source_ref:I.url,content_source:"provider_web_search",provider_metadata:I.provider_metadata},extracted_text:j}});return(await $4({dbPath:_.dbPath,items:g,sourceLabel:`web-search:${_.query}`,readAction:"provider_web_search_file_results",safetyPolicy:_.safetyPolicy,now:new Date(D)})).sources_upserted}async function qG(_){let $=_.query.trim();if(!$)throw Error("Web search query is required.");let D=_.env??process.env,g=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??5,20)),I=Math.max(1,Math.min(_.maxUses??3,10)),j=_.domains??[],N=R$(_.modelRef??(_.provider?`${_.provider}:${$6(_.config,_.provider).default_model}`:"default"),_.config),O=w_(N),A=_.provider??O.provider,L=O.provider===A?O.model:$6(_.config,A).default_model,z=`run_${QG()}`;if(!_.fake&&_.safetyPolicy)z0(_.safetyPolicy);if(!_.fake&&A!=="openai"&&A!=="anthropic")throw Error(`Provider ${A} does not expose native web search yet.`);if(!_.fake)U4(A,_.config,D);h(_.dbPath);let W=f(_.dbPath);try{W.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[z,"provider-web-search",$,"running",A,L,JSON.stringify({domains:j,max_uses:I,fake:_.fake===!0}),g,g]),X_(W,{event_type:"source_read",action:_.fake?"fake_provider_web_search":"provider_web_search",target_uri:$,decision:"allow",metadata:{provider:A,model:L,domains:j,max_uses:I},created_at:g})}finally{W.close()}let J="",P=[],S={input_tokens:TG($),output_tokens:0,cost_usd:0},X=[];if(_.fake)P=HZ($,U),J=`Fake web search answer for: ${$}`,S.output_tokens=TG(J);else{let V=A==="openai"?await kZ({query:$,model:L,config:_.config,env:D,maxUses:I,domains:j}):await CZ({query:$,model:L,config:_.config,env:D,maxUses:I,domains:j});J=V.text;let Q=new Map;ej(V.sources,Q),ej(V.toolResults,Q),P=Array.from(Q.values()).slice(0,U);let T=g4({provider:A,model:L,usage:V.usage,providerMetadata:V.providerMetadata});S={input_tokens:T.input_tokens,output_tokens:T.output_tokens,cost_usd:T.cost_usd}}let R=await vZ(_,P,g),G=f(_.dbPath);try{G.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({domains:j,max_uses:I,sources:P.length,filed_sources:R,fake:_.fake===!0}),g,z]),G.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${QG()}`,z,"info","provider_web_search_completed",JSON.stringify({sources:P.length,filed_sources:R}),g]),X0(G,{run_id:z,provider:A,model:L,input_tokens:S.input_tokens,output_tokens:S.output_tokens,cost_usd:S.cost_usd,metadata:{web_search:!0,sources:P.length,filed_sources:R},created_at:g})}finally{G.close()}if(P.length===0)X.push("no_web_sources_returned");return{run_id:z,query:$,provider:A,model:L,answer:J,sources:P,filed_sources:R,usage:S,warnings:X}}import{createHash as fZ,randomUUID as wZ}from"crypto";function UD(_,$){return`${_}_${fZ("sha256").update($).digest("hex").slice(0,20)}`}function GP(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"knowledge-page"}function rZ(_){return{year:String(_.getUTCFullYear()),month:String(_.getUTCMonth()+1).padStart(2,"0"),day:String(_.getUTCDate()).padStart(2,"0")}}function uZ(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function VG(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function xZ(_){return Array.from(new Set((_??"").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,12)}function FG(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function yZ(_,$){let D=Math.max(1,Math.min($.limit??10,50)),g=$.sourceRefs??[],U=xZ($.query),I=["c.kind = 'source'"],j=[];if(g.length>0){I.push(`(${g.map(()=>"(s.uri = ? OR c.metadata_json LIKE ?)").join(" OR ")})`);for(let N of g)j.push(N,`%${FG(N)}%`)}if(U.length>0){I.push(`(${U.map(()=>"lower(c.text) LIKE ? ESCAPE '\\'").join(" OR ")})`);for(let N of U)j.push(`%${FG(N)}%`)}return j.push(D),_.query(`SELECT c.id AS chunk_id, c.text, c.start_offset, @@ -1041,10 +1041,10 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| JOIN sources s ON s.id = sr.source_id WHERE ${I.join(" AND ")} ORDER BY c.created_at ASC, c.ordinal ASC - LIMIT ?`).all(...j)}function zG(_,$=420){let g=_.replace(/\s+/g," ").trim();return g.length<=$?g:`${g.slice(0,$-1).trim()}...`}function KZ(_,$){if(_.title?.trim())return _.title.trim();if(_.query?.trim())return _.query.trim();return $[0]?.source_title??"Compiled Knowledge"}function VZ(_,$,g){let U=$.map((I,j)=>{return`- [${`S${j+1}`}] ${I.source_title??I.source_uri??"Source"} (${I.source_uri??"unknown"}, revision ${I.revision??"unknown"}, hash ${I.hash??"unknown"})`}),D=$.map((I,j)=>{let N=`S${j+1}`;return[`## ${I.source_title??`Source ${j+1}`}`,"",zG(I.text),"",`Citation: [${N}]`].join(` -`)});return[`# ${_}`,"",`Generated at: ${g}`,"","## Sources","",...U,"",...D,""].join(` -`)}async function ej(_,$){let g=await _.put($);return{key:g.key,uri:g.uri,kind:$.key.startsWith("logs/")?"log":"wiki_page",content_type:$.content_type,modified_at:g.modified_at,...J0($.body),metadata:{...$.metadata??{}}}}async function SG(_,$,g){let{year:U,month:D,day:I}=QZ(g),j=`logs/${U}/${D}/${I}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return ej(_,{key:j,body:`${N}${JSON.stringify($)} -`,content_type:"application/x-ndjson",metadata:{provenance:U$({generated_from:String($.event??"wiki_log"),artifact_key:j})}})}function L3(_,$){_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) + LIMIT ?`).all(...j)}function KG(_,$=420){let D=_.replace(/\s+/g," ").trim();return D.length<=$?D:`${D.slice(0,$-1).trim()}...`}function hZ(_,$){if(_.title?.trim())return _.title.trim();if(_.query?.trim())return _.query.trim();return $[0]?.source_title??"Compiled Knowledge"}function cZ(_,$,D){let g=$.map((I,j)=>{return`- [${`S${j+1}`}] ${I.source_title??I.source_uri??"Source"} (${I.source_uri??"unknown"}, revision ${I.revision??"unknown"}, hash ${I.hash??"unknown"})`}),U=$.map((I,j)=>{let N=`S${j+1}`;return[`## ${I.source_title??`Source ${j+1}`}`,"",KG(I.text),"",`Citation: [${N}]`].join(` +`)});return[`# ${_}`,"",`Generated at: ${D}`,"","## Sources","",...g,"",...U,""].join(` +`)}async function aj(_,$){let D=await _.put($);return{key:D.key,uri:D.uri,kind:$.key.startsWith("logs/")?"log":"wiki_page",content_type:$.content_type,modified_at:D.modified_at,...P0($.body),metadata:{...$.metadata??{}}}}async function MG(_,$,D){let{year:g,month:U,day:I}=rZ(D),j=`logs/${g}/${U}/${I}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return aj(_,{key:j,body:`${N}${JSON.stringify($)} +`,content_type:"application/x-ndjson",metadata:{provenance:g$({generated_from:String($.event??"wiki_log"),artifact_key:j})}})}function RP(_,$){_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(path) DO UPDATE SET title = excluded.title, @@ -1052,41 +1052,41 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| content_hash = excluded.content_hash, status = excluded.status, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[$.pageId,$.path,$.title,$.artifactUri,$.contentHash,"active",JSON.stringify({artifact_key:$.path,provenance:$.provenance}),$.now,$.now]);let g=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($.pageId);for(let D of g)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[D.id]);_.run("DELETE FROM chunks WHERE wiki_page_id = ?",[$.pageId]);let U=gg("chk",`${$.pageId}\x00${$.contentHash}`);_.run(`INSERT INTO chunks (id, wiki_page_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[U,$.pageId,"wiki",0,$.body,TZ($.body),0,$.body.length,JSON.stringify({artifact_key:$.path,artifact_uri:$.artifactUri,content_hash:$.contentHash,provenance:$.provenance}),$.now]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[U,$.body,$.title,$.artifactUri])}function WG(_,$,g,U){_.run("DELETE FROM citations WHERE wiki_page_id = ?",[$]);for(let D of g)_.run(`INSERT INTO citations (id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[gg("cit",`${$}\x00${D.source_uri}\x00${D.chunk_id??YZ()}`),$,D.chunk_id,D.source_uri,D.quote,D.start_offset,D.end_offset,JSON.stringify(D.metadata),U]);return g.length}function XG(_,$){return _.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) + updated_at = excluded.updated_at`,[$.pageId,$.path,$.title,$.artifactUri,$.contentHash,"active",JSON.stringify({artifact_key:$.path,provenance:$.provenance}),$.now,$.now]);let D=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($.pageId);for(let U of D)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[U.id]);_.run("DELETE FROM chunks WHERE wiki_page_id = ?",[$.pageId]);let g=UD("chk",`${$.pageId}\x00${$.contentHash}`);_.run(`INSERT INTO chunks (id, wiki_page_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[g,$.pageId,"wiki",0,$.body,uZ($.body),0,$.body.length,JSON.stringify({artifact_key:$.path,artifact_uri:$.artifactUri,content_hash:$.contentHash,provenance:$.provenance}),$.now]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[g,$.body,$.title,$.artifactUri])}function ZG(_,$,D,g){_.run("DELETE FROM citations WHERE wiki_page_id = ?",[$]);for(let U of D)_.run(`INSERT INTO citations (id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[UD("cit",`${$}\x00${U.source_uri}\x00${U.chunk_id??wZ()}`),$,U.chunk_id,U.source_uri,U.quote,U.start_offset,U.end_offset,JSON.stringify(U.metadata),g]);return D.length}function bG(_,$){return _.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(kind, name, shard_key) DO UPDATE SET artifact_uri = excluded.artifact_uri, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[gg("idx",`wiki-topic\x00${$.path}`),"wiki_topic",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash}),$.now,$.now]),1}function FZ(_){return _.toLowerCase().match(/[a-z0-9][a-z0-9-]{2,}/)?.[0]??"knowledge"}async function RG(_){let $=_.now??new Date,g=$.toISOString();h(_.dbPath);let U=v(_.dbPath),D;try{D=BZ(U,_)}finally{U.close()}if(D.length===0)throw Error("No source chunks matched wiki compile input.");let I=KZ(_,D),N=`wiki/generated/${A3(I)}.md`,O=VZ(I,D,g),A=D.map((q)=>{let V=JG(q.metadata_json);return typeof V.source_ref==="string"?V.source_ref:q.source_uri}).filter((q)=>Boolean(q)),L=U$({generated_from:"wiki_compile",artifact_key:N,source_refs:A}),z=await ej(_.store,{key:N,body:O,content_type:"text/markdown",metadata:{generated_from:"wiki_compile"}}),W=gg("wiki",N),J=D.map((q)=>({chunk_id:q.chunk_id,source_uri:q.source_uri??"unknown",quote:zG(q.text,240),start_offset:q.start_offset,end_offset:q.end_offset,metadata:{source_revision_id:q.source_revision_id,revision:q.revision,hash:q.hash,source_ref:JG(q.metadata_json).source_ref??q.source_uri}})),P=FZ(I),S=`wiki/concepts/${A3(P)}.md`,X=[`# ${P}`,"",`Related page: [[${N}]]`,""].join(` -`),G=U$({generated_from:"wiki_compile_concept",artifact_key:S,source_refs:A}),R=await ej(_.store,{key:S,body:X,content_type:"text/markdown",metadata:{generated_from:"wiki_compile_concept"}}),K=gg("wiki",S),Q=await SG(_.store,{ts:g,event:"wiki_compile_completed",page_key:N,source_refs:A,chunks_seen:D.length},$),T=v(_.dbPath);try{s$(T,[z,R,Q],$),L3(T,{pageId:W,path:N,title:I,artifactUri:z.uri,contentHash:z.hash??"",body:O,provenance:L,now:g}),L3(T,{pageId:K,path:S,title:P,artifactUri:R.uri,contentHash:R.hash??"",body:X,provenance:G,now:g}),T.run(`INSERT OR REPLACE INTO wiki_backlinks (from_page_id, to_page_id, label, created_at) - VALUES (?, ?, ?, ?)`,[W,K,"concept",g]);let q=WG(T,W,J,g),V=XG(T,{title:I,path:N,artifactUri:z.uri,contentHash:z.hash??"",now:g});return{page_id:W,path:N,artifact_uri:z.uri,content_hash:z.hash??"",chunks_seen:D.length,citations_written:q,concept_page_id:K,indexes_updated:V,log_key:Q.key,warnings:[]}}finally{T.close()}}async function GG(_){if(!_.approveWrite)return{approved:!1,durable_writes_performed:!1,page_id:null,path:null,artifact_uri:null,citations_written:0,log_key:null,message:"Dry-run: answer filing requires --approve-write."};let $=_.now??new Date,g=$.toISOString(),U=_.prompt.length>80?`${_.prompt.slice(0,77)}...`:_.prompt,I=`wiki/answers/${A3(U)}.md`,j=_.context.citations,N=[`# ${U}`,"",_.answer,"","## Citations","",...j.map((P,S)=>`- [C${S+1}] ${P.source_ref??P.source_uri??P.artifact_path??P.artifact_uri??"unknown"} ${P.hash?`(hash ${P.hash})`:""}`),""].join(` -`),O=j.map((P)=>P.source_ref??P.source_uri).filter((P)=>Boolean(P)),A=U$({generated_from:"knowledge_answer",artifact_key:I,source_refs:O}),L=await ej(_.store,{key:I,body:N,content_type:"text/markdown",metadata:{generated_from:"knowledge_answer"}}),z=await SG(_.store,{ts:g,event:"wiki_answer_filed",page_key:I,prompt:_.prompt,citations:j.length},$),W=gg("wiki",I),J=v(_.dbPath);try{s$(J,[L,z],$),L3(J,{pageId:W,path:I,title:U,artifactUri:L.uri,contentHash:L.hash??"",body:N,provenance:A,now:g});let P=WG(J,W,j.map((S)=>({chunk_id:S.chunk_id,source_uri:S.source_uri??S.artifact_uri??"unknown",quote:S.quote,start_offset:S.start_offset,end_offset:S.end_offset,metadata:{source_ref:S.source_ref,artifact_path:S.artifact_path,revision:S.revision,hash:S.hash}})),g);return XG(J,{title:U,path:I,artifactUri:L.uri,contentHash:L.hash??"",now:g}),{approved:!0,durable_writes_performed:!0,page_id:W,path:I,artifact_uri:L.uri,citations_written:P,log_key:z.key,message:`Filed answer to ${I}`}}finally{J.close()}}function y4(_,$){_.push($)}function YG(_){h(_.dbPath);let $=v(_.dbPath),g=[];try{let U=$.query("SELECT COUNT(*) AS n FROM wiki_pages WHERE status = 'active'").get()?.n??0,D=$.query("SELECT COUNT(*) AS n FROM citations").get()?.n??0,I=$.query("SELECT COUNT(*) AS n FROM wiki_backlinks").get()?.n??0,j=$.query(`SELECT wp.id, wp.path + updated_at = excluded.updated_at`,[UD("idx",`wiki-topic\x00${$.path}`),"wiki_topic",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash}),$.now,$.now]),1}function nZ(_){return _.toLowerCase().match(/[a-z0-9][a-z0-9-]{2,}/)?.[0]??"knowledge"}async function HG(_){let $=_.now??new Date,D=$.toISOString();h(_.dbPath);let g=f(_.dbPath),U;try{U=yZ(g,_)}finally{g.close()}if(U.length===0)throw Error("No source chunks matched wiki compile input.");let I=hZ(_,U),N=`wiki/generated/${GP(I)}.md`,O=cZ(I,U,D),A=U.map((B)=>{let F=VG(B.metadata_json);return typeof F.source_ref==="string"?F.source_ref:B.source_uri}).filter((B)=>Boolean(B)),L=g$({generated_from:"wiki_compile",artifact_key:N,source_refs:A}),z=await aj(_.store,{key:N,body:O,content_type:"text/markdown",metadata:{generated_from:"wiki_compile"}}),W=UD("wiki",N),J=U.map((B)=>({chunk_id:B.chunk_id,source_uri:B.source_uri??"unknown",quote:KG(B.text,240),start_offset:B.start_offset,end_offset:B.end_offset,metadata:{source_revision_id:B.source_revision_id,revision:B.revision,hash:B.hash,source_ref:VG(B.metadata_json).source_ref??B.source_uri}})),P=nZ(I),S=`wiki/concepts/${GP(P)}.md`,X=[`# ${P}`,"",`Related page: [[${N}]]`,""].join(` +`),R=g$({generated_from:"wiki_compile_concept",artifact_key:S,source_refs:A}),G=await aj(_.store,{key:S,body:X,content_type:"text/markdown",metadata:{generated_from:"wiki_compile_concept"}}),V=UD("wiki",S),Q=await MG(_.store,{ts:D,event:"wiki_compile_completed",page_key:N,source_refs:A,chunks_seen:U.length},$),T=f(_.dbPath);try{s$(T,[z,G,Q],$),RP(T,{pageId:W,path:N,title:I,artifactUri:z.uri,contentHash:z.hash??"",body:O,provenance:L,now:D}),RP(T,{pageId:V,path:S,title:P,artifactUri:G.uri,contentHash:G.hash??"",body:X,provenance:R,now:D}),T.run(`INSERT OR REPLACE INTO wiki_backlinks (from_page_id, to_page_id, label, created_at) + VALUES (?, ?, ?, ?)`,[W,V,"concept",D]);let B=ZG(T,W,J,D),F=bG(T,{title:I,path:N,artifactUri:z.uri,contentHash:z.hash??"",now:D});return{page_id:W,path:N,artifact_uri:z.uri,content_hash:z.hash??"",chunks_seen:U.length,citations_written:B,concept_page_id:V,indexes_updated:F,log_key:Q.key,warnings:[]}}finally{T.close()}}async function kG(_){if(!_.approveWrite)return{approved:!1,durable_writes_performed:!1,page_id:null,path:null,artifact_uri:null,citations_written:0,log_key:null,message:"Dry-run: answer filing requires --approve-write."};let $=_.now??new Date,D=$.toISOString(),g=_.prompt.length>80?`${_.prompt.slice(0,77)}...`:_.prompt,I=`wiki/answers/${GP(g)}.md`,j=_.context.citations,N=[`# ${g}`,"",_.answer,"","## Citations","",...j.map((P,S)=>`- [C${S+1}] ${P.source_ref??P.source_uri??P.artifact_path??P.artifact_uri??"unknown"} ${P.hash?`(hash ${P.hash})`:""}`),""].join(` +`),O=j.map((P)=>P.source_ref??P.source_uri).filter((P)=>Boolean(P)),A=g$({generated_from:"knowledge_answer",artifact_key:I,source_refs:O}),L=await aj(_.store,{key:I,body:N,content_type:"text/markdown",metadata:{generated_from:"knowledge_answer"}}),z=await MG(_.store,{ts:D,event:"wiki_answer_filed",page_key:I,prompt:_.prompt,citations:j.length},$),W=UD("wiki",I),J=f(_.dbPath);try{s$(J,[L,z],$),RP(J,{pageId:W,path:I,title:g,artifactUri:L.uri,contentHash:L.hash??"",body:N,provenance:A,now:D});let P=ZG(J,W,j.map((S)=>({chunk_id:S.chunk_id,source_uri:S.source_uri??S.artifact_uri??"unknown",quote:S.quote,start_offset:S.start_offset,end_offset:S.end_offset,metadata:{source_ref:S.source_ref,artifact_path:S.artifact_path,revision:S.revision,hash:S.hash}})),D);return bG(J,{title:g,path:I,artifactUri:L.uri,contentHash:L.hash??"",now:D}),{approved:!0,durable_writes_performed:!0,page_id:W,path:I,artifact_uri:L.uri,citations_written:P,log_key:z.key,message:`Filed answer to ${I}`}}finally{J.close()}}function y4(_,$){_.push($)}function CG(_){h(_.dbPath);let $=f(_.dbPath),D=[];try{let g=$.query("SELECT COUNT(*) AS n FROM wiki_pages WHERE status = 'active'").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM citations").get()?.n??0,I=$.query("SELECT COUNT(*) AS n FROM wiki_backlinks").get()?.n??0,j=$.query(`SELECT wp.id, wp.path FROM wiki_pages wp LEFT JOIN citations c ON c.wiki_page_id = wp.id WHERE wp.status = 'active' AND wp.path LIKE 'wiki/generated/%' GROUP BY wp.id - HAVING COUNT(c.id) = 0`).all();for(let J of j)y4(g,{type:"missing_citation",severity:"error",page_id:J.id,path:J.path,message:"Generated wiki page has no citations."});let N=$.query(`SELECT wp.id AS page_id, wp.path, c.source_uri, c.chunk_id + HAVING COUNT(c.id) = 0`).all();for(let J of j)y4(D,{type:"missing_citation",severity:"error",page_id:J.id,path:J.path,message:"Generated wiki page has no citations."});let N=$.query(`SELECT wp.id AS page_id, wp.path, c.source_uri, c.chunk_id FROM citations c JOIN wiki_pages wp ON wp.id = c.wiki_page_id LEFT JOIN chunks ch ON ch.id = c.chunk_id - WHERE ch.metadata_json LIKE '%"stale":true%' OR ch.metadata_json LIKE '%"status":"stale"%' OR ch.metadata_json LIKE '%"status":"deleted"%'`).all();for(let J of N)y4(g,{type:"stale_citation",severity:"warn",page_id:J.page_id,path:J.path,source_uri:J.source_uri,chunk_id:J.chunk_id??void 0,message:"Page cites a stale or deleted source chunk."});let O=$.query(`SELECT lower(title) AS title, COUNT(*) AS n + WHERE ch.metadata_json LIKE '%"stale":true%' OR ch.metadata_json LIKE '%"status":"stale"%' OR ch.metadata_json LIKE '%"status":"deleted"%'`).all();for(let J of N)y4(D,{type:"stale_citation",severity:"warn",page_id:J.page_id,path:J.path,source_uri:J.source_uri,chunk_id:J.chunk_id??void 0,message:"Page cites a stale or deleted source chunk."});let O=$.query(`SELECT lower(title) AS title, COUNT(*) AS n FROM wiki_pages WHERE status = 'active' GROUP BY lower(title) - HAVING COUNT(*) > 1`).all();for(let J of O)y4(g,{type:"duplicate_page",severity:"warn",message:`Duplicate active wiki title: ${J.title} (${J.n} pages).`});let A=$.query(`SELECT wp.id, wp.path + HAVING COUNT(*) > 1`).all();for(let J of O)y4(D,{type:"duplicate_page",severity:"warn",message:`Duplicate active wiki title: ${J.title} (${J.n} pages).`});let A=$.query(`SELECT wp.id, wp.path FROM wiki_pages wp LEFT JOIN wiki_backlinks wb1 ON wb1.from_page_id = wp.id LEFT JOIN wiki_backlinks wb2 ON wb2.to_page_id = wp.id WHERE wp.status = 'active' AND wp.path NOT IN ('wiki/README.md') GROUP BY wp.id - HAVING COUNT(wb1.to_page_id) = 0 AND COUNT(wb2.from_page_id) = 0`).all();for(let J of A)y4(g,{type:"orphan_page",severity:"info",page_id:J.id,path:J.path,message:"Wiki page has no backlinks."});let L=$.query(`SELECT wp.id AS page_id, wp.path, c.source_uri + HAVING COUNT(wb1.to_page_id) = 0 AND COUNT(wb2.from_page_id) = 0`).all();for(let J of A)y4(D,{type:"orphan_page",severity:"info",page_id:J.id,path:J.path,message:"Wiki page has no backlinks."});let L=$.query(`SELECT wp.id AS page_id, wp.path, c.source_uri FROM citations c JOIN wiki_pages wp ON wp.id = c.wiki_page_id LEFT JOIN sources s ON s.uri = c.source_uri - WHERE s.id IS NULL AND c.source_uri NOT LIKE 'file://%' AND c.source_uri NOT LIKE 's3://%' AND c.source_uri NOT LIKE 'https://%' AND c.source_uri NOT LIKE 'open-files://%'`).all();for(let J of L)y4(g,{type:"unresolved_source_ref",severity:"error",page_id:J.page_id,path:J.path,source_uri:J.source_uri,message:"Citation source URI cannot be resolved to a known or allowed source ref."});let z=$.query("SELECT id, path FROM wiki_pages WHERE lower(metadata_json) LIKE '%contradiction%'").all();for(let J of z)y4(g,{type:"contradiction_marker",severity:"warn",page_id:J.id,path:J.path,message:"Page metadata contains a contradiction marker."});let W=$.query(`SELECT c.id AS chunk_id, s.uri AS source_uri + WHERE s.id IS NULL AND c.source_uri NOT LIKE 'file://%' AND c.source_uri NOT LIKE 's3://%' AND c.source_uri NOT LIKE 'https://%' AND c.source_uri NOT LIKE 'open-files://%'`).all();for(let J of L)y4(D,{type:"unresolved_source_ref",severity:"error",page_id:J.page_id,path:J.path,source_uri:J.source_uri,message:"Citation source URI cannot be resolved to a known or allowed source ref."});let z=$.query("SELECT id, path FROM wiki_pages WHERE lower(metadata_json) LIKE '%contradiction%'").all();for(let J of z)y4(D,{type:"contradiction_marker",severity:"warn",page_id:J.id,path:J.path,message:"Page metadata contains a contradiction marker."});let W=$.query(`SELECT c.id AS chunk_id, s.uri AS source_uri FROM chunks c JOIN source_revisions sr ON sr.id = c.source_revision_id JOIN sources s ON s.id = sr.source_id @@ -1094,7 +1094,7 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| WHERE c.kind = 'source' GROUP BY c.id HAVING COUNT(cit.id) = 0 - LIMIT 25`).all();for(let J of W)y4(g,{type:"new_article_candidate",severity:"info",chunk_id:J.chunk_id,source_uri:J.source_uri??void 0,message:"Source chunk is indexed but not cited by any wiki page yet."});return{ok:g.every((J)=>J.severity!=="error"),issue_count:g.length,issues:g,counts:{active_pages:U,citations:D,backlinks:I,new_article_candidates:W.length}}}finally{$.close()}}import{createHash as MZ}from"crypto";function ZZ(_){let $=String(_.getUTCFullYear()),g=String(_.getUTCMonth()+1).padStart(2,"0"),U=String(_.getUTCDate()).padStart(2,"0");return{year:$,month:g,day:U}}function J3(_,$){return`${_}_${MZ("sha256").update($).digest("hex").slice(0,20)}`}function bZ(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function HZ(){return`# Knowledge Agent Schema v1 + LIMIT 25`).all();for(let J of W)y4(D,{type:"new_article_candidate",severity:"info",chunk_id:J.chunk_id,source_uri:J.source_uri??void 0,message:"Source chunk is indexed but not cited by any wiki page yet."});return{ok:D.every((J)=>J.severity!=="error"),issue_count:D.length,issues:D,counts:{active_pages:g,citations:U,backlinks:I,new_article_candidates:W.length}}}finally{$.close()}}import{createHash as dZ}from"crypto";function mZ(_){let $=String(_.getUTCFullYear()),D=String(_.getUTCMonth()+1).padStart(2,"0"),g=String(_.getUTCDate()).padStart(2,"0");return{year:$,month:D,day:g}}function YP(_,$){return`${_}_${dZ("sha256").update($).digest("hex").slice(0,20)}`}function iZ(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function lZ(){return`# Knowledge Agent Schema v1 ## Source Rules @@ -1119,7 +1119,7 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| ## Lint Rules - Flag stale pages, missing citations, contradictions, orphan pages, duplicate pages, and unresolved source refs. -`}function kZ(){return`# Knowledge Index +`}function tZ(){return`# Knowledge Index This is a compact orientation index for agents. It is not the full search index. @@ -1134,19 +1134,19 @@ This is a compact orientation index for agents. It is not the full search index. Raw source files are resolved through open-files. This app stores source refs, citations, chunks, generated wiki artifacts, indexes, and run records. -`}function QG(){return`# Wiki +`}function vG(){return`# Wiki Generated durable knowledge pages live here. Pages should be concise, cited, and organized for both humans and agents. -`}async function TG(_,$=new Date){let{year:g,month:U,day:D}=ZZ($),I="schemas/v1.md",j="indexes/root.md",N="wiki/README.md",O=`logs/${g}/${U}/${D}.jsonl`,A={ts:$.toISOString(),event:"wiki_layout_initialized",schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md"},L=[{key:"schemas/v1.md",body:HZ(),content_type:"text/markdown"},{key:"indexes/root.md",body:kZ(),content_type:"text/markdown"},{key:"wiki/README.md",body:QG(),content_type:"text/markdown"},{key:O,body:`${JSON.stringify(A)} -`,content_type:"application/x-ndjson"}],z=await Promise.all(L.map(async(W)=>{let J=await _.put(W);return{key:J.key,uri:J.uri,kind:bS(W.key),content_type:W.content_type,modified_at:J.modified_at,metadata:{provenance:U$({generated_from:"wiki_layout_init",artifact_key:W.key,citation_required:W.key.startsWith("wiki/")||W.key.startsWith("indexes/")})},...J0(W.body)}}));return{schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md",log_key:O,artifacts:z,written:["schemas/v1.md","indexes/root.md","wiki/README.md",O]}}function P3(_){let $=_.metadata?.provenance;if($&&typeof $==="object"&&!Array.isArray($))return $;return U$({generated_from:"wiki_layout_init",artifact_key:_.key})}function CZ(_,$,g,U,D,I){let j=P3(U),N=J3("chk",`${$}\x00${U.hash??U.uri}`),O=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($);for(let A of O)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[A.id]);_.run("DELETE FROM chunks WHERE wiki_page_id = ?",[$]),_.run(`INSERT INTO chunks (id, wiki_page_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[N,$,"wiki",0,D,bZ(D),0,D.length,JSON.stringify({artifact_key:U.key,artifact_uri:U.uri,content_hash:U.hash??null,provenance:j}),I]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[N,D,g,U.uri])}function qG(_,$,g=new Date){let U=g.toISOString(),D=$.find((j)=>j.key.endsWith("indexes/root.md")),I=$.find((j)=>j.key.endsWith("wiki/README.md"));if(D)_.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) +`}async function fG(_,$=new Date){let{year:D,month:g,day:U}=mZ($),I="schemas/v1.md",j="indexes/root.md",N="wiki/README.md",O=`logs/${D}/${g}/${U}.jsonl`,A={ts:$.toISOString(),event:"wiki_layout_initialized",schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md"},L=[{key:"schemas/v1.md",body:lZ(),content_type:"text/markdown"},{key:"indexes/root.md",body:tZ(),content_type:"text/markdown"},{key:"wiki/README.md",body:vG(),content_type:"text/markdown"},{key:O,body:`${JSON.stringify(A)} +`,content_type:"application/x-ndjson"}],z=await Promise.all(L.map(async(W)=>{let J=await _.put(W);return{key:J.key,uri:J.uri,kind:nS(W.key),content_type:W.content_type,modified_at:J.modified_at,metadata:{provenance:g$({generated_from:"wiki_layout_init",artifact_key:W.key,citation_required:W.key.startsWith("wiki/")||W.key.startsWith("indexes/")})},...P0(W.body)}}));return{schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md",log_key:O,artifacts:z,written:["schemas/v1.md","indexes/root.md","wiki/README.md",O]}}function QP(_){let $=_.metadata?.provenance;if($&&typeof $==="object"&&!Array.isArray($))return $;return g$({generated_from:"wiki_layout_init",artifact_key:_.key})}function oZ(_,$,D,g,U,I){let j=QP(g),N=YP("chk",`${$}\x00${g.hash??g.uri}`),O=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($);for(let A of O)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[A.id]);_.run("DELETE FROM chunks WHERE wiki_page_id = ?",[$]),_.run(`INSERT INTO chunks (id, wiki_page_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[N,$,"wiki",0,U,iZ(U),0,U.length,JSON.stringify({artifact_key:g.key,artifact_uri:g.uri,content_hash:g.hash??null,provenance:j}),I]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[N,U,D,g.uri])}function wG(_,$,D=new Date){let g=D.toISOString(),U=$.find((j)=>j.key.endsWith("indexes/root.md")),I=$.find((j)=>j.key.endsWith("wiki/README.md"));if(U)_.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(kind, name, shard_key) DO UPDATE SET artifact_uri = excluded.artifact_uri, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[J3("idx","root:indexes/root.md"),"root","root",D.uri,"root",JSON.stringify({artifact_key:D.key,content_hash:D.hash??null,provenance:P3(D)}),U,U]);if(I){let j=J3("wiki","wiki/README.md");_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) + updated_at = excluded.updated_at`,[YP("idx","root:indexes/root.md"),"root","root",U.uri,"root",JSON.stringify({artifact_key:U.key,content_hash:U.hash??null,provenance:QP(U)}),g,g]);if(I){let j=YP("wiki","wiki/README.md");_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON CONFLICT(path) DO UPDATE SET title = excluded.title, @@ -1154,13 +1154,13 @@ Pages should be concise, cited, and organized for both humans and agents. content_hash = excluded.content_hash, status = excluded.status, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[j,"wiki/README.md","Wiki",I.uri,I.hash??null,"active",JSON.stringify({artifact_key:I.key,provenance:P3(I)}),U,U]),CZ(_,j,"Wiki",I,QG(),U)}}import{createHash as BG}from"crypto";import{cpSync as Y3,chmodSync as S3,existsSync as V$,lstatSync as ZG,mkdirSync as aj,readdirSync as Q3,readFileSync as OU,renameSync as rZ,rmSync as _N,writeFileSync as KG}from"fs";import{dirname as W3,join as L6,relative as vZ}from"path";function X3(_,$=_){if(!V$(_))return[];let g=ZG(_);if(g.isFile())return[vZ($,_)||"."];if(!g.isDirectory())return[];return Q3(_).flatMap((U)=>X3(L6(_,U),$)).sort()}function VG(_,$){if($.length===0)return{sha256:null,bytes:0};let g=BG("sha256"),U=0;for(let D of $){let I=L6(_,D),j=OU(I),N=BG("sha256").update(j).digest("hex");U+=j.byteLength,g.update(D),g.update("\x00"),g.update(N),g.update("\x00")}return{sha256:g.digest("hex"),bytes:U}}function wZ(_){if(!V$(_))return null;let $=JSON.parse(OU(_,"utf8"));return Array.isArray($.items)?$.items.length:null}function fZ(_){if(!V$(_))return{exists:!1,integrity_check:null,table_counts:{}};let $=SS(_);try{let g=$.query("PRAGMA integrity_check").get(),U=g?Object.values(g)[0]??null:null,D=$.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name").all(),I={};for(let j of D){let N=`"${j.name.replaceAll('"','""')}"`,O=$.query(`SELECT COUNT(*) AS n FROM ${N}`).get();I[j.name]=O?.n??0}return{exists:!0,integrity_check:U,table_counts:I}}finally{$.close()}}function d_(_,$={}){let g=X3(_.home),U=VG(_.home,g),D=X3(_.artifactsDir),I=VG(_.artifactsDir,D),j=V$(_.knowledgeDbPath);return{path:_.home,exists:V$(_.home),file_count:g.length,total_bytes:U.bytes,tree_sha256:U.sha256,json_items:wZ(_.jsonStorePath),sqlite:$.includeSqlite===!1?{exists:j,integrity_check:null,table_counts:{}}:fZ(_.knowledgeDbPath),artifacts:{exists:V$(_.artifactsDir),file_count:D.length,total_bytes:I.bytes,tree_sha256:I.sha256},files:g}}function uZ(_,$){if(!$.exists)return!0;if($.files.filter((U)=>U!=="config.json").length>0)return!1;if(!$.files.includes("config.json"))return!0;try{return JSON.stringify(JSON.parse(OU(_.configPath,"utf8")))===JSON.stringify(Mg())}catch{return!1}}function R3(_,$){return _.file_count===$.file_count&&_.total_bytes===$.total_bytes&&_.tree_sha256===$.tree_sha256&&_.json_items===$.json_items&&_.sqlite.integrity_check===$.sqlite.integrity_check&&JSON.stringify(_.sqlite.table_counts)===JSON.stringify($.sqlite.table_counts)&&_.artifacts.file_count===$.artifacts.file_count&&_.artifacts.total_bytes===$.artifacts.total_bytes&&_.artifacts.tree_sha256===$.artifacts.tree_sha256}function sj(_){return _.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z")}function G3(_){if(Array.isArray(_))return`[${_.map(G3).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).sort(([$],[g])=>$.localeCompare(g)).map(([$,g])=>`${JSON.stringify($)}:${G3(g)}`).join(",")}}`;return JSON.stringify(_)}function FG(_){return G3(_)}function z3(_){return typeof _.short_id==="string"&&_.short_id.trim().length>0?_.short_id:null}function h4(_){if(!V$(_))return{items:[]};let $=JSON.parse(OU(_,"utf8"));if(!$||!Array.isArray($.items))throw Error(`Invalid knowledge JSON store shape at ${_}`);return{items:$.items}}function MG(_,$){let g=new Map(_.items.map((L)=>[L.id,L])),U=new Map;for(let L of _.items){let z=U.get(L.id);if(z&&z.item.id!==L.id);U.set(L.id,{item:L,keyKind:"id",source:"current"});let W=z3(L);if(W&&!U.has(W))U.set(W,{item:L,keyKind:"short_id",source:"current"})}let D=[],I=0,j=0,N=0,O=[];for(let L of $.items){let z=g.get(L.id);if(z){if(FG(z)===FG(L))I+=1;else j+=1,D.push({type:"id_conflict",id:L.id,legacy_title:L.title,current_title:z.title});continue}let W=[{key:L.id,keyKind:"id"},...z3(L)?[{key:z3(L),keyKind:"short_id"}]:[]],J=!1;for(let{key:P,keyKind:S}of W){let X=U.get(P);if(!X)continue;if(S==="id"&&X.keyKind==="id")j+=1,D.push({type:"id_conflict",id:P,legacy_id:L.id,current_id:X.item.id,legacy_title:L.title,current_title:X.item.title});else N+=1,D.push({type:"short_id_conflict",id:P,legacy_id:L.id,current_id:X.item.id,legacy_title:L.title,current_title:X.item.title});J=!0}if(J)continue;O.push(L);for(let{key:P,keyKind:S}of W)U.set(P,{item:L,keyKind:S,source:"legacy"})}let A={items:[..._.items,...O]};return{stats:{current_items:_.items.length,legacy_items:$.items.length,duplicate_ids_identical:I,duplicate_ids_conflicting:j,short_id_conflicts:N,stranded_items:O.length,merged_items:D.length===0?O.length:0,expected_total_items:_.items.length+O.length,final_items:null},conflicts:D,mergedStore:A}}function xZ(_,$){let g=[...new Set(_)].sort(),U=(D)=>{if(D>=g.length)return $();return v$(g[D],()=>U(D+1),{createParent:!0})};return U(0)}function bG(_){let $=_.now??new Date,g=_.approveWrite!==!0,U=d_(_.legacy),D=d_(_.current),I={legacy_exists:U.exists,legacy_store_exists:V$(_.legacy.jsonStorePath),current_store_exists:V$(_.current.jsonStorePath),approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_backup_written:!1,no_conflicts:!1,final_count_matches_expected:!1},j=[];if(!U.exists||!I.legacy_store_exists)return{ok:!0,dry_run:g,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,legacy_before:U,current_before:D,backup_after:null,current_after:D,merge:{current_items:h4(_.current.jsonStorePath).items.length,legacy_items:0,duplicate_ids_identical:0,duplicate_ids_conflicting:0,short_id_conflicts:0,stranded_items:0,merged_items:0,expected_total_items:h4(_.current.jsonStorePath).items.length,final_items:D.json_items},conflicts:[],checks:{...I,no_conflicts:!0,final_count_matches_expected:!0},warnings:j,message:`No legacy knowledge JSON store found at ${_.legacy.jsonStorePath}`};let N=h4(_.current.jsonStorePath),O=h4(_.legacy.jsonStorePath),A=MG(N,O);if(I.no_conflicts=A.conflicts.length===0,A.conflicts.length>0)j.push("merge_conflicts_detected");if(!I.approval_present)j.push("write_approval_required");if(g||!I.approval_present||A.conflicts.length>0)return{ok:A.conflicts.length===0,dry_run:!0,approval_required:!I.approval_present,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.merge-backup-${sj($)}`,legacy_before:U,current_before:D,backup_after:null,current_after:null,merge:A.stats,conflicts:A.conflicts,checks:I,warnings:j,message:A.conflicts.length===0?`Dry run: would merge ${A.stats.stranded_items} legacy item(s) into ${_.current.jsonStorePath}`:`Refusing legacy merge with ${A.conflicts.length} conflict(s)`};return xZ([_.current.jsonStorePath,_.legacy.jsonStorePath],()=>{let L=h4(_.current.jsonStorePath),z=h4(_.legacy.jsonStorePath),W=MG(L,z);if(I.no_conflicts=W.conflicts.length===0,W.conflicts.length>0)return{ok:!1,dry_run:!0,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,legacy_before:d_(_.legacy),current_before:d_(_.current),backup_after:null,current_after:null,merge:W.stats,conflicts:W.conflicts,checks:I,warnings:[...j,"merge_conflicts_detected_after_lock"],message:`Refusing legacy merge with ${W.conflicts.length} conflict(s)`};if(W.stats.stranded_items===0)return W.stats.final_items=L.items.length,I.final_count_matches_expected=L.items.length===W.stats.expected_total_items,{ok:I.no_conflicts&&I.final_count_matches_expected,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,legacy_before:d_(_.legacy),current_before:d_(_.current),backup_after:null,current_after:d_(_.current),merge:W.stats,conflicts:[],checks:I,warnings:j,message:`Legacy merge already up to date for ${_.current.jsonStorePath}`};let J=`${_.legacy.home}.merge-backup-${sj($)}`;aj(W3(J),{recursive:!0}),Y3(_.legacy.home,J,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});let P=D$(J),S=d_(P);if(I.legacy_backup_written=R3(d_(_.legacy),S),!I.legacy_backup_written)throw Error(`Legacy knowledge merge backup verification failed: ${J}`);t$(_.current.jsonStorePath,W.mergedStore);let X=h4(_.current.jsonStorePath);W.stats.final_items=X.items.length,I.final_count_matches_expected=X.items.length===W.stats.expected_total_items;let G=d_(_.current),R=I.legacy_backup_written&&I.no_conflicts&&I.final_count_matches_expected;return{ok:R,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:J,legacy_before:U,current_before:D,backup_after:S,current_after:G,merge:W.stats,conflicts:[],checks:I,warnings:j,message:R?`Merged ${W.stats.merged_items} legacy item(s) into ${_.current.jsonStorePath}`:`Merged legacy knowledge store, but verification failed for ${_.current.jsonStorePath}`}})}function yZ(_){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,_)}function T3(_){return _ instanceof Error&&/\b(EBUSY|EPERM)\b/.test(_.message)}function hZ(_){let $;for(let g=0;g<8;g+=1)try{_N(_,{recursive:!0,force:!1});return}catch(U){if($=U,!T3(U))throw U;yZ(50*(g+1))}throw $}function HG(_){if(!V$(_))return;let $=ZG(_);if(S3(_,$.isDirectory()?448:384),!$.isDirectory())return;for(let g of Q3(_))HG(L6(_,g))}function cZ(_){return _==="TOMBSTONE.md"||_==="migration.json"||_==="knowledge.db"||_==="knowledge.db-shm"||_==="knowledge.db-wal"||_==="knowledge.db-journal"}function nZ(_){for(let $ of Q3(_)){if($==="TOMBSTONE.md"||$==="migration.json")continue;try{_N(L6(_,$),{recursive:!0,force:!1})}catch(g){if(!T3(g)||!$.startsWith("knowledge.db"))throw g}}}function dZ(_,$){try{rZ(_,$);return}catch(g){Y3(_,$,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});try{hZ(_)}catch(U){if(T3(U)){nZ(_);return}throw _N($,{recursive:!0,force:!0}),U}if(g instanceof Error&&g.message.includes("EXDEV"))return}}function mZ(_,$,g){if(!$.exists)return!1;if(!$.files.includes("TOMBSTONE.md")||!$.files.includes("migration.json"))return!1;if($.files.some((U)=>!cZ(U)))return!1;try{let U=JSON.parse(OU(L6(_.home,"migration.json"),"utf8"));return U.new_path===g&&typeof U.backup_path==="string"}catch{return!1}}function kG(_){let $=_.now??new Date,g=_.approveWrite!==!0,U=d_(_.current),D=uZ(_.current,U),I=_.approveWrite===!0&&Boolean(_.approvedBy)&&(!U.exists||D),j=d_(_.legacy,{includeSqlite:!I}),N={legacy_exists:j.exists,current_absent_or_default_scaffold:!U.exists||D,approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_is_tombstone:!1,backup_matches_legacy:!1,migrated_matches_backup:!1,tombstone_written:!1},O=[];if(!j.exists)return{ok:!0,dry_run:g,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,tombstone_path:null,legacy_before:j,current_before:U,backup_after:null,current_after:null,checks:N,warnings:O,message:`No legacy knowledge workspace found at ${_.legacy.home}`};if(N.legacy_is_tombstone=mZ(_.legacy,j,_.current.home),N.legacy_is_tombstone)return{ok:!0,dry_run:g,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,tombstone_path:L6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:U,backup_after:null,current_after:U,checks:{...N,tombstone_written:!0},warnings:O,message:`Legacy knowledge workspace already migrated to ${_.current.home}`};if(!N.current_absent_or_default_scaffold)O.push("current_workspace_contains_data");if(!N.approval_present)O.push("write_approval_required");if(g||!N.current_absent_or_default_scaffold||!N.approval_present)return{ok:N.current_absent_or_default_scaffold,dry_run:!0,approval_required:!0,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.backup-${sj($)}`,tombstone_path:L6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:U,backup_after:null,current_after:null,checks:N,warnings:O,message:N.current_absent_or_default_scaffold?`Dry run: would migrate ${_.legacy.home} to ${_.current.home}`:`Cannot migrate while ${_.current.home} contains data`};let A=`${_.legacy.home}.backup-${sj($)}`;aj(W3(_.current.home),{recursive:!0}),aj(W3(A),{recursive:!0}),Y3(_.legacy.home,A,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0}),HG(A);let L=D$(A),z=d_(L,{includeSqlite:!1});if(N.backup_matches_legacy=R3(j,z),!N.backup_matches_legacy)throw Error(`Legacy knowledge backup verification failed: ${A}`);if(U.exists&&D)_N(_.current.home,{recursive:!0,force:!0});dZ(_.legacy.home,_.current.home);let W=d_(_.current,{includeSqlite:!1});N.migrated_matches_backup=R3(z,W);let J=d_(L),P=d_(_.current),S={...J,path:_.legacy.home};aj(_.legacy.home,{recursive:!0});let X=L6(_.legacy.home,"TOMBSTONE.md");KG(X,["# Migrated OpenKnowledge Workspace","",`Migrated at: ${$.toISOString()}`,`Approved by: ${_.approvedBy}`,`New path: ${_.current.home}`,`Backup path: ${A}`,"","This directory is a diagnostic tombstone only. OpenKnowledge reads and writes the canonical .hasna/knowledge workspace.",""].join(` -`),{mode:384}),S3(X,384);let G=L6(_.legacy.home,"migration.json");KG(G,`${JSON.stringify({migrated_at:$.toISOString(),approved_by:_.approvedBy,new_path:_.current.home,backup_path:A,legacy_before:S,backup_after:J,current_after:P},null,2)} -`,{mode:384}),S3(G,384),N.tombstone_written=V$(X);let R=N.backup_matches_legacy&&N.migrated_matches_backup&&N.tombstone_written;return{ok:R,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:A,tombstone_path:X,legacy_before:S,current_before:U,backup_after:J,current_after:P,checks:N,warnings:O,message:R?`Migrated legacy knowledge workspace to ${_.current.home}`:`Migrated legacy knowledge workspace, but verification failed for ${_.current.home}`}}function oZ(_){let $=lG(_);if(W_(CG($,"knowledge.db"))||W_(CG($,"config.json")))return D0($);return D0(D$(FN($)).home)}function q3(_){return`${tZ()}:${LU("sha256").update(_.home).digest("hex").slice(0,12)}`}function V3(_){return`'${_.replace(/'/g,"'\\''")}'`}function pZ(_){return["knowledge",..._].map(V3).join(" ")}function rG(_,$){return`cd ${V3(_)} && knowledge ${$.map(V3).join(" ")}`}function tG(_){return!_||_==="local"||_==="localhost"}function AU(_,$){return{source:_.source,adapter:_.adapter,project_root:$,project_root_source:_.project_root_source,workspace_root:_.workspace_root,workspace_root_source:_.workspace_root_source,open_files_root:_.open_files_root,open_files_root_source:_.open_files_root_source,trust_status:_.trust_status,auth_status:_.auth_status,current:_.current,primary:_.primary,diagnostics:_.diagnostics,repair_hints:_.repair_hints,evidence:_.evidence,cacheability:_.cacheability,warnings:_.warnings}}function B3(_){return{source:_.source,adapter:_.adapter,target:_.target,route:_.route,target_kind:_.targetKind,confidence:_.confidence,evidence:_.evidence,cacheability:_.cacheability}}function eZ(_){try{let $=JSON.parse(_);return Array.isArray($)?$.filter((g)=>typeof g==="string"):[]}catch{return[]}}function JU(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function k_(_){return typeof _==="string"&&_.length>0?_:null}function aZ(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function $N(_){return typeof _==="boolean"?_:null}function sZ(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function oG(_,$,g){let U=JU(_),D=k_(U.observed_at)??k_($[`${g}_observed_at`]),I=k_(U.source_authority)??k_($[`${g}_source_authority`]);if(!D||!I)return null;return{observed_at:D,verified_at:k_(U.verified_at),expires_at:k_(U.expires_at)??k_($[`${g}_expires_at`]),ttl_ms:aZ(U.ttl_ms),source_authority:I,confidence:k_(U.confidence)??(g==="route"?k_($.route_confidence):null),cacheable:$N(U.cacheable)??$N($[`${g}_cacheable`])??!1,stale:$N(U.stale)??$N($[`${g}_stale`])??!1,reasons:sZ(U.reasons)}}function _b(_,$){return _.machine_id===$||_.hostname===$||_.ssh_target===$||_.tailscale_dns===$||eZ(_.tailscale_ips_json).includes($)}function vG(_,$){return wE(_).find((g)=>_b(g,$))??null}function pG(_){return JU(c4(_.metadata_json).resolver_evidence)}function PU(_){return JU(c4(_.capabilities_json).resolver)}function eG(_){let $=PU(_),g=k_($.route_kind);if(g==="local"||g==="lan"||g==="tailscale"||g==="ssh"||g==="unknown")return g;if(_.tailscale_dns&&_.ssh_target===_.tailscale_dns)return"tailscale";return _.ssh_target?"ssh":"unknown"}function $b(_){let $=PU(_),g=k_($.route_target_kind);if(g==="local"||g==="lan"||g==="tailscale"||g==="ssh"||g==="unknown")return g;return eG(_)}function gb(_){return k_(PU(_).route_confidence)??"medium"}function wG(_,$,g){let U=pG(_),D=JU(U.route),I=PU(_);return{target:_.ssh_target??_.tailscale_dns??_.hostname??_.machine_id,route:eG(_),targetKind:$b(_),confidence:gb(_),source:"registry",adapter:g.adapter,evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,route:D},cacheability:oG(D.cacheability,I,"route")??g.cacheability,warnings:[...new Set([...g.warnings,"registry_route_fallback"])]}}function fG(_,$,g){if(!_.workspace_home)return null;let U=pG(_),D=JU(U.workspace),I=PU(_);return{ok:!0,source:"registry",adapter:g.adapter,requested_machine_id:$,machine_id:_.machine_id,project_id:k_(D.project_id)??g.project_id,repo_name:k_(D.repo_name)??g.repo_name,project_root:_.workspace_home,project_root_source:k_(I.project_root_source)??"registry",workspace_root:k_(D.workspace_root),workspace_root_source:k_(I.workspace_root_source)??"registry",open_files_root:k_(D.open_files_root),open_files_root_source:k_(I.open_files_root_source)??"registry",trust_status:k_(I.trust_status)??"unknown",auth_status:k_(I.auth_status)??"unknown",current:!1,primary:!1,diagnostics:[],repair_hints:[],evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,workspace:D},cacheability:oG(D.cacheability,I,"workspace")??g.cacheability,warnings:[...new Set([...g.warnings,"registry_workspace_fallback"])]}}function uG(_){if(!_)return null;let $=_.diagnostics.filter((U)=>U.severity!=="ok"),g=_.repair_hints[0];if(!$.length&&!_.warnings.length&&!g)return null;return[$.length?`workspace diagnostics: ${$.map((U)=>`${U.id}=${U.status}`).join(", ")}`:null,_.warnings.length?`warnings: ${_.warnings.join(", ")}`:null,g?`repair: ${g.shell_command}`:null].filter(Boolean).join("; ")}function gN(_){return{id:_.id,reason:_.reason,command:["knowledge",..._.args],shell_command:pZ(_.args)}}function DN(_,$){let g=v(_);try{return Number(g.query($).get()?.count??0)}finally{g.close()}}function Db(_,$){let g=DN(_,"SELECT COUNT(*) AS count FROM sources WHERE uri LIKE 'open-files://%'"),U=DN(_,"SELECT COUNT(*) AS count FROM sources WHERE metadata_json LIKE '%open-files://%' OR metadata_json LIKE '%source_ref%'"),D=DN(_,"SELECT COUNT(*) AS count FROM source_revisions WHERE extracted_text_uri IS NOT NULL"),I=DN(_,["SELECT COUNT(*) AS count FROM sources","WHERE metadata_json LIKE '%raw_bytes%'","OR metadata_json LIKE '%raw_content%'","OR metadata_json LIKE '%content_base64%'","OR metadata_json LIKE '%source_bytes%'"].join(" ")),j=I===0;return{ok:j,source_of_truth:"open-files",configured_root:$?.open_files_root??null,configured_root_source:$?.open_files_root_source??null,source_refs:{open_files:g,metadata_mentions:U},extracted_text_artifacts:D,raw_source_bytes_owned_by:"open-files",raw_payload_sentinel_hits:I,message:j?`${g} open-files source ref(s); raw source bytes remain owned by open-files`:`${I} raw source payload metadata sentinel(s) found`}}var Ub=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body","body_bytes"]);function F3(_,$=0){if($>8)return!1;if(!_||typeof _!=="object")return!1;if(Array.isArray(_))return _.some((g)=>F3(g,$+1));for(let[g,U]of Object.entries(_)){if(Ub.has(g.toLowerCase()))return!0;if(F3(U,$+1))return!0}return!1}function c4(_){try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function xG(_,$=20,g=200){if(!Number.isFinite(_)||_<=0)return $;return Math.min(Math.floor(_),g)}function Ib(_,$=220){let g=_??"";return g.length>$?`${g.slice(0,$)}...`:g}function S$(_,$=["metadata_json"]){return _.map((g)=>{let U={...g};for(let D of $){let I=U[D];if(typeof I==="string"){let j=D.endsWith("_json")?D.slice(0,-5):D;U[j]=c4(I),delete U[D]}}return U})}function UN(_){if(typeof _!=="string")return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function M3(_){if(typeof _!=="string")return{};return c4(_)}function jb(_){let $={..._};return $.source_refs=UN($.source_refs_json),$.evidence_refs=UN($.evidence_refs_json),$.requires_approval=$.requires_approval===1||$.requires_approval===!0,$.checks=M3($.checks_json),$.metadata=M3($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.checks_json,delete $.metadata_json,$}function Nb(_){let $={..._};return $.source_refs=UN($.source_refs_json),$.evidence_refs=UN($.evidence_refs_json),$.metadata=M3($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.metadata_json,$}function p_(_,$,g=[]){return _.query($).all(...g)}function Eb(_){if(!W_(_))return{exists:!1,read_error:null,items:[]};try{let $=JSON.parse(lZ(_,"utf8"));if(!$||!Array.isArray($.items))return{exists:!0,read_error:"invalid_store_shape",items:[]};return{exists:!0,read_error:null,items:$.items}}catch($){return{exists:!0,read_error:$ instanceof Error?$.message:String($),items:[]}}}function yG(_){return{id:_.id,short_id:_.short_id??null,title:_.title,content_preview:Ib(_.content),url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:_.archived===!0,created_at:_.created_at,updated_at:_.updated_at}}function hG(){return{schema_version:0,sources:0,source_revisions:0,chunks:0,wiki_pages:0,citations:0,indexes:0,runs:0,run_events:0,redaction_findings:0,audit_events:0,approval_gates:0,storage_objects:0,embeddings:0,vector_entries:0,reindex_queue:0,knowledge_machines:0,sync_snapshots:0,sync_changes:0,sync_conflicts:0,sync_table_clocks:0,sync_imports:0,promotion_candidates:0,durable_records:0}}function aG(_,$,g=!1){return{query:_,limit:$,offset:0,mode:{keyword:!0,catalog:!0,semantic:g},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:0,catalog_results:0,semantic_results:0,merged_results:0},warnings:["knowledge_db_missing"],results:[]}}function Ob(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function Ab(_,$,g=!1){let U=aG(_,$,g);return{query:_,normalized_query:Ob(_),created_at:new Date().toISOString(),mode:U.mode,warnings:U.warnings,search_counts:U.counts,results:[],citations:[],excerpts:[],graph:{citations:[],backlinks:[]},notes:{permissions:[],freshness:[]}}}function K3(_,$,g){let U=g??$.jsonStorePath;if(W_(U))return U;if(_==="global"){let D=Fg();if(W_(D))return D}return U}function Lb(_){let $=JSON.stringify(_);return Math.max(1,Math.ceil($.length/4))}function Z3(_,$){let g=(_??"").normalize("NFKC").trim().replace(/\s+/g," ");if(g.length<=$)return g;return`${g.slice(0,Math.max(0,$-1)).trim()}...`}function cG(_,$,g){let U=u_(Z3(_,g),$);return{text:U.text,redactions:U.findings.length}}function nG(_,$,g){let U=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),j=(_.query??_.topic??$.query).normalize("NFKC").trim().replace(/\s+/g," "),N=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),O=Math.max(500,Math.min(_.maxTokens??6000,1e5)),A=0,L=$.citations.slice(0,Math.max(N*2,N)).map((R,K)=>{let Q=cG(R.quote,g,K<3?220:140);A+=Q.redactions;let T=R.source_ref??R.source_uri??R.artifact_path??R.artifact_uri??R.id;return{id:`cite_${LU("sha256").update(`${R.id}\x00${T}`).digest("hex").slice(0,12)}`,kind:R.artifact_uri||R.artifact_path?"artifact":"source",ref:T,source_ref:R.source_ref,source_uri:R.source_uri,artifact_uri:R.artifact_uri,artifact_path:R.artifact_path,run_id:null,run_event_id:null,revision:R.revision,hash:R.hash,chunk_id:R.chunk_id,offsets:{start:R.start_offset,end:R.end_offset},quote_preview:Q.text}}),z=new Map($.citations.map((R,K)=>[R.id,L[K]])),W=$.excerpts.slice(0,Math.max(N*2,N)).map((R)=>{let K=$.results.find((q)=>q.id===R.result_id),Q=R.citation_id?z.get(R.citation_id):void 0,T=cG(R.text,g,520);return A+=T.redactions,{id:`ev_${LU("sha256").update(`${R.kind}\x00${R.result_id}\x00${R.citation_id??""}`).digest("hex").slice(0,14)}`,kind:R.kind,title:Z3(K?.title??Q?.ref??R.kind,100),text_preview:T.text,score:Number(R.score.toFixed(6)),citation_ids:Q?[Q.id]:[],provenance:{source:D,record_ref:`${R.kind}:${R.result_id}`,created_at:$.created_at,updated_at:null,metadata_keys:[]}}}).sort((R,K)=>K.score-R.score||R.id.localeCompare(K.id)).slice(0,N),J=new Set(W.flatMap((R)=>R.citation_ids)),P=L.filter((R)=>J.has(R.id)),S=Array.from(new Set($.warnings)),X=`ctx_${LU("sha256").update([D,I,j,S.join(","),W.map((R)=>R.id).join(",")].join("\x00")).digest("hex").slice(0,20)}`,G={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:U.toISOString(),source:D,purpose:I,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:X,budgets:{max_tokens:O,estimated_tokens:0,max_items:N,items_included:W.length,items_available:$.excerpts.length,items_truncated:Math.max(0,$.excerpts.length-W.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:A,reminders:["This pack is read-only and performs no durable writes.","Legacy JSON note evidence is bounded and redacted before inclusion."]},citations:P,evidence:W,duplicate_candidates:[],outline:{title:j?`Knowledge context: ${Z3(j,80)}`:"Knowledge context",bullets:W.length>0?W.slice(0,5).map((R)=>`${R.id}: ${R.title}`):["No matching bounded evidence was found."],evidence_ids:W.slice(0,8).map((R)=>R.id),duplicate_candidate_ids:[],next_actions:["Use evidence_ids and citation_ids in prompts instead of raw excerpts when possible.","Inspect cited refs only if the bounded preview is insufficient.","Use knowledge build/file-answer only with explicit approval for durable writes."]},warnings:S,message:`${W.length} bounded evidence item(s), estimated under ${O} token(s)`};return G.budgets.estimated_tokens=Lb(G),G.budgets.token_budget_exceeded=G.budgets.estimated_tokens>O,G.message=`${G.evidence.length} bounded evidence item(s), estimated ${G.budgets.estimated_tokens}/${O} token(s)`,G}function Jb(){return{schema_version:0,chunks:0,vector_entries:0,missing_embeddings:0,queued:{},stale_revisions:0}}function Pb(){return{total_embeddings:0,total_vector_entries:0,indexes:[]}}function zb(_){return{ok:!0,scope:_.scope,workspace_home:_.workspaceHome,sqlite_schema_version:0,local_machine_id:_.localMachineId??null,machines:{total:0,rows:[]},snapshots:{total:0,latest:null},changes:{total:0,by_operation:[]},clocks:{total:0,rows:[]},imports:{total:0,latest:null},conflicts:{total:0,by_status:[],open:0},table_counts:{},message:"0 machine(s), 0 open sync conflict(s)"}}function dG(_){let $=_.now??new Date,g=_.source??"search",U=_.purpose??(g==="loops"||g==="runs"?"proposal":"agent_context"),D=(_.query??_.topic??"").normalize("NFKC").trim().replace(/\s+/g," "),I=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),j=Math.max(500,Math.min(_.maxTokens??6000,1e5)),N=`ctx_${LU("sha256").update(["empty",g,U,D,_.topic??"",_.since??""].join("\x00")).digest("hex").slice(0,20)}`;return{ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:g,purpose:U,query:D,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:N,budgets:{max_tokens:j,estimated_tokens:0,max_items:I,items_included:0,items_available:0,items_truncated:0,token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:0,reminders:["This pack is read-only and performs no durable writes.","No knowledge.db exists for this scope yet."]},citations:[],evidence:[],duplicate_candidates:[],outline:{title:D?`Context for ${D}`:"Knowledge context",bullets:[],evidence_ids:[],duplicate_candidate_ids:[],next_actions:[]},warnings:["knowledge_db_missing"],message:`0 bounded evidence item(s), estimated 0/${j} token(s)`}}function b3(_){let $=_.artifact_store.s3?.prefix?.replace(/^\/+|\/+$/g,"");return $?`${$}/`:null}function Sb(_,$){let g=v(_);try{let U=g.query(`SELECT artifact_uri, kind, hash, size_bytes, metadata_json + updated_at = excluded.updated_at`,[j,"wiki/README.md","Wiki",I.uri,I.hash??null,"active",JSON.stringify({artifact_key:I.key,provenance:QP(I)}),g,g]),oZ(_,j,"Wiki",I,vG(),g)}}import{createHash as rG}from"crypto";import{cpSync as MP,chmodSync as BP,existsSync as F$,lstatSync as cG,mkdirSync as sj,readdirSync as ZP,readFileSync as Ag,renameSync as pZ,rmSync as $N,writeFileSync as uG}from"fs";import{dirname as qP,join as L6,relative as eZ}from"path";function VP(_,$=_){if(!F$(_))return[];let D=cG(_);if(D.isFile())return[eZ($,_)||"."];if(!D.isDirectory())return[];return ZP(_).flatMap((g)=>VP(L6(_,g),$)).sort()}function xG(_,$){if($.length===0)return{sha256:null,bytes:0};let D=rG("sha256"),g=0;for(let U of $){let I=L6(_,U),j=Ag(I),N=rG("sha256").update(j).digest("hex");g+=j.byteLength,D.update(U),D.update("\x00"),D.update(N),D.update("\x00")}return{sha256:D.digest("hex"),bytes:g}}function aZ(_){if(!F$(_))return null;let $=JSON.parse(Ag(_,"utf8"));return Array.isArray($.items)?$.items.length:null}function sZ(_){if(!F$(_))return{exists:!1,integrity_check:null,table_counts:{}};let $=MS(_);try{let D=$.query("PRAGMA integrity_check").get(),g=D?Object.values(D)[0]??null:null,U=$.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name").all(),I={};for(let j of U){let N=`"${j.name.replaceAll('"','""')}"`,O=$.query(`SELECT COUNT(*) AS n FROM ${N}`).get();I[j.name]=O?.n??0}return{exists:!0,integrity_check:g,table_counts:I}}finally{$.close()}}function d_(_,$={}){let D=VP(_.home),g=xG(_.home,D),U=VP(_.artifactsDir),I=xG(_.artifactsDir,U),j=F$(_.knowledgeDbPath);return{path:_.home,exists:F$(_.home),file_count:D.length,total_bytes:g.bytes,tree_sha256:g.sha256,json_items:aZ(_.jsonStorePath),sqlite:$.includeSqlite===!1?{exists:j,integrity_check:null,table_counts:{}}:sZ(_.knowledgeDbPath),artifacts:{exists:F$(_.artifactsDir),file_count:U.length,total_bytes:I.bytes,tree_sha256:I.sha256},files:D}}function _b(_,$){if(!$.exists)return!0;if($.files.filter((g)=>g!=="config.json").length>0)return!1;if(!$.files.includes("config.json"))return!0;try{return JSON.stringify(JSON.parse(Ag(_.configPath,"utf8")))===JSON.stringify(ZD())}catch{return!1}}function FP(_,$){return _.file_count===$.file_count&&_.total_bytes===$.total_bytes&&_.tree_sha256===$.tree_sha256&&_.json_items===$.json_items&&_.sqlite.integrity_check===$.sqlite.integrity_check&&JSON.stringify(_.sqlite.table_counts)===JSON.stringify($.sqlite.table_counts)&&_.artifacts.file_count===$.artifacts.file_count&&_.artifacts.total_bytes===$.artifacts.total_bytes&&_.artifacts.tree_sha256===$.artifacts.tree_sha256}function _N(_){return _.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z")}function KP(_){if(Array.isArray(_))return`[${_.map(KP).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${KP(D)}`).join(",")}}`;return JSON.stringify(_)}function yG(_){return KP(_)}function TP(_){return typeof _.short_id==="string"&&_.short_id.trim().length>0?_.short_id:null}function h4(_){if(!F$(_))return{items:[]};let $=JSON.parse(Ag(_,"utf8"));if(!$||!Array.isArray($.items))throw Error(`Invalid knowledge JSON store shape at ${_}`);return{items:$.items}}function hG(_,$){let D=new Map(_.items.map((L)=>[L.id,L])),g=new Map;for(let L of _.items){let z=g.get(L.id);if(z&&z.item.id!==L.id);g.set(L.id,{item:L,keyKind:"id",source:"current"});let W=TP(L);if(W&&!g.has(W))g.set(W,{item:L,keyKind:"short_id",source:"current"})}let U=[],I=0,j=0,N=0,O=[];for(let L of $.items){let z=D.get(L.id);if(z){if(yG(z)===yG(L))I+=1;else j+=1,U.push({type:"id_conflict",id:L.id,legacy_title:L.title,current_title:z.title});continue}let W=[{key:L.id,keyKind:"id"},...TP(L)?[{key:TP(L),keyKind:"short_id"}]:[]],J=!1;for(let{key:P,keyKind:S}of W){let X=g.get(P);if(!X)continue;if(S==="id"&&X.keyKind==="id")j+=1,U.push({type:"id_conflict",id:P,legacy_id:L.id,current_id:X.item.id,legacy_title:L.title,current_title:X.item.title});else N+=1,U.push({type:"short_id_conflict",id:P,legacy_id:L.id,current_id:X.item.id,legacy_title:L.title,current_title:X.item.title});J=!0}if(J)continue;O.push(L);for(let{key:P,keyKind:S}of W)g.set(P,{item:L,keyKind:S,source:"legacy"})}let A={items:[..._.items,...O]};return{stats:{current_items:_.items.length,legacy_items:$.items.length,duplicate_ids_identical:I,duplicate_ids_conflicting:j,short_id_conflicts:N,stranded_items:O.length,merged_items:U.length===0?O.length:0,expected_total_items:_.items.length+O.length,final_items:null},conflicts:U,mergedStore:A}}function $b(_,$){let D=[...new Set(_)].sort(),g=(U)=>{if(U>=D.length)return $();return f$(D[U],()=>g(U+1),{createParent:!0})};return g(0)}function nG(_){let $=_.now??new Date,D=_.approveWrite!==!0,g=d_(_.legacy),U=d_(_.current),I={legacy_exists:g.exists,legacy_store_exists:F$(_.legacy.jsonStorePath),current_store_exists:F$(_.current.jsonStorePath),approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_backup_written:!1,no_conflicts:!1,final_count_matches_expected:!1},j=[];if(!g.exists||!I.legacy_store_exists)return{ok:!0,dry_run:D,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,legacy_before:g,current_before:U,backup_after:null,current_after:U,merge:{current_items:h4(_.current.jsonStorePath).items.length,legacy_items:0,duplicate_ids_identical:0,duplicate_ids_conflicting:0,short_id_conflicts:0,stranded_items:0,merged_items:0,expected_total_items:h4(_.current.jsonStorePath).items.length,final_items:U.json_items},conflicts:[],checks:{...I,no_conflicts:!0,final_count_matches_expected:!0},warnings:j,message:`No legacy knowledge JSON store found at ${_.legacy.jsonStorePath}`};let N=h4(_.current.jsonStorePath),O=h4(_.legacy.jsonStorePath),A=hG(N,O);if(I.no_conflicts=A.conflicts.length===0,A.conflicts.length>0)j.push("merge_conflicts_detected");if(!I.approval_present)j.push("write_approval_required");if(D||!I.approval_present||A.conflicts.length>0)return{ok:A.conflicts.length===0,dry_run:!0,approval_required:!I.approval_present,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.merge-backup-${_N($)}`,legacy_before:g,current_before:U,backup_after:null,current_after:null,merge:A.stats,conflicts:A.conflicts,checks:I,warnings:j,message:A.conflicts.length===0?`Dry run: would merge ${A.stats.stranded_items} legacy item(s) into ${_.current.jsonStorePath}`:`Refusing legacy merge with ${A.conflicts.length} conflict(s)`};return $b([_.current.jsonStorePath,_.legacy.jsonStorePath],()=>{let L=h4(_.current.jsonStorePath),z=h4(_.legacy.jsonStorePath),W=hG(L,z);if(I.no_conflicts=W.conflicts.length===0,W.conflicts.length>0)return{ok:!1,dry_run:!0,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,legacy_before:d_(_.legacy),current_before:d_(_.current),backup_after:null,current_after:null,merge:W.stats,conflicts:W.conflicts,checks:I,warnings:[...j,"merge_conflicts_detected_after_lock"],message:`Refusing legacy merge with ${W.conflicts.length} conflict(s)`};if(W.stats.stranded_items===0)return W.stats.final_items=L.items.length,I.final_count_matches_expected=L.items.length===W.stats.expected_total_items,{ok:I.no_conflicts&&I.final_count_matches_expected,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,legacy_before:d_(_.legacy),current_before:d_(_.current),backup_after:null,current_after:d_(_.current),merge:W.stats,conflicts:[],checks:I,warnings:j,message:`Legacy merge already up to date for ${_.current.jsonStorePath}`};let J=`${_.legacy.home}.merge-backup-${_N($)}`;sj(qP(J),{recursive:!0}),MP(_.legacy.home,J,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});let P=U$(J),S=d_(P);if(I.legacy_backup_written=FP(d_(_.legacy),S),!I.legacy_backup_written)throw Error(`Legacy knowledge merge backup verification failed: ${J}`);t$(_.current.jsonStorePath,W.mergedStore);let X=h4(_.current.jsonStorePath);W.stats.final_items=X.items.length,I.final_count_matches_expected=X.items.length===W.stats.expected_total_items;let R=d_(_.current),G=I.legacy_backup_written&&I.no_conflicts&&I.final_count_matches_expected;return{ok:G,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:J,legacy_before:g,current_before:U,backup_after:S,current_after:R,merge:W.stats,conflicts:[],checks:I,warnings:j,message:G?`Merged ${W.stats.merged_items} legacy item(s) into ${_.current.jsonStorePath}`:`Merged legacy knowledge store, but verification failed for ${_.current.jsonStorePath}`}})}function Db(_){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,_)}function bP(_){return _ instanceof Error&&/\b(EBUSY|EPERM)\b/.test(_.message)}function Ub(_){let $;for(let D=0;D<8;D+=1)try{$N(_,{recursive:!0,force:!1});return}catch(g){if($=g,!bP(g))throw g;Db(50*(D+1))}throw $}function dG(_){if(!F$(_))return;let $=cG(_);if(BP(_,$.isDirectory()?448:384),!$.isDirectory())return;for(let D of ZP(_))dG(L6(_,D))}function gb(_){return _==="TOMBSTONE.md"||_==="migration.json"||_==="knowledge.db"||_==="knowledge.db-shm"||_==="knowledge.db-wal"||_==="knowledge.db-journal"}function Ib(_){for(let $ of ZP(_)){if($==="TOMBSTONE.md"||$==="migration.json")continue;try{$N(L6(_,$),{recursive:!0,force:!1})}catch(D){if(!bP(D)||!$.startsWith("knowledge.db"))throw D}}}function jb(_,$){try{pZ(_,$);return}catch(D){MP(_,$,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});try{Ub(_)}catch(g){if(bP(g)){Ib(_);return}throw $N($,{recursive:!0,force:!0}),g}if(D instanceof Error&&D.message.includes("EXDEV"))return}}function Nb(_,$,D){if(!$.exists)return!1;if(!$.files.includes("TOMBSTONE.md")||!$.files.includes("migration.json"))return!1;if($.files.some((g)=>!gb(g)))return!1;try{let g=JSON.parse(Ag(L6(_.home,"migration.json"),"utf8"));return g.new_path===D&&typeof g.backup_path==="string"}catch{return!1}}function mG(_){let $=_.now??new Date,D=_.approveWrite!==!0,g=d_(_.current),U=_b(_.current,g),I=_.approveWrite===!0&&Boolean(_.approvedBy)&&(!g.exists||U),j=d_(_.legacy,{includeSqlite:!I}),N={legacy_exists:j.exists,current_absent_or_default_scaffold:!g.exists||U,approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_is_tombstone:!1,backup_matches_legacy:!1,migrated_matches_backup:!1,tombstone_written:!1},O=[];if(!j.exists)return{ok:!0,dry_run:D,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,tombstone_path:null,legacy_before:j,current_before:g,backup_after:null,current_after:null,checks:N,warnings:O,message:`No legacy knowledge workspace found at ${_.legacy.home}`};if(N.legacy_is_tombstone=Nb(_.legacy,j,_.current.home),N.legacy_is_tombstone)return{ok:!0,dry_run:D,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:null,tombstone_path:L6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:g,backup_after:null,current_after:g,checks:{...N,tombstone_written:!0},warnings:O,message:`Legacy knowledge workspace already migrated to ${_.current.home}`};if(!N.current_absent_or_default_scaffold)O.push("current_workspace_contains_data");if(!N.approval_present)O.push("write_approval_required");if(D||!N.current_absent_or_default_scaffold||!N.approval_present)return{ok:N.current_absent_or_default_scaffold,dry_run:!0,approval_required:!0,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.backup-${_N($)}`,tombstone_path:L6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:g,backup_after:null,current_after:null,checks:N,warnings:O,message:N.current_absent_or_default_scaffold?`Dry run: would migrate ${_.legacy.home} to ${_.current.home}`:`Cannot migrate while ${_.current.home} contains data`};let A=`${_.legacy.home}.backup-${_N($)}`;sj(qP(_.current.home),{recursive:!0}),sj(qP(A),{recursive:!0}),MP(_.legacy.home,A,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0}),dG(A);let L=U$(A),z=d_(L,{includeSqlite:!1});if(N.backup_matches_legacy=FP(j,z),!N.backup_matches_legacy)throw Error(`Legacy knowledge backup verification failed: ${A}`);if(g.exists&&U)$N(_.current.home,{recursive:!0,force:!0});jb(_.legacy.home,_.current.home);let W=d_(_.current,{includeSqlite:!1});N.migrated_matches_backup=FP(z,W);let J=d_(L),P=d_(_.current),S={...J,path:_.legacy.home};sj(_.legacy.home,{recursive:!0});let X=L6(_.legacy.home,"TOMBSTONE.md");uG(X,["# Migrated OpenKnowledge Workspace","",`Migrated at: ${$.toISOString()}`,`Approved by: ${_.approvedBy}`,`New path: ${_.current.home}`,`Backup path: ${A}`,"","This directory is a diagnostic tombstone only. OpenKnowledge reads and writes the canonical .hasna/knowledge workspace.",""].join(` +`),{mode:384}),BP(X,384);let R=L6(_.legacy.home,"migration.json");uG(R,`${JSON.stringify({migrated_at:$.toISOString(),approved_by:_.approvedBy,new_path:_.current.home,backup_path:A,legacy_before:S,backup_after:J,current_after:P},null,2)} +`,{mode:384}),BP(R,384),N.tombstone_written=F$(X);let G=N.backup_matches_legacy&&N.migrated_matches_backup&&N.tombstone_written;return{ok:G,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:A,tombstone_path:X,legacy_before:S,current_before:g,backup_after:J,current_after:P,checks:N,warnings:O,message:G?`Migrated legacy knowledge workspace to ${_.current.home}`:`Migrated legacy knowledge workspace, but verification failed for ${_.current.home}`}}function Lb(_){let $=j8(_);if(W_(iG($,"knowledge.db"))||W_(iG($,"config.json")))return U0($);return U0(U$(MN($)).home)}function HP(_){return`${Ab()}:${Jg("sha256").update(_.home).digest("hex").slice(0,12)}`}function vP(_){return`'${_.replace(/'/g,"'\\''")}'`}function Jb(_){return["knowledge",..._].map(vP).join(" ")}function lG(_,$){return`cd ${vP(_)} && knowledge ${$.map(vP).join(" ")}`}function N8(_){return!_||_==="local"||_==="localhost"}function Lg(_,$){return{source:_.source,adapter:_.adapter,project_root:$,project_root_source:_.project_root_source,workspace_root:_.workspace_root,workspace_root_source:_.workspace_root_source,open_files_root:_.open_files_root,open_files_root_source:_.open_files_root_source,trust_status:_.trust_status,auth_status:_.auth_status,current:_.current,primary:_.primary,diagnostics:_.diagnostics,repair_hints:_.repair_hints,evidence:_.evidence,cacheability:_.cacheability,warnings:_.warnings}}function kP(_){return{source:_.source,adapter:_.adapter,target:_.target,route:_.route,target_kind:_.targetKind,confidence:_.confidence,evidence:_.evidence,cacheability:_.cacheability}}function Pb(_){try{let $=JSON.parse(_);return Array.isArray($)?$.filter((D)=>typeof D==="string"):[]}catch{return[]}}function Pg(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function k_(_){return typeof _==="string"&&_.length>0?_:null}function zb(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function DN(_){return typeof _==="boolean"?_:null}function Sb(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function E8(_,$,D){let g=Pg(_),U=k_(g.observed_at)??k_($[`${D}_observed_at`]),I=k_(g.source_authority)??k_($[`${D}_source_authority`]);if(!U||!I)return null;return{observed_at:U,verified_at:k_(g.verified_at),expires_at:k_(g.expires_at)??k_($[`${D}_expires_at`]),ttl_ms:zb(g.ttl_ms),source_authority:I,confidence:k_(g.confidence)??(D==="route"?k_($.route_confidence):null),cacheable:DN(g.cacheable)??DN($[`${D}_cacheable`])??!1,stale:DN(g.stale)??DN($[`${D}_stale`])??!1,reasons:Sb(g.reasons)}}function Wb(_,$){return _.machine_id===$||_.hostname===$||_.ssh_target===$||_.tailscale_dns===$||Pb(_.tailscale_ips_json).includes($)}function tG(_,$){return d2(_).find((D)=>Wb(D,$))??null}function O8(_){return Pg(c4(_.metadata_json).resolver_evidence)}function zg(_){return Pg(c4(_.capabilities_json).resolver)}function A8(_){let $=zg(_),D=k_($.route_kind);if(D==="local"||D==="lan"||D==="tailscale"||D==="ssh"||D==="unknown")return D;if(_.tailscale_dns&&_.ssh_target===_.tailscale_dns)return"tailscale";return _.ssh_target?"ssh":"unknown"}function Xb(_){let $=zg(_),D=k_($.route_target_kind);if(D==="local"||D==="lan"||D==="tailscale"||D==="ssh"||D==="unknown")return D;return A8(_)}function Gb(_){return k_(zg(_).route_confidence)??"medium"}function oG(_,$,D){let g=O8(_),U=Pg(g.route),I=zg(_);return{target:_.ssh_target??_.tailscale_dns??_.hostname??_.machine_id,route:A8(_),targetKind:Xb(_),confidence:Gb(_),source:"registry",adapter:D.adapter,evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,route:U},cacheability:E8(U.cacheability,I,"route")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_route_fallback"])]}}function pG(_,$,D){if(!_.workspace_home)return null;let g=O8(_),U=Pg(g.workspace),I=zg(_);return{ok:!0,source:"registry",adapter:D.adapter,requested_machine_id:$,machine_id:_.machine_id,project_id:k_(U.project_id)??D.project_id,repo_name:k_(U.repo_name)??D.repo_name,project_root:_.workspace_home,project_root_source:k_(I.project_root_source)??"registry",workspace_root:k_(U.workspace_root),workspace_root_source:k_(I.workspace_root_source)??"registry",open_files_root:k_(U.open_files_root),open_files_root_source:k_(I.open_files_root_source)??"registry",trust_status:k_(I.trust_status)??"unknown",auth_status:k_(I.auth_status)??"unknown",current:!1,primary:!1,diagnostics:[],repair_hints:[],evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,workspace:U},cacheability:E8(U.cacheability,I,"workspace")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_workspace_fallback"])]}}function eG(_){if(!_)return null;let $=_.diagnostics.filter((g)=>g.severity!=="ok"),D=_.repair_hints[0];if(!$.length&&!_.warnings.length&&!D)return null;return[$.length?`workspace diagnostics: ${$.map((g)=>`${g.id}=${g.status}`).join(", ")}`:null,_.warnings.length?`warnings: ${_.warnings.join(", ")}`:null,D?`repair: ${D.shell_command}`:null].filter(Boolean).join("; ")}function UN(_){return{id:_.id,reason:_.reason,command:["knowledge",..._.args],shell_command:Jb(_.args)}}function gN(_,$){let D=f(_);try{return Number(D.query($).get()?.count??0)}finally{D.close()}}function Rb(_,$){let D=gN(_,"SELECT COUNT(*) AS count FROM sources WHERE uri LIKE 'open-files://%'"),g=gN(_,"SELECT COUNT(*) AS count FROM sources WHERE metadata_json LIKE '%open-files://%' OR metadata_json LIKE '%source_ref%'"),U=gN(_,"SELECT COUNT(*) AS count FROM source_revisions WHERE extracted_text_uri IS NOT NULL"),I=gN(_,["SELECT COUNT(*) AS count FROM sources","WHERE metadata_json LIKE '%raw_bytes%'","OR metadata_json LIKE '%raw_content%'","OR metadata_json LIKE '%content_base64%'","OR metadata_json LIKE '%source_bytes%'"].join(" ")),j=I===0;return{ok:j,source_of_truth:"open-files",configured_root:$?.open_files_root??null,configured_root_source:$?.open_files_root_source??null,source_refs:{open_files:D,metadata_mentions:g},extracted_text_artifacts:U,raw_source_bytes_owned_by:"open-files",raw_payload_sentinel_hits:I,message:j?`${D} open-files source ref(s); raw source bytes remain owned by open-files`:`${I} raw source payload metadata sentinel(s) found`}}var Yb=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body","body_bytes"]);function fP(_,$=0){if($>8)return!1;if(!_||typeof _!=="object")return!1;if(Array.isArray(_))return _.some((D)=>fP(D,$+1));for(let[D,g]of Object.entries(_)){if(Yb.has(D.toLowerCase()))return!0;if(fP(g,$+1))return!0}return!1}function c4(_){try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function aG(_,$=20,D=200){if(!Number.isFinite(_)||_<=0)return $;return Math.min(Math.floor(_),D)}function Qb(_,$=220){let D=_??"";return D.length>$?`${D.slice(0,$)}...`:D}function S$(_,$=["metadata_json"]){return _.map((D)=>{let g={...D};for(let U of $){let I=g[U];if(typeof I==="string"){let j=U.endsWith("_json")?U.slice(0,-5):U;g[j]=c4(I),delete g[U]}}return g})}function IN(_){if(typeof _!=="string")return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function wP(_){if(typeof _!=="string")return{};return c4(_)}function Tb(_){let $={..._};return $.source_refs=IN($.source_refs_json),$.evidence_refs=IN($.evidence_refs_json),$.requires_approval=$.requires_approval===1||$.requires_approval===!0,$.checks=wP($.checks_json),$.metadata=wP($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.checks_json,delete $.metadata_json,$}function Bb(_){let $={..._};return $.source_refs=IN($.source_refs_json),$.evidence_refs=IN($.evidence_refs_json),$.metadata=wP($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.metadata_json,$}function p_(_,$,D=[]){return _.query($).all(...D)}function qb(_){if(!W_(_))return{exists:!1,read_error:null,items:[]};try{let $=JSON.parse(Ob(_,"utf8"));if(!$||!Array.isArray($.items))return{exists:!0,read_error:"invalid_store_shape",items:[]};return{exists:!0,read_error:null,items:$.items}}catch($){return{exists:!0,read_error:$ instanceof Error?$.message:String($),items:[]}}}function sG(_){return{id:_.id,short_id:_.short_id??null,title:_.title,content_preview:Qb(_.content),url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:_.archived===!0,created_at:_.created_at,updated_at:_.updated_at}}function _8(){return{schema_version:0,sources:0,source_revisions:0,chunks:0,wiki_pages:0,citations:0,indexes:0,runs:0,run_events:0,redaction_findings:0,audit_events:0,approval_gates:0,storage_objects:0,embeddings:0,vector_entries:0,reindex_queue:0,knowledge_machines:0,sync_snapshots:0,sync_changes:0,sync_conflicts:0,sync_table_clocks:0,sync_imports:0,promotion_candidates:0,durable_records:0}}function L8(_,$,D=!1){return{query:_,limit:$,offset:0,mode:{keyword:!0,catalog:!0,semantic:D},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:0,catalog_results:0,semantic_results:0,merged_results:0},warnings:["knowledge_db_missing"],results:[]}}function Vb(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function Fb(_,$,D=!1){let g=L8(_,$,D);return{query:_,normalized_query:Vb(_),created_at:new Date().toISOString(),mode:g.mode,warnings:g.warnings,search_counts:g.counts,results:[],citations:[],excerpts:[],graph:{citations:[],backlinks:[]},notes:{permissions:[],freshness:[]}}}function CP(_,$,D){let g=D??$.jsonStorePath;if(W_(g))return g;if(_==="global"){let U=MD();if(W_(U))return U}return g}function Kb(_){let $=JSON.stringify(_);return Math.max(1,Math.ceil($.length/4))}function rP(_,$){let D=(_??"").normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function $8(_,$,D){let g=u_(rP(_,D),$);return{text:g.text,redactions:g.findings.length}}function D8(_,$,D){let g=_.now??new Date,U=_.source??"search",I=_.purpose??(U==="loops"||U==="runs"?"proposal":"agent_context"),j=(_.query??_.topic??$.query).normalize("NFKC").trim().replace(/\s+/g," "),N=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),O=Math.max(500,Math.min(_.maxTokens??6000,1e5)),A=0,L=$.citations.slice(0,Math.max(N*2,N)).map((G,V)=>{let Q=$8(G.quote,D,V<3?220:140);A+=Q.redactions;let T=G.source_ref??G.source_uri??G.artifact_path??G.artifact_uri??G.id;return{id:`cite_${Jg("sha256").update(`${G.id}\x00${T}`).digest("hex").slice(0,12)}`,kind:G.artifact_uri||G.artifact_path?"artifact":"source",ref:T,source_ref:G.source_ref,source_uri:G.source_uri,artifact_uri:G.artifact_uri,artifact_path:G.artifact_path,run_id:null,run_event_id:null,revision:G.revision,hash:G.hash,chunk_id:G.chunk_id,offsets:{start:G.start_offset,end:G.end_offset},quote_preview:Q.text}}),z=new Map($.citations.map((G,V)=>[G.id,L[V]])),W=$.excerpts.slice(0,Math.max(N*2,N)).map((G)=>{let V=$.results.find((B)=>B.id===G.result_id),Q=G.citation_id?z.get(G.citation_id):void 0,T=$8(G.text,D,520);return A+=T.redactions,{id:`ev_${Jg("sha256").update(`${G.kind}\x00${G.result_id}\x00${G.citation_id??""}`).digest("hex").slice(0,14)}`,kind:G.kind,title:rP(V?.title??Q?.ref??G.kind,100),text_preview:T.text,score:Number(G.score.toFixed(6)),citation_ids:Q?[Q.id]:[],provenance:{source:U,record_ref:`${G.kind}:${G.result_id}`,created_at:$.created_at,updated_at:null,metadata_keys:[]}}}).sort((G,V)=>V.score-G.score||G.id.localeCompare(V.id)).slice(0,N),J=new Set(W.flatMap((G)=>G.citation_ids)),P=L.filter((G)=>J.has(G.id)),S=Array.from(new Set($.warnings)),X=`ctx_${Jg("sha256").update([U,I,j,S.join(","),W.map((G)=>G.id).join(",")].join("\x00")).digest("hex").slice(0,20)}`,R={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:g.toISOString(),source:U,purpose:I,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:X,budgets:{max_tokens:O,estimated_tokens:0,max_items:N,items_included:W.length,items_available:$.excerpts.length,items_truncated:Math.max(0,$.excerpts.length-W.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:A,reminders:["This pack is read-only and performs no durable writes.","Legacy JSON note evidence is bounded and redacted before inclusion."]},citations:P,evidence:W,duplicate_candidates:[],outline:{title:j?`Knowledge context: ${rP(j,80)}`:"Knowledge context",bullets:W.length>0?W.slice(0,5).map((G)=>`${G.id}: ${G.title}`):["No matching bounded evidence was found."],evidence_ids:W.slice(0,8).map((G)=>G.id),duplicate_candidate_ids:[],next_actions:["Use evidence_ids and citation_ids in prompts instead of raw excerpts when possible.","Inspect cited refs only if the bounded preview is insufficient.","Use knowledge build/file-answer only with explicit approval for durable writes."]},warnings:S,message:`${W.length} bounded evidence item(s), estimated under ${O} token(s)`};return R.budgets.estimated_tokens=Kb(R),R.budgets.token_budget_exceeded=R.budgets.estimated_tokens>O,R.message=`${R.evidence.length} bounded evidence item(s), estimated ${R.budgets.estimated_tokens}/${O} token(s)`,R}function Mb(){return{schema_version:0,chunks:0,vector_entries:0,missing_embeddings:0,queued:{},stale_revisions:0}}function Zb(){return{total_embeddings:0,total_vector_entries:0,indexes:[]}}function bb(_){return{ok:!0,scope:_.scope,workspace_home:_.workspaceHome,sqlite_schema_version:0,local_machine_id:_.localMachineId??null,machines:{total:0,rows:[]},snapshots:{total:0,latest:null},changes:{total:0,by_operation:[]},clocks:{total:0,rows:[]},imports:{total:0,latest:null},conflicts:{total:0,by_status:[],open:0},table_counts:{},message:"0 machine(s), 0 open sync conflict(s)"}}function U8(_){let $=_.now??new Date,D=_.source??"search",g=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=(_.query??_.topic??"").normalize("NFKC").trim().replace(/\s+/g," "),I=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),j=Math.max(500,Math.min(_.maxTokens??6000,1e5)),N=`ctx_${Jg("sha256").update(["empty",D,g,U,_.topic??"",_.since??""].join("\x00")).digest("hex").slice(0,20)}`;return{ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:D,purpose:g,query:U,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:N,budgets:{max_tokens:j,estimated_tokens:0,max_items:I,items_included:0,items_available:0,items_truncated:0,token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:0,reminders:["This pack is read-only and performs no durable writes.","No knowledge.db exists for this scope yet."]},citations:[],evidence:[],duplicate_candidates:[],outline:{title:U?`Context for ${U}`:"Knowledge context",bullets:[],evidence_ids:[],duplicate_candidate_ids:[],next_actions:[]},warnings:["knowledge_db_missing"],message:`0 bounded evidence item(s), estimated 0/${j} token(s)`}}function uP(_){let $=_.artifact_store.s3?.prefix?.replace(/^\/+|\/+$/g,"");return $?`${$}/`:null}function Hb(_,$){let D=f(_);try{let g=D.query(`SELECT artifact_uri, kind, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all(),D=new Map,I=0,j=0,N=0,O=0,A=0,L=0,z=0,W=0,J=0,P=0,S=0,X=0,G=new Map,R=[],K=[],Q=[],T=[],q=$.artifact_store.uri_prefix,V=b3($);for(let G_ of U){if(D.set(G_.kind,(D.get(G_.kind)??0)+1),G_.hash?.startsWith("sha256:"))I+=1;if(typeof G_.size_bytes==="number"&&G_.size_bytes>=0)j+=1,N+=G_.size_bytes;if(G_.artifact_uri.startsWith(q))O+=1;else if(R.length<5)R.push(G_.artifact_uri);let H_=c4(G_.metadata_json);if(F3(H_))z+=1;let g0=typeof H_.key==="string"?H_.key:null;if(!g0)A+=1;else if(V&&g0.startsWith(V)){if(L+=1,K.length<5)K.push(g0)}let Lz=typeof H_.artifact_modified_at==="string"?H_.artifact_modified_at:null;if(Lz)if(Number.isNaN(Date.parse(Lz))){if(J+=1,Q.length<5)Q.push(G_.artifact_uri)}else W+=1;let Vg=H_.provenance&&typeof H_.provenance==="object"&&!Array.isArray(H_.provenance)?H_.provenance:null;if(Vg){P+=1;let qN=typeof Vg.artifact_key==="string"?Vg.artifact_key:null,Jz=typeof Vg.generated_from==="string"?Vg.generated_from:"unknown";if(G.set(Jz,(G.get(Jz)??0)+1),qN){if(S+=1,g0&&qN!==g0){if(X+=1,T.length<5)T.push(`${G_.artifact_uri}:provenance.artifact_key=${qN}:key=${g0}`)}}else if(T.length<5)T.push(`${G_.artifact_uri}:missing_provenance_artifact_key`)}else if(T.length<5)T.push(`${G_.artifact_uri}:missing_provenance`)}let Z=U.length-I,e=U.length-j,D_=U.length-W-J,I_=U.length-P,J_=P-S,a=U.length-O,r_=[Z>0?`artifact_manifest_missing_hash:${Z}`:null,e>0?`artifact_manifest_missing_size:${e}`:null,A>0?`artifact_manifest_missing_key:${A}`:null,a>0?`artifact_manifest_uri_prefix_mismatch:${a}`:null,L>0?`artifact_manifest_s3_key_contains_storage_prefix:${L}`:null,J>0?`artifact_manifest_invalid_modified_at:${J}`:null,I_>0?`artifact_manifest_missing_provenance:${I_}`:null,J_>0?`artifact_manifest_missing_provenance_artifact_key:${J_}`:null,X>0?`artifact_manifest_provenance_key_mismatch:${X}`:null,z>0?`artifact_manifest_raw_payload_sentinels:${z}`:null].filter((G_)=>Boolean(G_)),K_=r_.length===0;return{ok:K_,read_only:!0,storage_type:$.storage_type,artifact_uri_prefix:q,s3:$.artifact_store.s3,artifacts:{total:U.length,by_kind:[...D.entries()].map(([G_,H_])=>({kind:G_,count:H_})).sort((G_,H_)=>G_.kind.localeCompare(H_.kind)),with_hash:I,missing_hash:Z,with_size:j,missing_size:e,total_size_bytes:N},modified_time:{with_modified_at:W,missing_modified_at:D_,invalid_modified_at:J,examples:Q},provenance:{with_provenance:P,missing_provenance:I_,with_artifact_key:S,missing_artifact_key:J_,artifact_key_mismatches:X,generated_from:[...G.entries()].map(([G_,H_])=>({value:G_,count:H_})).sort((G_,H_)=>G_.value.localeCompare(H_.value)),examples:T},uri_prefix:{matching:O,mismatched:a,examples:R},keys:{with_key:U.length-A,missing_key:A,prefixed_with_storage_prefix:L,prefixed_examples:K},sync_manifest:{copied_by_sync:!0,generated_artifacts_only:!0,includes_raw_source_bytes:!1,hash_algorithm:"sha256",portable_keys:L===0&&A===0,tracks_modified_time:W>0&&J===0,preserves_provenance:I_===0&&J_===0&&X===0},raw_payload_sentinel_hits:z,warnings:r_,message:K_?`${U.length} generated artifact manifest row(s) ready for ${$.storage_type} sync`:`Generated artifact manifest needs attention: ${r_.join(", ")}`}}finally{g.close()}}function Wb(_,$){let g=b3($);if(!g)return[];let U=v(_);try{let D=U.query(`SELECT id, artifact_uri, kind, hash, size_bytes, metadata_json + ORDER BY artifact_uri ASC`).all(),U=new Map,I=0,j=0,N=0,O=0,A=0,L=0,z=0,W=0,J=0,P=0,S=0,X=0,R=new Map,G=[],V=[],Q=[],T=[],B=$.artifact_store.uri_prefix,F=uP($);for(let R_ of g){if(U.set(R_.kind,(U.get(R_.kind)??0)+1),R_.hash?.startsWith("sha256:"))I+=1;if(typeof R_.size_bytes==="number"&&R_.size_bytes>=0)j+=1,N+=R_.size_bytes;if(R_.artifact_uri.startsWith(B))O+=1;else if(G.length<5)G.push(R_.artifact_uri);let H_=c4(R_.metadata_json);if(fP(H_))z+=1;let D0=typeof H_.key==="string"?H_.key:null;if(!D0)A+=1;else if(F&&D0.startsWith(F)){if(L+=1,V.length<5)V.push(D0)}let Rz=typeof H_.artifact_modified_at==="string"?H_.artifact_modified_at:null;if(Rz)if(Number.isNaN(Date.parse(Rz))){if(J+=1,Q.length<5)Q.push(R_.artifact_uri)}else W+=1;let KD=H_.provenance&&typeof H_.provenance==="object"&&!Array.isArray(H_.provenance)?H_.provenance:null;if(KD){P+=1;let qN=typeof KD.artifact_key==="string"?KD.artifact_key:null,Yz=typeof KD.generated_from==="string"?KD.generated_from:"unknown";if(R.set(Yz,(R.get(Yz)??0)+1),qN){if(S+=1,D0&&qN!==D0){if(X+=1,T.length<5)T.push(`${R_.artifact_uri}:provenance.artifact_key=${qN}:key=${D0}`)}}else if(T.length<5)T.push(`${R_.artifact_uri}:missing_provenance_artifact_key`)}else if(T.length<5)T.push(`${R_.artifact_uri}:missing_provenance`)}let Z=g.length-I,e=g.length-j,U_=g.length-W-J,I_=g.length-P,J_=P-S,a=g.length-O,v_=[Z>0?`artifact_manifest_missing_hash:${Z}`:null,e>0?`artifact_manifest_missing_size:${e}`:null,A>0?`artifact_manifest_missing_key:${A}`:null,a>0?`artifact_manifest_uri_prefix_mismatch:${a}`:null,L>0?`artifact_manifest_s3_key_contains_storage_prefix:${L}`:null,J>0?`artifact_manifest_invalid_modified_at:${J}`:null,I_>0?`artifact_manifest_missing_provenance:${I_}`:null,J_>0?`artifact_manifest_missing_provenance_artifact_key:${J_}`:null,X>0?`artifact_manifest_provenance_key_mismatch:${X}`:null,z>0?`artifact_manifest_raw_payload_sentinels:${z}`:null].filter((R_)=>Boolean(R_)),V_=v_.length===0;return{ok:V_,read_only:!0,storage_type:$.storage_type,artifact_uri_prefix:B,s3:$.artifact_store.s3,artifacts:{total:g.length,by_kind:[...U.entries()].map(([R_,H_])=>({kind:R_,count:H_})).sort((R_,H_)=>R_.kind.localeCompare(H_.kind)),with_hash:I,missing_hash:Z,with_size:j,missing_size:e,total_size_bytes:N},modified_time:{with_modified_at:W,missing_modified_at:U_,invalid_modified_at:J,examples:Q},provenance:{with_provenance:P,missing_provenance:I_,with_artifact_key:S,missing_artifact_key:J_,artifact_key_mismatches:X,generated_from:[...R.entries()].map(([R_,H_])=>({value:R_,count:H_})).sort((R_,H_)=>R_.value.localeCompare(H_.value)),examples:T},uri_prefix:{matching:O,mismatched:a,examples:G},keys:{with_key:g.length-A,missing_key:A,prefixed_with_storage_prefix:L,prefixed_examples:V},sync_manifest:{copied_by_sync:!0,generated_artifacts_only:!0,includes_raw_source_bytes:!1,hash_algorithm:"sha256",portable_keys:L===0&&A===0,tracks_modified_time:W>0&&J===0,preserves_provenance:I_===0&&J_===0&&X===0},raw_payload_sentinel_hits:z,warnings:v_,message:V_?`${g.length} generated artifact manifest row(s) ready for ${$.storage_type} sync`:`Generated artifact manifest needs attention: ${v_.join(", ")}`}}finally{D.close()}}function kb(_,$){let D=uP($);if(!D)return[];let g=f(_);try{let U=g.query(`SELECT id, artifact_uri, kind, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all(),I=[];for(let j of D){let N=c4(j.metadata_json),O=typeof N.key==="string"?N.key:null;if(!O?.startsWith(g))continue;let A=O.slice(g.length);if(!A)continue;I.push({id:j.id,artifact_uri:j.artifact_uri,kind:j.kind,current_key:O,repaired_key:w$(A),hash:j.hash,size_bytes:j.size_bytes})}return I}finally{U.close()}}function Xb(_){let $=["--scope",_.scope,"--json"],g=_.tables?.length?["--tables",_.tables.join(",")]:[],U=[gN({id:"sync_status",reason:"Inspect local sync registry, clocks, snapshots, and conflicts.",args:["sync","status",...$]})];if(_.machine&&!tG(_.machine))U.push(gN({id:"sync_dry_run_remote",reason:"Preview remote machine sync before changing either workspace.",args:["sync","dry-run","--machine",_.machine,..._.peerWorkspace?["--peer-workspace",_.peerWorkspace]:[],...g,...$]}));else if(_.peerWorkspace)U.push(gN({id:"sync_dry_run_peer",reason:"Preview local peer sync before changing either workspace.",args:["sync","dry-run","--peer-workspace",_.peerWorkspace,...g,...$]}));for(let D of _.resolvedWorkspace?.repair_hints??[])U.push({id:D.id,reason:D.reason,command:D.command,shell_command:D.shell_command});if(_.openConflicts>0)U.push(gN({id:"sync_conflicts",reason:"Review open conflicts before relying on bidirectional sync.",args:["sync","conflicts",...$]}));return U}function Rb(){let _=process.env.KNOWLEDGE_SSH_COMMAND?.trim()||"ssh",$=process.env.KNOWLEDGE_SSH_COMMAND_ARGS_JSON;if(!$)return{command:_,argsPrefix:[]};let g;try{g=JSON.parse($)}catch(U){throw Error(`KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array: ${U instanceof Error?U.message:String(U)}`)}if(!Array.isArray(g)||!g.every((U)=>typeof U==="string"))throw Error("KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array.");return{command:_,argsPrefix:g}}function mG(_,$,g,U){let D=Rb(),I=iZ(D.command,[...D.argsPrefix,U.target,$],{encoding:"utf8",env:process.env,input:g,maxBuffer:67108864});if((I.status??1)!==0){let j=U.source==="open-machines"?` via ${U.route??"resolved"}:${U.target}`:"";throw Error(`ssh ${_}${j} failed: ${(I.stderr||I.stdout||String(I.status)).trim()}`)}return I.stdout||""}function iG(_,$,g){try{return JSON.parse(g)}catch(U){let D=g.trim().slice(0,240);throw Error(`Remote knowledge ${$} on ${_} did not return JSON. Install a compatible @hasna/knowledge CLI on the remote machine. Output: ${D||String(U)}`)}}function Gb(_,$){if(typeof $!=="object"||$===null||!("format"in $)||$.format!=="knowledge-sync-bundle")throw Error(`Remote knowledge sync export on ${_} did not return a knowledge sync bundle. Install @hasna/knowledge 0.2.32 or newer on the remote machine.`);let{protocol_version:g,min_protocol_version:U}=$;if(typeof g!=="number"||typeof U!=="number"||gV6)throw Error(`Remote knowledge sync export on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function Yb(_,$){if(typeof $!=="object"||$===null||!("ok"in $)||!("target"in $)||!("tables"in $)||!("artifacts"in $)||!("conflicts_created"in $))throw Error(`Remote knowledge sync import on ${_} did not return a sync import result. Install @hasna/knowledge 0.2.32 or newer on the remote machine.`);let{protocol_version:g,min_protocol_version:U}=$;if(typeof g!=="number"||typeof U!=="number"||gV6)throw Error(`Remote knowledge sync import on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function Qb(_){if(!_)return;let $=_.trim().toLowerCase();if($==="local"||$==="offline")return"local";if($==="hosted"||$==="remote"||$==="knowledge.md")return"hosted";throw Error("Invalid setup mode. Use hosted or local.")}class sG{options;ensuredWorkspace;cachedConfig;constructor(_={}){this.options=_}get scope(){return this.options.scope??"global"}get workspace(){return this.ensuredWorkspace??bU(this.options.scope,this.options.cwd)}ensureWorkspace(){if(!this.ensuredWorkspace)this.ensuredWorkspace=D0(this.workspace.home);return this.ensuredWorkspace}jsonStorePath(){return this.ensureWorkspace().jsonStorePath}itemStore(){let _=this.ensureWorkspace();return cU({storePath:_.jsonStorePath,storePathOverridden:!1})}async listItems(){return this.itemStore().listAll()}async getItem(_){return this.itemStore().get(_)}async createItem(_){return this.itemStore().create(_)}async updateItem(_,$){return this.itemStore().update(_,$)}async deleteItem(_){return this.itemStore().delete(_)}async deleteItems(_){return this.itemStore().deleteMany(_)}async resolveInventory(_={}){if(this.isApiMode())return this.cloudInventory(_);return this.inventory(_)}config(_={}){let $=_.ensure?this.ensureWorkspace():this.workspace;if(!this.cachedConfig||_.ensure||W_($.configPath))this.cachedConfig=W_($.configPath)?ZN($.configPath):Mg();return this.cachedConfig}safetyPolicy(){return fS(this.config(),this.workspace)}artifactStore(){return DE(this.config(),this.ensureWorkspace())}storageContract(){return mU(this.config(),this.workspace,this.scope)}validateStorage(){return jE(this.config(),this.workspace)}assertStorageValid(_){let $=this.validateStorage();if(!$.ok)throw Error(`Storage contract invalid before ${_}: ${$.errors.join("; ")}`)}migrateLegacyPath(_={}){let $=this.workspace,g=MN(this.options.scope,this.options.cwd),U=kG({scope:this.scope,current:$,legacy:g,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!U.dry_run&&U.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return U}mergeLegacyPath(_={}){let $=this.workspace,g=MN(this.options.scope,this.options.cwd),U=bG({scope:this.scope,current:$,legacy:g,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!U.dry_run&&U.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return U}setup(_={}){let $=this.ensureWorkspace(),g=this.config({ensure:!0}),U=Qb(_.mode)??g.mode,D=_.apiUrl?a$(_.apiUrl):g.hosted?.api_url?a$(g.hosted.api_url):null,I={...g,mode:U,hosted:{...g.hosted??{},...D?{api_url:D}:{}},storage:_.canonicalExample?Xz():g.storage};Rz($.configPath,I),this.cachedConfig=I;let j=mU(I,$,this.scope);return{ok:!0,mode:U,api_url:I.hosted?.api_url??null,storage_type:I.storage.type,artifact_uri_prefix:j.artifact_store.uri_prefix,canonical_example:j.canonical_example,config_path:$.configPath,next:U==="hosted"?["knowledge auth login --api-key ","knowledge storage status --json"]:["knowledge search ","knowledge "],message:`Set knowledge mode to ${U}`}}authStatus(_=process.env){return KS(this.config(),_)}saveAuth(_,$=process.env){let g=_.apiUrl??this.config().hosted?.api_url;return qS({api_key:_.apiKey,email:_.email,org_id:_.orgId,org_slug:_.orgSlug,user_id:_.userId,api_url:g},$)}clearAuth(_=process.env){return BS(_)}paths(){let _=this.workspace;return{ok:!0,scope:this.scope,home:_.home,exists:W_(_.home),config_path:_.configPath,config_exists:W_(_.configPath),json_store_path:_.jsonStorePath,json_store_exists:W_(_.jsonStorePath),knowledge_db_path:_.knowledgeDbPath,knowledge_db_exists:W_(_.knowledgeDbPath),artifacts_dir:_.artifactsDir,indexes_dir:_.indexesDir,logs_dir:_.logsDir,runs_dir:_.runsDir,schemas_dir:_.schemasDir,wiki_dir:_.wikiDir,config:this.config(),message:_.home}}initDb(){return h(this.ensureWorkspace().knowledgeDbPath)}dbStats(){nU("reading knowledge.db stats");let _=this.workspace;if(!W_(_.knowledgeDbPath))return hG();return _E(_.knowledgeDbPath)}enqueuePromotion(_){return hR(this.ensureWorkspace().knowledgeDbPath,_)}promotionInbox(_={}){return nR(this.ensureWorkspace().knowledgeDbPath,_)}getPromotion(_){return cR(this.ensureWorkspace().knowledgeDbPath,_)}reviewPromotion(_,$){return dR(this.ensureWorkspace().knowledgeDbPath,_,$)}promoteCandidate(_,$={}){return mR(this.ensureWorkspace().knowledgeDbPath,_,$)}rejectPromotion(_,$={}){return iR(this.ensureWorkspace().knowledgeDbPath,_,$)}durableRecords(_={}){return lR(this.ensureWorkspace().knowledgeDbPath,_)}itemOnlyInventory(_){let $=this.workspace,{items:g,limit:U,includeArchived:D,storePath:I,storeExists:j,storeReadError:N}=_,O=g.filter((W)=>W.archived!==!0),A=D?g:O,L=hG(),z={legacy_items:g.length,active_items:O.length,archived_items:g.length-O.length,schema_version:L.schema_version,sources:L.sources,source_revisions:L.source_revisions,chunks:L.chunks,wiki_pages:L.wiki_pages,citations:L.citations,indexes:L.indexes,runs:L.runs,run_events:L.run_events,storage_objects:L.storage_objects,embeddings:L.embeddings,vector_entries:L.vector_entries,reindex_queue:L.reindex_queue,redaction_findings:L.redaction_findings,audit_events:L.audit_events,approval_gates:L.approval_gates,knowledge_machines:L.knowledge_machines,sync_snapshots:L.sync_snapshots,sync_changes:L.sync_changes,sync_conflicts:L.sync_conflicts,sync_table_clocks:L.sync_table_clocks,sync_imports:L.sync_imports,promotion_candidates:L.promotion_candidates,durable_records:L.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:U,paths:{json_store_path:$.jsonStorePath,json_store_exists:W_($.jsonStorePath),knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:W_($.knowledgeDbPath),artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:z,legacy_store:{path:I,exists:j,read_error:N,total_items:g.length,active_items:O.length,archived_items:g.length-O.length,items_returned:Math.min(A.length,U)},items:A.slice(0,U).map(yG),sources:[],source_revisions:[],chunks:[],wiki_pages:[],indexes:[],storage_objects:[],runs:[],vector_indexes:[],reindex_queue:[],machines:[],sync_conflicts:[],approval_gates:[],audit_events:[],promotion_candidates:[],durable_records:[],message:`${g.length} item(s), 0 source(s), 0 chunk(s), 0 wiki page(s), 0 artifact(s)`}}async cloudInventory(_={}){let $=xG(_.limit),g=await this.fetchCloudItems(),U=fg();return this.itemOnlyInventory({items:g,limit:$,includeArchived:_.includeArchived??!1,storePath:U?.baseUrl??"cloud",storeExists:!0,storeReadError:null})}inventory(_={}){let $=this.workspace,g=xG(_.limit),U=_.storePath??$.jsonStorePath,D=Eb(U),I=D.items.filter((L)=>L.archived!==!0),j=_.includeArchived?D.items:I;if(!W_($.knowledgeDbPath))return this.itemOnlyInventory({items:D.items,limit:g,includeArchived:_.includeArchived??!1,storePath:U,storeExists:D.exists,storeReadError:D.read_error});h($.knowledgeDbPath);let O=_E($.knowledgeDbPath),A=v($.knowledgeDbPath);try{let L=S$(p_(A,` + ORDER BY artifact_uri ASC`).all(),I=[];for(let j of U){let N=c4(j.metadata_json),O=typeof N.key==="string"?N.key:null;if(!O?.startsWith(D))continue;let A=O.slice(D.length);if(!A)continue;I.push({id:j.id,artifact_uri:j.artifact_uri,kind:j.kind,current_key:O,repaired_key:w$(A),hash:j.hash,size_bytes:j.size_bytes})}return I}finally{g.close()}}function Cb(_){let $=["--scope",_.scope,"--json"],D=_.tables?.length?["--tables",_.tables.join(",")]:[],g=[UN({id:"sync_status",reason:"Inspect local sync registry, clocks, snapshots, and conflicts.",args:["sync","status",...$]})];if(_.machine&&!N8(_.machine))g.push(UN({id:"sync_dry_run_remote",reason:"Preview remote machine sync before changing either workspace.",args:["sync","dry-run","--machine",_.machine,..._.peerWorkspace?["--peer-workspace",_.peerWorkspace]:[],...D,...$]}));else if(_.peerWorkspace)g.push(UN({id:"sync_dry_run_peer",reason:"Preview local peer sync before changing either workspace.",args:["sync","dry-run","--peer-workspace",_.peerWorkspace,...D,...$]}));for(let U of _.resolvedWorkspace?.repair_hints??[])g.push({id:U.id,reason:U.reason,command:U.command,shell_command:U.shell_command});if(_.openConflicts>0)g.push(UN({id:"sync_conflicts",reason:"Review open conflicts before relying on bidirectional sync.",args:["sync","conflicts",...$]}));return g}function vb(){let _=process.env.KNOWLEDGE_SSH_COMMAND?.trim()||"ssh",$=process.env.KNOWLEDGE_SSH_COMMAND_ARGS_JSON;if(!$)return{command:_,argsPrefix:[]};let D;try{D=JSON.parse($)}catch(g){throw Error(`KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array: ${g instanceof Error?g.message:String(g)}`)}if(!Array.isArray(D)||!D.every((g)=>typeof g==="string"))throw Error("KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array.");return{command:_,argsPrefix:D}}function g8(_,$,D,g){let U=vb(),I=Eb(U.command,[...U.argsPrefix,g.target,$],{encoding:"utf8",env:process.env,input:D,maxBuffer:67108864});if((I.status??1)!==0){let j=g.source==="open-machines"?` via ${g.route??"resolved"}:${g.target}`:"";throw Error(`ssh ${_}${j} failed: ${(I.stderr||I.stdout||String(I.status)).trim()}`)}return I.stdout||""}function I8(_,$,D){try{return JSON.parse(D)}catch(g){let U=D.trim().slice(0,240);throw Error(`Remote knowledge ${$} on ${_} did not return JSON. Install a compatible @hasna/knowledge CLI on the remote machine. Output: ${U||String(g)}`)}}function fb(_,$){if(typeof $!=="object"||$===null||!("format"in $)||$.format!=="knowledge-sync-bundle")throw Error(`Remote knowledge sync export on ${_} did not return a knowledge sync bundle. Install @hasna/knowledge 0.2.32 or newer on the remote machine.`);let{protocol_version:D,min_protocol_version:g}=$;if(typeof D!=="number"||typeof g!=="number"||DF6)throw Error(`Remote knowledge sync export on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function wb(_,$){if(typeof $!=="object"||$===null||!("ok"in $)||!("target"in $)||!("tables"in $)||!("artifacts"in $)||!("conflicts_created"in $))throw Error(`Remote knowledge sync import on ${_} did not return a sync import result. Install @hasna/knowledge 0.2.32 or newer on the remote machine.`);let{protocol_version:D,min_protocol_version:g}=$;if(typeof D!=="number"||typeof g!=="number"||DF6)throw Error(`Remote knowledge sync import on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function rb(_){if(!_)return;let $=_.trim().toLowerCase();if($==="local"||$==="offline")return"local";if($==="hosted"||$==="remote"||$==="knowledge.md")return"hosted";throw Error("Invalid setup mode. Use hosted or local.")}class J8{options;ensuredWorkspace;cachedConfig;constructor(_={}){this.options=_}get scope(){return this.options.scope??"global"}get workspace(){return this.ensuredWorkspace??Hg(this.options.scope,this.options.cwd)}ensureWorkspace(){if(!this.ensuredWorkspace)this.ensuredWorkspace=U0(this.workspace.home);return this.ensuredWorkspace}jsonStorePath(){return this.ensureWorkspace().jsonStorePath}itemStore(){let _=this.ensureWorkspace();return ng({storePath:_.jsonStorePath,storePathOverridden:!1})}async listItems(){return this.itemStore().listAll()}async getItem(_){return this.itemStore().get(_)}async createItem(_){return this.itemStore().create(_)}async updateItem(_,$){return this.itemStore().update(_,$)}async deleteItem(_){return this.itemStore().delete(_)}async deleteItems(_){return this.itemStore().deleteMany(_)}async resolveInventory(_={}){if(this.isApiMode())return this.cloudInventory(_);return this.inventory(_)}config(_={}){let $=_.ensure?this.ensureWorkspace():this.workspace;if(!this.cachedConfig||_.ensure||W_($.configPath))this.cachedConfig=W_($.configPath)?bN($.configPath):ZD();return this.cachedConfig}safetyPolicy(){return pS(this.config(),this.workspace)}artifactStore(){return L2(this.config(),this.ensureWorkspace())}storageContract(){return ig(this.config(),this.workspace,this.scope)}validateStorage(){return z2(this.config(),this.workspace)}assertStorageValid(_){let $=this.validateStorage();if(!$.ok)throw Error(`Storage contract invalid before ${_}: ${$.errors.join("; ")}`)}migrateLegacyPath(_={}){let $=this.workspace,D=ZN(this.options.scope,this.options.cwd),g=mG({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!g.dry_run&&g.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return g}mergeLegacyPath(_={}){let $=this.workspace,D=ZN(this.options.scope,this.options.cwd),g=nG({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!g.dry_run&&g.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return g}setup(_={}){let $=this.ensureWorkspace(),D=this.config({ensure:!0}),g=rb(_.mode)??D.mode,U=_.apiUrl?a$(_.apiUrl):D.hosted?.api_url?a$(D.hosted.api_url):null,I={...D,mode:g,hosted:{...D.hosted??{},...U?{api_url:U}:{}},storage:_.canonicalExample?Vz():D.storage};Fz($.configPath,I),this.cachedConfig=I;let j=ig(I,$,this.scope);return{ok:!0,mode:g,api_url:I.hosted?.api_url??null,storage_type:I.storage.type,artifact_uri_prefix:j.artifact_store.uri_prefix,canonical_example:j.canonical_example,config_path:$.configPath,next:g==="hosted"?["knowledge auth login --api-key ","knowledge storage status --json"]:["knowledge search ","knowledge "],message:`Set knowledge mode to ${g}`}}authStatus(_=process.env){return uS(this.config(),_)}saveAuth(_,$=process.env){let D=_.apiUrl??this.config().hosted?.api_url;return wS({api_key:_.apiKey,email:_.email,org_id:_.orgId,org_slug:_.orgSlug,user_id:_.userId,api_url:D},$)}clearAuth(_=process.env){return rS(_)}paths(){let _=this.workspace;return{ok:!0,scope:this.scope,home:_.home,exists:W_(_.home),config_path:_.configPath,config_exists:W_(_.configPath),json_store_path:_.jsonStorePath,json_store_exists:W_(_.jsonStorePath),knowledge_db_path:_.knowledgeDbPath,knowledge_db_exists:W_(_.knowledgeDbPath),artifacts_dir:_.artifactsDir,indexes_dir:_.indexesDir,logs_dir:_.logsDir,runs_dir:_.runsDir,schemas_dir:_.schemasDir,wiki_dir:_.wikiDir,config:this.config(),message:_.home}}initDb(){return h(this.ensureWorkspace().knowledgeDbPath)}dbStats(){dg("reading knowledge.db stats");let _=this.workspace;if(!W_(_.knowledgeDbPath))return _8();return E2(_.knowledgeDbPath)}enqueuePromotion(_){return _G(this.ensureWorkspace().knowledgeDbPath,_)}promotionInbox(_={}){return DG(this.ensureWorkspace().knowledgeDbPath,_)}getPromotion(_){return $G(this.ensureWorkspace().knowledgeDbPath,_)}reviewPromotion(_,$){return UG(this.ensureWorkspace().knowledgeDbPath,_,$)}promoteCandidate(_,$={}){return gG(this.ensureWorkspace().knowledgeDbPath,_,$)}rejectPromotion(_,$={}){return IG(this.ensureWorkspace().knowledgeDbPath,_,$)}durableRecords(_={}){return jG(this.ensureWorkspace().knowledgeDbPath,_)}itemOnlyInventory(_){let $=this.workspace,{items:D,limit:g,includeArchived:U,storePath:I,storeExists:j,storeReadError:N}=_,O=D.filter((W)=>W.archived!==!0),A=U?D:O,L=_8(),z={legacy_items:D.length,active_items:O.length,archived_items:D.length-O.length,schema_version:L.schema_version,sources:L.sources,source_revisions:L.source_revisions,chunks:L.chunks,wiki_pages:L.wiki_pages,citations:L.citations,indexes:L.indexes,runs:L.runs,run_events:L.run_events,storage_objects:L.storage_objects,embeddings:L.embeddings,vector_entries:L.vector_entries,reindex_queue:L.reindex_queue,redaction_findings:L.redaction_findings,audit_events:L.audit_events,approval_gates:L.approval_gates,knowledge_machines:L.knowledge_machines,sync_snapshots:L.sync_snapshots,sync_changes:L.sync_changes,sync_conflicts:L.sync_conflicts,sync_table_clocks:L.sync_table_clocks,sync_imports:L.sync_imports,promotion_candidates:L.promotion_candidates,durable_records:L.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:g,paths:{json_store_path:$.jsonStorePath,json_store_exists:W_($.jsonStorePath),knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:W_($.knowledgeDbPath),artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:z,legacy_store:{path:I,exists:j,read_error:N,total_items:D.length,active_items:O.length,archived_items:D.length-O.length,items_returned:Math.min(A.length,g)},items:A.slice(0,g).map(sG),sources:[],source_revisions:[],chunks:[],wiki_pages:[],indexes:[],storage_objects:[],runs:[],vector_indexes:[],reindex_queue:[],machines:[],sync_conflicts:[],approval_gates:[],audit_events:[],promotion_candidates:[],durable_records:[],message:`${D.length} item(s), 0 source(s), 0 chunk(s), 0 wiki page(s), 0 artifact(s)`}}async cloudInventory(_={}){let $=aG(_.limit),D=await this.fetchCloudItems(),g=uD();return this.itemOnlyInventory({items:D,limit:$,includeArchived:_.includeArchived??!1,storePath:g?.baseUrl??"cloud",storeExists:!0,storeReadError:null})}inventory(_={}){let $=this.workspace,D=aG(_.limit),g=_.storePath??$.jsonStorePath,U=qb(g),I=U.items.filter((L)=>L.archived!==!0),j=_.includeArchived?U.items:I;if(!W_($.knowledgeDbPath))return this.itemOnlyInventory({items:U.items,limit:D,includeArchived:_.includeArchived??!1,storePath:g,storeExists:U.exists,storeReadError:U.read_error});h($.knowledgeDbPath);let O=E2($.knowledgeDbPath),A=f($.knowledgeDbPath);try{let L=S$(p_(A,` SELECT s.id, s.uri, @@ -1178,7 +1178,7 @@ Pages should be concise, cited, and organized for both humans and agents. GROUP BY s.id ORDER BY s.updated_at DESC, s.created_at DESC LIMIT ? - `,[g]),["metadata_json","acl_json"]),z=S$(p_(A,` + `,[D]),["metadata_json","acl_json"]),z=S$(p_(A,` SELECT sr.id, s.uri AS source_uri, @@ -1191,7 +1191,7 @@ Pages should be concise, cited, and organized for both humans and agents. JOIN sources s ON s.id = sr.source_id ORDER BY sr.created_at DESC LIMIT ? - `,[g])),W=S$(p_(A,` + `,[D])),W=S$(p_(A,` SELECT c.id, c.kind, @@ -1212,22 +1212,22 @@ Pages should be concise, cited, and organized for both humans and agents. LEFT JOIN wiki_pages wp ON wp.id = c.wiki_page_id ORDER BY c.created_at DESC, c.ordinal ASC LIMIT ? - `,[g])),J=S$(p_(A,` + `,[D])),J=S$(p_(A,` SELECT id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at FROM wiki_pages ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g])),P=S$(p_(A,` + `,[D])),P=S$(p_(A,` SELECT id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at FROM knowledge_indexes ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g])),S=S$(p_(A,` + `,[D])),S=S$(p_(A,` SELECT id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json, created_at, updated_at FROM storage_objects ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g])),X=S$(p_(A,` + `,[D])),X=S$(p_(A,` SELECT id, type, @@ -1243,18 +1243,18 @@ Pages should be concise, cited, and organized for both humans and agents. FROM runs ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g])),G=p_(A,` + `,[D])),R=p_(A,` SELECT provider, model, dimensions, status, COUNT(*) AS entries FROM vector_index_entries GROUP BY provider, model, dimensions, status ORDER BY entries DESC LIMIT ? - `,[g]),R=S$(p_(A,` + `,[D]),G=S$(p_(A,` SELECT id, kind, target_id, source_uri, reason, status, attempts, metadata_json, created_at, updated_at FROM reindex_queue ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g])),K=S$(p_(A,` + `,[D])),V=S$(p_(A,` SELECT machine_id, hostname, @@ -1272,7 +1272,7 @@ Pages should be concise, cited, and organized for both humans and agents. FROM knowledge_machines ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g]),["tailscale_ips_json","capabilities_json","metadata_json"]),Q=S$(p_(A,` + `,[D]),["tailscale_ips_json","capabilities_json","metadata_json"]),Q=S$(p_(A,` SELECT id, entity_kind, @@ -1289,17 +1289,17 @@ Pages should be concise, cited, and organized for both humans and agents. FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ? - `,[g])),T=S$(p_(A,` + `,[D])),T=S$(p_(A,` SELECT id, action, target_uri, status, reason, approved_by, metadata_json, created_at, updated_at FROM approval_gates ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g])),q=S$(p_(A,` + `,[D])),B=S$(p_(A,` SELECT id, event_type, action, target_uri, decision, metadata_json, created_at FROM audit_events ORDER BY created_at DESC LIMIT ? - `,[g])),V=p_(A,` + `,[D])),F=p_(A,` SELECT id, record_kind, @@ -1324,7 +1324,7 @@ Pages should be concise, cited, and organized for both humans and agents. FROM knowledge_promotion_candidates ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g]).map(jb),Z=p_(A,` + `,[D]).map(Tb),Z=p_(A,` SELECT id, record_kind, @@ -1346,17 +1346,17 @@ Pages should be concise, cited, and organized for both humans and agents. FROM durable_knowledge_records ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[g]).map(Nb),e={legacy_items:D.items.length,active_items:I.length,archived_items:D.items.length-I.length,schema_version:O.schema_version,sources:O.sources,source_revisions:O.source_revisions,chunks:O.chunks,wiki_pages:O.wiki_pages,citations:O.citations,indexes:O.indexes,runs:O.runs,run_events:O.run_events,storage_objects:O.storage_objects,embeddings:O.embeddings,vector_entries:O.vector_entries,reindex_queue:O.reindex_queue,redaction_findings:O.redaction_findings,audit_events:O.audit_events,approval_gates:O.approval_gates,knowledge_machines:O.knowledge_machines,sync_snapshots:O.sync_snapshots,sync_changes:O.sync_changes,sync_conflicts:O.sync_conflicts,sync_table_clocks:O.sync_table_clocks,sync_imports:O.sync_imports,promotion_candidates:O.promotion_candidates,durable_records:O.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:g,paths:{json_store_path:U,json_store_exists:D.exists,knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:!0,artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:e,legacy_store:{path:U,exists:D.exists,read_error:D.read_error,total_items:D.items.length,active_items:I.length,archived_items:D.items.length-I.length,items_returned:Math.min(j.length,g)},items:j.slice(0,g).map(yG),sources:L,source_revisions:z,chunks:W,wiki_pages:J,indexes:P,storage_objects:S,runs:X,vector_indexes:G,reindex_queue:R,machines:K,sync_conflicts:Q,approval_gates:T,audit_events:q,promotion_candidates:V,durable_records:Z,message:`${D.items.length} item(s), ${O.sources} source(s), ${O.chunks} chunk(s), ${O.wiki_pages} wiki page(s), ${O.storage_objects} artifact(s)`}}finally{A.close()}}assertAppWikiWrite(_){ug({scope:this.scope,workspace:this.workspace,safetyPolicy:this.safetyPolicy(),allowGlobal:_})}async initAppWiki(_={}){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return $W({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async addAppWikiNote(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return gW({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal,title:_.title,content:_.content,tags:_.tags,sourceRefs:_.sourceRefs,path:_.path,metadata:_.metadata})}listAppWikiNotes(_={}){let $=this.workspace;if(!W_($.knowledgeDbPath))return[];return DW({dbPath:$.knowledgeDbPath,limit:_.limit})}async getAppWikiNote(_,$={}){let g=this.workspace;if(!W_(g.knowledgeDbPath))return null;return UW({dbPath:g.knowledgeDbPath,store:this.artifactStore(),id:_,includeContent:$.includeContent})}async addAppWikiSourceRef(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return IW({scope:this.scope,workspace:$,sourceRef:_.sourceRef,purpose:_.purpose,config:this.config(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async searchAppWiki(_){return this.search(_)}async queryAppWiki(_){return this.retrieveContext(_)}async initWiki(){let _=this.ensureWorkspace();h(_.knowledgeDbPath);let $=await TG(this.artifactStore()),g=v(_.knowledgeDbPath);try{s$(g,$.artifacts),qG(g,$.artifacts)}finally{g.close()}return $}async compileWiki(_={}){let $=this.ensureWorkspace();return RG({..._,dbPath:$.knowledgeDbPath,store:this.artifactStore()})}async fileAnswer(_){let $=this.ensureWorkspace(),g=await this.retrieveContext({query:_.prompt,limit:_.limit,semantic:_.semantic,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake});return GG({dbPath:$.knowledgeDbPath,store:this.artifactStore(),prompt:_.prompt,answer:_.answer,context:g,approveWrite:_.approveWrite})}lintWiki(){let _=this.ensureWorkspace();return YG({dbPath:_.knowledgeDbPath})}async ingestManifest(_){let $=this.ensureWorkspace();return pS({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}async ingestSource(_,$){let g=this.ensureWorkspace();return eU({dbPath:g.knowledgeDbPath,sourceRef:_,purpose:$,config:this.config(),safetyPolicy:this.safetyPolicy()})}async importRulesProvenance(_={}){let $=_.dryRun!==!1,g=$?this.workspace:this.ensureWorkspace();return NG({root:_.root??this.options.cwd??process.cwd(),scope:this.scope,owner:_.owner,dryRun:$,deprecateLegacy:_.deprecateLegacy,includeLegacy:_.includeLegacy,legacyStorePath:g.jsonStorePath,dbPath:g.knowledgeDbPath,safetyPolicy:this.safetyPolicy(),maxItems:_.maxItems,limit:_.limit})}async resolveSource(_,$={}){let g=this.ensureWorkspace();return tU({dbPath:g.knowledgeDbPath,sourceRef:_,purpose:$.purpose,limit:$.limit,safetyPolicy:this.safetyPolicy()})}async consumeOutbox(_){let $=this.ensureWorkspace();return GR({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}reindexHealth(_={}){let $=this.workspace;if(!W_($.knowledgeDbPath))return Jb();return pR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}enqueueReindex(_={}){let $=this.ensureWorkspace();return I3({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async refreshEmbeddings(_={}){let $=this.ensureWorkspace();return eR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}providerStatus(_=process.env){return AW(this.config(),_)}modelRegistry(){return XE(this.config())}embeddingStatus(){let _=this.workspace;if(!W_(_.knowledgeDbPath))return Pb();return WW(_.knowledgeDbPath)}async indexEmbeddings(_={}){let $=this.ensureWorkspace();return _I({..._,dbPath:$.knowledgeDbPath,config:this.config()})}isApiMode(){return Y6()}async fetchCloudItems(){let _=fg();if(!_)throw Error("knowledge: cloud store requested but not resolvable (check HASNA_KNOWLEDGE_API_URL + HASNA_KNOWLEDGE_API_KEY).");return hU(_)}async semanticSearch(_){let $=this.workspace;if(this.isApiMode()){let g=await this.fetchCloudItems(),U=await j4(g,{..._},["semantic_search_requires_local_catalog"]);return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:U.results}}if(!W_($.knowledgeDbPath))return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:[]};return $I({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async search(_){let $=this.workspace;if(this.isApiMode()){let U=await this.fetchCloudItems();return j4(U,_)}let g=K3(this.scope,$,_.legacyStorePath);if(!W_($.knowledgeDbPath)){if(W_(g))return II({..._,legacyStorePath:g,config:this.config()});return aG(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return UI({..._,dbPath:$.knowledgeDbPath,legacyStorePath:g,config:this.config()})}async retrieveContext(_){let $=this.workspace;if(this.isApiMode()){let U=await this.fetchCloudItems();return NI(U,_)}let g=K3(this.scope,$,_.legacyStorePath);if(!W_($.knowledgeDbPath)){if(W_(g)){let U=await II({..._,legacyStorePath:g,config:this.config()});return G0(U,{contextChars:_.contextChars})}return Ab(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return Y0({..._,dbPath:$.knowledgeDbPath,legacyStorePath:g,config:this.config()})}async contextPack(_){let $=this.workspace;if(this.isApiMode()){let U=(_.query??_.topic??"").trim();if(U&&_.source!=="loops"&&_.source!=="runs"){let D=await this.fetchCloudItems(),I=await j4(D,{..._,query:U}),j=G0(I,{contextChars:_.contextChars});return nG(_,j,this.safetyPolicy())}return dG(_)}let g=K3(this.scope,$,_.legacyStorePath);if(!W_($.knowledgeDbPath)){let U=(_.query??_.topic??"").trim();if(U&&_.source!=="loops"&&_.source!=="runs"&&W_(g)){let D=await II({..._,query:U,legacyStorePath:g,config:this.config()}),I=G0(D,{contextChars:_.contextChars});return nG(_,I,this.safetyPolicy())}return dG(_)}return iW({..._,dbPath:$.knowledgeDbPath,legacyStorePath:g,config:this.config(),safetyPolicy:this.safetyPolicy()})}async runPrompt(_){if(this.isApiMode()){let U=await this.fetchCloudItems();return fW(U,{..._,config:this.config()})}let $=this.ensureWorkspace(),g=_.legacyStorePath??$.jsonStorePath;if(!_.legacyStorePath)kg(g);return wW({..._,dbPath:$.knowledgeDbPath,legacyStorePath:g,config:this.config()})}async webSearch(_){let $=this.ensureWorkspace();return LG({..._,dbPath:$.knowledgeDbPath,config:this.config(),safetyPolicy:this.safetyPolicy()})}async machineTopology(_={}){let $=this.workspace;return rR({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}async machinePreflight(_={}){let $=this.workspace;return fR({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}syncStatus(){let _=this.workspace;if(!W_(_.knowledgeDbPath))return zb({scope:this.scope,workspaceHome:_.home});return SX({dbPath:_.knowledgeDbPath,scope:this.scope,workspaceHome:_.home})}async syncDoctor(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let g=this.syncStatus(),U=this.storageContract(),D=this.validateStorage(),I=Sb($.knowledgeDbPath,U),j=_.machine?.trim()||null,N=_.peerWorkspace?.trim()||null,O=[],A=null,L=null;if(j&&!tG(j)){let S=await _3({machineId:j,includeTailscale:_.includeTailscale});A=B3(S),O.push(...S.warnings)}if(j||N){let S=await lj({machineId:j??q3($),peerWorkspace:N,includeTailscale:_.includeTailscale});if(j&&!N&&(A?.source==="raw"||!S.ok||!S.project_root)){let X=vG($.knowledgeDbPath,j);if(X){if(A?.source==="raw"&&X.ssh_target)A=B3(wG(X,j,{target:A.target,route:A.route,targetKind:A.target_kind,confidence:A.confidence,source:A.source,adapter:A.adapter,evidence:A.evidence,cacheability:A.cacheability,warnings:[]}));if(!S.ok||!S.project_root){let G=fG(X,j,S);if(G)L=AU(G,G.project_root),O.push(...G.warnings)}}}L=S.ok&&S.project_root?AU(S,S.project_root):L??{...AU(S,N??""),project_root:S.project_root??N??""},O.push(...S.warnings)}if(!D.ok)O.push(...D.errors.map((S)=>`storage:${S}`));let z=Db($.knowledgeDbPath,L);if(!z.ok)O.push("open_files_boundary_raw_payload_sentinels");if(!I.ok)O.push(...I.warnings);let W=L?.diagnostics.filter((S)=>S.severity==="fail")??[],J=D.ok&&I.ok&&z.ok&&W.length===0&&(L?.project_root!==""||!L),P=Xb({scope:this.scope,machine:j,peerWorkspace:N,tables:_.tables,resolvedWorkspace:L,openConflicts:g.conflicts.open});return{ok:J,read_only:!0,generated_at:new Date().toISOString(),scope:this.scope,workspace_home:$.home,database:{sqlite_schema_version:g.sqlite_schema_version,table_counts:g.table_counts},storage:{contract:U,validation:D,artifact_manifest:I},sync:{machines:g.machines.total,snapshots:g.snapshots.total,clocks:g.clocks.total,imports:g.imports.total,open_conflicts:g.conflicts.open,table_clocks:g.clocks.rows},open_files:z,resolved_route:A,resolved_workspace:L,recommended_commands:P,warnings:[...new Set(O)],message:J?`Sync readiness ok: ${g.clocks.total} table clock(s), ${g.conflicts.open} open conflict(s)`:`Sync readiness needs attention: ${[...new Set(O)].join(", ")||"workspace diagnostics failed"}`}}repairArtifactManifestKeys(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let g=this.storageContract(),U=b3(g),D=Wb($.knowledgeDbPath,g),I=_.dryRun===!0||_.approveWrite!==!0;if(D.length===0)return{ok:!0,dry_run:I,approval_required:!1,storage_type:g.storage_type,storage_prefix:U,candidates:D,repaired:0,audit_event_id:null,message:"No legacy S3 artifact manifest keys found"};if(_.dryRun===!0)return{ok:!0,dry_run:!0,approval_required:!1,storage_type:g.storage_type,storage_prefix:U,candidates:D,repaired:0,audit_event_id:null,message:`Would repair ${D.length} legacy S3 artifact manifest key(s)`};if(_.approveWrite!==!0||!_.approvedBy)return{ok:!1,dry_run:!0,approval_required:!0,storage_type:g.storage_type,storage_prefix:U,candidates:D,repaired:0,audit_event_id:null,message:"Artifact key repair requires --approve-write and --approved-by "};let j=v($.knowledgeDbPath);try{let N=new Date().toISOString();j.transaction((L)=>{let z=j.query("UPDATE storage_objects SET metadata_json = ?, updated_at = ? WHERE id = ?"),W=j.query("SELECT id, metadata_json FROM storage_objects").all(),J=new Map(W.map((P)=>[P.id,c4(P.metadata_json)]));for(let P of L){let S=J.get(P.id)??{};S.key=P.repaired_key,z.run(JSON.stringify(S),N,P.id)}})(D);let A=X_(j,{event_type:"artifact_manifest_key_repair",action:"storage.artifact_manifest.repair_keys",target_uri:`knowledge-storage://${$.home}/storage_objects`,decision:"allow",metadata:{approved_by:_.approvedBy,repaired:D.length,storage_type:g.storage_type,storage_prefix:U,artifact_uris:D.map((L)=>L.artifact_uri)}});return{ok:!0,dry_run:!1,approval_required:!1,storage_type:g.storage_type,storage_prefix:U,candidates:D,repaired:D.length,audit_event_id:A,message:`Repaired ${D.length} legacy S3 artifact manifest key(s)`}}finally{j.close()}}async createSyncSnapshot(_={}){let $=this.ensureWorkspace(),g=await this.machineTopology({includeTailscale:_.includeTailscale!==!1});return zX({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),topology:g,machineId:_.machineId})}syncConflicts(_={}){let $=this.workspace;if(!W_($.knowledgeDbPath))return[];return WX($.knowledgeDbPath,_)}syncConflict(_){let $=this.ensureWorkspace(),g=XI($.knowledgeDbPath,_);if(!g)throw Error(`Sync conflict not found: ${_}`);return g}proposeSyncConflictResolution(_){let $=this.ensureWorkspace();return tg($.knowledgeDbPath,_)}async proposeSyncConflictResolutionWithAi(_){let $=this.ensureWorkspace();return XR({dbPath:$.knowledgeDbPath,id:_.id,config:this.config(),modelRef:_.modelRef,fake:_.fake,env:_.env})}resolveSyncConflict(_){let $=this.ensureWorkspace(),g=tg($.knowledgeDbPath,_.id);if(_.approveWrite!==!0||!_.approvedBy)return{ok:!1,approval_required:!0,conflict:g.conflict,proposal:g,message:"Sync conflict resolution requires --approve-write and --approved-by "};let U=GX($.knowledgeDbPath,{id:_.id,strategy:_.strategy??g.proposed_strategy,approvedBy:_.approvedBy,proposedPatchUri:_.proposedPatchUri}),D=v($.knowledgeDbPath);try{let I=X_(D,{event_type:"sync_conflict_resolution",action:"sync.conflict.resolve",target_uri:`knowledge-sync-conflict://${_.id}`,decision:"allow",metadata:{conflict_id:_.id,entity_kind:U.entity_kind,entity_id:U.entity_id,strategy:U.resolution_strategy,approved_by:U.approved_by,proposed_patch_uri:U.proposed_patch_uri}});return{ok:!0,approval_required:!1,conflict:U,audit_event_id:I,message:`Resolved sync conflict ${_.id}`}}finally{D.close()}}syncMachines(){let _=this.workspace;if(!W_(_.knowledgeDbPath))return[];return wE(_.knowledgeDbPath)}exportSyncBundle(_={}){let $=this.ensureWorkspace();return this.assertStorageValid("sync export"),h($.knowledgeDbPath),lg({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.recordClocks!==!1})}async importSyncBundle(_){let $=this.ensureWorkspace();return this.assertStorageValid("sync import"),h($.knowledgeDbPath),WI({targetDbPath:$.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:$.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:_.bundle,direction:_.direction??"import",dryRun:_.dryRun,localMachineId:_.machineId??null})}async syncRemotePeer(_){let $=_.direction??"both",g=_.dryRun===!0,U=this.ensureWorkspace();h(U.knowledgeDbPath);let D=_.tables?.length?["--tables",_.tables.join(",")]:[],I=_.includeArtifactContent===!1?["--no-artifact-content"]:[],j=["--scope",this.scope,"--json"],N=await _3({machineId:_.machine,includeTailscale:_.includeTailscale}),O=await lj({machineId:_.machine,peerWorkspace:_.peerWorkspace,includeTailscale:_.includeTailscale});if(!_.peerWorkspace&&N.source==="raw"||!O.ok||!O.project_root){let J=vG(U.knowledgeDbPath,_.machine);if(J){if(!_.peerWorkspace&&N.source==="raw"&&J.ssh_target)N=wG(J,_.machine,N);if(!O.ok||!O.project_root){let P=fG(J,_.machine,O);if(P)O=P}}}if(!O.ok||!O.project_root)throw Error([`Unable to resolve peer workspace for ${_.machine}.`,"Pass --peer-workspace or configure workspace path mapping in machines.",O.warnings.length?`Warnings: ${O.warnings.join(", ")}`:null].filter(Boolean).join(" "));let A=O.project_root,L={ok:!0,dry_run:g,direction:$,transport:"ssh",machine:_.machine,resolved_machine:N.target,resolved_route:B3(N),resolved_workspace:AU(O,O.project_root),peer_workspace:A,message:""},z=!1,W=()=>{if(g||z)return;LX(U.knowledgeDbPath,{machineId:_.machine,route:N,workspace:O}),z=!0};if($==="pull"||$==="both"){let J=rG(A,["sync","export",...j,...D,...I]),P=mG(_.machine,J,void 0,N),S=iG(_.machine,"sync export",P);Gb(_.machine,S),L.pull=await this.importSyncBundle({bundle:S,dryRun:g,direction:"pull",machineId:_.machineId??null})}if($==="push"||$==="both"){W();let J=this.exportSyncBundle({machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:!g}),P=rG(A,["sync","import",...j,...g?["--dry-run"]:[]]),S=iG(_.machine,"sync import",mG(_.machine,P,JSON.stringify(J),N));Yb(_.machine,S),L.push=S}return L.ok=(L.pull?.ok??!0)&&(L.push?.ok??!0),W(),L.message=[uG(L.resolved_workspace),L.pull?`pull: ${L.pull.message}`:null,L.push?`push: ${L.push.message}`:null].filter(Boolean).join("; "),L}async syncPeer(_){let $=_.direction??"both",g=this.ensureWorkspace();h(g.knowledgeDbPath);let U=lG(_.peerWorkspace),D=oZ(U);h(D.knowledgeDbPath);let I=ZN(D.configPath),j=mU(I,D,this.scope),N=DE(I,D),O=_.machineId??q3(g),A=q3(D),L=await lj({machineId:_.machineId??A,peerWorkspace:U,includeTailscale:!1}),z=()=>lg({dbPath:g.knowledgeDbPath,scope:this.scope,workspaceHome:g.home,storage:this.storageContract(),machineId:O,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),W=()=>lg({dbPath:D.knowledgeDbPath,scope:this.scope,workspaceHome:D.home,storage:j,machineId:A,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),J={ok:!0,dry_run:_.dryRun===!0,direction:$,resolved_workspace:AU(L,L.project_root??U),message:""};if($==="pull"||$==="both")J.pull=await WI({targetDbPath:g.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:g.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:W(),targetBundle:z(),direction:"pull",dryRun:_.dryRun,localMachineId:O});if($==="push"||$==="both")J.push=await WI({targetDbPath:D.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:D.home,targetStorage:j,targetStore:N,bundle:z(),targetBundle:W(),direction:"push",dryRun:_.dryRun,localMachineId:A});return J.ok=(J.pull?.ok??!0)&&(J.push?.ok??!0),J.message=[uG(J.resolved_workspace),J.pull?`pull: ${J.pull.message}`:null,J.push?`push: ${J.push.message}`:null].filter(Boolean).join("; "),J}}function IN(_={}){return new sG(_)}import{createHash as _9}from"crypto";var Tb=Object.defineProperty,qb=(_)=>_;function Bb(_,$){this[_]=qb.bind(null,$)}var Kb=(_,$)=>{for(var g in $)Tb(_,g,{get:$[g],enumerable:!0,configurable:!0,set:Bb.bind($,g)})},E={};Kb(E,{void:()=>OH,util:()=>U_,unknown:()=>NH,union:()=>PH,undefined:()=>UH,tuple:()=>WH,transformer:()=>D9,symbol:()=>DH,string:()=>X9,strictObject:()=>JH,setErrorMap:()=>Mb,set:()=>GH,record:()=>XH,quotelessJson:()=>Vb,promise:()=>KH,preprocess:()=>MH,pipeline:()=>ZH,ostring:()=>bH,optional:()=>VH,onumber:()=>HH,oboolean:()=>kH,objectUtil:()=>C3,object:()=>LH,number:()=>R9,nullable:()=>FH,null:()=>IH,never:()=>EH,nativeEnum:()=>BH,nan:()=>_H,map:()=>RH,makeIssue:()=>EN,literal:()=>TH,lazy:()=>QH,late:()=>ab,isValid:()=>n4,isDirty:()=>v3,isAsync:()=>zU,isAborted:()=>r3,intersection:()=>SH,instanceof:()=>sb,getParsedType:()=>P6,getErrorMap:()=>NN,function:()=>YH,enum:()=>qH,effect:()=>D9,discriminatedUnion:()=>zH,defaultErrorMap:()=>Og,datetimeRegex:()=>z9,date:()=>gH,custom:()=>W9,coerce:()=>CH,boolean:()=>G9,bigint:()=>$H,array:()=>AH,any:()=>jH,addIssueToContext:()=>u,ZodVoid:()=>WU,ZodUnknown:()=>m6,ZodUnion:()=>Pg,ZodUndefined:()=>Lg,ZodType:()=>__,ZodTuple:()=>d$,ZodTransformer:()=>R$,ZodSymbol:()=>SU,ZodString:()=>F$,ZodSet:()=>i4,ZodSchema:()=>__,ZodRecord:()=>XU,ZodReadonly:()=>Yg,ZodPromise:()=>l4,ZodPipeline:()=>YU,ZodParsedType:()=>y,ZodOptional:()=>Z$,ZodObject:()=>b_,ZodNumber:()=>i6,ZodNullable:()=>z6,ZodNull:()=>Jg,ZodNever:()=>n$,ZodNativeEnum:()=>Xg,ZodNaN:()=>GU,ZodMap:()=>RU,ZodLiteral:()=>Wg,ZodLazy:()=>Sg,ZodIssueCode:()=>k,ZodIntersection:()=>zg,ZodFunction:()=>Ng,ZodFirstPartyTypeKind:()=>i,ZodError:()=>O$,ZodEnum:()=>t6,ZodEffects:()=>R$,ZodDiscriminatedUnion:()=>LN,ZodDefault:()=>Rg,ZodDate:()=>d4,ZodCatch:()=>Gg,ZodBranded:()=>JN,ZodBoolean:()=>Ag,ZodBigInt:()=>l6,ZodArray:()=>M$,ZodAny:()=>m4,Schema:()=>__,ParseStatus:()=>m_,OK:()=>a_,NEVER:()=>rH,INVALID:()=>m,EMPTY_PATH:()=>Zb,DIRTY:()=>jg,BRAND:()=>eb});var U_;(function(_){_.assertEqual=(D)=>{};function $(D){}_.assertIs=$;function g(D){throw Error()}_.assertNever=g,_.arrayToEnum=(D)=>{let I={};for(let j of D)I[j]=j;return I},_.getValidEnumValues=(D)=>{let I=_.objectKeys(D).filter((N)=>typeof D[D[N]]!=="number"),j={};for(let N of I)j[N]=D[N];return _.objectValues(j)},_.objectValues=(D)=>{return _.objectKeys(D).map(function(I){return D[I]})},_.objectKeys=typeof Object.keys==="function"?(D)=>Object.keys(D):(D)=>{let I=[];for(let j in D)if(Object.prototype.hasOwnProperty.call(D,j))I.push(j);return I},_.find=(D,I)=>{for(let j of D)if(I(j))return j;return},_.isInteger=typeof Number.isInteger==="function"?(D)=>Number.isInteger(D):(D)=>typeof D==="number"&&Number.isFinite(D)&&Math.floor(D)===D;function U(D,I=" | "){return D.map((j)=>typeof j==="string"?`'${j}'`:j).join(I)}_.joinValues=U,_.jsonStringifyReplacer=(D,I)=>{if(typeof I==="bigint")return I.toString();return I}})(U_||(U_={}));var C3;(function(_){_.mergeShapes=($,g)=>{return{...$,...g}}})(C3||(C3={}));var y=U_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),P6=(_)=>{switch(typeof _){case"undefined":return y.undefined;case"string":return y.string;case"number":return Number.isNaN(_)?y.nan:y.number;case"boolean":return y.boolean;case"function":return y.function;case"bigint":return y.bigint;case"symbol":return y.symbol;case"object":if(Array.isArray(_))return y.array;if(_===null)return y.null;if(_.then&&typeof _.then==="function"&&_.catch&&typeof _.catch==="function")return y.promise;if(typeof Map<"u"&&_ instanceof Map)return y.map;if(typeof Set<"u"&&_ instanceof Set)return y.set;if(typeof Date<"u"&&_ instanceof Date)return y.date;return y.object;default:return y.unknown}},k=U_.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),Vb=(_)=>{return JSON.stringify(_,null,2).replace(/"([^"]+)":/g,"$1:")};class O$ extends Error{get errors(){return this.issues}constructor(_){super();this.issues=[],this.addIssue=(g)=>{this.issues=[...this.issues,g]},this.addIssues=(g=[])=>{this.issues=[...this.issues,...g]};let $=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,$);else this.__proto__=$;this.name="ZodError",this.issues=_}format(_){let $=_||function(D){return D.message},g={_errors:[]},U=(D)=>{for(let I of D.issues)if(I.code==="invalid_union")I.unionErrors.map(U);else if(I.code==="invalid_return_type")U(I.returnTypeError);else if(I.code==="invalid_arguments")U(I.argumentsError);else if(I.path.length===0)g._errors.push($(I));else{let j=g,N=0;while(N$.message){let $={},g=[];for(let U of this.issues)if(U.path.length>0){let D=U.path[0];$[D]=$[D]||[],$[D].push(_(U))}else g.push(_(U));return{formErrors:g,fieldErrors:$}}get formErrors(){return this.flatten()}}O$.create=(_)=>{return new O$(_)};var Fb=(_,$)=>{let g;switch(_.code){case k.invalid_type:if(_.received===y.undefined)g="Required";else g=`Expected ${_.expected}, received ${_.received}`;break;case k.invalid_literal:g=`Invalid literal value, expected ${JSON.stringify(_.expected,U_.jsonStringifyReplacer)}`;break;case k.unrecognized_keys:g=`Unrecognized key(s) in object: ${U_.joinValues(_.keys,", ")}`;break;case k.invalid_union:g="Invalid input";break;case k.invalid_union_discriminator:g=`Invalid discriminator value. Expected ${U_.joinValues(_.options)}`;break;case k.invalid_enum_value:g=`Invalid enum value. Expected ${U_.joinValues(_.options)}, received '${_.received}'`;break;case k.invalid_arguments:g="Invalid function arguments";break;case k.invalid_return_type:g="Invalid function return type";break;case k.invalid_date:g="Invalid date";break;case k.invalid_string:if(typeof _.validation==="object")if("includes"in _.validation){if(g=`Invalid input: must include "${_.validation.includes}"`,typeof _.validation.position==="number")g=`${g} at one or more positions greater than or equal to ${_.validation.position}`}else if("startsWith"in _.validation)g=`Invalid input: must start with "${_.validation.startsWith}"`;else if("endsWith"in _.validation)g=`Invalid input: must end with "${_.validation.endsWith}"`;else U_.assertNever(_.validation);else if(_.validation!=="regex")g=`Invalid ${_.validation}`;else g="Invalid";break;case k.too_small:if(_.type==="array")g=`Array must contain ${_.exact?"exactly":_.inclusive?"at least":"more than"} ${_.minimum} element(s)`;else if(_.type==="string")g=`String must contain ${_.exact?"exactly":_.inclusive?"at least":"over"} ${_.minimum} character(s)`;else if(_.type==="number")g=`Number must be ${_.exact?"exactly equal to ":_.inclusive?"greater than or equal to ":"greater than "}${_.minimum}`;else if(_.type==="bigint")g=`Number must be ${_.exact?"exactly equal to ":_.inclusive?"greater than or equal to ":"greater than "}${_.minimum}`;else if(_.type==="date")g=`Date must be ${_.exact?"exactly equal to ":_.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(_.minimum))}`;else g="Invalid input";break;case k.too_big:if(_.type==="array")g=`Array must contain ${_.exact?"exactly":_.inclusive?"at most":"less than"} ${_.maximum} element(s)`;else if(_.type==="string")g=`String must contain ${_.exact?"exactly":_.inclusive?"at most":"under"} ${_.maximum} character(s)`;else if(_.type==="number")g=`Number must be ${_.exact?"exactly":_.inclusive?"less than or equal to":"less than"} ${_.maximum}`;else if(_.type==="bigint")g=`BigInt must be ${_.exact?"exactly":_.inclusive?"less than or equal to":"less than"} ${_.maximum}`;else if(_.type==="date")g=`Date must be ${_.exact?"exactly":_.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(_.maximum))}`;else g="Invalid input";break;case k.custom:g="Invalid input";break;case k.invalid_intersection_types:g="Intersection results could not be merged";break;case k.not_multiple_of:g=`Number must be a multiple of ${_.multipleOf}`;break;case k.not_finite:g="Number must be finite";break;default:g=$.defaultError,U_.assertNever(_)}return{message:g}},Og=Fb,L9=Og;function Mb(_){L9=_}function NN(){return L9}var EN=(_)=>{let{data:$,path:g,errorMaps:U,issueData:D}=_,I=[...g,...D.path||[]],j={...D,path:I};if(D.message!==void 0)return{...D,path:I,message:D.message};let N="",O=U.filter((A)=>!!A).slice().reverse();for(let A of O)N=A(j,{data:$,defaultError:N}).message;return{...D,path:I,message:N}},Zb=[];function u(_,$){let g=NN(),U=EN({issueData:$,data:_.data,path:_.path,errorMaps:[_.common.contextualErrorMap,_.schemaErrorMap,g,g===Og?void 0:Og].filter((D)=>!!D)});_.common.issues.push(U)}class m_{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(_,$){let g=[];for(let U of $){if(U.status==="aborted")return m;if(U.status==="dirty")_.dirty();g.push(U.value)}return{status:_.value,value:g}}static async mergeObjectAsync(_,$){let g=[];for(let U of $){let D=await U.key,I=await U.value;g.push({key:D,value:I})}return m_.mergeObjectSync(_,g)}static mergeObjectSync(_,$){let g={};for(let U of $){let{key:D,value:I}=U;if(D.status==="aborted")return m;if(I.status==="aborted")return m;if(D.status==="dirty")_.dirty();if(I.status==="dirty")_.dirty();if(D.value!=="__proto__"&&(typeof I.value<"u"||U.alwaysSet))g[D.value]=I.value}return{status:_.value,value:g}}}var m=Object.freeze({status:"aborted"}),jg=(_)=>({status:"dirty",value:_}),a_=(_)=>({status:"valid",value:_}),r3=(_)=>_.status==="aborted",v3=(_)=>_.status==="dirty",n4=(_)=>_.status==="valid",zU=(_)=>typeof Promise<"u"&&_ instanceof Promise,n;(function(_){_.errToObj=($)=>typeof $==="string"?{message:$}:$||{},_.toString=($)=>typeof $==="string"?$:$?.message})(n||(n={}));class b${constructor(_,$,g,U){this._cachedPath=[],this.parent=_,this.data=$,this._path=g,this._key=U}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var $9=(_,$)=>{if(n4($))return{success:!0,data:$.value};else{if(!_.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let g=new O$(_.common.issues);return this._error=g,this._error}}}};function p(_){if(!_)return{};let{errorMap:$,invalid_type_error:g,required_error:U,description:D}=_;if($&&(g||U))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if($)return{errorMap:$,description:D};return{errorMap:(j,N)=>{let{message:O}=_;if(j.code==="invalid_enum_value")return{message:O??N.defaultError};if(typeof N.data>"u")return{message:O??U??N.defaultError};if(j.code!=="invalid_type")return{message:N.defaultError};return{message:O??g??N.defaultError}},description:D}}class __{get description(){return this._def.description}_getType(_){return P6(_.data)}_getOrReturnCtx(_,$){return $||{common:_.parent.common,data:_.data,parsedType:P6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}_processInputParams(_){return{status:new m_,ctx:{common:_.parent.common,data:_.data,parsedType:P6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}}_parseSync(_){let $=this._parse(_);if(zU($))throw Error("Synchronous parse encountered promise.");return $}_parseAsync(_){let $=this._parse(_);return Promise.resolve($)}parse(_,$){let g=this.safeParse(_,$);if(g.success)return g.data;throw g.error}safeParse(_,$){let g={common:{issues:[],async:$?.async??!1,contextualErrorMap:$?.errorMap},path:$?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:P6(_)},U=this._parseSync({data:_,path:g.path,parent:g});return $9(g,U)}"~validate"(_){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:P6(_)};if(!this["~standard"].async)try{let g=this._parseSync({data:_,path:[],parent:$});return n4(g)?{value:g.value}:{issues:$.common.issues}}catch(g){if(g?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;$.common={issues:[],async:!0}}return this._parseAsync({data:_,path:[],parent:$}).then((g)=>n4(g)?{value:g.value}:{issues:$.common.issues})}async parseAsync(_,$){let g=await this.safeParseAsync(_,$);if(g.success)return g.data;throw g.error}async safeParseAsync(_,$){let g={common:{issues:[],contextualErrorMap:$?.errorMap,async:!0},path:$?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:P6(_)},U=this._parse({data:_,path:g.path,parent:g}),D=await(zU(U)?U:Promise.resolve(U));return $9(g,D)}refine(_,$){let g=(U)=>{if(typeof $==="string"||typeof $>"u")return{message:$};else if(typeof $==="function")return $(U);else return $};return this._refinement((U,D)=>{let I=_(U),j=()=>D.addIssue({code:k.custom,...g(U)});if(typeof Promise<"u"&&I instanceof Promise)return I.then((N)=>{if(!N)return j(),!1;else return!0});if(!I)return j(),!1;else return!0})}refinement(_,$){return this._refinement((g,U)=>{if(!_(g))return U.addIssue(typeof $==="function"?$(g,U):$),!1;else return!0})}_refinement(_){return new R$({schema:this,typeName:i.ZodEffects,effect:{type:"refinement",refinement:_}})}superRefine(_){return this._refinement(_)}constructor(_){this.spa=this.safeParseAsync,this._def=_,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:($)=>this["~validate"]($)}}optional(){return Z$.create(this,this._def)}nullable(){return z6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return M$.create(this)}promise(){return l4.create(this,this._def)}or(_){return Pg.create([this,_],this._def)}and(_){return zg.create(this,_,this._def)}transform(_){return new R$({...p(this._def),schema:this,typeName:i.ZodEffects,effect:{type:"transform",transform:_}})}default(_){let $=typeof _==="function"?_:()=>_;return new Rg({...p(this._def),innerType:this,defaultValue:$,typeName:i.ZodDefault})}brand(){return new JN({typeName:i.ZodBranded,type:this,...p(this._def)})}catch(_){let $=typeof _==="function"?_:()=>_;return new Gg({...p(this._def),innerType:this,catchValue:$,typeName:i.ZodCatch})}describe(_){return new this.constructor({...this._def,description:_})}pipe(_){return YU.create(this,_)}readonly(){return Yg.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var bb=/^c[^\s-]{8,}$/i,Hb=/^[0-9a-z]+$/,kb=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Cb=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,rb=/^[a-z0-9_-]{21}$/i,vb=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,wb=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,fb=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ub="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",H3,xb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,yb=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,hb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,cb=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,nb=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,db=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,J9="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",mb=new RegExp(`^${J9}$`);function P9(_){let $="[0-5]\\d";if(_.precision)$=`${$}\\.\\d{${_.precision}}`;else if(_.precision==null)$=`${$}(\\.\\d+)?`;let g=_.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${$})${g}`}function ib(_){return new RegExp(`^${P9(_)}$`)}function z9(_){let $=`${J9}T${P9(_)}`,g=[];if(g.push(_.local?"Z?":"Z"),_.offset)g.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${g.join("|")})`,new RegExp(`^${$}$`)}function lb(_,$){if(($==="v4"||!$)&&xb.test(_))return!0;if(($==="v6"||!$)&&hb.test(_))return!0;return!1}function tb(_,$){if(!vb.test(_))return!1;try{let[g]=_.split(".");if(!g)return!1;let U=g.replace(/-/g,"+").replace(/_/g,"/").padEnd(g.length+(4-g.length%4)%4,"="),D=JSON.parse(atob(U));if(typeof D!=="object"||D===null)return!1;if("typ"in D&&D?.typ!=="JWT")return!1;if(!D.alg)return!1;if($&&D.alg!==$)return!1;return!0}catch{return!1}}function ob(_,$){if(($==="v4"||!$)&&yb.test(_))return!0;if(($==="v6"||!$)&&cb.test(_))return!0;return!1}class F$ extends __{_parse(_){if(this._def.coerce)_.data=String(_.data);if(this._getType(_)!==y.string){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.string,received:D.parsedType}),m}let g=new m_,U=void 0;for(let D of this._def.checks)if(D.kind==="min"){if(_.data.lengthD.value)U=this._getOrReturnCtx(_,U),u(U,{code:k.too_big,maximum:D.value,type:"string",inclusive:!0,exact:!1,message:D.message}),g.dirty()}else if(D.kind==="length"){let I=_.data.length>D.value,j=_.data.length_.test(U),{validation:$,code:k.invalid_string,...n.errToObj(g)})}_addCheck(_){return new F$({...this._def,checks:[...this._def.checks,_]})}email(_){return this._addCheck({kind:"email",...n.errToObj(_)})}url(_){return this._addCheck({kind:"url",...n.errToObj(_)})}emoji(_){return this._addCheck({kind:"emoji",...n.errToObj(_)})}uuid(_){return this._addCheck({kind:"uuid",...n.errToObj(_)})}nanoid(_){return this._addCheck({kind:"nanoid",...n.errToObj(_)})}cuid(_){return this._addCheck({kind:"cuid",...n.errToObj(_)})}cuid2(_){return this._addCheck({kind:"cuid2",...n.errToObj(_)})}ulid(_){return this._addCheck({kind:"ulid",...n.errToObj(_)})}base64(_){return this._addCheck({kind:"base64",...n.errToObj(_)})}base64url(_){return this._addCheck({kind:"base64url",...n.errToObj(_)})}jwt(_){return this._addCheck({kind:"jwt",...n.errToObj(_)})}ip(_){return this._addCheck({kind:"ip",...n.errToObj(_)})}cidr(_){return this._addCheck({kind:"cidr",...n.errToObj(_)})}datetime(_){if(typeof _==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:_});return this._addCheck({kind:"datetime",precision:typeof _?.precision>"u"?null:_?.precision,offset:_?.offset??!1,local:_?.local??!1,...n.errToObj(_?.message)})}date(_){return this._addCheck({kind:"date",message:_})}time(_){if(typeof _==="string")return this._addCheck({kind:"time",precision:null,message:_});return this._addCheck({kind:"time",precision:typeof _?.precision>"u"?null:_?.precision,...n.errToObj(_?.message)})}duration(_){return this._addCheck({kind:"duration",...n.errToObj(_)})}regex(_,$){return this._addCheck({kind:"regex",regex:_,...n.errToObj($)})}includes(_,$){return this._addCheck({kind:"includes",value:_,position:$?.position,...n.errToObj($?.message)})}startsWith(_,$){return this._addCheck({kind:"startsWith",value:_,...n.errToObj($)})}endsWith(_,$){return this._addCheck({kind:"endsWith",value:_,...n.errToObj($)})}min(_,$){return this._addCheck({kind:"min",value:_,...n.errToObj($)})}max(_,$){return this._addCheck({kind:"max",value:_,...n.errToObj($)})}length(_,$){return this._addCheck({kind:"length",value:_,...n.errToObj($)})}nonempty(_){return this.min(1,n.errToObj(_))}trim(){return new F$({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new F$({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new F$({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((_)=>_.kind==="datetime")}get isDate(){return!!this._def.checks.find((_)=>_.kind==="date")}get isTime(){return!!this._def.checks.find((_)=>_.kind==="time")}get isDuration(){return!!this._def.checks.find((_)=>_.kind==="duration")}get isEmail(){return!!this._def.checks.find((_)=>_.kind==="email")}get isURL(){return!!this._def.checks.find((_)=>_.kind==="url")}get isEmoji(){return!!this._def.checks.find((_)=>_.kind==="emoji")}get isUUID(){return!!this._def.checks.find((_)=>_.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((_)=>_.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((_)=>_.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((_)=>_.kind==="cuid2")}get isULID(){return!!this._def.checks.find((_)=>_.kind==="ulid")}get isIP(){return!!this._def.checks.find((_)=>_.kind==="ip")}get isCIDR(){return!!this._def.checks.find((_)=>_.kind==="cidr")}get isBase64(){return!!this._def.checks.find((_)=>_.kind==="base64")}get isBase64url(){return!!this._def.checks.find((_)=>_.kind==="base64url")}get minLength(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _}get maxLength(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _}}F$.create=(_)=>{return new F$({checks:[],typeName:i.ZodString,coerce:_?.coerce??!1,...p(_)})};function pb(_,$){let g=(_.toString().split(".")[1]||"").length,U=($.toString().split(".")[1]||"").length,D=g>U?g:U,I=Number.parseInt(_.toFixed(D).replace(".","")),j=Number.parseInt($.toFixed(D).replace(".",""));return I%j/10**D}class i6 extends __{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(_){if(this._def.coerce)_.data=Number(_.data);if(this._getType(_)!==y.number){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.number,received:D.parsedType}),m}let g=void 0,U=new m_;for(let D of this._def.checks)if(D.kind==="int"){if(!U_.isInteger(_.data))g=this._getOrReturnCtx(_,g),u(g,{code:k.invalid_type,expected:"integer",received:"float",message:D.message}),U.dirty()}else if(D.kind==="min"){if(D.inclusive?_.dataD.value:_.data>=D.value)g=this._getOrReturnCtx(_,g),u(g,{code:k.too_big,maximum:D.value,type:"number",inclusive:D.inclusive,exact:!1,message:D.message}),U.dirty()}else if(D.kind==="multipleOf"){if(pb(_.data,D.value)!==0)g=this._getOrReturnCtx(_,g),u(g,{code:k.not_multiple_of,multipleOf:D.value,message:D.message}),U.dirty()}else if(D.kind==="finite"){if(!Number.isFinite(_.data))g=this._getOrReturnCtx(_,g),u(g,{code:k.not_finite,message:D.message}),U.dirty()}else U_.assertNever(D);return{status:U.value,value:_.data}}gte(_,$){return this.setLimit("min",_,!0,n.toString($))}gt(_,$){return this.setLimit("min",_,!1,n.toString($))}lte(_,$){return this.setLimit("max",_,!0,n.toString($))}lt(_,$){return this.setLimit("max",_,!1,n.toString($))}setLimit(_,$,g,U){return new i6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:g,message:n.toString(U)}]})}_addCheck(_){return new i6({...this._def,checks:[...this._def.checks,_]})}int(_){return this._addCheck({kind:"int",message:n.toString(_)})}positive(_){return this._addCheck({kind:"min",value:0,inclusive:!1,message:n.toString(_)})}negative(_){return this._addCheck({kind:"max",value:0,inclusive:!1,message:n.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:0,inclusive:!0,message:n.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:0,inclusive:!0,message:n.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:n.toString($)})}finite(_){return this._addCheck({kind:"finite",message:n.toString(_)})}safe(_){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:n.toString(_)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:n.toString(_)})}get minValue(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _}get maxValue(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _}get isInt(){return!!this._def.checks.find((_)=>_.kind==="int"||_.kind==="multipleOf"&&U_.isInteger(_.value))}get isFinite(){let _=null,$=null;for(let g of this._def.checks)if(g.kind==="finite"||g.kind==="int"||g.kind==="multipleOf")return!0;else if(g.kind==="min"){if($===null||g.value>$)$=g.value}else if(g.kind==="max"){if(_===null||g.value<_)_=g.value}return Number.isFinite($)&&Number.isFinite(_)}}i6.create=(_)=>{return new i6({checks:[],typeName:i.ZodNumber,coerce:_?.coerce||!1,...p(_)})};class l6 extends __{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(_){if(this._def.coerce)try{_.data=BigInt(_.data)}catch{return this._getInvalidInput(_)}if(this._getType(_)!==y.bigint)return this._getInvalidInput(_);let g=void 0,U=new m_;for(let D of this._def.checks)if(D.kind==="min"){if(D.inclusive?_.dataD.value:_.data>=D.value)g=this._getOrReturnCtx(_,g),u(g,{code:k.too_big,type:"bigint",maximum:D.value,inclusive:D.inclusive,message:D.message}),U.dirty()}else if(D.kind==="multipleOf"){if(_.data%D.value!==BigInt(0))g=this._getOrReturnCtx(_,g),u(g,{code:k.not_multiple_of,multipleOf:D.value,message:D.message}),U.dirty()}else U_.assertNever(D);return{status:U.value,value:_.data}}_getInvalidInput(_){let $=this._getOrReturnCtx(_);return u($,{code:k.invalid_type,expected:y.bigint,received:$.parsedType}),m}gte(_,$){return this.setLimit("min",_,!0,n.toString($))}gt(_,$){return this.setLimit("min",_,!1,n.toString($))}lte(_,$){return this.setLimit("max",_,!0,n.toString($))}lt(_,$){return this.setLimit("max",_,!1,n.toString($))}setLimit(_,$,g,U){return new l6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:g,message:n.toString(U)}]})}_addCheck(_){return new l6({...this._def,checks:[...this._def.checks,_]})}positive(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:n.toString(_)})}negative(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:n.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:n.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:n.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:n.toString($)})}get minValue(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _}get maxValue(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _}}l6.create=(_)=>{return new l6({checks:[],typeName:i.ZodBigInt,coerce:_?.coerce??!1,...p(_)})};class Ag extends __{_parse(_){if(this._def.coerce)_.data=Boolean(_.data);if(this._getType(_)!==y.boolean){let g=this._getOrReturnCtx(_);return u(g,{code:k.invalid_type,expected:y.boolean,received:g.parsedType}),m}return a_(_.data)}}Ag.create=(_)=>{return new Ag({typeName:i.ZodBoolean,coerce:_?.coerce||!1,...p(_)})};class d4 extends __{_parse(_){if(this._def.coerce)_.data=new Date(_.data);if(this._getType(_)!==y.date){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.date,received:D.parsedType}),m}if(Number.isNaN(_.data.getTime())){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_date}),m}let g=new m_,U=void 0;for(let D of this._def.checks)if(D.kind==="min"){if(_.data.getTime()D.value)U=this._getOrReturnCtx(_,U),u(U,{code:k.too_big,message:D.message,inclusive:!0,exact:!1,maximum:D.value,type:"date"}),g.dirty()}else U_.assertNever(D);return{status:g.value,value:new Date(_.data.getTime())}}_addCheck(_){return new d4({...this._def,checks:[...this._def.checks,_]})}min(_,$){return this._addCheck({kind:"min",value:_.getTime(),message:n.toString($)})}max(_,$){return this._addCheck({kind:"max",value:_.getTime(),message:n.toString($)})}get minDate(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _!=null?new Date(_):null}get maxDate(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _!=null?new Date(_):null}}d4.create=(_)=>{return new d4({checks:[],coerce:_?.coerce||!1,typeName:i.ZodDate,...p(_)})};class SU extends __{_parse(_){if(this._getType(_)!==y.symbol){let g=this._getOrReturnCtx(_);return u(g,{code:k.invalid_type,expected:y.symbol,received:g.parsedType}),m}return a_(_.data)}}SU.create=(_)=>{return new SU({typeName:i.ZodSymbol,...p(_)})};class Lg extends __{_parse(_){if(this._getType(_)!==y.undefined){let g=this._getOrReturnCtx(_);return u(g,{code:k.invalid_type,expected:y.undefined,received:g.parsedType}),m}return a_(_.data)}}Lg.create=(_)=>{return new Lg({typeName:i.ZodUndefined,...p(_)})};class Jg extends __{_parse(_){if(this._getType(_)!==y.null){let g=this._getOrReturnCtx(_);return u(g,{code:k.invalid_type,expected:y.null,received:g.parsedType}),m}return a_(_.data)}}Jg.create=(_)=>{return new Jg({typeName:i.ZodNull,...p(_)})};class m4 extends __{constructor(){super(...arguments);this._any=!0}_parse(_){return a_(_.data)}}m4.create=(_)=>{return new m4({typeName:i.ZodAny,...p(_)})};class m6 extends __{constructor(){super(...arguments);this._unknown=!0}_parse(_){return a_(_.data)}}m6.create=(_)=>{return new m6({typeName:i.ZodUnknown,...p(_)})};class n$ extends __{_parse(_){let $=this._getOrReturnCtx(_);return u($,{code:k.invalid_type,expected:y.never,received:$.parsedType}),m}}n$.create=(_)=>{return new n$({typeName:i.ZodNever,...p(_)})};class WU extends __{_parse(_){if(this._getType(_)!==y.undefined){let g=this._getOrReturnCtx(_);return u(g,{code:k.invalid_type,expected:y.void,received:g.parsedType}),m}return a_(_.data)}}WU.create=(_)=>{return new WU({typeName:i.ZodVoid,...p(_)})};class M$ extends __{_parse(_){let{ctx:$,status:g}=this._processInputParams(_),U=this._def;if($.parsedType!==y.array)return u($,{code:k.invalid_type,expected:y.array,received:$.parsedType}),m;if(U.exactLength!==null){let I=$.data.length>U.exactLength.value,j=$.data.lengthU.maxLength.value)u($,{code:k.too_big,maximum:U.maxLength.value,type:"array",inclusive:!0,exact:!1,message:U.maxLength.message}),g.dirty()}if($.common.async)return Promise.all([...$.data].map((I,j)=>{return U.type._parseAsync(new b$($,I,$.path,j))})).then((I)=>{return m_.mergeArray(g,I)});let D=[...$.data].map((I,j)=>{return U.type._parseSync(new b$($,I,$.path,j))});return m_.mergeArray(g,D)}get element(){return this._def.type}min(_,$){return new M$({...this._def,minLength:{value:_,message:n.toString($)}})}max(_,$){return new M$({...this._def,maxLength:{value:_,message:n.toString($)}})}length(_,$){return new M$({...this._def,exactLength:{value:_,message:n.toString($)}})}nonempty(_){return this.min(1,_)}}M$.create=(_,$)=>{return new M$({type:_,minLength:null,maxLength:null,exactLength:null,typeName:i.ZodArray,...p($)})};function Ug(_){if(_ instanceof b_){let $={};for(let g in _.shape){let U=_.shape[g];$[g]=Z$.create(Ug(U))}return new b_({..._._def,shape:()=>$})}else if(_ instanceof M$)return new M$({..._._def,type:Ug(_.element)});else if(_ instanceof Z$)return Z$.create(Ug(_.unwrap()));else if(_ instanceof z6)return z6.create(Ug(_.unwrap()));else if(_ instanceof d$)return d$.create(_.items.map(($)=>Ug($)));else return _}class b_ extends __{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let _=this._def.shape(),$=U_.objectKeys(_);return this._cached={shape:_,keys:$},this._cached}_parse(_){if(this._getType(_)!==y.object){let O=this._getOrReturnCtx(_);return u(O,{code:k.invalid_type,expected:y.object,received:O.parsedType}),m}let{status:g,ctx:U}=this._processInputParams(_),{shape:D,keys:I}=this._getCached(),j=[];if(!(this._def.catchall instanceof n$&&this._def.unknownKeys==="strip")){for(let O in U.data)if(!I.includes(O))j.push(O)}let N=[];for(let O of I){let A=D[O],L=U.data[O];N.push({key:{status:"valid",value:O},value:A._parse(new b$(U,L,U.path,O)),alwaysSet:O in U.data})}if(this._def.catchall instanceof n$){let O=this._def.unknownKeys;if(O==="passthrough")for(let A of j)N.push({key:{status:"valid",value:A},value:{status:"valid",value:U.data[A]}});else if(O==="strict"){if(j.length>0)u(U,{code:k.unrecognized_keys,keys:j}),g.dirty()}else if(O==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let O=this._def.catchall;for(let A of j){let L=U.data[A];N.push({key:{status:"valid",value:A},value:O._parse(new b$(U,L,U.path,A)),alwaysSet:A in U.data})}}if(U.common.async)return Promise.resolve().then(async()=>{let O=[];for(let A of N){let L=await A.key,z=await A.value;O.push({key:L,value:z,alwaysSet:A.alwaysSet})}return O}).then((O)=>{return m_.mergeObjectSync(g,O)});else return m_.mergeObjectSync(g,N)}get shape(){return this._def.shape()}strict(_){return n.errToObj,new b_({...this._def,unknownKeys:"strict",..._!==void 0?{errorMap:($,g)=>{let U=this._def.errorMap?.($,g).message??g.defaultError;if($.code==="unrecognized_keys")return{message:n.errToObj(_).message??U};return{message:U}}}:{}})}strip(){return new b_({...this._def,unknownKeys:"strip"})}passthrough(){return new b_({...this._def,unknownKeys:"passthrough"})}extend(_){return new b_({...this._def,shape:()=>({...this._def.shape(),..._})})}merge(_){return new b_({unknownKeys:_._def.unknownKeys,catchall:_._def.catchall,shape:()=>({...this._def.shape(),..._._def.shape()}),typeName:i.ZodObject})}setKey(_,$){return this.augment({[_]:$})}catchall(_){return new b_({...this._def,catchall:_})}pick(_){let $={};for(let g of U_.objectKeys(_))if(_[g]&&this.shape[g])$[g]=this.shape[g];return new b_({...this._def,shape:()=>$})}omit(_){let $={};for(let g of U_.objectKeys(this.shape))if(!_[g])$[g]=this.shape[g];return new b_({...this._def,shape:()=>$})}deepPartial(){return Ug(this)}partial(_){let $={};for(let g of U_.objectKeys(this.shape)){let U=this.shape[g];if(_&&!_[g])$[g]=U;else $[g]=U.optional()}return new b_({...this._def,shape:()=>$})}required(_){let $={};for(let g of U_.objectKeys(this.shape))if(_&&!_[g])$[g]=this.shape[g];else{let D=this.shape[g];while(D instanceof Z$)D=D._def.innerType;$[g]=D}return new b_({...this._def,shape:()=>$})}keyof(){return S9(U_.objectKeys(this.shape))}}b_.create=(_,$)=>{return new b_({shape:()=>_,unknownKeys:"strip",catchall:n$.create(),typeName:i.ZodObject,...p($)})};b_.strictCreate=(_,$)=>{return new b_({shape:()=>_,unknownKeys:"strict",catchall:n$.create(),typeName:i.ZodObject,...p($)})};b_.lazycreate=(_,$)=>{return new b_({shape:_,unknownKeys:"strip",catchall:n$.create(),typeName:i.ZodObject,...p($)})};class Pg extends __{_parse(_){let{ctx:$}=this._processInputParams(_),g=this._def.options;function U(D){for(let j of D)if(j.result.status==="valid")return j.result;for(let j of D)if(j.result.status==="dirty")return $.common.issues.push(...j.ctx.common.issues),j.result;let I=D.map((j)=>new O$(j.ctx.common.issues));return u($,{code:k.invalid_union,unionErrors:I}),m}if($.common.async)return Promise.all(g.map(async(D)=>{let I={...$,common:{...$.common,issues:[]},parent:null};return{result:await D._parseAsync({data:$.data,path:$.path,parent:I}),ctx:I}})).then(U);else{let D=void 0,I=[];for(let N of g){let O={...$,common:{...$.common,issues:[]},parent:null},A=N._parseSync({data:$.data,path:$.path,parent:O});if(A.status==="valid")return A;else if(A.status==="dirty"&&!D)D={result:A,ctx:O};if(O.common.issues.length)I.push(O.common.issues)}if(D)return $.common.issues.push(...D.ctx.common.issues),D.result;let j=I.map((N)=>new O$(N));return u($,{code:k.invalid_union,unionErrors:j}),m}}get options(){return this._def.options}}Pg.create=(_,$)=>{return new Pg({options:_,typeName:i.ZodUnion,...p($)})};var J6=(_)=>{if(_ instanceof Sg)return J6(_.schema);else if(_ instanceof R$)return J6(_.innerType());else if(_ instanceof Wg)return[_.value];else if(_ instanceof t6)return _.options;else if(_ instanceof Xg)return U_.objectValues(_.enum);else if(_ instanceof Rg)return J6(_._def.innerType);else if(_ instanceof Lg)return[void 0];else if(_ instanceof Jg)return[null];else if(_ instanceof Z$)return[void 0,...J6(_.unwrap())];else if(_ instanceof z6)return[null,...J6(_.unwrap())];else if(_ instanceof JN)return J6(_.unwrap());else if(_ instanceof Yg)return J6(_.unwrap());else if(_ instanceof Gg)return J6(_._def.innerType);else return[]};class LN extends __{_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.object)return u($,{code:k.invalid_type,expected:y.object,received:$.parsedType}),m;let g=this.discriminator,U=$.data[g],D=this.optionsMap.get(U);if(!D)return u($,{code:k.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[g]}),m;if($.common.async)return D._parseAsync({data:$.data,path:$.path,parent:$});else return D._parseSync({data:$.data,path:$.path,parent:$})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(_,$,g){let U=new Map;for(let D of $){let I=J6(D.shape[_]);if(!I.length)throw Error(`A discriminator value for key \`${_}\` could not be extracted from all schema options`);for(let j of I){if(U.has(j))throw Error(`Discriminator property ${String(_)} has duplicate value ${String(j)}`);U.set(j,D)}}return new LN({typeName:i.ZodDiscriminatedUnion,discriminator:_,options:$,optionsMap:U,...p(g)})}}function w3(_,$){let g=P6(_),U=P6($);if(_===$)return{valid:!0,data:_};else if(g===y.object&&U===y.object){let D=U_.objectKeys($),I=U_.objectKeys(_).filter((N)=>D.indexOf(N)!==-1),j={..._,...$};for(let N of I){let O=w3(_[N],$[N]);if(!O.valid)return{valid:!1};j[N]=O.data}return{valid:!0,data:j}}else if(g===y.array&&U===y.array){if(_.length!==$.length)return{valid:!1};let D=[];for(let I=0;I<_.length;I++){let j=_[I],N=$[I],O=w3(j,N);if(!O.valid)return{valid:!1};D.push(O.data)}return{valid:!0,data:D}}else if(g===y.date&&U===y.date&&+_===+$)return{valid:!0,data:_};else return{valid:!1}}class zg extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_),U=(D,I)=>{if(r3(D)||r3(I))return m;let j=w3(D.value,I.value);if(!j.valid)return u(g,{code:k.invalid_intersection_types}),m;if(v3(D)||v3(I))$.dirty();return{status:$.value,value:j.data}};if(g.common.async)return Promise.all([this._def.left._parseAsync({data:g.data,path:g.path,parent:g}),this._def.right._parseAsync({data:g.data,path:g.path,parent:g})]).then(([D,I])=>U(D,I));else return U(this._def.left._parseSync({data:g.data,path:g.path,parent:g}),this._def.right._parseSync({data:g.data,path:g.path,parent:g}))}}zg.create=(_,$,g)=>{return new zg({left:_,right:$,typeName:i.ZodIntersection,...p(g)})};class d$ extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.parsedType!==y.array)return u(g,{code:k.invalid_type,expected:y.array,received:g.parsedType}),m;if(g.data.lengththis._def.items.length)u(g,{code:k.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let D=[...g.data].map((I,j)=>{let N=this._def.items[j]||this._def.rest;if(!N)return null;return N._parse(new b$(g,I,g.path,j))}).filter((I)=>!!I);if(g.common.async)return Promise.all(D).then((I)=>{return m_.mergeArray($,I)});else return m_.mergeArray($,D)}get items(){return this._def.items}rest(_){return new d$({...this._def,rest:_})}}d$.create=(_,$)=>{if(!Array.isArray(_))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new d$({items:_,typeName:i.ZodTuple,rest:null,...p($)})};class XU extends __{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.parsedType!==y.object)return u(g,{code:k.invalid_type,expected:y.object,received:g.parsedType}),m;let U=[],D=this._def.keyType,I=this._def.valueType;for(let j in g.data)U.push({key:D._parse(new b$(g,j,g.path,j)),value:I._parse(new b$(g,g.data[j],g.path,j)),alwaysSet:j in g.data});if(g.common.async)return m_.mergeObjectAsync($,U);else return m_.mergeObjectSync($,U)}get element(){return this._def.valueType}static create(_,$,g){if($ instanceof __)return new XU({keyType:_,valueType:$,typeName:i.ZodRecord,...p(g)});return new XU({keyType:F$.create(),valueType:_,typeName:i.ZodRecord,...p($)})}}class RU extends __{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.parsedType!==y.map)return u(g,{code:k.invalid_type,expected:y.map,received:g.parsedType}),m;let U=this._def.keyType,D=this._def.valueType,I=[...g.data.entries()].map(([j,N],O)=>{return{key:U._parse(new b$(g,j,g.path,[O,"key"])),value:D._parse(new b$(g,N,g.path,[O,"value"]))}});if(g.common.async){let j=new Map;return Promise.resolve().then(async()=>{for(let N of I){let O=await N.key,A=await N.value;if(O.status==="aborted"||A.status==="aborted")return m;if(O.status==="dirty"||A.status==="dirty")$.dirty();j.set(O.value,A.value)}return{status:$.value,value:j}})}else{let j=new Map;for(let N of I){let{key:O,value:A}=N;if(O.status==="aborted"||A.status==="aborted")return m;if(O.status==="dirty"||A.status==="dirty")$.dirty();j.set(O.value,A.value)}return{status:$.value,value:j}}}}RU.create=(_,$,g)=>{return new RU({valueType:$,keyType:_,typeName:i.ZodMap,...p(g)})};class i4 extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.parsedType!==y.set)return u(g,{code:k.invalid_type,expected:y.set,received:g.parsedType}),m;let U=this._def;if(U.minSize!==null){if(g.data.sizeU.maxSize.value)u(g,{code:k.too_big,maximum:U.maxSize.value,type:"set",inclusive:!0,exact:!1,message:U.maxSize.message}),$.dirty()}let D=this._def.valueType;function I(N){let O=new Set;for(let A of N){if(A.status==="aborted")return m;if(A.status==="dirty")$.dirty();O.add(A.value)}return{status:$.value,value:O}}let j=[...g.data.values()].map((N,O)=>D._parse(new b$(g,N,g.path,O)));if(g.common.async)return Promise.all(j).then((N)=>I(N));else return I(j)}min(_,$){return new i4({...this._def,minSize:{value:_,message:n.toString($)}})}max(_,$){return new i4({...this._def,maxSize:{value:_,message:n.toString($)}})}size(_,$){return this.min(_,$).max(_,$)}nonempty(_){return this.min(1,_)}}i4.create=(_,$)=>{return new i4({valueType:_,minSize:null,maxSize:null,typeName:i.ZodSet,...p($)})};class Ng extends __{constructor(){super(...arguments);this.validate=this.implement}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.function)return u($,{code:k.invalid_type,expected:y.function,received:$.parsedType}),m;function g(j,N){return EN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,NN(),Og].filter((O)=>!!O),issueData:{code:k.invalid_arguments,argumentsError:N}})}function U(j,N){return EN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,NN(),Og].filter((O)=>!!O),issueData:{code:k.invalid_return_type,returnTypeError:N}})}let D={errorMap:$.common.contextualErrorMap},I=$.data;if(this._def.returns instanceof l4){let j=this;return a_(async function(...N){let O=new O$([]),A=await j._def.args.parseAsync(N,D).catch((W)=>{throw O.addIssue(g(N,W)),O}),L=await Reflect.apply(I,this,A);return await j._def.returns._def.type.parseAsync(L,D).catch((W)=>{throw O.addIssue(U(L,W)),O})})}else{let j=this;return a_(function(...N){let O=j._def.args.safeParse(N,D);if(!O.success)throw new O$([g(N,O.error)]);let A=Reflect.apply(I,this,O.data),L=j._def.returns.safeParse(A,D);if(!L.success)throw new O$([U(A,L.error)]);return L.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(..._){return new Ng({...this._def,args:d$.create(_).rest(m6.create())})}returns(_){return new Ng({...this._def,returns:_})}implement(_){return this.parse(_)}strictImplement(_){return this.parse(_)}static create(_,$,g){return new Ng({args:_?_:d$.create([]).rest(m6.create()),returns:$||m6.create(),typeName:i.ZodFunction,...p(g)})}}class Sg extends __{get schema(){return this._def.getter()}_parse(_){let{ctx:$}=this._processInputParams(_);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}}Sg.create=(_,$)=>{return new Sg({getter:_,typeName:i.ZodLazy,...p($)})};class Wg extends __{_parse(_){if(_.data!==this._def.value){let $=this._getOrReturnCtx(_);return u($,{received:$.data,code:k.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:_.data}}get value(){return this._def.value}}Wg.create=(_,$)=>{return new Wg({value:_,typeName:i.ZodLiteral,...p($)})};function S9(_,$){return new t6({values:_,typeName:i.ZodEnum,...p($)})}class t6 extends __{_parse(_){if(typeof _.data!=="string"){let $=this._getOrReturnCtx(_),g=this._def.values;return u($,{expected:U_.joinValues(g),received:$.parsedType,code:k.invalid_type}),m}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(_.data)){let $=this._getOrReturnCtx(_),g=this._def.values;return u($,{received:$.data,code:k.invalid_enum_value,options:g}),m}return a_(_.data)}get options(){return this._def.values}get enum(){let _={};for(let $ of this._def.values)_[$]=$;return _}get Values(){let _={};for(let $ of this._def.values)_[$]=$;return _}get Enum(){let _={};for(let $ of this._def.values)_[$]=$;return _}extract(_,$=this._def){return t6.create(_,{...this._def,...$})}exclude(_,$=this._def){return t6.create(this.options.filter((g)=>!_.includes(g)),{...this._def,...$})}}t6.create=S9;class Xg extends __{_parse(_){let $=U_.getValidEnumValues(this._def.values),g=this._getOrReturnCtx(_);if(g.parsedType!==y.string&&g.parsedType!==y.number){let U=U_.objectValues($);return u(g,{expected:U_.joinValues(U),received:g.parsedType,code:k.invalid_type}),m}if(!this._cache)this._cache=new Set(U_.getValidEnumValues(this._def.values));if(!this._cache.has(_.data)){let U=U_.objectValues($);return u(g,{received:g.data,code:k.invalid_enum_value,options:U}),m}return a_(_.data)}get enum(){return this._def.values}}Xg.create=(_,$)=>{return new Xg({values:_,typeName:i.ZodNativeEnum,...p($)})};class l4 extends __{unwrap(){return this._def.type}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.promise&&$.common.async===!1)return u($,{code:k.invalid_type,expected:y.promise,received:$.parsedType}),m;let g=$.parsedType===y.promise?$.data:Promise.resolve($.data);return a_(g.then((U)=>{return this._def.type.parseAsync(U,{path:$.path,errorMap:$.common.contextualErrorMap})}))}}l4.create=(_,$)=>{return new l4({type:_,typeName:i.ZodPromise,...p($)})};class R$ extends __{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===i.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(_){let{status:$,ctx:g}=this._processInputParams(_),U=this._def.effect||null,D={addIssue:(I)=>{if(u(g,I),I.fatal)$.abort();else $.dirty()},get path(){return g.path}};if(D.addIssue=D.addIssue.bind(D),U.type==="preprocess"){let I=U.transform(g.data,D);if(g.common.async)return Promise.resolve(I).then(async(j)=>{if($.value==="aborted")return m;let N=await this._def.schema._parseAsync({data:j,path:g.path,parent:g});if(N.status==="aborted")return m;if(N.status==="dirty")return jg(N.value);if($.value==="dirty")return jg(N.value);return N});else{if($.value==="aborted")return m;let j=this._def.schema._parseSync({data:I,path:g.path,parent:g});if(j.status==="aborted")return m;if(j.status==="dirty")return jg(j.value);if($.value==="dirty")return jg(j.value);return j}}if(U.type==="refinement"){let I=(j)=>{let N=U.refinement(j,D);if(g.common.async)return Promise.resolve(N);if(N instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return j};if(g.common.async===!1){let j=this._def.schema._parseSync({data:g.data,path:g.path,parent:g});if(j.status==="aborted")return m;if(j.status==="dirty")$.dirty();return I(j.value),{status:$.value,value:j.value}}else return this._def.schema._parseAsync({data:g.data,path:g.path,parent:g}).then((j)=>{if(j.status==="aborted")return m;if(j.status==="dirty")$.dirty();return I(j.value).then(()=>{return{status:$.value,value:j.value}})})}if(U.type==="transform")if(g.common.async===!1){let I=this._def.schema._parseSync({data:g.data,path:g.path,parent:g});if(!n4(I))return m;let j=U.transform(I.value,D);if(j instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:$.value,value:j}}else return this._def.schema._parseAsync({data:g.data,path:g.path,parent:g}).then((I)=>{if(!n4(I))return m;return Promise.resolve(U.transform(I.value,D)).then((j)=>({status:$.value,value:j}))});U_.assertNever(U)}}R$.create=(_,$,g)=>{return new R$({schema:_,typeName:i.ZodEffects,effect:$,...p(g)})};R$.createWithPreprocess=(_,$,g)=>{return new R$({schema:$,effect:{type:"preprocess",transform:_},typeName:i.ZodEffects,...p(g)})};class Z$ extends __{_parse(_){if(this._getType(_)===y.undefined)return a_(void 0);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}Z$.create=(_,$)=>{return new Z$({innerType:_,typeName:i.ZodOptional,...p($)})};class z6 extends __{_parse(_){if(this._getType(_)===y.null)return a_(null);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}z6.create=(_,$)=>{return new z6({innerType:_,typeName:i.ZodNullable,...p($)})};class Rg extends __{_parse(_){let{ctx:$}=this._processInputParams(_),g=$.data;if($.parsedType===y.undefined)g=this._def.defaultValue();return this._def.innerType._parse({data:g,path:$.path,parent:$})}removeDefault(){return this._def.innerType}}Rg.create=(_,$)=>{return new Rg({innerType:_,typeName:i.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...p($)})};class Gg extends __{_parse(_){let{ctx:$}=this._processInputParams(_),g={...$,common:{...$.common,issues:[]}},U=this._def.innerType._parse({data:g.data,path:g.path,parent:{...g}});if(zU(U))return U.then((D)=>{return{status:"valid",value:D.status==="valid"?D.value:this._def.catchValue({get error(){return new O$(g.common.issues)},input:g.data})}});else return{status:"valid",value:U.status==="valid"?U.value:this._def.catchValue({get error(){return new O$(g.common.issues)},input:g.data})}}removeCatch(){return this._def.innerType}}Gg.create=(_,$)=>{return new Gg({innerType:_,typeName:i.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...p($)})};class GU extends __{_parse(_){if(this._getType(_)!==y.nan){let g=this._getOrReturnCtx(_);return u(g,{code:k.invalid_type,expected:y.nan,received:g.parsedType}),m}return{status:"valid",value:_.data}}}GU.create=(_)=>{return new GU({typeName:i.ZodNaN,...p(_)})};var eb=Symbol("zod_brand");class JN extends __{_parse(_){let{ctx:$}=this._processInputParams(_),g=$.data;return this._def.type._parse({data:g,path:$.path,parent:$})}unwrap(){return this._def.type}}class YU extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.common.async)return(async()=>{let D=await this._def.in._parseAsync({data:g.data,path:g.path,parent:g});if(D.status==="aborted")return m;if(D.status==="dirty")return $.dirty(),jg(D.value);else return this._def.out._parseAsync({data:D.value,path:g.path,parent:g})})();else{let U=this._def.in._parseSync({data:g.data,path:g.path,parent:g});if(U.status==="aborted")return m;if(U.status==="dirty")return $.dirty(),{status:"dirty",value:U.value};else return this._def.out._parseSync({data:U.value,path:g.path,parent:g})}}static create(_,$){return new YU({in:_,out:$,typeName:i.ZodPipeline})}}class Yg extends __{_parse(_){let $=this._def.innerType._parse(_),g=(U)=>{if(n4(U))U.value=Object.freeze(U.value);return U};return zU($)?$.then((U)=>g(U)):g($)}unwrap(){return this._def.innerType}}Yg.create=(_,$)=>{return new Yg({innerType:_,typeName:i.ZodReadonly,...p($)})};function g9(_,$){let g=typeof _==="function"?_($):typeof _==="string"?{message:_}:_;return typeof g==="string"?{message:g}:g}function W9(_,$={},g){if(_)return m4.create().superRefine((U,D)=>{let I=_(U);if(I instanceof Promise)return I.then((j)=>{if(!j){let N=g9($,U),O=N.fatal??g??!0;D.addIssue({code:"custom",...N,fatal:O})}});if(!I){let j=g9($,U),N=j.fatal??g??!0;D.addIssue({code:"custom",...j,fatal:N})}return});return m4.create()}var ab={object:b_.lazycreate},i;(function(_){_.ZodString="ZodString",_.ZodNumber="ZodNumber",_.ZodNaN="ZodNaN",_.ZodBigInt="ZodBigInt",_.ZodBoolean="ZodBoolean",_.ZodDate="ZodDate",_.ZodSymbol="ZodSymbol",_.ZodUndefined="ZodUndefined",_.ZodNull="ZodNull",_.ZodAny="ZodAny",_.ZodUnknown="ZodUnknown",_.ZodNever="ZodNever",_.ZodVoid="ZodVoid",_.ZodArray="ZodArray",_.ZodObject="ZodObject",_.ZodUnion="ZodUnion",_.ZodDiscriminatedUnion="ZodDiscriminatedUnion",_.ZodIntersection="ZodIntersection",_.ZodTuple="ZodTuple",_.ZodRecord="ZodRecord",_.ZodMap="ZodMap",_.ZodSet="ZodSet",_.ZodFunction="ZodFunction",_.ZodLazy="ZodLazy",_.ZodLiteral="ZodLiteral",_.ZodEnum="ZodEnum",_.ZodEffects="ZodEffects",_.ZodNativeEnum="ZodNativeEnum",_.ZodOptional="ZodOptional",_.ZodNullable="ZodNullable",_.ZodDefault="ZodDefault",_.ZodCatch="ZodCatch",_.ZodPromise="ZodPromise",_.ZodBranded="ZodBranded",_.ZodPipeline="ZodPipeline",_.ZodReadonly="ZodReadonly"})(i||(i={}));var sb=(_,$={message:`Input not instance of ${_.name}`})=>W9((g)=>g instanceof _,$),X9=F$.create,R9=i6.create,_H=GU.create,$H=l6.create,G9=Ag.create,gH=d4.create,DH=SU.create,UH=Lg.create,IH=Jg.create,jH=m4.create,NH=m6.create,EH=n$.create,OH=WU.create,AH=M$.create,LH=b_.create,JH=b_.strictCreate,PH=Pg.create,zH=LN.create,SH=zg.create,WH=d$.create,XH=XU.create,RH=RU.create,GH=i4.create,YH=Ng.create,QH=Sg.create,TH=Wg.create,qH=t6.create,BH=Xg.create,KH=l4.create,D9=R$.create,VH=Z$.create,FH=z6.create,MH=R$.createWithPreprocess,ZH=YU.create,bH=()=>X9().optional(),HH=()=>R9().optional(),kH=()=>G9().optional(),CH={string:(_)=>F$.create({..._,coerce:!0}),number:(_)=>i6.create({..._,coerce:!0}),boolean:(_)=>Ag.create({..._,coerce:!0}),bigint:(_)=>l6.create({..._,coerce:!0}),date:(_)=>d4.create({..._,coerce:!0})},rH=m;var x={actorRef:"hasna.actor_ref.v1",resourceRef:"hasna.resource_ref.v1",evidenceRef:"hasna.evidence_ref.v1",workRun:"hasna.work_run.v1",taskToPrProjection:"hasna.task_to_pr_projection.v1",decisionEnvelope:"hasna.decision_envelope.v1",costEstimate:"hasna.cost_estimate.v1",capabilityCard:"hasna.capability_card.v1",providerLiveModeStandard:"hasna.provider_live_mode_standard.v1",contextPack:"hasna.context_pack.v1",integrationRef:"hasna.integration_ref.v1",projectManifest:"hasna.project_manifest.v1",projectPanel:"hasna.project_panel.v1",projectSnapshot:"hasna.project_snapshot.v1",renderManifest:"hasna.render_manifest.v1",agentTrajectory:"hasna.agent_trajectory.v1",validationPlan:"hasna.validation_plan.v1",proofBundle:"hasna.proof_bundle.v1",scaffoldManifest:"hasna.scaffold_manifest.v1",scaffoldInstallRecord:"hasna.scaffold_install_record.v1",appCloudManifest:"hasna.app_cloud_manifest.v1",noCloudEvidencePack:"hasna.no_cloud_evidence_pack.v1",secureLocalStorePolicy:"hasna.secure_local_store_policy.v1",serviceContract:"hasna.service_contract.v1",commsEventEnvelope:"hasna.comms_event_envelope.v1",commsChannelMetadata:"hasna.comms_channel_metadata.v1",commsMessageMetadata:"hasna.comms_message_metadata.v1",app:"hasna.app.v1",release:"hasna.release.v1",rolloutRecord:"hasna.rollout_record.v1",announcement:"hasna.announcement.v1",audience:"hasna.audience.v1"},u3=E.string().regex(/^hasna\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*\.v[0-9]+$/),V_=E.string().datetime(),t=E.string().trim().min(1),H$=t.refine((_)=>_.startsWith("artifact://")||_.startsWith("repo://")||_.startsWith("project://")||_.startsWith("dashboard://")||_.startsWith("render://")||_.startsWith("integration://")||_.startsWith("task://")||_.startsWith("todo://")||_.startsWith("file://")||_.startsWith("files://")||_.startsWith("mailery://")||_.startsWith("conversation://")||_.startsWith("knowledge://")||_.startsWith("memento://")||_.startsWith("https://")||_.startsWith("http://")||_.startsWith("git+https://"),"URI must use artifact://, repo://, project://, dashboard://, render://, integration://, task://, todo://, file://, files://, mailery://, conversation://, knowledge://, memento://, http(s)://, or git+https://"),Y9=E.string().regex(/^[a-fA-F0-9]{64}$/),Q9=E.string().regex(/^(sha256:)?[a-fA-F0-9]{64}$/),o6=E.record(E.unknown()),qg=E.array(E.string().min(1)).default([]),t4=V_.nullable().optional(),vH=new Set(["succeeded","failed","cancelled","blocked","skipped"]),e4=E.enum(["pending","running","succeeded","failed","cancelled","blocked","skipped","unknown"]);function L_(_){return E.object({schema:E.literal(_),id:E.string().min(1),createdAt:V_,updatedAt:t4,metadata:o6.optional()}).strict()}var Od=E.object({schema:u3,id:E.string().min(1),createdAt:V_,updatedAt:t4,metadata:o6.optional()}).strict(),T9=E.enum(["agent","human","service","model","workflow","system"]),wH=L_(x.actorRef).extend({kind:T9,name:E.string().min(1).optional(),provider:E.string().min(1).optional(),accountId:E.string().min(1).optional(),machineId:E.string().min(1).optional(),capabilities:E.array(E.string().min(1)).default([])}).strict(),m$=E.object({kind:T9,id:E.string().min(1),name:E.string().min(1).optional(),provider:E.string().min(1).optional(),accountId:E.string().min(1).optional(),machineId:E.string().min(1).optional()}).strict(),q9=E.enum(["task","project","repo","run","loop","workflow","action","event","integration","session","machine","model","tool","file","document","url","artifact","knowledge","email","conversation","dashboard","render","panel","report","commit","branch","pull_request","issue","comment","verification","finding","context_pack","proof_bundle","memento","eval","budget","cost","alert","incident","app","release","rollout","announcement","audience","feedback","unknown"]),fH=L_(x.resourceRef).extend({kind:q9,name:E.string().min(1).optional(),uri:H$.optional(),externalId:t.optional(),sourcePackage:t.optional(),tags:qg}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.externalId&&_.sourcePackage))$.addIssue({code:E.ZodIssueCode.custom,message:"Resource refs require uri or both sourcePackage and externalId",path:["uri"]})}),s=E.object({kind:q9,id:E.string().min(1),name:E.string().min(1).optional(),uri:H$.optional(),externalId:t.optional(),sourcePackage:t.optional(),tags:qg}).strict().superRefine((_,$)=>{if(!_.uri&&Boolean(_.externalId)!==Boolean(_.sourcePackage))$.addIssue({code:E.ZodIssueCode.custom,message:"Resource pointers with external package locators require both sourcePackage and externalId",path:_.externalId?["sourcePackage"]:["externalId"]})}),x3=E.enum(["file","command_output","screenshot","log","diff","report","artifact","url","video","har","test_result","metric","trace","other"]),uH=E.enum(["none","partial","full","unknown"]),xH=L_(x.evidenceRef).extend({kind:x3,uri:H$,sha256:Y9.optional(),summary:E.string().min(1).optional(),contentType:E.string().min(1).optional(),sizeBytes:E.number().int().nonnegative().optional(),redaction:uH.default("unknown"),producer:m$.optional(),resourceRefs:E.array(s).default([]),tags:qg}).strict(),T_=E.object({id:E.string().min(1),kind:x3.optional(),uri:H$.optional(),sha256:Y9.optional(),summary:E.string().min(1).optional()}).strict(),QU=L_(x.costEstimate).extend({currency:E.string().regex(/^[A-Z]{3}$/).default("USD"),amountMicros:E.number().int().nonnegative(),provider:E.string().min(1).optional(),model:E.string().min(1).optional(),accountId:E.string().min(1).optional(),promptTokens:E.number().int().nonnegative().optional(),completionTokens:E.number().int().nonnegative().optional(),totalTokens:E.number().int().nonnegative().optional(),basis:E.enum(["actual","estimated","budget","limit"]).default("estimated"),resourceRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(_.promptTokens!==void 0&&_.completionTokens!==void 0&&_.totalTokens!==void 0&&_.totalTokens!==_.promptTokens+_.completionTokens)$.addIssue({code:E.ZodIssueCode.custom,message:"totalTokens must equal promptTokens plus completionTokens when all are present",path:["totalTokens"]})}),yH=E.enum(["allowed","denied","warned","approval_required","selected","skipped","unknown"]),B9=L_(x.decisionEnvelope).extend({decisionType:E.enum(["guardrail","model_route","tool_select","budget","secret_access","approval","policy","other"]),status:yH,actor:m$.optional(),traceId:E.string().min(1).optional(),inputHash:Q9.optional(),policyBundleId:E.string().min(1).optional(),selected:E.array(s).default([]),skipped:E.array(s).default([]),reason:E.string().min(1),obligations:E.array(E.string().min(1)).default([]),redactions:E.array(E.string().min(1)).default([]),costEstimate:QU.optional(),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.status==="selected"&&_.selected.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Selected decisions require at least one selected resource",path:["selected"]});if(_.status==="skipped"&&_.skipped.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Skipped decisions require at least one skipped resource",path:["skipped"]});if(_.status==="denied"){if(_.selected.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Denied decisions cannot include selected resources",path:["selected"]});if(!_.policyBundleId&&_.evidenceRefs.length===0&&_.obligations.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Denied decisions require policy, evidence, or obligations",path:["policyBundleId"]})}if(_.status==="approval_required"&&_.obligations.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Approval-required decisions require actionable obligations",path:["obligations"]})}),hH=L_(x.capabilityCard).extend({kind:E.enum(["model","tool","machine","agent","lane","connector","service"]),name:E.string().min(1),version:E.string().min(1).optional(),status:E.enum(["available","unavailable","degraded","unknown"]).default("unknown"),capabilities:E.array(E.string().min(1)).default([]),limitations:E.array(E.string().min(1)).default([]),riskLevel:E.enum(["low","medium","high","critical","unknown"]).default("unknown"),costEstimate:QU.optional(),evidenceRefs:E.array(T_).default([])}).strict(),Qg=E.enum(["mock","fixture","sandbox","read_only_live","live_mutating"]),cH=E.enum(["none","read_only","external_notification","external_mutation","money_movement","dns_or_domain_change","bulk_message_or_call","legal_or_filing","compute_or_infra_mutation","irreversible"]),nH=E.object({refName:t,requiredForModes:E.array(Qg).min(1),allowedSecretInputs:E.array(E.enum(["credential_ref","lease_ref"])).min(1).default(["credential_ref"]),failClosedDiagnostic:t,revocationCheck:E.boolean().default(!0)}).strict(),dH=E.object({operation:t,supportedModes:E.array(Qg).min(1),sideEffectClass:cH,requiresApproval:E.boolean().default(!1),requiresIdempotencyKey:E.boolean().default(!1),requiresSandboxEvidence:E.boolean().default(!1),requiresRollbackOrRevocation:E.boolean().default(!1),rollbackOrRevocation:t.optional(),noSideEffectSmoke:t.optional(),reconciliation:t.optional()}).strict().superRefine((_,$)=>{if(_.supportedModes.includes("live_mutating")){if(_.sideEffectClass==="none"||_.sideEffectClass==="read_only")$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations must declare a side-effecting class",path:["sideEffectClass"]});if(!_.requiresApproval)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require approval",path:["requiresApproval"]});if(!_.requiresIdempotencyKey)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require idempotency keys",path:["requiresIdempotencyKey"]});if(!_.requiresSandboxEvidence)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require sandbox evidence before live proof",path:["requiresSandboxEvidence"]});if(!_.requiresRollbackOrRevocation||!_.rollbackOrRevocation)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require rollback or revocation instructions",path:["rollbackOrRevocation"]});if(!_.reconciliation)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require reconciliation behavior",path:["reconciliation"]})}}),mH=E.object({providerId:t,appId:t,adapterId:t,ownerPackage:t,modes:E.array(Qg).min(1),defaultMode:Qg,credentialRequirements:E.array(nH).default([]),operations:E.array(dH).min(1),rateLimitPosture:t,costPosture:t.optional(),auditEvents:E.array(t).default([]),redactionRules:E.array(t).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(!_.modes.includes(_.defaultMode))$.addIssue({code:E.ZodIssueCode.custom,message:"defaultMode must be one of modes",path:["defaultMode"]});let g=new Set(_.operations.flatMap((U)=>U.supportedModes));for(let U of g)if(!_.modes.includes(U))$.addIssue({code:E.ZodIssueCode.custom,message:`operation mode ${U} is not declared in provider modes`,path:["operations"]});if(g.has("live_mutating")){if(!_.credentialRequirements.some((D)=>D.requiredForModes.includes("live_mutating")))$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating providers require at least one live credential reference requirement",path:["credentialRequirements"]});if(_.auditEvents.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating providers require audit events",path:["auditEvents"]})}}),iH=E.object({appId:t,repo:t,priority:E.enum(["p0","p1","p2"]).default("p1"),requiredEvidence:E.array(t).min(1),firstOperations:E.array(t).min(1),blockedUntil:E.array(t).default([])}).strict(),lH=L_(x.providerLiveModeStandard).extend({name:t,version:t,modes:E.array(Qg).refine((_)=>["mock","fixture","sandbox","read_only_live","live_mutating"].every(($)=>_.includes($)),"provider live-mode standard must include every canonical provider mode"),requiredCapabilityFields:E.array(t).min(1),liveMutationGate:E.object({requiredMode:E.literal("live_mutating"),requiredChecks:E.array(t).min(1),forbiddenBypassSignals:E.array(t).min(1),disabledLiveSmoke:t}).strict(),noSideEffectSmoke:E.object({requiredForModes:E.array(Qg).min(1),commandEvidence:E.array(t).min(1),secretOutputScan:E.boolean().default(!0)}).strict(),credentialPolicy:E.object({acceptedInputs:E.array(E.enum(["credential_ref","lease_ref"])).min(1),rawSecretInputsAllowed:E.literal(!1),missingCredentialBehavior:E.literal("fail_closed"),revocationCheckRequired:E.boolean().default(!0)}).strict(),operationCards:E.array(mH).min(1),firstAdoptionTargets:E.array(iH).min(1),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let g=new Set(_.firstAdoptionTargets.map((D)=>D.appId)),U=new Set(_.operationCards.map((D)=>D.appId));for(let D of g)if(!U.has(D))$.addIssue({code:E.ZodIssueCode.custom,message:`first adoption target ${D} requires a provider capability card`,path:["firstAdoptionTargets"]})}),tH=E.object({id:E.string().min(1),title:E.string().min(1).optional(),summary:E.string().min(1),text:E.string().optional(),tokens:E.number().int().nonnegative().optional(),source:T_,resourceRefs:E.array(s).default([])}).strict(),K9=L_(x.contextPack).extend({objective:E.string().min(1),budget:E.object({maxTokens:E.number().int().positive().optional(),maxBytes:E.number().int().positive().optional()}).strict().optional(),items:E.array(tH).default([]),citations:E.array(T_).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown"),permissions:E.array(E.string().min(1)).default([]),redactions:E.array(E.string().min(1)).default([]),conflicts:E.array(E.string().min(1)).default([]),uncertainty:E.string().min(1).optional()}).strict(),W$=t.refine((_)=>!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."),"Project paths must be relative and cannot contain parent-directory segments"),o4=E.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Project slugs must be lowercase dashed identifiers"),oH=E.enum(["public","internal","private","sensitive"]),pH=E.enum(["draft","active","paused","archived"]),y3=E.enum(["todos","files","mailery","conversations","knowledge","mementos","reports","actions","render","contracts","custom"]),V9=L_(x.integrationRef).extend({kind:y3,name:E.string().min(1),projectId:o4.optional(),sourcePackage:t.optional(),externalId:t.optional(),uri:H$.optional(),enabled:E.boolean().default(!0),readOnly:E.boolean().default(!0),capabilities:E.array(E.string().min(1)).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown"),resourceRef:s.optional(),evidenceRefs:E.array(T_).default([]),config:o6.optional()}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.sourcePackage&&_.externalId)&&!_.resourceRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Integration refs require uri, resourceRef, or both sourcePackage and externalId",path:["uri"]})}),eH=E.object({schemaRoot:W$.default(".hasna/project"),dashboardManifest:W$.default(".hasna/project/dashboard.render.json"),snapshotsDir:W$.default(".hasna/project/snapshots"),documentsDir:W$.default("documents"),reportsDir:W$.default("reports"),evidenceDir:W$.default(".hasna/project/evidence"),privateDir:W$.default(".hasna/project/private")}).strict(),aH=L_(x.projectManifest).extend({projectId:o4,slug:o4,name:E.string().min(1),summary:E.string().min(1).optional(),status:pH.default("active"),classification:oH.default("private"),owner:m$.optional(),layout:eH.default({}),integrations:E.array(V9).default([]),renderManifests:E.array(s).default([]),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),tags:qg}).strict().superRefine((_,$)=>{let g=new Set,U=new Set;if(_.projectId!==_.slug)$.addIssue({code:E.ZodIssueCode.custom,message:"projectId and slug must match for canonical project manifests",path:["slug"]});for(let[D,I]of _.integrations.entries()){if(g.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project manifest integration ids must be unique",path:["integrations",D,"id"]});if(g.add(I.id),I.projectId&&I.projectId!==_.projectId)$.addIssue({code:E.ZodIssueCode.custom,message:"Integration projectId must match the manifest projectId",path:["integrations",D,"projectId"]})}for(let[D,I]of _.renderManifests.entries()){if(I.kind!=="render")$.addIssue({code:E.ZodIssueCode.custom,message:"Project renderManifests must use resource kind render",path:["renderManifests",D,"kind"]});if(U.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project renderManifest refs must be unique",path:["renderManifests",D,"id"]});U.add(I.id)}}),sH=E.enum(["local","package","provider","url"]),h3=E.object({id:E.string().min(1),kind:sH,specifier:E.string().min(1),path:W$.optional(),packageName:E.string().min(1).optional(),uri:H$.optional(),provider:y3.optional(),schemaId:u3.optional(),integrity:Q9.optional(),resourceRef:s.optional(),optional:E.boolean().default(!1)}).strict().superRefine((_,$)=>{if(_.kind==="local"&&!_.path)$.addIssue({code:E.ZodIssueCode.custom,message:"Local render imports require path",path:["path"]});if(_.kind==="package"&&!_.packageName)$.addIssue({code:E.ZodIssueCode.custom,message:"Package render imports require packageName",path:["packageName"]});if(_.kind==="provider"&&!_.provider)$.addIssue({code:E.ZodIssueCode.custom,message:"Provider render imports require provider",path:["provider"]});if(_.kind==="url"&&!_.uri)$.addIssue({code:E.ZodIssueCode.custom,message:"URL render imports require uri",path:["uri"]})}),_k=E.enum(["dashboard","canvas","panel","report","document","custom"]),$k=E.object({id:E.string().min(1),title:E.string().min(1),kind:_k,default:E.boolean().default(!1),entry:W$.optional(),imports:E.array(h3).default([]),panelRefs:E.array(s).default([]),dataRefs:E.array(s).default([]),layout:o6.optional()}).strict(),gk=L_(x.renderManifest).extend({projectId:o4,name:E.string().min(1),version:E.string().min(1),manifestPath:W$.default(".hasna/project/dashboard.render.json"),renderer:E.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),views:E.array($k).min(1),imports:E.array(h3).default([]),theme:o6.optional(),compatibility:E.object({minProjectsVersion:E.string().min(1).optional(),minContractsVersion:E.string().min(1).optional()}).strict().optional(),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let g=_.views.filter((I)=>I.default),U=new Set,D=new Set;if(g.length>1)$.addIssue({code:E.ZodIssueCode.custom,message:"Render manifests can have at most one default view",path:["views"]});for(let[I,j]of _.imports.entries()){if(D.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Render manifest import ids must be unique",path:["imports",I,"id"]});D.add(j.id)}for(let[I,j]of _.views.entries()){if(U.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Render manifest view ids must be unique",path:["views",I,"id"]});U.add(j.id);let N=new Set;for(let[O,A]of j.imports.entries()){if(N.has(A.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Render view import ids must be unique",path:["views",I,"imports",O,"id"]});N.add(A.id)}for(let[O,A]of j.panelRefs.entries())if(A.kind!=="panel")$.addIssue({code:E.ZodIssueCode.custom,message:"Render view panelRefs must use resource kind panel",path:["views",I,"panelRefs",O,"kind"]})}}),Dk=E.enum(["ready","empty","loading","error","auth_required","unavailable","stale"]),Uk=E.enum(["overview","tasks","files","mailery","conversations","knowledge","mementos","reports","actions","timeline","risks","documents","custom"]),Ik=E.object({id:E.string().min(1),label:E.string().min(1),value:E.union([E.string(),E.number(),E.boolean()]),unit:E.string().min(1).optional(),status:E.enum(["good","warning","critical","unknown"]).default("unknown"),resourceRefs:E.array(s).default([])}).strict(),jk=E.object({id:E.string().min(1),title:E.string().min(1),summary:E.string().min(1).optional(),status:E.string().min(1).optional(),priority:E.enum(["low","medium","high","critical","unknown"]).default("unknown"),timestamp:V_.optional(),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),metadata:o6.optional()}).strict(),Nk=E.object({renderer:E.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),title:E.string().min(1).optional(),entry:W$.optional(),imports:E.array(h3).default([]),spec:o6.default({})}).strict(),F9=L_(x.projectPanel).extend({projectId:o4,provider:E.object({kind:y3,id:E.string().min(1),name:E.string().min(1).optional(),sourcePackage:t.optional(),externalId:t.optional()}).strict(),kind:Uk,title:E.string().min(1),summary:E.string().min(1).optional(),state:Dk.default("ready"),stateReason:E.string().min(1).optional(),generatedAt:V_,freshness:E.enum(["fresh","stale","unknown"]).default("unknown"),metrics:E.array(Ik).default([]),items:E.array(jk).default([]),actions:E.array(s).default([]),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),renderFragment:Nk.optional(),warnings:E.array(E.string().min(1)).default([])}).strict().superRefine((_,$)=>{let g=new Set(["error","auth_required","unavailable","stale"]),U=new Set,D=new Set;if(g.has(_.state)&&!_.stateReason)$.addIssue({code:E.ZodIssueCode.custom,message:"Non-ready provider states require stateReason",path:["stateReason"]});if(_.state==="ready"&&_.metrics.length===0&&_.items.length===0&&!_.renderFragment)$.addIssue({code:E.ZodIssueCode.custom,message:"Ready panels require metrics, items, or a renderFragment; use state=empty for empty panels",path:["state"]});for(let[I,j]of _.metrics.entries()){if(U.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project panel metric ids must be unique",path:["metrics",I,"id"]});U.add(j.id)}for(let[I,j]of _.items.entries()){if(D.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project panel item ids must be unique",path:["items",I,"id"]});D.add(j.id)}for(let[I,j]of _.actions.entries())if(j.kind!=="action")$.addIssue({code:E.ZodIssueCode.custom,message:"Project panel actions must use resource kind action",path:["actions",I,"kind"]})}),Ek=L_(x.projectSnapshot).extend({projectId:o4,generatedAt:V_,status:e4.default("unknown"),manifestRef:s,renderManifestRef:s.optional(),panels:E.array(F9).default([]),contextPacks:E.array(K9).default([]),proofBundleRefs:E.array(s).default([]),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),warnings:E.array(E.string().min(1)).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{let g=new Set,U=new Set;if(_.manifestRef.kind!=="project")$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot manifestRef must use resource kind project",path:["manifestRef","kind"]});if(_.renderManifestRef&&_.renderManifestRef.kind!=="render")$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot renderManifestRef must use resource kind render",path:["renderManifestRef","kind"]});for(let[D,I]of _.proofBundleRefs.entries())if(I.kind!=="proof_bundle")$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot proofBundleRefs must use resource kind proof_bundle",path:["proofBundleRefs",D,"kind"]});for(let[D,I]of _.panels.entries()){if(I.projectId!==_.projectId)$.addIssue({code:E.ZodIssueCode.custom,message:"Panel projectId must match snapshot projectId",path:["panels",D,"projectId"]});if(g.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot panel ids must be unique",path:["panels",D,"id"]});g.add(I.id)}for(let[D,I]of _.contextPacks.entries()){if(U.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot context pack ids must be unique",path:["contextPacks",D,"id"]});U.add(I.id)}}),M9=E.object({id:E.string().min(1),kind:E.enum(["command","test","typecheck","lint","eval","security","review","deploy","smoke","manual","other"]),required:E.boolean().default(!0),command:E.string().min(1).optional(),expected:E.string().min(1).optional(),timeoutMs:E.number().int().positive().optional(),resourceRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(new Set(["command","test","typecheck","lint","smoke","eval"]).has(_.kind)&&!_.command&&!_.expected)$.addIssue({code:E.ZodIssueCode.custom,message:"Actionable validation checks require command or expected",path:["command"]})}),Ok=L_(x.validationPlan).extend({objective:E.string().min(1),subject:s.optional(),checks:E.array(M9).min(1),verifier:m$.optional(),requiredEvidenceKinds:E.array(x3).default([])}).strict(),Ak=E.enum(["open_source","internal_app","platform","app","agent","content","overlay","other"]),Lk=E.enum(["draft","active","deprecated","archived"]),Jk=E.enum(["cli","mcp","library","sdk","rest_api","dashboard","database","auth","billing","worker","daemon","native","browser_extension","ai_provider","media_pipeline","data_pipeline","tests","ci","deployment","docs","other"]),Pk=E.object({key:E.string().regex(/^[A-Z][A-Z0-9_]*$/),description:E.string().min(1),required:E.boolean().default(!1),["secret"]:E.boolean().default(!1),group:E.string().min(1).optional(),default:E.string().optional()}).strict().superRefine((_,$)=>{if(_.secret&&_.default!==void 0)$.addIssue({code:E.ZodIssueCode.custom,message:"Secret scaffold env vars cannot include defaults",path:["default"]})}),zk=E.object({name:E.string().min(1),command:E.string().min(1),description:E.string().min(1).optional(),required:E.boolean().default(!1)}).strict(),Sk=E.object({packageManager:E.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),languages:E.array(E.string().min(1)).default([]),requiredFiles:E.array(E.string().min(1)).default([]),requiredDirectories:E.array(E.string().min(1)).default([]),optionalDirectories:E.array(E.string().min(1)).default([])}).strict(),Wk=L_(x.scaffoldManifest).extend({name:E.string().min(1),version:E.string().min(1),summary:E.string().min(1),type:Ak,status:Lk.default("draft"),capabilities:E.array(Jk).default([]),techStack:E.array(E.string().min(1)).default([]),tags:qg,source:s.optional(),output:Sk,env:E.array(Pk).default([]),scripts:E.array(zk).default([]),validationChecks:E.array(M9).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.source?.uri?.startsWith("file://"))$.addIssue({code:E.ZodIssueCode.custom,message:"Public scaffold manifest source refs cannot use local file:// URIs",path:["source","uri"]});if(_.status==="active"&&_.validationChecks.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Active scaffold manifests require validation checks",path:["validationChecks"]});if(_.status==="active"&&_.output.requiredFiles.length===0&&_.output.requiredDirectories.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Active scaffold manifests require at least one required file or directory",path:["output"]})}),Xk=E.enum(["installed","failed","cancelled","partial","unknown"]),Rk=L_(x.scaffoldInstallRecord).extend({scaffoldId:E.string().min(1),scaffoldVersion:E.string().min(1).optional(),manifestRef:s.optional(),target:s,status:Xk,installedAt:V_.optional(),installer:m$.optional(),packageManager:E.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),options:o6.optional(),generatedFiles:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),proofBundleRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(_.status==="installed"&&!_.installedAt)$.addIssue({code:E.ZodIssueCode.custom,message:"Installed scaffold records require installedAt",path:["installedAt"]});if(_.status==="installed"&&_.generatedFiles.length===0&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Installed scaffold records require generated files, evidence, or proof bundle refs",path:["generatedFiles"]});if((_.status==="failed"||_.status==="partial")&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed or partial scaffold records require evidence or proof bundle refs",path:["evidenceRefs"]})}),Tg=E.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"App ids must be lowercase dashed identifiers"),c3=E.string().regex(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,"Must be a valid npm package name"),Z9=E.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,"Must be a semver version"),Gk=E.string().regex(/^[0-9a-f]{7,40}$/,"Must be a lowercase git sha (7-40 hex chars)"),Yk=t.refine((_)=>_.startsWith("https://github.com/")||_.startsWith("git+https://github.com/"),"GitHub URLs must start with https://github.com/ or git+https://github.com/"),Qk=E.enum(["active","stub","deprecated","archived"]),Tk=E.enum(["stable","beta","canary","internal"]),qk=E.object({transport:E.enum(["http","stdio"]).default("http"),bin:E.string().min(1).optional(),url:H$.optional()}).strict(),Bk=E.object({healthPath:E.string().min(1).default("/health"),port:E.number().int().positive().optional(),baseUrl:H$.optional()}).strict(),Kk=E.object({bins:E.array(E.string().min(1)).default([]),mcp:qk.optional(),http:Bk.optional()}).strict(),Vk=L_(x.app).extend({appId:Tg,npmName:c3,repoFolder:Tg,githubUrl:Yk,projectSlug:o4,surfaces:Kk.default({}),lifecycle:Qk,releaseChannel:Tk.default("stable"),summary:E.string().min(1).optional(),tags:qg}).strict().superRefine((_,$)=>{let g=new Set;for(let[U,D]of _.surfaces.bins.entries()){if(g.has(D))$.addIssue({code:E.ZodIssueCode.custom,message:"App surface bins must be unique",path:["surfaces","bins",U]});g.add(D)}}),Fk=E.enum(["skill","ci","backfilled"]),Mk=L_(x.release).extend({appId:Tg,package:c3,version:Z9,gitSha:Gk,publishedAt:V_,publishPath:Fk,changelogRef:s.optional(),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.publishPath!=="backfilled"&&_.evidenceRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"skill and ci releases require publish evidence; only backfilled releases may omit it",path:["evidenceRefs"]})}),Zk=E.enum(["install","update","rollback","freeze-blocked"]),bk=E.object({cliVersion:E.string().min(1).optional(),mcpHealth:E.enum(["ok","degraded","unavailable","not_checked"]).optional()}).strict().superRefine((_,$)=>{if(!_.cliVersion&&_.mcpHealth===void 0)$.addIssue({code:E.ZodIssueCode.custom,message:"Rollout verification requires at least one concrete verifier field"})}),Hk=L_(x.rolloutRecord).extend({appId:Tg,package:c3,version:Z9,machine:t,action:Zk,result:e4,verifiedBy:bk.optional(),at:V_,evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.action==="freeze-blocked"&&_.result!=="blocked"&&_.result!=="skipped")$.addIssue({code:E.ZodIssueCode.custom,message:"freeze-blocked rollout records must report result blocked or skipped",path:["result"]});let g=Boolean(_.verifiedBy?.cliVersion)||_.verifiedBy?.mcpHealth!==void 0&&_.verifiedBy.mcpHealth!=="not_checked",U=_.verifiedBy?Object.keys(_.verifiedBy).length>0:!1;if((_.action==="install"||_.action==="update")&&_.result==="succeeded"&&(!_.verifiedBy||U&&!g))$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded install/update rollout records require concrete verification",path:["verifiedBy"]})}),kk=E.enum(["email","telegram","slack","discord","x","blog","rss","webhook","github","other"]),Ck=E.enum(["pending","queued","sent","failed","skipped","suppressed"]),rk=E.object({channel:kk,status:Ck,deliveredAt:V_.optional(),detail:E.string().min(1).optional()}).strict().superRefine((_,$)=>{if(_.status==="sent"&&!_.deliveredAt)$.addIssue({code:E.ZodIssueCode.custom,message:"Sent announcement channels require deliveredAt",path:["deliveredAt"]});if(_.status==="failed"&&!_.detail)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed announcement channels require detail",path:["detail"]})}),vk=L_(x.announcement).extend({campaignId:t,appId:Tg.optional(),releaseRef:s.optional(),channels:E.array(rk).min(1),audienceRef:s,sentAt:V_}).strict().superRefine((_,$)=>{if(_.releaseRef&&_.releaseRef.kind!=="release")$.addIssue({code:E.ZodIssueCode.custom,message:"Announcement releaseRef must use resource kind release",path:["releaseRef","kind"]});if(_.audienceRef.kind!=="audience")$.addIssue({code:E.ZodIssueCode.custom,message:"Announcement audienceRef must use resource kind audience",path:["audienceRef","kind"]})}),wk=E.enum(["tag","attribute","group"]),fk=E.enum(["eq","neq","in","not_in","exists","not_exists"]),U9=E.union([E.string(),E.number(),E.boolean()]),uk=E.object({kind:wk,key:E.string().min(1).optional(),op:fk.default("eq"),value:U9.optional(),values:E.array(U9).default([])}).strict().superRefine((_,$)=>{if(_.kind==="attribute"&&!_.key)$.addIssue({code:E.ZodIssueCode.custom,message:"Attribute predicates require key",path:["key"]});if((_.op==="eq"||_.op==="neq")&&_.value===void 0)$.addIssue({code:E.ZodIssueCode.custom,message:"eq/neq predicates require value",path:["value"]});if((_.op==="in"||_.op==="not_in")&&_.values.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"in/not_in predicates require values",path:["values"]})}),xk=E.object({match:E.enum(["all","any"]).default("all"),predicates:E.array(uk).min(1)}).strict(),yk=E.enum(["opt_in","opt_out","transactional","none"]),hk=L_(x.audience).extend({audienceId:Tg,name:t,definition:xk,consentPolicy:yk,suppressionSyncedAt:t4}).strict(),jN=["@hasna/cloud","open-cloud"],ck=E.enum(["aws","gcp","azure","cloudflare","vercel","neon","supabase","postgres","s3","rds","other"]),nk=E.object({id:E.string().min(1),provider:ck,kind:E.enum(["database","bucket","queue","secret","function","worker","cache","topic","scheduler","object_store","other"]),ownerPackage:E.string().min(1),region:E.string().min(1).optional(),accountId:E.string().min(1).optional(),uri:H$.optional(),machineScoped:E.boolean().default(!1)}).strict(),b9=L_(x.appCloudManifest).extend({packageName:E.string().min(1),packageVersion:E.string().min(1).optional(),appId:E.string().min(1),repository:s.optional(),storageMode:E.enum(["local_only","app_owned_cloud","hybrid_local_cache","external_service"]),cloudBoundary:E.enum(["none","app_owned","external_service","local_cache"]),cloudResources:E.array(nk).default([]),localCache:E.object({path:E.string().min(1).optional(),pullMode:E.enum(["manual","daemon","ci","none"]).default("manual"),conflictPolicy:E.enum(["cloud_wins","local_wins","merge","manual_review"]).default("manual_review")}).strict().optional(),forbiddenSharedRuntimes:E.array(E.string().min(1)).default([...jN]),dependencies:E.array(E.string().min(1)).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let g=new Set([...jN,..._.forbiddenSharedRuntimes]);if(g.has(_.packageName))$.addIssue({code:E.ZodIssueCode.custom,message:"App-owned cloud manifests cannot be for a forbidden runtime",path:["packageName"]});for(let U of jN)if(!_.forbiddenSharedRuntimes.includes(U))$.addIssue({code:E.ZodIssueCode.custom,message:`forbiddenSharedRuntimes must include ${U}`,path:["forbiddenSharedRuntimes"]});for(let U of g)if(_.dependencies.includes(U))$.addIssue({code:E.ZodIssueCode.custom,message:`App-owned cloud manifests cannot depend on ${U}`,path:["dependencies"]});if(_.storageMode==="local_only"&&_.cloudBoundary!=="none")$.addIssue({code:E.ZodIssueCode.custom,message:"local_only storage requires cloudBoundary none",path:["cloudBoundary"]});if(_.storageMode==="app_owned_cloud"&&_.cloudBoundary!=="app_owned")$.addIssue({code:E.ZodIssueCode.custom,message:"app_owned_cloud storage requires cloudBoundary app_owned",path:["cloudBoundary"]});if(_.storageMode==="hybrid_local_cache"){if(_.cloudBoundary!=="local_cache")$.addIssue({code:E.ZodIssueCode.custom,message:"hybrid_local_cache storage requires cloudBoundary local_cache",path:["cloudBoundary"]});if(!_.localCache)$.addIssue({code:E.ZodIssueCode.custom,message:"hybrid_local_cache storage requires localCache settings",path:["localCache"]})}if(_.storageMode==="external_service"){if(_.cloudBoundary!=="external_service")$.addIssue({code:E.ZodIssueCode.custom,message:"external_service storage requires cloudBoundary external_service",path:["cloudBoundary"]});if(_.cloudResources.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"external_service storage must not declare app-owned cloudResources",path:["cloudResources"]})}if((_.storageMode==="app_owned_cloud"||_.storageMode==="hybrid_local_cache")&&_.cloudResources.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Cloud-backed storage modes require explicit app-owned cloudResources",path:["cloudResources"]});if(_.cloudBoundary==="none"&&_.cloudResources.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"cloudBoundary none cannot declare cloudResources",path:["cloudResources"]});_.cloudResources.forEach((U,D)=>{if(U.ownerPackage!==_.packageName)$.addIssue({code:E.ZodIssueCode.custom,message:"Cloud resources must be owned by the app package that declares the manifest",path:["cloudResources",D,"ownerPackage"]})})}),H9=E.enum(["package_manifest","lockfile","source_import","runtime_config","packed_artifact","published_metadata","app_cloud_manifest","remote_config","boundary_doc","other"]),dk=E.enum(["low","medium","high","critical"]),k9=E.object({id:E.string().min(1),kind:H9,severity:dk,path:E.string().min(1).optional(),packageName:E.string().min(1).optional(),pattern:E.string().min(1),message:E.string().min(1),evidenceRefs:E.array(T_).default([])}).strict(),mk=E.object({id:E.string().min(1),kind:H9,status:e4,target:E.string().min(1),command:E.string().min(1).optional(),evidenceRefs:E.array(T_).default([]),findings:E.array(k9).default([])}).strict(),ik=L_(x.noCloudEvidencePack).extend({subject:s,packageName:E.string().min(1).optional(),packageVersion:E.string().min(1).optional(),generatedBy:m$.optional(),scanMode:E.enum(["source_tree","packed_artifact","published_metadata","runtime_config","workspace","ci"]),status:e4,verdict:E.enum(["passed","failed","warning","not_run"]),appCloudManifest:b9.optional(),checks:E.array(mk).min(1),findings:E.array(k9).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let g=[..._.findings,..._.checks.flatMap((D)=>D.findings)],U=g.filter((D)=>D.severity==="high"||D.severity==="critical");if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Passed no-cloud evidence requires succeeded status",path:["status"]});if(U.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Passed no-cloud evidence cannot include high or critical findings",path:["findings"]});if(_.checks.some((D)=>D.status!=="succeeded"))$.addIssue({code:E.ZodIssueCode.custom,message:"Passed no-cloud evidence requires every check to be succeeded",path:["checks"]})}if(_.verdict==="failed"&&g.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed no-cloud evidence requires findings",path:["findings"]});if(_.status==="succeeded"&&_.checks.some((D)=>D.status==="failed"))$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded no-cloud evidence cannot contain failed checks",path:["checks"]});_.checks.forEach((D,I)=>{let j=D.findings.filter((N)=>N.severity==="high"||N.severity==="critical");if(D.status==="succeeded"&&j.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded no-cloud checks cannot contain high or critical findings",path:["checks",I,"findings"]})})}),lk=E.object({checkId:E.string().min(1),status:e4,summary:E.string().min(1).optional(),startedAt:t4,finishedAt:t4,evidenceRefs:E.array(T_).default([])}).strict(),tk=L_(x.proofBundle).extend({subject:s,validationPlanRef:s.optional(),status:e4,verdict:E.enum(["passed","failed","inconclusive","not_run"]).default("inconclusive"),checks:E.array(lk).default([]),verifier:m$.optional(),evidenceRefs:E.array(T_).default([]),residualRisks:E.array(E.string().min(1)).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles must have status succeeded",path:["status"]});if(_.checks.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require at least one check result",path:["checks"]});if(_.checks.forEach((U,D)=>{if(U.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require all checks to have status succeeded",path:["checks",D,"status"]})}),!(_.evidenceRefs.length>0||_.checks.some((U)=>U.evidenceRefs.length>0)))$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require evidence",path:["evidenceRefs"]});if(!_.verifier)$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require a verifier",path:["verifier"]})}if(_.verdict==="not_run"&&_.checks.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Not-run proof bundles cannot include check results",path:["checks"]});if(_.verdict==="failed"&&!_.checks.some((g)=>g.status==="failed")&&_.evidenceRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed proof bundles require a failed check or evidence",path:["checks"]})}),ok=L_(x.workRun).extend({objective:E.string().min(1),status:e4,actor:m$,traceId:E.string().min(1).optional(),startedAt:t4,finishedAt:t4,constraints:E.array(E.string().min(1)).default([]),resourceRefs:E.array(s).default([]),decisions:E.array(B9).default([]),costEstimates:E.array(QU).default([]),evidenceRefs:E.array(T_).default([]),validationPlanRefs:E.array(s).default([]),proofBundleRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(_.startedAt&&_.finishedAt&&Date.parse(_.finishedAt)0||_.proofBundleRefs.length>0;if(_.status==="succeeded"&&!g)$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded work runs require evidence or a proof bundle",path:["evidenceRefs"]});if((_.status==="failed"||_.status==="blocked")&&!g&&_.decisions.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed or blocked work runs require evidence, a proof bundle, or a decision record",path:["evidenceRefs"]})}),pk=Object.freeze({work_run:Object.freeze(["codewith"]),root_request:Object.freeze(["todos"]),pr_group:Object.freeze(["todos"]),leaf_task:Object.freeze(["todos"]),attempt:Object.freeze(["todos"]),writer_generation:Object.freeze(["todos"]),writer_lease:Object.freeze(["repos"]),writer_fence:Object.freeze(["repos"]),provider_profile:Object.freeze(["codewith"]),provider_route:Object.freeze(["codewith"]),admission:Object.freeze(["codewith"]),worker_actor:Object.freeze(["codewith"]),worker:Object.freeze(["codewith"]),runtime:Object.freeze(["codewith"]),repo:Object.freeze(["repos"]),worktree:Object.freeze(["repos"]),branch:Object.freeze(["repos"]),event_stream:Object.freeze(["todos"]),replay_cursor:Object.freeze(["todos"]),handoff:Object.freeze(["todos"]),pull_request:Object.freeze(["todos"]),commit:Object.freeze(["repos"]),review:Object.freeze(["review"]),reviewer:Object.freeze(["review"]),review_run:Object.freeze(["review"]),proof_bundle:Object.freeze(["review"]),repair_cycle:Object.freeze(["todos"]),merge_guard:Object.freeze(["todos"]),merge_operator:Object.freeze(["merge_provider"]),merge_operator_run:Object.freeze(["merge_provider"]),merge_guard_receipt:Object.freeze(["merge_provider"]),merge_outcome:Object.freeze(["merge_provider"]),recovery:Object.freeze(["todos"]),cancellation:Object.freeze(["todos"]),cleanup_eligibility:Object.freeze(["repos"]),cleanup_outcome:Object.freeze(["repos"]),rollback_plan:Object.freeze(["todos"]),rollback_outcome:Object.freeze(["repos"]),terminal_disposition:Object.freeze(["todos"]),openloops_invocation:Object.freeze(["openloops"]),adapter_extension:Object.freeze(["adapter"])}),ek=E.enum(["work_run","root_request","pr_group","leaf_task","attempt","writer_generation","writer_lease","writer_fence","provider_profile","provider_route","admission","worker_actor","worker","runtime","repo","worktree","branch","event_stream","replay_cursor","handoff","pull_request","commit","review","reviewer","review_run","proof_bundle","repair_cycle","merge_guard","merge_operator","merge_operator_run","merge_guard_receipt","merge_outcome","recovery","cancellation","cleanup_eligibility","cleanup_outcome","rollback_plan","rollback_outcome","terminal_disposition","openloops_invocation","adapter_extension"]),ak=E.enum(["todos","codewith","repos","review","merge_provider","openloops","adapter"]),p4=E.string().regex(/^[a-f0-9]{64}$/),PN=E.string().trim().min(3).max(256),C9=/^[a-f0-9]{32}$/;function sk(_,$,g){return`${_}:${$}:opaque-${g.slice(0,32)}`}function _C(_){return`evidence:opaque-${_.slice(0,32)}`}var r9=PN.refine((_)=>{let g=_.startsWith("task_to_pr_projection:opaque-")?_.slice(29):"";return C9.test(g)},"Projection ids must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),n3=PN.refine((_)=>{let g=_.startsWith("attempt_nonce:opaque-")?_.slice(21):"";return C9.test(g)},"Attempt nonces must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),$C=new Set(["writer_lease","writer_fence","provider_profile","provider_route","admission","worker_actor","worker","runtime","worktree","merge_operator","merge_operator_run","merge_guard_receipt","merge_outcome","openloops_invocation","adapter_extension"]),d3=E.object({role:ek,authority:ak,id:PN,digest:p4,redaction:E.enum(["none","partial","full"])}).strict().superRefine((_,$)=>{let g=pk[_.role];if(!g.includes(_.authority))$.addIssue({code:E.ZodIssueCode.custom,message:`${_.role} refs must be owned by ${g.join(" or ")}`,path:["authority"]});if($C.has(_.role)&&_.redaction==="none")$.addIssue({code:E.ZodIssueCode.custom,message:`${_.role} refs must be redacted and cannot carry a raw locator or credential`,path:["redaction"]});let U=sk(_.role,_.authority,_.digest);if(_.id!==U)$.addIssue({code:E.ZodIssueCode.custom,message:"Reference ids must be nonsemantic authority-bound surrogates derived from the canonical role, authority, and owner-record digest",path:["id"]})}),X$=E.object({id:PN,digest:p4,redaction:E.enum(["partial","full"])}).strict().superRefine((_,$)=>{if(_.id!==_C(_.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Evidence ids must be nonsemantic owner-resolvable surrogates derived from their canonical digest",path:["id"]})});function v9(_,$,g,U){if(_.id===$.id||_.digest===$.digest)g.addIssue({code:E.ZodIssueCode.custom,message:"Stop and lease-revocation facts require distinct evidence identities and digests",path:U})}function b(_){return d3.refine(($)=>$.role===_,{message:`Reference must use role ${_}`,path:["role"]})}function B_(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id&&_.digest===$.digest&&_.redaction===$.redaction}function m3(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id}function Eg(_,$,g,U,D){if(m3(_,$))g.addIssue({code:E.ZodIssueCode.custom,message:`${D} requires a fresh canonical role/authority/id`,path:U});if(_.digest===$.digest)g.addIssue({code:E.ZodIssueCode.custom,message:`${D} requires a fresh canonical digest`,path:U})}function ON(_){return`${_.role}\x00${_.authority}\x00${_.id}`}function e_(_,$){return _.algorithm===$.algorithm&&_.value===$.value}var Q_=E.object({algorithm:E.enum(["sha1","sha256"]),value:E.string().regex(/^[a-f0-9]+$/)}).strict().superRefine((_,$)=>{let g=_.algorithm==="sha1"?40:64;if(_.value.length!==g)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.algorithm} object ids must contain exactly ${g} lowercase hex characters`,path:["value"]})});function I9(_){if(_.canonicalizationVersion===1){let g=JSON.stringify(["hasna.task_to_pr_projection.binding.v1",_.canonicalizationVersion,_.rootRequestRef.id,_.rootRequestRef.digest,_.prGroupRef.id,_.prGroupRef.digest,_.leafTaskRef.id,_.leafTaskRef.digest,_.repoRef.id,_.repoRef.digest,_.baseHead.algorithm,_.baseHead.value,_.frozenScopeDigest]);return _9("sha256").update(g,"utf8").digest("hex")}let $=JSON.stringify(["hasna.task_to_pr_projection.binding.v2",_.canonicalizationVersion,...[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repoRef,_.worktreeRef,_.branchRef].flatMap((g)=>[g.role,g.authority,g.id,g.digest]),_.baseHead.algorithm,_.baseHead.value,_.frozenScopeDigest]);return _9("sha256").update($,"utf8").digest("hex")}var gC=E.object({ref:b("attempt"),nonce:n3,admissionRef:b("admission"),admissionWriterGenerationRef:b("writer_generation"),workerActorRef:b("worker_actor"),workerRef:b("worker"),runtimeRef:b("runtime"),writerGenerationRef:b("writer_generation"),writerLeaseRef:b("writer_lease"),writerFenceRef:b("writer_fence"),providerProfileRef:b("provider_profile"),providerRouteRef:b("provider_route")}).strict(),DC=E.object({repoRef:b("repo"),worktreeRef:b("worktree"),branchRef:b("branch"),baseHead:Q_,branchHead:Q_}).strict(),UC=E.object({streamRef:b("event_stream"),replayCursorRef:b("replay_cursor"),sequence:E.number().int().safe().nonnegative(),prefixDigest:p4}).strict(),IC=E.object({ref:b("handoff"),previousAttemptRef:b("attempt"),nextAttemptRef:b("attempt"),previousWriterGenerationRef:b("writer_generation"),nextWriterGenerationRef:b("writer_generation"),stoppedWorkRunRef:b("work_run"),stopEvidenceRef:X$,leaseRevocationEvidenceRef:X$}).strict().superRefine((_,$)=>{Eg(_.previousAttemptRef,_.nextAttemptRef,$,["nextAttemptRef"],"Handoff attempt rotation"),Eg(_.previousWriterGenerationRef,_.nextWriterGenerationRef,$,["nextWriterGenerationRef"],"Handoff writer-generation rotation"),v9(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),jC=E.object({ref:b("review"),pullRequestRef:b("pull_request"),base:Q_,head:Q_,reviewerRef:b("reviewer"),reviewRunRef:b("review_run"),proofBundleRef:b("proof_bundle"),verdict:E.enum(["approved","changes_requested","blocked"]),reviewedAt:V_}).strict(),NC=E.object({pullRequestRef:b("pull_request"),remoteBranchRef:b("branch"),expectedBase:Q_,providerPullRequestBase:Q_,localHead:Q_,remoteHead:Q_,providerPullRequestHead:Q_,equalityProofRef:b("proof_bundle"),ciProofBundleRefs:E.array(b("proof_bundle")).min(1),verifiedAt:V_}).strict().superRefine((_,$)=>{if(!e_(_.expectedBase,_.providerPullRequestBase))$.addIssue({code:E.ZodIssueCode.custom,message:"Expected and provider-observed pull-request bases must be exactly equal",path:["providerPullRequestBase"]});if(!e_(_.localHead,_.remoteHead)||!e_(_.localHead,_.providerPullRequestHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Local, remote, and provider pull-request heads must be exactly equal",path:["providerPullRequestHead"]});let g=_.ciProofBundleRefs.map(ON);if(new Set(g).size!==g.length)$.addIssue({code:E.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical identities",path:["ciProofBundleRefs"]});let U=_.ciProofBundleRefs.map((D)=>D.digest);if(new Set(U).size!==U.length)$.addIssue({code:E.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical digests",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((D)=>m3(D,_.equalityProofRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical identities",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((D)=>D.digest===_.equalityProofRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical digests",path:["ciProofBundleRefs"]})}),EC=E.object({ref:b("repair_cycle"),cycle:E.number().int().min(0).max(2),cap:E.literal(2),exhausted:E.boolean(),latestRepairRef:b("repair_cycle").optional()}).strict().superRefine((_,$)=>{if(_.exhausted!==(_.cycle===_.cap))$.addIssue({code:E.ZodIssueCode.custom,message:"Repair exhaustion must equal the cumulative cycle cap",path:["exhausted"]});if(_.cycle===0&&_.latestRepairRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Cycle zero cannot reference a repair",path:["latestRepairRef"]});if(_.cycle>0&&!_.latestRepairRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Non-zero repair state requires the latest immutable repair ref",path:["latestRepairRef"]});if(_.latestRepairRef&&m3(_.ref,_.latestRepairRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must be distinct canonical records",path:["latestRepairRef"]});if(_.latestRepairRef&&_.ref.digest===_.latestRepairRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must have distinct canonical digests",path:["latestRepairRef"]})}),OC=E.object({ref:b("merge_guard"),pullRequestRef:b("pull_request"),expectedBase:Q_,expectedHead:Q_,reviewRefs:E.array(b("review")).min(1),proofBundleRefs:E.array(b("proof_bundle")).min(1),operatorRef:b("merge_operator"),operatorRunRef:b("merge_operator_run"),providerGuardReceiptRef:b("merge_guard_receipt"),mechanism:E.enum(["compare_and_swap","queue_expected_head"]),decision:E.enum(["eligible","denied","consumed","revoked"]),evaluatedAt:V_}).strict().superRefine((_,$)=>{if(new Set(_.reviewRefs.map((I)=>I.id)).size!==_.reviewRefs.length)$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard review refs must be unique",path:["reviewRefs"]});if(new Set(_.proofBundleRefs.map(ON)).size!==_.proofBundleRefs.length)$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical identities",path:["proofBundleRefs"]});if(new Set(_.proofBundleRefs.map((I)=>I.digest)).size!==_.proofBundleRefs.length)$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical digests",path:["proofBundleRefs"]})}),AC=E.object({ref:b("merge_outcome"),guardRef:b("merge_guard"),pullRequestRef:b("pull_request"),expectedBase:Q_,observedBase:Q_,expectedHead:Q_,observedHead:Q_,status:E.enum(["merged","closed_unmerged","refused","head_drift","base_drift"]),mergeCommitRef:b("commit").optional(),finishedAt:V_,evidenceRefs:E.array(X$).min(1)}).strict().superRefine((_,$)=>{let g=e_(_.expectedBase,_.observedBase),U=e_(_.expectedHead,_.observedHead);if(_.status==="merged"){if(!g||!U)$.addIssue({code:E.ZodIssueCode.custom,message:"Merged outcomes require observed base and head to equal the guarded values",path:[!g?"observedBase":"observedHead"]});if(!_.mergeCommitRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Merged outcomes require an immutable merge commit ref",path:["mergeCommitRef"]})}else if(_.mergeCommitRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Unmerged outcomes cannot claim a merge commit",path:["mergeCommitRef"]});if(_.status==="head_drift"&&U)$.addIssue({code:E.ZodIssueCode.custom,message:"Head-drift outcomes require distinct expected and observed heads",path:["observedHead"]});if(_.status==="head_drift"&&!g)$.addIssue({code:E.ZodIssueCode.custom,message:"Head-drift outcomes cannot also carry an unclassified base drift",path:["observedBase"]});if(_.status==="base_drift"&&g)$.addIssue({code:E.ZodIssueCode.custom,message:"Base-drift outcomes require distinct expected and observed bases",path:["observedBase"]});if(_.status==="base_drift"&&!U)$.addIssue({code:E.ZodIssueCode.custom,message:"Base-drift outcomes cannot also carry an unclassified head drift",path:["observedHead"]});if(!U&&_.status!=="head_drift")$.addIssue({code:E.ZodIssueCode.custom,message:"Only a head_drift outcome may record an observed head that differs from the expected head",path:["observedHead"]});if(!g&&_.status!=="base_drift")$.addIssue({code:E.ZodIssueCode.custom,message:"Only a base_drift outcome may record an observed base that differs from the expected base",path:["observedBase"]})}),LC=E.object({guard:OC,outcome:AC.optional()}).strict(),JC=E.object({ref:b("recovery"),priorAttemptRef:b("attempt"),priorWriterGenerationRef:b("writer_generation"),priorWorkRunRef:b("work_run"),successorAttemptNonce:n3,successorWriterGenerationRef:b("writer_generation"),preservedStateRefs:E.array(d3).min(1),stopEvidenceRef:X$,leaseRevocationEvidenceRef:X$}).strict().superRefine((_,$)=>{Eg(_.priorWriterGenerationRef,_.successorWriterGenerationRef,$,["successorWriterGenerationRef"],"Recovery writer-generation rotation"),v9(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),PC=E.object({ref:b("cancellation"),cancelledAttemptRef:b("attempt"),preservedStateRefs:E.array(d3).min(1),evidenceRefs:E.array(X$).min(1)}).strict(),zC=E.object({ref:b("cleanup_eligibility"),status:E.enum(["not_ready","preserved","blocked","eligible"]),targetWorktreeRef:b("worktree"),eventCursorRef:b("replay_cursor"),terminalDispositionRef:b("terminal_disposition"),writerLeaseRef:b("writer_lease"),leaseRevocationEvidenceRef:X$,consumedEventEvidenceRef:X$,evaluatedAt:V_,evidenceRefs:E.array(X$).min(1)}).strict().superRefine((_,$)=>{if(_.leaseRevocationEvidenceRef.id===_.consumedEventEvidenceRef.id||_.leaseRevocationEvidenceRef.digest===_.consumedEventEvidenceRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup lease-revocation and consumed-event facts require distinct evidence identities and digests",path:["consumedEventEvidenceRef"]})}),SC=E.object({ref:b("cleanup_outcome"),eligibilityRef:b("cleanup_eligibility"),targetWorktreeRef:b("worktree"),status:E.enum(["preserved","deleted","failed","skipped"]),finishedAt:V_,evidenceRefs:E.array(X$).min(1)}).strict(),WC=E.object({eligibility:zC,outcome:SC.optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!B_(_.outcome.eligibilityRef,_.eligibility.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup outcomes must bind the exact eligibility decision",path:["outcome","eligibilityRef"]});if(_.outcome&&!B_(_.outcome.targetWorktreeRef,_.eligibility.targetWorktreeRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility and outcome must bind the same target worktree",path:["outcome","targetWorktreeRef"]});if(_.outcome?.status==="deleted"&&_.eligibility.status!=="eligible")$.addIssue({code:E.ZodIssueCode.custom,message:"Deletion requires an eligible cleanup decision",path:["outcome","status"]})}),XC=E.object({plan:E.object({ref:b("rollback_plan"),targetRef:E.union([b("commit"),b("branch")]),createdAt:V_}).strict(),outcome:E.object({ref:b("rollback_outcome"),planRef:b("rollback_plan"),targetRef:E.union([b("commit"),b("branch")]),status:E.enum(["not_run","succeeded","failed","cancelled"]),finishedAt:V_,evidenceRefs:E.array(X$).min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!B_(_.outcome.planRef,_.plan.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback plan",path:["outcome","planRef"]});if(_.outcome&&!B_(_.outcome.targetRef,_.plan.targetRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback target",path:["outcome","targetRef"]});if(_.outcome&&Date.parse(_.outcome.finishedAt)({category:"ci_proof",ref:$,base:_.exactHead.expectedBase,head:_.exactHead.localHead}))]:[],..._.reviews.flatMap(($)=>[{category:"review_proof",ref:$.proofBundleRef,base:$.base,head:$.head},{category:"review_record",ref:$.ref,base:$.base,head:$.head},{category:"review_run",ref:$.reviewRunRef,base:$.base,head:$.head}]),..._.merge?[{category:"merge_guard",ref:_.merge.guard.ref},{category:"provider_guard_receipt",ref:_.merge.guard.providerGuardReceiptRef,base:_.merge.guard.expectedBase,head:_.merge.guard.expectedHead}]:[],..._.cleanup?[{category:"cleanup_eligibility",ref:_.cleanup.eligibility.ref}]:[],..._.rollback?[{category:"rollback_plan",ref:_.rollback.plan.ref}]:[],..._.terminalDispositionRef?[{category:"terminal_disposition",ref:_.terminalDispositionRef}]:[]]}function YC(_,$){if(_.category!==$.category)return!1;if(_.category==="projection_id"&&$.category==="projection_id")return _.projectionId===$.projectionId;if(_.category==="attempt_nonce"&&$.category==="attempt_nonce")return _.nonce===$.nonce;if(_.category==="replay_prefix"&&$.category==="replay_prefix")return _.sequence===$.sequence&&_.prefixDigest===$.prefixDigest;if(!("ref"in _)||!("ref"in $))return!1;return B_(_.ref,$.ref)&&(("head"in _)&&("head"in $)&&("base"in _)&&("base"in $)&&e_(_.base,$.base)&&e_(_.head,$.head)||!("head"in _)&&!("head"in $)&&!("base"in _)&&!("base"in $))}var QC="hasna.task_to_pr_adapter_extension.",TC=E.object({mode:E.enum(["local","cloud"]),schema:u3,ref:b("adapter_extension"),digest:p4}).strict().superRefine((_,$)=>{if(!_.schema.startsWith(QC))$.addIssue({code:E.ZodIssueCode.custom,message:"Adapter extension schema ids must use the permanently reserved task-to-PR adapter-extension namespace",path:["schema"]})}),qC=E.enum(["admitted","running","handed_off","reviewing","repairing","merge_ready","merged","closed_unmerged","failed","blocked","cancelled","recovering","cleanup_complete","rolled_back"]),j9=new Set(["admitted","running","handed_off"]),N9=new Set(["merged","closed_unmerged","failed","blocked","cancelled","cleanup_complete","rolled_back"]),BC={admitted:new Set(["absent","denied:none","revoked:none"]),running:new Set(["absent","denied:none","revoked:none"]),handed_off:new Set(["absent","denied:none","revoked:none"]),reviewing:new Set(["absent","denied:none","revoked:none"]),repairing:new Set(["absent","denied:none","revoked:none"]),merge_ready:new Set(["eligible:none"]),merged:new Set(["consumed:merged"]),closed_unmerged:new Set(["consumed:closed_unmerged","consumed:refused","consumed:head_drift","consumed:base_drift"]),failed:new Set(["absent","revoked:none"]),blocked:new Set(["absent","revoked:none"]),cancelled:new Set(["absent","revoked:none"]),recovering:new Set(["absent","denied:none","revoked:none"]),cleanup_complete:new Set(["absent","revoked:none","consumed:merged","consumed:closed_unmerged","consumed:refused","consumed:head_drift","consumed:base_drift"]),rolled_back:new Set(["consumed:merged"])},KC=E.object({schema:E.literal(x.taskToPrProjection),id:r9,createdAt:V_,canonicalizationVersion:E.union([E.literal(1),E.literal(2)]),identityDigest:p4,frozenScopeDigest:p4,state:qC,workRunRef:b("work_run"),rootRequestRef:b("root_request"),prGroupRef:b("pr_group"),leafTaskRef:b("leaf_task"),attempt:gC,repository:DC,events:UC,openLoopsInvocationRef:b("openloops_invocation").optional(),pullRequestRef:b("pull_request").optional(),exactHead:NC.optional(),handoff:IC.optional(),reviews:E.array(jC).default([]),repair:EC,merge:LC.optional(),recovery:JC.optional(),cancellation:PC.optional(),cleanup:WC.optional(),rollback:XC.optional(),terminalDispositionRef:b("terminal_disposition").optional(),provenanceLedger:E.array(RC),adapterExtensions:E.array(TC).default([]),evidenceRefs:E.array(X$).default([])}).strict().superRefine((_,$)=>{let g=_.canonicalizationVersion===1?I9({canonicalizationVersion:1,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest}):I9({canonicalizationVersion:2,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,worktreeRef:_.repository.worktreeRef,branchRef:_.repository.branchRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest});if(_.identityDigest!==g)$.addIssue({code:E.ZodIssueCode.custom,message:"identityDigest must equal the selected v1 compatibility or v2 branch/worktree-bound canonical identity digest",path:["identityDigest"]});let U=new Set,D=new Set,I=new Set,j=new Set,N=new Set,O=new Set;for(let[T,q]of _.provenanceLedger.entries()){if("ref"in q){if(U.has(q.ref.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical owner id across categories or generations",path:["provenanceLedger",T,"ref","id"]});if(U.add(q.ref.id),D.has(q.ref.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical digest across categories or generations",path:["provenanceLedger",T,"ref","digest"]});D.add(q.ref.digest);continue}if(q.category==="projection_id"){if(I.has(q.projectionId))$.addIssue({code:E.ZodIssueCode.custom,message:"Projection identity provenance tombstones must be globally unique",path:["provenanceLedger",T,"projectionId"]});I.add(q.projectionId);continue}if(q.category==="attempt_nonce"){if(j.has(q.nonce))$.addIssue({code:E.ZodIssueCode.custom,message:"Attempt nonce provenance tombstones must be globally unique",path:["provenanceLedger",T,"nonce"]});j.add(q.nonce);continue}if(N.has(q.prefixDigest))$.addIssue({code:E.ZodIssueCode.custom,message:"Replay prefix provenance tombstones must be globally unique",path:["provenanceLedger",T,"prefixDigest"]});if(N.add(q.prefixDigest),O.has(q.sequence))$.addIssue({code:E.ZodIssueCode.custom,message:"Replay prefix provenance entries must bind globally unique replay sequences",path:["provenanceLedger",T,"sequence"]});O.add(q.sequence)}for(let T of GC(_))if(!_.provenanceLedger.some((q)=>YC(q,T)))$.addIssue({code:E.ZodIssueCode.custom,message:`The active ${T.category} identity must be represented exactly in the monotonic provenance ledger`,path:["provenanceLedger"]});let A=[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repository.repoRef,_.repository.worktreeRef,_.repository.branchRef,_.events.streamRef,..._.pullRequestRef?[_.pullRequestRef]:[]],L=(T,q,V,Z)=>{let e=new Set(q.map((I_)=>I_.role)),D_=new Set;for(let[I_,J_]of T.entries()){if(!e.has(J_.role))$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} cannot preserve an unrecognized ${J_.role} role`,path:[...V,I_]});if(D_.has(J_.role))$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} must preserve exactly one canonical ref per role`,path:[...V,I_]});D_.add(J_.role)}if(T.length!==q.length)$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} preservation refs must exactly equal the required canonical role set`,path:V});for(let I_ of q)if(!T.some((J_)=>B_(J_,I_)))$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} must preserve ${I_.role}`,path:V})};if(_.handoff&&!B_(_.handoff.nextWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Handoff next generation must be the current attempt writer generation",path:["handoff","nextWriterGenerationRef"]});if(_.handoff&&!B_(_.handoff.nextAttemptRef,_.attempt.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Handoff next attempt must be the current attempt",path:["handoff","nextAttemptRef"]});if(_.handoff)Eg(_.handoff.stoppedWorkRunRef,_.workRunRef,$,["handoff","stoppedWorkRunRef"],"Handoff WorkRun rotation");if(_.recovery){if(_.recovery.successorAttemptNonce!==_.attempt.nonce)$.addIssue({code:E.ZodIssueCode.custom,message:"Recovery successor nonce must equal the current attempt nonce",path:["recovery","successorAttemptNonce"]});if(!B_(_.recovery.successorWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Recovery successor generation must equal the current writer generation",path:["recovery","successorWriterGenerationRef"]});Eg(_.recovery.priorAttemptRef,_.attempt.ref,$,["recovery","priorAttemptRef"],"Recovery attempt rotation"),Eg(_.recovery.priorWorkRunRef,_.workRunRef,$,["recovery","priorWorkRunRef"],"Recovery WorkRun rotation"),L(_.recovery.preservedStateRefs,[_.recovery.priorWorkRunRef,...A],["recovery","preservedStateRefs"],"Recovery")}if(_.cancellation&&!B_(_.cancellation.cancelledAttemptRef,_.attempt.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Cancellation must bind the current attempt",path:["cancellation","cancelledAttemptRef"]});if(_.cancellation)L(_.cancellation.preservedStateRefs,[_.workRunRef,_.attempt.ref,...A],["cancellation","preservedStateRefs"],"Cancellation");if(_.cancellation&&_.recovery)$.addIssue({code:E.ZodIssueCode.custom,message:"A projection cannot be both the cancellation and recovery snapshot",path:["recovery"]});if(_.handoff&&_.recovery)$.addIssue({code:E.ZodIssueCode.custom,message:"A projection cannot be both the handoff and recovery snapshot",path:["recovery"]});if(_.cleanup&&!B_(_.cleanup.eligibility.eventCursorRef,_.events.replayCursorRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the current canonical replay cursor",path:["cleanup","eligibility","eventCursorRef"]});if(_.cleanup&&(!_.terminalDispositionRef||!B_(_.cleanup.eligibility.terminalDispositionRef,_.terminalDispositionRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact durable terminal owner fact",path:["cleanup","eligibility","terminalDispositionRef"]});if(_.cleanup&&!B_(_.cleanup.eligibility.writerLeaseRef,_.attempt.writerLeaseRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact writer lease being revoked",path:["cleanup","eligibility","writerLeaseRef"]});if(_.cleanup&&!B_(_.cleanup.eligibility.targetWorktreeRef,_.repository.worktreeRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the canonical worktree",path:["cleanup","eligibility","targetWorktreeRef"]});if(_.pullRequestRef){if(_.exactHead&&!B_(_.exactHead.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head proof must bind the canonical pull request ref",path:["exactHead","pullRequestRef"]});for(let[T,q]of _.reviews.entries())if(!B_(q.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Every review must bind the canonical pull request ref",path:["reviews",T,"pullRequestRef"]});if(_.merge&&!B_(_.merge.guard.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard must bind the canonical pull request ref",path:["merge","guard","pullRequestRef"]});if(_.merge?.outcome&&!B_(_.merge.outcome.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome must bind the canonical pull request ref",path:["merge","outcome","pullRequestRef"]})}else if(_.exactHead||_.reviews.length>0||_.merge)$.addIssue({code:E.ZodIssueCode.custom,message:"Review and merge state require a canonical pull request ref",path:["pullRequestRef"]});if(_.exactHead&&!e_(_.exactHead.localHead,_.repository.branchHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact local head must equal the canonical branch head",path:["exactHead","localHead"]});if(_.exactHead&&!e_(_.exactHead.expectedBase,_.repository.baseHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head expected base must equal the canonical repository base",path:["exactHead","expectedBase"]});if(_.exactHead&&!B_(_.exactHead.remoteBranchRef,_.repository.branchRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head remote branch ref must equal the canonical repository branch ref",path:["exactHead","remoteBranchRef"]});if(_.exactHead&&Date.parse(_.exactHead.verifiedAt)0&&!_.exactHead)$.addIssue({code:E.ZodIssueCode.custom,message:"Reviews require local/remote/provider exact-head proof",path:["exactHead"]});if(_.exactHead){let T=[{ref:_.exactHead.equalityProofRef,path:["exactHead","equalityProofRef"]},..._.exactHead.ciProofBundleRefs.map((Z,e)=>({ref:Z,path:["exactHead","ciProofBundleRefs",e]})),..._.reviews.map((Z,e)=>({ref:Z.proofBundleRef,path:["reviews",e,"proofBundleRef"]}))],q=new Set,V=new Set;for(let Z of T){let e=ON(Z.ref);if(q.has(e))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical identities",path:Z.path});if(q.add(e),V.has(Z.ref.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical digests",path:Z.path});V.add(Z.ref.digest)}}let z=new Set,W=new Set,J=new Set,P=new Set,S=new Set,X=new Set,G=new Set,R=new Set;for(let[T,q]of _.reviews.entries()){if(!e_(q.base,_.repository.baseHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Review base must equal the exact canonical pull-request base",path:["reviews",T,"base"]});if(!e_(q.head,_.repository.branchHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Review head must equal the exact canonical branch head",path:["reviews",T,"head"]});for(let[Z,e,D_]of[[q.ref.id,z,"ref"],[q.reviewerRef.id,J,"reviewerRef"],[q.reviewRunRef.id,S,"reviewRunRef"]]){if(e.has(Z))$.addIssue({code:E.ZodIssueCode.custom,message:"Review, reviewer, and review-run refs must each be unique",path:["reviews",T,D_]});e.add(Z)}if(W.has(q.ref.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Review refs must resolve to distinct canonical record digests",path:["reviews",T,"ref"]});if(W.add(q.ref.digest),P.has(q.reviewerRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Reviewer refs must resolve to distinct canonical actor digests",path:["reviews",T,"reviewerRef"]});if(P.add(q.reviewerRef.digest),X.has(q.reviewRunRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Review-run refs must resolve to distinct canonical run digests",path:["reviews",T,"reviewRunRef"]});X.add(q.reviewRunRef.digest);let V=ON(q.proofBundleRef);if(G.has(V))$.addIssue({code:E.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical identities",path:["reviews",T,"proofBundleRef"]});if(G.add(V),R.has(q.proofBundleRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical digests",path:["reviews",T,"proofBundleRef"]});if(R.add(q.proofBundleRef.digest),q.reviewerRef.digest===_.attempt.workerRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Worker and reviewer identities must resolve to distinct canonical digests",path:["reviews",T,"reviewerRef"]});if(q.reviewRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Worker runtime and review run must resolve to distinct canonical digests",path:["reviews",T,"reviewRunRef"]});if(_.exactHead&&Date.parse(q.reviewedAt)Date.parse(_.merge.guard.evaluatedAt)T.verdict!=="approved"))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards require at least one review and all reviews approved",path:["merge","guard","decision"]});if(_.merge.guard.reviewRefs.length!==_.reviews.length||_.merge.guard.reviewRefs.some((T)=>!_.reviews.some((q)=>B_(T,q.ref))))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guard review refs must exactly equal the projected approved review refs as a canonical set",path:["merge","guard","reviewRefs"]});for(let T of _.reviews)if(!_.merge.guard.proofBundleRefs.some((q)=>B_(q,T.proofBundleRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact review proof bundle",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&!_.merge.guard.proofBundleRefs.some((T)=>B_(T,_.exactHead.equalityProofRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards must bind the exact-head equality proof",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&_.exactHead.ciProofBundleRefs.some((T)=>!_.merge.guard.proofBundleRefs.some((q)=>B_(q,T))))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact-head CI proof",path:["merge","guard","proofBundleRefs"]})}}if(_.merge?.outcome){if(!B_(_.merge.outcome.guardRef,_.merge.guard.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome must bind the exact immutable merge guard",path:["merge","outcome","guardRef"]});if(!e_(_.merge.outcome.expectedHead,_.merge.guard.expectedHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome expected head must equal the guarded expected head",path:["merge","outcome","expectedHead"]});if(!e_(_.merge.outcome.expectedBase,_.merge.guard.expectedBase))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome expected base must equal the guarded expected base",path:["merge","outcome","expectedBase"]});if(_.merge.guard.decision!=="consumed")$.addIssue({code:E.ZodIssueCode.custom,message:"Every merge outcome requires an explicitly consumed merge guard",path:["merge","guard","decision"]});if(Date.parse(_.merge.outcome.finishedAt)0)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections cannot carry review bindings before review authority is active`,path:["reviews"]});if((j9.has(_.state)||_.state==="recovering")&&(_.merge?.guard.reviewRefs.length??0)>0)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections cannot hide review bindings in a merge guard before review authority is active`,path:["merge","guard","reviewRefs"]});let K=_.merge?`${_.merge.guard.decision}:${_.merge.outcome?.status??"none"}`:"absent";if(!BC[_.state].has(K))$.addIssue({code:E.ZodIssueCode.custom,message:`State ${_.state} is incompatible with merge authority ${K}`,path:["merge"]});if(N9.has(_.state)&&!_.terminalDispositionRef)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections require a durable Todos terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(!N9.has(_.state)&&_.terminalDispositionRef)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections cannot carry a terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(_.state==="reviewing"&&_.reviews.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Reviewing projections require review refs",path:["reviews"]});if(_.state==="cancelled"&&!_.cancellation)$.addIssue({code:E.ZodIssueCode.custom,message:"Cancelled projections require preservation state",path:["cancellation"]});if(_.cancellation&&_.merge?.outcome)$.addIssue({code:E.ZodIssueCode.custom,message:"Cancellation cannot coexist with a terminal merge outcome",path:["cancellation"]});if(_.state==="recovering"&&!_.recovery)$.addIssue({code:E.ZodIssueCode.custom,message:"Recovering projections require recovery state",path:["recovery"]});if(_.state==="repairing"&&_.repair.cycle===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Repairing projections require a non-zero repair cycle",path:["repair","cycle"]});if(_.merge&&(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed")&&!B_(_.attempt.admissionWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge eligibility requires admission from the current writer generation",path:["attempt","admissionWriterGenerationRef"]});if(_.state==="merge_ready"&&_.merge?.guard.decision!=="eligible")$.addIssue({code:E.ZodIssueCode.custom,message:"Merge-ready projections require an eligible guard",path:["merge"]});if(_.state==="merged"&&_.merge?.outcome?.status!=="merged")$.addIssue({code:E.ZodIssueCode.custom,message:"Merged projections require a merged immutable outcome",path:["merge"]});if(_.state==="closed_unmerged"&&!_.merge?.outcome?.status.match(/^(closed_unmerged|refused|head_drift|base_drift)$/))$.addIssue({code:E.ZodIssueCode.custom,message:"Closed-unmerged projections require a non-merged terminal outcome",path:["merge"]});if(_.state==="cleanup_complete"&&(!_.cleanup?.outcome||!["deleted","preserved","skipped"].includes(_.cleanup.outcome.status)))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup-complete projections require an immutable cleanup outcome",path:["cleanup"]});if(_.state==="rolled_back"&&_.rollback?.outcome?.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Rolled-back projections require a successful rollback outcome",path:["rollback"]});if((_.state==="failed"||_.state==="blocked")&&_.evidenceRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed and blocked projections require redacted evidence refs",path:["evidenceRefs"]});if(["admitted","running","handed_off","reviewing","repairing","merge_ready","recovering"].includes(_.state)&&(_.merge?.outcome||_.cancellation||_.cleanup?.outcome||_.rollback?.outcome))$.addIssue({code:E.ZodIssueCode.custom,message:"Non-terminal projections cannot carry terminal owner outcomes",path:["state"]});let Q=new Set;for(let[T,q]of _.adapterExtensions.entries()){let V=`${q.mode}:${q.schema}`;if(Q.has(V))$.addIssue({code:E.ZodIssueCode.custom,message:"Adapter extensions must be unique per local/cloud mode and schema",path:["adapterExtensions",T]});Q.add(V)}});var VC=E.object({id:E.string().min(1),at:V_,kind:E.enum(["message","tool_call","command","file_change","error","test","decision","verification","status","other"]),summary:E.string().min(1),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),costEstimate:QU.optional()}).strict(),FC=L_(x.agentTrajectory).extend({actor:m$,workRunRef:s.optional(),events:E.array(VC).default([]),outcome:E.enum(["succeeded","failed","cancelled","blocked","unknown"]).default("unknown"),proofBundleRef:s.optional()}).strict(),MC="v1",ZC=E.enum(["library","cli-with-store","service","saas"]),bC=["user-hosted","hasna-saas"],HC=E.enum(bC),kC=["api","sdk","mcp","cli"],w9=E.enum(kC),CC=E.enum(["supported","deferred","unsupported"]),rC=E.enum(["none","local-only","api-key","session","service-token","custom"]),k3=E.object({method:E.enum(["GET","POST","PUT","PATCH","DELETE"]),path:E.string().regex(/^\/[A-Za-z0-9_./:*-]*$/,"Endpoint paths must be absolute HTTP paths"),public:E.boolean().default(!1),description:E.string().min(1).optional()}).strict(),vC=E.object({id:E.string().min(1),kind:E.enum(["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]),required:E.boolean().default(!0),command:E.string().min(1).optional(),evidenceRef:T_.optional(),status:E.enum(["pending","passed","failed","blocked","deferred"]).default("pending"),summary:E.string().min(1).optional()}).strict().superRefine((_,$)=>{if((_.status==="passed"||_.status==="failed"||_.status==="blocked")&&!_.command&&!_.evidenceRef&&!_.summary)$.addIssue({code:E.ZodIssueCode.custom,message:"Terminal readiness gates require command, evidenceRef, or summary",path:["status"]})}),wC=E.object({name:E.string().min(1),kind:w9.optional(),status:CC,bin:E.string().min(1).optional(),mcpBin:E.string().min(1).optional(),authMode:rC,health:k3.optional(),readiness:k3.optional(),version:k3.optional(),apiBasePath:E.string().regex(/^\/v[0-9]+$/,"Stable API base path must be /vN").optional(),openApiPath:E.string().regex(/^\/[A-Za-z0-9_./:-]*$/).optional(),exportSubpath:E.string().regex(/^\.(?:\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*)?$/,"SDK export subpaths must be package export keys such as . or ./sdk").optional(),generatedFrom:E.string().regex(/^\/[A-Za-z0-9_./:-]*$/,"SDK generatedFrom must reference an absolute OpenAPI path").optional(),clientClassName:E.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/).optional(),deferReason:E.string().min(1).optional(),readinessGates:E.array(vC).default([])}).strict().superRefine((_,$)=>{if(_.status==="supported"){if(!_.kind||_.kind==="api"){if(!_.bin)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a serve bin",path:["bin"]});if(!_.health)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a health endpoint",path:["health"]});if(!_.readiness)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a readiness endpoint",path:["readiness"]});if(!_.version)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a version endpoint",path:["version"]})}if(_.kind==="cli"&&!_.bin)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported CLI surfaces require a bin",path:["bin"]});if(_.kind==="mcp"&&!_.mcpBin)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported MCP surfaces require an mcpBin",path:["mcpBin"]});if(_.kind==="sdk"&&!_.exportSubpath)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported SDK surfaces require an exportSubpath",path:["exportSubpath"]})}if((_.status==="deferred"||_.status==="unsupported")&&!_.deferReason)$.addIssue({code:E.ZodIssueCode.custom,message:"Deferred or unsupported service surfaces require a deferReason",path:["deferReason"]});if(_.health&&_.health.path!=="/health")$.addIssue({code:E.ZodIssueCode.custom,message:"Health endpoint must be /health",path:["health","path"]});if(_.health&&_.health.method!=="GET")$.addIssue({code:E.ZodIssueCode.custom,message:"Health endpoint must use GET",path:["health","method"]});if(_.readiness&&_.readiness.path!=="/ready")$.addIssue({code:E.ZodIssueCode.custom,message:"Readiness endpoint must be /ready",path:["readiness","path"]});if(_.readiness&&_.readiness.method!=="GET")$.addIssue({code:E.ZodIssueCode.custom,message:"Readiness endpoint must use GET",path:["readiness","method"]});if(_.version&&_.version.path!=="/version")$.addIssue({code:E.ZodIssueCode.custom,message:"Version endpoint must be /version",path:["version","path"]});if(_.version&&_.version.method!=="GET")$.addIssue({code:E.ZodIssueCode.custom,message:"Version endpoint must use GET",path:["version","method"]})}),fC=["sqlite","postgres"],f9=E.enum(fC),u9=["sqlite","postgres"],uC=E.enum(u9),f3=["postgres"],xC=E.object({kind:w9,reason:E.string().trim().min(1)}).strict(),i3=500,l3=200,AN=(_)=>E.string().trim().min(1).max(_).regex(/^[^\u0000-\u001f\u007f]+$/,"Waiver text must not contain control characters"),yC=["domain","host","ip","email"],hC=E.object({kind:E.enum(yC),reason:AN(i3),reviewedBy:AN(l3),expiresAt:V_}).strict(),cC=E.object({engine:E.enum(f3),reason:AN(i3),reviewedBy:AN(l3).optional(),expiresAt:V_.optional()}).strict();function nC(_){if(_.class!=="cli-with-store")return`storage waivers are not permitted for class ${_.class}`;if(_.bins.includes(`${_.name}-serve`))return`storage waivers are not permitted for a service-capable cli-with-store repo shipping ${_.name}-serve`;if(_.storageMode==="postgres")return"storage waivers are not permitted while storage.mode is postgres, which reads and writes PostgreSQL directly";if(_.hosting.includes("hasna-saas"))return"storage waivers are not permitted for a repo declaring the hasna-saas product story";return null}var dC=E.object({conformance:E.object({waivedSurfaces:E.array(xC).default([]),waiverProfile:E.literal("non-node-monorepo").optional(),waivedStorageEngines:E.array(cC).default([]),waivedAssetInventories:E.array(hC).default([])}).catchall(E.unknown()).optional(),release:E.object({artifactScan:E.object({script:E.string().trim().min(1)}).strict().optional()}).catchall(E.unknown()).optional()}).catchall(E.unknown()),mC=E.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,"App names must be lowercase dashed identifiers"),iC=["","-cli","-mcp","-serve","-worker","-runner","-daemon","-migrate","-doctor"];function lC(_){return iC.map(($)=>`${_}${$}`)}function E9(_){return`hasna/oss/${_}/database-url`}var tC=E.object({mode:f9,engines:E.array(uC).min(1).optional(),envPrefix:E.string().regex(/^HASNA_[A-Z][A-Z0-9]*_$/).optional(),aliasEnvPrefix:E.string().regex(/^[A-Z][A-Z0-9]*_$/).optional(),databaseUrlSecretRef:E.string().regex(/^hasna\/oss\/[a-z0-9-]+\/database-url$/).optional(),sqlitePath:E.string().min(1).endsWith(".db","storage.sqlitePath must end in .db").optional(),pgTestGate:E.object({envVar:E.string().regex(/^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$/),command:E.string().trim().min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.engines&&new Set(_.engines).size!==_.engines.length)$.addIssue({code:E.ZodIssueCode.custom,message:"storage.engines must not contain duplicates",path:["engines"]});if(_.engines?.includes("postgres")&&!_.envPrefix)$.addIssue({code:E.ZodIssueCode.custom,message:"storage.engines containing postgres requires envPrefix for the HASNA__DATABASE_URL contract",path:["envPrefix"]})}),x9=E.enum(["0600"]),y9=E.enum(["0700"]),h9=E.enum([".hasna",".codewith"]),oC=E.enum(["directory","file","sqlite_db","sqlite_wal","sqlite_shm","backup","export","report","tmp","log","session","snapshot"]),Ig=W$.refine((_)=>!_.startsWith("~"),"Local store path patterns must be relative to their declared root"),pC=E.object({id:E.string().min(1),source:E.enum(["sqlite","manifest","index","runtime","package_adapter"]),table:E.string().min(1).optional(),column:E.string().min(1).optional(),description:E.string().min(1),required:E.boolean().default(!0)}).strict(),eC=E.object({safeWhen:E.enum(["exclusive_access","offline_only","never"]),operations:E.array(E.enum(["wal_checkpoint_truncate","incremental_vacuum","optimize","vacuum"])).default([])}).strict().superRefine((_,$)=>{if(_.safeWhen==="never"&&_.operations.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"sqliteMaintenance.safeWhen=never cannot declare operations",path:["operations"]})}),aC=E.object({id:E.string().min(1),description:E.string().min(1),ttlDays:E.number().int().nonnegative().optional(),artifactClasses:E.array(oC).min(1),allowlistGlobs:E.array(Ig).min(1),activeRecordExclusions:E.array(pC).default([]),sqliteMaintenance:eC.optional()}).strict(),sC=E.object({storeId:E.string().regex(/^[a-z][a-z0-9-]*$/),packageName:E.string().min(1),displayName:E.string().min(1),root:h9,relativePath:Ig,directoryMode:y9.default("0700"),fileMode:x9.default("0600"),sqliteDatabaseGlobs:E.array(Ig).default([]),sensitiveFileGlobs:E.array(Ig).default([]),backupGlobs:E.array(Ig).default([]),exportGlobs:E.array(Ig).default([]),retentionAdapters:E.array(aC).default([]),notes:E.array(E.string().min(1)).default([])}).strict().superRefine((_,$)=>{if(_.relativePath.includes("*"))$.addIssue({code:E.ZodIssueCode.custom,message:"store relativePath must be a concrete directory; use glob fields for files",path:["relativePath"]});let g=new Set;for(let[U,D]of _.retentionAdapters.entries()){if(g.has(D.id))$.addIssue({code:E.ZodIssueCode.custom,message:"retention adapter ids must be unique within a store",path:["retentionAdapters",U,"id"]});g.add(D.id)}}),c9=L_(x.secureLocalStorePolicy).extend({version:E.string().min(1),scope:E.array(h9).min(1),defaults:E.object({directoryMode:y9.default("0700"),fileMode:x9.default("0600"),dryRunDefault:E.literal(!0),requireExplicitApply:E.literal(!0),includeSqliteSidecars:E.literal(!0),redactedEvidenceOnly:E.literal(!0)}).strict(),stores:E.array(sC).min(1),lifecycle:E.object({retentionDryRunDefault:E.literal(!0),requireActiveRecordExclusionProof:E.literal(!0),requireArtifactAllowlist:E.literal(!0),sqliteMaintenanceRequiresExclusiveAccess:E.literal(!0)}).strict(),warnings:E.array(E.string().min(1)).default([])}).strict().superRefine((_,$)=>{let g=new Set;for(let[U,D]of _.stores.entries()){if(g.has(D.storeId))$.addIssue({code:E.ZodIssueCode.custom,message:"store ids must be unique",path:["stores",U,"storeId"]});if(g.add(D.storeId),!_.scope.includes(D.root))$.addIssue({code:E.ZodIssueCode.custom,message:"store root must be listed in policy scope",path:["stores",U,"root"]})}}),_r=E.object({$schema:E.string().min(1).optional(),schema:E.literal(x.serviceContract),name:mC,class:ZC,contractVersion:E.literal(MC),kitVersion:E.string().min(1),description:E.string().min(1).optional(),bins:E.array(E.string().min(1)).default([]),storage:tC.optional(),hosting:E.array(HC).min(1).default(["user-hosted"]),serviceSurfaces:E.array(wC).default([]),metadata:dC.optional()}).strict().superRefine((_,$)=>{if(new Set(_.hosting).size!==_.hosting.length)$.addIssue({code:E.ZodIssueCode.custom,message:"hosting must not contain duplicates",path:["hosting"]});let g=new Set(lC(_.name)),U=new Set;for(let[A,L]of _.bins.entries()){if(U.has(L))$.addIssue({code:E.ZodIssueCode.custom,message:"Duplicate bin declaration",path:["bins",A]});if(U.add(L),!g.has(L))$.addIssue({code:E.ZodIssueCode.custom,message:`Bin "${L}" is not allowlisted for app "${_.name}"; allowed: ${[...g].join(", ")}`,path:["bins",A]})}let D=(A)=>U.has(`${_.name}${A}`);if(_.storage){let A=_.name.toUpperCase().replace(/-/g,"_");if(_.storage.envPrefix&&_.storage.envPrefix!==`HASNA_${A}_`)$.addIssue({code:E.ZodIssueCode.custom,message:`storage.envPrefix must be HASNA_${A}_`,path:["storage","envPrefix"]});if(_.storage.databaseUrlSecretRef&&_.storage.databaseUrlSecretRef!==E9(_.name))$.addIssue({code:E.ZodIssueCode.custom,message:`storage.databaseUrlSecretRef must be ${E9(_.name)}`,path:["storage","databaseUrlSecretRef"]})}if(_.class==="library"){if(_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"library repos must not declare storage",path:["storage"]});if(D("-serve")||D("-mcp"))$.addIssue({code:E.ZodIssueCode.custom,message:"library repos must not ship a -serve or -mcp bin",path:["bins"]})}if(_.class==="cli-with-store"){if(!_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"cli-with-store repos must declare storage",path:["storage"]});else{if(_.storage.mode==="sqlite"&&!_.storage.sqlitePath)$.addIssue({code:E.ZodIssueCode.custom,message:"sqlite cli-with-store storage requires sqlitePath (~/.hasna//.db)",path:["storage","sqlitePath"]});if(_.storage.engines){let A=new Set(_.storage.engines),L=_.metadata?.conformance?.waivedStorageEngines??[],z=nC({class:_.class,name:_.name,bins:_.bins,hosting:_.hosting,storageMode:_.storage.mode}),W=new Set(z?[]:L.map((P)=>P.engine)),J=u9.filter((P)=>!A.has(P)&&!W.has(P));if(J.length>0){let P=z&&L.length>0?`; declared waiver ignored: ${z}`:"";$.addIssue({code:E.ZodIssueCode.custom,message:`cli-with-store storage.engines must declare both sqlite and postgres unless the engine carries a metadata.conformance.waivedStorageEngines waiver; missing: ${J.join(", ")}${P}`,path:["storage","engines"]})}}}if(!U.has(_.name))$.addIssue({code:E.ZodIssueCode.custom,message:`cli-with-store repos must ship the "${_.name}" bin`,path:["bins"]})}if(_.class==="service"){if(!_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"service repos must declare storage",path:["storage"]});else if(_.storage.engines&&(!_.storage.engines.includes("sqlite")||!_.storage.engines.includes("postgres")))$.addIssue({code:E.ZodIssueCode.custom,message:"service storage.engines must declare both sqlite and postgres",path:["storage","engines"]});if(!D("-serve"))$.addIssue({code:E.ZodIssueCode.custom,message:`service repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"service repos must declare at least one service surface",path:["serviceSurfaces"]})}if(_.class==="saas"){if(!_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"saas repos must declare storage",path:["storage"]});else{if(_.storage.mode!=="postgres")$.addIssue({code:E.ZodIssueCode.custom,message:"saas repos must use the postgres storage backend",path:["storage","mode"]});if(!_.storage.envPrefix)$.addIssue({code:E.ZodIssueCode.custom,message:"saas storage requires envPrefix for the public DATABASE_URL contract",path:["storage","envPrefix"]})}if(!D("-serve"))$.addIssue({code:E.ZodIssueCode.custom,message:`saas repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"saas repos must declare at least one service surface",path:["serviceSurfaces"]})}for(let[A,L]of _.serviceSurfaces.entries()){if(L.bin&&!U.has(L.bin))$.addIssue({code:E.ZodIssueCode.custom,message:`Service surface bin "${L.bin}" must be declared in bins`,path:["serviceSurfaces",A,"bin"]});if(L.mcpBin&&!U.has(L.mcpBin))$.addIssue({code:E.ZodIssueCode.custom,message:`Service surface MCP bin "${L.mcpBin}" must be declared in bins`,path:["serviceSurfaces",A,"mcpBin"]})}let I=_.metadata?.conformance?.waivedSurfaces??[],j=new Set;for(let[A,L]of I.entries()){if(j.has(L.kind))$.addIssue({code:E.ZodIssueCode.custom,message:`Duplicate conformance waiver for ${L.kind}`,path:["metadata","conformance","waivedSurfaces",A,"kind"]});j.add(L.kind)}let N=_.metadata?.conformance?.waivedStorageEngines??[],O=new Set;for(let[A,L]of N.entries()){if(O.has(L.engine))$.addIssue({code:E.ZodIssueCode.custom,message:`Duplicate storage-engine waiver for ${L.engine}`,path:["metadata","conformance","waivedStorageEngines",A,"engine"]});O.add(L.engine)}}),Ad=E.object({status:E.enum(["ok","degraded","unavailable"]),version:E.string().min(1),mode:f9}).strict(),Ld=E.object({ready:E.boolean(),reason:E.string().min(1).optional()}).strict(),Jd=E.object({version:E.string().min(1)}).strict(),$r=E.enum(["info","notice","breaking","critical"]),gr=E.string().regex(/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*){1,3}$/,"Comms event types must be 2-4 lowercase dot-separated segments (..)"),Dr=["FREEZE","UNFREEZE","BREAKING","CUTOVER","POLICY","RELEASE"],Ur=E.enum(Dr);var Ir=E.enum(["fleet","package","machine"]),n9=L_(x.commsEventEnvelope).extend({type:gr,severity:$r,scope:Ir,summary:E.string().min(1).optional(),source:m$.optional(),affected_packages:E.array(t).default([]),affected_machines:E.array(t).default([]),action_required:E.boolean().default(!1),ack_by:V_.optional(),dedupe_key:t,resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.scope==="package"&&_.affected_packages.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Package-scoped comms events require affected_packages",path:["affected_packages"]});if(_.scope==="machine"&&_.affected_machines.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Machine-scoped comms events require affected_machines",path:["affected_machines"]});if(_.ack_by&&!_.action_required)$.addIssue({code:E.ZodIssueCode.custom,message:"Comms events with an ack_by deadline require action_required",path:["action_required"]});if(_.type==="fleet.freeze"||_.type==="fleet.unfreeze"){if(_.severity!=="critical")$.addIssue({code:E.ZodIssueCode.custom,message:`${_.type} events are always critical`,path:["severity"]});if(_.scope!=="fleet")$.addIssue({code:E.ZodIssueCode.custom,message:`${_.type} events are always fleet-scoped`,path:["scope"]});if(!_.action_required)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.type} events require action_required`,path:["action_required"]})}}),jr=E.enum(["fleet","package","product","loop-lane","initiative","personal"]),Nr=E.enum(["quiet","work","firehose"]),Er=t.refine((_)=>/^(?:\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z)?|gate:[0-9a-f][0-9a-f-]{7,35})$/.test(_),"until must be an ISO date (YYYY-MM-DD), a UTC timestamp, or a gate id (gate:)"),Or=L_(x.commsChannelMetadata).extend({class:jr,noise:Nr.optional(),owner:t.optional(),until:Er.optional(),successor:t.optional()}).strict().superRefine((_,$)=>{if(_.class==="initiative"){if(!_.owner)$.addIssue({code:E.ZodIssueCode.custom,message:"Initiative channels require an owner",path:["owner"]});if(!_.until)$.addIssue({code:E.ZodIssueCode.custom,message:"Initiative channels require an until horizon (date or gate id)",path:["until"]})}}),O9={FREEZE:{defaultSeverity:"critical",allowedSeverities:["critical"],requiredEventType:"fleet.freeze"},UNFREEZE:{defaultSeverity:"critical",allowedSeverities:["critical"],requiredEventType:"fleet.unfreeze"},BREAKING:{defaultSeverity:"breaking",allowedSeverities:["breaking"],requiredEventType:null},CUTOVER:{defaultSeverity:"notice",allowedSeverities:["notice","breaking"],requiredEventType:null},POLICY:{defaultSeverity:"breaking",allowedSeverities:["notice","breaking"],requiredEventType:null},RELEASE:{defaultSeverity:"info",allowedSeverities:["info","notice"],requiredEventType:null}},Ar=L_(x.commsMessageMetadata).extend({tag:Ur,envelope:n9}).strict().superRefine((_,$)=>{let g=O9[_.tag];if(!g.allowedSeverities.includes(_.envelope.severity))$.addIssue({code:E.ZodIssueCode.custom,message:`[${_.tag}] posts allow severities ${g.allowedSeverities.join(", ")}`,path:["envelope","severity"]});if(g.requiredEventType&&_.envelope.type!==g.requiredEventType)$.addIssue({code:E.ZodIssueCode.custom,message:`[${_.tag}] posts require event type ${g.requiredEventType}`,path:["envelope","type"]});for(let[U,D]of Object.entries(O9))if(D.requiredEventType===_.envelope.type&&_.tag!==U)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.envelope.type} events must use the [${U}] tag`,path:["tag"]})});var Lr={[x.actorRef]:wH,[x.resourceRef]:fH,[x.evidenceRef]:xH,[x.workRun]:ok,[x.taskToPrProjection]:KC,[x.decisionEnvelope]:B9,[x.costEstimate]:QU,[x.capabilityCard]:hH,[x.providerLiveModeStandard]:lH,[x.contextPack]:K9,[x.integrationRef]:V9,[x.projectManifest]:aH,[x.projectPanel]:F9,[x.projectSnapshot]:Ek,[x.renderManifest]:gk,[x.agentTrajectory]:FC,[x.validationPlan]:Ok,[x.proofBundle]:tk,[x.scaffoldManifest]:Wk,[x.scaffoldInstallRecord]:Rk,[x.appCloudManifest]:b9,[x.noCloudEvidencePack]:ik,[x.secureLocalStorePolicy]:c9,[x.serviceContract]:_r,[x.commsEventEnvelope]:n9,[x.commsChannelMetadata]:Or,[x.commsMessageMetadata]:Ar,[x.app]:Vk,[x.release]:Mk,[x.rolloutRecord]:Hk,[x.announcement]:vk,[x.audience]:hk};class d9 extends Error{schemaId;issues;constructor(_,$){super(`Contract validation failed for ${_}`);this.name="ContractValidationError",this.schemaId=_,this.issues=$}}function m9(_,$){let U=Lr[_].safeParse($);if(!U.success)throw new d9(_,U.error.issues);return U.data}var Pd=String.raw`(?:^|[^\w$])(?:_*(?:import|require)|createRequire|Module\s*\.\s*_load)`;var t3=[{pattern:"@hasna/cloud",kind:"module",message:"Shared @hasna/cloud runtime reference is forbidden"},{pattern:"open-cloud",kind:"module",message:"Shared open-cloud runtime reference is forbidden"},{pattern:"cloud-mcp",kind:"module",message:"Legacy cloud-mcp runtime surface is forbidden"},{pattern:"registerCloudTools",kind:"symbol",message:"Legacy registerCloudTools runtime surface is forbidden"},{pattern:"registerCloudCommands",kind:"symbol",message:"Legacy registerCloudCommands runtime surface is forbidden"},{pattern:".hasna/cloud",kind:"config",checkKind:"runtime_config",message:"Legacy .hasna/cloud runtime config is forbidden"},{pattern:"HASNA_CLOUD_",kind:"config",message:"Shared HASNA_CLOUD_* runtime config is forbidden"},{pattern:"HASNA_RDS_PASSWORD",kind:"config",message:"Legacy shared RDS credential config is forbidden"}],zd=t3.filter((_)=>("checkKind"in _)),Jr=t3.filter((_)=>_.kind==="module"),Sd=[...new Set([...jN,...Jr.map((_)=>_.pattern)])],Wd=t3.filter((_)=>_.kind==="config");var A9="^[^\\u0000-\\u001f\\u007f]*$",Xd={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://github.com/hasna/contracts/schema/hasna.service_contract.v1.json",title:"Hasna Service Contract v1",description:"Repo self-description (hasna.contract.json) for the Hasna Service Contract v1. Hosting story, product surfaces, and storage capabilities are separate declarations; the storage backend (sqlite | postgres) is the only runtime switch.",type:"object",additionalProperties:!1,required:["schema","name","class","contractVersion","kitVersion"],allOf:[{if:{required:["class"],properties:{class:{const:"saas"}}},then:{required:["storage"],properties:{storage:{required:["mode","envPrefix"],properties:{mode:{const:"postgres"}}}}}}],properties:{$schema:{type:"string",description:"Optional editor hint pointing at this JSON Schema."},schema:{const:x.serviceContract},name:{type:"string",pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",description:"Lowercase dashed app short-name, e.g. todos, mailery, loops."},class:{enum:["library","cli-with-store","service","saas"]},contractVersion:{const:"v1"},kitVersion:{type:"string",minLength:1,description:"Version of @hasna/contracts (the contract kit) the repo tracks."},description:{type:"string",minLength:1},bins:{type:"array",items:{type:"string",minLength:1},description:"Declared bins. Allowlisted: , -cli, -mcp, -serve, -worker, -runner, -daemon, -migrate, -doctor."},hosting:{type:"array",items:{enum:["user-hosted","hasna-saas"]},minItems:1,uniqueItems:!0,description:"Customer-facing product stories. Public OSS cores include user-hosted; add hasna-saas only when a managed control plane exists."},serviceSurfaces:{type:"array",items:{type:"object",additionalProperties:!1,required:["name","status","authMode"],allOf:[{if:{required:["status"],properties:{status:{const:"supported"},kind:{const:"api"}}},then:{required:["bin","health","readiness","version"]}}],properties:{name:{type:"string",minLength:1},kind:{enum:["api","sdk","mcp","cli"]},status:{enum:["supported","deferred","unsupported"]},bin:{type:"string",minLength:1},mcpBin:{type:"string",minLength:1},authMode:{enum:["none","local-only","api-key","session","service-token","custom"]},health:{type:"object",additionalProperties:!1,required:["method","path"],properties:{method:{const:"GET"},path:{type:"string",pattern:"^/[A-Za-z0-9_./:*-]*$"},public:{type:"boolean"},description:{type:"string",minLength:1}}},readiness:{type:"object",additionalProperties:!1,required:["method","path"],properties:{method:{const:"GET"},path:{type:"string",pattern:"^/[A-Za-z0-9_./:*-]*$"},public:{type:"boolean"},description:{type:"string",minLength:1}}},version:{type:"object",additionalProperties:!1,required:["method","path"],properties:{method:{const:"GET"},path:{type:"string",pattern:"^/[A-Za-z0-9_./:*-]*$"},public:{type:"boolean"},description:{type:"string",minLength:1}}},apiBasePath:{type:"string",pattern:"^/v[0-9]+$"},openApiPath:{type:"string",pattern:"^/[A-Za-z0-9_./:-]*$"},exportSubpath:{type:"string",pattern:"^\\.(?:\\/[A-Za-z0-9_.-]+(?:\\/[A-Za-z0-9_.-]+)*)?$",description:"SDK package export key such as . or ./sdk."},generatedFrom:{type:"string",pattern:"^/[A-Za-z0-9_./:-]*$",description:"OpenAPI path used to generate the SDK."},clientClassName:{type:"string",pattern:"^[A-Za-z_$][A-Za-z0-9_$]*$"},deferReason:{type:"string",minLength:1},readinessGates:{type:"array",items:{type:"object",additionalProperties:!1,required:["id","kind"],properties:{id:{type:"string",minLength:1},kind:{enum:["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]},required:{type:"boolean"},command:{type:"string",minLength:1},evidenceRef:{type:"object"},status:{enum:["pending","passed","failed","blocked","deferred"]},summary:{type:"string",minLength:1}}}}}},description:"Declared API, SDK, MCP, and CLI product surfaces. Legacy entries without kind remain parseable; new manifests declare kind explicitly."},storage:{type:"object",additionalProperties:!1,required:["mode"],properties:{mode:{enum:["sqlite","postgres"],description:"Active data backend. sqlite|postgres ONLY \u2014 the single runtime switch."},engines:{type:"array",items:{enum:["sqlite","postgres"]},minItems:1,uniqueItems:!0,description:"Supported storage engines; capability metadata independent of the active backend."},envPrefix:{type:"string",pattern:"^HASNA_[A-Z][A-Z0-9]*_$",description:"Primary env prefix, e.g. HASNA_TODOS_."},aliasEnvPrefix:{type:"string",pattern:"^[A-Z][A-Z0-9]*_$",description:"Optional short alias env prefix, e.g. TODOS_."},databaseUrlSecretRef:{type:"string",pattern:"^hasna/oss/[a-z0-9-]+/database-url$",description:"Legacy/private-tier database secret ref. Public conformance rejects this field."},sqlitePath:{type:"string",pattern:"\\.db$",description:"Local sqlite path (~/.hasna//.db)."},pgTestGate:{type:"object",additionalProperties:!1,required:["envVar","command"],properties:{envVar:{type:"string",pattern:"^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$"},command:{type:"string",minLength:1}},description:"Environment-gated live PostgreSQL test command."}}},metadata:{type:"object",additionalProperties:!0,properties:{conformance:{type:"object",additionalProperties:!0,properties:{waiverProfile:{const:"non-node-monorepo",description:"Explicit surface-waiver eligibility for exceptional non-Node monorepos. Libraries are eligible for API/MCP waivers without this profile."},waivedSurfaces:{type:"array",uniqueItems:!0,items:{type:"object",additionalProperties:!1,required:["kind","reason"],properties:{kind:{enum:["api","sdk","mcp","cli"]},reason:{type:"string",minLength:1}}}},waivedStorageEngines:{type:"array",uniqueItems:!0,maxItems:f3.length,items:{type:"object",additionalProperties:!1,required:["engine","reason"],properties:{engine:{enum:[...f3]},reason:{type:"string",minLength:1,maxLength:i3,allOf:[{pattern:"\\S"},{pattern:A9}]},reviewedBy:{type:"string",minLength:1,maxLength:l3,allOf:[{pattern:"\\S"},{pattern:A9}]},expiresAt:{type:"string",format:"date-time"}}},description:"Explicit storage-engine exceptions, at most one per engine. Only a CLI-only cli-with-store repo (no -serve bin, storage.mode sqlite, no hasna-saas story) may waive postgres; sqlite is never waivable, expiresAt is a UTC RFC 3339 timestamp, and conformance stops honouring a waiver once it has passed."}}}}}}};var Pr="2026-07-06";function c$(_,$,g,U,D,I=[],j){return{id:_,description:$,ttlDays:g,artifactClasses:U,allowlistGlobs:D,activeRecordExclusions:I.map((N)=>({...N,required:N.required??!0})),sqliteMaintenance:j}}var Rd=c9.parse({schema:x.secureLocalStorePolicy,id:"hasna-secure-local-store-defaults",createdAt:"2026-07-06T00:00:00.000Z",version:Pr,scope:[".hasna",".codewith"],defaults:{directoryMode:"0700",fileMode:"0600",dryRunDefault:!0,requireExplicitApply:!0,includeSqliteSidecars:!0,redactedEvidenceOnly:!0},lifecycle:{retentionDryRunDefault:!0,requireActiveRecordExclusionProof:!0,requireArtifactAllowlist:!0,sqliteMaintenanceRequiresExclusiveAccess:!0},stores:[{storeId:"codewith",packageName:"codewith",displayName:"Codewith native state",root:".codewith",relativePath:".",sqliteDatabaseGlobs:["logs_*.sqlite","state_*.sqlite","goals_*.sqlite"],sensitiveFileGlobs:["sessions/**/*.jsonl","shell_snapshots/**/*","logs*.sqlite","state*.sqlite","goals*.sqlite"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("codewith-session-snapshots","Codewith sessions, shell snapshots, logs, monitor output, mailbox payloads, and scheduler state need package-owned redaction before retention applies.",30,["session","snapshot","log"],["sessions/**/*.jsonl","shell_snapshots/**/*","logs/**/*"],[{id:"codewith-active-session",source:"package_adapter",description:"Exclude currently active sessions, leased schedules, monitors, pending interactions, and active goal rows."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})],notes:["Includes native .codewith DBs and transcript-like artifacts; redaction-before-persistence remains package-owned."]},{storeId:"todos",packageName:"@hasna/todos",displayName:"Todos",root:".hasna",relativePath:"todos",sqliteDatabaseGlobs:["todos.db"],sensitiveFileGlobs:["todos.db","todos.db-wal","todos.db-shm","exports/**/*","backups/**/*"],backupGlobs:["backups/**/*","*.bak","*.backup"],exportGlobs:["exports/**/*","*.jsonl","*.csv"],retentionAdapters:[c$("todos-exports-backups","Todos backups and exports are deleted only after package redaction and active task/evidence references are excluded.",14,["backup","export"],["backups/**/*","exports/**/*"],[{id:"todos-active-evidence",source:"sqlite",table:"task_files",column:"path",description:"Exclude files still referenced by active tasks, verification evidence, task comments, or handoff records."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"conversations",packageName:"@hasna/conversations",displayName:"Conversations",root:".hasna",relativePath:"conversations",sqliteDatabaseGlobs:["messages.db"],sensitiveFileGlobs:["messages.db","messages.db-wal","messages.db-shm","exports/**/*","attachments/**/*"],backupGlobs:["backups/**/*","*.bak"],exportGlobs:["exports/**/*","*.json","*.csv"],retentionAdapters:[c$("conversations-exports-attachments","Conversation exports and attachments require message-id redaction and active attachment reference checks before deletion.",14,["export","backup"],["exports/**/*","backups/**/*","attachments/**/*"],[{id:"conversations-active-attachments",source:"sqlite",table:"messages",column:"attachments",description:"Exclude attachments still referenced by retained messages or audited redaction records."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"mementos",packageName:"@hasna/mementos",displayName:"Mementos",root:".hasna",relativePath:"mementos",sqliteDatabaseGlobs:["mementos.db"],sensitiveFileGlobs:["mementos.db","mementos.db-wal","mementos.db-shm","exports/**/*","backups/**/*"],backupGlobs:["backups/**/*","*.bak"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("mementos-audit-search-history","Mementos retention must preserve active memory versions while compacting audit/search surfaces through package-owned adapters.",30,["backup","export","log"],["backups/**/*","exports/**/*","audit/**/*"],[{id:"mementos-active-memory-versions",source:"sqlite",table:"memory_versions",column:"memory_id",description:"Exclude current memory versions and audit entries required for provenance."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"knowledge",packageName:"@hasna/knowledge",displayName:"Knowledge",root:".hasna",relativePath:"knowledge",sqliteDatabaseGlobs:["knowledge.db"],sensitiveFileGlobs:["knowledge.db","knowledge.db-wal","knowledge.db-shm","db.json","migration-exports/**/*","*.bak"],backupGlobs:["*.bak","backups/**/*","*.pre-cloud-*"],exportGlobs:["migration-exports/**/*","exports/**/*","*.jsonl"],retentionAdapters:[c$("knowledge-migrations-exports","Knowledge migration exports and pre-cloud backups require replacement, encryption, or redaction before retention deletion.",14,["backup","export"],["migration-exports/**/*","exports/**/*","*.bak","*.pre-cloud-*"],[{id:"knowledge-current-catalog",source:"manifest",description:"Exclude files referenced by the active catalog or migration ledger."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"projects",packageName:"@hasna/projects",displayName:"Projects",root:".hasna",relativePath:"projects",sqliteDatabaseGlobs:["projects.db","data/*/project.db"],sensitiveFileGlobs:["projects.db","projects.db-wal","projects.db-shm","data/*/project.db","data/*/project.db-wal","data/*/project.db-shm","reports/**/*"],backupGlobs:["backups/**/*","data/*/backups/**/*"],exportGlobs:["reports/**/*","exports/**/*"],retentionAdapters:[c$("projects-reports-workspaces","Project reports, dashboards, workspaces, and per-project DBs need active workspace/location references before cleanup.",30,["backup","export","report","tmp"],["backups/**/*","reports/**/*","workspaces/**/*","data/*/backups/**/*"],[{id:"projects-active-workspaces",source:"sqlite",table:"workspaces",column:"primary_path",description:"Exclude active workspace paths, locations, linked reports, and project store artifacts."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"browser",packageName:"@hasna/browser",displayName:"Browser",root:".hasna",relativePath:"browser",sqliteDatabaseGlobs:["browser.db"],sensitiveFileGlobs:["browser.db","browser.db-wal","browser.db-shm","profiles/**/cookies.json","states/**/*.json","auth/**/*"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*","traces/**/*","har/**/*"],retentionAdapters:[c$("browser-auth-traces","Browser state, trace, HAR, and auth artifacts require session invalidation or redaction before deletion.",7,["backup","export","session","snapshot"],["profiles/**/*","states/**/*","traces/**/*","har/**/*","exports/**/*"],[{id:"browser-active-profiles",source:"sqlite",table:"sessions",column:"profile_path",description:"Exclude profiles, cookies, and storage state used by active browser sessions."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"terminal",packageName:"@hasna/terminal",displayName:"Terminal",root:".hasna",relativePath:"terminal",sqliteDatabaseGlobs:["sessions.db"],sensitiveFileGlobs:["sessions.db","sessions.db-wal","sessions.db-shm","exports/**/*"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("terminal-sessions","Terminal sessions and interactions need active session exclusion plus command-output redaction before retention.",30,["backup","export","session","log"],["backups/**/*","exports/**/*","sessions/**/*"],[{id:"terminal-active-sessions",source:"sqlite",table:"sessions",column:"id",description:"Exclude active terminal session records and any linked interaction artifacts."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"logs",packageName:"@hasna/logs",displayName:"Logs",root:".hasna",relativePath:"logs",sqliteDatabaseGlobs:["logs.db"],sensitiveFileGlobs:["logs.db","logs.db-wal","logs.db-shm","exports/**/*"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("logs-retention","Logs require redaction before compaction and must preserve active incident/evidence references.",14,["backup","export","log"],["backups/**/*","exports/**/*","*.log","logs/**/*"],[{id:"logs-active-evidence",source:"sqlite",table:"logs",column:"id",description:"Exclude log rows or files linked to active incidents, tasks, or proof bundles."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"loops",packageName:"@hasna/loops",displayName:"OpenLoops",root:".hasna",relativePath:"loops",sqliteDatabaseGlobs:["loops.db","state.db","*.sqlite"],sensitiveFileGlobs:["*.db","*.sqlite","*.db-wal","*.db-shm","reports/**/*","tmp/**/*","runs/**/*"],backupGlobs:["backups/**/*","tmp/**/*"],exportGlobs:["reports/**/*","runs/**/*","exports/**/*"],retentionAdapters:[c$("loops-reports-tmp","Loop reports, tmp files, workflow artifacts, and command output need run-state checks and redaction before retention deletion.",14,["backup","export","report","tmp","log"],["reports/**/*","tmp/**/*","runs/**/*","exports/**/*"],[{id:"loops-active-runs",source:"sqlite",table:"loop_runs",column:"id",description:"Exclude active, leased, recently failed, or evidence-linked loop and workflow run artifacts."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]}],warnings:["This package publishes declarations only; each owning package implements and verifies its own local-store lifecycle.","Retention and redaction evidence remain package-owned and must preserve active-record exclusions.","SQLite maintenance is descriptive policy metadata only and is never executed by @hasna/contracts."]});var zr=64,Gd=new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${zr-1}}$`),Dg="[0-9a-fA-F]",Yd=new RegExp(`^\\{?(?:${Dg}{8}-${Dg}{4}-${Dg}{4}-${Dg}{4}-${Dg}{12}|${Dg}{32})\\}?$`);var Sr=/^hasna_([a-z][a-z0-9-]*)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;var Qd=new RegExp(Sr.source.replace(/^\^/,"\\b").replace(/\$$/,"\\b"));var i9="@hasna/knowledge";function Wr(_){if(!Number.isFinite(_??0))return 20;return Math.max(1,Math.min(100,Math.trunc(_??20)))}function Xr(_){return _.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")||"project"}function TU(_,$=180){let g=String(_??"").replace(/\s+/g," ").trim();if(g.length<=$)return g;return`${g.slice(0,Math.max(0,$-3))}...`}function C_(_,$=""){return typeof _==="string"&&_.length>0?_:$}function qU(_){return typeof _==="number"&&Number.isFinite(_)?_:0}function Bg(_){if(typeof _!=="string"||_.length===0)return;let $=_.includes("T")?_:`${_.replace(" ","T")}Z`,g=new Date($);return Number.isNaN(g.valueOf())?void 0:g.toISOString()}function zN(_){return H$.safeParse(_).success}function k$(_,$,g,U,D=[]){return{kind:_,id:$,name:g,uri:U&&zN(U)?U:void 0,externalId:$,sourcePackage:i9,tags:D}}function Rr(_){return[..._.items.flatMap((g)=>[g.updated_at,g.created_at]),..._.sources.flatMap((g)=>[g.updated_at,g.created_at]),..._.chunks.map((g)=>g.created_at),..._.wiki_pages.flatMap((g)=>[g.updated_at,g.created_at]),..._.storage_objects.flatMap((g)=>[g.updated_at,g.created_at]),..._.runs.flatMap((g)=>[g.updated_at,g.created_at]),..._.reindex_queue.flatMap((g)=>[g.updated_at,g.created_at]),..._.sync_conflicts.map((g)=>g.created_at),..._.approval_gates.flatMap((g)=>[g.updated_at,g.created_at])].map(Bg).filter(Boolean).sort((g,U)=>U.localeCompare(g))[0]}function Gr(_){if(!_)return"unknown";let $=Date.now()-new Date(_).valueOf();if(!Number.isFinite($))return"unknown";return $>2592000000?"stale":"fresh"}function Yr(_){let $=(g)=>{let U=String(g??"").toLowerCase();return U!==""&&!["done","complete","completed","resolved","succeeded","skipped"].includes(U)};return _.reindex_queue.filter((g)=>$(g.status)).length+_.sync_conflicts.filter((g)=>$(g.status)).length+_.approval_gates.filter((g)=>$(g.status)).length}function Qr(_,$){let g=[];for(let U of _.items.slice(0,$))g.push({id:`item_${U.id}`,title:U.title,summary:TU(U.content_preview),status:U.archived?"archived":"active",priority:"medium",timestamp:Bg(U.updated_at??U.created_at),resourceRefs:[k$("knowledge",U.id,U.title,`knowledge://item/${encodeURIComponent(U.id)}`,U.tags)],evidenceRefs:U.url&&zN(U.url)?[{id:`url_${U.id}`,kind:"url",uri:U.url,summary:"Source URL for this knowledge item."}]:[],metadata:{source:"legacy_store",archived:U.archived,tags:U.tags,url:U.url||void 0}});for(let U of _.sources.slice(0,Math.max(0,$-g.length))){let D=C_(U.id,C_(U.uri,"source")),I=C_(U.title,C_(U.uri,D)),j=C_(U.uri,`knowledge://source/${encodeURIComponent(D)}`);g.push({id:`source_${D}`,title:I,summary:TU(`${qU(U.chunks)} chunk(s), ${qU(U.revisions)} revision(s)`),status:qU(U.chunks)>0?"indexed":"source",priority:"medium",timestamp:Bg(U.updated_at??U.created_at),resourceRefs:[k$("document",D,I,j)],evidenceRefs:zN(j)?[{id:`source_${D}`,kind:"url",uri:j,summary:"Source reference."}]:[],metadata:{source:"knowledge_db.sources",kind:U.kind,chunks:qU(U.chunks),revisions:qU(U.revisions)}})}for(let U of _.chunks.slice(0,Math.max(0,$-g.length))){let D=C_(U.id,"chunk"),I=C_(U.source_uri);g.push({id:`chunk_${D}`,title:C_(U.wiki_title,I?`Chunk from ${I}`:`Knowledge chunk ${D}`),summary:TU(U.text_preview),status:"chunk",priority:"low",timestamp:Bg(U.created_at),resourceRefs:[k$("context_pack",D,C_(U.wiki_title,D),`knowledge://chunk/${encodeURIComponent(D)}`)],evidenceRefs:I&&zN(I)?[{id:`chunk_source_${D}`,kind:"url",uri:I,summary:"Chunk source reference."}]:[],metadata:{source:"knowledge_db.chunks",source_uri:I||void 0,token_count:U.token_count,ordinal:U.ordinal}})}for(let U of _.sync_conflicts.slice(0,Math.max(0,$-g.length))){let D=C_(U.id,"sync_conflict");g.push({id:`sync_conflict_${D}`,title:`Sync conflict: ${C_(U.entity_kind,"entity")}/${C_(U.entity_id,D)}`,summary:TU(`Status ${C_(U.status,"unknown")}; strategy ${C_(U.resolution_strategy,"none")}.`),status:C_(U.status,"unknown"),priority:"critical",timestamp:Bg(U.created_at),resourceRefs:[k$("finding",D,"Knowledge sync conflict",`knowledge://sync-conflict/${encodeURIComponent(D)}`)],metadata:{source:"knowledge_db.sync_conflicts",local_machine_id:U.local_machine_id,remote_machine_id:U.remote_machine_id}})}for(let U of _.reindex_queue.slice(0,Math.max(0,$-g.length))){let D=C_(U.id,"reindex");g.push({id:`reindex_${D}`,title:`Reindex ${C_(U.kind,"item")}: ${C_(U.target_id,D)}`,summary:TU(U.reason),status:C_(U.status,"unknown"),priority:C_(U.status).toLowerCase()==="failed"?"high":"medium",timestamp:Bg(U.updated_at??U.created_at),resourceRefs:[k$("action",D,"Knowledge reindex work item",`knowledge://reindex/${encodeURIComponent(D)}`)],metadata:{source:"knowledge_db.reindex_queue",attempts:U.attempts,source_uri:U.source_uri}})}return g.slice(0,$)}async function l9(_,$={}){let g=Wr($.limit),U=new Date().toISOString(),D=Xr(_),j=await($.service??IN({scope:$.scope??"project",cwd:$.cwd})).resolveInventory({limit:g,storePath:$.storePath,includeArchived:$.includeArchived}),N=Rr(j),O=Gr(N),A=j.summary.active_items+j.summary.sources+j.summary.chunks+j.summary.wiki_pages+j.summary.storage_objects,L=Yr(j),z=A===0?"empty":O==="stale"?"stale":"ready",W=Qr(j,g),J={schema:x.projectPanel,id:`knowledge_panel_${D}`,createdAt:U,projectId:D,provider:{kind:"knowledge",id:`knowledge_${D}`,name:"Knowledge",sourcePackage:i9,externalId:j.home},kind:"knowledge",title:"Knowledge",summary:z==="empty"?"No project knowledge items, sources, chunks, or wiki pages are available yet.":`${j.summary.active_items} active note(s), ${j.summary.sources} source(s), ${j.summary.chunks} chunk(s), and ${j.summary.wiki_pages} wiki page(s).`,state:z,stateReason:z==="stale"?"Latest indexed knowledge activity is older than 30 days.":void 0,generatedAt:U,freshness:O,metrics:[{id:"active_items",label:"Active notes",value:j.summary.active_items,status:j.summary.active_items>0?"good":"unknown"},{id:"sources",label:"Sources",value:j.summary.sources,status:j.summary.sources>0?"good":"unknown"},{id:"chunks",label:"Chunks",value:j.summary.chunks,status:j.summary.chunks>0?"good":"unknown"},{id:"wiki_pages",label:"Wiki pages",value:j.summary.wiki_pages,status:j.summary.wiki_pages>0?"good":"unknown"},{id:"artifacts",label:"Artifacts",value:j.summary.storage_objects,status:j.summary.storage_objects>0?"good":"unknown"},{id:"vector_entries",label:"Vector entries",value:j.summary.vector_entries,status:j.summary.vector_entries>0?"good":"unknown"},{id:"unresolved",label:"Unresolved",value:L,status:L>0?"warning":"good"}],items:W,actions:[k$("action","knowledge:inventory","Inspect knowledge inventory"),k$("action","knowledge:context-pack","Build cited context pack"),k$("action","knowledge:ingest","Ingest project source")],resourceRefs:[k$("project",D,_,`project://${D}`),k$("knowledge",`home_${D}`,"Knowledge workspace",`knowledge://workspace/${encodeURIComponent(D)}`),k$("artifact",`db_${D}`,"Knowledge database",`knowledge://db/${encodeURIComponent(D)}`)],renderFragment:{renderer:"json_render",title:"Knowledge",spec:{component:"project.knowledge.summary",metrics:["active_items","sources","chunks","wiki_pages","unresolved"],itemLimit:g}},metadata:{scope:j.scope,home:j.home,json_store_exists:j.paths.json_store_exists,latest_activity_at:N}};return m9(x.projectPanel,J)}function t9(_){let $=[`${_.title}: ${_.state}`,_.summary??"",..._.metrics.map((g)=>`${g.label}: ${g.value}`)].filter(Boolean);if(_.items.length>0){$.push("Items:");for(let g of _.items.slice(0,10))if($.push(`- ${g.title}${g.status?` [${g.status}]`:""}`),g.summary)$.push(` ${g.summary}`)}return $.join(` -`)}var e9=["sources","wiki_pages","source_revisions","chunks","chunk_embeddings","wiki_backlinks","citations","knowledge_indexes","runs","run_events","provider_usage","redaction_findings","storage_objects","audit_events","approval_gates","vector_index_entries","reindex_queue","knowledge_machines","knowledge_sync_snapshots","knowledge_sync_changes","knowledge_sync_conflicts","knowledge_sync_table_clocks","knowledge_sync_imports"];var a9="HASNA_KNOWLEDGE_STORAGE_MODE",s9="KNOWLEDGE_STORAGE_MODE";function o9(_){return process.env[_]?.trim()||void 0}function p9(_){let $=_?.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return"sqlite";if($==="postgres"||$==="postgresql")return"postgres";return}function Tr(_={}){let $=D0(bU(_.scope,_.cwd).home);return h($.knowledgeDbPath),{db:v($.knowledgeDbPath),path:$.knowledgeDbPath,scope:_.scope??"global"}}function _8(){let _=p9(o9(a9))??p9(o9(s9));if(_)return _;return"sqlite"}function o3(_={}){let $=Tr(_);try{qr($.db);let g=$.db.query("SELECT table_name, last_synced_at, direction FROM _knowledge_sync_meta ORDER BY table_name, direction").all();return{mode:_8(),service:"knowledge",scope:$.scope,databasePath:$.path,tables:e9,sync:g}}finally{$.db.close()}}function qr(_){_.exec(` + `,[D]).map(Bb),e={legacy_items:U.items.length,active_items:I.length,archived_items:U.items.length-I.length,schema_version:O.schema_version,sources:O.sources,source_revisions:O.source_revisions,chunks:O.chunks,wiki_pages:O.wiki_pages,citations:O.citations,indexes:O.indexes,runs:O.runs,run_events:O.run_events,storage_objects:O.storage_objects,embeddings:O.embeddings,vector_entries:O.vector_entries,reindex_queue:O.reindex_queue,redaction_findings:O.redaction_findings,audit_events:O.audit_events,approval_gates:O.approval_gates,knowledge_machines:O.knowledge_machines,sync_snapshots:O.sync_snapshots,sync_changes:O.sync_changes,sync_conflicts:O.sync_conflicts,sync_table_clocks:O.sync_table_clocks,sync_imports:O.sync_imports,promotion_candidates:O.promotion_candidates,durable_records:O.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:D,paths:{json_store_path:g,json_store_exists:U.exists,knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:!0,artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:e,legacy_store:{path:g,exists:U.exists,read_error:U.read_error,total_items:U.items.length,active_items:I.length,archived_items:U.items.length-I.length,items_returned:Math.min(j.length,D)},items:j.slice(0,D).map(sG),sources:L,source_revisions:z,chunks:W,wiki_pages:J,indexes:P,storage_objects:S,runs:X,vector_indexes:R,reindex_queue:G,machines:V,sync_conflicts:Q,approval_gates:T,audit_events:B,promotion_candidates:F,durable_records:Z,message:`${U.items.length} item(s), ${O.sources} source(s), ${O.chunks} chunk(s), ${O.wiki_pages} wiki page(s), ${O.storage_objects} artifact(s)`}}finally{A.close()}}assertAppWikiWrite(_){xD({scope:this.scope,workspace:this.workspace,safetyPolicy:this.safetyPolicy(),allowGlobal:_})}async initAppWiki(_={}){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return zW({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async addAppWikiNote(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return SW({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal,title:_.title,content:_.content,tags:_.tags,sourceRefs:_.sourceRefs,path:_.path,metadata:_.metadata})}listAppWikiNotes(_={}){let $=this.workspace;if(!W_($.knowledgeDbPath))return[];return WW({dbPath:$.knowledgeDbPath,limit:_.limit})}async getAppWikiNote(_,$={}){let D=this.workspace;if(!W_(D.knowledgeDbPath))return null;return XW({dbPath:D.knowledgeDbPath,store:this.artifactStore(),id:_,includeContent:$.includeContent})}async addAppWikiSourceRef(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return GW({scope:this.scope,workspace:$,sourceRef:_.sourceRef,purpose:_.purpose,config:this.config(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async searchAppWiki(_){return this.search(_)}async queryAppWiki(_){return this.retrieveContext(_)}async initWiki(){let _=this.ensureWorkspace();h(_.knowledgeDbPath);let $=await fG(this.artifactStore()),D=f(_.knowledgeDbPath);try{s$(D,$.artifacts),wG(D,$.artifacts)}finally{D.close()}return $}async compileWiki(_={}){let $=this.ensureWorkspace();return HG({..._,dbPath:$.knowledgeDbPath,store:this.artifactStore()})}async fileAnswer(_){let $=this.ensureWorkspace(),D=await this.retrieveContext({query:_.prompt,limit:_.limit,semantic:_.semantic,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake});return kG({dbPath:$.knowledgeDbPath,store:this.artifactStore(),prompt:_.prompt,answer:_.answer,context:D,approveWrite:_.approveWrite})}lintWiki(){let _=this.ensureWorkspace();return CG({dbPath:_.knowledgeDbPath})}async ingestManifest(_){let $=this.ensureWorkspace();return OW({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}async ingestSource(_,$){let D=this.ensureWorkspace();return ag({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$,config:this.config(),safetyPolicy:this.safetyPolicy()})}async importRulesProvenance(_={}){let $=_.dryRun!==!1,D=$?this.workspace:this.ensureWorkspace();return YG({root:_.root??this.options.cwd??process.cwd(),scope:this.scope,owner:_.owner,dryRun:$,deprecateLegacy:_.deprecateLegacy,includeLegacy:_.includeLegacy,legacyStorePath:D.jsonStorePath,dbPath:D.knowledgeDbPath,safetyPolicy:this.safetyPolicy(),maxItems:_.maxItems,limit:_.limit})}async resolveSource(_,$={}){let D=this.ensureWorkspace();return og({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$.purpose,limit:$.limit,safetyPolicy:this.safetyPolicy()})}async consumeOutbox(_){let $=this.ensureWorkspace();return k9({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}reindexHealth(_={}){let $=this.workspace;if(!W_($.knowledgeDbPath))return Mb();return OG({..._,dbPath:$.knowledgeDbPath,config:this.config()})}enqueueReindex(_={}){let $=this.ensureWorkspace();return PP({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async refreshEmbeddings(_={}){let $=this.ensureWorkspace();return AG({..._,dbPath:$.knowledgeDbPath,config:this.config()})}providerStatus(_=process.env){return BW(this.config(),_)}modelRegistry(){return V2(this.config())}embeddingStatus(){let _=this.workspace;if(!W_(_.knowledgeDbPath))return Zb();return ZW(_.knowledgeDbPath)}async indexEmbeddings(_={}){let $=this.ensureWorkspace();return $I({..._,dbPath:$.knowledgeDbPath,config:this.config()})}isApiMode(){return Y6()}async fetchCloudItems(){let _=uD();if(!_)throw Error("knowledge: cloud store requested but not resolvable (check HASNA_KNOWLEDGE_API_URL + HASNA_KNOWLEDGE_API_KEY).");return cg(_)}async semanticSearch(_){let $=this.workspace;if(this.isApiMode()){let D=await this.fetchCloudItems(),g=await j4(D,{..._},["semantic_search_requires_local_catalog"]);return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:g.results}}if(!W_($.knowledgeDbPath))return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:[]};return DI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async search(_){let $=this.workspace;if(this.isApiMode()){let g=await this.fetchCloudItems();return j4(g,_)}let D=CP(this.scope,$,_.legacyStorePath);if(!W_($.knowledgeDbPath)){if(W_(D))return jI({..._,legacyStorePath:D,config:this.config()});return L8(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return II({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async retrieveContext(_){let $=this.workspace;if(this.isApiMode()){let g=await this.fetchCloudItems();return EI(g,_)}let D=CP(this.scope,$,_.legacyStorePath);if(!W_($.knowledgeDbPath)){if(W_(D)){let g=await jI({..._,legacyStorePath:D,config:this.config()});return Y0(g,{contextChars:_.contextChars})}return Fb(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return Q0({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async contextPack(_){let $=this.workspace;if(this.isApiMode()){let g=(_.query??_.topic??"").trim();if(g&&_.source!=="loops"&&_.source!=="runs"){let U=await this.fetchCloudItems(),I=await j4(U,{..._,query:g}),j=Y0(I,{contextChars:_.contextChars});return D8(_,j,this.safetyPolicy())}return U8(_)}let D=CP(this.scope,$,_.legacyStorePath);if(!W_($.knowledgeDbPath)){let g=(_.query??_.topic??"").trim();if(g&&_.source!=="loops"&&_.source!=="runs"&&W_(D)){let U=await jI({..._,query:g,legacyStorePath:D,config:this.config()}),I=Y0(U,{contextChars:_.contextChars});return D8(_,I,this.safetyPolicy())}return U8(_)}return IX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config(),safetyPolicy:this.safetyPolicy()})}async runPrompt(_){if(this.isApiMode()){let g=await this.fetchCloudItems();return pW(g,{..._,config:this.config()})}let $=this.ensureWorkspace(),D=_.legacyStorePath??$.jsonStorePath;if(!_.legacyStorePath)CD(D);return oW({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async webSearch(_){let $=this.ensureWorkspace();return qG({..._,dbPath:$.knowledgeDbPath,config:this.config(),safetyPolicy:this.safetyPolicy()})}async machineTopology(_={}){let $=this.workspace;return l9({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}async machinePreflight(_={}){let $=this.workspace;return p9({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}syncStatus(){let _=this.workspace;if(!W_(_.knowledgeDbPath))return bb({scope:this.scope,workspaceHome:_.home});return MX({dbPath:_.knowledgeDbPath,scope:this.scope,workspaceHome:_.home})}async syncDoctor(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let D=this.syncStatus(),g=this.storageContract(),U=this.validateStorage(),I=Hb($.knowledgeDbPath,g),j=_.machine?.trim()||null,N=_.peerWorkspace?.trim()||null,O=[],A=null,L=null;if(j&&!N8(j)){let S=await EP({machineId:j,includeTailscale:_.includeTailscale});A=kP(S),O.push(...S.warnings)}if(j||N){let S=await tj({machineId:j??HP($),peerWorkspace:N,includeTailscale:_.includeTailscale});if(j&&!N&&(A?.source==="raw"||!S.ok||!S.project_root)){let X=tG($.knowledgeDbPath,j);if(X){if(A?.source==="raw"&&X.ssh_target)A=kP(oG(X,j,{target:A.target,route:A.route,targetKind:A.target_kind,confidence:A.confidence,source:A.source,adapter:A.adapter,evidence:A.evidence,cacheability:A.cacheability,warnings:[]}));if(!S.ok||!S.project_root){let R=pG(X,j,S);if(R)L=Lg(R,R.project_root),O.push(...R.warnings)}}}L=S.ok&&S.project_root?Lg(S,S.project_root):L??{...Lg(S,N??""),project_root:S.project_root??N??""},O.push(...S.warnings)}if(!U.ok)O.push(...U.errors.map((S)=>`storage:${S}`));let z=Rb($.knowledgeDbPath,L);if(!z.ok)O.push("open_files_boundary_raw_payload_sentinels");if(!I.ok)O.push(...I.warnings);let W=L?.diagnostics.filter((S)=>S.severity==="fail")??[],J=U.ok&&I.ok&&z.ok&&W.length===0&&(L?.project_root!==""||!L),P=Cb({scope:this.scope,machine:j,peerWorkspace:N,tables:_.tables,resolvedWorkspace:L,openConflicts:D.conflicts.open});return{ok:J,read_only:!0,generated_at:new Date().toISOString(),scope:this.scope,workspace_home:$.home,database:{sqlite_schema_version:D.sqlite_schema_version,table_counts:D.table_counts},storage:{contract:g,validation:U,artifact_manifest:I},sync:{machines:D.machines.total,snapshots:D.snapshots.total,clocks:D.clocks.total,imports:D.imports.total,open_conflicts:D.conflicts.open,table_clocks:D.clocks.rows},open_files:z,resolved_route:A,resolved_workspace:L,recommended_commands:P,warnings:[...new Set(O)],message:J?`Sync readiness ok: ${D.clocks.total} table clock(s), ${D.conflicts.open} open conflict(s)`:`Sync readiness needs attention: ${[...new Set(O)].join(", ")||"workspace diagnostics failed"}`}}repairArtifactManifestKeys(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let D=this.storageContract(),g=uP(D),U=kb($.knowledgeDbPath,D),I=_.dryRun===!0||_.approveWrite!==!0;if(U.length===0)return{ok:!0,dry_run:I,approval_required:!1,storage_type:D.storage_type,storage_prefix:g,candidates:U,repaired:0,audit_event_id:null,message:"No legacy S3 artifact manifest keys found"};if(_.dryRun===!0)return{ok:!0,dry_run:!0,approval_required:!1,storage_type:D.storage_type,storage_prefix:g,candidates:U,repaired:0,audit_event_id:null,message:`Would repair ${U.length} legacy S3 artifact manifest key(s)`};if(_.approveWrite!==!0||!_.approvedBy)return{ok:!1,dry_run:!0,approval_required:!0,storage_type:D.storage_type,storage_prefix:g,candidates:U,repaired:0,audit_event_id:null,message:"Artifact key repair requires --approve-write and --approved-by "};let j=f($.knowledgeDbPath);try{let N=new Date().toISOString();j.transaction((L)=>{let z=j.query("UPDATE storage_objects SET metadata_json = ?, updated_at = ? WHERE id = ?"),W=j.query("SELECT id, metadata_json FROM storage_objects").all(),J=new Map(W.map((P)=>[P.id,c4(P.metadata_json)]));for(let P of L){let S=J.get(P.id)??{};S.key=P.repaired_key,z.run(JSON.stringify(S),N,P.id)}})(U);let A=X_(j,{event_type:"artifact_manifest_key_repair",action:"storage.artifact_manifest.repair_keys",target_uri:`knowledge-storage://${$.home}/storage_objects`,decision:"allow",metadata:{approved_by:_.approvedBy,repaired:U.length,storage_type:D.storage_type,storage_prefix:g,artifact_uris:U.map((L)=>L.artifact_uri)}});return{ok:!0,dry_run:!1,approval_required:!1,storage_type:D.storage_type,storage_prefix:g,candidates:U,repaired:U.length,audit_event_id:A,message:`Repaired ${U.length} legacy S3 artifact manifest key(s)`}}finally{j.close()}}async createSyncSnapshot(_={}){let $=this.ensureWorkspace(),D=await this.machineTopology({includeTailscale:_.includeTailscale!==!1});return KX({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),topology:D,machineId:_.machineId})}syncConflicts(_={}){let $=this.workspace;if(!W_($.knowledgeDbPath))return[];return ZX($.knowledgeDbPath,_)}syncConflict(_){let $=this.ensureWorkspace(),D=GI($.knowledgeDbPath,_);if(!D)throw Error(`Sync conflict not found: ${_}`);return D}proposeSyncConflictResolution(_){let $=this.ensureWorkspace();return oD($.knowledgeDbPath,_)}async proposeSyncConflictResolutionWithAi(_){let $=this.ensureWorkspace();return b9({dbPath:$.knowledgeDbPath,id:_.id,config:this.config(),modelRef:_.modelRef,fake:_.fake,env:_.env})}resolveSyncConflict(_){let $=this.ensureWorkspace(),D=oD($.knowledgeDbPath,_.id);if(_.approveWrite!==!0||!_.approvedBy)return{ok:!1,approval_required:!0,conflict:D.conflict,proposal:D,message:"Sync conflict resolution requires --approve-write and --approved-by "};let g=kX($.knowledgeDbPath,{id:_.id,strategy:_.strategy??D.proposed_strategy,approvedBy:_.approvedBy,proposedPatchUri:_.proposedPatchUri}),U=f($.knowledgeDbPath);try{let I=X_(U,{event_type:"sync_conflict_resolution",action:"sync.conflict.resolve",target_uri:`knowledge-sync-conflict://${_.id}`,decision:"allow",metadata:{conflict_id:_.id,entity_kind:g.entity_kind,entity_id:g.entity_id,strategy:g.resolution_strategy,approved_by:g.approved_by,proposed_patch_uri:g.proposed_patch_uri}});return{ok:!0,approval_required:!1,conflict:g,audit_event_id:I,message:`Resolved sync conflict ${_.id}`}}finally{U.close()}}syncMachines(){let _=this.workspace;if(!W_(_.knowledgeDbPath))return[];return d2(_.knowledgeDbPath)}exportSyncBundle(_={}){let $=this.ensureWorkspace();return this.assertStorageValid("sync export"),h($.knowledgeDbPath),tD({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.recordClocks!==!1})}async importSyncBundle(_){let $=this.ensureWorkspace();return this.assertStorageValid("sync import"),h($.knowledgeDbPath),XI({targetDbPath:$.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:$.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:_.bundle,direction:_.direction??"import",dryRun:_.dryRun,localMachineId:_.machineId??null})}async syncRemotePeer(_){let $=_.direction??"both",D=_.dryRun===!0,g=this.ensureWorkspace();h(g.knowledgeDbPath);let U=_.tables?.length?["--tables",_.tables.join(",")]:[],I=_.includeArtifactContent===!1?["--no-artifact-content"]:[],j=["--scope",this.scope,"--json"],N=await EP({machineId:_.machine,includeTailscale:_.includeTailscale}),O=await tj({machineId:_.machine,peerWorkspace:_.peerWorkspace,includeTailscale:_.includeTailscale});if(!_.peerWorkspace&&N.source==="raw"||!O.ok||!O.project_root){let J=tG(g.knowledgeDbPath,_.machine);if(J){if(!_.peerWorkspace&&N.source==="raw"&&J.ssh_target)N=oG(J,_.machine,N);if(!O.ok||!O.project_root){let P=pG(J,_.machine,O);if(P)O=P}}}if(!O.ok||!O.project_root)throw Error([`Unable to resolve peer workspace for ${_.machine}.`,"Pass --peer-workspace or configure workspace path mapping in machines.",O.warnings.length?`Warnings: ${O.warnings.join(", ")}`:null].filter(Boolean).join(" "));let A=O.project_root,L={ok:!0,dry_run:D,direction:$,transport:"ssh",machine:_.machine,resolved_machine:N.target,resolved_route:kP(N),resolved_workspace:Lg(O,O.project_root),peer_workspace:A,message:""},z=!1,W=()=>{if(D||z)return;qX(g.knowledgeDbPath,{machineId:_.machine,route:N,workspace:O}),z=!0};if($==="pull"||$==="both"){let J=lG(A,["sync","export",...j,...U,...I]),P=g8(_.machine,J,void 0,N),S=I8(_.machine,"sync export",P);fb(_.machine,S),L.pull=await this.importSyncBundle({bundle:S,dryRun:D,direction:"pull",machineId:_.machineId??null})}if($==="push"||$==="both"){W();let J=this.exportSyncBundle({machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:!D}),P=lG(A,["sync","import",...j,...D?["--dry-run"]:[]]),S=I8(_.machine,"sync import",g8(_.machine,P,JSON.stringify(J),N));wb(_.machine,S),L.push=S}return L.ok=(L.pull?.ok??!0)&&(L.push?.ok??!0),W(),L.message=[eG(L.resolved_workspace),L.pull?`pull: ${L.pull.message}`:null,L.push?`push: ${L.push.message}`:null].filter(Boolean).join("; "),L}async syncPeer(_){let $=_.direction??"both",D=this.ensureWorkspace();h(D.knowledgeDbPath);let g=j8(_.peerWorkspace),U=Lb(g);h(U.knowledgeDbPath);let I=bN(U.configPath),j=ig(I,U,this.scope),N=L2(I,U),O=_.machineId??HP(D),A=HP(U),L=await tj({machineId:_.machineId??A,peerWorkspace:g,includeTailscale:!1}),z=()=>tD({dbPath:D.knowledgeDbPath,scope:this.scope,workspaceHome:D.home,storage:this.storageContract(),machineId:O,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),W=()=>tD({dbPath:U.knowledgeDbPath,scope:this.scope,workspaceHome:U.home,storage:j,machineId:A,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),J={ok:!0,dry_run:_.dryRun===!0,direction:$,resolved_workspace:Lg(L,L.project_root??g),message:""};if($==="pull"||$==="both")J.pull=await XI({targetDbPath:D.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:D.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:W(),targetBundle:z(),direction:"pull",dryRun:_.dryRun,localMachineId:O});if($==="push"||$==="both")J.push=await XI({targetDbPath:U.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:U.home,targetStorage:j,targetStore:N,bundle:z(),targetBundle:W(),direction:"push",dryRun:_.dryRun,localMachineId:A});return J.ok=(J.pull?.ok??!0)&&(J.push?.ok??!0),J.message=[eG(J.resolved_workspace),J.pull?`pull: ${J.pull.message}`:null,J.push?`push: ${J.push.message}`:null].filter(Boolean).join("; "),J}}function jN(_={}){return new J8(_)}import{createHash as P8}from"crypto";var ub=Object.defineProperty,xb=(_)=>_;function yb(_,$){this[_]=xb.bind(null,$)}var hb=(_,$)=>{for(var D in $)ub(_,D,{get:$[D],enumerable:!0,configurable:!0,set:yb.bind($,D)})},E={};hb(E,{void:()=>VH,util:()=>g_,unknown:()=>BH,union:()=>ZH,undefined:()=>YH,tuple:()=>kH,transformer:()=>W8,symbol:()=>RH,string:()=>b8,strictObject:()=>MH,setErrorMap:()=>db,set:()=>fH,record:()=>CH,quotelessJson:()=>cb,promise:()=>hH,preprocess:()=>dH,pipeline:()=>mH,ostring:()=>iH,optional:()=>cH,onumber:()=>lH,oboolean:()=>tH,objectUtil:()=>hP,object:()=>KH,number:()=>H8,nullable:()=>nH,null:()=>QH,never:()=>qH,nativeEnum:()=>yH,nan:()=>WH,map:()=>vH,makeIssue:()=>ON,literal:()=>uH,lazy:()=>rH,late:()=>zH,isValid:()=>n4,isDirty:()=>nP,isAsync:()=>Sg,isAborted:()=>cP,intersection:()=>HH,instanceof:()=>SH,getParsedType:()=>P6,getErrorMap:()=>EN,function:()=>wH,enum:()=>xH,effect:()=>W8,discriminatedUnion:()=>bH,defaultErrorMap:()=>AD,datetimeRegex:()=>K8,date:()=>GH,custom:()=>Z8,coerce:()=>oH,boolean:()=>k8,bigint:()=>XH,array:()=>FH,any:()=>TH,addIssueToContext:()=>u,ZodVoid:()=>Xg,ZodUnknown:()=>m6,ZodUnion:()=>zD,ZodUndefined:()=>JD,ZodType:()=>__,ZodTuple:()=>d$,ZodTransformer:()=>G$,ZodSymbol:()=>Wg,ZodString:()=>K$,ZodSet:()=>i4,ZodSchema:()=>__,ZodRecord:()=>Gg,ZodReadonly:()=>QD,ZodPromise:()=>l4,ZodPipeline:()=>Qg,ZodParsedType:()=>y,ZodOptional:()=>Z$,ZodObject:()=>b_,ZodNumber:()=>i6,ZodNullable:()=>z6,ZodNull:()=>PD,ZodNever:()=>n$,ZodNativeEnum:()=>GD,ZodNaN:()=>Yg,ZodMap:()=>Rg,ZodLiteral:()=>XD,ZodLazy:()=>WD,ZodIssueCode:()=>k,ZodIntersection:()=>SD,ZodFunction:()=>ED,ZodFirstPartyTypeKind:()=>i,ZodError:()=>O$,ZodEnum:()=>t6,ZodEffects:()=>G$,ZodDiscriminatedUnion:()=>JN,ZodDefault:()=>RD,ZodDate:()=>d4,ZodCatch:()=>YD,ZodBranded:()=>PN,ZodBoolean:()=>LD,ZodBigInt:()=>l6,ZodArray:()=>M$,ZodAny:()=>m4,Schema:()=>__,ParseStatus:()=>m_,OK:()=>a_,NEVER:()=>pH,INVALID:()=>m,EMPTY_PATH:()=>mb,DIRTY:()=>ND,BRAND:()=>PH});var g_;(function(_){_.assertEqual=(U)=>{};function $(U){}_.assertIs=$;function D(U){throw Error()}_.assertNever=D,_.arrayToEnum=(U)=>{let I={};for(let j of U)I[j]=j;return I},_.getValidEnumValues=(U)=>{let I=_.objectKeys(U).filter((N)=>typeof U[U[N]]!=="number"),j={};for(let N of I)j[N]=U[N];return _.objectValues(j)},_.objectValues=(U)=>{return _.objectKeys(U).map(function(I){return U[I]})},_.objectKeys=typeof Object.keys==="function"?(U)=>Object.keys(U):(U)=>{let I=[];for(let j in U)if(Object.prototype.hasOwnProperty.call(U,j))I.push(j);return I},_.find=(U,I)=>{for(let j of U)if(I(j))return j;return},_.isInteger=typeof Number.isInteger==="function"?(U)=>Number.isInteger(U):(U)=>typeof U==="number"&&Number.isFinite(U)&&Math.floor(U)===U;function g(U,I=" | "){return U.map((j)=>typeof j==="string"?`'${j}'`:j).join(I)}_.joinValues=g,_.jsonStringifyReplacer=(U,I)=>{if(typeof I==="bigint")return I.toString();return I}})(g_||(g_={}));var hP;(function(_){_.mergeShapes=($,D)=>{return{...$,...D}}})(hP||(hP={}));var y=g_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),P6=(_)=>{switch(typeof _){case"undefined":return y.undefined;case"string":return y.string;case"number":return Number.isNaN(_)?y.nan:y.number;case"boolean":return y.boolean;case"function":return y.function;case"bigint":return y.bigint;case"symbol":return y.symbol;case"object":if(Array.isArray(_))return y.array;if(_===null)return y.null;if(_.then&&typeof _.then==="function"&&_.catch&&typeof _.catch==="function")return y.promise;if(typeof Map<"u"&&_ instanceof Map)return y.map;if(typeof Set<"u"&&_ instanceof Set)return y.set;if(typeof Date<"u"&&_ instanceof Date)return y.date;return y.object;default:return y.unknown}},k=g_.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),cb=(_)=>{return JSON.stringify(_,null,2).replace(/"([^"]+)":/g,"$1:")};class O$ extends Error{get errors(){return this.issues}constructor(_){super();this.issues=[],this.addIssue=(D)=>{this.issues=[...this.issues,D]},this.addIssues=(D=[])=>{this.issues=[...this.issues,...D]};let $=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,$);else this.__proto__=$;this.name="ZodError",this.issues=_}format(_){let $=_||function(U){return U.message},D={_errors:[]},g=(U)=>{for(let I of U.issues)if(I.code==="invalid_union")I.unionErrors.map(g);else if(I.code==="invalid_return_type")g(I.returnTypeError);else if(I.code==="invalid_arguments")g(I.argumentsError);else if(I.path.length===0)D._errors.push($(I));else{let j=D,N=0;while(N$.message){let $={},D=[];for(let g of this.issues)if(g.path.length>0){let U=g.path[0];$[U]=$[U]||[],$[U].push(_(g))}else D.push(_(g));return{formErrors:D,fieldErrors:$}}get formErrors(){return this.flatten()}}O$.create=(_)=>{return new O$(_)};var nb=(_,$)=>{let D;switch(_.code){case k.invalid_type:if(_.received===y.undefined)D="Required";else D=`Expected ${_.expected}, received ${_.received}`;break;case k.invalid_literal:D=`Invalid literal value, expected ${JSON.stringify(_.expected,g_.jsonStringifyReplacer)}`;break;case k.unrecognized_keys:D=`Unrecognized key(s) in object: ${g_.joinValues(_.keys,", ")}`;break;case k.invalid_union:D="Invalid input";break;case k.invalid_union_discriminator:D=`Invalid discriminator value. Expected ${g_.joinValues(_.options)}`;break;case k.invalid_enum_value:D=`Invalid enum value. Expected ${g_.joinValues(_.options)}, received '${_.received}'`;break;case k.invalid_arguments:D="Invalid function arguments";break;case k.invalid_return_type:D="Invalid function return type";break;case k.invalid_date:D="Invalid date";break;case k.invalid_string:if(typeof _.validation==="object")if("includes"in _.validation){if(D=`Invalid input: must include "${_.validation.includes}"`,typeof _.validation.position==="number")D=`${D} at one or more positions greater than or equal to ${_.validation.position}`}else if("startsWith"in _.validation)D=`Invalid input: must start with "${_.validation.startsWith}"`;else if("endsWith"in _.validation)D=`Invalid input: must end with "${_.validation.endsWith}"`;else g_.assertNever(_.validation);else if(_.validation!=="regex")D=`Invalid ${_.validation}`;else D="Invalid";break;case k.too_small:if(_.type==="array")D=`Array must contain ${_.exact?"exactly":_.inclusive?"at least":"more than"} ${_.minimum} element(s)`;else if(_.type==="string")D=`String must contain ${_.exact?"exactly":_.inclusive?"at least":"over"} ${_.minimum} character(s)`;else if(_.type==="number")D=`Number must be ${_.exact?"exactly equal to ":_.inclusive?"greater than or equal to ":"greater than "}${_.minimum}`;else if(_.type==="bigint")D=`Number must be ${_.exact?"exactly equal to ":_.inclusive?"greater than or equal to ":"greater than "}${_.minimum}`;else if(_.type==="date")D=`Date must be ${_.exact?"exactly equal to ":_.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(_.minimum))}`;else D="Invalid input";break;case k.too_big:if(_.type==="array")D=`Array must contain ${_.exact?"exactly":_.inclusive?"at most":"less than"} ${_.maximum} element(s)`;else if(_.type==="string")D=`String must contain ${_.exact?"exactly":_.inclusive?"at most":"under"} ${_.maximum} character(s)`;else if(_.type==="number")D=`Number must be ${_.exact?"exactly":_.inclusive?"less than or equal to":"less than"} ${_.maximum}`;else if(_.type==="bigint")D=`BigInt must be ${_.exact?"exactly":_.inclusive?"less than or equal to":"less than"} ${_.maximum}`;else if(_.type==="date")D=`Date must be ${_.exact?"exactly":_.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(_.maximum))}`;else D="Invalid input";break;case k.custom:D="Invalid input";break;case k.invalid_intersection_types:D="Intersection results could not be merged";break;case k.not_multiple_of:D=`Number must be a multiple of ${_.multipleOf}`;break;case k.not_finite:D="Number must be finite";break;default:D=$.defaultError,g_.assertNever(_)}return{message:D}},AD=nb,q8=AD;function db(_){q8=_}function EN(){return q8}var ON=(_)=>{let{data:$,path:D,errorMaps:g,issueData:U}=_,I=[...D,...U.path||[]],j={...U,path:I};if(U.message!==void 0)return{...U,path:I,message:U.message};let N="",O=g.filter((A)=>!!A).slice().reverse();for(let A of O)N=A(j,{data:$,defaultError:N}).message;return{...U,path:I,message:N}},mb=[];function u(_,$){let D=EN(),g=ON({issueData:$,data:_.data,path:_.path,errorMaps:[_.common.contextualErrorMap,_.schemaErrorMap,D,D===AD?void 0:AD].filter((U)=>!!U)});_.common.issues.push(g)}class m_{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray(_,$){let D=[];for(let g of $){if(g.status==="aborted")return m;if(g.status==="dirty")_.dirty();D.push(g.value)}return{status:_.value,value:D}}static async mergeObjectAsync(_,$){let D=[];for(let g of $){let U=await g.key,I=await g.value;D.push({key:U,value:I})}return m_.mergeObjectSync(_,D)}static mergeObjectSync(_,$){let D={};for(let g of $){let{key:U,value:I}=g;if(U.status==="aborted")return m;if(I.status==="aborted")return m;if(U.status==="dirty")_.dirty();if(I.status==="dirty")_.dirty();if(U.value!=="__proto__"&&(typeof I.value<"u"||g.alwaysSet))D[U.value]=I.value}return{status:_.value,value:D}}}var m=Object.freeze({status:"aborted"}),ND=(_)=>({status:"dirty",value:_}),a_=(_)=>({status:"valid",value:_}),cP=(_)=>_.status==="aborted",nP=(_)=>_.status==="dirty",n4=(_)=>_.status==="valid",Sg=(_)=>typeof Promise<"u"&&_ instanceof Promise,n;(function(_){_.errToObj=($)=>typeof $==="string"?{message:$}:$||{},_.toString=($)=>typeof $==="string"?$:$?.message})(n||(n={}));class b${constructor(_,$,D,g){this._cachedPath=[],this.parent=_,this.data=$,this._path=D,this._key=g}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var z8=(_,$)=>{if(n4($))return{success:!0,data:$.value};else{if(!_.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let D=new O$(_.common.issues);return this._error=D,this._error}}}};function p(_){if(!_)return{};let{errorMap:$,invalid_type_error:D,required_error:g,description:U}=_;if($&&(D||g))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if($)return{errorMap:$,description:U};return{errorMap:(j,N)=>{let{message:O}=_;if(j.code==="invalid_enum_value")return{message:O??N.defaultError};if(typeof N.data>"u")return{message:O??g??N.defaultError};if(j.code!=="invalid_type")return{message:N.defaultError};return{message:O??D??N.defaultError}},description:U}}class __{get description(){return this._def.description}_getType(_){return P6(_.data)}_getOrReturnCtx(_,$){return $||{common:_.parent.common,data:_.data,parsedType:P6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}_processInputParams(_){return{status:new m_,ctx:{common:_.parent.common,data:_.data,parsedType:P6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}}_parseSync(_){let $=this._parse(_);if(Sg($))throw Error("Synchronous parse encountered promise.");return $}_parseAsync(_){let $=this._parse(_);return Promise.resolve($)}parse(_,$){let D=this.safeParse(_,$);if(D.success)return D.data;throw D.error}safeParse(_,$){let D={common:{issues:[],async:$?.async??!1,contextualErrorMap:$?.errorMap},path:$?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:P6(_)},g=this._parseSync({data:_,path:D.path,parent:D});return z8(D,g)}"~validate"(_){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:P6(_)};if(!this["~standard"].async)try{let D=this._parseSync({data:_,path:[],parent:$});return n4(D)?{value:D.value}:{issues:$.common.issues}}catch(D){if(D?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;$.common={issues:[],async:!0}}return this._parseAsync({data:_,path:[],parent:$}).then((D)=>n4(D)?{value:D.value}:{issues:$.common.issues})}async parseAsync(_,$){let D=await this.safeParseAsync(_,$);if(D.success)return D.data;throw D.error}async safeParseAsync(_,$){let D={common:{issues:[],contextualErrorMap:$?.errorMap,async:!0},path:$?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:P6(_)},g=this._parse({data:_,path:D.path,parent:D}),U=await(Sg(g)?g:Promise.resolve(g));return z8(D,U)}refine(_,$){let D=(g)=>{if(typeof $==="string"||typeof $>"u")return{message:$};else if(typeof $==="function")return $(g);else return $};return this._refinement((g,U)=>{let I=_(g),j=()=>U.addIssue({code:k.custom,...D(g)});if(typeof Promise<"u"&&I instanceof Promise)return I.then((N)=>{if(!N)return j(),!1;else return!0});if(!I)return j(),!1;else return!0})}refinement(_,$){return this._refinement((D,g)=>{if(!_(D))return g.addIssue(typeof $==="function"?$(D,g):$),!1;else return!0})}_refinement(_){return new G$({schema:this,typeName:i.ZodEffects,effect:{type:"refinement",refinement:_}})}superRefine(_){return this._refinement(_)}constructor(_){this.spa=this.safeParseAsync,this._def=_,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:($)=>this["~validate"]($)}}optional(){return Z$.create(this,this._def)}nullable(){return z6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return M$.create(this)}promise(){return l4.create(this,this._def)}or(_){return zD.create([this,_],this._def)}and(_){return SD.create(this,_,this._def)}transform(_){return new G$({...p(this._def),schema:this,typeName:i.ZodEffects,effect:{type:"transform",transform:_}})}default(_){let $=typeof _==="function"?_:()=>_;return new RD({...p(this._def),innerType:this,defaultValue:$,typeName:i.ZodDefault})}brand(){return new PN({typeName:i.ZodBranded,type:this,...p(this._def)})}catch(_){let $=typeof _==="function"?_:()=>_;return new YD({...p(this._def),innerType:this,catchValue:$,typeName:i.ZodCatch})}describe(_){return new this.constructor({...this._def,description:_})}pipe(_){return Qg.create(this,_)}readonly(){return QD.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var ib=/^c[^\s-]{8,}$/i,lb=/^[0-9a-z]+$/,tb=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ob=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,pb=/^[a-z0-9_-]{21}$/i,eb=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,ab=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,sb=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_H="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",xP,$H=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,DH=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,UH=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,gH=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,IH=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,jH=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,V8="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",NH=new RegExp(`^${V8}$`);function F8(_){let $="[0-5]\\d";if(_.precision)$=`${$}\\.\\d{${_.precision}}`;else if(_.precision==null)$=`${$}(\\.\\d+)?`;let D=_.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${$})${D}`}function EH(_){return new RegExp(`^${F8(_)}$`)}function K8(_){let $=`${V8}T${F8(_)}`,D=[];if(D.push(_.local?"Z?":"Z"),_.offset)D.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${D.join("|")})`,new RegExp(`^${$}$`)}function OH(_,$){if(($==="v4"||!$)&&$H.test(_))return!0;if(($==="v6"||!$)&&UH.test(_))return!0;return!1}function AH(_,$){if(!eb.test(_))return!1;try{let[D]=_.split(".");if(!D)return!1;let g=D.replace(/-/g,"+").replace(/_/g,"/").padEnd(D.length+(4-D.length%4)%4,"="),U=JSON.parse(atob(g));if(typeof U!=="object"||U===null)return!1;if("typ"in U&&U?.typ!=="JWT")return!1;if(!U.alg)return!1;if($&&U.alg!==$)return!1;return!0}catch{return!1}}function LH(_,$){if(($==="v4"||!$)&&DH.test(_))return!0;if(($==="v6"||!$)&&gH.test(_))return!0;return!1}class K$ extends __{_parse(_){if(this._def.coerce)_.data=String(_.data);if(this._getType(_)!==y.string){let U=this._getOrReturnCtx(_);return u(U,{code:k.invalid_type,expected:y.string,received:U.parsedType}),m}let D=new m_,g=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.lengthU.value)g=this._getOrReturnCtx(_,g),u(g,{code:k.too_big,maximum:U.value,type:"string",inclusive:!0,exact:!1,message:U.message}),D.dirty()}else if(U.kind==="length"){let I=_.data.length>U.value,j=_.data.length_.test(g),{validation:$,code:k.invalid_string,...n.errToObj(D)})}_addCheck(_){return new K$({...this._def,checks:[...this._def.checks,_]})}email(_){return this._addCheck({kind:"email",...n.errToObj(_)})}url(_){return this._addCheck({kind:"url",...n.errToObj(_)})}emoji(_){return this._addCheck({kind:"emoji",...n.errToObj(_)})}uuid(_){return this._addCheck({kind:"uuid",...n.errToObj(_)})}nanoid(_){return this._addCheck({kind:"nanoid",...n.errToObj(_)})}cuid(_){return this._addCheck({kind:"cuid",...n.errToObj(_)})}cuid2(_){return this._addCheck({kind:"cuid2",...n.errToObj(_)})}ulid(_){return this._addCheck({kind:"ulid",...n.errToObj(_)})}base64(_){return this._addCheck({kind:"base64",...n.errToObj(_)})}base64url(_){return this._addCheck({kind:"base64url",...n.errToObj(_)})}jwt(_){return this._addCheck({kind:"jwt",...n.errToObj(_)})}ip(_){return this._addCheck({kind:"ip",...n.errToObj(_)})}cidr(_){return this._addCheck({kind:"cidr",...n.errToObj(_)})}datetime(_){if(typeof _==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:_});return this._addCheck({kind:"datetime",precision:typeof _?.precision>"u"?null:_?.precision,offset:_?.offset??!1,local:_?.local??!1,...n.errToObj(_?.message)})}date(_){return this._addCheck({kind:"date",message:_})}time(_){if(typeof _==="string")return this._addCheck({kind:"time",precision:null,message:_});return this._addCheck({kind:"time",precision:typeof _?.precision>"u"?null:_?.precision,...n.errToObj(_?.message)})}duration(_){return this._addCheck({kind:"duration",...n.errToObj(_)})}regex(_,$){return this._addCheck({kind:"regex",regex:_,...n.errToObj($)})}includes(_,$){return this._addCheck({kind:"includes",value:_,position:$?.position,...n.errToObj($?.message)})}startsWith(_,$){return this._addCheck({kind:"startsWith",value:_,...n.errToObj($)})}endsWith(_,$){return this._addCheck({kind:"endsWith",value:_,...n.errToObj($)})}min(_,$){return this._addCheck({kind:"min",value:_,...n.errToObj($)})}max(_,$){return this._addCheck({kind:"max",value:_,...n.errToObj($)})}length(_,$){return this._addCheck({kind:"length",value:_,...n.errToObj($)})}nonempty(_){return this.min(1,n.errToObj(_))}trim(){return new K$({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new K$({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new K$({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find((_)=>_.kind==="datetime")}get isDate(){return!!this._def.checks.find((_)=>_.kind==="date")}get isTime(){return!!this._def.checks.find((_)=>_.kind==="time")}get isDuration(){return!!this._def.checks.find((_)=>_.kind==="duration")}get isEmail(){return!!this._def.checks.find((_)=>_.kind==="email")}get isURL(){return!!this._def.checks.find((_)=>_.kind==="url")}get isEmoji(){return!!this._def.checks.find((_)=>_.kind==="emoji")}get isUUID(){return!!this._def.checks.find((_)=>_.kind==="uuid")}get isNANOID(){return!!this._def.checks.find((_)=>_.kind==="nanoid")}get isCUID(){return!!this._def.checks.find((_)=>_.kind==="cuid")}get isCUID2(){return!!this._def.checks.find((_)=>_.kind==="cuid2")}get isULID(){return!!this._def.checks.find((_)=>_.kind==="ulid")}get isIP(){return!!this._def.checks.find((_)=>_.kind==="ip")}get isCIDR(){return!!this._def.checks.find((_)=>_.kind==="cidr")}get isBase64(){return!!this._def.checks.find((_)=>_.kind==="base64")}get isBase64url(){return!!this._def.checks.find((_)=>_.kind==="base64url")}get minLength(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _}get maxLength(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _}}K$.create=(_)=>{return new K$({checks:[],typeName:i.ZodString,coerce:_?.coerce??!1,...p(_)})};function JH(_,$){let D=(_.toString().split(".")[1]||"").length,g=($.toString().split(".")[1]||"").length,U=D>g?D:g,I=Number.parseInt(_.toFixed(U).replace(".","")),j=Number.parseInt($.toFixed(U).replace(".",""));return I%j/10**U}class i6 extends __{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(_){if(this._def.coerce)_.data=Number(_.data);if(this._getType(_)!==y.number){let U=this._getOrReturnCtx(_);return u(U,{code:k.invalid_type,expected:y.number,received:U.parsedType}),m}let D=void 0,g=new m_;for(let U of this._def.checks)if(U.kind==="int"){if(!g_.isInteger(_.data))D=this._getOrReturnCtx(_,D),u(D,{code:k.invalid_type,expected:"integer",received:"float",message:U.message}),g.dirty()}else if(U.kind==="min"){if(U.inclusive?_.dataU.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),u(D,{code:k.too_big,maximum:U.value,type:"number",inclusive:U.inclusive,exact:!1,message:U.message}),g.dirty()}else if(U.kind==="multipleOf"){if(JH(_.data,U.value)!==0)D=this._getOrReturnCtx(_,D),u(D,{code:k.not_multiple_of,multipleOf:U.value,message:U.message}),g.dirty()}else if(U.kind==="finite"){if(!Number.isFinite(_.data))D=this._getOrReturnCtx(_,D),u(D,{code:k.not_finite,message:U.message}),g.dirty()}else g_.assertNever(U);return{status:g.value,value:_.data}}gte(_,$){return this.setLimit("min",_,!0,n.toString($))}gt(_,$){return this.setLimit("min",_,!1,n.toString($))}lte(_,$){return this.setLimit("max",_,!0,n.toString($))}lt(_,$){return this.setLimit("max",_,!1,n.toString($))}setLimit(_,$,D,g){return new i6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:n.toString(g)}]})}_addCheck(_){return new i6({...this._def,checks:[...this._def.checks,_]})}int(_){return this._addCheck({kind:"int",message:n.toString(_)})}positive(_){return this._addCheck({kind:"min",value:0,inclusive:!1,message:n.toString(_)})}negative(_){return this._addCheck({kind:"max",value:0,inclusive:!1,message:n.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:0,inclusive:!0,message:n.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:0,inclusive:!0,message:n.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:n.toString($)})}finite(_){return this._addCheck({kind:"finite",message:n.toString(_)})}safe(_){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:n.toString(_)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:n.toString(_)})}get minValue(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _}get maxValue(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _}get isInt(){return!!this._def.checks.find((_)=>_.kind==="int"||_.kind==="multipleOf"&&g_.isInteger(_.value))}get isFinite(){let _=null,$=null;for(let D of this._def.checks)if(D.kind==="finite"||D.kind==="int"||D.kind==="multipleOf")return!0;else if(D.kind==="min"){if($===null||D.value>$)$=D.value}else if(D.kind==="max"){if(_===null||D.value<_)_=D.value}return Number.isFinite($)&&Number.isFinite(_)}}i6.create=(_)=>{return new i6({checks:[],typeName:i.ZodNumber,coerce:_?.coerce||!1,...p(_)})};class l6 extends __{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse(_){if(this._def.coerce)try{_.data=BigInt(_.data)}catch{return this._getInvalidInput(_)}if(this._getType(_)!==y.bigint)return this._getInvalidInput(_);let D=void 0,g=new m_;for(let U of this._def.checks)if(U.kind==="min"){if(U.inclusive?_.dataU.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),u(D,{code:k.too_big,type:"bigint",maximum:U.value,inclusive:U.inclusive,message:U.message}),g.dirty()}else if(U.kind==="multipleOf"){if(_.data%U.value!==BigInt(0))D=this._getOrReturnCtx(_,D),u(D,{code:k.not_multiple_of,multipleOf:U.value,message:U.message}),g.dirty()}else g_.assertNever(U);return{status:g.value,value:_.data}}_getInvalidInput(_){let $=this._getOrReturnCtx(_);return u($,{code:k.invalid_type,expected:y.bigint,received:$.parsedType}),m}gte(_,$){return this.setLimit("min",_,!0,n.toString($))}gt(_,$){return this.setLimit("min",_,!1,n.toString($))}lte(_,$){return this.setLimit("max",_,!0,n.toString($))}lt(_,$){return this.setLimit("max",_,!1,n.toString($))}setLimit(_,$,D,g){return new l6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:n.toString(g)}]})}_addCheck(_){return new l6({...this._def,checks:[...this._def.checks,_]})}positive(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:n.toString(_)})}negative(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:n.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:n.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:n.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:n.toString($)})}get minValue(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _}get maxValue(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _}}l6.create=(_)=>{return new l6({checks:[],typeName:i.ZodBigInt,coerce:_?.coerce??!1,...p(_)})};class LD extends __{_parse(_){if(this._def.coerce)_.data=Boolean(_.data);if(this._getType(_)!==y.boolean){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.boolean,received:D.parsedType}),m}return a_(_.data)}}LD.create=(_)=>{return new LD({typeName:i.ZodBoolean,coerce:_?.coerce||!1,...p(_)})};class d4 extends __{_parse(_){if(this._def.coerce)_.data=new Date(_.data);if(this._getType(_)!==y.date){let U=this._getOrReturnCtx(_);return u(U,{code:k.invalid_type,expected:y.date,received:U.parsedType}),m}if(Number.isNaN(_.data.getTime())){let U=this._getOrReturnCtx(_);return u(U,{code:k.invalid_date}),m}let D=new m_,g=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.getTime()U.value)g=this._getOrReturnCtx(_,g),u(g,{code:k.too_big,message:U.message,inclusive:!0,exact:!1,maximum:U.value,type:"date"}),D.dirty()}else g_.assertNever(U);return{status:D.value,value:new Date(_.data.getTime())}}_addCheck(_){return new d4({...this._def,checks:[...this._def.checks,_]})}min(_,$){return this._addCheck({kind:"min",value:_.getTime(),message:n.toString($)})}max(_,$){return this._addCheck({kind:"max",value:_.getTime(),message:n.toString($)})}get minDate(){let _=null;for(let $ of this._def.checks)if($.kind==="min"){if(_===null||$.value>_)_=$.value}return _!=null?new Date(_):null}get maxDate(){let _=null;for(let $ of this._def.checks)if($.kind==="max"){if(_===null||$.value<_)_=$.value}return _!=null?new Date(_):null}}d4.create=(_)=>{return new d4({checks:[],coerce:_?.coerce||!1,typeName:i.ZodDate,...p(_)})};class Wg extends __{_parse(_){if(this._getType(_)!==y.symbol){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.symbol,received:D.parsedType}),m}return a_(_.data)}}Wg.create=(_)=>{return new Wg({typeName:i.ZodSymbol,...p(_)})};class JD extends __{_parse(_){if(this._getType(_)!==y.undefined){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.undefined,received:D.parsedType}),m}return a_(_.data)}}JD.create=(_)=>{return new JD({typeName:i.ZodUndefined,...p(_)})};class PD extends __{_parse(_){if(this._getType(_)!==y.null){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.null,received:D.parsedType}),m}return a_(_.data)}}PD.create=(_)=>{return new PD({typeName:i.ZodNull,...p(_)})};class m4 extends __{constructor(){super(...arguments);this._any=!0}_parse(_){return a_(_.data)}}m4.create=(_)=>{return new m4({typeName:i.ZodAny,...p(_)})};class m6 extends __{constructor(){super(...arguments);this._unknown=!0}_parse(_){return a_(_.data)}}m6.create=(_)=>{return new m6({typeName:i.ZodUnknown,...p(_)})};class n$ extends __{_parse(_){let $=this._getOrReturnCtx(_);return u($,{code:k.invalid_type,expected:y.never,received:$.parsedType}),m}}n$.create=(_)=>{return new n$({typeName:i.ZodNever,...p(_)})};class Xg extends __{_parse(_){if(this._getType(_)!==y.undefined){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.void,received:D.parsedType}),m}return a_(_.data)}}Xg.create=(_)=>{return new Xg({typeName:i.ZodVoid,...p(_)})};class M$ extends __{_parse(_){let{ctx:$,status:D}=this._processInputParams(_),g=this._def;if($.parsedType!==y.array)return u($,{code:k.invalid_type,expected:y.array,received:$.parsedType}),m;if(g.exactLength!==null){let I=$.data.length>g.exactLength.value,j=$.data.lengthg.maxLength.value)u($,{code:k.too_big,maximum:g.maxLength.value,type:"array",inclusive:!0,exact:!1,message:g.maxLength.message}),D.dirty()}if($.common.async)return Promise.all([...$.data].map((I,j)=>{return g.type._parseAsync(new b$($,I,$.path,j))})).then((I)=>{return m_.mergeArray(D,I)});let U=[...$.data].map((I,j)=>{return g.type._parseSync(new b$($,I,$.path,j))});return m_.mergeArray(D,U)}get element(){return this._def.type}min(_,$){return new M$({...this._def,minLength:{value:_,message:n.toString($)}})}max(_,$){return new M$({...this._def,maxLength:{value:_,message:n.toString($)}})}length(_,$){return new M$({...this._def,exactLength:{value:_,message:n.toString($)}})}nonempty(_){return this.min(1,_)}}M$.create=(_,$)=>{return new M$({type:_,minLength:null,maxLength:null,exactLength:null,typeName:i.ZodArray,...p($)})};function ID(_){if(_ instanceof b_){let $={};for(let D in _.shape){let g=_.shape[D];$[D]=Z$.create(ID(g))}return new b_({..._._def,shape:()=>$})}else if(_ instanceof M$)return new M$({..._._def,type:ID(_.element)});else if(_ instanceof Z$)return Z$.create(ID(_.unwrap()));else if(_ instanceof z6)return z6.create(ID(_.unwrap()));else if(_ instanceof d$)return d$.create(_.items.map(($)=>ID($)));else return _}class b_ extends __{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let _=this._def.shape(),$=g_.objectKeys(_);return this._cached={shape:_,keys:$},this._cached}_parse(_){if(this._getType(_)!==y.object){let O=this._getOrReturnCtx(_);return u(O,{code:k.invalid_type,expected:y.object,received:O.parsedType}),m}let{status:D,ctx:g}=this._processInputParams(_),{shape:U,keys:I}=this._getCached(),j=[];if(!(this._def.catchall instanceof n$&&this._def.unknownKeys==="strip")){for(let O in g.data)if(!I.includes(O))j.push(O)}let N=[];for(let O of I){let A=U[O],L=g.data[O];N.push({key:{status:"valid",value:O},value:A._parse(new b$(g,L,g.path,O)),alwaysSet:O in g.data})}if(this._def.catchall instanceof n$){let O=this._def.unknownKeys;if(O==="passthrough")for(let A of j)N.push({key:{status:"valid",value:A},value:{status:"valid",value:g.data[A]}});else if(O==="strict"){if(j.length>0)u(g,{code:k.unrecognized_keys,keys:j}),D.dirty()}else if(O==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let O=this._def.catchall;for(let A of j){let L=g.data[A];N.push({key:{status:"valid",value:A},value:O._parse(new b$(g,L,g.path,A)),alwaysSet:A in g.data})}}if(g.common.async)return Promise.resolve().then(async()=>{let O=[];for(let A of N){let L=await A.key,z=await A.value;O.push({key:L,value:z,alwaysSet:A.alwaysSet})}return O}).then((O)=>{return m_.mergeObjectSync(D,O)});else return m_.mergeObjectSync(D,N)}get shape(){return this._def.shape()}strict(_){return n.errToObj,new b_({...this._def,unknownKeys:"strict",..._!==void 0?{errorMap:($,D)=>{let g=this._def.errorMap?.($,D).message??D.defaultError;if($.code==="unrecognized_keys")return{message:n.errToObj(_).message??g};return{message:g}}}:{}})}strip(){return new b_({...this._def,unknownKeys:"strip"})}passthrough(){return new b_({...this._def,unknownKeys:"passthrough"})}extend(_){return new b_({...this._def,shape:()=>({...this._def.shape(),..._})})}merge(_){return new b_({unknownKeys:_._def.unknownKeys,catchall:_._def.catchall,shape:()=>({...this._def.shape(),..._._def.shape()}),typeName:i.ZodObject})}setKey(_,$){return this.augment({[_]:$})}catchall(_){return new b_({...this._def,catchall:_})}pick(_){let $={};for(let D of g_.objectKeys(_))if(_[D]&&this.shape[D])$[D]=this.shape[D];return new b_({...this._def,shape:()=>$})}omit(_){let $={};for(let D of g_.objectKeys(this.shape))if(!_[D])$[D]=this.shape[D];return new b_({...this._def,shape:()=>$})}deepPartial(){return ID(this)}partial(_){let $={};for(let D of g_.objectKeys(this.shape)){let g=this.shape[D];if(_&&!_[D])$[D]=g;else $[D]=g.optional()}return new b_({...this._def,shape:()=>$})}required(_){let $={};for(let D of g_.objectKeys(this.shape))if(_&&!_[D])$[D]=this.shape[D];else{let U=this.shape[D];while(U instanceof Z$)U=U._def.innerType;$[D]=U}return new b_({...this._def,shape:()=>$})}keyof(){return M8(g_.objectKeys(this.shape))}}b_.create=(_,$)=>{return new b_({shape:()=>_,unknownKeys:"strip",catchall:n$.create(),typeName:i.ZodObject,...p($)})};b_.strictCreate=(_,$)=>{return new b_({shape:()=>_,unknownKeys:"strict",catchall:n$.create(),typeName:i.ZodObject,...p($)})};b_.lazycreate=(_,$)=>{return new b_({shape:_,unknownKeys:"strip",catchall:n$.create(),typeName:i.ZodObject,...p($)})};class zD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=this._def.options;function g(U){for(let j of U)if(j.result.status==="valid")return j.result;for(let j of U)if(j.result.status==="dirty")return $.common.issues.push(...j.ctx.common.issues),j.result;let I=U.map((j)=>new O$(j.ctx.common.issues));return u($,{code:k.invalid_union,unionErrors:I}),m}if($.common.async)return Promise.all(D.map(async(U)=>{let I={...$,common:{...$.common,issues:[]},parent:null};return{result:await U._parseAsync({data:$.data,path:$.path,parent:I}),ctx:I}})).then(g);else{let U=void 0,I=[];for(let N of D){let O={...$,common:{...$.common,issues:[]},parent:null},A=N._parseSync({data:$.data,path:$.path,parent:O});if(A.status==="valid")return A;else if(A.status==="dirty"&&!U)U={result:A,ctx:O};if(O.common.issues.length)I.push(O.common.issues)}if(U)return $.common.issues.push(...U.ctx.common.issues),U.result;let j=I.map((N)=>new O$(N));return u($,{code:k.invalid_union,unionErrors:j}),m}}get options(){return this._def.options}}zD.create=(_,$)=>{return new zD({options:_,typeName:i.ZodUnion,...p($)})};var J6=(_)=>{if(_ instanceof WD)return J6(_.schema);else if(_ instanceof G$)return J6(_.innerType());else if(_ instanceof XD)return[_.value];else if(_ instanceof t6)return _.options;else if(_ instanceof GD)return g_.objectValues(_.enum);else if(_ instanceof RD)return J6(_._def.innerType);else if(_ instanceof JD)return[void 0];else if(_ instanceof PD)return[null];else if(_ instanceof Z$)return[void 0,...J6(_.unwrap())];else if(_ instanceof z6)return[null,...J6(_.unwrap())];else if(_ instanceof PN)return J6(_.unwrap());else if(_ instanceof QD)return J6(_.unwrap());else if(_ instanceof YD)return J6(_._def.innerType);else return[]};class JN extends __{_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.object)return u($,{code:k.invalid_type,expected:y.object,received:$.parsedType}),m;let D=this.discriminator,g=$.data[D],U=this.optionsMap.get(g);if(!U)return u($,{code:k.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[D]}),m;if($.common.async)return U._parseAsync({data:$.data,path:$.path,parent:$});else return U._parseSync({data:$.data,path:$.path,parent:$})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(_,$,D){let g=new Map;for(let U of $){let I=J6(U.shape[_]);if(!I.length)throw Error(`A discriminator value for key \`${_}\` could not be extracted from all schema options`);for(let j of I){if(g.has(j))throw Error(`Discriminator property ${String(_)} has duplicate value ${String(j)}`);g.set(j,U)}}return new JN({typeName:i.ZodDiscriminatedUnion,discriminator:_,options:$,optionsMap:g,...p(D)})}}function dP(_,$){let D=P6(_),g=P6($);if(_===$)return{valid:!0,data:_};else if(D===y.object&&g===y.object){let U=g_.objectKeys($),I=g_.objectKeys(_).filter((N)=>U.indexOf(N)!==-1),j={..._,...$};for(let N of I){let O=dP(_[N],$[N]);if(!O.valid)return{valid:!1};j[N]=O.data}return{valid:!0,data:j}}else if(D===y.array&&g===y.array){if(_.length!==$.length)return{valid:!1};let U=[];for(let I=0;I<_.length;I++){let j=_[I],N=$[I],O=dP(j,N);if(!O.valid)return{valid:!1};U.push(O.data)}return{valid:!0,data:U}}else if(D===y.date&&g===y.date&&+_===+$)return{valid:!0,data:_};else return{valid:!1}}class SD extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_),g=(U,I)=>{if(cP(U)||cP(I))return m;let j=dP(U.value,I.value);if(!j.valid)return u(D,{code:k.invalid_intersection_types}),m;if(nP(U)||nP(I))$.dirty();return{status:$.value,value:j.data}};if(D.common.async)return Promise.all([this._def.left._parseAsync({data:D.data,path:D.path,parent:D}),this._def.right._parseAsync({data:D.data,path:D.path,parent:D})]).then(([U,I])=>g(U,I));else return g(this._def.left._parseSync({data:D.data,path:D.path,parent:D}),this._def.right._parseSync({data:D.data,path:D.path,parent:D}))}}SD.create=(_,$,D)=>{return new SD({left:_,right:$,typeName:i.ZodIntersection,...p(D)})};class d$ extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.array)return u(D,{code:k.invalid_type,expected:y.array,received:D.parsedType}),m;if(D.data.lengththis._def.items.length)u(D,{code:k.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let U=[...D.data].map((I,j)=>{let N=this._def.items[j]||this._def.rest;if(!N)return null;return N._parse(new b$(D,I,D.path,j))}).filter((I)=>!!I);if(D.common.async)return Promise.all(U).then((I)=>{return m_.mergeArray($,I)});else return m_.mergeArray($,U)}get items(){return this._def.items}rest(_){return new d$({...this._def,rest:_})}}d$.create=(_,$)=>{if(!Array.isArray(_))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new d$({items:_,typeName:i.ZodTuple,rest:null,...p($)})};class Gg extends __{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.object)return u(D,{code:k.invalid_type,expected:y.object,received:D.parsedType}),m;let g=[],U=this._def.keyType,I=this._def.valueType;for(let j in D.data)g.push({key:U._parse(new b$(D,j,D.path,j)),value:I._parse(new b$(D,D.data[j],D.path,j)),alwaysSet:j in D.data});if(D.common.async)return m_.mergeObjectAsync($,g);else return m_.mergeObjectSync($,g)}get element(){return this._def.valueType}static create(_,$,D){if($ instanceof __)return new Gg({keyType:_,valueType:$,typeName:i.ZodRecord,...p(D)});return new Gg({keyType:K$.create(),valueType:_,typeName:i.ZodRecord,...p($)})}}class Rg extends __{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.map)return u(D,{code:k.invalid_type,expected:y.map,received:D.parsedType}),m;let g=this._def.keyType,U=this._def.valueType,I=[...D.data.entries()].map(([j,N],O)=>{return{key:g._parse(new b$(D,j,D.path,[O,"key"])),value:U._parse(new b$(D,N,D.path,[O,"value"]))}});if(D.common.async){let j=new Map;return Promise.resolve().then(async()=>{for(let N of I){let O=await N.key,A=await N.value;if(O.status==="aborted"||A.status==="aborted")return m;if(O.status==="dirty"||A.status==="dirty")$.dirty();j.set(O.value,A.value)}return{status:$.value,value:j}})}else{let j=new Map;for(let N of I){let{key:O,value:A}=N;if(O.status==="aborted"||A.status==="aborted")return m;if(O.status==="dirty"||A.status==="dirty")$.dirty();j.set(O.value,A.value)}return{status:$.value,value:j}}}}Rg.create=(_,$,D)=>{return new Rg({valueType:$,keyType:_,typeName:i.ZodMap,...p(D)})};class i4 extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.set)return u(D,{code:k.invalid_type,expected:y.set,received:D.parsedType}),m;let g=this._def;if(g.minSize!==null){if(D.data.sizeg.maxSize.value)u(D,{code:k.too_big,maximum:g.maxSize.value,type:"set",inclusive:!0,exact:!1,message:g.maxSize.message}),$.dirty()}let U=this._def.valueType;function I(N){let O=new Set;for(let A of N){if(A.status==="aborted")return m;if(A.status==="dirty")$.dirty();O.add(A.value)}return{status:$.value,value:O}}let j=[...D.data.values()].map((N,O)=>U._parse(new b$(D,N,D.path,O)));if(D.common.async)return Promise.all(j).then((N)=>I(N));else return I(j)}min(_,$){return new i4({...this._def,minSize:{value:_,message:n.toString($)}})}max(_,$){return new i4({...this._def,maxSize:{value:_,message:n.toString($)}})}size(_,$){return this.min(_,$).max(_,$)}nonempty(_){return this.min(1,_)}}i4.create=(_,$)=>{return new i4({valueType:_,minSize:null,maxSize:null,typeName:i.ZodSet,...p($)})};class ED extends __{constructor(){super(...arguments);this.validate=this.implement}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.function)return u($,{code:k.invalid_type,expected:y.function,received:$.parsedType}),m;function D(j,N){return ON({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,EN(),AD].filter((O)=>!!O),issueData:{code:k.invalid_arguments,argumentsError:N}})}function g(j,N){return ON({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,EN(),AD].filter((O)=>!!O),issueData:{code:k.invalid_return_type,returnTypeError:N}})}let U={errorMap:$.common.contextualErrorMap},I=$.data;if(this._def.returns instanceof l4){let j=this;return a_(async function(...N){let O=new O$([]),A=await j._def.args.parseAsync(N,U).catch((W)=>{throw O.addIssue(D(N,W)),O}),L=await Reflect.apply(I,this,A);return await j._def.returns._def.type.parseAsync(L,U).catch((W)=>{throw O.addIssue(g(L,W)),O})})}else{let j=this;return a_(function(...N){let O=j._def.args.safeParse(N,U);if(!O.success)throw new O$([D(N,O.error)]);let A=Reflect.apply(I,this,O.data),L=j._def.returns.safeParse(A,U);if(!L.success)throw new O$([g(A,L.error)]);return L.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(..._){return new ED({...this._def,args:d$.create(_).rest(m6.create())})}returns(_){return new ED({...this._def,returns:_})}implement(_){return this.parse(_)}strictImplement(_){return this.parse(_)}static create(_,$,D){return new ED({args:_?_:d$.create([]).rest(m6.create()),returns:$||m6.create(),typeName:i.ZodFunction,...p(D)})}}class WD extends __{get schema(){return this._def.getter()}_parse(_){let{ctx:$}=this._processInputParams(_);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}}WD.create=(_,$)=>{return new WD({getter:_,typeName:i.ZodLazy,...p($)})};class XD extends __{_parse(_){if(_.data!==this._def.value){let $=this._getOrReturnCtx(_);return u($,{received:$.data,code:k.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:_.data}}get value(){return this._def.value}}XD.create=(_,$)=>{return new XD({value:_,typeName:i.ZodLiteral,...p($)})};function M8(_,$){return new t6({values:_,typeName:i.ZodEnum,...p($)})}class t6 extends __{_parse(_){if(typeof _.data!=="string"){let $=this._getOrReturnCtx(_),D=this._def.values;return u($,{expected:g_.joinValues(D),received:$.parsedType,code:k.invalid_type}),m}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(_.data)){let $=this._getOrReturnCtx(_),D=this._def.values;return u($,{received:$.data,code:k.invalid_enum_value,options:D}),m}return a_(_.data)}get options(){return this._def.values}get enum(){let _={};for(let $ of this._def.values)_[$]=$;return _}get Values(){let _={};for(let $ of this._def.values)_[$]=$;return _}get Enum(){let _={};for(let $ of this._def.values)_[$]=$;return _}extract(_,$=this._def){return t6.create(_,{...this._def,...$})}exclude(_,$=this._def){return t6.create(this.options.filter((D)=>!_.includes(D)),{...this._def,...$})}}t6.create=M8;class GD extends __{_parse(_){let $=g_.getValidEnumValues(this._def.values),D=this._getOrReturnCtx(_);if(D.parsedType!==y.string&&D.parsedType!==y.number){let g=g_.objectValues($);return u(D,{expected:g_.joinValues(g),received:D.parsedType,code:k.invalid_type}),m}if(!this._cache)this._cache=new Set(g_.getValidEnumValues(this._def.values));if(!this._cache.has(_.data)){let g=g_.objectValues($);return u(D,{received:D.data,code:k.invalid_enum_value,options:g}),m}return a_(_.data)}get enum(){return this._def.values}}GD.create=(_,$)=>{return new GD({values:_,typeName:i.ZodNativeEnum,...p($)})};class l4 extends __{unwrap(){return this._def.type}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.promise&&$.common.async===!1)return u($,{code:k.invalid_type,expected:y.promise,received:$.parsedType}),m;let D=$.parsedType===y.promise?$.data:Promise.resolve($.data);return a_(D.then((g)=>{return this._def.type.parseAsync(g,{path:$.path,errorMap:$.common.contextualErrorMap})}))}}l4.create=(_,$)=>{return new l4({type:_,typeName:i.ZodPromise,...p($)})};class G$ extends __{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===i.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(_){let{status:$,ctx:D}=this._processInputParams(_),g=this._def.effect||null,U={addIssue:(I)=>{if(u(D,I),I.fatal)$.abort();else $.dirty()},get path(){return D.path}};if(U.addIssue=U.addIssue.bind(U),g.type==="preprocess"){let I=g.transform(D.data,U);if(D.common.async)return Promise.resolve(I).then(async(j)=>{if($.value==="aborted")return m;let N=await this._def.schema._parseAsync({data:j,path:D.path,parent:D});if(N.status==="aborted")return m;if(N.status==="dirty")return ND(N.value);if($.value==="dirty")return ND(N.value);return N});else{if($.value==="aborted")return m;let j=this._def.schema._parseSync({data:I,path:D.path,parent:D});if(j.status==="aborted")return m;if(j.status==="dirty")return ND(j.value);if($.value==="dirty")return ND(j.value);return j}}if(g.type==="refinement"){let I=(j)=>{let N=g.refinement(j,U);if(D.common.async)return Promise.resolve(N);if(N instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return j};if(D.common.async===!1){let j=this._def.schema._parseSync({data:D.data,path:D.path,parent:D});if(j.status==="aborted")return m;if(j.status==="dirty")$.dirty();return I(j.value),{status:$.value,value:j.value}}else return this._def.schema._parseAsync({data:D.data,path:D.path,parent:D}).then((j)=>{if(j.status==="aborted")return m;if(j.status==="dirty")$.dirty();return I(j.value).then(()=>{return{status:$.value,value:j.value}})})}if(g.type==="transform")if(D.common.async===!1){let I=this._def.schema._parseSync({data:D.data,path:D.path,parent:D});if(!n4(I))return m;let j=g.transform(I.value,U);if(j instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:$.value,value:j}}else return this._def.schema._parseAsync({data:D.data,path:D.path,parent:D}).then((I)=>{if(!n4(I))return m;return Promise.resolve(g.transform(I.value,U)).then((j)=>({status:$.value,value:j}))});g_.assertNever(g)}}G$.create=(_,$,D)=>{return new G$({schema:_,typeName:i.ZodEffects,effect:$,...p(D)})};G$.createWithPreprocess=(_,$,D)=>{return new G$({schema:$,effect:{type:"preprocess",transform:_},typeName:i.ZodEffects,...p(D)})};class Z$ extends __{_parse(_){if(this._getType(_)===y.undefined)return a_(void 0);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}Z$.create=(_,$)=>{return new Z$({innerType:_,typeName:i.ZodOptional,...p($)})};class z6 extends __{_parse(_){if(this._getType(_)===y.null)return a_(null);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}z6.create=(_,$)=>{return new z6({innerType:_,typeName:i.ZodNullable,...p($)})};class RD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=$.data;if($.parsedType===y.undefined)D=this._def.defaultValue();return this._def.innerType._parse({data:D,path:$.path,parent:$})}removeDefault(){return this._def.innerType}}RD.create=(_,$)=>{return new RD({innerType:_,typeName:i.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...p($)})};class YD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D={...$,common:{...$.common,issues:[]}},g=this._def.innerType._parse({data:D.data,path:D.path,parent:{...D}});if(Sg(g))return g.then((U)=>{return{status:"valid",value:U.status==="valid"?U.value:this._def.catchValue({get error(){return new O$(D.common.issues)},input:D.data})}});else return{status:"valid",value:g.status==="valid"?g.value:this._def.catchValue({get error(){return new O$(D.common.issues)},input:D.data})}}removeCatch(){return this._def.innerType}}YD.create=(_,$)=>{return new YD({innerType:_,typeName:i.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...p($)})};class Yg extends __{_parse(_){if(this._getType(_)!==y.nan){let D=this._getOrReturnCtx(_);return u(D,{code:k.invalid_type,expected:y.nan,received:D.parsedType}),m}return{status:"valid",value:_.data}}}Yg.create=(_)=>{return new Yg({typeName:i.ZodNaN,...p(_)})};var PH=Symbol("zod_brand");class PN extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=$.data;return this._def.type._parse({data:D,path:$.path,parent:$})}unwrap(){return this._def.type}}class Qg extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.common.async)return(async()=>{let U=await this._def.in._parseAsync({data:D.data,path:D.path,parent:D});if(U.status==="aborted")return m;if(U.status==="dirty")return $.dirty(),ND(U.value);else return this._def.out._parseAsync({data:U.value,path:D.path,parent:D})})();else{let g=this._def.in._parseSync({data:D.data,path:D.path,parent:D});if(g.status==="aborted")return m;if(g.status==="dirty")return $.dirty(),{status:"dirty",value:g.value};else return this._def.out._parseSync({data:g.value,path:D.path,parent:D})}}static create(_,$){return new Qg({in:_,out:$,typeName:i.ZodPipeline})}}class QD extends __{_parse(_){let $=this._def.innerType._parse(_),D=(g)=>{if(n4(g))g.value=Object.freeze(g.value);return g};return Sg($)?$.then((g)=>D(g)):D($)}unwrap(){return this._def.innerType}}QD.create=(_,$)=>{return new QD({innerType:_,typeName:i.ZodReadonly,...p($)})};function S8(_,$){let D=typeof _==="function"?_($):typeof _==="string"?{message:_}:_;return typeof D==="string"?{message:D}:D}function Z8(_,$={},D){if(_)return m4.create().superRefine((g,U)=>{let I=_(g);if(I instanceof Promise)return I.then((j)=>{if(!j){let N=S8($,g),O=N.fatal??D??!0;U.addIssue({code:"custom",...N,fatal:O})}});if(!I){let j=S8($,g),N=j.fatal??D??!0;U.addIssue({code:"custom",...j,fatal:N})}return});return m4.create()}var zH={object:b_.lazycreate},i;(function(_){_.ZodString="ZodString",_.ZodNumber="ZodNumber",_.ZodNaN="ZodNaN",_.ZodBigInt="ZodBigInt",_.ZodBoolean="ZodBoolean",_.ZodDate="ZodDate",_.ZodSymbol="ZodSymbol",_.ZodUndefined="ZodUndefined",_.ZodNull="ZodNull",_.ZodAny="ZodAny",_.ZodUnknown="ZodUnknown",_.ZodNever="ZodNever",_.ZodVoid="ZodVoid",_.ZodArray="ZodArray",_.ZodObject="ZodObject",_.ZodUnion="ZodUnion",_.ZodDiscriminatedUnion="ZodDiscriminatedUnion",_.ZodIntersection="ZodIntersection",_.ZodTuple="ZodTuple",_.ZodRecord="ZodRecord",_.ZodMap="ZodMap",_.ZodSet="ZodSet",_.ZodFunction="ZodFunction",_.ZodLazy="ZodLazy",_.ZodLiteral="ZodLiteral",_.ZodEnum="ZodEnum",_.ZodEffects="ZodEffects",_.ZodNativeEnum="ZodNativeEnum",_.ZodOptional="ZodOptional",_.ZodNullable="ZodNullable",_.ZodDefault="ZodDefault",_.ZodCatch="ZodCatch",_.ZodPromise="ZodPromise",_.ZodBranded="ZodBranded",_.ZodPipeline="ZodPipeline",_.ZodReadonly="ZodReadonly"})(i||(i={}));var SH=(_,$={message:`Input not instance of ${_.name}`})=>Z8((D)=>D instanceof _,$),b8=K$.create,H8=i6.create,WH=Yg.create,XH=l6.create,k8=LD.create,GH=d4.create,RH=Wg.create,YH=JD.create,QH=PD.create,TH=m4.create,BH=m6.create,qH=n$.create,VH=Xg.create,FH=M$.create,KH=b_.create,MH=b_.strictCreate,ZH=zD.create,bH=JN.create,HH=SD.create,kH=d$.create,CH=Gg.create,vH=Rg.create,fH=i4.create,wH=ED.create,rH=WD.create,uH=XD.create,xH=t6.create,yH=GD.create,hH=l4.create,W8=G$.create,cH=Z$.create,nH=z6.create,dH=G$.createWithPreprocess,mH=Qg.create,iH=()=>b8().optional(),lH=()=>H8().optional(),tH=()=>k8().optional(),oH={string:(_)=>K$.create({..._,coerce:!0}),number:(_)=>i6.create({..._,coerce:!0}),boolean:(_)=>LD.create({..._,coerce:!0}),bigint:(_)=>l6.create({..._,coerce:!0}),date:(_)=>d4.create({..._,coerce:!0})},pH=m;var x={actorRef:"hasna.actor_ref.v1",resourceRef:"hasna.resource_ref.v1",evidenceRef:"hasna.evidence_ref.v1",workRun:"hasna.work_run.v1",taskToPrProjection:"hasna.task_to_pr_projection.v1",decisionEnvelope:"hasna.decision_envelope.v1",costEstimate:"hasna.cost_estimate.v1",capabilityCard:"hasna.capability_card.v1",providerLiveModeStandard:"hasna.provider_live_mode_standard.v1",contextPack:"hasna.context_pack.v1",integrationRef:"hasna.integration_ref.v1",projectManifest:"hasna.project_manifest.v1",projectPanel:"hasna.project_panel.v1",projectSnapshot:"hasna.project_snapshot.v1",renderManifest:"hasna.render_manifest.v1",agentTrajectory:"hasna.agent_trajectory.v1",validationPlan:"hasna.validation_plan.v1",proofBundle:"hasna.proof_bundle.v1",scaffoldManifest:"hasna.scaffold_manifest.v1",scaffoldInstallRecord:"hasna.scaffold_install_record.v1",appCloudManifest:"hasna.app_cloud_manifest.v1",noCloudEvidencePack:"hasna.no_cloud_evidence_pack.v1",secureLocalStorePolicy:"hasna.secure_local_store_policy.v1",serviceContract:"hasna.service_contract.v1",commsEventEnvelope:"hasna.comms_event_envelope.v1",commsChannelMetadata:"hasna.comms_channel_metadata.v1",commsMessageMetadata:"hasna.comms_message_metadata.v1",app:"hasna.app.v1",release:"hasna.release.v1",rolloutRecord:"hasna.rollout_record.v1",announcement:"hasna.announcement.v1",audience:"hasna.audience.v1"},iP=E.string().regex(/^hasna\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*\.v[0-9]+$/),F_=E.string().datetime(),t=E.string().trim().min(1),H$=t.refine((_)=>_.startsWith("artifact://")||_.startsWith("repo://")||_.startsWith("project://")||_.startsWith("dashboard://")||_.startsWith("render://")||_.startsWith("integration://")||_.startsWith("task://")||_.startsWith("todo://")||_.startsWith("file://")||_.startsWith("files://")||_.startsWith("mailery://")||_.startsWith("conversation://")||_.startsWith("knowledge://")||_.startsWith("memento://")||_.startsWith("https://")||_.startsWith("http://")||_.startsWith("git+https://"),"URI must use artifact://, repo://, project://, dashboard://, render://, integration://, task://, todo://, file://, files://, mailery://, conversation://, knowledge://, memento://, http(s)://, or git+https://"),C8=E.string().regex(/^[a-fA-F0-9]{64}$/),v8=E.string().regex(/^(sha256:)?[a-fA-F0-9]{64}$/),o6=E.record(E.unknown()),qD=E.array(E.string().min(1)).default([]),t4=F_.nullable().optional(),eH=new Set(["succeeded","failed","cancelled","blocked","skipped"]),e4=E.enum(["pending","running","succeeded","failed","cancelled","blocked","skipped","unknown"]);function L_(_){return E.object({schema:E.literal(_),id:E.string().min(1),createdAt:F_,updatedAt:t4,metadata:o6.optional()}).strict()}var Kd=E.object({schema:iP,id:E.string().min(1),createdAt:F_,updatedAt:t4,metadata:o6.optional()}).strict(),f8=E.enum(["agent","human","service","model","workflow","system"]),aH=L_(x.actorRef).extend({kind:f8,name:E.string().min(1).optional(),provider:E.string().min(1).optional(),accountId:E.string().min(1).optional(),machineId:E.string().min(1).optional(),capabilities:E.array(E.string().min(1)).default([])}).strict(),m$=E.object({kind:f8,id:E.string().min(1),name:E.string().min(1).optional(),provider:E.string().min(1).optional(),accountId:E.string().min(1).optional(),machineId:E.string().min(1).optional()}).strict(),w8=E.enum(["task","project","repo","run","loop","workflow","action","event","integration","session","machine","model","tool","file","document","url","artifact","knowledge","email","conversation","dashboard","render","panel","report","commit","branch","pull_request","issue","comment","verification","finding","context_pack","proof_bundle","memento","eval","budget","cost","alert","incident","app","release","rollout","announcement","audience","feedback","unknown"]),sH=L_(x.resourceRef).extend({kind:w8,name:E.string().min(1).optional(),uri:H$.optional(),externalId:t.optional(),sourcePackage:t.optional(),tags:qD}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.externalId&&_.sourcePackage))$.addIssue({code:E.ZodIssueCode.custom,message:"Resource refs require uri or both sourcePackage and externalId",path:["uri"]})}),s=E.object({kind:w8,id:E.string().min(1),name:E.string().min(1).optional(),uri:H$.optional(),externalId:t.optional(),sourcePackage:t.optional(),tags:qD}).strict().superRefine((_,$)=>{if(!_.uri&&Boolean(_.externalId)!==Boolean(_.sourcePackage))$.addIssue({code:E.ZodIssueCode.custom,message:"Resource pointers with external package locators require both sourcePackage and externalId",path:_.externalId?["sourcePackage"]:["externalId"]})}),lP=E.enum(["file","command_output","screenshot","log","diff","report","artifact","url","video","har","test_result","metric","trace","other"]),_k=E.enum(["none","partial","full","unknown"]),$k=L_(x.evidenceRef).extend({kind:lP,uri:H$,sha256:C8.optional(),summary:E.string().min(1).optional(),contentType:E.string().min(1).optional(),sizeBytes:E.number().int().nonnegative().optional(),redaction:_k.default("unknown"),producer:m$.optional(),resourceRefs:E.array(s).default([]),tags:qD}).strict(),T_=E.object({id:E.string().min(1),kind:lP.optional(),uri:H$.optional(),sha256:C8.optional(),summary:E.string().min(1).optional()}).strict(),Tg=L_(x.costEstimate).extend({currency:E.string().regex(/^[A-Z]{3}$/).default("USD"),amountMicros:E.number().int().nonnegative(),provider:E.string().min(1).optional(),model:E.string().min(1).optional(),accountId:E.string().min(1).optional(),promptTokens:E.number().int().nonnegative().optional(),completionTokens:E.number().int().nonnegative().optional(),totalTokens:E.number().int().nonnegative().optional(),basis:E.enum(["actual","estimated","budget","limit"]).default("estimated"),resourceRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(_.promptTokens!==void 0&&_.completionTokens!==void 0&&_.totalTokens!==void 0&&_.totalTokens!==_.promptTokens+_.completionTokens)$.addIssue({code:E.ZodIssueCode.custom,message:"totalTokens must equal promptTokens plus completionTokens when all are present",path:["totalTokens"]})}),Dk=E.enum(["allowed","denied","warned","approval_required","selected","skipped","unknown"]),r8=L_(x.decisionEnvelope).extend({decisionType:E.enum(["guardrail","model_route","tool_select","budget","secret_access","approval","policy","other"]),status:Dk,actor:m$.optional(),traceId:E.string().min(1).optional(),inputHash:v8.optional(),policyBundleId:E.string().min(1).optional(),selected:E.array(s).default([]),skipped:E.array(s).default([]),reason:E.string().min(1),obligations:E.array(E.string().min(1)).default([]),redactions:E.array(E.string().min(1)).default([]),costEstimate:Tg.optional(),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.status==="selected"&&_.selected.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Selected decisions require at least one selected resource",path:["selected"]});if(_.status==="skipped"&&_.skipped.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Skipped decisions require at least one skipped resource",path:["skipped"]});if(_.status==="denied"){if(_.selected.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Denied decisions cannot include selected resources",path:["selected"]});if(!_.policyBundleId&&_.evidenceRefs.length===0&&_.obligations.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Denied decisions require policy, evidence, or obligations",path:["policyBundleId"]})}if(_.status==="approval_required"&&_.obligations.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Approval-required decisions require actionable obligations",path:["obligations"]})}),Uk=L_(x.capabilityCard).extend({kind:E.enum(["model","tool","machine","agent","lane","connector","service"]),name:E.string().min(1),version:E.string().min(1).optional(),status:E.enum(["available","unavailable","degraded","unknown"]).default("unknown"),capabilities:E.array(E.string().min(1)).default([]),limitations:E.array(E.string().min(1)).default([]),riskLevel:E.enum(["low","medium","high","critical","unknown"]).default("unknown"),costEstimate:Tg.optional(),evidenceRefs:E.array(T_).default([])}).strict(),TD=E.enum(["mock","fixture","sandbox","read_only_live","live_mutating"]),gk=E.enum(["none","read_only","external_notification","external_mutation","money_movement","dns_or_domain_change","bulk_message_or_call","legal_or_filing","compute_or_infra_mutation","irreversible"]),Ik=E.object({refName:t,requiredForModes:E.array(TD).min(1),allowedSecretInputs:E.array(E.enum(["credential_ref","lease_ref"])).min(1).default(["credential_ref"]),failClosedDiagnostic:t,revocationCheck:E.boolean().default(!0)}).strict(),jk=E.object({operation:t,supportedModes:E.array(TD).min(1),sideEffectClass:gk,requiresApproval:E.boolean().default(!1),requiresIdempotencyKey:E.boolean().default(!1),requiresSandboxEvidence:E.boolean().default(!1),requiresRollbackOrRevocation:E.boolean().default(!1),rollbackOrRevocation:t.optional(),noSideEffectSmoke:t.optional(),reconciliation:t.optional()}).strict().superRefine((_,$)=>{if(_.supportedModes.includes("live_mutating")){if(_.sideEffectClass==="none"||_.sideEffectClass==="read_only")$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations must declare a side-effecting class",path:["sideEffectClass"]});if(!_.requiresApproval)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require approval",path:["requiresApproval"]});if(!_.requiresIdempotencyKey)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require idempotency keys",path:["requiresIdempotencyKey"]});if(!_.requiresSandboxEvidence)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require sandbox evidence before live proof",path:["requiresSandboxEvidence"]});if(!_.requiresRollbackOrRevocation||!_.rollbackOrRevocation)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require rollback or revocation instructions",path:["rollbackOrRevocation"]});if(!_.reconciliation)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating operations require reconciliation behavior",path:["reconciliation"]})}}),Nk=E.object({providerId:t,appId:t,adapterId:t,ownerPackage:t,modes:E.array(TD).min(1),defaultMode:TD,credentialRequirements:E.array(Ik).default([]),operations:E.array(jk).min(1),rateLimitPosture:t,costPosture:t.optional(),auditEvents:E.array(t).default([]),redactionRules:E.array(t).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(!_.modes.includes(_.defaultMode))$.addIssue({code:E.ZodIssueCode.custom,message:"defaultMode must be one of modes",path:["defaultMode"]});let D=new Set(_.operations.flatMap((g)=>g.supportedModes));for(let g of D)if(!_.modes.includes(g))$.addIssue({code:E.ZodIssueCode.custom,message:`operation mode ${g} is not declared in provider modes`,path:["operations"]});if(D.has("live_mutating")){if(!_.credentialRequirements.some((U)=>U.requiredForModes.includes("live_mutating")))$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating providers require at least one live credential reference requirement",path:["credentialRequirements"]});if(_.auditEvents.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"live_mutating providers require audit events",path:["auditEvents"]})}}),Ek=E.object({appId:t,repo:t,priority:E.enum(["p0","p1","p2"]).default("p1"),requiredEvidence:E.array(t).min(1),firstOperations:E.array(t).min(1),blockedUntil:E.array(t).default([])}).strict(),Ok=L_(x.providerLiveModeStandard).extend({name:t,version:t,modes:E.array(TD).refine((_)=>["mock","fixture","sandbox","read_only_live","live_mutating"].every(($)=>_.includes($)),"provider live-mode standard must include every canonical provider mode"),requiredCapabilityFields:E.array(t).min(1),liveMutationGate:E.object({requiredMode:E.literal("live_mutating"),requiredChecks:E.array(t).min(1),forbiddenBypassSignals:E.array(t).min(1),disabledLiveSmoke:t}).strict(),noSideEffectSmoke:E.object({requiredForModes:E.array(TD).min(1),commandEvidence:E.array(t).min(1),secretOutputScan:E.boolean().default(!0)}).strict(),credentialPolicy:E.object({acceptedInputs:E.array(E.enum(["credential_ref","lease_ref"])).min(1),rawSecretInputsAllowed:E.literal(!1),missingCredentialBehavior:E.literal("fail_closed"),revocationCheckRequired:E.boolean().default(!0)}).strict(),operationCards:E.array(Nk).min(1),firstAdoptionTargets:E.array(Ek).min(1),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let D=new Set(_.firstAdoptionTargets.map((U)=>U.appId)),g=new Set(_.operationCards.map((U)=>U.appId));for(let U of D)if(!g.has(U))$.addIssue({code:E.ZodIssueCode.custom,message:`first adoption target ${U} requires a provider capability card`,path:["firstAdoptionTargets"]})}),Ak=E.object({id:E.string().min(1),title:E.string().min(1).optional(),summary:E.string().min(1),text:E.string().optional(),tokens:E.number().int().nonnegative().optional(),source:T_,resourceRefs:E.array(s).default([])}).strict(),u8=L_(x.contextPack).extend({objective:E.string().min(1),budget:E.object({maxTokens:E.number().int().positive().optional(),maxBytes:E.number().int().positive().optional()}).strict().optional(),items:E.array(Ak).default([]),citations:E.array(T_).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown"),permissions:E.array(E.string().min(1)).default([]),redactions:E.array(E.string().min(1)).default([]),conflicts:E.array(E.string().min(1)).default([]),uncertainty:E.string().min(1).optional()}).strict(),W$=t.refine((_)=>!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."),"Project paths must be relative and cannot contain parent-directory segments"),o4=E.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Project slugs must be lowercase dashed identifiers"),Lk=E.enum(["public","internal","private","sensitive"]),Jk=E.enum(["draft","active","paused","archived"]),tP=E.enum(["todos","files","mailery","conversations","knowledge","mementos","reports","actions","render","contracts","custom"]),x8=L_(x.integrationRef).extend({kind:tP,name:E.string().min(1),projectId:o4.optional(),sourcePackage:t.optional(),externalId:t.optional(),uri:H$.optional(),enabled:E.boolean().default(!0),readOnly:E.boolean().default(!0),capabilities:E.array(E.string().min(1)).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown"),resourceRef:s.optional(),evidenceRefs:E.array(T_).default([]),config:o6.optional()}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.sourcePackage&&_.externalId)&&!_.resourceRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Integration refs require uri, resourceRef, or both sourcePackage and externalId",path:["uri"]})}),Pk=E.object({schemaRoot:W$.default(".hasna/project"),dashboardManifest:W$.default(".hasna/project/dashboard.render.json"),snapshotsDir:W$.default(".hasna/project/snapshots"),documentsDir:W$.default("documents"),reportsDir:W$.default("reports"),evidenceDir:W$.default(".hasna/project/evidence"),privateDir:W$.default(".hasna/project/private")}).strict(),zk=L_(x.projectManifest).extend({projectId:o4,slug:o4,name:E.string().min(1),summary:E.string().min(1).optional(),status:Jk.default("active"),classification:Lk.default("private"),owner:m$.optional(),layout:Pk.default({}),integrations:E.array(x8).default([]),renderManifests:E.array(s).default([]),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),tags:qD}).strict().superRefine((_,$)=>{let D=new Set,g=new Set;if(_.projectId!==_.slug)$.addIssue({code:E.ZodIssueCode.custom,message:"projectId and slug must match for canonical project manifests",path:["slug"]});for(let[U,I]of _.integrations.entries()){if(D.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project manifest integration ids must be unique",path:["integrations",U,"id"]});if(D.add(I.id),I.projectId&&I.projectId!==_.projectId)$.addIssue({code:E.ZodIssueCode.custom,message:"Integration projectId must match the manifest projectId",path:["integrations",U,"projectId"]})}for(let[U,I]of _.renderManifests.entries()){if(I.kind!=="render")$.addIssue({code:E.ZodIssueCode.custom,message:"Project renderManifests must use resource kind render",path:["renderManifests",U,"kind"]});if(g.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project renderManifest refs must be unique",path:["renderManifests",U,"id"]});g.add(I.id)}}),Sk=E.enum(["local","package","provider","url"]),oP=E.object({id:E.string().min(1),kind:Sk,specifier:E.string().min(1),path:W$.optional(),packageName:E.string().min(1).optional(),uri:H$.optional(),provider:tP.optional(),schemaId:iP.optional(),integrity:v8.optional(),resourceRef:s.optional(),optional:E.boolean().default(!1)}).strict().superRefine((_,$)=>{if(_.kind==="local"&&!_.path)$.addIssue({code:E.ZodIssueCode.custom,message:"Local render imports require path",path:["path"]});if(_.kind==="package"&&!_.packageName)$.addIssue({code:E.ZodIssueCode.custom,message:"Package render imports require packageName",path:["packageName"]});if(_.kind==="provider"&&!_.provider)$.addIssue({code:E.ZodIssueCode.custom,message:"Provider render imports require provider",path:["provider"]});if(_.kind==="url"&&!_.uri)$.addIssue({code:E.ZodIssueCode.custom,message:"URL render imports require uri",path:["uri"]})}),Wk=E.enum(["dashboard","canvas","panel","report","document","custom"]),Xk=E.object({id:E.string().min(1),title:E.string().min(1),kind:Wk,default:E.boolean().default(!1),entry:W$.optional(),imports:E.array(oP).default([]),panelRefs:E.array(s).default([]),dataRefs:E.array(s).default([]),layout:o6.optional()}).strict(),Gk=L_(x.renderManifest).extend({projectId:o4,name:E.string().min(1),version:E.string().min(1),manifestPath:W$.default(".hasna/project/dashboard.render.json"),renderer:E.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),views:E.array(Xk).min(1),imports:E.array(oP).default([]),theme:o6.optional(),compatibility:E.object({minProjectsVersion:E.string().min(1).optional(),minContractsVersion:E.string().min(1).optional()}).strict().optional(),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let D=_.views.filter((I)=>I.default),g=new Set,U=new Set;if(D.length>1)$.addIssue({code:E.ZodIssueCode.custom,message:"Render manifests can have at most one default view",path:["views"]});for(let[I,j]of _.imports.entries()){if(U.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Render manifest import ids must be unique",path:["imports",I,"id"]});U.add(j.id)}for(let[I,j]of _.views.entries()){if(g.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Render manifest view ids must be unique",path:["views",I,"id"]});g.add(j.id);let N=new Set;for(let[O,A]of j.imports.entries()){if(N.has(A.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Render view import ids must be unique",path:["views",I,"imports",O,"id"]});N.add(A.id)}for(let[O,A]of j.panelRefs.entries())if(A.kind!=="panel")$.addIssue({code:E.ZodIssueCode.custom,message:"Render view panelRefs must use resource kind panel",path:["views",I,"panelRefs",O,"kind"]})}}),Rk=E.enum(["ready","empty","loading","error","auth_required","unavailable","stale"]),Yk=E.enum(["overview","tasks","files","mailery","conversations","knowledge","mementos","reports","actions","timeline","risks","documents","custom"]),Qk=E.object({id:E.string().min(1),label:E.string().min(1),value:E.union([E.string(),E.number(),E.boolean()]),unit:E.string().min(1).optional(),status:E.enum(["good","warning","critical","unknown"]).default("unknown"),resourceRefs:E.array(s).default([])}).strict(),Tk=E.object({id:E.string().min(1),title:E.string().min(1),summary:E.string().min(1).optional(),status:E.string().min(1).optional(),priority:E.enum(["low","medium","high","critical","unknown"]).default("unknown"),timestamp:F_.optional(),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),metadata:o6.optional()}).strict(),Bk=E.object({renderer:E.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),title:E.string().min(1).optional(),entry:W$.optional(),imports:E.array(oP).default([]),spec:o6.default({})}).strict(),y8=L_(x.projectPanel).extend({projectId:o4,provider:E.object({kind:tP,id:E.string().min(1),name:E.string().min(1).optional(),sourcePackage:t.optional(),externalId:t.optional()}).strict(),kind:Yk,title:E.string().min(1),summary:E.string().min(1).optional(),state:Rk.default("ready"),stateReason:E.string().min(1).optional(),generatedAt:F_,freshness:E.enum(["fresh","stale","unknown"]).default("unknown"),metrics:E.array(Qk).default([]),items:E.array(Tk).default([]),actions:E.array(s).default([]),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),renderFragment:Bk.optional(),warnings:E.array(E.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set(["error","auth_required","unavailable","stale"]),g=new Set,U=new Set;if(D.has(_.state)&&!_.stateReason)$.addIssue({code:E.ZodIssueCode.custom,message:"Non-ready provider states require stateReason",path:["stateReason"]});if(_.state==="ready"&&_.metrics.length===0&&_.items.length===0&&!_.renderFragment)$.addIssue({code:E.ZodIssueCode.custom,message:"Ready panels require metrics, items, or a renderFragment; use state=empty for empty panels",path:["state"]});for(let[I,j]of _.metrics.entries()){if(g.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project panel metric ids must be unique",path:["metrics",I,"id"]});g.add(j.id)}for(let[I,j]of _.items.entries()){if(U.has(j.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project panel item ids must be unique",path:["items",I,"id"]});U.add(j.id)}for(let[I,j]of _.actions.entries())if(j.kind!=="action")$.addIssue({code:E.ZodIssueCode.custom,message:"Project panel actions must use resource kind action",path:["actions",I,"kind"]})}),qk=L_(x.projectSnapshot).extend({projectId:o4,generatedAt:F_,status:e4.default("unknown"),manifestRef:s,renderManifestRef:s.optional(),panels:E.array(y8).default([]),contextPacks:E.array(u8).default([]),proofBundleRefs:E.array(s).default([]),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),warnings:E.array(E.string().min(1)).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{let D=new Set,g=new Set;if(_.manifestRef.kind!=="project")$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot manifestRef must use resource kind project",path:["manifestRef","kind"]});if(_.renderManifestRef&&_.renderManifestRef.kind!=="render")$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot renderManifestRef must use resource kind render",path:["renderManifestRef","kind"]});for(let[U,I]of _.proofBundleRefs.entries())if(I.kind!=="proof_bundle")$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot proofBundleRefs must use resource kind proof_bundle",path:["proofBundleRefs",U,"kind"]});for(let[U,I]of _.panels.entries()){if(I.projectId!==_.projectId)$.addIssue({code:E.ZodIssueCode.custom,message:"Panel projectId must match snapshot projectId",path:["panels",U,"projectId"]});if(D.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot panel ids must be unique",path:["panels",U,"id"]});D.add(I.id)}for(let[U,I]of _.contextPacks.entries()){if(g.has(I.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Project snapshot context pack ids must be unique",path:["contextPacks",U,"id"]});g.add(I.id)}}),h8=E.object({id:E.string().min(1),kind:E.enum(["command","test","typecheck","lint","eval","security","review","deploy","smoke","manual","other"]),required:E.boolean().default(!0),command:E.string().min(1).optional(),expected:E.string().min(1).optional(),timeoutMs:E.number().int().positive().optional(),resourceRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(new Set(["command","test","typecheck","lint","smoke","eval"]).has(_.kind)&&!_.command&&!_.expected)$.addIssue({code:E.ZodIssueCode.custom,message:"Actionable validation checks require command or expected",path:["command"]})}),Vk=L_(x.validationPlan).extend({objective:E.string().min(1),subject:s.optional(),checks:E.array(h8).min(1),verifier:m$.optional(),requiredEvidenceKinds:E.array(lP).default([])}).strict(),Fk=E.enum(["open_source","internal_app","platform","app","agent","content","overlay","other"]),Kk=E.enum(["draft","active","deprecated","archived"]),Mk=E.enum(["cli","mcp","library","sdk","rest_api","dashboard","database","auth","billing","worker","daemon","native","browser_extension","ai_provider","media_pipeline","data_pipeline","tests","ci","deployment","docs","other"]),Zk=E.object({key:E.string().regex(/^[A-Z][A-Z0-9_]*$/),description:E.string().min(1),required:E.boolean().default(!1),["secret"]:E.boolean().default(!1),group:E.string().min(1).optional(),default:E.string().optional()}).strict().superRefine((_,$)=>{if(_.secret&&_.default!==void 0)$.addIssue({code:E.ZodIssueCode.custom,message:"Secret scaffold env vars cannot include defaults",path:["default"]})}),bk=E.object({name:E.string().min(1),command:E.string().min(1),description:E.string().min(1).optional(),required:E.boolean().default(!1)}).strict(),Hk=E.object({packageManager:E.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),languages:E.array(E.string().min(1)).default([]),requiredFiles:E.array(E.string().min(1)).default([]),requiredDirectories:E.array(E.string().min(1)).default([]),optionalDirectories:E.array(E.string().min(1)).default([])}).strict(),kk=L_(x.scaffoldManifest).extend({name:E.string().min(1),version:E.string().min(1),summary:E.string().min(1),type:Fk,status:Kk.default("draft"),capabilities:E.array(Mk).default([]),techStack:E.array(E.string().min(1)).default([]),tags:qD,source:s.optional(),output:Hk,env:E.array(Zk).default([]),scripts:E.array(bk).default([]),validationChecks:E.array(h8).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.source?.uri?.startsWith("file://"))$.addIssue({code:E.ZodIssueCode.custom,message:"Public scaffold manifest source refs cannot use local file:// URIs",path:["source","uri"]});if(_.status==="active"&&_.validationChecks.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Active scaffold manifests require validation checks",path:["validationChecks"]});if(_.status==="active"&&_.output.requiredFiles.length===0&&_.output.requiredDirectories.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Active scaffold manifests require at least one required file or directory",path:["output"]})}),Ck=E.enum(["installed","failed","cancelled","partial","unknown"]),vk=L_(x.scaffoldInstallRecord).extend({scaffoldId:E.string().min(1),scaffoldVersion:E.string().min(1).optional(),manifestRef:s.optional(),target:s,status:Ck,installedAt:F_.optional(),installer:m$.optional(),packageManager:E.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),options:o6.optional(),generatedFiles:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),proofBundleRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(_.status==="installed"&&!_.installedAt)$.addIssue({code:E.ZodIssueCode.custom,message:"Installed scaffold records require installedAt",path:["installedAt"]});if(_.status==="installed"&&_.generatedFiles.length===0&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Installed scaffold records require generated files, evidence, or proof bundle refs",path:["generatedFiles"]});if((_.status==="failed"||_.status==="partial")&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed or partial scaffold records require evidence or proof bundle refs",path:["evidenceRefs"]})}),BD=E.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"App ids must be lowercase dashed identifiers"),pP=E.string().regex(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,"Must be a valid npm package name"),c8=E.string().regex(/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,"Must be a semver version"),fk=E.string().regex(/^[0-9a-f]{7,40}$/,"Must be a lowercase git sha (7-40 hex chars)"),wk=t.refine((_)=>_.startsWith("https://github.com/")||_.startsWith("git+https://github.com/"),"GitHub URLs must start with https://github.com/ or git+https://github.com/"),rk=E.enum(["active","stub","deprecated","archived"]),uk=E.enum(["stable","beta","canary","internal"]),xk=E.object({transport:E.enum(["http","stdio"]).default("http"),bin:E.string().min(1).optional(),url:H$.optional()}).strict(),yk=E.object({healthPath:E.string().min(1).default("/health"),port:E.number().int().positive().optional(),baseUrl:H$.optional()}).strict(),hk=E.object({bins:E.array(E.string().min(1)).default([]),mcp:xk.optional(),http:yk.optional()}).strict(),ck=L_(x.app).extend({appId:BD,npmName:pP,repoFolder:BD,githubUrl:wk,projectSlug:o4,surfaces:hk.default({}),lifecycle:rk,releaseChannel:uk.default("stable"),summary:E.string().min(1).optional(),tags:qD}).strict().superRefine((_,$)=>{let D=new Set;for(let[g,U]of _.surfaces.bins.entries()){if(D.has(U))$.addIssue({code:E.ZodIssueCode.custom,message:"App surface bins must be unique",path:["surfaces","bins",g]});D.add(U)}}),nk=E.enum(["skill","ci","backfilled"]),dk=L_(x.release).extend({appId:BD,package:pP,version:c8,gitSha:fk,publishedAt:F_,publishPath:nk,changelogRef:s.optional(),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.publishPath!=="backfilled"&&_.evidenceRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"skill and ci releases require publish evidence; only backfilled releases may omit it",path:["evidenceRefs"]})}),mk=E.enum(["install","update","rollback","freeze-blocked"]),ik=E.object({cliVersion:E.string().min(1).optional(),mcpHealth:E.enum(["ok","degraded","unavailable","not_checked"]).optional()}).strict().superRefine((_,$)=>{if(!_.cliVersion&&_.mcpHealth===void 0)$.addIssue({code:E.ZodIssueCode.custom,message:"Rollout verification requires at least one concrete verifier field"})}),lk=L_(x.rolloutRecord).extend({appId:BD,package:pP,version:c8,machine:t,action:mk,result:e4,verifiedBy:ik.optional(),at:F_,evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.action==="freeze-blocked"&&_.result!=="blocked"&&_.result!=="skipped")$.addIssue({code:E.ZodIssueCode.custom,message:"freeze-blocked rollout records must report result blocked or skipped",path:["result"]});let D=Boolean(_.verifiedBy?.cliVersion)||_.verifiedBy?.mcpHealth!==void 0&&_.verifiedBy.mcpHealth!=="not_checked",g=_.verifiedBy?Object.keys(_.verifiedBy).length>0:!1;if((_.action==="install"||_.action==="update")&&_.result==="succeeded"&&(!_.verifiedBy||g&&!D))$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded install/update rollout records require concrete verification",path:["verifiedBy"]})}),tk=E.enum(["email","telegram","slack","discord","x","blog","rss","webhook","github","other"]),ok=E.enum(["pending","queued","sent","failed","skipped","suppressed"]),pk=E.object({channel:tk,status:ok,deliveredAt:F_.optional(),detail:E.string().min(1).optional()}).strict().superRefine((_,$)=>{if(_.status==="sent"&&!_.deliveredAt)$.addIssue({code:E.ZodIssueCode.custom,message:"Sent announcement channels require deliveredAt",path:["deliveredAt"]});if(_.status==="failed"&&!_.detail)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed announcement channels require detail",path:["detail"]})}),ek=L_(x.announcement).extend({campaignId:t,appId:BD.optional(),releaseRef:s.optional(),channels:E.array(pk).min(1),audienceRef:s,sentAt:F_}).strict().superRefine((_,$)=>{if(_.releaseRef&&_.releaseRef.kind!=="release")$.addIssue({code:E.ZodIssueCode.custom,message:"Announcement releaseRef must use resource kind release",path:["releaseRef","kind"]});if(_.audienceRef.kind!=="audience")$.addIssue({code:E.ZodIssueCode.custom,message:"Announcement audienceRef must use resource kind audience",path:["audienceRef","kind"]})}),ak=E.enum(["tag","attribute","group"]),sk=E.enum(["eq","neq","in","not_in","exists","not_exists"]),X8=E.union([E.string(),E.number(),E.boolean()]),_C=E.object({kind:ak,key:E.string().min(1).optional(),op:sk.default("eq"),value:X8.optional(),values:E.array(X8).default([])}).strict().superRefine((_,$)=>{if(_.kind==="attribute"&&!_.key)$.addIssue({code:E.ZodIssueCode.custom,message:"Attribute predicates require key",path:["key"]});if((_.op==="eq"||_.op==="neq")&&_.value===void 0)$.addIssue({code:E.ZodIssueCode.custom,message:"eq/neq predicates require value",path:["value"]});if((_.op==="in"||_.op==="not_in")&&_.values.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"in/not_in predicates require values",path:["values"]})}),$C=E.object({match:E.enum(["all","any"]).default("all"),predicates:E.array(_C).min(1)}).strict(),DC=E.enum(["opt_in","opt_out","transactional","none"]),UC=L_(x.audience).extend({audienceId:BD,name:t,definition:$C,consentPolicy:DC,suppressionSyncedAt:t4}).strict(),NN=["@hasna/cloud","open-cloud"],gC=E.enum(["aws","gcp","azure","cloudflare","vercel","neon","supabase","postgres","s3","rds","other"]),IC=E.object({id:E.string().min(1),provider:gC,kind:E.enum(["database","bucket","queue","secret","function","worker","cache","topic","scheduler","object_store","other"]),ownerPackage:E.string().min(1),region:E.string().min(1).optional(),accountId:E.string().min(1).optional(),uri:H$.optional(),machineScoped:E.boolean().default(!1)}).strict(),n8=L_(x.appCloudManifest).extend({packageName:E.string().min(1),packageVersion:E.string().min(1).optional(),appId:E.string().min(1),repository:s.optional(),storageMode:E.enum(["local_only","app_owned_cloud","hybrid_local_cache","external_service"]),cloudBoundary:E.enum(["none","app_owned","external_service","local_cache"]),cloudResources:E.array(IC).default([]),localCache:E.object({path:E.string().min(1).optional(),pullMode:E.enum(["manual","daemon","ci","none"]).default("manual"),conflictPolicy:E.enum(["cloud_wins","local_wins","merge","manual_review"]).default("manual_review")}).strict().optional(),forbiddenSharedRuntimes:E.array(E.string().min(1)).default([...NN]),dependencies:E.array(E.string().min(1)).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let D=new Set([...NN,..._.forbiddenSharedRuntimes]);if(D.has(_.packageName))$.addIssue({code:E.ZodIssueCode.custom,message:"App-owned cloud manifests cannot be for a forbidden runtime",path:["packageName"]});for(let g of NN)if(!_.forbiddenSharedRuntimes.includes(g))$.addIssue({code:E.ZodIssueCode.custom,message:`forbiddenSharedRuntimes must include ${g}`,path:["forbiddenSharedRuntimes"]});for(let g of D)if(_.dependencies.includes(g))$.addIssue({code:E.ZodIssueCode.custom,message:`App-owned cloud manifests cannot depend on ${g}`,path:["dependencies"]});if(_.storageMode==="local_only"&&_.cloudBoundary!=="none")$.addIssue({code:E.ZodIssueCode.custom,message:"local_only storage requires cloudBoundary none",path:["cloudBoundary"]});if(_.storageMode==="app_owned_cloud"&&_.cloudBoundary!=="app_owned")$.addIssue({code:E.ZodIssueCode.custom,message:"app_owned_cloud storage requires cloudBoundary app_owned",path:["cloudBoundary"]});if(_.storageMode==="hybrid_local_cache"){if(_.cloudBoundary!=="local_cache")$.addIssue({code:E.ZodIssueCode.custom,message:"hybrid_local_cache storage requires cloudBoundary local_cache",path:["cloudBoundary"]});if(!_.localCache)$.addIssue({code:E.ZodIssueCode.custom,message:"hybrid_local_cache storage requires localCache settings",path:["localCache"]})}if(_.storageMode==="external_service"){if(_.cloudBoundary!=="external_service")$.addIssue({code:E.ZodIssueCode.custom,message:"external_service storage requires cloudBoundary external_service",path:["cloudBoundary"]});if(_.cloudResources.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"external_service storage must not declare app-owned cloudResources",path:["cloudResources"]})}if((_.storageMode==="app_owned_cloud"||_.storageMode==="hybrid_local_cache")&&_.cloudResources.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Cloud-backed storage modes require explicit app-owned cloudResources",path:["cloudResources"]});if(_.cloudBoundary==="none"&&_.cloudResources.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"cloudBoundary none cannot declare cloudResources",path:["cloudResources"]});_.cloudResources.forEach((g,U)=>{if(g.ownerPackage!==_.packageName)$.addIssue({code:E.ZodIssueCode.custom,message:"Cloud resources must be owned by the app package that declares the manifest",path:["cloudResources",U,"ownerPackage"]})})}),d8=E.enum(["package_manifest","lockfile","source_import","runtime_config","packed_artifact","published_metadata","app_cloud_manifest","remote_config","boundary_doc","other"]),jC=E.enum(["low","medium","high","critical"]),m8=E.object({id:E.string().min(1),kind:d8,severity:jC,path:E.string().min(1).optional(),packageName:E.string().min(1).optional(),pattern:E.string().min(1),message:E.string().min(1),evidenceRefs:E.array(T_).default([])}).strict(),NC=E.object({id:E.string().min(1),kind:d8,status:e4,target:E.string().min(1),command:E.string().min(1).optional(),evidenceRefs:E.array(T_).default([]),findings:E.array(m8).default([])}).strict(),EC=L_(x.noCloudEvidencePack).extend({subject:s,packageName:E.string().min(1).optional(),packageVersion:E.string().min(1).optional(),generatedBy:m$.optional(),scanMode:E.enum(["source_tree","packed_artifact","published_metadata","runtime_config","workspace","ci"]),status:e4,verdict:E.enum(["passed","failed","warning","not_run"]),appCloudManifest:n8.optional(),checks:E.array(NC).min(1),findings:E.array(m8).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{let D=[..._.findings,..._.checks.flatMap((U)=>U.findings)],g=D.filter((U)=>U.severity==="high"||U.severity==="critical");if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Passed no-cloud evidence requires succeeded status",path:["status"]});if(g.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Passed no-cloud evidence cannot include high or critical findings",path:["findings"]});if(_.checks.some((U)=>U.status!=="succeeded"))$.addIssue({code:E.ZodIssueCode.custom,message:"Passed no-cloud evidence requires every check to be succeeded",path:["checks"]})}if(_.verdict==="failed"&&D.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed no-cloud evidence requires findings",path:["findings"]});if(_.status==="succeeded"&&_.checks.some((U)=>U.status==="failed"))$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded no-cloud evidence cannot contain failed checks",path:["checks"]});_.checks.forEach((U,I)=>{let j=U.findings.filter((N)=>N.severity==="high"||N.severity==="critical");if(U.status==="succeeded"&&j.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded no-cloud checks cannot contain high or critical findings",path:["checks",I,"findings"]})})}),OC=E.object({checkId:E.string().min(1),status:e4,summary:E.string().min(1).optional(),startedAt:t4,finishedAt:t4,evidenceRefs:E.array(T_).default([])}).strict(),AC=L_(x.proofBundle).extend({subject:s,validationPlanRef:s.optional(),status:e4,verdict:E.enum(["passed","failed","inconclusive","not_run"]).default("inconclusive"),checks:E.array(OC).default([]),verifier:m$.optional(),evidenceRefs:E.array(T_).default([]),residualRisks:E.array(E.string().min(1)).default([]),freshness:E.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles must have status succeeded",path:["status"]});if(_.checks.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require at least one check result",path:["checks"]});if(_.checks.forEach((g,U)=>{if(g.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require all checks to have status succeeded",path:["checks",U,"status"]})}),!(_.evidenceRefs.length>0||_.checks.some((g)=>g.evidenceRefs.length>0)))$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require evidence",path:["evidenceRefs"]});if(!_.verifier)$.addIssue({code:E.ZodIssueCode.custom,message:"Passed proof bundles require a verifier",path:["verifier"]})}if(_.verdict==="not_run"&&_.checks.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"Not-run proof bundles cannot include check results",path:["checks"]});if(_.verdict==="failed"&&!_.checks.some((D)=>D.status==="failed")&&_.evidenceRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed proof bundles require a failed check or evidence",path:["checks"]})}),LC=L_(x.workRun).extend({objective:E.string().min(1),status:e4,actor:m$,traceId:E.string().min(1).optional(),startedAt:t4,finishedAt:t4,constraints:E.array(E.string().min(1)).default([]),resourceRefs:E.array(s).default([]),decisions:E.array(r8).default([]),costEstimates:E.array(Tg).default([]),evidenceRefs:E.array(T_).default([]),validationPlanRefs:E.array(s).default([]),proofBundleRefs:E.array(s).default([])}).strict().superRefine((_,$)=>{if(_.startedAt&&_.finishedAt&&Date.parse(_.finishedAt)0||_.proofBundleRefs.length>0;if(_.status==="succeeded"&&!D)$.addIssue({code:E.ZodIssueCode.custom,message:"Succeeded work runs require evidence or a proof bundle",path:["evidenceRefs"]});if((_.status==="failed"||_.status==="blocked")&&!D&&_.decisions.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed or blocked work runs require evidence, a proof bundle, or a decision record",path:["evidenceRefs"]})}),JC=Object.freeze({work_run:Object.freeze(["codewith"]),root_request:Object.freeze(["todos"]),pr_group:Object.freeze(["todos"]),leaf_task:Object.freeze(["todos"]),attempt:Object.freeze(["todos"]),writer_generation:Object.freeze(["todos"]),writer_lease:Object.freeze(["repos"]),writer_fence:Object.freeze(["repos"]),provider_profile:Object.freeze(["codewith"]),provider_route:Object.freeze(["codewith"]),admission:Object.freeze(["codewith"]),worker_actor:Object.freeze(["codewith"]),worker:Object.freeze(["codewith"]),runtime:Object.freeze(["codewith"]),repo:Object.freeze(["repos"]),worktree:Object.freeze(["repos"]),branch:Object.freeze(["repos"]),event_stream:Object.freeze(["todos"]),replay_cursor:Object.freeze(["todos"]),handoff:Object.freeze(["todos"]),pull_request:Object.freeze(["todos"]),commit:Object.freeze(["repos"]),review:Object.freeze(["review"]),reviewer:Object.freeze(["review"]),review_run:Object.freeze(["review"]),proof_bundle:Object.freeze(["review"]),repair_cycle:Object.freeze(["todos"]),merge_guard:Object.freeze(["todos"]),merge_operator:Object.freeze(["merge_provider"]),merge_operator_run:Object.freeze(["merge_provider"]),merge_guard_receipt:Object.freeze(["merge_provider"]),merge_outcome:Object.freeze(["merge_provider"]),recovery:Object.freeze(["todos"]),cancellation:Object.freeze(["todos"]),cleanup_eligibility:Object.freeze(["repos"]),cleanup_outcome:Object.freeze(["repos"]),rollback_plan:Object.freeze(["todos"]),rollback_outcome:Object.freeze(["repos"]),terminal_disposition:Object.freeze(["todos"]),openloops_invocation:Object.freeze(["openloops"]),adapter_extension:Object.freeze(["adapter"])}),PC=E.enum(["work_run","root_request","pr_group","leaf_task","attempt","writer_generation","writer_lease","writer_fence","provider_profile","provider_route","admission","worker_actor","worker","runtime","repo","worktree","branch","event_stream","replay_cursor","handoff","pull_request","commit","review","reviewer","review_run","proof_bundle","repair_cycle","merge_guard","merge_operator","merge_operator_run","merge_guard_receipt","merge_outcome","recovery","cancellation","cleanup_eligibility","cleanup_outcome","rollback_plan","rollback_outcome","terminal_disposition","openloops_invocation","adapter_extension"]),zC=E.enum(["todos","codewith","repos","review","merge_provider","openloops","adapter"]),p4=E.string().regex(/^[a-f0-9]{64}$/),zN=E.string().trim().min(3).max(256),i8=/^[a-f0-9]{32}$/;function SC(_,$,D){return`${_}:${$}:opaque-${D.slice(0,32)}`}function WC(_){return`evidence:opaque-${_.slice(0,32)}`}var l8=zN.refine((_)=>{let D=_.startsWith("task_to_pr_projection:opaque-")?_.slice(29):"";return i8.test(D)},"Projection ids must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),eP=zN.refine((_)=>{let D=_.startsWith("attempt_nonce:opaque-")?_.slice(21):"";return i8.test(D)},"Attempt nonces must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),XC=new Set(["writer_lease","writer_fence","provider_profile","provider_route","admission","worker_actor","worker","runtime","worktree","merge_operator","merge_operator_run","merge_guard_receipt","merge_outcome","openloops_invocation","adapter_extension"]),aP=E.object({role:PC,authority:zC,id:zN,digest:p4,redaction:E.enum(["none","partial","full"])}).strict().superRefine((_,$)=>{let D=JC[_.role];if(!D.includes(_.authority))$.addIssue({code:E.ZodIssueCode.custom,message:`${_.role} refs must be owned by ${D.join(" or ")}`,path:["authority"]});if(XC.has(_.role)&&_.redaction==="none")$.addIssue({code:E.ZodIssueCode.custom,message:`${_.role} refs must be redacted and cannot carry a raw locator or credential`,path:["redaction"]});let g=SC(_.role,_.authority,_.digest);if(_.id!==g)$.addIssue({code:E.ZodIssueCode.custom,message:"Reference ids must be nonsemantic authority-bound surrogates derived from the canonical role, authority, and owner-record digest",path:["id"]})}),X$=E.object({id:zN,digest:p4,redaction:E.enum(["partial","full"])}).strict().superRefine((_,$)=>{if(_.id!==WC(_.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Evidence ids must be nonsemantic owner-resolvable surrogates derived from their canonical digest",path:["id"]})});function t8(_,$,D,g){if(_.id===$.id||_.digest===$.digest)D.addIssue({code:E.ZodIssueCode.custom,message:"Stop and lease-revocation facts require distinct evidence identities and digests",path:g})}function b(_){return aP.refine(($)=>$.role===_,{message:`Reference must use role ${_}`,path:["role"]})}function q_(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id&&_.digest===$.digest&&_.redaction===$.redaction}function sP(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id}function OD(_,$,D,g,U){if(sP(_,$))D.addIssue({code:E.ZodIssueCode.custom,message:`${U} requires a fresh canonical role/authority/id`,path:g});if(_.digest===$.digest)D.addIssue({code:E.ZodIssueCode.custom,message:`${U} requires a fresh canonical digest`,path:g})}function AN(_){return`${_.role}\x00${_.authority}\x00${_.id}`}function e_(_,$){return _.algorithm===$.algorithm&&_.value===$.value}var Q_=E.object({algorithm:E.enum(["sha1","sha256"]),value:E.string().regex(/^[a-f0-9]+$/)}).strict().superRefine((_,$)=>{let D=_.algorithm==="sha1"?40:64;if(_.value.length!==D)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.algorithm} object ids must contain exactly ${D} lowercase hex characters`,path:["value"]})});function G8(_){if(_.canonicalizationVersion===1){let D=JSON.stringify(["hasna.task_to_pr_projection.binding.v1",_.canonicalizationVersion,_.rootRequestRef.id,_.rootRequestRef.digest,_.prGroupRef.id,_.prGroupRef.digest,_.leafTaskRef.id,_.leafTaskRef.digest,_.repoRef.id,_.repoRef.digest,_.baseHead.algorithm,_.baseHead.value,_.frozenScopeDigest]);return P8("sha256").update(D,"utf8").digest("hex")}let $=JSON.stringify(["hasna.task_to_pr_projection.binding.v2",_.canonicalizationVersion,...[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repoRef,_.worktreeRef,_.branchRef].flatMap((D)=>[D.role,D.authority,D.id,D.digest]),_.baseHead.algorithm,_.baseHead.value,_.frozenScopeDigest]);return P8("sha256").update($,"utf8").digest("hex")}var GC=E.object({ref:b("attempt"),nonce:eP,admissionRef:b("admission"),admissionWriterGenerationRef:b("writer_generation"),workerActorRef:b("worker_actor"),workerRef:b("worker"),runtimeRef:b("runtime"),writerGenerationRef:b("writer_generation"),writerLeaseRef:b("writer_lease"),writerFenceRef:b("writer_fence"),providerProfileRef:b("provider_profile"),providerRouteRef:b("provider_route")}).strict(),RC=E.object({repoRef:b("repo"),worktreeRef:b("worktree"),branchRef:b("branch"),baseHead:Q_,branchHead:Q_}).strict(),YC=E.object({streamRef:b("event_stream"),replayCursorRef:b("replay_cursor"),sequence:E.number().int().safe().nonnegative(),prefixDigest:p4}).strict(),QC=E.object({ref:b("handoff"),previousAttemptRef:b("attempt"),nextAttemptRef:b("attempt"),previousWriterGenerationRef:b("writer_generation"),nextWriterGenerationRef:b("writer_generation"),stoppedWorkRunRef:b("work_run"),stopEvidenceRef:X$,leaseRevocationEvidenceRef:X$}).strict().superRefine((_,$)=>{OD(_.previousAttemptRef,_.nextAttemptRef,$,["nextAttemptRef"],"Handoff attempt rotation"),OD(_.previousWriterGenerationRef,_.nextWriterGenerationRef,$,["nextWriterGenerationRef"],"Handoff writer-generation rotation"),t8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),TC=E.object({ref:b("review"),pullRequestRef:b("pull_request"),base:Q_,head:Q_,reviewerRef:b("reviewer"),reviewRunRef:b("review_run"),proofBundleRef:b("proof_bundle"),verdict:E.enum(["approved","changes_requested","blocked"]),reviewedAt:F_}).strict(),BC=E.object({pullRequestRef:b("pull_request"),remoteBranchRef:b("branch"),expectedBase:Q_,providerPullRequestBase:Q_,localHead:Q_,remoteHead:Q_,providerPullRequestHead:Q_,equalityProofRef:b("proof_bundle"),ciProofBundleRefs:E.array(b("proof_bundle")).min(1),verifiedAt:F_}).strict().superRefine((_,$)=>{if(!e_(_.expectedBase,_.providerPullRequestBase))$.addIssue({code:E.ZodIssueCode.custom,message:"Expected and provider-observed pull-request bases must be exactly equal",path:["providerPullRequestBase"]});if(!e_(_.localHead,_.remoteHead)||!e_(_.localHead,_.providerPullRequestHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Local, remote, and provider pull-request heads must be exactly equal",path:["providerPullRequestHead"]});let D=_.ciProofBundleRefs.map(AN);if(new Set(D).size!==D.length)$.addIssue({code:E.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical identities",path:["ciProofBundleRefs"]});let g=_.ciProofBundleRefs.map((U)=>U.digest);if(new Set(g).size!==g.length)$.addIssue({code:E.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical digests",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((U)=>sP(U,_.equalityProofRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical identities",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((U)=>U.digest===_.equalityProofRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical digests",path:["ciProofBundleRefs"]})}),qC=E.object({ref:b("repair_cycle"),cycle:E.number().int().min(0).max(2),cap:E.literal(2),exhausted:E.boolean(),latestRepairRef:b("repair_cycle").optional()}).strict().superRefine((_,$)=>{if(_.exhausted!==(_.cycle===_.cap))$.addIssue({code:E.ZodIssueCode.custom,message:"Repair exhaustion must equal the cumulative cycle cap",path:["exhausted"]});if(_.cycle===0&&_.latestRepairRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Cycle zero cannot reference a repair",path:["latestRepairRef"]});if(_.cycle>0&&!_.latestRepairRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Non-zero repair state requires the latest immutable repair ref",path:["latestRepairRef"]});if(_.latestRepairRef&&sP(_.ref,_.latestRepairRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must be distinct canonical records",path:["latestRepairRef"]});if(_.latestRepairRef&&_.ref.digest===_.latestRepairRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must have distinct canonical digests",path:["latestRepairRef"]})}),VC=E.object({ref:b("merge_guard"),pullRequestRef:b("pull_request"),expectedBase:Q_,expectedHead:Q_,reviewRefs:E.array(b("review")).min(1),proofBundleRefs:E.array(b("proof_bundle")).min(1),operatorRef:b("merge_operator"),operatorRunRef:b("merge_operator_run"),providerGuardReceiptRef:b("merge_guard_receipt"),mechanism:E.enum(["compare_and_swap","queue_expected_head"]),decision:E.enum(["eligible","denied","consumed","revoked"]),evaluatedAt:F_}).strict().superRefine((_,$)=>{if(new Set(_.reviewRefs.map((I)=>I.id)).size!==_.reviewRefs.length)$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard review refs must be unique",path:["reviewRefs"]});if(new Set(_.proofBundleRefs.map(AN)).size!==_.proofBundleRefs.length)$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical identities",path:["proofBundleRefs"]});if(new Set(_.proofBundleRefs.map((I)=>I.digest)).size!==_.proofBundleRefs.length)$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical digests",path:["proofBundleRefs"]})}),FC=E.object({ref:b("merge_outcome"),guardRef:b("merge_guard"),pullRequestRef:b("pull_request"),expectedBase:Q_,observedBase:Q_,expectedHead:Q_,observedHead:Q_,status:E.enum(["merged","closed_unmerged","refused","head_drift","base_drift"]),mergeCommitRef:b("commit").optional(),finishedAt:F_,evidenceRefs:E.array(X$).min(1)}).strict().superRefine((_,$)=>{let D=e_(_.expectedBase,_.observedBase),g=e_(_.expectedHead,_.observedHead);if(_.status==="merged"){if(!D||!g)$.addIssue({code:E.ZodIssueCode.custom,message:"Merged outcomes require observed base and head to equal the guarded values",path:[!D?"observedBase":"observedHead"]});if(!_.mergeCommitRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Merged outcomes require an immutable merge commit ref",path:["mergeCommitRef"]})}else if(_.mergeCommitRef)$.addIssue({code:E.ZodIssueCode.custom,message:"Unmerged outcomes cannot claim a merge commit",path:["mergeCommitRef"]});if(_.status==="head_drift"&&g)$.addIssue({code:E.ZodIssueCode.custom,message:"Head-drift outcomes require distinct expected and observed heads",path:["observedHead"]});if(_.status==="head_drift"&&!D)$.addIssue({code:E.ZodIssueCode.custom,message:"Head-drift outcomes cannot also carry an unclassified base drift",path:["observedBase"]});if(_.status==="base_drift"&&D)$.addIssue({code:E.ZodIssueCode.custom,message:"Base-drift outcomes require distinct expected and observed bases",path:["observedBase"]});if(_.status==="base_drift"&&!g)$.addIssue({code:E.ZodIssueCode.custom,message:"Base-drift outcomes cannot also carry an unclassified head drift",path:["observedHead"]});if(!g&&_.status!=="head_drift")$.addIssue({code:E.ZodIssueCode.custom,message:"Only a head_drift outcome may record an observed head that differs from the expected head",path:["observedHead"]});if(!D&&_.status!=="base_drift")$.addIssue({code:E.ZodIssueCode.custom,message:"Only a base_drift outcome may record an observed base that differs from the expected base",path:["observedBase"]})}),KC=E.object({guard:VC,outcome:FC.optional()}).strict(),MC=E.object({ref:b("recovery"),priorAttemptRef:b("attempt"),priorWriterGenerationRef:b("writer_generation"),priorWorkRunRef:b("work_run"),successorAttemptNonce:eP,successorWriterGenerationRef:b("writer_generation"),preservedStateRefs:E.array(aP).min(1),stopEvidenceRef:X$,leaseRevocationEvidenceRef:X$}).strict().superRefine((_,$)=>{OD(_.priorWriterGenerationRef,_.successorWriterGenerationRef,$,["successorWriterGenerationRef"],"Recovery writer-generation rotation"),t8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),ZC=E.object({ref:b("cancellation"),cancelledAttemptRef:b("attempt"),preservedStateRefs:E.array(aP).min(1),evidenceRefs:E.array(X$).min(1)}).strict(),bC=E.object({ref:b("cleanup_eligibility"),status:E.enum(["not_ready","preserved","blocked","eligible"]),targetWorktreeRef:b("worktree"),eventCursorRef:b("replay_cursor"),terminalDispositionRef:b("terminal_disposition"),writerLeaseRef:b("writer_lease"),leaseRevocationEvidenceRef:X$,consumedEventEvidenceRef:X$,evaluatedAt:F_,evidenceRefs:E.array(X$).min(1)}).strict().superRefine((_,$)=>{if(_.leaseRevocationEvidenceRef.id===_.consumedEventEvidenceRef.id||_.leaseRevocationEvidenceRef.digest===_.consumedEventEvidenceRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup lease-revocation and consumed-event facts require distinct evidence identities and digests",path:["consumedEventEvidenceRef"]})}),HC=E.object({ref:b("cleanup_outcome"),eligibilityRef:b("cleanup_eligibility"),targetWorktreeRef:b("worktree"),status:E.enum(["preserved","deleted","failed","skipped"]),finishedAt:F_,evidenceRefs:E.array(X$).min(1)}).strict(),kC=E.object({eligibility:bC,outcome:HC.optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!q_(_.outcome.eligibilityRef,_.eligibility.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup outcomes must bind the exact eligibility decision",path:["outcome","eligibilityRef"]});if(_.outcome&&!q_(_.outcome.targetWorktreeRef,_.eligibility.targetWorktreeRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility and outcome must bind the same target worktree",path:["outcome","targetWorktreeRef"]});if(_.outcome?.status==="deleted"&&_.eligibility.status!=="eligible")$.addIssue({code:E.ZodIssueCode.custom,message:"Deletion requires an eligible cleanup decision",path:["outcome","status"]})}),CC=E.object({plan:E.object({ref:b("rollback_plan"),targetRef:E.union([b("commit"),b("branch")]),createdAt:F_}).strict(),outcome:E.object({ref:b("rollback_outcome"),planRef:b("rollback_plan"),targetRef:E.union([b("commit"),b("branch")]),status:E.enum(["not_run","succeeded","failed","cancelled"]),finishedAt:F_,evidenceRefs:E.array(X$).min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!q_(_.outcome.planRef,_.plan.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback plan",path:["outcome","planRef"]});if(_.outcome&&!q_(_.outcome.targetRef,_.plan.targetRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback target",path:["outcome","targetRef"]});if(_.outcome&&Date.parse(_.outcome.finishedAt)({category:"ci_proof",ref:$,base:_.exactHead.expectedBase,head:_.exactHead.localHead}))]:[],..._.reviews.flatMap(($)=>[{category:"review_proof",ref:$.proofBundleRef,base:$.base,head:$.head},{category:"review_record",ref:$.ref,base:$.base,head:$.head},{category:"review_run",ref:$.reviewRunRef,base:$.base,head:$.head}]),..._.merge?[{category:"merge_guard",ref:_.merge.guard.ref},{category:"provider_guard_receipt",ref:_.merge.guard.providerGuardReceiptRef,base:_.merge.guard.expectedBase,head:_.merge.guard.expectedHead}]:[],..._.cleanup?[{category:"cleanup_eligibility",ref:_.cleanup.eligibility.ref}]:[],..._.rollback?[{category:"rollback_plan",ref:_.rollback.plan.ref}]:[],..._.terminalDispositionRef?[{category:"terminal_disposition",ref:_.terminalDispositionRef}]:[]]}function wC(_,$){if(_.category!==$.category)return!1;if(_.category==="projection_id"&&$.category==="projection_id")return _.projectionId===$.projectionId;if(_.category==="attempt_nonce"&&$.category==="attempt_nonce")return _.nonce===$.nonce;if(_.category==="replay_prefix"&&$.category==="replay_prefix")return _.sequence===$.sequence&&_.prefixDigest===$.prefixDigest;if(!("ref"in _)||!("ref"in $))return!1;return q_(_.ref,$.ref)&&(("head"in _)&&("head"in $)&&("base"in _)&&("base"in $)&&e_(_.base,$.base)&&e_(_.head,$.head)||!("head"in _)&&!("head"in $)&&!("base"in _)&&!("base"in $))}var rC="hasna.task_to_pr_adapter_extension.",uC=E.object({mode:E.enum(["local","cloud"]),schema:iP,ref:b("adapter_extension"),digest:p4}).strict().superRefine((_,$)=>{if(!_.schema.startsWith(rC))$.addIssue({code:E.ZodIssueCode.custom,message:"Adapter extension schema ids must use the permanently reserved task-to-PR adapter-extension namespace",path:["schema"]})}),xC=E.enum(["admitted","running","handed_off","reviewing","repairing","merge_ready","merged","closed_unmerged","failed","blocked","cancelled","recovering","cleanup_complete","rolled_back"]),R8=new Set(["admitted","running","handed_off"]),Y8=new Set(["merged","closed_unmerged","failed","blocked","cancelled","cleanup_complete","rolled_back"]),yC={admitted:new Set(["absent","denied:none","revoked:none"]),running:new Set(["absent","denied:none","revoked:none"]),handed_off:new Set(["absent","denied:none","revoked:none"]),reviewing:new Set(["absent","denied:none","revoked:none"]),repairing:new Set(["absent","denied:none","revoked:none"]),merge_ready:new Set(["eligible:none"]),merged:new Set(["consumed:merged"]),closed_unmerged:new Set(["consumed:closed_unmerged","consumed:refused","consumed:head_drift","consumed:base_drift"]),failed:new Set(["absent","revoked:none"]),blocked:new Set(["absent","revoked:none"]),cancelled:new Set(["absent","revoked:none"]),recovering:new Set(["absent","denied:none","revoked:none"]),cleanup_complete:new Set(["absent","revoked:none","consumed:merged","consumed:closed_unmerged","consumed:refused","consumed:head_drift","consumed:base_drift"]),rolled_back:new Set(["consumed:merged"])},hC=E.object({schema:E.literal(x.taskToPrProjection),id:l8,createdAt:F_,canonicalizationVersion:E.union([E.literal(1),E.literal(2)]),identityDigest:p4,frozenScopeDigest:p4,state:xC,workRunRef:b("work_run"),rootRequestRef:b("root_request"),prGroupRef:b("pr_group"),leafTaskRef:b("leaf_task"),attempt:GC,repository:RC,events:YC,openLoopsInvocationRef:b("openloops_invocation").optional(),pullRequestRef:b("pull_request").optional(),exactHead:BC.optional(),handoff:QC.optional(),reviews:E.array(TC).default([]),repair:qC,merge:KC.optional(),recovery:MC.optional(),cancellation:ZC.optional(),cleanup:kC.optional(),rollback:CC.optional(),terminalDispositionRef:b("terminal_disposition").optional(),provenanceLedger:E.array(vC),adapterExtensions:E.array(uC).default([]),evidenceRefs:E.array(X$).default([])}).strict().superRefine((_,$)=>{let D=_.canonicalizationVersion===1?G8({canonicalizationVersion:1,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest}):G8({canonicalizationVersion:2,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,worktreeRef:_.repository.worktreeRef,branchRef:_.repository.branchRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest});if(_.identityDigest!==D)$.addIssue({code:E.ZodIssueCode.custom,message:"identityDigest must equal the selected v1 compatibility or v2 branch/worktree-bound canonical identity digest",path:["identityDigest"]});let g=new Set,U=new Set,I=new Set,j=new Set,N=new Set,O=new Set;for(let[T,B]of _.provenanceLedger.entries()){if("ref"in B){if(g.has(B.ref.id))$.addIssue({code:E.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical owner id across categories or generations",path:["provenanceLedger",T,"ref","id"]});if(g.add(B.ref.id),U.has(B.ref.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical digest across categories or generations",path:["provenanceLedger",T,"ref","digest"]});U.add(B.ref.digest);continue}if(B.category==="projection_id"){if(I.has(B.projectionId))$.addIssue({code:E.ZodIssueCode.custom,message:"Projection identity provenance tombstones must be globally unique",path:["provenanceLedger",T,"projectionId"]});I.add(B.projectionId);continue}if(B.category==="attempt_nonce"){if(j.has(B.nonce))$.addIssue({code:E.ZodIssueCode.custom,message:"Attempt nonce provenance tombstones must be globally unique",path:["provenanceLedger",T,"nonce"]});j.add(B.nonce);continue}if(N.has(B.prefixDigest))$.addIssue({code:E.ZodIssueCode.custom,message:"Replay prefix provenance tombstones must be globally unique",path:["provenanceLedger",T,"prefixDigest"]});if(N.add(B.prefixDigest),O.has(B.sequence))$.addIssue({code:E.ZodIssueCode.custom,message:"Replay prefix provenance entries must bind globally unique replay sequences",path:["provenanceLedger",T,"sequence"]});O.add(B.sequence)}for(let T of fC(_))if(!_.provenanceLedger.some((B)=>wC(B,T)))$.addIssue({code:E.ZodIssueCode.custom,message:`The active ${T.category} identity must be represented exactly in the monotonic provenance ledger`,path:["provenanceLedger"]});let A=[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repository.repoRef,_.repository.worktreeRef,_.repository.branchRef,_.events.streamRef,..._.pullRequestRef?[_.pullRequestRef]:[]],L=(T,B,F,Z)=>{let e=new Set(B.map((I_)=>I_.role)),U_=new Set;for(let[I_,J_]of T.entries()){if(!e.has(J_.role))$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} cannot preserve an unrecognized ${J_.role} role`,path:[...F,I_]});if(U_.has(J_.role))$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} must preserve exactly one canonical ref per role`,path:[...F,I_]});U_.add(J_.role)}if(T.length!==B.length)$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} preservation refs must exactly equal the required canonical role set`,path:F});for(let I_ of B)if(!T.some((J_)=>q_(J_,I_)))$.addIssue({code:E.ZodIssueCode.custom,message:`${Z} must preserve ${I_.role}`,path:F})};if(_.handoff&&!q_(_.handoff.nextWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Handoff next generation must be the current attempt writer generation",path:["handoff","nextWriterGenerationRef"]});if(_.handoff&&!q_(_.handoff.nextAttemptRef,_.attempt.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Handoff next attempt must be the current attempt",path:["handoff","nextAttemptRef"]});if(_.handoff)OD(_.handoff.stoppedWorkRunRef,_.workRunRef,$,["handoff","stoppedWorkRunRef"],"Handoff WorkRun rotation");if(_.recovery){if(_.recovery.successorAttemptNonce!==_.attempt.nonce)$.addIssue({code:E.ZodIssueCode.custom,message:"Recovery successor nonce must equal the current attempt nonce",path:["recovery","successorAttemptNonce"]});if(!q_(_.recovery.successorWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Recovery successor generation must equal the current writer generation",path:["recovery","successorWriterGenerationRef"]});OD(_.recovery.priorAttemptRef,_.attempt.ref,$,["recovery","priorAttemptRef"],"Recovery attempt rotation"),OD(_.recovery.priorWorkRunRef,_.workRunRef,$,["recovery","priorWorkRunRef"],"Recovery WorkRun rotation"),L(_.recovery.preservedStateRefs,[_.recovery.priorWorkRunRef,...A],["recovery","preservedStateRefs"],"Recovery")}if(_.cancellation&&!q_(_.cancellation.cancelledAttemptRef,_.attempt.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Cancellation must bind the current attempt",path:["cancellation","cancelledAttemptRef"]});if(_.cancellation)L(_.cancellation.preservedStateRefs,[_.workRunRef,_.attempt.ref,...A],["cancellation","preservedStateRefs"],"Cancellation");if(_.cancellation&&_.recovery)$.addIssue({code:E.ZodIssueCode.custom,message:"A projection cannot be both the cancellation and recovery snapshot",path:["recovery"]});if(_.handoff&&_.recovery)$.addIssue({code:E.ZodIssueCode.custom,message:"A projection cannot be both the handoff and recovery snapshot",path:["recovery"]});if(_.cleanup&&!q_(_.cleanup.eligibility.eventCursorRef,_.events.replayCursorRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the current canonical replay cursor",path:["cleanup","eligibility","eventCursorRef"]});if(_.cleanup&&(!_.terminalDispositionRef||!q_(_.cleanup.eligibility.terminalDispositionRef,_.terminalDispositionRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact durable terminal owner fact",path:["cleanup","eligibility","terminalDispositionRef"]});if(_.cleanup&&!q_(_.cleanup.eligibility.writerLeaseRef,_.attempt.writerLeaseRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact writer lease being revoked",path:["cleanup","eligibility","writerLeaseRef"]});if(_.cleanup&&!q_(_.cleanup.eligibility.targetWorktreeRef,_.repository.worktreeRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup eligibility must bind the canonical worktree",path:["cleanup","eligibility","targetWorktreeRef"]});if(_.pullRequestRef){if(_.exactHead&&!q_(_.exactHead.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head proof must bind the canonical pull request ref",path:["exactHead","pullRequestRef"]});for(let[T,B]of _.reviews.entries())if(!q_(B.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Every review must bind the canonical pull request ref",path:["reviews",T,"pullRequestRef"]});if(_.merge&&!q_(_.merge.guard.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge guard must bind the canonical pull request ref",path:["merge","guard","pullRequestRef"]});if(_.merge?.outcome&&!q_(_.merge.outcome.pullRequestRef,_.pullRequestRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome must bind the canonical pull request ref",path:["merge","outcome","pullRequestRef"]})}else if(_.exactHead||_.reviews.length>0||_.merge)$.addIssue({code:E.ZodIssueCode.custom,message:"Review and merge state require a canonical pull request ref",path:["pullRequestRef"]});if(_.exactHead&&!e_(_.exactHead.localHead,_.repository.branchHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact local head must equal the canonical branch head",path:["exactHead","localHead"]});if(_.exactHead&&!e_(_.exactHead.expectedBase,_.repository.baseHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head expected base must equal the canonical repository base",path:["exactHead","expectedBase"]});if(_.exactHead&&!q_(_.exactHead.remoteBranchRef,_.repository.branchRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head remote branch ref must equal the canonical repository branch ref",path:["exactHead","remoteBranchRef"]});if(_.exactHead&&Date.parse(_.exactHead.verifiedAt)0&&!_.exactHead)$.addIssue({code:E.ZodIssueCode.custom,message:"Reviews require local/remote/provider exact-head proof",path:["exactHead"]});if(_.exactHead){let T=[{ref:_.exactHead.equalityProofRef,path:["exactHead","equalityProofRef"]},..._.exactHead.ciProofBundleRefs.map((Z,e)=>({ref:Z,path:["exactHead","ciProofBundleRefs",e]})),..._.reviews.map((Z,e)=>({ref:Z.proofBundleRef,path:["reviews",e,"proofBundleRef"]}))],B=new Set,F=new Set;for(let Z of T){let e=AN(Z.ref);if(B.has(e))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical identities",path:Z.path});if(B.add(e),F.has(Z.ref.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical digests",path:Z.path});F.add(Z.ref.digest)}}let z=new Set,W=new Set,J=new Set,P=new Set,S=new Set,X=new Set,R=new Set,G=new Set;for(let[T,B]of _.reviews.entries()){if(!e_(B.base,_.repository.baseHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Review base must equal the exact canonical pull-request base",path:["reviews",T,"base"]});if(!e_(B.head,_.repository.branchHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Review head must equal the exact canonical branch head",path:["reviews",T,"head"]});for(let[Z,e,U_]of[[B.ref.id,z,"ref"],[B.reviewerRef.id,J,"reviewerRef"],[B.reviewRunRef.id,S,"reviewRunRef"]]){if(e.has(Z))$.addIssue({code:E.ZodIssueCode.custom,message:"Review, reviewer, and review-run refs must each be unique",path:["reviews",T,U_]});e.add(Z)}if(W.has(B.ref.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Review refs must resolve to distinct canonical record digests",path:["reviews",T,"ref"]});if(W.add(B.ref.digest),P.has(B.reviewerRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Reviewer refs must resolve to distinct canonical actor digests",path:["reviews",T,"reviewerRef"]});if(P.add(B.reviewerRef.digest),X.has(B.reviewRunRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Review-run refs must resolve to distinct canonical run digests",path:["reviews",T,"reviewRunRef"]});X.add(B.reviewRunRef.digest);let F=AN(B.proofBundleRef);if(R.has(F))$.addIssue({code:E.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical identities",path:["reviews",T,"proofBundleRef"]});if(R.add(F),G.has(B.proofBundleRef.digest))$.addIssue({code:E.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical digests",path:["reviews",T,"proofBundleRef"]});if(G.add(B.proofBundleRef.digest),B.reviewerRef.digest===_.attempt.workerRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Worker and reviewer identities must resolve to distinct canonical digests",path:["reviews",T,"reviewerRef"]});if(B.reviewRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:E.ZodIssueCode.custom,message:"Worker runtime and review run must resolve to distinct canonical digests",path:["reviews",T,"reviewRunRef"]});if(_.exactHead&&Date.parse(B.reviewedAt)Date.parse(_.merge.guard.evaluatedAt)T.verdict!=="approved"))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards require at least one review and all reviews approved",path:["merge","guard","decision"]});if(_.merge.guard.reviewRefs.length!==_.reviews.length||_.merge.guard.reviewRefs.some((T)=>!_.reviews.some((B)=>q_(T,B.ref))))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guard review refs must exactly equal the projected approved review refs as a canonical set",path:["merge","guard","reviewRefs"]});for(let T of _.reviews)if(!_.merge.guard.proofBundleRefs.some((B)=>q_(B,T.proofBundleRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact review proof bundle",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&!_.merge.guard.proofBundleRefs.some((T)=>q_(T,_.exactHead.equalityProofRef)))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards must bind the exact-head equality proof",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&_.exactHead.ciProofBundleRefs.some((T)=>!_.merge.guard.proofBundleRefs.some((B)=>q_(B,T))))$.addIssue({code:E.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact-head CI proof",path:["merge","guard","proofBundleRefs"]})}}if(_.merge?.outcome){if(!q_(_.merge.outcome.guardRef,_.merge.guard.ref))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome must bind the exact immutable merge guard",path:["merge","outcome","guardRef"]});if(!e_(_.merge.outcome.expectedHead,_.merge.guard.expectedHead))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome expected head must equal the guarded expected head",path:["merge","outcome","expectedHead"]});if(!e_(_.merge.outcome.expectedBase,_.merge.guard.expectedBase))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge outcome expected base must equal the guarded expected base",path:["merge","outcome","expectedBase"]});if(_.merge.guard.decision!=="consumed")$.addIssue({code:E.ZodIssueCode.custom,message:"Every merge outcome requires an explicitly consumed merge guard",path:["merge","guard","decision"]});if(Date.parse(_.merge.outcome.finishedAt)0)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections cannot carry review bindings before review authority is active`,path:["reviews"]});if((R8.has(_.state)||_.state==="recovering")&&(_.merge?.guard.reviewRefs.length??0)>0)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections cannot hide review bindings in a merge guard before review authority is active`,path:["merge","guard","reviewRefs"]});let V=_.merge?`${_.merge.guard.decision}:${_.merge.outcome?.status??"none"}`:"absent";if(!yC[_.state].has(V))$.addIssue({code:E.ZodIssueCode.custom,message:`State ${_.state} is incompatible with merge authority ${V}`,path:["merge"]});if(Y8.has(_.state)&&!_.terminalDispositionRef)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections require a durable Todos terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(!Y8.has(_.state)&&_.terminalDispositionRef)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.state} projections cannot carry a terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(_.state==="reviewing"&&_.reviews.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Reviewing projections require review refs",path:["reviews"]});if(_.state==="cancelled"&&!_.cancellation)$.addIssue({code:E.ZodIssueCode.custom,message:"Cancelled projections require preservation state",path:["cancellation"]});if(_.cancellation&&_.merge?.outcome)$.addIssue({code:E.ZodIssueCode.custom,message:"Cancellation cannot coexist with a terminal merge outcome",path:["cancellation"]});if(_.state==="recovering"&&!_.recovery)$.addIssue({code:E.ZodIssueCode.custom,message:"Recovering projections require recovery state",path:["recovery"]});if(_.state==="repairing"&&_.repair.cycle===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Repairing projections require a non-zero repair cycle",path:["repair","cycle"]});if(_.merge&&(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed")&&!q_(_.attempt.admissionWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:E.ZodIssueCode.custom,message:"Merge eligibility requires admission from the current writer generation",path:["attempt","admissionWriterGenerationRef"]});if(_.state==="merge_ready"&&_.merge?.guard.decision!=="eligible")$.addIssue({code:E.ZodIssueCode.custom,message:"Merge-ready projections require an eligible guard",path:["merge"]});if(_.state==="merged"&&_.merge?.outcome?.status!=="merged")$.addIssue({code:E.ZodIssueCode.custom,message:"Merged projections require a merged immutable outcome",path:["merge"]});if(_.state==="closed_unmerged"&&!_.merge?.outcome?.status.match(/^(closed_unmerged|refused|head_drift|base_drift)$/))$.addIssue({code:E.ZodIssueCode.custom,message:"Closed-unmerged projections require a non-merged terminal outcome",path:["merge"]});if(_.state==="cleanup_complete"&&(!_.cleanup?.outcome||!["deleted","preserved","skipped"].includes(_.cleanup.outcome.status)))$.addIssue({code:E.ZodIssueCode.custom,message:"Cleanup-complete projections require an immutable cleanup outcome",path:["cleanup"]});if(_.state==="rolled_back"&&_.rollback?.outcome?.status!=="succeeded")$.addIssue({code:E.ZodIssueCode.custom,message:"Rolled-back projections require a successful rollback outcome",path:["rollback"]});if((_.state==="failed"||_.state==="blocked")&&_.evidenceRefs.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Failed and blocked projections require redacted evidence refs",path:["evidenceRefs"]});if(["admitted","running","handed_off","reviewing","repairing","merge_ready","recovering"].includes(_.state)&&(_.merge?.outcome||_.cancellation||_.cleanup?.outcome||_.rollback?.outcome))$.addIssue({code:E.ZodIssueCode.custom,message:"Non-terminal projections cannot carry terminal owner outcomes",path:["state"]});let Q=new Set;for(let[T,B]of _.adapterExtensions.entries()){let F=`${B.mode}:${B.schema}`;if(Q.has(F))$.addIssue({code:E.ZodIssueCode.custom,message:"Adapter extensions must be unique per local/cloud mode and schema",path:["adapterExtensions",T]});Q.add(F)}});var cC=E.object({id:E.string().min(1),at:F_,kind:E.enum(["message","tool_call","command","file_change","error","test","decision","verification","status","other"]),summary:E.string().min(1),resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([]),costEstimate:Tg.optional()}).strict(),nC=L_(x.agentTrajectory).extend({actor:m$,workRunRef:s.optional(),events:E.array(cC).default([]),outcome:E.enum(["succeeded","failed","cancelled","blocked","unknown"]).default("unknown"),proofBundleRef:s.optional()}).strict(),dC="v1",mC=E.enum(["library","cli-with-store","service","saas"]),iC=["user-hosted","hasna-saas"],lC=E.enum(iC),tC=["api","sdk","mcp","cli"],o8=E.enum(tC),oC=E.enum(["supported","deferred","unsupported"]),pC=E.enum(["none","local-only","api-key","session","service-token","custom"]),yP=E.object({method:E.enum(["GET","POST","PUT","PATCH","DELETE"]),path:E.string().regex(/^\/[A-Za-z0-9_./:*-]*$/,"Endpoint paths must be absolute HTTP paths"),public:E.boolean().default(!1),description:E.string().min(1).optional()}).strict(),eC=E.object({id:E.string().min(1),kind:E.enum(["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]),required:E.boolean().default(!0),command:E.string().min(1).optional(),evidenceRef:T_.optional(),status:E.enum(["pending","passed","failed","blocked","deferred"]).default("pending"),summary:E.string().min(1).optional()}).strict().superRefine((_,$)=>{if((_.status==="passed"||_.status==="failed"||_.status==="blocked")&&!_.command&&!_.evidenceRef&&!_.summary)$.addIssue({code:E.ZodIssueCode.custom,message:"Terminal readiness gates require command, evidenceRef, or summary",path:["status"]})}),aC=E.object({name:E.string().min(1),kind:o8.optional(),status:oC,bin:E.string().min(1).optional(),mcpBin:E.string().min(1).optional(),authMode:pC,health:yP.optional(),readiness:yP.optional(),version:yP.optional(),apiBasePath:E.string().regex(/^\/v[0-9]+$/,"Stable API base path must be /vN").optional(),openApiPath:E.string().regex(/^\/[A-Za-z0-9_./:-]*$/).optional(),exportSubpath:E.string().regex(/^\.(?:\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*)?$/,"SDK export subpaths must be package export keys such as . or ./sdk").optional(),generatedFrom:E.string().regex(/^\/[A-Za-z0-9_./:-]*$/,"SDK generatedFrom must reference an absolute OpenAPI path").optional(),clientClassName:E.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/).optional(),deferReason:E.string().min(1).optional(),readinessGates:E.array(eC).default([])}).strict().superRefine((_,$)=>{if(_.status==="supported"){if(!_.kind||_.kind==="api"){if(!_.bin)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a serve bin",path:["bin"]});if(!_.health)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a health endpoint",path:["health"]});if(!_.readiness)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a readiness endpoint",path:["readiness"]});if(!_.version)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported API surfaces require a version endpoint",path:["version"]})}if(_.kind==="cli"&&!_.bin)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported CLI surfaces require a bin",path:["bin"]});if(_.kind==="mcp"&&!_.mcpBin)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported MCP surfaces require an mcpBin",path:["mcpBin"]});if(_.kind==="sdk"&&!_.exportSubpath)$.addIssue({code:E.ZodIssueCode.custom,message:"Supported SDK surfaces require an exportSubpath",path:["exportSubpath"]})}if((_.status==="deferred"||_.status==="unsupported")&&!_.deferReason)$.addIssue({code:E.ZodIssueCode.custom,message:"Deferred or unsupported service surfaces require a deferReason",path:["deferReason"]});if(_.health&&_.health.path!=="/health")$.addIssue({code:E.ZodIssueCode.custom,message:"Health endpoint must be /health",path:["health","path"]});if(_.health&&_.health.method!=="GET")$.addIssue({code:E.ZodIssueCode.custom,message:"Health endpoint must use GET",path:["health","method"]});if(_.readiness&&_.readiness.path!=="/ready")$.addIssue({code:E.ZodIssueCode.custom,message:"Readiness endpoint must be /ready",path:["readiness","path"]});if(_.readiness&&_.readiness.method!=="GET")$.addIssue({code:E.ZodIssueCode.custom,message:"Readiness endpoint must use GET",path:["readiness","method"]});if(_.version&&_.version.path!=="/version")$.addIssue({code:E.ZodIssueCode.custom,message:"Version endpoint must be /version",path:["version","path"]});if(_.version&&_.version.method!=="GET")$.addIssue({code:E.ZodIssueCode.custom,message:"Version endpoint must use GET",path:["version","method"]})}),sC=["sqlite","postgres"],p8=E.enum(sC),e8=["sqlite","postgres"],_v=E.enum(e8),mP=["postgres"],$v=E.object({kind:o8,reason:E.string().trim().min(1)}).strict(),_z=500,$z=200,LN=(_)=>E.string().trim().min(1).max(_).regex(/^[^\u0000-\u001f\u007f]+$/,"Waiver text must not contain control characters"),Dv=["domain","host","ip","email"],Uv=E.object({kind:E.enum(Dv),reason:LN(_z),reviewedBy:LN($z),expiresAt:F_}).strict(),gv=E.object({engine:E.enum(mP),reason:LN(_z),reviewedBy:LN($z).optional(),expiresAt:F_.optional()}).strict();function Iv(_){if(_.class!=="cli-with-store")return`storage waivers are not permitted for class ${_.class}`;if(_.bins.includes(`${_.name}-serve`))return`storage waivers are not permitted for a service-capable cli-with-store repo shipping ${_.name}-serve`;if(_.storageMode==="postgres")return"storage waivers are not permitted while storage.mode is postgres, which reads and writes PostgreSQL directly";if(_.hosting.includes("hasna-saas"))return"storage waivers are not permitted for a repo declaring the hasna-saas product story";return null}var jv=E.object({conformance:E.object({waivedSurfaces:E.array($v).default([]),waiverProfile:E.literal("non-node-monorepo").optional(),waivedStorageEngines:E.array(gv).default([]),waivedAssetInventories:E.array(Uv).default([])}).catchall(E.unknown()).optional(),release:E.object({artifactScan:E.object({script:E.string().trim().min(1)}).strict().optional()}).catchall(E.unknown()).optional()}).catchall(E.unknown()),Nv=E.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,"App names must be lowercase dashed identifiers"),Ev=["","-cli","-mcp","-serve","-worker","-runner","-daemon","-migrate","-doctor"];function Ov(_){return Ev.map(($)=>`${_}${$}`)}function Q8(_){return`hasna/oss/${_}/database-url`}var Av=E.object({mode:p8,engines:E.array(_v).min(1).optional(),envPrefix:E.string().regex(/^HASNA_[A-Z][A-Z0-9]*_$/).optional(),aliasEnvPrefix:E.string().regex(/^[A-Z][A-Z0-9]*_$/).optional(),databaseUrlSecretRef:E.string().regex(/^hasna\/oss\/[a-z0-9-]+\/database-url$/).optional(),sqlitePath:E.string().min(1).endsWith(".db","storage.sqlitePath must end in .db").optional(),pgTestGate:E.object({envVar:E.string().regex(/^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$/),command:E.string().trim().min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.engines&&new Set(_.engines).size!==_.engines.length)$.addIssue({code:E.ZodIssueCode.custom,message:"storage.engines must not contain duplicates",path:["engines"]});if(_.engines?.includes("postgres")&&!_.envPrefix)$.addIssue({code:E.ZodIssueCode.custom,message:"storage.engines containing postgres requires envPrefix for the HASNA__DATABASE_URL contract",path:["envPrefix"]})}),a8=E.enum(["0600"]),s8=E.enum(["0700"]),_R=E.enum([".hasna",".codewith"]),Lv=E.enum(["directory","file","sqlite_db","sqlite_wal","sqlite_shm","backup","export","report","tmp","log","session","snapshot"]),jD=W$.refine((_)=>!_.startsWith("~"),"Local store path patterns must be relative to their declared root"),Jv=E.object({id:E.string().min(1),source:E.enum(["sqlite","manifest","index","runtime","package_adapter"]),table:E.string().min(1).optional(),column:E.string().min(1).optional(),description:E.string().min(1),required:E.boolean().default(!0)}).strict(),Pv=E.object({safeWhen:E.enum(["exclusive_access","offline_only","never"]),operations:E.array(E.enum(["wal_checkpoint_truncate","incremental_vacuum","optimize","vacuum"])).default([])}).strict().superRefine((_,$)=>{if(_.safeWhen==="never"&&_.operations.length>0)$.addIssue({code:E.ZodIssueCode.custom,message:"sqliteMaintenance.safeWhen=never cannot declare operations",path:["operations"]})}),zv=E.object({id:E.string().min(1),description:E.string().min(1),ttlDays:E.number().int().nonnegative().optional(),artifactClasses:E.array(Lv).min(1),allowlistGlobs:E.array(jD).min(1),activeRecordExclusions:E.array(Jv).default([]),sqliteMaintenance:Pv.optional()}).strict(),Sv=E.object({storeId:E.string().regex(/^[a-z][a-z0-9-]*$/),packageName:E.string().min(1),displayName:E.string().min(1),root:_R,relativePath:jD,directoryMode:s8.default("0700"),fileMode:a8.default("0600"),sqliteDatabaseGlobs:E.array(jD).default([]),sensitiveFileGlobs:E.array(jD).default([]),backupGlobs:E.array(jD).default([]),exportGlobs:E.array(jD).default([]),retentionAdapters:E.array(zv).default([]),notes:E.array(E.string().min(1)).default([])}).strict().superRefine((_,$)=>{if(_.relativePath.includes("*"))$.addIssue({code:E.ZodIssueCode.custom,message:"store relativePath must be a concrete directory; use glob fields for files",path:["relativePath"]});let D=new Set;for(let[g,U]of _.retentionAdapters.entries()){if(D.has(U.id))$.addIssue({code:E.ZodIssueCode.custom,message:"retention adapter ids must be unique within a store",path:["retentionAdapters",g,"id"]});D.add(U.id)}}),$R=L_(x.secureLocalStorePolicy).extend({version:E.string().min(1),scope:E.array(_R).min(1),defaults:E.object({directoryMode:s8.default("0700"),fileMode:a8.default("0600"),dryRunDefault:E.literal(!0),requireExplicitApply:E.literal(!0),includeSqliteSidecars:E.literal(!0),redactedEvidenceOnly:E.literal(!0)}).strict(),stores:E.array(Sv).min(1),lifecycle:E.object({retentionDryRunDefault:E.literal(!0),requireActiveRecordExclusionProof:E.literal(!0),requireArtifactAllowlist:E.literal(!0),sqliteMaintenanceRequiresExclusiveAccess:E.literal(!0)}).strict(),warnings:E.array(E.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set;for(let[g,U]of _.stores.entries()){if(D.has(U.storeId))$.addIssue({code:E.ZodIssueCode.custom,message:"store ids must be unique",path:["stores",g,"storeId"]});if(D.add(U.storeId),!_.scope.includes(U.root))$.addIssue({code:E.ZodIssueCode.custom,message:"store root must be listed in policy scope",path:["stores",g,"root"]})}}),Wv=E.object({$schema:E.string().min(1).optional(),schema:E.literal(x.serviceContract),name:Nv,class:mC,contractVersion:E.literal(dC),kitVersion:E.string().min(1),description:E.string().min(1).optional(),bins:E.array(E.string().min(1)).default([]),storage:Av.optional(),hosting:E.array(lC).min(1).default(["user-hosted"]),serviceSurfaces:E.array(aC).default([]),metadata:jv.optional()}).strict().superRefine((_,$)=>{if(new Set(_.hosting).size!==_.hosting.length)$.addIssue({code:E.ZodIssueCode.custom,message:"hosting must not contain duplicates",path:["hosting"]});let D=new Set(Ov(_.name)),g=new Set;for(let[A,L]of _.bins.entries()){if(g.has(L))$.addIssue({code:E.ZodIssueCode.custom,message:"Duplicate bin declaration",path:["bins",A]});if(g.add(L),!D.has(L))$.addIssue({code:E.ZodIssueCode.custom,message:`Bin "${L}" is not allowlisted for app "${_.name}"; allowed: ${[...D].join(", ")}`,path:["bins",A]})}let U=(A)=>g.has(`${_.name}${A}`);if(_.storage){let A=_.name.toUpperCase().replace(/-/g,"_");if(_.storage.envPrefix&&_.storage.envPrefix!==`HASNA_${A}_`)$.addIssue({code:E.ZodIssueCode.custom,message:`storage.envPrefix must be HASNA_${A}_`,path:["storage","envPrefix"]});if(_.storage.databaseUrlSecretRef&&_.storage.databaseUrlSecretRef!==Q8(_.name))$.addIssue({code:E.ZodIssueCode.custom,message:`storage.databaseUrlSecretRef must be ${Q8(_.name)}`,path:["storage","databaseUrlSecretRef"]})}if(_.class==="library"){if(_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"library repos must not declare storage",path:["storage"]});if(U("-serve")||U("-mcp"))$.addIssue({code:E.ZodIssueCode.custom,message:"library repos must not ship a -serve or -mcp bin",path:["bins"]})}if(_.class==="cli-with-store"){if(!_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"cli-with-store repos must declare storage",path:["storage"]});else{if(_.storage.mode==="sqlite"&&!_.storage.sqlitePath)$.addIssue({code:E.ZodIssueCode.custom,message:"sqlite cli-with-store storage requires sqlitePath (~/.hasna//.db)",path:["storage","sqlitePath"]});if(_.storage.engines){let A=new Set(_.storage.engines),L=_.metadata?.conformance?.waivedStorageEngines??[],z=Iv({class:_.class,name:_.name,bins:_.bins,hosting:_.hosting,storageMode:_.storage.mode}),W=new Set(z?[]:L.map((P)=>P.engine)),J=e8.filter((P)=>!A.has(P)&&!W.has(P));if(J.length>0){let P=z&&L.length>0?`; declared waiver ignored: ${z}`:"";$.addIssue({code:E.ZodIssueCode.custom,message:`cli-with-store storage.engines must declare both sqlite and postgres unless the engine carries a metadata.conformance.waivedStorageEngines waiver; missing: ${J.join(", ")}${P}`,path:["storage","engines"]})}}}if(!g.has(_.name))$.addIssue({code:E.ZodIssueCode.custom,message:`cli-with-store repos must ship the "${_.name}" bin`,path:["bins"]})}if(_.class==="service"){if(!_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"service repos must declare storage",path:["storage"]});else if(_.storage.engines&&(!_.storage.engines.includes("sqlite")||!_.storage.engines.includes("postgres")))$.addIssue({code:E.ZodIssueCode.custom,message:"service storage.engines must declare both sqlite and postgres",path:["storage","engines"]});if(!U("-serve"))$.addIssue({code:E.ZodIssueCode.custom,message:`service repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"service repos must declare at least one service surface",path:["serviceSurfaces"]})}if(_.class==="saas"){if(!_.storage)$.addIssue({code:E.ZodIssueCode.custom,message:"saas repos must declare storage",path:["storage"]});else{if(_.storage.mode!=="postgres")$.addIssue({code:E.ZodIssueCode.custom,message:"saas repos must use the postgres storage backend",path:["storage","mode"]});if(!_.storage.envPrefix)$.addIssue({code:E.ZodIssueCode.custom,message:"saas storage requires envPrefix for the public DATABASE_URL contract",path:["storage","envPrefix"]})}if(!U("-serve"))$.addIssue({code:E.ZodIssueCode.custom,message:`saas repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"saas repos must declare at least one service surface",path:["serviceSurfaces"]})}for(let[A,L]of _.serviceSurfaces.entries()){if(L.bin&&!g.has(L.bin))$.addIssue({code:E.ZodIssueCode.custom,message:`Service surface bin "${L.bin}" must be declared in bins`,path:["serviceSurfaces",A,"bin"]});if(L.mcpBin&&!g.has(L.mcpBin))$.addIssue({code:E.ZodIssueCode.custom,message:`Service surface MCP bin "${L.mcpBin}" must be declared in bins`,path:["serviceSurfaces",A,"mcpBin"]})}let I=_.metadata?.conformance?.waivedSurfaces??[],j=new Set;for(let[A,L]of I.entries()){if(j.has(L.kind))$.addIssue({code:E.ZodIssueCode.custom,message:`Duplicate conformance waiver for ${L.kind}`,path:["metadata","conformance","waivedSurfaces",A,"kind"]});j.add(L.kind)}let N=_.metadata?.conformance?.waivedStorageEngines??[],O=new Set;for(let[A,L]of N.entries()){if(O.has(L.engine))$.addIssue({code:E.ZodIssueCode.custom,message:`Duplicate storage-engine waiver for ${L.engine}`,path:["metadata","conformance","waivedStorageEngines",A,"engine"]});O.add(L.engine)}}),Md=E.object({status:E.enum(["ok","degraded","unavailable"]),version:E.string().min(1),mode:p8}).strict(),Zd=E.object({ready:E.boolean(),reason:E.string().min(1).optional()}).strict(),bd=E.object({version:E.string().min(1)}).strict(),Xv=E.enum(["info","notice","breaking","critical"]),Gv=E.string().regex(/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*){1,3}$/,"Comms event types must be 2-4 lowercase dot-separated segments (..)"),Rv=["FREEZE","UNFREEZE","BREAKING","CUTOVER","POLICY","RELEASE"],Yv=E.enum(Rv);var Qv=E.enum(["fleet","package","machine"]),DR=L_(x.commsEventEnvelope).extend({type:Gv,severity:Xv,scope:Qv,summary:E.string().min(1).optional(),source:m$.optional(),affected_packages:E.array(t).default([]),affected_machines:E.array(t).default([]),action_required:E.boolean().default(!1),ack_by:F_.optional(),dedupe_key:t,resourceRefs:E.array(s).default([]),evidenceRefs:E.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.scope==="package"&&_.affected_packages.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Package-scoped comms events require affected_packages",path:["affected_packages"]});if(_.scope==="machine"&&_.affected_machines.length===0)$.addIssue({code:E.ZodIssueCode.custom,message:"Machine-scoped comms events require affected_machines",path:["affected_machines"]});if(_.ack_by&&!_.action_required)$.addIssue({code:E.ZodIssueCode.custom,message:"Comms events with an ack_by deadline require action_required",path:["action_required"]});if(_.type==="fleet.freeze"||_.type==="fleet.unfreeze"){if(_.severity!=="critical")$.addIssue({code:E.ZodIssueCode.custom,message:`${_.type} events are always critical`,path:["severity"]});if(_.scope!=="fleet")$.addIssue({code:E.ZodIssueCode.custom,message:`${_.type} events are always fleet-scoped`,path:["scope"]});if(!_.action_required)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.type} events require action_required`,path:["action_required"]})}}),Tv=E.enum(["fleet","package","product","loop-lane","initiative","personal"]),Bv=E.enum(["quiet","work","firehose"]),qv=t.refine((_)=>/^(?:\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?Z)?|gate:[0-9a-f][0-9a-f-]{7,35})$/.test(_),"until must be an ISO date (YYYY-MM-DD), a UTC timestamp, or a gate id (gate:)"),Vv=L_(x.commsChannelMetadata).extend({class:Tv,noise:Bv.optional(),owner:t.optional(),until:qv.optional(),successor:t.optional()}).strict().superRefine((_,$)=>{if(_.class==="initiative"){if(!_.owner)$.addIssue({code:E.ZodIssueCode.custom,message:"Initiative channels require an owner",path:["owner"]});if(!_.until)$.addIssue({code:E.ZodIssueCode.custom,message:"Initiative channels require an until horizon (date or gate id)",path:["until"]})}}),T8={FREEZE:{defaultSeverity:"critical",allowedSeverities:["critical"],requiredEventType:"fleet.freeze"},UNFREEZE:{defaultSeverity:"critical",allowedSeverities:["critical"],requiredEventType:"fleet.unfreeze"},BREAKING:{defaultSeverity:"breaking",allowedSeverities:["breaking"],requiredEventType:null},CUTOVER:{defaultSeverity:"notice",allowedSeverities:["notice","breaking"],requiredEventType:null},POLICY:{defaultSeverity:"breaking",allowedSeverities:["notice","breaking"],requiredEventType:null},RELEASE:{defaultSeverity:"info",allowedSeverities:["info","notice"],requiredEventType:null}},Fv=L_(x.commsMessageMetadata).extend({tag:Yv,envelope:DR}).strict().superRefine((_,$)=>{let D=T8[_.tag];if(!D.allowedSeverities.includes(_.envelope.severity))$.addIssue({code:E.ZodIssueCode.custom,message:`[${_.tag}] posts allow severities ${D.allowedSeverities.join(", ")}`,path:["envelope","severity"]});if(D.requiredEventType&&_.envelope.type!==D.requiredEventType)$.addIssue({code:E.ZodIssueCode.custom,message:`[${_.tag}] posts require event type ${D.requiredEventType}`,path:["envelope","type"]});for(let[g,U]of Object.entries(T8))if(U.requiredEventType===_.envelope.type&&_.tag!==g)$.addIssue({code:E.ZodIssueCode.custom,message:`${_.envelope.type} events must use the [${g}] tag`,path:["tag"]})});var Kv={[x.actorRef]:aH,[x.resourceRef]:sH,[x.evidenceRef]:$k,[x.workRun]:LC,[x.taskToPrProjection]:hC,[x.decisionEnvelope]:r8,[x.costEstimate]:Tg,[x.capabilityCard]:Uk,[x.providerLiveModeStandard]:Ok,[x.contextPack]:u8,[x.integrationRef]:x8,[x.projectManifest]:zk,[x.projectPanel]:y8,[x.projectSnapshot]:qk,[x.renderManifest]:Gk,[x.agentTrajectory]:nC,[x.validationPlan]:Vk,[x.proofBundle]:AC,[x.scaffoldManifest]:kk,[x.scaffoldInstallRecord]:vk,[x.appCloudManifest]:n8,[x.noCloudEvidencePack]:EC,[x.secureLocalStorePolicy]:$R,[x.serviceContract]:Wv,[x.commsEventEnvelope]:DR,[x.commsChannelMetadata]:Vv,[x.commsMessageMetadata]:Fv,[x.app]:ck,[x.release]:dk,[x.rolloutRecord]:lk,[x.announcement]:ek,[x.audience]:UC};class UR extends Error{schemaId;issues;constructor(_,$){super(`Contract validation failed for ${_}`);this.name="ContractValidationError",this.schemaId=_,this.issues=$}}function gR(_,$){let g=Kv[_].safeParse($);if(!g.success)throw new UR(_,g.error.issues);return g.data}var Hd=String.raw`(?:^|[^\w$])(?:_*(?:import|require)|createRequire|Module\s*\.\s*_load)`;var Dz=[{pattern:"@hasna/cloud",kind:"module",message:"Shared @hasna/cloud runtime reference is forbidden"},{pattern:"open-cloud",kind:"module",message:"Shared open-cloud runtime reference is forbidden"},{pattern:"cloud-mcp",kind:"module",message:"Legacy cloud-mcp runtime surface is forbidden"},{pattern:"registerCloudTools",kind:"symbol",message:"Legacy registerCloudTools runtime surface is forbidden"},{pattern:"registerCloudCommands",kind:"symbol",message:"Legacy registerCloudCommands runtime surface is forbidden"},{pattern:".hasna/cloud",kind:"config",checkKind:"runtime_config",message:"Legacy .hasna/cloud runtime config is forbidden"},{pattern:"HASNA_CLOUD_",kind:"config",message:"Shared HASNA_CLOUD_* runtime config is forbidden"},{pattern:"HASNA_RDS_PASSWORD",kind:"config",message:"Legacy shared RDS credential config is forbidden"}],kd=Dz.filter((_)=>("checkKind"in _)),Mv=Dz.filter((_)=>_.kind==="module"),Cd=[...new Set([...NN,...Mv.map((_)=>_.pattern)])],vd=Dz.filter((_)=>_.kind==="config");var B8="^[^\\u0000-\\u001f\\u007f]*$",fd={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://github.com/hasna/contracts/schema/hasna.service_contract.v1.json",title:"Hasna Service Contract v1",description:"Repo self-description (hasna.contract.json) for the Hasna Service Contract v1. Hosting story, product surfaces, and storage capabilities are separate declarations; the storage backend (sqlite | postgres) is the only runtime switch.",type:"object",additionalProperties:!1,required:["schema","name","class","contractVersion","kitVersion"],allOf:[{if:{required:["class"],properties:{class:{const:"saas"}}},then:{required:["storage"],properties:{storage:{required:["mode","envPrefix"],properties:{mode:{const:"postgres"}}}}}}],properties:{$schema:{type:"string",description:"Optional editor hint pointing at this JSON Schema."},schema:{const:x.serviceContract},name:{type:"string",pattern:"^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",description:"Lowercase dashed app short-name, e.g. todos, mailery, loops."},class:{enum:["library","cli-with-store","service","saas"]},contractVersion:{const:"v1"},kitVersion:{type:"string",minLength:1,description:"Version of @hasna/contracts (the contract kit) the repo tracks."},description:{type:"string",minLength:1},bins:{type:"array",items:{type:"string",minLength:1},description:"Declared bins. Allowlisted: , -cli, -mcp, -serve, -worker, -runner, -daemon, -migrate, -doctor."},hosting:{type:"array",items:{enum:["user-hosted","hasna-saas"]},minItems:1,uniqueItems:!0,description:"Customer-facing product stories. Public OSS cores include user-hosted; add hasna-saas only when a managed control plane exists."},serviceSurfaces:{type:"array",items:{type:"object",additionalProperties:!1,required:["name","status","authMode"],allOf:[{if:{required:["status"],properties:{status:{const:"supported"},kind:{const:"api"}}},then:{required:["bin","health","readiness","version"]}}],properties:{name:{type:"string",minLength:1},kind:{enum:["api","sdk","mcp","cli"]},status:{enum:["supported","deferred","unsupported"]},bin:{type:"string",minLength:1},mcpBin:{type:"string",minLength:1},authMode:{enum:["none","local-only","api-key","session","service-token","custom"]},health:{type:"object",additionalProperties:!1,required:["method","path"],properties:{method:{const:"GET"},path:{type:"string",pattern:"^/[A-Za-z0-9_./:*-]*$"},public:{type:"boolean"},description:{type:"string",minLength:1}}},readiness:{type:"object",additionalProperties:!1,required:["method","path"],properties:{method:{const:"GET"},path:{type:"string",pattern:"^/[A-Za-z0-9_./:*-]*$"},public:{type:"boolean"},description:{type:"string",minLength:1}}},version:{type:"object",additionalProperties:!1,required:["method","path"],properties:{method:{const:"GET"},path:{type:"string",pattern:"^/[A-Za-z0-9_./:*-]*$"},public:{type:"boolean"},description:{type:"string",minLength:1}}},apiBasePath:{type:"string",pattern:"^/v[0-9]+$"},openApiPath:{type:"string",pattern:"^/[A-Za-z0-9_./:-]*$"},exportSubpath:{type:"string",pattern:"^\\.(?:\\/[A-Za-z0-9_.-]+(?:\\/[A-Za-z0-9_.-]+)*)?$",description:"SDK package export key such as . or ./sdk."},generatedFrom:{type:"string",pattern:"^/[A-Za-z0-9_./:-]*$",description:"OpenAPI path used to generate the SDK."},clientClassName:{type:"string",pattern:"^[A-Za-z_$][A-Za-z0-9_$]*$"},deferReason:{type:"string",minLength:1},readinessGates:{type:"array",items:{type:"object",additionalProperties:!1,required:["id","kind"],properties:{id:{type:"string",minLength:1},kind:{enum:["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]},required:{type:"boolean"},command:{type:"string",minLength:1},evidenceRef:{type:"object"},status:{enum:["pending","passed","failed","blocked","deferred"]},summary:{type:"string",minLength:1}}}}}},description:"Declared API, SDK, MCP, and CLI product surfaces. Legacy entries without kind remain parseable; new manifests declare kind explicitly."},storage:{type:"object",additionalProperties:!1,required:["mode"],properties:{mode:{enum:["sqlite","postgres"],description:"Active data backend. sqlite|postgres ONLY \u2014 the single runtime switch."},engines:{type:"array",items:{enum:["sqlite","postgres"]},minItems:1,uniqueItems:!0,description:"Supported storage engines; capability metadata independent of the active backend."},envPrefix:{type:"string",pattern:"^HASNA_[A-Z][A-Z0-9]*_$",description:"Primary env prefix, e.g. HASNA_TODOS_."},aliasEnvPrefix:{type:"string",pattern:"^[A-Z][A-Z0-9]*_$",description:"Optional short alias env prefix, e.g. TODOS_."},databaseUrlSecretRef:{type:"string",pattern:"^hasna/oss/[a-z0-9-]+/database-url$",description:"Legacy/private-tier database secret ref. Public conformance rejects this field."},sqlitePath:{type:"string",pattern:"\\.db$",description:"Local sqlite path (~/.hasna//.db)."},pgTestGate:{type:"object",additionalProperties:!1,required:["envVar","command"],properties:{envVar:{type:"string",pattern:"^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$"},command:{type:"string",minLength:1}},description:"Environment-gated live PostgreSQL test command."}}},metadata:{type:"object",additionalProperties:!0,properties:{conformance:{type:"object",additionalProperties:!0,properties:{waiverProfile:{const:"non-node-monorepo",description:"Explicit surface-waiver eligibility for exceptional non-Node monorepos. Libraries are eligible for API/MCP waivers without this profile."},waivedSurfaces:{type:"array",uniqueItems:!0,items:{type:"object",additionalProperties:!1,required:["kind","reason"],properties:{kind:{enum:["api","sdk","mcp","cli"]},reason:{type:"string",minLength:1}}}},waivedStorageEngines:{type:"array",uniqueItems:!0,maxItems:mP.length,items:{type:"object",additionalProperties:!1,required:["engine","reason"],properties:{engine:{enum:[...mP]},reason:{type:"string",minLength:1,maxLength:_z,allOf:[{pattern:"\\S"},{pattern:B8}]},reviewedBy:{type:"string",minLength:1,maxLength:$z,allOf:[{pattern:"\\S"},{pattern:B8}]},expiresAt:{type:"string",format:"date-time"}}},description:"Explicit storage-engine exceptions, at most one per engine. Only a CLI-only cli-with-store repo (no -serve bin, storage.mode sqlite, no hasna-saas story) may waive postgres; sqlite is never waivable, expiresAt is a UTC RFC 3339 timestamp, and conformance stops honouring a waiver once it has passed."}}}}}}};var Zv="2026-07-06";function c$(_,$,D,g,U,I=[],j){return{id:_,description:$,ttlDays:D,artifactClasses:g,allowlistGlobs:U,activeRecordExclusions:I.map((N)=>({...N,required:N.required??!0})),sqliteMaintenance:j}}var wd=$R.parse({schema:x.secureLocalStorePolicy,id:"hasna-secure-local-store-defaults",createdAt:"2026-07-06T00:00:00.000Z",version:Zv,scope:[".hasna",".codewith"],defaults:{directoryMode:"0700",fileMode:"0600",dryRunDefault:!0,requireExplicitApply:!0,includeSqliteSidecars:!0,redactedEvidenceOnly:!0},lifecycle:{retentionDryRunDefault:!0,requireActiveRecordExclusionProof:!0,requireArtifactAllowlist:!0,sqliteMaintenanceRequiresExclusiveAccess:!0},stores:[{storeId:"codewith",packageName:"codewith",displayName:"Codewith native state",root:".codewith",relativePath:".",sqliteDatabaseGlobs:["logs_*.sqlite","state_*.sqlite","goals_*.sqlite"],sensitiveFileGlobs:["sessions/**/*.jsonl","shell_snapshots/**/*","logs*.sqlite","state*.sqlite","goals*.sqlite"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("codewith-session-snapshots","Codewith sessions, shell snapshots, logs, monitor output, mailbox payloads, and scheduler state need package-owned redaction before retention applies.",30,["session","snapshot","log"],["sessions/**/*.jsonl","shell_snapshots/**/*","logs/**/*"],[{id:"codewith-active-session",source:"package_adapter",description:"Exclude currently active sessions, leased schedules, monitors, pending interactions, and active goal rows."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})],notes:["Includes native .codewith DBs and transcript-like artifacts; redaction-before-persistence remains package-owned."]},{storeId:"todos",packageName:"@hasna/todos",displayName:"Todos",root:".hasna",relativePath:"todos",sqliteDatabaseGlobs:["todos.db"],sensitiveFileGlobs:["todos.db","todos.db-wal","todos.db-shm","exports/**/*","backups/**/*"],backupGlobs:["backups/**/*","*.bak","*.backup"],exportGlobs:["exports/**/*","*.jsonl","*.csv"],retentionAdapters:[c$("todos-exports-backups","Todos backups and exports are deleted only after package redaction and active task/evidence references are excluded.",14,["backup","export"],["backups/**/*","exports/**/*"],[{id:"todos-active-evidence",source:"sqlite",table:"task_files",column:"path",description:"Exclude files still referenced by active tasks, verification evidence, task comments, or handoff records."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"conversations",packageName:"@hasna/conversations",displayName:"Conversations",root:".hasna",relativePath:"conversations",sqliteDatabaseGlobs:["messages.db"],sensitiveFileGlobs:["messages.db","messages.db-wal","messages.db-shm","exports/**/*","attachments/**/*"],backupGlobs:["backups/**/*","*.bak"],exportGlobs:["exports/**/*","*.json","*.csv"],retentionAdapters:[c$("conversations-exports-attachments","Conversation exports and attachments require message-id redaction and active attachment reference checks before deletion.",14,["export","backup"],["exports/**/*","backups/**/*","attachments/**/*"],[{id:"conversations-active-attachments",source:"sqlite",table:"messages",column:"attachments",description:"Exclude attachments still referenced by retained messages or audited redaction records."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"mementos",packageName:"@hasna/mementos",displayName:"Mementos",root:".hasna",relativePath:"mementos",sqliteDatabaseGlobs:["mementos.db"],sensitiveFileGlobs:["mementos.db","mementos.db-wal","mementos.db-shm","exports/**/*","backups/**/*"],backupGlobs:["backups/**/*","*.bak"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("mementos-audit-search-history","Mementos retention must preserve active memory versions while compacting audit/search surfaces through package-owned adapters.",30,["backup","export","log"],["backups/**/*","exports/**/*","audit/**/*"],[{id:"mementos-active-memory-versions",source:"sqlite",table:"memory_versions",column:"memory_id",description:"Exclude current memory versions and audit entries required for provenance."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"knowledge",packageName:"@hasna/knowledge",displayName:"Knowledge",root:".hasna",relativePath:"knowledge",sqliteDatabaseGlobs:["knowledge.db"],sensitiveFileGlobs:["knowledge.db","knowledge.db-wal","knowledge.db-shm","db.json","migration-exports/**/*","*.bak"],backupGlobs:["*.bak","backups/**/*","*.pre-cloud-*"],exportGlobs:["migration-exports/**/*","exports/**/*","*.jsonl"],retentionAdapters:[c$("knowledge-migrations-exports","Knowledge migration exports and pre-cloud backups require replacement, encryption, or redaction before retention deletion.",14,["backup","export"],["migration-exports/**/*","exports/**/*","*.bak","*.pre-cloud-*"],[{id:"knowledge-current-catalog",source:"manifest",description:"Exclude files referenced by the active catalog or migration ledger."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"projects",packageName:"@hasna/projects",displayName:"Projects",root:".hasna",relativePath:"projects",sqliteDatabaseGlobs:["projects.db","data/*/project.db"],sensitiveFileGlobs:["projects.db","projects.db-wal","projects.db-shm","data/*/project.db","data/*/project.db-wal","data/*/project.db-shm","reports/**/*"],backupGlobs:["backups/**/*","data/*/backups/**/*"],exportGlobs:["reports/**/*","exports/**/*"],retentionAdapters:[c$("projects-reports-workspaces","Project reports, dashboards, workspaces, and per-project DBs need active workspace/location references before cleanup.",30,["backup","export","report","tmp"],["backups/**/*","reports/**/*","workspaces/**/*","data/*/backups/**/*"],[{id:"projects-active-workspaces",source:"sqlite",table:"workspaces",column:"primary_path",description:"Exclude active workspace paths, locations, linked reports, and project store artifacts."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"browser",packageName:"@hasna/browser",displayName:"Browser",root:".hasna",relativePath:"browser",sqliteDatabaseGlobs:["browser.db"],sensitiveFileGlobs:["browser.db","browser.db-wal","browser.db-shm","profiles/**/cookies.json","states/**/*.json","auth/**/*"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*","traces/**/*","har/**/*"],retentionAdapters:[c$("browser-auth-traces","Browser state, trace, HAR, and auth artifacts require session invalidation or redaction before deletion.",7,["backup","export","session","snapshot"],["profiles/**/*","states/**/*","traces/**/*","har/**/*","exports/**/*"],[{id:"browser-active-profiles",source:"sqlite",table:"sessions",column:"profile_path",description:"Exclude profiles, cookies, and storage state used by active browser sessions."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"terminal",packageName:"@hasna/terminal",displayName:"Terminal",root:".hasna",relativePath:"terminal",sqliteDatabaseGlobs:["sessions.db"],sensitiveFileGlobs:["sessions.db","sessions.db-wal","sessions.db-shm","exports/**/*"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("terminal-sessions","Terminal sessions and interactions need active session exclusion plus command-output redaction before retention.",30,["backup","export","session","log"],["backups/**/*","exports/**/*","sessions/**/*"],[{id:"terminal-active-sessions",source:"sqlite",table:"sessions",column:"id",description:"Exclude active terminal session records and any linked interaction artifacts."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"logs",packageName:"@hasna/logs",displayName:"Logs",root:".hasna",relativePath:"logs",sqliteDatabaseGlobs:["logs.db"],sensitiveFileGlobs:["logs.db","logs.db-wal","logs.db-shm","exports/**/*"],backupGlobs:["backups/**/*"],exportGlobs:["exports/**/*"],retentionAdapters:[c$("logs-retention","Logs require redaction before compaction and must preserve active incident/evidence references.",14,["backup","export","log"],["backups/**/*","exports/**/*","*.log","logs/**/*"],[{id:"logs-active-evidence",source:"sqlite",table:"logs",column:"id",description:"Exclude log rows or files linked to active incidents, tasks, or proof bundles."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]},{storeId:"loops",packageName:"@hasna/loops",displayName:"OpenLoops",root:".hasna",relativePath:"loops",sqliteDatabaseGlobs:["loops.db","state.db","*.sqlite"],sensitiveFileGlobs:["*.db","*.sqlite","*.db-wal","*.db-shm","reports/**/*","tmp/**/*","runs/**/*"],backupGlobs:["backups/**/*","tmp/**/*"],exportGlobs:["reports/**/*","runs/**/*","exports/**/*"],retentionAdapters:[c$("loops-reports-tmp","Loop reports, tmp files, workflow artifacts, and command output need run-state checks and redaction before retention deletion.",14,["backup","export","report","tmp","log"],["reports/**/*","tmp/**/*","runs/**/*","exports/**/*"],[{id:"loops-active-runs",source:"sqlite",table:"loop_runs",column:"id",description:"Exclude active, leased, recently failed, or evidence-linked loop and workflow run artifacts."}],{safeWhen:"exclusive_access",operations:["wal_checkpoint_truncate","optimize"]})]}],warnings:["This package publishes declarations only; each owning package implements and verifies its own local-store lifecycle.","Retention and redaction evidence remain package-owned and must preserve active-record exclusions.","SQLite maintenance is descriptive policy metadata only and is never executed by @hasna/contracts."]});var bv=64,rd=new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${bv-1}}$`),gD="[0-9a-fA-F]",ud=new RegExp(`^\\{?(?:${gD}{8}-${gD}{4}-${gD}{4}-${gD}{4}-${gD}{12}|${gD}{32})\\}?$`);var Hv=/^hasna_([a-z][a-z0-9-]*)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;var xd=new RegExp(Hv.source.replace(/^\^/,"\\b").replace(/\$$/,"\\b"));var IR="@hasna/knowledge";function kv(_){if(!Number.isFinite(_??0))return 20;return Math.max(1,Math.min(100,Math.trunc(_??20)))}function Cv(_){return _.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")||"project"}function Bg(_,$=180){let D=String(_??"").replace(/\s+/g," ").trim();if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-3))}...`}function C_(_,$=""){return typeof _==="string"&&_.length>0?_:$}function qg(_){return typeof _==="number"&&Number.isFinite(_)?_:0}function VD(_){if(typeof _!=="string"||_.length===0)return;let $=_.includes("T")?_:`${_.replace(" ","T")}Z`,D=new Date($);return Number.isNaN(D.valueOf())?void 0:D.toISOString()}function SN(_){return H$.safeParse(_).success}function k$(_,$,D,g,U=[]){return{kind:_,id:$,name:D,uri:g&&SN(g)?g:void 0,externalId:$,sourcePackage:IR,tags:U}}function vv(_){return[..._.items.flatMap((D)=>[D.updated_at,D.created_at]),..._.sources.flatMap((D)=>[D.updated_at,D.created_at]),..._.chunks.map((D)=>D.created_at),..._.wiki_pages.flatMap((D)=>[D.updated_at,D.created_at]),..._.storage_objects.flatMap((D)=>[D.updated_at,D.created_at]),..._.runs.flatMap((D)=>[D.updated_at,D.created_at]),..._.reindex_queue.flatMap((D)=>[D.updated_at,D.created_at]),..._.sync_conflicts.map((D)=>D.created_at),..._.approval_gates.flatMap((D)=>[D.updated_at,D.created_at])].map(VD).filter(Boolean).sort((D,g)=>g.localeCompare(D))[0]}function fv(_){if(!_)return"unknown";let $=Date.now()-new Date(_).valueOf();if(!Number.isFinite($))return"unknown";return $>2592000000?"stale":"fresh"}function wv(_){let $=(D)=>{let g=String(D??"").toLowerCase();return g!==""&&!["done","complete","completed","resolved","succeeded","skipped"].includes(g)};return _.reindex_queue.filter((D)=>$(D.status)).length+_.sync_conflicts.filter((D)=>$(D.status)).length+_.approval_gates.filter((D)=>$(D.status)).length}function rv(_,$){let D=[];for(let g of _.items.slice(0,$))D.push({id:`item_${g.id}`,title:g.title,summary:Bg(g.content_preview),status:g.archived?"archived":"active",priority:"medium",timestamp:VD(g.updated_at??g.created_at),resourceRefs:[k$("knowledge",g.id,g.title,`knowledge://item/${encodeURIComponent(g.id)}`,g.tags)],evidenceRefs:g.url&&SN(g.url)?[{id:`url_${g.id}`,kind:"url",uri:g.url,summary:"Source URL for this knowledge item."}]:[],metadata:{source:"legacy_store",archived:g.archived,tags:g.tags,url:g.url||void 0}});for(let g of _.sources.slice(0,Math.max(0,$-D.length))){let U=C_(g.id,C_(g.uri,"source")),I=C_(g.title,C_(g.uri,U)),j=C_(g.uri,`knowledge://source/${encodeURIComponent(U)}`);D.push({id:`source_${U}`,title:I,summary:Bg(`${qg(g.chunks)} chunk(s), ${qg(g.revisions)} revision(s)`),status:qg(g.chunks)>0?"indexed":"source",priority:"medium",timestamp:VD(g.updated_at??g.created_at),resourceRefs:[k$("document",U,I,j)],evidenceRefs:SN(j)?[{id:`source_${U}`,kind:"url",uri:j,summary:"Source reference."}]:[],metadata:{source:"knowledge_db.sources",kind:g.kind,chunks:qg(g.chunks),revisions:qg(g.revisions)}})}for(let g of _.chunks.slice(0,Math.max(0,$-D.length))){let U=C_(g.id,"chunk"),I=C_(g.source_uri);D.push({id:`chunk_${U}`,title:C_(g.wiki_title,I?`Chunk from ${I}`:`Knowledge chunk ${U}`),summary:Bg(g.text_preview),status:"chunk",priority:"low",timestamp:VD(g.created_at),resourceRefs:[k$("context_pack",U,C_(g.wiki_title,U),`knowledge://chunk/${encodeURIComponent(U)}`)],evidenceRefs:I&&SN(I)?[{id:`chunk_source_${U}`,kind:"url",uri:I,summary:"Chunk source reference."}]:[],metadata:{source:"knowledge_db.chunks",source_uri:I||void 0,token_count:g.token_count,ordinal:g.ordinal}})}for(let g of _.sync_conflicts.slice(0,Math.max(0,$-D.length))){let U=C_(g.id,"sync_conflict");D.push({id:`sync_conflict_${U}`,title:`Sync conflict: ${C_(g.entity_kind,"entity")}/${C_(g.entity_id,U)}`,summary:Bg(`Status ${C_(g.status,"unknown")}; strategy ${C_(g.resolution_strategy,"none")}.`),status:C_(g.status,"unknown"),priority:"critical",timestamp:VD(g.created_at),resourceRefs:[k$("finding",U,"Knowledge sync conflict",`knowledge://sync-conflict/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.sync_conflicts",local_machine_id:g.local_machine_id,remote_machine_id:g.remote_machine_id}})}for(let g of _.reindex_queue.slice(0,Math.max(0,$-D.length))){let U=C_(g.id,"reindex");D.push({id:`reindex_${U}`,title:`Reindex ${C_(g.kind,"item")}: ${C_(g.target_id,U)}`,summary:Bg(g.reason),status:C_(g.status,"unknown"),priority:C_(g.status).toLowerCase()==="failed"?"high":"medium",timestamp:VD(g.updated_at??g.created_at),resourceRefs:[k$("action",U,"Knowledge reindex work item",`knowledge://reindex/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.reindex_queue",attempts:g.attempts,source_uri:g.source_uri}})}return D.slice(0,$)}async function jR(_,$={}){let D=kv($.limit),g=new Date().toISOString(),U=Cv(_),j=await($.service??jN({scope:$.scope??"project",cwd:$.cwd})).resolveInventory({limit:D,storePath:$.storePath,includeArchived:$.includeArchived}),N=vv(j),O=fv(N),A=j.summary.active_items+j.summary.sources+j.summary.chunks+j.summary.wiki_pages+j.summary.storage_objects,L=wv(j),z=A===0?"empty":O==="stale"?"stale":"ready",W=rv(j,D),J={schema:x.projectPanel,id:`knowledge_panel_${U}`,createdAt:g,projectId:U,provider:{kind:"knowledge",id:`knowledge_${U}`,name:"Knowledge",sourcePackage:IR,externalId:j.home},kind:"knowledge",title:"Knowledge",summary:z==="empty"?"No project knowledge items, sources, chunks, or wiki pages are available yet.":`${j.summary.active_items} active note(s), ${j.summary.sources} source(s), ${j.summary.chunks} chunk(s), and ${j.summary.wiki_pages} wiki page(s).`,state:z,stateReason:z==="stale"?"Latest indexed knowledge activity is older than 30 days.":void 0,generatedAt:g,freshness:O,metrics:[{id:"active_items",label:"Active notes",value:j.summary.active_items,status:j.summary.active_items>0?"good":"unknown"},{id:"sources",label:"Sources",value:j.summary.sources,status:j.summary.sources>0?"good":"unknown"},{id:"chunks",label:"Chunks",value:j.summary.chunks,status:j.summary.chunks>0?"good":"unknown"},{id:"wiki_pages",label:"Wiki pages",value:j.summary.wiki_pages,status:j.summary.wiki_pages>0?"good":"unknown"},{id:"artifacts",label:"Artifacts",value:j.summary.storage_objects,status:j.summary.storage_objects>0?"good":"unknown"},{id:"vector_entries",label:"Vector entries",value:j.summary.vector_entries,status:j.summary.vector_entries>0?"good":"unknown"},{id:"unresolved",label:"Unresolved",value:L,status:L>0?"warning":"good"}],items:W,actions:[k$("action","knowledge:inventory","Inspect knowledge inventory"),k$("action","knowledge:context-pack","Build cited context pack"),k$("action","knowledge:ingest","Ingest project source")],resourceRefs:[k$("project",U,_,`project://${U}`),k$("knowledge",`home_${U}`,"Knowledge workspace",`knowledge://workspace/${encodeURIComponent(U)}`),k$("artifact",`db_${U}`,"Knowledge database",`knowledge://db/${encodeURIComponent(U)}`)],renderFragment:{renderer:"json_render",title:"Knowledge",spec:{component:"project.knowledge.summary",metrics:["active_items","sources","chunks","wiki_pages","unresolved"],itemLimit:D}},metadata:{scope:j.scope,home:j.home,json_store_exists:j.paths.json_store_exists,latest_activity_at:N}};return gR(x.projectPanel,J)}function NR(_){let $=[`${_.title}: ${_.state}`,_.summary??"",..._.metrics.map((D)=>`${D.label}: ${D.value}`)].filter(Boolean);if(_.items.length>0){$.push("Items:");for(let D of _.items.slice(0,10))if($.push(`- ${D.title}${D.status?` [${D.status}]`:""}`),D.summary)$.push(` ${D.summary}`)}return $.join(` +`)}var AR=["sources","wiki_pages","source_revisions","chunks","chunk_embeddings","wiki_backlinks","citations","knowledge_indexes","runs","run_events","provider_usage","redaction_findings","storage_objects","audit_events","approval_gates","vector_index_entries","reindex_queue","knowledge_machines","knowledge_sync_snapshots","knowledge_sync_changes","knowledge_sync_conflicts","knowledge_sync_table_clocks","knowledge_sync_imports"];var LR="HASNA_KNOWLEDGE_STORAGE_MODE",JR="KNOWLEDGE_STORAGE_MODE";function ER(_){return process.env[_]?.trim()||void 0}function OR(_){let $=_?.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return"sqlite";if($==="postgres"||$==="postgresql")return"postgres";return}function uv(_={}){let $=U0(Hg(_.scope,_.cwd).home);return h($.knowledgeDbPath),{db:f($.knowledgeDbPath),path:$.knowledgeDbPath,scope:_.scope??"global"}}function PR(){let _=OR(ER(LR))??OR(ER(JR));if(_)return _;return"sqlite"}function Uz(_={}){let $=uv(_);try{xv($.db);let D=$.db.query("SELECT table_name, last_synced_at, direction FROM _knowledge_sync_meta ORDER BY table_name, direction").all();return{mode:PR(),service:"knowledge",scope:$.scope,databasePath:$.path,tables:AR,sync:D}}finally{$.db.close()}}function xv(_){_.exec(` CREATE TABLE IF NOT EXISTS _knowledge_sync_meta ( table_name TEXT NOT NULL, last_synced_at TEXT, direction TEXT NOT NULL CHECK(direction IN ('push', 'pull')), PRIMARY KEY (table_name, direction) ) - `)}var X8=$Y(W8(),1),{program:Nm,createCommand:Em,createArgument:Om,createOption:Am,CommanderError:Lm,InvalidArgumentError:Jm,InvalidOptionArgumentError:Pm,Command:R8,Argument:zm,Option:Sm,Help:Wm}=X8.default;import{chmod as Uz,mkdir as Tv,readFile as qv,rename as Bv,writeFile as T8}from"fs/promises";import{Buffer as b8}from"buffer";import{existsSync as H8}from"fs";import{homedir as Kv}from"os";import{join as FU}from"path";import{createHmac as Hv,timingSafeEqual as Bm}from"crypto";import{randomUUID as rv}from"crypto";import{spawn as vv}from"child_process";import{randomUUID as hv}from"crypto";function zv(_,$){return $.split(".").reduce((g,U)=>{if(g&&typeof g==="object"&&U in g)return g[U];return},_)}function Sv(_,$){let g=[],U=(I)=>{if(!g.some((j)=>Object.is(j,I)))g.push(I)};if($.includes(".")&&$ in _)U(_[$]);let D=zv(_,$);if(D!==void 0||!$.includes("."))U(D);return g}function Wv(_,$={}){let g="";for(let U=0;U<_.length;U+=1){let D=_[U];if(D==="*")if(_[U+1]==="*")g+=".*",U+=1;else g+=$.segmentSafe?"[^/]*":".*";else g+=D.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return new RegExp(`^${g}$`)}function KU(_,$,g={}){if($===void 0)return!0;if(_===void 0)return!1;return(Array.isArray($)?$:[$]).some((D)=>Wv(D,g).test(_))}function G8(_,$){if(!$)return!0;return Object.entries($).every(([g,U])=>{let D=Sv(_,g);return Xv(D,U,g)})}function Xv(_,$,g){if(Yv($))return!_.some((U)=>Y8(U,$.not,g));return _.some((U)=>Y8(U,$,g))}function Y8(_,$,g){if(typeof $==="string"||Array.isArray($))return Rv(_).some((U)=>KU(U,$,{segmentSafe:g.endsWith("_path")||g.endsWith(".path")}));if(Array.isArray(_))return _.some((U)=>U===$);return _===$}function Rv(_){if(_===void 0)return[];if(Array.isArray(_))return _.flatMap(($)=>Gv($)?[String($)]:[]);return[String(_)]}function Gv(_){return _===null||typeof _==="string"||typeof _==="number"||typeof _==="boolean"}function Yv(_){return Boolean(_&&typeof _==="object"&&!Array.isArray(_)&&"not"in _)}function Qv(_,$){return KU(_.source,$.source)&&KU(_.type,$.type)&&KU(_.subject,$.subject)&&KU(_.severity,$.severity)&&G8(_.data,$.data)&&G8(_.metadata,$.metadata)}function Q8(_,$){if(!_.enabled)return!1;if(!_.filters||_.filters.length===0)return!0;return _.filters.some((g)=>Qv($,g))}var RN="HASNA_EVENTS_DIR",GN="HASNA_EVENTS_HOME",Ez="local-json-v1:",Vv=100,Fv=1000;function k8(_){return _||process.env[RN]||process.env[GN]||FU(Kv(),".hasna","events")}function Mv(){if(process.env[RN])return RN;if(process.env[GN])return GN;return null}class YN{dataDir;runtime;channelsPath;eventsPath;deliveriesPath;constructor(_=k8()){this.dataDir=_,this.runtime=Zv(_),this.channelsPath=FU(_,"channels.json"),this.eventsPath=FU(_,"events.json"),this.deliveriesPath=FU(_,"deliveries.json")}async init(){await Tv(this.dataDir,{recursive:!0,mode:448}),await Uz(this.dataDir,448).catch(()=>{return}),await this.ensureArrayFile(this.channelsPath),await this.ensureArrayFile(this.eventsPath),await this.ensureArrayFile(this.deliveriesPath)}async addChannel(_){await this.init();let $=await this.readJson(this.channelsPath,[]),g=$.findIndex((U)=>U.id===_.id);if(g>=0)$[g]={..._,createdAt:$[g].createdAt,updatedAt:new Date().toISOString()};else $.push(_);return await this.writeJson(this.channelsPath,$),g>=0?$[g]:_}async listChannels(){return await this.init(),this.readJson(this.channelsPath,[])}async getChannel(_){return(await this.listChannels()).find((g)=>g.id===_)}async removeChannel(_){await this.init();let $=await this.readJson(this.channelsPath,[]),g=$.filter((U)=>U.id!==_);return await this.writeJson(this.channelsPath,g),g.length!==$.length}async appendEvent(_){await this.init();let $=await this.readJson(this.eventsPath,[]);return $.push(_),await this.writeJson(this.eventsPath,$),_}async appendEventOnce(_,$={}){await this.init();let g=await this.readJson(this.eventsPath,[]);if($.dedupe!==!1){let D=B8(g,{id:_.id,dedupeKey:_.dedupeKey});if(D)return{event:D,stored:!1,deduped:!0,identity:{id:D.id,dedupeKey:D.dedupeKey}}}return g.push(_),await this.writeJson(this.eventsPath,g),{event:_,stored:!0,deduped:!1,identity:{id:_.id,dedupeKey:_.dedupeKey}}}async listEvents(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]);return q8($,_)}async listEventsPage(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]),g=q8($,{eventId:_.eventId,source:_.source,type:_.type}),U=QN(_.cursor,_),D=TN(_.limit),I=g.slice(U,U+D),j=U+I.length,N=j{return})}async readJson(_,$){try{let g=await qv(_,"utf-8");if(!g.trim())return $;return JSON.parse(g)}catch(g){if(g.code==="ENOENT")return $;throw g}}async writeJson(_,$){let g=`${_}.${process.pid}.${Date.now()}.tmp`;await T8(g,`${JSON.stringify($,null,2)} -`,{encoding:"utf-8",mode:384}),await Bv(g,_),await Uz(_,384).catch(()=>{return})}}function Zv(_=k8()){return{mode:"local-files",name:"json-events-store",remote:!1,localFiles:!0,localSqlite:!1,postgres:!1,s3:!1,aws:!1,durable:!0,idempotency:"best-effort-local",replayCursors:!0,description:`Local JSON files in ${_}; no SQLite, Postgres, S3, or AWS runtime is configured by this store.`}}function C8(_,$={}){if(!Number.isInteger(_)||_<0)throw Error(`Invalid event cursor offset: ${_}`);let g={offset:_,eventId:$.eventId,source:$.source,type:$.type};return`${Ez}${b8.from(JSON.stringify(g),"utf-8").toString("base64url")}`}function QN(_,$={}){if(!_)return 0;if(!_.startsWith(Ez))throw Error(`Invalid local JSON event cursor: ${_}`);let g=_.slice(Ez.length),U;try{U=JSON.parse(b8.from(g,"base64url").toString("utf-8"))}catch{throw Error(`Invalid local JSON event cursor: ${_}`)}let D=U.offset;if(!Number.isInteger(D)||D<0)throw Error(`Invalid local JSON event cursor: ${_}`);return Iz("eventId",U.eventId,$.eventId),Iz("source",U.source,$.source),Iz("type",U.type,$.type),D}function TN(_){if(_===void 0)return Vv;if(!Number.isInteger(_)||_<1)throw Error(`Event page limit must be a positive integer, got ${_}`);return Math.min(_,Fv)}function q8(_,$){let g=_;if($.eventId)g=g.filter((U)=>U.id===$.eventId);if($.source)g=g.filter((U)=>U.source===$.source);if($.type)g=g.filter((U)=>U.type===$.type);if($.cursor){let U=QN($.cursor,$);g=g.slice(U)}if($.limit!==void 0)g=g.slice(0,TN($.limit));return g}function Iz(_,$,g){if($!==g)throw Error(`Local JSON event cursor ${_} filter mismatch`)}function B8(_,$){return _.find((g)=>$.id!==void 0&&g.id===$.id||$.dedupeKey!==void 0&&g.dedupeKey===$.dedupeKey)}async function bv(_){let $=new YN(_);await $.init();let[g,U,D]=await Promise.all([$.listChannels(),$.listEvents(),$.listDeliveries()]),I=g.reduce((j,N)=>{return j[N.transport]=(j[N.transport]??0)+1,j},{});return{service:"events",schemaVersion:"1.0",dataDir:$.dataDir,storage:$.runtime,env:{primary:RN,fallback:GN,active:Mv()},files:{channels:jz($.dataDir,"channels.json",g.length),events:jz($.dataDir,"events.json",U.length),deliveries:jz($.dataDir,"deliveries.json",D.length)},counts:{channels:g.length,enabledChannels:g.filter((j)=>j.enabled).length,disabledChannels:g.filter((j)=>!j.enabled).length,events:U.length,deliveries:D.length},transports:I,safety:{includesEventPayloads:!1,includesWebhookSecrets:!1,listOutputsRedactSecrets:!0,statusOutputIsMetadataOnly:!0}}}function jz(_,$,g){let U=FU(_,$);return{path:U,exists:H8(U),records:g}}function kv(_,$){return`${_}.${$}`}function Cv(_,$,g){return`sha256=${Hv("sha256",_).update(kv($,g)).digest("hex")}`}function i$(){return new Date().toISOString()}function VU(_,$=4096){return _.length>$?`${_.slice(0,$)}...`:_}function wv(_,$){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let g=JSON.stringify(_),U=_.time,D={"Content-Type":"application/json","User-Agent":"@hasna/events","X-Hasna-Event-Id":_.id,"X-Hasna-Event-Type":_.type,"X-Hasna-Timestamp":U,...$.webhook.headers};if($.webhook.secret)D["X-Hasna-Signature"]=Cv($.webhook.secret,U,g);return{body:g,headers:D}}async function fv(_,$,g={}){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let U=i$(),{body:D,headers:I}=wv(_,$),j=new AbortController,N=setTimeout(()=>j.abort(),$.webhook.timeoutMs??15000);try{let O=await(g.fetchImpl??fetch)($.webhook.url,{method:"POST",headers:I,body:D,signal:j.signal}),A=VU(await O.text());return{attempt:1,status:O.ok?"success":"failed",startedAt:U,completedAt:i$(),responseStatus:O.status,responseBody:A,error:O.ok?void 0:`Webhook returned HTTP ${O.status}`}}catch(O){return{attempt:1,status:"failed",startedAt:U,completedAt:i$(),error:O instanceof Error?O.message:String(O)}}finally{clearTimeout(N)}}async function uv(_,$){if(!$.command)throw Error(`Channel ${$.id} has no command config`);let g=i$(),U=JSON.stringify(_),D={...process.env,...$.command.env,HASNA_CHANNEL_ID:$.id,HASNA_EVENT_ID:_.id,HASNA_EVENT_TYPE:_.type,HASNA_EVENT_SOURCE:_.source,HASNA_EVENT_SUBJECT:_.subject??"",HASNA_EVENT_SEVERITY:_.severity,HASNA_EVENT_TIME:_.time,HASNA_EVENT_DEDUPE_KEY:_.dedupeKey??"",HASNA_EVENT_SCHEMA_VERSION:_.schemaVersion,HASNA_EVENT_JSON:U};return new Promise((I)=>{let j=vv($.command.command,$.command.args??[],{cwd:$.command.cwd,env:D,stdio:["pipe","pipe","pipe"]}),N="",O="",A=setTimeout(()=>j.kill("SIGTERM"),$.command.timeoutMs??15000);j.stdin.end(U),j.stdout.on("data",(L)=>{N+=L.toString()}),j.stderr.on("data",(L)=>{O+=L.toString()}),j.on("error",(L)=>{clearTimeout(A),I({attempt:1,status:"failed",startedAt:g,completedAt:i$(),stdout:VU(N),stderr:VU(O),error:L.message})}),j.on("close",(L,z)=>{clearTimeout(A);let W=L===0;I({attempt:1,status:W?"success":"failed",startedAt:g,completedAt:i$(),stdout:VU(N),stderr:VU(O),error:W?void 0:`Command exited with ${z?`signal ${z}`:`code ${L}`}`})})})}async function xv(_,$,g={}){if($.transport==="webhook")return fv(_,$,g);if($.transport==="command")return uv(_,$);return{attempt:1,status:"skipped",startedAt:i$(),completedAt:i$(),error:`Unsupported transport: ${$.transport}`}}function K8(_,$,g){let U=g.some((D)=>D.status==="success")?"success":g.every((D)=>D.status==="skipped")?"skipped":"failed";return{id:rv(),eventId:_.id,channelId:$.id,transport:$.transport,status:U,attempts:g,createdAt:g[0]?.startedAt??i$(),completedAt:g.at(-1)?.completedAt??i$()}}class r8 extends Error{eventType;issues;constructor(_,$){let g=$.map((U)=>`${U.path||""}: ${U.message}`).join("; ");super(`Event validation failed for type "${_}": ${g}`);this.name="EventValidationError",this.eventType=_,this.issues=$}}class v8{definitions=new Map;register(_){return this.definitions.set(_.type,_),this}unregister(_){return this.definitions.delete(_)}has(_){return this.definitions.has(_)}get(_){return this.definitions.get(_)}list(){return[...this.definitions.values()]}validateEvent(_){let $=this.definitions.get(_.type);if(!$)return{ok:!0};return $.validate(_.data,_)}assertEventValid(_){let $=this.validateEvent(_);if(!$.ok)throw new r8(_.type,$.issues)}}var yv=new v8;function Nz(_){return{id:_.id??hv(),source:_.source,type:_.type,time:iv(_.time),subject:_.subject,severity:_.severity??"info",data:_.data??{},message:_.message,dedupeKey:_.dedupeKey,schemaVersion:_.schemaVersion??"1.0",metadata:_.metadata??{}}}class w8{store;redactors;transportOptions;catalog;validateCatalogTypes;constructor(_={}){this.store=_.store??new YN(_.dataDir),this.redactors=_.redactors??[],this.transportOptions={fetchImpl:_.fetchImpl},this.catalog=_.catalog??yv,this.validateCatalogTypes=_.validateCatalogTypes??!1}async addChannel(_){let $=new Date().toISOString();return this.store.addChannel({..._,createdAt:_.createdAt??$,updatedAt:_.updatedAt??$})}async listChannels(){return this.store.listChannels()}async removeChannel(_){return this.store.removeChannel(_)}async emit(_,$={}){let g=$.redactSensitiveData===!1?Nz(_):dv(Nz(_));if($.validate??this.validateCatalogTypes)this.catalog.assertEventValid(g);let U=await this.appendEvent(g,{dedupe:$.dedupe!==!1});if(U.deduped)return{event:U.event,deliveries:[],deduped:!0};let D=$.deliver===!1?[]:await this.deliver(U.event);return{event:U.event,deliveries:D,deduped:!1}}async listEvents(_={}){if(Object.keys(_).length===0)return this.store.listEvents();return V8(await this.store.listEvents(),_)}async listEventsPage(_={}){if(this.store.listEventsPage)return this.store.listEventsPage(_);let $=V8(await this.store.listEvents(),{eventId:_.eventId,source:_.source,type:_.type}),g=QN(_.cursor,_),U=TN(_.limit),D=$.slice(g,g+U),I=g+D.length,j=I<$.length;return{events:D,cursor:_.cursor,nextCursor:j?C8(I,_):void 0,hasMore:j}}async listDeliveries(){return this.store.listDeliveries()}async deliver(_){let g=(await this.store.listChannels()).filter((D)=>Q8(D,_)),U=[];for(let D of g){let I=await this.applyRedaction(_,D),j=await this.deliverWithRetry(I,D);await this.store.appendDelivery(j),U.push(j)}return U}async matchChannel(_,$={}){let g=await this.store.getChannel(_);if(!g)throw Error(`Channel not found: ${_}`);let U=Nz({source:$.source??"hasna.events",type:$.type??"events.test",subject:$.subject??_,severity:$.severity??"info",data:$.data??{test:!0},message:$.message??"Hasna events test delivery",dedupeKey:$.dedupeKey,schemaVersion:$.schemaVersion,metadata:$.metadata,time:$.time,id:$.id}),D=Q8(g,U);return{channelId:g.id,matched:D,event:U,filters:g.filters,reason:D?void 0:g.enabled?"event did not match channel filters":"channel is disabled"}}async testChannel(_,$={},g={}){let U=await this.store.getChannel(_);if(!U)throw Error(`Channel not found: ${_}`);let D=await this.matchChannel(_,$),I=D.event;if(g.honorFilters&&!D.matched){let O=new Date().toISOString(),A=K8(I,U,[{attempt:1,status:"skipped",startedAt:O,completedAt:O,error:D.reason}]);return A.metadata={reason:"filter_mismatch"},await this.store.appendDelivery(A),A}let j=await this.applyRedaction(I,U),N=await this.deliverWithRetry(j,U);return await this.store.appendDelivery(N),N}async replay(_={}){let $=_.cursor||_.limit!==void 0?await this.listEventsPage(_):{events:await this.listEvents(_),hasMore:!1};if(_.dryRun)return{events:$.events,deliveries:[],cursor:$.cursor,nextCursor:$.nextCursor,hasMore:$.hasMore};let g=[];for(let U of $.events)g.push(...await this.deliver(U));return{events:$.events,deliveries:g,cursor:$.cursor,nextCursor:$.nextCursor,hasMore:$.hasMore}}async appendEvent(_,$){if(this.store.appendEventOnce)return this.store.appendEventOnce(_,{dedupe:$.dedupe});if($.dedupe){let U=await this.store.findEventByIdentity({id:_.id,dedupeKey:_.dedupeKey});if(U)return{event:U,stored:!1,deduped:!0,identity:{id:U.id,dedupeKey:U.dedupeKey}}}let g=await this.store.appendEvent(_);return{event:g,stored:!0,deduped:!1,identity:{id:g.id,dedupeKey:g.dedupeKey}}}async applyRedaction(_,$){let g=cv(_,$.redact?.paths??[],$.redact?.replacement??"[REDACTED]");for(let U of this.redactors)g=await U(g,$);return g}async deliverWithRetry(_,$){let g=lv($.retry),U=[];for(let D=0;D[g,u8(g)?"[REDACTED]":U]));return $}function nv(_){return _.map(f8)}function dv(_,$="[REDACTED]"){return Oz(_,$)}function u8(_){return/secret|token|password|api[_-]?key|authorization/i.test(_)}function Oz(_,$){if(Array.isArray(_))return _.map((g)=>Oz(g,$));if(!_||typeof _!=="object")return _;return Object.fromEntries(Object.entries(_).map(([g,U])=>[g,u8(g)?$:Oz(U,$)]))}function mv(_,$,g){let U=$.split("."),D=_;for(let j of U.slice(0,-1)){let N=D[j];if(!N||typeof N!=="object")return;D=N}let I=U.at(-1);if(I&&I in D)D[I]=g}function V8(_,$){let g=_;if($.eventId)g=g.filter((U)=>U.id===$.eventId);if($.source)g=g.filter((U)=>U.source===$.source);if($.type)g=g.filter((U)=>U.type===$.type);if($.cursor)g=g.slice(QN($.cursor,$));if($.limit!==void 0)g=g.slice(0,TN($.limit));return g}function iv(_){if(!_)return new Date().toISOString();return _ instanceof Date?_.toISOString():_}function lv(_){return{maxAttempts:Math.max(1,_?.maxAttempts??1),backoffMs:Math.max(0,_?.backoffMs??250),multiplier:Math.max(1,_?.multiplier??2)}}function XN(_,$,g=!1){if(!_?.length)return;let U={};for(let D of _){let I=pv(D,$),j=I.path;if(j in U)throw Error(`Duplicate ${$} filter path: ${j}`);let N=g?ov(I.rawValue,$):I.rawValue;U[j]=I.negated?{not:N}:N}return U}function tv(_){let $={};if(_.source)$.source=_.source;if(_.type)$.type=_.type;if(_.subject)$.subject=_.subject;if(_.severity)$.severity=_.severity;let g=F8(XN(_.data,"data"),XN(_.dataJson,"data-json",!0)),U=F8(XN(_.metadata,"metadata"),XN(_.metadataJson,"metadata-json",!0));if(Object.keys(g).length>0)$.data=g;if(Object.keys(U).length>0)$.metadata=U;return Object.keys($).length>0?[$]:void 0}function F8(..._){let $={};for(let g of _){if(!g)continue;for(let[U,D]of Object.entries(g)){if(U in $)throw Error(`Duplicate filter path: ${U}`);$[U]=D}}return $}function ov(_,$){let g=JSON.parse(_);if(g===null||typeof g==="string"||typeof g==="number"||typeof g==="boolean"||Array.isArray(g)&&g.every((U)=>typeof U==="string"))return g;throw Error(`${$} filter JSON values must be string, string[], number, boolean, or null`)}function pv(_,$){let g=_.indexOf("!=");if(g>0)return{path:_.slice(0,g),rawValue:_.slice(g+2),negated:!0};let U=_.indexOf("=");if(U<=0)throw Error(`Invalid ${$} filter, expected path=value or path!=value: ${_}`);return{path:_.slice(0,U),rawValue:_.slice(U+1),negated:!1}}var ev=100;function Kg(_,$){if(!_)return $;let g=JSON.parse(_);if(!g||typeof g!=="object"||Array.isArray(g))throw Error("Expected a JSON object");return g}function av(_){if(!_?.length)return;let $={};for(let g of _){let U=g.indexOf("=");if(U===-1)throw Error(`Invalid header, expected name=value: ${g}`);$[g.slice(0,U)]=g.slice(U+1)}return $}function p6(_){if(_.createClient)return _.createClient();return new w8({store:new YN(_.dataDir)})}function s4(_,$,g){if($)console.log(JSON.stringify(_,null,2));else console.log(g)}function M8(_,$){let g=_ instanceof Error?_.message:String(_);if($)console.log(JSON.stringify({error:g},null,2));else console.error(g);process.exitCode=1}function Z8(_){return Boolean(_?.json||_?.opts?.().json||_?.optsWithGlobals?.().json||_?.parent?.opts?.().json||_?.parent?.optsWithGlobals?.().json)}function W6(_,$){return Z8(_)||Z8($)}function sv(_,$){let g=_.command($.channelsCommandName??"channels").description("Manage Hasna event channels");return g.command("add").description("Add or replace a channel").argument("","Webhook URL or command binary").requiredOption("--id ","Channel identifier").option("--transport ","Transport kind: webhook or command","webhook").option("--name ","Display name").option("--type ","Event type filter, e.g. todos.task.*").option("--source ","Event source filter").option("--subject ","Event subject filter").option("--severity ","Event severity filter").option("--data ","Event data field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",a4,[]).option("--metadata ","Event metadata field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",a4,[]).option("--data-json ","Event data field filter with typed JSON value; path!=json negatives supported",a4,[]).option("--metadata-json ","Event metadata field filter with typed JSON value; path!=json negatives supported",a4,[]).option("--secret ","Webhook HMAC secret").option("--header ","Webhook header",a4,[]).option("--arg ","Command argument",a4,[]).option("--timeout-ms ","Transport timeout in milliseconds",MU).option("--retry-attempts ","Maximum delivery attempts",MU).option("--retry-backoff-ms ","Initial retry backoff in milliseconds",MU).option("--redact ","Event field path to redact before delivery",a4,[]).option("--disabled","Create channel disabled",!1).option("-j, --json","Print JSON output",!1).action(async(U,D,I)=>{let j=new Date().toISOString(),N={id:D.id,name:D.name,enabled:!D.disabled,transport:D.transport,filters:tv(D),retry:D.retryAttempts||D.retryBackoffMs?{maxAttempts:D.retryAttempts,backoffMs:D.retryBackoffMs}:void 0,redact:D.redact?.length?{paths:D.redact}:void 0,createdAt:j,updatedAt:j};if(D.transport==="webhook")N.webhook={url:U,secret:D.secret,headers:av(D.header),timeoutMs:D.timeoutMs};else if(D.transport==="command")N.command={command:U,args:D.arg??[],timeoutMs:D.timeoutMs};else throw Error(`Transport ${D.transport} is reserved for future use and cannot be added yet`);let O=await p6($).addChannel(N);s4(f8(O),W6(D,I),`Added ${O.transport} channel ${O.id}`)}),g.command("list").description("List configured channels").option("-j, --json","Print JSON output",!1).action(async(U,D)=>{let I=await p6($).listChannels();if(W6(U,D)){console.log(JSON.stringify(nv(I),null,2));return}if(!I.length){console.log("No channels configured.");return}for(let j of I)console.log(`${j.id} ${j.enabled?"enabled":"disabled"} ${j.transport} ${j.webhook?.url??j.command?.command??j.transport}`)}),g.command("status").description("Show events channel storage status").option("-j, --json","Print JSON output",!1).action(async(U,D)=>{let I=await bv($.dataDir);s4(I,W6(U,D),`events dataDir: ${I.dataDir}`)}),g.command("remove").description("Remove a channel").argument("","Channel identifier").option("-j, --json","Print JSON output",!1).action(async(U,D,I)=>{let j=await p6($).removeChannel(U);s4({removed:j},W6(D,I),j?`Removed ${U}`:`Channel not found: ${U}`)}),g.command("test").description("Send a test event to one channel").argument("","Channel identifier").option("--source ","Event source override").option("--type ","Event type","events.test").option("--subject ","Event subject").option("--message ","Event message","Hasna events test delivery").option("--data ","Event data JSON object").option("--metadata ","Event metadata JSON object").option("--honor-filters","Skip delivery when the sample event does not match channel filters",!1).option("-j, --json","Print JSON output",!1).action(async(U,D,I)=>{let j=W6(D,I);try{let N=await p6($).testChannel(U,{source:D.source??$.source,type:D.type,subject:D.subject??U,message:D.message,data:Kg(D.data,{test:!0}),metadata:Kg(D.metadata,{})},{honorFilters:D.honorFilters});s4(N,j,`${N.status}: ${N.channelId}`)}catch(N){M8(N,j)}}),g.command("match").description("Check whether a sample event matches one channel without delivering").argument("","Channel identifier").option("--source ","Event source override").option("--type ","Event type","events.test").option("--subject ","Event subject").option("--message ","Event message","Hasna events match preview").option("--data ","Event data JSON object").option("--metadata ","Event metadata JSON object").option("-j, --json","Print JSON output",!1).action(async(U,D,I)=>{let j=W6(D,I);try{let N=await p6($).matchChannel(U,{source:D.source??$.source,type:D.type,subject:D.subject??U,message:D.message,data:Kg(D.data,{test:!0}),metadata:Kg(D.metadata,{})});s4(N,j,`${N.matched?"matched":"skipped"}: ${N.channelId}`)}catch(N){M8(N,j)}}),g}function _w(_,$){let g=_.command($.eventsCommandName??"events").description("Emit, list, and replay Hasna events");g.command("emit").description("Emit an event from this app").argument("","Event type").option("--source ","Event source override").option("--subject ","Event subject").option("--severity ","Event severity","info").option("--message ","Event message").option("--dedupe-key ","Dedupe key").option("--data ","Event data JSON object").option("--metadata ","Event metadata JSON object").option("--no-deliver","Record without delivering").option("--no-dedupe","Allow duplicate id/dedupeKey events").option("-j, --json","Print JSON output",!1).action(async(D,I,j)=>{let N=await p6($).emit({source:I.source??$.source,type:D,subject:I.subject,severity:I.severity,message:I.message,dedupeKey:I.dedupeKey,data:Kg(I.data,{}),metadata:Kg(I.metadata,{})},{deliver:I.deliver,dedupe:I.dedupe});s4(N,W6(I,j),`${N.deduped?"Deduped":"Emitted"} ${N.event.id} to ${N.deliveries.length} channel(s)`)});let U=$.defaultEventListLimit??ev;return g.command("list").description("List recorded events").option("--source ","Filter by source").option("--type ","Filter by type").option("--limit ",`Limit to the most recent events (default ${U}; use 0 for all)`,MU,U).option("-j, --json","Print JSON output",!1).action(async(D,I)=>{let j=await p6($).listEvents();if(D.source)j=j.filter((N)=>N.source===D.source);if(D.type)j=j.filter((N)=>N.type===D.type);if(D.limit)j=j.slice(-D.limit);if(W6(D,I)){console.log(JSON.stringify(j,null,2));return}if(!j.length){console.log("No events recorded.");return}for(let N of j)console.log(`${N.time} ${N.id} ${N.source} ${N.type} ${N.severity}`)}),g.command("replay").description("Replay recorded events").option("--id ","Replay one event id").option("--source ","Filter by source").option("--type ","Filter by type").option("--cursor ","Opaque replay cursor from a previous page").option("--limit ","Maximum events to replay",MU).option("--dry-run","Preview without delivery",!1).option("-j, --json","Print JSON output",!1).action(async(D,I)=>{let j=await p6($).replay({eventId:D.id,source:D.source,type:D.type,cursor:D.cursor,limit:D.limit,dryRun:D.dryRun});s4(j,W6(D,I),$w(j.events.length,j.deliveries.length,j.nextCursor))}),g}function x8(_,$){sv(_,$),_w(_,$)}function MU(_){let $=Number(_);if(!Number.isFinite($))throw Error(`Expected a number, got ${_}`);return $}function a4(_,$){return $.push(_),$}function $w(_,$,g){let U=g?`, next cursor: ${g}`:"";return`Replayed ${_} event(s), ${$} delivery result(s)${U}`}import{basename as Dw}from"path";var C$={name:"@hasna/knowledge",version:"0.2.93",description:"Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions",type:"module",exports:{".":{import:"./dist/index.js",types:"./dist/index.d.ts"},"./storage":{import:"./dist/storage.js",types:"./dist/storage.d.ts"},"./serve":{import:"./dist/serve.js",types:"./dist/serve.d.ts"}},main:"./dist/index.js",types:"./dist/index.d.ts",bin:{knowledge:"bin/knowledge.js","knowledge-mcp":"bin/knowledge-mcp.js","knowledge-serve":"bin/knowledge-serve.js"},files:["bin","dist","scripts/apply-cloud-migrations.mjs","scripts/lib/remote-temp-dir.mjs","scripts/smoke-machine-sync-release.mjs","scripts/smoke-machines-adapter.mjs","scripts/smoke-open-files-installed-boundary.mjs","scripts/strip-generated-trailing-whitespace.mjs","scripts/verify-generated-artifacts.mjs","docs/architecture/ai-native-knowledge-base.md","docs/architecture/hosted-wrapper-responsibilities.md","docs/architecture/hybrid-semantic-search.md","docs/architecture/machine-sync-schema.md","docs/examples/app-project-wiki-standard.md","docs/examples/company-wiki-workflow.md","docs/migration/global-rules-provenance-import.md","docs/migration/json-to-sqlite.md","LICENSE","README.md"],scripts:{test:"bun test","test:cli":"bun test tests/cli.test.ts","test:package":"bun test tests/package-release.test.ts","release:pack:check":"node scripts/validate-public-package.mjs","smoke:machines-adapter":"bun scripts/smoke-machines-adapter.mjs","smoke:machine-sync-release":"bun scripts/smoke-machine-sync-release.mjs","smoke:open-files-installed-boundary":"bun scripts/smoke-open-files-installed-boundary.mjs","migrate:cloud":"bun scripts/apply-cloud-migrations.mjs",serve:"bun src/serve-entry.ts","verify:generated":"bun scripts/verify-generated-artifacts.mjs","contracts:conformance":"contracts conformance fixtures",build:"rm -rf dist && bun build --target=bun --outfile=bin/knowledge.js --minify --external pg --external @hasna/machines --external @hasna/machines/consumer --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/cli.ts && bun build --target=bun --outfile=bin/knowledge-mcp.js --external pg --external @hasna/machines --external @hasna/machines/consumer --external @modelcontextprotocol/sdk --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/mcp.js && bun build --target=bun --outfile=bin/knowledge-serve.js --external pg --external @hasna/machines --external @hasna/machines/consumer --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/serve-entry.ts && bun build ./src/index.ts ./src/storage.ts ./src/serve.ts --outdir ./dist --target bun --external pg --external @hasna/machines --external @hasna/machines/consumer --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek && bun scripts/strip-generated-trailing-whitespace.mjs && bunx tsc -p tsconfig.build.json",prepublishOnly:"bun run contracts:conformance && contracts no-cloud-scan . && bun run build && node scripts/validate-public-package.mjs"},keywords:["knowledge","cli","agents","json","notes","local","store"],license:"Apache-2.0",publishConfig:{registry:"https://registry.npmjs.org",access:"public"},repository:{type:"git",url:"git+https://github.com/hasna/knowledge.git"},bugs:{url:"https://github.com/hasna/knowledge/issues"},author:"Hasna Inc. ",engines:{bun:">=1.0",node:">=18"},dependencies:{"@ai-sdk/anthropic":"^3.0.81","@ai-sdk/deepseek":"^2.0.35","@ai-sdk/openai":"^3.0.68","@aws-sdk/client-s3":"^3.1063.0","@aws-sdk/credential-providers":"^3.1063.0","@hasna/events":"^0.1.3","@modelcontextprotocol/sdk":"^1.29.0","@types/json-schema":"^7.0.15",ai:"^6.0.197",commander:"^13.1.0",pg:"^8.16.3",zod:"^4.3.6"},devDependencies:{"@electric-sql/pglite":"^0.5.4","@hasna/contracts":"0.8.5","@types/bun":"^1.3.14","@types/pg":"^8.15.6"}};var y8={debug:0,info:1,warn:2,error:3},Uw=()=>{if(process.env.DEBUG)return"debug";if(process.env.LOG_LEVEL==="debug")return"debug";if(process.env.LOG_LEVEL==="warn")return"warn";if(process.env.LOG_LEVEL==="error")return"error";return"info"};function $0(_,$,g){if(y8[_]U.toLowerCase()));return $.filter((U)=>!g.has(U.toLowerCase()))}function Az(_,$,g){if(g===void 0)return{..._,message:$};return{..._,added:g.length,message:`${$} (added ${g.length} tag${g.length===1?"":"s"})`}}function jw(_,$){if($===void 0)throw Error("Missing value for --tag. Example: knowledge add <content> -t <tag> -t <tag>");let g=$.split(",").map((U)=>U.trim()).filter((U)=>U.length>0);if(g.length===0)throw Error(`Invalid --tag value ${JSON.stringify($)}: no tag name found. Example: knowledge add <title> <content> -t <tag> -t <tag>`);return Iw([..._??[],...g])}function Nw(_){let $=[],g={},U=!1;for(let D=0;D<_.length;D+=1){let I=_[D];if(U){$.push(I);continue}if(I==="--"){U=!0;continue}if(!I.startsWith("-")||$[0]==="add"&&$.length===2&&I.startsWith("---")){$.push(I);continue}switch(I){case"--json":g.json=!0;break;case"--verbose":g.verbose=!0;break;case"--yes":case"-y":g.yes=!0;break;case"--help":case"-h":g.help=!0;break;case"--version":case"-v":g.version=!0;break;case"--desc":g.desc=!0;break;case"--page":case"-p":g.page=Number(_[D+1]),D+=1;break;case"--limit":case"-l":g.limit=Number(_[D+1]),D+=1;break;case"--search":case"-s":g.search=_[D+1],D+=1;break;case"--sort":g.sort=_[D+1],D+=1;break;case"--id":g.id=_[D+1],D+=1;break;case"--store":g.store=_[D+1],D+=1;break;case"--title":g.title=_[D+1],D+=1;break;case"--content":g.content=_[D+1],D+=1;break;case"--url":g.url=_[D+1],D+=1;break;case"--tag":case"-t":g.tag=jw(g.tag,_[D+1]),g.tagRaw=[...g.tagRaw??[],_[D+1]],D+=1;break;case"--format":g.format=_[D+1],D+=1;break;case"--completions":g.completions=_[D+1],D+=1;break;case"--purpose":g.purpose=_[D+1],D+=1;break;case"--model":g.model=_[D+1],D+=1;break;case"--strategy":g.strategy=_[D+1],D+=1;break;case"--dimensions":g.dimensions=Number(_[D+1]),D+=1;break;case"--semantic":g.semantic=!0;break;case"--context":g.context=!0;break;case"--max-tokens":g.maxTokens=Number(_[D+1]),D+=1;break;case"--max-items":g.maxItems=Number(_[D+1]),D+=1;break;case"--from":g.from=_[D+1],D+=1;break;case"--to":g.to=_[D+1],D+=1;break;case"--rev":g.rev=Number(_[D+1]),D+=1;break;case"--if-version":g.ifVersion=Number(_[D+1]),D+=1;break;case"--since":g.since=_[D+1],D+=1;break;case"--topic":g.topic=_[D+1],D+=1;break;case"--dedupe":g.dedupe=!0;break;case"--generate":g.generate=!0;break;case"--approve-write":g.approveWrite=!0;break;case"--provider":g.provider=_[D+1],D+=1;break;case"--mode":g.mode=_[D+1],D+=1;break;case"--machine":g.machine=_[D+1],D+=1;break;case"--workspace":g.workspace=_[D+1],D+=1;break;case"--api-url":g.apiUrl=_[D+1],D+=1;break;case"--canonical-example":g.canonicalExample=!0;break;case"--api-key":g.apiKey=_[D+1],D+=1;break;case"--email":g.email=_[D+1],D+=1;break;case"--org":g.org=_[D+1],D+=1;break;case"--org-id":g.orgId=_[D+1],D+=1;break;case"--user-id":g.userId=_[D+1],D+=1;break;case"--owner":g.owner=_[D+1],D+=1;break;case"--approved-by":g.approvedBy=_[D+1],D+=1;break;case"--patch-uri":g.patchUri=_[D+1],D+=1;break;case"--domain":g.domain=[...g.domain??[],_[D+1]],D+=1;break;case"--file-results":g.fileResults=!0;break;case"--full":g.full=!0;break;case"--dry-run":g.dryRun=!0;break;case"--fake":g.fake=!0;break;case"--no-tailscale":g.tailscale=!1;break;case"--no-artifact-content":g.artifactContent=!1;break;case"--no-color":g.noColor=!0;break;case"--scope":g.scope=_[D+1],D+=1;break;case"--tables":g.tables=_[D+1],D+=1;break;case"--peer-workspace":g.peerWorkspace=_[D+1],D+=1;break;case"--older-than":g.olderThan=Number(_[D+1]),D+=1;break;case"--empty":g.empty=!0;break;case"--archived":g.archived=!0;break;case"--include-archived":g.includeArchived=!0;break;case"--project":g.project=_[D+1],D+=1;break;case"--contract":g.contract=!0;break;case"--source-ref":g.sourceRef=[...g.sourceRef??[],_[D+1]],D+=1;break;case"--allow-global":g.allowGlobal=!0;break;default:throw Error(`Unknown flag: ${I}. Run 'knowledge --help' for valid options.`)}}return{positional:$,flags:g}}function Ew(_){if(!_)return"";return l8[_]??_}function Ow(_,$){let g=Array.from({length:_.length+1},()=>Array($.length+1).fill(0));for(let U=0;U<=_.length;U+=1)g[U][0]=U;for(let U=0;U<=$.length;U+=1)g[0][U]=U;for(let U=1;U<=_.length;U+=1)for(let D=1;D<=$.length;D+=1){let I=_[U-1]===$[D-1]?0:1;g[U][D]=Math.min(g[U-1][D]+1,g[U][D-1]+1,g[U-1][D-1]+I)}return g[_.length][$.length]}function Aw(_){if(!_)return"";let $=[...i8,...Object.keys(l8)],g="",U=Number.POSITIVE_INFINITY;for(let D of $){let I=Ow(_,D);if(I<U)U=I,g=D}return U<=3?g:""}function Lw(){return Dw(process.argv[1]??"").replace(/\.(?:js|ts|mjs|cjs)$/,"")==="knowledge"}async function Jw(_){if(!m8.includes(_[0]??""))return!1;let $=new R8;return $.name("knowledge").description("Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions"),x8($,{source:"knowledge"}),await $.parseAsync(_,{from:"user"}),!0}function Pw(){console.log(`knowledge - local agent knowledge store + `)}var bR=SY(ZR(),1),{program:Vm,createCommand:Fm,createArgument:Km,createOption:Mm,CommanderError:Zm,InvalidArgumentError:bm,InvalidOptionArgumentError:Hm,Command:HR,Argument:km,Option:Cm,Help:vm}=bR.default;import{chmod as Jz,mkdir as uf,readFile as xf,rename as yf,writeFile as fR}from"fs/promises";import{Buffer as nR}from"buffer";import{existsSync as dR}from"fs";import{homedir as hf}from"os";import{join as Mg}from"path";import{createHmac as tf,timingSafeEqual as cm}from"crypto";import{randomUUID as ef}from"crypto";import{spawn as af}from"child_process";import{randomUUID as gw}from"crypto";function bf(_,$){return $.split(".").reduce((D,g)=>{if(D&&typeof D==="object"&&g in D)return D[g];return},_)}function Hf(_,$){let D=[],g=(I)=>{if(!D.some((j)=>Object.is(j,I)))D.push(I)};if($.includes(".")&&$ in _)g(_[$]);let U=bf(_,$);if(U!==void 0||!$.includes("."))g(U);return D}function kf(_,$={}){let D="";for(let g=0;g<_.length;g+=1){let U=_[g];if(U==="*")if(_[g+1]==="*")D+=".*",g+=1;else D+=$.segmentSafe?"[^/]*":".*";else D+=U.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return new RegExp(`^${D}$`)}function Fg(_,$,D={}){if($===void 0)return!0;if(_===void 0)return!1;return(Array.isArray($)?$:[$]).some((U)=>kf(U,D).test(_))}function kR(_,$){if(!$)return!0;return Object.entries($).every(([D,g])=>{let U=Hf(_,D);return Cf(U,g,D)})}function Cf(_,$,D){if(wf($))return!_.some((g)=>CR(g,$.not,D));return _.some((g)=>CR(g,$,D))}function CR(_,$,D){if(typeof $==="string"||Array.isArray($))return vf(_).some((g)=>Fg(g,$,{segmentSafe:D.endsWith("_path")||D.endsWith(".path")}));if(Array.isArray(_))return _.some((g)=>g===$);return _===$}function vf(_){if(_===void 0)return[];if(Array.isArray(_))return _.flatMap(($)=>ff($)?[String($)]:[]);return[String(_)]}function ff(_){return _===null||typeof _==="string"||typeof _==="number"||typeof _==="boolean"}function wf(_){return Boolean(_&&typeof _==="object"&&!Array.isArray(_)&&"not"in _)}function rf(_,$){return Fg(_.source,$.source)&&Fg(_.type,$.type)&&Fg(_.subject,$.subject)&&Fg(_.severity,$.severity)&&kR(_.data,$.data)&&kR(_.metadata,$.metadata)}function vR(_,$){if(!_.enabled)return!1;if(!_.filters||_.filters.length===0)return!0;return _.filters.some((D)=>rf($,D))}var RN="HASNA_EVENTS_DIR",YN="HASNA_EVENTS_HOME",Wz="local-json-v1:",cf=100,nf=1000;function mR(_){return _||process.env[RN]||process.env[YN]||Mg(hf(),".hasna","events")}function df(){if(process.env[RN])return RN;if(process.env[YN])return YN;return null}class QN{dataDir;runtime;channelsPath;eventsPath;deliveriesPath;constructor(_=mR()){this.dataDir=_,this.runtime=mf(_),this.channelsPath=Mg(_,"channels.json"),this.eventsPath=Mg(_,"events.json"),this.deliveriesPath=Mg(_,"deliveries.json")}async init(){await uf(this.dataDir,{recursive:!0,mode:448}),await Jz(this.dataDir,448).catch(()=>{return}),await this.ensureArrayFile(this.channelsPath),await this.ensureArrayFile(this.eventsPath),await this.ensureArrayFile(this.deliveriesPath)}async addChannel(_){await this.init();let $=await this.readJson(this.channelsPath,[]),D=$.findIndex((g)=>g.id===_.id);if(D>=0)$[D]={..._,createdAt:$[D].createdAt,updatedAt:new Date().toISOString()};else $.push(_);return await this.writeJson(this.channelsPath,$),D>=0?$[D]:_}async listChannels(){return await this.init(),this.readJson(this.channelsPath,[])}async getChannel(_){return(await this.listChannels()).find((D)=>D.id===_)}async removeChannel(_){await this.init();let $=await this.readJson(this.channelsPath,[]),D=$.filter((g)=>g.id!==_);return await this.writeJson(this.channelsPath,D),D.length!==$.length}async appendEvent(_){await this.init();let $=await this.readJson(this.eventsPath,[]);return $.push(_),await this.writeJson(this.eventsPath,$),_}async appendEventOnce(_,$={}){await this.init();let D=await this.readJson(this.eventsPath,[]);if($.dedupe!==!1){let U=rR(D,{id:_.id,dedupeKey:_.dedupeKey});if(U)return{event:U,stored:!1,deduped:!0,identity:{id:U.id,dedupeKey:U.dedupeKey}}}return D.push(_),await this.writeJson(this.eventsPath,D),{event:_,stored:!0,deduped:!1,identity:{id:_.id,dedupeKey:_.dedupeKey}}}async listEvents(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]);return wR($,_)}async listEventsPage(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]),D=wR($,{eventId:_.eventId,source:_.source,type:_.type}),g=TN(_.cursor,_),U=BN(_.limit),I=D.slice(g,g+U),j=g+I.length,N=j<D.length;return{events:I,cursor:_.cursor,nextCursor:N?iR(j,_):void 0,hasMore:N}}async findEventByIdentity(_){let $=await this.listEvents();return rR($,_)}async appendDelivery(_){await this.init();let $=await this.readJson(this.deliveriesPath,[]);return $.push(_),await this.writeJson(this.deliveriesPath,$),_}async listDeliveries(){return await this.init(),this.readJson(this.deliveriesPath,[])}async exportData(){return{channels:await this.listChannels(),events:await this.listEvents(),deliveries:await this.listDeliveries()}}async ensureArrayFile(_){if(!dR(_))await fR(_,`[] +`,{encoding:"utf-8",mode:384});await Jz(_,384).catch(()=>{return})}async readJson(_,$){try{let D=await xf(_,"utf-8");if(!D.trim())return $;return JSON.parse(D)}catch(D){if(D.code==="ENOENT")return $;throw D}}async writeJson(_,$){let D=`${_}.${process.pid}.${Date.now()}.tmp`;await fR(D,`${JSON.stringify($,null,2)} +`,{encoding:"utf-8",mode:384}),await yf(D,_),await Jz(_,384).catch(()=>{return})}}function mf(_=mR()){return{mode:"local-files",name:"json-events-store",remote:!1,localFiles:!0,localSqlite:!1,postgres:!1,s3:!1,aws:!1,durable:!0,idempotency:"best-effort-local",replayCursors:!0,description:`Local JSON files in ${_}; no SQLite, Postgres, S3, or AWS runtime is configured by this store.`}}function iR(_,$={}){if(!Number.isInteger(_)||_<0)throw Error(`Invalid event cursor offset: ${_}`);let D={offset:_,eventId:$.eventId,source:$.source,type:$.type};return`${Wz}${nR.from(JSON.stringify(D),"utf-8").toString("base64url")}`}function TN(_,$={}){if(!_)return 0;if(!_.startsWith(Wz))throw Error(`Invalid local JSON event cursor: ${_}`);let D=_.slice(Wz.length),g;try{g=JSON.parse(nR.from(D,"base64url").toString("utf-8"))}catch{throw Error(`Invalid local JSON event cursor: ${_}`)}let U=g.offset;if(!Number.isInteger(U)||U<0)throw Error(`Invalid local JSON event cursor: ${_}`);return Pz("eventId",g.eventId,$.eventId),Pz("source",g.source,$.source),Pz("type",g.type,$.type),U}function BN(_){if(_===void 0)return cf;if(!Number.isInteger(_)||_<1)throw Error(`Event page limit must be a positive integer, got ${_}`);return Math.min(_,nf)}function wR(_,$){let D=_;if($.eventId)D=D.filter((g)=>g.id===$.eventId);if($.source)D=D.filter((g)=>g.source===$.source);if($.type)D=D.filter((g)=>g.type===$.type);if($.cursor){let g=TN($.cursor,$);D=D.slice(g)}if($.limit!==void 0)D=D.slice(0,BN($.limit));return D}function Pz(_,$,D){if($!==D)throw Error(`Local JSON event cursor ${_} filter mismatch`)}function rR(_,$){return _.find((D)=>$.id!==void 0&&D.id===$.id||$.dedupeKey!==void 0&&D.dedupeKey===$.dedupeKey)}async function lf(_){let $=new QN(_);await $.init();let[D,g,U]=await Promise.all([$.listChannels(),$.listEvents(),$.listDeliveries()]),I=D.reduce((j,N)=>{return j[N.transport]=(j[N.transport]??0)+1,j},{});return{service:"events",schemaVersion:"1.0",dataDir:$.dataDir,storage:$.runtime,env:{primary:RN,fallback:YN,active:df()},files:{channels:zz($.dataDir,"channels.json",D.length),events:zz($.dataDir,"events.json",g.length),deliveries:zz($.dataDir,"deliveries.json",U.length)},counts:{channels:D.length,enabledChannels:D.filter((j)=>j.enabled).length,disabledChannels:D.filter((j)=>!j.enabled).length,events:g.length,deliveries:U.length},transports:I,safety:{includesEventPayloads:!1,includesWebhookSecrets:!1,listOutputsRedactSecrets:!0,statusOutputIsMetadataOnly:!0}}}function zz(_,$,D){let g=Mg(_,$);return{path:g,exists:dR(g),records:D}}function of(_,$){return`${_}.${$}`}function pf(_,$,D){return`sha256=${tf("sha256",_).update(of($,D)).digest("hex")}`}function i$(){return new Date().toISOString()}function Kg(_,$=4096){return _.length>$?`${_.slice(0,$)}...`:_}function sf(_,$){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let D=JSON.stringify(_),g=_.time,U={"Content-Type":"application/json","User-Agent":"@hasna/events","X-Hasna-Event-Id":_.id,"X-Hasna-Event-Type":_.type,"X-Hasna-Timestamp":g,...$.webhook.headers};if($.webhook.secret)U["X-Hasna-Signature"]=pf($.webhook.secret,g,D);return{body:D,headers:U}}async function _w(_,$,D={}){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let g=i$(),{body:U,headers:I}=sf(_,$),j=new AbortController,N=setTimeout(()=>j.abort(),$.webhook.timeoutMs??15000);try{let O=await(D.fetchImpl??fetch)($.webhook.url,{method:"POST",headers:I,body:U,signal:j.signal}),A=Kg(await O.text());return{attempt:1,status:O.ok?"success":"failed",startedAt:g,completedAt:i$(),responseStatus:O.status,responseBody:A,error:O.ok?void 0:`Webhook returned HTTP ${O.status}`}}catch(O){return{attempt:1,status:"failed",startedAt:g,completedAt:i$(),error:O instanceof Error?O.message:String(O)}}finally{clearTimeout(N)}}async function $w(_,$){if(!$.command)throw Error(`Channel ${$.id} has no command config`);let D=i$(),g=JSON.stringify(_),U={...process.env,...$.command.env,HASNA_CHANNEL_ID:$.id,HASNA_EVENT_ID:_.id,HASNA_EVENT_TYPE:_.type,HASNA_EVENT_SOURCE:_.source,HASNA_EVENT_SUBJECT:_.subject??"",HASNA_EVENT_SEVERITY:_.severity,HASNA_EVENT_TIME:_.time,HASNA_EVENT_DEDUPE_KEY:_.dedupeKey??"",HASNA_EVENT_SCHEMA_VERSION:_.schemaVersion,HASNA_EVENT_JSON:g};return new Promise((I)=>{let j=af($.command.command,$.command.args??[],{cwd:$.command.cwd,env:U,stdio:["pipe","pipe","pipe"]}),N="",O="",A=setTimeout(()=>j.kill("SIGTERM"),$.command.timeoutMs??15000);j.stdin.end(g),j.stdout.on("data",(L)=>{N+=L.toString()}),j.stderr.on("data",(L)=>{O+=L.toString()}),j.on("error",(L)=>{clearTimeout(A),I({attempt:1,status:"failed",startedAt:D,completedAt:i$(),stdout:Kg(N),stderr:Kg(O),error:L.message})}),j.on("close",(L,z)=>{clearTimeout(A);let W=L===0;I({attempt:1,status:W?"success":"failed",startedAt:D,completedAt:i$(),stdout:Kg(N),stderr:Kg(O),error:W?void 0:`Command exited with ${z?`signal ${z}`:`code ${L}`}`})})})}async function Dw(_,$,D={}){if($.transport==="webhook")return _w(_,$,D);if($.transport==="command")return $w(_,$);return{attempt:1,status:"skipped",startedAt:i$(),completedAt:i$(),error:`Unsupported transport: ${$.transport}`}}function uR(_,$,D){let g=D.some((U)=>U.status==="success")?"success":D.every((U)=>U.status==="skipped")?"skipped":"failed";return{id:ef(),eventId:_.id,channelId:$.id,transport:$.transport,status:g,attempts:D,createdAt:D[0]?.startedAt??i$(),completedAt:D.at(-1)?.completedAt??i$()}}class lR extends Error{eventType;issues;constructor(_,$){let D=$.map((g)=>`${g.path||"<root>"}: ${g.message}`).join("; ");super(`Event validation failed for type "${_}": ${D}`);this.name="EventValidationError",this.eventType=_,this.issues=$}}class tR{definitions=new Map;register(_){return this.definitions.set(_.type,_),this}unregister(_){return this.definitions.delete(_)}has(_){return this.definitions.has(_)}get(_){return this.definitions.get(_)}list(){return[...this.definitions.values()]}validateEvent(_){let $=this.definitions.get(_.type);if(!$)return{ok:!0};return $.validate(_.data,_)}assertEventValid(_){let $=this.validateEvent(_);if(!$.ok)throw new lR(_.type,$.issues)}}var Uw=new tR;function Sz(_){return{id:_.id??gw(),source:_.source,type:_.type,time:Ow(_.time),subject:_.subject,severity:_.severity??"info",data:_.data??{},message:_.message,dedupeKey:_.dedupeKey,schemaVersion:_.schemaVersion??"1.0",metadata:_.metadata??{}}}class oR{store;redactors;transportOptions;catalog;validateCatalogTypes;constructor(_={}){this.store=_.store??new QN(_.dataDir),this.redactors=_.redactors??[],this.transportOptions={fetchImpl:_.fetchImpl},this.catalog=_.catalog??Uw,this.validateCatalogTypes=_.validateCatalogTypes??!1}async addChannel(_){let $=new Date().toISOString();return this.store.addChannel({..._,createdAt:_.createdAt??$,updatedAt:_.updatedAt??$})}async listChannels(){return this.store.listChannels()}async removeChannel(_){return this.store.removeChannel(_)}async emit(_,$={}){let D=$.redactSensitiveData===!1?Sz(_):Nw(Sz(_));if($.validate??this.validateCatalogTypes)this.catalog.assertEventValid(D);let g=await this.appendEvent(D,{dedupe:$.dedupe!==!1});if(g.deduped)return{event:g.event,deliveries:[],deduped:!0};let U=$.deliver===!1?[]:await this.deliver(g.event);return{event:g.event,deliveries:U,deduped:!1}}async listEvents(_={}){if(Object.keys(_).length===0)return this.store.listEvents();return xR(await this.store.listEvents(),_)}async listEventsPage(_={}){if(this.store.listEventsPage)return this.store.listEventsPage(_);let $=xR(await this.store.listEvents(),{eventId:_.eventId,source:_.source,type:_.type}),D=TN(_.cursor,_),g=BN(_.limit),U=$.slice(D,D+g),I=D+U.length,j=I<$.length;return{events:U,cursor:_.cursor,nextCursor:j?iR(I,_):void 0,hasMore:j}}async listDeliveries(){return this.store.listDeliveries()}async deliver(_){let D=(await this.store.listChannels()).filter((U)=>vR(U,_)),g=[];for(let U of D){let I=await this.applyRedaction(_,U),j=await this.deliverWithRetry(I,U);await this.store.appendDelivery(j),g.push(j)}return g}async matchChannel(_,$={}){let D=await this.store.getChannel(_);if(!D)throw Error(`Channel not found: ${_}`);let g=Sz({source:$.source??"hasna.events",type:$.type??"events.test",subject:$.subject??_,severity:$.severity??"info",data:$.data??{test:!0},message:$.message??"Hasna events test delivery",dedupeKey:$.dedupeKey,schemaVersion:$.schemaVersion,metadata:$.metadata,time:$.time,id:$.id}),U=vR(D,g);return{channelId:D.id,matched:U,event:g,filters:D.filters,reason:U?void 0:D.enabled?"event did not match channel filters":"channel is disabled"}}async testChannel(_,$={},D={}){let g=await this.store.getChannel(_);if(!g)throw Error(`Channel not found: ${_}`);let U=await this.matchChannel(_,$),I=U.event;if(D.honorFilters&&!U.matched){let O=new Date().toISOString(),A=uR(I,g,[{attempt:1,status:"skipped",startedAt:O,completedAt:O,error:U.reason}]);return A.metadata={reason:"filter_mismatch"},await this.store.appendDelivery(A),A}let j=await this.applyRedaction(I,g),N=await this.deliverWithRetry(j,g);return await this.store.appendDelivery(N),N}async replay(_={}){let $=_.cursor||_.limit!==void 0?await this.listEventsPage(_):{events:await this.listEvents(_),hasMore:!1};if(_.dryRun)return{events:$.events,deliveries:[],cursor:$.cursor,nextCursor:$.nextCursor,hasMore:$.hasMore};let D=[];for(let g of $.events)D.push(...await this.deliver(g));return{events:$.events,deliveries:D,cursor:$.cursor,nextCursor:$.nextCursor,hasMore:$.hasMore}}async appendEvent(_,$){if(this.store.appendEventOnce)return this.store.appendEventOnce(_,{dedupe:$.dedupe});if($.dedupe){let g=await this.store.findEventByIdentity({id:_.id,dedupeKey:_.dedupeKey});if(g)return{event:g,stored:!1,deduped:!0,identity:{id:g.id,dedupeKey:g.dedupeKey}}}let D=await this.store.appendEvent(_);return{event:D,stored:!0,deduped:!1,identity:{id:D.id,dedupeKey:D.dedupeKey}}}async applyRedaction(_,$){let D=Iw(_,$.redact?.paths??[],$.redact?.replacement??"[REDACTED]");for(let g of this.redactors)D=await g(D,$);return D}async deliverWithRetry(_,$){let D=Aw($.retry),g=[];for(let U=0;U<D.maxAttempts;U+=1){let I=await Dw(_,$,this.transportOptions);if(I.attempt=U+1,I.status==="failed"&&U+1<D.maxAttempts)I.nextBackoffMs=Math.round(D.backoffMs*D.multiplier**U);if(g.push(I),I.status!=="failed")break;if(I.nextBackoffMs)await Bun.sleep(I.nextBackoffMs)}return uR(_,$,g)}}function Iw(_,$,D="[REDACTED]"){if($.length===0)return _;let g=structuredClone(_);for(let U of $)Ew(g,U,D);return g}function pR(_){let $=structuredClone(_);if($.webhook?.secret)$.webhook.secret="[REDACTED]";if($.command?.env)$.command.env=Object.fromEntries(Object.entries($.command.env).map(([D,g])=>[D,eR(D)?"[REDACTED]":g]));return $}function jw(_){return _.map(pR)}function Nw(_,$="[REDACTED]"){return Xz(_,$)}function eR(_){return/secret|token|password|api[_-]?key|authorization/i.test(_)}function Xz(_,$){if(Array.isArray(_))return _.map((D)=>Xz(D,$));if(!_||typeof _!=="object")return _;return Object.fromEntries(Object.entries(_).map(([D,g])=>[D,eR(D)?$:Xz(g,$)]))}function Ew(_,$,D){let g=$.split("."),U=_;for(let j of g.slice(0,-1)){let N=U[j];if(!N||typeof N!=="object")return;U=N}let I=g.at(-1);if(I&&I in U)U[I]=D}function xR(_,$){let D=_;if($.eventId)D=D.filter((g)=>g.id===$.eventId);if($.source)D=D.filter((g)=>g.source===$.source);if($.type)D=D.filter((g)=>g.type===$.type);if($.cursor)D=D.slice(TN($.cursor,$));if($.limit!==void 0)D=D.slice(0,BN($.limit));return D}function Ow(_){if(!_)return new Date().toISOString();return _ instanceof Date?_.toISOString():_}function Aw(_){return{maxAttempts:Math.max(1,_?.maxAttempts??1),backoffMs:Math.max(0,_?.backoffMs??250),multiplier:Math.max(1,_?.multiplier??2)}}function GN(_,$,D=!1){if(!_?.length)return;let g={};for(let U of _){let I=Pw(U,$),j=I.path;if(j in g)throw Error(`Duplicate ${$} filter path: ${j}`);let N=D?Jw(I.rawValue,$):I.rawValue;g[j]=I.negated?{not:N}:N}return g}function Lw(_){let $={};if(_.source)$.source=_.source;if(_.type)$.type=_.type;if(_.subject)$.subject=_.subject;if(_.severity)$.severity=_.severity;let D=yR(GN(_.data,"data"),GN(_.dataJson,"data-json",!0)),g=yR(GN(_.metadata,"metadata"),GN(_.metadataJson,"metadata-json",!0));if(Object.keys(D).length>0)$.data=D;if(Object.keys(g).length>0)$.metadata=g;return Object.keys($).length>0?[$]:void 0}function yR(..._){let $={};for(let D of _){if(!D)continue;for(let[g,U]of Object.entries(D)){if(g in $)throw Error(`Duplicate filter path: ${g}`);$[g]=U}}return $}function Jw(_,$){let D=JSON.parse(_);if(D===null||typeof D==="string"||typeof D==="number"||typeof D==="boolean"||Array.isArray(D)&&D.every((g)=>typeof g==="string"))return D;throw Error(`${$} filter JSON values must be string, string[], number, boolean, or null`)}function Pw(_,$){let D=_.indexOf("!=");if(D>0)return{path:_.slice(0,D),rawValue:_.slice(D+2),negated:!0};let g=_.indexOf("=");if(g<=0)throw Error(`Invalid ${$} filter, expected path=value or path!=value: ${_}`);return{path:_.slice(0,g),rawValue:_.slice(g+1),negated:!1}}var zw=100;function FD(_,$){if(!_)return $;let D=JSON.parse(_);if(!D||typeof D!=="object"||Array.isArray(D))throw Error("Expected a JSON object");return D}function Sw(_){if(!_?.length)return;let $={};for(let D of _){let g=D.indexOf("=");if(g===-1)throw Error(`Invalid header, expected name=value: ${D}`);$[D.slice(0,g)]=D.slice(g+1)}return $}function p6(_){if(_.createClient)return _.createClient();return new oR({store:new QN(_.dataDir)})}function s4(_,$,D){if($)console.log(JSON.stringify(_,null,2));else console.log(D)}function hR(_,$){let D=_ instanceof Error?_.message:String(_);if($)console.log(JSON.stringify({error:D},null,2));else console.error(D);process.exitCode=1}function cR(_){return Boolean(_?.json||_?.opts?.().json||_?.optsWithGlobals?.().json||_?.parent?.opts?.().json||_?.parent?.optsWithGlobals?.().json)}function W6(_,$){return cR(_)||cR($)}function Ww(_,$){let D=_.command($.channelsCommandName??"channels").description("Manage Hasna event channels");return D.command("add").description("Add or replace a channel").argument("<target>","Webhook URL or command binary").requiredOption("--id <id>","Channel identifier").option("--transport <kind>","Transport kind: webhook or command","webhook").option("--name <name>","Display name").option("--type <pattern>","Event type filter, e.g. todos.task.*").option("--source <pattern>","Event source filter").option("--subject <pattern>","Event subject filter").option("--severity <pattern>","Event severity filter").option("--data <path=value...>","Event data field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",a4,[]).option("--metadata <path=value...>","Event metadata field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",a4,[]).option("--data-json <path=json...>","Event data field filter with typed JSON value; path!=json negatives supported",a4,[]).option("--metadata-json <path=json...>","Event metadata field filter with typed JSON value; path!=json negatives supported",a4,[]).option("--secret <secret>","Webhook HMAC secret").option("--header <name=value...>","Webhook header",a4,[]).option("--arg <arg...>","Command argument",a4,[]).option("--timeout-ms <ms>","Transport timeout in milliseconds",Zg).option("--retry-attempts <n>","Maximum delivery attempts",Zg).option("--retry-backoff-ms <ms>","Initial retry backoff in milliseconds",Zg).option("--redact <path...>","Event field path to redact before delivery",a4,[]).option("--disabled","Create channel disabled",!1).option("-j, --json","Print JSON output",!1).action(async(g,U,I)=>{let j=new Date().toISOString(),N={id:U.id,name:U.name,enabled:!U.disabled,transport:U.transport,filters:Lw(U),retry:U.retryAttempts||U.retryBackoffMs?{maxAttempts:U.retryAttempts,backoffMs:U.retryBackoffMs}:void 0,redact:U.redact?.length?{paths:U.redact}:void 0,createdAt:j,updatedAt:j};if(U.transport==="webhook")N.webhook={url:g,secret:U.secret,headers:Sw(U.header),timeoutMs:U.timeoutMs};else if(U.transport==="command")N.command={command:g,args:U.arg??[],timeoutMs:U.timeoutMs};else throw Error(`Transport ${U.transport} is reserved for future use and cannot be added yet`);let O=await p6($).addChannel(N);s4(pR(O),W6(U,I),`Added ${O.transport} channel ${O.id}`)}),D.command("list").description("List configured channels").option("-j, --json","Print JSON output",!1).action(async(g,U)=>{let I=await p6($).listChannels();if(W6(g,U)){console.log(JSON.stringify(jw(I),null,2));return}if(!I.length){console.log("No channels configured.");return}for(let j of I)console.log(`${j.id} ${j.enabled?"enabled":"disabled"} ${j.transport} ${j.webhook?.url??j.command?.command??j.transport}`)}),D.command("status").description("Show events channel storage status").option("-j, --json","Print JSON output",!1).action(async(g,U)=>{let I=await lf($.dataDir);s4(I,W6(g,U),`events dataDir: ${I.dataDir}`)}),D.command("remove").description("Remove a channel").argument("<id>","Channel identifier").option("-j, --json","Print JSON output",!1).action(async(g,U,I)=>{let j=await p6($).removeChannel(g);s4({removed:j},W6(U,I),j?`Removed ${g}`:`Channel not found: ${g}`)}),D.command("test").description("Send a test event to one channel").argument("<id>","Channel identifier").option("--source <source>","Event source override").option("--type <type>","Event type","events.test").option("--subject <subject>","Event subject").option("--message <message>","Event message","Hasna events test delivery").option("--data <json>","Event data JSON object").option("--metadata <json>","Event metadata JSON object").option("--honor-filters","Skip delivery when the sample event does not match channel filters",!1).option("-j, --json","Print JSON output",!1).action(async(g,U,I)=>{let j=W6(U,I);try{let N=await p6($).testChannel(g,{source:U.source??$.source,type:U.type,subject:U.subject??g,message:U.message,data:FD(U.data,{test:!0}),metadata:FD(U.metadata,{})},{honorFilters:U.honorFilters});s4(N,j,`${N.status}: ${N.channelId}`)}catch(N){hR(N,j)}}),D.command("match").description("Check whether a sample event matches one channel without delivering").argument("<id>","Channel identifier").option("--source <source>","Event source override").option("--type <type>","Event type","events.test").option("--subject <subject>","Event subject").option("--message <message>","Event message","Hasna events match preview").option("--data <json>","Event data JSON object").option("--metadata <json>","Event metadata JSON object").option("-j, --json","Print JSON output",!1).action(async(g,U,I)=>{let j=W6(U,I);try{let N=await p6($).matchChannel(g,{source:U.source??$.source,type:U.type,subject:U.subject??g,message:U.message,data:FD(U.data,{test:!0}),metadata:FD(U.metadata,{})});s4(N,j,`${N.matched?"matched":"skipped"}: ${N.channelId}`)}catch(N){hR(N,j)}}),D}function Xw(_,$){let D=_.command($.eventsCommandName??"events").description("Emit, list, and replay Hasna events");D.command("emit").description("Emit an event from this app").argument("<type>","Event type").option("--source <source>","Event source override").option("--subject <subject>","Event subject").option("--severity <severity>","Event severity","info").option("--message <message>","Event message").option("--dedupe-key <key>","Dedupe key").option("--data <json>","Event data JSON object").option("--metadata <json>","Event metadata JSON object").option("--no-deliver","Record without delivering").option("--no-dedupe","Allow duplicate id/dedupeKey events").option("-j, --json","Print JSON output",!1).action(async(U,I,j)=>{let N=await p6($).emit({source:I.source??$.source,type:U,subject:I.subject,severity:I.severity,message:I.message,dedupeKey:I.dedupeKey,data:FD(I.data,{}),metadata:FD(I.metadata,{})},{deliver:I.deliver,dedupe:I.dedupe});s4(N,W6(I,j),`${N.deduped?"Deduped":"Emitted"} ${N.event.id} to ${N.deliveries.length} channel(s)`)});let g=$.defaultEventListLimit??zw;return D.command("list").description("List recorded events").option("--source <source>","Filter by source").option("--type <type>","Filter by type").option("--limit <n>",`Limit to the most recent <n> events (default ${g}; use 0 for all)`,Zg,g).option("-j, --json","Print JSON output",!1).action(async(U,I)=>{let j=await p6($).listEvents();if(U.source)j=j.filter((N)=>N.source===U.source);if(U.type)j=j.filter((N)=>N.type===U.type);if(U.limit)j=j.slice(-U.limit);if(W6(U,I)){console.log(JSON.stringify(j,null,2));return}if(!j.length){console.log("No events recorded.");return}for(let N of j)console.log(`${N.time} ${N.id} ${N.source} ${N.type} ${N.severity}`)}),D.command("replay").description("Replay recorded events").option("--id <id>","Replay one event id").option("--source <source>","Filter by source").option("--type <type>","Filter by type").option("--cursor <cursor>","Opaque replay cursor from a previous page").option("--limit <n>","Maximum events to replay",Zg).option("--dry-run","Preview without delivery",!1).option("-j, --json","Print JSON output",!1).action(async(U,I)=>{let j=await p6($).replay({eventId:U.id,source:U.source,type:U.type,cursor:U.cursor,limit:U.limit,dryRun:U.dryRun});s4(j,W6(U,I),Gw(j.events.length,j.deliveries.length,j.nextCursor))}),D}function aR(_,$){Ww(_,$),Xw(_,$)}function Zg(_){let $=Number(_);if(!Number.isFinite($))throw Error(`Expected a number, got ${_}`);return $}function a4(_,$){return $.push(_),$}function Gw(_,$,D){let g=D?`, next cursor: ${D}`:"";return`Replayed ${_} event(s), ${$} delivery result(s)${g}`}import{basename as Yw}from"path";var C$={name:"@hasna/knowledge",version:"0.2.93",description:"Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions",type:"module",exports:{".":{import:"./dist/index.js",types:"./dist/index.d.ts"},"./storage":{import:"./dist/storage.js",types:"./dist/storage.d.ts"},"./serve":{import:"./dist/serve.js",types:"./dist/serve.d.ts"}},main:"./dist/index.js",types:"./dist/index.d.ts",bin:{knowledge:"bin/knowledge.js","knowledge-mcp":"bin/knowledge-mcp.js","knowledge-serve":"bin/knowledge-serve.js"},files:["bin","dist","scripts/apply-cloud-migrations.mjs","scripts/lib/remote-temp-dir.mjs","scripts/smoke-machine-sync-release.mjs","scripts/smoke-machines-adapter.mjs","scripts/smoke-open-files-installed-boundary.mjs","scripts/strip-generated-trailing-whitespace.mjs","scripts/verify-generated-artifacts.mjs","docs/architecture/ai-native-knowledge-base.md","docs/architecture/hosted-wrapper-responsibilities.md","docs/architecture/hybrid-semantic-search.md","docs/architecture/machine-sync-schema.md","docs/examples/app-project-wiki-standard.md","docs/examples/company-wiki-workflow.md","docs/migration/global-rules-provenance-import.md","docs/migration/json-to-sqlite.md","LICENSE","README.md"],scripts:{test:"bun test","test:cli":"bun test tests/cli.test.ts","test:package":"bun test tests/package-release.test.ts","release:pack:check":"node scripts/validate-public-package.mjs","smoke:machines-adapter":"bun scripts/smoke-machines-adapter.mjs","smoke:machine-sync-release":"bun scripts/smoke-machine-sync-release.mjs","smoke:open-files-installed-boundary":"bun scripts/smoke-open-files-installed-boundary.mjs","migrate:cloud":"bun scripts/apply-cloud-migrations.mjs",serve:"bun src/serve-entry.ts","verify:generated":"bun scripts/verify-generated-artifacts.mjs","contracts:conformance":"contracts conformance fixtures",build:"rm -rf dist && bun build --target=bun --outfile=bin/knowledge.js --minify --external pg --external @hasna/machines --external @hasna/machines/consumer --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/cli.ts && bun build --target=bun --outfile=bin/knowledge-mcp.js --external pg --external @hasna/machines --external @hasna/machines/consumer --external @modelcontextprotocol/sdk --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/mcp.js && bun build --target=bun --outfile=bin/knowledge-serve.js --external pg --external @hasna/machines --external @hasna/machines/consumer --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/serve-entry.ts && bun build ./src/index.ts ./src/storage.ts ./src/serve.ts --outdir ./dist --target bun --external pg --external @hasna/machines --external @hasna/machines/consumer --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek && bun scripts/strip-generated-trailing-whitespace.mjs && bunx tsc -p tsconfig.build.json",prepublishOnly:"bun run contracts:conformance && contracts no-cloud-scan . && bun run build && node scripts/validate-public-package.mjs"},keywords:["knowledge","cli","agents","json","notes","local","store"],license:"Apache-2.0",publishConfig:{registry:"https://registry.npmjs.org",access:"public"},repository:{type:"git",url:"git+https://github.com/hasna/knowledge.git"},bugs:{url:"https://github.com/hasna/knowledge/issues"},author:"Hasna Inc. <hasna@example.com>",engines:{bun:">=1.0",node:">=18"},dependencies:{"@ai-sdk/anthropic":"^3.0.81","@ai-sdk/deepseek":"^2.0.35","@ai-sdk/openai":"^3.0.68","@aws-sdk/client-s3":"^3.1063.0","@aws-sdk/credential-providers":"^3.1063.0","@hasna/events":"^0.1.3","@modelcontextprotocol/sdk":"^1.29.0","@types/json-schema":"^7.0.15",ai:"^6.0.197",commander:"^13.1.0",pg:"^8.16.3",zod:"^4.3.6"},devDependencies:{"@electric-sql/pglite":"^0.5.4","@hasna/contracts":"0.8.5","@types/bun":"^1.3.14","@types/pg":"^8.15.6"}};var sR={debug:0,info:1,warn:2,error:3},Qw=()=>{if(process.env.DEBUG)return"debug";if(process.env.LOG_LEVEL==="debug")return"debug";if(process.env.LOG_LEVEL==="warn")return"warn";if(process.env.LOG_LEVEL==="error")return"error";return"info"};function $0(_,$,D){if(sR[_]<sR[Qw()])return;let g={debug:"[DEBUG]",info:"[INFO]",warn:"[WARN]",error:"[ERROR]"}[_],U=D?`${g} ${$} ${JSON.stringify(D)}`:`${g} ${$}`;if(_==="error")console.error(U);else console.error(U)}var IY=["events","webhooks"],jY=["add","list","get","delete","update","archive","restore","upsert","untag","versions","diff","export","prune","dedupe","stats","inventory","project-panel","paths","mode","setup","auth","storage","machines","sync","db","wiki","app-wiki","source","ingest","reindex","search","context","proposals","web","ask","build","embeddings","providers","safety","help",...IY],NY={ls:"list",rm:"delete",edit:"update",unarchive:"restore"};function Tw(_){let $=new Set,D=[];for(let g of _){let U=g.toLowerCase();if($.has(U))continue;$.add(U),D.push(g)}return D}function _Y(_,$){let D=new Set((_??[]).map((g)=>g.toLowerCase()));return $.filter((g)=>!D.has(g.toLowerCase()))}function Gz(_,$,D){if(D===void 0)return{..._,message:$};return{..._,added:D.length,message:`${$} (added ${D.length} tag${D.length===1?"":"s"})`}}function Bw(_,$){if($===void 0)throw Error("Missing value for --tag. Example: knowledge add <title> <content> -t <tag> -t <tag>");let D=$.split(",").map((g)=>g.trim()).filter((g)=>g.length>0);if(D.length===0)throw Error(`Invalid --tag value ${JSON.stringify($)}: no tag name found. Example: knowledge add <title> <content> -t <tag> -t <tag>`);return Tw([..._??[],...D])}function qw(_){let $=[],D={},g=!1;for(let U=0;U<_.length;U+=1){let I=_[U];if(g){$.push(I);continue}if(I==="--"){g=!0;continue}if(!I.startsWith("-")||$[0]==="add"&&$.length===2&&I.startsWith("---")){$.push(I);continue}switch(I){case"--json":D.json=!0;break;case"--verbose":D.verbose=!0;break;case"--yes":case"-y":D.yes=!0;break;case"--help":case"-h":D.help=!0;break;case"--version":case"-v":D.version=!0;break;case"--desc":D.desc=!0;break;case"--description":D.description=_[U+1],U+=1;break;case"--reach":D.reach=_[U+1],U+=1;break;case"--consequence":D.consequence=_[U+1],U+=1;break;case"--page":case"-p":D.page=Number(_[U+1]),U+=1;break;case"--limit":case"-l":D.limit=Number(_[U+1]),U+=1;break;case"--search":case"-s":D.search=_[U+1],U+=1;break;case"--sort":D.sort=_[U+1],U+=1;break;case"--id":D.id=_[U+1],U+=1;break;case"--store":D.store=_[U+1],U+=1;break;case"--title":D.title=_[U+1],U+=1;break;case"--content":D.content=_[U+1],U+=1;break;case"--url":D.url=_[U+1],U+=1;break;case"--tag":case"-t":D.tag=Bw(D.tag,_[U+1]),D.tagRaw=[...D.tagRaw??[],_[U+1]],U+=1;break;case"--format":D.format=_[U+1],U+=1;break;case"--completions":D.completions=_[U+1],U+=1;break;case"--purpose":D.purpose=_[U+1],U+=1;break;case"--model":D.model=_[U+1],U+=1;break;case"--strategy":D.strategy=_[U+1],U+=1;break;case"--dimensions":D.dimensions=Number(_[U+1]),U+=1;break;case"--semantic":D.semantic=!0;break;case"--context":D.context=!0;break;case"--max-tokens":D.maxTokens=Number(_[U+1]),U+=1;break;case"--max-items":D.maxItems=Number(_[U+1]),U+=1;break;case"--from":D.from=_[U+1],U+=1;break;case"--to":D.to=_[U+1],U+=1;break;case"--rev":D.rev=Number(_[U+1]),U+=1;break;case"--if-version":D.ifVersion=Number(_[U+1]),U+=1;break;case"--since":D.since=_[U+1],U+=1;break;case"--topic":D.topic=_[U+1],U+=1;break;case"--dedupe":D.dedupe=!0;break;case"--generate":D.generate=!0;break;case"--approve-write":D.approveWrite=!0;break;case"--provider":D.provider=_[U+1],U+=1;break;case"--mode":D.mode=_[U+1],U+=1;break;case"--machine":D.machine=_[U+1],U+=1;break;case"--workspace":D.workspace=_[U+1],U+=1;break;case"--api-url":D.apiUrl=_[U+1],U+=1;break;case"--canonical-example":D.canonicalExample=!0;break;case"--api-key":D.apiKey=_[U+1],U+=1;break;case"--email":D.email=_[U+1],U+=1;break;case"--org":D.org=_[U+1],U+=1;break;case"--org-id":D.orgId=_[U+1],U+=1;break;case"--user-id":D.userId=_[U+1],U+=1;break;case"--owner":D.owner=_[U+1],U+=1;break;case"--approved-by":D.approvedBy=_[U+1],U+=1;break;case"--patch-uri":D.patchUri=_[U+1],U+=1;break;case"--domain":D.domain=[...D.domain??[],_[U+1]],U+=1;break;case"--file-results":D.fileResults=!0;break;case"--full":D.full=!0;break;case"--dry-run":D.dryRun=!0;break;case"--fake":D.fake=!0;break;case"--no-tailscale":D.tailscale=!1;break;case"--no-artifact-content":D.artifactContent=!1;break;case"--no-color":D.noColor=!0;break;case"--scope":D.scope=_[U+1],U+=1;break;case"--tables":D.tables=_[U+1],U+=1;break;case"--peer-workspace":D.peerWorkspace=_[U+1],U+=1;break;case"--older-than":D.olderThan=Number(_[U+1]),U+=1;break;case"--empty":D.empty=!0;break;case"--archived":D.archived=!0;break;case"--include-archived":D.includeArchived=!0;break;case"--project":D.project=_[U+1],U+=1;break;case"--contract":D.contract=!0;break;case"--source-ref":D.sourceRef=[...D.sourceRef??[],_[U+1]],U+=1;break;case"--allow-global":D.allowGlobal=!0;break;default:throw Error(`Unknown flag: ${I}. Run 'knowledge --help' for valid options.`)}}return{positional:$,flags:D}}function Vw(_){if(!_)return"";return NY[_]??_}function Fw(_,$){let D=Array.from({length:_.length+1},()=>Array($.length+1).fill(0));for(let g=0;g<=_.length;g+=1)D[g][0]=g;for(let g=0;g<=$.length;g+=1)D[0][g]=g;for(let g=1;g<=_.length;g+=1)for(let U=1;U<=$.length;U+=1){let I=_[g-1]===$[U-1]?0:1;D[g][U]=Math.min(D[g-1][U]+1,D[g][U-1]+1,D[g-1][U-1]+I)}return D[_.length][$.length]}function Kw(_){if(!_)return"";let $=[...jY,...Object.keys(NY)],D="",g=Number.POSITIVE_INFINITY;for(let U of $){let I=Fw(_,U);if(I<g)g=I,D=U}return g<=3?D:""}function Mw(){return Yw(process.argv[1]??"").replace(/\.(?:js|ts|mjs|cjs)$/,"")==="knowledge"}async function Zw(_){if(!IY.includes(_[0]??""))return!1;let $=new HR;return $.name("knowledge").description("Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions"),aR($,{source:"knowledge"}),await $.parseAsync(_,{from:"user"}),!0}function bw(){console.log(`knowledge - local agent knowledge store Usage: knowledge <command> [options] @@ -1466,12 +1466,20 @@ List Options: -l, --limit <n> Items per page (default: 20) -s, --search <text> Filter by id/title/content (case-insensitive substring; use 'knowledge search' for semantic) -t, --tag <tag> Filter by tag; repeatable/comma-separated, item must match ALL - --sort <created|title> Sort field (default: created) - --desc Sort descending + --sort <created|title|updated> Sort field (default: created). 'updated' surfaces EDITS, + not only new items \u2014 what a change monitor needs. + --desc Sort descending (NOTE: this is the sort direction, + not --description) --archived Show only archived items --include-archived Include archived items Add/Update Options: + --description <text> REQUIRED on add. One line (24-280 chars) saying what this + item is FOR. It is what the fleet change notification shows + beside the title, so an agent can decide whether to open it. + --reach <fleet|project|seat|self> Who this binds (optional; default self) + --consequence <blocking|standing|reference> What a reader loses by not reading it + (optional; default reference) --url <url> Attach source URL Update Options: @@ -1491,8 +1499,20 @@ Export Options: Prune Options: --older-than <days> Remove items older than N days - --empty Remove items with empty content`)}function zw(_){if(_==="add"){console.log(`Usage: knowledge add <title> <content> [--url <url>] [-t <tag>]... [--json] - -t/--tag is repeatable and accepts comma-separated values: -t a -t b == -t "a,b"`);return}if(_==="list"||_==="ls"){console.log(`Usage: knowledge list|ls [--format table|json] [-p <page>] [-l <limit>] [-s <search>] [-t <tag>]... [--sort created|title] [--desc] [--archived] [--include-archived] [--verbose] [--json] + --empty Remove items with empty content`)}function Hw(_){if(_==="add"){console.log(`Usage: knowledge add <title> <content> --description <text> [--reach <r>] [--consequence <c>] [--url <url>] [-t <tag>]... [--json] + --description is REQUIRED (${_2}-${$2} chars). It is the one line the fleet-wide change + notification shows an agent beside the title, so they can decide whether to open the item. + It is enforced rather than encouraged because the equivalent OPTIONAL field on mementos + (when_to_use) is populated on zero rows \u2014 an optional guidance field lands at 0%. + Do not confuse --description with --desc, which is the sort-descending flag on list. + --reach ${aN.join("|")} and --consequence ${sN.join("|")} are optional governance + axes; they default to the QUIET end (${SS}/${WS}) so only a deliberate write escalates. + -t/--tag is repeatable and accepts comma-separated values: -t a -t b == -t "a,b"`);return}if(_==="list"||_==="ls"){console.log(`Usage: knowledge list|ls [--format table|json] [-p <page>] [-l <limit>] [-s <search>] [-t <tag>]... [--sort created|title|updated] [--desc] [--archived] [--include-archived] [--verbose] [--json] + --sort updated orders by updated_at, so an item REVISED today surfaces above one merely + CREATED today \u2014 this is how a change monitor asks "what moved?", which sorting by created + can never answer. Pair it with --desc to lead with the most recently edited item. Note that + --desc is the sort DIRECTION and is a different flag from --description on add/update. + The description itself is returned by --json but is NOT a column in the table render. -s/--search is a CASE-INSENSITIVE LITERAL SUBSTRING filter over id, title and content \u2014 not a tokenised or semantic search, so a word order that never appears verbatim matches nothing. It resolves an item by its slug because the id is included. For meaning-based lookup use \`knowledge @@ -1511,7 +1531,11 @@ Prune Options: item has moved to a different version since. Without it, the version used is whatever THIS command itself just re-read, which only guards the instant inside one invocation \u2014 it cannot catch a decision made from an earlier, separate \`get\`. On conflict, stderr and --json both - name the expected and the actual (current) version; there is no automatic retry.`);return}if(_==="archive"){console.log("Usage: knowledge archive --id <id> [--json]");return}if(_==="restore"||_==="unarchive"){console.log("Usage: knowledge restore|unarchive --id <id> [--json]");return}if(_==="upsert"){console.log(`Usage: knowledge upsert [title] [content] [--id <id>] [--title <title>] [--content <content>] [--url <url>] [-t <tag>]... [--json] + name the expected and the actual (current) version; there is no automatic retry.`);return}if(_==="archive"){console.log("Usage: knowledge archive --id <id> [--json]");return}if(_==="restore"||_==="unarchive"){console.log("Usage: knowledge restore|unarchive --id <id> [--json]");return}if(_==="upsert"){console.log(`Usage: knowledge upsert [title] [content] [--id <id>] [--title <title>] [--content <content>] [--description <text>] [--url <url>] [-t <tag>]... [--json] + --description (${_2}-${$2} chars) is REQUIRED when this command CREATES an item, and optional when it + UPDATES one \u2014 an ordinary edit never has to restate it. That asymmetry is why it is not simply + listed as required: upserting an existing id without it succeeds and leaves the stored value alone, + while upserting an id that does not exist yet is a create and is refused without it. -t/--tag is repeatable and accepts comma-separated values; tags are added, never replaced. With -t the output reports how many tags were actually added, on both the create and update paths.`);return}if(_==="untag"){console.log(`Usage: knowledge untag --id <id> -t <tag>... [--json] -t/--tag is repeatable and accepts comma-separated values. @@ -1532,29 +1556,29 @@ Prune Options: which env var selected it. Reads the environment only: no store is opened, no config file is read, and no request is made, so it is safe on a machine with no config and no network. Selection is EXPLICIT-ONLY: set ${o$[0]}=sqlite|postgres. Setting only - ${xU[0]} / ${yU[0]} does NOT switch backends; + ${yg[0]} / ${hg[0]} does NOT switch backends; those are reported as present-but-ignored pointers. Env var NAMES are printed, never values.`);return}if(_==="setup"){console.log("Usage: knowledge setup --mode local|hosted [--api-url https://...] [--canonical-example] [--scope local|global|project] [--json]");return}if(_==="auth"){console.log("Usage: knowledge auth login|whoami|logout [--api-key <key>] [--email <email>] [--org <slug>] [--api-url https://...] [--scope local|global|project] [--json]");return}if(_==="storage"){console.log(`Usage: knowledge storage status|validate|repair-artifact-keys|migrate-legacy-path|merge-legacy-path [--approve-write --approved-by <name>] [--scope local|global|project] [--json] knowledge storage import-legacy [--dry-run] [--scope global] [--json]`);return}if(_==="machines"){console.log("Usage: knowledge machines topology [--no-tailscale] | preflight [machine] [--workspace <repo>] [--scope local|global|project] [--verbose] [--json]");return}if(_==="sync"){console.log(`Usage: knowledge sync status|doctor|readiness|snapshot|machines|conflicts [show|propose|resolve] [id] | dry-run|pull|push|sync|export|import [--peer-workspace <path>] [--machine <ssh-alias>] [--tables <names>] [--dry-run] [--limit <n>] [--approve-write] [--approved-by <name>] [--strategy <name>] [--mode deterministic|ai] [--model <alias|provider:model>] [--fake] [--no-tailscale] [--scope local|global|project] [--verbose] [--json] -Remote machine sync resolves peer paths through @hasna/machines when --peer-workspace is omitted.`);return}if(_==="db"){console.log("Usage: knowledge db init|stats|storage status [--scope local|global|project] [--json]");return}if(_==="wiki"){console.log("Usage: knowledge wiki init|compile|file-answer|lint [query|prompt] [--title <title>] [--content <answer>] [--approve-write] [--limit <n>] [--scope local|global|project] [--json]");return}if(_==="app-wiki"){console.log("Usage: knowledge app-wiki init | note add|get|list | source add <source-ref> | search <query> | query <query> [--title <title>] [--content <text>] [--tag <tag>] [--source-ref <uri>] [--scope project|local|global] [--allow-global] [--json]");return}if(_==="source"){console.log("Usage: knowledge source resolve <source-ref> [--purpose knowledge_answer|knowledge_index] [--limit <n>] [--scope local|global|project] [--json]");return}if(_==="ingest"){console.log("Usage: knowledge ingest manifest <file|s3://bucket/key> | source <source-ref> | rules [--workspace <path>] [--owner <name>] [--dry-run] [--max-items <n>] [--limit <n>] [--purpose knowledge_index] [--scope local|global|project] [--json]");return}if(_==="reindex"){console.log("Usage: knowledge reindex status|enqueue|embeddings|outbox [file|s3://bucket/key] [--full] [--fake] [--scope local|global|project] [--json]");return}if(_==="search"){console.log("Usage: knowledge search <query> [--context] [--semantic] [--model openai:text-embedding-3-small] [--limit <n>] [--dimensions <n>] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="context"){console.log("Usage: knowledge context pack <query> [--from search|runs|loops] [--max-tokens <n>] [--max-items <n>] [--limit <n>] [--semantic] [--model openai:text-embedding-3-small] [--dimensions <n>] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="proposals"){console.log("Usage: knowledge proposals context --from loops --topic <text> [--since <duration|ISO>] [--dedupe] [--max-tokens <n>] [--max-items <n>] [--scope local|global|project] [--json]");return}if(_==="web"){console.log("Usage: knowledge web search <query> [--provider openai|anthropic] [--model provider:model] [--domain <domain>] [--file-results] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="ask"||_==="build"){console.log("Usage: knowledge ask|build <prompt> [--generate] [--semantic] [--model default|provider:model] [--approve-write] [--scope local|global|project] [--verbose] [--json]");return}if(_==="embeddings"){console.log("Usage: knowledge embeddings status|index|search [query] [--model openai:text-embedding-3-small] [--limit <n>] [--dimensions <n>] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="providers"){console.log("Usage: knowledge providers status|models|check [provider|model-alias] [--scope local|global|project] [--json]");return}if(_==="safety"){console.log("Usage: knowledge safety status|check|approve|audit|redact [args] [--scope local|global|project] [--json]");return}if(_==="events"){console.log("Usage: knowledge events emit|list|replay [args] [--json]");return}if(_==="webhooks"){console.log("Usage: knowledge webhooks add|list|remove|test [args] [--json]");return}Pw()}function Sw(_){if(_.noColor||process.env.NO_COLOR)return!1;if(process.env.FORCE_COLOR)return!0;return process.stdout.isTTY===!0}function r(_,$,g){if($){console.log(JSON.stringify(_,null,2));return}if(typeof _==="string"){console.log(_);return}if(g?.verbose){console.log(JSON.stringify(_,null,2));return}let U=_.message;console.log(U?`${U} -${i_()}`:Ww(_))}function i_(_="full details"){return`Hint: use --verbose for ${_}, or --json for machine-readable output.`}function g_(_,$=120){let g=_===null||_===void 0?"":String(_).replace(/\s+/g," ").trim();if(g.length<=$)return g;return`${g.slice(0,Math.max(0,$-3))}...`}function Ww(_){if(!_||typeof _!=="object")return String(_);let $=_,g=[$.ok===!1?"Result: not ok":"Result: ok"];for(let[U,D]of Object.entries($).slice(0,8)){if(U==="ok"||U==="message")continue;if(Array.isArray(D))g.push(`${U}: ${D.length} item(s)`);else if(D&&typeof D==="object")g.push(`${U}: ${Object.keys(D).length} field(s)`);else g.push(`${U}: ${g_(D,100)}`)}return g.push(i_()),g.join(` -`)}function Xw(_){let $=_.mode==="postgres"?"postgres (HTTP /v1 API)":"sqlite (on-box store)",g=_.source.kind==="env"?`selected by ${_.source.name}=${_.source.value}`:`default (no mode var set; set ${o$[0]}=postgres to use the API)`,U=[`Knowledge mode: ${$}`,` ${g}`];if(_.pointer_env_present.length>0){let D=_.pointer_ignored?"present but IGNORED for mode selection":"present";U.push(` Pointer env ${D}: ${_.pointer_env_present.join(", ")}`)}if(_.network_guard_active)U.push(" Outbound guard: ACTIVE (NODE_ENV=test) \u2014 non-loopback requests are refused.");if(_.warning)U.push(` Note: ${_.warning}`);return U.join(` -`)}function Rw(_){return[`Knowledge paths (${_.scope})`,`Home: ${_.home}`,`SQLite: ${_.knowledge_db_path}`,`JSON store: ${_.json_store_path}`,`Wiki: ${_.wiki_dir}`,i_("config and all paths")].join(` -`)}function c8(_){console.log(JSON.stringify(_))}function Gw(_){let $=_.summary,g=[`Knowledge inventory (${_.scope})`,`Home: ${_.home}`,`JSON store: ${_.paths.json_store_path}${_.paths.json_store_exists?"":" (missing)"}`,`SQLite catalog: ${_.paths.knowledge_db_path}`,`Summary: ${$.legacy_items} item(s), ${$.sources} source(s), ${$.chunks} chunk(s), ${$.wiki_pages} wiki page(s), ${$.indexes} index(es), ${$.storage_objects} artifact(s), ${$.runs} run(s)`],U=(D,I,j)=>{if(I.length===0)return;g.push("",`${D}:`);for(let N of I.slice(0,_.limit))g.push(`- ${j(N)}`)};return U("Items",_.items,(D)=>`${D.id}: ${D.title}`),U("Sources",_.sources,(D)=>`${D.kind??"source"} ${D.uri} (${D.chunks??0} chunk(s))`),U("Chunks",_.chunks,(D)=>`${D.kind??"chunk"} ${D.id}: ${D.text_preview??""}`),U("Wiki pages",_.wiki_pages,(D)=>`${D.path}: ${D.title}`),U("Indexes",_.indexes,(D)=>`${D.kind??"index"} ${D.name}${D.shard_key?` (${D.shard_key})`:""}`),U("Artifacts",_.storage_objects,(D)=>`${D.kind??"artifact"} ${D.artifact_uri}`),U("Runs",_.runs,(D)=>`${D.type??"run"} ${D.id}: ${D.status??"unknown"}`),U("Machines",_.machines,(D)=>`${D.machine_id}${D.workspace_home?` ${D.workspace_home}`:""}`),U("Sync conflicts",_.sync_conflicts,(D)=>`${D.id}: ${D.entity_kind}/${D.entity_id} ${D.status}`),g.join(` -`)}function Yw(_){let $=Array.isArray(_.results)?_.results:[],g=[`${$.length} search result(s) for "${g_(_.query,80)}"${_.mode?.semantic?" (semantic enabled)":""}`];for(let U of $.slice(0,_.limit??10)){let D=U.source?.uri??U.provenance?.source_uri??U.artifact?.path??U.artifact?.uri??U.id,I=typeof U.score==="number"?` score=${U.score.toFixed(3)}`:"";if(g.push(`- ${U.kind??"result"} ${g_(U.title??U.id,80)}${I}`),D)g.push(` source: ${g_(D,120)}`);if(U.text)g.push(` text: ${g_(U.text,180)}`)}if($.length===0)g.push("- No matches. Try a broader query or run `knowledge inventory --scope project`.");if(g.push(i_("scores, provenance, and full result objects")),!_.context)g.push("Next: use --context for an agent-ready citation pack, or --limit <n> to change the result count.");return g.join(` -`)}function Qw(_){let $=Array.isArray(_.excerpts)?_.excerpts:[],g=Array.isArray(_.citations)?_.citations:[],U=[`${$.length} context excerpt(s) for "${g_(_.query??_.normalized_query,80)}"`];for(let D of $.slice(0,10)){let I=g.find((O)=>O.id===D.citation_id||O.result_id===D.result_id),j=I?.source_uri??I?.artifact_path??D.result_id,N=typeof D.score==="number"?` score=${D.score.toFixed(3)}`:"";if(U.push(`- ${D.kind??"excerpt"} ${g_(D.id,44)}${N}`),j)U.push(` source: ${g_(j,120)}`);U.push(` text: ${g_(D.text,220)}`)}return U.push(`Citations: ${g.length}`),U.push(i_("citations, graph, notes, and full excerpts")),U.join(` -`)}function Tw(_){let $=Array.isArray(_.results)?_.results:[],g=[`${$.length} semantic result(s) for "${g_(_.query,80)}"`,`Index: ${_.provider??"unknown"}:${_.model??"unknown"} (${_.dimensions??"?"} dimensions)`];for(let U of $.slice(0,_.limit??10)){let D=typeof U.score==="number"?` score=${U.score.toFixed(3)}`:"";if(g.push(`- ${g_(U.chunk_id,44)}${D}`),U.source_uri)g.push(` source: ${g_(U.source_uri,120)}`);if(U.text)g.push(` text: ${g_(U.text,180)}`)}return g.push(i_("provenance and full vector result objects")),g.join(` -`)}function qw(_){let $=Array.isArray(_.sources)?_.sources:[],g=[`${$.length} web source(s) for "${g_(_.query,80)}"`,`Provider: ${_.provider??"unknown"}${_.model?` (${_.model})`:""}`];for(let U of $.slice(0,_.limit??10)){g.push(`- ${g_(U.title??U.url??U.uri??"source",100)}`);let D=U.url??U.uri??U.source_ref;if(D)g.push(` url: ${g_(D,140)}`);if(U.snippet)g.push(` snippet: ${g_(U.snippet,180)}`)}return g.push(i_("provider payloads and filed source refs")),g.join(` -`)}function Bw(_){let $=Array.isArray(_.machines)?_.machines:[],g=[`${$.length} machine(s) discovered via ${_.source??"unknown"}`,`Adapter: ${_.adapter?.package??"@hasna/machines"} ${_.adapter?.available?"available":"unavailable"}`];for(let U of $.slice(0,10)){let D=U.local?" local":"",I=U.tailscale_dns??U.ssh_target??U.hostname??"";g.push(`- ${g_(U.machine_id??U.id??"unknown",48)}${D}${I?` -> ${g_(I,80)}`:""}`)}if($.length>10)g.push(`... ${$.length-10} more machine(s).`);if(Array.isArray(_.warnings)&&_.warnings.length>0)g.push(`Warnings: ${_.warnings.slice(0,3).join("; ")}`);return g.push(i_("full topology, route hints, and adapter evidence")),g.join(` -`)}function Kw(_){let $=Array.isArray(_.checks)?_.checks:[],g=$.filter((I)=>I.status==="fail"||I.severity==="fail"),U=$.filter((I)=>I.status==="warn"||I.severity==="warn"),D=[`Machine preflight ${_.ok?"passed":"needs attention"} for ${_.machine_id??_.requested_machine_id??"local"}`,`Checks: ${$.length} total, ${g.length} failed, ${U.length} warning(s)`];for(let I of[...g,...U].slice(0,8))D.push(`- ${I.status??I.severity??"check"} ${g_(I.id??I.kind??"check",72)}: ${g_(I.message??I.detail??"",140)}`);return D.push(i_("all checks and repair hints")),D.join(` -`)}function Vw(_){return[`Sync status (${_.scope??"scope"})`,`Schema: v${_.sqlite_schema_version??"unknown"}`,`Machines: ${_.machines?.total??0}; snapshots: ${_.snapshots?.total??0}; open conflicts: ${_.conflicts?.open??0}`,`Tables: ${Object.entries(_.table_counts??{}).slice(0,8).map(([g,U])=>`${g}=${U}`).join(", ")||"none"}`,i_("registry rows, clocks, snapshots, imports, and conflicts")].join(` -`)}function Fw(_){let $=Array.isArray(_.warnings)?_.warnings:[],g=Array.isArray(_.recommended_commands)?_.recommended_commands:[],U=[_.message??`Sync readiness ${_.ok?"ok":"needs attention"}`,`Storage: ${_.storage?.validation?.ok?"ok":"needs attention"}; open-files: ${_.open_files?.ok?"ok":"needs attention"}; open conflicts: ${_.sync?.open_conflicts??0}`];if($.length>0)U.push(`Warnings: ${$.slice(0,5).join("; ")}`);for(let D of g.slice(0,5))U.push(`- next: ${g_(D.shell_command??D.command?.join(" ")??D.id,160)}`);return U.push(i_("diagnostics, route evidence, and all recommended commands")),U.join(` -`)}function Mw(_){let $=_.snapshot??{};return[`Sync snapshot ${_.ok?"recorded":"failed"}`,`Snapshot: ${g_($.id??$.snapshot_id??"unknown",80)} ${$.content_hash?`(${g_($.content_hash,80)})`:""}`,`Machines upserted: ${_.machines_upserted??0}; machine: ${_.machine_id??$.machine_id??"unknown"}`,i_("snapshot payload and topology evidence")].join(` -`)}function Zw(_){let $=Array.isArray(_.conflicts)?_.conflicts:[],g=[`${$.length} sync conflict(s)`];for(let U of $.slice(0,10))g.push(`- ${g_(U.id,48)} ${U.status??"unknown"} ${U.entity_kind??""}/${g_(U.entity_id,80)}`);return g.push("Next: use `knowledge sync conflicts show <id> --json` for one conflict."),g.push(i_("full conflict objects")),g.join(` -`)}function bw(_){let $=Array.isArray(_.machines)?_.machines:[],g=[`${$.length} registered sync machine(s)`];for(let U of $.slice(0,10))g.push(`- ${g_(U.machine_id,48)} ${g_(U.hostname??U.workspace_home??"",100)}`);return g.push(i_("machine registry rows")),g.join(` -`)}function n8(_,$){let g=[`Sync ${$} ${_.ok===!1?"needs attention":"completed"}${_.dry_run?" (dry run)":""}`],U=(D,I)=>{if(!I)return;let N=(Array.isArray(I.tables)?I.tables:[]).reduce((L,z)=>L+(z.inserted??0)+(z.updated??0)+(z.deleted??0),0),O=I.artifacts?.copied??0,A=Array.isArray(I.errors)?I.errors.length:0;g.push(`${D}: ${N} table row change(s), ${O} artifact(s), ${A} error(s)`)};if(U("pull",_.pull),U("push",_.push),Array.isArray(_.errors)&&_.errors.length>0)g.push(`Errors: ${_.errors.slice(0,3).map((D)=>g_(D,120)).join("; ")}`);return g.push(i_("per-table rows, artifacts, clocks, and errors")),g.join(` -`)}function Hw(_){let $=Array.isArray(_.citations)?_.citations:[],g=Array.isArray(_.context?.excerpts)?_.context.excerpts:Array.isArray(_.excerpts)?_.excerpts:[],U=[_.generated?"Generated answer with citations":"Prepared citation context draft",`Citations: ${$.length}; excerpts: ${g.length}`];if(_.answer)U.push(`Answer: ${g_(_.answer,500)}`);for(let D of $.slice(0,5))U.push(`- ${g_(D.source_uri??D.ref??D.id,120)}`);return U.push(i_("full answer payload, context, citations, and run ledger")),U.join(` -`)}function kw(_,$){return[`Export preview: ${_.length} item(s) available`,"Default output is compact to avoid terminal/context bloat.","Use --verbose or --json for a JSON object, or --format jsonl for newline-delimited records.",$!=="json"?`Requested format: ${$}`:""].filter(Boolean).join(` -`)}function d8(_){return!_||_==="local"||_==="localhost"}function _0(_){if(!_.id)throw Error("Missing required --id. Example: knowledge get --id <id>")}function Cw(_,$){let g=$.sort??"created";if(g!=="created"&&g!=="title")throw Error("Invalid --sort value. Use 'created' or 'title'.");let U=[..._].sort((D,I)=>{if(g==="title")return D.title.localeCompare(I.title);return D.created_at.localeCompare(I.created_at)});if($.desc)U.reverse();return{sorted:U,sort:g,direction:$.desc?"desc":"asc"}}async function rw(_){if(await Jw(_))return;let{positional:$,flags:g}=Nw(_);if($0("debug","CLI invoked",{command:$[0],flags:{json:g.json,store:g.store}}),g.version){console.log(g.json?JSON.stringify({name:C$.name,version:C$.version},null,2):`${C$.name} ${C$.version}`);return}if(g.completions){let J=g.completions;if(J==="bash")console.log('_knowledge() { local cur; cur="${COMP_WORDS[COMP_CWORD]}"; COMPREPLY=($(compgen -W "add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode setup auth storage machines sync db wiki app-wiki source ingest reindex search context proposals web ask build embeddings providers safety events webhooks help ls rm edit unarchive --json --verbose --yes --help --version --desc --page --limit --search --sort --id --store --title --content --url --tag --rev --to --format --completions --purpose --model --dimensions --semantic --context --max-tokens --max-items --from --since --topic --dedupe --generate --approve-write --provider --mode --machine --workspace --peer-workspace --api-url --canonical-example --api-key --email --org --org-id --user-id --owner --domain --file-results --full --dry-run --fake --no-tailscale --no-artifact-content --no-color --scope --tables --archived --include-archived --project --contract --source-ref --allow-global" -- "$cur")); }; complete -F _knowledge knowledge');else if(J==="zsh")console.log(`#compdef knowledge -_knowledge() { _arguments -C "1: :(add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode setup auth storage machines sync db wiki app-wiki source ingest reindex search context proposals web ask build embeddings providers safety events webhooks help ls rm edit unarchive)" "(--json)--json" "(--verbose)--verbose" "(--yes)-y" "(--help)--help" "(--version)--version" "(--desc)--desc" "(--archived)--archived" "(--include-archived)--include-archived" "(--semantic)--semantic" "(--context)--context" "(--dedupe)--dedupe" "(--generate)--generate" "(--approve-write)--approve-write" "(--canonical-example)--canonical-example" "(--file-results)--file-results" "(--full)--full" "(--dry-run)--dry-run" "(--fake)--fake" "(--no-tailscale)--no-tailscale" "(--no-artifact-content)--no-artifact-content" "(--contract)--contract" "(--allow-global)--allow-global" "(-p --page)"{-p,--page}"[page number]:number:" "(-l --limit)"{-l,--limit}"[items per page]:number:" "(-s --search)"{-s,--search}"[search text]:text:" "(--sort)--sort"{created,title}:" "(--id)--id[item id]:id:" "(--store)--store[store path]:path:" "(--title)--title[new title]:" "(--content)--content[new content]:" "(--url)--url[source url]:" "(-t --tag)"{-t,--tag}"[tag]:tag:" "(--format)--format[json|jsonl]:" "(--completions)--completions[output completions]:shell:(bash zsh fish):" "(--purpose)--purpose[purpose]:" "(--model)--model[model ref]:" "(--dimensions)--dimensions[embedding dimensions]:number:" "(--max-tokens)--max-tokens[token budget]:number:" "(--max-items)--max-items[item budget]:number:" "(--from)--from"{search,loops,runs}:" "(--to)--to[diff target: version number or current]:" "(--rev)--rev[entry version for diff]:number:" "(--since)--since[duration or ISO time]:" "(--topic)--topic[topic text]:" "(--provider)--provider[provider]:" "(--mode)--mode"{local,hosted}:" "(--machine)--machine[machine id or SSH alias]:" "(--workspace)--workspace[repo workspace path]:path:" "(--peer-workspace)--peer-workspace[peer repo or knowledge home path]:path:" "(--api-url)--api-url[hosted API URL]:" "(--api-key)--api-key[hosted API key]:" "(--email)--email[email]:" "(--org)--org[org slug]:" "(--org-id)--org-id[org id]:" "(--user-id)--user-id[user id]:" "(--owner)--owner[provenance owner]:" "(--domain)--domain[domain]:" "(--project)--project[project id/name/slug]:" "(--source-ref)--source-ref[source ref]:" "(--no-color)--no-color[disable color]" "(--scope)--scope"{local,global,project}:" "(--tables)--tables[comma-separated DB sync tables]:" }; _knowledge`);else if(J==="fish")console.log('complete -c knowledge -f; complete -c knowledge -a "add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode setup auth storage machines sync db wiki app-wiki source ingest reindex search context proposals web ask build embeddings providers safety events webhooks help ls rm edit unarchive"; complete -c knowledge -l json; complete -c knowledge -l verbose; complete -c knowledge -l yes -s y; complete -c knowledge -l help -s h; complete -c knowledge -l version -s v; complete -c knowledge -l desc; complete -c knowledge -l archived; complete -c knowledge -l include-archived; complete -c knowledge -l semantic; complete -c knowledge -l context; complete -c knowledge -l max-tokens; complete -c knowledge -l max-items; complete -c knowledge -l from -a "search loops runs"; complete -c knowledge -l to; complete -c knowledge -l rev; complete -c knowledge -l since; complete -c knowledge -l topic; complete -c knowledge -l dedupe; complete -c knowledge -l generate; complete -c knowledge -l approve-write; complete -c knowledge -l allow-global; complete -c knowledge -l canonical-example; complete -c knowledge -l provider; complete -c knowledge -l mode; complete -c knowledge -l machine; complete -c knowledge -l workspace; complete -c knowledge -l peer-workspace; complete -c knowledge -l api-url; complete -c knowledge -l api-key; complete -c knowledge -l email; complete -c knowledge -l org; complete -c knowledge -l org-id; complete -c knowledge -l user-id; complete -c knowledge -l owner; complete -c knowledge -l domain; complete -c knowledge -l project; complete -c knowledge -l contract; complete -c knowledge -l source-ref; complete -c knowledge -l file-results; complete -c knowledge -l full; complete -c knowledge -l dry-run; complete -c knowledge -l fake; complete -c knowledge -l no-tailscale; complete -c knowledge -l no-artifact-content; complete -c knowledge -s p -l page; complete -c knowledge -s l -l limit; complete -c knowledge -s s -l search; complete -c knowledge -l sort; complete -c knowledge -l id; complete -c knowledge -l store; complete -c knowledge -l title; complete -c knowledge -l content; complete -c knowledge -l url; complete -c knowledge -s t -l tag; complete -c knowledge -l format; complete -c knowledge -l completions; complete -c knowledge -l purpose; complete -c knowledge -l model; complete -c knowledge -l dimensions; complete -c knowledge -l no-color; complete -c knowledge -l scope -a "local global project"; complete -c knowledge -l tables');else throw Error("Invalid --completions value. Use 'bash', 'zsh', or 'fish'.");return}let U=Ew($[0]),D=1,I=$.length>1||/\s/.test(U);if(Lw()&&U&&!i8.includes(U)&&I)U="ask",D=0;if(!U||g.help||U==="help"){let J=U==="help"?$[1]:U||$[1];zw(J);return}if(U==="mode"){let J=IS(process.env);r(g.json||g.verbose?{ok:!0,...J}:Xw(J),g.json,g);return}US(process.env,{storePathOverridden:Boolean(g.store)});let j=U==="project-panel"||U==="app-wiki"?g.scope??"project":g.scope,N=IN({scope:j});if(U==="storage"){let J=$[1]??"status";if(J==="import-legacy"){if(g.scope&&g.scope!=="global")throw Error("knowledge storage import-legacy only supports --scope global because ~/.open-knowledge is a global legacy store.");let P=uN({dryRun:g.dryRun});if(r(P,g.json),!P.ok)process.exitCode=1;return}if(J==="migrate-legacy-path"||J==="migrate-legacy"||J==="migrate-path"){let P=N.migrateLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(r(P,g.json),!P.ok&&!g.json)process.exitCode=1;return}if(J==="merge-legacy-path"||J==="merge-legacy"||J==="merge-path"){let P=N.mergeLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(r(P,g.json),!P.ok&&!g.json)process.exitCode=1;return}}let O=Boolean(g.store),A=g.store;if(!A)if(j==="project"||j==="local")A=N.workspace.jsonStorePath;else A=kU();if(!O&&(U==="ask"||U==="build")&&!Y6())kg(A);let L=cU({storePath:A,storePathOverridden:O});if(U==="inventory"){let J=await N.resolveInventory({limit:g.limit,includeArchived:g.includeArchived||g.archived,storePath:Y6()?void 0:A});r(g.json||g.verbose?J:Gw(J),g.json,g);return}if(U==="project-panel"){let J=g.project??$[1];if(!J)throw Error("Usage: knowledge project-panel --project <id|name|slug> [--json|--contract]");let P=await l9(J,{service:N,limit:g.limit,storePath:Y6()?void 0:A,includeArchived:g.includeArchived||g.archived});r(g.json||g.contract?P:t9(P),g.json||g.contract);return}if(U==="paths"){let J=N.paths();r(g.json||g.verbose?J:Rw(J),g.json,g);return}if(U==="setup"){let J=N.setup({mode:g.mode,apiUrl:g.apiUrl,canonicalExample:g.canonicalExample});r(J,g.json,g);return}if(U==="auth"){let J=$[1]??"whoami";if(J==="whoami"||J==="status"){let P=N.authStatus(process.env);r({ok:!0,...P,message:P.authenticated?`Authenticated via ${P.source}`:"Not authenticated"},g.json,g);return}if(J==="login"){let P=g.apiKey??process.env.KNOWLEDGE_API_KEY??process.env.HASNA_KNOWLEDGE_API_KEY;if(!P)throw Error("Usage: knowledge auth login --api-key <key> [--email <email>]");let S=N.saveAuth({apiKey:P,email:g.email,orgSlug:g.org,orgId:g.orgId,userId:g.userId,apiUrl:g.apiUrl},process.env);r({ok:!0,authenticated:!0,email:S.email??null,org_slug:S.org_slug??null,api_url:S.api_url??N.authStatus(process.env).api_url,auth_path:N.authStatus(process.env).auth_path,message:`Saved hosted credentials for ${S.email??"API key"}`},g.json,g);return}if(J==="logout"){let P=N.clearAuth(process.env);r({ok:!0,removed:P,message:P?"Removed hosted credentials":"No hosted credentials found"},g.json,g);return}throw Error("Invalid auth action. Use 'login', 'whoami', or 'logout'.")}if(U==="storage"){let J=$[1]??"status";if(J==="status"){let P=N.storageContract(),S=N.validateStorage();r({ok:S.ok,...P,validation:S,message:`${P.storage_type} artifact storage at ${P.artifact_store.uri_prefix}`},g.json,g);return}if(J==="validate"){let P=N.validateStorage();if(r({ok:P.ok,validation:P,message:P.ok?"Storage contract valid":`Storage contract invalid: ${P.errors.join("; ")}`},g.json,g),!P.ok)process.exitCode=1;return}if(J==="repair-artifact-keys"||J==="repair-keys"){let P=N.repairArtifactManifestKeys({approveWrite:g.approveWrite,approvedBy:g.approvedBy,dryRun:g.dryRun});r(P,g.json,g);return}if(J==="migrate-legacy-path"||J==="migrate-legacy"||J==="migrate-path"){let P=N.migrateLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(r(P,g.json),!P.ok&&!g.json)process.exitCode=1;return}if(J==="merge-legacy-path"||J==="merge-legacy"||J==="merge-path"){let P=N.mergeLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(r(P,g.json),!P.ok&&!g.json)process.exitCode=1;return}throw Error("Invalid storage action. Use 'status', 'validate', 'repair-artifact-keys', 'migrate-legacy-path', 'merge-legacy-path', or 'import-legacy'.")}if(U==="machines"){let J=$[1]??"topology";if(J==="topology"||J==="status"){let P=await N.machineTopology({includeTailscale:g.tailscale!==!1});r(g.json||g.verbose?P:Bw(P),g.json,g);return}if(J==="preflight"||J==="check"){let P=$[2]??g.machine??"local",S=g.workspace??process.cwd(),X=await N.machinePreflight({machineId:P,commands:[{command:"bun",required:!0},{command:"knowledge",required:!0}],packages:[{name:C$.name,command:"knowledge",expectedVersion:C$.version,required:!0},{name:"@hasna/machines",command:"machines",required:!1}],workspaces:[{label:"open-knowledge",path:S,expectedPackageName:C$.name,expectedVersion:C$.version,required:!0}]});if(r(g.json||g.verbose?X:Kw(X),g.json,g),!X.ok&&!g.json)process.exitCode=1;return}throw Error("Invalid machines action. Use 'topology' or 'preflight'.")}if(U==="sync"){let J=$[1]??"status",P=g.tables?g.tables.split(",").map((S)=>S.trim()).filter(Boolean):void 0;if(J==="status"){let S=N.syncStatus();r(g.json||g.verbose?S:Vw(S),g.json,g);return}if(J==="doctor"||J==="readiness"||J==="preflight"){let S=await N.syncDoctor({machine:g.machine??null,peerWorkspace:g.peerWorkspace??null,includeTailscale:g.tailscale!==!1,tables:P}),X={package:{name:C$.name,version:C$.version},...S};if(r(g.json||g.verbose?X:Fw(X),g.json,g),!S.ok&&!g.json)process.exitCode=1;return}if(J==="snapshot"||J==="record"){let S=await N.createSyncSnapshot({includeTailscale:g.tailscale!==!1,machineId:g.machine});r(g.json||g.verbose?S:Mw(S),g.json,g);return}if(J==="conflicts"||J==="conflict"){let S=$[2];if(S==="show"||S==="get"){let R=$[3]??g.id;if(!R)throw Error("Usage: knowledge sync conflicts show <id>");let K=N.syncConflict(R);r({ok:!0,conflict:K,message:`Sync conflict ${R}`},g.json,g);return}if(S==="propose"||S==="proposal"){let R=$[3]??g.id;if(!R)throw Error("Usage: knowledge sync conflicts propose <id>");r(g.mode==="ai"?await N.proposeSyncConflictResolutionWithAi({id:R,modelRef:g.model,fake:g.fake}):N.proposeSyncConflictResolution(R),g.json,g);return}if(S==="resolve"){let R=$[3]??g.id;if(!R)throw Error("Usage: knowledge sync conflicts resolve <id> --approve-write --approved-by <name> [--strategy <name>]");let K=N.resolveSyncConflict({id:R,strategy:g.strategy,approvedBy:g.approvedBy,approveWrite:g.approveWrite,proposedPatchUri:g.patchUri});if(r(K,g.json,g),!K.ok&&!g.json)process.exitCode=1;return}let X=N.syncConflicts({status:S,limit:g.limit}),G={ok:!0,conflicts:X,message:`${X.length} sync conflict(s)`};r(g.json||g.verbose?G:Zw(G),g.json,g);return}if(J==="machines"||J==="registry"){let S=N.syncMachines(),X={ok:!0,machines:S,message:`${S.length} registered sync machine(s)`};r(g.json||g.verbose?X:bw(X),g.json,g);return}if(J==="export"){let S=N.exportSyncBundle({machineId:g.machine??null,tables:P,includeArtifactContent:g.artifactContent!==!1});r(S,!0);return}if(J==="import"){let S=await Bun.stdin.text();if(!S.trim())throw Error("Usage: knowledge sync import < bundle.json");let X=await N.importSyncBundle({bundle:JSON.parse(S),dryRun:g.dryRun,direction:"import",machineId:g.machine??null});r(g.json||g.verbose?X:n8(X,J),g.json,g);return}if(J==="dry-run"||J==="pull"||J==="push"||J==="sync"){if(!g.peerWorkspace&&d8(g.machine))throw Error(`Usage: knowledge sync ${J} --peer-workspace <repo-or-knowledge-home> [--scope project] -Remote machine sync can omit --peer-workspace when machines path mapping is configured.`);let S=J==="dry-run"?"both":J==="sync"?"both":J,X=!d8(g.machine)?await N.syncRemotePeer({direction:S,machine:g.machine,peerWorkspace:g.peerWorkspace,tables:P,dryRun:g.dryRun===!0||J==="dry-run",includeArtifactContent:g.artifactContent!==!1,includeTailscale:g.tailscale!==!1}):await N.syncPeer({peerWorkspace:g.peerWorkspace,direction:S,dryRun:g.dryRun===!0||J==="dry-run",tables:P,includeArtifactContent:g.artifactContent!==!1,machineId:g.machine??null});if(r(g.json||g.verbose?X:n8(X,J),g.json,g),!X.ok&&!g.json)process.exitCode=1;return}throw Error("Invalid sync action. Use 'status', 'doctor', 'snapshot', 'conflicts', 'machines', 'dry-run', 'pull', 'push', 'sync', 'export', or 'import'.")}if(U==="db"){let J=$[1]??"init";if(J==="init"){let P=N.initDb();r({ok:!0,...P,message:`Initialized ${P.path}`},g.json,g);return}if(J==="stats"){let P=N.dbStats();r({ok:!0,path:N.workspace.knowledgeDbPath,...P,message:`knowledge.db schema v${P.schema_version}`},g.json,g);return}if(J==="storage"){if(($[2]??"status")==="status"){let S=o3({scope:g.scope});r({ok:!0,...S,message:`knowledge.db storage mode ${S.mode}`},g.json,g);return}throw Error("Invalid db storage action. Only 'status' is supported. The 'push'/'pull'/'sync' Postgres sync commands were removed (DSN-on-client is forbidden); use the cloud API flip instead.")}throw Error("Invalid db action. Use 'init', 'stats', or 'storage'.")}if(U==="app-wiki"){let J=$[1]??"init";if(J==="paths"||J==="status"){r({ok:!0,standard:"hasna-app-wiki.v1",default_scope:"project",global_writes_require:"--allow-global",...N.paths()},g.json);return}if(J==="init"||J==="open"){let P=await N.initAppWiki({allowGlobal:g.allowGlobal});r(P,g.json);return}if(J==="note"||J==="notes"){let P=$[2]??"list";if(P==="add"||P==="create"){let S=g.title??$[3],X=g.content??$.slice(4).join(" ");if(!S||!X)throw Error("Usage: knowledge app-wiki note add --title <title> --content <text> [--source-ref <uri>]");let G=await N.addAppWikiNote({title:S,content:X,tags:g.tag,sourceRefs:g.sourceRef,allowGlobal:g.allowGlobal});r(G,g.json);return}if(P==="list"||P==="ls"){let S=N.listAppWikiNotes({limit:g.limit});r({ok:!0,scope:N.scope,home:N.workspace.home,notes:S,message:`${S.length} app wiki note(s)`},g.json);return}if(P==="get"||P==="show"){let S=$[3]??g.id;if(!S)throw Error("Usage: knowledge app-wiki note get <id-or-path>");let X=await N.getAppWikiNote(S,{includeContent:!0});if(!X)throw Error(`App wiki note not found: ${S}`);r(X,g.json);return}throw Error("Invalid app-wiki note action. Use 'add', 'list', or 'get'.")}if(J==="source"||J==="sources"){let P=$[2]??"add";if(P!=="add"&&P!=="ingest")throw Error("Invalid app-wiki source action. Use 'add'.");let S=$[3]??g.sourceRef?.[0];if(!S)throw Error("Usage: knowledge app-wiki source add <source-ref>");let X=await N.addAppWikiSourceRef({sourceRef:S,purpose:g.purpose,allowGlobal:g.allowGlobal});r({ok:!0,...X,message:`Added app wiki source ${X.source_ref}`},g.json);return}if(J==="search"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge app-wiki search <query>");let S=await N.searchAppWiki({query:P,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...S,message:`${S.results.length} app wiki result(s)`},g.json);return}if(J==="query"||J==="context"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge app-wiki query <query>");let S=await N.queryAppWiki({query:P,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...S,message:`${S.excerpts.length} app wiki excerpt(s)`},g.json);return}throw Error("Invalid app-wiki action. Use 'init', 'paths', 'note', 'source', 'search', or 'query'.")}if(U==="wiki"){let J=$[1]??"init";if(J==="init"){let P=await N.initWiki();r({ok:!0,...P,message:`Initialized wiki layout in ${N.workspace.home}`},g.json,g);return}if(J==="compile"){let P=$.slice(2),S=P.filter((R)=>/^(open-files|file|s3|https?):\/\//.test(R)),X=P.filter((R)=>!/^(open-files|file|s3|https?):\/\//.test(R)).join(" "),G=await N.compileWiki({title:g.title,query:X||g.search,sourceRefs:S.length>0?S:void 0,limit:g.limit});r({ok:!0,...G,message:`Compiled wiki page ${G.path}`},g.json,g);return}if(J==="file-answer"||J==="answer"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge wiki file-answer <prompt> --content <answer> --approve-write");if(!g.content)throw Error("Missing --content <answer> for wiki file-answer.");let S=await N.fileAnswer({prompt:P,answer:g.content,approveWrite:g.approveWrite,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...S},g.json,g);return}if(J==="lint"){let P=N.lintWiki();r({ok:P.ok,...P,message:P.ok?"Wiki lint passed":`Wiki lint found ${P.issue_count} issue(s)`},g.json,g);return}throw Error("Invalid wiki action. Use 'init', 'compile', 'file-answer', or 'lint'.")}if(U==="safety"){let J=$[1]??"status",P=N.ensureWorkspace(),S=N.safetyPolicy();N.initDb();let X=v(P.knowledgeDbPath);try{if(J==="status"){r({ok:!0,mode:S.mode,workspace:P.home,allow_write_roots:S.allowWriteRoots,read_only_source_access:S.readOnlySourceAccess,network:S.network,redaction:S.redaction,approvals:S.approvals,message:`Safety policy: ${S.mode}`},g.json,g);return}if(J==="check"){let G=$[2]??"generated_write",R=$[3]??null,K;try{if(G==="web_search")P0(S),K={action:G,target_uri:R,approval_required:!1,approved:!0,decision:"allow"};else if(G==="s3_read"){if(!R)throw Error("safety check s3_read requires an s3:// target.");q6(R,S),K={action:G,target_uri:R,approval_required:!1,approved:!0,decision:"allow"}}else K=xS(X,S,G,R);X_(X,{event_type:"safety_check",action:G,target_uri:R,decision:K.decision==="allow"?"allow":"requires_approval",metadata:K}),r({ok:!0,...K,message:`Safety check ${K.decision}`},g.json,g);return}catch(Q){throw X_(X,{event_type:"safety_check",action:G,target_uri:R,decision:"deny",metadata:{error:Q instanceof Error?Q.message:String(Q)}}),Q}}if(J==="approve"){let G=$[2]??"generated_write",R=$[3]??null,K=iU(X,{action:G,target_uri:R,reason:"local-cli approval",metadata:{scope:g.scope??"global"}});X_(X,{event_type:"approval",action:G,target_uri:R,decision:"allow",metadata:{approval_id:K.id}}),r({ok:!0,...K,action:G,target_uri:R,message:`Approved ${G}`},g.json,g);return}if(J==="audit"){let G=X.query("SELECT id, event_type, action, target_uri, decision, metadata_json, created_at FROM audit_events ORDER BY created_at DESC LIMIT 50").all().map((R)=>({id:R.id,event_type:R.event_type,action:R.action,target_uri:R.target_uri,decision:R.decision,metadata:JSON.parse(R.metadata_json),created_at:R.created_at}));r({ok:!0,events:G,message:`${G.length} audit event(s)`},g.json,g);return}if(J==="redact"){let G=$.slice(2).join(" ");if(!G)throw Error("Usage: knowledge safety redact <text>");let R=u_(G,S);if(R.findings.length>0)z0(X,{source_uri:"safety://redact",findings:R.findings,metadata:{command:"safety redact"}});X_(X,{event_type:"redaction",action:"safety_redact",target_uri:"safety://redact",decision:R.findings.length>0?"redacted":"allow",metadata:{findings:R.findings.length}}),r({ok:!0,text:R.text,findings:R.findings,message:`Redacted ${R.findings.length} finding(s)`},g.json,g);return}throw Error("Invalid safety action. Use 'status', 'check', 'approve', 'audit', or 'redact'.")}finally{X.close()}}if(U==="source"){if(($[1]??"")!=="resolve")throw Error("Invalid source action. Use 'resolve'.");let P=$[2];if(!P)throw Error("Usage: knowledge source resolve <source-ref>");let S=await N.resolveSource(P,{purpose:g.purpose,limit:g.limit});r({ok:!0,...S,message:S.resolved?`Resolved ${S.source_ref} (${S.content.chunks_returned}/${S.content.chunks_total} chunks)`:`Source not indexed: ${P}`},g.json,g);return}if(U==="ingest"){let J=$[1]??"";if(J==="rules"||J==="global-rules"||J==="agent-rules"){let P=await N.importRulesProvenance({root:g.workspace??process.cwd(),owner:g.owner,dryRun:g.dryRun===!0,maxItems:g.maxItems,limit:g.limit});r({ok:!0,...P},g.json);return}if(J==="manifest"){let P=$[2];if(!P)throw Error("Usage: knowledge ingest manifest <file|s3://bucket/key>");let S=await N.ingestManifest(P);r({ok:!0,...S,message:`Ingested ${S.items_seen} manifest item(s)`},g.json,g);return}if(J==="source"){let P=$[2];if(!P)throw Error("Usage: knowledge ingest source <source-ref>");let S=await N.ingestSource(P,g.purpose);r({ok:!0,...S,message:`Ingested source ${S.source_ref} (${S.chunks_inserted} chunks)`},g.json,g);return}throw Error("Invalid ingest action. Use 'manifest' or 'source'.")}if(U==="reindex"){let J=$[1]??"status";if(J==="status"){let P=N.reindexHealth({modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...P,message:`${P.missing_embeddings} chunk(s) missing embeddings`},g.json,g);return}if(J==="enqueue"){let P=N.enqueueReindex({modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...P,message:`Queued ${P.enqueued} embedding refresh item(s)`},g.json,g);return}if(J==="embeddings"){let P=await N.refreshEmbeddings({full:g.full,limit:g.limit,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...P,message:`Embedded ${P.indexed.chunks_embedded} chunk(s)`},g.json,g);return}if(J==="outbox"){let P=$[2];if(!P)throw Error("Usage: knowledge reindex outbox <file|s3://bucket/key>");let S=await N.consumeOutbox(P);r({ok:!0,...S,message:`Consumed ${S.events_seen} outbox event(s)`},g.json,g);return}throw Error("Invalid reindex action. Use 'status', 'enqueue', 'embeddings', or 'outbox'.")}if(U==="embeddings"){let J=$[1]??"status";if(J==="status"){let P=N.embeddingStatus();r({ok:!0,...P,message:`${P.total_vector_entries} vector index entries`},g.json,g);return}if(J==="index"){let P=await N.indexEmbeddings({limit:g.limit,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});r({ok:!0,...P,message:`Embedded ${P.chunks_embedded} chunk(s)`},g.json,g);return}if(J==="search"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge embeddings search <query>");let S=await N.semanticSearch({query:P,limit:g.limit,modelRef:g.model,dimensions:g.dimensions,fake:g.fake}),X={ok:!0,...S,message:`${S.results.length} semantic result(s)`};r(g.json||g.verbose?X:Tw(X),g.json,g);return}throw Error("Invalid embeddings action. Use 'status', 'index', or 'search'.")}if(U==="context"){if(($[1]??"pack")!=="pack")throw Error("Invalid context action. Use 'pack'.");let P=g.from??"search";if(!["search","loops","runs"].includes(P))throw Error("Invalid --from value. Use 'search', 'loops', or 'runs'.");let S=$.slice(2).join(" ")||g.topic||"",X=await N.contextPack({source:P,purpose:P==="loops"||P==="runs"?"proposal":"agent_context",query:S,topic:g.topic,since:g.since,dedupe:g.dedupe,maxTokens:g.maxTokens,maxItems:g.maxItems,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,legacyStorePath:A});c8({ok:!0,...X,message:X.message});return}if(U==="proposals"){if(($[1]??"context")!=="context")throw Error("Invalid proposals action. Use 'context'.");let P=g.from??"loops";if(!["loops","runs"].includes(P))throw Error("Invalid --from value for proposals. Use 'loops' or 'runs'.");let S=g.topic??$.slice(2).join(" ");if(!S.trim())throw Error("Usage: knowledge proposals context --from loops --topic <text>");let X=await N.contextPack({source:P,purpose:"proposal",query:S,topic:S,since:g.since,dedupe:g.dedupe??!0,maxTokens:g.maxTokens,maxItems:g.maxItems,limit:g.limit});c8({ok:!0,...X,message:X.message});return}if(U==="search"){let J=$.slice(1).join(" ");if(!J)throw Error("Usage: knowledge search <query>");if(g.context){let X=await N.retrieveContext({query:J,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,legacyStorePath:A}),G={ok:!0,...X,message:`${X.excerpts.length} context excerpt(s)`};r(g.json||g.verbose?G:Qw(G),g.json,g);return}let P=await N.search({query:J,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,legacyStorePath:A}),S={ok:!0,...P,message:`${P.results.length} search result(s)`};r(g.json||g.verbose?S:Yw(S),g.json,g);return}if(U==="web"){if(($[1]??"search")!=="search")throw Error("Invalid web action. Use 'search'.");let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge web search <query>");let S=await N.webSearch({query:P,limit:g.limit,modelRef:g.model,provider:g.provider,domains:g.domain,fake:g.fake,fileResults:g.fileResults}),X={ok:!0,...S,message:`${S.sources.length} web source(s)`};r(g.json||g.verbose?X:qw(X),g.json,g);return}if(U==="ask"||U==="build"){let J=$.slice(D).join(" ");if(!J)throw Error("Usage: knowledge ask <prompt>");let P=await N.runPrompt({prompt:J,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,generate:g.generate,approveWrite:g.approveWrite,legacyStorePath:A}),S={ok:!0,...P,message:P.generated?"Generated answer with citations":"Prepared citation context draft"};r(g.json||g.verbose?S:Hw(S),g.json,g);return}if(U==="providers"){let J=$[1]??"status";if(J==="status"){let P=N.providerStatus(),S=P.providers.filter((X)=>X.configured).length;r({ok:!0,...P,message:`${S}/${P.providers.length} provider credential(s) configured`},g.json,g);return}if(J==="models"){let P=N.modelRegistry();r({ok:!0,models:P,message:`${P.length} model alias(es)`},g.json,g);return}if(J==="check"){let P=$[2]??"default",S=G$(P,N.config()),X=w_(S),G=D4(X.provider,N.config());r({ok:!0,target:P,model_ref:S,provider:X.provider,model:X.model,credential:G,message:`${X.provider} credentials configured`},g.json,g);return}throw Error("Invalid providers action. Use 'status', 'models', or 'check'.")}if(U==="add"){let J=$[1],P=$[2];if(!J||!P)throw Error("Usage: knowledge add <title> <content>");let S=await L.create({title:J,content:P,url:g.url??null,tags:g.tag??[]});$0("info","Item added",{id:S.id,title:S.title,tags:S.tags?.length??0,transport:L.kind}),r({ok:!0,item:S,message:`Added ${S.id}`},g.json,g);return}if(U==="list"){if(g.format!==void 0&&g.format!=="table"&&g.format!=="json")throw Error("Invalid --format value for list. Use 'table' or 'json'.");let J=await L.listAll(),P=Number.isFinite(g.page)&&g.page>0?g.page:1,S=Number.isFinite(g.limit)&&g.limit>0?g.limit:20,X=g.search?String(g.search).toLowerCase():"",G=(g.tagRaw??g.tag??[]).map((a)=>({whole:a.trim().toLowerCase(),parts:a.split(",").map((r_)=>r_.trim().toLowerCase()).filter((r_)=>r_.length>0)})),R=g.tag?.length?g.tag.map((a)=>a.toLowerCase()).join(","):"none",K=g.format==="table"||!g.json&&!g.format&&Sw(g),Q=g.json||g.format==="json",T=J.items;if(g.archived)T=T.filter((a)=>a.archived===!0);else if(!g.includeArchived)T=T.filter((a)=>!a.archived);if(X)T=T.filter((a)=>Kz(a,X));if(G.length>0)T=T.filter((a)=>{let r_=new Set((a.tags??[]).map((K_)=>K_.toLowerCase()));return G.every(({whole:K_,parts:G_})=>K_.length>0&&r_.has(K_)||G_.every((H_)=>r_.has(H_)))});let{sorted:q,sort:V,direction:Z}=Cw(T,g),e=(P-1)*S,D_=q.slice(e,e+S),I_=Math.max(1,Math.ceil(q.length/S)),J_={ok:!0,page:P,limit:S,total:q.length,total_pages:I_,sort:V,direction:Z,items:D_,store_exists:J.exists};if(Q){r(J_,!0);return}if(g.verbose){r(J_,!1,g);return}if(D_.length===0){r(`No items found (search=${X||"none"}, tag=${R})`,!1);return}if(K){let a=(K_)=>K_,r_=`${a("ID")} ${a("TITLE")} ${a("CREATED")} ${a("URL")} ${a("TAGS")}`;console.log(r_);for(let K_ of D_)console.log(`${K_.id} ${a(g_(K_.title,80))} ${K_.created_at} ${K_.url?a(g_(K_.url,90)):""} ${K_.tags?.length?a(g_(`[${K_.tags.join(", ")}]`,80)):""}`);console.log(`Page ${P}/${I_} | showing ${D_.length} of ${q.length} | sort=${V} ${Z} | search=${X||"none"} | tag=${R}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}else{for(let a of D_)console.log(`${a.id} ${g_(a.title,80)} ${a.created_at}${a.url?` ${g_(a.url,90)}`:""}${a.tags?.length?` ${g_(`[${a.tags.join(", ")}]`,80)}`:""}`);console.log(`Page ${P}/${I_} | showing ${D_.length} of ${q.length} | sort=${V} ${Z} | search=${X||"none"} | tag=${R}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}return}if(U==="get"){_0(g);let J=await L.get(g.id);if(!J)throw Error(`Item not found: ${g.id}`);r({ok:!0,item:J,store_exists:L.exists,message:`${J.id}: ${J.title}`},g.json,g);return}if(U==="versions"){_0(g);let J=Number.isFinite(g.page)&&g.page>0?g.page:1,P=Number.isFinite(g.limit)&&g.limit>0?g.limit:void 0,S=await L.listVersions(g.id,{limit:P,offset:(J-1)*(P??50)});if(!S)throw Error(`Item not found: ${g.id}`);let X={ok:!0,id:S.item_id,current_version:S.current_version,total:S.total,page:J,store:L.location,versions:S.items,message:S.total===0?`${S.item_id} is at version ${S.current_version} with no retained prior versions`:`${S.item_id} is at version ${S.current_version}; ${S.total} prior version(s) retained`};if(g.json||g.verbose){r(X,g.json,g);return}console.log(X.message);for(let G of S.items){let R=G.actor?` by ${G.actor}`:"",K=G.reason?` (${G.reason})`:"";console.log(`v${G.version} ${G.valid_to}${R}${K} ${G.content_bytes} bytes ${G.content_hash.slice(0,12)}`)}if(S.items.length>0)console.log("Hint: `knowledge diff --id <id> --rev <n>` shows what changed.");return}if(U==="diff"){_0(g);let J=await L.get(g.id);if(!J)throw Error(`Item not found: ${g.id}`);if(g.rev!==void 0&&(g.from!==void 0||g.to!==void 0))throw Error("Use either --rev <n> or --from <a> --to <b>, not both.");let P=()=>({title:J.title,content:J.content,url:J.url,tags:J.tags??[],metadata:J.metadata??{},archived:J.archived??!1}),S=`v${J.version??"?"} (current)`,X=async(q)=>{if(q==="current")return{label:S,snapshot:P()};let V=Number(q);if(!Number.isInteger(V)||V<1)throw Error(`Not a version number: ${q}`);if(J.version!==void 0&&V===J.version)return{label:S,snapshot:P()};let Z=await L.getVersion(J.id,V);if(!Z)throw Error(`No version ${V} retained for ${J.id} (it is at version ${J.version??"?"}). Run \`knowledge versions --id <id>\` to see what is retained.`);return{label:`v${Z.version}`,snapshot:{title:Z.title,content:Z.content,url:Z.url,tags:Z.tags,metadata:Z.metadata,archived:Z.archived}}},G,R;if(g.rev!==void 0){if(!Number.isInteger(g.rev)||g.rev<1)throw Error("--rev must be a positive version number.");if(g.rev===1)throw Error("Version 1 has no predecessor to diff against.");G=String(g.rev-1),R=String(g.rev)}else if(g.from!==void 0||g.to!==void 0){if(g.from===void 0||g.to===void 0)throw Error("--from and --to must be given together.");G=g.from,R=g.to}else{let q=await L.listVersions(J.id,{limit:1});if(!q)throw Error(`Item not found: ${g.id}`);if(q.items.length===0)throw Error(`${J.id} is at version ${q.current_version} with no retained prior versions to diff against.`);G=String(q.items[0].version),R="current"}let K=await X(G),Q=await X(R),T=AS(K.snapshot,Q.snapshot);if(g.json||g.verbose){r({ok:!0,id:J.id,from:K.label,to:Q.label,...T},g.json,g);return}console.log(LS(T,`${J.id} ${K.label}`,`${J.id} ${Q.label}`));return}if(U==="update"){_0(g);let J=await L.get(g.id);if(!J)throw Error(`Item not found: ${g.id}`);if(g.ifVersion!==void 0&&(!Number.isInteger(g.ifVersion)||g.ifVersion<1))throw Error(`Invalid --if-version ${JSON.stringify(String(g.ifVersion))}: must be a positive integer version number, e.g. the "version" field from a prior 'knowledge get'.`);let P={};if(g.title!==void 0)P.title=g.title;if(g.content!==void 0)P.content=g.content;if(g.url!==void 0)P.url=g.url;let S;if(g.tag!==void 0){if(S=h8(J.tags,g.tag),S.length>0)P.tags=[...J.tags??[],...S]}let X=g.ifVersion!==void 0?g.ifVersion:J.version,G=await L.update(J.id,P,{expectedVersion:X});r(Az({ok:!0,item:G},`Updated ${G?.id??J.id}`,S),g.json,g);return}if(U==="archive"||U==="restore"){_0(g);let J=await L.get(g.id);if(!J)throw Error(`Item not found: ${g.id}`);let P=await L.update(J.id,{archived:U==="archive"},{expectedVersion:J.version});r({ok:!0,item:P,message:`${U==="archive"?"Archived":"Restored"} ${P?.id??J.id}`},g.json,g);return}if(U==="untag"){if(_0(g),!g.tag?.length)throw Error("Missing required --tag. Example: knowledge untag --id <id> -t <tag>");let J=await L.get(g.id);if(!J)throw Error(`Item not found: ${g.id}`);let P=J.tags??[],S=new Set(P.map((V)=>V.toLowerCase())),X=new Set;for(let V of g.tagRaw??g.tag){let Z=V.trim().toLowerCase();if(Z.length>0&&S.has(Z)){X.add(Z);continue}for(let e of V.split(",").map((D_)=>D_.trim().toLowerCase()).filter((D_)=>D_.length>0))X.add(e)}let G=P.filter((V)=>!X.has(V.toLowerCase())),R=P.length-G.length,K=[...X].filter((V)=>!S.has(V));if(R===0)throw Error(`No matching tag on ${J.id}: ${K.map((V)=>JSON.stringify(V)).join(", ")} not in [${P.map((V)=>JSON.stringify(V)).join(", ")}]`);let Q=await L.update(J.id,{tags:G},{expectedVersion:J.version}),T=K.length>0?` (not found: ${K.map((V)=>JSON.stringify(V)).join(", ")})`:"",q={ok:!0,item:Q,removed:R,message:`Removed ${R} tag${R===1?"":"s"} from ${Q?.id??J.id}${T}`};if(K.length>0)q.not_found=K;r(q,g.json,g);return}if(U==="upsert"){let J=g.title??$[1],P=g.content??$[2],S=g.id?await L.get(g.id):null;if(!S){if(!J||!P)throw Error("New item requires title and content. Example: knowledge upsert <title> <content> [--id <id>]");let K=await L.create({id:g.id,title:J,content:P,url:g.url??null,tags:g.tag??[]});r(Az({ok:!0,created:!0,item:K},`Upserted ${K.id}`,g.tag),g.json,g);return}let X={};if(J!==void 0)X.title=J;if(P!==void 0)X.content=P;if(g.url!==void 0)X.url=g.url;let G;if(g.tag!==void 0){if(G=h8(S.tags,g.tag),G.length>0)X.tags=[...S.tags??[],...G]}let R=await L.update(S.id,X,{expectedVersion:S.version});r(Az({ok:!0,created:!1,item:R},`Upserted ${R?.id??S.id}`,G),g.json,g);return}if(U==="delete"){if(_0(g),!g.yes)throw Error("Refusing delete without --yes. Re-run with: knowledge delete --id <id> --yes");if(!await L.delete(g.id))throw Error(`Item not found: ${g.id}`);$0("info","Item deleted",{id:g.id,transport:L.kind}),r({ok:!0,deleted_id:g.id,message:`Deleted ${g.id}`},g.json,g);return}if(U==="export"){let J=g.format??"json";if(J!=="json"&&J!=="jsonl")throw Error("Invalid --format. Use 'json' or 'jsonl'.");let P=await L.listAll();if(J==="jsonl")for(let S of P.items)console.log(JSON.stringify(S));else if(g.json||g.format==="json"||g.verbose)r({ok:!0,items:P.items,store_exists:P.exists},g.json||g.format==="json",g);else r(kw(P.items,J),!1);return}if(U==="prune"){if(!g.yes)throw Error("Refusing prune without --yes. Re-run with: knowledge prune --yes [--older-than <days>] [--empty]");let{items:J}=await L.listAll(),P=g.olderThan!==void 0?new Date(Date.now()-g.olderThan*86400000):null,S=J.filter((R)=>P!==null&&new Date(R.created_at)<P||g.empty&&R.content.trim().length===0),X=await L.deleteMany(S.map((R)=>R.id)),G=J.length-X;$0("info","Prune completed",{pruned:X,remaining:G,transport:L.kind}),r({ok:!0,pruned:X,remaining:G,message:`Pruned ${X} item(s)`},g.json,g);return}if(U==="dedupe"){if(!g.yes)throw Error("Refusing dedupe without --yes. Re-run with: knowledge dedupe --yes [--json]");let{items:J}=await L.listAll(),P=new Set,S=[];for(let R of J){let K=`${R.title}\x00${R.content}`;if(P.has(K))S.push(R);else P.add(K)}let X=await L.deleteMany(S.map((R)=>R.id)),G=J.length-X;$0("info","Dedupe completed",{removed:X,remaining:G,transport:L.kind}),r({ok:!0,removed:X,remaining:G,message:`Dedupe removed ${X} duplicate(s)`},g.json,g);return}if(U==="stats"){let J=await L.listAll(),P=J.items.filter((V)=>!V.archived),S=P.length,X=J.items.length-S,G=P.filter((V)=>V.url).length,R=P.filter((V)=>V.tags&&V.tags.length>0).length,K=S>0?P.map((V)=>V.created_at).sort()[0]:null,Q=S>0?P.map((V)=>V.created_at).sort()[S-1]:null,T={};for(let V of P)for(let Z of V.tags||[])T[Z]=(T[Z]||0)+1;let q=Object.entries(T).sort((V,Z)=>Z[1]-V[1]).slice(0,5).map(([V,Z])=>({tag:V,count:Z}));r({ok:!0,total:S,archived:X,with_url:G,with_tags:R,oldest:K,newest:Q,top_tags:q,store_exists:J.exists,message:`${S} items | ${G} with URL | ${R} with tags`},g.json,g);return}let z=Aw($[0]),W=z?` Did you mean '${z}'?`:"";throw $0("warn","Unknown command",{input:$[0],suggestion:z}),Error(`Unknown command: ${$[0]}.${W} Run 'knowledge --help' for available commands.`)}function vw(_,$){let g=_ instanceof Error?_.message:String(_);$0("debug","CLI error",{message:g,stack:_ instanceof Error?_.stack:void 0}),console.error(`Error: ${g}`);let U=_ instanceof L0?_:null;if($.includes("--json"))r({ok:!1,error:g,message:g,...U?{code:"version_conflict",expected:U.expected,current:U.current}:{}},!0);process.exitCode=U?2:1}if(import.meta.main){let _=process.argv.slice(2);rw(_).catch(($)=>vw($,_))}export{Aw as suggestCommand,Cw as sortItems,rw as run,Nw as parseArgs,vw as emitCliError}; +Remote machine sync resolves peer paths through @hasna/machines when --peer-workspace is omitted.`);return}if(_==="db"){console.log("Usage: knowledge db init|stats|storage status [--scope local|global|project] [--json]");return}if(_==="wiki"){console.log("Usage: knowledge wiki init|compile|file-answer|lint [query|prompt] [--title <title>] [--content <answer>] [--approve-write] [--limit <n>] [--scope local|global|project] [--json]");return}if(_==="app-wiki"){console.log("Usage: knowledge app-wiki init | note add|get|list | source add <source-ref> | search <query> | query <query> [--title <title>] [--content <text>] [--tag <tag>] [--source-ref <uri>] [--scope project|local|global] [--allow-global] [--json]");return}if(_==="source"){console.log("Usage: knowledge source resolve <source-ref> [--purpose knowledge_answer|knowledge_index] [--limit <n>] [--scope local|global|project] [--json]");return}if(_==="ingest"){console.log("Usage: knowledge ingest manifest <file|s3://bucket/key> | source <source-ref> | rules [--workspace <path>] [--owner <name>] [--dry-run] [--max-items <n>] [--limit <n>] [--purpose knowledge_index] [--scope local|global|project] [--json]");return}if(_==="reindex"){console.log("Usage: knowledge reindex status|enqueue|embeddings|outbox [file|s3://bucket/key] [--full] [--fake] [--scope local|global|project] [--json]");return}if(_==="search"){console.log("Usage: knowledge search <query> [--context] [--semantic] [--model openai:text-embedding-3-small] [--limit <n>] [--dimensions <n>] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="context"){console.log("Usage: knowledge context pack <query> [--from search|runs|loops] [--max-tokens <n>] [--max-items <n>] [--limit <n>] [--semantic] [--model openai:text-embedding-3-small] [--dimensions <n>] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="proposals"){console.log("Usage: knowledge proposals context --from loops --topic <text> [--since <duration|ISO>] [--dedupe] [--max-tokens <n>] [--max-items <n>] [--scope local|global|project] [--json]");return}if(_==="web"){console.log("Usage: knowledge web search <query> [--provider openai|anthropic] [--model provider:model] [--domain <domain>] [--file-results] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="ask"||_==="build"){console.log("Usage: knowledge ask|build <prompt> [--generate] [--semantic] [--model default|provider:model] [--approve-write] [--scope local|global|project] [--verbose] [--json]");return}if(_==="embeddings"){console.log("Usage: knowledge embeddings status|index|search [query] [--model openai:text-embedding-3-small] [--limit <n>] [--dimensions <n>] [--fake] [--scope local|global|project] [--verbose] [--json]");return}if(_==="providers"){console.log("Usage: knowledge providers status|models|check [provider|model-alias] [--scope local|global|project] [--json]");return}if(_==="safety"){console.log("Usage: knowledge safety status|check|approve|audit|redact [args] [--scope local|global|project] [--json]");return}if(_==="events"){console.log("Usage: knowledge events emit|list|replay [args] [--json]");return}if(_==="webhooks"){console.log("Usage: knowledge webhooks add|list|remove|test [args] [--json]");return}bw()}function kw(_){if(_.noColor||process.env.NO_COLOR)return!1;if(process.env.FORCE_COLOR)return!0;return process.stdout.isTTY===!0}function v(_,$,D){if($){console.log(JSON.stringify(_,null,2));return}if(typeof _==="string"){console.log(_);return}if(D?.verbose){console.log(JSON.stringify(_,null,2));return}let g=_.message;console.log(g?`${g} +${i_()}`:Cw(_))}function i_(_="full details"){return`Hint: use --verbose for ${_}, or --json for machine-readable output.`}function D_(_,$=120){let D=_===null||_===void 0?"":String(_).replace(/\s+/g," ").trim();if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-3))}...`}function Cw(_){if(!_||typeof _!=="object")return String(_);let $=_,D=[$.ok===!1?"Result: not ok":"Result: ok"];for(let[g,U]of Object.entries($).slice(0,8)){if(g==="ok"||g==="message")continue;if(Array.isArray(U))D.push(`${g}: ${U.length} item(s)`);else if(U&&typeof U==="object")D.push(`${g}: ${Object.keys(U).length} field(s)`);else D.push(`${g}: ${D_(U,100)}`)}return D.push(i_()),D.join(` +`)}function vw(_){let $=_.mode==="postgres"?"postgres (HTTP /v1 API)":"sqlite (on-box store)",D=_.source.kind==="env"?`selected by ${_.source.name}=${_.source.value}`:`default (no mode var set; set ${o$[0]}=postgres to use the API)`,g=[`Knowledge mode: ${$}`,` ${D}`];if(_.pointer_env_present.length>0){let U=_.pointer_ignored?"present but IGNORED for mode selection":"present";g.push(` Pointer env ${U}: ${_.pointer_env_present.join(", ")}`)}if(_.network_guard_active)g.push(" Outbound guard: ACTIVE (NODE_ENV=test) \u2014 non-loopback requests are refused.");if(_.warning)g.push(` Note: ${_.warning}`);return g.join(` +`)}function fw(_){return[`Knowledge paths (${_.scope})`,`Home: ${_.home}`,`SQLite: ${_.knowledge_db_path}`,`JSON store: ${_.json_store_path}`,`Wiki: ${_.wiki_dir}`,i_("config and all paths")].join(` +`)}function $Y(_){console.log(JSON.stringify(_))}function ww(_){let $=_.summary,D=[`Knowledge inventory (${_.scope})`,`Home: ${_.home}`,`JSON store: ${_.paths.json_store_path}${_.paths.json_store_exists?"":" (missing)"}`,`SQLite catalog: ${_.paths.knowledge_db_path}`,`Summary: ${$.legacy_items} item(s), ${$.sources} source(s), ${$.chunks} chunk(s), ${$.wiki_pages} wiki page(s), ${$.indexes} index(es), ${$.storage_objects} artifact(s), ${$.runs} run(s)`],g=(U,I,j)=>{if(I.length===0)return;D.push("",`${U}:`);for(let N of I.slice(0,_.limit))D.push(`- ${j(N)}`)};return g("Items",_.items,(U)=>`${U.id}: ${U.title}`),g("Sources",_.sources,(U)=>`${U.kind??"source"} ${U.uri} (${U.chunks??0} chunk(s))`),g("Chunks",_.chunks,(U)=>`${U.kind??"chunk"} ${U.id}: ${U.text_preview??""}`),g("Wiki pages",_.wiki_pages,(U)=>`${U.path}: ${U.title}`),g("Indexes",_.indexes,(U)=>`${U.kind??"index"} ${U.name}${U.shard_key?` (${U.shard_key})`:""}`),g("Artifacts",_.storage_objects,(U)=>`${U.kind??"artifact"} ${U.artifact_uri}`),g("Runs",_.runs,(U)=>`${U.type??"run"} ${U.id}: ${U.status??"unknown"}`),g("Machines",_.machines,(U)=>`${U.machine_id}${U.workspace_home?` ${U.workspace_home}`:""}`),g("Sync conflicts",_.sync_conflicts,(U)=>`${U.id}: ${U.entity_kind}/${U.entity_id} ${U.status}`),D.join(` +`)}function rw(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} search result(s) for "${D_(_.query,80)}"${_.mode?.semantic?" (semantic enabled)":""}`];for(let g of $.slice(0,_.limit??10)){let U=g.source?.uri??g.provenance?.source_uri??g.artifact?.path??g.artifact?.uri??g.id,I=typeof g.score==="number"?` score=${g.score.toFixed(3)}`:"";if(D.push(`- ${g.kind??"result"} ${D_(g.title??g.id,80)}${I}`),U)D.push(` source: ${D_(U,120)}`);if(g.text)D.push(` text: ${D_(g.text,180)}`)}if($.length===0)D.push("- No matches. Try a broader query or run `knowledge inventory --scope project`.");if(D.push(i_("scores, provenance, and full result objects")),!_.context)D.push("Next: use --context for an agent-ready citation pack, or --limit <n> to change the result count.");return D.join(` +`)}function uw(_){let $=Array.isArray(_.excerpts)?_.excerpts:[],D=Array.isArray(_.citations)?_.citations:[],g=[`${$.length} context excerpt(s) for "${D_(_.query??_.normalized_query,80)}"`];for(let U of $.slice(0,10)){let I=D.find((O)=>O.id===U.citation_id||O.result_id===U.result_id),j=I?.source_uri??I?.artifact_path??U.result_id,N=typeof U.score==="number"?` score=${U.score.toFixed(3)}`:"";if(g.push(`- ${U.kind??"excerpt"} ${D_(U.id,44)}${N}`),j)g.push(` source: ${D_(j,120)}`);g.push(` text: ${D_(U.text,220)}`)}return g.push(`Citations: ${D.length}`),g.push(i_("citations, graph, notes, and full excerpts")),g.join(` +`)}function xw(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} semantic result(s) for "${D_(_.query,80)}"`,`Index: ${_.provider??"unknown"}:${_.model??"unknown"} (${_.dimensions??"?"} dimensions)`];for(let g of $.slice(0,_.limit??10)){let U=typeof g.score==="number"?` score=${g.score.toFixed(3)}`:"";if(D.push(`- ${D_(g.chunk_id,44)}${U}`),g.source_uri)D.push(` source: ${D_(g.source_uri,120)}`);if(g.text)D.push(` text: ${D_(g.text,180)}`)}return D.push(i_("provenance and full vector result objects")),D.join(` +`)}function yw(_){let $=Array.isArray(_.sources)?_.sources:[],D=[`${$.length} web source(s) for "${D_(_.query,80)}"`,`Provider: ${_.provider??"unknown"}${_.model?` (${_.model})`:""}`];for(let g of $.slice(0,_.limit??10)){D.push(`- ${D_(g.title??g.url??g.uri??"source",100)}`);let U=g.url??g.uri??g.source_ref;if(U)D.push(` url: ${D_(U,140)}`);if(g.snippet)D.push(` snippet: ${D_(g.snippet,180)}`)}return D.push(i_("provider payloads and filed source refs")),D.join(` +`)}function hw(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} machine(s) discovered via ${_.source??"unknown"}`,`Adapter: ${_.adapter?.package??"@hasna/machines"} ${_.adapter?.available?"available":"unavailable"}`];for(let g of $.slice(0,10)){let U=g.local?" local":"",I=g.tailscale_dns??g.ssh_target??g.hostname??"";D.push(`- ${D_(g.machine_id??g.id??"unknown",48)}${U}${I?` -> ${D_(I,80)}`:""}`)}if($.length>10)D.push(`... ${$.length-10} more machine(s).`);if(Array.isArray(_.warnings)&&_.warnings.length>0)D.push(`Warnings: ${_.warnings.slice(0,3).join("; ")}`);return D.push(i_("full topology, route hints, and adapter evidence")),D.join(` +`)}function cw(_){let $=Array.isArray(_.checks)?_.checks:[],D=$.filter((I)=>I.status==="fail"||I.severity==="fail"),g=$.filter((I)=>I.status==="warn"||I.severity==="warn"),U=[`Machine preflight ${_.ok?"passed":"needs attention"} for ${_.machine_id??_.requested_machine_id??"local"}`,`Checks: ${$.length} total, ${D.length} failed, ${g.length} warning(s)`];for(let I of[...D,...g].slice(0,8))U.push(`- ${I.status??I.severity??"check"} ${D_(I.id??I.kind??"check",72)}: ${D_(I.message??I.detail??"",140)}`);return U.push(i_("all checks and repair hints")),U.join(` +`)}function nw(_){return[`Sync status (${_.scope??"scope"})`,`Schema: v${_.sqlite_schema_version??"unknown"}`,`Machines: ${_.machines?.total??0}; snapshots: ${_.snapshots?.total??0}; open conflicts: ${_.conflicts?.open??0}`,`Tables: ${Object.entries(_.table_counts??{}).slice(0,8).map(([D,g])=>`${D}=${g}`).join(", ")||"none"}`,i_("registry rows, clocks, snapshots, imports, and conflicts")].join(` +`)}function dw(_){let $=Array.isArray(_.warnings)?_.warnings:[],D=Array.isArray(_.recommended_commands)?_.recommended_commands:[],g=[_.message??`Sync readiness ${_.ok?"ok":"needs attention"}`,`Storage: ${_.storage?.validation?.ok?"ok":"needs attention"}; open-files: ${_.open_files?.ok?"ok":"needs attention"}; open conflicts: ${_.sync?.open_conflicts??0}`];if($.length>0)g.push(`Warnings: ${$.slice(0,5).join("; ")}`);for(let U of D.slice(0,5))g.push(`- next: ${D_(U.shell_command??U.command?.join(" ")??U.id,160)}`);return g.push(i_("diagnostics, route evidence, and all recommended commands")),g.join(` +`)}function mw(_){let $=_.snapshot??{};return[`Sync snapshot ${_.ok?"recorded":"failed"}`,`Snapshot: ${D_($.id??$.snapshot_id??"unknown",80)} ${$.content_hash?`(${D_($.content_hash,80)})`:""}`,`Machines upserted: ${_.machines_upserted??0}; machine: ${_.machine_id??$.machine_id??"unknown"}`,i_("snapshot payload and topology evidence")].join(` +`)}function iw(_){let $=Array.isArray(_.conflicts)?_.conflicts:[],D=[`${$.length} sync conflict(s)`];for(let g of $.slice(0,10))D.push(`- ${D_(g.id,48)} ${g.status??"unknown"} ${g.entity_kind??""}/${D_(g.entity_id,80)}`);return D.push("Next: use `knowledge sync conflicts show <id> --json` for one conflict."),D.push(i_("full conflict objects")),D.join(` +`)}function lw(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} registered sync machine(s)`];for(let g of $.slice(0,10))D.push(`- ${D_(g.machine_id,48)} ${D_(g.hostname??g.workspace_home??"",100)}`);return D.push(i_("machine registry rows")),D.join(` +`)}function DY(_,$){let D=[`Sync ${$} ${_.ok===!1?"needs attention":"completed"}${_.dry_run?" (dry run)":""}`],g=(U,I)=>{if(!I)return;let N=(Array.isArray(I.tables)?I.tables:[]).reduce((L,z)=>L+(z.inserted??0)+(z.updated??0)+(z.deleted??0),0),O=I.artifacts?.copied??0,A=Array.isArray(I.errors)?I.errors.length:0;D.push(`${U}: ${N} table row change(s), ${O} artifact(s), ${A} error(s)`)};if(g("pull",_.pull),g("push",_.push),Array.isArray(_.errors)&&_.errors.length>0)D.push(`Errors: ${_.errors.slice(0,3).map((U)=>D_(U,120)).join("; ")}`);return D.push(i_("per-table rows, artifacts, clocks, and errors")),D.join(` +`)}function tw(_){let $=Array.isArray(_.citations)?_.citations:[],D=Array.isArray(_.context?.excerpts)?_.context.excerpts:Array.isArray(_.excerpts)?_.excerpts:[],g=[_.generated?"Generated answer with citations":"Prepared citation context draft",`Citations: ${$.length}; excerpts: ${D.length}`];if(_.answer)g.push(`Answer: ${D_(_.answer,500)}`);for(let U of $.slice(0,5))g.push(`- ${D_(U.source_uri??U.ref??U.id,120)}`);return g.push(i_("full answer payload, context, citations, and run ledger")),g.join(` +`)}function ow(_,$){return[`Export preview: ${_.length} item(s) available`,"Default output is compact to avoid terminal/context bloat.","Use --verbose or --json for a JSON object, or --format jsonl for newline-delimited records.",$!=="json"?`Requested format: ${$}`:""].filter(Boolean).join(` +`)}function UY(_){return!_||_==="local"||_==="localhost"}function _0(_){if(!_.id)throw Error("Missing required --id. Example: knowledge get --id <id>")}var gY=["created","title","updated"];function pw(_,$){let D=$.sort??"created";if(!gY.includes(D))throw Error(`Invalid --sort value. Use ${gY.map((U)=>`'${U}'`).join(", ")}.`);let g=[..._].sort((U,I)=>{if(D==="title")return U.title.localeCompare(I.title);if(D==="updated")return(U.updated_at??U.created_at).localeCompare(I.updated_at??I.created_at);return U.created_at.localeCompare(I.created_at)});if($.desc)g.reverse();return{sorted:g,sort:D,direction:$.desc?"desc":"asc"}}async function ew(_){if(await Zw(_))return;let{positional:$,flags:D}=qw(_);if($0("debug","CLI invoked",{command:$[0],flags:{json:D.json,store:D.store}}),D.version){console.log(D.json?JSON.stringify({name:C$.name,version:C$.version},null,2):`${C$.name} ${C$.version}`);return}if(D.completions){let J=D.completions;if(J==="bash")console.log('_knowledge() { local cur; cur="${COMP_WORDS[COMP_CWORD]}"; COMPREPLY=($(compgen -W "add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode setup auth storage machines sync db wiki app-wiki source ingest reindex search context proposals web ask build embeddings providers safety events webhooks help ls rm edit unarchive --json --verbose --yes --help --version --desc --page --limit --search --sort --id --store --title --content --url --tag --rev --to --format --completions --purpose --model --dimensions --semantic --context --max-tokens --max-items --from --since --topic --dedupe --generate --approve-write --provider --mode --machine --workspace --peer-workspace --api-url --canonical-example --api-key --email --org --org-id --user-id --owner --domain --file-results --full --dry-run --fake --no-tailscale --no-artifact-content --no-color --scope --tables --archived --include-archived --project --contract --source-ref --allow-global" -- "$cur")); }; complete -F _knowledge knowledge');else if(J==="zsh")console.log(`#compdef knowledge +_knowledge() { _arguments -C "1: :(add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode setup auth storage machines sync db wiki app-wiki source ingest reindex search context proposals web ask build embeddings providers safety events webhooks help ls rm edit unarchive)" "(--json)--json" "(--verbose)--verbose" "(--yes)-y" "(--help)--help" "(--version)--version" "(--desc)--desc" "(--archived)--archived" "(--include-archived)--include-archived" "(--semantic)--semantic" "(--context)--context" "(--dedupe)--dedupe" "(--generate)--generate" "(--approve-write)--approve-write" "(--canonical-example)--canonical-example" "(--file-results)--file-results" "(--full)--full" "(--dry-run)--dry-run" "(--fake)--fake" "(--no-tailscale)--no-tailscale" "(--no-artifact-content)--no-artifact-content" "(--contract)--contract" "(--allow-global)--allow-global" "(-p --page)"{-p,--page}"[page number]:number:" "(-l --limit)"{-l,--limit}"[items per page]:number:" "(-s --search)"{-s,--search}"[search text]:text:" "(--sort)--sort"{created,title}:" "(--id)--id[item id]:id:" "(--store)--store[store path]:path:" "(--title)--title[new title]:" "(--content)--content[new content]:" "(--url)--url[source url]:" "(-t --tag)"{-t,--tag}"[tag]:tag:" "(--format)--format[json|jsonl]:" "(--completions)--completions[output completions]:shell:(bash zsh fish):" "(--purpose)--purpose[purpose]:" "(--model)--model[model ref]:" "(--dimensions)--dimensions[embedding dimensions]:number:" "(--max-tokens)--max-tokens[token budget]:number:" "(--max-items)--max-items[item budget]:number:" "(--from)--from"{search,loops,runs}:" "(--to)--to[diff target: version number or current]:" "(--rev)--rev[entry version for diff]:number:" "(--since)--since[duration or ISO time]:" "(--topic)--topic[topic text]:" "(--provider)--provider[provider]:" "(--mode)--mode"{local,hosted}:" "(--machine)--machine[machine id or SSH alias]:" "(--workspace)--workspace[repo workspace path]:path:" "(--peer-workspace)--peer-workspace[peer repo or knowledge home path]:path:" "(--api-url)--api-url[hosted API URL]:" "(--api-key)--api-key[hosted API key]:" "(--email)--email[email]:" "(--org)--org[org slug]:" "(--org-id)--org-id[org id]:" "(--user-id)--user-id[user id]:" "(--owner)--owner[provenance owner]:" "(--domain)--domain[domain]:" "(--project)--project[project id/name/slug]:" "(--source-ref)--source-ref[source ref]:" "(--no-color)--no-color[disable color]" "(--scope)--scope"{local,global,project}:" "(--tables)--tables[comma-separated DB sync tables]:" }; _knowledge`);else if(J==="fish")console.log('complete -c knowledge -f; complete -c knowledge -a "add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode setup auth storage machines sync db wiki app-wiki source ingest reindex search context proposals web ask build embeddings providers safety events webhooks help ls rm edit unarchive"; complete -c knowledge -l json; complete -c knowledge -l verbose; complete -c knowledge -l yes -s y; complete -c knowledge -l help -s h; complete -c knowledge -l version -s v; complete -c knowledge -l desc; complete -c knowledge -l archived; complete -c knowledge -l include-archived; complete -c knowledge -l semantic; complete -c knowledge -l context; complete -c knowledge -l max-tokens; complete -c knowledge -l max-items; complete -c knowledge -l from -a "search loops runs"; complete -c knowledge -l to; complete -c knowledge -l rev; complete -c knowledge -l since; complete -c knowledge -l topic; complete -c knowledge -l dedupe; complete -c knowledge -l generate; complete -c knowledge -l approve-write; complete -c knowledge -l allow-global; complete -c knowledge -l canonical-example; complete -c knowledge -l provider; complete -c knowledge -l mode; complete -c knowledge -l machine; complete -c knowledge -l workspace; complete -c knowledge -l peer-workspace; complete -c knowledge -l api-url; complete -c knowledge -l api-key; complete -c knowledge -l email; complete -c knowledge -l org; complete -c knowledge -l org-id; complete -c knowledge -l user-id; complete -c knowledge -l owner; complete -c knowledge -l domain; complete -c knowledge -l project; complete -c knowledge -l contract; complete -c knowledge -l source-ref; complete -c knowledge -l file-results; complete -c knowledge -l full; complete -c knowledge -l dry-run; complete -c knowledge -l fake; complete -c knowledge -l no-tailscale; complete -c knowledge -l no-artifact-content; complete -c knowledge -s p -l page; complete -c knowledge -s l -l limit; complete -c knowledge -s s -l search; complete -c knowledge -l sort; complete -c knowledge -l id; complete -c knowledge -l store; complete -c knowledge -l title; complete -c knowledge -l content; complete -c knowledge -l url; complete -c knowledge -s t -l tag; complete -c knowledge -l format; complete -c knowledge -l completions; complete -c knowledge -l purpose; complete -c knowledge -l model; complete -c knowledge -l dimensions; complete -c knowledge -l no-color; complete -c knowledge -l scope -a "local global project"; complete -c knowledge -l tables');else throw Error("Invalid --completions value. Use 'bash', 'zsh', or 'fish'.");return}let g=Vw($[0]),U=1,I=$.length>1||/\s/.test(g);if(Mw()&&g&&!jY.includes(g)&&I)g="ask",U=0;if(!g||D.help||g==="help"){let J=g==="help"?$[1]:g||$[1];Hw(J);return}if(g==="mode"){let J=PS(process.env);v(D.json||D.verbose?{ok:!0,...J}:vw(J),D.json,D);return}JS(process.env,{storePathOverridden:Boolean(D.store)});let j=g==="project-panel"||g==="app-wiki"?D.scope??"project":D.scope,N=jN({scope:j});if(g==="storage"){let J=$[1]??"status";if(J==="import-legacy"){if(D.scope&&D.scope!=="global")throw Error("knowledge storage import-legacy only supports --scope global because ~/.open-knowledge is a global legacy store.");let P=xN({dryRun:D.dryRun});if(v(P,D.json),!P.ok)process.exitCode=1;return}if(J==="migrate-legacy-path"||J==="migrate-legacy"||J==="migrate-path"){let P=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(v(P,D.json),!P.ok&&!D.json)process.exitCode=1;return}if(J==="merge-legacy-path"||J==="merge-legacy"||J==="merge-path"){let P=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(v(P,D.json),!P.ok&&!D.json)process.exitCode=1;return}}let O=Boolean(D.store),A=D.store;if(!A)if(j==="project"||j==="local")A=N.workspace.jsonStorePath;else A=Cg();if(!O&&(g==="ask"||g==="build")&&!Y6())CD(A);let L=ng({storePath:A,storePathOverridden:O});if(g==="inventory"){let J=await N.resolveInventory({limit:D.limit,includeArchived:D.includeArchived||D.archived,storePath:Y6()?void 0:A});v(D.json||D.verbose?J:ww(J),D.json,D);return}if(g==="project-panel"){let J=D.project??$[1];if(!J)throw Error("Usage: knowledge project-panel --project <id|name|slug> [--json|--contract]");let P=await jR(J,{service:N,limit:D.limit,storePath:Y6()?void 0:A,includeArchived:D.includeArchived||D.archived});v(D.json||D.contract?P:NR(P),D.json||D.contract);return}if(g==="paths"){let J=N.paths();v(D.json||D.verbose?J:fw(J),D.json,D);return}if(g==="setup"){let J=N.setup({mode:D.mode,apiUrl:D.apiUrl,canonicalExample:D.canonicalExample});v(J,D.json,D);return}if(g==="auth"){let J=$[1]??"whoami";if(J==="whoami"||J==="status"){let P=N.authStatus(process.env);v({ok:!0,...P,message:P.authenticated?`Authenticated via ${P.source}`:"Not authenticated"},D.json,D);return}if(J==="login"){let P=D.apiKey??process.env.KNOWLEDGE_API_KEY??process.env.HASNA_KNOWLEDGE_API_KEY;if(!P)throw Error("Usage: knowledge auth login --api-key <key> [--email <email>]");let S=N.saveAuth({apiKey:P,email:D.email,orgSlug:D.org,orgId:D.orgId,userId:D.userId,apiUrl:D.apiUrl},process.env);v({ok:!0,authenticated:!0,email:S.email??null,org_slug:S.org_slug??null,api_url:S.api_url??N.authStatus(process.env).api_url,auth_path:N.authStatus(process.env).auth_path,message:`Saved hosted credentials for ${S.email??"API key"}`},D.json,D);return}if(J==="logout"){let P=N.clearAuth(process.env);v({ok:!0,removed:P,message:P?"Removed hosted credentials":"No hosted credentials found"},D.json,D);return}throw Error("Invalid auth action. Use 'login', 'whoami', or 'logout'.")}if(g==="storage"){let J=$[1]??"status";if(J==="status"){let P=N.storageContract(),S=N.validateStorage();v({ok:S.ok,...P,validation:S,message:`${P.storage_type} artifact storage at ${P.artifact_store.uri_prefix}`},D.json,D);return}if(J==="validate"){let P=N.validateStorage();if(v({ok:P.ok,validation:P,message:P.ok?"Storage contract valid":`Storage contract invalid: ${P.errors.join("; ")}`},D.json,D),!P.ok)process.exitCode=1;return}if(J==="repair-artifact-keys"||J==="repair-keys"){let P=N.repairArtifactManifestKeys({approveWrite:D.approveWrite,approvedBy:D.approvedBy,dryRun:D.dryRun});v(P,D.json,D);return}if(J==="migrate-legacy-path"||J==="migrate-legacy"||J==="migrate-path"){let P=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(v(P,D.json),!P.ok&&!D.json)process.exitCode=1;return}if(J==="merge-legacy-path"||J==="merge-legacy"||J==="merge-path"){let P=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(v(P,D.json),!P.ok&&!D.json)process.exitCode=1;return}throw Error("Invalid storage action. Use 'status', 'validate', 'repair-artifact-keys', 'migrate-legacy-path', 'merge-legacy-path', or 'import-legacy'.")}if(g==="machines"){let J=$[1]??"topology";if(J==="topology"||J==="status"){let P=await N.machineTopology({includeTailscale:D.tailscale!==!1});v(D.json||D.verbose?P:hw(P),D.json,D);return}if(J==="preflight"||J==="check"){let P=$[2]??D.machine??"local",S=D.workspace??process.cwd(),X=await N.machinePreflight({machineId:P,commands:[{command:"bun",required:!0},{command:"knowledge",required:!0}],packages:[{name:C$.name,command:"knowledge",expectedVersion:C$.version,required:!0},{name:"@hasna/machines",command:"machines",required:!1}],workspaces:[{label:"open-knowledge",path:S,expectedPackageName:C$.name,expectedVersion:C$.version,required:!0}]});if(v(D.json||D.verbose?X:cw(X),D.json,D),!X.ok&&!D.json)process.exitCode=1;return}throw Error("Invalid machines action. Use 'topology' or 'preflight'.")}if(g==="sync"){let J=$[1]??"status",P=D.tables?D.tables.split(",").map((S)=>S.trim()).filter(Boolean):void 0;if(J==="status"){let S=N.syncStatus();v(D.json||D.verbose?S:nw(S),D.json,D);return}if(J==="doctor"||J==="readiness"||J==="preflight"){let S=await N.syncDoctor({machine:D.machine??null,peerWorkspace:D.peerWorkspace??null,includeTailscale:D.tailscale!==!1,tables:P}),X={package:{name:C$.name,version:C$.version},...S};if(v(D.json||D.verbose?X:dw(X),D.json,D),!S.ok&&!D.json)process.exitCode=1;return}if(J==="snapshot"||J==="record"){let S=await N.createSyncSnapshot({includeTailscale:D.tailscale!==!1,machineId:D.machine});v(D.json||D.verbose?S:mw(S),D.json,D);return}if(J==="conflicts"||J==="conflict"){let S=$[2];if(S==="show"||S==="get"){let G=$[3]??D.id;if(!G)throw Error("Usage: knowledge sync conflicts show <id>");let V=N.syncConflict(G);v({ok:!0,conflict:V,message:`Sync conflict ${G}`},D.json,D);return}if(S==="propose"||S==="proposal"){let G=$[3]??D.id;if(!G)throw Error("Usage: knowledge sync conflicts propose <id>");v(D.mode==="ai"?await N.proposeSyncConflictResolutionWithAi({id:G,modelRef:D.model,fake:D.fake}):N.proposeSyncConflictResolution(G),D.json,D);return}if(S==="resolve"){let G=$[3]??D.id;if(!G)throw Error("Usage: knowledge sync conflicts resolve <id> --approve-write --approved-by <name> [--strategy <name>]");let V=N.resolveSyncConflict({id:G,strategy:D.strategy,approvedBy:D.approvedBy,approveWrite:D.approveWrite,proposedPatchUri:D.patchUri});if(v(V,D.json,D),!V.ok&&!D.json)process.exitCode=1;return}let X=N.syncConflicts({status:S,limit:D.limit}),R={ok:!0,conflicts:X,message:`${X.length} sync conflict(s)`};v(D.json||D.verbose?R:iw(R),D.json,D);return}if(J==="machines"||J==="registry"){let S=N.syncMachines(),X={ok:!0,machines:S,message:`${S.length} registered sync machine(s)`};v(D.json||D.verbose?X:lw(X),D.json,D);return}if(J==="export"){let S=N.exportSyncBundle({machineId:D.machine??null,tables:P,includeArtifactContent:D.artifactContent!==!1});v(S,!0);return}if(J==="import"){let S=await Bun.stdin.text();if(!S.trim())throw Error("Usage: knowledge sync import < bundle.json");let X=await N.importSyncBundle({bundle:JSON.parse(S),dryRun:D.dryRun,direction:"import",machineId:D.machine??null});v(D.json||D.verbose?X:DY(X,J),D.json,D);return}if(J==="dry-run"||J==="pull"||J==="push"||J==="sync"){if(!D.peerWorkspace&&UY(D.machine))throw Error(`Usage: knowledge sync ${J} --peer-workspace <repo-or-knowledge-home> [--scope project] +Remote machine sync can omit --peer-workspace when machines path mapping is configured.`);let S=J==="dry-run"?"both":J==="sync"?"both":J,X=!UY(D.machine)?await N.syncRemotePeer({direction:S,machine:D.machine,peerWorkspace:D.peerWorkspace,tables:P,dryRun:D.dryRun===!0||J==="dry-run",includeArtifactContent:D.artifactContent!==!1,includeTailscale:D.tailscale!==!1}):await N.syncPeer({peerWorkspace:D.peerWorkspace,direction:S,dryRun:D.dryRun===!0||J==="dry-run",tables:P,includeArtifactContent:D.artifactContent!==!1,machineId:D.machine??null});if(v(D.json||D.verbose?X:DY(X,J),D.json,D),!X.ok&&!D.json)process.exitCode=1;return}throw Error("Invalid sync action. Use 'status', 'doctor', 'snapshot', 'conflicts', 'machines', 'dry-run', 'pull', 'push', 'sync', 'export', or 'import'.")}if(g==="db"){let J=$[1]??"init";if(J==="init"){let P=N.initDb();v({ok:!0,...P,message:`Initialized ${P.path}`},D.json,D);return}if(J==="stats"){let P=N.dbStats();v({ok:!0,path:N.workspace.knowledgeDbPath,...P,message:`knowledge.db schema v${P.schema_version}`},D.json,D);return}if(J==="storage"){if(($[2]??"status")==="status"){let S=Uz({scope:D.scope});v({ok:!0,...S,message:`knowledge.db storage mode ${S.mode}`},D.json,D);return}throw Error("Invalid db storage action. Only 'status' is supported. The 'push'/'pull'/'sync' Postgres sync commands were removed (DSN-on-client is forbidden); use the cloud API flip instead.")}throw Error("Invalid db action. Use 'init', 'stats', or 'storage'.")}if(g==="app-wiki"){let J=$[1]??"init";if(J==="paths"||J==="status"){v({ok:!0,standard:"hasna-app-wiki.v1",default_scope:"project",global_writes_require:"--allow-global",...N.paths()},D.json);return}if(J==="init"||J==="open"){let P=await N.initAppWiki({allowGlobal:D.allowGlobal});v(P,D.json);return}if(J==="note"||J==="notes"){let P=$[2]??"list";if(P==="add"||P==="create"){let S=D.title??$[3],X=D.content??$.slice(4).join(" ");if(!S||!X)throw Error("Usage: knowledge app-wiki note add --title <title> --content <text> [--source-ref <uri>]");let R=await N.addAppWikiNote({title:S,content:X,tags:D.tag,sourceRefs:D.sourceRef,allowGlobal:D.allowGlobal});v(R,D.json);return}if(P==="list"||P==="ls"){let S=N.listAppWikiNotes({limit:D.limit});v({ok:!0,scope:N.scope,home:N.workspace.home,notes:S,message:`${S.length} app wiki note(s)`},D.json);return}if(P==="get"||P==="show"){let S=$[3]??D.id;if(!S)throw Error("Usage: knowledge app-wiki note get <id-or-path>");let X=await N.getAppWikiNote(S,{includeContent:!0});if(!X)throw Error(`App wiki note not found: ${S}`);v(X,D.json);return}throw Error("Invalid app-wiki note action. Use 'add', 'list', or 'get'.")}if(J==="source"||J==="sources"){let P=$[2]??"add";if(P!=="add"&&P!=="ingest")throw Error("Invalid app-wiki source action. Use 'add'.");let S=$[3]??D.sourceRef?.[0];if(!S)throw Error("Usage: knowledge app-wiki source add <source-ref>");let X=await N.addAppWikiSourceRef({sourceRef:S,purpose:D.purpose,allowGlobal:D.allowGlobal});v({ok:!0,...X,message:`Added app wiki source ${X.source_ref}`},D.json);return}if(J==="search"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge app-wiki search <query>");let S=await N.searchAppWiki({query:P,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...S,message:`${S.results.length} app wiki result(s)`},D.json);return}if(J==="query"||J==="context"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge app-wiki query <query>");let S=await N.queryAppWiki({query:P,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...S,message:`${S.excerpts.length} app wiki excerpt(s)`},D.json);return}throw Error("Invalid app-wiki action. Use 'init', 'paths', 'note', 'source', 'search', or 'query'.")}if(g==="wiki"){let J=$[1]??"init";if(J==="init"){let P=await N.initWiki();v({ok:!0,...P,message:`Initialized wiki layout in ${N.workspace.home}`},D.json,D);return}if(J==="compile"){let P=$.slice(2),S=P.filter((G)=>/^(open-files|file|s3|https?):\/\//.test(G)),X=P.filter((G)=>!/^(open-files|file|s3|https?):\/\//.test(G)).join(" "),R=await N.compileWiki({title:D.title,query:X||D.search,sourceRefs:S.length>0?S:void 0,limit:D.limit});v({ok:!0,...R,message:`Compiled wiki page ${R.path}`},D.json,D);return}if(J==="file-answer"||J==="answer"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge wiki file-answer <prompt> --content <answer> --approve-write");if(!D.content)throw Error("Missing --content <answer> for wiki file-answer.");let S=await N.fileAnswer({prompt:P,answer:D.content,approveWrite:D.approveWrite,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...S},D.json,D);return}if(J==="lint"){let P=N.lintWiki();v({ok:P.ok,...P,message:P.ok?"Wiki lint passed":`Wiki lint found ${P.issue_count} issue(s)`},D.json,D);return}throw Error("Invalid wiki action. Use 'init', 'compile', 'file-answer', or 'lint'.")}if(g==="safety"){let J=$[1]??"status",P=N.ensureWorkspace(),S=N.safetyPolicy();N.initDb();let X=f(P.knowledgeDbPath);try{if(J==="status"){v({ok:!0,mode:S.mode,workspace:P.home,allow_write_roots:S.allowWriteRoots,read_only_source_access:S.readOnlySourceAccess,network:S.network,redaction:S.redaction,approvals:S.approvals,message:`Safety policy: ${S.mode}`},D.json,D);return}if(J==="check"){let R=$[2]??"generated_write",G=$[3]??null,V;try{if(R==="web_search")z0(S),V={action:R,target_uri:G,approval_required:!1,approved:!0,decision:"allow"};else if(R==="s3_read"){if(!G)throw Error("safety check s3_read requires an s3:// target.");B6(G,S),V={action:R,target_uri:G,approval_required:!1,approved:!0,decision:"allow"}}else V=aS(X,S,R,G);X_(X,{event_type:"safety_check",action:R,target_uri:G,decision:V.decision==="allow"?"allow":"requires_approval",metadata:V}),v({ok:!0,...V,message:`Safety check ${V.decision}`},D.json,D);return}catch(Q){throw X_(X,{event_type:"safety_check",action:R,target_uri:G,decision:"deny",metadata:{error:Q instanceof Error?Q.message:String(Q)}}),Q}}if(J==="approve"){let R=$[2]??"generated_write",G=$[3]??null,V=lg(X,{action:R,target_uri:G,reason:"local-cli approval",metadata:{scope:D.scope??"global"}});X_(X,{event_type:"approval",action:R,target_uri:G,decision:"allow",metadata:{approval_id:V.id}}),v({ok:!0,...V,action:R,target_uri:G,message:`Approved ${R}`},D.json,D);return}if(J==="audit"){let R=X.query("SELECT id, event_type, action, target_uri, decision, metadata_json, created_at FROM audit_events ORDER BY created_at DESC LIMIT 50").all().map((G)=>({id:G.id,event_type:G.event_type,action:G.action,target_uri:G.target_uri,decision:G.decision,metadata:JSON.parse(G.metadata_json),created_at:G.created_at}));v({ok:!0,events:R,message:`${R.length} audit event(s)`},D.json,D);return}if(J==="redact"){let R=$.slice(2).join(" ");if(!R)throw Error("Usage: knowledge safety redact <text>");let G=u_(R,S);if(G.findings.length>0)S0(X,{source_uri:"safety://redact",findings:G.findings,metadata:{command:"safety redact"}});X_(X,{event_type:"redaction",action:"safety_redact",target_uri:"safety://redact",decision:G.findings.length>0?"redacted":"allow",metadata:{findings:G.findings.length}}),v({ok:!0,text:G.text,findings:G.findings,message:`Redacted ${G.findings.length} finding(s)`},D.json,D);return}throw Error("Invalid safety action. Use 'status', 'check', 'approve', 'audit', or 'redact'.")}finally{X.close()}}if(g==="source"){if(($[1]??"")!=="resolve")throw Error("Invalid source action. Use 'resolve'.");let P=$[2];if(!P)throw Error("Usage: knowledge source resolve <source-ref>");let S=await N.resolveSource(P,{purpose:D.purpose,limit:D.limit});v({ok:!0,...S,message:S.resolved?`Resolved ${S.source_ref} (${S.content.chunks_returned}/${S.content.chunks_total} chunks)`:`Source not indexed: ${P}`},D.json,D);return}if(g==="ingest"){let J=$[1]??"";if(J==="rules"||J==="global-rules"||J==="agent-rules"){let P=await N.importRulesProvenance({root:D.workspace??process.cwd(),owner:D.owner,dryRun:D.dryRun===!0,maxItems:D.maxItems,limit:D.limit});v({ok:!0,...P},D.json);return}if(J==="manifest"){let P=$[2];if(!P)throw Error("Usage: knowledge ingest manifest <file|s3://bucket/key>");let S=await N.ingestManifest(P);v({ok:!0,...S,message:`Ingested ${S.items_seen} manifest item(s)`},D.json,D);return}if(J==="source"){let P=$[2];if(!P)throw Error("Usage: knowledge ingest source <source-ref>");let S=await N.ingestSource(P,D.purpose);v({ok:!0,...S,message:`Ingested source ${S.source_ref} (${S.chunks_inserted} chunks)`},D.json,D);return}throw Error("Invalid ingest action. Use 'manifest' or 'source'.")}if(g==="reindex"){let J=$[1]??"status";if(J==="status"){let P=N.reindexHealth({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...P,message:`${P.missing_embeddings} chunk(s) missing embeddings`},D.json,D);return}if(J==="enqueue"){let P=N.enqueueReindex({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...P,message:`Queued ${P.enqueued} embedding refresh item(s)`},D.json,D);return}if(J==="embeddings"){let P=await N.refreshEmbeddings({full:D.full,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...P,message:`Embedded ${P.indexed.chunks_embedded} chunk(s)`},D.json,D);return}if(J==="outbox"){let P=$[2];if(!P)throw Error("Usage: knowledge reindex outbox <file|s3://bucket/key>");let S=await N.consumeOutbox(P);v({ok:!0,...S,message:`Consumed ${S.events_seen} outbox event(s)`},D.json,D);return}throw Error("Invalid reindex action. Use 'status', 'enqueue', 'embeddings', or 'outbox'.")}if(g==="embeddings"){let J=$[1]??"status";if(J==="status"){let P=N.embeddingStatus();v({ok:!0,...P,message:`${P.total_vector_entries} vector index entries`},D.json,D);return}if(J==="index"){let P=await N.indexEmbeddings({limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});v({ok:!0,...P,message:`Embedded ${P.chunks_embedded} chunk(s)`},D.json,D);return}if(J==="search"){let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge embeddings search <query>");let S=await N.semanticSearch({query:P,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake}),X={ok:!0,...S,message:`${S.results.length} semantic result(s)`};v(D.json||D.verbose?X:xw(X),D.json,D);return}throw Error("Invalid embeddings action. Use 'status', 'index', or 'search'.")}if(g==="context"){if(($[1]??"pack")!=="pack")throw Error("Invalid context action. Use 'pack'.");let P=D.from??"search";if(!["search","loops","runs"].includes(P))throw Error("Invalid --from value. Use 'search', 'loops', or 'runs'.");let S=$.slice(2).join(" ")||D.topic||"",X=await N.contextPack({source:P,purpose:P==="loops"||P==="runs"?"proposal":"agent_context",query:S,topic:D.topic,since:D.since,dedupe:D.dedupe,maxTokens:D.maxTokens,maxItems:D.maxItems,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:A});$Y({ok:!0,...X,message:X.message});return}if(g==="proposals"){if(($[1]??"context")!=="context")throw Error("Invalid proposals action. Use 'context'.");let P=D.from??"loops";if(!["loops","runs"].includes(P))throw Error("Invalid --from value for proposals. Use 'loops' or 'runs'.");let S=D.topic??$.slice(2).join(" ");if(!S.trim())throw Error("Usage: knowledge proposals context --from loops --topic <text>");let X=await N.contextPack({source:P,purpose:"proposal",query:S,topic:S,since:D.since,dedupe:D.dedupe??!0,maxTokens:D.maxTokens,maxItems:D.maxItems,limit:D.limit});$Y({ok:!0,...X,message:X.message});return}if(g==="search"){let J=$.slice(1).join(" ");if(!J)throw Error("Usage: knowledge search <query>");if(D.context){let X=await N.retrieveContext({query:J,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:A}),R={ok:!0,...X,message:`${X.excerpts.length} context excerpt(s)`};v(D.json||D.verbose?R:uw(R),D.json,D);return}let P=await N.search({query:J,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:A}),S={ok:!0,...P,message:`${P.results.length} search result(s)`};v(D.json||D.verbose?S:rw(S),D.json,D);return}if(g==="web"){if(($[1]??"search")!=="search")throw Error("Invalid web action. Use 'search'.");let P=$.slice(2).join(" ");if(!P)throw Error("Usage: knowledge web search <query>");let S=await N.webSearch({query:P,limit:D.limit,modelRef:D.model,provider:D.provider,domains:D.domain,fake:D.fake,fileResults:D.fileResults}),X={ok:!0,...S,message:`${S.sources.length} web source(s)`};v(D.json||D.verbose?X:yw(X),D.json,D);return}if(g==="ask"||g==="build"){let J=$.slice(U).join(" ");if(!J)throw Error("Usage: knowledge ask <prompt>");let P=await N.runPrompt({prompt:J,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,generate:D.generate,approveWrite:D.approveWrite,legacyStorePath:A}),S={ok:!0,...P,message:P.generated?"Generated answer with citations":"Prepared citation context draft"};v(D.json||D.verbose?S:tw(S),D.json,D);return}if(g==="providers"){let J=$[1]??"status";if(J==="status"){let P=N.providerStatus(),S=P.providers.filter((X)=>X.configured).length;v({ok:!0,...P,message:`${S}/${P.providers.length} provider credential(s) configured`},D.json,D);return}if(J==="models"){let P=N.modelRegistry();v({ok:!0,models:P,message:`${P.length} model alias(es)`},D.json,D);return}if(J==="check"){let P=$[2]??"default",S=R$(P,N.config()),X=w_(S),R=U4(X.provider,N.config());v({ok:!0,target:P,model_ref:S,provider:X.provider,model:X.model,credential:R,message:`${X.provider} credentials configured`},D.json,D);return}throw Error("Invalid providers action. Use 'status', 'models', or 'check'.")}if(g==="add"){let J=$[1],P=$[2];if(!J||!P)throw Error("Usage: knowledge add <title> <content> --description <text>");let S=await L.create({title:J,content:P,description:D.description,...D.reach?{reach:D.reach}:{},...D.consequence?{consequence:D.consequence}:{},url:D.url??null,tags:D.tag??[]});$0("info","Item added",{id:S.id,title:S.title,tags:S.tags?.length??0,transport:L.kind}),v({ok:!0,item:S,message:`Added ${S.id}`},D.json,D);return}if(g==="list"){if(D.format!==void 0&&D.format!=="table"&&D.format!=="json")throw Error("Invalid --format value for list. Use 'table' or 'json'.");let J=await L.listAll(),P=Number.isFinite(D.page)&&D.page>0?D.page:1,S=Number.isFinite(D.limit)&&D.limit>0?D.limit:20,X=D.search?String(D.search).toLowerCase():"",R=(D.tagRaw??D.tag??[]).map((a)=>({whole:a.trim().toLowerCase(),parts:a.split(",").map((v_)=>v_.trim().toLowerCase()).filter((v_)=>v_.length>0)})),G=D.tag?.length?D.tag.map((a)=>a.toLowerCase()).join(","):"none",V=D.format==="table"||!D.json&&!D.format&&kw(D),Q=D.json||D.format==="json",T=J.items;if(D.archived)T=T.filter((a)=>a.archived===!0);else if(!D.includeArchived)T=T.filter((a)=>!a.archived);if(X)T=T.filter((a)=>Cz(a,X));if(R.length>0)T=T.filter((a)=>{let v_=new Set((a.tags??[]).map((V_)=>V_.toLowerCase()));return R.every(({whole:V_,parts:R_})=>V_.length>0&&v_.has(V_)||R_.every((H_)=>v_.has(H_)))});let{sorted:B,sort:F,direction:Z}=pw(T,D),e=(P-1)*S,U_=B.slice(e,e+S),I_=Math.max(1,Math.ceil(B.length/S)),J_={ok:!0,page:P,limit:S,total:B.length,total_pages:I_,sort:F,direction:Z,items:U_,store_exists:J.exists};if(Q){v(J_,!0);return}if(D.verbose){v(J_,!1,D);return}if(U_.length===0){v(`No items found (search=${X||"none"}, tag=${G})`,!1);return}if(V){let a=(V_)=>V_,v_=`${a("ID")} ${a("TITLE")} ${a("CREATED")} ${a("URL")} ${a("TAGS")}`;console.log(v_);for(let V_ of U_)console.log(`${V_.id} ${a(D_(V_.title,80))} ${V_.created_at} ${V_.url?a(D_(V_.url,90)):""} ${V_.tags?.length?a(D_(`[${V_.tags.join(", ")}]`,80)):""}`);console.log(`Page ${P}/${I_} | showing ${U_.length} of ${B.length} | sort=${F} ${Z} | search=${X||"none"} | tag=${G}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}else{for(let a of U_)console.log(`${a.id} ${D_(a.title,80)} ${a.created_at}${a.url?` ${D_(a.url,90)}`:""}${a.tags?.length?` ${D_(`[${a.tags.join(", ")}]`,80)}`:""}`);console.log(`Page ${P}/${I_} | showing ${U_.length} of ${B.length} | sort=${F} ${Z} | search=${X||"none"} | tag=${G}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}return}if(g==="get"){_0(D);let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);v({ok:!0,item:J,store_exists:L.exists,message:`${J.id}: ${J.title}`},D.json,D);return}if(g==="versions"){_0(D);let J=Number.isFinite(D.page)&&D.page>0?D.page:1,P=Number.isFinite(D.limit)&&D.limit>0?D.limit:void 0,S=await L.listVersions(D.id,{limit:P,offset:(J-1)*(P??50)});if(!S)throw Error(`Item not found: ${D.id}`);let X={ok:!0,id:S.item_id,current_version:S.current_version,total:S.total,page:J,store:L.location,versions:S.items,message:S.total===0?`${S.item_id} is at version ${S.current_version} with no retained prior versions`:`${S.item_id} is at version ${S.current_version}; ${S.total} prior version(s) retained`};if(D.json||D.verbose){v(X,D.json,D);return}console.log(X.message);for(let R of S.items){let G=R.actor?` by ${R.actor}`:"",V=R.reason?` (${R.reason})`:"";console.log(`v${R.version} ${R.valid_to}${G}${V} ${R.content_bytes} bytes ${R.content_hash.slice(0,12)}`)}if(S.items.length>0)console.log("Hint: `knowledge diff --id <id> --rev <n>` shows what changed.");return}if(g==="diff"){_0(D);let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);if(D.rev!==void 0&&(D.from!==void 0||D.to!==void 0))throw Error("Use either --rev <n> or --from <a> --to <b>, not both.");let P=()=>({title:J.title,content:J.content,url:J.url,tags:J.tags??[],metadata:J.metadata??{},archived:J.archived??!1}),S=`v${J.version??"?"} (current)`,X=async(B)=>{if(B==="current")return{label:S,snapshot:P()};let F=Number(B);if(!Number.isInteger(F)||F<1)throw Error(`Not a version number: ${B}`);if(J.version!==void 0&&F===J.version)return{label:S,snapshot:P()};let Z=await L.getVersion(J.id,F);if(!Z)throw Error(`No version ${F} retained for ${J.id} (it is at version ${J.version??"?"}). Run \`knowledge versions --id <id>\` to see what is retained.`);return{label:`v${Z.version}`,snapshot:{title:Z.title,content:Z.content,url:Z.url,tags:Z.tags,metadata:Z.metadata,archived:Z.archived}}},R,G;if(D.rev!==void 0){if(!Number.isInteger(D.rev)||D.rev<1)throw Error("--rev must be a positive version number.");if(D.rev===1)throw Error("Version 1 has no predecessor to diff against.");R=String(D.rev-1),G=String(D.rev)}else if(D.from!==void 0||D.to!==void 0){if(D.from===void 0||D.to===void 0)throw Error("--from and --to must be given together.");R=D.from,G=D.to}else{let B=await L.listVersions(J.id,{limit:1});if(!B)throw Error(`Item not found: ${D.id}`);if(B.items.length===0)throw Error(`${J.id} is at version ${B.current_version} with no retained prior versions to diff against.`);R=String(B.items[0].version),G="current"}let V=await X(R),Q=await X(G),T=BS(V.snapshot,Q.snapshot);if(D.json||D.verbose){v({ok:!0,id:J.id,from:V.label,to:Q.label,...T},D.json,D);return}console.log(qS(T,`${J.id} ${V.label}`,`${J.id} ${Q.label}`));return}if(g==="update"){_0(D);let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);if(D.ifVersion!==void 0&&(!Number.isInteger(D.ifVersion)||D.ifVersion<1))throw Error(`Invalid --if-version ${JSON.stringify(String(D.ifVersion))}: must be a positive integer version number, e.g. the "version" field from a prior 'knowledge get'.`);let P={};if(D.title!==void 0)P.title=D.title;if(D.content!==void 0)P.content=D.content;if(D.description!==void 0)P.description=D.description;if(D.reach!==void 0)P.reach=D.reach;if(D.consequence!==void 0)P.consequence=D.consequence;if(D.url!==void 0)P.url=D.url;let S;if(D.tag!==void 0){if(S=_Y(J.tags,D.tag),S.length>0)P.tags=[...J.tags??[],...S]}let X=D.ifVersion!==void 0?D.ifVersion:J.version,R=await L.update(J.id,P,{expectedVersion:X});v(Gz({ok:!0,item:R},`Updated ${R?.id??J.id}`,S),D.json,D);return}if(g==="archive"||g==="restore"){_0(D);let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);let P=await L.update(J.id,{archived:g==="archive"},{expectedVersion:J.version});v({ok:!0,item:P,message:`${g==="archive"?"Archived":"Restored"} ${P?.id??J.id}`},D.json,D);return}if(g==="untag"){if(_0(D),!D.tag?.length)throw Error("Missing required --tag. Example: knowledge untag --id <id> -t <tag>");let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);let P=J.tags??[],S=new Set(P.map((F)=>F.toLowerCase())),X=new Set;for(let F of D.tagRaw??D.tag){let Z=F.trim().toLowerCase();if(Z.length>0&&S.has(Z)){X.add(Z);continue}for(let e of F.split(",").map((U_)=>U_.trim().toLowerCase()).filter((U_)=>U_.length>0))X.add(e)}let R=P.filter((F)=>!X.has(F.toLowerCase())),G=P.length-R.length,V=[...X].filter((F)=>!S.has(F));if(G===0)throw Error(`No matching tag on ${J.id}: ${V.map((F)=>JSON.stringify(F)).join(", ")} not in [${P.map((F)=>JSON.stringify(F)).join(", ")}]`);let Q=await L.update(J.id,{tags:R},{expectedVersion:J.version}),T=V.length>0?` (not found: ${V.map((F)=>JSON.stringify(F)).join(", ")})`:"",B={ok:!0,item:Q,removed:G,message:`Removed ${G} tag${G===1?"":"s"} from ${Q?.id??J.id}${T}`};if(V.length>0)B.not_found=V;v(B,D.json,D);return}if(g==="upsert"){let J=D.title??$[1],P=D.content??$[2],S=D.id?await L.get(D.id):null;if(!S){if(!J||!P)throw Error("New item requires title and content. Example: knowledge upsert <title> <content> [--id <id>]");let V=await L.create({id:D.id,title:J,content:P,description:D.description,...D.reach?{reach:D.reach}:{},...D.consequence?{consequence:D.consequence}:{},url:D.url??null,tags:D.tag??[]});v(Gz({ok:!0,created:!0,item:V},`Upserted ${V.id}`,D.tag),D.json,D);return}let X={};if(J!==void 0)X.title=J;if(P!==void 0)X.content=P;if(D.description!==void 0)X.description=D.description;if(D.reach!==void 0)X.reach=D.reach;if(D.consequence!==void 0)X.consequence=D.consequence;if(D.url!==void 0)X.url=D.url;let R;if(D.tag!==void 0){if(R=_Y(S.tags,D.tag),R.length>0)X.tags=[...S.tags??[],...R]}let G=await L.update(S.id,X,{expectedVersion:S.version});v(Gz({ok:!0,created:!1,item:G},`Upserted ${G?.id??S.id}`,R),D.json,D);return}if(g==="delete"){if(_0(D),!D.yes)throw Error("Refusing delete without --yes. Re-run with: knowledge delete --id <id> --yes");if(!await L.delete(D.id))throw Error(`Item not found: ${D.id}`);$0("info","Item deleted",{id:D.id,transport:L.kind}),v({ok:!0,deleted_id:D.id,message:`Deleted ${D.id}`},D.json,D);return}if(g==="export"){let J=D.format??"json";if(J!=="json"&&J!=="jsonl")throw Error("Invalid --format. Use 'json' or 'jsonl'.");let P=await L.listAll();if(J==="jsonl")for(let S of P.items)console.log(JSON.stringify(S));else if(D.json||D.format==="json"||D.verbose)v({ok:!0,items:P.items,store_exists:P.exists},D.json||D.format==="json",D);else v(ow(P.items,J),!1);return}if(g==="prune"){if(!D.yes)throw Error("Refusing prune without --yes. Re-run with: knowledge prune --yes [--older-than <days>] [--empty]");let{items:J}=await L.listAll(),P=D.olderThan!==void 0?new Date(Date.now()-D.olderThan*86400000):null,S=J.filter((G)=>P!==null&&new Date(G.created_at)<P||D.empty&&G.content.trim().length===0),X=await L.deleteMany(S.map((G)=>G.id)),R=J.length-X;$0("info","Prune completed",{pruned:X,remaining:R,transport:L.kind}),v({ok:!0,pruned:X,remaining:R,message:`Pruned ${X} item(s)`},D.json,D);return}if(g==="dedupe"){if(!D.yes)throw Error("Refusing dedupe without --yes. Re-run with: knowledge dedupe --yes [--json]");let{items:J}=await L.listAll(),P=new Set,S=[];for(let G of J){let V=`${G.title}\x00${G.content}`;if(P.has(V))S.push(G);else P.add(V)}let X=await L.deleteMany(S.map((G)=>G.id)),R=J.length-X;$0("info","Dedupe completed",{removed:X,remaining:R,transport:L.kind}),v({ok:!0,removed:X,remaining:R,message:`Dedupe removed ${X} duplicate(s)`},D.json,D);return}if(g==="stats"){let J=await L.listAll(),P=J.items.filter((F)=>!F.archived),S=P.length,X=J.items.length-S,R=P.filter((F)=>F.url).length,G=P.filter((F)=>F.tags&&F.tags.length>0).length,V=S>0?P.map((F)=>F.created_at).sort()[0]:null,Q=S>0?P.map((F)=>F.created_at).sort()[S-1]:null,T={};for(let F of P)for(let Z of F.tags||[])T[Z]=(T[Z]||0)+1;let B=Object.entries(T).sort((F,Z)=>Z[1]-F[1]).slice(0,5).map(([F,Z])=>({tag:F,count:Z}));v({ok:!0,total:S,archived:X,with_url:R,with_tags:G,oldest:V,newest:Q,top_tags:B,store_exists:J.exists,message:`${S} items | ${R} with URL | ${G} with tags`},D.json,D);return}let z=Kw($[0]),W=z?` Did you mean '${z}'?`:"";throw $0("warn","Unknown command",{input:$[0],suggestion:z}),Error(`Unknown command: ${$[0]}.${W} Run 'knowledge --help' for available commands.`)}function aw(_,$){let D=_ instanceof Error?_.message:String(_);$0("debug","CLI error",{message:D,stack:_ instanceof Error?_.stack:void 0}),console.error(`Error: ${D}`);let g=_ instanceof L0?_:null;if($.includes("--json"))v({ok:!1,error:D,message:D,...g?{code:"version_conflict",expected:g.expected,current:g.current}:{}},!0);process.exitCode=g?2:1}if(import.meta.main){let _=process.argv.slice(2);ew(_).catch(($)=>aw($,_))}export{Kw as suggestCommand,pw as sortItems,ew as run,qw as parseArgs,aw as emitCliError}; diff --git a/dist/cloud-store.d.ts b/dist/cloud-store.d.ts index 7afb4ae..d102f2f 100644 --- a/dist/cloud-store.d.ts +++ b/dist/cloud-store.d.ts @@ -17,6 +17,10 @@ export interface KnowledgeCloudCreateInput { id?: string; title: string; content: string; + /** Required by the server and by the CHECK constraint; see knowledge-taxonomy.ts. */ + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; @@ -24,6 +28,9 @@ export interface KnowledgeCloudCreateInput { export interface KnowledgeCloudPatch { title?: string; content?: string; + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; diff --git a/dist/index.js b/dist/index.js index 07f3515..1f2324e 100644 --- a/dist/index.js +++ b/dist/index.js @@ -16581,6 +16581,9 @@ function wrap(client) { ...input.id ? { id: input.id } : {}, title: input.title, content: input.content, + ...input.description !== undefined ? { description: input.description } : {}, + ...input.reach ? { reach: input.reach } : {}, + ...input.consequence ? { consequence: input.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], ...input.metadata ? { metadata: input.metadata } : {} @@ -17888,7 +17891,86 @@ var PG_MIGRATIONS = [ END IF; END $knowledge_item_versions_guard$`, - `ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only` + `ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS description TEXT`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS reach TEXT`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS consequence TEXT`, + `DO $knowledge_items_description_present$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_description_present' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_description_present + CHECK (description IS NOT NULL AND char_length(btrim(description)) BETWEEN 24 AND 280) + NOT VALID; + END IF; + END + $knowledge_items_description_present$`, + `DO $knowledge_items_reach_vocab$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_reach_vocab' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_reach_vocab + CHECK (reach IS NULL OR reach IN ('fleet', 'project', 'seat', 'self')); + END IF; + END + $knowledge_items_reach_vocab$`, + `DO $knowledge_items_consequence_vocab$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_consequence_vocab' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_consequence_vocab + CHECK (consequence IS NULL OR consequence IN ('blocking', 'standing', 'reference')); + END IF; + END + $knowledge_items_consequence_vocab$`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_updated ON knowledge_items(updated_at)`, + `CREATE OR REPLACE FUNCTION knowledge_items_version_snapshot() + RETURNS TRIGGER AS $knowledge_item_version$ + BEGIN + IF (OLD.title, OLD.content, OLD.url, OLD.tags, OLD.metadata, OLD.archived, + OLD.description, OLD.reach, OLD.consequence) + IS NOT DISTINCT FROM + (NEW.title, NEW.content, NEW.url, NEW.tags, NEW.metadata, NEW.archived, + NEW.description, NEW.reach, NEW.consequence) THEN + NEW.version := OLD.version; + RETURN NEW; + END IF; + + INSERT INTO knowledge_item_versions + (id, item_id, tenant_id, version, title, content, content_hash, content_bytes, + url, tags, metadata, archived, actor, reason, valid_from, valid_to) + VALUES + (gen_random_uuid()::text, + OLD.id, + to_jsonb(OLD)->>'tenant_id', + OLD.version, + OLD.title, + OLD.content, + encode(sha256(convert_to(coalesce(OLD.content, ''), 'UTF8')), 'hex'), + octet_length(coalesce(OLD.content, '')), + OLD.url, + OLD.tags, + OLD.metadata, + OLD.archived, + NULLIF(current_setting('hasna.actor', true), ''), + NULLIF(current_setting('hasna.reason', true), ''), + OLD.updated_at, + to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')); + + NEW.version := OLD.version + 1; + + IF NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at THEN + NEW.updated_at := to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'); + END IF; + RETURN NEW; + END + $knowledge_item_version$ LANGUAGE plpgsql` ]; // src/serve.ts import { readFileSync as readFileSync5 } from "fs"; @@ -18382,6 +18464,72 @@ function knowledgeRegistryContract(input) { }; } +// src/knowledge-taxonomy.ts +var REACH_VALUES = ["fleet", "project", "seat", "self"]; +var CONSEQUENCE_VALUES = ["blocking", "standing", "reference"]; +var DESCRIPTION_MIN_LENGTH = 24; +var DESCRIPTION_MAX_LENGTH = 280; + +class KnowledgeDescriptionRequiredError extends Error { + code = "description_required"; + constructor(reason) { + super(`${reason} Every knowledge item must carry a one-line description: it is what the ` + "fleet-wide change notification shows an agent who has not opened the item, alongside the title. " + `Supply it with --description "<${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars saying what this is for>". ` + "It is required rather than optional because the equivalent optional field on mementos " + "(when_to_use) is populated on zero rows."); + this.name = "KnowledgeDescriptionRequiredError"; + } +} + +class KnowledgeTaxonomyValueError extends Error { + code = "taxonomy_value_invalid"; + constructor(field, received, allowed) { + super(`Invalid --${field} value ${JSON.stringify(received)}. ` + `Use one of: ${allowed.join(", ")}.`); + this.name = "KnowledgeTaxonomyValueError"; + } +} +function validateDescription(raw) { + if (raw === undefined || raw === null) { + throw new KnowledgeDescriptionRequiredError("No description was supplied."); + } + if (typeof raw !== "string") { + throw new KnowledgeDescriptionRequiredError(`The description must be a string, received ${typeof raw}.`); + } + const trimmed = raw.trim(); + if (trimmed.length === 0) { + throw new KnowledgeDescriptionRequiredError("The description was empty or whitespace only."); + } + if (trimmed.length < DESCRIPTION_MIN_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the minimum is ${DESCRIPTION_MIN_LENGTH}.`); + } + if (trimmed.length > DESCRIPTION_MAX_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the maximum is ${DESCRIPTION_MAX_LENGTH}.`); + } + return trimmed; +} +function normalizeAxis(field, raw, allowed) { + if (typeof raw !== "string") { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + const value = raw.trim().toLowerCase(); + if (!allowed.includes(value)) { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + return value; +} +function normalizeReach(raw) { + return normalizeAxis("reach", raw, REACH_VALUES); +} +function normalizeConsequence(raw) { + return normalizeAxis("consequence", raw, CONSEQUENCE_VALUES); +} +function normalizeTaxonomyInput(input) { + const result = {}; + if (input.reach !== undefined && input.reach !== null) + result.reach = normalizeReach(input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeConsequence(input.consequence); + } + return result; +} + // src/store.ts import { chmodSync as chmodSync2, @@ -18799,6 +18947,29 @@ class VersionConflictError extends Error { this.name = "VersionConflictError"; } } +function validateNoteDescription(raw) { + try { + return validateDescription(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : "description is required"); + } +} +function normalizeNoteAxis(field, raw) { + try { + return field === "reach" ? normalizeReach(raw) : normalizeConsequence(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : `invalid ${field}`); + } +} +function normalizeNoteTaxonomy(input) { + const result = {}; + if (input.reach !== undefined && input.reach !== null) + result.reach = normalizeNoteAxis("reach", input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeNoteAxis("consequence", input.consequence); + } + return result; +} function parseJsonColumn(value, fallback) { if (value == null) return fallback; @@ -18850,6 +19021,9 @@ function rowToItem(row) { short_id: row.short_id ?? null, title: String(row.title ?? ""), content: String(row.content ?? ""), + description: row.description ?? null, + reach: row.reach ?? null, + consequence: row.consequence ?? null, url: row.url ?? null, tags: parseJson(row.tags, []), metadata: parseJson(row.metadata, {}), @@ -18878,14 +19052,19 @@ class NoteRepo { if (!input.title || typeof input.title !== "string") { throw new HttpError(400, "title is required"); } + const description = validateNoteDescription(input.description); + const axes = normalizeNoteTaxonomy(input); const now = new Date().toISOString(); const suppliedId = typeof input.id === "string" ? input.id.trim() : ""; if (suppliedId) { - const row2 = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$8) + const row2 = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$11) ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, + description = EXCLUDED.description, + reach = EXCLUDED.reach, + consequence = EXCLUDED.consequence, url = EXCLUDED.url, tags = EXCLUDED.tags, metadata = EXCLUDED.metadata, @@ -18895,6 +19074,9 @@ class NoteRepo { makeShortId(suppliedId), input.title, input.content ?? "", + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -18903,13 +19085,16 @@ class NoteRepo { return rowToItem(row2); } const id = makeId(); - const row = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$9) + const row = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$12) RETURNING *`, [ id, makeShortId(id), input.title, input.content ?? "", + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -18956,6 +19141,13 @@ class NoteRepo { push("title", patch.title); if (patch.content !== undefined) push("content", patch.content); + if (patch.description !== undefined) + push("description", validateNoteDescription(patch.description)); + if (patch.reach !== undefined) + push("reach", patch.reach === null ? null : normalizeNoteAxis("reach", patch.reach)); + if (patch.consequence !== undefined) { + push("consequence", patch.consequence === null ? null : normalizeNoteAxis("consequence", patch.consequence)); + } if (patch.url !== undefined) push("url", patch.url); if (patch.tags !== undefined) @@ -29977,6 +30169,19 @@ function lintWiki(options) { // src/item-store.ts import { existsSync as existsSync12 } from "fs"; +function assertCreatable(input) { + const description = validateDescription(input.description); + const axes = normalizeTaxonomyInput(input); + return { description, ...axes }; +} +function assertPatchable(patch) { + const result = {}; + if (patch.description !== undefined) + result.description = validateDescription(patch.description); + Object.assign(result, normalizeTaxonomyInput(patch)); + return result; +} + class VersionHistoryUnsupportedError extends Error { location; code = "version_history_unsupported"; @@ -30018,6 +30223,7 @@ class LocalItemStore { return store.items.find((item) => matchesId(item, idOrShort)) ?? null; } async create(input) { + const checked = assertCreatable(input); return withLock(this.storePath, () => { const db = loadStore(this.storePath); const now = new Date().toISOString(); @@ -30027,6 +30233,9 @@ class LocalItemStore { short_id: makeShortId(id), title: input.title, content: input.content, + description: checked.description, + ...checked.reach ? { reach: checked.reach } : {}, + ...checked.consequence ? { consequence: checked.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], metadata: input.metadata ?? {}, @@ -30041,6 +30250,7 @@ class LocalItemStore { }, { createParent: true }); } async update(idOrShort, patch, options = {}) { + const checked = assertPatchable(patch); return withLock(this.storePath, () => { const db = loadStore(this.storePath); const idx = db.items.findIndex((item2) => matchesId(item2, idOrShort)); @@ -30055,6 +30265,12 @@ class LocalItemStore { item.title = patch.title; if (patch.content !== undefined) item.content = patch.content; + if (checked.description !== undefined) + item.description = checked.description; + if (checked.reach !== undefined) + item.reach = checked.reach; + if (checked.consequence !== undefined) + item.consequence = checked.consequence; if (patch.url !== undefined) item.url = patch.url; if (patch.tags !== undefined) @@ -30121,17 +30337,22 @@ class ApiItemStore { return this.cloud.get(idOrShort); } async create(input) { + const checked = assertCreatable(input); return this.cloud.create({ ...input.id ? { id: input.id } : {}, title: input.title, content: input.content, + description: checked.description, + ...checked.reach ? { reach: checked.reach } : {}, + ...checked.consequence ? { consequence: checked.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], ...input.metadata ? { metadata: input.metadata } : {} }); } async update(idOrShort, patch, options = {}) { - return this.cloud.update(idOrShort, patch, { expectedVersion: options.expectedVersion }); + const checked = assertPatchable(patch); + return this.cloud.update(idOrShort, { ...patch, ...checked }, { expectedVersion: options.expectedVersion }); } async delete(idOrShort) { return this.cloud.delete(idOrShort); diff --git a/dist/item-store.d.ts b/dist/item-store.d.ts index 7dacc5c..45da77f 100644 --- a/dist/item-store.d.ts +++ b/dist/item-store.d.ts @@ -8,6 +8,17 @@ export interface ItemCreateInput { id?: string; title: string; content: string; + /** + * REQUIRED at runtime by both transports — see `assertCreatable` below. It is + * typed as required here so the compiler helps callers inside this package, + * but the type is NOT the enforcement: this is a plain TypeScript interface, + * erased at build time, and the MCP server (`mcp.js`) and any SDK consumer + * reach `create` as untyped JavaScript. The runtime check is the floor. + */ + description: string; + /** Optional governance axes; validated against a closed vocabulary. */ + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; @@ -15,6 +26,14 @@ export interface ItemCreateInput { export interface ItemPatch { title?: string; content?: string; + /** + * When present it must be VALID — a caller may not blank a description back + * out once set. When absent the stored value is left untouched, so ordinary + * edits (retag, retitle, archive) never have to restate it. + */ + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; /** Full replacement tag set (callers compute add/remove before patching). */ tags?: string[]; diff --git a/dist/knowledge-taxonomy.d.ts b/dist/knowledge-taxonomy.d.ts new file mode 100644 index 0000000..287cd9d --- /dev/null +++ b/dist/knowledge-taxonomy.d.ts @@ -0,0 +1,110 @@ +/** + * @hasna/knowledge — the description field and the governance taxonomy. + * Copyright 2026 Hasna Inc. + * Licensed under the Apache License, Version 2.0 + * + * ONE definition of the vocabulary, imported by every layer that validates it: + * the CLI flag parser, the item Store (local transport), the serve handler + * (cloud transport), and the tests. The Postgres CHECK constraints in + * db/pg-migrations.ts restate these values in SQL because a database constraint + * cannot import TypeScript — a test in tests/knowledge-description-taxonomy.test.ts + * asserts the two stay in step, so the duplication cannot drift silently. + * + * WHY A DESCRIPTION IS REQUIRED AND THE TAXONOMY AXES ARE NOT + * ---------------------------------------------------------- + * The description is REQUIRED at write time. Owner directive 2026-08-05 asks + * that every agent be notified of new/updated knowledge with a title and a + * brief description; a notification cannot carry a field the store does not + * hold. It is required rather than encouraged because the sibling package + * already ran the experiment: mementos' `when_to_use` is exactly this kind of + * optional human-guidance field and is populated on ZERO rows, while its + * optional `summary` sits at 6.4% and is falling. An optional guidance field + * lands at zero — measured, not predicted. + * + * `reach` and `consequence` are OPTIONAL, and that asymmetry is deliberate + * rather than an inconsistency. Their defaults are the values a monitor + * DE-PRIORITISES, so a lazy write lands quiet and searchable and only a + * deliberate write escalates. Requiring them would make them 100% populated and + * worthless as a signal — which is exactly what happened to mementos' + * `importance`, `category` and `scope`: all three are populated on 400 of 400 + * sampled rows and carry almost no information, because a default did the work. + * On mementos' own data the discriminator is deliberateness: rows left at the + * default importance carry a summary 0.1% of the time, rows at importance 10 + * carry one 83.6% of the time. Coverage is not the measurement; distribution is. + * + * So: the field the notification cannot work without is forced, and the fields + * whose value is their selectivity are left free and measured. + */ +/** Who a knowledge item binds. Ordered widest to narrowest. */ +export declare const REACH_VALUES: readonly ['fleet', 'project', 'seat', 'self']; +export type KnowledgeReach = (typeof REACH_VALUES)[number]; +/** What happens to a reader who has not read it. Ordered most to least urgent. */ +export declare const CONSEQUENCE_VALUES: readonly ['blocking', 'standing', 'reference']; +export type KnowledgeConsequence = (typeof CONSEQUENCE_VALUES)[number]; +/** + * The value a monitor treats an UNMARKED item as. Deliberately not written to + * the row on create — see the header. An absent axis and an axis explicitly set + * to the default mean the same thing to a reader, and keeping absence absent is + * what lets anyone measure how often an author actually chose. + */ +export declare const DEFAULT_REACH: KnowledgeReach; +export declare const DEFAULT_CONSEQUENCE: KnowledgeConsequence; +/** + * Length bounds. The floor exists because "notes", "fix", and "wip" are + * descriptions that satisfy a presence check and tell a reader nothing — a + * required field with no floor degrades into a required keystroke. The ceiling + * keeps the field renderable on one line of a notification, which is the whole + * reason it exists rather than being read out of `content`. + */ +export declare const DESCRIPTION_MIN_LENGTH = 24; +export declare const DESCRIPTION_MAX_LENGTH = 280; +/** + * Raised when a write carries no usable description. + * + * The message names the flag, because the agent that hits this is mid-write and + * needs the remedy rather than a diagnosis — a guard whose message does not say + * what to do produces an agent that debugs the store. + */ +export declare class KnowledgeDescriptionRequiredError extends Error { + readonly code = "description_required"; + constructor(reason: string); +} +/** Raised when a taxonomy axis is given a value outside its closed vocabulary. */ +export declare class KnowledgeTaxonomyValueError extends Error { + readonly code = "taxonomy_value_invalid"; + constructor(field: string, received: unknown, allowed: readonly string[]); +} +/** + * Validate and normalise a description, returning the trimmed value. + * + * Throws {@link KnowledgeDescriptionRequiredError} when absent, blank, or out of + * bounds. Trimming happens BEFORE the length check so that padding cannot buy a + * caller past the floor. + */ +export declare function validateDescription(raw: unknown): string; +/** Validate a `reach` value against the closed vocabulary. */ +export declare function normalizeReach(raw: unknown): KnowledgeReach; +/** Validate a `consequence` value against the closed vocabulary. */ +export declare function normalizeConsequence(raw: unknown): KnowledgeConsequence; +/** + * Normalise the optional axes on a write. Absent stays absent — see the header + * for why this does not stamp the defaults. + */ +export declare function normalizeTaxonomyInput(input: { + reach?: unknown; + consequence?: unknown; +}): { + reach?: KnowledgeReach; + consequence?: KnowledgeConsequence; +}; +/** + * The effective axes a reader/monitor should apply to an item, filling absence + * with the quiet defaults. Read-side only — never written back to the row. + */ +export declare function effectiveTaxonomy(item: { + reach?: string | null; + consequence?: string | null; +}): { + reach: KnowledgeReach; + consequence: KnowledgeConsequence; +}; diff --git a/dist/serve.d.ts b/dist/serve.d.ts index 189b6ea..a1b0bd2 100644 --- a/dist/serve.d.ts +++ b/dist/serve.d.ts @@ -17,6 +17,14 @@ export interface NoteInput { id?: string; title: string; content?: string; + /** + * REQUIRED on create — validated in `create()` below and, underneath that, by + * the `knowledge_items_description_present` CHECK constraint. This interface + * is erased at build time and enforces nothing on its own. + */ + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; diff --git a/dist/serve.js b/dist/serve.js index 2cc2d81..e1dd27b 100644 --- a/dist/serve.js +++ b/dist/serve.js @@ -842,6 +842,72 @@ function knowledgeRegistryContract(input) { }; } +// src/knowledge-taxonomy.ts +var REACH_VALUES = ["fleet", "project", "seat", "self"]; +var CONSEQUENCE_VALUES = ["blocking", "standing", "reference"]; +var DESCRIPTION_MIN_LENGTH = 24; +var DESCRIPTION_MAX_LENGTH = 280; + +class KnowledgeDescriptionRequiredError extends Error { + code = "description_required"; + constructor(reason) { + super(`${reason} Every knowledge item must carry a one-line description: it is what the ` + "fleet-wide change notification shows an agent who has not opened the item, alongside the title. " + `Supply it with --description "<${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars saying what this is for>". ` + "It is required rather than optional because the equivalent optional field on mementos " + "(when_to_use) is populated on zero rows."); + this.name = "KnowledgeDescriptionRequiredError"; + } +} + +class KnowledgeTaxonomyValueError extends Error { + code = "taxonomy_value_invalid"; + constructor(field, received, allowed) { + super(`Invalid --${field} value ${JSON.stringify(received)}. ` + `Use one of: ${allowed.join(", ")}.`); + this.name = "KnowledgeTaxonomyValueError"; + } +} +function validateDescription(raw) { + if (raw === undefined || raw === null) { + throw new KnowledgeDescriptionRequiredError("No description was supplied."); + } + if (typeof raw !== "string") { + throw new KnowledgeDescriptionRequiredError(`The description must be a string, received ${typeof raw}.`); + } + const trimmed = raw.trim(); + if (trimmed.length === 0) { + throw new KnowledgeDescriptionRequiredError("The description was empty or whitespace only."); + } + if (trimmed.length < DESCRIPTION_MIN_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the minimum is ${DESCRIPTION_MIN_LENGTH}.`); + } + if (trimmed.length > DESCRIPTION_MAX_LENGTH) { + throw new KnowledgeDescriptionRequiredError(`The description is ${trimmed.length} characters; the maximum is ${DESCRIPTION_MAX_LENGTH}.`); + } + return trimmed; +} +function normalizeAxis(field, raw, allowed) { + if (typeof raw !== "string") { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + const value = raw.trim().toLowerCase(); + if (!allowed.includes(value)) { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + return value; +} +function normalizeReach(raw) { + return normalizeAxis("reach", raw, REACH_VALUES); +} +function normalizeConsequence(raw) { + return normalizeAxis("consequence", raw, CONSEQUENCE_VALUES); +} +function normalizeTaxonomyInput(input) { + const result = {}; + if (input.reach !== undefined && input.reach !== null) + result.reach = normalizeReach(input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeConsequence(input.consequence); + } + return result; +} + // src/store.ts import { chmodSync as chmodSync2, @@ -1440,6 +1506,29 @@ class VersionConflictError extends Error { this.name = "VersionConflictError"; } } +function validateNoteDescription(raw) { + try { + return validateDescription(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : "description is required"); + } +} +function normalizeNoteAxis(field, raw) { + try { + return field === "reach" ? normalizeReach(raw) : normalizeConsequence(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : `invalid ${field}`); + } +} +function normalizeNoteTaxonomy(input) { + const result = {}; + if (input.reach !== undefined && input.reach !== null) + result.reach = normalizeNoteAxis("reach", input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeNoteAxis("consequence", input.consequence); + } + return result; +} function parseJsonColumn(value, fallback) { if (value == null) return fallback; @@ -1491,6 +1580,9 @@ function rowToItem(row) { short_id: row.short_id ?? null, title: String(row.title ?? ""), content: String(row.content ?? ""), + description: row.description ?? null, + reach: row.reach ?? null, + consequence: row.consequence ?? null, url: row.url ?? null, tags: parseJson(row.tags, []), metadata: parseJson(row.metadata, {}), @@ -1519,14 +1611,19 @@ class NoteRepo { if (!input.title || typeof input.title !== "string") { throw new HttpError(400, "title is required"); } + const description = validateNoteDescription(input.description); + const axes = normalizeNoteTaxonomy(input); const now = new Date().toISOString(); const suppliedId = typeof input.id === "string" ? input.id.trim() : ""; if (suppliedId) { - const row2 = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$8) + const row2 = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$11) ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, + description = EXCLUDED.description, + reach = EXCLUDED.reach, + consequence = EXCLUDED.consequence, url = EXCLUDED.url, tags = EXCLUDED.tags, metadata = EXCLUDED.metadata, @@ -1536,6 +1633,9 @@ class NoteRepo { makeShortId(suppliedId), input.title, input.content ?? "", + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -1544,13 +1644,16 @@ class NoteRepo { return rowToItem(row2); } const id = makeId(); - const row = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$9) + const row = await this.write(options, (tx) => tx.get(`INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$12) RETURNING *`, [ id, makeShortId(id), input.title, input.content ?? "", + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -1597,6 +1700,13 @@ class NoteRepo { push("title", patch.title); if (patch.content !== undefined) push("content", patch.content); + if (patch.description !== undefined) + push("description", validateNoteDescription(patch.description)); + if (patch.reach !== undefined) + push("reach", patch.reach === null ? null : normalizeNoteAxis("reach", patch.reach)); + if (patch.consequence !== undefined) { + push("consequence", patch.consequence === null ? null : normalizeNoteAxis("consequence", patch.consequence)); + } if (patch.url !== undefined) push("url", patch.url); if (patch.tags !== undefined) diff --git a/dist/storage.js b/dist/storage.js index dff18a6..8f0df49 100644 --- a/dist/storage.js +++ b/dist/storage.js @@ -1711,6 +1711,9 @@ function wrap(client) { ...input.id ? { id: input.id } : {}, title: input.title, content: input.content, + ...input.description !== undefined ? { description: input.description } : {}, + ...input.reach ? { reach: input.reach } : {}, + ...input.consequence ? { consequence: input.consequence } : {}, url: input.url ?? null, tags: input.tags ?? [], ...input.metadata ? { metadata: input.metadata } : {} @@ -3018,7 +3021,86 @@ var PG_MIGRATIONS = [ END IF; END $knowledge_item_versions_guard$`, - `ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only` + `ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS description TEXT`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS reach TEXT`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS consequence TEXT`, + `DO $knowledge_items_description_present$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_description_present' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_description_present + CHECK (description IS NOT NULL AND char_length(btrim(description)) BETWEEN 24 AND 280) + NOT VALID; + END IF; + END + $knowledge_items_description_present$`, + `DO $knowledge_items_reach_vocab$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_reach_vocab' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_reach_vocab + CHECK (reach IS NULL OR reach IN ('fleet', 'project', 'seat', 'self')); + END IF; + END + $knowledge_items_reach_vocab$`, + `DO $knowledge_items_consequence_vocab$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_consequence_vocab' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_consequence_vocab + CHECK (consequence IS NULL OR consequence IN ('blocking', 'standing', 'reference')); + END IF; + END + $knowledge_items_consequence_vocab$`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_updated ON knowledge_items(updated_at)`, + `CREATE OR REPLACE FUNCTION knowledge_items_version_snapshot() + RETURNS TRIGGER AS $knowledge_item_version$ + BEGIN + IF (OLD.title, OLD.content, OLD.url, OLD.tags, OLD.metadata, OLD.archived, + OLD.description, OLD.reach, OLD.consequence) + IS NOT DISTINCT FROM + (NEW.title, NEW.content, NEW.url, NEW.tags, NEW.metadata, NEW.archived, + NEW.description, NEW.reach, NEW.consequence) THEN + NEW.version := OLD.version; + RETURN NEW; + END IF; + + INSERT INTO knowledge_item_versions + (id, item_id, tenant_id, version, title, content, content_hash, content_bytes, + url, tags, metadata, archived, actor, reason, valid_from, valid_to) + VALUES + (gen_random_uuid()::text, + OLD.id, + to_jsonb(OLD)->>'tenant_id', + OLD.version, + OLD.title, + OLD.content, + encode(sha256(convert_to(coalesce(OLD.content, ''), 'UTF8')), 'hex'), + octet_length(coalesce(OLD.content, '')), + OLD.url, + OLD.tags, + OLD.metadata, + OLD.archived, + NULLIF(current_setting('hasna.actor', true), ''), + NULLIF(current_setting('hasna.reason', true), ''), + OLD.updated_at, + to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')); + + NEW.version := OLD.version + 1; + + IF NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at THEN + NEW.updated_at := to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'); + END IF; + RETURN NEW; + END + $knowledge_item_version$ LANGUAGE plpgsql` ]; export { wrapExecutor, diff --git a/dist/store.d.ts b/dist/store.d.ts index 49ea6fd..e1f94bb 100644 --- a/dist/store.d.ts +++ b/dist/store.d.ts @@ -3,6 +3,30 @@ export interface KnowledgeItem { short_id?: string | null; title: string; content: string; + /** + * One-line statement of what this item is FOR, required on every write from + * 2026-08-05 (owner directive; see knowledge-taxonomy.ts for why it is forced + * rather than encouraged). This is the line the fleet-wide change + * notification shows next to the title, so an agent can decide whether to + * open the item without fetching its body. + * + * OPTIONAL IN THE TYPE, REQUIRED AT THE WRITE PATH — and the difference is + * not an oversight. Rows written before the field existed carry no + * description at all, and `description IS NULL` is precisely the mark of such + * a legacy row. Typing it as required here would make every one of those + * stored rows fail to type-check on read, which is the opposite of the + * intent: they stay readable, and only NEW writes are refused without it. + */ + description?: string | null; + /** + * Governance axes — who this binds, and what happens to a reader who has not + * read it. Closed vocabularies (see REACH_VALUES / CONSEQUENCE_VALUES). + * Deliberately optional and deliberately NOT defaulted onto the row: absence + * means the author did not choose, which a monitor reads as self/reference + * and an audit can count. See knowledge-taxonomy.ts. + */ + reach?: string | null; + consequence?: string | null; url: string | null; tags: string[]; metadata?: Record<string, unknown>; diff --git a/src/cli.ts b/src/cli.ts index a5c9c89..4f8830c 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -6,6 +6,14 @@ */ import { defaultStorePath, ensureStore, importLegacyGlobalStore, itemMatchesSearch, type KnowledgeItem } from './store'; import { resolveItemStore, type ItemStore } from './item-store'; +import { + REACH_VALUES, + CONSEQUENCE_VALUES, + DEFAULT_REACH, + DEFAULT_CONSEQUENCE, + DESCRIPTION_MIN_LENGTH, + DESCRIPTION_MAX_LENGTH, +} from './knowledge-taxonomy'; import { isKnowledgeApiMode, KnowledgeVersionConflictError } from './cloud-store'; import { diffEntries, formatEntryDiff, type EntrySnapshot } from './entry-diff'; import { @@ -59,6 +67,14 @@ interface Flags { store?: string; title?: string; content?: string; + /** + * The required one-line description (owner directive 2026-08-05). Distinct + * from `desc`, which is the sort-descending boolean — see the parser. + */ + description?: string; + /** Governance axes; validated against the closed vocabularies. */ + reach?: string; + consequence?: string; url?: string; tag?: string[]; /** @@ -225,6 +241,15 @@ function parseArgs(argv: string[]): ParseResult { case '--help': case '-h': flags.help = true; break; case '--version': case '-v': flags.version = true; break; case '--desc': flags.desc = true; break; + // `--description` is a DIFFERENT flag from `--desc`, which is the + // sort-descending boolean and predates it. This switch matches tokens + // exactly and does no prefix matching, so the two cannot be confused — + // asserted in tests/knowledge-description-taxonomy.test.ts rather than + // assumed, because a parser that abbreviated would silently turn + // `--description "..."` into a reversed sort with a stray positional. + case '--description': flags.description = argv[i + 1]; i += 1; break; + case '--reach': flags.reach = argv[i + 1]; i += 1; break; + case '--consequence': flags.consequence = argv[i + 1]; i += 1; break; case '--page': case '-p': flags.page = Number(argv[i + 1]); i += 1; break; case '--limit': case '-l': flags.limit = Number(argv[i + 1]); i += 1; break; case '--search': case '-s': flags.search = argv[i + 1]; i += 1; break; @@ -455,12 +480,20 @@ List Options: -l, --limit <n> Items per page (default: 20) -s, --search <text> Filter by id/title/content (case-insensitive substring; use 'knowledge search' for semantic) -t, --tag <tag> Filter by tag; repeatable/comma-separated, item must match ALL - --sort <created|title> Sort field (default: created) - --desc Sort descending + --sort <created|title|updated> Sort field (default: created). 'updated' surfaces EDITS, + not only new items — what a change monitor needs. + --desc Sort descending (NOTE: this is the sort direction, + not --description) --archived Show only archived items --include-archived Include archived items Add/Update Options: + --description <text> REQUIRED on add. One line (24-280 chars) saying what this + item is FOR. It is what the fleet change notification shows + beside the title, so an agent can decide whether to open it. + --reach <fleet|project|seat|self> Who this binds (optional; default self) + --consequence <blocking|standing|reference> What a reader loses by not reading it + (optional; default reference) --url <url> Attach source URL Update Options: @@ -484,13 +517,13 @@ Prune Options: } function printCommandHelp(command: string): void { - if (command === 'add') { console.log('Usage: knowledge add <title> <content> [--url <url>] [-t <tag>]... [--json]\n -t/--tag is repeatable and accepts comma-separated values: -t a -t b == -t "a,b"'); return; } - if (command === 'list' || command === 'ls') { console.log('Usage: knowledge list|ls [--format table|json] [-p <page>] [-l <limit>] [-s <search>] [-t <tag>]... [--sort created|title] [--desc] [--archived] [--include-archived] [--verbose] [--json]\n -s/--search is a CASE-INSENSITIVE LITERAL SUBSTRING filter over id, title and content — not a\n tokenised or semantic search, so a word order that never appears verbatim matches nothing. It\n resolves an item by its slug because the id is included. For meaning-based lookup use `knowledge\n search <query>`, which is a different index and will find items this filter cannot.\n -t/--tag is repeatable and accepts comma-separated values; repeated -t narrows (an item must carry every tag).\n Each value matches an item carrying the whole value OR all of its comma-split names — a union, so\n `-t "a,b,c"` finds items carrying a legacy literal "a,b,c" tag as well as items carrying the three\n names separately. (`untag` differs on purpose: it stops at the whole-value match.)\n Use --json to tell those two shapes apart; the table renders them near-identically.\n Archived items are excluded by default; add --include-archived to sweep both.\n If both --archived and --include-archived are passed, --archived wins (archived items only).'); return; } + if (command === 'add') { console.log(`Usage: knowledge add <title> <content> --description <text> [--reach <r>] [--consequence <c>] [--url <url>] [-t <tag>]... [--json]\n --description is REQUIRED (${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars). It is the one line the fleet-wide change\n notification shows an agent beside the title, so they can decide whether to open the item.\n It is enforced rather than encouraged because the equivalent OPTIONAL field on mementos\n (when_to_use) is populated on zero rows — an optional guidance field lands at 0%.\n Do not confuse --description with --desc, which is the sort-descending flag on list.\n --reach ${REACH_VALUES.join('|')} and --consequence ${CONSEQUENCE_VALUES.join('|')} are optional governance\n axes; they default to the QUIET end (${DEFAULT_REACH}/${DEFAULT_CONSEQUENCE}) so only a deliberate write escalates.\n -t/--tag is repeatable and accepts comma-separated values: -t a -t b == -t "a,b"`); return; } + if (command === 'list' || command === 'ls') { console.log('Usage: knowledge list|ls [--format table|json] [-p <page>] [-l <limit>] [-s <search>] [-t <tag>]... [--sort created|title|updated] [--desc] [--archived] [--include-archived] [--verbose] [--json]\n --sort updated orders by updated_at, so an item REVISED today surfaces above one merely\n CREATED today — this is how a change monitor asks "what moved?", which sorting by created\n can never answer. Pair it with --desc to lead with the most recently edited item. Note that\n --desc is the sort DIRECTION and is a different flag from --description on add/update.\n The description itself is returned by --json but is NOT a column in the table render.\n -s/--search is a CASE-INSENSITIVE LITERAL SUBSTRING filter over id, title and content — not a\n tokenised or semantic search, so a word order that never appears verbatim matches nothing. It\n resolves an item by its slug because the id is included. For meaning-based lookup use `knowledge\n search <query>`, which is a different index and will find items this filter cannot.\n -t/--tag is repeatable and accepts comma-separated values; repeated -t narrows (an item must carry every tag).\n Each value matches an item carrying the whole value OR all of its comma-split names — a union, so\n `-t "a,b,c"` finds items carrying a legacy literal "a,b,c" tag as well as items carrying the three\n names separately. (`untag` differs on purpose: it stops at the whole-value match.)\n Use --json to tell those two shapes apart; the table renders them near-identically.\n Archived items are excluded by default; add --include-archived to sweep both.\n If both --archived and --include-archived are passed, --archived wins (archived items only).'); return; } if (command === 'get') { console.log('Usage: knowledge get --id <id> [--json]'); return; } if (command === 'update' || command === 'edit') { console.log('Usage: knowledge update|edit --id <id> [--title <title>] [--content <content>] [--url <url>] [-t <tag>]... [--if-version <n>] [--json]\n -t/--tag is repeatable and accepts comma-separated values; tags are added, never replaced.\n With -t the output reports how many tags were actually added, so 0 added is not read as 3.\n --if-version <n> is an explicit optimistic-concurrency guard: pass the "version" a prior\n `knowledge get` returned, and the write is REJECTED (exit 2, nothing written) if the stored\n item has moved to a different version since. Without it, the version used is whatever THIS\n command itself just re-read, which only guards the instant inside one invocation — it cannot\n catch a decision made from an earlier, separate `get`. On conflict, stderr and --json both\n name the expected and the actual (current) version; there is no automatic retry.'); return; } if (command === 'archive') { console.log('Usage: knowledge archive --id <id> [--json]'); return; } if (command === 'restore' || command === 'unarchive') { console.log('Usage: knowledge restore|unarchive --id <id> [--json]'); return; } - if (command === 'upsert') { console.log('Usage: knowledge upsert [title] [content] [--id <id>] [--title <title>] [--content <content>] [--url <url>] [-t <tag>]... [--json]\n -t/--tag is repeatable and accepts comma-separated values; tags are added, never replaced.\n With -t the output reports how many tags were actually added, on both the create and update paths.'); return; } + if (command === 'upsert') { console.log(`Usage: knowledge upsert [title] [content] [--id <id>] [--title <title>] [--content <content>] [--description <text>] [--url <url>] [-t <tag>]... [--json]\n --description (${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars) is REQUIRED when this command CREATES an item, and optional when it\n UPDATES one — an ordinary edit never has to restate it. That asymmetry is why it is not simply\n listed as required: upserting an existing id without it succeeds and leaves the stored value alone,\n while upserting an id that does not exist yet is a create and is refused without it.\n -t/--tag is repeatable and accepts comma-separated values; tags are added, never replaced.\n With -t the output reports how many tags were actually added, on both the create and update paths.`); return; } if (command === 'untag') { console.log('Usage: knowledge untag --id <id> -t <tag>... [--json]\n -t/--tag is repeatable and accepts comma-separated values.\n Each value is matched whole first, and only split on commas if no stored tag equals it,\n so a legacy literal "a,b,c" tag can still be removed.\n Removing nothing exits 1; unmatched names are reported in not_found.'); return; } if (command === 'versions') { console.log('Usage: knowledge versions --id <id> [-l <limit>] [--json]\n Lists the retained prior versions of an item, newest first, with the version the item is at now.\n An item that exists but was never edited prints an EMPTY history, which is not the same answer as\n "no such item" (that exits 1) or "this store keeps no history" (also exits 1, naming the store).\n Entry history lives in the Postgres-backed store; the local JSON store has no version line.'); return; } if (command === 'diff') { console.log('Usage: knowledge diff --id <id> [--rev <n>] [--from <a> --to <b>] [--json]\n Default: the latest retained version vs the item as it stands now.\n --rev <n>: version n vs version n-1. --from <a> --to <b>: two explicit versions, where\n either side may be "current" to mean the live item.\n --rev is spelled out because -v is the global --version flag.\n Reports changed fields (title/url/tags/metadata/archived) as well as a line diff of the body,\n so an edit that moved only the tags is not rendered as "no changes".'); return; } @@ -847,13 +880,28 @@ function requireId(flags: Flags): asserts flags is Flags & { id: string } { if (!flags.id) throw new Error('Missing required --id. Example: knowledge get --id <id>'); } +/** + * `updated` exists so a caller can detect an EDIT, not only a creation. + * + * Sorting by `created` can never surface an item that was revised today but + * written last month, which made "what changed?" unanswerable from this CLI — + * the gap that blocked the fleet-wide change monitor (owner directive + * 2026-08-05). `updated_at` was already on every row and every transport; only + * the validator refused the key. + */ +const SORT_KEYS = ['created', 'title', 'updated'] as const; +type SortKey = (typeof SORT_KEYS)[number]; + function sortItems(items: KnowledgeItem[], flags: Flags): { sorted: KnowledgeItem[]; sort: string; direction: string } { - const sort = flags.sort ?? 'created'; - if (sort !== 'created' && sort !== 'title') { - throw new Error("Invalid --sort value. Use 'created' or 'title'."); + const sort = (flags.sort ?? 'created') as SortKey; + if (!SORT_KEYS.includes(sort)) { + throw new Error(`Invalid --sort value. Use ${SORT_KEYS.map((key) => `'${key}'`).join(', ')}.`); } const sorted = [...items].sort((a, b) => { if (sort === 'title') return a.title.localeCompare(b.title); + // Fall back to created_at when a row carries no updated_at: legacy rows + // exist, and `undefined.localeCompare` would throw rather than sort. + if (sort === 'updated') return (a.updated_at ?? a.created_at).localeCompare(b.updated_at ?? b.created_at); return a.created_at.localeCompare(b.created_at); }); if (flags.desc) sorted.reverse(); @@ -1882,8 +1930,19 @@ async function run(argv: string[]): Promise<void> { if (command === 'add') { const title = positional[1]; const content = positional[2]; - if (!title || !content) throw new Error('Usage: knowledge add <title> <content>'); - const item = await itemStore.create({ title, content, url: flags.url ?? null, tags: flags.tag ?? [] }); + if (!title || !content) throw new Error('Usage: knowledge add <title> <content> --description <text>'); + // The Store re-validates this (and Postgres re-validates below that); the + // call here is not redundant belt-and-braces but the layer that can name + // the FLAG, because only the CLI knows the caller typed a command line. + const item = await itemStore.create({ + title, + content, + description: flags.description as string, + ...(flags.reach ? { reach: flags.reach } : {}), + ...(flags.consequence ? { consequence: flags.consequence } : {}), + url: flags.url ?? null, + tags: flags.tag ?? [], + }); log('info', 'Item added', { id: item.id, title: item.title, tags: item.tags?.length ?? 0, transport: itemStore.kind }); output({ ok: true, item, message: `Added ${item.id}` }, flags.json, flags); return; @@ -2123,6 +2182,9 @@ async function run(argv: string[]): Promise<void> { const patch: Record<string, unknown> = {}; if (flags.title !== undefined) patch.title = flags.title; if (flags.content !== undefined) patch.content = flags.content; + if (flags.description !== undefined) patch.description = flags.description; + if (flags.reach !== undefined) patch.reach = flags.reach; + if (flags.consequence !== undefined) patch.consequence = flags.consequence; if (flags.url !== undefined) patch.url = flags.url; let added: string[] | undefined; if (flags.tag !== undefined) { @@ -2251,6 +2313,9 @@ async function run(argv: string[]): Promise<void> { id: flags.id, title, content, + description: flags.description as string, + ...(flags.reach ? { reach: flags.reach } : {}), + ...(flags.consequence ? { consequence: flags.consequence } : {}), url: flags.url ?? null, tags: flags.tag ?? [], }); @@ -2260,6 +2325,9 @@ async function run(argv: string[]): Promise<void> { const patch: Record<string, unknown> = {}; if (title !== undefined) patch.title = title; if (content !== undefined) patch.content = content; + if (flags.description !== undefined) patch.description = flags.description; + if (flags.reach !== undefined) patch.reach = flags.reach; + if (flags.consequence !== undefined) patch.consequence = flags.consequence; if (flags.url !== undefined) patch.url = flags.url; let added: string[] | undefined; if (flags.tag !== undefined) { diff --git a/src/cloud-store.ts b/src/cloud-store.ts index 199631d..dcfb5d9 100644 --- a/src/cloud-store.ts +++ b/src/cloud-store.ts @@ -69,6 +69,10 @@ export interface KnowledgeCloudCreateInput { id?: string; title: string; content: string; + /** Required by the server and by the CHECK constraint; see knowledge-taxonomy.ts. */ + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; @@ -77,6 +81,9 @@ export interface KnowledgeCloudCreateInput { export interface KnowledgeCloudPatch { title?: string; content?: string; + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; @@ -170,10 +177,16 @@ function wrap(client: HasnaStorageClient): KnowledgeCloudStore { }, async create(input: KnowledgeCloudCreateInput) { + // This body is an explicit WHITELIST, so a field absent from it is + // silently dropped rather than rejected — which is why description/reach/ + // consequence have to be named here and not merely added to the type. return client.create<KnowledgeItem>(KNOWLEDGE_RESOURCE, { ...(input.id ? { id: input.id } : {}), title: input.title, content: input.content, + ...(input.description !== undefined ? { description: input.description } : {}), + ...(input.reach ? { reach: input.reach } : {}), + ...(input.consequence ? { consequence: input.consequence } : {}), url: input.url ?? null, tags: input.tags ?? [], ...(input.metadata ? { metadata: input.metadata } : {}), diff --git a/src/db/pg-migrations.ts b/src/db/pg-migrations.ts index 71d9884..2ccd86c 100644 --- a/src/db/pg-migrations.ts +++ b/src/db/pg-migrations.ts @@ -582,4 +582,146 @@ export const PG_MIGRATIONS: string[] = [ $knowledge_item_versions_guard$`, `ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only`, + + // --- Description + governance taxonomy (owner directive 2026-08-05) -------- + // Every agent is to be notified when knowledge is created or updated, with + // the TITLE and a BRIEF DESCRIPTION. The store held no description of any + // kind — measured on the live row shape, whose keys were exactly: archived, + // content, created_at, id, metadata, short_id, tags, tenant_id, title, + // updated_at, url, version. So the notification had nothing to carry. + // + // WHY A CHECK CONSTRAINT AND NOT ONLY APPLICATION CODE — the same argument + // this file already makes for the versioning trigger, and it applies with + // more force here. `ItemCreateInput` (item-store.ts) and `NoteInput` + // (serve.ts) are PLAIN TYPESCRIPT INTERFACES: erased at build time, checking + // nothing at runtime. Both stores now run an explicit guard, but the serve + // process reaches these rows through more than one path — the upsert branch, + // sync/outbox replay, a backfill script, and a human at psql — and next month + // there will be another. The constraint is the only layer below all of them. + // + // NOT VALID IS LOAD-BEARING, NOT A HEDGE. Added plain, this ALTER scans the + // existing rows, finds legacy ones with no description, and aborts the + // migration — every deployment would fail. NOT VALID enforces on every INSERT + // and UPDATE from this moment while never checking what is already stored, so + // nothing already written becomes unreadable and no backfill is required. + // `description IS NULL` is therefore the mark of a pre-directive row, which + // is queryable without a second column or a status enum. + // + // A CONSEQUENCE WORTH STATING RATHER THAN DISCOVERING: a NOT VALID check + // still fires when an EXISTING violating row is UPDATED. Editing a legacy + // item therefore forces a description to be supplied at that moment. That is + // deliberate — touch it, describe it — and it is why the CLI carries its own + // guard with a message naming the flag, so this surfaces as an instruction + // rather than as a raw constraint violation. + // + // Once the null set is small, `ALTER TABLE knowledge_items VALIDATE + // CONSTRAINT knowledge_items_description_present` closes it under a SHARE + // UPDATE EXCLUSIVE lock (it does not block reads or writes). + // + // APPEND-ONLY: ids derive from array index, so these stay at the end. + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS description TEXT`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS reach TEXT`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS consequence TEXT`, + + // Bounds match DESCRIPTION_MIN_LENGTH / DESCRIPTION_MAX_LENGTH in + // src/knowledge-taxonomy.ts. A database constraint cannot import TypeScript, + // so the two are restated; tests/knowledge-description-taxonomy.test.ts + // asserts they stay in step rather than trusting that nobody edits one alone. + // btrim so that a description of spaces cannot satisfy the floor. + `DO $knowledge_items_description_present$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_description_present' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_description_present + CHECK (description IS NOT NULL AND char_length(btrim(description)) BETWEEN 24 AND 280) + NOT VALID; + END IF; + END + $knowledge_items_description_present$`, + + // The governance axes are OPTIONAL — `IS NULL OR` is deliberate. Absence + // means the author did not choose, which a monitor reads as the quiet default + // (self / reference) and an audit can count. Forcing them would drive them to + // 100% populated and worthless as a signal, which is exactly what happened to + // the sibling package's `importance`/`category`/`scope`: 400 of 400 rows + // populated, carrying almost no information, because a default did the work. + `DO $knowledge_items_reach_vocab$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_reach_vocab' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_reach_vocab + CHECK (reach IS NULL OR reach IN ('fleet', 'project', 'seat', 'self')); + END IF; + END + $knowledge_items_reach_vocab$`, + + `DO $knowledge_items_consequence_vocab$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_constraint WHERE conname = 'knowledge_items_consequence_vocab' + ) THEN + ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_consequence_vocab + CHECK (consequence IS NULL OR consequence IN ('blocking', 'standing', 'reference')); + END IF; + END + $knowledge_items_consequence_vocab$`, + + // Sorting by updated_at is how the change monitor detects an EDIT rather than + // only a creation, and it is the one query that surface runs. + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_updated ON knowledge_items(updated_at)`, + + // THE NO-OP GUARD MUST LEARN THE NEW COLUMNS, or a description-only edit + // takes no version and no counter bump — invisible to the very + // update-detection surface this migration exists to enable, and unrecoverable + // because no snapshot of the prior description would be retained either. + // Redefining the function is idempotent and, being a CREATE OR REPLACE at the + // end of the array, does not disturb any earlier migration id. The trigger + // itself is unchanged and keeps pointing at this function; everything else in + // the body is byte-identical to the definition above. + `CREATE OR REPLACE FUNCTION knowledge_items_version_snapshot() + RETURNS TRIGGER AS $knowledge_item_version$ + BEGIN + IF (OLD.title, OLD.content, OLD.url, OLD.tags, OLD.metadata, OLD.archived, + OLD.description, OLD.reach, OLD.consequence) + IS NOT DISTINCT FROM + (NEW.title, NEW.content, NEW.url, NEW.tags, NEW.metadata, NEW.archived, + NEW.description, NEW.reach, NEW.consequence) THEN + NEW.version := OLD.version; + RETURN NEW; + END IF; + + INSERT INTO knowledge_item_versions + (id, item_id, tenant_id, version, title, content, content_hash, content_bytes, + url, tags, metadata, archived, actor, reason, valid_from, valid_to) + VALUES + (gen_random_uuid()::text, + OLD.id, + to_jsonb(OLD)->>'tenant_id', + OLD.version, + OLD.title, + OLD.content, + encode(sha256(convert_to(coalesce(OLD.content, ''), 'UTF8')), 'hex'), + octet_length(coalesce(OLD.content, '')), + OLD.url, + OLD.tags, + OLD.metadata, + OLD.archived, + NULLIF(current_setting('hasna.actor', true), ''), + NULLIF(current_setting('hasna.reason', true), ''), + OLD.updated_at, + to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')); + + NEW.version := OLD.version + 1; + + IF NEW.updated_at IS NOT DISTINCT FROM OLD.updated_at THEN + NEW.updated_at := to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'); + END IF; + RETURN NEW; + END + $knowledge_item_version$ LANGUAGE plpgsql`, ]; diff --git a/src/item-store.ts b/src/item-store.ts index 9e96ffa..398c194 100644 --- a/src/item-store.ts +++ b/src/item-store.ts @@ -38,6 +38,7 @@ import { fetchAllCloudItems, type KnowledgeCloudStore, } from './cloud-store'; +import { validateDescription, normalizeTaxonomyInput } from './knowledge-taxonomy'; export { KnowledgeVersionConflictError }; @@ -48,6 +49,17 @@ export interface ItemCreateInput { id?: string; title: string; content: string; + /** + * REQUIRED at runtime by both transports — see `assertCreatable` below. It is + * typed as required here so the compiler helps callers inside this package, + * but the type is NOT the enforcement: this is a plain TypeScript interface, + * erased at build time, and the MCP server (`mcp.js`) and any SDK consumer + * reach `create` as untyped JavaScript. The runtime check is the floor. + */ + description: string; + /** Optional governance axes; validated against a closed vocabulary. */ + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; @@ -56,6 +68,14 @@ export interface ItemCreateInput { export interface ItemPatch { title?: string; content?: string; + /** + * When present it must be VALID — a caller may not blank a description back + * out once set. When absent the stored value is left untouched, so ordinary + * edits (retag, retitle, archive) never have to restate it. + */ + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; /** Full replacement tag set (callers compute add/remove before patching). */ tags?: string[]; @@ -63,6 +83,39 @@ export interface ItemPatch { archived?: boolean; } +/** + * The single runtime gate every create passes through, on BOTH transports. + * + * Placed here rather than in the CLI because the CLI is one of several callers: + * the MCP server, the SDK facade, and `ingest`/import paths all reach the Store + * directly. This is the same argument db/pg-migrations.ts makes for putting the + * version bump in a trigger — the layer that sits below every writer is the + * only one that cannot be bypassed by code nobody has written yet. For the + * cloud transport the true floor is one level lower still (a Postgres CHECK), + * because the serve process has write paths that never call this function. + */ +function assertCreatable(input: ItemCreateInput): { + description: string; + reach?: string; + consequence?: string; +} { + const description = validateDescription((input as { description?: unknown }).description); + const axes = normalizeTaxonomyInput(input); + return { description, ...axes }; +} + +/** The same gate for a patch: validate what is present, ignore what is absent. */ +function assertPatchable(patch: ItemPatch): { + description?: string; + reach?: string; + consequence?: string; +} { + const result: { description?: string; reach?: string; consequence?: string } = {}; + if (patch.description !== undefined) result.description = validateDescription(patch.description); + Object.assign(result, normalizeTaxonomyInput(patch)); + return result; +} + export interface ItemUpdateOptions { /** * Optimistic concurrency guard — the version the caller last read. Honoured @@ -172,6 +225,9 @@ class LocalItemStore implements ItemStore { } async create(input: ItemCreateInput): Promise<KnowledgeItem> { + // Validate BEFORE taking the file lock: a refused write should not hold the + // lock, and nothing should be written when the input is bad. + const checked = assertCreatable(input); return withLock(this.storePath, () => { const db = loadStore(this.storePath); const now = new Date().toISOString(); @@ -181,6 +237,12 @@ class LocalItemStore implements ItemStore { short_id: makeShortId(id), title: input.title, content: input.content, + description: checked.description, + // Absent stays absent — the defaults are a READ-side notion, so that + // "the author chose nothing" remains distinguishable from "the author + // chose self/reference". See knowledge-taxonomy.ts. + ...(checked.reach ? { reach: checked.reach } : {}), + ...(checked.consequence ? { consequence: checked.consequence } : {}), url: input.url ?? null, tags: input.tags ?? [], metadata: input.metadata ?? {}, @@ -200,6 +262,9 @@ class LocalItemStore implements ItemStore { } async update(idOrShort: string, patch: ItemPatch, options: ItemUpdateOptions = {}): Promise<KnowledgeItem | null> { + // Validate before the lock, and before any mutation, so a refused patch + // leaves the stored row exactly as it was. + const checked = assertPatchable(patch); return withLock(this.storePath, () => { const db = loadStore(this.storePath); const idx = db.items.findIndex((item) => matchesId(item, idOrShort)); @@ -217,6 +282,9 @@ class LocalItemStore implements ItemStore { } if (patch.title !== undefined) item.title = patch.title; if (patch.content !== undefined) item.content = patch.content; + if (checked.description !== undefined) item.description = checked.description; + if (checked.reach !== undefined) item.reach = checked.reach; + if (checked.consequence !== undefined) item.consequence = checked.consequence; if (patch.url !== undefined) item.url = patch.url; if (patch.tags !== undefined) item.tags = patch.tags; if (patch.metadata !== undefined) item.metadata = patch.metadata; @@ -285,10 +353,18 @@ class ApiItemStore implements ItemStore { // on it, so `upsert --id <stable>` re-finds and updates the same row instead // of creating a duplicate — identical to the local store. When absent, the // server assigns the id. + // Same gate as the local transport, so the two stores cannot disagree about + // what is writable. The server re-checks independently (and Postgres checks + // below that) — this one exists so the caller gets a useful message and a + // clean refusal without a round trip. + const checked = assertCreatable(input); return this.cloud.create({ ...(input.id ? { id: input.id } : {}), title: input.title, content: input.content, + description: checked.description, + ...(checked.reach ? { reach: checked.reach } : {}), + ...(checked.consequence ? { consequence: checked.consequence } : {}), url: input.url ?? null, tags: input.tags ?? [], ...(input.metadata ? { metadata: input.metadata } : {}), @@ -296,7 +372,12 @@ class ApiItemStore implements ItemStore { } async update(idOrShort: string, patch: ItemPatch, options: ItemUpdateOptions = {}): Promise<KnowledgeItem | null> { - return this.cloud.update(idOrShort, patch, { expectedVersion: options.expectedVersion }); + const checked = assertPatchable(patch); + return this.cloud.update( + idOrShort, + { ...patch, ...checked }, + { expectedVersion: options.expectedVersion }, + ); } async delete(idOrShort: string): Promise<boolean> { diff --git a/src/knowledge-taxonomy.ts b/src/knowledge-taxonomy.ts new file mode 100644 index 0000000..58c5cda --- /dev/null +++ b/src/knowledge-taxonomy.ts @@ -0,0 +1,188 @@ +/** + * @hasna/knowledge — the description field and the governance taxonomy. + * Copyright 2026 Hasna Inc. + * Licensed under the Apache License, Version 2.0 + * + * ONE definition of the vocabulary, imported by every layer that validates it: + * the CLI flag parser, the item Store (local transport), the serve handler + * (cloud transport), and the tests. The Postgres CHECK constraints in + * db/pg-migrations.ts restate these values in SQL because a database constraint + * cannot import TypeScript — a test in tests/knowledge-description-taxonomy.test.ts + * asserts the two stay in step, so the duplication cannot drift silently. + * + * WHY A DESCRIPTION IS REQUIRED AND THE TAXONOMY AXES ARE NOT + * ---------------------------------------------------------- + * The description is REQUIRED at write time. Owner directive 2026-08-05 asks + * that every agent be notified of new/updated knowledge with a title and a + * brief description; a notification cannot carry a field the store does not + * hold. It is required rather than encouraged because the sibling package + * already ran the experiment: mementos' `when_to_use` is exactly this kind of + * optional human-guidance field and is populated on ZERO rows, while its + * optional `summary` sits at 6.4% and is falling. An optional guidance field + * lands at zero — measured, not predicted. + * + * `reach` and `consequence` are OPTIONAL, and that asymmetry is deliberate + * rather than an inconsistency. Their defaults are the values a monitor + * DE-PRIORITISES, so a lazy write lands quiet and searchable and only a + * deliberate write escalates. Requiring them would make them 100% populated and + * worthless as a signal — which is exactly what happened to mementos' + * `importance`, `category` and `scope`: all three are populated on 400 of 400 + * sampled rows and carry almost no information, because a default did the work. + * On mementos' own data the discriminator is deliberateness: rows left at the + * default importance carry a summary 0.1% of the time, rows at importance 10 + * carry one 83.6% of the time. Coverage is not the measurement; distribution is. + * + * So: the field the notification cannot work without is forced, and the fields + * whose value is their selectivity are left free and measured. + */ + +/** Who a knowledge item binds. Ordered widest to narrowest. */ +export const REACH_VALUES = ['fleet', 'project', 'seat', 'self'] as const; +export type KnowledgeReach = (typeof REACH_VALUES)[number]; + +/** What happens to a reader who has not read it. Ordered most to least urgent. */ +export const CONSEQUENCE_VALUES = ['blocking', 'standing', 'reference'] as const; +export type KnowledgeConsequence = (typeof CONSEQUENCE_VALUES)[number]; + +/** + * The value a monitor treats an UNMARKED item as. Deliberately not written to + * the row on create — see the header. An absent axis and an axis explicitly set + * to the default mean the same thing to a reader, and keeping absence absent is + * what lets anyone measure how often an author actually chose. + */ +export const DEFAULT_REACH: KnowledgeReach = 'self'; +export const DEFAULT_CONSEQUENCE: KnowledgeConsequence = 'reference'; + +/** + * Length bounds. The floor exists because "notes", "fix", and "wip" are + * descriptions that satisfy a presence check and tell a reader nothing — a + * required field with no floor degrades into a required keystroke. The ceiling + * keeps the field renderable on one line of a notification, which is the whole + * reason it exists rather than being read out of `content`. + */ +export const DESCRIPTION_MIN_LENGTH = 24; +export const DESCRIPTION_MAX_LENGTH = 280; + +/** + * Raised when a write carries no usable description. + * + * The message names the flag, because the agent that hits this is mid-write and + * needs the remedy rather than a diagnosis — a guard whose message does not say + * what to do produces an agent that debugs the store. + */ +export class KnowledgeDescriptionRequiredError extends Error { + readonly code = 'description_required'; + constructor(reason: string) { + super( + `${reason} Every knowledge item must carry a one-line description: it is what the ` + + 'fleet-wide change notification shows an agent who has not opened the item, alongside the title. ' + + `Supply it with --description "<${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars saying what this is for>". ` + + 'It is required rather than optional because the equivalent optional field on mementos ' + + '(when_to_use) is populated on zero rows.', + ); + this.name = 'KnowledgeDescriptionRequiredError'; + } +} + +/** Raised when a taxonomy axis is given a value outside its closed vocabulary. */ +export class KnowledgeTaxonomyValueError extends Error { + readonly code = 'taxonomy_value_invalid'; + constructor(field: string, received: unknown, allowed: readonly string[]) { + super( + `Invalid --${field} value ${JSON.stringify(received)}. ` + + `Use one of: ${allowed.join(', ')}.`, + ); + this.name = 'KnowledgeTaxonomyValueError'; + } +} + +/** + * Validate and normalise a description, returning the trimmed value. + * + * Throws {@link KnowledgeDescriptionRequiredError} when absent, blank, or out of + * bounds. Trimming happens BEFORE the length check so that padding cannot buy a + * caller past the floor. + */ +export function validateDescription(raw: unknown): string { + if (raw === undefined || raw === null) { + throw new KnowledgeDescriptionRequiredError('No description was supplied.'); + } + if (typeof raw !== 'string') { + throw new KnowledgeDescriptionRequiredError( + `The description must be a string, received ${typeof raw}.`, + ); + } + const trimmed = raw.trim(); + if (trimmed.length === 0) { + throw new KnowledgeDescriptionRequiredError('The description was empty or whitespace only.'); + } + if (trimmed.length < DESCRIPTION_MIN_LENGTH) { + throw new KnowledgeDescriptionRequiredError( + `The description is ${trimmed.length} characters; the minimum is ${DESCRIPTION_MIN_LENGTH}.`, + ); + } + if (trimmed.length > DESCRIPTION_MAX_LENGTH) { + throw new KnowledgeDescriptionRequiredError( + `The description is ${trimmed.length} characters; the maximum is ${DESCRIPTION_MAX_LENGTH}.`, + ); + } + return trimmed; +} + +function normalizeAxis<T extends string>( + field: string, + raw: unknown, + allowed: readonly T[], +): T { + if (typeof raw !== 'string') { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + const value = raw.trim().toLowerCase(); + if (!(allowed as readonly string[]).includes(value)) { + throw new KnowledgeTaxonomyValueError(field, raw, allowed); + } + return value as T; +} + +/** Validate a `reach` value against the closed vocabulary. */ +export function normalizeReach(raw: unknown): KnowledgeReach { + return normalizeAxis('reach', raw, REACH_VALUES); +} + +/** Validate a `consequence` value against the closed vocabulary. */ +export function normalizeConsequence(raw: unknown): KnowledgeConsequence { + return normalizeAxis('consequence', raw, CONSEQUENCE_VALUES); +} + +/** + * Normalise the optional axes on a write. Absent stays absent — see the header + * for why this does not stamp the defaults. + */ +export function normalizeTaxonomyInput(input: { + reach?: unknown; + consequence?: unknown; +}): { reach?: KnowledgeReach; consequence?: KnowledgeConsequence } { + const result: { reach?: KnowledgeReach; consequence?: KnowledgeConsequence } = {}; + if (input.reach !== undefined && input.reach !== null) result.reach = normalizeReach(input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeConsequence(input.consequence); + } + return result; +} + +/** + * The effective axes a reader/monitor should apply to an item, filling absence + * with the quiet defaults. Read-side only — never written back to the row. + */ +export function effectiveTaxonomy(item: { + reach?: string | null; + consequence?: string | null; +}): { reach: KnowledgeReach; consequence: KnowledgeConsequence } { + const reach = REACH_VALUES.includes(item.reach as KnowledgeReach) + ? (item.reach as KnowledgeReach) + : DEFAULT_REACH; + const consequence = CONSEQUENCE_VALUES.includes(item.consequence as KnowledgeConsequence) + ? (item.consequence as KnowledgeConsequence) + : DEFAULT_CONSEQUENCE; + return { reach, consequence }; +} diff --git a/src/mcp.js b/src/mcp.js index 91ad70c..aef40ae 100644 --- a/src/mcp.js +++ b/src/mcp.js @@ -12,10 +12,42 @@ import { assertKnowledgeModeSelected } from './knowledge-mode.ts'; import { parseSourceRef } from './source-ref.ts'; import { createKnowledgeService } from './service.ts'; import { getStorageStatus as getDatabaseStorageStatus } from './storage.ts'; +import { + REACH_VALUES, + CONSEQUENCE_VALUES, + DESCRIPTION_MIN_LENGTH, + DESCRIPTION_MAX_LENGTH, +} from './knowledge-taxonomy.ts'; const storePathField = z.string().optional().describe('Path to the JSON store file'); const scopeField = z.enum(['local', 'global', 'project']).optional().describe('Workspace scope'); +/** + * The required description, and the two optional governance axes. + * + * Vocabularies and bounds are IMPORTED rather than restated, so the MCP schema + * cannot drift from the store's runtime guard or the Postgres constraint. A + * second hand-written copy of `['fleet','project','seat','self']` here would be + * a third definition of the same list, and the one most likely to rot. + */ +const descriptionField = z + .string() + .min(DESCRIPTION_MIN_LENGTH) + .max(DESCRIPTION_MAX_LENGTH) + .describe( + `REQUIRED. One line (${DESCRIPTION_MIN_LENGTH}-${DESCRIPTION_MAX_LENGTH} chars) saying what this item is FOR. ` + + 'It is shown beside the title in the fleet-wide change notification, so another agent can ' + + 'decide whether to open the item without fetching its body.', + ); +const reachField = z + .enum(REACH_VALUES) + .optional() + .describe('Who this binds. Optional; unmarked is treated as "self" by readers.'); +const consequenceField = z + .enum(CONSEQUENCE_VALUES) + .optional() + .describe('What a reader loses by not reading it. Optional; unmarked is treated as "reference".'); + function jsonText(data) { return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] }; } @@ -1525,14 +1557,31 @@ export function buildServer() { registerTool(server, 'ok_add', 'Add a knowledge item', 'Add a new item to the knowledge store', { title: z.string().describe('Item title'), content: z.string().describe('Item content/body'), + // REQUIRED, and declared required in the schema so the model is told up + // front rather than discovering it through a rejected call. This file is + // plain JavaScript, so the TypeScript interface on ItemCreateInput never + // constrained it — the store's runtime guard is what actually enforces it, + // and this schema is how the requirement becomes visible to a caller. + description: descriptionField, + reach: reachField, + consequence: consequenceField, tags: z.array(z.string()).optional().describe('Tags to attach'), metadata: z.record(z.string(), z.unknown()).optional().describe('Metadata key-value pairs'), url: z.string().optional().describe('Source URL or URI'), store_path: storePathField, scope: scopeField, - }, async ({ title, content, tags, metadata, url, store_path, scope }) => { + }, async ({ title, content, description, reach, consequence, tags, metadata, url, store_path, scope }) => { const store = itemStoreFor(store_path, scope); - const item = await store.create({ title, content, url: url ?? null, tags: tags ?? [], metadata: metadata ?? {} }); + const item = await store.create({ + title, + content, + description, + ...(reach ? { reach } : {}), + ...(consequence ? { consequence } : {}), + url: url ?? null, + tags: tags ?? [], + metadata: metadata ?? {}, + }); return jsonText({ ok: true, item, message: `Added ${item.id}` }); }); @@ -1654,21 +1703,40 @@ export function buildServer() { id: z.string(), title: z.string().optional(), content: z.string().optional(), + // Optional on this tool because upsert also UPDATES, where an unchanged + // description must not have to be restated. It is required on the CREATE + // branch only, which the handler enforces below with a message naming the + // field — the same rule, applied where it actually applies. + description: descriptionField.optional(), + reach: reachField, + consequence: consequenceField, tags: z.array(z.string()).optional(), metadata: z.record(z.string(), z.unknown()).optional(), store_path: storePathField, scope: scopeField, - }, async ({ id, title, content, tags, metadata, store_path, scope }) => { + }, async ({ id, title, content, description, reach, consequence, tags, metadata, store_path, scope }) => { const store = itemStoreFor(store_path, scope); const existing = await store.get(id); if (!existing) { if (!title || !content) return errorText('New item requires both title and content.'); - const created = await store.create({ id, title, content, tags: tags ?? [], metadata: metadata ?? {} }); + const created = await store.create({ + id, + title, + content, + description, + ...(reach ? { reach } : {}), + ...(consequence ? { consequence } : {}), + tags: tags ?? [], + metadata: metadata ?? {}, + }); return jsonText({ ok: true, item: created }); } const patch = {}; if (title !== undefined) patch.title = title; if (content !== undefined) patch.content = content; + if (description !== undefined) patch.description = description; + if (reach !== undefined) patch.reach = reach; + if (consequence !== undefined) patch.consequence = consequence; if (tags) patch.tags = [...new Set([...(existing.tags ?? []), ...tags])]; if (metadata) patch.metadata = { ...(existing.metadata ?? {}), ...metadata }; const item = await store.update(existing.id, patch); @@ -1871,14 +1939,35 @@ export function buildServer() { let added = 0; for (const item of imported.items) { if (item.id && existingIds.has(item.id)) continue; - const created = await store.create({ - id: item.id, - title: item.title, - content: item.content, - url: item.url ?? null, - tags: item.tags ?? [], - metadata: item.metadata ?? {}, - }); + // The source item's own description is carried through. When the export + // predates the field, this create is REFUSED, naming the item — and that + // is deliberate rather than an oversight. Import creates NEW rows, and on + // the Postgres store the CHECK constraint rejects a null description on + // INSERT no matter what this code does, so permitting it here would only + // move the failure to a raw constraint violation with no item id in it. + // Refusing here keeps the two transports consistent and says which item + // needs a description. It does mean a pre-2026-08-05 export cannot be + // imported unedited; that is a real cost, recorded rather than hidden. + let created; + try { + created = await store.create({ + id: item.id, + title: item.title, + content: item.content, + description: item.description, + ...(item.reach ? { reach: item.reach } : {}), + ...(item.consequence ? { consequence: item.consequence } : {}), + url: item.url ?? null, + tags: item.tags ?? [], + metadata: item.metadata ?? {}, + }); + } catch (error) { + return errorText( + `Import stopped at item ${item.id ?? '(no id)'} (${item.title ?? 'untitled'}): ` + + `${error instanceof Error ? error.message : String(error)} ` + + `${added} item(s) were imported before this one.`, + ); + } existingIds.add(created.id); added += 1; } @@ -1890,6 +1979,9 @@ export function buildServer() { id: z.string().optional(), title: z.string(), content: z.string(), + description: descriptionField, + reach: reachField, + consequence: consequenceField, tags: z.array(z.string()).optional(), metadata: z.record(z.string(), z.unknown()).optional(), created_at: z.string().optional(), @@ -1914,6 +2006,9 @@ export function buildServer() { id: entry.id, title: entry.title, content: entry.content, + description: entry.description, + ...(entry.reach ? { reach: entry.reach } : {}), + ...(entry.consequence ? { consequence: entry.consequence } : {}), tags: entry.tags ?? [], metadata: entry.metadata ?? {}, }); diff --git a/src/serve.ts b/src/serve.ts index 168eb46..4692ad6 100644 --- a/src/serve.ts +++ b/src/serve.ts @@ -24,6 +24,7 @@ import { readFileSync } from 'node:fs'; import { verifyApiKey, ApiKeyStore, type ApiKeyVerifier, type ApiKeyPrincipal } from '@hasna/contracts/auth'; import { createKnowledgeCloudClient } from './db/remote-storage.js'; import { knowledgeRegistryContract } from './registry-contract.js'; +import { validateDescription, normalizeReach, normalizeConsequence } from './knowledge-taxonomy.js'; import { makeId, makeShortId, @@ -95,6 +96,14 @@ export interface NoteInput { id?: string; title: string; content?: string; + /** + * REQUIRED on create — validated in `create()` below and, underneath that, by + * the `knowledge_items_description_present` CHECK constraint. This interface + * is erased at build time and enforces nothing on its own. + */ + description?: string; + reach?: string | null; + consequence?: string | null; url?: string | null; tags?: string[]; metadata?: Record<string, unknown>; @@ -150,6 +159,38 @@ export class VersionConflictError extends Error { export type NoteVersion = KnowledgeItemVersion; export type NoteVersionList = KnowledgeItemVersionList; +/** + * Server-side description validation. Reuses the shared validator so the rule + * cannot drift between the CLI and the API, and converts its error into a 400 + * — a caller that omits the field has made a bad request, not caused a server + * fault, and a raw constraint violation surfacing as a 500 would send them to + * debug the database instead of their payload. + */ +function validateNoteDescription(raw: unknown): string { + try { + return validateDescription(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : 'description is required'); + } +} + +function normalizeNoteAxis(field: 'reach' | 'consequence', raw: unknown): string { + try { + return field === 'reach' ? normalizeReach(raw) : normalizeConsequence(raw); + } catch (error) { + throw new HttpError(400, error instanceof Error ? error.message : `invalid ${field}`); + } +} + +function normalizeNoteTaxonomy(input: NoteInput): { reach?: string; consequence?: string } { + const result: { reach?: string; consequence?: string } = {}; + if (input.reach !== undefined && input.reach !== null) result.reach = normalizeNoteAxis('reach', input.reach); + if (input.consequence !== undefined && input.consequence !== null) { + result.consequence = normalizeNoteAxis('consequence', input.consequence); + } + return result; +} + function parseJsonColumn<T>(value: unknown, fallback: T): T { if (value == null) return fallback; if (typeof value === 'string') { @@ -201,6 +242,11 @@ function rowToItem(row: Record<string, unknown>): KnowledgeItem { short_id: (row.short_id as string | null) ?? null, title: String(row.title ?? ''), content: String(row.content ?? ''), + // Legacy rows carry NULL here and must stay readable — see the NOT VALID + // constraint rationale in db/pg-migrations.ts. + description: (row.description as string | null) ?? null, + reach: (row.reach as string | null) ?? null, + consequence: (row.consequence as string | null) ?? null, url: (row.url as string | null) ?? null, tags: parseJson<string[]>(row.tags, []), metadata: parseJson<Record<string, unknown>>(row.metadata, {}), @@ -243,6 +289,12 @@ export class NoteRepo { if (!input.title || typeof input.title !== 'string') { throw new HttpError(400, 'title is required'); } + // Validate here so an API caller gets a 400 naming the field, rather than a + // 500 carrying a raw Postgres constraint violation. The CHECK constraint + // underneath remains the actual floor — it also covers the write paths that + // never reach this function (sync/outbox replay, backfill, psql). + const description = validateNoteDescription(input.description); + const axes = normalizeNoteTaxonomy(input); const now = new Date().toISOString(); const suppliedId = typeof input.id === 'string' ? input.id.trim() : ''; if (suppliedId) { @@ -256,11 +308,14 @@ export class NoteRepo { // this is the branch `knowledge upsert --id`, import, and `ingest rules` // take, and it is the exact branch that lost history in open-mementos. const row = await this.write(options, (tx) => tx.get<Record<string, unknown>>( - `INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$8) + `INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$11) ON CONFLICT (id) DO UPDATE SET title = EXCLUDED.title, content = EXCLUDED.content, + description = EXCLUDED.description, + reach = EXCLUDED.reach, + consequence = EXCLUDED.consequence, url = EXCLUDED.url, tags = EXCLUDED.tags, metadata = EXCLUDED.metadata, @@ -271,6 +326,9 @@ export class NoteRepo { makeShortId(suppliedId), input.title, input.content ?? '', + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -281,14 +339,17 @@ export class NoteRepo { } const id = makeId(); const row = await this.write(options, (tx) => tx.get<Record<string, unknown>>( - `INSERT INTO knowledge_items (id, short_id, title, content, url, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,$5,$6::jsonb,$7::jsonb,FALSE,$8,$9) + `INSERT INTO knowledge_items (id, short_id, title, content, description, reach, consequence, url, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9::jsonb,$10::jsonb,FALSE,$11,$12) RETURNING *`, [ id, makeShortId(id), input.title, input.content ?? '', + description, + axes.reach ?? null, + axes.consequence ?? null, input.url ?? null, JSON.stringify(input.tags ?? []), JSON.stringify(input.metadata ?? {}), @@ -358,6 +419,13 @@ export class NoteRepo { }; if (patch.title !== undefined) push('title', patch.title); if (patch.content !== undefined) push('content', patch.content); + // Validated on the way in: a present-but-invalid description is a 400, and + // an absent one leaves the stored value untouched. + if (patch.description !== undefined) push('description', validateNoteDescription(patch.description)); + if (patch.reach !== undefined) push('reach', patch.reach === null ? null : normalizeNoteAxis('reach', patch.reach)); + if (patch.consequence !== undefined) { + push('consequence', patch.consequence === null ? null : normalizeNoteAxis('consequence', patch.consequence)); + } if (patch.url !== undefined) push('url', patch.url); if (patch.tags !== undefined) push('tags', JSON.stringify(patch.tags), '::jsonb'); if (patch.metadata !== undefined) push('metadata', JSON.stringify(patch.metadata), '::jsonb'); diff --git a/src/store.ts b/src/store.ts index b004da2..822c398 100644 --- a/src/store.ts +++ b/src/store.ts @@ -24,6 +24,30 @@ export interface KnowledgeItem { short_id?: string | null; title: string; content: string; + /** + * One-line statement of what this item is FOR, required on every write from + * 2026-08-05 (owner directive; see knowledge-taxonomy.ts for why it is forced + * rather than encouraged). This is the line the fleet-wide change + * notification shows next to the title, so an agent can decide whether to + * open the item without fetching its body. + * + * OPTIONAL IN THE TYPE, REQUIRED AT THE WRITE PATH — and the difference is + * not an oversight. Rows written before the field existed carry no + * description at all, and `description IS NULL` is precisely the mark of such + * a legacy row. Typing it as required here would make every one of those + * stored rows fail to type-check on read, which is the opposite of the + * intent: they stay readable, and only NEW writes are refused without it. + */ + description?: string | null; + /** + * Governance axes — who this binds, and what happens to a reader who has not + * read it. Closed vocabularies (see REACH_VALUES / CONSEQUENCE_VALUES). + * Deliberately optional and deliberately NOT defaulted onto the row: absence + * means the author did not choose, which a monitor reads as self/reference + * and an audit can count. See knowledge-taxonomy.ts. + */ + reach?: string | null; + consequence?: string | null; url: string | null; tags: string[]; metadata?: Record<string, unknown>; diff --git a/tests/cli.test.ts b/tests/cli.test.ts index 8c86700..a43801d 100644 --- a/tests/cli.test.ts +++ b/tests/cli.test.ts @@ -18,6 +18,14 @@ import { recordKnowledgeSyncConflict } from '../src/sync'; import { defaultKnowledgeConfig, writeKnowledgeConfig } from '../src/workspace'; import { budget } from './support/budget'; +/** + * `knowledge add` requires --description from 2026-08-05 (owner directive; see + * src/knowledge-taxonomy.ts). These tests exercise other behaviour, so they + * pass one shared description rather than asserting anything about it. + */ +const CLI_TEST_DESCRIPTION = 'Fixture item created by a CLI test that predates the required description field.'; + + const __dirname = dirname(fileURLToPath(import.meta.url)); const CLI = join(__dirname, '..', 'src', 'cli.ts'); const packageJson = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8')) as { @@ -376,7 +384,9 @@ describe('knowledge cli', () => { const addHelp = runCli(['add', '--help']); expect(addHelp.exitCode).toBe(0); const addOut = new TextDecoder().decode(addHelp.stdout); - expect(addOut).toContain('Usage: knowledge add <title> <content> [--url <url>] [-t <tag>]... [--json]'); + expect(addOut).toContain('Usage: knowledge add <title> <content> --description <text>'); + // The required description is documented where the agent will look for it. + expect(addOut).toContain('--description is REQUIRED'); // The repeatable/comma-separated -t contract is documented where agents will see it. expect(addOut).toContain('-t/--tag is repeatable and accepts comma-separated values'); // Must NOT fall through to the root help command tree. @@ -534,11 +544,11 @@ describe('knowledge cli', () => { const dir = mkdtempSync(join(tmpdir(), 'ok-cli-')); const store = join(dir, 'db.json'); - const addA = runCli(['add', 'TitleB', 'BodyA', '--store', store, '--json']); + const addA = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'TitleB', 'BodyA', '--store', store, '--json']); expect(addA.exitCode).toBe(0); const addAOut = JSON.parse(new TextDecoder().decode(addA.stdout)); - const addB = runCli(['add', 'TitleA', 'BodyB', '--store', store, '--json']); + const addB = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'TitleA', 'BodyB', '--store', store, '--json']); expect(addB.exitCode).toBe(0); const addBOut = JSON.parse(new TextDecoder().decode(addB.stdout)); @@ -603,12 +613,12 @@ describe('knowledge cli', () => { const decode = (buf: Uint8Array) => new TextDecoder().decode(buf); const frontmatter = '---\ntags:\n - strategy\n---\nBody'; - const direct = runCli(['add', 'Direct frontmatter', frontmatter, '--store', store, '--json']); + const direct = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Direct frontmatter', frontmatter, '--store', store, '--json']); expect(direct.exitCode).toBe(0); const directOut = JSON.parse(decode(direct.stdout)); expect(directOut.item.content).toBe(frontmatter); - const terminated = runCli(['add', '--store', store, '--json', '--', 'Terminated frontmatter', frontmatter]); + const terminated = runCli(['add', '--description', CLI_TEST_DESCRIPTION, '--store', store, '--json', '--', 'Terminated frontmatter', frontmatter]); expect(terminated.exitCode).toBe(0); const terminatedOut = JSON.parse(decode(terminated.stdout)); expect(terminatedOut.item.content).toBe(frontmatter); @@ -654,14 +664,14 @@ describe('knowledge cli', () => { // The defect case: the slug is in NEITHER the title nor the content, so nothing but // an id-aware filter can return it. const seeded = runCli([ - 'upsert', 'Loop labelling taxonomy', 'Body about labelling and classification.', + 'upsert', '--description', CLI_TEST_DESCRIPTION, 'Loop labelling taxonomy', 'Body about labelling and classification.', '--id', 'id-not-in-body', '--store', store, '--json', ]); expect(seeded.exitCode).toBe(0); // The coincidence case, pinned so it is never read as evidence about ids. const quoted = runCli([ - 'upsert', 'Quoted slug', 'This body mentions id-quoted-in-body verbatim.', + 'upsert', '--description', CLI_TEST_DESCRIPTION, 'Quoted slug', 'This body mentions id-quoted-in-body verbatim.', '--id', 'id-quoted-in-body', '--store', store, '--json', ]); expect(quoted.exitCode).toBe(0); @@ -707,7 +717,7 @@ describe('knowledge cli', () => { }; // add: five repeated -t must all persist, in order. - const add = runCli(['add', 'Five tags', 'Body', '--store', store, '-t', 'convention', '-t', 'naming', '-t', 'channels', '-t', 'repro', '-t', 'five', '--json']); + const add = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Five tags', 'Body', '--store', store, '-t', 'convention', '-t', 'naming', '-t', 'channels', '-t', 'repro', '-t', 'five', '--json']); expect(add.exitCode).toBe(0); const addId = JSON.parse(decode(add.stdout)).item.id; expect(storedTags(addId)).toEqual(['convention', 'naming', 'channels', 'repro', 'five']); @@ -715,19 +725,19 @@ describe('knowledge cli', () => { expect(decode(add.stderr)).toContain('"tags":5'); // add: a comma-separated value splits; it must never persist as one literal tag. - const comma = runCli(['add', 'Comma tags', 'Body', '--store', store, '-t', 'alpha,beta, gamma', '--json']); + const comma = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Comma tags', 'Body', '--store', store, '-t', 'alpha,beta, gamma', '--json']); expect(comma.exitCode).toBe(0); const commaId = JSON.parse(decode(comma.stdout)).item.id; expect(storedTags(commaId)).toEqual(['alpha', 'beta', 'gamma']); expect(storedTags(commaId)).not.toContain('alpha,beta, gamma'); // add: comma list plus repeats, deduped case-insensitively. - const mixed = runCli(['add', 'Mixed tags', 'Body', '--store', store, '-t', 'x, y', '-t', 'z', '-t', 'X', '--json']); + const mixed = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Mixed tags', 'Body', '--store', store, '-t', 'x, y', '-t', 'z', '-t', 'X', '--json']); expect(mixed.exitCode).toBe(0); expect(storedTags(JSON.parse(decode(mixed.stdout)).item.id)).toEqual(['x', 'y', 'z']); // update: repeated -t must append every tag, not just the last one. - const seed = runCli(['add', 'Update target', 'Body', '--store', store, '-t', 'one', '--json']); + const seed = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Update target', 'Body', '--store', store, '-t', 'one', '--json']); expect(seed.exitCode).toBe(0); const seedId = JSON.parse(decode(seed.stdout)).item.id; const update = runCli(['update', '--id', seedId, '--store', store, '-t', 'two', '-t', 'three', '-t', 'four', '--json']); @@ -741,13 +751,13 @@ describe('knowledge cli', () => { expect(storedTags(seedId)).toEqual(['one', 'three']); // upsert: create path must persist every tag too. - const upsert = runCli(['upsert', 'Upsert tags', 'Body', '--id', 'k_tagupsert', '--store', store, '-t', 'p', '-t', 'q', '-t', 'r', '--json']); + const upsert = runCli(['upsert', '--description', CLI_TEST_DESCRIPTION, 'Upsert tags', 'Body', '--id', 'k_tagupsert', '--store', store, '-t', 'p', '-t', 'q', '-t', 'r', '--json']); expect(upsert.exitCode).toBe(0); expect(JSON.parse(decode(upsert.stdout)).created).toBe(true); expect(storedTags('k_tagupsert')).toEqual(['p', 'q', 'r']); // upsert: update path appends all requested tags. - const upsertAgain = runCli(['upsert', '--id', 'k_tagupsert', '--content', 'Body 2', '--store', store, '-t', 's', '-t', 't', '--json']); + const upsertAgain = runCli(['upsert', '--description', CLI_TEST_DESCRIPTION, '--id', 'k_tagupsert', '--content', 'Body 2', '--store', store, '-t', 's', '-t', 't', '--json']); expect(upsertAgain.exitCode).toBe(0); expect(storedTags('k_tagupsert')).toEqual(['p', 'q', 'r', 's', 't']); @@ -768,11 +778,11 @@ describe('knowledge cli', () => { expect(JSON.parse(decode(all.stdout)).total).toBe(5); // A -t with no usable value must fail loudly instead of silently dropping the tag. - const missing = runCli(['add', 'No tag value', 'Body', '--store', store, '-t']); + const missing = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'No tag value', 'Body', '--store', store, '-t']); expect(missing.exitCode).toBe(1); expect(decode(missing.stderr)).toContain('Missing value for --tag'); - const blank = runCli(['add', 'Blank tag value', 'Body', '--store', store, '-t', ' , ']); + const blank = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Blank tag value', 'Body', '--store', store, '-t', ' , ']); expect(blank.exitCode).toBe(1); expect(decode(blank.stderr)).toContain('no tag name found'); }); @@ -1000,7 +1010,7 @@ describe('knowledge cli', () => { const store = join(dir, 'db.json'); const decode = (buf: Uint8Array) => new TextDecoder().decode(buf); - const created = runCli(['add', 'Counted', 'Body', '--store', store, '-t', 'alpha', '--json']); + const created = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Counted', 'Body', '--store', store, '-t', 'alpha', '--json']); expect(created.exitCode).toBe(0); const id = JSON.parse(decode(created.stdout)).item.id; @@ -1045,7 +1055,7 @@ describe('knowledge cli', () => { expect(upsertExistingOut.message).toContain('(added 1 tag)'); // ...and on the create path, so a caller never branches on `created` to read it. - const upsertNew = runCli(['upsert', 'Fresh', 'Body', '--id', 'k_fresh_count', '--store', store, '-t', 'one,two', '--json']); + const upsertNew = runCli(['upsert', '--description', CLI_TEST_DESCRIPTION, 'Fresh', 'Body', '--id', 'k_fresh_count', '--store', store, '-t', 'one,two', '--json']); expect(upsertNew.exitCode).toBe(0); const upsertNewOut = JSON.parse(decode(upsertNew.stdout)); expect(upsertNewOut.created).toBe(true); @@ -1057,13 +1067,13 @@ describe('knowledge cli', () => { const dir = mkdtempSync(join(tmpdir(), 'ok-upsert-')); const store = join(dir, 'db.json'); - const create = runCli(['upsert', 'Stable ID', 'Initial body', '--id', 'k_custom', '--store', store, '--json']); + const create = runCli(['upsert', '--description', CLI_TEST_DESCRIPTION, 'Stable ID', 'Initial body', '--id', 'k_custom', '--store', store, '--json']); expect(create.exitCode).toBe(0); const createOut = JSON.parse(new TextDecoder().decode(create.stdout)); expect(createOut.created).toBe(true); expect(createOut.item.short_id).toBe('custom'); - const update = runCli(['upsert', '--id', 'k_custom', '--content', 'Updated body', '--store', store, '--json']); + const update = runCli(['upsert', '--description', CLI_TEST_DESCRIPTION, '--id', 'k_custom', '--content', 'Updated body', '--store', store, '--json']); expect(update.exitCode).toBe(0); const updateOut = JSON.parse(new TextDecoder().decode(update.stdout)); expect(updateOut.created).toBe(false); @@ -1079,6 +1089,7 @@ describe('knowledge cli', () => { const add = runCli([ 'add', + '--description', CLI_TEST_DESCRIPTION, 'Hasna OSS boundary', 'local-first hosted wrapper open actions guardrails open orgs token=sk-testsecretkeyvalue1234567890', '--scope', @@ -1264,7 +1275,7 @@ describe('knowledge cli', () => { expect(JSON.parse(new TextDecoder().decode(syncConflicts.stdout)).conflicts).toEqual([]); expect(existsSync(join(dir, '.hasna', 'knowledge'))).toBe(false); - const add = runCli(['add', 'Project scoped', 'Stored in the app workspace', '--scope', 'project', '--json'], dir); + const add = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Project scoped', 'Stored in the app workspace', '--scope', 'project', '--json'], dir); expect(add.exitCode).toBe(0); expect(existsSync(join(dir, '.hasna', 'knowledge', 'db.json'))).toBe(true); expect(existsSync(join(dir, '.open-knowledge', 'db.json'))).toBe(false); @@ -1319,7 +1330,7 @@ describe('knowledge cli', () => { }], }, null, 2)); - const add = runCli(['add', 'Canonical item', 'Stored in canonical workspace', '--scope', 'project', '--json'], dir); + const add = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Canonical item', 'Stored in canonical workspace', '--scope', 'project', '--json'], dir); expect(add.exitCode).toBe(0); expect(existsSync(join(dir, '.hasna', 'knowledge', 'db.json'))).toBe(true); expect(existsSync(join(legacyHome, 'db.json'))).toBe(true); @@ -3186,7 +3197,7 @@ describe('knowledge cli', () => { const dir = mkdtempSync(join(tmpdir(), 'ok-export-compact-')); const store = join(dir, 'db.json'); - const add = runCli(['add', 'Exported compact item', 'Full export content stays out of default terminal output', '--store', store, '--json']); + const add = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Exported compact item', 'Full export content stays out of default terminal output', '--store', store, '--json']); expect(add.exitCode).toBe(0); const compact = runCli(['export', '--store', store]); @@ -3430,7 +3441,7 @@ describe('knowledge cli', () => { 'The inventory command must retrieve source chunks, wiki pages, artifact rows, and run ledger entries.', ].join('\n')); - const add = runCli(['add', 'Inventory Note', 'Manual note body for inventory checks', '--scope', 'project', '--json'], dir); + const add = runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Inventory Note', 'Manual note body for inventory checks', '--scope', 'project', '--json'], dir); expect(add.exitCode).toBe(0); const ingest = runCli(['ingest', 'source', sourceRef, '--purpose', 'knowledge_index', '--scope', 'project', '--json'], dir); diff --git a/tests/entry-versioning-client.test.ts b/tests/entry-versioning-client.test.ts index e83e79d..6425bd8 100644 --- a/tests/entry-versioning-client.test.ts +++ b/tests/entry-versioning-client.test.ts @@ -26,6 +26,16 @@ import { resolveItemStore, VersionHistoryUnsupportedError, type ItemStore } from import { createMigratedPglite } from './fixtures/pglite-client'; import { budget } from './support/budget'; +/** + * Descriptions are REQUIRED on every create from 2026-08-05 (owner directive; + * see src/knowledge-taxonomy.ts). These tests are about versioning and + * concurrency rather than about the description, so they use one shared + * constant: it satisfies the write guard without implying the value is under + * test here. + */ +const TEST_DESCRIPTION = 'Fixture item used by the entry-versioning and concurrency tests.'; + + const SIGNING = 'test-signing-secret-not-a-real-key'; let db: PGlite; @@ -71,7 +81,7 @@ describe('ItemStore (api transport) — versioning over real HTTP', () => { test('history round-trips: prior bodies come back through the HTTP surface', async () => { const store = cloudStore(); - const created = await store.create({ title: 'Round trip', content: 'body v1' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Round trip', content: 'body v1' }); await store.update(created.id, { content: 'body v2' }); await store.update(created.id, { content: 'body v3' }); @@ -90,7 +100,7 @@ describe('ItemStore (api transport) — versioning over real HTTP', () => { test('an entry that exists but was never edited returns an EMPTY history, not null', async () => { const store = cloudStore(); - const created = await store.create({ title: 'Untouched', content: 'only body' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Untouched', content: 'only body' }); const history = await store.listVersions(created.id); expect(history).not.toBeNull(); expect(history!.items).toEqual([]); @@ -103,7 +113,7 @@ describe('ItemStore (api transport) — versioning over real HTTP', () => { test('a stale expectedVersion raises a typed conflict carrying both numbers', async () => { const store = cloudStore(); - const created = await store.create({ title: 'Contended', content: 'shared' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Contended', content: 'shared' }); await store.update(created.id, { content: 'winner' }, { expectedVersion: created.version }); let caught: unknown = null; @@ -125,7 +135,7 @@ describe('ItemStore (api transport) — versioning over real HTTP', () => { // Positive control for the test above: same code path, same store, a // current version instead of a stale one, and the write lands. const store = cloudStore(); - const created = await store.create({ title: 'Uncontended', content: 'a' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Uncontended', content: 'a' }); const updated = await store.update(created.id, { content: 'b' }, { expectedVersion: created.version }); expect(updated!.version).toBe(2); }); @@ -165,7 +175,7 @@ async function runCli(args: string[], extraEnv: Record<string, string> = {}) { describe('knowledge versions / diff — CLI against the live server', () => { test('versions and diff report a real edit end to end', async () => { const store = cloudStore(); - const created = await store.create({ title: 'CLI subject', content: 'line one\nline two', tags: ['x'] }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'CLI subject', content: 'line one\nline two', tags: ['x'] }); await store.update(created.id, { content: 'line one\nline two changed', tags: ['x', 'y'] }); const cliEnv = cloudEnv as Record<string, string>; @@ -203,7 +213,7 @@ describe('knowledge versions / diff — CLI against the live server', () => { }, budget(60_000)); test('an entry with no edits prints an empty history at exit 0, and diff refuses at exit 1', async () => { - const created = await cloudStore().create({ title: 'Never edited', content: 'only' }); + const created = await cloudStore().create({ description: TEST_DESCRIPTION, title: 'Never edited', content: 'only' }); const cliEnv = cloudEnv as Record<string, string>; const versions = await runCli(['versions', '--id', created.id, '--json'], cliEnv); @@ -223,7 +233,7 @@ describe('knowledge versions / diff — CLI against the live server', () => { // them — a retrieval hole, not a display one. Proven here at limit 1 so the // assertion needs three edits rather than two hundred. const store = cloudStore(); - const created = await store.create({ title: 'Paged', content: 'v1' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Paged', content: 'v1' }); await store.update(created.id, { content: 'v2' }); await store.update(created.id, { content: 'v3' }); await store.update(created.id, { content: 'v4' }); @@ -317,7 +327,7 @@ describe('ItemStore (local transport) — a store with no history says so', () = describe('knowledge update --if-version — caller-supplied concurrency guard', () => { test('a writer holding a stale read is REFUSED instead of silently clobbering', async () => { const store = cloudStore(); - const created = await store.create({ title: 'Contended entry', content: 'BASE-LINE-ZERO' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Contended entry', content: 'BASE-LINE-ZERO' }); const cliEnv = cloudEnv as Record<string, string>; // Both agents read the same version — the read an agent really performs, @@ -355,7 +365,7 @@ describe('knowledge update --if-version — caller-supplied concurrency guard', // Positive control for the test above: same flag, same path, a current // version instead of a stale one, and the write must land. const store = cloudStore(); - const created = await store.create({ title: 'Uncontended entry', content: 'first' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Uncontended entry', content: 'first' }); const cliEnv = cloudEnv as Record<string, string>; const result = await runCli( @@ -373,7 +383,7 @@ describe('knowledge update --if-version — caller-supplied concurrency guard', // Back-compat is the reason the flag is opt-in. Many installed callers pass // nothing, and this asserts they are not broken by the addition. const store = cloudStore(); - const created = await store.create({ title: 'Unguarded entry', content: 'first' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Unguarded entry', content: 'first' }); const cliEnv = cloudEnv as Record<string, string>; const result = await runCli(['update', '--id', created.id, '--content', 'second', '--json'], cliEnv); @@ -386,7 +396,7 @@ describe('knowledge update --if-version — caller-supplied concurrency guard', test('a non-numeric --if-version is rejected before anything is written', async () => { const store = cloudStore(); - const created = await store.create({ title: 'Bad guard', content: 'untouched' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Bad guard', content: 'untouched' }); const cliEnv = cloudEnv as Record<string, string>; const result = await runCli( diff --git a/tests/entry-versioning.test.ts b/tests/entry-versioning.test.ts index e1c9a49..3fd20c8 100644 --- a/tests/entry-versioning.test.ts +++ b/tests/entry-versioning.test.ts @@ -37,6 +37,15 @@ import { NoteRepo, VersionConflictError, createServeHandler } from '../src/serve import type { PoolQueryClient } from '../src/generated/storage-kit/index.js'; import { createMigratedPglite } from './fixtures/pglite-client'; +/** + * Descriptions are REQUIRED on every create from 2026-08-05 (owner directive; + * see src/knowledge-taxonomy.ts). These tests are about the versioning trigger + * and the egress guard rather than about the description, so they share one + * constant — it satisfies the write guard without implying it is under test. + */ +const TEST_DESCRIPTION = 'Fixture item used by tests that predate the required description field.'; + + const SIGNING = 'test-signing-secret-not-a-real-key'; // One migrated instance for the file, truncated between tests. Booting a fresh @@ -100,14 +109,14 @@ function handlerFor(client: PoolQueryClient) { describe('entry versioning — schema and trigger', () => { test('a new entry starts at version 1 with no history', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'first body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'first body' }); expect(item.version).toBe(1); expect(await versionRows(db, item.id)).toHaveLength(0); }); test('a raw SQL update — bypassing every application path — still snapshots and bumps', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'first body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'first body' }); // No NoteRepo, no handler, no CLI. This is the psql/backfill path. await db.query(`UPDATE knowledge_items SET content = $2 WHERE id = $1`, [item.id, 'second body']); @@ -129,7 +138,7 @@ describe('entry versioning — schema and trigger', () => { test('the counter cannot be forged: an update that sets version explicitly is overruled', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'a' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'a' }); await db.query(`UPDATE knowledge_items SET content = $2, version = 99 WHERE id = $1`, [item.id, 'b']); expect((await currentRow(db, item.id)).version).toBe(2); @@ -140,7 +149,7 @@ describe('entry versioning — schema and trigger', () => { test('each update produces exactly one revision row, and every prior body is retrievable', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'v1 body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'v1 body' }); await repo.update(item.id, { content: 'v2 body' }); await repo.update(item.id, { content: 'v3 body' }); @@ -152,11 +161,11 @@ describe('entry versioning — schema and trigger', () => { test('a no-op update records nothing — with a positive control on the same row', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body' }); // Idempotent re-upsert: identical field tuple. This is what `ingest rules` // and every sync replay do on each run. - await repo.create({ id: item.id, title: 'T', content: 'body' }); + await repo.create({ id: item.id, description: TEST_DESCRIPTION, title: 'T', content: 'body' }); await repo.update(item.id, { content: 'body' }); expect(await versionRows(db, item.id)).toHaveLength(0); expect((await currentRow(db, item.id)).version).toBe(1); @@ -170,7 +179,7 @@ describe('entry versioning — schema and trigger', () => { test('archiving is version-worthy; a bare updated_at touch is not', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body' }); await db.query(`UPDATE knowledge_items SET updated_at = $2 WHERE id = $1`, [item.id, '2030-01-01T00:00:00.000Z']); expect(await versionRows(db, item.id)).toHaveLength(0); @@ -184,7 +193,7 @@ describe('entry versioning — schema and trigger', () => { test('tags and metadata changes are version-worthy and snapshot faithfully', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body', tags: ['a'], metadata: { k: 1 } }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body', tags: ['a'], metadata: { k: 1 } }); await repo.update(item.id, { tags: ['a', 'b'] }); await repo.update(item.id, { metadata: { k: 2 } }); @@ -210,7 +219,7 @@ describe('entry versioning — schema and trigger', () => { expect(enabled.rows[0]?.tgenabled).toBe('A'); // 'A' = ALWAYS, 'O' = origin-only const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body before replication' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body before replication' }); try { await db.query(`SET session_replication_role = replica`); await db.query(`UPDATE knowledge_items SET content = $2 WHERE id = $1`, [item.id, 'body written as replica']); @@ -231,7 +240,7 @@ describe('entry versioning — schema and trigger', () => { // timestamp sorts before EVERY application-written one regardless of actual // time, and any text comparison of updated_at silently inverts. const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'a' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'a' }); const appWritten = String((await currentRow(db, item.id)).updated_at); expect(appWritten).toMatch(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/); @@ -253,7 +262,7 @@ describe('entry versioning — schema and trigger', () => { // trigger existed those writes kept it; silently replacing it with now() // would be a regression this change introduced. const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'a' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'a' }); await db.query(`UPDATE knowledge_items SET content = 'b', updated_at = $2 WHERE id = $1`, [ item.id, '2019-03-04T05:06:07.008Z', @@ -270,7 +279,7 @@ describe('entry versioning — schema and trigger', () => { // package updates this table, so blocking it costs nothing and removes the // one way history can be edited in place rather than added to. const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'original' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'original' }); await repo.update(item.id, { content: 'edited' }); expect(await versionRows(db, item.id)).toHaveLength(1); @@ -289,7 +298,7 @@ describe('entry versioning — schema and trigger', () => { const { db, repo } = await harness(); await db.query(`ALTER TABLE knowledge_items ADD COLUMN tenant_id TEXT`); try { - const item = await repo.create({ title: 'T', content: 'a' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'a' }); await db.query(`UPDATE knowledge_items SET tenant_id = 'tenant-abc' WHERE id = $1`, [item.id]); await db.query(`UPDATE knowledge_items SET content = 'b' WHERE id = $1`, [item.id]); const rows = await versionRows(db, item.id); @@ -302,7 +311,7 @@ describe('entry versioning — schema and trigger', () => { test('a version-worthy change always advances updated_at, even when the caller does not', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body' }); await db.query(`UPDATE knowledge_items SET updated_at = $2 WHERE id = $1`, [item.id, '2000-01-01T00:00:00.000Z']); const stale = String((await currentRow(db, item.id)).updated_at); expect(stale).toBe('2000-01-01T00:00:00.000Z'); @@ -324,12 +333,12 @@ describe('entry versioning — schema and trigger', () => { describe('entry versioning — the upsert path (the open-mementos failure mode)', () => { test('upsert-on-existing-id snapshots too, not just the update path', async () => { const { db, repo } = await harness(); - const created = await repo.create({ id: 'k_stable_upsert', title: 'T', content: 'original' }); + const created = await repo.create({ id: 'k_stable_upsert', description: TEST_DESCRIPTION, title: 'T', content: 'original' }); expect(created.version).toBe(1); // `knowledge upsert --id` / import / ingest all land here. In open-mementos // this is the branch that bumped without snapshotting. - const merged = await repo.create({ id: 'k_stable_upsert', title: 'T', content: 'replaced' }); + const merged = await repo.create({ id: 'k_stable_upsert', description: TEST_DESCRIPTION, title: 'T', content: 'replaced' }); expect(merged.version).toBe(2); const rows = await versionRows(db, 'k_stable_upsert'); @@ -339,8 +348,8 @@ describe('entry versioning — the upsert path (the open-mementos failure mode)' test('delete cascades history for the entry but leaves other entries intact', async () => { const { db, repo } = await harness(); - const keep = await repo.create({ title: 'keep', content: 'a' }); - const drop = await repo.create({ title: 'drop', content: 'a' }); + const keep = await repo.create({ description: TEST_DESCRIPTION, title: 'keep', content: 'a' }); + const drop = await repo.create({ description: TEST_DESCRIPTION, title: 'drop', content: 'a' }); await repo.update(keep.id, { content: 'b' }); await repo.update(drop.id, { content: 'b' }); @@ -357,7 +366,7 @@ describe('entry versioning — the upsert path (the open-mementos failure mode)' describe('entry versioning — actor attribution', () => { test('actor and reason are recorded when the writer supplies them', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body' }); await repo.update(item.id, { content: 'edited' }, { actor: 'agent:augustus', reason: 'R4 rollout' }); const rows = await versionRows(db, item.id); @@ -367,7 +376,7 @@ describe('entry versioning — actor attribution', () => { test('an unattributed write records NULL, never a leaked previous actor or an empty string', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'body' }); await repo.update(item.id, { content: 'one' }, { actor: 'agent:augustus' }); // Same connection, next write, no actor: a transaction-local GUC resets to // '' rather than unset, so without NULLIF this would read as an attributed @@ -387,7 +396,7 @@ describe('entry versioning — actor attribution', () => { describe('entry versioning — optimistic concurrency', () => { test('two agents that both read v1 cannot both succeed', async () => { const { db, repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'shared body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'shared body' }); const readA = await repo.get(item.id); const readB = await repo.get(item.id); @@ -414,7 +423,7 @@ describe('entry versioning — optimistic concurrency', () => { test('a matching expected version is accepted', async () => { const { repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'a' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'a' }); const updated = await repo.update(item.id, { content: 'b' }, { expectedVersion: 1 }); expect(updated!.version).toBe(2); const again = await repo.update(item.id, { content: 'c' }, { expectedVersion: 2 }); @@ -423,7 +432,7 @@ describe('entry versioning — optimistic concurrency', () => { test('an absent expected version still writes (phase 1 back-compat for installed CLIs)', async () => { const { repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'a' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'a' }); const updated = await repo.update(item.id, { content: 'b' }); expect(updated!.version).toBe(2); }); @@ -441,7 +450,7 @@ describe('entry versioning — optimistic concurrency', () => { describe('entry versioning — read surface', () => { test('listVersions returns prior bodies newest-first with the current version stated', async () => { const { repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'v1' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'v1' }); await repo.update(item.id, { content: 'v2' }); await repo.update(item.id, { content: 'v3' }); @@ -458,7 +467,7 @@ describe('entry versioning — read surface', () => { // versions" was printed for a memory whose history the client simply could // not see. Absent must not look like empty. const { repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'v1' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'v1' }); const history = await repo.listVersions(item.id); expect(history).not.toBeNull(); expect(history!.items).toEqual([]); @@ -468,7 +477,7 @@ describe('entry versioning — read surface', () => { test('getVersion fetches one snapshot by number', async () => { const { repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'v1' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'v1' }); await repo.update(item.id, { content: 'v2' }); const v1 = await repo.getVersion(item.id, 1); expect(v1!.content).toBe('v1'); @@ -477,7 +486,7 @@ describe('entry versioning — read surface', () => { test('history is reachable by short_id, as every other note lookup is', async () => { const { repo } = await harness(); - const item = await repo.create({ title: 'T', content: 'v1' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'v1' }); await repo.update(item.id, { content: 'v2' }); const history = await repo.listVersions(item.short_id!); expect(history!.items).toHaveLength(1); @@ -493,7 +502,7 @@ describe('entry versioning — HTTP surface', () => { const { db, client, repo } = await harness(); const key = keyFor(['knowledge:read', 'knowledge:write']); const handler = handlerFor(client); - const item = await repo.create({ title: 'T', content: 'v1 body' }); + const item = await repo.create({ description: TEST_DESCRIPTION, title: 'T', content: 'v1 body' }); return { db, handler, key, item }; } diff --git a/tests/knowledge-description-taxonomy.test.ts b/tests/knowledge-description-taxonomy.test.ts new file mode 100644 index 0000000..b0eec50 --- /dev/null +++ b/tests/knowledge-description-taxonomy.test.ts @@ -0,0 +1,513 @@ +/** + * Regression tests for todos task b9f6c835 — owner directive 2026-08-05. + * + * THE DIRECTIVE: every agent must be notified when knowledge is created or + * updated, receiving the TITLE, a BRIEF DESCRIPTION, and a prompt to read it if + * it matters. A notification cannot carry a description the store does not + * hold, so the field is the precondition for the whole feature. + * + * WHY THE FIELD IS REQUIRED AT WRITE TIME AND NOT MERELY AVAILABLE — this is + * the load-bearing decision and it is settled by measurement, not taste. + * hasna/mementos already ships exactly this kind of human-guidance field + * (`when_to_use`). It has existed for a long time and is populated on ZERO of + * its rows, because nothing forces it. `summary` on the same store, also + * optional, sits at 6.4% of 6529 rows and is FALLING (July 70.0%, August 3.3%). + * An optional guidance field lands at zero. That is measured, not predicted, so + * this field is refused at the write path rather than documented as encouraged. + * + * WHAT ENFORCES IT, and why there is more than one layer. The obvious place — + * `ItemCreateInput` in item-store.ts — is a PLAIN TYPESCRIPT INTERFACE, erased + * at compile time, enforcing nothing at runtime; the same is true of `NoteInput` + * in serve.ts. (zod is a dependency of this package but is imported only by + * schema.js and mcp.js.) So a type annotation alone would be a comment. The + * runtime floors are therefore: + * - LOCAL: an explicit check inside the store's create path, below the CLI, + * so an SDK or MCP caller cannot route around it. + * - CLOUD: a Postgres CHECK constraint, which sits below the serve handler, + * the upsert branch, sync/outbox replay, a backfill script, and a human at + * psql — the same argument this repo already made for the versioning + * trigger in db/pg-migrations.ts, and for the same reason: the writers are + * already plural and next month there will be another. + * + * EXISTING ROWS ARE NOT REWRITTEN. The constraint is added NOT VALID, so it + * binds every new INSERT and UPDATE without being checked against the 1361 rows + * already stored. `description IS NULL` is the mark of a legacy row; no second + * column and no status enum. Legacy rows stay readable, listable and gettable — + * asserted below, because a migration that makes existing knowledge unreadable + * would be a far worse defect than the one being fixed. + * + * Every test here runs IN-PROCESS against an explicit temp store path. That is + * deliberate: on a contended station the subprocess-spawning CLI tests in this + * repo time out at their 5000ms budget regardless of correctness (measured at + * load 31 on 20 cores, where the same unmodified code failed 15 tests in one + * run and 26 in the next). A test whose result tracks the box rather than the + * code is not a regression test. + */ +import { describe, expect, test } from 'bun:test'; +import { mkdtempSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { readFileSync } from 'node:fs'; +import { resolveItemStore, type ItemStore } from '../src/item-store'; +import { + KnowledgeDescriptionRequiredError, + KnowledgeTaxonomyValueError, + REACH_VALUES, + CONSEQUENCE_VALUES, + DESCRIPTION_MIN_LENGTH, + DESCRIPTION_MAX_LENGTH, + validateDescription, + normalizeReach, + normalizeConsequence, +} from '../src/knowledge-taxonomy'; +import { sortItems } from '../src/cli'; +import { PG_MIGRATIONS } from '../src/db/pg-migrations'; +import { createMigratedPglite } from './fixtures/pglite-client'; + +function localStore(): ItemStore { + const dir = mkdtempSync(join(tmpdir(), 'knowledge-desc-')); + return resolveItemStore({ storePath: join(dir, 'db.json'), storePathOverridden: true }); +} + +/** A description that satisfies the bounds, for tests about something else. */ +const GOOD_DESCRIPTION = 'Explains why the squash merge body must carry the Agent trailer.'; + +describe('knowledge description field (owner directive 2026-08-05)', () => { + test('create REFUSES an item with no description at all', async () => { + const store = localStore(); + // The cast is the point of the test: a JS caller, an SDK consumer, or the + // MCP server can and does omit this field, and the TypeScript interface + // cannot stop them. The runtime check must. + await expect( + store.create({ title: 'Some title', content: 'Some content' } as never), + ).rejects.toBeInstanceOf(KnowledgeDescriptionRequiredError); + }); + + test('create REFUSES an empty or whitespace-only description', async () => { + const store = localStore(); + for (const blank of ['', ' ', '\n\t ']) { + await expect( + store.create({ title: 'T', content: 'C', description: blank } as never), + ).rejects.toBeInstanceOf(KnowledgeDescriptionRequiredError); + } + }); + + test('create ACCEPTS a valid description and stores it verbatim (trimmed)', async () => { + const store = localStore(); + const item = await store.create({ + title: 'Agent trailer survives squash', + content: 'body', + description: ` ${GOOD_DESCRIPTION} `, + }); + expect(item.description).toBe(GOOD_DESCRIPTION); + // And it survives a round trip through the store, not just the return value. + const fetched = await store.get(item.id); + expect(fetched?.description).toBe(GOOD_DESCRIPTION); + }); + + test('a too-short description is refused, and one at the boundary is accepted', async () => { + const store = localStore(); + // Two-sided: the check must be able to both fire and stay silent, or it is + // not evidence about anything. + const tooShort = 'a'.repeat(DESCRIPTION_MIN_LENGTH - 1); + const exactlyMin = 'a'.repeat(DESCRIPTION_MIN_LENGTH); + await expect( + store.create({ title: 'T', content: 'C', description: tooShort }), + ).rejects.toBeInstanceOf(KnowledgeDescriptionRequiredError); + const ok = await store.create({ title: 'T', content: 'C', description: exactlyMin }); + expect(ok.description).toBe(exactlyMin); + }); + + test('a too-long description is refused, and one at the boundary is accepted', async () => { + const store = localStore(); + const tooLong = 'a'.repeat(DESCRIPTION_MAX_LENGTH + 1); + const exactlyMax = 'a'.repeat(DESCRIPTION_MAX_LENGTH); + await expect( + store.create({ title: 'T', content: 'C', description: tooLong }), + ).rejects.toBeInstanceOf(KnowledgeDescriptionRequiredError); + const ok = await store.create({ title: 'T', content: 'C', description: exactlyMax }); + expect(ok.description).toBe(exactlyMax); + }); + + test('the refusal NAMES the field and says how to supply it', async () => { + const store = localStore(); + // A guard whose message does not tell the caller what to do produces an + // agent that debugs the store instead of adding the flag. + let message = ''; + try { + await store.create({ title: 'T', content: 'C' } as never); + } catch (error) { + message = error instanceof Error ? error.message : String(error); + } + expect(message).toContain('--description'); + expect(message.toLowerCase()).toContain('description'); + }); + + test('update can SET a description on a legacy row that has none', async () => { + const store = localStore(); + const item = await store.create({ title: 'T', content: 'C', description: GOOD_DESCRIPTION }); + const next = `${GOOD_DESCRIPTION} Amended.`; + const updated = await store.update(item.id, { description: next }); + expect(updated?.description).toBe(next); + }); + + test('update REFUSES a description that is present but invalid', async () => { + const store = localStore(); + const item = await store.create({ title: 'T', content: 'C', description: GOOD_DESCRIPTION }); + await expect(store.update(item.id, { description: 'too short' })).rejects.toBeInstanceOf( + KnowledgeDescriptionRequiredError, + ); + // The stored value must be untouched by the refused write. + const fetched = await store.get(item.id); + expect(fetched?.description).toBe(GOOD_DESCRIPTION); + }); + + test('an update that does not mention description leaves it alone', async () => { + const store = localStore(); + const item = await store.create({ title: 'T', content: 'C', description: GOOD_DESCRIPTION }); + const updated = await store.update(item.id, { title: 'New title' }); + expect(updated?.title).toBe('New title'); + expect(updated?.description).toBe(GOOD_DESCRIPTION); + }); +}); + +describe('legacy rows written before the field existed stay readable', () => { + test('a stored item with no description is still listed and fetched', async () => { + const dir = mkdtempSync(join(tmpdir(), 'knowledge-legacy-')); + const storePath = join(dir, 'db.json'); + // Write a legacy-shaped row directly, bypassing every application path — + // exactly what the 1361 existing rows look like. + // + // `Bun.write` returns a Promise and MUST be awaited. Unawaited, the read + // below races the write: POSIX runners happened to win that race and the + // test passed on every local run, while Windows CI lost it and read an + // absent file as an empty store — `toHaveLength(1)` received 0. The + // failure therefore looked like "legacy rows are not readable", i.e. a + // defect in the feature under test, when it was only the fixture not + // having landed yet. Every other Bun.write in tests/ (5 of 5) awaits. + await Bun.write( + storePath, + JSON.stringify({ + items: [ + { + id: 'k_legacy_0001', + short_id: 'legacy1', + title: 'A legacy item', + content: 'written before description existed', + url: null, + tags: [], + metadata: {}, + archived: false, + created_at: '2026-07-01T00:00:00.000Z', + updated_at: '2026-07-01T00:00:00.000Z', + version: 1, + }, + ], + }), + ); + const store = resolveItemStore({ storePath, storePathOverridden: true }); + const listed = await store.listAll(); + expect(listed.items).toHaveLength(1); + expect(listed.items[0]!.title).toBe('A legacy item'); + // `description IS NULL` is the mark of a legacy row — readable, not broken. + expect(listed.items[0]!.description ?? null).toBeNull(); + const fetched = await store.get('k_legacy_0001'); + expect(fetched?.title).toBe('A legacy item'); + }); +}); + +describe('taxonomy: reach and consequence', () => { + test('the two axes carry the documented closed vocabularies', () => { + expect([...REACH_VALUES]).toEqual(['fleet', 'project', 'seat', 'self']); + expect([...CONSEQUENCE_VALUES]).toEqual(['blocking', 'standing', 'reference']); + }); + + test('every vocabulary value is accepted', () => { + for (const value of REACH_VALUES) expect(normalizeReach(value)).toBe(value); + for (const value of CONSEQUENCE_VALUES) expect(normalizeConsequence(value)).toBe(value); + }); + + test('a value outside the vocabulary is refused, and the error lists the legal set', () => { + // Negative control for the two assertions above: if normalize accepted + // anything, the "every value is accepted" test would pass vacuously. + expect(() => normalizeReach('global')).toThrow(KnowledgeTaxonomyValueError); + expect(() => normalizeConsequence('important')).toThrow(KnowledgeTaxonomyValueError); + let message = ''; + try { + normalizeReach('global'); + } catch (error) { + message = error instanceof Error ? error.message : String(error); + } + for (const value of REACH_VALUES) expect(message).toContain(value); + }); + + test('reach and consequence round-trip through the store', async () => { + const store = localStore(); + const item = await store.create({ + title: 'T', + content: 'C', + description: GOOD_DESCRIPTION, + reach: 'fleet', + consequence: 'blocking', + }); + expect(item.reach).toBe('fleet'); + expect(item.consequence).toBe('blocking'); + const fetched = await store.get(item.id); + expect(fetched?.reach).toBe('fleet'); + expect(fetched?.consequence).toBe('blocking'); + }); + + test('an item written without the axes carries neither — the default is QUIET', async () => { + const store = localStore(); + const item = await store.create({ title: 'T', content: 'C', description: GOOD_DESCRIPTION }); + // Absent rather than eagerly stamped: a monitor treats absent as + // self/reference. Storing a default eagerly would make the field 100% + // populated and worthless as a signal — which is precisely what happened to + // mementos' `scope`, 400/400 populated and carrying no information. + expect(item.reach ?? null).toBeNull(); + expect(item.consequence ?? null).toBeNull(); + }); + + test('the store refuses an out-of-vocabulary axis value', async () => { + const store = localStore(); + await expect( + store.create({ title: 'T', content: 'C', description: GOOD_DESCRIPTION, reach: 'global' } as never), + ).rejects.toBeInstanceOf(KnowledgeTaxonomyValueError); + }); +}); + +describe('update detection: knowledge list --sort updated', () => { + const item = (id: string, created: string, updated: string) => ({ + id, + title: `title-${id}`, + content: '', + url: null, + tags: [], + created_at: created, + updated_at: updated, + }); + + test('--sort updated orders by updated_at, not created_at', () => { + // Constructed so the two orders DISAGREE — otherwise the test cannot tell + // which field was actually read and would pass on the old code. + const items = [ + item('a', '2026-01-01T00:00:00Z', '2026-03-01T00:00:00Z'), + item('b', '2026-02-01T00:00:00Z', '2026-01-15T00:00:00Z'), + item('c', '2026-03-01T00:00:00Z', '2026-02-01T00:00:00Z'), + ]; + const byUpdated = sortItems(items as never, { sort: 'updated' } as never); + expect(byUpdated.sorted.map((entry) => entry.id)).toEqual(['b', 'c', 'a']); + expect(byUpdated.sort).toBe('updated'); + + // Positive control that the fixture really does discriminate: the same + // input sorted by the pre-existing key yields a DIFFERENT order. + const byCreated = sortItems(items as never, { sort: 'created' } as never); + expect(byCreated.sorted.map((entry) => entry.id)).toEqual(['a', 'b', 'c']); + }); + + test('--sort updated --desc reverses, so the most recently updated leads', () => { + const items = [ + item('a', '2026-01-01T00:00:00Z', '2026-03-01T00:00:00Z'), + item('b', '2026-02-01T00:00:00Z', '2026-01-15T00:00:00Z'), + ]; + const result = sortItems(items as never, { sort: 'updated', desc: true } as never); + expect(result.sorted.map((entry) => entry.id)).toEqual(['a', 'b']); + expect(result.direction).toBe('desc'); + }); + + test('the pre-existing sort keys still work and an invalid one is still refused', () => { + const items = [item('a', '2026-01-01T00:00:00Z', '2026-01-01T00:00:00Z')]; + expect(() => sortItems(items as never, { sort: 'created' } as never)).not.toThrow(); + expect(() => sortItems(items as never, { sort: 'title' } as never)).not.toThrow(); + // Negative control: the validator must still reject, or "updated is + // accepted" would be a statement about a validator that accepts everything. + expect(() => sortItems(items as never, { sort: 'nonsense' } as never)).toThrow(); + }); +}); + +describe('the cloud floor: Postgres migration', () => { + const sql = PG_MIGRATIONS.join('\n;\n'); + + test('adds the three columns', () => { + expect(sql).toContain('description'); + expect(sql).toMatch(/ADD COLUMN IF NOT EXISTS description/i); + expect(sql).toMatch(/ADD COLUMN IF NOT EXISTS reach/i); + expect(sql).toMatch(/ADD COLUMN IF NOT EXISTS consequence/i); + }); + + test('the description CHECK is added NOT VALID so existing rows are never rewritten', () => { + // The whole migration story depends on this token. Without NOT VALID the + // ALTER scans 1361 rows, fails on every legacy row, and the deploy stops. + expect(sql).toMatch(/knowledge_items_description_present[\s\S]*?NOT VALID/i); + }); + + test('the vocabulary CHECKs pin exactly the documented values', () => { + for (const value of REACH_VALUES) expect(sql).toContain(`'${value}'`); + for (const value of CONSEQUENCE_VALUES) expect(sql).toContain(`'${value}'`); + expect(sql).toMatch(/knowledge_items_reach_vocab/i); + expect(sql).toMatch(/knowledge_items_consequence_vocab/i); + }); + + test('the version trigger no-op guard includes the new columns', () => { + // Without this, a description-only edit produces NO version row and NO + // counter bump — the edit would be invisible to the very update-detection + // surface this task exists to build. + const guard = sql.match(/IS NOT DISTINCT FROM[\s\S]{0,400}/g)?.join('\n') ?? ''; + expect(guard).toContain('description'); + expect(guard).toContain('reach'); + expect(guard).toContain('consequence'); + }); + + test('the migration set applies cleanly to a real Postgres', async () => { + // SQL-shape assertions above prove the text is present; they cannot prove it + // is VALID SQL or that it applies in order. This does. + const { db } = await createMigratedPglite(); + const row = await db.query<{ count: string }>( + `SELECT count(*)::text AS count FROM information_schema.columns + WHERE table_name = 'knowledge_items' AND column_name IN ('description','reach','consequence')`, + ); + expect(row.rows[0]!.count).toBe('3'); + await db.close(); + }); + + test('the CHECK actually REFUSES a raw INSERT with no description, and accepts one with', async () => { + // A raw INSERT bypasses the CLI, the Store, and the serve handler — every + // application-level guard at once. This is the layer that catches sync + // replay, a backfill script, and a human at psql, so it is the one worth + // exercising rather than reasoning about. + const { db } = await createMigratedPglite(); + const insert = (id: string, description: string | null) => db.query( + `INSERT INTO knowledge_items (id, short_id, title, content, description, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,'T','body',$3,'[]'::jsonb,'{}'::jsonb,FALSE,'2026-08-05T00:00:00.000Z','2026-08-05T00:00:00.000Z')`, + [id, id.slice(0, 8), description], + ); + + // Negative: refused, and specifically as a CHECK violation (SQLSTATE 23514) + // rather than any other error that would also make this test "pass". + let code = ''; + try { + await insert('k_no_desc', null); + } catch (error) { + code = (error as { code?: string }).code ?? ''; + } + expect(code).toBe('23514'); + + // Positive control: the identical statement WITH a description succeeds, so + // the refusal above is attributable to the description and not to the shape + // of the insert. + await insert('k_with_desc', GOOD_DESCRIPTION); + const stored = await db.query<{ description: string }>( + `SELECT description FROM knowledge_items WHERE id = 'k_with_desc'`, + ); + expect(stored.rows[0]!.description).toBe(GOOD_DESCRIPTION); + await db.close(); + }); + + test('the vocabulary CHECK refuses an out-of-vocabulary reach at the database', async () => { + const { db } = await createMigratedPglite(); + let code = ''; + try { + await db.query( + `INSERT INTO knowledge_items (id, short_id, title, content, description, reach, tags, metadata, archived, created_at, updated_at) + VALUES ('k_bad_reach','k_bad_re','T','body',$1,'global','[]'::jsonb,'{}'::jsonb,FALSE,'2026-08-05T00:00:00.000Z','2026-08-05T00:00:00.000Z')`, + [GOOD_DESCRIPTION], + ); + } catch (error) { + code = (error as { code?: string }).code ?? ''; + } + expect(code).toBe('23514'); + await db.close(); + }); + + test('NOT VALID grandfathers rows that already violate it — the whole migration story', async () => { + // THIS IS THE CENTRAL CLAIM OF THE DESIGN and it was, until this test, + // asserted only from documentation. If NOT VALID did not behave this way, + // adding the constraint would abort against the existing corpus and every + // deployment would fail — so it is worth exercising rather than believing. + const { db } = await createMigratedPglite(); + + // Drop the constraint and insert a legacy-shaped row with NO description, + // reproducing a row written before the field existed. + await db.query('ALTER TABLE knowledge_items DROP CONSTRAINT knowledge_items_description_present'); + await db.query( + `INSERT INTO knowledge_items (id, short_id, title, content, tags, metadata, archived, created_at, updated_at) + VALUES ('k_legacy','k_legacy','Legacy','written before the field existed','[]'::jsonb,'{}'::jsonb,FALSE,'2026-07-01T00:00:00.000Z','2026-07-01T00:00:00.000Z')`, + ); + + // Re-adding it NOT VALID must SUCCEED despite that row violating it. + await db.query( + `ALTER TABLE knowledge_items ADD CONSTRAINT knowledge_items_description_present + CHECK (description IS NOT NULL AND char_length(btrim(description)) BETWEEN 24 AND 280) NOT VALID`, + ); + + // The legacy row is still there and still readable — not rewritten, not hidden. + const legacy = await db.query<{ title: string; description: string | null }>( + `SELECT title, description FROM knowledge_items WHERE id = 'k_legacy'`, + ); + expect(legacy.rows[0]!.title).toBe('Legacy'); + expect(legacy.rows[0]!.description).toBeNull(); + + // And `description IS NULL` finds it — the queryable mark of a legacy row. + const unmarked = await db.query<{ count: string }>( + `SELECT count(*)::text AS count FROM knowledge_items WHERE description IS NULL`, + ); + expect(unmarked.rows[0]!.count).toBe('1'); + + // Meanwhile NEW writes are still refused, so grandfathering is not a hole. + let code = ''; + try { + await db.query( + `INSERT INTO knowledge_items (id, short_id, title, content, tags, metadata, archived, created_at, updated_at) + VALUES ('k_new','k_new','New','body','[]'::jsonb,'{}'::jsonb,FALSE,'2026-08-05T00:00:00.000Z','2026-08-05T00:00:00.000Z')`, + ); + } catch (error) { + code = (error as { code?: string }).code ?? ''; + } + expect(code).toBe('23514'); + await db.close(); + }); + + test('a description-only edit IS version-worthy — the trigger sees the new column', async () => { + // If the no-op guard had not learned `description`, this edit would produce + // no snapshot and no counter bump, and would be invisible to the very + // update-detection surface this work exists to build. + const { db } = await createMigratedPglite(); + await db.query( + `INSERT INTO knowledge_items (id, short_id, title, content, description, tags, metadata, archived, created_at, updated_at) + VALUES ('k_desc_edit','k_desc_e','T','body',$1,'[]'::jsonb,'{}'::jsonb,FALSE,'2026-08-05T00:00:00.000Z','2026-08-05T00:00:00.000Z')`, + [GOOD_DESCRIPTION], + ); + await db.query(`UPDATE knowledge_items SET description = $1 WHERE id = 'k_desc_edit'`, [ + `${GOOD_DESCRIPTION} Amended once.`, + ]); + const after = await db.query<{ version: number }>( + `SELECT version FROM knowledge_items WHERE id = 'k_desc_edit'`, + ); + expect(after.rows[0]!.version).toBe(2); + const history = await db.query<{ count: string }>( + `SELECT count(*)::text AS count FROM knowledge_item_versions WHERE item_id = 'k_desc_edit'`, + ); + expect(history.rows[0]!.count).toBe('1'); + + // Negative control on the same row: a write that changes NOTHING must still + // be a no-op, or the guard has simply been disabled rather than extended. + await db.query(`UPDATE knowledge_items SET description = $1 WHERE id = 'k_desc_edit'`, [ + `${GOOD_DESCRIPTION} Amended once.`, + ]); + const unchanged = await db.query<{ version: number }>( + `SELECT version FROM knowledge_items WHERE id = 'k_desc_edit'`, + ); + expect(unchanged.rows[0]!.version).toBe(2); + await db.close(); + }); + + test('the new statements are APPENDED, never inserted mid-array', () => { + // PG migration ids derive from array index (`knowledge_pg_${index+1}`), so + // inserting mid-array shifts every following id and trips the ledger drift + // guard. Pin the first statement so a future edit that prepends is caught. + expect(PG_MIGRATIONS[0]).toMatch(/CREATE TABLE/i); + const descriptionIndex = PG_MIGRATIONS.findIndex((statement) => /ADD COLUMN IF NOT EXISTS description/i.test(statement)); + const versionIndex = PG_MIGRATIONS.findIndex((statement) => /ADD COLUMN IF NOT EXISTS version INTEGER/i.test(statement)); + expect(descriptionIndex).toBeGreaterThan(versionIndex); + }); +}); diff --git a/tests/knowledge-update-cas.test.ts b/tests/knowledge-update-cas.test.ts index 742c5de..4213d0d 100644 --- a/tests/knowledge-update-cas.test.ts +++ b/tests/knowledge-update-cas.test.ts @@ -29,6 +29,24 @@ import { join } from 'node:path'; import { KnowledgeVersionConflictError } from '../src/cloud-store'; import { resolveItemStore, type ItemStore } from '../src/item-store'; +/** + * `knowledge add` requires --description from 2026-08-05 (owner directive; see + * src/knowledge-taxonomy.ts). These tests exercise other behaviour, so they + * pass one shared description rather than asserting anything about it. + */ +const CLI_TEST_DESCRIPTION = 'Fixture item created by a CLI test that predates the required description field.'; + + +/** + * Descriptions are REQUIRED on every create from 2026-08-05 (owner directive; + * see src/knowledge-taxonomy.ts). These tests are about versioning and + * concurrency rather than about the description, so they use one shared + * constant: it satisfies the write guard without implying the value is under + * test here. + */ +const TEST_DESCRIPTION = 'Fixture item used by the entry-versioning and concurrency tests.'; + + const CLI = join(import.meta.dir, '..', 'src', 'cli.ts'); function freshDir(prefix: string): string { @@ -81,7 +99,7 @@ describe('ItemStore (local transport) — the lost-update defect and its CAS fix test('repro: two stale reads, two honest writes — the SECOND is rejected, not silently accepted', async () => { const dir = freshDir('ok-cas-repro-'); const store = localStore(dir); - const created = await store.create({ title: 'Shared entry', content: 'BASE-CONTENT-LINE-ORIGINAL' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Shared entry', content: 'BASE-CONTENT-LINE-ORIGINAL' }); expect(created.version).toBe(1); // Both agents read the SAME version, independently. @@ -130,7 +148,7 @@ describe('ItemStore (local transport) — the lost-update defect and its CAS fix test('a fresh expectedVersion is accepted — positive control, so the guard is not simply always-on', async () => { const dir = freshDir('ok-cas-positive-'); const store = localStore(dir); - const created = await store.create({ title: 'Uncontended', content: 'a' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'Uncontended', content: 'a' }); const updated = await store.update(created.id, { content: 'b' }, { expectedVersion: created.version }); expect(updated!.version).toBe(2); expect(updated!.content).toBe('b'); @@ -139,7 +157,7 @@ describe('ItemStore (local transport) — the lost-update defect and its CAS fix test('omitting expectedVersion keeps the pre-existing unconditional-overwrite behaviour (backward compatible)', async () => { const dir = freshDir('ok-cas-unconditional-'); const store = localStore(dir); - const created = await store.create({ title: 'No guard', content: 'a' }); + const created = await store.create({ description: TEST_DESCRIPTION, title: 'No guard', content: 'a' }); await store.update(created.id, { content: 'b' }); // no expectedVersion at all — must not throw const after = await store.update(created.id, { content: 'c' }); // still none expect(after!.content).toBe('c'); @@ -176,7 +194,7 @@ describe('knowledge update --if-version — CLI end to end against a real local const home = freshDir('ok-cas-cli-home-'); const storePath = join(freshDir('ok-cas-cli-store-'), 'db.json'); - const created = await runCli(['add', 'Shared', 'BASE-CONTENT-LINE-ORIGINAL', '--store', storePath, '--json'], {}, home); + const created = await runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Shared', 'BASE-CONTENT-LINE-ORIGINAL', '--store', storePath, '--json'], {}, home); expect(created.exitCode).toBe(0); const id = (JSON.parse(created.stdout) as { item: { id: string } }).item.id; @@ -222,7 +240,7 @@ describe('knowledge update --if-version — CLI end to end against a real local test('a current --if-version is accepted (positive control over the CLI path)', async () => { const home = freshDir('ok-cas-cli-home2-'); const storePath = join(freshDir('ok-cas-cli-store2-'), 'db.json'); - const created = await runCli(['add', 'T', 'a', '--store', storePath, '--json'], {}, home); + const created = await runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'T', 'a', '--store', storePath, '--json'], {}, home); const id = (JSON.parse(created.stdout) as { item: { id: string } }).item.id; const result = await runCli(['update', '--id', id, '--content', 'b', '--if-version', '1', '--store', storePath, '--json'], {}, home); expect(result.exitCode).toBe(0); @@ -234,7 +252,7 @@ describe('knowledge update --if-version — CLI end to end against a real local test('--if-version rejects a non-integer value before touching the store (generic exit 1, not the conflict exit 2)', async () => { const home = freshDir('ok-cas-cli-home3-'); const storePath = join(freshDir('ok-cas-cli-store3-'), 'db.json'); - const created = await runCli(['add', 'T', 'a', '--store', storePath, '--json'], {}, home); + const created = await runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'T', 'a', '--store', storePath, '--json'], {}, home); const id = (JSON.parse(created.stdout) as { item: { id: string } }).item.id; const result = await runCli(['update', '--id', id, '--content', 'b', '--if-version', 'nope', '--store', storePath, '--json'], {}, home); expect(result.exitCode).toBe(1); @@ -258,7 +276,7 @@ describe('knowledge update --if-version — CLI end to end against a real local test('omitting --if-version keeps the CLI working exactly as before (backward compatible)', async () => { const home = freshDir('ok-cas-cli-home4-'); const storePath = join(freshDir('ok-cas-cli-store4-'), 'db.json'); - const created = await runCli(['add', 'T', 'a', '--store', storePath, '--json'], {}, home); + const created = await runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'T', 'a', '--store', storePath, '--json'], {}, home); const id = (JSON.parse(created.stdout) as { item: { id: string } }).item.id; const result = await runCli(['update', '--id', id, '--content', 'b', '--store', storePath, '--json'], {}, home); expect(result.exitCode).toBe(0); @@ -284,7 +302,7 @@ describe('isolation: --store plus a poisoned cloud environment never reaches the HASNA_KNOWLEDGE_API_KEY: 'not-a-real-key', }; - const created = await runCli(['add', 'Isolated', 'v1', '--store', storePath, '--json'], poisonedEnv, home); + const created = await runCli(['add', '--description', CLI_TEST_DESCRIPTION, 'Isolated', 'v1', '--store', storePath, '--json'], poisonedEnv, home); expect(created.exitCode).toBe(0); const id = (JSON.parse(created.stdout) as { item: { id: string } }).item.id; diff --git a/tests/mcp.test.ts b/tests/mcp.test.ts index f4e5349..863576c 100644 --- a/tests/mcp.test.ts +++ b/tests/mcp.test.ts @@ -379,6 +379,7 @@ describe('knowledge MCP', () => { arguments: { title: 'MCP item', content: 'Stored through MCP', + description: 'A fixture knowledge item created through the MCP tool surface in tests.', tags: ['mcp'], store_path: store, }, @@ -866,8 +867,8 @@ describe('knowledge MCP', () => { arguments: { store_path: store, items: [ - { title: 'Duplicate', content: 'Same' }, - { title: 'Duplicate', content: 'Same' }, + { title: 'Duplicate', content: 'Same', description: 'A fixture knowledge item created through the MCP tool surface in tests.' }, + { title: 'Duplicate', content: 'Same', description: 'A fixture knowledge item created through the MCP tool surface in tests.' }, ], }, })); diff --git a/tests/net-guard.test.ts b/tests/net-guard.test.ts index 781950b..8d92dae 100644 --- a/tests/net-guard.test.ts +++ b/tests/net-guard.test.ts @@ -34,6 +34,15 @@ import { } from '../src/net-guard'; import { resolveKnowledgeCloudStore } from '../src/cloud-store'; +/** + * Descriptions are REQUIRED on every create from 2026-08-05 (owner directive; + * see src/knowledge-taxonomy.ts). These tests are about the versioning trigger + * and the egress guard rather than about the description, so they share one + * constant — it satisfies the write guard without implying it is under test. + */ +const TEST_DESCRIPTION = 'Fixture item used by tests that predate the required description field.'; + + const GUARDED = { NODE_ENV: 'test' } as NodeJS.ProcessEnv; const UNGUARDED = { NODE_ENV: 'production' } as NodeJS.ProcessEnv; const FAKE_KEY = 'k_fake_test_key'; @@ -158,7 +167,7 @@ describe('the guard sits at the cloud transport boundary', () => { } as NodeJS.ProcessEnv); let caught: unknown = null; try { - await store!.create({ title: 'guarded', content: 'must never leave the machine' }); + await store!.create({ description: TEST_DESCRIPTION, title: 'guarded', content: 'must never leave the machine' }); } catch (error) { caught = error; } diff --git a/tests/search-pg-parity.test.ts b/tests/search-pg-parity.test.ts index d14fe27..5c4260f 100644 --- a/tests/search-pg-parity.test.ts +++ b/tests/search-pg-parity.test.ts @@ -44,9 +44,14 @@ beforeAll(async () => { const doc = PARITY_CORPUS[i]!; const createdAt = new Date(2026, 0, 1 + i).toISOString(); await db.query( - `INSERT INTO knowledge_items (id, short_id, title, content, tags, metadata, archived, created_at, updated_at) - VALUES ($1,$2,$3,$4,'[]'::jsonb,'{}'::jsonb,FALSE,$5,$5)`, - [doc.id, doc.id.slice(0, 8), doc.title, doc.text, createdAt], + // `description` is carried here because knowledge_items has a NOT VALID + // CHECK requiring it on every INSERT (see db/pg-migrations.ts). This is a + // raw INSERT that bypasses every application path, so the constraint is + // the only thing enforcing it — and it duly rejected this fixture with + // SQLSTATE 23514 until the column was supplied. + `INSERT INTO knowledge_items (id, short_id, title, content, description, tags, metadata, archived, created_at, updated_at) + VALUES ($1,$2,$3,$4,$5,'[]'::jsonb,'{}'::jsonb,FALSE,$6,$6)`, + [doc.id, doc.id.slice(0, 8), doc.title, doc.text, `Search parity corpus fixture: ${doc.title}.`, createdAt], ); } repo = new NoteRepo(pgliteClient(db)); diff --git a/tests/serve.test.ts b/tests/serve.test.ts index 3be30ce..7ac2288 100644 --- a/tests/serve.test.ts +++ b/tests/serve.test.ts @@ -176,7 +176,7 @@ describe('knowledge-serve', () => { new Request('http://x/v1/notes', { method: 'POST', headers: { 'x-api-key': key, 'content-type': 'application/json' }, - body: JSON.stringify({ title: 'hello', content: 'world', tags: ['a'] }), + body: JSON.stringify({ title: 'hello', content: 'world', description: 'A fixture note created by the serve HTTP surface tests.', tags: ['a'] }), }), ); expect(created.status).toBe(201); @@ -202,7 +202,7 @@ describe('knowledge-serve', () => { ); // First upsert with a stable caller id. - const first = await post({ id: 'k_stable', title: 'v1', content: 'first' }); + const first = await post({ id: 'k_stable', title: 'v1', content: 'first', description: 'A fixture note created by the serve HTTP surface tests.' }); expect(first.status).toBe(201); const created = (await first.json()) as { id: string; title: string }; expect(created.id).toBe('k_stable'); // server persisted the caller id, not a fresh one @@ -215,7 +215,7 @@ describe('knowledge-serve', () => { expect(((await got.json()) as { title: string }).title).toBe('v1'); // Re-upsert with the same id -> updates the SAME row in place (id unchanged). - const second = await post({ id: 'k_stable', title: 'v2', content: 'second' }); + const second = await post({ id: 'k_stable', title: 'v2', content: 'second', description: 'A fixture note created by the serve HTTP surface tests.' }); expect(second.status).toBe(201); expect(((await second.json()) as { id: string }).id).toBe('k_stable'); diff --git a/tests/store-lock.test.ts b/tests/store-lock.test.ts index bc7e0fc..c4f9ed2 100644 --- a/tests/store-lock.test.ts +++ b/tests/store-lock.test.ts @@ -6,6 +6,14 @@ import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; import { isLockContentionCode, loadStore, saveStore, withLock } from '../src/store'; +/** + * `knowledge add` requires --description from 2026-08-05 (owner directive; see + * src/knowledge-taxonomy.ts). These tests exercise other behaviour, so they + * pass one shared description rather than asserting anything about it. + */ +const CLI_TEST_DESCRIPTION = 'Fixture item created by a CLI test that predates the required description field.'; + + const __dirname = dirname(fileURLToPath(import.meta.url)); const CLI = join(__dirname, '..', 'src', 'cli.ts'); @@ -60,6 +68,7 @@ describe('JSON store lock handling', () => { const children = Array.from({ length: writerCount }, (_, index) => spawn('bun', [ CLI, 'add', + '--description', CLI_TEST_DESCRIPTION, `Concurrent ${index}`, `Content ${index}`, '--store', @@ -98,6 +107,7 @@ describe('JSON store lock handling', () => { const children = Array.from({ length: writerCount }, (_, index) => spawn('bun', [ CLI, 'add', + '--description', CLI_TEST_DESCRIPTION, `Stale concurrent ${index}`, `Content ${index}`, '--store',