From d034864bc836d7b87e627a6353a879a77fd3125a Mon Sep 17 00:00:00 2001 From: Andrei Hasna Date: Mon, 10 Aug 2026 17:55:42 +0300 Subject: [PATCH 1/4] feat: add Knowledge project resource links Agent: Theophrastus --- bin/knowledge-mcp.js | 2709 ++++++++++++++++++++++++++++++++++- bin/knowledge-serve.js | 1561 ++++++++++++++++++++ bin/knowledge.js | 1914 +++++++++++++++++++++---- dist/index.d.ts | 3 +- dist/index.js | 2155 +++++++++++++++++++++++++++- dist/project-links.d.ts | 251 ++++ dist/sdk.d.ts | 18 + dist/serve.d.ts | 7 + dist/serve.js | 1984 +++++++++++++++++++++++++ dist/service.d.ts | 17 + dist/storage.js | 1430 +++++++++++++++++- src/cli.ts | 319 ++++- src/db/pg-migrations.ts | 3 + src/index.ts | 37 + src/project-links.ts | 2183 ++++++++++++++++++++++++++++ src/sdk.ts | 77 + src/serve.ts | 487 +++++++ src/service.ts | 59 + tests/project-links.test.ts | 639 +++++++++ 19 files changed, 15539 insertions(+), 314 deletions(-) create mode 100644 dist/project-links.d.ts create mode 100644 src/project-links.ts create mode 100644 tests/project-links.test.ts diff --git a/bin/knowledge-mcp.js b/bin/knowledge-mcp.js index 31c569f..26924c1 100755 --- a/bin/knowledge-mcp.js +++ b/bin/knowledge-mcp.js @@ -18167,7 +18167,7 @@ function createArtifactStore(config2, workspace) { } // src/service.ts -import { createHash as createHash19 } from "crypto"; +import { createHash as createHash20 } from "crypto"; import { spawnSync as spawnSync2 } from "child_process"; import { existsSync as existsSync14, readFileSync as readFileSync13 } from "fs"; import { hostname as hostname5 } from "os"; @@ -29231,6 +29231,1385 @@ function migrateLegacyKnowledgeWorkspace(options) { }; } +// src/project-links.ts +import { createHash as createHash19 } from "crypto"; +import { Database as Database2 } from "bun:sqlite"; +var KNOWLEDGE_PROJECT_REGISTRATION_ROUTE = "knowledge.project-registration.v1"; +var KNOWLEDGE_PROJECT_RESOURCES_ROUTE = "knowledge.project-resources.v1"; +var KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION = 1; +var KNOWLEDGE_PROJECT_MEMBERSHIP_RULE = "explicit_collection_binding"; + +class KnowledgeProjectLinksError extends Error { + code; + details; + constructor(code, message, details = {}) { + super(message); + this.code = code; + this.details = details; + this.name = "KnowledgeProjectLinksError"; + } +} +class SqliteProjectLinksSql { + db; + tail = Promise.resolve(); + constructor(db) { + this.db = db; + } + async get(sql, params = []) { + return this.db.query(sql).get(...params) ?? null; + } + async many(sql, params = []) { + return this.db.query(sql).all(...params); + } + async run(sql, params = []) { + const result = this.db.query(sql).run(...params); + return { changes: Number(result.changes) }; + } + transaction(fn) { + const run = this.tail.then(async () => { + this.db.exec("BEGIN IMMEDIATE"); + try { + const result = await fn(this); + this.db.exec("COMMIT"); + return result; + } catch (error51) { + this.db.exec("ROLLBACK"); + throw error51; + } + }); + this.tail = run.then(() => { + return; + }, () => { + return; + }); + return run; + } +} +function sqliteKnowledgeProjectLinksSchemaSql() { + return ` + PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + ); + CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + ); + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_update + BEFORE UPDATE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_delete + BEFORE DELETE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + `; +} +function postgresKnowledgeProjectLinksSchemaStatements() { + return [ + `CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + )`, + `CREATE OR REPLACE FUNCTION knowledge_project_link_receipts_immutable() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + RAISE EXCEPTION 'knowledge project link receipts are immutable'; + END; + $$`, + `DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable + ON knowledge_project_link_receipts`, + `CREATE TRIGGER knowledge_project_link_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()` + ]; +} +function canonicalize(value) { + if (Array.isArray(value)) + return value.map(canonicalize); + if (value && typeof value === "object") { + return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined).sort(([left], [right]) => left.localeCompare(right)).map(([key, item]) => [key, canonicalize(item)])); + } + return value; +} +function canonicalKnowledgeProjectLinksJson(value) { + return JSON.stringify(canonicalize(value)); +} +function digestKnowledgeProjectLinksValue(value) { + return createHash19("sha256").update(canonicalKnowledgeProjectLinksJson(value)).digest("hex"); +} +function stableUuid(namespace) { + const hex3 = createHash19("sha256").update(namespace).digest("hex").slice(0, 32).split(""); + hex3[12] = "5"; + hex3[16] = (Number.parseInt(hex3[16], 16) & 3 | 8).toString(16); + const value = hex3.join(""); + return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; +} +function requiredString(value, field) { + if (typeof value !== "string" || value.trim().length === 0) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `${field} must be a non-empty string.`); + } + return value.trim(); +} +function boundedLimit(value) { + const resolved = value ?? 100; + if (!Number.isInteger(resolved) || resolved < 1 || resolved > 200) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "limit must be an integer between 1 and 200."); + } + return resolved; +} +function normalizeKinds(kinds) { + const supported = ["project", "collection", "item", "taxonomy"]; + if (!kinds || kinds.length === 0) + return supported; + const unique2 = [...new Set(kinds)]; + for (const kind of unique2) { + if (!supported.includes(kind)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `unsupported project resource kind: ${kind}`); + } + } + return unique2.sort((left, right) => supported.indexOf(left) - supported.indexOf(right)); +} +function toReceipt(row) { + return { + receipt_id: row.receipt_id, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: row.package_version, + authority_id: row.authority_id, + tenant_id: row.tenant_id, + corpus_id: row.corpus_id, + operation_id: row.operation_id, + step_id: row.step_id, + action: row.action, + resource_kind: row.resource_kind, + direction: row.direction, + idempotency_key: row.idempotency_key, + request_digest: row.request_digest, + precondition_digest: row.precondition_digest, + outcome: row.outcome, + reason: row.reason, + source_project_id: row.source_project_id, + project_id: row.project_id, + collection_id: row.collection_id, + item_id: row.item_id, + result_revision: row.result_revision, + result_digest: row.result_digest, + accepted_receipt_id: row.accepted_receipt_id, + created_by_operation: Number(row.created_by_operation) === 1, + created_at: row.created_at + }; +} +function aggregateRecord(row) { + const record2 = { + source_project_id: row.source_project_id, + project_id: row.project_id, + project_slug: row.project_slug, + project_name: row.project_name, + collection_id: row.collection_id, + collection_slug: row.collection_slug, + collection_name: row.collection_name, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + revision: `r${Number(row.revision)}`, + created_at: row.created_at, + updated_at: row.updated_at + }; + return { ...record2, digest: digestKnowledgeProjectLinksValue(record2) }; +} +function receiptInsertParams(receipt) { + return [ + receipt.receipt_id, + receipt.authority, + receipt.route, + receipt.package_version, + receipt.authority_id, + receipt.tenant_id, + receipt.corpus_id, + receipt.operation_id, + receipt.step_id, + receipt.action, + receipt.resource_kind, + receipt.direction, + receipt.idempotency_key, + receipt.request_digest, + receipt.precondition_digest, + receipt.outcome, + receipt.reason, + receipt.source_project_id, + receipt.project_id, + receipt.collection_id, + receipt.item_id, + receipt.result_revision, + receipt.result_digest, + receipt.accepted_receipt_id, + receipt.created_by_operation ? 1 : 0, + receipt.created_at + ]; +} +var RECEIPT_INSERT_SQL = `INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`; + +class PackageOwnedKnowledgeProjectLinksAuthority { + sql; + itemResolver; + options; + identity; + now; + constructor(sql, itemResolver, options) { + this.sql = sql; + this.itemResolver = itemResolver; + this.options = options; + this.identity = { + authority_id: requiredString(options.authorityId, "authority_id"), + tenant_id: requiredString(options.tenantId, "tenant_id"), + corpus_id: requiredString(options.corpusId, "corpus_id") + }; + this.now = options.now ?? (() => new Date().toISOString()); + } + capabilityValue() { + return { + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + resource_route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + package_version: this.options.packageVersion, + schema_version: KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + ...this.identity, + registration_resource: "collection", + supported_resources: ["project", "collection", "item", "taxonomy"], + stable_project_ids: true, + stable_collection_ids: true, + explicit_membership: true, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + later_child_binding_required: true, + bind_existing_items: true, + immutable_receipts: true, + exact_terminal_lookup: true, + exact_readback: true, + conditional_inverse: true, + complete_keyset_pagination: true, + revision_bound_cursors: true + }; + } + async capability() { + return this.capabilityValue(); + } + assertIdentity(request) { + const capability = this.capabilityValue(); + if (request.authority_route !== capability.route || request.package_version !== capability.package_version || request.authority_id !== capability.authority_id || request.tenant_id !== capability.tenant_id || request.corpus_id !== capability.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "request does not match the current Knowledge project-registration capability identity."); + } + } + stableProjectId(sourceProjectId) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${sourceProjectId}`); + } + stableCollectionId(sourceProjectId, collectionSlug) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${sourceProjectId}\x00${collectionSlug}`); + } + stableReceiptId(operationId, stepId, action, direction) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${operationId}\x00${stepId}\x00${action}\x00${direction}`); + } + async getAggregateBySource(sql, sourceProjectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, sourceProjectId]); + } + async getAggregateByCollection(sql, collectionId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, collectionId]); + } + async getAggregateByProject(sql, projectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + projectId, + projectId + ]); + } + async getReceiptByAttempt(sql, input) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + input.operation_id, + input.step_id, + input.action, + input.direction + ]); + return row ? toReceipt(row) : null; + } + assertIdempotent(existing, input) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); + } + } + async registerCollection(request) { + this.assertIdentity(request); + if (request.resource_kind !== "collection" || request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "collection registration requires resource_kind=collection and direction=forward."); + } + const sourceProjectId = requiredString(request.project_id, "project_id"); + const projectSlug = requiredString(request.project_slug, "project_slug"); + const projectName = requiredString(request.project_name, "project_name"); + const targetSelector = requiredString(request.target_selector, "target_selector"); + if (targetSelector !== sourceProjectId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "target_selector must equal the exact source project id."); + } + const collectionSlug = requiredString(request.desired.collection_slug ?? `${projectSlug}-knowledge`, "desired.collection_slug"); + const collectionName = requiredString(request.desired.collection_name ?? `${projectName} Knowledge`, "desired.collection_name"); + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "register_collection", + source_project_id: sourceProjectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized collection-registration request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + let aggregate = await this.getAggregateBySource(tx, sourceProjectId); + const createdByOperation = aggregate === null; + if (!aggregate) { + const now = this.now(); + const projectId = this.stableProjectId(sourceProjectId); + const collectionId = this.stableCollectionId(sourceProjectId, collectionSlug); + await tx.run(`INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + sourceProjectId, + projectId, + projectSlug, + projectName, + now, + now + ]); + await tx.run(`INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + projectId, + collectionSlug, + collectionName, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + 1, + now, + now + ]); + aggregate = await this.getAggregateByCollection(tx, collectionId); + } else if (aggregate.project_slug !== projectSlug || aggregate.project_name !== projectName || aggregate.collection_slug !== collectionSlug || aggregate.collection_name !== collectionName || aggregate.membership_rule !== KNOWLEDGE_PROJECT_MEMBERSHIP_RULE) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "the source project is already bound to a different Knowledge collection aggregate.", { + source_project_id: sourceProjectId, + collection_id: aggregate.collection_id + }); + } + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection registration committed but exact aggregate readback was unavailable."); + } + const record2 = aggregateRecord(aggregate); + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "forward"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_collection", + source_project_id: record2.source_project_id, + project_id: record2.project_id, + collection_id: record2.collection_id, + item_id: null, + result_revision: record2.revision, + result_digest: record2.digest, + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readCollection(collectionId) { + const aggregate = await this.getAggregateByCollection(this.sql, requiredString(collectionId, "collection_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + return aggregateRecord(aggregate); + } + async lookupReceipt(request) { + if (request.max_items !== 1) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "exact terminal receipt lookup requires max_items=1."); + } + if (request.authority_id !== this.identity.authority_id || request.tenant_id !== this.identity.tenant_id || request.corpus_id !== this.identity.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "receipt lookup does not match this authority identity."); + } + const receipt = await this.getReceiptByAttempt(this.sql, request); + if (!receipt || receipt.idempotency_key !== request.idempotency_key) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "exact Knowledge project-link receipt was not found."); + } + return receipt; + } + async receiptById(sql, receiptId) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`, [ + receiptId, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id + ]); + return row ? toReceipt(row) : null; + } + assertInverseIdentity(request) { + this.assertIdentity(request); + requiredString(request.accepted_receipt_id, "accepted_receipt_id"); + requiredString(request.idempotency_key, "idempotency_key"); + } + async compensateRegistration(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "register_collection" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection-registration receipt was not found."); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + let outcome = "accepted"; + let reason = null; + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_collection_is_not_inverse_owned"; + } else if (!aggregate) { + outcome = "terminal_nonacceptance"; + reason = "accepted_collection_is_already_absent"; + } else { + const membership = await tx.get(`SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + if (Number(membership?.count ?? 0) > 0) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_bound_items"; + } else { + await tx.run(`DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + await tx.run(`DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.project_id + ]); + } + } + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: null, + result_revision: outcome === "accepted" ? "absent" : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyRegistrationInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection inverse receipt was not found."); + } + const aggregate = inverse.collection_id ? await this.getAggregateByCollection(this.sql, inverse.collection_id) : null; + if (aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "collection inverse verification found the target still present."); + } + const verification = { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.collection_id, + absent: true, + digest: inverse.result_digest + }; + return verification; + } + async bindItem(request) { + this.assertIdentity(request); + if (request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "item binding requires direction=forward."); + } + const collectionId = requiredString(request.collection_id, "collection_id"); + const itemId = requiredString(request.item_id, "item_id"); + const item = await this.itemResolver(itemId); + if (!item || item.id !== itemId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "bind-existing requires an exact existing Knowledge item id.", { item_id: itemId }); + } + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "bind_item", + collection_id: collectionId, + item_id: itemId + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized item-membership request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const aggregate = await this.getAggregateByCollection(tx, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + const existing = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId + ]); + const createdByOperation = existing === null; + const now = this.now(); + const receiptId = this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "forward"); + if (!existing) { + await tx.run(`INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + receiptId, + 1, + now + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + now, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId + ]); + } + const current = await this.getAggregateByCollection(tx, collectionId); + if (!current) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "item binding committed but collection readback was unavailable."); + } + const binding = { + collection_id: collectionId, + item_id: itemId, + collection_revision: `r${Number(current.revision)}`, + item_revision: `v${item.version ?? 1}` + }; + const receipt = { + receipt_id: receiptId, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_membership", + source_project_id: current.source_project_id, + project_id: current.project_id, + collection_id: collectionId, + item_id: itemId, + result_revision: binding.collection_revision, + result_digest: digestKnowledgeProjectLinksValue(binding), + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: now + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readItemBinding(collectionId, itemId) { + const membership = await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + requiredString(collectionId, "collection_id"), + requiredString(itemId, "item_id") + ]); + if (!membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection membership was not found by exact ids."); + } + const aggregate = await this.getAggregateByCollection(this.sql, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "membership exists without its collection aggregate."); + } + const record2 = { + collection_id: collectionId, + item_id: itemId, + revision: `r${Number(aggregate.revision)}`, + bound_at: membership.bound_at + }; + return { ...record2, digest: digestKnowledgeProjectLinksValue(record2) }; + } + async compensateItemBinding(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "bind_item" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding receipt was not found."); + } + let outcome = "accepted"; + let reason = null; + const membership = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id + ]); + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_membership_is_not_inverse_owned"; + } else if (!membership) { + outcome = "terminal_nonacceptance"; + reason = "accepted_membership_is_already_absent"; + } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { + outcome = "terminal_nonacceptance"; + reason = "membership_is_owned_by_a_different_receipt"; + } else { + await tx.run(`DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + accepted.receipt_id + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.now(), + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id + ]); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + result_revision: outcome === "accepted" && aggregate ? `r${Number(aggregate.revision)}` : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyItemBindingInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding inverse receipt was not found."); + } + const membership = await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + inverse.collection_id, + inverse.item_id + ]); + if (membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "item-binding inverse verification found the membership still present."); + } + return { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.item_id, + absent: true, + digest: inverse.result_digest + }; + } + async buildResources(projectId) { + const aggregate = await this.getAggregateByProject(this.sql, requiredString(projectId, "project_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project aggregate was not found by source or stable project id."); + } + const memberships = await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + const items = await Promise.all(memberships.map(async (membership) => { + const item = await this.itemResolver(membership.item_id); + if (!item || item.id !== membership.item_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection membership points at a missing Knowledge item; refusing a partial resource population.", { collection_id: aggregate.collection_id, item_id: membership.item_id }); + } + return item; + })); + const revision = `r${Number(aggregate.revision)}`; + const base = { + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + revision + }; + const resources = []; + const projectBody = { + ...base, + kind: "project", + id: aggregate.project_id, + title: aggregate.project_name, + locator: { kind: "canonical_uri", value: `knowledge:project:${aggregate.project_id}` }, + metadata: { + source_project_id: aggregate.source_project_id, + slug: aggregate.project_slug, + collection_count: 1 + } + }; + resources.push({ + ...projectBody, + key: `project:${aggregate.project_id}`, + digest: digestKnowledgeProjectLinksValue(projectBody) + }); + const collectionBody = { + ...base, + kind: "collection", + id: aggregate.collection_id, + title: aggregate.collection_name, + locator: { kind: "external_uuid", value: aggregate.collection_id }, + metadata: { + slug: aggregate.collection_slug, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + member_count: items.length + } + }; + resources.push({ + ...collectionBody, + key: `collection:${aggregate.collection_id}`, + digest: digestKnowledgeProjectLinksValue(collectionBody) + }); + for (const item of items) { + const itemBody = { + ...base, + kind: "item", + id: item.id, + revision: `v${item.version ?? 1}`, + title: item.title, + locator: { kind: "canonical_uri", value: `knowledge:item:${encodeURIComponent(item.id)}` }, + metadata: { + tags: [...item.tags ?? []], + archived: item.archived === true, + updated_at: item.updated_at + } + }; + resources.push({ + ...itemBody, + key: `item:${item.id}`, + digest: digestKnowledgeProjectLinksValue(itemBody) + }); + } + const taxonomy = new Map; + for (const item of items) { + for (const rawTag of item.tags ?? []) { + const normalized = rawTag.trim().toLowerCase(); + if (!normalized) + continue; + const entry = taxonomy.get(normalized) ?? { label: rawTag.trim(), itemIds: [] }; + entry.itemIds.push(item.id); + taxonomy.set(normalized, entry); + } + } + for (const [normalized, entry] of [...taxonomy.entries()].sort(([left], [right]) => left.localeCompare(right))) { + const taxonomyId = stableUuid(`${aggregate.collection_id}\x00taxonomy\x00${normalized}`); + const taxonomyBody = { + ...base, + kind: "taxonomy", + id: taxonomyId, + title: entry.label, + locator: { kind: "external_uuid", value: taxonomyId }, + metadata: { + tag: entry.label, + normalized_tag: normalized, + item_count: entry.itemIds.length, + member_digest: digestKnowledgeProjectLinksValue([...entry.itemIds].sort()) + } + }; + resources.push({ + ...taxonomyBody, + key: `taxonomy:${taxonomyId}`, + digest: digestKnowledgeProjectLinksValue(taxonomyBody) + }); + } + resources.sort((left, right) => left.key.localeCompare(right.key)); + return { aggregate, resources }; + } + async listProjectResources(projectId, options = {}) { + const limit = boundedLimit(options.limit); + const kinds = normalizeKinds(options.kinds); + const { aggregate, resources } = await this.buildResources(projectId); + const revision = `r${Number(aggregate.revision)}`; + const population = resources.filter((resource) => kinds.includes(resource.kind)); + const populationDigest = digestKnowledgeProjectLinksValue(population.map((resource) => ({ key: resource.key, digest: resource.digest }))); + let after = ""; + if (options.cursor) { + let decoded; + try { + decoded = JSON.parse(Buffer.from(options.cursor, "base64url").toString("utf8")); + } catch { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "cursor is not a valid Knowledge project-resources cursor."); + } + if (decoded.version !== 1 || decoded.project_id !== aggregate.project_id || decoded.collection_id !== aggregate.collection_id || decoded.collection_revision !== revision || decoded.population_digest !== populationDigest || canonicalKnowledgeProjectLinksJson(decoded.kinds) !== canonicalKnowledgeProjectLinksJson(kinds) || typeof decoded.after !== "string") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed or the cursor belongs to a different project/kind selection; restart from the first page."); + } + after = decoded.after; + } + const remaining = after ? population.filter((resource) => resource.key > after) : population; + const pageResources = remaining.slice(0, limit); + const hasMore = remaining.length > pageResources.length; + const nextCursor = hasMore && pageResources.length > 0 ? Buffer.from(JSON.stringify({ + version: 1, + project_id: aggregate.project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + kinds, + after: pageResources.at(-1).key + })).toString("base64url") : null; + return { + schema: "knowledge.project-resources.page.v1", + authority: "knowledge", + route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + ...this.identity, + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + resource_kinds: kinds, + resources: pageResources, + count: pageResources.length, + total: population.length, + limit, + cursor: options.cursor ?? null, + next_cursor: nextCursor, + has_more: hasMore, + complete: !hasMore, + truncated: false + }; + } + async readProjectResource(projectId, kind, resourceId) { + const { resources } = await this.buildResources(projectId); + const resource = resources.find((candidate) => candidate.kind === kind && candidate.id === resourceId); + if (!resource) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project resource was not found by exact kind and id."); + } + return resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expected = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + const identity = { + project_id: page.project_id, + collection_id: page.collection_id, + collection_revision: page.collection_revision, + population_digest: page.population_digest, + total: page.total, + kinds: canonicalKnowledgeProjectLinksJson(page.resource_kinds) + }; + if (expected && canonicalKnowledgeProjectLinksJson(expected) !== canonicalKnowledgeProjectLinksJson(identity)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete population was being read."); + } + expected ??= identity; + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource pagination returned a duplicate stable resource key.", { key: resource.key }); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource page claims more data without a continuation cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (!expected || resources.length !== expected.total) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete project resource enumeration did not match the producer total.", { expected_total: expected?.total ?? null, received: resources.length }); + } + return resources; + } +} +function createLocalKnowledgeProjectLinksAuthority(input) { + if (input.databasePath !== ":memory:") { + ensureParentDir(input.databasePath); + } + const db = new Database2(input.databasePath, { create: true }); + db.exec(sqliteKnowledgeProjectLinksSchemaSql()); + return new PackageOwnedKnowledgeProjectLinksAuthority(new SqliteProjectLinksSql(db), (id) => input.itemStore.get(id), input.options); +} +class KnowledgeProjectLinksHttpClient { + options; + fetchImpl; + root; + constructor(options) { + this.options = options; + this.fetchImpl = options.fetch ?? guardedFetch; + this.root = options.baseUrl.replace(/\/+$/, ""); + } + headers(extra = {}) { + const headers = new Headers(this.options.headers); + headers.set("accept", "application/json"); + if (this.options.apiKey) + headers.set("x-api-key", this.options.apiKey); + for (const [key, value] of Object.entries(extra)) + headers.set(key, value); + return headers; + } + async request(path, init = {}) { + const response = await this.fetchImpl(`${this.root}${path}`, { + ...init, + headers: this.headers(init.body ? { "content-type": "application/json" } : {}) + }); + const body = await response.json().catch(() => ({})); + if (!response.ok) { + throw new KnowledgeProjectLinksError(typeof body.error === "string" ? body.error : "KNOWLEDGE_PROJECT_LINKS_CONFLICT", typeof body.message === "string" ? body.message : `Knowledge project-links HTTP ${response.status}`, body.details && typeof body.details === "object" ? body.details : {}); + } + return body; + } + async capability() { + const body = await this.request("/v1/project-registration/capability"); + return body.capability; + } + async registerCollection(request) { + const body = await this.request("/v1/project-registration/create", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readCollection(collectionId) { + const body = await this.request("/v1/project-registration/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId }) }); + return body.record; + } + async lookupReceipt(request) { + const body = await this.request("/v1/project-registration/receipts/lookup", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async compensateRegistration(request) { + const body = await this.request("/v1/project-registration/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyRegistrationInverse(request) { + const body = await this.request("/v1/project-registration/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async bindItem(request) { + const body = await this.request("/v1/project-registration/items/bind", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readItemBinding(collectionId, itemId) { + const body = await this.request("/v1/project-registration/items/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId, item_id: itemId }) }); + return body.record; + } + async compensateItemBinding(request) { + const body = await this.request("/v1/project-registration/items/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyItemBindingInverse(request) { + const body = await this.request("/v1/project-registration/items/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async listProjectResources(projectId, options = {}) { + const query2 = new URLSearchParams; + if (options.limit !== undefined) + query2.set("limit", String(options.limit)); + if (options.cursor) + query2.set("cursor", options.cursor); + for (const kind of options.kinds ?? []) + query2.append("kind", kind); + const suffix = query2.size > 0 ? `?${query2.toString()}` : ""; + return this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources${suffix}`); + } + async readProjectResource(projectId, kind, resourceId) { + const body = await this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources/${kind}/${encodeURIComponent(resourceId)}`); + return body.resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expectedTotal = null; + let expectedRevision = null; + let expectedPopulationDigest = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + expectedTotal ??= page.total; + expectedRevision ??= page.collection_revision; + expectedPopulationDigest ??= page.population_digest; + if (page.total !== expectedTotal || page.collection_revision !== expectedRevision || page.population_digest !== expectedPopulationDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete HTTP population was being read."); + } + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP pagination returned a duplicate stable key."); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP page claims more data without a cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (expectedTotal === null || resources.length !== expectedTotal) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete HTTP resource enumeration did not match the producer total."); + } + return resources; + } +} +function createKnowledgeProjectLinksHttpClient(options) { + return new KnowledgeProjectLinksHttpClient(options); +} + // src/service.ts function resolvePeerWorkspace(input) { const target = resolve5(input); @@ -29240,7 +30619,7 @@ function resolvePeerWorkspace(input) { return ensureKnowledgeWorkspace(workspaceForHome(projectKnowledgeHome(target)).home); } function workspaceMachineId(workspace) { - return `${hostname5()}:${createHash19("sha256").update(workspace.home).digest("hex").slice(0, 12)}`; + return `${hostname5()}:${createHash20("sha256").update(workspace.home).digest("hex").slice(0, 12)}`; } function shellQuote2(value) { return `'${value.replace(/'/g, "'\\''")}'`; @@ -29716,7 +31095,7 @@ function legacyAgentContextPack(options, context, policy) { redactions += quote.redactions; const ref = citation.source_ref ?? citation.source_uri ?? citation.artifact_path ?? citation.artifact_uri ?? citation.id; return { - id: `cite_${createHash19("sha256").update(`${citation.id}\x00${ref}`).digest("hex").slice(0, 12)}`, + id: `cite_${createHash20("sha256").update(`${citation.id}\x00${ref}`).digest("hex").slice(0, 12)}`, kind: citation.artifact_uri || citation.artifact_path ? "artifact" : "source", ref, source_ref: citation.source_ref, @@ -29742,7 +31121,7 @@ function legacyAgentContextPack(options, context, policy) { const preview2 = redactPreviewForPack(excerpt2.text, policy, 520); redactions += preview2.redactions; return { - id: `ev_${createHash19("sha256").update(`${excerpt2.kind}\x00${excerpt2.result_id}\x00${excerpt2.citation_id ?? ""}`).digest("hex").slice(0, 14)}`, + id: `ev_${createHash20("sha256").update(`${excerpt2.kind}\x00${excerpt2.result_id}\x00${excerpt2.citation_id ?? ""}`).digest("hex").slice(0, 14)}`, kind: excerpt2.kind, title: compactText(result?.title ?? citation?.ref ?? excerpt2.kind, 100), text_preview: preview2.text, @@ -29760,7 +31139,7 @@ function legacyAgentContextPack(options, context, policy) { const usedCitationIds = new Set(evidence.flatMap((entry) => entry.citation_ids)); const usedCitations = citations.filter((citation) => usedCitationIds.has(citation.id)); const warnings = Array.from(new Set(context.warnings)); - const idempotencyKey = `ctx_${createHash19("sha256").update([source, purpose, query2, warnings.join(","), evidence.map((entry) => entry.id).join(",")].join("\x00")).digest("hex").slice(0, 20)}`; + const idempotencyKey = `ctx_${createHash20("sha256").update([source, purpose, query2, warnings.join(","), evidence.map((entry) => entry.id).join(",")].join("\x00")).digest("hex").slice(0, 20)}`; const pack = { ok: true, format: "knowledge-agent-context-pack", @@ -29873,7 +31252,7 @@ function emptyAgentContextPack(options) { const query2 = (options.query ?? options.topic ?? "").normalize("NFKC").trim().replace(/\s+/g, " "); const maxItems = Math.max(1, Math.min(options.maxItems ?? options.limit ?? 8, 50)); const maxTokens = Math.max(500, Math.min(options.maxTokens ?? 6000, 1e5)); - const idempotencyKey = `ctx_${createHash19("sha256").update(["empty", source, purpose, query2, options.topic ?? "", options.since ?? ""].join("\x00")).digest("hex").slice(0, 20)}`; + const idempotencyKey = `ctx_${createHash20("sha256").update(["empty", source, purpose, query2, options.topic ?? "", options.since ?? ""].join("\x00")).digest("hex").slice(0, 20)}`; return { ok: true, format: "knowledge-agent-context-pack", @@ -30241,6 +31620,7 @@ class KnowledgeService { options; ensuredWorkspace; cachedConfig; + cachedProjectLinksAuthority; constructor(options = {}) { this.options = options; } @@ -30265,6 +31645,35 @@ class KnowledgeService { storePathOverridden: false }); } + projectLinksAuthority() { + if (this.options.projectLinksAuthority) + return this.options.projectLinksAuthority; + if (this.cachedProjectLinksAuthority) + return this.cachedProjectLinksAuthority; + if (isKnowledgeApiMode()) { + const { apiKey } = getKnowledgeApiKey(process.env); + if (!apiKey) { + throw new Error("Knowledge project links require the configured API credential in postgres mode."); + } + this.cachedProjectLinksAuthority = createKnowledgeProjectLinksHttpClient({ + baseUrl: resolveKnowledgeApiUrl(this.config(), process.env), + apiKey + }); + return this.cachedProjectLinksAuthority; + } + const workspace = this.ensureWorkspace(); + this.cachedProjectLinksAuthority = createLocalKnowledgeProjectLinksAuthority({ + databasePath: workspace.knowledgeDbPath, + itemStore: this.itemStore(), + options: { + packageVersion: package_default.version, + authorityId: this.options.projectLinksIdentity?.authorityId ?? process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? "knowledge", + tenantId: this.options.projectLinksIdentity?.tenantId ?? process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID ?? "local", + corpusId: this.options.projectLinksIdentity?.corpusId ?? process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? "knowledge" + } + }); + return this.cachedProjectLinksAuthority; + } async listItems(options = {}) { return this.itemStore().list(options); } @@ -31849,6 +33258,1294 @@ function ensureSyncMetaTable(db) { ) `); } +// src/db/pg-migrations.ts +var PG_MIGRATIONS = [ + `CREATE TABLE IF NOT EXISTS sources ( + id TEXT PRIMARY KEY, + uri TEXT NOT NULL UNIQUE, + kind TEXT NOT NULL, + title TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + acl_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS wiki_pages ( + id TEXT PRIMARY KEY, + path TEXT NOT NULL UNIQUE, + title TEXT NOT NULL, + artifact_uri TEXT, + content_hash TEXT, + status TEXT NOT NULL DEFAULT 'active', + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS source_revisions ( + id TEXT PRIMARY KEY, + source_id TEXT NOT NULL REFERENCES sources(id) ON DELETE CASCADE, + revision TEXT NOT NULL, + hash TEXT, + extracted_text_uri TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(source_id, revision) + )`, + `CREATE TABLE IF NOT EXISTS chunks ( + id TEXT PRIMARY KEY, + source_revision_id TEXT REFERENCES source_revisions(id) ON DELETE CASCADE, + wiki_page_id TEXT REFERENCES wiki_pages(id) ON DELETE CASCADE, + kind TEXT NOT NULL, + ordinal INTEGER NOT NULL, + text TEXT NOT NULL, + token_count INTEGER, + start_offset INTEGER, + end_offset INTEGER, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS chunk_embeddings ( + id TEXT PRIMARY KEY, + chunk_id TEXT NOT NULL REFERENCES chunks(id) ON DELETE CASCADE, + provider TEXT NOT NULL, + model TEXT NOT NULL, + dimensions INTEGER NOT NULL, + vector_json TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(chunk_id, provider, model) + )`, + `CREATE TABLE IF NOT EXISTS wiki_backlinks ( + from_page_id TEXT NOT NULL REFERENCES wiki_pages(id) ON DELETE CASCADE, + to_page_id TEXT NOT NULL REFERENCES wiki_pages(id) ON DELETE CASCADE, + label TEXT, + created_at TEXT NOT NULL DEFAULT NOW()::text, + PRIMARY KEY(from_page_id, to_page_id) + )`, + `CREATE TABLE IF NOT EXISTS citations ( + id TEXT PRIMARY KEY, + wiki_page_id TEXT REFERENCES wiki_pages(id) ON DELETE CASCADE, + chunk_id TEXT REFERENCES chunks(id) ON DELETE SET NULL, + source_uri TEXT NOT NULL, + quote TEXT, + start_offset INTEGER, + end_offset INTEGER, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS knowledge_indexes ( + id TEXT PRIMARY KEY, + kind TEXT NOT NULL, + name TEXT NOT NULL, + artifact_uri TEXT, + shard_key TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(kind, name, shard_key) + )`, + `CREATE TABLE IF NOT EXISTS runs ( + id TEXT PRIMARY KEY, + type TEXT NOT NULL, + prompt TEXT, + status TEXT NOT NULL, + provider TEXT, + model TEXT, + cost_tokens INTEGER NOT NULL DEFAULT 0, + cost_usd DOUBLE PRECISION NOT NULL DEFAULT 0, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS run_events ( + id TEXT PRIMARY KEY, + run_id TEXT NOT NULL REFERENCES runs(id) ON DELETE CASCADE, + level TEXT NOT NULL, + event TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS provider_usage ( + id TEXT PRIMARY KEY, + run_id TEXT REFERENCES runs(id) ON DELETE SET NULL, + provider TEXT NOT NULL, + model TEXT NOT NULL, + input_tokens INTEGER NOT NULL DEFAULT 0, + output_tokens INTEGER NOT NULL DEFAULT 0, + cost_usd DOUBLE PRECISION NOT NULL DEFAULT 0, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS redaction_findings ( + id TEXT PRIMARY KEY, + source_uri TEXT, + run_id TEXT REFERENCES runs(id) ON DELETE SET NULL, + severity TEXT NOT NULL, + finding_type TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS storage_objects ( + id TEXT PRIMARY KEY, + artifact_uri TEXT NOT NULL UNIQUE, + kind TEXT NOT NULL, + content_type TEXT, + hash TEXT, + size_bytes INTEGER, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS audit_events ( + id TEXT PRIMARY KEY, + event_type TEXT NOT NULL, + action TEXT NOT NULL, + target_uri TEXT, + decision TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS approval_gates ( + id TEXT PRIMARY KEY, + action TEXT NOT NULL, + target_uri TEXT, + status TEXT NOT NULL, + reason TEXT, + approved_by TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS vector_index_entries ( + id TEXT PRIMARY KEY, + chunk_id TEXT NOT NULL REFERENCES chunks(id) ON DELETE CASCADE, + source_revision_id TEXT REFERENCES source_revisions(id) ON DELETE CASCADE, + provider TEXT NOT NULL, + model TEXT NOT NULL, + dimensions INTEGER NOT NULL, + vector_json TEXT NOT NULL, + vector_norm DOUBLE PRECISION NOT NULL, + source_uri TEXT, + source_ref TEXT, + revision TEXT, + hash TEXT, + start_offset INTEGER, + end_offset INTEGER, + token_count INTEGER, + status TEXT NOT NULL DEFAULT 'active', + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(chunk_id, provider, model) + )`, + `CREATE TABLE IF NOT EXISTS reindex_queue ( + id TEXT PRIMARY KEY, + kind TEXT NOT NULL, + target_id TEXT NOT NULL, + source_uri TEXT, + reason TEXT NOT NULL, + status TEXT NOT NULL DEFAULT 'pending', + attempts INTEGER NOT NULL DEFAULT 0, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(kind, target_id, reason) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_machines ( + machine_id TEXT PRIMARY KEY, + hostname TEXT, + platform TEXT, + user_label TEXT, + workspace_home TEXT, + tailscale_dns TEXT, + tailscale_ips_json TEXT NOT NULL DEFAULT '[]', + ssh_target TEXT, + last_seen_at TEXT, + capabilities_json TEXT NOT NULL DEFAULT '{}', + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS knowledge_sync_snapshots ( + id TEXT PRIMARY KEY, + machine_id TEXT NOT NULL, + scope TEXT NOT NULL, + workspace_home TEXT NOT NULL, + sqlite_schema_version INTEGER NOT NULL, + artifact_root_uri TEXT NOT NULL, + content_hash TEXT NOT NULL, + tables_json TEXT NOT NULL, + artifact_hashes_json TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS knowledge_sync_changes ( + id TEXT PRIMARY KEY, + origin_machine_id TEXT NOT NULL, + updated_by_machine_id TEXT NOT NULL, + entity_kind TEXT NOT NULL, + entity_id TEXT NOT NULL, + operation TEXT NOT NULL, + base_hash TEXT, + next_hash TEXT, + source_ref TEXT, + source_revision_id TEXT, + artifact_uri TEXT, + logical_clock INTEGER NOT NULL DEFAULT 0, + bundle_id TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `ALTER TABLE knowledge_sync_changes ADD COLUMN IF NOT EXISTS logical_clock INTEGER NOT NULL DEFAULT 0`, + `ALTER TABLE knowledge_sync_changes ADD COLUMN IF NOT EXISTS bundle_id TEXT`, + `CREATE TABLE IF NOT EXISTS knowledge_sync_conflicts ( + id TEXT PRIMARY KEY, + entity_kind TEXT NOT NULL, + entity_id TEXT NOT NULL, + local_machine_id TEXT NOT NULL, + remote_machine_id TEXT NOT NULL, + local_hash TEXT, + remote_hash TEXT, + base_hash TEXT, + status TEXT NOT NULL, + resolution_strategy TEXT, + proposed_patch_uri TEXT, + approved_by TEXT, + resolved_at TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE TABLE IF NOT EXISTS knowledge_sync_table_clocks ( + table_name TEXT NOT NULL, + machine_id TEXT NOT NULL, + logical_clock INTEGER NOT NULL DEFAULT 0, + high_water_hash TEXT, + high_water_bundle_id TEXT, + origin_machine_id TEXT, + updated_by_machine_id TEXT, + last_applied_at TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + PRIMARY KEY(table_name, machine_id) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_sync_imports ( + bundle_id TEXT PRIMARY KEY, + source_machine_id TEXT NOT NULL, + target_machine_id TEXT NOT NULL, + direction TEXT NOT NULL, + status TEXT NOT NULL, + content_hash TEXT NOT NULL, + table_clocks_json TEXT NOT NULL, + tables_json TEXT NOT NULL, + generated_at TEXT NOT NULL, + applied_at TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}' + )`, + `CREATE INDEX IF NOT EXISTS idx_source_revisions_source ON source_revisions(source_id)`, + `CREATE INDEX IF NOT EXISTS idx_chunks_source_revision ON chunks(source_revision_id)`, + `CREATE INDEX IF NOT EXISTS idx_chunks_wiki_page ON chunks(wiki_page_id)`, + `CREATE INDEX IF NOT EXISTS idx_citations_wiki_page ON citations(wiki_page_id)`, + `CREATE INDEX IF NOT EXISTS idx_citations_chunk ON citations(chunk_id)`, + `CREATE INDEX IF NOT EXISTS idx_run_events_run ON run_events(run_id)`, + `CREATE INDEX IF NOT EXISTS idx_provider_usage_run ON provider_usage(run_id)`, + `CREATE INDEX IF NOT EXISTS idx_audit_events_action ON audit_events(action)`, + `CREATE INDEX IF NOT EXISTS idx_audit_events_target ON audit_events(target_uri)`, + `CREATE INDEX IF NOT EXISTS idx_audit_events_created ON audit_events(created_at)`, + `CREATE INDEX IF NOT EXISTS idx_approval_gates_action ON approval_gates(action)`, + `CREATE INDEX IF NOT EXISTS idx_approval_gates_status ON approval_gates(status)`, + `CREATE INDEX IF NOT EXISTS idx_vector_index_provider_model ON vector_index_entries(provider, model)`, + `CREATE INDEX IF NOT EXISTS idx_vector_index_source_revision ON vector_index_entries(source_revision_id)`, + `CREATE INDEX IF NOT EXISTS idx_vector_index_source_uri ON vector_index_entries(source_uri)`, + `CREATE INDEX IF NOT EXISTS idx_vector_index_status ON vector_index_entries(status)`, + `CREATE INDEX IF NOT EXISTS idx_reindex_queue_status ON reindex_queue(status)`, + `CREATE INDEX IF NOT EXISTS idx_reindex_queue_kind_target ON reindex_queue(kind, target_id)`, + `CREATE INDEX IF NOT EXISTS idx_reindex_queue_source_uri ON reindex_queue(source_uri)`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_machines_last_seen ON knowledge_machines(last_seen_at)`, + `CREATE INDEX IF NOT EXISTS idx_sync_snapshots_machine_created ON knowledge_sync_snapshots(machine_id, created_at)`, + `CREATE INDEX IF NOT EXISTS idx_sync_snapshots_hash ON knowledge_sync_snapshots(content_hash)`, + `CREATE INDEX IF NOT EXISTS idx_sync_changes_entity ON knowledge_sync_changes(entity_kind, entity_id)`, + `CREATE INDEX IF NOT EXISTS idx_sync_changes_origin ON knowledge_sync_changes(origin_machine_id)`, + `CREATE INDEX IF NOT EXISTS idx_sync_changes_created ON knowledge_sync_changes(created_at)`, + `CREATE INDEX IF NOT EXISTS idx_sync_changes_bundle ON knowledge_sync_changes(bundle_id)`, + `CREATE INDEX IF NOT EXISTS idx_sync_changes_clock ON knowledge_sync_changes(entity_kind, logical_clock)`, + `CREATE INDEX IF NOT EXISTS idx_sync_conflicts_status ON knowledge_sync_conflicts(status)`, + `CREATE INDEX IF NOT EXISTS idx_sync_conflicts_entity ON knowledge_sync_conflicts(entity_kind, entity_id)`, + `CREATE INDEX IF NOT EXISTS idx_sync_table_clocks_machine ON knowledge_sync_table_clocks(machine_id)`, + `CREATE INDEX IF NOT EXISTS idx_sync_table_clocks_updated ON knowledge_sync_table_clocks(updated_at)`, + `CREATE INDEX IF NOT EXISTS idx_sync_imports_source ON knowledge_sync_imports(source_machine_id, applied_at)`, + `CREATE INDEX IF NOT EXISTS idx_sync_imports_target ON knowledge_sync_imports(target_machine_id, applied_at)`, + `CREATE INDEX IF NOT EXISTS idx_sync_imports_status ON knowledge_sync_imports(status)`, + `CREATE TABLE IF NOT EXISTS knowledge_items ( + id TEXT PRIMARY KEY, + short_id TEXT, + title TEXT NOT NULL, + content TEXT NOT NULL DEFAULT '', + url TEXT, + tags JSONB NOT NULL DEFAULT '[]'::jsonb, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + archived BOOLEAN NOT NULL DEFAULT FALSE, + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_short_id ON knowledge_items(short_id)`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_archived ON knowledge_items(archived)`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_created ON knowledge_items(created_at)`, + `ALTER TABLE knowledge_items + ADD COLUMN IF NOT EXISTS search_vector tsvector + GENERATED ALWAYS AS ( + setweight(to_tsvector('english', coalesce(title, '')), 'A') || + setweight(to_tsvector('english', coalesce(content, '')), 'B') + ) STORED`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_search_vector + ON knowledge_items USING GIN (search_vector)`, + `ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS version INTEGER NOT NULL DEFAULT 1`, + `CREATE TABLE IF NOT EXISTS knowledge_item_versions ( + id TEXT PRIMARY KEY, + item_id TEXT NOT NULL REFERENCES knowledge_items(id) ON DELETE CASCADE, + tenant_id TEXT, + version INTEGER NOT NULL, + title TEXT NOT NULL, + content TEXT, + body_uri TEXT, + content_hash TEXT NOT NULL, + content_bytes INTEGER NOT NULL, + url TEXT, + tags JSONB NOT NULL DEFAULT '[]'::jsonb, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + archived BOOLEAN NOT NULL DEFAULT FALSE, + actor TEXT, + reason TEXT, + valid_from TEXT, + valid_to TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + UNIQUE(item_id, version) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_item_versions_item + ON knowledge_item_versions(item_id, version DESC)`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_item_versions_hash + ON knowledge_item_versions(content_hash)`, + `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) + IS NOT DISTINCT FROM + (NEW.title, NEW.content, NEW.url, NEW.tags, NEW.metadata, NEW.archived) THEN + -- No content-bearing change: no version, no snapshot. Pin the counter so + -- a caller cannot move it on a write the trigger otherwise ignores. + 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"')); + + -- The bump and the snapshot are ONE write. The counter advances by exactly + -- one and only here, so a caller can neither skip it nor forge it. + NEW.version := OLD.version + 1; + + -- updated_at is TEXT and the application fills it with toISOString(), so + -- the trigger must write the SAME shape. NOW()::text renders as + -- '2026-07-28 21:29:56.01+00'; space (0x20) sorts below 'T' (0x54), so a + -- column carrying both formats orders every trigger-written row before + -- every application-written one regardless of actual time, and valid_from + -- (copied verbatim from the row below) would stop being comparable with + -- valid_to. One format, no casts needed at read time. + -- + -- Only stamped when the caller did NOT set it. Import, sync replay, and + -- backfill carry a SOURCE timestamp and kept it before this trigger + -- existed; silently replacing it would be a regression. A writer that says + -- nothing still gets a truthful advance. + 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`, + `DO $knowledge_item_version_trigger$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_trigger + WHERE tgname = 'trg_knowledge_items_version' + AND tgrelid = 'knowledge_items'::regclass + ) THEN + CREATE TRIGGER trg_knowledge_items_version + BEFORE UPDATE ON knowledge_items + FOR EACH ROW EXECUTE FUNCTION knowledge_items_version_snapshot(); + END IF; + END + $knowledge_item_version_trigger$`, + `ALTER TABLE knowledge_items ENABLE ALWAYS TRIGGER trg_knowledge_items_version`, + `CREATE OR REPLACE FUNCTION knowledge_item_versions_append_only() + RETURNS TRIGGER AS $knowledge_item_versions_append_only$ + BEGIN + RAISE EXCEPTION 'knowledge_item_versions is append-only: version % of item % cannot be rewritten', + OLD.version, OLD.item_id + USING ERRCODE = 'restrict_violation'; + END + $knowledge_item_versions_append_only$ LANGUAGE plpgsql`, + `DO $knowledge_item_versions_guard$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_trigger + WHERE tgname = 'trg_knowledge_item_versions_append_only' + AND tgrelid = 'knowledge_item_versions'::regclass + ) THEN + CREATE TRIGGER trg_knowledge_item_versions_append_only + BEFORE UPDATE ON knowledge_item_versions + FOR EACH ROW EXECUTE FUNCTION knowledge_item_versions_append_only(); + END IF; + END + $knowledge_item_versions_guard$`, + `ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only`, + `ALTER TABLE knowledge_items + ADD COLUMN IF NOT EXISTS authority_classification TEXT, + ADD COLUMN IF NOT EXISTS authority_id TEXT, + ADD COLUMN IF NOT EXISTS tenant_id TEXT, + ADD COLUMN IF NOT EXISTS scope TEXT, + ADD COLUMN IF NOT EXISTS parent_id TEXT`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_binding + ON knowledge_items(authority_classification, authority_id, tenant_id, scope, parent_id, id)`, + `CREATE TABLE IF NOT EXISTS knowledge_guarded_write_manifests ( + manifest_id TEXT PRIMARY KEY, + manifest_receipt_id TEXT NOT NULL UNIQUE, + deterministic_key TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + manifest_digest TEXT NOT NULL, + maintainer_authority_classification TEXT NOT NULL, + maintainer_authority_id TEXT NOT NULL, + maintainer_tenant_id TEXT NOT NULL, + maintainer_scope TEXT NOT NULL, + maintainer_parent_id TEXT NOT NULL, + step_count INTEGER NOT NULL, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + CHECK (maintainer_authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (step_count BETWEEN 2 AND 64) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_guarded_write_manifest_steps ( + manifest_id TEXT NOT NULL REFERENCES knowledge_guarded_write_manifests(manifest_id), + ordinal INTEGER NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + deterministic_key TEXT NOT NULL, + verb TEXT NOT NULL, + target_id TEXT NOT NULL, + semantic_digest TEXT NOT NULL, + precondition_kind TEXT NOT NULL, + expected_version INTEGER, + dependencies JSONB NOT NULL, + limits JSONB NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + recovery_strategy TEXT NOT NULL, + recovery_operation_id TEXT NOT NULL, + recovery_step_id TEXT NOT NULL, + recovery_deterministic_key TEXT NOT NULL, + recovery_verb TEXT NOT NULL, + recovery_target_id TEXT NOT NULL, + recovery_semantic_digest TEXT NOT NULL, + recovery_precondition_kind TEXT NOT NULL, + recovery_expected_version INTEGER, + recovery_authority_classification TEXT NOT NULL, + recovery_authority_id TEXT NOT NULL, + recovery_tenant_id TEXT NOT NULL, + recovery_scope TEXT NOT NULL, + recovery_parent_id TEXT NOT NULL, + recovery_limits JSONB NOT NULL, + recovery_receipt_scope TEXT, + recovery_compensates_receipt_id TEXT, + PRIMARY KEY (manifest_id, ordinal), + UNIQUE (manifest_id, deterministic_key), + CHECK (ordinal >= 0), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (recovery_authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (verb IN ('create', 'update')), + CHECK (recovery_verb IN ('create', 'update')), + CHECK ( + (verb = 'create' AND precondition_kind = 'absent' AND expected_version IS NULL) + OR + (verb = 'update' AND precondition_kind = 'version' AND expected_version >= 1) + ), + CHECK ( + ( + recovery_verb = 'create' + AND recovery_precondition_kind = 'absent' + AND recovery_expected_version IS NULL + ) + OR + ( + recovery_verb = 'update' + AND recovery_precondition_kind = 'version' + AND recovery_expected_version >= 1 + ) + ), + CHECK (recovery_strategy IN ('forward_repair', 'receipt_scoped_compensation')), + CHECK ( + (recovery_strategy = 'forward_repair' AND recovery_receipt_scope IS NULL) + OR + ( + recovery_strategy = 'receipt_scoped_compensation' + AND recovery_receipt_scope = 'accepted_step_receipt' + AND recovery_compensates_receipt_id IS NOT NULL + ) + ), + CHECK ( + recovery_strategy = 'receipt_scoped_compensation' + OR recovery_compensates_receipt_id IS NULL + ) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_guarded_manifest_step_operation + ON knowledge_guarded_write_manifest_steps( + authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id + )`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_manifest_immutable() + RETURNS TRIGGER AS $knowledge_guarded_manifest_immutable$ + BEGIN + RAISE EXCEPTION 'knowledge guarded workflow manifests are immutable' + USING ERRCODE = 'restrict_violation'; + END + $knowledge_guarded_manifest_immutable$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_manifest_immutable ON knowledge_guarded_write_manifests`, + `CREATE TRIGGER trg_knowledge_guarded_manifest_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_manifests + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_manifest_immutable()`, + `ALTER TABLE knowledge_guarded_write_manifests ENABLE ALWAYS TRIGGER trg_knowledge_guarded_manifest_immutable`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_manifest_steps_immutable + ON knowledge_guarded_write_manifest_steps`, + `CREATE TRIGGER trg_knowledge_guarded_manifest_steps_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_manifest_steps + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_manifest_immutable()`, + `ALTER TABLE knowledge_guarded_write_manifest_steps + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_manifest_steps_immutable`, + `CREATE TABLE IF NOT EXISTS knowledge_guarded_write_claims ( + deterministic_key TEXT PRIMARY KEY, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + verb TEXT NOT NULL, + target_id TEXT NOT NULL, + payload_digest TEXT NOT NULL, + precondition_kind TEXT NOT NULL, + expected_version INTEGER, + manifest_id TEXT, + manifest_ordinal INTEGER, + manifest_phase TEXT, + compensates_receipt_id TEXT, + receipt_id TEXT, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + FOREIGN KEY (manifest_id, manifest_ordinal) + REFERENCES knowledge_guarded_write_manifest_steps(manifest_id, ordinal), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (verb IN ('create', 'update')), + CHECK ( + (verb = 'create' AND precondition_kind = 'absent' AND expected_version IS NULL) + OR + (verb = 'update' AND precondition_kind = 'version' AND expected_version >= 1) + ), + CHECK ( + ( + manifest_id IS NULL AND manifest_ordinal IS NULL + AND manifest_phase IS NULL AND compensates_receipt_id IS NULL + ) + OR ( + manifest_id IS NOT NULL AND manifest_ordinal IS NOT NULL + AND manifest_phase IN ('primary', 'recovery') + AND ( + (manifest_phase = 'primary' AND compensates_receipt_id IS NULL) + OR manifest_phase = 'recovery' + ) + ) + ), + UNIQUE(authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id) + )`, + `CREATE UNIQUE INDEX IF NOT EXISTS idx_knowledge_guarded_claim_receipt + ON knowledge_guarded_write_claims(receipt_id) WHERE receipt_id IS NOT NULL`, + `CREATE TABLE IF NOT EXISTS knowledge_guarded_write_receipts ( + receipt_id TEXT PRIMARY KEY, + deterministic_key TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + verb TEXT NOT NULL, + target_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + payload_digest TEXT NOT NULL, + precondition_kind TEXT NOT NULL, + expected_version INTEGER, + manifest_id TEXT, + manifest_ordinal INTEGER, + manifest_phase TEXT, + compensates_receipt_id TEXT, + status TEXT NOT NULL, + code TEXT NOT NULL, + effect_count INTEGER NOT NULL, + result_id TEXT, + result_version INTEGER, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + FOREIGN KEY (manifest_id, manifest_ordinal) + REFERENCES knowledge_guarded_write_manifest_steps(manifest_id, ordinal), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (verb IN ('create', 'update')), + CHECK ( + (verb = 'create' AND precondition_kind = 'absent' AND expected_version IS NULL) + OR + (verb = 'update' AND precondition_kind = 'version' AND expected_version >= 1) + ), + CHECK ( + ( + manifest_id IS NULL AND manifest_ordinal IS NULL + AND manifest_phase IS NULL AND compensates_receipt_id IS NULL + ) + OR ( + manifest_id IS NOT NULL AND manifest_ordinal IS NOT NULL + AND manifest_phase IN ('primary', 'recovery') + AND ( + (manifest_phase = 'primary' AND compensates_receipt_id IS NULL) + OR manifest_phase = 'recovery' + ) + ) + ), + CHECK (status IN ('accepted', 'rejected')), + CHECK (effect_count IN (0, 1)), + CHECK ( + (status = 'accepted' AND effect_count = 1 AND result_id IS NOT NULL AND result_version IS NOT NULL) + OR + (status = 'rejected' AND effect_count = 0 AND result_id IS NULL AND result_version IS NULL) + ) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_guarded_receipt_operation + ON knowledge_guarded_write_receipts( + authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id + )`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_claim_once() + RETURNS TRIGGER AS $knowledge_guarded_claim_once$ + BEGIN + IF TG_OP = 'DELETE' THEN + RAISE EXCEPTION 'knowledge guarded write claims are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + IF (OLD.deterministic_key, OLD.operation_id, OLD.step_id, + OLD.authority_classification, OLD.authority_id, OLD.tenant_id, + OLD.scope, OLD.parent_id, OLD.verb, OLD.target_id, + OLD.payload_digest, OLD.precondition_kind, OLD.expected_version, + OLD.manifest_id, OLD.manifest_ordinal, OLD.manifest_phase, + OLD.compensates_receipt_id, OLD.created_at) + IS DISTINCT FROM + (NEW.deterministic_key, NEW.operation_id, NEW.step_id, + NEW.authority_classification, NEW.authority_id, NEW.tenant_id, + NEW.scope, NEW.parent_id, NEW.verb, NEW.target_id, + NEW.payload_digest, NEW.precondition_kind, NEW.expected_version, + NEW.manifest_id, NEW.manifest_ordinal, NEW.manifest_phase, + NEW.compensates_receipt_id, NEW.created_at) + OR OLD.receipt_id IS NOT NULL + OR NEW.receipt_id IS NULL THEN + RAISE EXCEPTION 'knowledge guarded write claim may only bind one terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_claim_once$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_claim_once ON knowledge_guarded_write_claims`, + `CREATE TRIGGER trg_knowledge_guarded_claim_once + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_claims + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_claim_once()`, + `ALTER TABLE knowledge_guarded_write_claims ENABLE ALWAYS TRIGGER trg_knowledge_guarded_claim_once`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_receipts_immutable() + RETURNS TRIGGER AS $knowledge_guarded_receipts_immutable$ + BEGIN + RAISE EXCEPTION 'knowledge guarded write receipts are immutable' + USING ERRCODE = 'restrict_violation'; + END + $knowledge_guarded_receipts_immutable$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_receipts_immutable ON knowledge_guarded_write_receipts`, + `CREATE TRIGGER trg_knowledge_guarded_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_receipts_immutable()`, + `ALTER TABLE knowledge_guarded_write_receipts ENABLE ALWAYS TRIGGER trg_knowledge_guarded_receipts_immutable`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_item_authority() + RETURNS TRIGGER AS $knowledge_guarded_item_authority$ + DECLARE + claim_key TEXT; + claim_matches BOOLEAN; + BEGIN + IF TG_OP = 'DELETE' THEN + IF OLD.authority_classification IS NULL THEN + RETURN OLD; + END IF; + RAISE EXCEPTION 'guarded knowledge items cannot be deleted outside a declared FCAME-1 action' + USING ERRCODE = 'restrict_violation'; + END IF; + + IF TG_OP = 'INSERT' AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF TG_OP = 'UPDATE' + AND OLD.authority_classification IS NULL + AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF NEW.authority_classification IS NULL OR NEW.authority_id IS NULL + OR NEW.tenant_id IS NULL OR NEW.scope IS NULL OR NEW.parent_id IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item binding must be complete' + USING ERRCODE = 'check_violation'; + END IF; + + IF TG_OP = 'UPDATE' AND ( + OLD.id IS DISTINCT FROM NEW.id + OR OLD.authority_classification IS DISTINCT FROM NEW.authority_classification + OR OLD.authority_id IS DISTINCT FROM NEW.authority_id + OR OLD.tenant_id IS DISTINCT FROM NEW.tenant_id + OR OLD.scope IS DISTINCT FROM NEW.scope + OR OLD.parent_id IS DISTINCT FROM NEW.parent_id + ) THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + + claim_key := NULLIF( + current_setting('hasna.knowledge_guarded_deterministic_key', true), + '' + ); + IF claim_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item mutation requires an FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_write_claims AS claim + WHERE claim.deterministic_key = claim_key + AND claim.receipt_id IS NULL + AND claim.target_id = NEW.id + AND claim.authority_classification = NEW.authority_classification + AND claim.authority_id = NEW.authority_id + AND claim.tenant_id = NEW.tenant_id + AND claim.scope = NEW.scope + AND claim.parent_id = NEW.parent_id + AND ( + ( + TG_OP = 'INSERT' + AND claim.verb = 'create' + AND claim.precondition_kind = 'absent' + ) + OR ( + TG_OP = 'UPDATE' + AND claim.verb = 'update' + AND claim.precondition_kind = 'version' + AND claim.expected_version = OLD.version + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item mutation does not match its live FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_authority$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_items_00_guarded_authority ON knowledge_items`, + `CREATE TRIGGER trg_knowledge_items_00_guarded_authority + BEFORE INSERT OR UPDATE OR DELETE ON knowledge_items + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_item_authority()`, + `ALTER TABLE knowledge_items ENABLE ALWAYS TRIGGER trg_knowledge_items_00_guarded_authority`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_item_authority() + RETURNS TRIGGER AS $knowledge_guarded_item_authority$ + DECLARE + claim_key TEXT; + claim_matches BOOLEAN; + BEGIN + IF TG_OP = 'DELETE' THEN + IF OLD.authority_classification IS NULL THEN + RETURN OLD; + END IF; + RAISE EXCEPTION 'guarded knowledge items cannot be deleted outside a declared FCAME-1 action' + USING ERRCODE = 'restrict_violation'; + END IF; + + IF TG_OP = 'INSERT' AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF TG_OP = 'UPDATE' + AND OLD.authority_classification IS NULL + AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF NEW.authority_classification IS NULL OR NEW.authority_id IS NULL + OR NEW.tenant_id IS NULL OR NEW.scope IS NULL OR NEW.parent_id IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item binding must be complete' + USING ERRCODE = 'check_violation'; + END IF; + + IF TG_OP = 'UPDATE' AND ( + OLD.id IS DISTINCT FROM NEW.id + OR OLD.authority_classification IS DISTINCT FROM NEW.authority_classification + OR OLD.authority_id IS DISTINCT FROM NEW.authority_id + OR OLD.tenant_id IS DISTINCT FROM NEW.tenant_id + OR OLD.scope IS DISTINCT FROM NEW.scope + OR OLD.parent_id IS DISTINCT FROM NEW.parent_id + ) THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + + claim_key := NULLIF( + current_setting('hasna.knowledge_guarded_deterministic_key', true), + '' + ); + IF claim_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item mutation requires an FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_write_claims AS claim + WHERE claim.deterministic_key = claim_key + AND claim.receipt_id IS NULL + AND claim.target_id = NEW.id + AND claim.authority_classification = NEW.authority_classification + AND claim.authority_id = NEW.authority_id + AND claim.tenant_id = NEW.tenant_id::text + AND claim.scope = NEW.scope + AND claim.parent_id = NEW.parent_id + AND ( + ( + TG_OP = 'INSERT' + AND claim.verb = 'create' + AND claim.precondition_kind = 'absent' + ) + OR ( + TG_OP = 'UPDATE' + AND claim.verb = 'update' + AND claim.precondition_kind = 'version' + AND claim.expected_version = OLD.version + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item mutation does not match its live FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_authority$ LANGUAGE plpgsql`, + `ALTER TABLE knowledge_items + ADD COLUMN IF NOT EXISTS guarded_adoption_receipt_id TEXT`, + `CREATE TABLE IF NOT EXISTS knowledge_guarded_adoption_claims ( + deterministic_key TEXT PRIMARY KEY, + planned_receipt_id TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL, + target_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + expected_version INTEGER NOT NULL, + expected_content_sha256 TEXT NOT NULL, + adoption_receipt_id TEXT, + receipt_id TEXT, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + CHECK (action IN ('adopt', 'rollback')), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (expected_version >= 1), + CHECK (expected_content_sha256 ~ '^[0-9a-f]{64}$'), + CHECK ( + (action = 'adopt' AND adoption_receipt_id IS NULL) + OR (action = 'rollback' AND adoption_receipt_id IS NOT NULL) + ), + UNIQUE(authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id) + )`, + `CREATE UNIQUE INDEX IF NOT EXISTS idx_knowledge_guarded_adoption_claim_receipt + ON knowledge_guarded_adoption_claims(receipt_id) WHERE receipt_id IS NOT NULL`, + `CREATE TABLE IF NOT EXISTS knowledge_guarded_adoption_receipts ( + receipt_id TEXT PRIMARY KEY, + deterministic_key TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL, + target_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + expected_version INTEGER NOT NULL, + expected_content_sha256 TEXT NOT NULL, + adoption_receipt_id TEXT, + prior_tenant_id TEXT, + status TEXT NOT NULL, + code TEXT NOT NULL, + effect_count INTEGER NOT NULL, + result_version INTEGER, + result_content_sha256 TEXT, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + CHECK (action IN ('adopt', 'rollback')), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (expected_version >= 1), + CHECK (expected_content_sha256 ~ '^[0-9a-f]{64}$'), + CHECK ( + (action = 'adopt' AND adoption_receipt_id IS NULL) + OR (action = 'rollback' AND adoption_receipt_id IS NOT NULL) + ), + CHECK (status IN ('accepted', 'rejected')), + CHECK (effect_count IN (0, 1)), + CHECK ( + ( + status = 'accepted' AND effect_count = 1 + AND result_version IS NOT NULL AND result_content_sha256 IS NOT NULL + ) + OR ( + status = 'rejected' AND effect_count = 0 + AND result_version IS NULL AND result_content_sha256 IS NULL + ) + ) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_guarded_adoption_receipt_operation + ON knowledge_guarded_adoption_receipts( + authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id + )`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_adoption_claim_once() + RETURNS TRIGGER AS $knowledge_guarded_adoption_claim_once$ + BEGIN + IF TG_OP = 'DELETE' THEN + RAISE EXCEPTION 'knowledge guarded adoption claims are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + IF (OLD.deterministic_key, OLD.planned_receipt_id, + OLD.operation_id, OLD.step_id, OLD.action, + OLD.target_id, OLD.authority_classification, OLD.authority_id, + OLD.tenant_id, OLD.scope, OLD.parent_id, OLD.expected_version, + OLD.expected_content_sha256, OLD.adoption_receipt_id, OLD.created_at) + IS DISTINCT FROM + (NEW.deterministic_key, NEW.planned_receipt_id, + NEW.operation_id, NEW.step_id, NEW.action, + NEW.target_id, NEW.authority_classification, NEW.authority_id, + NEW.tenant_id, NEW.scope, NEW.parent_id, NEW.expected_version, + NEW.expected_content_sha256, NEW.adoption_receipt_id, NEW.created_at) + OR OLD.receipt_id IS NOT NULL + OR NEW.receipt_id IS NULL THEN + RAISE EXCEPTION 'knowledge guarded adoption claim may only bind one terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_adoption_claim_once$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_adoption_claim_once + ON knowledge_guarded_adoption_claims`, + `CREATE TRIGGER trg_knowledge_guarded_adoption_claim_once + BEFORE UPDATE OR DELETE ON knowledge_guarded_adoption_claims + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_adoption_claim_once()`, + `ALTER TABLE knowledge_guarded_adoption_claims + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_adoption_claim_once`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_adoption_receipts_immutable() + RETURNS TRIGGER AS $knowledge_guarded_adoption_receipts_immutable$ + BEGIN + RAISE EXCEPTION 'knowledge guarded adoption receipts are immutable' + USING ERRCODE = 'restrict_violation'; + END + $knowledge_guarded_adoption_receipts_immutable$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_adoption_receipts_immutable + ON knowledge_guarded_adoption_receipts`, + `CREATE TRIGGER trg_knowledge_guarded_adoption_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_adoption_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_adoption_receipts_immutable()`, + `ALTER TABLE knowledge_guarded_adoption_receipts + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_adoption_receipts_immutable`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_item_authority() + RETURNS TRIGGER AS $knowledge_guarded_item_authority$ + DECLARE + claim_key TEXT; + adoption_key TEXT; + claim_matches BOOLEAN; + binding_changed BOOLEAN; + BEGIN + IF TG_OP = 'DELETE' THEN + IF OLD.authority_classification IS NULL THEN + RETURN OLD; + END IF; + RAISE EXCEPTION 'guarded knowledge items cannot be deleted outside a declared FCAME-1 action' + USING ERRCODE = 'restrict_violation'; + END IF; + + IF TG_OP = 'INSERT' AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF TG_OP = 'UPDATE' + AND OLD.authority_classification IS NULL + AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + binding_changed := TG_OP = 'UPDATE' AND ( + OLD.id IS DISTINCT FROM NEW.id + OR OLD.authority_classification IS DISTINCT FROM NEW.authority_classification + OR OLD.authority_id IS DISTINCT FROM NEW.authority_id + OR OLD.tenant_id IS DISTINCT FROM NEW.tenant_id + OR OLD.scope IS DISTINCT FROM NEW.scope + OR OLD.parent_id IS DISTINCT FROM NEW.parent_id + ); + + IF binding_changed THEN + adoption_key := NULLIF( + current_setting('hasna.knowledge_guarded_adoption_key', true), + '' + ); + IF adoption_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_adoption_claims AS claim + WHERE claim.deterministic_key = adoption_key + AND claim.receipt_id IS NULL + AND claim.target_id = OLD.id + AND claim.expected_version = OLD.version + AND claim.expected_content_sha256 = + encode(sha256(convert_to(coalesce(OLD.content, ''), 'UTF8')), 'hex') + AND ( + OLD.short_id, OLD.title, OLD.content, OLD.url, OLD.tags, + OLD.metadata, OLD.archived, OLD.created_at, OLD.updated_at, OLD.version + ) IS NOT DISTINCT FROM ( + NEW.short_id, NEW.title, NEW.content, NEW.url, NEW.tags, + NEW.metadata, NEW.archived, NEW.created_at, NEW.updated_at, NEW.version + ) + AND ( + ( + claim.action = 'adopt' + AND OLD.authority_classification IS NULL + AND OLD.authority_id IS NULL + AND OLD.scope IS NULL + AND OLD.parent_id IS NULL + AND ( + OLD.tenant_id IS NULL + OR OLD.tenant_id::text = claim.tenant_id + ) + AND NEW.authority_classification = claim.authority_classification + AND NEW.authority_id = claim.authority_id + AND NEW.tenant_id::text = claim.tenant_id + AND NEW.scope = claim.scope + AND NEW.parent_id = claim.parent_id + AND NEW.guarded_adoption_receipt_id = claim.planned_receipt_id + ) + OR ( + claim.action = 'rollback' + AND claim.adoption_receipt_id IS NOT NULL + AND OLD.authority_classification = claim.authority_classification + AND OLD.authority_id = claim.authority_id + AND OLD.tenant_id::text = claim.tenant_id + AND OLD.scope = claim.scope + AND OLD.parent_id = claim.parent_id + AND OLD.guarded_adoption_receipt_id = claim.adoption_receipt_id + AND NEW.authority_classification IS NULL + AND NEW.authority_id IS NULL + AND NEW.scope IS NULL + AND NEW.parent_id IS NULL + AND NEW.guarded_adoption_receipt_id IS NULL + AND NEW.tenant_id::text IS NOT DISTINCT FROM ( + SELECT receipt.prior_tenant_id + FROM knowledge_guarded_adoption_receipts AS receipt + WHERE receipt.receipt_id = claim.adoption_receipt_id + AND receipt.action = 'adopt' + AND receipt.status = 'accepted' + AND receipt.effect_count = 1 + ) + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item binding transition does not match its live adoption claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END IF; + + IF NEW.authority_classification IS NULL OR NEW.authority_id IS NULL + OR NEW.tenant_id IS NULL OR NEW.scope IS NULL OR NEW.parent_id IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item binding must be complete' + USING ERRCODE = 'check_violation'; + END IF; + + claim_key := NULLIF( + current_setting('hasna.knowledge_guarded_deterministic_key', true), + '' + ); + IF claim_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item mutation requires an FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_write_claims AS claim + WHERE claim.deterministic_key = claim_key + AND claim.receipt_id IS NULL + AND claim.target_id = NEW.id + AND claim.authority_classification = NEW.authority_classification + AND claim.authority_id = NEW.authority_id + AND claim.tenant_id = NEW.tenant_id::text + AND claim.scope = NEW.scope + AND claim.parent_id = NEW.parent_id + AND ( + ( + TG_OP = 'INSERT' + AND claim.verb = 'create' + AND claim.precondition_kind = 'absent' + ) + OR ( + TG_OP = 'UPDATE' + AND claim.verb = 'update' + AND claim.precondition_kind = 'version' + AND claim.expected_version = OLD.version + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item mutation does not match its live FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_authority$ LANGUAGE plpgsql`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_adoption_claim_once() + RETURNS TRIGGER AS $knowledge_guarded_adoption_claim_once$ + BEGIN + IF TG_OP = 'DELETE' THEN + RAISE EXCEPTION 'knowledge guarded adoption claims are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + IF (OLD.deterministic_key, OLD.planned_receipt_id, + OLD.operation_id, OLD.step_id, OLD.action, + OLD.target_id, OLD.authority_classification, OLD.authority_id, + OLD.tenant_id, OLD.scope, OLD.parent_id, OLD.expected_version, + OLD.expected_content_sha256, OLD.adoption_receipt_id, OLD.created_at) + IS DISTINCT FROM + (NEW.deterministic_key, NEW.planned_receipt_id, + NEW.operation_id, NEW.step_id, NEW.action, + NEW.target_id, NEW.authority_classification, NEW.authority_id, + NEW.tenant_id, NEW.scope, NEW.parent_id, NEW.expected_version, + NEW.expected_content_sha256, NEW.adoption_receipt_id, NEW.created_at) + OR OLD.receipt_id IS NOT NULL + OR NEW.receipt_id IS NULL THEN + RAISE EXCEPTION 'knowledge guarded adoption claim may only bind one terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + IF NEW.receipt_id IS DISTINCT FROM OLD.planned_receipt_id THEN + RAISE EXCEPTION 'knowledge guarded adoption claim receipt must match its planned terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_adoption_claim_once$ LANGUAGE plpgsql`, + `CREATE OR REPLACE FUNCTION knowledge_guarded_item_id_immutable() + RETURNS TRIGGER AS $knowledge_guarded_item_id_immutable$ + BEGIN + IF OLD.id IS DISTINCT FROM NEW.id + AND NULLIF( + current_setting('hasna.knowledge_guarded_adoption_key', true), + '' + ) IS NOT NULL THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_id_immutable$ LANGUAGE plpgsql`, + `DROP TRIGGER IF EXISTS trg_knowledge_guarded_00_item_id_immutable + ON knowledge_items`, + `CREATE TRIGGER trg_knowledge_guarded_00_item_id_immutable + BEFORE UPDATE OF id ON knowledge_items + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_item_id_immutable()`, + `ALTER TABLE knowledge_items + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_00_item_id_immutable`, + `ALTER TABLE knowledge_items + DROP CONSTRAINT IF EXISTS knowledge_items_relation_metadata_contract`, + `ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_relation_metadata_contract CHECK ( + metadata -> 'hasna_knowledge_relations' IS NULL + OR ( + jsonb_typeof(metadata -> 'hasna_knowledge_relations') = 'object' + AND metadata #>> '{hasna_knowledge_relations,schema}' = 'hasna.knowledge.relations.v1' + AND ( + metadata #>> '{hasna_knowledge_relations,supersedes_item_id}' IS NOT NULL + OR metadata #>> '{hasna_knowledge_relations,canonical_item_id}' IS NOT NULL + ) + AND ( + (metadata -> 'hasna_knowledge_relations') + - ARRAY['schema', 'supersedes_item_id', 'canonical_item_id'] + ) = '{}'::jsonb + AND ( + metadata #>> '{hasna_knowledge_relations,supersedes_item_id}' IS NULL + OR ( + btrim(metadata #>> '{hasna_knowledge_relations,supersedes_item_id}') <> '' + AND metadata #>> '{hasna_knowledge_relations,supersedes_item_id}' <> id + ) + ) + AND ( + metadata #>> '{hasna_knowledge_relations,canonical_item_id}' IS NULL + OR ( + btrim(metadata #>> '{hasna_knowledge_relations,canonical_item_id}') <> '' + AND metadata #>> '{hasna_knowledge_relations,canonical_item_id}' <> id + ) + ) + ) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_title + ON knowledge_items ( + authority_classification, authority_id, tenant_id, scope, parent_id, + title, archived, id + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_supersedes + ON knowledge_items ( + authority_classification, authority_id, tenant_id, scope, parent_id, + (metadata #>> '{hasna_knowledge_relations,supersedes_item_id}'), + archived, id + ) + WHERE metadata #>> '{hasna_knowledge_relations,schema}' + = 'hasna.knowledge.relations.v1'`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_canonical + ON knowledge_items ( + authority_classification, authority_id, tenant_id, scope, parent_id, + (metadata #>> '{hasna_knowledge_relations,canonical_item_id}'), + archived, id + ) + WHERE metadata #>> '{hasna_knowledge_relations,schema}' + = 'hasna.knowledge.relations.v1'`, + ...postgresKnowledgeProjectLinksSchemaStatements() +]; // 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"); diff --git a/bin/knowledge-serve.js b/bin/knowledge-serve.js index c556cdb..ee71aad 100755 --- a/bin/knowledge-serve.js +++ b/bin/knowledge-serve.js @@ -1360,6 +1360,1118 @@ function knowledgeGuardedUtf8Bytes(value) { // src/query-contract.ts var KNOWLEDGE_BOUNDED_QUERY_CAPABILITY = "hasna.knowledge.bounded-query.v1"; +// src/project-links.ts +import { createHash as createHash3 } from "crypto"; + +// src/net-guard.ts +var REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]); + +// src/project-links.ts +var KNOWLEDGE_PROJECT_REGISTRATION_ROUTE = "knowledge.project-registration.v1"; +var KNOWLEDGE_PROJECT_RESOURCES_ROUTE = "knowledge.project-resources.v1"; +var KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION = 1; +var KNOWLEDGE_PROJECT_MEMBERSHIP_RULE = "explicit_collection_binding"; + +class KnowledgeProjectLinksError extends Error { + code; + details; + constructor(code, message, details = {}) { + super(message); + this.code = code; + this.details = details; + this.name = "KnowledgeProjectLinksError"; + } +} +function postgresSql(sql) { + let index = 0; + return sql.replace(/\?/g, () => `$${++index}`); +} + +class PostgresProjectLinksSql { + client; + transactionClient; + constructor(client, transactionClient) { + this.client = client; + this.transactionClient = transactionClient; + } + async get(sql, params = []) { + return this.client.get(postgresSql(sql), params); + } + async many(sql, params = []) { + return this.client.many(postgresSql(sql), params); + } + async run(sql, params = []) { + const result = await this.client.query(postgresSql(sql), params); + return { changes: result.rowCount }; + } + async transaction(fn) { + if (!this.transactionClient) + return fn(this); + return this.transactionClient.transaction((tx) => fn(new PostgresProjectLinksSql(tx))); + } +} + +class SqliteProjectLinksSql { + db; + tail = Promise.resolve(); + constructor(db) { + this.db = db; + } + async get(sql, params = []) { + return this.db.query(sql).get(...params) ?? null; + } + async many(sql, params = []) { + return this.db.query(sql).all(...params); + } + async run(sql, params = []) { + const result = this.db.query(sql).run(...params); + return { changes: Number(result.changes) }; + } + transaction(fn) { + const run = this.tail.then(async () => { + this.db.exec("BEGIN IMMEDIATE"); + try { + const result = await fn(this); + this.db.exec("COMMIT"); + return result; + } catch (error) { + this.db.exec("ROLLBACK"); + throw error; + } + }); + this.tail = run.then(() => { + return; + }, () => { + return; + }); + return run; + } +} +function canonicalize(value) { + if (Array.isArray(value)) + return value.map(canonicalize); + if (value && typeof value === "object") { + return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined).sort(([left], [right]) => left.localeCompare(right)).map(([key, item]) => [key, canonicalize(item)])); + } + return value; +} +function canonicalKnowledgeProjectLinksJson(value) { + return JSON.stringify(canonicalize(value)); +} +function digestKnowledgeProjectLinksValue(value) { + return createHash3("sha256").update(canonicalKnowledgeProjectLinksJson(value)).digest("hex"); +} +function stableUuid(namespace) { + const hex = createHash3("sha256").update(namespace).digest("hex").slice(0, 32).split(""); + hex[12] = "5"; + hex[16] = (Number.parseInt(hex[16], 16) & 3 | 8).toString(16); + const value = hex.join(""); + return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; +} +function requiredString(value, field) { + if (typeof value !== "string" || value.trim().length === 0) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `${field} must be a non-empty string.`); + } + return value.trim(); +} +function boundedLimit(value) { + const resolved = value ?? 100; + if (!Number.isInteger(resolved) || resolved < 1 || resolved > 200) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "limit must be an integer between 1 and 200."); + } + return resolved; +} +function normalizeKinds(kinds) { + const supported = ["project", "collection", "item", "taxonomy"]; + if (!kinds || kinds.length === 0) + return supported; + const unique = [...new Set(kinds)]; + for (const kind of unique) { + if (!supported.includes(kind)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `unsupported project resource kind: ${kind}`); + } + } + return unique.sort((left, right) => supported.indexOf(left) - supported.indexOf(right)); +} +function toReceipt(row) { + return { + receipt_id: row.receipt_id, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: row.package_version, + authority_id: row.authority_id, + tenant_id: row.tenant_id, + corpus_id: row.corpus_id, + operation_id: row.operation_id, + step_id: row.step_id, + action: row.action, + resource_kind: row.resource_kind, + direction: row.direction, + idempotency_key: row.idempotency_key, + request_digest: row.request_digest, + precondition_digest: row.precondition_digest, + outcome: row.outcome, + reason: row.reason, + source_project_id: row.source_project_id, + project_id: row.project_id, + collection_id: row.collection_id, + item_id: row.item_id, + result_revision: row.result_revision, + result_digest: row.result_digest, + accepted_receipt_id: row.accepted_receipt_id, + created_by_operation: Number(row.created_by_operation) === 1, + created_at: row.created_at + }; +} +function aggregateRecord(row) { + const record = { + source_project_id: row.source_project_id, + project_id: row.project_id, + project_slug: row.project_slug, + project_name: row.project_name, + collection_id: row.collection_id, + collection_slug: row.collection_slug, + collection_name: row.collection_name, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + revision: `r${Number(row.revision)}`, + created_at: row.created_at, + updated_at: row.updated_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; +} +function receiptInsertParams(receipt) { + return [ + receipt.receipt_id, + receipt.authority, + receipt.route, + receipt.package_version, + receipt.authority_id, + receipt.tenant_id, + receipt.corpus_id, + receipt.operation_id, + receipt.step_id, + receipt.action, + receipt.resource_kind, + receipt.direction, + receipt.idempotency_key, + receipt.request_digest, + receipt.precondition_digest, + receipt.outcome, + receipt.reason, + receipt.source_project_id, + receipt.project_id, + receipt.collection_id, + receipt.item_id, + receipt.result_revision, + receipt.result_digest, + receipt.accepted_receipt_id, + receipt.created_by_operation ? 1 : 0, + receipt.created_at + ]; +} +var RECEIPT_INSERT_SQL = `INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`; + +class PackageOwnedKnowledgeProjectLinksAuthority { + sql; + itemResolver; + options; + identity; + now; + constructor(sql, itemResolver, options) { + this.sql = sql; + this.itemResolver = itemResolver; + this.options = options; + this.identity = { + authority_id: requiredString(options.authorityId, "authority_id"), + tenant_id: requiredString(options.tenantId, "tenant_id"), + corpus_id: requiredString(options.corpusId, "corpus_id") + }; + this.now = options.now ?? (() => new Date().toISOString()); + } + capabilityValue() { + return { + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + resource_route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + package_version: this.options.packageVersion, + schema_version: KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + ...this.identity, + registration_resource: "collection", + supported_resources: ["project", "collection", "item", "taxonomy"], + stable_project_ids: true, + stable_collection_ids: true, + explicit_membership: true, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + later_child_binding_required: true, + bind_existing_items: true, + immutable_receipts: true, + exact_terminal_lookup: true, + exact_readback: true, + conditional_inverse: true, + complete_keyset_pagination: true, + revision_bound_cursors: true + }; + } + async capability() { + return this.capabilityValue(); + } + assertIdentity(request) { + const capability = this.capabilityValue(); + if (request.authority_route !== capability.route || request.package_version !== capability.package_version || request.authority_id !== capability.authority_id || request.tenant_id !== capability.tenant_id || request.corpus_id !== capability.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "request does not match the current Knowledge project-registration capability identity."); + } + } + stableProjectId(sourceProjectId) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${sourceProjectId}`); + } + stableCollectionId(sourceProjectId, collectionSlug) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${sourceProjectId}\x00${collectionSlug}`); + } + stableReceiptId(operationId, stepId, action, direction) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${operationId}\x00${stepId}\x00${action}\x00${direction}`); + } + async getAggregateBySource(sql, sourceProjectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, sourceProjectId]); + } + async getAggregateByCollection(sql, collectionId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, collectionId]); + } + async getAggregateByProject(sql, projectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + projectId, + projectId + ]); + } + async getReceiptByAttempt(sql, input) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + input.operation_id, + input.step_id, + input.action, + input.direction + ]); + return row ? toReceipt(row) : null; + } + assertIdempotent(existing, input) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); + } + } + async registerCollection(request) { + this.assertIdentity(request); + if (request.resource_kind !== "collection" || request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "collection registration requires resource_kind=collection and direction=forward."); + } + const sourceProjectId = requiredString(request.project_id, "project_id"); + const projectSlug = requiredString(request.project_slug, "project_slug"); + const projectName = requiredString(request.project_name, "project_name"); + const targetSelector = requiredString(request.target_selector, "target_selector"); + if (targetSelector !== sourceProjectId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "target_selector must equal the exact source project id."); + } + const collectionSlug = requiredString(request.desired.collection_slug ?? `${projectSlug}-knowledge`, "desired.collection_slug"); + const collectionName = requiredString(request.desired.collection_name ?? `${projectName} Knowledge`, "desired.collection_name"); + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "register_collection", + source_project_id: sourceProjectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized collection-registration request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + let aggregate = await this.getAggregateBySource(tx, sourceProjectId); + const createdByOperation = aggregate === null; + if (!aggregate) { + const now = this.now(); + const projectId = this.stableProjectId(sourceProjectId); + const collectionId = this.stableCollectionId(sourceProjectId, collectionSlug); + await tx.run(`INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + sourceProjectId, + projectId, + projectSlug, + projectName, + now, + now + ]); + await tx.run(`INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + projectId, + collectionSlug, + collectionName, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + 1, + now, + now + ]); + aggregate = await this.getAggregateByCollection(tx, collectionId); + } else if (aggregate.project_slug !== projectSlug || aggregate.project_name !== projectName || aggregate.collection_slug !== collectionSlug || aggregate.collection_name !== collectionName || aggregate.membership_rule !== KNOWLEDGE_PROJECT_MEMBERSHIP_RULE) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "the source project is already bound to a different Knowledge collection aggregate.", { + source_project_id: sourceProjectId, + collection_id: aggregate.collection_id + }); + } + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection registration committed but exact aggregate readback was unavailable."); + } + const record = aggregateRecord(aggregate); + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "forward"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_collection", + source_project_id: record.source_project_id, + project_id: record.project_id, + collection_id: record.collection_id, + item_id: null, + result_revision: record.revision, + result_digest: record.digest, + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readCollection(collectionId) { + const aggregate = await this.getAggregateByCollection(this.sql, requiredString(collectionId, "collection_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + return aggregateRecord(aggregate); + } + async lookupReceipt(request) { + if (request.max_items !== 1) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "exact terminal receipt lookup requires max_items=1."); + } + if (request.authority_id !== this.identity.authority_id || request.tenant_id !== this.identity.tenant_id || request.corpus_id !== this.identity.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "receipt lookup does not match this authority identity."); + } + const receipt = await this.getReceiptByAttempt(this.sql, request); + if (!receipt || receipt.idempotency_key !== request.idempotency_key) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "exact Knowledge project-link receipt was not found."); + } + return receipt; + } + async receiptById(sql, receiptId) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`, [ + receiptId, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id + ]); + return row ? toReceipt(row) : null; + } + assertInverseIdentity(request) { + this.assertIdentity(request); + requiredString(request.accepted_receipt_id, "accepted_receipt_id"); + requiredString(request.idempotency_key, "idempotency_key"); + } + async compensateRegistration(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "register_collection" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection-registration receipt was not found."); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + let outcome = "accepted"; + let reason = null; + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_collection_is_not_inverse_owned"; + } else if (!aggregate) { + outcome = "terminal_nonacceptance"; + reason = "accepted_collection_is_already_absent"; + } else { + const membership = await tx.get(`SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + if (Number(membership?.count ?? 0) > 0) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_bound_items"; + } else { + await tx.run(`DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + await tx.run(`DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.project_id + ]); + } + } + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: null, + result_revision: outcome === "accepted" ? "absent" : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyRegistrationInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection inverse receipt was not found."); + } + const aggregate = inverse.collection_id ? await this.getAggregateByCollection(this.sql, inverse.collection_id) : null; + if (aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "collection inverse verification found the target still present."); + } + const verification = { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.collection_id, + absent: true, + digest: inverse.result_digest + }; + return verification; + } + async bindItem(request) { + this.assertIdentity(request); + if (request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "item binding requires direction=forward."); + } + const collectionId = requiredString(request.collection_id, "collection_id"); + const itemId = requiredString(request.item_id, "item_id"); + const item = await this.itemResolver(itemId); + if (!item || item.id !== itemId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "bind-existing requires an exact existing Knowledge item id.", { item_id: itemId }); + } + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "bind_item", + collection_id: collectionId, + item_id: itemId + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized item-membership request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const aggregate = await this.getAggregateByCollection(tx, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + const existing = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId + ]); + const createdByOperation = existing === null; + const now = this.now(); + const receiptId = this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "forward"); + if (!existing) { + await tx.run(`INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + receiptId, + 1, + now + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + now, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId + ]); + } + const current = await this.getAggregateByCollection(tx, collectionId); + if (!current) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "item binding committed but collection readback was unavailable."); + } + const binding = { + collection_id: collectionId, + item_id: itemId, + collection_revision: `r${Number(current.revision)}`, + item_revision: `v${item.version ?? 1}` + }; + const receipt = { + receipt_id: receiptId, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_membership", + source_project_id: current.source_project_id, + project_id: current.project_id, + collection_id: collectionId, + item_id: itemId, + result_revision: binding.collection_revision, + result_digest: digestKnowledgeProjectLinksValue(binding), + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: now + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readItemBinding(collectionId, itemId) { + const membership = await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + requiredString(collectionId, "collection_id"), + requiredString(itemId, "item_id") + ]); + if (!membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection membership was not found by exact ids."); + } + const aggregate = await this.getAggregateByCollection(this.sql, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "membership exists without its collection aggregate."); + } + const record = { + collection_id: collectionId, + item_id: itemId, + revision: `r${Number(aggregate.revision)}`, + bound_at: membership.bound_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; + } + async compensateItemBinding(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "bind_item" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding receipt was not found."); + } + let outcome = "accepted"; + let reason = null; + const membership = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id + ]); + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_membership_is_not_inverse_owned"; + } else if (!membership) { + outcome = "terminal_nonacceptance"; + reason = "accepted_membership_is_already_absent"; + } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { + outcome = "terminal_nonacceptance"; + reason = "membership_is_owned_by_a_different_receipt"; + } else { + await tx.run(`DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + accepted.receipt_id + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.now(), + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id + ]); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + result_revision: outcome === "accepted" && aggregate ? `r${Number(aggregate.revision)}` : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyItemBindingInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding inverse receipt was not found."); + } + const membership = await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + inverse.collection_id, + inverse.item_id + ]); + if (membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "item-binding inverse verification found the membership still present."); + } + return { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.item_id, + absent: true, + digest: inverse.result_digest + }; + } + async buildResources(projectId) { + const aggregate = await this.getAggregateByProject(this.sql, requiredString(projectId, "project_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project aggregate was not found by source or stable project id."); + } + const memberships = await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + const items = await Promise.all(memberships.map(async (membership) => { + const item = await this.itemResolver(membership.item_id); + if (!item || item.id !== membership.item_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection membership points at a missing Knowledge item; refusing a partial resource population.", { collection_id: aggregate.collection_id, item_id: membership.item_id }); + } + return item; + })); + const revision = `r${Number(aggregate.revision)}`; + const base = { + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + revision + }; + const resources = []; + const projectBody = { + ...base, + kind: "project", + id: aggregate.project_id, + title: aggregate.project_name, + locator: { kind: "canonical_uri", value: `knowledge:project:${aggregate.project_id}` }, + metadata: { + source_project_id: aggregate.source_project_id, + slug: aggregate.project_slug, + collection_count: 1 + } + }; + resources.push({ + ...projectBody, + key: `project:${aggregate.project_id}`, + digest: digestKnowledgeProjectLinksValue(projectBody) + }); + const collectionBody = { + ...base, + kind: "collection", + id: aggregate.collection_id, + title: aggregate.collection_name, + locator: { kind: "external_uuid", value: aggregate.collection_id }, + metadata: { + slug: aggregate.collection_slug, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + member_count: items.length + } + }; + resources.push({ + ...collectionBody, + key: `collection:${aggregate.collection_id}`, + digest: digestKnowledgeProjectLinksValue(collectionBody) + }); + for (const item of items) { + const itemBody = { + ...base, + kind: "item", + id: item.id, + revision: `v${item.version ?? 1}`, + title: item.title, + locator: { kind: "canonical_uri", value: `knowledge:item:${encodeURIComponent(item.id)}` }, + metadata: { + tags: [...item.tags ?? []], + archived: item.archived === true, + updated_at: item.updated_at + } + }; + resources.push({ + ...itemBody, + key: `item:${item.id}`, + digest: digestKnowledgeProjectLinksValue(itemBody) + }); + } + const taxonomy = new Map; + for (const item of items) { + for (const rawTag of item.tags ?? []) { + const normalized = rawTag.trim().toLowerCase(); + if (!normalized) + continue; + const entry = taxonomy.get(normalized) ?? { label: rawTag.trim(), itemIds: [] }; + entry.itemIds.push(item.id); + taxonomy.set(normalized, entry); + } + } + for (const [normalized, entry] of [...taxonomy.entries()].sort(([left], [right]) => left.localeCompare(right))) { + const taxonomyId = stableUuid(`${aggregate.collection_id}\x00taxonomy\x00${normalized}`); + const taxonomyBody = { + ...base, + kind: "taxonomy", + id: taxonomyId, + title: entry.label, + locator: { kind: "external_uuid", value: taxonomyId }, + metadata: { + tag: entry.label, + normalized_tag: normalized, + item_count: entry.itemIds.length, + member_digest: digestKnowledgeProjectLinksValue([...entry.itemIds].sort()) + } + }; + resources.push({ + ...taxonomyBody, + key: `taxonomy:${taxonomyId}`, + digest: digestKnowledgeProjectLinksValue(taxonomyBody) + }); + } + resources.sort((left, right) => left.key.localeCompare(right.key)); + return { aggregate, resources }; + } + async listProjectResources(projectId, options = {}) { + const limit = boundedLimit(options.limit); + const kinds = normalizeKinds(options.kinds); + const { aggregate, resources } = await this.buildResources(projectId); + const revision = `r${Number(aggregate.revision)}`; + const population = resources.filter((resource) => kinds.includes(resource.kind)); + const populationDigest = digestKnowledgeProjectLinksValue(population.map((resource) => ({ key: resource.key, digest: resource.digest }))); + let after = ""; + if (options.cursor) { + let decoded; + try { + decoded = JSON.parse(Buffer.from(options.cursor, "base64url").toString("utf8")); + } catch { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "cursor is not a valid Knowledge project-resources cursor."); + } + if (decoded.version !== 1 || decoded.project_id !== aggregate.project_id || decoded.collection_id !== aggregate.collection_id || decoded.collection_revision !== revision || decoded.population_digest !== populationDigest || canonicalKnowledgeProjectLinksJson(decoded.kinds) !== canonicalKnowledgeProjectLinksJson(kinds) || typeof decoded.after !== "string") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed or the cursor belongs to a different project/kind selection; restart from the first page."); + } + after = decoded.after; + } + const remaining = after ? population.filter((resource) => resource.key > after) : population; + const pageResources = remaining.slice(0, limit); + const hasMore = remaining.length > pageResources.length; + const nextCursor = hasMore && pageResources.length > 0 ? Buffer.from(JSON.stringify({ + version: 1, + project_id: aggregate.project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + kinds, + after: pageResources.at(-1).key + })).toString("base64url") : null; + return { + schema: "knowledge.project-resources.page.v1", + authority: "knowledge", + route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + ...this.identity, + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + resource_kinds: kinds, + resources: pageResources, + count: pageResources.length, + total: population.length, + limit, + cursor: options.cursor ?? null, + next_cursor: nextCursor, + has_more: hasMore, + complete: !hasMore, + truncated: false + }; + } + async readProjectResource(projectId, kind, resourceId) { + const { resources } = await this.buildResources(projectId); + const resource = resources.find((candidate) => candidate.kind === kind && candidate.id === resourceId); + if (!resource) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project resource was not found by exact kind and id."); + } + return resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expected = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + const identity = { + project_id: page.project_id, + collection_id: page.collection_id, + collection_revision: page.collection_revision, + population_digest: page.population_digest, + total: page.total, + kinds: canonicalKnowledgeProjectLinksJson(page.resource_kinds) + }; + if (expected && canonicalKnowledgeProjectLinksJson(expected) !== canonicalKnowledgeProjectLinksJson(identity)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete population was being read."); + } + expected ??= identity; + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource pagination returned a duplicate stable resource key.", { key: resource.key }); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource page claims more data without a continuation cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (!expected || resources.length !== expected.total) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete project resource enumeration did not match the producer total.", { expected_total: expected?.total ?? null, received: resources.length }); + } + return resources; + } +} +function createPostgresKnowledgeProjectLinksAuthority(input) { + return new PackageOwnedKnowledgeProjectLinksAuthority(new PostgresProjectLinksSql(input.client, input.client), input.itemResolver, input.options); +} +function wireErrorStatus(error) { + if (error.code === "KNOWLEDGE_PROJECT_LINKS_NOT_FOUND") + return 404; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_CONFLICT" || error.code === "KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE" || error.code === "KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH") + return 409; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION") + return 503; + return 400; +} +function knowledgeProjectLinksErrorResponse(error) { + if (error instanceof KnowledgeProjectLinksError) { + return Response.json({ error: error.code, message: error.message, details: error.details }, { status: wireErrorStatus(error) }); + } + throw error; +} + // src/serve.ts var KNOWLEDGE_SERVE_APP = "knowledge"; function normalizeCloudDatabaseUrl(env = process.env) { @@ -3266,6 +4378,121 @@ function knowledgeOpenApi(version) { ], additionalProperties: true }, + ProjectRegistrationCapability: { + type: "object", + required: [ + "authority", + "route", + "resource_route", + "package_version", + "authority_id", + "tenant_id", + "corpus_id", + "supported_resources", + "membership_rule" + ], + additionalProperties: true + }, + ProjectRegistrationReceipt: { + type: "object", + required: [ + "receipt_id", + "authority", + "route", + "package_version", + "authority_id", + "tenant_id", + "corpus_id", + "operation_id", + "step_id", + "action", + "resource_kind", + "direction", + "idempotency_key", + "request_digest", + "precondition_digest", + "outcome", + "created_by_operation", + "created_at" + ], + additionalProperties: true + }, + ProjectCollectionRecord: { + type: "object", + required: [ + "source_project_id", + "project_id", + "project_slug", + "project_name", + "collection_id", + "collection_slug", + "collection_name", + "membership_rule", + "revision", + "digest", + "created_at", + "updated_at" + ], + additionalProperties: false + }, + ProjectResource: { + type: "object", + required: [ + "key", + "kind", + "id", + "project_id", + "source_project_id", + "collection_id", + "revision", + "digest", + "title", + "locator", + "metadata" + ], + additionalProperties: false + }, + ProjectResourcePage: { + type: "object", + required: [ + "schema", + "authority", + "route", + "authority_id", + "tenant_id", + "corpus_id", + "project_id", + "source_project_id", + "collection_id", + "collection_revision", + "population_digest", + "resource_kinds", + "resources", + "count", + "total", + "limit", + "cursor", + "next_cursor", + "has_more", + "complete", + "truncated" + ], + properties: { + collection_revision: { type: "string" }, + population_digest: { type: "string" }, + resources: { + type: "array", + items: { $ref: "#/components/schemas/ProjectResource" } + }, + count: { type: "integer" }, + total: { type: "integer" }, + limit: { type: "integer", minimum: 1, maximum: 200 }, + has_more: { type: "boolean" }, + complete: { type: "boolean" }, + truncated: { type: "boolean", enum: [false] } + }, + additionalProperties: true + }, NoteList: { type: "object", properties: { @@ -3314,6 +4541,230 @@ function knowledgeOpenApi(version) { }, security: [{ apiKey: [] }], paths: { + "/v1/project-registration/capability": { + get: { + operationId: "getKnowledgeProjectRegistrationCapability", + summary: "Read the exact Knowledge project-registration capability identity", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + capability: { $ref: "#/components/schemas/ProjectRegistrationCapability" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/create": { + post: { + operationId: "registerKnowledgeProjectCollection", + summary: "Create or exactly adopt one project-owned Knowledge collection", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/read-exact": { + post: { + operationId: "readKnowledgeProjectCollection", + summary: "Read one project collection by exact stable collection id", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + record: { $ref: "#/components/schemas/ProjectCollectionRecord" } + } + } + } + } + }, + "404": { description: "No exact collection id." } + } + } + }, + "/v1/project-registration/receipts/lookup": { + post: { + operationId: "lookupKnowledgeProjectRegistrationReceipt", + summary: "Look up exactly one immutable registration or membership receipt", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + }, + "404": { description: "No exact terminal receipt." } + } + } + }, + "/v1/project-registration/compensate": { + post: { + operationId: "compensateKnowledgeProjectCollection", + summary: "Conditionally remove an operation-created empty collection aggregate", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/verify-inverse": { + post: { + operationId: "verifyKnowledgeProjectCollectionInverse", + summary: "Verify an accepted collection inverse by exact receipt and absence", + responses: { "200": { description: "Exact absence verification." } } + } + }, + "/v1/project-registration/items/bind": { + post: { + operationId: "bindKnowledgeItemToProjectCollection", + summary: "Explicitly bind one exact existing item to a project collection", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/items/read-exact": { + post: { + operationId: "readKnowledgeProjectItemBinding", + summary: "Read one exact collection/item membership", + responses: { + "200": { description: "Exact membership readback." }, + "404": { description: "No exact membership." } + } + } + }, + "/v1/project-registration/items/compensate": { + post: { + operationId: "compensateKnowledgeProjectItemBinding", + summary: "Conditionally remove a membership owned by the accepted binding receipt", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/items/verify-inverse": { + post: { + operationId: "verifyKnowledgeProjectItemBindingInverse", + summary: "Verify an accepted membership inverse by exact receipt and absence", + responses: { "200": { description: "Exact membership absence verification." } } + } + }, + "/v1/projects/{projectId}/resources": { + get: { + operationId: "listKnowledgeProjectResources", + summary: "Enumerate the complete stable project/collection/item/taxonomy population", + parameters: [ + { name: "projectId", in: "path", required: true, schema: { type: "string" } }, + { name: "limit", in: "query", schema: { type: "integer", minimum: 1, maximum: 200 } }, + { name: "cursor", in: "query", schema: { type: "string" } }, + { + name: "kind", + in: "query", + style: "form", + explode: true, + schema: { + type: "array", + items: { type: "string", enum: ["project", "collection", "item", "taxonomy"] } + } + } + ], + responses: { + "200": { + content: { + "application/json": { schema: { $ref: "#/components/schemas/ProjectResourcePage" } } + } + }, + "409": { description: "Cursor is stale or belongs to another population." } + } + } + }, + "/v1/projects/{projectId}/resources/{kind}/{resourceId}": { + get: { + operationId: "getKnowledgeProjectResource", + summary: "Read one project resource by exact stable kind and id", + parameters: [ + { name: "projectId", in: "path", required: true, schema: { type: "string" } }, + { + name: "kind", + in: "path", + required: true, + schema: { type: "string", enum: ["project", "collection", "item", "taxonomy"] } + }, + { name: "resourceId", in: "path", required: true, schema: { type: "string" } } + ], + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { resource: { $ref: "#/components/schemas/ProjectResource" } } + } + } + } + }, + "404": { description: "No exact resource kind and id." } + } + } + }, "/v1/notes": { get: { operationId: "listNotes", @@ -4120,6 +5571,16 @@ function parseExpectedVersion(req, body) { function createServeHandler(deps) { const repo = new NoteRepo(deps.client); const guardedRepo = deps.guardedAuthority ? new GuardedWriteRepo(deps.client, deps.guardedAuthority) : null; + const projectLinksForTenant = (tenantId) => deps.projectLinksAuthority?.(tenantId) ?? createPostgresKnowledgeProjectLinksAuthority({ + client: deps.client, + itemResolver: (id) => repo.get(id, tenantId), + options: { + packageVersion: deps.version, + authorityId: process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? KNOWLEDGE_SERVE_APP, + tenantId, + corpusId: process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? "knowledge" + } + }); const mode2 = "postgres"; const authOrThrow = async (req, requiredScopes, expectedTid) => { const url = new URL(req.url); @@ -4382,6 +5843,103 @@ function createServeHandler(deps) { const readback = await guardedRepo.readback(decodeURIComponent(guardedItemMatch[1]), binding, bounds); return readback ? boundedJson(readback, 200, bounds, startedAt) : boundedJson({ error: "not_found" }, 404, bounds, startedAt); } + if (path === "/v1/project-registration/capability") { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + return json({ capability: await projectLinksForTenant(principal.tid).capability() }); + } + if (path === "/v1/project-registration/create") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).registerCollection(body) }, 201); + } + if (path === "/v1/project-registration/read-exact") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + record: await projectLinksForTenant(principal.tid).readCollection(String(body.collection_id ?? "")) + }); + } + if (path === "/v1/project-registration/receipts/lookup") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).lookupReceipt(body) }); + } + if (path === "/v1/project-registration/compensate") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).compensateRegistration(body) }, 201); + } + if (path === "/v1/project-registration/verify-inverse") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + verification: await projectLinksForTenant(principal.tid).verifyRegistrationInverse(body) + }); + } + if (path === "/v1/project-registration/items/bind") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).bindItem(body) }, 201); + } + if (path === "/v1/project-registration/items/read-exact") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + record: await projectLinksForTenant(principal.tid).readItemBinding(String(body.collection_id ?? ""), String(body.item_id ?? "")) + }); + } + if (path === "/v1/project-registration/items/compensate") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).compensateItemBinding(body) }, 201); + } + if (path === "/v1/project-registration/items/verify-inverse") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + verification: await projectLinksForTenant(principal.tid).verifyItemBindingInverse(body) + }); + } + const exactProjectResourceMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources\/(project|collection|item|taxonomy)\/([^/]+)$/); + if (exactProjectResourceMatch) { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const resource = await projectLinksForTenant(principal.tid).readProjectResource(decodeURIComponent(exactProjectResourceMatch[1]), exactProjectResourceMatch[2], decodeURIComponent(exactProjectResourceMatch[3])); + return json({ resource }); + } + const projectResourcesMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources$/); + if (projectResourcesMatch) { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const page = await projectLinksForTenant(principal.tid).listProjectResources(decodeURIComponent(projectResourcesMatch[1]), { + limit: url.searchParams.has("limit") ? Number(url.searchParams.get("limit")) : undefined, + cursor: url.searchParams.get("cursor"), + kinds: url.searchParams.getAll("kind") + }); + return json(page); + } if (path === "/v1/notes/search") { if (method !== "GET") return json({ error: "method_not_allowed" }, 405); @@ -4489,6 +6047,9 @@ function createServeHandler(deps) { } return json({ error: "not_found", path }, 404); } catch (error) { + if (error instanceof KnowledgeProjectLinksError) { + return knowledgeProjectLinksErrorResponse(error); + } if (error instanceof HttpError) { const reason = error.status === 401 || error.status === 403 ? "unauthorized" : "error"; return json({ error: reason, message: error.message }, error.status); diff --git a/bin/knowledge.js b/bin/knowledge.js index b3d3f59..5747c8e 100755 --- a/bin/knowledge.js +++ b/bin/knowledge.js @@ -1,35 +1,35 @@ #!/usr/bin/env bun // @bun -var gY=Object.create;var{getPrototypeOf:DY,defineProperty:qE,getOwnPropertyNames:UY}=Object;var IY=Object.prototype.hasOwnProperty;function jY(_){return this[_]}var EY,NY,AY=(_,$,g)=>{var U=_!=null&&typeof _==="object";if(U){var D=$?EY??=new WeakMap:NY??=new WeakMap,I=D.get(_);if(I)return I}g=_!=null?gY(DY(_)):{};let j=$||!_||!_.__esModule?qE(g,"default",{value:_,enumerable:!0}):g;for(let E of UY(_))if(!IY.call(j,E))qE(j,E,{get:jY.bind(_,E),enumerable:!0});if(U)D.set(_,j);return j};var a6=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var OY=(_)=>_;function PY(_,$){this[_]=OY.bind(null,$)}var k$=(_,$)=>{for(var g in $)qE(_,g,{get:$[g],enumerable:!0,configurable:!0,set:PY.bind($,g)})};var w=(_,$)=>()=>(_&&($=_(_=0)),$);var A_=import.meta.require;function Y(_,$,g){function U(E,A){if(!E._zod)Object.defineProperty(E,"_zod",{value:{def:A,constr:j,traits:new Set},enumerable:!1});if(E._zod.traits.has(_))return;E._zod.traits.add(_),$(E,A);let O=j.prototype,P=Object.keys(O);for(let W=0;W{if(g?.Parent&&E instanceof g.Parent)return!0;return E?._zod?.traits?.has(_)}}),Object.defineProperty(j,"name",{value:_}),j}function F_(_){if(_)Object.assign(Pg,_);return Pg}var rR,RI,GI,f$,Sg,Pg;var Lg=w(()=>{RI=Object.freeze({status:"aborted"});GI=Symbol("zod_brand");f$=class f$ extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};Sg=class Sg extends Error{constructor(_){super(`Encountered unidirectional transform during encode: ${_}`);this.name="ZodEncodeError"}};(rR=globalThis).__zod_globalConfig??(rR.__zod_globalConfig={});Pg=globalThis.__zod_globalConfig});var Z={};k$(Z,{unwrapMessage:()=>o0,uint8ArrayToHex:()=>MB,uint8ArrayToBase64url:()=>rB,uint8ArrayToBase64:()=>ZR,stringifyPrimitive:()=>r,slugify:()=>iN,shallowClone:()=>tN,safeExtend:()=>TB,required:()=>BB,randomString:()=>JB,propertyKeyTypes:()=>a0,promiseAllObject:()=>WB,primitiveTypes:()=>oN,prefixIssues:()=>e_,pick:()=>XB,partial:()=>qB,parsedType:()=>b,optionalKeys:()=>pN,omit:()=>YB,objectClone:()=>PB,numKeys:()=>zB,nullish:()=>b6,normalizeParams:()=>k,mergeDefs:()=>I6,merge:()=>KB,jsonStringifyReplacer:()=>B4,joinValues:()=>q,issue:()=>F4,isPlainObject:()=>Z6,isObject:()=>Wg,hexToUint8Array:()=>bB,getSizableOrigin:()=>s0,getParsedType:()=>RB,getLengthableOrigin:()=>_D,getEnumValues:()=>p0,getElementAtPath:()=>LB,floatSafeRemainder:()=>mN,finalizeIssue:()=>m_,extend:()=>QB,explicitlyAborted:()=>sN,escapeRegex:()=>S$,esc:()=>XI,defineLazy:()=>$_,createTransparentProxy:()=>GB,cloneDef:()=>SB,clone:()=>f_,cleanRegex:()=>e0,cleanEnum:()=>VB,captureStackTrace:()=>YI,cached:()=>V4,base64urlToUint8Array:()=>FB,base64ToUint8Array:()=>MR,assignProp:()=>M6,assertNotEqual:()=>EB,assertNever:()=>AB,assertIs:()=>NB,assertEqual:()=>jB,assert:()=>OB,allowsEval:()=>lN,aborted:()=>H6,NUMBER_FORMAT_RANGES:()=>eN,Class:()=>HR,BIGINT_FORMAT_RANGES:()=>aN});function jB(_){return _}function EB(_){return _}function NB(_){}function AB(_){throw Error("Unexpected value in exhaustive check")}function OB(_){}function p0(_){let $=Object.values(_).filter((U)=>typeof U==="number");return Object.entries(_).filter(([U,D])=>$.indexOf(+U)===-1).map(([U,D])=>D)}function q(_,$="|"){return _.map((g)=>r(g)).join($)}function B4(_,$){if(typeof $==="bigint")return $.toString();return $}function V4(_){return{get value(){{let g=_();return Object.defineProperty(this,"value",{value:g}),g}throw Error("cached value already set")}}}function b6(_){return _===null||_===void 0}function e0(_){let $=_.startsWith("^")?1:0,g=_.endsWith("$")?_.length-1:_.length;return _.slice($,g)}function mN(_,$){let g=_/$,U=Math.round(g),D=Number.EPSILON*Math.max(Math.abs(g),1);if(Math.abs(g-U)g?.[U],_)}function WB(_){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 JB(_=10){let g="";for(let U=0;U<_;U++)g+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return g}function XI(_){return JSON.stringify(_)}function iN(_){return _.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function Wg(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)}function Z6(_){if(Wg(_)===!1)return!1;let $=_.constructor;if($===void 0)return!0;if(typeof $!=="function")return!0;let g=$.prototype;if(Wg(g)===!1)return!1;if(Object.prototype.hasOwnProperty.call(g,"isPrototypeOf")===!1)return!1;return!0}function tN(_){if(Z6(_))return{..._};if(Array.isArray(_))return[..._];if(_ instanceof Map)return new Map(_);if(_ instanceof Set)return new Set(_);return _}function zB(_){let $=0;for(let g in _)if(Object.prototype.hasOwnProperty.call(_,g))$++;return $}function S$(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function f_(_,$,g){let U=new _._zod.constr($??_._zod.def);if(!$||g?.parent)U._zod.parent=_;return U}function k(_){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 GB(_){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 r(_){if(typeof _==="bigint")return _.toString()+"n";if(typeof _==="string")return`"${_}"`;return`${_}`}function pN(_){return Object.keys(_).filter(($)=>{return _[$]._zod.optin==="optional"&&_[$]._zod.optout==="optional"})}function XB(_,$){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=I6(_._zod.def,{get shape(){let j={};for(let E in $){if(!(E in g.shape))throw Error(`Unrecognized key: "${E}"`);if(!$[E])continue;j[E]=g.shape[E]}return M6(this,"shape",j),j},checks:[]});return f_(_,I)}function YB(_,$){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=I6(_._zod.def,{get shape(){let j={..._._zod.def.shape};for(let E in $){if(!(E in g.shape))throw Error(`Unrecognized key: "${E}"`);if(!$[E])continue;delete j[E]}return M6(this,"shape",j),j},checks:[]});return f_(_,I)}function QB(_,$){if(!Z6($))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=I6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$};return M6(this,"shape",I),I}});return f_(_,D)}function TB(_,$){if(!Z6($))throw Error("Invalid input to safeExtend: expected a plain object");let g=I6(_._zod.def,{get shape(){let U={..._._zod.def.shape,...$};return M6(this,"shape",U),U}});return f_(_,g)}function KB(_,$){if(_._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let g=I6(_._zod.def,{get shape(){let U={..._._zod.def.shape,...$._zod.def.shape};return M6(this,"shape",U),U},get catchall(){return $._zod.def.catchall},checks:$._zod.def.checks??[]});return f_(_,g)}function qB(_,$,g){let D=$._zod.def.checks;if(D&&D.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let j=I6($._zod.def,{get shape(){let E=$._zod.def.shape,A={...E};if(g)for(let O in g){if(!(O in E))throw Error(`Unrecognized key: "${O}"`);if(!g[O])continue;A[O]=_?new _({type:"optional",innerType:E[O]}):E[O]}else for(let O in E)A[O]=_?new _({type:"optional",innerType:E[O]}):E[O];return M6(this,"shape",A),A},checks:[]});return f_($,j)}function BB(_,$,g){let U=I6($._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 M6(this,"shape",I),I}});return f_($,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 sN(_,$=0){if(_.aborted===!0)return!0;for(let g=$;g<_.issues.length;g++)if(_.issues[g]?.continue===!1)return!0;return!1}function e_(_,$){return $.map((g)=>{var U;return(U=g).path??(U.path=[]),g.path.unshift(_),g})}function o0(_){return typeof _==="string"?_:_?.message}function m_(_,$,g){let U=_.message?_.message:o0(_.inst?._zod.def?.error?.(_))??o0($?.error?.(_))??o0(g.customError?.(_))??o0(g.localeError?.(_))??"Invalid input",{inst:D,continue:I,input:j,...E}=_;if(E.path??(E.path=[]),E.message=U,$?.reportInput)E.input=j;return E}function s0(_){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 b(_){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 F4(..._){let[$,g,U]=_;if(typeof $==="string")return{message:$,code:"custom",input:g,inst:U};return{...$}}function VB(_){return Object.entries(_).filter(([$,g])=>{return Number.isNaN(Number.parseInt($,10))}).map(($)=>$[1])}function MR(_){let $=atob(_),g=new Uint8Array($.length);for(let U=0;U<$.length;U++)g[U]=$.charCodeAt(U);return g}function ZR(_){let $="";for(let g=0;g<_.length;g++)$+=String.fromCharCode(_[g]);return btoa($)}function FB(_){let $=_.replace(/-/g,"+").replace(/_/g,"/"),g="=".repeat((4-$.length%4)%4);return MR($+g)}function rB(_){return ZR(_).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function bB(_){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 MB(_){return Array.from(_).map(($)=>$.toString(16).padStart(2,"0")).join("")}class HR{constructor(..._){}}var bR,YI,lN,RB=(_)=>{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: ${$}`)}},a0,oN,eN,aN;var h=w(()=>{Lg();bR=Symbol("evaluating");YI="captureStackTrace"in Error?Error.captureStackTrace:(..._)=>{};lN=V4(()=>{if(Pg.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(_){return!1}});a0=new Set(["string","number","symbol"]),oN=new Set(["string","number","bigint","boolean","symbol","undefined"]);eN={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]},aN={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]}});function r4(_,$=(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 b4(_,$=(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((E)=>U({issues:E},[...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 E=[...I,...j.path];if(E.length===0)g._errors.push($(j));else{let A=g,O=0;while(Og.message){let g={errors:[]},U=(D,I=[])=>{var j,E;for(let A of D.issues)if(A.code==="invalid_union"&&A.errors.length)A.errors.map((O)=>U({issues:O},[...I,...A.path]));else if(A.code==="invalid_key")U({issues:A.issues},[...I,...A.path]);else if(A.code==="invalid_element")U({issues:A.issues},[...I,...A.path]);else{let O=[...I,...A.path];if(O.length===0){g.errors.push($(A));continue}let P=g,W=0;while(Wtypeof 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 TI(_){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 ${CR(U.path)}`);return $.join(` -`)}var kR=(_,$)=>{_.name="$ZodError",Object.defineProperty(_,"_zod",{value:_._zod,enumerable:!1}),Object.defineProperty(_,"issues",{value:$,enumerable:!1}),_.message=JSON.stringify($,B4,2),Object.defineProperty(_,"toString",{value:()=>_.message,enumerable:!1})},$D,a_;var _2=w(()=>{Lg();h();$D=Y("$ZodError",kR),a_=Y("$ZodError",kR,{Parent:Error})});var M4=(_)=>($,g,U,D)=>{let I=U?{...U,async:!1}:{async:!1},j=$._zod.run({value:g,issues:[]},I);if(j instanceof Promise)throw new f$;if(j.issues.length){let E=new(D?.Err??_)(j.issues.map((A)=>m_(A,I,F_())));throw YI(E,D?.callee),E}return j.value},KI,Z4=(_)=>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 E=new(D?.Err??_)(j.issues.map((A)=>m_(A,I,F_())));throw YI(E,D?.callee),E}return j.value},qI,H4=(_)=>($,g,U)=>{let D=U?{...U,async:!1}:{async:!1},I=$._zod.run({value:g,issues:[]},D);if(I instanceof Promise)throw new f$;return I.issues.length?{success:!1,error:new(_??$D)(I.issues.map((j)=>m_(j,D,F_())))}:{success:!0,data:I.value}},$2,k4=(_)=>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)=>m_(j,D,F_())))}:{success:!0,data:I.value}},g2,BI=(_)=>($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return M4(_)($,g,D)},HB,VI=(_)=>($,g,U)=>{return M4(_)($,g,U)},kB,FI=(_)=>async($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return Z4(_)($,g,D)},CB,rI=(_)=>async($,g,U)=>{return Z4(_)($,g,U)},vB,bI=(_)=>($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return H4(_)($,g,D)},wB,MI=(_)=>($,g,U)=>{return H4(_)($,g,U)},uB,ZI=(_)=>async($,g,U)=>{let D=U?{...U,direction:"backward"}:{direction:"backward"};return k4(_)($,g,D)},fB,HI=(_)=>async($,g,U)=>{return k4(_)($,g,U)},xB;var D2=w(()=>{Lg();_2();h();KI=M4(a_),qI=Z4(a_),$2=H4(a_),g2=k4(a_),HB=BI(a_),kB=VI(a_),CB=FI(a_),vB=rI(a_),wB=bI(a_),uB=MI(a_),fB=ZI(a_),xB=HI(a_)});var s_={};k$(s_,{xid:()=>E2,uuid7:()=>nB,uuid6:()=>hB,uuid4:()=>cB,uuid:()=>Jg,uppercase:()=>H2,unicodeEmail:()=>vR,undefined:()=>M2,ulid:()=>j2,time:()=>K2,string:()=>B2,sha512_hex:()=>OV,sha512_base64url:()=>SV,sha512_base64:()=>PV,sha384_hex:()=>EV,sha384_base64url:()=>AV,sha384_base64:()=>NV,sha256_hex:()=>UV,sha256_base64url:()=>jV,sha256_base64:()=>IV,sha1_hex:()=>$V,sha1_base64url:()=>DV,sha1_base64:()=>gV,rfc5322Email:()=>mB,number:()=>gD,null:()=>b2,nanoid:()=>A2,md5_hex:()=>aB,md5_base64url:()=>_V,md5_base64:()=>sB,mac:()=>z2,lowercase:()=>Z2,ksuid:()=>N2,ipv6:()=>J2,ipv4:()=>W2,integer:()=>F2,idnEmail:()=>iB,httpProtocol:()=>Y2,html5Email:()=>dB,hostname:()=>oB,hex:()=>eB,guid:()=>P2,extendedDuration:()=>yB,emoji:()=>L2,email:()=>S2,e164:()=>Q2,duration:()=>O2,domain:()=>pB,datetime:()=>q2,date:()=>T2,cuid2:()=>I2,cuid:()=>U2,cidrv6:()=>G2,cidrv4:()=>R2,browserEmail:()=>lB,boolean:()=>r2,bigint:()=>V2,base64url:()=>kI,base64:()=>X2});function L2(){return new RegExp(tB,"u")}function uR(_){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 K2(_){return new RegExp(`^${uR(_)}$`)}function q2(_){let $=uR({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(`^${wR}T(?:${U})$`)}function DD(_,$){return new RegExp(`^[A-Za-z0-9+/]{${_}}${$}$`)}function UD(_){return new RegExp(`^[A-Za-z0-9_-]{${_}}$`)}var U2,I2,j2,E2,N2,A2,O2,yB,P2,Jg=(_)=>{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})$`)},cB,hB,nB,S2,dB,mB,vR,iB,lB,tB="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",W2,J2,z2=(_)=>{let $=S$(_??":");return new RegExp(`^(?:[0-9A-F]{2}${$}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${$}){5}[0-9a-f]{2}$`)},R2,G2,X2,kI,oB,pB,Y2,Q2,wR="(?:(?:\\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])))",T2,B2=(_)=>{let $=_?`[\\s\\S]{${_?.minimum??0},${_?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${$}$`)},V2,F2,gD,r2,b2,M2,Z2,H2,eB,aB,sB,_V,$V,gV,DV,UV,IV,jV,EV,NV,AV,OV,PV,SV;var CI=w(()=>{h();U2=/^[cC][0-9a-z]{6,}$/,I2=/^[0-9a-z]+$/,j2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,E2=/^[0-9a-vA-V]{20}$/,N2=/^[A-Za-z0-9]{27}$/,A2=/^[a-zA-Z0-9_-]{21}$/,O2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,yB=/^[-+]?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)?)??$/,P2=/^([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})$/,cB=Jg(4),hB=Jg(6),nB=Jg(7),S2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,dB=/^[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])?)*$/,mB=/^(([^<>()\[\]\\.,;:\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,}))$/,vR=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,iB=vR,lB=/^[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])?)*$/;W2=/^(?:(?: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])$/,J2=/^(([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}|:))$/,R2=/^((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])$/,G2=/^(([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])$/,X2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,kI=/^[A-Za-z0-9_-]*$/,oB=/^(?=.{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])?)*\.?$/,pB=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,Y2=/^https?$/,Q2=/^\+[1-9]\d{6,14}$/,T2=new RegExp(`^${wR}$`);V2=/^-?\d+n?$/,F2=/^-?\d+$/,gD=/^-?\d+(?:\.\d+)?$/,r2=/^(?:true|false)$/i,b2=/^null$/i,M2=/^undefined$/i,Z2=/^[^A-Z]*$/,H2=/^[^a-z]*$/,eB=/^[0-9a-fA-F]*$/;aB=/^[0-9a-fA-F]{32}$/,sB=DD(22,"=="),_V=UD(22),$V=/^[0-9a-fA-F]{40}$/,gV=DD(27,"="),DV=UD(27),UV=/^[0-9a-fA-F]{64}$/,IV=DD(43,"="),jV=UD(43),EV=/^[0-9a-fA-F]{96}$/,NV=DD(64,""),AV=UD(64),OV=/^[0-9a-fA-F]{128}$/,PV=DD(86,"=="),SV=UD(86)});function fR(_,$,g){if(_.issues.length)$.issues.push(...e_(g,_.issues))}var G_,xR,vI,wI,k2,C2,v2,w2,u2,f2,x2,y2,c2,C4,h2,n2,d2,m2,i2,l2,t2,o2,p2;var uI=w(()=>{Lg();CI();h();G_=Y("$ZodCheck",(_,$)=>{var g;_._zod??(_._zod={}),_._zod.def=$,(g=_._zod).onattach??(g.onattach=[])}),xR={number:"number",bigint:"bigint",object:"date"},vI=Y("$ZodCheckLessThan",(_,$)=>{G_.init(_,$);let g=xR[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})}}),wI=Y("$ZodCheckGreaterThan",(_,$)=>{G_.init(_,$);let g=xR[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})}}),k2=Y("$ZodCheckMultipleOf",(_,$)=>{G_.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):mN(g.value,$.value)===0)return;g.issues.push({origin:typeof g.value,code:"not_multiple_of",divisor:$.value,input:g.value,inst:_,continue:!$.abort})}}),C2=Y("$ZodCheckNumberFormat",(_,$)=>{G_.init(_,$),$.format=$.format||"float64";let g=$.format?.includes("int"),U=g?"int":"number",[D,I]=eN[$.format];_._zod.onattach.push((j)=>{let E=j._zod.bag;if(E.format=$.format,E.minimum=D,E.maximum=I,g)E.pattern=F2}),_._zod.check=(j)=>{let E=j.value;if(g){if(!Number.isInteger(E)){j.issues.push({expected:U,format:$.format,code:"invalid_type",continue:!1,input:E,inst:_});return}if(!Number.isSafeInteger(E)){if(E>0)j.issues.push({input:E,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:E,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(EI)j.issues.push({origin:"number",input:E,code:"too_big",maximum:I,inclusive:!0,inst:_,continue:!$.abort})}}),v2=Y("$ZodCheckBigIntFormat",(_,$)=>{G_.init(_,$);let[g,U]=aN[$.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})}}),w2=Y("$ZodCheckMaxSize",(_,$)=>{var g;G_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!b6(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:s0(D),code:"too_big",maximum:$.maximum,inclusive:!0,input:D,inst:_,continue:!$.abort})}}),u2=Y("$ZodCheckMinSize",(_,$)=>{var g;G_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!b6(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:s0(D),code:"too_small",minimum:$.minimum,inclusive:!0,input:D,inst:_,continue:!$.abort})}}),f2=Y("$ZodCheckSizeEquals",(_,$)=>{var g;G_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!b6(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:s0(D),...j?{code:"too_big",maximum:$.size}:{code:"too_small",minimum:$.size},inclusive:!0,exact:!0,input:U.value,inst:_,continue:!$.abort})}}),x2=Y("$ZodCheckMaxLength",(_,$)=>{var g;G_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!b6(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})}}),y2=Y("$ZodCheckMinLength",(_,$)=>{var g;G_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!b6(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})}}),c2=Y("$ZodCheckLengthEquals",(_,$)=>{var g;G_.init(_,$),(g=_._zod.def).when??(g.when=(U)=>{let D=U.value;return!b6(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),E=I>$.length;U.issues.push({origin:j,...E?{code:"too_big",maximum:$.length}:{code:"too_small",minimum:$.length},inclusive:!0,exact:!0,input:U.value,inst:_,continue:!$.abort})}}),C4=Y("$ZodCheckStringFormat",(_,$)=>{var g,U;if(G_.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=()=>{})}),h2=Y("$ZodCheckRegex",(_,$)=>{C4.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})}}),n2=Y("$ZodCheckLowerCase",(_,$)=>{$.pattern??($.pattern=Z2),C4.init(_,$)}),d2=Y("$ZodCheckUpperCase",(_,$)=>{$.pattern??($.pattern=H2),C4.init(_,$)}),m2=Y("$ZodCheckIncludes",(_,$)=>{G_.init(_,$);let g=S$($.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})}}),i2=Y("$ZodCheckStartsWith",(_,$)=>{G_.init(_,$);let g=new RegExp(`^${S$($.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})}}),l2=Y("$ZodCheckEndsWith",(_,$)=>{G_.init(_,$);let g=new RegExp(`.*${S$($.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})}});t2=Y("$ZodCheckProperty",(_,$)=>{G_.init(_,$),_._zod.check=(g)=>{let U=$.schema._zod.run({value:g.value[$.property],issues:[]},{});if(U instanceof Promise)return U.then((D)=>fR(D,g,$.property));fR(U,g,$.property);return}}),o2=Y("$ZodCheckMimeType",(_,$)=>{G_.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})}}),p2=Y("$ZodCheckOverwrite",(_,$)=>{G_.init(_,$),_._zod.check=(g)=>{g.value=$.tx(g.value)}})});class fI{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 e2;var a2=w(()=>{e2={major:4,minor:4,patch:3}});function YA(_){if(_==="")return!0;if(/\s/.test(_))return!1;if(_.length%4!==0)return!1;try{return atob(_),!0}catch{return!1}}function $G(_){if(!kI.test(_))return!1;let $=_.replace(/[-_]/g,(U)=>U==="-"?"+":"/"),g=$.padEnd(Math.ceil($.length/4)*4,"=");return YA(g)}function gG(_,$=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 cR(_,$,g){if(_.issues.length)$.issues.push(...e_(g,_.issues));$.value[g]=_.value}function hI(_,$,g,U,D,I){let j=g in U;if(_.issues.length){if(D&&I&&!j)return;$.issues.push(...e_(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 DG(_){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=pN(_.shape);return{..._,keys:$,keySet:new Set($),numKeys:$.length,optionalKeys:new Set(g)}}function UG(_,$,g,U,D,I){let j=[],E=D.keySet,A=D.catchall._zod,O=A.def.type,P=A.optin==="optional",W=A.optout==="optional";for(let z in $){if(z==="__proto__")continue;if(E.has(z))continue;if(O==="never"){j.push(z);continue}let S=A.run({value:$[z],issues:[]},U);if(S instanceof Promise)_.push(S.then((L)=>hI(L,g,z,$,P,W)));else hI(S,g,z,$,P,W)}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 hR(_,$,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)=>m_(j,U,F_())))}),$}function nR(_,$,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)=>m_(j,U,F_())))});else $.issues.push({code:"invalid_union",input:$.value,inst:g,errors:[],inclusive:!1});return $}function s2(_,$){if(_===$)return{valid:!0,data:_};if(_ instanceof Date&&$ instanceof Date&&+_===+$)return{valid:!0,data:_};if(Z6(_)&&Z6($)){let g=Object.keys($),U=Object.keys(_).filter((I)=>g.indexOf(I)!==-1),D={..._,...$};for(let I of U){let j=s2(_[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=s2(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 dR(_,$,g){let U=new Map,D;for(let E of $.issues)if(E.code==="unrecognized_keys"){D??(D=E);for(let A of E.keys){if(!U.has(A))U.set(A,{});U.get(A).l=!0}}else _.issues.push(E);for(let E of g.issues)if(E.code==="unrecognized_keys")for(let A of E.keys){if(!U.has(A))U.set(A,{});U.get(A).r=!0}else _.issues.push(E);let I=[...U].filter(([,E])=>E.l&&E.r).map(([E])=>E);if(I.length&&D)_.issues.push({...D,keys:I});if(H6(_))return _;let j=s2($.value,g.value);if(!j.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(j.mergeErrorPath)}`);return _.value=j.data,_}function mR(_,$){for(let g=_.length-1;g>=0;g--)if(_[g]._zod[$]!=="optional")return g+1;return 0}function iR(_,$,g){if(_.issues.length)$.issues.push(...e_(g,_.issues));$.value[g]=_.value}function lR(_,$,g,U,D){for(let I=0;I=D){$.value.length=I;break}$.issues.push(...e_(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 tR(_,$,g,U,D,I,j){if(_.issues.length)if(a0.has(typeof U))g.issues.push(...e_(U,_.issues));else g.issues.push({code:"invalid_key",origin:"map",input:D,inst:I,issues:_.issues.map((E)=>m_(E,j,F_()))});if($.issues.length)if(a0.has(typeof U))g.issues.push(...e_(U,$.issues));else g.issues.push({origin:"map",code:"invalid_element",input:D,inst:I,key:U,issues:$.issues.map((E)=>m_(E,j,F_()))});g.value.set(_.value,$.value)}function oR(_,$){if(_.issues.length)$.issues.push(..._.issues);$.value.add(_.value)}function pR(_,$){if($===void 0&&(_.issues.length||_.fallback))return{issues:[],value:void 0};return _}function eR(_,$){if(_.value===void 0)_.value=$.defaultValue;return _}function aR(_,$){if(!_.issues.length&&_.value===void 0)_.issues.push({code:"invalid_type",expected:"nonoptional",input:_.value,inst:$});return _}function xI(_,$,g){if(_.issues.length)return _.aborted=!0,_;return $._zod.run({value:_.value,issues:_.issues,fallback:_.fallback},g)}function yI(_,$,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 sR(_){return _.value=Object.freeze(_.value),_}function _G(_,$,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(F4(D))}}var l,zg,R_,_A,$A,gA,DA,UA,IA,jA,EA,NA,AA,OA,PA,SA,LA,WA,JA,zA,RA,GA,XA,QA,TA,KA,qA,BA,nI,VA,ID,dI,FA,rA,bA,MA,ZA,HA,kA,CA,vA,wA,IG,uA,jD,fA,xA,yA,mI,cA,hA,nA,dA,mA,iA,lA,iI,tA,oA,pA,eA,aA,sA,_O,$O,lI,ED,gO,DO,UO,IO,jO,EO,NO;var AO=w(()=>{uI();Lg();D2();CI();h();a2();h();l=Y("$ZodType",(_,$)=>{var g;_??(_={}),_._zod.def=$,_._zod.bag=_._zod.bag||{},_._zod.version=e2;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,E,A)=>{let O=H6(j),P;for(let W of E){if(W._zod.def.when){if(sN(j))continue;if(!W._zod.def.when(j))continue}else if(O)continue;let z=j.issues.length,S=W._zod.check(j);if(S instanceof Promise&&A?.async===!1)throw new f$;if(P||S instanceof Promise)P=(P??Promise.resolve()).then(async()=>{if(await S,j.issues.length===z)return;if(!O)O=H6(j,z)});else{if(j.issues.length===z)continue;if(!O)O=H6(j,z)}}if(P)return P.then(()=>{return j});return j},I=(j,E,A)=>{if(H6(j))return j.aborted=!0,j;let O=D(E,U,A);if(O instanceof Promise){if(A.async===!1)throw new f$;return O.then((P)=>_._zod.parse(P,A))}return _._zod.parse(O,A)};_._zod.run=(j,E)=>{if(E.skipChecks)return _._zod.parse(j,E);if(E.direction==="backward"){let O=_._zod.parse({value:j.value,issues:[]},{...E,skipChecks:!0});if(O instanceof Promise)return O.then((P)=>{return I(P,j,E)});return I(O,j,E)}let A=_._zod.parse(j,E);if(A instanceof Promise){if(E.async===!1)throw new f$;return A.then((O)=>D(O,U,E))}return D(A,U,E)}}$_(_,"~standard",()=>({validate:(D)=>{try{let I=$2(_,D);return I.success?{value:I.data}:{issues:I.error?.issues}}catch(I){return g2(_,D).then((j)=>j.success?{value:j.data}:{issues:j.error?.issues})}},vendor:"zod",version:1}))}),zg=Y("$ZodString",(_,$)=>{l.init(_,$),_._zod.pattern=[..._?._zod.bag?.patterns??[]].pop()??B2(_._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",(_,$)=>{C4.init(_,$),zg.init(_,$)}),_A=Y("$ZodGUID",(_,$)=>{$.pattern??($.pattern=P2),R_.init(_,$)}),$A=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=Jg(U))}else $.pattern??($.pattern=Jg());R_.init(_,$)}),gA=Y("$ZodEmail",(_,$)=>{$.pattern??($.pattern=S2),R_.init(_,$)}),DA=Y("$ZodURL",(_,$)=>{R_.init(_,$),_._zod.check=(g)=>{try{let U=g.value.trim();if(!$.normalize&&$.protocol?.source===Y2.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})}}}),UA=Y("$ZodEmoji",(_,$)=>{$.pattern??($.pattern=L2()),R_.init(_,$)}),IA=Y("$ZodNanoID",(_,$)=>{$.pattern??($.pattern=A2),R_.init(_,$)}),jA=Y("$ZodCUID",(_,$)=>{$.pattern??($.pattern=U2),R_.init(_,$)}),EA=Y("$ZodCUID2",(_,$)=>{$.pattern??($.pattern=I2),R_.init(_,$)}),NA=Y("$ZodULID",(_,$)=>{$.pattern??($.pattern=j2),R_.init(_,$)}),AA=Y("$ZodXID",(_,$)=>{$.pattern??($.pattern=E2),R_.init(_,$)}),OA=Y("$ZodKSUID",(_,$)=>{$.pattern??($.pattern=N2),R_.init(_,$)}),PA=Y("$ZodISODateTime",(_,$)=>{$.pattern??($.pattern=q2($)),R_.init(_,$)}),SA=Y("$ZodISODate",(_,$)=>{$.pattern??($.pattern=T2),R_.init(_,$)}),LA=Y("$ZodISOTime",(_,$)=>{$.pattern??($.pattern=K2($)),R_.init(_,$)}),WA=Y("$ZodISODuration",(_,$)=>{$.pattern??($.pattern=O2),R_.init(_,$)}),JA=Y("$ZodIPv4",(_,$)=>{$.pattern??($.pattern=W2),R_.init(_,$),_._zod.bag.format="ipv4"}),zA=Y("$ZodIPv6",(_,$)=>{$.pattern??($.pattern=J2),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})}}}),RA=Y("$ZodMAC",(_,$)=>{$.pattern??($.pattern=z2($.delimiter)),R_.init(_,$),_._zod.bag.format="mac"}),GA=Y("$ZodCIDRv4",(_,$)=>{$.pattern??($.pattern=R2),R_.init(_,$)}),XA=Y("$ZodCIDRv6",(_,$)=>{$.pattern??($.pattern=G2),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})}}});QA=Y("$ZodBase64",(_,$)=>{$.pattern??($.pattern=X2),R_.init(_,$),_._zod.bag.contentEncoding="base64",_._zod.check=(g)=>{if(YA(g.value))return;g.issues.push({code:"invalid_format",format:"base64",input:g.value,inst:_,continue:!$.abort})}});TA=Y("$ZodBase64URL",(_,$)=>{$.pattern??($.pattern=kI),R_.init(_,$),_._zod.bag.contentEncoding="base64url",_._zod.check=(g)=>{if($G(g.value))return;g.issues.push({code:"invalid_format",format:"base64url",input:g.value,inst:_,continue:!$.abort})}}),KA=Y("$ZodE164",(_,$)=>{$.pattern??($.pattern=Q2),R_.init(_,$)});qA=Y("$ZodJWT",(_,$)=>{R_.init(_,$),_._zod.check=(g)=>{if(gG(g.value,$.alg))return;g.issues.push({code:"invalid_format",format:"jwt",input:g.value,inst:_,continue:!$.abort})}}),BA=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})}}),nI=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}}),VA=Y("$ZodNumberFormat",(_,$)=>{C2.init(_,$),nI.init(_,$)}),ID=Y("$ZodBoolean",(_,$)=>{l.init(_,$),_._zod.pattern=r2,_._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}}),dI=Y("$ZodBigInt",(_,$)=>{l.init(_,$),_._zod.pattern=V2,_._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}}),FA=Y("$ZodBigIntFormat",(_,$)=>{v2.init(_,$),dI.init(_,$)}),rA=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}}),bA=Y("$ZodUndefined",(_,$)=>{l.init(_,$),_._zod.pattern=M2,_._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}}),MA=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}}),ZA=Y("$ZodAny",(_,$)=>{l.init(_,$),_._zod.parse=(g)=>g}),HA=Y("$ZodUnknown",(_,$)=>{l.init(_,$),_._zod.parse=(g)=>g}),kA=Y("$ZodNever",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{return g.issues.push({expected:"never",code:"invalid_type",input:g.value,inst:_}),g}}),CA=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}}),vA=Y("$ZodDate",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{if($.coerce)try{g.value=new Date(g.value)}catch(E){}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}});wA=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;jcR(O,g,j)));else cR(A,g,j)}if(I.length)return Promise.all(I).then(()=>g);return g}});IG=Y("$ZodObject",(_,$)=>{if(l.init(_,$),!Object.getOwnPropertyDescriptor($,"shape")?.get){let E=$.shape;Object.defineProperty($,"shape",{get:()=>{let A={...E};return Object.defineProperty($,"shape",{value:A}),A}})}let U=V4(()=>DG($));$_(_._zod,"propValues",()=>{let E=$.shape,A={};for(let O in E){let P=E[O]._zod;if(P.values){A[O]??(A[O]=new Set);for(let W of P.values)A[O].add(W)}}return A});let D=Wg,I=$.catchall,j;_._zod.parse=(E,A)=>{j??(j=U.value);let O=E.value;if(!D(O))return E.issues.push({expected:"object",code:"invalid_type",input:O,inst:_}),E;E.value={};let P=[],W=j.shape;for(let z of j.keys){let S=W[z],L=S._zod.optin==="optional",J=S._zod.optout==="optional",R=S._zod.run({value:O[z],issues:[]},A);if(R instanceof Promise)P.push(R.then((X)=>hI(X,E,z,O,L,J)));else hI(R,E,z,O,L,J)}if(!I)return P.length?Promise.all(P).then(()=>E):E;return UG(P,O,E,A,U.value,_)}}),uA=Y("$ZodObjectJIT",(_,$)=>{IG.init(_,$);let g=_._zod.parse,U=V4(()=>DG($)),D=(z)=>{let S=new fI(["shape","payload","ctx"]),L=U.value,J=(B)=>{let Q=XI(B);return`shape[${Q}]._zod.run({ value: input[${Q}], issues: [] }, ctx)`};S.write("const input = payload.value;");let R=Object.create(null),X=0;for(let B of L.keys)R[B]=`key_${X++}`;S.write("const newResult = {};");for(let B of L.keys){let Q=R[B],T=XI(B),K=z[B],V=K?._zod?.optin==="optional",F=K?._zod?.optout==="optional";if(S.write(`const ${Q} = ${J(B)};`),V&&F)S.write(` - if (${Q}.issues.length) { +var TY=Object.create;var{getPrototypeOf:FY,defineProperty:wN,getOwnPropertyNames:VY}=Object;var BY=Object.prototype.hasOwnProperty;function MY(_){return this[_]}var bY,ZY,HY=(_,$,D)=>{var I=_!=null&&typeof _==="object";if(I){var U=$?bY??=new WeakMap:ZY??=new WeakMap,E=U.get(_);if(E)return E}D=_!=null?TY(FY(_)):{};let j=$||!_||!_.__esModule?wN(D,"default",{value:_,enumerable:!0}):D;for(let N of VY(_))if(!BY.call(j,N))wN(j,N,{get:MY.bind(_,N),enumerable:!0});if(I)U.set(_,j);return j};var D4=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var kY=(_)=>_;function qY(_,$){this[_]=kY.bind(null,$)}var x$=(_,$)=>{for(var D in $)wN(_,D,{get:$[D],enumerable:!0,configurable:!0,set:qY.bind($,D)})};var r=(_,$)=>()=>(_&&($=_(_=0)),$);var O_=import.meta.require;function Q(_,$,D){function I(N,A){if(!N._zod)Object.defineProperty(N,"_zod",{value:{def:A,constr:j,traits:new Set},enumerable:!1});if(N._zod.traits.has(_))return;N._zod.traits.add(_),$(N,A);let O=j.prototype,L=Object.keys(O);for(let J=0;J{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(P4,_);return P4}var yX,FI,VI,m$,z4,P4;var X4=r(()=>{FI=Object.freeze({status:"aborted"});VI=Symbol("zod_brand");m$=class m$ extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};z4=class z4 extends Error{constructor(_){super(`Encountered unidirectional transform during encode: ${_}`);this.name="ZodEncodeError"}};(yX=globalThis).__zod_globalConfig??(yX.__zod_globalConfig={});P4=globalThis.__zod_globalConfig});var H={};x$(H,{unwrapMessage:()=>DU,uint8ArrayToHex:()=>pV,uint8ArrayToBase64url:()=>tV,uint8ArrayToBase64:()=>nX,stringifyPrimitive:()=>M,slugify:()=>I2,shallowClone:()=>j2,safeExtend:()=>cV,required:()=>mV,randomString:()=>wV,propertyKeyTypes:()=>EU,promiseAllObject:()=>vV,primitiveTypes:()=>N2,prefixIssues:()=>$$,pick:()=>uV,partial:()=>dV,parsedType:()=>b,optionalKeys:()=>g2,omit:()=>yV,objectClone:()=>kV,numKeys:()=>rV,nullish:()=>C6,normalizeParams:()=>v,mergeDefs:()=>L6,merge:()=>nV,jsonStringifyReplacer:()=>H0,joinValues:()=>V,issue:()=>q0,isPlainObject:()=>w6,isObject:()=>G4,hexToUint8Array:()=>oV,getSizableOrigin:()=>jU,getParsedType:()=>fV,getLengthableOrigin:()=>NU,getEnumValues:()=>UU,getElementAtPath:()=>CV,floatSafeRemainder:()=>U2,finalizeIssue:()=>o_,extend:()=>hV,explicitlyAborted:()=>L2,escapeRegex:()=>z$,esc:()=>BI,defineLazy:()=>$_,createTransparentProxy:()=>xV,cloneDef:()=>qV,clone:()=>c_,cleanRegex:()=>IU,cleanEnum:()=>lV,captureStackTrace:()=>MI,cached:()=>k0,base64urlToUint8Array:()=>iV,base64ToUint8Array:()=>cX,assignProp:()=>v6,assertNotEqual:()=>MV,assertNever:()=>ZV,assertIs:()=>bV,assertEqual:()=>BV,assert:()=>HV,allowsEval:()=>E2,aborted:()=>r6,NUMBER_FORMAT_RANGES:()=>A2,Class:()=>dX,BIGINT_FORMAT_RANGES:()=>O2});function BV(_){return _}function MV(_){return _}function bV(_){}function ZV(_){throw Error("Unexpected value in exhaustive check")}function HV(_){}function UU(_){let $=Object.values(_).filter((I)=>typeof I==="number");return Object.entries(_).filter(([I,U])=>$.indexOf(+I)===-1).map(([I,U])=>U)}function V(_,$="|"){return _.map((D)=>M(D)).join($)}function H0(_,$){if(typeof $==="bigint")return $.toString();return $}function k0(_){return{get value(){{let D=_();return Object.defineProperty(this,"value",{value:D}),D}throw Error("cached value already set")}}}function C6(_){return _===null||_===void 0}function IU(_){let $=_.startsWith("^")?1:0,D=_.endsWith("$")?_.length-1:_.length;return _.slice($,D)}function U2(_,$){let D=_/$,I=Math.round(D),U=Number.EPSILON*Math.max(Math.abs(D),1);if(Math.abs(D-I)D?.[I],_)}function vV(_){let $=Object.keys(_),D=$.map((I)=>_[I]);return Promise.all(D).then((I)=>{let U={};for(let E=0;E<$.length;E++)U[$[E]]=I[E];return U})}function wV(_=10){let D="";for(let I=0;I<_;I++)D+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return D}function BI(_){return JSON.stringify(_)}function I2(_){return _.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function G4(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)}function w6(_){if(G4(_)===!1)return!1;let $=_.constructor;if($===void 0)return!0;if(typeof $!=="function")return!0;let D=$.prototype;if(G4(D)===!1)return!1;if(Object.prototype.hasOwnProperty.call(D,"isPrototypeOf")===!1)return!1;return!0}function j2(_){if(w6(_))return{..._};if(Array.isArray(_))return[..._];if(_ instanceof Map)return new Map(_);if(_ instanceof Set)return new Set(_);return _}function rV(_){let $=0;for(let D in _)if(Object.prototype.hasOwnProperty.call(_,D))$++;return $}function z$(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c_(_,$,D){let I=new _._zod.constr($??_._zod.def);if(!$||D?.parent)I._zod.parent=_;return I}function v(_){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 xV(_){let $;return new Proxy({},{get(D,I,U){return $??($=_()),Reflect.get($,I,U)},set(D,I,U,E){return $??($=_()),Reflect.set($,I,U,E)},has(D,I){return $??($=_()),Reflect.has($,I)},deleteProperty(D,I){return $??($=_()),Reflect.deleteProperty($,I)},ownKeys(D){return $??($=_()),Reflect.ownKeys($)},getOwnPropertyDescriptor(D,I){return $??($=_()),Reflect.getOwnPropertyDescriptor($,I)},defineProperty(D,I,U){return $??($=_()),Reflect.defineProperty($,I,U)}})}function M(_){if(typeof _==="bigint")return _.toString()+"n";if(typeof _==="string")return`"${_}"`;return`${_}`}function g2(_){return Object.keys(_).filter(($)=>{return _[$]._zod.optin==="optional"&&_[$]._zod.optout==="optional"})}function uV(_,$){let D=_._zod.def,I=D.checks;if(I&&I.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let E=L6(_._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 v6(this,"shape",j),j},checks:[]});return c_(_,E)}function yV(_,$){let D=_._zod.def,I=D.checks;if(I&&I.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let E=L6(_._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 v6(this,"shape",j),j},checks:[]});return c_(_,E)}function hV(_,$){if(!w6($))throw Error("Invalid input to extend: expected a plain object");let D=_._zod.def.checks;if(D&&D.length>0){let E=_._zod.def.shape;for(let j in $)if(Object.getOwnPropertyDescriptor(E,j)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let U=L6(_._zod.def,{get shape(){let E={..._._zod.def.shape,...$};return v6(this,"shape",E),E}});return c_(_,U)}function cV(_,$){if(!w6($))throw Error("Invalid input to safeExtend: expected a plain object");let D=L6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$};return v6(this,"shape",I),I}});return c_(_,D)}function nV(_,$){if(_._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let D=L6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$._zod.def.shape};return v6(this,"shape",I),I},get catchall(){return $._zod.def.catchall},checks:$._zod.def.checks??[]});return c_(_,D)}function dV(_,$,D){let U=$._zod.def.checks;if(U&&U.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let j=L6($._zod.def,{get shape(){let N=$._zod.def.shape,A={...N};if(D)for(let O in D){if(!(O in N))throw Error(`Unrecognized key: "${O}"`);if(!D[O])continue;A[O]=_?new _({type:"optional",innerType:N[O]}):N[O]}else for(let O in N)A[O]=_?new _({type:"optional",innerType:N[O]}):N[O];return v6(this,"shape",A),A},checks:[]});return c_($,j)}function mV(_,$,D){let I=L6($._zod.def,{get shape(){let U=$._zod.def.shape,E={...U};if(D)for(let j in D){if(!(j in E))throw Error(`Unrecognized key: "${j}"`);if(!D[j])continue;E[j]=new _({type:"nonoptional",innerType:U[j]})}else for(let j in U)E[j]=new _({type:"nonoptional",innerType:U[j]});return v6(this,"shape",E),E}});return c_($,I)}function r6(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue!==!0)return!0;return!1}function L2(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue===!1)return!0;return!1}function $$(_,$){return $.map((D)=>{var I;return(I=D).path??(I.path=[]),D.path.unshift(_),D})}function DU(_){return typeof _==="string"?_:_?.message}function o_(_,$,D){let I=_.message?_.message:DU(_.inst?._zod.def?.error?.(_))??DU($?.error?.(_))??DU(D.customError?.(_))??DU(D.localeError?.(_))??"Invalid input",{inst:U,continue:E,input:j,...N}=_;if(N.path??(N.path=[]),N.message=I,$?.reportInput)N.input=j;return N}function jU(_){if(_ instanceof Set)return"set";if(_ instanceof Map)return"map";if(_ instanceof File)return"file";return"unknown"}function NU(_){if(Array.isArray(_))return"array";if(typeof _==="string")return"string";return"unknown"}function b(_){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 q0(..._){let[$,D,I]=_;if(typeof $==="string")return{message:$,code:"custom",input:D,inst:I};return{...$}}function lV(_){return Object.entries(_).filter(([$,D])=>{return Number.isNaN(Number.parseInt($,10))}).map(($)=>$[1])}function cX(_){let $=atob(_),D=new Uint8Array($.length);for(let I=0;I<$.length;I++)D[I]=$.charCodeAt(I);return D}function nX(_){let $="";for(let D=0;D<_.length;D++)$+=String.fromCharCode(_[D]);return btoa($)}function iV(_){let $=_.replace(/-/g,"+").replace(/_/g,"/"),D="=".repeat((4-$.length%4)%4);return cX($+D)}function tV(_){return nX(_).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function oV(_){let $=_.replace(/^0x/,"");if($.length%2!==0)throw Error("Invalid hex string length");let D=new Uint8Array($.length/2);for(let I=0;I<$.length;I+=2)D[I/2]=Number.parseInt($.slice(I,I+2),16);return D}function pV(_){return Array.from(_).map(($)=>$.toString(16).padStart(2,"0")).join("")}class dX{constructor(..._){}}var hX,MI,E2,fV=(_)=>{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: ${$}`)}},EU,N2,A2,O2;var n=r(()=>{X4();hX=Symbol("evaluating");MI="captureStackTrace"in Error?Error.captureStackTrace:(..._)=>{};E2=k0(()=>{if(P4.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(_){return!1}});EU=new Set(["string","number","symbol"]),N2=new Set(["string","number","bigint","boolean","symbol","undefined"]);A2={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]},O2={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]}});function C0(_,$=(D)=>D.message){let D={},I=[];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 I.push($(U));return{formErrors:I,fieldErrors:D}}function v0(_,$=(D)=>D.message){let D={_errors:[]},I=(U,E=[])=>{for(let j of U.issues)if(j.code==="invalid_union"&&j.errors.length)j.errors.map((N)=>I({issues:N},[...E,...j.path]));else if(j.code==="invalid_key")I({issues:j.issues},[...E,...j.path]);else if(j.code==="invalid_element")I({issues:j.issues},[...E,...j.path]);else{let N=[...E,...j.path];if(N.length===0)D._errors.push($(j));else{let A=D,O=0;while(OD.message){let D={errors:[]},I=(U,E=[])=>{var j,N;for(let A of U.issues)if(A.code==="invalid_union"&&A.errors.length)A.errors.map((O)=>I({issues:O},[...E,...A.path]));else if(A.code==="invalid_key")I({issues:A.issues},[...E,...A.path]);else if(A.code==="invalid_element")I({issues:A.issues},[...E,...A.path]);else{let O=[...E,...A.path];if(O.length===0){D.errors.push($(A));continue}let L=D,J=0;while(Jtypeof I==="object"?I.key:I);for(let I of D)if(typeof I==="number")$.push(`[${I}]`);else if(typeof I==="symbol")$.push(`[${JSON.stringify(String(I))}]`);else if(/[^\w$]/.test(I))$.push(`[${JSON.stringify(I)}]`);else{if($.length)$.push(".");$.push(I)}return $.join("")}function ZI(_){let $=[],D=[..._.issues].sort((I,U)=>(I.path??[]).length-(U.path??[]).length);for(let I of D)if($.push(`\u2716 ${I.message}`),I.path?.length)$.push(` \u2192 at ${lX(I.path)}`);return $.join(` +`)}var mX=(_,$)=>{_.name="$ZodError",Object.defineProperty(_,"_zod",{value:_._zod,enumerable:!1}),Object.defineProperty(_,"issues",{value:$,enumerable:!1}),_.message=JSON.stringify($,H0,2),Object.defineProperty(_,"toString",{value:()=>_.message,enumerable:!1})},gU,D$;var S2=r(()=>{X4();n();gU=Q("$ZodError",mX),D$=Q("$ZodError",mX,{Parent:Error})});var w0=(_)=>($,D,I,U)=>{let E=I?{...I,async:!1}:{async:!1},j=$._zod.run({value:D,issues:[]},E);if(j instanceof Promise)throw new m$;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((A)=>o_(A,E,Z_())));throw MI(N,U?.callee),N}return j.value},HI,r0=(_)=>async($,D,I,U)=>{let E=I?{...I,async:!0}:{async:!0},j=$._zod.run({value:D,issues:[]},E);if(j instanceof Promise)j=await j;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((A)=>o_(A,E,Z_())));throw MI(N,U?.callee),N}return j.value},kI,f0=(_)=>($,D,I)=>{let U=I?{...I,async:!1}:{async:!1},E=$._zod.run({value:D,issues:[]},U);if(E instanceof Promise)throw new m$;return E.issues.length?{success:!1,error:new(_??gU)(E.issues.map((j)=>o_(j,U,Z_())))}:{success:!0,data:E.value}},J2,x0=(_)=>async($,D,I)=>{let U=I?{...I,async:!0}:{async:!0},E=$._zod.run({value:D,issues:[]},U);if(E instanceof Promise)E=await E;return E.issues.length?{success:!1,error:new _(E.issues.map((j)=>o_(j,U,Z_())))}:{success:!0,data:E.value}},W2,qI=(_)=>($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return w0(_)($,D,U)},aV,CI=(_)=>($,D,I)=>{return w0(_)($,D,I)},sV,vI=(_)=>async($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return r0(_)($,D,U)},_B,wI=(_)=>async($,D,I)=>{return r0(_)($,D,I)},$B,rI=(_)=>($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return f0(_)($,D,U)},DB,fI=(_)=>($,D,I)=>{return f0(_)($,D,I)},UB,xI=(_)=>async($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return x0(_)($,D,U)},IB,uI=(_)=>async($,D,I)=>{return x0(_)($,D,I)},EB;var P2=r(()=>{X4();S2();n();HI=w0(D$),kI=r0(D$),J2=f0(D$),W2=x0(D$),aV=qI(D$),sV=CI(D$),_B=vI(D$),$B=wI(D$),DB=rI(D$),UB=fI(D$),IB=xI(D$),EB=uI(D$)});var U$={};x$(U$,{xid:()=>R2,uuid7:()=>AB,uuid6:()=>gB,uuid4:()=>NB,uuid:()=>R4,uppercase:()=>d2,unicodeEmail:()=>iX,undefined:()=>c2,ulid:()=>G2,time:()=>w2,string:()=>f2,sha512_hex:()=>HB,sha512_base64url:()=>qB,sha512_base64:()=>kB,sha384_hex:()=>MB,sha384_base64url:()=>ZB,sha384_base64:()=>bB,sha256_hex:()=>FB,sha256_base64url:()=>BB,sha256_base64:()=>VB,sha1_hex:()=>QB,sha1_base64url:()=>TB,sha1_base64:()=>KB,rfc5322Email:()=>LB,number:()=>AU,null:()=>h2,nanoid:()=>Q2,md5_hex:()=>GB,md5_base64url:()=>YB,md5_base64:()=>RB,mac:()=>b2,lowercase:()=>n2,ksuid:()=>Y2,ipv6:()=>M2,ipv4:()=>B2,integer:()=>u2,idnEmail:()=>SB,httpProtocol:()=>q2,html5Email:()=>OB,hostname:()=>PB,hex:()=>XB,guid:()=>T2,extendedDuration:()=>jB,emoji:()=>V2,email:()=>F2,e164:()=>C2,duration:()=>K2,domain:()=>zB,datetime:()=>r2,date:()=>v2,cuid2:()=>X2,cuid:()=>z2,cidrv6:()=>H2,cidrv4:()=>Z2,browserEmail:()=>JB,boolean:()=>y2,bigint:()=>x2,base64url:()=>yI,base64:()=>k2});function V2(){return new RegExp(WB,"u")}function oX(_){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 w2(_){return new RegExp(`^${oX(_)}$`)}function r2(_){let $=oX({precision:_.precision}),D=["Z"];if(_.local)D.push("");if(_.offset)D.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let I=`${$}(?:${D.join("|")})`;return new RegExp(`^${tX}T(?:${I})$`)}function OU(_,$){return new RegExp(`^[A-Za-z0-9+/]{${_}}${$}$`)}function LU(_){return new RegExp(`^[A-Za-z0-9_-]{${_}}$`)}var z2,X2,G2,R2,Y2,Q2,K2,jB,T2,R4=(_)=>{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})$`)},NB,gB,AB,F2,OB,LB,iX,SB,JB,WB="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",B2,M2,b2=(_)=>{let $=z$(_??":");return new RegExp(`^(?:[0-9A-F]{2}${$}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${$}){5}[0-9a-f]{2}$`)},Z2,H2,k2,yI,PB,zB,q2,C2,tX="(?:(?:\\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])))",v2,f2=(_)=>{let $=_?`[\\s\\S]{${_?.minimum??0},${_?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${$}$`)},x2,u2,AU,y2,h2,c2,n2,d2,XB,GB,RB,YB,QB,KB,TB,FB,VB,BB,MB,bB,ZB,HB,kB,qB;var hI=r(()=>{n();z2=/^[cC][0-9a-z]{6,}$/,X2=/^[0-9a-z]+$/,G2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,R2=/^[0-9a-vA-V]{20}$/,Y2=/^[A-Za-z0-9]{27}$/,Q2=/^[a-zA-Z0-9_-]{21}$/,K2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,jB=/^[-+]?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)?)??$/,T2=/^([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})$/,NB=R4(4),gB=R4(6),AB=R4(7),F2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,OB=/^[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])?)*$/,LB=/^(([^<>()\[\]\\.,;:\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,}))$/,iX=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,SB=iX,JB=/^[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])?)*$/;B2=/^(?:(?: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])$/,M2=/^(([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}|:))$/,Z2=/^((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])$/,H2=/^(([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])$/,k2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,yI=/^[A-Za-z0-9_-]*$/,PB=/^(?=.{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])?)*\.?$/,zB=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,q2=/^https?$/,C2=/^\+[1-9]\d{6,14}$/,v2=new RegExp(`^${tX}$`);x2=/^-?\d+n?$/,u2=/^-?\d+$/,AU=/^-?\d+(?:\.\d+)?$/,y2=/^(?:true|false)$/i,h2=/^null$/i,c2=/^undefined$/i,n2=/^[^A-Z]*$/,d2=/^[^a-z]*$/,XB=/^[0-9a-fA-F]*$/;GB=/^[0-9a-fA-F]{32}$/,RB=OU(22,"=="),YB=LU(22),QB=/^[0-9a-fA-F]{40}$/,KB=OU(27,"="),TB=LU(27),FB=/^[0-9a-fA-F]{64}$/,VB=OU(43,"="),BB=LU(43),MB=/^[0-9a-fA-F]{96}$/,bB=OU(64,""),ZB=LU(64),HB=/^[0-9a-fA-F]{128}$/,kB=OU(86,"=="),qB=LU(86)});function pX(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues))}var Y_,eX,cI,nI,m2,l2,i2,t2,o2,p2,e2,a2,s2,u0,_A,$A,DA,UA,IA,EA,jA,NA,gA;var dI=r(()=>{X4();hI();n();Y_=Q("$ZodCheck",(_,$)=>{var D;_._zod??(_._zod={}),_._zod.def=$,(D=_._zod).onattach??(D.onattach=[])}),eX={number:"number",bigint:"bigint",object:"date"},cI=Q("$ZodCheckLessThan",(_,$)=>{Y_.init(_,$);let D=eX[typeof $.value];_._zod.onattach.push((I)=>{let U=I._zod.bag,E=($.inclusive?U.maximum:U.exclusiveMaximum)??Number.POSITIVE_INFINITY;if($.value{if($.inclusive?I.value<=$.value:I.value<$.value)return;I.issues.push({origin:D,code:"too_big",maximum:typeof $.value==="object"?$.value.getTime():$.value,input:I.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),nI=Q("$ZodCheckGreaterThan",(_,$)=>{Y_.init(_,$);let D=eX[typeof $.value];_._zod.onattach.push((I)=>{let U=I._zod.bag,E=($.inclusive?U.minimum:U.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if($.value>E)if($.inclusive)U.minimum=$.value;else U.exclusiveMinimum=$.value}),_._zod.check=(I)=>{if($.inclusive?I.value>=$.value:I.value>$.value)return;I.issues.push({origin:D,code:"too_small",minimum:typeof $.value==="object"?$.value.getTime():$.value,input:I.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),m2=Q("$ZodCheckMultipleOf",(_,$)=>{Y_.init(_,$),_._zod.onattach.push((D)=>{var I;(I=D._zod.bag).multipleOf??(I.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):U2(D.value,$.value)===0)return;D.issues.push({origin:typeof D.value,code:"not_multiple_of",divisor:$.value,input:D.value,inst:_,continue:!$.abort})}}),l2=Q("$ZodCheckNumberFormat",(_,$)=>{Y_.init(_,$),$.format=$.format||"float64";let D=$.format?.includes("int"),I=D?"int":"number",[U,E]=A2[$.format];_._zod.onattach.push((j)=>{let N=j._zod.bag;if(N.format=$.format,N.minimum=U,N.maximum=E,D)N.pattern=u2}),_._zod.check=(j)=>{let N=j.value;if(D){if(!Number.isInteger(N)){j.issues.push({expected:I,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:I,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:I,inclusive:!0,continue:!$.abort});return}}if(NE)j.issues.push({origin:"number",input:N,code:"too_big",maximum:E,inclusive:!0,inst:_,continue:!$.abort})}}),i2=Q("$ZodCheckBigIntFormat",(_,$)=>{Y_.init(_,$);let[D,I]=O2[$.format];_._zod.onattach.push((U)=>{let E=U._zod.bag;E.format=$.format,E.minimum=D,E.maximum=I}),_._zod.check=(U)=>{let E=U.value;if(EI)U.issues.push({origin:"bigint",input:E,code:"too_big",maximum:I,inclusive:!0,inst:_,continue:!$.abort})}}),t2=Q("$ZodCheckMaxSize",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum{let U=I.value;if(U.size<=$.maximum)return;I.issues.push({origin:jU(U),code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),o2=Q("$ZodCheckMinSize",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)I._zod.bag.minimum=$.minimum}),_._zod.check=(I)=>{let U=I.value;if(U.size>=$.minimum)return;I.issues.push({origin:jU(U),code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),p2=Q("$ZodCheckSizeEquals",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.minimum=$.size,U.maximum=$.size,U.size=$.size}),_._zod.check=(I)=>{let U=I.value,E=U.size;if(E===$.size)return;let j=E>$.size;I.issues.push({origin:jU(U),...j?{code:"too_big",maximum:$.size}:{code:"too_small",minimum:$.size},inclusive:!0,exact:!0,input:I.value,inst:_,continue:!$.abort})}}),e2=Q("$ZodCheckMaxLength",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum{let U=I.value;if(U.length<=$.maximum)return;let j=NU(U);I.issues.push({origin:j,code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),a2=Q("$ZodCheckMinLength",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)I._zod.bag.minimum=$.minimum}),_._zod.check=(I)=>{let U=I.value;if(U.length>=$.minimum)return;let j=NU(U);I.issues.push({origin:j,code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),s2=Q("$ZodCheckLengthEquals",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.minimum=$.length,U.maximum=$.length,U.length=$.length}),_._zod.check=(I)=>{let U=I.value,E=U.length;if(E===$.length)return;let j=NU(U),N=E>$.length;I.issues.push({origin:j,...N?{code:"too_big",maximum:$.length}:{code:"too_small",minimum:$.length},inclusive:!0,exact:!0,input:I.value,inst:_,continue:!$.abort})}}),u0=Q("$ZodCheckStringFormat",(_,$)=>{var D,I;if(Y_.init(_,$),_._zod.onattach.push((U)=>{let E=U._zod.bag;if(E.format=$.format,$.pattern)E.patterns??(E.patterns=new Set),E.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(I=_._zod).check??(I.check=()=>{})}),_A=Q("$ZodCheckRegex",(_,$)=>{u0.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})}}),$A=Q("$ZodCheckLowerCase",(_,$)=>{$.pattern??($.pattern=n2),u0.init(_,$)}),DA=Q("$ZodCheckUpperCase",(_,$)=>{$.pattern??($.pattern=d2),u0.init(_,$)}),UA=Q("$ZodCheckIncludes",(_,$)=>{Y_.init(_,$);let D=z$($.includes),I=new RegExp(typeof $.position==="number"?`^.{${$.position}}${D}`:D);$.pattern=I,_._zod.onattach.push((U)=>{let E=U._zod.bag;E.patterns??(E.patterns=new Set),E.patterns.add(I)}),_._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})}}),IA=Q("$ZodCheckStartsWith",(_,$)=>{Y_.init(_,$);let D=new RegExp(`^${z$($.prefix)}.*`);$.pattern??($.pattern=D),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(I)=>{if(I.value.startsWith($.prefix))return;I.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:$.prefix,input:I.value,inst:_,continue:!$.abort})}}),EA=Q("$ZodCheckEndsWith",(_,$)=>{Y_.init(_,$);let D=new RegExp(`.*${z$($.suffix)}$`);$.pattern??($.pattern=D),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(I)=>{if(I.value.endsWith($.suffix))return;I.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:$.suffix,input:I.value,inst:_,continue:!$.abort})}});jA=Q("$ZodCheckProperty",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{let I=$.schema._zod.run({value:D.value[$.property],issues:[]},{});if(I instanceof Promise)return I.then((U)=>pX(U,D,$.property));pX(I,D,$.property);return}}),NA=Q("$ZodCheckMimeType",(_,$)=>{Y_.init(_,$);let D=new Set($.mime);_._zod.onattach.push((I)=>{I._zod.bag.mime=$.mime}),_._zod.check=(I)=>{if(D.has(I.value.type))return;I.issues.push({code:"invalid_value",values:$.mime,input:I.value.type,inst:_,continue:!$.abort})}}),gA=Q("$ZodCheckOverwrite",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{D.value=$.tx(D.value)}})});class mI{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((E)=>E),I=Math.min(...D.map((E)=>E.length-E.trimStart().length)),U=D.map((E)=>E.slice(I)).map((E)=>" ".repeat(this.indent*2)+E);for(let E of U)this.content.push(E)}compile(){let _=Function,$=this?.args,I=[...(this?.content??[""]).map((U)=>` ${U}`)];return new _(...$,I.join(` +`))}}var AA;var OA=r(()=>{AA={major:4,minor:4,patch:3}});function qA(_){if(_==="")return!0;if(/\s/.test(_))return!1;if(_.length%4!==0)return!1;try{return atob(_),!0}catch{return!1}}function J5(_){if(!yI.test(_))return!1;let $=_.replace(/[-_]/g,(I)=>I==="-"?"+":"/"),D=$.padEnd(Math.ceil($.length/4)*4,"=");return qA(D)}function W5(_,$=null){try{let D=_.split(".");if(D.length!==3)return!1;let[I]=D;if(!I)return!1;let U=JSON.parse(atob(I));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 sX(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues));$.value[D]=_.value}function oI(_,$,D,I,U,E){let j=D in I;if(_.issues.length){if(U&&E&&!j)return;$.issues.push(...$$(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 P5(_){let $=Object.keys(_.shape);for(let I of $)if(!_.shape?.[I]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${I}": expected a Zod schema`);let D=g2(_.shape);return{..._,keys:$,keySet:new Set($),numKeys:$.length,optionalKeys:new Set(D)}}function z5(_,$,D,I,U,E){let j=[],N=U.keySet,A=U.catchall._zod,O=A.def.type,L=A.optin==="optional",J=A.optout==="optional";for(let P in $){if(P==="__proto__")continue;if(N.has(P))continue;if(O==="never"){j.push(P);continue}let z=A.run({value:$[P],issues:[]},I);if(z instanceof Promise)_.push(z.then((S)=>oI(S,D,P,$,L,J)));else oI(z,D,P,$,L,J)}if(j.length)D.issues.push({code:"unrecognized_keys",keys:j,input:$,inst:E});if(!_.length)return D;return Promise.all(_).then(()=>{return D})}function _5(_,$,D,I){for(let E of _)if(E.issues.length===0)return $.value=E.value,$;let U=_.filter((E)=>!r6(E));if(U.length===1)return $.value=U[0].value,U[0];return $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:_.map((E)=>E.issues.map((j)=>o_(j,I,Z_())))}),$}function $5(_,$,D,I){let U=_.filter((E)=>E.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((E)=>E.issues.map((j)=>o_(j,I,Z_())))});else $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:[],inclusive:!1});return $}function LA(_,$){if(_===$)return{valid:!0,data:_};if(_ instanceof Date&&$ instanceof Date&&+_===+$)return{valid:!0,data:_};if(w6(_)&&w6($)){let D=Object.keys($),I=Object.keys(_).filter((E)=>D.indexOf(E)!==-1),U={..._,...$};for(let E of I){let j=LA(_[E],$[E]);if(!j.valid)return{valid:!1,mergeErrorPath:[E,...j.mergeErrorPath]};U[E]=j.data}return{valid:!0,data:U}}if(Array.isArray(_)&&Array.isArray($)){if(_.length!==$.length)return{valid:!1,mergeErrorPath:[]};let D=[];for(let I=0;I<_.length;I++){let U=_[I],E=$[I],j=LA(U,E);if(!j.valid)return{valid:!1,mergeErrorPath:[I,...j.mergeErrorPath]};D.push(j.data)}return{valid:!0,data:D}}return{valid:!1,mergeErrorPath:[]}}function D5(_,$,D){let I=new Map,U;for(let N of $.issues)if(N.code==="unrecognized_keys"){U??(U=N);for(let A of N.keys){if(!I.has(A))I.set(A,{});I.get(A).l=!0}}else _.issues.push(N);for(let N of D.issues)if(N.code==="unrecognized_keys")for(let A of N.keys){if(!I.has(A))I.set(A,{});I.get(A).r=!0}else _.issues.push(N);let E=[...I].filter(([,N])=>N.l&&N.r).map(([N])=>N);if(E.length&&U)_.issues.push({...U,keys:E});if(r6(_))return _;let j=LA($.value,D.value);if(!j.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(j.mergeErrorPath)}`);return _.value=j.data,_}function U5(_,$){for(let D=_.length-1;D>=0;D--)if(_[D]._zod[$]!=="optional")return D+1;return 0}function I5(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues));$.value[D]=_.value}function E5(_,$,D,I,U){for(let E=0;E=U){$.value.length=E;break}$.issues.push(...$$(E,j.issues))}$.value[E]=j.value}for(let E=$.value.length-1;E>=I.length;E--)if(D[E]._zod.optout==="optional"&&$.value[E]===void 0)$.value.length=E;else break;return $}function j5(_,$,D,I,U,E,j){if(_.issues.length)if(EU.has(typeof I))D.issues.push(...$$(I,_.issues));else D.issues.push({code:"invalid_key",origin:"map",input:U,inst:E,issues:_.issues.map((N)=>o_(N,j,Z_()))});if($.issues.length)if(EU.has(typeof I))D.issues.push(...$$(I,$.issues));else D.issues.push({origin:"map",code:"invalid_element",input:U,inst:E,key:I,issues:$.issues.map((N)=>o_(N,j,Z_()))});D.value.set(_.value,$.value)}function N5(_,$){if(_.issues.length)$.issues.push(..._.issues);$.value.add(_.value)}function g5(_,$){if($===void 0&&(_.issues.length||_.fallback))return{issues:[],value:void 0};return _}function A5(_,$){if(_.value===void 0)_.value=$.defaultValue;return _}function O5(_,$){if(!_.issues.length&&_.value===void 0)_.issues.push({code:"invalid_type",expected:"nonoptional",input:_.value,inst:$});return _}function lI(_,$,D){if(_.issues.length)return _.aborted=!0,_;return $._zod.run({value:_.value,issues:_.issues,fallback:_.fallback},D)}function iI(_,$,D){if(_.issues.length)return _.aborted=!0,_;if((D.direction||"forward")==="forward"){let U=$.transform(_.value,_);if(U instanceof Promise)return U.then((E)=>tI(_,E,$.out,D));return tI(_,U,$.out,D)}else{let U=$.reverseTransform(_.value,_);if(U instanceof Promise)return U.then((E)=>tI(_,E,$.in,D));return tI(_,U,$.in,D)}}function tI(_,$,D,I){if(_.issues.length)return _.aborted=!0,_;return D._zod.run({value:$,issues:_.issues},I)}function L5(_){return _.value=Object.freeze(_.value),_}function S5(_,$,D,I){if(!_){let U={code:"custom",input:D,inst:I,path:[...I._zod.def.path??[]],continue:!I._zod.def.abort};if(I._zod.def.params)U.params=I._zod.def.params;$.issues.push(q0(U))}}var t,Y4,R_,SA,JA,WA,PA,zA,XA,GA,RA,YA,QA,KA,TA,FA,VA,BA,MA,bA,ZA,HA,kA,CA,vA,wA,rA,fA,pI,xA,SU,eI,uA,yA,hA,cA,nA,dA,mA,lA,iA,tA,X5,oA,JU,pA,eA,aA,aI,sA,_O,$O,DO,UO,IO,EO,sI,jO,NO,gO,AO,OO,LO,SO,JO,_E,WU,WO,PO,zO,XO,GO,RO,YO;var QO=r(()=>{dI();X4();P2();hI();n();OA();n();t=Q("$ZodType",(_,$)=>{var D;_??(_={}),_._zod.def=$,_._zod.bag=_._zod.bag||{},_._zod.version=AA;let I=[..._._zod.def.checks??[]];if(_._zod.traits.has("$ZodCheck"))I.unshift(_);for(let U of I)for(let E of U._zod.onattach)E(_);if(I.length===0)(D=_._zod).deferred??(D.deferred=[]),_._zod.deferred?.push(()=>{_._zod.run=_._zod.parse});else{let U=(j,N,A)=>{let O=r6(j),L;for(let J of N){if(J._zod.def.when){if(L2(j))continue;if(!J._zod.def.when(j))continue}else if(O)continue;let P=j.issues.length,z=J._zod.check(j);if(z instanceof Promise&&A?.async===!1)throw new m$;if(L||z instanceof Promise)L=(L??Promise.resolve()).then(async()=>{if(await z,j.issues.length===P)return;if(!O)O=r6(j,P)});else{if(j.issues.length===P)continue;if(!O)O=r6(j,P)}}if(L)return L.then(()=>{return j});return j},E=(j,N,A)=>{if(r6(j))return j.aborted=!0,j;let O=U(N,I,A);if(O instanceof Promise){if(A.async===!1)throw new m$;return O.then((L)=>_._zod.parse(L,A))}return _._zod.parse(O,A)};_._zod.run=(j,N)=>{if(N.skipChecks)return _._zod.parse(j,N);if(N.direction==="backward"){let O=_._zod.parse({value:j.value,issues:[]},{...N,skipChecks:!0});if(O instanceof Promise)return O.then((L)=>{return E(L,j,N)});return E(O,j,N)}let A=_._zod.parse(j,N);if(A instanceof Promise){if(N.async===!1)throw new m$;return A.then((O)=>U(O,I,N))}return U(A,I,N)}}$_(_,"~standard",()=>({validate:(U)=>{try{let E=J2(_,U);return E.success?{value:E.data}:{issues:E.error?.issues}}catch(E){return W2(_,U).then((j)=>j.success?{value:j.data}:{issues:j.error?.issues})}},vendor:"zod",version:1}))}),Y4=Q("$ZodString",(_,$)=>{t.init(_,$),_._zod.pattern=[..._?._zod.bag?.patterns??[]].pop()??f2(_._zod.bag),_._zod.parse=(D,I)=>{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}}),R_=Q("$ZodStringFormat",(_,$)=>{u0.init(_,$),Y4.init(_,$)}),SA=Q("$ZodGUID",(_,$)=>{$.pattern??($.pattern=T2),R_.init(_,$)}),JA=Q("$ZodUUID",(_,$)=>{if($.version){let I={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[$.version];if(I===void 0)throw Error(`Invalid UUID version: "${$.version}"`);$.pattern??($.pattern=R4(I))}else $.pattern??($.pattern=R4());R_.init(_,$)}),WA=Q("$ZodEmail",(_,$)=>{$.pattern??($.pattern=F2),R_.init(_,$)}),PA=Q("$ZodURL",(_,$)=>{R_.init(_,$),_._zod.check=(D)=>{try{let I=D.value.trim();if(!$.normalize&&$.protocol?.source===q2.source){if(!/^https?:\/\//i.test(I)){D.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:D.value,inst:_,continue:!$.abort});return}}let U=new URL(I);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=I;return}catch(I){D.issues.push({code:"invalid_format",format:"url",input:D.value,inst:_,continue:!$.abort})}}}),zA=Q("$ZodEmoji",(_,$)=>{$.pattern??($.pattern=V2()),R_.init(_,$)}),XA=Q("$ZodNanoID",(_,$)=>{$.pattern??($.pattern=Q2),R_.init(_,$)}),GA=Q("$ZodCUID",(_,$)=>{$.pattern??($.pattern=z2),R_.init(_,$)}),RA=Q("$ZodCUID2",(_,$)=>{$.pattern??($.pattern=X2),R_.init(_,$)}),YA=Q("$ZodULID",(_,$)=>{$.pattern??($.pattern=G2),R_.init(_,$)}),QA=Q("$ZodXID",(_,$)=>{$.pattern??($.pattern=R2),R_.init(_,$)}),KA=Q("$ZodKSUID",(_,$)=>{$.pattern??($.pattern=Y2),R_.init(_,$)}),TA=Q("$ZodISODateTime",(_,$)=>{$.pattern??($.pattern=r2($)),R_.init(_,$)}),FA=Q("$ZodISODate",(_,$)=>{$.pattern??($.pattern=v2),R_.init(_,$)}),VA=Q("$ZodISOTime",(_,$)=>{$.pattern??($.pattern=w2($)),R_.init(_,$)}),BA=Q("$ZodISODuration",(_,$)=>{$.pattern??($.pattern=K2),R_.init(_,$)}),MA=Q("$ZodIPv4",(_,$)=>{$.pattern??($.pattern=B2),R_.init(_,$),_._zod.bag.format="ipv4"}),bA=Q("$ZodIPv6",(_,$)=>{$.pattern??($.pattern=M2),R_.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})}}}),ZA=Q("$ZodMAC",(_,$)=>{$.pattern??($.pattern=b2($.delimiter)),R_.init(_,$),_._zod.bag.format="mac"}),HA=Q("$ZodCIDRv4",(_,$)=>{$.pattern??($.pattern=Z2),R_.init(_,$)}),kA=Q("$ZodCIDRv6",(_,$)=>{$.pattern??($.pattern=H2),R_.init(_,$),_._zod.check=(D)=>{let I=D.value.split("/");try{if(I.length!==2)throw Error();let[U,E]=I;if(!E)throw Error();let j=Number(E);if(`${j}`!==E)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})}}});CA=Q("$ZodBase64",(_,$)=>{$.pattern??($.pattern=k2),R_.init(_,$),_._zod.bag.contentEncoding="base64",_._zod.check=(D)=>{if(qA(D.value))return;D.issues.push({code:"invalid_format",format:"base64",input:D.value,inst:_,continue:!$.abort})}});vA=Q("$ZodBase64URL",(_,$)=>{$.pattern??($.pattern=yI),R_.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})}}),wA=Q("$ZodE164",(_,$)=>{$.pattern??($.pattern=C2),R_.init(_,$)});rA=Q("$ZodJWT",(_,$)=>{R_.init(_,$),_._zod.check=(D)=>{if(W5(D.value,$.alg))return;D.issues.push({code:"invalid_format",format:"jwt",input:D.value,inst:_,continue:!$.abort})}}),fA=Q("$ZodCustomStringFormat",(_,$)=>{R_.init(_,$),_._zod.check=(D)=>{if($.fn(D.value))return;D.issues.push({code:"invalid_format",format:$.format,input:D.value,inst:_,continue:!$.abort})}}),pI=Q("$ZodNumber",(_,$)=>{t.init(_,$),_._zod.pattern=_._zod.bag.pattern??AU,_._zod.parse=(D,I)=>{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 E=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:_,...E?{received:E}:{}}),D}}),xA=Q("$ZodNumberFormat",(_,$)=>{l2.init(_,$),pI.init(_,$)}),SU=Q("$ZodBoolean",(_,$)=>{t.init(_,$),_._zod.pattern=y2,_._zod.parse=(D,I)=>{if($.coerce)try{D.value=Boolean(D.value)}catch(E){}let U=D.value;if(typeof U==="boolean")return D;return D.issues.push({expected:"boolean",code:"invalid_type",input:U,inst:_}),D}}),eI=Q("$ZodBigInt",(_,$)=>{t.init(_,$),_._zod.pattern=x2,_._zod.parse=(D,I)=>{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}}),uA=Q("$ZodBigIntFormat",(_,$)=>{i2.init(_,$),eI.init(_,$)}),yA=Q("$ZodSymbol",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U==="symbol")return D;return D.issues.push({expected:"symbol",code:"invalid_type",input:U,inst:_}),D}}),hA=Q("$ZodUndefined",(_,$)=>{t.init(_,$),_._zod.pattern=c2,_._zod.values=new Set([void 0]),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"undefined",code:"invalid_type",input:U,inst:_}),D}}),cA=Q("$ZodNull",(_,$)=>{t.init(_,$),_._zod.pattern=h2,_._zod.values=new Set([null]),_._zod.parse=(D,I)=>{let U=D.value;if(U===null)return D;return D.issues.push({expected:"null",code:"invalid_type",input:U,inst:_}),D}}),nA=Q("$ZodAny",(_,$)=>{t.init(_,$),_._zod.parse=(D)=>D}),dA=Q("$ZodUnknown",(_,$)=>{t.init(_,$),_._zod.parse=(D)=>D}),mA=Q("$ZodNever",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{return D.issues.push({expected:"never",code:"invalid_type",input:D.value,inst:_}),D}}),lA=Q("$ZodVoid",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"void",code:"invalid_type",input:U,inst:_}),D}}),iA=Q("$ZodDate",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{if($.coerce)try{D.value=new Date(D.value)}catch(N){}let U=D.value,E=U instanceof Date;if(E&&!Number.isNaN(U.getTime()))return D;return D.issues.push({expected:"date",code:"invalid_type",input:U,...E?{received:"Invalid Date"}:{},inst:_}),D}});tA=Q("$ZodArray",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{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 E=[];for(let j=0;jsX(O,D,j)));else sX(A,D,j)}if(E.length)return Promise.all(E).then(()=>D);return D}});X5=Q("$ZodObject",(_,$)=>{if(t.init(_,$),!Object.getOwnPropertyDescriptor($,"shape")?.get){let N=$.shape;Object.defineProperty($,"shape",{get:()=>{let A={...N};return Object.defineProperty($,"shape",{value:A}),A}})}let I=k0(()=>P5($));$_(_._zod,"propValues",()=>{let N=$.shape,A={};for(let O in N){let L=N[O]._zod;if(L.values){A[O]??(A[O]=new Set);for(let J of L.values)A[O].add(J)}}return A});let U=G4,E=$.catchall,j;_._zod.parse=(N,A)=>{j??(j=I.value);let O=N.value;if(!U(O))return N.issues.push({expected:"object",code:"invalid_type",input:O,inst:_}),N;N.value={};let L=[],J=j.shape;for(let P of j.keys){let z=J[P],S=z._zod.optin==="optional",W=z._zod.optout==="optional",X=z._zod.run({value:O[P],issues:[]},A);if(X instanceof Promise)L.push(X.then((G)=>oI(G,N,P,O,S,W)));else oI(X,N,P,O,S,W)}if(!E)return L.length?Promise.all(L).then(()=>N):N;return z5(L,O,N,A,I.value,_)}}),oA=Q("$ZodObjectJIT",(_,$)=>{X5.init(_,$);let D=_._zod.parse,I=k0(()=>P5($)),U=(P)=>{let z=new mI(["shape","payload","ctx"]),S=I.value,W=(K)=>{let Y=BI(K);return`shape[${Y}]._zod.run({ value: input[${Y}], issues: [] }, ctx)`};z.write("const input = payload.value;");let X=Object.create(null),G=0;for(let K of S.keys)X[K]=`key_${G++}`;z.write("const newResult = {};");for(let K of S.keys){let Y=X[K],T=BI(K),F=P[K],k=F?._zod?.optin==="optional",B=F?._zod?.optout==="optional";if(z.write(`const ${Y} = ${W(K)};`),k&&B)z.write(` + if (${Y}.issues.length) { if (${T} in input) { - payload.issues = payload.issues.concat(${Q}.issues.map(iss => ({ + payload.issues = payload.issues.concat(${Y}.issues.map(iss => ({ ...iss, path: iss.path ? [${T}, ...iss.path] : [${T}] }))); } } - if (${Q}.value === undefined) { + if (${Y}.value === undefined) { if (${T} in input) { newResult[${T}] = undefined; } } else { - newResult[${T}] = ${Q}.value; + newResult[${T}] = ${Y}.value; } - `);else if(!V)S.write(` - const ${Q}_present = ${T} in input; - if (${Q}.issues.length) { - payload.issues = payload.issues.concat(${Q}.issues.map(iss => ({ + `);else if(!k)z.write(` + const ${Y}_present = ${T} in input; + if (${Y}.issues.length) { + payload.issues = payload.issues.concat(${Y}.issues.map(iss => ({ ...iss, path: iss.path ? [${T}, ...iss.path] : [${T}] }))); } - if (!${Q}_present && !${Q}.issues.length) { + if (!${Y}_present && !${Y}.issues.length) { payload.issues.push({ code: "invalid_type", expected: "nonoptional", @@ -38,68 +38,68 @@ var gY=Object.create;var{getPrototypeOf:DY,defineProperty:qE,getOwnPropertyNames }); } - if (${Q}_present) { - if (${Q}.value === undefined) { + if (${Y}_present) { + if (${Y}.value === undefined) { newResult[${T}] = undefined; } else { - newResult[${T}] = ${Q}.value; + newResult[${T}] = ${Y}.value; } } - `);else S.write(` - if (${Q}.issues.length) { - payload.issues = payload.issues.concat(${Q}.issues.map(iss => ({ + `);else z.write(` + if (${Y}.issues.length) { + payload.issues = payload.issues.concat(${Y}.issues.map(iss => ({ ...iss, path: iss.path ? [${T}, ...iss.path] : [${T}] }))); } - if (${Q}.value === undefined) { + if (${Y}.value === undefined) { if (${T} in input) { newResult[${T}] = undefined; } } else { - newResult[${T}] = ${Q}.value; + newResult[${T}] = ${Y}.value; } - `)}S.write("payload.value = newResult;"),S.write("return payload;");let G=S.compile();return(B,Q)=>G(z,B,Q)},I,j=Wg,E=!Pg.jitless,O=E&&lN.value,P=$.catchall,W;_._zod.parse=(z,S)=>{W??(W=U.value);let L=z.value;if(!j(L))return z.issues.push({expected:"object",code:"invalid_type",input:L,inst:_}),z;if(E&&O&&S?.async===!1&&S.jitless!==!0){if(!I)I=D($.shape);if(z=I(z,S),!P)return z;return UG([],L,z,S,W,_)}return g(z,S)}});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)=>e0(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 E of $.options){let A=E._zod.run({value:U.value,issues:[]},D);if(A instanceof Promise)j.push(A),I=!0;else{if(A.issues.length===0)return A;j.push(A)}}if(!I)return hR(j,U,_,D);return Promise.all(j).then((E)=>{return hR(E,U,_,D)})}});fA=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 E of $.options){let A=E._zod.run({value:U.value,issues:[]},D);if(A instanceof Promise)j.push(A),I=!0;else j.push(A)}if(!I)return nR(j,U,_,D);return Promise.all(j).then((E)=>{return nR(E,U,_,D)})}}),xA=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[E,A]of Object.entries(j)){if(!D[E])D[E]=new Set;for(let O of A)D[E].add(O)}}return D});let U=V4(()=>{let D=$.options,I=new Map;for(let j of D){let E=j._zod.propValues?.[$.discriminator];if(!E||E.size===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(j)}"`);for(let A of E){if(I.has(A))throw Error(`Duplicate discriminator value "${String(A)}"`);I.set(A,j)}}return I});_._zod.parse=(D,I)=>{let j=D.value;if(!Wg(j))return D.issues.push({code:"invalid_type",expected:"object",input:j,inst:_}),D;let E=U.value.get(j?.[$.discriminator]);if(E)return E._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}}),yA=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(([A,O])=>{return dR(g,A,O)});return dR(g,I,j)}});mI=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=[],E=mR(g,"optin"),A=mR(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 O=Array(g.length);for(let P=0;P{O[P]=z}));else O[P]=W}if($.rest){let P=g.length-1,W=I.slice(g.length);for(let z of W){P++;let S=$.rest._zod.run({value:z,issues:[]},D);if(S instanceof Promise)j.push(S.then((L)=>iR(L,U,P)));else iR(S,U,P)}}if(j.length)return Promise.all(j).then(()=>lR(O,U,g,I,A));return lR(O,U,g,I,A)}});cA=Y("$ZodRecord",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{let D=g.value;if(!Z6(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 E=new Set;for(let O of j)if(typeof O==="string"||typeof O==="number"||typeof O==="symbol"){E.add(typeof O==="number"?O.toString():O);let P=$.keyType._zod.run({value:O,issues:[]},U);if(P instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(P.issues.length){g.issues.push({code:"invalid_key",origin:"record",issues:P.issues.map((S)=>m_(S,U,F_())),input:O,path:[O],inst:_});continue}let W=P.value,z=$.valueType._zod.run({value:D[O],issues:[]},U);if(z instanceof Promise)I.push(z.then((S)=>{if(S.issues.length)g.issues.push(...e_(O,S.issues));g.value[W]=S.value}));else{if(z.issues.length)g.issues.push(...e_(O,z.issues));g.value[W]=z.value}}let A;for(let O in D)if(!E.has(O))A=A??[],A.push(O);if(A&&A.length>0)g.issues.push({code:"unrecognized_keys",input:D,inst:_,keys:A})}else{g.value={};for(let E of Reflect.ownKeys(D)){if(E==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(D,E))continue;let A=$.keyType._zod.run({value:E,issues:[]},U);if(A instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof E==="string"&&gD.test(E)&&A.issues.length){let W=$.keyType._zod.run({value:Number(E),issues:[]},U);if(W instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(W.issues.length===0)A=W}if(A.issues.length){if($.mode==="loose")g.value[E]=D[E];else g.issues.push({code:"invalid_key",origin:"record",issues:A.issues.map((W)=>m_(W,U,F_())),input:E,path:[E],inst:_});continue}let P=$.valueType._zod.run({value:D[E],issues:[]},U);if(P instanceof Promise)I.push(P.then((W)=>{if(W.issues.length)g.issues.push(...e_(E,W.issues));g.value[A.value]=W.value}));else{if(P.issues.length)g.issues.push(...e_(E,P.issues));g.value[A.value]=P.value}}}if(I.length)return Promise.all(I).then(()=>g);return g}}),hA=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,E]of D){let A=$.keyType._zod.run({value:j,issues:[]},U),O=$.valueType._zod.run({value:E,issues:[]},U);if(A instanceof Promise||O instanceof Promise)I.push(Promise.all([A,O]).then(([P,W])=>{tR(P,W,g,j,D,_,U)}));else tR(A,O,g,j,D,_,U)}if(I.length)return Promise.all(I).then(()=>g);return g}});nA=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 E=$.valueType._zod.run({value:j,issues:[]},U);if(E instanceof Promise)I.push(E.then((A)=>oR(A,g)));else oR(E,g)}if(I.length)return Promise.all(I).then(()=>g);return g}});dA=Y("$ZodEnum",(_,$)=>{l.init(_,$);let g=p0($.entries),U=new Set(g);_._zod.values=U,_._zod.pattern=new RegExp(`^(${g.filter((D)=>a0.has(typeof D)).map((D)=>typeof D==="string"?S$(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}}),mA=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"?S$(U):U?S$(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}}),iA=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}}),lA=Y("$ZodTransform",(_,$)=>{l.init(_,$),_._zod.optin="optional",_._zod.parse=(g,U)=>{if(U.direction==="backward")throw new Sg(_.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 f$;return g.value=D,g.fallback=!0,g}});iI=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(`^(${e0(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)=>pR(j,D));return pR(I,D)}if(g.value===void 0)return g;return $.innerType._zod.run(g,U)}}),tA=Y("$ZodExactOptional",(_,$)=>{iI.init(_,$),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"pattern",()=>$.innerType._zod.pattern),_._zod.parse=(g,U)=>{return $.innerType._zod.run(g,U)}}),oA=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(`^(${e0(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)}}),pA=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)=>eR(I,$));return eR(D,$)}});eA=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)}}),aA=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)=>aR(I,_));return aR(D,_)}});sA=Y("$ZodSuccess",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{if(U.direction==="backward")throw new Sg("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}}),_O=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)=>m_(j,U,F_()))},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)=>m_(I,U,F_()))},input:g.value}),g.issues=[],g.fallback=!0;return g}}),$O=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}}),lI=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)=>xI(j,$.in,U));return xI(I,$.in,U)}let D=$.in._zod.run(g,U);if(D instanceof Promise)return D.then((I)=>xI(I,$.out,U));return xI(D,$.out,U)}});ED=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)=>yI(j,$,U));return yI(I,$,U)}else{let I=$.out._zod.run(g,U);if(I instanceof Promise)return I.then((j)=>yI(j,$,U));return yI(I,$,U)}}});gO=Y("$ZodPreprocess",(_,$)=>{lI.init(_,$)}),DO=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(sR);return sR(D)}});UO=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||oN.has(typeof U))g.push(S$(`${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}}),IO=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?KI(_._def.input,U):U,I=Reflect.apply(g,this,D);if(_._def.output)return KI(_._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 qI(_._def.input,U):U,I=await Reflect.apply(g,this,D);if(_._def.output)return await qI(_._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 mI({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})},_}),jO=Y("$ZodPromise",(_,$)=>{l.init(_,$),_._zod.parse=(g,U)=>{return Promise.resolve(g.value).then((D)=>$.innerType._zod.run({value:D,issues:[]},U))}}),EO=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)}}),NO=Y("$ZodCustom",(_,$)=>{G_.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)=>_G(I,g,U,_));_G(D,g,U,_);return}})});function OO(){return{localeError:JV()}}var JV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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: ${q(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":""}: ${q(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 jG=w(()=>{h()});function PO(){return{localeError:zV()}}var zV=()=>{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=b(D.input),E=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 ${E}`;return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${I}, daxil olan ${E}`}case"invalid_value":if(D.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${r(D.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${q(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":""}: ${q(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 EG=w(()=>{h()});function NG(_,$,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 SO(){return{localeError:RV()}}var RV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j){let E=Number(D.maximum),A=NG(E,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()} ${A}`}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 E=Number(D.minimum),A=NG(E,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()} ${A}`}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"}: ${q(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 AG=w(()=>{h()});function LO(){return{localeError:GV()}}var GV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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":""}: ${q(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 OG=w(()=>{h()});function WO(){return{localeError:XV()}}var XV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Tipus inv\xE0lid: s'esperava instanceof ${D.expected}, s'ha rebut ${E}`;return`Tipus inv\xE0lid: s'esperava ${I}, s'ha rebut ${E}`}case"invalid_value":if(D.values.length===1)return`Valor inv\xE0lid: s'esperava ${r(D.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${q(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":""}: ${q(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 PG=w(()=>{h()});function JO(){return{localeError:YV()}}var YV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no instanceof ${D.expected}, obdr\u017Eeno ${E}`;return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${I}, obdr\u017Eeno ${E}`}case"invalid_value":if(D.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${r(D.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${q(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: ${q(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 SG=w(()=>{h()});function zO(){return{localeError:QV()}}var QV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ugyldigt input: forventede instanceof ${D.expected}, fik ${E}`;return`Ugyldigt input: forventede ${I}, fik ${E}`}case"invalid_value":if(D.values.length===1)return`Ugyldig v\xE6rdi: forventede ${r(D.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),E=U[D.origin]??D.origin;if(j)return`For stor: forventede ${E??"value"} ${j.verb} ${I} ${D.maximum.toString()} ${j.unit??"elementer"}`;return`For stor: forventede ${E??"value"} havde ${I} ${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),E=U[D.origin]??D.origin;if(j)return`For lille: forventede ${E} ${j.verb} ${I} ${D.minimum.toString()} ${j.unit}`;return`For lille: forventede ${E} 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"}: ${q(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 LG=w(()=>{h()});function RO(){return{localeError:TV()}}var TV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ung\xFCltige Eingabe: erwartet instanceof ${D.expected}, erhalten ${E}`;return`Ung\xFCltige Eingabe: erwartet ${I}, erhalten ${E}`}case"invalid_value":if(D.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${r(D.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${q(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"}: ${q(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 WG=w(()=>{h()});function GO(){return{localeError:KV()}}var KV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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"}: ${q(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 JG=w(()=>{h()});function ND(){return{localeError:qV()}}var qV=()=>{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=b(D.input),E=U[j]??j;return`Invalid input: expected ${I}, received ${E}`}case"invalid_value":if(D.values.length===1)return`Invalid input: expected ${r(D.values[0])}`;return`Invalid option: expected one of ${q(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":""}: ${q(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 XO=w(()=>{h()});function YO(){return{localeError:BV()}}var BV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Nevalida enigo: atendi\u011Dis instanceof ${D.expected}, ricevi\u011Dis ${E}`;return`Nevalida enigo: atendi\u011Dis ${I}, ricevi\u011Dis ${E}`}case"invalid_value":if(D.values.length===1)return`Nevalida enigo: atendi\u011Dis ${r(D.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${q(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":""}: ${q(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 zG=w(()=>{h()});function QO(){return{localeError:VV()}}var VV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Entrada inv\xE1lida: se esperaba instanceof ${D.expected}, recibido ${E}`;return`Entrada inv\xE1lida: se esperaba ${I}, recibido ${E}`}case"invalid_value":if(D.values.length===1)return`Entrada inv\xE1lida: se esperaba ${r(D.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),E=U[D.origin]??D.origin;if(j)return`Demasiado grande: se esperaba que ${E??"valor"} tuviera ${I}${D.maximum.toString()} ${j.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${E??"valor"} fuera ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),E=U[D.origin]??D.origin;if(j)return`Demasiado peque\xF1o: se esperaba que ${E} tuviera ${I}${D.minimum.toString()} ${j.unit}`;return`Demasiado peque\xF1o: se esperaba que ${E} 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":""}: ${q(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 RG=w(()=>{h()});function TO(){return{localeError:FV()}}var FV=()=>{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=b(D.input),E=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 ${E} \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 ${E} \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 ${r(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 ${q(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: ${q(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 GG=w(()=>{h()});function KO(){return{localeError:rV()}}var rV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Virheellinen tyyppi: odotettiin instanceof ${D.expected}, oli ${E}`;return`Virheellinen tyyppi: odotettiin ${I}, oli ${E}`}case"invalid_value":if(D.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${r(D.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${q(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"}: ${q(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 XG=w(()=>{h()});function qO(){return{localeError:bV()}}var bV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Entr\xE9e invalide : instanceof ${D.expected} attendu, ${E} re\xE7u`;return`Entr\xE9e invalide : ${I} attendu, ${E} re\xE7u`}case"invalid_value":if(D.values.length===1)return`Entr\xE9e invalide : ${r(D.values[0])} attendu`;return`Option invalide : une valeur parmi ${q(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":""} : ${q(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 YG=w(()=>{h()});function BO(){return{localeError:MV()}}var MV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Entr\xE9e invalide : attendu instanceof ${D.expected}, re\xE7u ${E}`;return`Entr\xE9e invalide : attendu ${I}, re\xE7u ${E}`}case"invalid_value":if(D.values.length===1)return`Entr\xE9e invalide : attendu ${r(D.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${q(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":""} : ${q(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 QG=w(()=>{h()});function VO(){return{localeError:ZV()}}var ZV=()=>{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=(O)=>O?_[O]:void 0,U=(O)=>{let P=g(O);if(P)return P.label;return O??_.unknown.label},D=(O)=>`\u05D4${U(O)}`,I=(O)=>{return(g(O)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"},j=(O)=>{if(!O)return null;return $[O]??null},E={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"}},A={nan:"NaN"};return(O)=>{switch(O.code){case"invalid_type":{let P=O.expected,W=A[P??""]??U(P),z=b(O.input),S=A[z]??_[z]?.label??z;if(/^[A-Z]/.test(O.expected))return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${O.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${S}`;return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${W}, \u05D4\u05EA\u05E7\u05D1\u05DC ${S}`}case"invalid_value":{if(O.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 ${r(O.values[0])}`;let P=O.values.map((S)=>r(S));if(O.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 ${P[0]} \u05D0\u05D5 ${P[1]}`;let W=P[P.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 ${P.slice(0,-1).join(", ")} \u05D0\u05D5 ${W}`}case"too_big":{let P=j(O.origin),W=D(O.origin??"value");if(O.origin==="string")return`${P?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${W} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.maximum.toString()} ${P?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(O.origin==="number"){let L=O.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${O.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${W} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${L}`}if(O.origin==="array"||O.origin==="set"){let L=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",J=O.inclusive?`${O.maximum} ${P?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${O.maximum} ${P?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${W} ${L} \u05DC\u05D4\u05DB\u05D9\u05DC ${J}`.trim()}let z=O.inclusive?"<=":"<",S=I(O.origin??"value");if(P?.unit)return`${P.longLabel} \u05DE\u05D3\u05D9: ${W} ${S} ${z}${O.maximum.toString()} ${P.unit}`;return`${P?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${W} ${S} ${z}${O.maximum.toString()}`}case"too_small":{let P=j(O.origin),W=D(O.origin??"value");if(O.origin==="string")return`${P?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${W} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.minimum.toString()} ${P?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(O.origin==="number"){let L=O.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${O.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${W} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${L}`}if(O.origin==="array"||O.origin==="set"){let L=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(O.minimum===1&&O.inclusive){let R=O.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: ${W} ${L} \u05DC\u05D4\u05DB\u05D9\u05DC ${R}`}let J=O.inclusive?`${O.minimum} ${P?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${O.minimum} ${P?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${W} ${L} \u05DC\u05D4\u05DB\u05D9\u05DC ${J}`.trim()}let z=O.inclusive?">=":">",S=I(O.origin??"value");if(P?.unit)return`${P.shortLabel} \u05DE\u05D3\u05D9: ${W} ${S} ${z}${O.minimum.toString()} ${P.unit}`;return`${P?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${W} ${S} ${z}${O.minimum.toString()}`}case"invalid_format":{let P=O;if(P.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${P.prefix}"`;if(P.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${P.suffix}"`;if(P.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${P.includes}"`;if(P.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 ${P.pattern}`;let W=E[P.format],z=W?.label??P.format,L=(W?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${z} \u05DC\u05D0 ${L}`}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 ${O.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${O.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${O.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${q(O.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(O.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};var TG=w(()=>{h()});function FO(){return{localeError:HV()}}var HV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Neispravan unos: o\u010Dekuje se instanceof ${D.expected}, a primljeno je ${E}`;return`Neispravan unos: o\u010Dekuje se ${I}, a primljeno je ${E}`}case"invalid_value":if(D.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${r(D.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),E=U[D.origin]??D.origin;if(j)return`Preveliko: o\u010Dekivano da ${E??"vrijednost"} ima ${I}${D.maximum.toString()} ${j.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${E??"vrijednost"} bude ${I}${D.maximum.toString()}`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),E=U[D.origin]??D.origin;if(j)return`Premalo: o\u010Dekivano da ${E} ima ${I}${D.minimum.toString()} ${j.unit}`;return`Premalo: o\u010Dekivano da ${E} 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"}: ${q(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 KG=w(()=>{h()});function rO(){return{localeError:kV()}}var kV=()=>{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=b(D.input),E=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 ${E}`;return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${I}, a kapott \xE9rt\xE9k ${E}`}case"invalid_value":if(D.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${r(D.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${q(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":""}: ${q(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 qG=w(()=>{h()});function BG(_,$,g){return Math.abs(_)===1?$:g}function v4(_){if(!_)return"";let $=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],g=_[_.length-1];return _+($.includes(g)?"\u0576":"\u0568")}function bO(){return{localeError:CV()}}var CV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j){let E=Number(D.maximum),A=BG(E,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 ${v4(D.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${I}${D.maximum.toString()} ${A}`}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 ${v4(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 E=Number(D.minimum),A=BG(E,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 ${v4(D.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${I}${D.minimum.toString()} ${A}`}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 ${v4(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":""}. ${q(D.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${v4(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 ${v4(D.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};var VG=w(()=>{h()});function MO(){return{localeError:vV()}}var vV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Input tidak valid: diharapkan instanceof ${D.expected}, diterima ${E}`;return`Input tidak valid: diharapkan ${I}, diterima ${E}`}case"invalid_value":if(D.values.length===1)return`Input tidak valid: diharapkan ${r(D.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${q(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":""}: ${q(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 FG=w(()=>{h()});function ZO(){return{localeError:wV()}}var wV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Rangt gildi: \xDE\xFA sl\xF3st inn ${E} \xFEar sem \xE1 a\xF0 vera instanceof ${D.expected}`;return`Rangt gildi: \xDE\xFA sl\xF3st inn ${E} \xFEar sem \xE1 a\xF0 vera ${I}`}case"invalid_value":if(D.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${r(D.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${q(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"}: ${q(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 rG=w(()=>{h()});function HO(){return{localeError:uV()}}var uV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Input non valido: atteso instanceof ${D.expected}, ricevuto ${E}`;return`Input non valido: atteso ${I}, ricevuto ${E}`}case"invalid_value":if(D.values.length===1)return`Input non valido: atteso ${r(D.values[0])}`;return`Opzione non valida: atteso uno tra ${q(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"}: ${q(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 bG=w(()=>{h()});function kO(){return{localeError:fV()}}var fV=()=>{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=b(D.input),E=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${E}\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${E}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`}case"invalid_value":if(D.values.length===1)return`\u7121\u52B9\u306A\u5165\u529B: ${r(D.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${q(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":""}: ${q(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 MG=w(()=>{h()});function CO(){return{localeError:xV()}}var xV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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"}: ${q(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 ZG=w(()=>{h()});function AD(){return{localeError:yV()}}var yV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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 ${q(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 vO=w(()=>{h()});function wO(){return AD()}var HG=w(()=>{vO()});function uO(){return{localeError:cV()}}var cV=()=>{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=b(D.input),E=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 ${E}\uC785\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${I}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${E}\uC785\uB2C8\uB2E4`}case"invalid_value":if(D.values.length===1)return`\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${r(D.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${q(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",E=$(D.origin),A=E?.unit??"\uC694\uC18C";if(E)return`${D.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${D.maximum.toString()}${A} ${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",E=$(D.origin),A=E?.unit??"\uC694\uC18C";if(E)return`${D.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${D.minimum.toString()}${A} ${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: ${q(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 kG=w(()=>{h()});function CG(_){let $=Math.abs(_),g=$%10,U=$%100;if(U>=11&&U<=19||g===0)return"many";if(g===1)return"one";return"few"}function fO(){return{localeError:hV()}}var OD=(_)=>{return _.charAt(0).toUpperCase()+_.slice(1)},hV=()=>{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,E){let A=_[D]??null;if(A===null)return A;return{unit:A.unit[I],verb:A.verb[E][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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Gautas tipas ${E}, o tik\u0117tasi - instanceof ${D.expected}`;return`Gautas tipas ${E}, o tik\u0117tasi - ${I}`}case"invalid_value":if(D.values.length===1)return`Privalo b\u016Bti ${r(D.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${q(D.values,"|")} pasirinkim\u0173`;case"too_big":{let I=U[D.origin]??D.origin,j=$(D.origin,CG(Number(D.maximum)),D.inclusive??!1,"smaller");if(j?.verb)return`${OD(I??D.origin??"reik\u0161m\u0117")} ${j.verb} ${D.maximum.toString()} ${j.unit??"element\u0173"}`;let E=D.inclusive?"ne didesnis kaip":"ma\u017Eesnis kaip";return`${OD(I??D.origin??"reik\u0161m\u0117")} turi b\u016Bti ${E} ${D.maximum.toString()} ${j?.unit}`}case"too_small":{let I=U[D.origin]??D.origin,j=$(D.origin,CG(Number(D.minimum)),D.inclusive??!1,"bigger");if(j?.verb)return`${OD(I??D.origin??"reik\u0161m\u0117")} ${j.verb} ${D.minimum.toString()} ${j.unit??"element\u0173"}`;let E=D.inclusive?"ne ma\u017Eesnis kaip":"didesnis kaip";return`${OD(I??D.origin??"reik\u0161m\u0117")} turi b\u016Bti ${E} ${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"}: ${q(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`${OD(I??D.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};var vG=w(()=>{h()});function xO(){return{localeError:nV()}}var nV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}case"invalid_value":if(D.values.length===1)return`Invalid input: expected ${r(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 ${q(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"}: ${q(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 wG=w(()=>{h()});function yO(){return{localeError:dV()}}var dV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Input tidak sah: dijangka instanceof ${D.expected}, diterima ${E}`;return`Input tidak sah: dijangka ${I}, diterima ${E}`}case"invalid_value":if(D.values.length===1)return`Input tidak sah: dijangka ${r(D.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${q(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: ${q(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 uG=w(()=>{h()});function cO(){return{localeError:mV()}}var mV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ongeldige invoer: verwacht instanceof ${D.expected}, ontving ${E}`;return`Ongeldige invoer: verwacht ${I}, ontving ${E}`}case"invalid_value":if(D.values.length===1)return`Ongeldige invoer: verwacht ${r(D.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin),E=D.origin==="date"?"laat":D.origin==="string"?"lang":"groot";if(j)return`Te ${E}: verwacht dat ${D.origin??"waarde"} ${I}${D.maximum.toString()} ${j.unit??"elementen"} ${j.verb}`;return`Te ${E}: verwacht dat ${D.origin??"waarde"} ${I}${D.maximum.toString()} is`}case"too_small":{let I=D.inclusive?">=":">",j=$(D.origin),E=D.origin==="date"?"vroeg":D.origin==="string"?"kort":"klein";if(j)return`Te ${E}: verwacht dat ${D.origin} ${I}${D.minimum.toString()} ${j.unit} ${j.verb}`;return`Te ${E}: 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":""}: ${q(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 fG=w(()=>{h()});function hO(){return{localeError:iV()}}var iV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ugyldig input: forventet instanceof ${D.expected}, fikk ${E}`;return`Ugyldig input: forventet ${I}, fikk ${E}`}case"invalid_value":if(D.values.length===1)return`Ugyldig verdi: forventet ${r(D.values[0])}`;return`Ugyldig valg: forventet en av ${q(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"}: ${q(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 xG=w(()=>{h()});function nO(){return{localeError:lV()}}var lV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`F\xE2sit giren: umulan instanceof ${D.expected}, al\u0131nan ${E}`;return`F\xE2sit giren: umulan ${I}, al\u0131nan ${E}`}case"invalid_value":if(D.values.length===1)return`F\xE2sit giren: umulan ${r(D.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${q(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":""}: ${q(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 yG=w(()=>{h()});function dO(){return{localeError:tV()}}var tV=()=>{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=b(D.input),E=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 ${E} \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 ${E} \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 ${r(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 ${q(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"}: ${q(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 cG=w(()=>{h()});function mO(){return{localeError:oV()}}var oV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${D.expected}, otrzymano ${E}`;return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${I}, otrzymano ${E}`}case"invalid_value":if(D.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${r(D.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${q(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":""}: ${q(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 hG=w(()=>{h()});function iO(){return{localeError:pV()}}var pV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Tipo inv\xE1lido: esperado instanceof ${D.expected}, recebido ${E}`;return`Tipo inv\xE1lido: esperado ${I}, recebido ${E}`}case"invalid_value":if(D.values.length===1)return`Entrada inv\xE1lida: esperado ${r(D.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${q(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":""}: ${q(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 nG=w(()=>{h()});function lO(){return{localeError:eV()}}var eV=()=>{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=b(D.input),E=U[j]??j;return`Intrare invalid\u0103: a\u0219teptat ${I}, primit ${E}`}case"invalid_value":if(D.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${r(D.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${q(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: ${q(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 dG=w(()=>{h()});function mG(_,$,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 tO(){return{localeError:aV()}}var aV=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(D.values,"|")}`;case"too_big":{let I=D.inclusive?"<=":"<",j=$(D.origin);if(j){let E=Number(D.maximum),A=mG(E,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()} ${A}`}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 E=Number(D.minimum),A=mG(E,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()} ${A}`}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":""}: ${q(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 iG=w(()=>{h()});function oO(){return{localeError:sV()}}var sV=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Neveljaven vnos: pri\u010Dakovano instanceof ${D.expected}, prejeto ${E}`;return`Neveljaven vnos: pri\u010Dakovano ${I}, prejeto ${E}`}case"invalid_value":if(D.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${r(D.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${q(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"}: ${q(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 lG=w(()=>{h()});function pO(){return{localeError:_F()}}var _F=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ogiltig inmatning: f\xF6rv\xE4ntat instanceof ${D.expected}, fick ${E}`;return`Ogiltig inmatning: f\xF6rv\xE4ntat ${I}, fick ${E}`}case"invalid_value":if(D.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${r(D.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${q(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"}: ${q(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 tG=w(()=>{h()});function eO(){return{localeError:$F()}}var $F=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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":""}: ${q(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 oG=w(()=>{h()});function aO(){return{localeError:gF()}}var gF=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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: ${q(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 pG=w(()=>{h()});function sO(){return{localeError:DF()}}var DF=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Ge\xE7ersiz de\u011Fer: beklenen instanceof ${D.expected}, al\u0131nan ${E}`;return`Ge\xE7ersiz de\u011Fer: beklenen ${I}, al\u0131nan ${E}`}case"invalid_value":if(D.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${r(D.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${q(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":""}: ${q(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 eG=w(()=>{h()});function PD(){return{localeError:UF()}}var UF=()=>{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=b(D.input),E=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 ${E}`;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 ${E}`}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 ${r(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 ${q(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":""}: ${q(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 _P=w(()=>{h()});function $P(){return PD()}var aG=w(()=>{_P()});function gP(){return{localeError:IF()}}var IF=()=>{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=b(D.input),E=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 ${E} \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 ${E} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`}case"invalid_value":if(D.values.length===1)return`\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${r(D.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${q(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":""}: ${q(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 sG=w(()=>{h()});function DP(){return{localeError:jF()}}var jF=()=>{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=b(D.input),E=U[j]??j;if(/^[A-Z]/.test(D.expected))return`Noto\u2018g\u2018ri kirish: kutilgan instanceof ${D.expected}, qabul qilingan ${E}`;return`Noto\u2018g\u2018ri kirish: kutilgan ${I}, qabul qilingan ${E}`}case"invalid_value":if(D.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${r(D.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${q(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":""}: ${q(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 _X=w(()=>{h()});function UP(){return{localeError:EF()}}var EF=()=>{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=b(D.input),E=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 ${E}`;return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${I}, nh\u1EADn \u0111\u01B0\u1EE3c ${E}`}case"invalid_value":if(D.values.length===1)return`\u0110\u1EA7u v\xE0o kh\xF4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${r(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 ${q(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: ${q(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 $X=w(()=>{h()});function IP(){return{localeError:NF()}}var NF=()=>{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=b(D.input),E=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 ${E}`;return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${I}\uFF0C\u5B9E\u9645\u63A5\u6536 ${E}`}case"invalid_value":if(D.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${r(D.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${q(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): ${q(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 gX=w(()=>{h()});function jP(){return{localeError:AF()}}var AF=()=>{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=b(D.input),E=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 ${E}`;return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${I}\uFF0C\u4F46\u6536\u5230 ${E}`}case"invalid_value":if(D.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${r(D.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${q(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${q(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 DX=w(()=>{h()});function EP(){return{localeError:OF()}}var OF=()=>{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=b(D.input),E=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 ${E}`;return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${I}, \xE0m\u1ECD\u0300 a r\xED ${E}`}case"invalid_value":if(D.values.length===1)return`\xCCb\xE1w\u1ECDl\xE9 a\u1E63\xEC\u1E63e: a n\xED l\xE1ti fi ${r(D.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${q(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: ${q(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 UX=w(()=>{h()});var w4={};k$(w4,{zhTW:()=>jP,zhCN:()=>IP,yo:()=>EP,vi:()=>UP,uz:()=>DP,ur:()=>gP,uk:()=>PD,ua:()=>$P,tr:()=>sO,th:()=>aO,ta:()=>eO,sv:()=>pO,sl:()=>oO,ru:()=>tO,ro:()=>lO,pt:()=>iO,ps:()=>dO,pl:()=>mO,ota:()=>nO,no:()=>hO,nl:()=>cO,ms:()=>yO,mk:()=>xO,lt:()=>fO,ko:()=>uO,km:()=>AD,kh:()=>wO,ka:()=>CO,ja:()=>kO,it:()=>HO,is:()=>ZO,id:()=>MO,hy:()=>bO,hu:()=>rO,hr:()=>FO,he:()=>VO,frCA:()=>BO,fr:()=>qO,fi:()=>KO,fa:()=>TO,es:()=>QO,eo:()=>YO,en:()=>ND,el:()=>GO,de:()=>RO,da:()=>zO,cs:()=>JO,ca:()=>WO,bg:()=>LO,be:()=>SO,az:()=>PO,ar:()=>OO});var NP=w(()=>{jG();EG();AG();OG();PG();SG();LG();WG();JG();XO();zG();RG();GG();XG();YG();QG();TG();KG();qG();VG();FG();rG();bG();MG();ZG();HG();vO();kG();vG();wG();uG();fG();xG();yG();cG();hG();nG();dG();iG();lG();tG();oG();pG();eG();aG();_P();sG();_X();$X();gX();DX();UX()});class AP{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 SD(){return new AP}var IX,tI,oI,v_;var LD=w(()=>{tI=Symbol("ZodOutput"),oI=Symbol("ZodInput");(IX=globalThis).__zod_globalRegistry??(IX.__zod_globalRegistry=SD());v_=globalThis.__zod_globalRegistry});function OP(_,$){return new _({type:"string",...k($)})}function PP(_,$){return new _({type:"string",coerce:!0,...k($)})}function pI(_,$){return new _({type:"string",format:"email",check:"string_format",abort:!1,...k($)})}function WD(_,$){return new _({type:"string",format:"guid",check:"string_format",abort:!1,...k($)})}function eI(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,...k($)})}function aI(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...k($)})}function sI(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...k($)})}function _1(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...k($)})}function JD(_,$){return new _({type:"string",format:"url",check:"string_format",abort:!1,...k($)})}function $1(_,$){return new _({type:"string",format:"emoji",check:"string_format",abort:!1,...k($)})}function g1(_,$){return new _({type:"string",format:"nanoid",check:"string_format",abort:!1,...k($)})}function D1(_,$){return new _({type:"string",format:"cuid",check:"string_format",abort:!1,...k($)})}function U1(_,$){return new _({type:"string",format:"cuid2",check:"string_format",abort:!1,...k($)})}function I1(_,$){return new _({type:"string",format:"ulid",check:"string_format",abort:!1,...k($)})}function j1(_,$){return new _({type:"string",format:"xid",check:"string_format",abort:!1,...k($)})}function E1(_,$){return new _({type:"string",format:"ksuid",check:"string_format",abort:!1,...k($)})}function N1(_,$){return new _({type:"string",format:"ipv4",check:"string_format",abort:!1,...k($)})}function A1(_,$){return new _({type:"string",format:"ipv6",check:"string_format",abort:!1,...k($)})}function SP(_,$){return new _({type:"string",format:"mac",check:"string_format",abort:!1,...k($)})}function O1(_,$){return new _({type:"string",format:"cidrv4",check:"string_format",abort:!1,...k($)})}function P1(_,$){return new _({type:"string",format:"cidrv6",check:"string_format",abort:!1,...k($)})}function S1(_,$){return new _({type:"string",format:"base64",check:"string_format",abort:!1,...k($)})}function L1(_,$){return new _({type:"string",format:"base64url",check:"string_format",abort:!1,...k($)})}function W1(_,$){return new _({type:"string",format:"e164",check:"string_format",abort:!1,...k($)})}function J1(_,$){return new _({type:"string",format:"jwt",check:"string_format",abort:!1,...k($)})}function LP(_,$){return new _({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...k($)})}function WP(_,$){return new _({type:"string",format:"date",check:"string_format",...k($)})}function JP(_,$){return new _({type:"string",format:"time",check:"string_format",precision:null,...k($)})}function zP(_,$){return new _({type:"string",format:"duration",check:"string_format",...k($)})}function RP(_,$){return new _({type:"number",checks:[],...k($)})}function GP(_,$){return new _({type:"number",coerce:!0,checks:[],...k($)})}function XP(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"safeint",...k($)})}function YP(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float32",...k($)})}function QP(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float64",...k($)})}function TP(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"int32",...k($)})}function KP(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"uint32",...k($)})}function qP(_,$){return new _({type:"boolean",...k($)})}function BP(_,$){return new _({type:"boolean",coerce:!0,...k($)})}function VP(_,$){return new _({type:"bigint",...k($)})}function FP(_,$){return new _({type:"bigint",coerce:!0,...k($)})}function rP(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...k($)})}function bP(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...k($)})}function MP(_,$){return new _({type:"symbol",...k($)})}function ZP(_,$){return new _({type:"undefined",...k($)})}function HP(_,$){return new _({type:"null",...k($)})}function kP(_){return new _({type:"any"})}function CP(_){return new _({type:"unknown"})}function vP(_,$){return new _({type:"never",...k($)})}function wP(_,$){return new _({type:"void",...k($)})}function uP(_,$){return new _({type:"date",...k($)})}function fP(_,$){return new _({type:"date",coerce:!0,...k($)})}function xP(_,$){return new _({type:"nan",...k($)})}function Y$(_,$){return new vI({check:"less_than",...k($),value:_,inclusive:!1})}function _$(_,$){return new vI({check:"less_than",...k($),value:_,inclusive:!0})}function Q$(_,$){return new wI({check:"greater_than",...k($),value:_,inclusive:!1})}function x_(_,$){return new wI({check:"greater_than",...k($),value:_,inclusive:!0})}function zD(_){return Q$(0,_)}function RD(_){return Y$(0,_)}function GD(_){return _$(0,_)}function XD(_){return x_(0,_)}function j6(_,$){return new k2({check:"multiple_of",...k($),value:_})}function E6(_,$){return new w2({check:"max_size",...k($),maximum:_})}function T$(_,$){return new u2({check:"min_size",...k($),minimum:_})}function k6(_,$){return new f2({check:"size_equals",...k($),size:_})}function C6(_,$){return new x2({check:"max_length",...k($),maximum:_})}function x$(_,$){return new y2({check:"min_length",...k($),minimum:_})}function v6(_,$){return new c2({check:"length_equals",...k($),length:_})}function Rg(_,$){return new h2({check:"string_format",format:"regex",...k($),pattern:_})}function Gg(_){return new n2({check:"string_format",format:"lowercase",...k(_)})}function Xg(_){return new d2({check:"string_format",format:"uppercase",...k(_)})}function Yg(_,$){return new m2({check:"string_format",format:"includes",...k($),includes:_})}function Qg(_,$){return new i2({check:"string_format",format:"starts_with",...k($),prefix:_})}function Tg(_,$){return new l2({check:"string_format",format:"ends_with",...k($),suffix:_})}function YD(_,$,g){return new t2({check:"property",property:_,schema:$,...k(g)})}function Kg(_,$){return new o2({check:"mime_type",mime:_,...k($)})}function L$(_){return new p2({check:"overwrite",tx:_})}function qg(_){return L$(($)=>$.normalize(_))}function Bg(){return L$((_)=>_.trim())}function Vg(){return L$((_)=>_.toLowerCase())}function Fg(){return L$((_)=>_.toUpperCase())}function rg(){return L$((_)=>iN(_))}function yP(_,$,g){return new _({type:"array",element:$,...k(g)})}function SF(_,$,g){return new _({type:"union",options:$,...k(g)})}function LF(_,$,g){return new _({type:"union",options:$,inclusive:!1,...k(g)})}function WF(_,$,g,U){return new _({type:"union",options:g,discriminator:$,...k(U)})}function JF(_,$,g){return new _({type:"intersection",left:$,right:g})}function zF(_,$,g,U){let D=g instanceof l;return new _({type:"tuple",items:$,rest:D?g:null,...k(D?U:g)})}function RF(_,$,g,U){return new _({type:"record",keyType:$,valueType:g,...k(U)})}function GF(_,$,g,U){return new _({type:"map",keyType:$,valueType:g,...k(U)})}function XF(_,$,g){return new _({type:"set",valueType:$,...k(g)})}function YF(_,$,g){let U=Array.isArray($)?Object.fromEntries($.map((D)=>[D,D])):$;return new _({type:"enum",entries:U,...k(g)})}function QF(_,$,g){return new _({type:"enum",entries:$,...k(g)})}function TF(_,$,g){return new _({type:"literal",values:Array.isArray($)?$:[$],...k(g)})}function cP(_,$){return new _({type:"file",...k($)})}function KF(_,$){return new _({type:"transform",transform:$})}function qF(_,$){return new _({type:"optional",innerType:$})}function BF(_,$){return new _({type:"nullable",innerType:$})}function VF(_,$,g){return new _({type:"default",innerType:$,get defaultValue(){return typeof g==="function"?g():tN(g)}})}function FF(_,$,g){return new _({type:"nonoptional",innerType:$,...k(g)})}function rF(_,$){return new _({type:"success",innerType:$})}function bF(_,$,g){return new _({type:"catch",innerType:$,catchValue:typeof g==="function"?g:()=>g})}function MF(_,$,g){return new _({type:"pipe",in:$,out:g})}function ZF(_,$){return new _({type:"readonly",innerType:$})}function HF(_,$,g){return new _({type:"template_literal",parts:$,...k(g)})}function kF(_,$){return new _({type:"lazy",getter:$})}function CF(_,$){return new _({type:"promise",innerType:$})}function hP(_,$,g){let U=k(g);return U.abort??(U.abort=!0),new _({type:"custom",check:"custom",fn:$,...U})}function nP(_,$,g){return new _({type:"custom",check:"custom",fn:$,...k(g)})}function dP(_,$){let g=jX((U)=>{return U.addIssue=(D)=>{if(typeof D==="string")U.issues.push(F4(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(F4(I))}},_(U.value,U)},$);return g}function jX(_,$){let g=new G_({check:"custom",...k($)});return g._zod.check=_,g}function mP(_){let $=new G_({check:"describe"});return $._zod.onattach=[(g)=>{let U=v_.get(g)??{};v_.add(g,{...U,description:_})}],$._zod.check=()=>{},$}function iP(_){let $=new G_({check:"meta"});return $._zod.onattach=[(g)=>{let U=v_.get(g)??{};v_.add(g,{...U,..._})}],$._zod.check=()=>{},$}function lP(_,$){let g=k($),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((S)=>typeof S==="string"?S.toLowerCase():S),D=D.map((S)=>typeof S==="string"?S.toLowerCase():S);let I=new Set(U),j=new Set(D),E=_.Codec??ED,A=_.Boolean??ID,P=new(_.String??zg)({type:"string",error:g.error}),W=new A({type:"boolean",error:g.error}),z=new E({type:"pipe",in:P,out:W,transform:(S,L)=>{let J=S;if(g.case!=="sensitive")J=J.toLowerCase();if(I.has(J))return!0;else if(j.has(J))return!1;else return L.issues.push({code:"invalid_value",expected:"stringbool",values:[...I,...j],input:L.value,inst:z,continue:!1}),{}},reverseTransform:(S,L)=>{if(S===!0)return U[0]||"true";else return D[0]||"false"},error:g.error});return z}function u4(_,$,g,U={}){let D=k(U),I={...k(U),check:"string_format",type:"string",format:$,fn:typeof g==="function"?g:(E)=>g.test(E),...D};if(g instanceof RegExp)I.pattern=g;return new _(I)}var z1;var EX=w(()=>{uI();LD();AO();h();z1={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function w6(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";return{processors:_.processors??{},metadataRegistry:_?.metadata??v_,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 O_(_,$,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 E=_._zod.toJSONSchema?.();if(E)j.schema=E;else{let P={...g,schemaPath:[...g.schemaPath,_],path:g.path};if(_._zod.processJSONSchema)_._zod.processJSONSchema($,j.schema,P);else{let z=j.schema,S=$.processors[D.type];if(!S)throw Error(`[toJSONSchema]: Non-representable type encountered: ${D.type}`);S(_,$,z,P)}let W=_._zod.parent;if(W){if(!j.ref)j.ref=W;O_(W,$,P),$.seen.get(W).isParent=!0}}let A=$.metadataRegistry.get(_);if(A)Object.assign(j.schema,A);if($.io==="input"&&i_(_))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 u6(_,$){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 E=_.metadataRegistry.get(j[0])?.id;if(E){let A=U.get(E);if(A&&A!==j[0])throw Error(`Duplicate schema id "${E}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);U.set(E,j[0])}}let D=(j)=>{let E=_.target==="draft-2020-12"?"$defs":"definitions";if(_.external){let W=_.external.registry.get(j[0])?.id,z=_.external.uri??((L)=>L);if(W)return{ref:z(W)};let S=j[1].defId??j[1].schema.id??`schema${_.counter++}`;return j[1].defId=S,{defId:S,ref:`${z("__shared")}#/${E}/${S}`}}if(j[1]===g)return{ref:"#"};let O=`${"#"}/${E}/`,P=j[1].schema.id??`__schema${_.counter++}`;return{defId:P,ref:O+P}},I=(j)=>{if(j[1].schema.$ref)return;let E=j[1],{ref:A,defId:O}=D(j);if(E.def={...E.schema},O)E.defId=O;let P=E.schema;for(let W in P)delete P[W];P.$ref=A};if(_.cycles==="throw")for(let j of _.seen.entries()){let E=j[1];if(E.cycle)throw Error(`Cycle detected: #/${E.cycle?.join("/")}/ + `)}z.write("payload.value = newResult;"),z.write("return payload;");let R=z.compile();return(K,Y)=>R(P,K,Y)},E,j=G4,N=!P4.jitless,O=N&&E2.value,L=$.catchall,J;_._zod.parse=(P,z)=>{J??(J=I.value);let S=P.value;if(!j(S))return P.issues.push({expected:"object",code:"invalid_type",input:S,inst:_}),P;if(N&&O&&z?.async===!1&&z.jitless!==!0){if(!E)E=U($.shape);if(P=E(P,z),!L)return P;return z5([],S,P,z,J,_)}return D(P,z)}});JU=Q("$ZodUnion",(_,$)=>{t.init(_,$),$_(_._zod,"optin",()=>$.options.some((I)=>I._zod.optin==="optional")?"optional":void 0),$_(_._zod,"optout",()=>$.options.some((I)=>I._zod.optout==="optional")?"optional":void 0),$_(_._zod,"values",()=>{if($.options.every((I)=>I._zod.values))return new Set($.options.flatMap((I)=>Array.from(I._zod.values)));return}),$_(_._zod,"pattern",()=>{if($.options.every((I)=>I._zod.pattern)){let I=$.options.map((U)=>U._zod.pattern);return new RegExp(`^(${I.map((U)=>IU(U.source)).join("|")})$`)}return});let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(I,U)=>{if(D)return D(I,U);let E=!1,j=[];for(let N of $.options){let A=N._zod.run({value:I.value,issues:[]},U);if(A instanceof Promise)j.push(A),E=!0;else{if(A.issues.length===0)return A;j.push(A)}}if(!E)return _5(j,I,_,U);return Promise.all(j).then((N)=>{return _5(N,I,_,U)})}});pA=Q("$ZodXor",(_,$)=>{JU.init(_,$),$.inclusive=!1;let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(I,U)=>{if(D)return D(I,U);let E=!1,j=[];for(let N of $.options){let A=N._zod.run({value:I.value,issues:[]},U);if(A instanceof Promise)j.push(A),E=!0;else j.push(A)}if(!E)return $5(j,I,_,U);return Promise.all(j).then((N)=>{return $5(N,I,_,U)})}}),eA=Q("$ZodDiscriminatedUnion",(_,$)=>{$.inclusive=!1,JU.init(_,$);let D=_._zod.parse;$_(_._zod,"propValues",()=>{let U={};for(let E of $.options){let j=E._zod.propValues;if(!j||Object.keys(j).length===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(E)}"`);for(let[N,A]of Object.entries(j)){if(!U[N])U[N]=new Set;for(let O of A)U[N].add(O)}}return U});let I=k0(()=>{let U=$.options,E=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 A of N){if(E.has(A))throw Error(`Duplicate discriminator value "${String(A)}"`);E.set(A,j)}}return E});_._zod.parse=(U,E)=>{let j=U.value;if(!G4(j))return U.issues.push({code:"invalid_type",expected:"object",input:j,inst:_}),U;let N=I.value.get(j?.[$.discriminator]);if(N)return N._zod.run(U,E);if($.unionFallback||E.direction==="backward")return D(U,E);return U.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:$.discriminator,options:Array.from(I.value.keys()),input:j,path:[$.discriminator],inst:_}),U}}),aA=Q("$ZodIntersection",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value,E=$.left._zod.run({value:U,issues:[]},I),j=$.right._zod.run({value:U,issues:[]},I);if(E instanceof Promise||j instanceof Promise)return Promise.all([E,j]).then(([A,O])=>{return D5(D,A,O)});return D5(D,E,j)}});aI=Q("$ZodTuple",(_,$)=>{t.init(_,$);let D=$.items;_._zod.parse=(I,U)=>{let E=I.value;if(!Array.isArray(E))return I.issues.push({input:E,inst:_,expected:"tuple",code:"invalid_type"}),I;I.value=[];let j=[],N=U5(D,"optin"),A=U5(D,"optout");if(!$.rest){if(E.lengthD.length)I.issues.push({code:"too_big",maximum:D.length,inclusive:!0,input:E,inst:_,origin:"array"})}let O=Array(D.length);for(let L=0;L{O[L]=P}));else O[L]=J}if($.rest){let L=D.length-1,J=E.slice(D.length);for(let P of J){L++;let z=$.rest._zod.run({value:P,issues:[]},U);if(z instanceof Promise)j.push(z.then((S)=>I5(S,I,L)));else I5(z,I,L)}}if(j.length)return Promise.all(j).then(()=>E5(O,I,D,E,A));return E5(O,I,D,E,A)}});sA=Q("$ZodRecord",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!w6(U))return D.issues.push({expected:"record",code:"invalid_type",input:U,inst:_}),D;let E=[],j=$.keyType._zod.values;if(j){D.value={};let N=new Set;for(let O of j)if(typeof O==="string"||typeof O==="number"||typeof O==="symbol"){N.add(typeof O==="number"?O.toString():O);let L=$.keyType._zod.run({value:O,issues:[]},I);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((z)=>o_(z,I,Z_())),input:O,path:[O],inst:_});continue}let J=L.value,P=$.valueType._zod.run({value:U[O],issues:[]},I);if(P instanceof Promise)E.push(P.then((z)=>{if(z.issues.length)D.issues.push(...$$(O,z.issues));D.value[J]=z.value}));else{if(P.issues.length)D.issues.push(...$$(O,P.issues));D.value[J]=P.value}}let A;for(let O in U)if(!N.has(O))A=A??[],A.push(O);if(A&&A.length>0)D.issues.push({code:"unrecognized_keys",input:U,inst:_,keys:A})}else{D.value={};for(let N of Reflect.ownKeys(U)){if(N==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(U,N))continue;let A=$.keyType._zod.run({value:N,issues:[]},I);if(A instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof N==="string"&&AU.test(N)&&A.issues.length){let J=$.keyType._zod.run({value:Number(N),issues:[]},I);if(J instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(J.issues.length===0)A=J}if(A.issues.length){if($.mode==="loose")D.value[N]=U[N];else D.issues.push({code:"invalid_key",origin:"record",issues:A.issues.map((J)=>o_(J,I,Z_())),input:N,path:[N],inst:_});continue}let L=$.valueType._zod.run({value:U[N],issues:[]},I);if(L instanceof Promise)E.push(L.then((J)=>{if(J.issues.length)D.issues.push(...$$(N,J.issues));D.value[A.value]=J.value}));else{if(L.issues.length)D.issues.push(...$$(N,L.issues));D.value[A.value]=L.value}}}if(E.length)return Promise.all(E).then(()=>D);return D}}),_O=Q("$ZodMap",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!(U instanceof Map))return D.issues.push({expected:"map",code:"invalid_type",input:U,inst:_}),D;let E=[];D.value=new Map;for(let[j,N]of U){let A=$.keyType._zod.run({value:j,issues:[]},I),O=$.valueType._zod.run({value:N,issues:[]},I);if(A instanceof Promise||O instanceof Promise)E.push(Promise.all([A,O]).then(([L,J])=>{j5(L,J,D,j,U,_,I)}));else j5(A,O,D,j,U,_,I)}if(E.length)return Promise.all(E).then(()=>D);return D}});$O=Q("$ZodSet",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!(U instanceof Set))return D.issues.push({input:U,inst:_,expected:"set",code:"invalid_type"}),D;let E=[];D.value=new Set;for(let j of U){let N=$.valueType._zod.run({value:j,issues:[]},I);if(N instanceof Promise)E.push(N.then((A)=>N5(A,D)));else N5(N,D)}if(E.length)return Promise.all(E).then(()=>D);return D}});DO=Q("$ZodEnum",(_,$)=>{t.init(_,$);let D=UU($.entries),I=new Set(D);_._zod.values=I,_._zod.pattern=new RegExp(`^(${D.filter((U)=>EU.has(typeof U)).map((U)=>typeof U==="string"?z$(U):U.toString()).join("|")})$`),_._zod.parse=(U,E)=>{let j=U.value;if(I.has(j))return U;return U.issues.push({code:"invalid_value",values:D,input:j,inst:_}),U}}),UO=Q("$ZodLiteral",(_,$)=>{if(t.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((I)=>typeof I==="string"?z$(I):I?z$(I.toString()):String(I)).join("|")})$`),_._zod.parse=(I,U)=>{let E=I.value;if(D.has(E))return I;return I.issues.push({code:"invalid_value",values:$.values,input:E,inst:_}),I}}),IO=Q("$ZodFile",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(U instanceof File)return D;return D.issues.push({expected:"file",code:"invalid_type",input:U,inst:_}),D}}),EO=Q("$ZodTransform",(_,$)=>{t.init(_,$),_._zod.optin="optional",_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4(_.constructor.name);let U=$.transform(D.value,D);if(I.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 m$;return D.value=U,D.fallback=!0,D}});sI=Q("$ZodOptional",(_,$)=>{t.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(`^(${IU(D.source)})?$`):void 0}),_._zod.parse=(D,I)=>{if($.innerType._zod.optin==="optional"){let U=D.value,E=$.innerType._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>g5(j,U));return g5(E,U)}if(D.value===void 0)return D;return $.innerType._zod.run(D,I)}}),jO=Q("$ZodExactOptional",(_,$)=>{sI.init(_,$),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"pattern",()=>$.innerType._zod.pattern),_._zod.parse=(D,I)=>{return $.innerType._zod.run(D,I)}}),NO=Q("$ZodNullable",(_,$)=>{t.init(_,$),$_(_._zod,"optin",()=>$.innerType._zod.optin),$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"pattern",()=>{let D=$.innerType._zod.pattern;return D?new RegExp(`^(${IU(D.source)}|null)$`):void 0}),$_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,null]):void 0}),_._zod.parse=(D,I)=>{if(D.value===null)return D;return $.innerType._zod.run(D,I)}}),gO=Q("$ZodDefault",(_,$)=>{t.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);if(D.value===void 0)return D.value=$.defaultValue,D;let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>A5(E,$));return A5(U,$)}});AO=Q("$ZodPrefault",(_,$)=>{t.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);if(D.value===void 0)D.value=$.defaultValue;return $.innerType._zod.run(D,I)}}),OO=Q("$ZodNonOptional",(_,$)=>{t.init(_,$),$_(_._zod,"values",()=>{let D=$.innerType._zod.values;return D?new Set([...D].filter((I)=>I!==void 0)):void 0}),_._zod.parse=(D,I)=>{let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>O5(E,_));return O5(U,_)}});LO=Q("$ZodSuccess",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4("ZodSuccess");let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>{return D.value=E.issues.length===0,D});return D.value=U.issues.length===0,D}}),SO=Q("$ZodCatch",(_,$)=>{t.init(_,$),_._zod.optin="optional",$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>{if(D.value=E.value,E.issues.length)D.value=$.catchValue({...D,error:{issues:E.issues.map((j)=>o_(j,I,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((E)=>o_(E,I,Z_()))},input:D.value}),D.issues=[],D.fallback=!0;return D}}),JO=Q("$ZodNaN",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{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}}),_E=Q("$ZodPipe",(_,$)=>{t.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,I)=>{if(I.direction==="backward"){let E=$.out._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>lI(j,$.in,I));return lI(E,$.in,I)}let U=$.in._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>lI(E,$.out,I));return lI(U,$.out,I)}});WU=Q("$ZodCodec",(_,$)=>{t.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,I)=>{if((I.direction||"forward")==="forward"){let E=$.in._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>iI(j,$,I));return iI(E,$,I)}else{let E=$.out._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>iI(j,$,I));return iI(E,$,I)}}});WO=Q("$ZodPreprocess",(_,$)=>{_E.init(_,$)}),PO=Q("$ZodReadonly",(_,$)=>{t.init(_,$),$_(_._zod,"propValues",()=>$.innerType._zod.propValues),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"optin",()=>$.innerType?._zod?.optin),$_(_._zod,"optout",()=>$.innerType?._zod?.optout),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then(L5);return L5(U)}});zO=Q("$ZodTemplateLiteral",(_,$)=>{t.init(_,$);let D=[];for(let I of $.parts)if(typeof I==="object"&&I!==null){if(!I._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...I._zod.traits].shift()}`);let U=I._zod.pattern instanceof RegExp?I._zod.pattern.source:I._zod.pattern;if(!U)throw Error(`Invalid template literal part: ${I._zod.traits}`);let E=U.startsWith("^")?1:0,j=U.endsWith("$")?U.length-1:U.length;D.push(U.slice(E,j))}else if(I===null||N2.has(typeof I))D.push(z$(`${I}`));else throw Error(`Invalid template literal part: ${I}`);_._zod.pattern=new RegExp(`^${D.join("")}$`),_._zod.parse=(I,U)=>{if(typeof I.value!=="string")return I.issues.push({input:I.value,inst:_,expected:"string",code:"invalid_type"}),I;if(_._zod.pattern.lastIndex=0,!_._zod.pattern.test(I.value))return I.issues.push({input:I.value,inst:_,code:"invalid_format",format:$.format??"template_literal",pattern:_._zod.pattern.source}),I;return I}}),XO=Q("$ZodFunction",(_,$)=>{return t.init(_,$),_._def=$,_._zod.def=$,_.implement=(D)=>{if(typeof D!=="function")throw Error("implement() must be called with a function");return function(...I){let U=_._def.input?HI(_._def.input,I):I,E=Reflect.apply(D,this,U);if(_._def.output)return HI(_._def.output,E);return E}},_.implementAsync=(D)=>{if(typeof D!=="function")throw Error("implementAsync() must be called with a function");return async function(...I){let U=_._def.input?await kI(_._def.input,I):I,E=await Reflect.apply(D,this,U);if(_._def.output)return await kI(_._def.output,E);return E}},_._zod.parse=(D,I)=>{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 I=_.constructor;if(Array.isArray(D[0]))return new I({type:"function",input:new aI({type:"tuple",items:D[0],rest:D[1]}),output:_._def.output});return new I({type:"function",input:D[0],output:_._def.output})},_.output=(D)=>{return new _.constructor({type:"function",input:_._def.input,output:D})},_}),GO=Q("$ZodPromise",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{return Promise.resolve(D.value).then((U)=>$.innerType._zod.run({value:U,issues:[]},I))}}),RO=Q("$ZodLazy",(_,$)=>{t.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,I)=>{return _._zod.innerType._zod.run(D,I)}}),YO=Q("$ZodCustom",(_,$)=>{Y_.init(_,$),t.init(_,$),_._zod.parse=(D,I)=>{return D},_._zod.check=(D)=>{let I=D.value,U=$.fn(I);if(U instanceof Promise)return U.then((E)=>S5(E,D,I,_));S5(U,D,I,_);return}})});function KO(){return{localeError:wB()}}var wB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}\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 ${M(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: ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E} ${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"} ${E} ${U.maximum.toString()}`}case"too_small":{let E=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 ${E} ${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 ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`${D[E.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":""}: ${V(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 G5=r(()=>{n()});function TO(){return{localeError:rB()}}var rB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, daxil olan ${N}`}case"invalid_value":if(U.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${M(U.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${E}${U.maximum.toString()} ${j.unit??"element"}`;return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Yanl\u0131\u015F m\u0259tn: "${E.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`;if(E.format==="ends_with")return`Yanl\u0131\u015F m\u0259tn: "${E.suffix}" il\u0259 bitm\u0259lidir`;if(E.format==="includes")return`Yanl\u0131\u015F m\u0259tn: "${E.includes}" daxil olmal\u0131d\u0131r`;if(E.format==="regex")return`Yanl\u0131\u015F m\u0259tn: ${E.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;return`Yanl\u0131\u015F ${D[E.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":""}: ${V(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 R5=r(()=>{n()});function Y5(_,$,D,I){let U=Math.abs(_),E=U%10,j=U%100;if(j>=11&&j<=19)return I;if(E===1)return $;if(E>=2&&E<=4)return D;return I}function FO(){return{localeError:fB()}}var fB=()=>{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"},I={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=Y5(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} ${E}${U.maximum.toString()} ${A}`}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 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=Y5(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} ${E}${U.minimum.toString()} ${A}`}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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${D[E.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"}: ${V(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 Q5=r(()=>{n()});function VO(){return{localeError:xB()}}var xB=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;let j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";if(E.format==="emoji")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="datetime")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="date")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";if(E.format==="time")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="duration")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";return`${j} ${D[E.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":""}: ${V(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 K5=r(()=>{n()});function BO(){return{localeError:uB()}}var uB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, s'ha rebut ${N}`}case"invalid_value":if(U.values.length===1)return`Valor inv\xE0lid: s'esperava ${M(U.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${V(U.values," o ")}`;case"too_big":{let E=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 ${E} ${U.maximum.toString()} ${j.unit??"elements"}`;return`Massa gran: s'esperava que ${U.origin??"el valor"} fos ${E} ${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?"com a m\xEDnim":"m\xE9s de",j=$(U.origin);if(j)return`Massa petit: s'esperava que ${U.origin} contingu\xE9s ${E} ${U.minimum.toString()} ${j.unit}`;return`Massa petit: s'esperava que ${U.origin} fos ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Format inv\xE0lid: ha de comen\xE7ar amb "${E.prefix}"`;if(E.format==="ends_with")return`Format inv\xE0lid: ha d'acabar amb "${E.suffix}"`;if(E.format==="includes")return`Format inv\xE0lid: ha d'incloure "${E.includes}"`;if(E.format==="regex")return`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${E.pattern}`;return`Format inv\xE0lid per a ${D[E.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":""}: ${V(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 T5=r(()=>{n()});function MO(){return{localeError:yB()}}var yB=()=>{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"},I={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, obdr\u017Eeno ${N}`}case"invalid_value":if(U.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${M(U.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${E}${U.maximum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${E}${U.minimum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${E.prefix}"`;if(E.format==="ends_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${E.suffix}"`;if(E.format==="includes")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${E.includes}"`;if(E.format==="regex")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${E.pattern}`;return`Neplatn\xFD form\xE1t ${D[E.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: ${V(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 F5=r(()=>{n()});function bO(){return{localeError:hB()}}var hB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldigt input: forventede instanceof ${U.expected}, fik ${N}`;return`Ugyldigt input: forventede ${E}, fik ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig v\xE6rdi: forventede ${M(U.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`For stor: forventede ${N??"value"} ${j.verb} ${E} ${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor: forventede ${N??"value"} havde ${E} ${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`For lille: forventede ${N} ${j.verb} ${E} ${U.minimum.toString()} ${j.unit}`;return`For lille: forventede ${N} havde ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ugyldig streng: skal starte med "${E.prefix}"`;if(E.format==="ends_with")return`Ugyldig streng: skal ende med "${E.suffix}"`;if(E.format==="includes")return`Ugyldig streng: skal indeholde "${E.includes}"`;if(E.format==="regex")return`Ugyldig streng: skal matche m\xF8nsteret ${E.pattern}`;return`Ugyldig ${D[E.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"}: ${V(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 V5=r(()=>{n()});function ZO(){return{localeError:cB()}}var cB=()=>{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"},I={nan:"NaN",number:"Zahl",array:"Array"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ung\xFCltige Eingabe: erwartet instanceof ${U.expected}, erhalten ${N}`;return`Ung\xFCltige Eingabe: erwartet ${E}, erhalten ${N}`}case"invalid_value":if(U.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${M(U.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${E}${U.maximum.toString()} ${j.unit??"Elemente"} hat`;return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${E}${U.maximum.toString()} ist`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Zu klein: erwartet, dass ${U.origin} ${E}${U.minimum.toString()} ${j.unit} hat`;return`Zu klein: erwartet, dass ${U.origin} ${E}${U.minimum.toString()} ist`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ung\xFCltiger String: muss mit "${E.prefix}" beginnen`;if(E.format==="ends_with")return`Ung\xFCltiger String: muss mit "${E.suffix}" enden`;if(E.format==="includes")return`Ung\xFCltiger String: muss "${E.includes}" enthalten`;if(E.format==="regex")return`Ung\xFCltiger String: muss dem Muster ${E.pattern} entsprechen`;return`Ung\xFCltig: ${D[E.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"}: ${V(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 B5=r(()=>{n()});function HO(){return{localeError:nB()}}var nB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${D[E.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"}: ${V(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 M5=r(()=>{n()});function PU(){return{localeError:dB()}}var dB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;return`Invalid input: expected ${E}, received ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${M(U.values[0])}`;return`Invalid option: expected one of ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Too big: expected ${U.origin??"value"} to have ${E}${U.maximum.toString()} ${j.unit??"elements"}`;return`Too big: expected ${U.origin??"value"} to be ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Too small: expected ${U.origin} to have ${E}${U.minimum.toString()} ${j.unit}`;return`Too small: expected ${U.origin} to be ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Invalid string: must start with "${E.prefix}"`;if(E.format==="ends_with")return`Invalid string: must end with "${E.suffix}"`;if(E.format==="includes")return`Invalid string: must include "${E.includes}"`;if(E.format==="regex")return`Invalid string: must match pattern ${E.pattern}`;return`Invalid ${D[E.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":""}: ${V(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 kO=r(()=>{n()});function qO(){return{localeError:mB()}}var mB=()=>{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"},I={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Nevalida enigo: atendi\u011Dis instanceof ${U.expected}, ricevi\u011Dis ${N}`;return`Nevalida enigo: atendi\u011Dis ${E}, ricevi\u011Dis ${N}`}case"invalid_value":if(U.values.length===1)return`Nevalida enigo: atendi\u011Dis ${M(U.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${E}${U.maximum.toString()} ${j.unit??"elementojn"}`;return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Tro malgranda: atendi\u011Dis ke ${U.origin} havu ${E}${U.minimum.toString()} ${j.unit}`;return`Tro malgranda: atendi\u011Dis ke ${U.origin} estu ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Nevalida karaktraro: devas komenci\u011Di per "${E.prefix}"`;if(E.format==="ends_with")return`Nevalida karaktraro: devas fini\u011Di per "${E.suffix}"`;if(E.format==="includes")return`Nevalida karaktraro: devas inkluzivi "${E.includes}"`;if(E.format==="regex")return`Nevalida karaktraro: devas kongrui kun la modelo ${E.pattern}`;return`Nevalida ${D[E.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":""}: ${V(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 b5=r(()=>{n()});function CO(){return{localeError:lB()}}var lB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, recibido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: se esperaba ${M(U.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Demasiado grande: se esperaba que ${N??"valor"} tuviera ${E}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${N??"valor"} fuera ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Demasiado peque\xF1o: se esperaba que ${N} tuviera ${E}${U.minimum.toString()} ${j.unit}`;return`Demasiado peque\xF1o: se esperaba que ${N} fuera ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cadena inv\xE1lida: debe comenzar con "${E.prefix}"`;if(E.format==="ends_with")return`Cadena inv\xE1lida: debe terminar en "${E.suffix}"`;if(E.format==="includes")return`Cadena inv\xE1lida: debe incluir "${E.includes}"`;if(E.format==="regex")return`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${E.pattern}`;return`Inv\xE1lido ${D[E.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":""}: ${V(U.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${I[U.origin]??U.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${I[U.origin]??U.origin}`;default:return"Entrada inv\xE1lida"}}};var Z5=r(()=>{n()});function vO(){return{localeError:iB()}}var iB=()=>{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"},I={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} ${j.unit} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${E.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;if(E.format==="ends_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${E.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;if(E.format==="includes")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${E.includes}" \u0628\u0627\u0634\u062F`;if(E.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 ${E.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;return`${D[E.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: ${V(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 H5=r(()=>{n()});function wO(){return{localeError:tB()}}var tB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Virheellinen tyyppi: odotettiin instanceof ${U.expected}, oli ${N}`;return`Virheellinen tyyppi: odotettiin ${E}, oli ${N}`}case"invalid_value":if(U.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${M(U.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Liian suuri: ${j.subject} t\xE4ytyy olla ${E}${U.maximum.toString()} ${j.unit}`.trim();return`Liian suuri: arvon t\xE4ytyy olla ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Liian pieni: ${j.subject} t\xE4ytyy olla ${E}${U.minimum.toString()} ${j.unit}`.trim();return`Liian pieni: arvon t\xE4ytyy olla ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${E.prefix}"`;if(E.format==="ends_with")return`Virheellinen sy\xF6te: t\xE4ytyy loppua "${E.suffix}"`;if(E.format==="includes")return`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${E.includes}"`;if(E.format==="regex")return`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${E.pattern}`;return`Virheellinen ${D[E.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"}: ${V(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 k5=r(()=>{n()});function rO(){return{localeError:oB()}}var oB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : instanceof ${U.expected} attendu, ${N} re\xE7u`;return`Entr\xE9e invalide : ${E} attendu, ${N} re\xE7u`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : ${M(U.values[0])} attendu`;return`Option invalide : une valeur parmi ${V(U.values,"|")} attendue`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Trop grand : ${I[U.origin]??"valeur"} doit ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"\xE9l\xE9ment(s)"}`;return`Trop grand : ${I[U.origin]??"valeur"} doit \xEAtre ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Trop petit : ${I[U.origin]??"valeur"} doit ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Trop petit : ${I[U.origin]??"valeur"} doit \xEAtre ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${E.prefix}"`;if(E.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${E.suffix}"`;if(E.format==="includes")return`Cha\xEEne invalide : doit inclure "${E.includes}"`;if(E.format==="regex")return`Cha\xEEne invalide : doit correspondre au mod\xE8le ${E.pattern}`;return`${D[E.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":""} : ${V(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 q5=r(()=>{n()});function fO(){return{localeError:pB()}}var pB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : attendu instanceof ${U.expected}, re\xE7u ${N}`;return`Entr\xE9e invalide : attendu ${E}, re\xE7u ${N}`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : attendu ${M(U.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"\u2264":"<",j=$(U.origin);if(j)return`Trop grand : attendu que ${U.origin??"la valeur"} ait ${E}${U.maximum.toString()} ${j.unit}`;return`Trop grand : attendu que ${U.origin??"la valeur"} soit ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?"\u2265":">",j=$(U.origin);if(j)return`Trop petit : attendu que ${U.origin} ait ${E}${U.minimum.toString()} ${j.unit}`;return`Trop petit : attendu que ${U.origin} soit ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${E.prefix}"`;if(E.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${E.suffix}"`;if(E.format==="includes")return`Cha\xEEne invalide : doit inclure "${E.includes}"`;if(E.format==="regex")return`Cha\xEEne invalide : doit correspondre au motif ${E.pattern}`;return`${D[E.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":""} : ${V(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 C5=r(()=>{n()});function xO(){return{localeError:eB()}}var eB=()=>{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=(O)=>O?_[O]:void 0,I=(O)=>{let L=D(O);if(L)return L.label;return O??_.unknown.label},U=(O)=>`\u05D4${I(O)}`,E=(O)=>{return(D(O)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"},j=(O)=>{if(!O)return null;return $[O]??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"}},A={nan:"NaN"};return(O)=>{switch(O.code){case"invalid_type":{let L=O.expected,J=A[L??""]??I(L),P=b(O.input),z=A[P]??_[P]?.label??P;if(/^[A-Z]/.test(O.expected))return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${O.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${z}`;return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${J}, \u05D4\u05EA\u05E7\u05D1\u05DC ${z}`}case"invalid_value":{if(O.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 ${M(O.values[0])}`;let L=O.values.map((z)=>M(z));if(O.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 J=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 ${J}`}case"too_big":{let L=j(O.origin),J=U(O.origin??"value");if(O.origin==="string")return`${L?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.maximum.toString()} ${L?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(O.origin==="number"){let S=O.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${O.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${S}`}if(O.origin==="array"||O.origin==="set"){let S=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",W=O.inclusive?`${O.maximum} ${L?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${O.maximum} ${L?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${J} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${W}`.trim()}let P=O.inclusive?"<=":"<",z=E(O.origin??"value");if(L?.unit)return`${L.longLabel} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.maximum.toString()} ${L.unit}`;return`${L?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.maximum.toString()}`}case"too_small":{let L=j(O.origin),J=U(O.origin??"value");if(O.origin==="string")return`${L?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.minimum.toString()} ${L?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(O.origin==="number"){let S=O.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${O.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${S}`}if(O.origin==="array"||O.origin==="set"){let S=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(O.minimum===1&&O.inclusive){let X=O.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: ${J} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${X}`}let W=O.inclusive?`${O.minimum} ${L?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${O.minimum} ${L?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${J} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${W}`.trim()}let P=O.inclusive?">=":">",z=E(O.origin??"value");if(L?.unit)return`${L.shortLabel} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.minimum.toString()} ${L.unit}`;return`${L?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.minimum.toString()}`}case"invalid_format":{let L=O;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 J=N[L.format],P=J?.label??L.format,S=(J?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${P} \u05DC\u05D0 ${S}`}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 ${O.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${O.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${O.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${V(O.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(O.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};var v5=r(()=>{n()});function uO(){return{localeError:aB()}}var aB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, a primljeno je ${N}`}case"invalid_value":if(U.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${M(U.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} ima ${E}${U.maximum.toString()} ${j.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} bude ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Premalo: o\u010Dekivano da ${N} ima ${E}${U.minimum.toString()} ${j.unit}`;return`Premalo: o\u010Dekivano da ${N} bude ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neispravan tekst: mora zapo\u010Dinjati s "${E.prefix}"`;if(E.format==="ends_with")return`Neispravan tekst: mora zavr\u0161avati s "${E.suffix}"`;if(E.format==="includes")return`Neispravan tekst: mora sadr\u017Eavati "${E.includes}"`;if(E.format==="regex")return`Neispravan tekst: mora odgovarati uzorku ${E.pattern}`;return`Neispravna ${D[E.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"}: ${V(U.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${I[U.origin]??U.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${I[U.origin]??U.origin}`;default:return"Neispravan unos"}}};var w5=r(()=>{n()});function yO(){return{localeError:sB()}}var sB=()=>{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"},I={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, a kapott \xE9rt\xE9k ${N}`}case"invalid_value":if(U.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${M(U.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`T\xFAl nagy: ${U.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${E}${U.maximum.toString()} ${j.unit??"elem"}`;return`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${U.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} m\xE9rete t\xFAl kicsi ${E}${U.minimum.toString()} ${j.unit}`;return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} t\xFAl kicsi ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\xC9rv\xE9nytelen string: "${E.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`;if(E.format==="ends_with")return`\xC9rv\xE9nytelen string: "${E.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`;if(E.format==="includes")return`\xC9rv\xE9nytelen string: "${E.includes}" \xE9rt\xE9ket kell tartalmaznia`;if(E.format==="regex")return`\xC9rv\xE9nytelen string: ${E.pattern} mint\xE1nak kell megfelelnie`;return`\xC9rv\xE9nytelen ${D[E.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":""}: ${V(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 r5=r(()=>{n()});function f5(_,$,D){return Math.abs(_)===1?$:D}function y0(_){if(!_)return"";let $=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],D=_[_.length-1];return _+($.includes(D)?"\u0576":"\u0568")}function hO(){return{localeError:_M()}}var _M=()=>{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"},I={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=f5(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 ${y0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${E}${U.maximum.toString()} ${A}`}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 ${y0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=f5(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 ${y0(U.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${E}${U.minimum.toString()} ${A}`}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 ${y0(U.origin)} \u056C\u056B\u0576\u056B ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${E.prefix}"-\u0578\u057E`;if(E.format==="ends_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${E.suffix}"-\u0578\u057E`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;return`\u054D\u056D\u0561\u056C ${D[E.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":""}. ${V(U.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${y0(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 ${y0(U.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};var x5=r(()=>{n()});function cO(){return{localeError:$M()}}var $M=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak valid: diharapkan instanceof ${U.expected}, diterima ${N}`;return`Input tidak valid: diharapkan ${E}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak valid: diharapkan ${M(U.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: diharapkan ${U.origin??"value"} memiliki ${E}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: diharapkan ${U.origin??"value"} menjadi ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: diharapkan ${U.origin} memiliki ${E}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: diharapkan ${U.origin} menjadi ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`String tidak valid: harus dimulai dengan "${E.prefix}"`;if(E.format==="ends_with")return`String tidak valid: harus berakhir dengan "${E.suffix}"`;if(E.format==="includes")return`String tidak valid: harus menyertakan "${E.includes}"`;if(E.format==="regex")return`String tidak valid: harus sesuai pola ${E.pattern}`;return`${D[E.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":""}: ${V(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 u5=r(()=>{n()});function nO(){return{localeError:DM()}}var DM=()=>{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"},I={nan:"NaN",number:"n\xFAmer",array:"fylki"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}`}case"invalid_value":if(U.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${M(U.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} hafi ${E}${U.maximum.toString()} ${j.unit??"hluti"}`;return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} s\xE9 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} hafi ${E}${U.minimum.toString()} ${j.unit}`;return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} s\xE9 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${E.prefix}"`;if(E.format==="ends_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${E.suffix}"`;if(E.format==="includes")return`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${E.includes}"`;if(E.format==="regex")return`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${E.pattern}`;return`Rangt ${D[E.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"}: ${V(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 y5=r(()=>{n()});function dO(){return{localeError:UM()}}var UM=()=>{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"},I={nan:"NaN",number:"numero",array:"vettore"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input non valido: atteso instanceof ${U.expected}, ricevuto ${N}`;return`Input non valido: atteso ${E}, ricevuto ${N}`}case"invalid_value":if(U.values.length===1)return`Input non valido: atteso ${M(U.values[0])}`;return`Opzione non valida: atteso uno tra ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Troppo grande: ${U.origin??"valore"} deve avere ${E}${U.maximum.toString()} ${j.unit??"elementi"}`;return`Troppo grande: ${U.origin??"valore"} deve essere ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Troppo piccolo: ${U.origin} deve avere ${E}${U.minimum.toString()} ${j.unit}`;return`Troppo piccolo: ${U.origin} deve essere ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Stringa non valida: deve iniziare con "${E.prefix}"`;if(E.format==="ends_with")return`Stringa non valida: deve terminare con "${E.suffix}"`;if(E.format==="includes")return`Stringa non valida: deve includere "${E.includes}"`;if(E.format==="regex")return`Stringa non valida: deve corrispondere al pattern ${E.pattern}`;return`Input non valido: ${D[E.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"}: ${V(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 h5=r(()=>{n()});function mO(){return{localeError:IM()}}var IM=()=>{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"},I={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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: ${E}\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: ${M(U.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${V(U.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let E=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"}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5927\u304D\u3059\u304E\u308B\u5024: ${U.origin??"\u5024"}\u306F${U.maximum.toString()}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let E=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}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${U.origin}\u306F${U.minimum.toString()}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="ends_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="includes")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="regex")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${E.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u7121\u52B9\u306A${D[E.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":""}: ${V(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 c5=r(()=>{n()});function lO(){return{localeError:EM()}}var EM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let E=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} ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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} ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"-\u10D8\u10D7`;if(E.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 "${E.suffix}"-\u10D8\u10D7`;if(E.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 "${E.includes}"-\u10E1`;if(E.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 ${E.pattern}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${D[E.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"}: ${V(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 n5=r(()=>{n()});function zU(){return{localeError:jM()}}var jM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E} ${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"} ${E} ${U.maximum.toString()}`}case"too_small":{let E=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} ${E} ${U.minimum.toString()} ${j.unit}`;return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin} ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${D[E.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 ${V(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 iO=r(()=>{n()});function tO(){return zU()}var d5=r(()=>{iO()});function oO(){return{localeError:NM()}}var NM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(U.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${V(U.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let E=U.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",j=E==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),A=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()}${A} ${E}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()} ${E}${j}`}case"too_small":{let E=U.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",j=E==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),A=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()}${A} ${E}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()} ${E}${j}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="ends_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="includes")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="regex")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${E.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C ${D[E.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: ${V(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 m5=r(()=>{n()});function l5(_){let $=Math.abs(_),D=$%10,I=$%100;if(I>=11&&I<=19||D===0)return"many";if(D===1)return"one";return"few"}function pO(){return{localeError:gM()}}var XU=(_)=>{return _.charAt(0).toUpperCase()+_.slice(1)},gM=()=>{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,E,j,N){let A=_[U]??null;if(A===null)return A;return{unit:A.unit[E],verb:A.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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 - ${E}`}case"invalid_value":if(U.values.length===1)return`Privalo b\u016Bti ${M(U.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${V(U.values,"|")} pasirinkim\u0173`;case"too_big":{let E=I[U.origin]??U.origin,j=$(U.origin,l5(Number(U.maximum)),U.inclusive??!1,"smaller");if(j?.verb)return`${XU(E??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`${XU(E??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.maximum.toString()} ${j?.unit}`}case"too_small":{let E=I[U.origin]??U.origin,j=$(U.origin,l5(Number(U.minimum)),U.inclusive??!1,"bigger");if(j?.verb)return`${XU(E??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`${XU(E??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.minimum.toString()} ${j?.unit}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Eilut\u0117 privalo prasid\u0117ti "${E.prefix}"`;if(E.format==="ends_with")return`Eilut\u0117 privalo pasibaigti "${E.suffix}"`;if(E.format==="includes")return`Eilut\u0117 privalo \u012Ftraukti "${E.includes}"`;if(E.format==="regex")return`Eilut\u0117 privalo atitikti ${E.pattern}`;return`Neteisingas ${D[E.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"}: ${V(U.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let E=I[U.origin]??U.origin;return`${XU(E??U.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};var i5=r(()=>{n()});function eO(){return{localeError:AM()}}var AM=()=>{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"},I={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`Invalid ${D[E.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"}: ${V(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 t5=r(()=>{n()});function aO(){return{localeError:OM()}}var OM=()=>{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"},I={nan:"NaN",number:"nombor"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak sah: dijangka instanceof ${U.expected}, diterima ${N}`;return`Input tidak sah: dijangka ${E}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak sah: dijangka ${M(U.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: dijangka ${U.origin??"nilai"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: dijangka ${U.origin??"nilai"} adalah ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: dijangka ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: dijangka ${U.origin} adalah ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`String tidak sah: mesti bermula dengan "${E.prefix}"`;if(E.format==="ends_with")return`String tidak sah: mesti berakhir dengan "${E.suffix}"`;if(E.format==="includes")return`String tidak sah: mesti mengandungi "${E.includes}"`;if(E.format==="regex")return`String tidak sah: mesti sepadan dengan corak ${E.pattern}`;return`${D[E.format]??U.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${U.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${V(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 o5=r(()=>{n()});function sO(){return{localeError:LM()}}var LM=()=>{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"},I={nan:"NaN",number:"getal"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ongeldige invoer: verwacht instanceof ${U.expected}, ontving ${N}`;return`Ongeldige invoer: verwacht ${E}, ontving ${N}`}case"invalid_value":if(U.values.length===1)return`Ongeldige invoer: verwacht ${M(U.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E}${U.maximum.toString()} ${j.unit??"elementen"} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin??"waarde"} ${E}${U.maximum.toString()} is`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=U.origin==="date"?"vroeg":U.origin==="string"?"kort":"klein";if(j)return`Te ${N}: verwacht dat ${U.origin} ${E}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin} ${E}${U.minimum.toString()} is`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ongeldige tekst: moet met "${E.prefix}" beginnen`;if(E.format==="ends_with")return`Ongeldige tekst: moet op "${E.suffix}" eindigen`;if(E.format==="includes")return`Ongeldige tekst: moet "${E.includes}" bevatten`;if(E.format==="regex")return`Ongeldige tekst: moet overeenkomen met patroon ${E.pattern}`;return`Ongeldig: ${D[E.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":""}: ${V(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 p5=r(()=>{n()});function _L(){return{localeError:SM()}}var SM=()=>{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"},I={nan:"NaN",number:"tall",array:"liste"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldig input: forventet instanceof ${U.expected}, fikk ${N}`;return`Ugyldig input: forventet ${E}, fikk ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig verdi: forventet ${M(U.values[0])}`;return`Ugyldig valg: forventet en av ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${E}${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`For lite(n): forventet ${U.origin} til \xE5 ha ${E}${U.minimum.toString()} ${j.unit}`;return`For lite(n): forventet ${U.origin} til \xE5 ha ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ugyldig streng: m\xE5 starte med "${E.prefix}"`;if(E.format==="ends_with")return`Ugyldig streng: m\xE5 ende med "${E.suffix}"`;if(E.format==="includes")return`Ugyldig streng: m\xE5 inneholde "${E.includes}"`;if(E.format==="regex")return`Ugyldig streng: m\xE5 matche m\xF8nsteret ${E.pattern}`;return`Ugyldig ${D[E.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"}: ${V(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 e5=r(()=>{n()});function $L(){return{localeError:JM()}}var JM=()=>{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"},I={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`F\xE2sit giren: umulan instanceof ${U.expected}, al\u0131nan ${N}`;return`F\xE2sit giren: umulan ${E}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`F\xE2sit giren: umulan ${M(U.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${E}${U.maximum.toString()} ${j.unit??"elements"} sahip olmal\u0131yd\u0131.`;return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${E}${U.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${E}${U.minimum.toString()} ${j.unit} sahip olmal\u0131yd\u0131.`;return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${E}${U.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`F\xE2sit metin: "${E.prefix}" ile ba\u015Flamal\u0131.`;if(E.format==="ends_with")return`F\xE2sit metin: "${E.suffix}" ile bitmeli.`;if(E.format==="includes")return`F\xE2sit metin: "${E.includes}" ihtiv\xE2 etmeli.`;if(E.format==="regex")return`F\xE2sit metin: ${E.pattern} nak\u015F\u0131na uymal\u0131.`;return`F\xE2sit ${D[E.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":""}: ${V(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 a5=r(()=>{n()});function DL(){return{localeError:WM()}}var WM=()=>{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"},I={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()} \u0648\u064A`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} ${j.unit} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} \u0648\u064A`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${E.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;if(E.format==="ends_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${E.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;if(E.format==="includes")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${E.includes}" \u0648\u0644\u0631\u064A`;if(E.format==="regex")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${E.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;return`${D[E.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"}: ${V(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 s5=r(()=>{n()});function UL(){return{localeError:PM()}}var PM=()=>{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"},I={nan:"NaN",number:"liczba",array:"tablica"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, otrzymano ${N}`}case"invalid_value":if(U.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${M(U.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${E.prefix}"`;if(E.format==="ends_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${E.suffix}"`;if(E.format==="includes")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${E.includes}"`;if(E.format==="regex")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${E.pattern}`;return`Nieprawid\u0142ow(y/a/e) ${D[E.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":""}: ${V(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 _G=r(()=>{n()});function IL(){return{localeError:zM()}}var zM=()=>{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"},I={nan:"NaN",number:"n\xFAmero",null:"nulo"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Tipo inv\xE1lido: esperado instanceof ${U.expected}, recebido ${N}`;return`Tipo inv\xE1lido: esperado ${E}, recebido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: esperado ${M(U.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Muito grande: esperado que ${U.origin??"valor"} tivesse ${E}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Muito grande: esperado que ${U.origin??"valor"} fosse ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Muito pequeno: esperado que ${U.origin} tivesse ${E}${U.minimum.toString()} ${j.unit}`;return`Muito pequeno: esperado que ${U.origin} fosse ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Texto inv\xE1lido: deve come\xE7ar com "${E.prefix}"`;if(E.format==="ends_with")return`Texto inv\xE1lido: deve terminar com "${E.suffix}"`;if(E.format==="includes")return`Texto inv\xE1lido: deve incluir "${E.includes}"`;if(E.format==="regex")return`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${E.pattern}`;return`${D[E.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":""}: ${V(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 $G=r(()=>{n()});function EL(){return{localeError:XM()}}var XM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;return`Intrare invalid\u0103: a\u0219teptat ${E}, primit ${N}`}case"invalid_value":if(U.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${M(U.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"elemente"}`;return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} s\u0103 fie ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Prea mic: a\u0219teptat ca ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Prea mic: a\u0219teptat ca ${U.origin} s\u0103 fie ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${E.prefix}"`;if(E.format==="ends_with")return`\u0218ir invalid: trebuie s\u0103 se termine cu "${E.suffix}"`;if(E.format==="includes")return`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${E.includes}"`;if(E.format==="regex")return`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${E.pattern}`;return`Format invalid: ${D[E.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: ${V(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 DG=r(()=>{n()});function UG(_,$,D,I){let U=Math.abs(_),E=U%10,j=U%100;if(j>=11&&j<=19)return I;if(E===1)return $;if(E>=2&&E<=4)return D;return I}function jL(){return{localeError:GM()}}var GM=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=UG(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 ${E}${U.maximum.toString()} ${A}`}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 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=UG(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 ${E}${U.minimum.toString()} ${A}`}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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${D[E.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":""}: ${V(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 IG=r(()=>{n()});function NL(){return{localeError:RM()}}var RM=()=>{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"},I={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Neveljaven vnos: pri\u010Dakovano instanceof ${U.expected}, prejeto ${N}`;return`Neveljaven vnos: pri\u010Dakovano ${E}, prejeto ${N}`}case"invalid_value":if(U.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${M(U.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} imelo ${E}${U.maximum.toString()} ${j.unit??"elementov"}`;return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Premajhno: pri\u010Dakovano, da bo ${U.origin} imelo ${E}${U.minimum.toString()} ${j.unit}`;return`Premajhno: pri\u010Dakovano, da bo ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neveljaven niz: mora se za\u010Deti z "${E.prefix}"`;if(E.format==="ends_with")return`Neveljaven niz: mora se kon\u010Dati z "${E.suffix}"`;if(E.format==="includes")return`Neveljaven niz: mora vsebovati "${E.includes}"`;if(E.format==="regex")return`Neveljaven niz: mora ustrezati vzorcu ${E.pattern}`;return`Neveljaven ${D[E.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"}: ${V(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 EG=r(()=>{n()});function gL(){return{localeError:YM()}}var YM=()=>{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"},I={nan:"NaN",number:"antal",array:"lista"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, fick ${N}`}case"invalid_value":if(U.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${M(U.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`F\xF6r stor(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.maximum.toString()} ${j.unit??"element"}`;return`F\xF6r stor(t): f\xF6rv\xE4ntat ${U.origin??"v\xE4rdet"} att ha ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.minimum.toString()} ${j.unit}`;return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${E.prefix}"`;if(E.format==="ends_with")return`Ogiltig str\xE4ng: m\xE5ste sluta med "${E.suffix}"`;if(E.format==="includes")return`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${E.includes}"`;if(E.format==="regex")return`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${E.pattern}"`;return`Ogiltig(t) ${D[E.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"}: ${V(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 jG=r(()=>{n()});function AL(){return{localeError:QM()}}var QM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let E=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"} ${E}${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"} ${E}${U.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let E=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} ${E}${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} ${E}${U.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="ends_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="includes")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="regex")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${E.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[E.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":""}: ${V(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 NG=r(()=>{n()});function OL(){return{localeError:KM()}}var KM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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${E} ${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${E} ${U.maximum.toString()}`}case"too_small":{let E=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${E} ${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${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;if(E.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 ${E.pattern}`;return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${D[E.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: ${V(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 gG=r(()=>{n()});function LL(){return{localeError:TM()}}var TM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${M(U.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${E}${U.maximum.toString()} ${j.unit??"\xF6\u011Fe"}`;return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ge\xE7ersiz metin: "${E.prefix}" ile ba\u015Flamal\u0131`;if(E.format==="ends_with")return`Ge\xE7ersiz metin: "${E.suffix}" ile bitmeli`;if(E.format==="includes")return`Ge\xE7ersiz metin: "${E.includes}" i\xE7ermeli`;if(E.format==="regex")return`Ge\xE7ersiz metin: ${E.pattern} desenine uymal\u0131`;return`Ge\xE7ersiz ${D[E.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":""}: ${V(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 AG=r(()=>{n()});function GU(){return{localeError:FM()}}var FM=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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} ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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} ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${D[E.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":""}: ${V(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 SL=r(()=>{n()});function JL(){return GU()}var OG=r(()=>{SL()});function WL(){return{localeError:VM()}}var VM=()=>{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"},I={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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: ${E} \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: ${M(U.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${V(U.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${U.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${E}${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 ${E}${U.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${U.origin} \u06A9\u06D2 ${E}${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 ${E}${U.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="ends_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="includes")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="regex")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${E.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;return`\u063A\u0644\u0637 ${D[E.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":""}: ${V(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 LG=r(()=>{n()});function PL(){return{localeError:BM()}}var BM=()=>{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"},I={nan:"NaN",number:"raqam",array:"massiv"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, qabul qilingan ${N}`}case"invalid_value":if(U.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${M(U.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Juda katta: kutilgan ${U.origin??"qiymat"} ${E}${U.maximum.toString()} ${j.unit} ${j.verb}`;return`Juda katta: kutilgan ${U.origin??"qiymat"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Juda kichik: kutilgan ${U.origin} ${E}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Juda kichik: kutilgan ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Noto\u2018g\u2018ri satr: "${E.prefix}" bilan boshlanishi kerak`;if(E.format==="ends_with")return`Noto\u2018g\u2018ri satr: "${E.suffix}" bilan tugashi kerak`;if(E.format==="includes")return`Noto\u2018g\u2018ri satr: "${E.includes}" ni o\u2018z ichiga olishi kerak`;if(E.format==="regex")return`Noto\u2018g\u2018ri satr: ${E.pattern} shabloniga mos kelishi kerak`;return`Noto\u2018g\u2018ri ${D[E.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":""}: ${V(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 SG=r(()=>{n()});function zL(){return{localeError:MM()}}var MM=()=>{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"},I={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, 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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"ph\u1EA7n t\u1EED"}`;return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${E.prefix}"`;if(E.format==="ends_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${E.suffix}"`;if(E.format==="includes")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${E.includes}"`;if(E.format==="regex")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${E.pattern}`;return`${D[E.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: ${V(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 JG=r(()=>{n()});function XL(){return{localeError:bM()}}var bM=()=>{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"},I={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`}case"invalid_value":if(U.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${M(U.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${E}${U.maximum.toString()} ${j.unit??"\u4E2A\u5143\u7D20"}`;return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${E.prefix}" \u5F00\u5934`;if(E.format==="ends_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${E.suffix}" \u7ED3\u5C3E`;if(E.format==="includes")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${E.includes}"`;if(E.format==="regex")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${E.pattern}`;return`\u65E0\u6548${D[E.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): ${V(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 WG=r(()=>{n()});function GL(){return{localeError:ZM()}}var ZM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}\uFF0C\u4F46\u6536\u5230 ${N}`}case"invalid_value":if(U.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${M(U.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${E}${U.maximum.toString()} ${j.unit??"\u500B\u5143\u7D20"}`;return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${E}${U.minimum.toString()} ${j.unit}`;return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${E.prefix}" \u958B\u982D`;if(E.format==="ends_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${E.suffix}" \u7D50\u5C3E`;if(E.format==="includes")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${E.includes}"`;if(E.format==="regex")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${E.pattern}`;return`\u7121\u6548\u7684 ${D[E.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${V(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 PG=r(()=>{n()});function RL(){return{localeError:HM()}}var HM=()=>{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"},I={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(U.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${V(U.values,"|")}`;case"too_big":{let E=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} ${E}${U.maximum} ${j.unit}`;return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${E}${U.maximum}`}case"too_small":{let E=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} ${E}${U.minimum} ${j.unit}`;return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${E}${U.minimum}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.format==="ends_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${E.suffix}"`;if(E.format==="includes")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${E.includes}"`;if(E.format==="regex")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${E.pattern}`;return`A\u1E63\xEC\u1E63e: ${D[E.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: ${V(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 zG=r(()=>{n()});var h0={};x$(h0,{zhTW:()=>GL,zhCN:()=>XL,yo:()=>RL,vi:()=>zL,uz:()=>PL,ur:()=>WL,uk:()=>GU,ua:()=>JL,tr:()=>LL,th:()=>OL,ta:()=>AL,sv:()=>gL,sl:()=>NL,ru:()=>jL,ro:()=>EL,pt:()=>IL,ps:()=>DL,pl:()=>UL,ota:()=>$L,no:()=>_L,nl:()=>sO,ms:()=>aO,mk:()=>eO,lt:()=>pO,ko:()=>oO,km:()=>zU,kh:()=>tO,ka:()=>lO,ja:()=>mO,it:()=>dO,is:()=>nO,id:()=>cO,hy:()=>hO,hu:()=>yO,hr:()=>uO,he:()=>xO,frCA:()=>fO,fr:()=>rO,fi:()=>wO,fa:()=>vO,es:()=>CO,eo:()=>qO,en:()=>PU,el:()=>HO,de:()=>ZO,da:()=>bO,cs:()=>MO,ca:()=>BO,bg:()=>VO,be:()=>FO,az:()=>TO,ar:()=>KO});var YL=r(()=>{G5();R5();Q5();K5();T5();F5();V5();B5();M5();kO();b5();Z5();H5();k5();q5();C5();v5();w5();r5();x5();u5();y5();h5();c5();n5();d5();iO();m5();i5();t5();o5();p5();e5();a5();s5();_G();$G();DG();IG();EG();jG();NG();gG();AG();OG();SL();LG();SG();JG();WG();PG();zG()});class QL{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 I={...D,...this._map.get(_)};return Object.keys(I).length?I:void 0}return this._map.get(_)}has(_){return this._map.has(_)}}function RU(){return new QL}var XG,$E,DE,u_;var YU=r(()=>{$E=Symbol("ZodOutput"),DE=Symbol("ZodInput");(XG=globalThis).__zod_globalRegistry??(XG.__zod_globalRegistry=RU());u_=globalThis.__zod_globalRegistry});function KL(_,$){return new _({type:"string",...v($)})}function TL(_,$){return new _({type:"string",coerce:!0,...v($)})}function UE(_,$){return new _({type:"string",format:"email",check:"string_format",abort:!1,...v($)})}function QU(_,$){return new _({type:"string",format:"guid",check:"string_format",abort:!1,...v($)})}function IE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,...v($)})}function EE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...v($)})}function jE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...v($)})}function NE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...v($)})}function KU(_,$){return new _({type:"string",format:"url",check:"string_format",abort:!1,...v($)})}function gE(_,$){return new _({type:"string",format:"emoji",check:"string_format",abort:!1,...v($)})}function AE(_,$){return new _({type:"string",format:"nanoid",check:"string_format",abort:!1,...v($)})}function OE(_,$){return new _({type:"string",format:"cuid",check:"string_format",abort:!1,...v($)})}function LE(_,$){return new _({type:"string",format:"cuid2",check:"string_format",abort:!1,...v($)})}function SE(_,$){return new _({type:"string",format:"ulid",check:"string_format",abort:!1,...v($)})}function JE(_,$){return new _({type:"string",format:"xid",check:"string_format",abort:!1,...v($)})}function WE(_,$){return new _({type:"string",format:"ksuid",check:"string_format",abort:!1,...v($)})}function PE(_,$){return new _({type:"string",format:"ipv4",check:"string_format",abort:!1,...v($)})}function zE(_,$){return new _({type:"string",format:"ipv6",check:"string_format",abort:!1,...v($)})}function FL(_,$){return new _({type:"string",format:"mac",check:"string_format",abort:!1,...v($)})}function XE(_,$){return new _({type:"string",format:"cidrv4",check:"string_format",abort:!1,...v($)})}function GE(_,$){return new _({type:"string",format:"cidrv6",check:"string_format",abort:!1,...v($)})}function RE(_,$){return new _({type:"string",format:"base64",check:"string_format",abort:!1,...v($)})}function YE(_,$){return new _({type:"string",format:"base64url",check:"string_format",abort:!1,...v($)})}function QE(_,$){return new _({type:"string",format:"e164",check:"string_format",abort:!1,...v($)})}function KE(_,$){return new _({type:"string",format:"jwt",check:"string_format",abort:!1,...v($)})}function VL(_,$){return new _({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...v($)})}function BL(_,$){return new _({type:"string",format:"date",check:"string_format",...v($)})}function ML(_,$){return new _({type:"string",format:"time",check:"string_format",precision:null,...v($)})}function bL(_,$){return new _({type:"string",format:"duration",check:"string_format",...v($)})}function ZL(_,$){return new _({type:"number",checks:[],...v($)})}function HL(_,$){return new _({type:"number",coerce:!0,checks:[],...v($)})}function kL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"safeint",...v($)})}function qL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float32",...v($)})}function CL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float64",...v($)})}function vL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"int32",...v($)})}function wL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"uint32",...v($)})}function rL(_,$){return new _({type:"boolean",...v($)})}function fL(_,$){return new _({type:"boolean",coerce:!0,...v($)})}function xL(_,$){return new _({type:"bigint",...v($)})}function uL(_,$){return new _({type:"bigint",coerce:!0,...v($)})}function yL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...v($)})}function hL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...v($)})}function cL(_,$){return new _({type:"symbol",...v($)})}function nL(_,$){return new _({type:"undefined",...v($)})}function dL(_,$){return new _({type:"null",...v($)})}function mL(_){return new _({type:"any"})}function lL(_){return new _({type:"unknown"})}function iL(_,$){return new _({type:"never",...v($)})}function tL(_,$){return new _({type:"void",...v($)})}function oL(_,$){return new _({type:"date",...v($)})}function pL(_,$){return new _({type:"date",coerce:!0,...v($)})}function eL(_,$){return new _({type:"nan",...v($)})}function V$(_,$){return new cI({check:"less_than",...v($),value:_,inclusive:!1})}function I$(_,$){return new cI({check:"less_than",...v($),value:_,inclusive:!0})}function B$(_,$){return new nI({check:"greater_than",...v($),value:_,inclusive:!1})}function n_(_,$){return new nI({check:"greater_than",...v($),value:_,inclusive:!0})}function TU(_){return B$(0,_)}function FU(_){return V$(0,_)}function VU(_){return I$(0,_)}function BU(_){return n_(0,_)}function S6(_,$){return new m2({check:"multiple_of",...v($),value:_})}function J6(_,$){return new t2({check:"max_size",...v($),maximum:_})}function M$(_,$){return new o2({check:"min_size",...v($),minimum:_})}function f6(_,$){return new p2({check:"size_equals",...v($),size:_})}function x6(_,$){return new e2({check:"max_length",...v($),maximum:_})}function l$(_,$){return new a2({check:"min_length",...v($),minimum:_})}function u6(_,$){return new s2({check:"length_equals",...v($),length:_})}function Q4(_,$){return new _A({check:"string_format",format:"regex",...v($),pattern:_})}function K4(_){return new $A({check:"string_format",format:"lowercase",...v(_)})}function T4(_){return new DA({check:"string_format",format:"uppercase",...v(_)})}function F4(_,$){return new UA({check:"string_format",format:"includes",...v($),includes:_})}function V4(_,$){return new IA({check:"string_format",format:"starts_with",...v($),prefix:_})}function B4(_,$){return new EA({check:"string_format",format:"ends_with",...v($),suffix:_})}function MU(_,$,D){return new jA({check:"property",property:_,schema:$,...v(D)})}function M4(_,$){return new NA({check:"mime_type",mime:_,...v($)})}function X$(_){return new gA({check:"overwrite",tx:_})}function b4(_){return X$(($)=>$.normalize(_))}function Z4(){return X$((_)=>_.trim())}function H4(){return X$((_)=>_.toLowerCase())}function k4(){return X$((_)=>_.toUpperCase())}function q4(){return X$((_)=>I2(_))}function aL(_,$,D){return new _({type:"array",element:$,...v(D)})}function qM(_,$,D){return new _({type:"union",options:$,...v(D)})}function CM(_,$,D){return new _({type:"union",options:$,inclusive:!1,...v(D)})}function vM(_,$,D,I){return new _({type:"union",options:D,discriminator:$,...v(I)})}function wM(_,$,D){return new _({type:"intersection",left:$,right:D})}function rM(_,$,D,I){let U=D instanceof t;return new _({type:"tuple",items:$,rest:U?D:null,...v(U?I:D)})}function fM(_,$,D,I){return new _({type:"record",keyType:$,valueType:D,...v(I)})}function xM(_,$,D,I){return new _({type:"map",keyType:$,valueType:D,...v(I)})}function uM(_,$,D){return new _({type:"set",valueType:$,...v(D)})}function yM(_,$,D){let I=Array.isArray($)?Object.fromEntries($.map((U)=>[U,U])):$;return new _({type:"enum",entries:I,...v(D)})}function hM(_,$,D){return new _({type:"enum",entries:$,...v(D)})}function cM(_,$,D){return new _({type:"literal",values:Array.isArray($)?$:[$],...v(D)})}function sL(_,$){return new _({type:"file",...v($)})}function nM(_,$){return new _({type:"transform",transform:$})}function dM(_,$){return new _({type:"optional",innerType:$})}function mM(_,$){return new _({type:"nullable",innerType:$})}function lM(_,$,D){return new _({type:"default",innerType:$,get defaultValue(){return typeof D==="function"?D():j2(D)}})}function iM(_,$,D){return new _({type:"nonoptional",innerType:$,...v(D)})}function tM(_,$){return new _({type:"success",innerType:$})}function oM(_,$,D){return new _({type:"catch",innerType:$,catchValue:typeof D==="function"?D:()=>D})}function pM(_,$,D){return new _({type:"pipe",in:$,out:D})}function eM(_,$){return new _({type:"readonly",innerType:$})}function aM(_,$,D){return new _({type:"template_literal",parts:$,...v(D)})}function sM(_,$){return new _({type:"lazy",getter:$})}function _b(_,$){return new _({type:"promise",innerType:$})}function _S(_,$,D){let I=v(D);return I.abort??(I.abort=!0),new _({type:"custom",check:"custom",fn:$,...I})}function $S(_,$,D){return new _({type:"custom",check:"custom",fn:$,...v(D)})}function DS(_,$){let D=GG((I)=>{return I.addIssue=(U)=>{if(typeof U==="string")I.issues.push(q0(U,I.value,D._zod.def));else{let E=U;if(E.fatal)E.continue=!1;E.code??(E.code="custom"),E.input??(E.input=I.value),E.inst??(E.inst=D),E.continue??(E.continue=!D._zod.def.abort),I.issues.push(q0(E))}},_(I.value,I)},$);return D}function GG(_,$){let D=new Y_({check:"custom",...v($)});return D._zod.check=_,D}function US(_){let $=new Y_({check:"describe"});return $._zod.onattach=[(D)=>{let I=u_.get(D)??{};u_.add(D,{...I,description:_})}],$._zod.check=()=>{},$}function IS(_){let $=new Y_({check:"meta"});return $._zod.onattach=[(D)=>{let I=u_.get(D)??{};u_.add(D,{...I,..._})}],$._zod.check=()=>{},$}function ES(_,$){let D=v($),I=D.truthy??["true","1","yes","on","y","enabled"],U=D.falsy??["false","0","no","off","n","disabled"];if(D.case!=="sensitive")I=I.map((z)=>typeof z==="string"?z.toLowerCase():z),U=U.map((z)=>typeof z==="string"?z.toLowerCase():z);let E=new Set(I),j=new Set(U),N=_.Codec??WU,A=_.Boolean??SU,L=new(_.String??Y4)({type:"string",error:D.error}),J=new A({type:"boolean",error:D.error}),P=new N({type:"pipe",in:L,out:J,transform:(z,S)=>{let W=z;if(D.case!=="sensitive")W=W.toLowerCase();if(E.has(W))return!0;else if(j.has(W))return!1;else return S.issues.push({code:"invalid_value",expected:"stringbool",values:[...E,...j],input:S.value,inst:P,continue:!1}),{}},reverseTransform:(z,S)=>{if(z===!0)return I[0]||"true";else return U[0]||"false"},error:D.error});return P}function c0(_,$,D,I={}){let U=v(I),E={...v(I),check:"string_format",type:"string",format:$,fn:typeof D==="function"?D:(N)=>D.test(N),...U};if(D instanceof RegExp)E.pattern=D;return new _(E)}var TE;var RG=r(()=>{dI();YU();QO();n();TE={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function y6(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";return{processors:_.processors??{},metadataRegistry:_?.metadata??u_,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 L_(_,$,D={path:[],schemaPath:[]}){var I;let U=_._zod.def,E=$.seen.get(_);if(E){if(E.count++,D.schemaPath.includes(_))E.cycle=D.path;return E.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 P=j.schema,z=$.processors[U.type];if(!z)throw Error(`[toJSONSchema]: Non-representable type encountered: ${U.type}`);z(_,$,P,L)}let J=_._zod.parent;if(J){if(!j.ref)j.ref=J;L_(J,$,L),$.seen.get(J).isParent=!0}}let A=$.metadataRegistry.get(_);if(A)Object.assign(j.schema,A);if($.io==="input"&&p_(_))delete j.schema.examples,delete j.schema.default;if($.io==="input"&&"_prefault"in j.schema)(I=j.schema).default??(I.default=j.schema._prefault);return delete j.schema._prefault,$.seen.get(_).schema}function h6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let I=new Map;for(let j of _.seen.entries()){let N=_.metadataRegistry.get(j[0])?.id;if(N){let A=I.get(N);if(A&&A!==j[0])throw Error(`Duplicate schema id "${N}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);I.set(N,j[0])}}let U=(j)=>{let N=_.target==="draft-2020-12"?"$defs":"definitions";if(_.external){let J=_.external.registry.get(j[0])?.id,P=_.external.uri??((S)=>S);if(J)return{ref:P(J)};let z=j[1].defId??j[1].schema.id??`schema${_.counter++}`;return j[1].defId=z,{defId:z,ref:`${P("__shared")}#/${N}/${z}`}}if(j[1]===D)return{ref:"#"};let O=`${"#"}/${N}/`,L=j[1].schema.id??`__schema${_.counter++}`;return{defId:L,ref:O+L}},E=(j)=>{if(j[1].schema.$ref)return;let N=j[1],{ref:A,defId:O}=U(j);if(N.def={...N.schema},O)N.defId=O;let L=N.schema;for(let J in L)delete L[J];L.$ref=A};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 E=j[1];if($===j[0]){I(j);continue}if(_.external){let O=_.external.registry.get(j[0])?.id;if($!==j[0]&&O){I(j);continue}}if(_.metadataRegistry.get(j[0])?.id){I(j);continue}if(E.cycle){I(j);continue}if(E.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=(E)=>{let A=_.seen.get(E);if(A.ref===null)return;let O=A.def??A.schema,P={...O},W=A.ref;if(A.ref=null,W){U(W);let S=_.seen.get(W),L=S.schema;if(L.$ref&&(_.target==="draft-07"||_.target==="draft-04"||_.target==="openapi-3.0"))O.allOf=O.allOf??[],O.allOf.push(L);else Object.assign(O,L);if(Object.assign(O,P),E._zod.parent===W)for(let R in O){if(R==="$ref"||R==="allOf")continue;if(!(R in P))delete O[R]}if(L.$ref&&S.def)for(let R in O){if(R==="$ref"||R==="allOf")continue;if(R in S.def&&JSON.stringify(O[R])===JSON.stringify(S.def[R]))delete O[R]}}let z=E._zod.parent;if(z&&z!==W){U(z);let S=_.seen.get(z);if(S?.schema.$ref){if(O.$ref=S.schema.$ref,S.def)for(let L in O){if(L==="$ref"||L==="allOf")continue;if(L in S.def&&JSON.stringify(O[L])===JSON.stringify(S.def[L]))delete O[L]}}}_.override({zodSchema:E,jsonSchema:O,path:A.path??[]})};for(let E of[..._.seen.entries()].reverse())U(E[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 E=_.external.registry.get($)?.id;if(!E)throw Error("Schema is missing an `id` property");D.$id=_.external.uri(E)}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 E of _.seen.entries()){let A=E[1];if(A.def&&A.defId){if(A.def.id===A.defId)delete A.def.id;j[A.defId]=A.def}}if(_.external);else if(Object.keys(j).length>0)if(_.target==="draft-2020-12")D.$defs=j;else D.definitions=j;try{let E=JSON.parse(JSON.stringify(D));return Object.defineProperty(E,"~standard",{value:{...$["~standard"],jsonSchema:{input:f4($,"input",_.processors),output:f4($,"output",_.processors)}},enumerable:!1,writable:!1}),E}catch(E){throw Error("Error converting schema to JSON.")}}function i_(_,$){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 i_(U.element,g);if(U.type==="set")return i_(U.valueType,g);if(U.type==="lazy")return i_(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 i_(U.innerType,g);if(U.type==="intersection")return i_(U.left,g)||i_(U.right,g);if(U.type==="record"||U.type==="map")return i_(U.keyType,g)||i_(U.valueType,g);if(U.type==="pipe"){if(_._zod.traits.has("$ZodCodec"))return!0;return i_(U.in,g)||i_(U.out,g)}if(U.type==="object"){for(let D in U.shape)if(i_(U.shape[D],g))return!0;return!1}if(U.type==="union"){for(let D of U.options)if(i_(D,g))return!0;return!1}if(U.type==="tuple"){for(let D of U.items)if(i_(D,g))return!0;if(U.rest&&i_(U.rest,g))return!0;return!1}return!1}var tP=(_,$={})=>(g)=>{let U=w6({...g,processors:$});return O_(_,U),u6(U,_),f6(U,_)},f4=(_,$,g={})=>(U)=>{let{libraryOptions:D,target:I}=U??{},j=w6({...D??{},target:I,io:$,processors:g});return O_(_,j),u6(j,_),f6(j,_)};var QD=w(()=>{LD()});function TD(_,$){if("_idmap"in _){let U=_,D=w6({...$,processors:R1}),I={};for(let A of U._idmap.entries()){let[O,P]=A;O_(P,D)}let j={},E={registry:U,uri:$?.uri,defs:I};D.external=E;for(let A of U._idmap.entries()){let[O,P]=A;u6(D,P),j[O]=f6(D,P)}if(Object.keys(I).length>0){let A=D.target==="draft-2020-12"?"$defs":"definitions";j.__shared={[A]:I}}return{schemas:j}}let g=w6({...$,processors:R1});return O_(_,g),u6(g,_),f6(g,_)}var vF,oP=(_,$,g,U)=>{let D=g;D.type="string";let{minimum:I,maximum:j,format:E,patterns:A,contentEncoding:O}=_._zod.bag;if(typeof I==="number")D.minLength=I;if(typeof j==="number")D.maxLength=j;if(E){if(D.format=vF[E]??E,D.format==="")delete D.format;if(E==="time")delete D.format}if(O)D.contentEncoding=O;if(A&&A.size>0){let P=[...A];if(P.length===1)D.pattern=P[0].source;else if(P.length>1)D.allOf=[...P.map((W)=>({...$.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"?{type:"string"}:{},pattern:W.source}))]}},pP=(_,$,g,U)=>{let D=g,{minimum:I,maximum:j,format:E,multipleOf:A,exclusiveMaximum:O,exclusiveMinimum:P}=_._zod.bag;if(typeof E==="string"&&E.includes("int"))D.type="integer";else D.type="number";let W=typeof P==="number"&&P>=(I??Number.NEGATIVE_INFINITY),z=typeof O==="number"&&O<=(j??Number.POSITIVE_INFINITY),S=$.target==="draft-04"||$.target==="openapi-3.0";if(W)if(S)D.minimum=P,D.exclusiveMinimum=!0;else D.exclusiveMinimum=P;else if(typeof I==="number")D.minimum=I;if(z)if(S)D.maximum=O,D.exclusiveMaximum=!0;else D.exclusiveMaximum=O;else if(typeof j==="number")D.maximum=j;if(typeof A==="number")D.multipleOf=A},eP=(_,$,g,U)=>{g.type="boolean"},aP=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},sP=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},_S=(_,$,g,U)=>{if($.target==="openapi-3.0")g.type="string",g.nullable=!0,g.enum=[null];else g.type="null"},$S=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},gS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},DS=(_,$,g,U)=>{g.not={}},US=(_,$,g,U)=>{},IS=(_,$,g,U)=>{},jS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},ES=(_,$,g,U)=>{let D=_._zod.def,I=p0(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},NS=(_,$,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}},AS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},OS=(_,$,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},PS=(_,$,g,U)=>{let D=g,I={type:"string",format:"binary",contentEncoding:"binary"},{minimum:j,maximum:E,mime:A}=_._zod.bag;if(j!==void 0)I.minLength=j;if(E!==void 0)I.maxLength=E;if(A)if(A.length===1)I.contentMediaType=A[0],Object.assign(D,I);else Object.assign(D,I),D.anyOf=A.map((O)=>({contentMediaType:O}));else Object.assign(D,I)},SS=(_,$,g,U)=>{g.type="boolean"},LS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},WS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},JS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},zS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},RS=(_,$,g,U)=>{if($.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},GS=(_,$,g,U)=>{let D=g,I=_._zod.def,{minimum:j,maximum:E}=_._zod.bag;if(typeof j==="number")D.minItems=j;if(typeof E==="number")D.maxItems=E;D.type="array",D.items=O_(I.element,$,{...U,path:[...U.path,"items"]})},XS=(_,$,g,U)=>{let D=g,I=_._zod.def;D.type="object",D.properties={};let j=I.shape;for(let O in j)D.properties[O]=O_(j[O],$,{...U,path:[...U.path,"properties",O]});let E=new Set(Object.keys(j)),A=new Set([...E].filter((O)=>{let P=I.shape[O]._zod;if($.io==="input")return P.optin===void 0;else return P.optout===void 0}));if(A.size>0)D.required=Array.from(A);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=O_(I.catchall,$,{...U,path:[...U.path,"additionalProperties"]})},G1=(_,$,g,U)=>{let D=_._zod.def,I=D.inclusive===!1,j=D.options.map((E,A)=>O_(E,$,{...U,path:[...U.path,I?"oneOf":"anyOf",A]}));if(I)g.oneOf=j;else g.anyOf=j},YS=(_,$,g,U)=>{let D=_._zod.def,I=O_(D.left,$,{...U,path:[...U.path,"allOf",0]}),j=O_(D.right,$,{...U,path:[...U.path,"allOf",1]}),E=(O)=>("allOf"in O)&&Object.keys(O).length===1,A=[...E(I)?I.allOf:[I],...E(j)?j.allOf:[j]];g.allOf=A},QS=(_,$,g,U)=>{let D=g,I=_._zod.def;D.type="array";let j=$.target==="draft-2020-12"?"prefixItems":"items",E=$.target==="draft-2020-12"?"items":$.target==="openapi-3.0"?"items":"additionalItems",A=I.items.map((z,S)=>O_(z,$,{...U,path:[...U.path,j,S]})),O=I.rest?O_(I.rest,$,{...U,path:[...U.path,E,...$.target==="openapi-3.0"?[I.items.length]:[]]}):null;if($.target==="draft-2020-12"){if(D.prefixItems=A,O)D.items=O}else if($.target==="openapi-3.0"){if(D.items={anyOf:A},O)D.items.anyOf.push(O);if(D.minItems=A.length,!O)D.maxItems=A.length}else if(D.items=A,O)D.additionalItems=O;let{minimum:P,maximum:W}=_._zod.bag;if(typeof P==="number")D.minItems=P;if(typeof W==="number")D.maxItems=W},TS=(_,$,g,U)=>{let D=g,I=_._zod.def;D.type="object";let j=I.keyType,A=j._zod.bag?.patterns;if(I.mode==="loose"&&A&&A.size>0){let P=O_(I.valueType,$,{...U,path:[...U.path,"patternProperties","*"]});D.patternProperties={};for(let W of A)D.patternProperties[W.source]=P}else{if($.target==="draft-07"||$.target==="draft-2020-12")D.propertyNames=O_(I.keyType,$,{...U,path:[...U.path,"propertyNames"]});D.additionalProperties=O_(I.valueType,$,{...U,path:[...U.path,"additionalProperties"]})}let O=j._zod.values;if(O){let P=[...O].filter((W)=>typeof W==="string"||typeof W==="number");if(P.length>0)D.required=P}},KS=(_,$,g,U)=>{let D=_._zod.def,I=O_(D.innerType,$,U),j=$.seen.get(_);if($.target==="openapi-3.0")j.ref=D.innerType,g.nullable=!0;else g.anyOf=[I,{type:"null"}]},qS=(_,$,g,U)=>{let D=_._zod.def;O_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType},BS=(_,$,g,U)=>{let D=_._zod.def;O_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType,g.default=JSON.parse(JSON.stringify(D.defaultValue))},VS=(_,$,g,U)=>{let D=_._zod.def;O_(D.innerType,$,U);let I=$.seen.get(_);if(I.ref=D.innerType,$.io==="input")g._prefault=JSON.parse(JSON.stringify(D.defaultValue))},FS=(_,$,g,U)=>{let D=_._zod.def;O_(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},rS=(_,$,g,U)=>{let D=_._zod.def,I=D.in._zod.traits.has("$ZodTransform"),j=$.io==="input"?I?D.out:D.in:D.out;O_(j,$,U);let E=$.seen.get(_);E.ref=j},bS=(_,$,g,U)=>{let D=_._zod.def;O_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType,g.readOnly=!0},MS=(_,$,g,U)=>{let D=_._zod.def;O_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType},X1=(_,$,g,U)=>{let D=_._zod.def;O_(D.innerType,$,U);let I=$.seen.get(_);I.ref=D.innerType},ZS=(_,$,g,U)=>{let D=_._zod.innerType;O_(D,$,U);let I=$.seen.get(_);I.ref=D},R1;var KD=w(()=>{QD();h();vF={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},R1={string:oP,number:pP,boolean:eP,bigint:aP,symbol:sP,null:_S,undefined:$S,void:gS,never:DS,any:US,unknown:IS,date:jS,enum:ES,literal:NS,nan:AS,template_literal:OS,file:PS,success:SS,custom:LS,function:WS,transform:JS,map:zS,set:RS,array:GS,object:XS,union:G1,intersection:YS,tuple:QS,record:TS,nullable:KS,nonoptional:qS,default:BS,prefault:VS,catch:FS,pipe:rS,readonly:bS,promise:MS,optional:X1,lazy:ZS}});class HS{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=w6({processors:R1,target:$,..._?.metadata&&{metadata:_.metadata},..._?.unrepresentable&&{unrepresentable:_.unrepresentable},..._?.override&&{override:_.override},..._?.io&&{io:_.io}})}process(_,$={path:[],schemaPath:[]}){return O_(_,this.ctx,$)}emit(_,$){if($){if($.cycles)this.ctx.cycles=$.cycles;if($.reused)this.ctx.reused=$.reused;if($.external)this.ctx.external=$.external}u6(this.ctx,_);let g=f6(this.ctx,_),{"~standard":U,...D}=g;return D}}var NX=w(()=>{KD();QD()});var AX={};var OX=()=>{};var y$={};k$(y$,{version:()=>e2,util:()=>Z,treeifyError:()=>QI,toJSONSchema:()=>TD,toDotPath:()=>CR,safeParseAsync:()=>g2,safeParse:()=>$2,safeEncodeAsync:()=>fB,safeEncode:()=>wB,safeDecodeAsync:()=>xB,safeDecode:()=>uB,registry:()=>SD,regexes:()=>s_,process:()=>O_,prettifyError:()=>TI,parseAsync:()=>qI,parse:()=>KI,meta:()=>iP,locales:()=>w4,isValidJWT:()=>gG,isValidBase64URL:()=>$G,isValidBase64:()=>YA,initializeContext:()=>w6,globalRegistry:()=>v_,globalConfig:()=>Pg,formatError:()=>b4,flattenError:()=>r4,finalize:()=>f6,extractDefs:()=>u6,encodeAsync:()=>CB,encode:()=>HB,describe:()=>mP,decodeAsync:()=>vB,decode:()=>kB,createToJSONSchemaMethod:()=>tP,createStandardJSONSchemaMethod:()=>f4,config:()=>F_,clone:()=>f_,_xor:()=>LF,_xid:()=>j1,_void:()=>wP,_uuidv7:()=>_1,_uuidv6:()=>sI,_uuidv4:()=>aI,_uuid:()=>eI,_url:()=>JD,_uppercase:()=>Xg,_unknown:()=>CP,_union:()=>SF,_undefined:()=>ZP,_ulid:()=>I1,_uint64:()=>bP,_uint32:()=>KP,_tuple:()=>zF,_trim:()=>Bg,_transform:()=>KF,_toUpperCase:()=>Fg,_toLowerCase:()=>Vg,_templateLiteral:()=>HF,_symbol:()=>MP,_superRefine:()=>dP,_success:()=>rF,_stringbool:()=>lP,_stringFormat:()=>u4,_string:()=>OP,_startsWith:()=>Qg,_slugify:()=>rg,_size:()=>k6,_set:()=>XF,_safeParseAsync:()=>k4,_safeParse:()=>H4,_safeEncodeAsync:()=>ZI,_safeEncode:()=>bI,_safeDecodeAsync:()=>HI,_safeDecode:()=>MI,_regex:()=>Rg,_refine:()=>nP,_record:()=>RF,_readonly:()=>ZF,_property:()=>YD,_promise:()=>CF,_positive:()=>zD,_pipe:()=>MF,_parseAsync:()=>Z4,_parse:()=>M4,_overwrite:()=>L$,_optional:()=>qF,_number:()=>RP,_nullable:()=>BF,_null:()=>HP,_normalize:()=>qg,_nonpositive:()=>GD,_nonoptional:()=>FF,_nonnegative:()=>XD,_never:()=>vP,_negative:()=>RD,_nativeEnum:()=>QF,_nanoid:()=>g1,_nan:()=>xP,_multipleOf:()=>j6,_minSize:()=>T$,_minLength:()=>x$,_min:()=>x_,_mime:()=>Kg,_maxSize:()=>E6,_maxLength:()=>C6,_max:()=>_$,_map:()=>GF,_mac:()=>SP,_lte:()=>_$,_lt:()=>Y$,_lowercase:()=>Gg,_literal:()=>TF,_length:()=>v6,_lazy:()=>kF,_ksuid:()=>E1,_jwt:()=>J1,_isoTime:()=>JP,_isoDuration:()=>zP,_isoDateTime:()=>LP,_isoDate:()=>WP,_ipv6:()=>A1,_ipv4:()=>N1,_intersection:()=>JF,_int64:()=>rP,_int32:()=>TP,_int:()=>XP,_includes:()=>Yg,_guid:()=>WD,_gte:()=>x_,_gt:()=>Q$,_float64:()=>QP,_float32:()=>YP,_file:()=>cP,_enum:()=>YF,_endsWith:()=>Tg,_encodeAsync:()=>FI,_encode:()=>BI,_emoji:()=>$1,_email:()=>pI,_e164:()=>W1,_discriminatedUnion:()=>WF,_default:()=>VF,_decodeAsync:()=>rI,_decode:()=>VI,_date:()=>uP,_custom:()=>hP,_cuid2:()=>U1,_cuid:()=>D1,_coercedString:()=>PP,_coercedNumber:()=>GP,_coercedDate:()=>fP,_coercedBoolean:()=>BP,_coercedBigint:()=>FP,_cidrv6:()=>P1,_cidrv4:()=>O1,_check:()=>jX,_catch:()=>bF,_boolean:()=>qP,_bigint:()=>VP,_base64url:()=>L1,_base64:()=>S1,_array:()=>yP,_any:()=>kP,TimePrecision:()=>z1,NEVER:()=>RI,JSONSchemaGenerator:()=>HS,JSONSchema:()=>AX,Doc:()=>fI,$output:()=>tI,$input:()=>oI,$constructor:()=>Y,$brand:()=>GI,$ZodXor:()=>fA,$ZodXID:()=>AA,$ZodVoid:()=>CA,$ZodUnknown:()=>HA,$ZodUnion:()=>jD,$ZodUndefined:()=>bA,$ZodUUID:()=>$A,$ZodURL:()=>DA,$ZodULID:()=>NA,$ZodType:()=>l,$ZodTuple:()=>mI,$ZodTransform:()=>lA,$ZodTemplateLiteral:()=>UO,$ZodSymbol:()=>rA,$ZodSuccess:()=>sA,$ZodStringFormat:()=>R_,$ZodString:()=>zg,$ZodSet:()=>nA,$ZodRegistry:()=>AP,$ZodRecord:()=>cA,$ZodRealError:()=>a_,$ZodReadonly:()=>DO,$ZodPromise:()=>jO,$ZodPreprocess:()=>gO,$ZodPrefault:()=>eA,$ZodPipe:()=>lI,$ZodOptional:()=>iI,$ZodObjectJIT:()=>uA,$ZodObject:()=>IG,$ZodNumberFormat:()=>VA,$ZodNumber:()=>nI,$ZodNullable:()=>oA,$ZodNull:()=>MA,$ZodNonOptional:()=>aA,$ZodNever:()=>kA,$ZodNanoID:()=>IA,$ZodNaN:()=>$O,$ZodMap:()=>hA,$ZodMAC:()=>RA,$ZodLiteral:()=>mA,$ZodLazy:()=>EO,$ZodKSUID:()=>OA,$ZodJWT:()=>qA,$ZodIntersection:()=>yA,$ZodISOTime:()=>LA,$ZodISODuration:()=>WA,$ZodISODateTime:()=>PA,$ZodISODate:()=>SA,$ZodIPv6:()=>zA,$ZodIPv4:()=>JA,$ZodGUID:()=>_A,$ZodFunction:()=>IO,$ZodFile:()=>iA,$ZodExactOptional:()=>tA,$ZodError:()=>$D,$ZodEnum:()=>dA,$ZodEncodeError:()=>Sg,$ZodEmoji:()=>UA,$ZodEmail:()=>gA,$ZodE164:()=>KA,$ZodDiscriminatedUnion:()=>xA,$ZodDefault:()=>pA,$ZodDate:()=>vA,$ZodCustomStringFormat:()=>BA,$ZodCustom:()=>NO,$ZodCodec:()=>ED,$ZodCheckUpperCase:()=>d2,$ZodCheckStringFormat:()=>C4,$ZodCheckStartsWith:()=>i2,$ZodCheckSizeEquals:()=>f2,$ZodCheckRegex:()=>h2,$ZodCheckProperty:()=>t2,$ZodCheckOverwrite:()=>p2,$ZodCheckNumberFormat:()=>C2,$ZodCheckMultipleOf:()=>k2,$ZodCheckMinSize:()=>u2,$ZodCheckMinLength:()=>y2,$ZodCheckMimeType:()=>o2,$ZodCheckMaxSize:()=>w2,$ZodCheckMaxLength:()=>x2,$ZodCheckLowerCase:()=>n2,$ZodCheckLessThan:()=>vI,$ZodCheckLengthEquals:()=>c2,$ZodCheckIncludes:()=>m2,$ZodCheckGreaterThan:()=>wI,$ZodCheckEndsWith:()=>l2,$ZodCheckBigIntFormat:()=>v2,$ZodCheck:()=>G_,$ZodCatch:()=>_O,$ZodCUID2:()=>EA,$ZodCUID:()=>jA,$ZodCIDRv6:()=>XA,$ZodCIDRv4:()=>GA,$ZodBoolean:()=>ID,$ZodBigIntFormat:()=>FA,$ZodBigInt:()=>dI,$ZodBase64URL:()=>TA,$ZodBase64:()=>QA,$ZodAsyncError:()=>f$,$ZodArray:()=>wA,$ZodAny:()=>ZA});var j$=w(()=>{h();CI();NP();KD();NX();OX();Lg();D2();_2();AO();uI();a2();LD();EX();QD()});var Y1={};k$(Y1,{uppercase:()=>Xg,trim:()=>Bg,toUpperCase:()=>Fg,toLowerCase:()=>Vg,startsWith:()=>Qg,slugify:()=>rg,size:()=>k6,regex:()=>Rg,property:()=>YD,positive:()=>zD,overwrite:()=>L$,normalize:()=>qg,nonpositive:()=>GD,nonnegative:()=>XD,negative:()=>RD,multipleOf:()=>j6,minSize:()=>T$,minLength:()=>x$,mime:()=>Kg,maxSize:()=>E6,maxLength:()=>C6,lte:()=>_$,lt:()=>Y$,lowercase:()=>Gg,length:()=>v6,includes:()=>Yg,gte:()=>x_,gt:()=>Q$,endsWith:()=>Tg});var Q1=w(()=>{j$()});var bg={};k$(bg,{time:()=>vS,duration:()=>wS,datetime:()=>kS,date:()=>CS,ZodISOTime:()=>VD,ZodISODuration:()=>FD,ZodISODateTime:()=>qD,ZodISODate:()=>BD});function kS(_){return LP(qD,_)}function CS(_){return WP(BD,_)}function vS(_){return JP(VD,_)}function wS(_){return zP(FD,_)}var qD,BD,VD,FD;var rD=w(()=>{j$();MD();qD=Y("ZodISODateTime",(_,$)=>{PA.init(_,$),L_.init(_,$)});BD=Y("ZodISODate",(_,$)=>{SA.init(_,$),L_.init(_,$)});VD=Y("ZodISOTime",(_,$)=>{LA.init(_,$),L_.init(_,$)});FD=Y("ZodISODuration",(_,$)=>{WA.init(_,$),L_.init(_,$)})});var PX=(_,$)=>{$D.init(_,$),_.name="ZodError",Object.defineProperties(_,{format:{value:(g)=>b4(_,g)},flatten:{value:(g)=>r4(_,g)},addIssue:{value:(g)=>{_.issues.push(g),_.message=JSON.stringify(_.issues,B4,2)}},addIssues:{value:(g)=>{_.issues.push(...g),_.message=JSON.stringify(_.issues,B4,2)}},isEmpty:{get(){return _.issues.length===0}}})},SX,l_;var uS=w(()=>{j$();j$();h();SX=Y("ZodError",PX),l_=Y("ZodError",PX,{Parent:Error})});var T1,K1,q1,B1,V1,F1,r1,b1,M1,Z1,H1,k1;var fS=w(()=>{j$();uS();T1=M4(l_),K1=Z4(l_),q1=H4(l_),B1=k4(l_),V1=BI(l_),F1=VI(l_),r1=FI(l_),b1=rI(l_),M1=bI(l_),Z1=MI(l_),H1=ZI(l_),k1=HI(l_)});var bD={};k$(bD,{xor:()=>bL,xid:()=>aS,void:()=>KL,uuidv7:()=>dS,uuidv6:()=>nS,uuidv4:()=>hS,uuid:()=>cS,url:()=>mS,unknown:()=>x6,union:()=>sD,undefined:()=>QL,ulid:()=>eS,uint64:()=>XL,uint32:()=>zL,tuple:()=>e1,transform:()=>$U,templateLiteral:()=>nL,symbol:()=>YL,superRefine:()=>Bj,success:()=>xL,stringbool:()=>eL,stringFormat:()=>AL,string:()=>x4,strictObject:()=>FL,set:()=>CL,refine:()=>qj,record:()=>a1,readonly:()=>Gj,promise:()=>dL,preprocess:()=>sL,prefault:()=>Oj,pipe:()=>HD,partialRecord:()=>ZL,optional:()=>c4,object:()=>VL,number:()=>v1,nullish:()=>fL,nullable:()=>h4,null:()=>y1,nonoptional:()=>Pj,never:()=>aD,nativeEnum:()=>vL,nanoid:()=>tS,nan:()=>yL,meta:()=>oL,map:()=>kL,mac:()=>$L,looseRecord:()=>HL,looseObject:()=>rL,literal:()=>wL,lazy:()=>Qj,ksuid:()=>sS,keyof:()=>BL,jwt:()=>NL,json:()=>aL,ipv6:()=>gL,ipv4:()=>_L,invertCodec:()=>hL,intersection:()=>o1,int64:()=>GL,int32:()=>JL,int:()=>ZD,instanceof:()=>pL,httpUrl:()=>iS,hostname:()=>OL,hex:()=>PL,hash:()=>SL,guid:()=>yS,function:()=>mL,float64:()=>WL,float32:()=>LL,file:()=>uL,exactOptional:()=>Ij,enum:()=>_U,emoji:()=>lS,email:()=>xS,e164:()=>EL,discriminatedUnion:()=>ML,describe:()=>tL,date:()=>qL,custom:()=>lL,cuid2:()=>pS,cuid:()=>oS,codec:()=>cL,cidrv6:()=>UL,cidrv4:()=>DL,check:()=>iL,catch:()=>Wj,boolean:()=>w1,bigint:()=>RL,base64url:()=>jL,base64:()=>IL,array:()=>m4,any:()=>TL,_function:()=>mL,_default:()=>Nj,_ZodString:()=>CD,ZodXor:()=>i1,ZodXID:()=>cD,ZodVoid:()=>d1,ZodUnknown:()=>h1,ZodUnion:()=>l4,ZodUndefined:()=>f1,ZodUUID:()=>K$,ZodURL:()=>n4,ZodULID:()=>yD,ZodType:()=>e,ZodTuple:()=>p1,ZodTransform:()=>Dj,ZodTemplateLiteral:()=>Xj,ZodSymbol:()=>u1,ZodSuccess:()=>Sj,ZodStringFormat:()=>L_,ZodString:()=>Hg,ZodSet:()=>_j,ZodRecord:()=>Mg,ZodReadonly:()=>Rj,ZodPromise:()=>Tj,ZodPreprocess:()=>zj,ZodPrefault:()=>Aj,ZodPipe:()=>t4,ZodOptional:()=>gU,ZodObject:()=>i4,ZodNumberFormat:()=>y6,ZodNumber:()=>Cg,ZodNullable:()=>jj,ZodNull:()=>x1,ZodNonOptional:()=>DU,ZodNever:()=>n1,ZodNanoID:()=>uD,ZodNaN:()=>Jj,ZodMap:()=>s1,ZodMAC:()=>C1,ZodLiteral:()=>$j,ZodLazy:()=>Yj,ZodKSUID:()=>hD,ZodJWT:()=>pD,ZodIntersection:()=>t1,ZodIPv6:()=>dD,ZodIPv4:()=>nD,ZodGUID:()=>y4,ZodFunction:()=>Kj,ZodFile:()=>gj,ZodExactOptional:()=>Uj,ZodEnum:()=>Zg,ZodEmoji:()=>wD,ZodEmail:()=>vD,ZodE164:()=>oD,ZodDiscriminatedUnion:()=>l1,ZodDefault:()=>Ej,ZodDate:()=>d4,ZodCustomStringFormat:()=>kg,ZodCustom:()=>p4,ZodCodec:()=>o4,ZodCatch:()=>Lj,ZodCUID2:()=>xD,ZodCUID:()=>fD,ZodCIDRv6:()=>iD,ZodCIDRv4:()=>mD,ZodBoolean:()=>vg,ZodBigIntFormat:()=>eD,ZodBigInt:()=>wg,ZodBase64URL:()=>tD,ZodBase64:()=>lD,ZodArray:()=>m1,ZodAny:()=>c1});function kD(_,$,g){let U=Object.getPrototypeOf(_),D=LX.get(U);if(!D)D=new Set,LX.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 E=j.bind(this);return Object.defineProperty(this,I,{configurable:!0,writable:!0,enumerable:!0,value:E}),E},set(E){Object.defineProperty(this,I,{configurable:!0,writable:!0,enumerable:!0,value:E})}})}}function x4(_){return OP(Hg,_)}function xS(_){return pI(vD,_)}function yS(_){return WD(y4,_)}function cS(_){return eI(K$,_)}function hS(_){return aI(K$,_)}function nS(_){return sI(K$,_)}function dS(_){return _1(K$,_)}function mS(_){return JD(n4,_)}function iS(_){return JD(n4,{protocol:s_.httpProtocol,hostname:s_.domain,...Z.normalizeParams(_)})}function lS(_){return $1(wD,_)}function tS(_){return g1(uD,_)}function oS(_){return D1(fD,_)}function pS(_){return U1(xD,_)}function eS(_){return I1(yD,_)}function aS(_){return j1(cD,_)}function sS(_){return E1(hD,_)}function _L(_){return N1(nD,_)}function $L(_){return SP(C1,_)}function gL(_){return A1(dD,_)}function DL(_){return O1(mD,_)}function UL(_){return P1(iD,_)}function IL(_){return S1(lD,_)}function jL(_){return L1(tD,_)}function EL(_){return W1(oD,_)}function NL(_){return J1(pD,_)}function AL(_,$,g={}){return u4(kg,_,$,g)}function OL(_){return u4(kg,"hostname",s_.hostname,_)}function PL(_){return u4(kg,"hex",s_.hex,_)}function SL(_,$){let g=$?.enc??"hex",U=`${_}_${g}`,D=s_[U];if(!D)throw Error(`Unrecognized hash format: ${U}`);return u4(kg,U,D,$)}function v1(_){return RP(Cg,_)}function ZD(_){return XP(y6,_)}function LL(_){return YP(y6,_)}function WL(_){return QP(y6,_)}function JL(_){return TP(y6,_)}function zL(_){return KP(y6,_)}function w1(_){return qP(vg,_)}function RL(_){return VP(wg,_)}function GL(_){return rP(eD,_)}function XL(_){return bP(eD,_)}function YL(_){return MP(u1,_)}function QL(_){return ZP(f1,_)}function y1(_){return HP(x1,_)}function TL(){return kP(c1)}function x6(){return CP(h1)}function aD(_){return vP(n1,_)}function KL(_){return wP(d1,_)}function qL(_){return uP(d4,_)}function m4(_,$){return yP(m1,_,$)}function BL(_){let $=_._zod.def.shape;return _U(Object.keys($))}function VL(_,$){let g={type:"object",shape:_??{},...Z.normalizeParams($)};return new i4(g)}function FL(_,$){return new i4({type:"object",shape:_,catchall:aD(),...Z.normalizeParams($)})}function rL(_,$){return new i4({type:"object",shape:_,catchall:x6(),...Z.normalizeParams($)})}function sD(_,$){return new l4({type:"union",options:_,...Z.normalizeParams($)})}function bL(_,$){return new i1({type:"union",options:_,inclusive:!1,...Z.normalizeParams($)})}function ML(_,$,g){return new l1({type:"union",options:$,discriminator:_,...Z.normalizeParams(g)})}function o1(_,$){return new t1({type:"intersection",left:_,right:$})}function e1(_,$,g){let U=$ instanceof l,D=U?g:$;return new p1({type:"tuple",items:_,rest:U?$:null,...Z.normalizeParams(D)})}function a1(_,$,g){if(!$||!$._zod)return new Mg({type:"record",keyType:x4(),valueType:_,...Z.normalizeParams($)});return new Mg({type:"record",keyType:_,valueType:$,...Z.normalizeParams(g)})}function ZL(_,$,g){let U=f_(_);return U._zod.values=void 0,new Mg({type:"record",keyType:U,valueType:$,...Z.normalizeParams(g)})}function HL(_,$,g){return new Mg({type:"record",keyType:_,valueType:$,mode:"loose",...Z.normalizeParams(g)})}function kL(_,$,g){return new s1({type:"map",keyType:_,valueType:$,...Z.normalizeParams(g)})}function CL(_,$){return new _j({type:"set",valueType:_,...Z.normalizeParams($)})}function _U(_,$){let g=Array.isArray(_)?Object.fromEntries(_.map((U)=>[U,U])):_;return new Zg({type:"enum",entries:g,...Z.normalizeParams($)})}function vL(_,$){return new Zg({type:"enum",entries:_,...Z.normalizeParams($)})}function wL(_,$){return new $j({type:"literal",values:Array.isArray(_)?_:[_],...Z.normalizeParams($)})}function uL(_){return cP(gj,_)}function $U(_){return new Dj({type:"transform",transform:_})}function c4(_){return new gU({type:"optional",innerType:_})}function Ij(_){return new Uj({type:"optional",innerType:_})}function h4(_){return new jj({type:"nullable",innerType:_})}function fL(_){return c4(h4(_))}function Nj(_,$){return new Ej({type:"default",innerType:_,get defaultValue(){return typeof $==="function"?$():Z.shallowClone($)}})}function Oj(_,$){return new Aj({type:"prefault",innerType:_,get defaultValue(){return typeof $==="function"?$():Z.shallowClone($)}})}function Pj(_,$){return new DU({type:"nonoptional",innerType:_,...Z.normalizeParams($)})}function xL(_){return new Sj({type:"success",innerType:_})}function Wj(_,$){return new Lj({type:"catch",innerType:_,catchValue:typeof $==="function"?$:()=>$})}function yL(_){return xP(Jj,_)}function HD(_,$){return new t4({type:"pipe",in:_,out:$})}function cL(_,$,g){return new o4({type:"pipe",in:_,out:$,transform:g.decode,reverseTransform:g.encode})}function hL(_){let $=_._zod.def;return new o4({type:"pipe",in:$.out,out:$.in,transform:$.reverseTransform,reverseTransform:$.transform})}function Gj(_){return new Rj({type:"readonly",innerType:_})}function nL(_,$){return new Xj({type:"template_literal",parts:_,...Z.normalizeParams($)})}function Qj(_){return new Yj({type:"lazy",getter:_})}function dL(_){return new Tj({type:"promise",innerType:_})}function mL(_){return new Kj({type:"function",input:Array.isArray(_?.input)?e1(_?.input):_?.input??m4(x6()),output:_?.output??x6()})}function iL(_){let $=new G_({check:"custom"});return $._zod.check=_,$}function lL(_,$){return hP(p4,_??(()=>!0),$)}function qj(_,$={}){return nP(p4,_,$)}function Bj(_,$){return dP(_,$)}function pL(_,$={}){let g=new p4({type:"custom",check:"custom",fn:(U)=>U instanceof _,abort:!0,...Z.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 aL(_){let $=Qj(()=>{return sD([x4(_),v1(),w1(),y1(),m4($),a1(x4(),$)])});return $}function sL(_,$){return new zj({type:"pipe",in:$U(_),out:$})}var LX,e,CD,Hg,L_,vD,y4,K$,n4,wD,uD,fD,xD,yD,cD,hD,nD,C1,dD,mD,iD,lD,tD,oD,pD,kg,Cg,y6,vg,wg,eD,u1,f1,x1,c1,h1,n1,d1,d4,m1,i4,l4,i1,l1,t1,p1,Mg,s1,_j,Zg,$j,gj,Dj,gU,Uj,jj,Ej,Aj,DU,Sj,Lj,Jj,t4,o4,zj,Rj,Xj,Yj,Tj,Kj,p4,tL,oL,eL=(..._)=>lP({Codec:o4,Boolean:vg,String:Hg},..._);var MD=w(()=>{j$();j$();KD();QD();Q1();rD();fS();LX=new WeakMap;e=Y("ZodType",(_,$)=>{return l.init(_,$),Object.assign(_["~standard"],{jsonSchema:{input:f4(_,"input"),output:f4(_,"output")}}),_.toJSONSchema=tP(_,{}),_.def=$,_.type=$.type,Object.defineProperty(_,"_def",{value:$}),_.parse=(g,U)=>T1(_,g,U,{callee:_.parse}),_.safeParse=(g,U)=>q1(_,g,U),_.parseAsync=async(g,U)=>K1(_,g,U,{callee:_.parseAsync}),_.safeParseAsync=async(g,U)=>B1(_,g,U),_.spa=_.safeParseAsync,_.encode=(g,U)=>V1(_,g,U),_.decode=(g,U)=>F1(_,g,U),_.encodeAsync=async(g,U)=>r1(_,g,U),_.decodeAsync=async(g,U)=>b1(_,g,U),_.safeEncode=(g,U)=>M1(_,g,U),_.safeDecode=(g,U)=>Z1(_,g,U),_.safeEncodeAsync=async(g,U)=>H1(_,g,U),_.safeDecodeAsync=async(g,U)=>k1(_,g,U),kD(_,"ZodType",{check(...g){let U=this.def;return this.clone(Z.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 f_(this,g,U)},brand(){return this},register(g,U){return g.add(this,U),this},refine(g,U){return this.check(qj(g,U))},superRefine(g,U){return this.check(Bj(g,U))},overwrite(g){return this.check(L$(g))},optional(){return c4(this)},exactOptional(){return Ij(this)},nullable(){return h4(this)},nullish(){return c4(h4(this))},nonoptional(g){return Pj(this,g)},array(){return m4(this)},or(g){return sD([this,g])},and(g){return o1(this,g)},transform(g){return HD(this,$U(g))},default(g){return Nj(this,g)},prefault(g){return Oj(this,g)},catch(g){return Wj(this,g)},pipe(g){return HD(this,g)},readonly(){return Gj(this)},describe(g){let U=this.clone();return v_.add(U,{description:g}),U},meta(...g){if(g.length===0)return v_.get(this);let U=this.clone();return v_.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 v_.get(_)?.description},configurable:!0}),_}),CD=Y("_ZodString",(_,$)=>{zg.init(_,$),e.init(_,$),_._zod.processJSONSchema=(U,D,I)=>oP(_,U,D,I);let g=_._zod.bag;_.format=g.format??null,_.minLength=g.minimum??null,_.maxLength=g.maximum??null,kD(_,"_ZodString",{regex(...U){return this.check(Rg(...U))},includes(...U){return this.check(Yg(...U))},startsWith(...U){return this.check(Qg(...U))},endsWith(...U){return this.check(Tg(...U))},min(...U){return this.check(x$(...U))},max(...U){return this.check(C6(...U))},length(...U){return this.check(v6(...U))},nonempty(...U){return this.check(x$(1,...U))},lowercase(U){return this.check(Gg(U))},uppercase(U){return this.check(Xg(U))},trim(){return this.check(Bg())},normalize(...U){return this.check(qg(...U))},toLowerCase(){return this.check(Vg())},toUpperCase(){return this.check(Fg())},slugify(){return this.check(rg())}})}),Hg=Y("ZodString",(_,$)=>{zg.init(_,$),CD.init(_,$),_.email=(g)=>_.check(pI(vD,g)),_.url=(g)=>_.check(JD(n4,g)),_.jwt=(g)=>_.check(J1(pD,g)),_.emoji=(g)=>_.check($1(wD,g)),_.guid=(g)=>_.check(WD(y4,g)),_.uuid=(g)=>_.check(eI(K$,g)),_.uuidv4=(g)=>_.check(aI(K$,g)),_.uuidv6=(g)=>_.check(sI(K$,g)),_.uuidv7=(g)=>_.check(_1(K$,g)),_.nanoid=(g)=>_.check(g1(uD,g)),_.guid=(g)=>_.check(WD(y4,g)),_.cuid=(g)=>_.check(D1(fD,g)),_.cuid2=(g)=>_.check(U1(xD,g)),_.ulid=(g)=>_.check(I1(yD,g)),_.base64=(g)=>_.check(S1(lD,g)),_.base64url=(g)=>_.check(L1(tD,g)),_.xid=(g)=>_.check(j1(cD,g)),_.ksuid=(g)=>_.check(E1(hD,g)),_.ipv4=(g)=>_.check(N1(nD,g)),_.ipv6=(g)=>_.check(A1(dD,g)),_.cidrv4=(g)=>_.check(O1(mD,g)),_.cidrv6=(g)=>_.check(P1(iD,g)),_.e164=(g)=>_.check(W1(oD,g)),_.datetime=(g)=>_.check(kS(g)),_.date=(g)=>_.check(CS(g)),_.time=(g)=>_.check(vS(g)),_.duration=(g)=>_.check(wS(g))});L_=Y("ZodStringFormat",(_,$)=>{R_.init(_,$),CD.init(_,$)}),vD=Y("ZodEmail",(_,$)=>{gA.init(_,$),L_.init(_,$)});y4=Y("ZodGUID",(_,$)=>{_A.init(_,$),L_.init(_,$)});K$=Y("ZodUUID",(_,$)=>{$A.init(_,$),L_.init(_,$)});n4=Y("ZodURL",(_,$)=>{DA.init(_,$),L_.init(_,$)});wD=Y("ZodEmoji",(_,$)=>{UA.init(_,$),L_.init(_,$)});uD=Y("ZodNanoID",(_,$)=>{IA.init(_,$),L_.init(_,$)});fD=Y("ZodCUID",(_,$)=>{jA.init(_,$),L_.init(_,$)});xD=Y("ZodCUID2",(_,$)=>{EA.init(_,$),L_.init(_,$)});yD=Y("ZodULID",(_,$)=>{NA.init(_,$),L_.init(_,$)});cD=Y("ZodXID",(_,$)=>{AA.init(_,$),L_.init(_,$)});hD=Y("ZodKSUID",(_,$)=>{OA.init(_,$),L_.init(_,$)});nD=Y("ZodIPv4",(_,$)=>{JA.init(_,$),L_.init(_,$)});C1=Y("ZodMAC",(_,$)=>{RA.init(_,$),L_.init(_,$)});dD=Y("ZodIPv6",(_,$)=>{zA.init(_,$),L_.init(_,$)});mD=Y("ZodCIDRv4",(_,$)=>{GA.init(_,$),L_.init(_,$)});iD=Y("ZodCIDRv6",(_,$)=>{XA.init(_,$),L_.init(_,$)});lD=Y("ZodBase64",(_,$)=>{QA.init(_,$),L_.init(_,$)});tD=Y("ZodBase64URL",(_,$)=>{TA.init(_,$),L_.init(_,$)});oD=Y("ZodE164",(_,$)=>{KA.init(_,$),L_.init(_,$)});pD=Y("ZodJWT",(_,$)=>{qA.init(_,$),L_.init(_,$)});kg=Y("ZodCustomStringFormat",(_,$)=>{BA.init(_,$),L_.init(_,$)});Cg=Y("ZodNumber",(_,$)=>{nI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(U,D,I)=>pP(_,U,D,I),kD(_,"ZodNumber",{gt(U,D){return this.check(Q$(U,D))},gte(U,D){return this.check(x_(U,D))},min(U,D){return this.check(x_(U,D))},lt(U,D){return this.check(Y$(U,D))},lte(U,D){return this.check(_$(U,D))},max(U,D){return this.check(_$(U,D))},int(U){return this.check(ZD(U))},safe(U){return this.check(ZD(U))},positive(U){return this.check(Q$(0,U))},nonnegative(U){return this.check(x_(0,U))},negative(U){return this.check(Y$(0,U))},nonpositive(U){return this.check(_$(0,U))},multipleOf(U,D){return this.check(j6(U,D))},step(U,D){return this.check(j6(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});y6=Y("ZodNumberFormat",(_,$)=>{VA.init(_,$),Cg.init(_,$)});vg=Y("ZodBoolean",(_,$)=>{ID.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>eP(_,g,U,D)});wg=Y("ZodBigInt",(_,$)=>{dI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(U,D,I)=>aP(_,U,D,I),_.gte=(U,D)=>_.check(x_(U,D)),_.min=(U,D)=>_.check(x_(U,D)),_.gt=(U,D)=>_.check(Q$(U,D)),_.gte=(U,D)=>_.check(x_(U,D)),_.min=(U,D)=>_.check(x_(U,D)),_.lt=(U,D)=>_.check(Y$(U,D)),_.lte=(U,D)=>_.check(_$(U,D)),_.max=(U,D)=>_.check(_$(U,D)),_.positive=(U)=>_.check(Q$(BigInt(0),U)),_.negative=(U)=>_.check(Y$(BigInt(0),U)),_.nonpositive=(U)=>_.check(_$(BigInt(0),U)),_.nonnegative=(U)=>_.check(x_(BigInt(0),U)),_.multipleOf=(U,D)=>_.check(j6(U,D));let g=_._zod.bag;_.minValue=g.minimum??null,_.maxValue=g.maximum??null,_.format=g.format??null});eD=Y("ZodBigIntFormat",(_,$)=>{FA.init(_,$),wg.init(_,$)});u1=Y("ZodSymbol",(_,$)=>{rA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>sP(_,g,U,D)});f1=Y("ZodUndefined",(_,$)=>{bA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>$S(_,g,U,D)});x1=Y("ZodNull",(_,$)=>{MA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>_S(_,g,U,D)});c1=Y("ZodAny",(_,$)=>{ZA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>US(_,g,U,D)});h1=Y("ZodUnknown",(_,$)=>{HA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>IS(_,g,U,D)});n1=Y("ZodNever",(_,$)=>{kA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>DS(_,g,U,D)});d1=Y("ZodVoid",(_,$)=>{CA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>gS(_,g,U,D)});d4=Y("ZodDate",(_,$)=>{vA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(U,D,I)=>jS(_,U,D,I),_.min=(U,D)=>_.check(x_(U,D)),_.max=(U,D)=>_.check(_$(U,D));let g=_._zod.bag;_.minDate=g.minimum?new Date(g.minimum):null,_.maxDate=g.maximum?new Date(g.maximum):null});m1=Y("ZodArray",(_,$)=>{wA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>GS(_,g,U,D),_.element=$.element,kD(_,"ZodArray",{min(g,U){return this.check(x$(g,U))},nonempty(g){return this.check(x$(1,g))},max(g,U){return this.check(C6(g,U))},length(g,U){return this.check(v6(g,U))},unwrap(){return this.element}})});i4=Y("ZodObject",(_,$)=>{uA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>XS(_,g,U,D),Z.defineLazy(_,"shape",()=>{return $.shape}),kD(_,"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:x6()})},loose(){return this.clone({...this._zod.def,catchall:x6()})},strict(){return this.clone({...this._zod.def,catchall:aD()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(g){return Z.extend(this,g)},safeExtend(g){return Z.safeExtend(this,g)},merge(g){return Z.merge(this,g)},pick(g){return Z.pick(this,g)},omit(g){return Z.omit(this,g)},partial(...g){return Z.partial(gU,this,g[0])},required(...g){return Z.required(DU,this,g[0])}})});l4=Y("ZodUnion",(_,$)=>{jD.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>G1(_,g,U,D),_.options=$.options});i1=Y("ZodXor",(_,$)=>{l4.init(_,$),fA.init(_,$),_._zod.processJSONSchema=(g,U,D)=>G1(_,g,U,D),_.options=$.options});l1=Y("ZodDiscriminatedUnion",(_,$)=>{l4.init(_,$),xA.init(_,$)});t1=Y("ZodIntersection",(_,$)=>{yA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>YS(_,g,U,D)});p1=Y("ZodTuple",(_,$)=>{mI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>QS(_,g,U,D),_.rest=(g)=>_.clone({..._._zod.def,rest:g})});Mg=Y("ZodRecord",(_,$)=>{cA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>TS(_,g,U,D),_.keyType=$.keyType,_.valueType=$.valueType});s1=Y("ZodMap",(_,$)=>{hA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>zS(_,g,U,D),_.keyType=$.keyType,_.valueType=$.valueType,_.min=(...g)=>_.check(T$(...g)),_.nonempty=(g)=>_.check(T$(1,g)),_.max=(...g)=>_.check(E6(...g)),_.size=(...g)=>_.check(k6(...g))});_j=Y("ZodSet",(_,$)=>{nA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>RS(_,g,U,D),_.min=(...g)=>_.check(T$(...g)),_.nonempty=(g)=>_.check(T$(1,g)),_.max=(...g)=>_.check(E6(...g)),_.size=(...g)=>_.check(k6(...g))});Zg=Y("ZodEnum",(_,$)=>{dA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(U,D,I)=>ES(_,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 Zg({...$,checks:[],...Z.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 Zg({...$,checks:[],...Z.normalizeParams(D),entries:I})}});$j=Y("ZodLiteral",(_,$)=>{mA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>NS(_,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]}})});gj=Y("ZodFile",(_,$)=>{iA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>PS(_,g,U,D),_.min=(g,U)=>_.check(T$(g,U)),_.max=(g,U)=>_.check(E6(g,U)),_.mime=(g,U)=>_.check(Kg(Array.isArray(g)?g:[g],U))});Dj=Y("ZodTransform",(_,$)=>{lA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>JS(_,g,U,D),_._zod.parse=(g,U)=>{if(U.direction==="backward")throw new Sg(_.constructor.name);g.addIssue=(I)=>{if(typeof I==="string")g.issues.push(Z.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(Z.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",(_,$)=>{iI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>X1(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Uj=Y("ZodExactOptional",(_,$)=>{tA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>X1(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});jj=Y("ZodNullable",(_,$)=>{oA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>KS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Ej=Y("ZodDefault",(_,$)=>{pA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>BS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType,_.removeDefault=_.unwrap});Aj=Y("ZodPrefault",(_,$)=>{eA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>VS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});DU=Y("ZodNonOptional",(_,$)=>{aA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>qS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Sj=Y("ZodSuccess",(_,$)=>{sA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>SS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Lj=Y("ZodCatch",(_,$)=>{_O.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>FS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType,_.removeCatch=_.unwrap});Jj=Y("ZodNaN",(_,$)=>{$O.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>AS(_,g,U,D)});t4=Y("ZodPipe",(_,$)=>{lI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>rS(_,g,U,D),_.in=$.in,_.out=$.out});o4=Y("ZodCodec",(_,$)=>{t4.init(_,$),ED.init(_,$)});zj=Y("ZodPreprocess",(_,$)=>{t4.init(_,$),gO.init(_,$)}),Rj=Y("ZodReadonly",(_,$)=>{DO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>bS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Xj=Y("ZodTemplateLiteral",(_,$)=>{UO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>OS(_,g,U,D)});Yj=Y("ZodLazy",(_,$)=>{EO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>ZS(_,g,U,D),_.unwrap=()=>_._zod.def.getter()});Tj=Y("ZodPromise",(_,$)=>{jO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>MS(_,g,U,D),_.unwrap=()=>_._zod.def.innerType});Kj=Y("ZodFunction",(_,$)=>{IO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>WS(_,g,U,D)});p4=Y("ZodCustom",(_,$)=>{NO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(g,U,D)=>LS(_,g,U,D)});tL=mP,oL=iP});function JX(_){F_({customError:_})}function zX(){return F_().customError}var WX,Vj;var RX=w(()=>{j$();WX={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(_){})(Vj||(Vj={}))});function xF(_,$){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 yF(_,$){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 GX(_,$){if(_.not!==void 0){if(typeof _.not==="object"&&Object.keys(_.not).length===0)return u.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 u.lazy(()=>{if(!$.refs.has(D))throw Error(`Circular reference not resolved: ${D}`);return $.refs.get(D)});$.processing.add(D);let I=yF(D,$),j=y_(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 u.null();if(D.length===0)return u.never();if(D.length===1)return u.literal(D[0]);if(D.every((j)=>typeof j==="string"))return u.enum(D);let I=D.map((j)=>u.literal(j));if(I.length<2)return I[0];return u.union([I[0],I[1],...I.slice(2)])}if(_.const!==void 0)return u.literal(_.const);let g=_.type;if(Array.isArray(g)){let D=g.map((I)=>{let j={..._,type:I};return GX(j,$)});if(D.length===0)return u.never();if(D.length===1)return D[0];return u.union(D)}if(!g)return u.any();let U;switch(g){case"string":{let D=u.string();if(_.format){let I=_.format;if(I==="email")D=D.check(u.email());else if(I==="uri"||I==="uri-reference")D=D.check(u.url());else if(I==="uuid"||I==="guid")D=D.check(u.uuid());else if(I==="date-time")D=D.check(u.iso.datetime());else if(I==="date")D=D.check(u.iso.date());else if(I==="time")D=D.check(u.iso.time());else if(I==="duration")D=D.check(u.iso.duration());else if(I==="ipv4")D=D.check(u.ipv4());else if(I==="ipv6")D=D.check(u.ipv6());else if(I==="mac")D=D.check(u.mac());else if(I==="cidr")D=D.check(u.cidrv4());else if(I==="cidr-v6")D=D.check(u.cidrv6());else if(I==="base64")D=D.check(u.base64());else if(I==="base64url")D=D.check(u.base64url());else if(I==="e164")D=D.check(u.e164());else if(I==="jwt")D=D.check(u.jwt());else if(I==="emoji")D=D.check(u.emoji());else if(I==="nanoid")D=D.check(u.nanoid());else if(I==="cuid")D=D.check(u.cuid());else if(I==="cuid2")D=D.check(u.cuid2());else if(I==="ulid")D=D.check(u.ulid());else if(I==="xid")D=D.check(u.xid());else if(I==="ksuid")D=D.check(u.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"?u.number().int():u.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=u.boolean();break}case"null":{U=u.null();break}case"object":{let D={},I=_.properties||{},j=new Set(_.required||[]);for(let[A,O]of Object.entries(I)){let P=y_(O,$);D[A]=j.has(A)?P:P.optional()}if(_.propertyNames){let A=y_(_.propertyNames,$),O=_.additionalProperties&&typeof _.additionalProperties==="object"?y_(_.additionalProperties,$):u.any();if(Object.keys(D).length===0){U=u.record(A,O);break}let P=u.object(D).passthrough(),W=u.looseRecord(A,O);U=u.intersection(P,W);break}if(_.patternProperties){let A=_.patternProperties,O=Object.keys(A),P=[];for(let z of O){let S=y_(A[z],$),L=u.string().regex(new RegExp(z));P.push(u.looseRecord(L,S))}let W=[];if(Object.keys(D).length>0)W.push(u.object(D).passthrough());if(W.push(...P),W.length===0)U=u.object({}).passthrough();else if(W.length===1)U=W[0];else{let z=u.intersection(W[0],W[1]);for(let S=2;Sy_(A,$)),E=I&&typeof I==="object"&&!Array.isArray(I)?y_(I,$):void 0;if(E)U=u.tuple(j).rest(E);else U=u.tuple(j);if(typeof _.minItems==="number")U=U.check(u.minLength(_.minItems));if(typeof _.maxItems==="number")U=U.check(u.maxLength(_.maxItems))}else if(Array.isArray(I)){let j=I.map((A)=>y_(A,$)),E=_.additionalItems&&typeof _.additionalItems==="object"?y_(_.additionalItems,$):void 0;if(E)U=u.tuple(j).rest(E);else U=u.tuple(j);if(typeof _.minItems==="number")U=U.check(u.minLength(_.minItems));if(typeof _.maxItems==="number")U=U.check(u.maxLength(_.maxItems))}else if(I!==void 0){let j=y_(I,$),E=u.array(j);if(typeof _.minItems==="number")E=E.min(_.minItems);if(typeof _.maxItems==="number")E=E.max(_.maxItems);U=E}else U=u.array(u.any());break}default:throw Error(`Unsupported type: ${g}`)}return U}function y_(_,$){if(typeof _==="boolean")return _?u.any():u.never();let g=GX(_,$),U=_.type||_.enum!==void 0||_.const!==void 0;if(_.anyOf&&Array.isArray(_.anyOf)){let E=_.anyOf.map((O)=>y_(O,$)),A=u.union(E);g=U?u.intersection(g,A):A}if(_.oneOf&&Array.isArray(_.oneOf)){let E=_.oneOf.map((O)=>y_(O,$)),A=u.xor(E);g=U?u.intersection(g,A):A}if(_.allOf&&Array.isArray(_.allOf))if(_.allOf.length===0)g=U?g:u.any();else{let E=U?g:y_(_.allOf[0],$),A=U?0:1;for(let O=A;O<_.allOf.length;O++)E=u.intersection(E,y_(_.allOf[O],$));g=E}if(_.nullable===!0&&$.version==="openapi-3.0")g=u.nullable(g);if(_.readOnly===!0)g=u.readonly(g);if(_.default!==void 0)g=g.default(_.default);let D={},I=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let E of I)if(E in _)D[E]=_[E];let j=["contentEncoding","contentMediaType","contentSchema"];for(let E of j)if(E in _)D[E]=_[E];for(let E of Object.keys(_))if(!fF.has(E))D[E]=_[E];if(Object.keys(D).length>0)$.registry.add(g,D);if(_.description)g=g.describe(_.description);return g}function _W(_,$){if(typeof _==="boolean")return _?u.any():u.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=xF(g,$?.defaultTarget),D=g.$defs||g.definitions||{},I={version:U,defs:D,refs:new Map,processing:new Set,rootSchema:g,registry:$?.registry??v_};return y_(g,I)}var u,fF;var XX=w(()=>{LD();Q1();rD();MD();u={...bD,...Y1,iso:bg},fF=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 Fj={};k$(Fj,{string:()=>cF,number:()=>hF,date:()=>mF,boolean:()=>nF,bigint:()=>dF});function cF(_){return PP(Hg,_)}function hF(_){return GP(Cg,_)}function nF(_){return BP(vg,_)}function dF(_){return FP(wg,_)}function mF(_){return fP(d4,_)}var YX=w(()=>{j$();MD()});var rj={};k$(rj,{xor:()=>bL,xid:()=>aS,void:()=>KL,uuidv7:()=>dS,uuidv6:()=>nS,uuidv4:()=>hS,uuid:()=>cS,util:()=>Z,url:()=>mS,uppercase:()=>Xg,unknown:()=>x6,union:()=>sD,undefined:()=>QL,ulid:()=>eS,uint64:()=>XL,uint32:()=>zL,tuple:()=>e1,trim:()=>Bg,treeifyError:()=>QI,transform:()=>$U,toUpperCase:()=>Fg,toLowerCase:()=>Vg,toJSONSchema:()=>TD,templateLiteral:()=>nL,symbol:()=>YL,superRefine:()=>Bj,success:()=>xL,stringbool:()=>eL,stringFormat:()=>AL,string:()=>x4,strictObject:()=>FL,startsWith:()=>Qg,slugify:()=>rg,size:()=>k6,setErrorMap:()=>JX,set:()=>CL,safeParseAsync:()=>B1,safeParse:()=>q1,safeEncodeAsync:()=>H1,safeEncode:()=>M1,safeDecodeAsync:()=>k1,safeDecode:()=>Z1,registry:()=>SD,regexes:()=>s_,regex:()=>Rg,refine:()=>qj,record:()=>a1,readonly:()=>Gj,property:()=>YD,promise:()=>dL,prettifyError:()=>TI,preprocess:()=>sL,prefault:()=>Oj,positive:()=>zD,pipe:()=>HD,partialRecord:()=>ZL,parseAsync:()=>K1,parse:()=>T1,overwrite:()=>L$,optional:()=>c4,object:()=>VL,number:()=>v1,nullish:()=>fL,nullable:()=>h4,null:()=>y1,normalize:()=>qg,nonpositive:()=>GD,nonoptional:()=>Pj,nonnegative:()=>XD,never:()=>aD,negative:()=>RD,nativeEnum:()=>vL,nanoid:()=>tS,nan:()=>yL,multipleOf:()=>j6,minSize:()=>T$,minLength:()=>x$,mime:()=>Kg,meta:()=>oL,maxSize:()=>E6,maxLength:()=>C6,map:()=>kL,mac:()=>$L,lte:()=>_$,lt:()=>Y$,lowercase:()=>Gg,looseRecord:()=>HL,looseObject:()=>rL,locales:()=>w4,literal:()=>wL,length:()=>v6,lazy:()=>Qj,ksuid:()=>sS,keyof:()=>BL,jwt:()=>NL,json:()=>aL,iso:()=>bg,ipv6:()=>gL,ipv4:()=>_L,invertCodec:()=>hL,intersection:()=>o1,int64:()=>GL,int32:()=>JL,int:()=>ZD,instanceof:()=>pL,includes:()=>Yg,httpUrl:()=>iS,hostname:()=>OL,hex:()=>PL,hash:()=>SL,guid:()=>yS,gte:()=>x_,gt:()=>Q$,globalRegistry:()=>v_,getErrorMap:()=>zX,function:()=>mL,fromJSONSchema:()=>_W,formatError:()=>b4,float64:()=>WL,float32:()=>LL,flattenError:()=>r4,file:()=>uL,exactOptional:()=>Ij,enum:()=>_U,endsWith:()=>Tg,encodeAsync:()=>r1,encode:()=>V1,emoji:()=>lS,email:()=>xS,e164:()=>EL,discriminatedUnion:()=>ML,describe:()=>tL,decodeAsync:()=>b1,decode:()=>F1,date:()=>qL,custom:()=>lL,cuid2:()=>pS,cuid:()=>oS,core:()=>y$,config:()=>F_,coerce:()=>Fj,codec:()=>cL,clone:()=>f_,cidrv6:()=>UL,cidrv4:()=>DL,check:()=>iL,catch:()=>Wj,boolean:()=>w1,bigint:()=>RL,base64url:()=>jL,base64:()=>IL,array:()=>m4,any:()=>TL,_function:()=>mL,_default:()=>Nj,_ZodString:()=>CD,ZodXor:()=>i1,ZodXID:()=>cD,ZodVoid:()=>d1,ZodUnknown:()=>h1,ZodUnion:()=>l4,ZodUndefined:()=>f1,ZodUUID:()=>K$,ZodURL:()=>n4,ZodULID:()=>yD,ZodType:()=>e,ZodTuple:()=>p1,ZodTransform:()=>Dj,ZodTemplateLiteral:()=>Xj,ZodSymbol:()=>u1,ZodSuccess:()=>Sj,ZodStringFormat:()=>L_,ZodString:()=>Hg,ZodSet:()=>_j,ZodRecord:()=>Mg,ZodRealError:()=>l_,ZodReadonly:()=>Rj,ZodPromise:()=>Tj,ZodPreprocess:()=>zj,ZodPrefault:()=>Aj,ZodPipe:()=>t4,ZodOptional:()=>gU,ZodObject:()=>i4,ZodNumberFormat:()=>y6,ZodNumber:()=>Cg,ZodNullable:()=>jj,ZodNull:()=>x1,ZodNonOptional:()=>DU,ZodNever:()=>n1,ZodNanoID:()=>uD,ZodNaN:()=>Jj,ZodMap:()=>s1,ZodMAC:()=>C1,ZodLiteral:()=>$j,ZodLazy:()=>Yj,ZodKSUID:()=>hD,ZodJWT:()=>pD,ZodIssueCode:()=>WX,ZodIntersection:()=>t1,ZodISOTime:()=>VD,ZodISODuration:()=>FD,ZodISODateTime:()=>qD,ZodISODate:()=>BD,ZodIPv6:()=>dD,ZodIPv4:()=>nD,ZodGUID:()=>y4,ZodFunction:()=>Kj,ZodFirstPartyTypeKind:()=>Vj,ZodFile:()=>gj,ZodExactOptional:()=>Uj,ZodError:()=>SX,ZodEnum:()=>Zg,ZodEmoji:()=>wD,ZodEmail:()=>vD,ZodE164:()=>oD,ZodDiscriminatedUnion:()=>l1,ZodDefault:()=>Ej,ZodDate:()=>d4,ZodCustomStringFormat:()=>kg,ZodCustom:()=>p4,ZodCodec:()=>o4,ZodCatch:()=>Lj,ZodCUID2:()=>xD,ZodCUID:()=>fD,ZodCIDRv6:()=>iD,ZodCIDRv4:()=>mD,ZodBoolean:()=>vg,ZodBigIntFormat:()=>eD,ZodBigInt:()=>wg,ZodBase64URL:()=>tD,ZodBase64:()=>lD,ZodArray:()=>m1,ZodAny:()=>c1,TimePrecision:()=>z1,NEVER:()=>RI,$output:()=>tI,$input:()=>oI,$brand:()=>GI});var $W=w(()=>{j$();j$();XO();j$();KD();XX();NP();rD();rD();YX();MD();Q1();uS();fS();RX();F_(ND())});var QX={};k$(QX,{z:()=>rj,xor:()=>bL,xid:()=>aS,void:()=>KL,uuidv7:()=>dS,uuidv6:()=>nS,uuidv4:()=>hS,uuid:()=>cS,util:()=>Z,url:()=>mS,uppercase:()=>Xg,unknown:()=>x6,union:()=>sD,undefined:()=>QL,ulid:()=>eS,uint64:()=>XL,uint32:()=>zL,tuple:()=>e1,trim:()=>Bg,treeifyError:()=>QI,transform:()=>$U,toUpperCase:()=>Fg,toLowerCase:()=>Vg,toJSONSchema:()=>TD,templateLiteral:()=>nL,symbol:()=>YL,superRefine:()=>Bj,success:()=>xL,stringbool:()=>eL,stringFormat:()=>AL,string:()=>x4,strictObject:()=>FL,startsWith:()=>Qg,slugify:()=>rg,size:()=>k6,setErrorMap:()=>JX,set:()=>CL,safeParseAsync:()=>B1,safeParse:()=>q1,safeEncodeAsync:()=>H1,safeEncode:()=>M1,safeDecodeAsync:()=>k1,safeDecode:()=>Z1,registry:()=>SD,regexes:()=>s_,regex:()=>Rg,refine:()=>qj,record:()=>a1,readonly:()=>Gj,property:()=>YD,promise:()=>dL,prettifyError:()=>TI,preprocess:()=>sL,prefault:()=>Oj,positive:()=>zD,pipe:()=>HD,partialRecord:()=>ZL,parseAsync:()=>K1,parse:()=>T1,overwrite:()=>L$,optional:()=>c4,object:()=>VL,number:()=>v1,nullish:()=>fL,nullable:()=>h4,null:()=>y1,normalize:()=>qg,nonpositive:()=>GD,nonoptional:()=>Pj,nonnegative:()=>XD,never:()=>aD,negative:()=>RD,nativeEnum:()=>vL,nanoid:()=>tS,nan:()=>yL,multipleOf:()=>j6,minSize:()=>T$,minLength:()=>x$,mime:()=>Kg,meta:()=>oL,maxSize:()=>E6,maxLength:()=>C6,map:()=>kL,mac:()=>$L,lte:()=>_$,lt:()=>Y$,lowercase:()=>Gg,looseRecord:()=>HL,looseObject:()=>rL,locales:()=>w4,literal:()=>wL,length:()=>v6,lazy:()=>Qj,ksuid:()=>sS,keyof:()=>BL,jwt:()=>NL,json:()=>aL,iso:()=>bg,ipv6:()=>gL,ipv4:()=>_L,invertCodec:()=>hL,intersection:()=>o1,int64:()=>GL,int32:()=>JL,int:()=>ZD,instanceof:()=>pL,includes:()=>Yg,httpUrl:()=>iS,hostname:()=>OL,hex:()=>PL,hash:()=>SL,guid:()=>yS,gte:()=>x_,gt:()=>Q$,globalRegistry:()=>v_,getErrorMap:()=>zX,function:()=>mL,fromJSONSchema:()=>_W,formatError:()=>b4,float64:()=>WL,float32:()=>LL,flattenError:()=>r4,file:()=>uL,exactOptional:()=>Ij,enum:()=>_U,endsWith:()=>Tg,encodeAsync:()=>r1,encode:()=>V1,emoji:()=>lS,email:()=>xS,e164:()=>EL,discriminatedUnion:()=>ML,describe:()=>tL,default:()=>iF,decodeAsync:()=>b1,decode:()=>F1,date:()=>qL,custom:()=>lL,cuid2:()=>pS,cuid:()=>oS,core:()=>y$,config:()=>F_,coerce:()=>Fj,codec:()=>cL,clone:()=>f_,cidrv6:()=>UL,cidrv4:()=>DL,check:()=>iL,catch:()=>Wj,boolean:()=>w1,bigint:()=>RL,base64url:()=>jL,base64:()=>IL,array:()=>m4,any:()=>TL,_function:()=>mL,_default:()=>Nj,_ZodString:()=>CD,ZodXor:()=>i1,ZodXID:()=>cD,ZodVoid:()=>d1,ZodUnknown:()=>h1,ZodUnion:()=>l4,ZodUndefined:()=>f1,ZodUUID:()=>K$,ZodURL:()=>n4,ZodULID:()=>yD,ZodType:()=>e,ZodTuple:()=>p1,ZodTransform:()=>Dj,ZodTemplateLiteral:()=>Xj,ZodSymbol:()=>u1,ZodSuccess:()=>Sj,ZodStringFormat:()=>L_,ZodString:()=>Hg,ZodSet:()=>_j,ZodRecord:()=>Mg,ZodRealError:()=>l_,ZodReadonly:()=>Rj,ZodPromise:()=>Tj,ZodPreprocess:()=>zj,ZodPrefault:()=>Aj,ZodPipe:()=>t4,ZodOptional:()=>gU,ZodObject:()=>i4,ZodNumberFormat:()=>y6,ZodNumber:()=>Cg,ZodNullable:()=>jj,ZodNull:()=>x1,ZodNonOptional:()=>DU,ZodNever:()=>n1,ZodNanoID:()=>uD,ZodNaN:()=>Jj,ZodMap:()=>s1,ZodMAC:()=>C1,ZodLiteral:()=>$j,ZodLazy:()=>Yj,ZodKSUID:()=>hD,ZodJWT:()=>pD,ZodIssueCode:()=>WX,ZodIntersection:()=>t1,ZodISOTime:()=>VD,ZodISODuration:()=>FD,ZodISODateTime:()=>qD,ZodISODate:()=>BD,ZodIPv6:()=>dD,ZodIPv4:()=>nD,ZodGUID:()=>y4,ZodFunction:()=>Kj,ZodFirstPartyTypeKind:()=>Vj,ZodFile:()=>gj,ZodExactOptional:()=>Uj,ZodError:()=>SX,ZodEnum:()=>Zg,ZodEmoji:()=>wD,ZodEmail:()=>vD,ZodE164:()=>oD,ZodDiscriminatedUnion:()=>l1,ZodDefault:()=>Ej,ZodDate:()=>d4,ZodCustomStringFormat:()=>kg,ZodCustom:()=>p4,ZodCodec:()=>o4,ZodCatch:()=>Lj,ZodCUID2:()=>xD,ZodCUID:()=>fD,ZodCIDRv6:()=>iD,ZodCIDRv4:()=>mD,ZodBoolean:()=>vg,ZodBigIntFormat:()=>eD,ZodBigInt:()=>wg,ZodBase64URL:()=>tD,ZodBase64:()=>lD,ZodArray:()=>m1,ZodAny:()=>c1,TimePrecision:()=>z1,NEVER:()=>RI,$output:()=>tI,$input:()=>oI,$brand:()=>GI});var iF;var TX=w(()=>{$W();$W();iF=rj});var qU=a6((fC)=>{class $J 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 A8 extends $J{constructor(_){super(1,"commander.invalidArgument",_);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}fC.CommanderError=$J;fC.InvalidArgumentError=A8});var JE=a6((nC)=>{var{InvalidArgumentError:cC}=qU();class O8{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 cC(`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 hC(_){let $=_.name()+(_.variadic===!0?"...":"");return _.required?"<"+$+">":"["+$+"]"}nC.Argument=O8;nC.humanReadableArgName=hC});var gJ=a6((lC)=>{var{humanReadableArgName:iC}=JE();class P8{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)=>iC(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(P,W){return $.formatItem(P,g,W,$)}let I=[`${$.styleTitle("Usage:")} ${$.styleUsage($.commandUsage(_))}`,""],j=$.commandDescription(_);if(j.length>0)I=I.concat([$.boxWrap($.styleCommandDescription(j),U),""]);let E=$.visibleArguments(_).map((P)=>{return D($.styleArgumentTerm($.argumentTerm(P)),$.styleArgumentDescription($.argumentDescription(P)))});if(E.length>0)I=I.concat([$.styleTitle("Arguments:"),...E,""]);let A=$.visibleOptions(_).map((P)=>{return D($.styleOptionTerm($.optionTerm(P)),$.styleOptionDescription($.optionDescription(P)))});if(A.length>0)I=I.concat([$.styleTitle("Options:"),...A,""]);if($.showGlobalOptions){let P=$.visibleGlobalOptions(_).map((W)=>{return D($.styleOptionTerm($.optionTerm(W)),$.styleOptionDescription($.optionDescription(W)))});if(P.length>0)I=I.concat([$.styleTitle("Global Options:"),...P,""])}let O=$.visibleCommands(_).map((P)=>{return D($.styleSubcommandTerm($.subcommandTerm(P)),$.styleSubcommandDescription($.subcommandDescription(P)))});if(O.length>0)I=I.concat([$.styleTitle("Commands:"),...O,""]);return I.join(` -`)}displayWidth(_){return S8(_).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(_)),E=2,O=(this.helpWidth??80)-$-E-2,P;if(O{let j=I.match(U);if(j===null){D.push("");return}let E=[j.shift()],A=this.displayWidth(E[0]);j.forEach((O)=>{let P=this.displayWidth(O);if(A+P<=$){E.push(O),A+=P;return}D.push(E.join(""));let W=O.trimStart();E=[W],A=this.displayWidth(W)}),D.push(E.join(""))}),D.join(` -`)}}function S8(_){let $=/\x1b\[\d*(;\d*)*m/g;return _.replace($,"")}lC.Help=P8;lC.stripColor=S8});var DJ=a6((aC)=>{var{InvalidArgumentError:pC}=qU();class W8{constructor(_,$){this.flags=_,this.description=$||"",this.required=_.includes("<"),this.optional=_.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(_),this.mandatory=!1;let g=eC(_);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 pC(`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 L8(this.name().replace(/^no-/,""));return L8(this.name())}is(_){return this.short===_||this.long===_}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class J8{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 L8(_){return _.split("-").reduce(($,g)=>{return $+g[0].toUpperCase()+g.slice(1)})}function eC(_){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],E=`option creation failed due to '${j}' in option flags '${_}'`;if(/^-[^-][^-]/.test(j))throw Error(`${E} +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]){E(j);continue}if(_.external){let O=_.external.registry.get(j[0])?.id;if($!==j[0]&&O){E(j);continue}}if(_.metadataRegistry.get(j[0])?.id){E(j);continue}if(N.cycle){E(j);continue}if(N.count>1){if(_.reused==="ref"){E(j);continue}}}}function c6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let I=(N)=>{let A=_.seen.get(N);if(A.ref===null)return;let O=A.def??A.schema,L={...O},J=A.ref;if(A.ref=null,J){I(J);let z=_.seen.get(J),S=z.schema;if(S.$ref&&(_.target==="draft-07"||_.target==="draft-04"||_.target==="openapi-3.0"))O.allOf=O.allOf??[],O.allOf.push(S);else Object.assign(O,S);if(Object.assign(O,L),N._zod.parent===J)for(let X in O){if(X==="$ref"||X==="allOf")continue;if(!(X in L))delete O[X]}if(S.$ref&&z.def)for(let X in O){if(X==="$ref"||X==="allOf")continue;if(X in z.def&&JSON.stringify(O[X])===JSON.stringify(z.def[X]))delete O[X]}}let P=N._zod.parent;if(P&&P!==J){I(P);let z=_.seen.get(P);if(z?.schema.$ref){if(O.$ref=z.schema.$ref,z.def)for(let S in O){if(S==="$ref"||S==="allOf")continue;if(S in z.def&&JSON.stringify(O[S])===JSON.stringify(z.def[S]))delete O[S]}}}_.override({zodSchema:N,jsonSchema:O,path:A.path??[]})};for(let N of[..._.seen.entries()].reverse())I(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 E=_.metadataRegistry.get($)?.id;if(E!==void 0&&U.id===E)delete U.id;let j=_.external?.defs??{};for(let N of _.seen.entries()){let A=N[1];if(A.def&&A.defId){if(A.def.id===A.defId)delete A.def.id;j[A.defId]=A.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:n0($,"input",_.processors),output:n0($,"output",_.processors)}},enumerable:!1,writable:!1}),N}catch(N){throw Error("Error converting schema to JSON.")}}function p_(_,$){let D=$??{seen:new Set};if(D.seen.has(_))return!1;D.seen.add(_);let I=_._zod.def;if(I.type==="transform")return!0;if(I.type==="array")return p_(I.element,D);if(I.type==="set")return p_(I.valueType,D);if(I.type==="lazy")return p_(I.getter(),D);if(I.type==="promise"||I.type==="optional"||I.type==="nonoptional"||I.type==="nullable"||I.type==="readonly"||I.type==="default"||I.type==="prefault")return p_(I.innerType,D);if(I.type==="intersection")return p_(I.left,D)||p_(I.right,D);if(I.type==="record"||I.type==="map")return p_(I.keyType,D)||p_(I.valueType,D);if(I.type==="pipe"){if(_._zod.traits.has("$ZodCodec"))return!0;return p_(I.in,D)||p_(I.out,D)}if(I.type==="object"){for(let U in I.shape)if(p_(I.shape[U],D))return!0;return!1}if(I.type==="union"){for(let U of I.options)if(p_(U,D))return!0;return!1}if(I.type==="tuple"){for(let U of I.items)if(p_(U,D))return!0;if(I.rest&&p_(I.rest,D))return!0;return!1}return!1}var jS=(_,$={})=>(D)=>{let I=y6({...D,processors:$});return L_(_,I),h6(I,_),c6(I,_)},n0=(_,$,D={})=>(I)=>{let{libraryOptions:U,target:E}=I??{},j=y6({...U??{},target:E,io:$,processors:D});return L_(_,j),h6(j,_),c6(j,_)};var bU=r(()=>{YU()});function ZU(_,$){if("_idmap"in _){let I=_,U=y6({...$,processors:FE}),E={};for(let A of I._idmap.entries()){let[O,L]=A;L_(L,U)}let j={},N={registry:I,uri:$?.uri,defs:E};U.external=N;for(let A of I._idmap.entries()){let[O,L]=A;h6(U,L),j[O]=c6(U,L)}if(Object.keys(E).length>0){let A=U.target==="draft-2020-12"?"$defs":"definitions";j.__shared={[A]:E}}return{schemas:j}}let D=y6({...$,processors:FE});return L_(_,D),h6(D,_),c6(D,_)}var $b,NS=(_,$,D,I)=>{let U=D;U.type="string";let{minimum:E,maximum:j,format:N,patterns:A,contentEncoding:O}=_._zod.bag;if(typeof E==="number")U.minLength=E;if(typeof j==="number")U.maxLength=j;if(N){if(U.format=$b[N]??N,U.format==="")delete U.format;if(N==="time")delete U.format}if(O)U.contentEncoding=O;if(A&&A.size>0){let L=[...A];if(L.length===1)U.pattern=L[0].source;else if(L.length>1)U.allOf=[...L.map((J)=>({...$.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"?{type:"string"}:{},pattern:J.source}))]}},gS=(_,$,D,I)=>{let U=D,{minimum:E,maximum:j,format:N,multipleOf:A,exclusiveMaximum:O,exclusiveMinimum:L}=_._zod.bag;if(typeof N==="string"&&N.includes("int"))U.type="integer";else U.type="number";let J=typeof L==="number"&&L>=(E??Number.NEGATIVE_INFINITY),P=typeof O==="number"&&O<=(j??Number.POSITIVE_INFINITY),z=$.target==="draft-04"||$.target==="openapi-3.0";if(J)if(z)U.minimum=L,U.exclusiveMinimum=!0;else U.exclusiveMinimum=L;else if(typeof E==="number")U.minimum=E;if(P)if(z)U.maximum=O,U.exclusiveMaximum=!0;else U.exclusiveMaximum=O;else if(typeof j==="number")U.maximum=j;if(typeof A==="number")U.multipleOf=A},AS=(_,$,D,I)=>{D.type="boolean"},OS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},LS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},SS=(_,$,D,I)=>{if($.target==="openapi-3.0")D.type="string",D.nullable=!0,D.enum=[null];else D.type="null"},JS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},WS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},PS=(_,$,D,I)=>{D.not={}},zS=(_,$,D,I)=>{},XS=(_,$,D,I)=>{},GS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},RS=(_,$,D,I)=>{let U=_._zod.def,E=UU(U.entries);if(E.every((j)=>typeof j==="number"))D.type="number";if(E.every((j)=>typeof j==="string"))D.type="string";D.enum=E},YS=(_,$,D,I)=>{let U=_._zod.def,E=[];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 E.push(Number(j));else E.push(j);if(E.length===0);else if(E.length===1){let j=E[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(E.every((j)=>typeof j==="number"))D.type="number";if(E.every((j)=>typeof j==="string"))D.type="string";if(E.every((j)=>typeof j==="boolean"))D.type="boolean";if(E.every((j)=>j===null))D.type="null";D.enum=E}},QS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},KS=(_,$,D,I)=>{let U=D,E=_._zod.pattern;if(!E)throw Error("Pattern not found in template literal");U.type="string",U.pattern=E.source},TS=(_,$,D,I)=>{let U=D,E={type:"string",format:"binary",contentEncoding:"binary"},{minimum:j,maximum:N,mime:A}=_._zod.bag;if(j!==void 0)E.minLength=j;if(N!==void 0)E.maxLength=N;if(A)if(A.length===1)E.contentMediaType=A[0],Object.assign(U,E);else Object.assign(U,E),U.anyOf=A.map((O)=>({contentMediaType:O}));else Object.assign(U,E)},FS=(_,$,D,I)=>{D.type="boolean"},VS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},BS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},MS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},bS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},ZS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},HS=(_,$,D,I)=>{let U=D,E=_._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=L_(E.element,$,{...I,path:[...I.path,"items"]})},kS=(_,$,D,I)=>{let U=D,E=_._zod.def;U.type="object",U.properties={};let j=E.shape;for(let O in j)U.properties[O]=L_(j[O],$,{...I,path:[...I.path,"properties",O]});let N=new Set(Object.keys(j)),A=new Set([...N].filter((O)=>{let L=E.shape[O]._zod;if($.io==="input")return L.optin===void 0;else return L.optout===void 0}));if(A.size>0)U.required=Array.from(A);if(E.catchall?._zod.def.type==="never")U.additionalProperties=!1;else if(!E.catchall){if($.io==="output")U.additionalProperties=!1}else if(E.catchall)U.additionalProperties=L_(E.catchall,$,{...I,path:[...I.path,"additionalProperties"]})},VE=(_,$,D,I)=>{let U=_._zod.def,E=U.inclusive===!1,j=U.options.map((N,A)=>L_(N,$,{...I,path:[...I.path,E?"oneOf":"anyOf",A]}));if(E)D.oneOf=j;else D.anyOf=j},qS=(_,$,D,I)=>{let U=_._zod.def,E=L_(U.left,$,{...I,path:[...I.path,"allOf",0]}),j=L_(U.right,$,{...I,path:[...I.path,"allOf",1]}),N=(O)=>("allOf"in O)&&Object.keys(O).length===1,A=[...N(E)?E.allOf:[E],...N(j)?j.allOf:[j]];D.allOf=A},CS=(_,$,D,I)=>{let U=D,E=_._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",A=E.items.map((P,z)=>L_(P,$,{...I,path:[...I.path,j,z]})),O=E.rest?L_(E.rest,$,{...I,path:[...I.path,N,...$.target==="openapi-3.0"?[E.items.length]:[]]}):null;if($.target==="draft-2020-12"){if(U.prefixItems=A,O)U.items=O}else if($.target==="openapi-3.0"){if(U.items={anyOf:A},O)U.items.anyOf.push(O);if(U.minItems=A.length,!O)U.maxItems=A.length}else if(U.items=A,O)U.additionalItems=O;let{minimum:L,maximum:J}=_._zod.bag;if(typeof L==="number")U.minItems=L;if(typeof J==="number")U.maxItems=J},vS=(_,$,D,I)=>{let U=D,E=_._zod.def;U.type="object";let j=E.keyType,A=j._zod.bag?.patterns;if(E.mode==="loose"&&A&&A.size>0){let L=L_(E.valueType,$,{...I,path:[...I.path,"patternProperties","*"]});U.patternProperties={};for(let J of A)U.patternProperties[J.source]=L}else{if($.target==="draft-07"||$.target==="draft-2020-12")U.propertyNames=L_(E.keyType,$,{...I,path:[...I.path,"propertyNames"]});U.additionalProperties=L_(E.valueType,$,{...I,path:[...I.path,"additionalProperties"]})}let O=j._zod.values;if(O){let L=[...O].filter((J)=>typeof J==="string"||typeof J==="number");if(L.length>0)U.required=L}},wS=(_,$,D,I)=>{let U=_._zod.def,E=L_(U.innerType,$,I),j=$.seen.get(_);if($.target==="openapi-3.0")j.ref=U.innerType,D.nullable=!0;else D.anyOf=[E,{type:"null"}]},rS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},fS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType,D.default=JSON.parse(JSON.stringify(U.defaultValue))},xS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);if(E.ref=U.innerType,$.io==="input")D._prefault=JSON.parse(JSON.stringify(U.defaultValue))},uS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.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},yS=(_,$,D,I)=>{let U=_._zod.def,E=U.in._zod.traits.has("$ZodTransform"),j=$.io==="input"?E?U.out:U.in:U.out;L_(j,$,I);let N=$.seen.get(_);N.ref=j},hS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType,D.readOnly=!0},cS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},BE=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},nS=(_,$,D,I)=>{let U=_._zod.innerType;L_(U,$,I);let E=$.seen.get(_);E.ref=U},FE;var HU=r(()=>{bU();n();$b={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},FE={string:NS,number:gS,boolean:AS,bigint:OS,symbol:LS,null:SS,undefined:JS,void:WS,never:PS,any:zS,unknown:XS,date:GS,enum:RS,literal:YS,nan:QS,template_literal:KS,file:TS,success:FS,custom:VS,function:BS,transform:MS,map:bS,set:ZS,array:HS,object:kS,union:VE,intersection:qS,tuple:CS,record:vS,nullable:wS,nonoptional:rS,default:fS,prefault:xS,catch:uS,pipe:yS,readonly:hS,promise:cS,optional:BE,lazy:nS}});class dS{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=y6({processors:FE,target:$,..._?.metadata&&{metadata:_.metadata},..._?.unrepresentable&&{unrepresentable:_.unrepresentable},..._?.override&&{override:_.override},..._?.io&&{io:_.io}})}process(_,$={path:[],schemaPath:[]}){return L_(_,this.ctx,$)}emit(_,$){if($){if($.cycles)this.ctx.cycles=$.cycles;if($.reused)this.ctx.reused=$.reused;if($.external)this.ctx.external=$.external}h6(this.ctx,_);let D=c6(this.ctx,_),{"~standard":I,...U}=D;return U}}var YG=r(()=>{HU();bU()});var QG={};var KG=()=>{};var i$={};x$(i$,{version:()=>AA,util:()=>H,treeifyError:()=>bI,toJSONSchema:()=>ZU,toDotPath:()=>lX,safeParseAsync:()=>W2,safeParse:()=>J2,safeEncodeAsync:()=>IB,safeEncode:()=>DB,safeDecodeAsync:()=>EB,safeDecode:()=>UB,registry:()=>RU,regexes:()=>U$,process:()=>L_,prettifyError:()=>ZI,parseAsync:()=>kI,parse:()=>HI,meta:()=>IS,locales:()=>h0,isValidJWT:()=>W5,isValidBase64URL:()=>J5,isValidBase64:()=>qA,initializeContext:()=>y6,globalRegistry:()=>u_,globalConfig:()=>P4,formatError:()=>v0,flattenError:()=>C0,finalize:()=>c6,extractDefs:()=>h6,encodeAsync:()=>_B,encode:()=>aV,describe:()=>US,decodeAsync:()=>$B,decode:()=>sV,createToJSONSchemaMethod:()=>jS,createStandardJSONSchemaMethod:()=>n0,config:()=>Z_,clone:()=>c_,_xor:()=>CM,_xid:()=>JE,_void:()=>tL,_uuidv7:()=>NE,_uuidv6:()=>jE,_uuidv4:()=>EE,_uuid:()=>IE,_url:()=>KU,_uppercase:()=>T4,_unknown:()=>lL,_union:()=>qM,_undefined:()=>nL,_ulid:()=>SE,_uint64:()=>hL,_uint32:()=>wL,_tuple:()=>rM,_trim:()=>Z4,_transform:()=>nM,_toUpperCase:()=>k4,_toLowerCase:()=>H4,_templateLiteral:()=>aM,_symbol:()=>cL,_superRefine:()=>DS,_success:()=>tM,_stringbool:()=>ES,_stringFormat:()=>c0,_string:()=>KL,_startsWith:()=>V4,_slugify:()=>q4,_size:()=>f6,_set:()=>uM,_safeParseAsync:()=>x0,_safeParse:()=>f0,_safeEncodeAsync:()=>xI,_safeEncode:()=>rI,_safeDecodeAsync:()=>uI,_safeDecode:()=>fI,_regex:()=>Q4,_refine:()=>$S,_record:()=>fM,_readonly:()=>eM,_property:()=>MU,_promise:()=>_b,_positive:()=>TU,_pipe:()=>pM,_parseAsync:()=>r0,_parse:()=>w0,_overwrite:()=>X$,_optional:()=>dM,_number:()=>ZL,_nullable:()=>mM,_null:()=>dL,_normalize:()=>b4,_nonpositive:()=>VU,_nonoptional:()=>iM,_nonnegative:()=>BU,_never:()=>iL,_negative:()=>FU,_nativeEnum:()=>hM,_nanoid:()=>AE,_nan:()=>eL,_multipleOf:()=>S6,_minSize:()=>M$,_minLength:()=>l$,_min:()=>n_,_mime:()=>M4,_maxSize:()=>J6,_maxLength:()=>x6,_max:()=>I$,_map:()=>xM,_mac:()=>FL,_lte:()=>I$,_lt:()=>V$,_lowercase:()=>K4,_literal:()=>cM,_length:()=>u6,_lazy:()=>sM,_ksuid:()=>WE,_jwt:()=>KE,_isoTime:()=>ML,_isoDuration:()=>bL,_isoDateTime:()=>VL,_isoDate:()=>BL,_ipv6:()=>zE,_ipv4:()=>PE,_intersection:()=>wM,_int64:()=>yL,_int32:()=>vL,_int:()=>kL,_includes:()=>F4,_guid:()=>QU,_gte:()=>n_,_gt:()=>B$,_float64:()=>CL,_float32:()=>qL,_file:()=>sL,_enum:()=>yM,_endsWith:()=>B4,_encodeAsync:()=>vI,_encode:()=>qI,_emoji:()=>gE,_email:()=>UE,_e164:()=>QE,_discriminatedUnion:()=>vM,_default:()=>lM,_decodeAsync:()=>wI,_decode:()=>CI,_date:()=>oL,_custom:()=>_S,_cuid2:()=>LE,_cuid:()=>OE,_coercedString:()=>TL,_coercedNumber:()=>HL,_coercedDate:()=>pL,_coercedBoolean:()=>fL,_coercedBigint:()=>uL,_cidrv6:()=>GE,_cidrv4:()=>XE,_check:()=>GG,_catch:()=>oM,_boolean:()=>rL,_bigint:()=>xL,_base64url:()=>YE,_base64:()=>RE,_array:()=>aL,_any:()=>mL,TimePrecision:()=>TE,NEVER:()=>FI,JSONSchemaGenerator:()=>dS,JSONSchema:()=>QG,Doc:()=>mI,$output:()=>$E,$input:()=>DE,$constructor:()=>Q,$brand:()=>VI,$ZodXor:()=>pA,$ZodXID:()=>QA,$ZodVoid:()=>lA,$ZodUnknown:()=>dA,$ZodUnion:()=>JU,$ZodUndefined:()=>hA,$ZodUUID:()=>JA,$ZodURL:()=>PA,$ZodULID:()=>YA,$ZodType:()=>t,$ZodTuple:()=>aI,$ZodTransform:()=>EO,$ZodTemplateLiteral:()=>zO,$ZodSymbol:()=>yA,$ZodSuccess:()=>LO,$ZodStringFormat:()=>R_,$ZodString:()=>Y4,$ZodSet:()=>$O,$ZodRegistry:()=>QL,$ZodRecord:()=>sA,$ZodRealError:()=>D$,$ZodReadonly:()=>PO,$ZodPromise:()=>GO,$ZodPreprocess:()=>WO,$ZodPrefault:()=>AO,$ZodPipe:()=>_E,$ZodOptional:()=>sI,$ZodObjectJIT:()=>oA,$ZodObject:()=>X5,$ZodNumberFormat:()=>xA,$ZodNumber:()=>pI,$ZodNullable:()=>NO,$ZodNull:()=>cA,$ZodNonOptional:()=>OO,$ZodNever:()=>mA,$ZodNanoID:()=>XA,$ZodNaN:()=>JO,$ZodMap:()=>_O,$ZodMAC:()=>ZA,$ZodLiteral:()=>UO,$ZodLazy:()=>RO,$ZodKSUID:()=>KA,$ZodJWT:()=>rA,$ZodIntersection:()=>aA,$ZodISOTime:()=>VA,$ZodISODuration:()=>BA,$ZodISODateTime:()=>TA,$ZodISODate:()=>FA,$ZodIPv6:()=>bA,$ZodIPv4:()=>MA,$ZodGUID:()=>SA,$ZodFunction:()=>XO,$ZodFile:()=>IO,$ZodExactOptional:()=>jO,$ZodError:()=>gU,$ZodEnum:()=>DO,$ZodEncodeError:()=>z4,$ZodEmoji:()=>zA,$ZodEmail:()=>WA,$ZodE164:()=>wA,$ZodDiscriminatedUnion:()=>eA,$ZodDefault:()=>gO,$ZodDate:()=>iA,$ZodCustomStringFormat:()=>fA,$ZodCustom:()=>YO,$ZodCodec:()=>WU,$ZodCheckUpperCase:()=>DA,$ZodCheckStringFormat:()=>u0,$ZodCheckStartsWith:()=>IA,$ZodCheckSizeEquals:()=>p2,$ZodCheckRegex:()=>_A,$ZodCheckProperty:()=>jA,$ZodCheckOverwrite:()=>gA,$ZodCheckNumberFormat:()=>l2,$ZodCheckMultipleOf:()=>m2,$ZodCheckMinSize:()=>o2,$ZodCheckMinLength:()=>a2,$ZodCheckMimeType:()=>NA,$ZodCheckMaxSize:()=>t2,$ZodCheckMaxLength:()=>e2,$ZodCheckLowerCase:()=>$A,$ZodCheckLessThan:()=>cI,$ZodCheckLengthEquals:()=>s2,$ZodCheckIncludes:()=>UA,$ZodCheckGreaterThan:()=>nI,$ZodCheckEndsWith:()=>EA,$ZodCheckBigIntFormat:()=>i2,$ZodCheck:()=>Y_,$ZodCatch:()=>SO,$ZodCUID2:()=>RA,$ZodCUID:()=>GA,$ZodCIDRv6:()=>kA,$ZodCIDRv4:()=>HA,$ZodBoolean:()=>SU,$ZodBigIntFormat:()=>uA,$ZodBigInt:()=>eI,$ZodBase64URL:()=>vA,$ZodBase64:()=>CA,$ZodAsyncError:()=>m$,$ZodArray:()=>tA,$ZodAny:()=>nA});var O$=r(()=>{n();hI();YL();HU();YG();KG();X4();P2();S2();QO();dI();OA();YU();RG();bU()});var ME={};x$(ME,{uppercase:()=>T4,trim:()=>Z4,toUpperCase:()=>k4,toLowerCase:()=>H4,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,regex:()=>Q4,property:()=>MU,positive:()=>TU,overwrite:()=>X$,normalize:()=>b4,nonpositive:()=>VU,nonnegative:()=>BU,negative:()=>FU,multipleOf:()=>S6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,maxSize:()=>J6,maxLength:()=>x6,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,length:()=>u6,includes:()=>F4,gte:()=>n_,gt:()=>B$,endsWith:()=>B4});var bE=r(()=>{O$()});var C4={};x$(C4,{time:()=>iS,duration:()=>tS,datetime:()=>mS,date:()=>lS,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU});function mS(_){return VL(kU,_)}function lS(_){return BL(qU,_)}function iS(_){return ML(CU,_)}function tS(_){return bL(vU,_)}var kU,qU,CU,vU;var wU=r(()=>{O$();fU();kU=Q("ZodISODateTime",(_,$)=>{TA.init(_,$),P_.init(_,$)});qU=Q("ZodISODate",(_,$)=>{FA.init(_,$),P_.init(_,$)});CU=Q("ZodISOTime",(_,$)=>{VA.init(_,$),P_.init(_,$)});vU=Q("ZodISODuration",(_,$)=>{BA.init(_,$),P_.init(_,$)})});var TG=(_,$)=>{gU.init(_,$),_.name="ZodError",Object.defineProperties(_,{format:{value:(D)=>v0(_,D)},flatten:{value:(D)=>C0(_,D)},addIssue:{value:(D)=>{_.issues.push(D),_.message=JSON.stringify(_.issues,H0,2)}},addIssues:{value:(D)=>{_.issues.push(...D),_.message=JSON.stringify(_.issues,H0,2)}},isEmpty:{get(){return _.issues.length===0}}})},FG,e_;var oS=r(()=>{O$();O$();n();FG=Q("ZodError",TG),e_=Q("ZodError",TG,{Parent:Error})});var ZE,HE,kE,qE,CE,vE,wE,rE,fE,xE,uE,yE;var pS=r(()=>{O$();oS();ZE=w0(e_),HE=r0(e_),kE=f0(e_),qE=x0(e_),CE=qI(e_),vE=CI(e_),wE=vI(e_),rE=wI(e_),fE=rI(e_),xE=fI(e_),uE=xI(e_),yE=uI(e_)});var rU={};x$(rU,{xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sS,url:()=>UJ,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,transform:()=>g1,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,set:()=>lJ,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,promise:()=>DW,preprocess:()=>LW,prefault:()=>Xj,pipe:()=>uU,partialRecord:()=>nJ,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,nonoptional:()=>Gj,never:()=>E1,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,meta:()=>NW,map:()=>mJ,mac:()=>JJ,looseRecord:()=>dJ,looseObject:()=>yJ,literal:()=>tJ,lazy:()=>bj,ksuid:()=>LJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,ipv6:()=>WJ,ipv4:()=>SJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aS,function:()=>UW,float64:()=>BJ,float32:()=>VJ,file:()=>oJ,exactOptional:()=>Sj,enum:()=>N1,emoji:()=>EJ,email:()=>eS,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,codec:()=>sJ,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>p,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIntersection:()=>$j,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFile:()=>Aj,ZodExactOptional:()=>Lj,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE});function yU(_,$,D){let I=Object.getPrototypeOf(_),U=VG.get(I);if(!U)U=new Set,VG.set(I,U);if(U.has($))return;U.add($);for(let E in D){let j=D[E];Object.defineProperty(I,E,{configurable:!0,enumerable:!1,get(){let N=j.bind(this);return Object.defineProperty(this,E,{configurable:!0,writable:!0,enumerable:!0,value:N}),N},set(N){Object.defineProperty(this,E,{configurable:!0,writable:!0,enumerable:!0,value:N})}})}}function d0(_){return KL(r4,_)}function eS(_){return UE(cU,_)}function aS(_){return QU(m0,_)}function sS(_){return IE(b$,_)}function _J(_){return EE(b$,_)}function $J(_){return jE(b$,_)}function DJ(_){return NE(b$,_)}function UJ(_){return KU(t0,_)}function IJ(_){return KU(t0,{protocol:U$.httpProtocol,hostname:U$.domain,...H.normalizeParams(_)})}function EJ(_){return gE(nU,_)}function jJ(_){return AE(dU,_)}function NJ(_){return OE(mU,_)}function gJ(_){return LE(lU,_)}function AJ(_){return SE(iU,_)}function OJ(_){return JE(tU,_)}function LJ(_){return WE(oU,_)}function SJ(_){return PE(pU,_)}function JJ(_){return FL(hE,_)}function WJ(_){return zE(eU,_)}function PJ(_){return XE(aU,_)}function zJ(_){return GE(sU,_)}function XJ(_){return RE(_1,_)}function GJ(_){return YE($1,_)}function RJ(_){return QE(D1,_)}function YJ(_){return KE(U1,_)}function QJ(_,$,D={}){return c0(f4,_,$,D)}function KJ(_){return c0(f4,"hostname",U$.hostname,_)}function TJ(_){return c0(f4,"hex",U$.hex,_)}function FJ(_,$){let D=$?.enc??"hex",I=`${_}_${D}`,U=U$[I];if(!U)throw Error(`Unrecognized hash format: ${I}`);return c0(f4,I,U,$)}function cE(_){return ZL(x4,_)}function xU(_){return kL(d6,_)}function VJ(_){return qL(d6,_)}function BJ(_){return CL(d6,_)}function MJ(_){return vL(d6,_)}function bJ(_){return wL(d6,_)}function nE(_){return rL(u4,_)}function ZJ(_){return xL(y4,_)}function HJ(_){return yL(I1,_)}function kJ(_){return hL(I1,_)}function qJ(_){return cL(dE,_)}function CJ(_){return nL(mE,_)}function iE(_){return dL(lE,_)}function vJ(){return mL(tE)}function n6(){return lL(oE)}function E1(_){return iL(pE,_)}function wJ(_){return tL(eE,_)}function rJ(_){return oL(o0,_)}function p0(_,$){return aL(aE,_,$)}function fJ(_){let $=_._zod.def.shape;return N1(Object.keys($))}function xJ(_,$){let D={type:"object",shape:_??{},...H.normalizeParams($)};return new e0(D)}function uJ(_,$){return new e0({type:"object",shape:_,catchall:E1(),...H.normalizeParams($)})}function yJ(_,$){return new e0({type:"object",shape:_,catchall:n6(),...H.normalizeParams($)})}function j1(_,$){return new a0({type:"union",options:_,...H.normalizeParams($)})}function hJ(_,$){return new sE({type:"union",options:_,inclusive:!1,...H.normalizeParams($)})}function cJ(_,$,D){return new _j({type:"union",options:$,discriminator:_,...H.normalizeParams(D)})}function Dj(_,$){return new $j({type:"intersection",left:_,right:$})}function Ij(_,$,D){let I=$ instanceof t,U=I?D:$;return new Uj({type:"tuple",items:_,rest:I?$:null,...H.normalizeParams(U)})}function Ej(_,$,D){if(!$||!$._zod)return new v4({type:"record",keyType:d0(),valueType:_,...H.normalizeParams($)});return new v4({type:"record",keyType:_,valueType:$,...H.normalizeParams(D)})}function nJ(_,$,D){let I=c_(_);return I._zod.values=void 0,new v4({type:"record",keyType:I,valueType:$,...H.normalizeParams(D)})}function dJ(_,$,D){return new v4({type:"record",keyType:_,valueType:$,mode:"loose",...H.normalizeParams(D)})}function mJ(_,$,D){return new jj({type:"map",keyType:_,valueType:$,...H.normalizeParams(D)})}function lJ(_,$){return new Nj({type:"set",valueType:_,...H.normalizeParams($)})}function N1(_,$){let D=Array.isArray(_)?Object.fromEntries(_.map((I)=>[I,I])):_;return new w4({type:"enum",entries:D,...H.normalizeParams($)})}function iJ(_,$){return new w4({type:"enum",entries:_,...H.normalizeParams($)})}function tJ(_,$){return new gj({type:"literal",values:Array.isArray(_)?_:[_],...H.normalizeParams($)})}function oJ(_){return sL(Aj,_)}function g1(_){return new Oj({type:"transform",transform:_})}function l0(_){return new A1({type:"optional",innerType:_})}function Sj(_){return new Lj({type:"optional",innerType:_})}function i0(_){return new Jj({type:"nullable",innerType:_})}function pJ(_){return l0(i0(_))}function Pj(_,$){return new Wj({type:"default",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Xj(_,$){return new zj({type:"prefault",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Gj(_,$){return new O1({type:"nonoptional",innerType:_,...H.normalizeParams($)})}function eJ(_){return new Rj({type:"success",innerType:_})}function Qj(_,$){return new Yj({type:"catch",innerType:_,catchValue:typeof $==="function"?$:()=>$})}function aJ(_){return eL(Kj,_)}function uU(_,$){return new s0({type:"pipe",in:_,out:$})}function sJ(_,$,D){return new _D({type:"pipe",in:_,out:$,transform:D.decode,reverseTransform:D.encode})}function _W(_){let $=_._zod.def;return new _D({type:"pipe",in:$.out,out:$.in,transform:$.reverseTransform,reverseTransform:$.transform})}function Vj(_){return new Fj({type:"readonly",innerType:_})}function $W(_,$){return new Bj({type:"template_literal",parts:_,...H.normalizeParams($)})}function bj(_){return new Mj({type:"lazy",getter:_})}function DW(_){return new Zj({type:"promise",innerType:_})}function UW(_){return new Hj({type:"function",input:Array.isArray(_?.input)?Ij(_?.input):_?.input??p0(n6()),output:_?.output??n6()})}function IW(_){let $=new Y_({check:"custom"});return $._zod.check=_,$}function EW(_,$){return _S($D,_??(()=>!0),$)}function kj(_,$={}){return $S($D,_,$)}function qj(_,$){return DS(_,$)}function gW(_,$={}){let D=new $D({type:"custom",check:"custom",fn:(I)=>I instanceof _,abort:!0,...H.normalizeParams($)});return D._zod.bag.Class=_,D._zod.check=(I)=>{if(!(I.value instanceof _))I.issues.push({code:"invalid_type",expected:_.name,input:I.value,inst:D,path:[...D._zod.def.path??[]]})},D}function OW(_){let $=bj(()=>{return j1([d0(_),cE(),nE(),iE(),p0($),Ej(d0(),$)])});return $}function LW(_,$){return new Tj({type:"pipe",in:g1(_),out:$})}var VG,p,hU,r4,P_,cU,m0,b$,t0,nU,dU,mU,lU,iU,tU,oU,pU,hE,eU,aU,sU,_1,$1,D1,U1,f4,x4,d6,u4,y4,I1,dE,mE,lE,tE,oE,pE,eE,o0,aE,e0,a0,sE,_j,$j,Uj,v4,jj,Nj,w4,gj,Aj,Oj,A1,Lj,Jj,Wj,zj,O1,Rj,Yj,Kj,s0,_D,Tj,Fj,Bj,Mj,Zj,Hj,$D,jW,NW,AW=(..._)=>ES({Codec:_D,Boolean:u4,String:r4},..._);var fU=r(()=>{O$();O$();HU();bU();bE();wU();pS();VG=new WeakMap;p=Q("ZodType",(_,$)=>{return t.init(_,$),Object.assign(_["~standard"],{jsonSchema:{input:n0(_,"input"),output:n0(_,"output")}}),_.toJSONSchema=jS(_,{}),_.def=$,_.type=$.type,Object.defineProperty(_,"_def",{value:$}),_.parse=(D,I)=>ZE(_,D,I,{callee:_.parse}),_.safeParse=(D,I)=>kE(_,D,I),_.parseAsync=async(D,I)=>HE(_,D,I,{callee:_.parseAsync}),_.safeParseAsync=async(D,I)=>qE(_,D,I),_.spa=_.safeParseAsync,_.encode=(D,I)=>CE(_,D,I),_.decode=(D,I)=>vE(_,D,I),_.encodeAsync=async(D,I)=>wE(_,D,I),_.decodeAsync=async(D,I)=>rE(_,D,I),_.safeEncode=(D,I)=>fE(_,D,I),_.safeDecode=(D,I)=>xE(_,D,I),_.safeEncodeAsync=async(D,I)=>uE(_,D,I),_.safeDecodeAsync=async(D,I)=>yE(_,D,I),yU(_,"ZodType",{check(...D){let I=this.def;return this.clone(H.mergeDefs(I,{checks:[...I.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,I){return c_(this,D,I)},brand(){return this},register(D,I){return D.add(this,I),this},refine(D,I){return this.check(kj(D,I))},superRefine(D,I){return this.check(qj(D,I))},overwrite(D){return this.check(X$(D))},optional(){return l0(this)},exactOptional(){return Sj(this)},nullable(){return i0(this)},nullish(){return l0(i0(this))},nonoptional(D){return Gj(this,D)},array(){return p0(this)},or(D){return j1([this,D])},and(D){return Dj(this,D)},transform(D){return uU(this,g1(D))},default(D){return Pj(this,D)},prefault(D){return Xj(this,D)},catch(D){return Qj(this,D)},pipe(D){return uU(this,D)},readonly(){return Vj(this)},describe(D){let I=this.clone();return u_.add(I,{description:D}),I},meta(...D){if(D.length===0)return u_.get(this);let I=this.clone();return u_.add(I,D[0]),I},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(D){return D(this)}}),Object.defineProperty(_,"description",{get(){return u_.get(_)?.description},configurable:!0}),_}),hU=Q("_ZodString",(_,$)=>{Y4.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>NS(_,I,U,E);let D=_._zod.bag;_.format=D.format??null,_.minLength=D.minimum??null,_.maxLength=D.maximum??null,yU(_,"_ZodString",{regex(...I){return this.check(Q4(...I))},includes(...I){return this.check(F4(...I))},startsWith(...I){return this.check(V4(...I))},endsWith(...I){return this.check(B4(...I))},min(...I){return this.check(l$(...I))},max(...I){return this.check(x6(...I))},length(...I){return this.check(u6(...I))},nonempty(...I){return this.check(l$(1,...I))},lowercase(I){return this.check(K4(I))},uppercase(I){return this.check(T4(I))},trim(){return this.check(Z4())},normalize(...I){return this.check(b4(...I))},toLowerCase(){return this.check(H4())},toUpperCase(){return this.check(k4())},slugify(){return this.check(q4())}})}),r4=Q("ZodString",(_,$)=>{Y4.init(_,$),hU.init(_,$),_.email=(D)=>_.check(UE(cU,D)),_.url=(D)=>_.check(KU(t0,D)),_.jwt=(D)=>_.check(KE(U1,D)),_.emoji=(D)=>_.check(gE(nU,D)),_.guid=(D)=>_.check(QU(m0,D)),_.uuid=(D)=>_.check(IE(b$,D)),_.uuidv4=(D)=>_.check(EE(b$,D)),_.uuidv6=(D)=>_.check(jE(b$,D)),_.uuidv7=(D)=>_.check(NE(b$,D)),_.nanoid=(D)=>_.check(AE(dU,D)),_.guid=(D)=>_.check(QU(m0,D)),_.cuid=(D)=>_.check(OE(mU,D)),_.cuid2=(D)=>_.check(LE(lU,D)),_.ulid=(D)=>_.check(SE(iU,D)),_.base64=(D)=>_.check(RE(_1,D)),_.base64url=(D)=>_.check(YE($1,D)),_.xid=(D)=>_.check(JE(tU,D)),_.ksuid=(D)=>_.check(WE(oU,D)),_.ipv4=(D)=>_.check(PE(pU,D)),_.ipv6=(D)=>_.check(zE(eU,D)),_.cidrv4=(D)=>_.check(XE(aU,D)),_.cidrv6=(D)=>_.check(GE(sU,D)),_.e164=(D)=>_.check(QE(D1,D)),_.datetime=(D)=>_.check(mS(D)),_.date=(D)=>_.check(lS(D)),_.time=(D)=>_.check(iS(D)),_.duration=(D)=>_.check(tS(D))});P_=Q("ZodStringFormat",(_,$)=>{R_.init(_,$),hU.init(_,$)}),cU=Q("ZodEmail",(_,$)=>{WA.init(_,$),P_.init(_,$)});m0=Q("ZodGUID",(_,$)=>{SA.init(_,$),P_.init(_,$)});b$=Q("ZodUUID",(_,$)=>{JA.init(_,$),P_.init(_,$)});t0=Q("ZodURL",(_,$)=>{PA.init(_,$),P_.init(_,$)});nU=Q("ZodEmoji",(_,$)=>{zA.init(_,$),P_.init(_,$)});dU=Q("ZodNanoID",(_,$)=>{XA.init(_,$),P_.init(_,$)});mU=Q("ZodCUID",(_,$)=>{GA.init(_,$),P_.init(_,$)});lU=Q("ZodCUID2",(_,$)=>{RA.init(_,$),P_.init(_,$)});iU=Q("ZodULID",(_,$)=>{YA.init(_,$),P_.init(_,$)});tU=Q("ZodXID",(_,$)=>{QA.init(_,$),P_.init(_,$)});oU=Q("ZodKSUID",(_,$)=>{KA.init(_,$),P_.init(_,$)});pU=Q("ZodIPv4",(_,$)=>{MA.init(_,$),P_.init(_,$)});hE=Q("ZodMAC",(_,$)=>{ZA.init(_,$),P_.init(_,$)});eU=Q("ZodIPv6",(_,$)=>{bA.init(_,$),P_.init(_,$)});aU=Q("ZodCIDRv4",(_,$)=>{HA.init(_,$),P_.init(_,$)});sU=Q("ZodCIDRv6",(_,$)=>{kA.init(_,$),P_.init(_,$)});_1=Q("ZodBase64",(_,$)=>{CA.init(_,$),P_.init(_,$)});$1=Q("ZodBase64URL",(_,$)=>{vA.init(_,$),P_.init(_,$)});D1=Q("ZodE164",(_,$)=>{wA.init(_,$),P_.init(_,$)});U1=Q("ZodJWT",(_,$)=>{rA.init(_,$),P_.init(_,$)});f4=Q("ZodCustomStringFormat",(_,$)=>{fA.init(_,$),P_.init(_,$)});x4=Q("ZodNumber",(_,$)=>{pI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>gS(_,I,U,E),yU(_,"ZodNumber",{gt(I,U){return this.check(B$(I,U))},gte(I,U){return this.check(n_(I,U))},min(I,U){return this.check(n_(I,U))},lt(I,U){return this.check(V$(I,U))},lte(I,U){return this.check(I$(I,U))},max(I,U){return this.check(I$(I,U))},int(I){return this.check(xU(I))},safe(I){return this.check(xU(I))},positive(I){return this.check(B$(0,I))},nonnegative(I){return this.check(n_(0,I))},negative(I){return this.check(V$(0,I))},nonpositive(I){return this.check(I$(0,I))},multipleOf(I,U){return this.check(S6(I,U))},step(I,U){return this.check(S6(I,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});d6=Q("ZodNumberFormat",(_,$)=>{xA.init(_,$),x4.init(_,$)});u4=Q("ZodBoolean",(_,$)=>{SU.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>AS(_,D,I,U)});y4=Q("ZodBigInt",(_,$)=>{eI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>OS(_,I,U,E),_.gte=(I,U)=>_.check(n_(I,U)),_.min=(I,U)=>_.check(n_(I,U)),_.gt=(I,U)=>_.check(B$(I,U)),_.gte=(I,U)=>_.check(n_(I,U)),_.min=(I,U)=>_.check(n_(I,U)),_.lt=(I,U)=>_.check(V$(I,U)),_.lte=(I,U)=>_.check(I$(I,U)),_.max=(I,U)=>_.check(I$(I,U)),_.positive=(I)=>_.check(B$(BigInt(0),I)),_.negative=(I)=>_.check(V$(BigInt(0),I)),_.nonpositive=(I)=>_.check(I$(BigInt(0),I)),_.nonnegative=(I)=>_.check(n_(BigInt(0),I)),_.multipleOf=(I,U)=>_.check(S6(I,U));let D=_._zod.bag;_.minValue=D.minimum??null,_.maxValue=D.maximum??null,_.format=D.format??null});I1=Q("ZodBigIntFormat",(_,$)=>{uA.init(_,$),y4.init(_,$)});dE=Q("ZodSymbol",(_,$)=>{yA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>LS(_,D,I,U)});mE=Q("ZodUndefined",(_,$)=>{hA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>JS(_,D,I,U)});lE=Q("ZodNull",(_,$)=>{cA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>SS(_,D,I,U)});tE=Q("ZodAny",(_,$)=>{nA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>zS(_,D,I,U)});oE=Q("ZodUnknown",(_,$)=>{dA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>XS(_,D,I,U)});pE=Q("ZodNever",(_,$)=>{mA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>PS(_,D,I,U)});eE=Q("ZodVoid",(_,$)=>{lA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>WS(_,D,I,U)});o0=Q("ZodDate",(_,$)=>{iA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>GS(_,I,U,E),_.min=(I,U)=>_.check(n_(I,U)),_.max=(I,U)=>_.check(I$(I,U));let D=_._zod.bag;_.minDate=D.minimum?new Date(D.minimum):null,_.maxDate=D.maximum?new Date(D.maximum):null});aE=Q("ZodArray",(_,$)=>{tA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>HS(_,D,I,U),_.element=$.element,yU(_,"ZodArray",{min(D,I){return this.check(l$(D,I))},nonempty(D){return this.check(l$(1,D))},max(D,I){return this.check(x6(D,I))},length(D,I){return this.check(u6(D,I))},unwrap(){return this.element}})});e0=Q("ZodObject",(_,$)=>{oA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>kS(_,D,I,U),H.defineLazy(_,"shape",()=>{return $.shape}),yU(_,"ZodObject",{keyof(){return N1(Object.keys(this._zod.def.shape))},catchall(D){return this.clone({...this._zod.def,catchall:D})},passthrough(){return this.clone({...this._zod.def,catchall:n6()})},loose(){return this.clone({...this._zod.def,catchall:n6()})},strict(){return this.clone({...this._zod.def,catchall:E1()})},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(A1,this,D[0])},required(...D){return H.required(O1,this,D[0])}})});a0=Q("ZodUnion",(_,$)=>{JU.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VE(_,D,I,U),_.options=$.options});sE=Q("ZodXor",(_,$)=>{a0.init(_,$),pA.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VE(_,D,I,U),_.options=$.options});_j=Q("ZodDiscriminatedUnion",(_,$)=>{a0.init(_,$),eA.init(_,$)});$j=Q("ZodIntersection",(_,$)=>{aA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>qS(_,D,I,U)});Uj=Q("ZodTuple",(_,$)=>{aI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>CS(_,D,I,U),_.rest=(D)=>_.clone({..._._zod.def,rest:D})});v4=Q("ZodRecord",(_,$)=>{sA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>vS(_,D,I,U),_.keyType=$.keyType,_.valueType=$.valueType});jj=Q("ZodMap",(_,$)=>{_O.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>bS(_,D,I,U),_.keyType=$.keyType,_.valueType=$.valueType,_.min=(...D)=>_.check(M$(...D)),_.nonempty=(D)=>_.check(M$(1,D)),_.max=(...D)=>_.check(J6(...D)),_.size=(...D)=>_.check(f6(...D))});Nj=Q("ZodSet",(_,$)=>{$O.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>ZS(_,D,I,U),_.min=(...D)=>_.check(M$(...D)),_.nonempty=(D)=>_.check(M$(1,D)),_.max=(...D)=>_.check(J6(...D)),_.size=(...D)=>_.check(f6(...D))});w4=Q("ZodEnum",(_,$)=>{DO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>RS(_,I,U,E),_.enum=$.entries,_.options=Object.values($.entries);let D=new Set(Object.keys($.entries));_.extract=(I,U)=>{let E={};for(let j of I)if(D.has(j))E[j]=$.entries[j];else throw Error(`Key ${j} not found in enum`);return new w4({...$,checks:[],...H.normalizeParams(U),entries:E})},_.exclude=(I,U)=>{let E={...$.entries};for(let j of I)if(D.has(j))delete E[j];else throw Error(`Key ${j} not found in enum`);return new w4({...$,checks:[],...H.normalizeParams(U),entries:E})}});gj=Q("ZodLiteral",(_,$)=>{UO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>YS(_,D,I,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]}})});Aj=Q("ZodFile",(_,$)=>{IO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>TS(_,D,I,U),_.min=(D,I)=>_.check(M$(D,I)),_.max=(D,I)=>_.check(J6(D,I)),_.mime=(D,I)=>_.check(M4(Array.isArray(D)?D:[D],I))});Oj=Q("ZodTransform",(_,$)=>{EO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>MS(_,D,I,U),_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4(_.constructor.name);D.addIssue=(E)=>{if(typeof E==="string")D.issues.push(H.issue(E,D.value,$));else{let j=E;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((E)=>{return D.value=E,D.fallback=!0,D});return D.value=U,D.fallback=!0,D}});A1=Q("ZodOptional",(_,$)=>{sI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BE(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Lj=Q("ZodExactOptional",(_,$)=>{jO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BE(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Jj=Q("ZodNullable",(_,$)=>{NO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>wS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Wj=Q("ZodDefault",(_,$)=>{gO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>fS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType,_.removeDefault=_.unwrap});zj=Q("ZodPrefault",(_,$)=>{AO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>xS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});O1=Q("ZodNonOptional",(_,$)=>{OO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>rS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Rj=Q("ZodSuccess",(_,$)=>{LO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>FS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Yj=Q("ZodCatch",(_,$)=>{SO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>uS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType,_.removeCatch=_.unwrap});Kj=Q("ZodNaN",(_,$)=>{JO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>QS(_,D,I,U)});s0=Q("ZodPipe",(_,$)=>{_E.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>yS(_,D,I,U),_.in=$.in,_.out=$.out});_D=Q("ZodCodec",(_,$)=>{s0.init(_,$),WU.init(_,$)});Tj=Q("ZodPreprocess",(_,$)=>{s0.init(_,$),WO.init(_,$)}),Fj=Q("ZodReadonly",(_,$)=>{PO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>hS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Bj=Q("ZodTemplateLiteral",(_,$)=>{zO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>KS(_,D,I,U)});Mj=Q("ZodLazy",(_,$)=>{RO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>nS(_,D,I,U),_.unwrap=()=>_._zod.def.getter()});Zj=Q("ZodPromise",(_,$)=>{GO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>cS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Hj=Q("ZodFunction",(_,$)=>{XO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BS(_,D,I,U)});$D=Q("ZodCustom",(_,$)=>{YO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VS(_,D,I,U)});jW=US,NW=IS});function MG(_){Z_({customError:_})}function bG(){return Z_().customError}var BG,Cj;var ZG=r(()=>{O$();BG={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(_){})(Cj||(Cj={}))});function Eb(_,$){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 jb(_,$){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 I=$.version==="draft-2020-12"?"$defs":"definitions";if(D[0]===I){let U=D[1];if(!U||!$.defs[U])throw Error(`Reference not found: ${_}`);return $.defs[U]}throw Error(`Reference not found: ${_}`)}function HG(_,$){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 U=_.$ref;if($.refs.has(U))return $.refs.get(U);if($.processing.has(U))return f.lazy(()=>{if(!$.refs.has(U))throw Error(`Circular reference not resolved: ${U}`);return $.refs.get(U)});$.processing.add(U);let E=jb(U,$),j=d_(E,$);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 f.null();if(U.length===0)return f.never();if(U.length===1)return f.literal(U[0]);if(U.every((j)=>typeof j==="string"))return f.enum(U);let E=U.map((j)=>f.literal(j));if(E.length<2)return E[0];return f.union([E[0],E[1],...E.slice(2)])}if(_.const!==void 0)return f.literal(_.const);let D=_.type;if(Array.isArray(D)){let U=D.map((E)=>{let j={..._,type:E};return HG(j,$)});if(U.length===0)return f.never();if(U.length===1)return U[0];return f.union(U)}if(!D)return f.any();let I;switch(D){case"string":{let U=f.string();if(_.format){let E=_.format;if(E==="email")U=U.check(f.email());else if(E==="uri"||E==="uri-reference")U=U.check(f.url());else if(E==="uuid"||E==="guid")U=U.check(f.uuid());else if(E==="date-time")U=U.check(f.iso.datetime());else if(E==="date")U=U.check(f.iso.date());else if(E==="time")U=U.check(f.iso.time());else if(E==="duration")U=U.check(f.iso.duration());else if(E==="ipv4")U=U.check(f.ipv4());else if(E==="ipv6")U=U.check(f.ipv6());else if(E==="mac")U=U.check(f.mac());else if(E==="cidr")U=U.check(f.cidrv4());else if(E==="cidr-v6")U=U.check(f.cidrv6());else if(E==="base64")U=U.check(f.base64());else if(E==="base64url")U=U.check(f.base64url());else if(E==="e164")U=U.check(f.e164());else if(E==="jwt")U=U.check(f.jwt());else if(E==="emoji")U=U.check(f.emoji());else if(E==="nanoid")U=U.check(f.nanoid());else if(E==="cuid")U=U.check(f.cuid());else if(E==="cuid2")U=U.check(f.cuid2());else if(E==="ulid")U=U.check(f.ulid());else if(E==="xid")U=U.check(f.xid());else if(E==="ksuid")U=U.check(f.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));I=U;break}case"number":case"integer":{let U=D==="integer"?f.number().int():f.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);I=U;break}case"boolean":{I=f.boolean();break}case"null":{I=f.null();break}case"object":{let U={},E=_.properties||{},j=new Set(_.required||[]);for(let[A,O]of Object.entries(E)){let L=d_(O,$);U[A]=j.has(A)?L:L.optional()}if(_.propertyNames){let A=d_(_.propertyNames,$),O=_.additionalProperties&&typeof _.additionalProperties==="object"?d_(_.additionalProperties,$):f.any();if(Object.keys(U).length===0){I=f.record(A,O);break}let L=f.object(U).passthrough(),J=f.looseRecord(A,O);I=f.intersection(L,J);break}if(_.patternProperties){let A=_.patternProperties,O=Object.keys(A),L=[];for(let P of O){let z=d_(A[P],$),S=f.string().regex(new RegExp(P));L.push(f.looseRecord(S,z))}let J=[];if(Object.keys(U).length>0)J.push(f.object(U).passthrough());if(J.push(...L),J.length===0)I=f.object({}).passthrough();else if(J.length===1)I=J[0];else{let P=f.intersection(J[0],J[1]);for(let z=2;zd_(A,$)),N=E&&typeof E==="object"&&!Array.isArray(E)?d_(E,$):void 0;if(N)I=f.tuple(j).rest(N);else I=f.tuple(j);if(typeof _.minItems==="number")I=I.check(f.minLength(_.minItems));if(typeof _.maxItems==="number")I=I.check(f.maxLength(_.maxItems))}else if(Array.isArray(E)){let j=E.map((A)=>d_(A,$)),N=_.additionalItems&&typeof _.additionalItems==="object"?d_(_.additionalItems,$):void 0;if(N)I=f.tuple(j).rest(N);else I=f.tuple(j);if(typeof _.minItems==="number")I=I.check(f.minLength(_.minItems));if(typeof _.maxItems==="number")I=I.check(f.maxLength(_.maxItems))}else if(E!==void 0){let j=d_(E,$),N=f.array(j);if(typeof _.minItems==="number")N=N.min(_.minItems);if(typeof _.maxItems==="number")N=N.max(_.maxItems);I=N}else I=f.array(f.any());break}default:throw Error(`Unsupported type: ${D}`)}return I}function d_(_,$){if(typeof _==="boolean")return _?f.any():f.never();let D=HG(_,$),I=_.type||_.enum!==void 0||_.const!==void 0;if(_.anyOf&&Array.isArray(_.anyOf)){let N=_.anyOf.map((O)=>d_(O,$)),A=f.union(N);D=I?f.intersection(D,A):A}if(_.oneOf&&Array.isArray(_.oneOf)){let N=_.oneOf.map((O)=>d_(O,$)),A=f.xor(N);D=I?f.intersection(D,A):A}if(_.allOf&&Array.isArray(_.allOf))if(_.allOf.length===0)D=I?D:f.any();else{let N=I?D:d_(_.allOf[0],$),A=I?0:1;for(let O=A;O<_.allOf.length;O++)N=f.intersection(N,d_(_.allOf[O],$));D=N}if(_.nullable===!0&&$.version==="openapi-3.0")D=f.nullable(D);if(_.readOnly===!0)D=f.readonly(D);if(_.default!==void 0)D=D.default(_.default);let U={},E=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let N of E)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(!Ib.has(N))U[N]=_[N];if(Object.keys(U).length>0)$.registry.add(D,U);if(_.description)D=D.describe(_.description);return D}function SW(_,$){if(typeof _==="boolean")return _?f.any():f.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 I=Eb(D,$?.defaultTarget),U=D.$defs||D.definitions||{},E={version:I,defs:U,refs:new Map,processing:new Set,rootSchema:D,registry:$?.registry??u_};return d_(D,E)}var f,Ib;var kG=r(()=>{YU();bE();wU();fU();f={...rU,...ME,iso:C4},Ib=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 vj={};x$(vj,{string:()=>Nb,number:()=>gb,date:()=>Lb,boolean:()=>Ab,bigint:()=>Ob});function Nb(_){return TL(r4,_)}function gb(_){return HL(x4,_)}function Ab(_){return fL(u4,_)}function Ob(_){return uL(y4,_)}function Lb(_){return pL(o0,_)}var qG=r(()=>{O$();fU()});var wj={};x$(wj,{xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sS,util:()=>H,url:()=>UJ,uppercase:()=>T4,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,trim:()=>Z4,treeifyError:()=>bI,transform:()=>g1,toUpperCase:()=>k4,toLowerCase:()=>H4,toJSONSchema:()=>ZU,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,setErrorMap:()=>MG,set:()=>lJ,safeParseAsync:()=>qE,safeParse:()=>kE,safeEncodeAsync:()=>uE,safeEncode:()=>fE,safeDecodeAsync:()=>yE,safeDecode:()=>xE,registry:()=>RU,regexes:()=>U$,regex:()=>Q4,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,property:()=>MU,promise:()=>DW,prettifyError:()=>ZI,preprocess:()=>LW,prefault:()=>Xj,positive:()=>TU,pipe:()=>uU,partialRecord:()=>nJ,parseAsync:()=>HE,parse:()=>ZE,overwrite:()=>X$,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,normalize:()=>b4,nonpositive:()=>VU,nonoptional:()=>Gj,nonnegative:()=>BU,never:()=>E1,negative:()=>FU,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,multipleOf:()=>S6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,meta:()=>NW,maxSize:()=>J6,maxLength:()=>x6,map:()=>mJ,mac:()=>JJ,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,looseRecord:()=>dJ,looseObject:()=>yJ,locales:()=>h0,literal:()=>tJ,length:()=>u6,lazy:()=>bj,ksuid:()=>LJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,iso:()=>C4,ipv6:()=>WJ,ipv4:()=>SJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,includes:()=>F4,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aS,gte:()=>n_,gt:()=>B$,globalRegistry:()=>u_,getErrorMap:()=>bG,function:()=>UW,fromJSONSchema:()=>SW,formatError:()=>v0,float64:()=>BJ,float32:()=>VJ,flattenError:()=>C0,file:()=>oJ,exactOptional:()=>Sj,enum:()=>N1,endsWith:()=>B4,encodeAsync:()=>wE,encode:()=>CE,emoji:()=>EJ,email:()=>eS,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,decodeAsync:()=>rE,decode:()=>vE,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,core:()=>i$,config:()=>Z_,coerce:()=>vj,codec:()=>sJ,clone:()=>c_,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>p,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodRealError:()=>e_,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIssueCode:()=>BG,ZodIntersection:()=>$j,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFirstPartyTypeKind:()=>Cj,ZodFile:()=>Aj,ZodExactOptional:()=>Lj,ZodError:()=>FG,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE,TimePrecision:()=>TE,NEVER:()=>FI,$output:()=>$E,$input:()=>DE,$brand:()=>VI});var JW=r(()=>{O$();O$();kO();O$();HU();kG();YL();wU();wU();qG();fU();bE();oS();pS();ZG();Z_(PU())});var CG={};x$(CG,{z:()=>wj,xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sS,util:()=>H,url:()=>UJ,uppercase:()=>T4,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,trim:()=>Z4,treeifyError:()=>bI,transform:()=>g1,toUpperCase:()=>k4,toLowerCase:()=>H4,toJSONSchema:()=>ZU,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,setErrorMap:()=>MG,set:()=>lJ,safeParseAsync:()=>qE,safeParse:()=>kE,safeEncodeAsync:()=>uE,safeEncode:()=>fE,safeDecodeAsync:()=>yE,safeDecode:()=>xE,registry:()=>RU,regexes:()=>U$,regex:()=>Q4,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,property:()=>MU,promise:()=>DW,prettifyError:()=>ZI,preprocess:()=>LW,prefault:()=>Xj,positive:()=>TU,pipe:()=>uU,partialRecord:()=>nJ,parseAsync:()=>HE,parse:()=>ZE,overwrite:()=>X$,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,normalize:()=>b4,nonpositive:()=>VU,nonoptional:()=>Gj,nonnegative:()=>BU,never:()=>E1,negative:()=>FU,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,multipleOf:()=>S6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,meta:()=>NW,maxSize:()=>J6,maxLength:()=>x6,map:()=>mJ,mac:()=>JJ,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,looseRecord:()=>dJ,looseObject:()=>yJ,locales:()=>h0,literal:()=>tJ,length:()=>u6,lazy:()=>bj,ksuid:()=>LJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,iso:()=>C4,ipv6:()=>WJ,ipv4:()=>SJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,includes:()=>F4,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aS,gte:()=>n_,gt:()=>B$,globalRegistry:()=>u_,getErrorMap:()=>bG,function:()=>UW,fromJSONSchema:()=>SW,formatError:()=>v0,float64:()=>BJ,float32:()=>VJ,flattenError:()=>C0,file:()=>oJ,exactOptional:()=>Sj,enum:()=>N1,endsWith:()=>B4,encodeAsync:()=>wE,encode:()=>CE,emoji:()=>EJ,email:()=>eS,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,default:()=>Sb,decodeAsync:()=>rE,decode:()=>vE,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,core:()=>i$,config:()=>Z_,coerce:()=>vj,codec:()=>sJ,clone:()=>c_,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>p,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodRealError:()=>e_,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIssueCode:()=>BG,ZodIntersection:()=>$j,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFirstPartyTypeKind:()=>Cj,ZodFile:()=>Aj,ZodExactOptional:()=>Lj,ZodError:()=>FG,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE,TimePrecision:()=>TE,NEVER:()=>FI,$output:()=>$E,$input:()=>DE,$brand:()=>VI});var Sb;var vG=r(()=>{JW();JW();Sb=wj});var k1=D4((Lw)=>{class WP 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 H8 extends WP{constructor(_){super(1,"commander.invalidArgument",_);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}Lw.CommanderError=WP;Lw.InvalidArgumentError=H8});var BN=D4((zw)=>{var{InvalidArgumentError:Ww}=k1();class k8{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 Ww(`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 Pw(_){let $=_.name()+(_.variadic===!0?"...":"");return _.required?"<"+$+">":"["+$+"]"}zw.Argument=k8;zw.humanReadableArgName=Pw});var PP=D4((Yw)=>{var{humanReadableArgName:Rw}=BN();class q8{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((I)=>!I._hidden),D=_._getHelpCommand();if(D&&!D._hidden)$.push(D);if(this.sortSubcommands)$.sort((I,U)=>{return I.name().localeCompare(U.name())});return $}compareOptions(_,$){let D=(I)=>{return I.short?I.short.replace(/^-/,""):I.long.replace(/^--/,"")};return D(_).localeCompare(D($))}visibleOptions(_){let $=_.options.filter((I)=>!I.hidden),D=_._getHelpOption();if(D&&!D.hidden){let I=D.short&&_._findOption(D.short),U=D.long&&_._findOption(D.long);if(!I&&!U)$.push(D);else if(D.long&&!U)$.push(_.createOption(D.long,D.description));else if(D.short&&!I)$.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 I=D.options.filter((U)=>!U.hidden);$.push(...I)}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)=>Rw(D)).join(" ");return _._name+(_._aliases[0]?"|"+_._aliases[0]:"")+(_.options.length?" [options]":"")+($?" "+$:"")}optionTerm(_){return _.flags}argumentTerm(_){return _.name()}longestSubcommandTermLength(_,$){return $.visibleCommands(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleSubcommandTerm($.subcommandTerm(I))))},0)}longestOptionTermLength(_,$){return $.visibleOptions(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(I))))},0)}longestGlobalOptionTermLength(_,$){return $.visibleGlobalOptions(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(I))))},0)}longestArgumentTermLength(_,$){return $.visibleArguments(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleArgumentTerm($.argumentTerm(I))))},0)}commandUsage(_){let $=_._name;if(_._aliases[0])$=$+"|"+_._aliases[0];let D="";for(let I=_.parent;I;I=I.parent)D=I.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(_,$),I=$.helpWidth??80;function U(L,J){return $.formatItem(L,D,J,$)}let E=[`${$.styleTitle("Usage:")} ${$.styleUsage($.commandUsage(_))}`,""],j=$.commandDescription(_);if(j.length>0)E=E.concat([$.boxWrap($.styleCommandDescription(j),I),""]);let N=$.visibleArguments(_).map((L)=>{return U($.styleArgumentTerm($.argumentTerm(L)),$.styleArgumentDescription($.argumentDescription(L)))});if(N.length>0)E=E.concat([$.styleTitle("Arguments:"),...N,""]);let A=$.visibleOptions(_).map((L)=>{return U($.styleOptionTerm($.optionTerm(L)),$.styleOptionDescription($.optionDescription(L)))});if(A.length>0)E=E.concat([$.styleTitle("Options:"),...A,""]);if($.showGlobalOptions){let L=$.visibleGlobalOptions(_).map((J)=>{return U($.styleOptionTerm($.optionTerm(J)),$.styleOptionDescription($.optionDescription(J)))});if(L.length>0)E=E.concat([$.styleTitle("Global Options:"),...L,""])}let O=$.visibleCommands(_).map((L)=>{return U($.styleSubcommandTerm($.subcommandTerm(L)),$.styleSubcommandDescription($.subcommandDescription(L)))});if(O.length>0)E=E.concat([$.styleTitle("Commands:"),...O,""]);return E.join(` +`)}displayWidth(_){return C8(_).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,I){let E=" ".repeat(2);if(!D)return E+_;let j=_.padEnd($+_.length-I.displayWidth(_)),N=2,O=(this.helpWidth??80)-$-N-2,L;if(O{let j=E.match(I);if(j===null){U.push("");return}let N=[j.shift()],A=this.displayWidth(N[0]);j.forEach((O)=>{let L=this.displayWidth(O);if(A+L<=$){N.push(O),A+=L;return}U.push(N.join(""));let J=O.trimStart();N=[J],A=this.displayWidth(J)}),U.push(N.join(""))}),U.join(` +`)}}function C8(_){let $=/\x1b\[\d*(;\d*)*m/g;return _.replace($,"")}Yw.Help=q8;Yw.stripColor=C8});var zP=D4((Vw)=>{var{InvalidArgumentError:Tw}=k1();class w8{constructor(_,$){this.flags=_,this.description=$||"",this.required=_.includes("<"),this.optional=_.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(_),this.mandatory=!1;let D=Fw(_);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 Tw(`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 v8(this.name().replace(/^no-/,""));return v8(this.name())}is(_){return this.short===_||this.long===_}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class r8{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 I=this.negativeOptions.get(D).presetArg,U=I!==void 0?I:!1;return $.negate===(U===_)}}function v8(_){return _.split("-").reduce(($,D)=>{return $+D[0].toUpperCase()+D.slice(1)})}function Fw(_){let $,D,I=/^-[^-]$/,U=/^--[^-]/,E=_.split(/[ |,]+/).concat("guard");if(I.test(E[0]))$=E.shift();if(U.test(E[0]))D=E.shift();if(!$&&I.test(E[0]))$=E.shift();if(!$&&U.test(E[0]))$=D,D=E.shift();if(E[0].startsWith("-")){let j=E[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(`${E} -- too many short flags`);if(D.test(j))throw Error(`${E} -- too many long flags`);throw Error(`${E} -- unrecognised flag format`)}if($===void 0&&g===void 0)throw Error(`option creation failed due to no flags found in '${_}'.`);return{shortFlag:$,longFlag:g}}aC.Option=W8;aC.DualOptions=J8});var z8=a6((Dv)=>{function $v(_,$){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 gv(_,$){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 E=$v(_,j),A=Math.max(_.length,j.length);if((A-E)/A>I){if(Ej.localeCompare(E)),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""}Dv.suggestSimilar=gv});var Y8=a6((Pv)=>{var Iv=A_("events").EventEmitter,UJ=A_("child_process"),R6=A_("path"),zE=A_("fs"),N_=A_("process"),{Argument:jv,humanReadableArgName:Ev}=JE(),{CommanderError:IJ}=qU(),{Help:Nv,stripColor:Av}=gJ(),{Option:R8,DualOptions:Ov}=DJ(),{suggestSimilar:G8}=z8();class EJ extends Iv{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:($)=>N_.stdout.write($),writeErr:($)=>N_.stderr.write($),outputError:($,g)=>g($),getOutHelpWidth:()=>N_.stdout.isTTY?N_.stdout.columns:void 0,getErrHelpWidth:()=>N_.stderr.isTTY?N_.stderr.columns:void 0,getOutHasColors:()=>jJ()??(N_.stdout.isTTY&&N_.stdout.hasColors?.()),getErrHasColors:()=>jJ()??(N_.stderr.isTTY&&N_.stderr.hasColors?.()),stripColor:($)=>Av($)},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(/([^ ]+) *(.*)/),E=this.createCommand(I);if(U)E.description(U),E._executableHandler=!0;if(D.isDefault)this._defaultCommandName=E._name;if(E._hidden=!!(D.noHelp||D.hidden),E._executableFile=D.executableFile||null,j)E.arguments(j);if(this._registerCommand(E),E.parent=this,E.copyInheritedSettings(this),U)return this;return E}createCommand(_){return new EJ(_)}createHelp(){return Object.assign(new Nv,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 jv(_,$)}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 IJ(_,$,g));N_.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 R8(_,$)}_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 E=this.getOptionValue(g);if(D!==null&&_.parseArg)D=this._callParseArg(_,D,E,I);else if(D!==null&&_.variadic)D=_._concatValue(D,E);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 R8)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=(E,A)=>{let O=j.exec(E);return O?O[0]:A},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(N_.versions?.electron)$.from="electron";let U=N_.execArgv??[];if(U.includes("-e")||U.includes("--eval")||U.includes("-p")||U.includes("--print"))$.from="eval"}if(_===void 0)_=N_.argv;this.rawArgs=_.slice();let g;switch($.from){case void 0:case"node":this._scriptPath=_[1],g=_.slice(2);break;case"electron":if(N_.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(zE.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 + - or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(I.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&&D===void 0)throw Error(`option creation failed due to no flags found in '${_}'.`);return{shortFlag:$,longFlag:D}}Vw.Option=w8;Vw.DualOptions=r8});var f8=D4((Hw)=>{function bw(_,$){if(Math.abs(_.length-$.length)>3)return Math.max(_.length,$.length);let D=[];for(let I=0;I<=_.length;I++)D[I]=[I];for(let I=0;I<=$.length;I++)D[0][I]=I;for(let I=1;I<=$.length;I++)for(let U=1;U<=_.length;U++){let E=1;if(_[U-1]===$[I-1])E=0;else E=1;if(D[U][I]=Math.min(D[U-1][I]+1,D[U][I-1]+1,D[U-1][I-1]+E),U>1&&I>1&&_[U-1]===$[I-2]&&_[U-2]===$[I-1])D[U][I]=Math.min(D[U][I],D[U-2][I-2]+1)}return D[_.length][$.length]}function Zw(_,$){if(!$||$.length===0)return"";$=Array.from(new Set($));let D=_.startsWith("--");if(D)_=_.slice(2),$=$.map((j)=>j.slice(2));let I=[],U=3,E=0.4;if($.forEach((j)=>{if(j.length<=1)return;let N=bw(_,j),A=Math.max(_.length,j.length);if((A-N)/A>E){if(Nj.localeCompare(N)),D)I=I.map((j)=>`--${j}`);if(I.length>1)return` +(Did you mean one of ${I.join(", ")}?)`;if(I.length===1)return` +(Did you mean ${I[0]}?)`;return""}Hw.suggestSimilar=Zw});var h8=D4((xw)=>{var qw=O_("events").EventEmitter,XP=O_("child_process"),T6=O_("path"),MN=O_("fs"),g_=O_("process"),{Argument:Cw,humanReadableArgName:vw}=BN(),{CommanderError:GP}=k1(),{Help:ww,stripColor:rw}=PP(),{Option:x8,DualOptions:fw}=zP(),{suggestSimilar:u8}=f8();class YP extends qw{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:($)=>g_.stdout.write($),writeErr:($)=>g_.stderr.write($),outputError:($,D)=>D($),getOutHelpWidth:()=>g_.stdout.isTTY?g_.stdout.columns:void 0,getErrHelpWidth:()=>g_.stderr.isTTY?g_.stderr.columns:void 0,getOutHasColors:()=>RP()??(g_.stdout.isTTY&&g_.stdout.hasColors?.()),getErrHasColors:()=>RP()??(g_.stderr.isTTY&&g_.stderr.hasColors?.()),stripColor:($)=>rw($)},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 I=$,U=D;if(typeof I==="object"&&I!==null)U=I,I=null;U=U||{};let[,E,j]=_.match(/([^ ]+) *(.*)/),N=this.createCommand(E);if(I)N.description(I),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),I)return this;return N}createCommand(_){return new YP(_)}createHelp(){return Object.assign(new ww,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 Cw(_,$)}argument(_,$,D,I){let U=this.createArgument(_,$);if(typeof D==="function")U.default(I).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,I]=_.match(/([^ ]+) *(.*)/),U=$??"display help for command",E=this.createCommand(D);if(E.helpOption(!1),I)E.arguments(I);if(U)E.description(U);return this._addImplicitHelpCommand=!0,this._helpCommand=E,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 GP(_,$,D));g_.exit(_)}action(_){let $=(D)=>{let I=this.registeredArguments.length,U=D.slice(0,I);if(this._storeOptionsAsProperties)U[I]=this;else U[I]=this.opts();return U.push(this),_.apply(this,U)};return this._actionHandler=$,this}createOption(_,$){return new x8(_,$)}_callParseArg(_,$,D,I){try{return _.parseArg($,D)}catch(U){if(U.code==="commander.invalidArgument"){let E=`${I} ${U.message}`;this.error(E,{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 $=(I)=>{return[I.name()].concat(I.aliases())},D=$(_).find((I)=>this._findCommand(I));if(D){let I=$(this._findCommand(D)).join("|"),U=$(_).join("|");throw Error(`cannot add command '${U}' as already have command '${I}'`)}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 I=(U,E,j)=>{if(U==null&&_.presetArg!==void 0)U=_.presetArg;let N=this.getOptionValue(D);if(U!==null&&_.parseArg)U=this._callParseArg(_,U,N,E);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 E=`error: option '${_.flags}' argument '${U}' is invalid.`;I(U,E,"cli")}),_.envVar)this.on("optionEnv:"+$,(U)=>{let E=`error: option '${_.flags}' value '${U}' from env '${_.envVar}' is invalid.`;I(U,E,"env")});return this}_optionEx(_,$,D,I,U){if(typeof $==="object"&&$ instanceof x8)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let E=this.createOption($,D);if(E.makeOptionMandatory(!!_.mandatory),typeof I==="function")E.default(U).argParser(I);else if(I instanceof RegExp){let j=I;I=(N,A)=>{let O=j.exec(N);return O?O[0]:A},E.default(U).argParser(I)}else E.default(I);return this.addOption(E)}option(_,$,D,I){return this._optionEx({},_,$,D,I)}requiredOption(_,$,D,I){return this._optionEx({mandatory:!0},_,$,D,I)}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(g_.versions?.electron)$.from="electron";let I=g_.execArgv??[];if(I.includes("-e")||I.includes("--eval")||I.includes("-p")||I.includes("--print"))$.from="eval"}if(_===void 0)_=g_.argv;this.rawArgs=_.slice();let D;switch($.from){case void 0:case"node":this._scriptPath=_[1],D=_.slice(2);break;case"electron":if(g_.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(MN.existsSync(_))return;let I=$?`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(O,P){let W=R6.resolve(O,P);if(zE.existsSync(W))return W;if(U.includes(R6.extname(P)))return;let z=U.find((S)=>zE.existsSync(`${W}${S}`));if(z)return`${W}${z}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let I=_._executableFile||`${this._name}-${_._name}`,j=this._executableDir||"";if(this._scriptPath){let O;try{O=zE.realpathSync(this._scriptPath)}catch{O=this._scriptPath}j=R6.resolve(R6.dirname(O),j)}if(j){let O=D(j,I);if(!O&&!_._executableFile&&this._scriptPath){let P=R6.basename(this._scriptPath,R6.extname(this._scriptPath));if(P!==this._name)O=D(j,`${P}-${_._name}`)}I=O||I}g=U.includes(R6.extname(I));let E;if(N_.platform!=="win32")if(g)$.unshift(I),$=X8(N_.execArgv).concat($),E=UJ.spawn(N_.argv[0],$,{stdio:"inherit"});else E=UJ.spawn(I,$,{stdio:"inherit"});else this._checkForMissingExecutable(I,j,_._name),$.unshift(I),$=X8(N_.execArgv).concat($),E=UJ.spawn(N_.execPath,$,{stdio:"inherit"});if(!E.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((P)=>{N_.on(P,()=>{if(E.killed===!1&&E.exitCode===null)E.kill(P)})});let A=this._exitCallback;E.on("close",(O)=>{if(O=O??1,!A)N_.exit(O);else A(new IJ(O,"commander.executeSubCommandAsync","(close)"))}),E.on("error",(O)=>{if(O.code==="ENOENT")this._checkForMissingExecutable(I,j,_._name);else if(O.code==="EACCES")throw Error(`'${I}' not executable`);if(!A)N_.exit(1);else{let P=new IJ(1,"commander.executeSubCommandAsync","(error)");P.nestedError=O,A(P)}}),this.runningCommand=E}_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(E){return E.length>1&&E[0]==="-"}let j=null;while(D.length){let E=D.shift();if(E==="--"){if(U===g)U.push(E);U.push(...D);break}if(j&&!I(E)){this.emit(`option:${j.name()}`,E);continue}if(j=null,I(E)){let A=this._findOption(E);if(A){if(A.required){let O=D.shift();if(O===void 0)this.optionMissingArgument(A);this.emit(`option:${A.name()}`,O)}else if(A.optional){let O=null;if(D.length>0&&!I(D[0]))O=D.shift();this.emit(`option:${A.name()}`,O)}else this.emit(`option:${A.name()}`);j=A.variadic?A:null;continue}}if(E.length>2&&E[0]==="-"&&E[1]!=="-"){let A=this._findOption(`-${E[1]}`);if(A){if(A.required||A.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${A.name()}`,E.slice(2));else this.emit(`option:${A.name()}`),D.unshift(`-${E.slice(2)}`);continue}}if(/^--[^=]+=/.test(E)){let A=E.indexOf("="),O=this._findOption(E.slice(0,A));if(O&&(O.required||O.optional)){this.emit(`option:${O.name()}`,E.slice(A+1));continue}}if(I(E))U=g;if((this._enablePositionalOptions||this._passThroughOptions)&&$.length===0&&g.length===0){if(this._findCommand(E)){if($.push(E),D.length>0)g.push(...D);break}else if(this._getHelpCommand()&&E===this._getHelpCommand().name()){if($.push(E),D.length>0)$.push(...D);break}else if(this._defaultCommandName){if(g.push(E),D.length>0)g.push(...D);break}}if(this._passThroughOptions){if(U.push(E),D.length>0)U.push(...D);break}U.push(E)}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(`${_} + - ${I}`;throw Error(U)}_executeSubCommand(_,$){$=$.slice();let D=!1,I=[".js",".ts",".tsx",".mjs",".cjs"];function U(O,L){let J=T6.resolve(O,L);if(MN.existsSync(J))return J;if(I.includes(T6.extname(L)))return;let P=I.find((z)=>MN.existsSync(`${J}${z}`));if(P)return`${J}${P}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let E=_._executableFile||`${this._name}-${_._name}`,j=this._executableDir||"";if(this._scriptPath){let O;try{O=MN.realpathSync(this._scriptPath)}catch{O=this._scriptPath}j=T6.resolve(T6.dirname(O),j)}if(j){let O=U(j,E);if(!O&&!_._executableFile&&this._scriptPath){let L=T6.basename(this._scriptPath,T6.extname(this._scriptPath));if(L!==this._name)O=U(j,`${L}-${_._name}`)}E=O||E}D=I.includes(T6.extname(E));let N;if(g_.platform!=="win32")if(D)$.unshift(E),$=y8(g_.execArgv).concat($),N=XP.spawn(g_.argv[0],$,{stdio:"inherit"});else N=XP.spawn(E,$,{stdio:"inherit"});else this._checkForMissingExecutable(E,j,_._name),$.unshift(E),$=y8(g_.execArgv).concat($),N=XP.spawn(g_.execPath,$,{stdio:"inherit"});if(!N.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((L)=>{g_.on(L,()=>{if(N.killed===!1&&N.exitCode===null)N.kill(L)})});let A=this._exitCallback;N.on("close",(O)=>{if(O=O??1,!A)g_.exit(O);else A(new GP(O,"commander.executeSubCommandAsync","(close)"))}),N.on("error",(O)=>{if(O.code==="ENOENT")this._checkForMissingExecutable(E,j,_._name);else if(O.code==="EACCES")throw Error(`'${E}' not executable`);if(!A)g_.exit(1);else{let L=new GP(1,"commander.executeSubCommandAsync","(error)");L.nestedError=O,A(L)}}),this.runningCommand=N}_dispatchSubcommand(_,$,D){let I=this._findCommand(_);if(!I)this.help({error:!0});I._prepareForParse();let U;return U=this._chainOrCallSubCommandHook(U,I,"preSubcommand"),U=this._chainOrCall(U,()=>{if(I._executableHandler)this._executeSubCommand(I,$.concat(D));else return I._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,I,U)=>{let E=I;if(I!==null&&D.parseArg){let j=`error: command-argument value '${I}' is invalid for argument '${D.name()}'.`;E=this._callParseArg(D,I,U,j)}return E};this._checkNumberOfArguments();let $=[];this.registeredArguments.forEach((D,I)=>{let U=D.defaultValue;if(D.variadic){if(I{return _(D,j,E)},D.defaultValue)}else if(U===void 0)U=[]}else if(I$());return $()}_chainOrCallHooks(_,$){let D=_,I=[];if(this._getCommandAndAncestors().reverse().filter((U)=>U._lifeCycleHooks[$]!==void 0).forEach((U)=>{U._lifeCycleHooks[$].forEach((E)=>{I.push({hookedCommand:U,callback:E})})}),$==="postAction")I.reverse();return I.forEach((U)=>{D=this._chainOrCall(D,()=>{return U.callback(U.hookedCommand,this)})}),D}_chainOrCallSubCommandHook(_,$,D){let I=_;if(this._lifeCycleHooks[D]!==void 0)this._lifeCycleHooks[D].forEach((U)=>{I=this._chainOrCall(I,()=>{return U(this,$)})});return I}_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 I=()=>{if(D.unknown.length>0)this.unknownOption(D.unknown[0])},U=`command:${this.name()}`;if(this._actionHandler){I(),this._processArguments();let E;if(E=this._chainOrCallHooks(E,"preAction"),E=this._chainOrCall(E,()=>this._actionHandler(this.processedArgs)),this.parent)E=this._chainOrCall(E,()=>{this.parent.emit(U,_,$)});return E=this._chainOrCallHooks(E,"postAction"),E}if(this.parent&&this.parent.listenerCount(U))I(),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 I(),this._processArguments()}else if(this.commands.length)I(),this.help({error:!0});else I(),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 I=D.attributeName();if(this.getOptionValue(I)===void 0)return!1;return this.getOptionValueSource(I)!=="default"});_.filter((D)=>D.conflictsWith.length>0).forEach((D)=>{let I=_.find((U)=>D.conflictsWith.includes(U.attributeName()));if(I)this._conflictingOption(D,I)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((_)=>{_._checkForConflictingLocalOptions()})}parseOptions(_){let $=[],D=[],I=$,U=_.slice();function E(N){return N.length>1&&N[0]==="-"}let j=null;while(U.length){let N=U.shift();if(N==="--"){if(I===D)I.push(N);I.push(...U);break}if(j&&!E(N)){this.emit(`option:${j.name()}`,N);continue}if(j=null,E(N)){let A=this._findOption(N);if(A){if(A.required){let O=U.shift();if(O===void 0)this.optionMissingArgument(A);this.emit(`option:${A.name()}`,O)}else if(A.optional){let O=null;if(U.length>0&&!E(U[0]))O=U.shift();this.emit(`option:${A.name()}`,O)}else this.emit(`option:${A.name()}`);j=A.variadic?A:null;continue}}if(N.length>2&&N[0]==="-"&&N[1]!=="-"){let A=this._findOption(`-${N[1]}`);if(A){if(A.required||A.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${A.name()}`,N.slice(2));else this.emit(`option:${A.name()}`),U.unshift(`-${N.slice(2)}`);continue}}if(/^--[^=]+=/.test(N)){let A=N.indexOf("="),O=this._findOption(N.slice(0,A));if(O&&(O.required||O.optional)){this.emit(`option:${O.name()}`,N.slice(A+1));continue}}if(E(N))I=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(I.push(N),U.length>0)I.push(...U);break}I.push(N)}return{operands:$,unknown:D}}opts(){if(this._storeOptionsAsProperties){let _={},$=this.options.length;for(let D=0;D<$;D++){let I=this.options[D].attributeName();_[I]=I===this._versionOptionName?this._version:this[I]}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 N_.env){let $=_.attributeName();if(this.getOptionValue($)===void 0||["default","config","env"].includes(this.getOptionValueSource($)))if(_.required||_.optional)this.emit(`optionEnv:${_.name()}`,N_.env[_.envVar]);else this.emit(`optionEnv:${_.name()}`)}})}_parseOptionsImplied(){let _=new Ov(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(),E=this.getOptionValue(j),A=this.options.find((P)=>P.negate&&j===P.attributeName()),O=this.options.find((P)=>!P.negate&&j===P.attributeName());if(A&&(A.presetArg===void 0&&E===!1||A.presetArg!==void 0&&E===A.presetArg))return A;return O||I},U=(I)=>{let j=g(I),E=j.attributeName();if(this.getOptionValueSource(E)==="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);$=G8(_,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())}),$=G8(_,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 Ev(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=R6.basename(_,R6.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(N_.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 X8(_){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 jJ(){if(N_.env.NO_COLOR||N_.env.FORCE_COLOR==="0"||N_.env.FORCE_COLOR==="false")return!1;if(N_.env.FORCE_COLOR||N_.env.CLICOLOR_FORCE!==void 0)return!0;return}Pv.Command=EJ;Pv.useColor=jJ});var q8=a6((zv)=>{var{Argument:Q8}=JE(),{Command:NJ}=Y8(),{CommanderError:Wv,InvalidArgumentError:T8}=qU(),{Help:Jv}=gJ(),{Option:K8}=DJ();zv.program=new NJ;zv.createCommand=(_)=>new NJ(_);zv.createOption=(_,$)=>new K8(_,$);zv.createArgument=(_,$)=>new Q8(_,$);zv.Command=NJ;zv.Option=K8;zv.Argument=Q8;zv.Help=Jv;zv.CommanderError=Wv;zv.InvalidArgumentError=T8;zv.InvalidOptionArgumentError=T8});import{chmodSync as FJ,closeSync as r0,existsSync as I4,fsyncSync as kE,lstatSync as RY,openSync as CE,readFileSync as b0,renameSync as rJ,unlinkSync as vE,writeFileSync as wE}from"fs";import{randomUUID as M0}from"crypto";import{basename as GY,dirname as bJ,join as HE}from"path";import{chmodSync as GJ,existsSync as SY,mkdirSync as BE,readFileSync as LY,writeFileSync as XJ}from"fs";import{homedir as VE}from"os";import{dirname as WY,join as u_,resolve as YJ}from"path";var l$=u_(".hasna","knowledge"),QJ=u_(".hasna","apps","knowledge"),S_={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 TJ(){return{type:"s3",artifacts_root:"artifacts",s3:{bucket:S_.s3.bucket,prefix:S_.s3.prefix,region:S_.s3.region,profile:S_.s3.profile,server_side_encryption:S_.s3.server_side_encryption}}}function V0(){return u_(VE(),".open-knowledge","db.json")}function bU(){return u_(VE(),".hasna","knowledge")}function FE(_=process.cwd()){return YJ(_,l$)}function JY(){return u_(VE(),QJ)}function zY(_=process.cwd()){return YJ(_,QJ)}function rE(_,$=process.cwd()){if(_==="project"||_==="local")return g$(zY($));return g$(JY())}function g$(_){return{home:_,configPath:u_(_,"config.json"),jsonStorePath:u_(_,"db.json"),knowledgeDbPath:u_(_,"knowledge.db"),artifactsDir:u_(_,"artifacts"),cacheDir:u_(_,"cache"),exportsDir:u_(_,"exports"),indexesDir:u_(_,"indexes"),logsDir:u_(_,"logs"),runsDir:u_(_,"runs"),schemasDir:u_(_,"schemas"),wikiDir:u_(_,"wiki")}}function F0(){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 U4(_){let $=g$(_);BE($.home,{recursive:!0,mode:448});for(let g of[$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir])BE(g,{recursive:!0,mode:448});if(!SY($.configPath))XJ($.configPath,`${JSON.stringify(F0(),null,2)} -`,{mode:384}),GJ($.configPath,384);return $}function MU(_,$=process.cwd()){if(_==="project"||_==="local")return g$(FE($));return g$(bU())}function X6(_){BE(WY(_),{recursive:!0})}function bE(_){let $=LY(_,"utf8");return JSON.parse($)}function KJ(_,$){X6(_),XJ(_,`${JSON.stringify($,null,2)} -`,{mode:384}),GJ(_,384)}function HU(){return g$(bU()).jsonStorePath}function Z0(_){if(_===HU()&&I4(V0()))fE();if(!I4(_))X6(_),HJ(_,`${JSON.stringify({items:[]},null,2)} -`)}function XY(_){return _.toISOString().replace(/[:.]/g,"-")}function uE(_){let $=[`id:${_.id}`];if(typeof _.short_id==="string"&&_.short_id.length>0)$.push(`short_id:${_.short_id}`);return $}function YY(_){let $=new Set;for(let g of _)for(let U of uE(g))$.add(U);return $}function QY(_,$){return uE($).some((g)=>_.has(g))}function ME(_,$){X6(_),wE(_,`${JSON.stringify($,null,2)} -`,{mode:384}),FJ(_,384)}function qJ(_){let $=JSON.parse(b0(_,"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 fE(_={}){if(_.dryRun===!0)return BJ(_);return C$(HU(),()=>BJ(_),{createParent:!0})}function BJ(_={}){let $=_.dryRun===!0,g=_.now??new Date,U=g$(bU()),D=V0(),I=U.jsonStorePath,j=I4(D),E=I4(I),A={ok:!0,dry_run:$,legacy_path:D,canonical_path:I,legacy_exists:j,canonical_existed:E,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 A;let O;try{let L=qJ(D);O=L.store,A.skipped_invalid=L.skippedInvalid}catch(L){return A.ok=!1,A.errors.push(`Could not read legacy store: ${L instanceof Error?L.message:String(L)}`),A.message="Legacy global store import failed",A}let P={items:[]};if(E)try{P=qJ(I).store}catch(L){return A.ok=!1,A.errors.push(`Could not read canonical store: ${L instanceof Error?L.message:String(L)}`),A.message="Legacy global store import failed",A}let W=YY(P.items),z={items:[...P.items]};for(let L of O.items){if(!L?.id){A.skipped_invalid+=1;continue}if(QY(W,L)){A.skipped_existing+=1;continue}z.items.push(L);for(let J of uE(L))W.add(J);A.imported+=1}if(A.would_create_canonical=!E&&A.imported>0,A.canonical_created=!$&&A.would_create_canonical,A.message=A.imported>0?`Imported ${A.imported} legacy item(s) into canonical knowledge store`:"Legacy global store already imported",$||A.imported===0)return A;let S=`${XY(g)}-${M0().slice(0,8)}`;if(E)A.backup_path=HE(U.exportsDir,`legacy-open-knowledge-db-before-import-${S}.json`),ME(A.backup_path,P);return ME(I,z),A.report_path=HE(U.runsDir,`legacy-open-knowledge-import-${S}.json`),ME(A.report_path,A),A}function s6(_){if(!I4(_))return{exists:!1,items:[]};let $=b0(_,"utf8"),g=JSON.parse($);if(!g||!Array.isArray(g.items))return{exists:!0,items:[]};return{exists:!0,items:g.items}}function TY(_){return`${_}.lock`}var ZU=1e4,MJ=25,VJ=120000,KY=new Int32Array(new SharedArrayBuffer(4));function xE(_){return typeof _==="object"&&_!==null&&"code"in _?String(_.code):void 0}function ZJ(_){let $=null;try{$=CE(bJ(_),"r"),kE($)}catch{}finally{if($!==null)try{r0($)}catch{}}}var ZE=new Set;function HJ(_,$){X6(_);let g=HE(bJ(_),`.${GY(_)}.tmp.${M0()}`),U=null;try{U=CE(g,"wx",384),wE(U,$),kE(U),r0(U),U=null,rJ(g,_);try{FJ(_,384)}catch{}ZJ(_)}catch(D){if(U!==null)try{r0(U)}catch{}try{vE(g)}catch{}throw D}}function kJ(_){Atomics.wait(KY,0,0,_)}function qY(_){if(typeof _!=="number"||!Number.isInteger(_)||_<=0)return!1;try{return process.kill(_,0),!0}catch($){return xE($)!=="ESRCH"}}function CJ(_,$){try{let g=b0(_,"utf8"),U=JSON.parse(g);if(typeof U.ts==="number")return $-U.ts>VJ&&!qY(U.pid)}catch{}try{return $-RY(_).mtimeMs>VJ}catch{return!1}}function BY(_){let $=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z"),g=`${_}.stale.${$}.${M0()}`;try{rJ(_,g)}catch(U){if(xE(U)!=="ENOENT")throw U;return}}function VY(_){let $=M0(),g=`${_}.breaker`,U=Date.now();while(Date.now()-U{U=I};while(Date.now()-gfY)return null;g=HY(_,"utf8")}catch{return null}let U=nY(g);for(let D of $){let I=U.get(D)?.trim();if(I)return I}return null}function j4(_,$,g){if(!cY.test(g))return;throw new k0(_,`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 dY=Symbol.for("nodejs.util.inspect.custom");function E4(_){let{apiKey:$,...g}=_,U={...g};return Object.defineProperty(U,"apiKey",{value:$,enumerable:!1,writable:!1,configurable:!1}),Object.defineProperty(U,dY,{value:()=>({...g,apiKey:"[redacted]"}),enumerable:!1,writable:!1,configurable:!1}),U}function mY(_,$){return j4(_,"explicit apiKey option",$),E4({apiKey:$,tier:"argument",source:"explicit apiKey option",deliberate:!0,deprecated:!1,diskCandidates:[],warning:null})}function hJ(_,$){for(let g of $){let U=_[g]?.trim();if(U)return{key:g,value:U}}return null}var nJ=Symbol.for("hasna:contracts:credentialDeprecationNotices");function iY(){let _=globalThis,$=_[nJ];if($ instanceof Set)return $;let g=new Set;return _[nJ]=g,g}function lY(_){if(typeof process<"u"&&process.stderr)process.stderr.write(`${_} -`)}function nE(_,$,g={}){let{apiKeyKeys:U}=lJ(_),D=tJ(_,$),I=g.apiKey?.trim();if(I)return j4(_,"the explicit apiKey argument",I),E4({apiKey:I,tier:"argument",source:"explicit apiKey argument",deliberate:!0,deprecated:!1,diskCandidates:D,warning:null});let j=ZY(_),E=$[j];if(E!==void 0){let W=E.trim();if(!W)throw new k0(_,`${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 j4(_,j,W),E4({apiKey:W,tier:"override",source:j,deliberate:!0,deprecated:!1,diskCandidates:D,warning:null})}let A=g.profile?.trim()||$[yE]?.trim();if(A){let W=g.profile?.trim()?"explicit profile argument":yE;if(!yY.test(A))throw new k0(_,`Profile name from ${W} is not usable in a path. Use letters, digits, dot, dash, or underscore.`,[W]);let z=oJ(_,$,A);for(let S of z){let L=cJ(S,U);if(L)return j4(_,S,L),E4({apiKey:L,tier:"profile",source:S,deliberate:!0,deprecated:!1,diskCandidates:z,warning:null})}throw new k0(_,`Profile '${A}' (from ${W}) has no ${U[0]} for '${_}'. Looked in: ${z.join(", ")||""}. `+"A profile names WHICH identity to use, so it is never resolved around \u2014 "+`create the profile's credential file or unset ${yE}.`,z)}let O=D.map((W)=>({path:W,value:cJ(W,U)})).filter((W)=>W.value!==null);if(O.length>0){let W=O[0];j4(_,W.path,W.value);let z=[...O.slice(1).filter((L)=>L.value!==W.value).map((L)=>L.path),...(()=>{let L=hJ($,U);return L&&L.value!==W.value?[L.key]:[]})()],S=z.length>0?`Credential sources disagree for '${_}': ${W.path} and ${z.join(", ")} hold different keys. ${W.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 E4({apiKey:W.value,tier:"disk",source:W.path,deliberate:!1,deprecated:!1,diskCandidates:D,warning:S})}let P=hJ($,U);if(P){j4(_,P.key,P.value);let W=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.",z=`[${_}] DEPRECATED: the API key came from ${P.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. ${W}`,S=g.onDeprecation??lY,L=iY();if(!L.has(_))L.add(_),S(z);return E4({apiKey:P.value,tier:"legacy-env",source:P.key,deliberate:!1,deprecated:!0,diskCandidates:D,warning:z})}return null}var Y6="HASNA_FLEET_API_DOMAIN",N4="your-deployment.example",mE=/[\u0000-\u001f\u007f]/,pJ=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;function kU(_){if(_.length===0||_.length>253||mE.test(_)||/[^\x00-\x7f]/.test(_))return!1;return _.split(".").every(($)=>$.length<=63&&!$.startsWith("xn--")&&pJ.test($))}function tY(_){let $=_[Y6];if($===void 0)return{domain:N4,source:"default",misconfigured:!0,warning:`${Y6} is not set; using the non-resolving ${N4} fallback.`};let g=$.trim().toLowerCase();if(mE.test($)||!kU(g))return{domain:N4,source:Y6,misconfigured:!0,warning:`${Y6} is blank or invalid; using the non-resolving ${N4} fallback.`};return{domain:g,source:Y6,misconfigured:!1,warning:null}}function eJ(_){if(_.length>63||!pJ.test(_))throw Error("App name must be one lowercase DNS label.");return _}function oY(_,$){let g=`${eJ(_)}.${$}`;if(!kU(g))throw Error("Composed cloud hostname must be a valid DNS domain");return g}function pY(_,$){let g=eJ(_),U=tY($),D=`${g}.${U.domain}`;if(kU(D))return{baseUrl:`https://${D}`,source:U.source,misconfigured:U.misconfigured,warning:U.warning};return{baseUrl:`https://${oY(g,N4)}`,source:U.source,misconfigured:!0,warning:`${Y6} cannot form a valid composed cloud hostname for app '${g}'; using the non-resolving ${N4} fallback.`}}function cE(_,$,g={}){for(let U of $){let D=_[U],I=D?.trim();if(I)return{key:U,value:g.preserveRaw?D:I}}return null}function eY(_){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 dJ(_){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 aY(_){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.");dJ(U.slice(1))}if(xJ($.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 E=_.slice(U+1);dJ(E),$=_.slice(0,U)}else $=_;let D=xJ($),j=$.split(".").every((E)=>/^(?:0x[0-9a-f]+|[0-9]+)$/i.test(E));if(D!==4&&j||D!==4&&!kU($.toLowerCase()))throw Error("API URL authority must contain a canonical ASCII hostname.")}return $.toLowerCase()}function sY(_){return/^(?:localhost|127\.0\.0\.1|\[::1\])(?::[0-9]+)?$/i.test(_)}function aJ(_){if(mE.test(_))throw Error("API URL must not contain ASCII control characters.");let $=_.trim(),g=eY($);if(g.includes("@")||g.includes("\\")||g.includes("%")||/[^\x00-\x7f]/.test(g))throw Error("API URL authority must be canonical ASCII without credentials.");let U=aY(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:"&&!sY(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 _Q(_,$=process.env,g={}){let U=lJ(_),D=cE($,U.modeKeys),I=cE($,U.apiUrlKeys,{preserveRaw:!0}),j=cE($,U.apiKeyKeys),E="sqlite",A="default",O=[],P;if(D)E=MY(D.value).mode,A=D.key;else if(I){if(P=nE(_,$,g.credentials),P)E="postgres",A=`${I.key}+${P.source}`}if(E==="sqlite")return{transport:"sqlite",mode:E,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:Boolean(j),apiKeySource:j?j.key:null,apiKeyTier:null,misconfigured:!1,warning:O.length>0?O.join(" "):null};if(P===void 0)P=nE(_,$,g.credentials);if(!P){let L=sJ(_,$);return O.push(`${A}=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 ${L}, then for ${U.apiKeyKeys[0]} in the environment.`),{transport:"sqlite",mode:E,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!1,apiKeySource:null,apiKeyTier:null,misconfigured:!0,warning:O.join(" ")}}if(P.warning)O.push(P.warning);let W=null,z=I?.key??($[Y6]===void 0?"default":Y6),S;try{if(!I)W=pY(_,$),z=W.source;let L=I?.value??W.baseUrl;S=aJ(L)}catch(L){let J=L instanceof Error?L.message:String(L);return O.push(`Invalid API URL from ${z}: ${J}. Using local store.`),{transport:"sqlite",mode:E,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!0,apiKeySource:P.source,apiKeyTier:P.tier,misconfigured:!0,warning:O.join(" ")}}if(W?.warning)O.push(W.warning);return{transport:"http",mode:E,modeSource:A,baseUrl:S,apiUrlSource:z,apiKeyPresent:!0,apiKeySource:P.source,apiKeyTier:P.tier,misconfigured:W?.misconfigured??!1,warning:O.length>0?O.join(" "):null}}function sJ(_,$){let g=tJ(_,$);return g.length>0?g.join(" or "):""}class A4 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 $Q(_,$){if(typeof $==="function")return $();return mY(_,$)}function gQ(_){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 DQ=[408,425,429,500,502,503,504],UQ=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),IQ=new Set(["host",":authority","forwarded","x-forwarded-host","x-original-host"]);function mJ(_,$){if(!_)return;let g=Object.keys(_).find((U)=>IQ.has(U.trim().toLowerCase()));if(g)throw Error(`Authenticated ${$} headers must not set authority header '${g}'.`)}function jQ(_,$){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 EQ=(_)=>new Promise(($)=>setTimeout($,_));function NQ(_){let $=_.fetchImpl??((O,P)=>fetch(O,P)),g=aJ(_.baseUrl),U=_.timeoutMs??30000,D=_.sleepImpl??EQ,I=_.retry;function j(O){let P=O!==void 0?O:I;if(P===!1)return null;let W=P??{};return{retries:W.retries??2,baseDelayMs:W.baseDelayMs??200,maxDelayMs:W.maxDelayMs??2000,retryStatuses:W.retryStatuses??[...DQ]}}async function E(O,P,W,z,S,L){mJ(_.headers,"transport"),mJ(S.headers,"request");let J={"x-api-key":L.apiKey,Authorization:`Bearer ${L.apiKey}`,Accept:"application/json",..._.headers??{},...S.headers??{}};if(S.idempotencyKey)J["Idempotency-Key"]=S.idempotencyKey;let R={method:O,headers:J,redirect:"manual"};if(z!==void 0)J["Content-Type"]="application/json",R.body=JSON.stringify(z);let X=new AbortController,G=()=>X.abort();if(S.signal)if(S.signal.aborted)X.abort();else S.signal.addEventListener("abort",G,{once:!0});let B=setTimeout(()=>X.abort(),S.timeoutMs??U);R.signal=X.signal;let Q;try{Q=await $(W,R)}catch(V){let F=V instanceof Error?V:Error(String(V));if(S.signal?.aborted)return{ok:!1,retryable:!1,error:F};return{ok:!1,retryable:!0,error:F}}finally{if(clearTimeout(B),S.signal)S.signal.removeEventListener("abort",G)}let T=await Q.text(),K=void 0;if(T.length>0)try{K=JSON.parse(T)}catch{K=T}if(!Q.ok){if(Q.status>=300&&Q.status<400)return{ok:!1,retryable:!1,error:new A4(O,P,Q.status,K)};if(Q.status===401||Q.status===403)return{ok:!1,retryable:!1,error:new A4(O,P,Q.status,K,{source:L.source,tier:L.tier,guidance:gQ(L)})};let V=j(S.retry);return{ok:!1,retryable:V?V.retryStatuses.includes(Q.status):!1,error:new A4(O,P,Q.status,K)}}return{ok:!0,value:K}}async function A(O,P,W,z={}){let S=O.toUpperCase(),L=jQ(P.startsWith("/")?P:`/${P}`,z.query),J=`${g}${L}`,R=j(z.retry),X=UQ.has(S)||Boolean(z.idempotencyKey),G=R&&X?R.retries+1:1,B=$Q(_.name,_.apiKey),Q=null;for(let T=1;T<=G;T++){let K=await E(S,L,J,W,z,B);if(K.ok)return K.value;if(Q=K,!(R!==null&&X&&K.retryable&&TA("GET",O,void 0,P),post:(O,P,W)=>A("POST",O,P,W),put:(O,P,W)=>A("PUT",O,P,W),patch:(O,P,W)=>A("PATCH",O,P,W),del:(O,P,W)=>A("DELETE",O,P,W)}}function AQ(_,$=process.env,g){let U=g?.credentials,D=_Q(_,$,{...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=nE(_,$,U);if(!j)throw Error(`Client for '${_}' resolved to the http transport but no API key is available any more. Looked at ${sJ(_,$)}, then the environment. A credential file that was removed after this client was built is the usual cause.`);return j};return{transport:"http",client:NQ({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 dE(_){let $=_.replace(/^\/+|\/+$/g,"");if(!$)throw Error("resource must be a non-empty path segment");return`/${$}`}function hE(_,$){if($===void 0||$===null||`${$}`.length===0)throw Error("id must be a non-empty string");return`${dE(_)}/${encodeURIComponent(String($))}`}function OQ(){let _=globalThis;if(_.crypto?.randomUUID)return _.crypto.randomUUID();return`idmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function PQ(_){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 SQ(_){if(_&&typeof _==="object"){let $=_;for(let g of["total","count","totalCount","total_count"])if(typeof $[g]==="number")return $[g]}return null}function LQ(_){if(_&&typeof _==="object"){let $=_;for(let g of["cursor","nextCursor","next_cursor","next"])if(typeof $[g]==="string")return $[g]}return null}function WQ(_,$){return{name:_,baseUrl:$.baseUrl,transport:$,async list(g,U={}){let D=await $.get(dE(g),U);return{items:PQ(D),total:SQ(D),cursor:LQ(D),raw:D}},async get(g,U,D={}){try{return await $.get(hE(g,U),D)}catch(I){if(I instanceof A4&&I.status===404)return null;throw I}},async create(g,U,D={}){let{idempotencyKey:I,...j}=D;return $.post(dE(g),U,{...j,idempotencyKey:I??OQ()})},async update(g,U,D,I={}){let{method:j="PATCH",idempotencyKey:E,...A}=I;return(j==="PUT"?$.put:$.patch)(hE(g,U),D,{...A,...E?{idempotencyKey:E}:{}})},async delete(g,U,D={}){try{await $.del(hE(g,U),void 0,D)}catch(I){if(I instanceof A4&&I.status===404)return;throw I}}}}function iE(_,$=process.env,g){let U=AQ(_,$,g);if(U.transport==="http")return{transport:"http",client:WQ(_,U.client)};return{transport:"sqlite",client:null}}function _z(_){return _.toUpperCase().replace(/-/g,"_")}function $z(_){let $=_z(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function gz(_){return`HASNA_${_z(_)}_API_KEY_OVERRIDE`}var Dz="HASNA_PROFILE";function C0(_){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 CU(_){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 Xu from"pg";class vU extends Error{scheme;port;constructor(_,$){super(_);this.name="KnowledgeNetworkGuardError",this.scheme=$.scheme,this.port=$.port}}function O4(_=process.env){return(_.NODE_ENV??"").trim().toLowerCase()==="test"}function Uz(_){let $=_.split(".");if($.length!==4)return!1;if(!$.every((g)=>/^\d{1,3}$/.test(g)&&Number(g)<=255))return!1;return $[0]==="127"}function XQ(_){let $=_.trim().toLowerCase();if($.length===0)return!1;if($==="localhost"||$.endsWith(".localhost"))return!0;if(Uz($))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)&&Uz(U))return!0;return/^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(g)}function Ez(_){if(typeof _==="string")return _;if(_ instanceof URL)return _.href;return _.url}function Iz(_,$=process.env){if(!O4($))return;let g=Ez(_),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(XQ(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 YQ=new Set([301,302,303,307,308]),jz=5;function QQ(_,$){if($?.method)return $.method.toUpperCase();if(typeof _!=="string"&&!(_ instanceof URL))return _.method.toUpperCase();return"GET"}async function wU(_,$){if(Iz(_),!O4()||$?.redirect!==void 0)return fetch(_,$);let g=Ez(_),U=QQ(_,$),D=$?.body,I=await fetch(_,{...$??{},redirect:"manual"});for(let j=0;YQ.has(I.status);j++){let E=I.headers.get("location");if(!E)return I;let A=new URL(E,g).href;if(Iz(A),j>=jz){let P=new URL(A);throw new vU(`knowledge: refused to follow more than ${jz} 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:P.protocol.replace(":",""),port:P.port})}if(I.status===303||(I.status===301||I.status===302)&&U!=="GET"&&U!=="HEAD")U="GET",D=void 0;let O={...$??{},method:U,redirect:"manual"};if(D===void 0)delete O.body;else O.body=D;I=await fetch(A,O),g=A}return I}var v0="knowledge",lE=$z(v0),o$=lE.modeKeys,fU=lE.apiUrlKeys,xU=lE.apiKeyKeys;function uU(_,$){return $.filter((g)=>(_[g]??"").trim().length>0)}function w0(_=process.env){let $=[...uU(_,fU),...uU(_,xU)],g=o$[0];for(let U of o$){let D=_[U]?.trim();if(!D)continue;let I;try{I=CU(D)}catch(E){let A=E instanceof Error?E.message:String(E);throw Error(`knowledge: ${U}=${D} is not a valid mode. ${A} Unset ${U} to use the default sqlite backend, or set ${U}=sqlite or ${U}=postgres.`)}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 TQ=["postgres"],KQ=["sqlite"],Nz=new Map;function Az(_,$,g){let U=$===C0;if(U){let D=Nz.get(_);if(D!==void 0)return D}for(let D of _)try{if($(D),U)Nz.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 qQ(_=C0){return Az(TQ,_,"SERVER_MODE_CANDIDATES")}function BQ(_=C0){return Az(KQ,_,"LOCAL_MODE_CANDIDATES")}function VQ(_,$=C0){return _==="postgres"?qQ($):BQ($)}function tE(_,$){return{..._,[o$[0]]:VQ($)}}class Oz 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 Pz(_=process.env,$={}){let g=w0(_);if($.storePathOverridden)return g;if(g.source.kind!=="default")return g;let U=uU(_,fU);if(U.length===0)return g;throw new Oz(U)}function Sz(_=process.env){let $=w0(_);return{...$,store_transport:$.mode==="postgres"?"api":"local",api_key_present:uU(_,xU).length>0,network_guard_active:O4(_)}}function oE(_){return Boolean(_&&typeof _==="object"&&_.query_capability==="hasna.knowledge.bounded-query.v1")}function Lz(_){return{fetchImpl:wU,...O4(_)?{retry:!1}:{}}}var p$="notes";class P4 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"}}class eE extends Error{operation;fields;code="bounded_query_capability_required";constructor(_,$){super(`bounded_query_capability_required: the Knowledge server did not prove support for ${_} field(s): ${$.join(", ")}. Refusing to accept a possibly unfiltered response; update the server and retry.`);this.operation=_;this.fields=$;this.name="KnowledgeBoundedQueryCapabilityError"}}function FQ(_){let $={};if(_.search)$.filter=_.search,$.search=_.search;if(_.tags?.length)$.tags=_.tags;if(_.archive){if($.archive=_.archive,_.archive==="all")$.includeArchived=!0}if(_.sort)$.sort=_.sort;if(_.direction)$.direction=_.direction;if(_.limit!==void 0)$.limit=_.limit;if(_.offset!==void 0)$.offset=_.offset;return $}function rQ(_){let $=[];if(_.tags?.length)$.push("tags");if(_.sort!==void 0)$.push("sort");if(_.direction!==void 0)$.push("direction");if(_.archive==="archived")$.push("archive=archived");return $}function yU(_,$,g,U,D){let I=_??$;if(!Number.isFinite(I)||!Number.isInteger(I)||ID)throw Error(`${g} must be an integer between ${U} and ${D}.`);return I}function bQ(_){return{baseUrl:_.baseUrl,async list($={}){let g=yU($.limit,200,"limit",1,200),U=yU($.offset,0,"offset",0,1e4),D=FQ({...$,limit:g,offset:U}),I=await _.list(p$,{query:D});if(!Number.isInteger(I.total)||Number(I.total)<0)throw Error("knowledge cloud list response is missing a valid producer total.");let j=rQ($);if(j.length>0&&!oE(I.raw))throw new eE("list",j);return{items:I.items,total:Number(I.total)}},async search($){let g=yU($.limit,20,"limit",1,200),U=yU($.offset,0,"offset",0,1e4),D=await _.transport.get(`/${p$}/search`,{query:{q:$.query,archive:$.archive??"active",limit:g,offset:U}});if(!Number.isInteger(D.total)||D.total<0||!Array.isArray(D.items)||D.items.some((I)=>!I||typeof I!=="object"||!I.item||typeof I.rank!=="number"||!Number.isFinite(I.rank)))throw Error("knowledge cloud search response is missing producer rank or total evidence.");if(!oE(D))throw new eE("search",["q","rank","total"]);return{items:D.items,total:D.total}},async get($){return _.get(p$,$)},async create($){return _.create(p$,{...$.id?{id:$.id}:{},title:$.title,content:$.content,url:$.url??null,tags:$.tags??[],...$.metadata?{metadata:$.metadata}:{}})},async update($,g,U={}){try{return await _.update(p$,$,g,{...U.expectedVersion!==void 0?{headers:{"if-match":String(U.expectedVersion)}}:{}})}catch(D){if(pE(D))return null;let I=MQ(D);if(I)throw I;throw D}},async delete($){let g=await _.get(p$,$);if(!g)return!1;return await _.delete(p$,g.id),!0},async listVersions($,g={}){try{return await _.transport.get(`/${p$}/${encodeURIComponent($)}/versions`,{query:{limit:g.limit,offset:g.offset}})}catch(U){if(pE(U))return null;throw U}},async getVersion($,g){try{return await _.transport.get(`/${p$}/${encodeURIComponent($)}/versions/${g}`)}catch(U){if(pE(U))return null;throw U}}}}function MQ(_){if(!_||typeof _!=="object")return null;if(_.status!==409)return null;let $=_.body,U=(typeof $==="string"?ZQ($):$)??{};if(U.error!=="version_conflict")return null;return new P4(Number(U.expected??0),Number(U.current??0))}function ZQ(_){try{return JSON.parse(_)}catch{return null}}function pE(_){return Boolean(_&&typeof _==="object"&&_.status===404)}function u0(_=process.env){let $=kQ(_);return $?bQ($):null}function HQ(_){let $={..._};return delete $.HOME,delete $.USERPROFILE,delete $[Dz],delete $[gz(v0)],$}function kQ(_,$={}){if(w0(_).mode!=="postgres")return null;let g=$.guarded?HQ(_):_,U=iE(v0,tE(g,"postgres"),Lz(g));if(U.transport!=="http")return null;return U.client}function Q6(_=process.env){if(w0(_).mode!=="postgres")return!1;return iE(v0,tE(_,"postgres"),Lz(_)).transport==="http"}async function cU(_){let g=[];for(let U=0;;U+=200){let{items:D}=await _.list({archive:"all",limit:200,offset:U});if(g.push(...D),D.length<200)break;if(U>1e5)break}return g}class sE 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 aE(_,$){return _.id===$||_.short_id===$}function vQ(_,$){let g=$.trim().toLowerCase();if(!g)return!0;return _.id.toLowerCase().includes(g)||_.title.toLowerCase().includes(g)||_.content.toLowerCase().includes(g)}function wQ(_,$){if($.length===0)return!0;let g=new Set((_.tags??[]).map((U)=>U.toLowerCase()));return $.every((U)=>{let D=U.trim().toLowerCase(),I=U.split(",").map((j)=>j.trim().toLowerCase()).filter(Boolean);return D.length>0&&g.has(D)||I.length>0&&I.every((j)=>g.has(j))})}function uQ(_,$,g,U){let D=g==="title"?_.title.localeCompare($.title):_.created_at.localeCompare($.created_at),I=D===0?_.id.localeCompare($.id):D;return U==="desc"?-I:I}function Wz(_,$,g,U,D){let I=_??$;if(!Number.isFinite(I)||!Number.isInteger(I)||ID)throw Error(`${g} must be an integer between ${U} and ${D}.`);return I}function fQ(_,$){let g=$.archive??"active",U=$.sort??"created",D=$.direction??"asc",I=Wz($.limit,50,"limit",1,200),j=Wz($.offset,0,"offset",0,1e4),E=_.filter((A)=>g==="all"||(g==="archived"?A.archived===!0:A.archived!==!0));if($.search)E=E.filter((A)=>vQ(A,$.search));if($.tags?.length)E=E.filter((A)=>wQ(A,$.tags));return E.sort((A,O)=>uQ(A,O,U,D)),{total:E.length,items:E.slice(j,j+I)}}class Jz{storePath;kind="local";supportsVersions=!1;constructor(_){this.storePath=_}async listVersions(){throw new sE(this.storePath)}async getVersion(){throw new sE(this.storePath)}get location(){return this.storePath}get exists(){return CQ(this.storePath)}async list(_={}){let $=s6(this.storePath);return{...fQ($.items,_),exists:$.exists}}async listAll(){let _=s6(this.storePath);return{items:_.items,total:_.items.length,exists:_.exists}}async get(_){return s6(this.storePath).items.find((g)=>aE(g,_))??null}async create(_){return C$(this.storePath,()=>{let $=H0(this.storePath),g=new Date().toISOString(),U=_.id??uJ(),D={id:U,short_id:fJ(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 C$(this.storePath,()=>{let U=H0(this.storePath),D=U.items.findIndex((E)=>aE(E,_));if(D===-1)return null;let I=U.items[D],j=I.version??1;if(g.expectedVersion!==void 0&&g.expectedVersion!==j)throw new P4(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 C$(this.storePath,()=>{let $=H0(this.storePath),g=$.items.length;$.items=$.items.filter((D)=>!aE(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 C$(this.storePath,()=>{let g=H0(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 zz{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 list(_={}){let $=await this.cloud.list({search:_.search,tags:_.tags,archive:_.archive,sort:_.sort,direction:_.direction,limit:_.limit,offset:_.offset});return{items:$.items,total:$.total,exists:!0}}async listAll(){let _=await cU(this.cloud);return{items:_,total:_.length,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 hU(_){let $=_.storePathOverridden?null:u0(_.env??process.env);if($)return new zz($);return new Jz(_.storePath)}function Rz(_){let $=_??"";if($==="")return[];return $.replace(/\n$/,"").split(` -`)}var _N=5000;function xQ(_,$){let g=Rz(_),U=Rz($);if(g.length>_N||U.length>_N)throw Error(`Refusing to line-diff ${Math.max(g.length,U.length)} lines (limit ${_N}). 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 A=g.length-1;A>=0;A-=1)for(let O=U.length-1;O>=0;O-=1)D[A][O]=g[A]===U[O]?D[A+1][O+1]+1:Math.max(D[A+1][O],D[A][O+1]);let I=[],j=0,E=0;while(j=D[j][E+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:E+1,text:U[E]}),E+=1;while(j{if(!yQ(_[E],$[E]))g.push({field:E,from:_[E]??null,to:$[E]??null})};U("title"),U("url"),U("tags"),U("metadata"),U("archived");let D=xQ(_.content,$.content),I=D.filter((E)=>E.op==="add").length,j=D.filter((E)=>E.op==="remove").length;return{identical:g.length===0&&I===0&&j===0,fields:g,content:D,added:I,removed:j}}function Xz(_,$,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 Yz}from"bun:sqlite";function nU(_="catalog"){if(Q6()){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 cQ="porter unicode61 remove_diacritics 2",Qz=` +`),this.outputHelp({error:!0});let D=$||{},I=D.exitCode||1,U=D.code||"commander.error";this._exit(I,U,_)}_parseOptionsEnv(){this.options.forEach((_)=>{if(_.envVar&&_.envVar in g_.env){let $=_.attributeName();if(this.getOptionValue($)===void 0||["default","config","env"].includes(this.getOptionValueSource($)))if(_.required||_.optional)this.emit(`optionEnv:${_.name()}`,g_.env[_.envVar]);else this.emit(`optionEnv:${_.name()}`)}})}_parseOptionsImplied(){let _=new fw(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((I)=>!$(I)).forEach((I)=>{this.setOptionValueWithSource(I,D.implied[I],"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=(E)=>{let j=E.attributeName(),N=this.getOptionValue(j),A=this.options.find((L)=>L.negate&&j===L.attributeName()),O=this.options.find((L)=>!L.negate&&j===L.attributeName());if(A&&(A.presetArg===void 0&&N===!1||A.presetArg!==void 0&&N===A.presetArg))return A;return O||E},I=(E)=>{let j=D(E),N=j.attributeName();if(this.getOptionValueSource(N)==="env")return`environment variable '${j.envVar}'`;return`option '${j.flags}'`},U=`error: ${I(_)} cannot be used with ${I($)}`;this.error(U,{code:"commander.conflictingOption"})}unknownOption(_){if(this._allowUnknownOption)return;let $="";if(_.startsWith("--")&&this._showSuggestionAfterError){let I=[],U=this;do{let E=U.createHelp().visibleOptions(U).filter((j)=>j.long).map((j)=>j.long);I=I.concat(E),U=U.parent}while(U&&!U._enablePositionalOptions);$=u8(_,I)}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 I=[];this.createHelp().visibleCommands(this).forEach((U)=>{if(I.push(U.name()),U.alias())I.push(U.alias())}),$=u8(_,I)}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 I=this.createOption($,D);return this._versionOptionName=I.attributeName(),this._registerOption(I),this.on("option:"+I.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 I=[D.name()].concat(D.aliases()).join("|");throw Error(`cannot add alias '${_}' to command '${this.name()}' as already have command '${I}'`)}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 vw(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=T6.basename(_,T6.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 I=$.formatHelp(this,$);if(D.hasColors)return I;return this._outputConfiguration.stripColor(I)}_getOutputContext(_){_=_||{};let $=!!_.error,D,I,U;if($)D=(j)=>this._outputConfiguration.writeErr(j),I=this._outputConfiguration.getErrHasColors(),U=this._outputConfiguration.getErrHelpWidth();else D=(j)=>this._outputConfiguration.writeOut(j),I=this._outputConfiguration.getOutHasColors(),U=this._outputConfiguration.getOutHelpWidth();return{error:$,write:(j)=>{if(!I)j=this._outputConfiguration.stripColor(j);return D(j)},hasColors:I,helpWidth:U}}outputHelp(_){let $;if(typeof _==="function")$=_,_=void 0;let D=this._getOutputContext(_),I={error:D.error,write:D.write,command:this};this._getCommandAndAncestors().reverse().forEach((E)=>E.emit("beforeAllHelp",I)),this.emit("beforeHelp",I);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",I),this._getCommandAndAncestors().forEach((E)=>E.emit("afterAllHelp",I))}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(g_.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 I=`${_}Help`;return this.on(I,(U)=>{let E;if(typeof $==="function")E=$({error:U.error,command:U.command});else E=$;if(E)U.write(`${E} +`)}),this}_outputHelpIfRequested(_){let $=this._getHelpOption();if($&&_.find((I)=>$.is(I)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function y8(_){return _.map(($)=>{if(!$.startsWith("--inspect"))return $;let D,I="127.0.0.1",U="9229",E;if((E=$.match(/^(--inspect(-brk)?)$/))!==null)D=E[1];else if((E=$.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(D=E[1],/^\d+$/.test(E[3]))U=E[3];else I=E[3];else if((E=$.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)D=E[1],I=E[3],U=E[4];if(D&&U!=="0")return`${D}=${I}:${parseInt(U)+1}`;return $})}function RP(){if(g_.env.NO_COLOR||g_.env.FORCE_COLOR==="0"||g_.env.FORCE_COLOR==="false")return!1;if(g_.env.FORCE_COLOR||g_.env.CLICOLOR_FORCE!==void 0)return!0;return}xw.Command=YP;xw.useColor=RP});var m8=D4((nw)=>{var{Argument:c8}=BN(),{Command:QP}=h8(),{CommanderError:hw,InvalidArgumentError:n8}=k1(),{Help:cw}=PP(),{Option:d8}=zP();nw.program=new QP;nw.createCommand=(_)=>new QP(_);nw.createOption=(_,$)=>new d8(_,$);nw.createArgument=(_,$)=>new c8(_,$);nw.Command=QP;nw.Option=d8;nw.Argument=c8;nw.Help=cw;nw.CommanderError=hw;nw.InvalidArgumentError=n8;nw.InvalidOptionArgumentError=n8});import{chmodSync as yP,closeSync as wD,existsSync as A0,fsyncSync as dN,lstatSync as xY,openSync as mN,readFileSync as rD,renameSync as hP,unlinkSync as lN,writeFileSync as iN}from"fs";import{randomUUID as fD}from"crypto";import{basename as uY,dirname as cP,join as nN}from"path";import{chmodSync as kP,existsSync as CY,mkdirSync as rN,readFileSync as vY,writeFileSync as qP}from"fs";import{homedir as fN}from"os";import{dirname as wY,join as h_,resolve as CP}from"path";var s$=h_(".hasna","knowledge"),vP=h_(".hasna","apps","knowledge"),W_={division:"xyz",app_type:"opensource",app:"knowledge",env:"prod",local_path:s$,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 wP(){return{type:"s3",artifacts_root:"artifacts",s3:{bucket:W_.s3.bucket,prefix:W_.s3.prefix,region:W_.s3.region,profile:W_.s3.profile,server_side_encryption:W_.s3.server_side_encryption}}}function CD(){return h_(fN(),".open-knowledge","db.json")}function r1(){return h_(fN(),".hasna","knowledge")}function xN(_=process.cwd()){return CP(_,s$)}function rY(){return h_(fN(),vP)}function fY(_=process.cwd()){return CP(_,vP)}function uN(_,$=process.cwd()){if(_==="project"||_==="local")return j$(fY($));return j$(rY())}function j$(_){return{home:_,configPath:h_(_,"config.json"),jsonStorePath:h_(_,"db.json"),knowledgeDbPath:h_(_,"knowledge.db"),artifactsDir:h_(_,"artifacts"),cacheDir:h_(_,"cache"),exportsDir:h_(_,"exports"),indexesDir:h_(_,"indexes"),logsDir:h_(_,"logs"),runsDir:h_(_,"runs"),schemasDir:h_(_,"schemas"),wikiDir:h_(_,"wiki")}}function vD(){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 g0(_){let $=j$(_);rN($.home,{recursive:!0,mode:448});for(let D of[$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir])rN(D,{recursive:!0,mode:448});if(!CY($.configPath))qP($.configPath,`${JSON.stringify(vD(),null,2)} +`,{mode:384}),kP($.configPath,384);return $}function f1(_,$=process.cwd()){if(_==="project"||_==="local")return j$(xN($));return j$(r1())}function u$(_){rN(wY(_),{recursive:!0})}function yN(_){let $=vY(_,"utf8");return JSON.parse($)}function rP(_,$){u$(_),qP(_,`${JSON.stringify($,null,2)} +`,{mode:384}),kP(_,384)}function u1(){return j$(r1()).jsonStorePath}function xD(_){if(_===u1()&&A0(CD()))oN();if(!A0(_))u$(_),mP(_,`${JSON.stringify({items:[]},null,2)} +`)}function yY(_){return _.toISOString().replace(/[:.]/g,"-")}function tN(_){let $=[`id:${_.id}`];if(typeof _.short_id==="string"&&_.short_id.length>0)$.push(`short_id:${_.short_id}`);return $}function hY(_){let $=new Set;for(let D of _)for(let I of tN(D))$.add(I);return $}function cY(_,$){return tN($).some((D)=>_.has(D))}function hN(_,$){u$(_),iN(_,`${JSON.stringify($,null,2)} +`,{mode:384}),yP(_,384)}function fP(_){let $=JSON.parse(rD(_,"utf8"));if(!$||typeof $!=="object"||!Array.isArray($.items))return{store:{items:[]},skippedInvalid:0};let D={items:[]},I=0;for(let U of $.items)if(U&&typeof U==="object"&&typeof U.id==="string"&&U.id.length>0)D.items.push(U);else I+=1;return{store:D,skippedInvalid:I}}function oN(_={}){if(_.dryRun===!0)return xP(_);return y$(u1(),()=>xP(_),{createParent:!0})}function xP(_={}){let $=_.dryRun===!0,D=_.now??new Date,I=j$(r1()),U=CD(),E=I.jsonStorePath,j=A0(U),N=A0(E),A={ok:!0,dry_run:$,legacy_path:U,canonical_path:E,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 A;let O;try{let S=fP(U);O=S.store,A.skipped_invalid=S.skippedInvalid}catch(S){return A.ok=!1,A.errors.push(`Could not read legacy store: ${S instanceof Error?S.message:String(S)}`),A.message="Legacy global store import failed",A}let L={items:[]};if(N)try{L=fP(E).store}catch(S){return A.ok=!1,A.errors.push(`Could not read canonical store: ${S instanceof Error?S.message:String(S)}`),A.message="Legacy global store import failed",A}let J=hY(L.items),P={items:[...L.items]};for(let S of O.items){if(!S?.id){A.skipped_invalid+=1;continue}if(cY(J,S)){A.skipped_existing+=1;continue}P.items.push(S);for(let W of tN(S))J.add(W);A.imported+=1}if(A.would_create_canonical=!N&&A.imported>0,A.canonical_created=!$&&A.would_create_canonical,A.message=A.imported>0?`Imported ${A.imported} legacy item(s) into canonical knowledge store`:"Legacy global store already imported",$||A.imported===0)return A;let z=`${yY(D)}-${fD().slice(0,8)}`;if(N)A.backup_path=nN(I.exportsDir,`legacy-open-knowledge-db-before-import-${z}.json`),hN(A.backup_path,L);return hN(E,P),A.report_path=nN(I.runsDir,`legacy-open-knowledge-import-${z}.json`),hN(A.report_path,A),A}function U4(_){if(!A0(_))return{exists:!1,items:[]};let $=rD(_,"utf8"),D=JSON.parse($);if(!D||!Array.isArray(D.items))return{exists:!0,items:[]};return{exists:!0,items:D.items}}function nY(_){return`${_}.lock`}var x1=1e4,nP=25,uP=120000,dY=new Int32Array(new SharedArrayBuffer(4));function pN(_){return typeof _==="object"&&_!==null&&"code"in _?String(_.code):void 0}function dP(_){let $=null;try{$=mN(cP(_),"r"),dN($)}catch{}finally{if($!==null)try{wD($)}catch{}}}var cN=new Set;function mP(_,$){u$(_);let D=nN(cP(_),`.${uY(_)}.tmp.${fD()}`),I=null;try{I=mN(D,"wx",384),iN(I,$),dN(I),wD(I),I=null,hP(D,_);try{yP(_,384)}catch{}dP(_)}catch(U){if(I!==null)try{wD(I)}catch{}try{lN(D)}catch{}throw U}}function lP(_){Atomics.wait(dY,0,0,_)}function mY(_){if(typeof _!=="number"||!Number.isInteger(_)||_<=0)return!1;try{return process.kill(_,0),!0}catch($){return pN($)!=="ESRCH"}}function iP(_,$){try{let D=rD(_,"utf8"),I=JSON.parse(D);if(typeof I.ts==="number")return $-I.ts>uP&&!mY(I.pid)}catch{}try{return $-xY(_).mtimeMs>uP}catch{return!1}}function lY(_){let $=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z"),D=`${_}.stale.${$}.${fD()}`;try{hP(_,D)}catch(I){if(pN(I)!=="ENOENT")throw I;return}}function iY(_){let $=fD(),D=`${_}.breaker`,I=Date.now();while(Date.now()-I{I=E};while(Date.now()-DEQ)return null;D=sY(_,"utf8")}catch{return null}let I=OQ(D);for(let U of $){let E=I.get(U)?.trim();if(E)return E}return null}function O0(_,$,D){if(!gQ.test(D))return;throw new yD(_,`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 LQ=Symbol.for("nodejs.util.inspect.custom");function L0(_){let{apiKey:$,...D}=_,I={...D};return Object.defineProperty(I,"apiKey",{value:$,enumerable:!1,writable:!1,configurable:!1}),Object.defineProperty(I,LQ,{value:()=>({...D,apiKey:"[redacted]"}),enumerable:!1,writable:!1,configurable:!1}),I}function SQ(_,$){return O0(_,"explicit apiKey option",$),L0({apiKey:$,tier:"argument",source:"explicit apiKey option",deliberate:!0,deprecated:!1,diskCandidates:[],warning:null})}function $z(_,$){for(let D of $){let I=_[D]?.trim();if(I)return{key:D,value:I}}return null}var Dz=Symbol.for("hasna:contracts:credentialDeprecationNotices");function JQ(){let _=globalThis,$=_[Dz];if($ instanceof Set)return $;let D=new Set;return _[Dz]=D,D}function WQ(_){if(typeof process<"u"&&process.stderr)process.stderr.write(`${_} +`)}function _g(_,$,D={}){let{apiKeyKeys:I}=jz(_),U=Nz(_,$),E=D.apiKey?.trim();if(E)return O0(_,"the explicit apiKey argument",E),L0({apiKey:E,tier:"argument",source:"explicit apiKey argument",deliberate:!0,deprecated:!1,diskCandidates:U,warning:null});let j=aY(_),N=$[j];if(N!==void 0){let J=N.trim();if(!J)throw new yD(_,`${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 O0(_,j,J),L0({apiKey:J,tier:"override",source:j,deliberate:!0,deprecated:!1,diskCandidates:U,warning:null})}let A=D.profile?.trim()||$[eN]?.trim();if(A){let J=D.profile?.trim()?"explicit profile argument":eN;if(!NQ.test(A))throw new yD(_,`Profile name from ${J} is not usable in a path. Use letters, digits, dot, dash, or underscore.`,[J]);let P=gz(_,$,A);for(let z of P){let S=_z(z,I);if(S)return O0(_,z,S),L0({apiKey:S,tier:"profile",source:z,deliberate:!0,deprecated:!1,diskCandidates:P,warning:null})}throw new yD(_,`Profile '${A}' (from ${J}) has no ${I[0]} for '${_}'. Looked in: ${P.join(", ")||""}. `+"A profile names WHICH identity to use, so it is never resolved around \u2014 "+`create the profile's credential file or unset ${eN}.`,P)}let O=U.map((J)=>({path:J,value:_z(J,I)})).filter((J)=>J.value!==null);if(O.length>0){let J=O[0];O0(_,J.path,J.value);let P=[...O.slice(1).filter((S)=>S.value!==J.value).map((S)=>S.path),...(()=>{let S=$z($,I);return S&&S.value!==J.value?[S.key]:[]})()],z=P.length>0?`Credential sources disagree for '${_}': ${J.path} and ${P.join(", ")} hold different keys. ${J.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 L0({apiKey:J.value,tier:"disk",source:J.path,deliberate:!1,deprecated:!1,diskCandidates:U,warning:z})}let L=$z($,I);if(L){O0(_,L.key,L.value);let J=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.",P=`[${_}] 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. ${J}`,z=D.onDeprecation??WQ,S=JQ();if(!S.has(_))S.add(_),z(P);return L0({apiKey:L.value,tier:"legacy-env",source:L.key,deliberate:!1,deprecated:!0,diskCandidates:U,warning:P})}return null}var V6="HASNA_FLEET_API_DOMAIN",S0="your-deployment.example",Dg=/[\u0000-\u001f\u007f]/,Az=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;function y1(_){if(_.length===0||_.length>253||Dg.test(_)||/[^\x00-\x7f]/.test(_))return!1;return _.split(".").every(($)=>$.length<=63&&!$.startsWith("xn--")&&Az.test($))}function PQ(_){let $=_[V6];if($===void 0)return{domain:S0,source:"default",misconfigured:!0,warning:`${V6} is not set; using the non-resolving ${S0} fallback.`};let D=$.trim().toLowerCase();if(Dg.test($)||!y1(D))return{domain:S0,source:V6,misconfigured:!0,warning:`${V6} is blank or invalid; using the non-resolving ${S0} fallback.`};return{domain:D,source:V6,misconfigured:!1,warning:null}}function Oz(_){if(_.length>63||!Az.test(_))throw Error("App name must be one lowercase DNS label.");return _}function zQ(_,$){let D=`${Oz(_)}.${$}`;if(!y1(D))throw Error("Composed cloud hostname must be a valid DNS domain");return D}function XQ(_,$){let D=Oz(_),I=PQ($),U=`${D}.${I.domain}`;if(y1(U))return{baseUrl:`https://${U}`,source:I.source,misconfigured:I.misconfigured,warning:I.warning};return{baseUrl:`https://${zQ(D,S0)}`,source:I.source,misconfigured:!0,warning:`${V6} cannot form a valid composed cloud hostname for app '${D}'; using the non-resolving ${S0} fallback.`}}function aN(_,$,D={}){for(let I of $){let U=_[I],E=U?.trim();if(E)return{key:I,value:D.preserveRaw?U:E}}return null}function GQ(_){let $=/^[a-z][a-z0-9+.-]*:\/\//i.exec(_);if(!$)throw Error("API URL must be absolute.");let D=_.slice($[0].length),I=D.search(/[/?#]/),U=I===-1?D:D.slice(0,I);if(!U)throw Error("API URL must include a hostname.");return U}function Uz(_){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 RQ(_){let $;if(_.startsWith("[")){let D=_.indexOf("]");if(D===-1)throw Error("API URL authority must contain a canonical hostname.");$=_.slice(0,D+1);let I=_.slice(D+1);if(I){if(!I.startsWith(":"))throw Error("API URL authority must contain a canonical hostname and port.");Uz(I.slice(1))}if(aP($.slice(1,-1))!==6)throw Error("API URL authority must contain a canonical IPv6 literal.")}else{let D=_.indexOf(":"),I=_.lastIndexOf(":");if(D!==I)throw Error("IPv6 API URL authorities must use brackets.");if(I!==-1){let N=_.slice(I+1);Uz(N),$=_.slice(0,I)}else $=_;let U=aP($),j=$.split(".").every((N)=>/^(?:0x[0-9a-f]+|[0-9]+)$/i.test(N));if(U!==4&&j||U!==4&&!y1($.toLowerCase()))throw Error("API URL authority must contain a canonical ASCII hostname.")}return $.toLowerCase()}function YQ(_){return/^(?:localhost|127\.0\.0\.1|\[::1\])(?::[0-9]+)?$/i.test(_)}function Lz(_){if(Dg.test(_))throw Error("API URL must not contain ASCII control characters.");let $=_.trim(),D=GQ($);if(D.includes("@")||D.includes("\\")||D.includes("%")||/[^\x00-\x7f]/.test(D))throw Error("API URL authority must be canonical ASCII without credentials.");let I=RQ(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()!==I)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:"&&!YQ(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 E=U.pathname.replace(/\/+$/,"");if(E.endsWith("/v1"))E=E.slice(0,-3);return U.pathname=`${E}/v1`,U.toString().replace(/\/+$/,"")}function QQ(_,$=process.env,D={}){let I=jz(_),U=aN($,I.modeKeys),E=aN($,I.apiUrlKeys,{preserveRaw:!0}),j=aN($,I.apiKeyKeys),N="sqlite",A="default",O=[],L;if(U)N=eY(U.value).mode,A=U.key;else if(E){if(L=_g(_,$,D.credentials),L)N="postgres",A=`${E.key}+${L.source}`}if(N==="sqlite")return{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:Boolean(j),apiKeySource:j?j.key:null,apiKeyTier:null,misconfigured:!1,warning:O.length>0?O.join(" "):null};if(L===void 0)L=_g(_,$,D.credentials);if(!L){let S=Sz(_,$);return O.push(`${A}=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 ${S}, then for ${I.apiKeyKeys[0]} in the environment.`),{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!1,apiKeySource:null,apiKeyTier:null,misconfigured:!0,warning:O.join(" ")}}if(L.warning)O.push(L.warning);let J=null,P=E?.key??($[V6]===void 0?"default":V6),z;try{if(!E)J=XQ(_,$),P=J.source;let S=E?.value??J.baseUrl;z=Lz(S)}catch(S){let W=S instanceof Error?S.message:String(S);return O.push(`Invalid API URL from ${P}: ${W}. Using local store.`),{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:!0,warning:O.join(" ")}}if(J?.warning)O.push(J.warning);return{transport:"http",mode:N,modeSource:A,baseUrl:z,apiUrlSource:P,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:J?.misconfigured??!1,warning:O.length>0?O.join(" "):null}}function Sz(_,$){let D=Nz(_,$);return D.length>0?D.join(" or "):""}class J0 extends Error{status;method;path;body;credentialSource;credentialTier;constructor(_,$,D,I,U){let E=U?`. ${U.guidance}`:"";super(`Hasna cloud request failed: ${_} ${$} -> ${D}${E}`);this.name="HasnaHttpError",this.status=D,this.method=_,this.path=$,this.body=I,this.credentialSource=U?.source??null,this.credentialTier=U?.tier??null}}function KQ(_,$){if(typeof $==="function")return $();return SQ(_,$)}function TQ(_){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],I=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. ${I}`}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 FQ=[408,425,429,500,502,503,504],VQ=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),BQ=new Set(["host",":authority","forwarded","x-forwarded-host","x-original-host"]);function Iz(_,$){if(!_)return;let D=Object.keys(_).find((I)=>BQ.has(I.trim().toLowerCase()));if(D)throw Error(`Authenticated ${$} headers must not set authority header '${D}'.`)}function MQ(_,$){if(!$)return _;let D=$ instanceof URLSearchParams?$:new URLSearchParams;if(!($ instanceof URLSearchParams))for(let[U,E]of Object.entries($)){if(E===null||E===void 0)continue;if(Array.isArray(E))for(let j of E)D.append(U,String(j));else D.append(U,String(E))}let I=D.toString();if(!I)return _;return`${_}${_.includes("?")?"&":"?"}${I}`}var bQ=(_)=>new Promise(($)=>setTimeout($,_));function ZQ(_){let $=_.fetchImpl??((O,L)=>fetch(O,L)),D=Lz(_.baseUrl),I=_.timeoutMs??30000,U=_.sleepImpl??bQ,E=_.retry;function j(O){let L=O!==void 0?O:E;if(L===!1)return null;let J=L??{};return{retries:J.retries??2,baseDelayMs:J.baseDelayMs??200,maxDelayMs:J.maxDelayMs??2000,retryStatuses:J.retryStatuses??[...FQ]}}async function N(O,L,J,P,z,S){Iz(_.headers,"transport"),Iz(z.headers,"request");let W={"x-api-key":S.apiKey,Authorization:`Bearer ${S.apiKey}`,Accept:"application/json",..._.headers??{},...z.headers??{}};if(z.idempotencyKey)W["Idempotency-Key"]=z.idempotencyKey;let X={method:O,headers:W,redirect:"manual"};if(P!==void 0)W["Content-Type"]="application/json",X.body=JSON.stringify(P);let G=new AbortController,R=()=>G.abort();if(z.signal)if(z.signal.aborted)G.abort();else z.signal.addEventListener("abort",R,{once:!0});let K=setTimeout(()=>G.abort(),z.timeoutMs??I);X.signal=G.signal;let Y;try{Y=await $(J,X)}catch(k){let B=k instanceof Error?k:Error(String(k));if(z.signal?.aborted)return{ok:!1,retryable:!1,error:B};return{ok:!1,retryable:!0,error:B}}finally{if(clearTimeout(K),z.signal)z.signal.removeEventListener("abort",R)}let T=await Y.text(),F=void 0;if(T.length>0)try{F=JSON.parse(T)}catch{F=T}if(!Y.ok){if(Y.status>=300&&Y.status<400)return{ok:!1,retryable:!1,error:new J0(O,L,Y.status,F)};if(Y.status===401||Y.status===403)return{ok:!1,retryable:!1,error:new J0(O,L,Y.status,F,{source:S.source,tier:S.tier,guidance:TQ(S)})};let k=j(z.retry);return{ok:!1,retryable:k?k.retryStatuses.includes(Y.status):!1,error:new J0(O,L,Y.status,F)}}return{ok:!0,value:F}}async function A(O,L,J,P={}){let z=O.toUpperCase(),S=MQ(L.startsWith("/")?L:`/${L}`,P.query),W=`${D}${S}`,X=j(P.retry),G=VQ.has(z)||Boolean(P.idempotencyKey),R=X&&G?X.retries+1:1,K=KQ(_.name,_.apiKey),Y=null;for(let T=1;T<=R;T++){let F=await N(z,S,W,J,P,K);if(F.ok)return F.value;if(Y=F,!(X!==null&&G&&F.retryable&&TA("GET",O,void 0,L),post:(O,L,J)=>A("POST",O,L,J),put:(O,L,J)=>A("PUT",O,L,J),patch:(O,L,J)=>A("PATCH",O,L,J),del:(O,L,J)=>A("DELETE",O,L,J)}}function HQ(_,$=process.env,D){let I=D?.credentials,U=QQ(_,$,{...I?{credentials:I}:{}});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 E=()=>{let j=_g(_,$,I);if(!j)throw Error(`Client for '${_}' resolved to the http transport but no API key is available any more. Looked at ${Sz(_,$)}, 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:E,...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 $g(_){let $=_.replace(/^\/+|\/+$/g,"");if(!$)throw Error("resource must be a non-empty path segment");return`/${$}`}function sN(_,$){if($===void 0||$===null||`${$}`.length===0)throw Error("id must be a non-empty string");return`${$g(_)}/${encodeURIComponent(String($))}`}function kQ(){let _=globalThis;if(_.crypto?.randomUUID)return _.crypto.randomUUID();return`idmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function qQ(_){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 CQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["total","count","totalCount","total_count"])if(typeof $[D]==="number")return $[D]}return null}function vQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["cursor","nextCursor","next_cursor","next"])if(typeof $[D]==="string")return $[D]}return null}function wQ(_,$){return{name:_,baseUrl:$.baseUrl,transport:$,async list(D,I={}){let U=await $.get($g(D),I);return{items:qQ(U),total:CQ(U),cursor:vQ(U),raw:U}},async get(D,I,U={}){try{return await $.get(sN(D,I),U)}catch(E){if(E instanceof J0&&E.status===404)return null;throw E}},async create(D,I,U={}){let{idempotencyKey:E,...j}=U;return $.post($g(D),I,{...j,idempotencyKey:E??kQ()})},async update(D,I,U,E={}){let{method:j="PATCH",idempotencyKey:N,...A}=E;return(j==="PUT"?$.put:$.patch)(sN(D,I),U,{...A,...N?{idempotencyKey:N}:{}})},async delete(D,I,U={}){try{await $.del(sN(D,I),void 0,U)}catch(E){if(E instanceof J0&&E.status===404)return;throw E}}}}function Ug(_,$=process.env,D){let I=HQ(_,$,D);if(I.transport==="http")return{transport:"http",client:wQ(_,I.client)};return{transport:"sqlite",client:null}}function Jz(_){return _.toUpperCase().replace(/-/g,"_")}function Wz(_){let $=Jz(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function Pz(_){return`HASNA_${Jz(_)}_API_KEY_OVERRIDE`}var zz="HASNA_PROFILE";function hD(_){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 h1(_){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 tf from"pg";class c1 extends Error{scheme;port;constructor(_,$){super(_);this.name="KnowledgeNetworkGuardError",this.scheme=$.scheme,this.port=$.port}}function W0(_=process.env){return(_.NODE_ENV??"").trim().toLowerCase()==="test"}function Xz(_){let $=_.split(".");if($.length!==4)return!1;if(!$.every((D)=>/^\d{1,3}$/.test(D)&&Number(D)<=255))return!1;return $[0]==="127"}function yQ(_){let $=_.trim().toLowerCase();if($.length===0)return!1;if($==="localhost"||$.endsWith(".localhost"))return!0;if(Xz($))return!0;if(!$.startsWith("[")||!$.endsWith("]"))return!1;let D=$.slice(1,-1);if(D==="::1"||/^(0:){7}1$/.test(D))return!0;let I=D.split(":").pop()??"";if(/^(::ffff:|::)/.test(D)&&Xz(I))return!0;return/^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(D)}function Yz(_){if(typeof _==="string")return _;if(_ instanceof URL)return _.href;return _.url}function Gz(_,$=process.env){if(!W0($))return;let D=Yz(_),I;try{I=new URL(D)}catch{throw new c1("knowledge: refused an outbound request with an unparseable target while NODE_ENV=test. Under test, only loopback requests are permitted.",{scheme:"unknown",port:""})}if(yQ(I.hostname))return;throw new c1(`knowledge: refused a non-loopback ${I.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:I.protocol.replace(":",""),port:I.port})}var hQ=new Set([301,302,303,307,308]),Rz=5;function cQ(_,$){if($?.method)return $.method.toUpperCase();if(typeof _!=="string"&&!(_ instanceof URL))return _.method.toUpperCase();return"GET"}async function P0(_,$){if(Gz(_),!W0()||$?.redirect!==void 0)return fetch(_,$);let D=Yz(_),I=cQ(_,$),U=$?.body,E=await fetch(_,{...$??{},redirect:"manual"});for(let j=0;hQ.has(E.status);j++){let N=E.headers.get("location");if(!N)return E;let A=new URL(N,D).href;if(Gz(A),j>=Rz){let L=new URL(A);throw new c1(`knowledge: refused to follow more than ${Rz} 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(E.status===303||(E.status===301||E.status===302)&&I!=="GET"&&I!=="HEAD")I="GET",U=void 0;let O={...$??{},method:I,redirect:"manual"};if(U===void 0)delete O.body;else O.body=U;E=await fetch(A,O),D=A}return E}var cD="knowledge",Ig=Wz(cD),$6=Ig.modeKeys,d1=Ig.apiUrlKeys,m1=Ig.apiKeyKeys;function n1(_,$){return $.filter((D)=>(_[D]??"").trim().length>0)}function nD(_=process.env){let $=[...n1(_,d1),...n1(_,m1)],D=$6[0];for(let I of $6){let U=_[I]?.trim();if(!U)continue;let E;try{E=h1(U)}catch(N){let A=N instanceof Error?N.message:String(N);throw Error(`knowledge: ${I}=${U} is not a valid mode. ${A} Unset ${I} to use the default sqlite backend, or set ${I}=sqlite or ${I}=postgres.`)}let j=[];if(I!==D)j.push(`Using alias env ${I}; the canonical key is ${D}.`);if(E.mode==="sqlite"&&$.length>0)j.push(`${I}=sqlite pins the on-box store; ${$.join(", ")} are set but ignored.`);return{mode:E.mode,source:{kind:"env",name:I,value:U},pointer_env_present:$,pointer_ignored:E.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 nQ=["postgres"],dQ=["sqlite"],Qz=new Map;function Kz(_,$,D){let I=$===hD;if(I){let U=Qz.get(_);if(U!==void 0)return U}for(let U of _)try{if($(U),I)Qz.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 mQ(_=hD){return Kz(nQ,_,"SERVER_MODE_CANDIDATES")}function lQ(_=hD){return Kz(dQ,_,"LOCAL_MODE_CANDIDATES")}function iQ(_,$=hD){return _==="postgres"?mQ($):lQ($)}function Eg(_,$){return{..._,[$6[0]]:iQ($)}}class Tz extends Error{code="knowledge_mode_unset_with_api_url";constructor(_){let $=$6[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 Fz(_=process.env,$={}){let D=nD(_);if($.storePathOverridden)return D;if(D.source.kind!=="default")return D;let I=n1(_,d1);if(I.length===0)return D;throw new Tz(I)}function Vz(_=process.env){let $=nD(_);return{...$,store_transport:$.mode==="postgres"?"api":"local",api_key_present:n1(_,m1).length>0,network_guard_active:W0(_)}}function jg(_){return Boolean(_&&typeof _==="object"&&_.query_capability==="hasna.knowledge.bounded-query.v1")}function Bz(_){return{fetchImpl:P0,...W0(_)?{retry:!1}:{}}}var D6="notes";class z0 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"}}class gg extends Error{operation;fields;code="bounded_query_capability_required";constructor(_,$){super(`bounded_query_capability_required: the Knowledge server did not prove support for ${_} field(s): ${$.join(", ")}. Refusing to accept a possibly unfiltered response; update the server and retry.`);this.operation=_;this.fields=$;this.name="KnowledgeBoundedQueryCapabilityError"}}function tQ(_){let $={};if(_.search)$.filter=_.search,$.search=_.search;if(_.tags?.length)$.tags=_.tags;if(_.archive){if($.archive=_.archive,_.archive==="all")$.includeArchived=!0}if(_.sort)$.sort=_.sort;if(_.direction)$.direction=_.direction;if(_.limit!==void 0)$.limit=_.limit;if(_.offset!==void 0)$.offset=_.offset;return $}function oQ(_){let $=[];if(_.tags?.length)$.push("tags");if(_.sort!==void 0)$.push("sort");if(_.direction!==void 0)$.push("direction");if(_.archive==="archived")$.push("archive=archived");return $}function l1(_,$,D,I,U){let E=_??$;if(!Number.isFinite(E)||!Number.isInteger(E)||EU)throw Error(`${D} must be an integer between ${I} and ${U}.`);return E}function pQ(_){return{baseUrl:_.baseUrl,async list($={}){let D=l1($.limit,200,"limit",1,200),I=l1($.offset,0,"offset",0,1e4),U=tQ({...$,limit:D,offset:I}),E=await _.list(D6,{query:U});if(!Number.isInteger(E.total)||Number(E.total)<0)throw Error("knowledge cloud list response is missing a valid producer total.");let j=oQ($);if(j.length>0&&!jg(E.raw))throw new gg("list",j);return{items:E.items,total:Number(E.total)}},async search($){let D=l1($.limit,20,"limit",1,200),I=l1($.offset,0,"offset",0,1e4),U=await _.transport.get(`/${D6}/search`,{query:{q:$.query,archive:$.archive??"active",limit:D,offset:I}});if(!Number.isInteger(U.total)||U.total<0||!Array.isArray(U.items)||U.items.some((E)=>!E||typeof E!=="object"||!E.item||typeof E.rank!=="number"||!Number.isFinite(E.rank)))throw Error("knowledge cloud search response is missing producer rank or total evidence.");if(!jg(U))throw new gg("search",["q","rank","total"]);return{items:U.items,total:U.total}},async get($){return _.get(D6,$)},async create($){return _.create(D6,{...$.id?{id:$.id}:{},title:$.title,content:$.content,url:$.url??null,tags:$.tags??[],...$.metadata?{metadata:$.metadata}:{}})},async update($,D,I={}){try{return await _.update(D6,$,D,{...I.expectedVersion!==void 0?{headers:{"if-match":String(I.expectedVersion)}}:{}})}catch(U){if(Ng(U))return null;let E=eQ(U);if(E)throw E;throw U}},async delete($){let D=await _.get(D6,$);if(!D)return!1;return await _.delete(D6,D.id),!0},async listVersions($,D={}){try{return await _.transport.get(`/${D6}/${encodeURIComponent($)}/versions`,{query:{limit:D.limit,offset:D.offset}})}catch(I){if(Ng(I))return null;throw I}},async getVersion($,D){try{return await _.transport.get(`/${D6}/${encodeURIComponent($)}/versions/${D}`)}catch(I){if(Ng(I))return null;throw I}}}}function eQ(_){if(!_||typeof _!=="object")return null;if(_.status!==409)return null;let $=_.body,I=(typeof $==="string"?aQ($):$)??{};if(I.error!=="version_conflict")return null;return new z0(Number(I.expected??0),Number(I.current??0))}function aQ(_){try{return JSON.parse(_)}catch{return null}}function Ng(_){return Boolean(_&&typeof _==="object"&&_.status===404)}function dD(_=process.env){let $=_7(_);return $?pQ($):null}function sQ(_){let $={..._};return delete $.HOME,delete $.USERPROFILE,delete $[zz],delete $[Pz(cD)],$}function _7(_,$={}){if(nD(_).mode!=="postgres")return null;let D=$.guarded?sQ(_):_,I=Ug(cD,Eg(D,"postgres"),Bz(D));if(I.transport!=="http")return null;return I.client}function h$(_=process.env){if(nD(_).mode!=="postgres")return!1;return Ug(cD,Eg(_,"postgres"),Bz(_)).transport==="http"}async function i1(_){let D=[];for(let I=0;;I+=200){let{items:U}=await _.list({archive:"all",limit:200,offset:I});if(D.push(...U),U.length<200)break;if(I>1e5)break}return D}class Og 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 Ag(_,$){return _.id===$||_.short_id===$}function D7(_,$){let D=$.trim().toLowerCase();if(!D)return!0;return _.id.toLowerCase().includes(D)||_.title.toLowerCase().includes(D)||_.content.toLowerCase().includes(D)}function U7(_,$){if($.length===0)return!0;let D=new Set((_.tags??[]).map((I)=>I.toLowerCase()));return $.every((I)=>{let U=I.trim().toLowerCase(),E=I.split(",").map((j)=>j.trim().toLowerCase()).filter(Boolean);return U.length>0&&D.has(U)||E.length>0&&E.every((j)=>D.has(j))})}function I7(_,$,D,I){let U=D==="title"?_.title.localeCompare($.title):_.created_at.localeCompare($.created_at),E=U===0?_.id.localeCompare($.id):U;return I==="desc"?-E:E}function Mz(_,$,D,I,U){let E=_??$;if(!Number.isFinite(E)||!Number.isInteger(E)||EU)throw Error(`${D} must be an integer between ${I} and ${U}.`);return E}function E7(_,$){let D=$.archive??"active",I=$.sort??"created",U=$.direction??"asc",E=Mz($.limit,50,"limit",1,200),j=Mz($.offset,0,"offset",0,1e4),N=_.filter((A)=>D==="all"||(D==="archived"?A.archived===!0:A.archived!==!0));if($.search)N=N.filter((A)=>D7(A,$.search));if($.tags?.length)N=N.filter((A)=>U7(A,$.tags));return N.sort((A,O)=>I7(A,O,I,U)),{total:N.length,items:N.slice(j,j+E)}}class bz{storePath;kind="local";supportsVersions=!1;constructor(_){this.storePath=_}async listVersions(){throw new Og(this.storePath)}async getVersion(){throw new Og(this.storePath)}get location(){return this.storePath}get exists(){return $7(this.storePath)}async list(_={}){let $=U4(this.storePath);return{...E7($.items,_),exists:$.exists}}async listAll(){let _=U4(this.storePath);return{items:_.items,total:_.items.length,exists:_.exists}}async get(_){return U4(this.storePath).items.find((D)=>Ag(D,_))??null}async create(_){return y$(this.storePath,()=>{let $=uD(this.storePath),D=new Date().toISOString(),I=_.id??pP(),U={id:I,short_id:eP(I),title:_.title,content:_.content,url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:!1,created_at:D,updated_at:D,version:1};return $.items.push(U),_6(this.storePath,$),U},{createParent:!0})}async update(_,$,D={}){return y$(this.storePath,()=>{let I=uD(this.storePath),U=I.items.findIndex((N)=>Ag(N,_));if(U===-1)return null;let E=I.items[U],j=E.version??1;if(D.expectedVersion!==void 0&&D.expectedVersion!==j)throw new z0(D.expectedVersion,j);if($.title!==void 0)E.title=$.title;if($.content!==void 0)E.content=$.content;if($.url!==void 0)E.url=$.url;if($.tags!==void 0)E.tags=$.tags;if($.metadata!==void 0)E.metadata=$.metadata;if($.archived!==void 0)E.archived=$.archived;return E.updated_at=new Date().toISOString(),E.version=j+1,I.items[U]=E,_6(this.storePath,I),E},{createParent:!0})}async delete(_){return y$(this.storePath,()=>{let $=uD(this.storePath),D=$.items.length;$.items=$.items.filter((U)=>!Ag(U,_));let I=D!==$.items.length;if(I)_6(this.storePath,$);return I},{createParent:!0})}async deleteMany(_){if(_.length===0)return 0;let $=new Set(_);return y$(this.storePath,()=>{let D=uD(this.storePath),I=D.items.length;D.items=D.items.filter((E)=>!$.has(E.id)&&!(E.short_id!=null&&$.has(E.short_id)));let U=I-D.items.length;if(U>0)_6(this.storePath,D);return U},{createParent:!0})}}class Zz{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 list(_={}){let $=await this.cloud.list({search:_.search,tags:_.tags,archive:_.archive,sort:_.sort,direction:_.direction,limit:_.limit,offset:_.offset});return{items:$.items,total:$.total,exists:!0}}async listAll(){let _=await i1(this.cloud);return{items:_,total:_.length,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(_,$,D={}){return this.cloud.update(_,$,{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 t1(_){let $=_.storePathOverridden?null:dD(_.env??process.env);if($)return new Zz($);return new bz(_.storePath)}function Hz(_){let $=_??"";if($==="")return[];return $.replace(/\n$/,"").split(` +`)}var Lg=5000;function j7(_,$){let D=Hz(_),I=Hz($);if(D.length>Lg||I.length>Lg)throw Error(`Refusing to line-diff ${Math.max(D.length,I.length)} lines (limit ${Lg}). Fetch the two versions and diff them with a dedicated tool.`);let U=Array.from({length:D.length+1},()=>Array(I.length+1).fill(0));for(let A=D.length-1;A>=0;A-=1)for(let O=I.length-1;O>=0;O-=1)U[A][O]=D[A]===I[O]?U[A+1][O+1]+1:Math.max(U[A+1][O],U[A][O+1]);let E=[],j=0,N=0;while(j=U[j][N+1])E.push({op:"remove",from_line:j+1,to_line:null,text:D[j]}),j+=1;else E.push({op:"add",from_line:null,to_line:N+1,text:I[N]}),N+=1;while(j{if(!N7(_[N],$[N]))D.push({field:N,from:_[N]??null,to:$[N]??null})};I("title"),I("url"),I("tags"),I("metadata"),I("archived");let U=j7(_.content,$.content),E=U.filter((N)=>N.op==="add").length,j=U.filter((N)=>N.op==="remove").length;return{identical:D.length===0&&E===0&&j===0,fields:D,content:U,added:E,removed:j}}function qz(_,$,D){let I=[`--- ${$}`,`+++ ${D}`];if(_.identical)return I.push("(no changes)"),I.join(` +`);for(let U of _.fields)I.push(`~ ${U.field}: ${JSON.stringify(U.from)} -> ${JSON.stringify(U.to)}`);if(_.added===0&&_.removed===0){if(_.fields.length>0)I.push("(content unchanged)")}else{I.push(`@@ content +${_.added} -${_.removed} @@`);for(let U of _.content){let E=U.op==="add"?"+":U.op==="remove"?"-":" ";I.push(`${E}${U.text}`)}}return I.join(` +`)}import{Database as Cz}from"bun:sqlite";function o1(_="catalog"){if(h$()){let $=$6[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 g7="porter unicode61 remove_diacritics 2",vz=` 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')); -`,hQ=` +`,A7=` 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')); -`,nQ=` +`,O7=` 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')); -`,dQ=` +`,L7=` 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')); -`,mQ=` +`,S7=` 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')); -`,Tz=` +`,wz=` 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')); -`,iQ=` +`,J7=` 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')); -`,lQ=` +`,W7=` 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')); -`,tQ=` +`,P7=` BEGIN; CREATE TEMP TABLE _chunks_fts_backup AS @@ -498,7 +498,7 @@ CREATE VIRTUAL TABLE chunks_fts USING fts5( text, title, source_uri, - tokenize='${cQ}' + tokenize='${g7}' ); 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; -`,oQ=` +`,z7=` 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 Yz(_);return $.exec("PRAGMA foreign_keys = ON;"),$.exec("PRAGMA busy_timeout = 5000;"),$}function Kz(_){return nU("reading the local knowledge.db catalog"),new Yz(_,{readonly:!0})}function c(_){let $=v(_);try{if($.exec(Qz),k_($)<2)$.exec(hQ);if(k_($)<3)$.exec(nQ);if(k_($)<4)$.exec(dQ);if(k_($)<5)$.exec(mQ);if(k_($)<6)$.exec(Tz);if(pQ($))eQ($);if(aQ($))sQ($);if(_T($))$T($);if(gT($))DT($);return{path:_,schema_version:k_($)}}finally{$.close()}}function k_(_){return _.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0}function B_(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function $N(_){return`"${_.replaceAll('"','""')}"`}function a$(_,$){let g=_.query("SELECT name FROM sqlite_master WHERE type IN ('table', 'virtual') AND name = ?").get($);return Boolean(g)}function e$(_,$,g){if(!a$(_,$))return!1;return _.query(`PRAGMA table_info(${$N($)})`).all().some((D)=>D.name===g)}function T6(_,$,g,U){if(!e$(_,$,g))_.exec(`ALTER TABLE ${$N($)} ADD COLUMN ${$N(g)} ${U};`)}function pQ(_){return k_(_)<7||!e$(_,"knowledge_sync_changes","logical_clock")||!e$(_,"knowledge_sync_changes","bundle_id")||!a$(_,"knowledge_sync_table_clocks")||!a$(_,"knowledge_sync_imports")}function eQ(_){if(!a$(_,"knowledge_sync_changes"))_.exec(Tz);T6(_,"knowledge_sync_changes","logical_clock","INTEGER NOT NULL DEFAULT 0"),T6(_,"knowledge_sync_changes","bundle_id","TEXT"),_.exec(iQ)}function aQ(_){return k_(_)<8||!e$(_,"wiki_pages","valid_from")||!e$(_,"wiki_pages","valid_to")||!e$(_,"wiki_pages","supersedes")||!e$(_,"wiki_pages","superseded_by")||!e$(_,"wiki_pages","confidence")||!e$(_,"wiki_pages","last_verified_at")}function sQ(_){if(!a$(_,"wiki_pages"))_.exec(Qz);T6(_,"wiki_pages","valid_from","TEXT"),T6(_,"wiki_pages","valid_to","TEXT"),T6(_,"wiki_pages","supersedes","TEXT"),T6(_,"wiki_pages","superseded_by","TEXT"),T6(_,"wiki_pages","confidence","REAL"),T6(_,"wiki_pages","last_verified_at","TEXT"),_.exec(` +`;function w(_){o1("opening the local knowledge.db catalog"),u$(_);let $=new Cz(_);return $.exec("PRAGMA foreign_keys = ON;"),$.exec("PRAGMA busy_timeout = 5000;"),$}function rz(_){return o1("reading the local knowledge.db catalog"),new Cz(_,{readonly:!0})}function h(_){let $=w(_);try{if($.exec(vz),f_($)<2)$.exec(A7);if(f_($)<3)$.exec(O7);if(f_($)<4)$.exec(L7);if(f_($)<5)$.exec(S7);if(f_($)<6)$.exec(wz);if(X7($))G7($);if(R7($))Y7($);if(Q7($))K7($);if(T7($))F7($);return{path:_,schema_version:f_($)}}finally{$.close()}}function f_(_){return _.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0}function M_(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function Sg(_){return`"${_.replaceAll('"','""')}"`}function I6(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type IN ('table', 'virtual') AND name = ?").get($);return Boolean(D)}function U6(_,$,D){if(!I6(_,$))return!1;return _.query(`PRAGMA table_info(${Sg($)})`).all().some((U)=>U.name===D)}function B6(_,$,D,I){if(!U6(_,$,D))_.exec(`ALTER TABLE ${Sg($)} ADD COLUMN ${Sg(D)} ${I};`)}function X7(_){return f_(_)<7||!U6(_,"knowledge_sync_changes","logical_clock")||!U6(_,"knowledge_sync_changes","bundle_id")||!I6(_,"knowledge_sync_table_clocks")||!I6(_,"knowledge_sync_imports")}function G7(_){if(!I6(_,"knowledge_sync_changes"))_.exec(wz);B6(_,"knowledge_sync_changes","logical_clock","INTEGER NOT NULL DEFAULT 0"),B6(_,"knowledge_sync_changes","bundle_id","TEXT"),_.exec(J7)}function R7(_){return f_(_)<8||!U6(_,"wiki_pages","valid_from")||!U6(_,"wiki_pages","valid_to")||!U6(_,"wiki_pages","supersedes")||!U6(_,"wiki_pages","superseded_by")||!U6(_,"wiki_pages","confidence")||!U6(_,"wiki_pages","last_verified_at")}function Y7(_){if(!I6(_,"wiki_pages"))_.exec(vz);B6(_,"wiki_pages","valid_from","TEXT"),B6(_,"wiki_pages","valid_to","TEXT"),B6(_,"wiki_pages","supersedes","TEXT"),B6(_,"wiki_pages","superseded_by","TEXT"),B6(_,"wiki_pages","confidence","REAL"),B6(_,"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(lQ)}function qz(_){let $=_.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?").get("chunks_fts");return Boolean($?.sql&&$.sql.includes("remove_diacritics"))}function _T(_){if(!a$(_,"chunks_fts"))return!1;return k_(_)<9||!qz(_)}function $T(_){if(!a$(_,"chunks_fts"))return;if(qz(_)){_.exec("INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now'));");return}_.exec(tQ)}function gT(_){return k_(_)<10||!a$(_,"knowledge_promotion_candidates")||!a$(_,"durable_knowledge_records")}function DT(_){_.exec(oQ)}function gN(_){let $=v(_);try{return{schema_version:k_($),sources:B_($,"sources"),source_revisions:B_($,"source_revisions"),chunks:B_($,"chunks"),wiki_pages:B_($,"wiki_pages"),citations:B_($,"citations"),indexes:B_($,"knowledge_indexes"),runs:B_($,"runs"),run_events:B_($,"run_events"),redaction_findings:B_($,"redaction_findings"),audit_events:B_($,"audit_events"),approval_gates:B_($,"approval_gates"),storage_objects:B_($,"storage_objects"),embeddings:B_($,"chunk_embeddings"),vector_entries:B_($,"vector_index_entries"),reindex_queue:B_($,"reindex_queue"),knowledge_machines:B_($,"knowledge_machines"),sync_snapshots:B_($,"knowledge_sync_snapshots"),sync_changes:B_($,"knowledge_sync_changes"),sync_conflicts:B_($,"knowledge_sync_conflicts"),sync_table_clocks:B_($,"knowledge_sync_table_clocks"),sync_imports:B_($,"knowledge_sync_imports"),promotion_candidates:B_($,"knowledge_promotion_candidates"),durable_records:B_($,"durable_knowledge_records")}}finally{$.close()}}import{chmodSync as UT,existsSync as IT,mkdirSync as Bz,readFileSync as jT,statSync as ET,writeFileSync as NT}from"fs";import{dirname as AT,join as DN,relative as OT,sep as PT}from"path";import{pathToFileURL as ST}from"url";function v$(_){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 UN(_,$){let g=OT(_,$);if(g.startsWith("..")||g===".."||g.startsWith(`..${PT}`))throw Error(`Artifact path escapes root: ${$}`)}function LT(_){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 Vz{root;type="local";canRead=!0;canWrite=!0;constructor(_){this.root=_;Bz(_,{recursive:!0,mode:448})}async put(_){let $=v$(_.key),g=DN(this.root,$);return UN(this.root,g),Bz(AT(g),{recursive:!0,mode:448}),NT(g,_.body,{mode:384}),UT(g,384),{key:$,uri:ST(g).href,modified_at:ET(g).mtime.toISOString()}}async getText(_){let $=v$(_),g=DN(this.root,$);return UN(this.root,g),jT(g,"utf8")}async exists(_){let $=v$(_),g=DN(this.root,$);return UN(this.root,g),IT(g)}}class Fz{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 $=v$(_),g=this.options.prefix?v$(this.options.prefix):"";return g?`${g}/${$}`:$}async put(_){let[{PutObjectCommand:$},g]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),U=v$(_.key),D=this.objectKey(U);return await g.send(new $({Bucket:this.options.bucket,Key:D,Body:_.body,ContentType:_.content_type,Metadata:LT(_.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 IN(_,$){if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)throw Error("S3 artifact storage requires storage.s3.bucket");return new Fz({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 Vz($.artifactsDir)}import{createHash as PU}from"crypto";import{spawnSync as jM}from"child_process";import{existsSync as J_,readFileSync as EM}from"fs";import{hostname as NM}from"os";import{join as c5,resolve as $9}from"path";import{createHash as xK,randomUUID as yK}from"crypto";import{createHash as TT,randomUUID as KT}from"crypto";import{existsSync as EN,readdirSync as qT}from"fs";import{join as vz}from"path";import{pathToFileURL as BT}from"url";import{existsSync as WT,mkdirSync as JT,readFileSync as zT,unlinkSync as RT,writeFileSync as GT}from"fs";import{homedir as XT}from"os";import{dirname as YT,join as rz}from"path";var jN="https://knowledge.md";function s$(_){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??rz(XT(),".hasna","knowledge");return rz($,"auth.json")}function bz(_,$=process.env){return s$($.KNOWLEDGE_API_URL??_?.hosted?.api_url??jN)}function Mz(_=process.env){try{let $=dU(_);if(!WT($))return null;let g=JSON.parse(zT($,"utf8"));return typeof g.api_key==="string"&&g.api_key.length>0?g:null}catch{return null}}function Zz(_,$=process.env){let g=dU($),U={..._,api_url:_.api_url?s$(_.api_url):void 0,created_at:_.created_at??new Date().toISOString()};return JT(YT(g),{recursive:!0,mode:448}),GT(g,`${JSON.stringify(U,null,2)} -`,{mode:384}),U}function Hz(_=process.env){try{return RT(dU(_)),!0}catch{return!1}}function QT(_=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 $=Mz(_);return $?.api_key?{apiKey:$.api_key,source:"file"}:{apiKey:null,source:"none"}}function kz(_,$=process.env){let g=Mz($),U=QT($),D=$.KNOWLEDGE_API_URL?bz(_,$):g?.api_url?s$(g.api_url):bz(_,$);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 Cz=2;var wz=[{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."}],VT=["cloud.env","knowledge.db.pre-cloud-*.bak","db.json.pre-cloud-*.bak","migration-exports"];function uz(_){let $=[];if(EN(vz(_.home,"cloud.env")))$.push("cloud.env");if(EN(vz(_.home,"migration-exports")))$.push("migration-exports");if(EN(_.home)){for(let g of qT(_.home))if(/^(?:knowledge\.db|db\.json)\.pre-cloud-.+\.bak$/i.test(g))$.push(g)}return $}function S4(_){let $=typeof _==="string"?Buffer.from(_):Buffer.from(_);return{hash:`sha256:${TT("sha256").update($).digest("hex")}`,size_bytes:$.byteLength}}function fz(_){return wz.find((g)=>_.startsWith(g.prefix))?.kind??"artifact"}function mU(_,$,g="global"){let U=NN(_,$),D=_.storage.s3??null,I=D?.prefix?.replace(/^\/+|\/+$/g,"")??"",j=D?`s3://${D.bucket}/${I?`${I}/`:""}`:"",E=S_.s3.prefix.replace(/^\/+|\/+$/g,""),A=`s3://${S_.s3.bucket}/${E}/`,O=_.storage.type==="s3"&&D?.bucket===S_.s3.bucket&&(D.region??null)===S_.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:BT(`${$.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:S_.division,app_type:S_.app_type,app:S_.app,env:S_.env,active:O,local_path:S_.local_path,s3:{bucket:S_.s3.bucket,region:S_.s3.region,profile:S_.s3.profile,prefix:E,uri_prefix:A,server_side_encryption:S_.s3.server_side_encryption},secrets:{env:S_.secrets.env,aws:S_.secrets.aws,s3:S_.secrets.s3,rds:S_.secrets.rds,future_rds:S_.secrets.future_rds},evidence_doc:S_.evidence_doc},hosted:{enabled:_.mode==="hosted",api_url:s$(_.hosted?.api_url??jN),api_url_env:"KNOWLEDGE_API_URL",api_key_env:"KNOWLEDGE_API_KEY",auth_storage:"~/.hasna/knowledge/auth.json",registry_contract_version:Cz,requires_hosted_account_for_local_use:!1},secret_handling:{workspace_env_files_supported:!1,forbidden_workspace_files:VT,forbidden_workspace_files_present:uz($),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:S_.secrets.env,aws:S_.secrets.aws,s3:S_.secrets.s3,rds:S_.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((P)=>["open-files","s3","file"].includes(P)),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:wz,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 NN(_,$){let g=[],U=[],D=uz($);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{s$(_.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 _6(_,$,g=new Date){let U=g.toISOString(),D=_.prepare(` + `),_.exec(W7)}function fz(_){let $=_.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?").get("chunks_fts");return Boolean($?.sql&&$.sql.includes("remove_diacritics"))}function Q7(_){if(!I6(_,"chunks_fts"))return!1;return f_(_)<9||!fz(_)}function K7(_){if(!I6(_,"chunks_fts"))return;if(fz(_)){_.exec("INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now'));");return}_.exec(P7)}function T7(_){return f_(_)<10||!I6(_,"knowledge_promotion_candidates")||!I6(_,"durable_knowledge_records")}function F7(_){_.exec(z7)}function Jg(_){let $=w(_);try{return{schema_version:f_($),sources:M_($,"sources"),source_revisions:M_($,"source_revisions"),chunks:M_($,"chunks"),wiki_pages:M_($,"wiki_pages"),citations:M_($,"citations"),indexes:M_($,"knowledge_indexes"),runs:M_($,"runs"),run_events:M_($,"run_events"),redaction_findings:M_($,"redaction_findings"),audit_events:M_($,"audit_events"),approval_gates:M_($,"approval_gates"),storage_objects:M_($,"storage_objects"),embeddings:M_($,"chunk_embeddings"),vector_entries:M_($,"vector_index_entries"),reindex_queue:M_($,"reindex_queue"),knowledge_machines:M_($,"knowledge_machines"),sync_snapshots:M_($,"knowledge_sync_snapshots"),sync_changes:M_($,"knowledge_sync_changes"),sync_conflicts:M_($,"knowledge_sync_conflicts"),sync_table_clocks:M_($,"knowledge_sync_table_clocks"),sync_imports:M_($,"knowledge_sync_imports"),promotion_candidates:M_($,"knowledge_promotion_candidates"),durable_records:M_($,"durable_knowledge_records")}}finally{$.close()}}import{chmodSync as V7,existsSync as B7,mkdirSync as xz,readFileSync as M7,statSync as b7,writeFileSync as Z7}from"fs";import{dirname as H7,join as Wg,relative as k7,sep as q7}from"path";import{pathToFileURL as C7}from"url";function c$(_){let $=_.replace(/\\/g,"/").trim();if(!$||$.startsWith("/"))throw Error(`Invalid artifact key: ${_}`);let D=$.split("/").filter(Boolean);if(D.length===0||D.some((I)=>I==="."||I===".."))throw Error(`Invalid artifact key: ${_}`);return D.join("/")}function Pg(_,$){let D=k7(_,$);if(D.startsWith("..")||D===".."||D.startsWith(`..${q7}`))throw Error(`Artifact path escapes root: ${$}`)}function v7(_){if(!_)return;let $={};for(let[D,I]of Object.entries(_))if(typeof I==="string")$[D]=I;else if(typeof I==="number"||typeof I==="boolean")$[D]=String(I);return Object.keys($).length>0?$:void 0}class uz{root;type="local";canRead=!0;canWrite=!0;constructor(_){this.root=_;xz(_,{recursive:!0,mode:448})}async put(_){let $=c$(_.key),D=Wg(this.root,$);return Pg(this.root,D),xz(H7(D),{recursive:!0,mode:448}),Z7(D,_.body,{mode:384}),V7(D,384),{key:$,uri:C7(D).href,modified_at:b7(D).mtime.toISOString()}}async getText(_){let $=c$(_),D=Wg(this.root,$);return Pg(this.root,D),M7(D,"utf8")}async exists(_){let $=c$(_),D=Wg(this.root,$);return Pg(this.root,D),B7(D)}}class yz{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 $=c$(_),D=this.options.prefix?c$(this.options.prefix):"";return D?`${D}/${$}`:$}async put(_){let[{PutObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),I=c$(_.key),U=this.objectKey(I);return await D.send(new $({Bucket:this.options.bucket,Key:U,Body:_.body,ContentType:_.content_type,Metadata:v7(_.metadata),ServerSideEncryption:this.options.server_side_encryption,SSEKMSKeyId:this.options.kms_key_id})),{key:I,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()]),I=this.objectKey(_),U=await D.send(new $({Bucket:this.options.bucket,Key:I}));if(!U.Body)return"";return await U.Body.transformToString()}async exists(_){let[{HeadObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),I=this.objectKey(_);try{return await D.send(new $({Bucket:this.options.bucket,Key:I})),!0}catch(U){let E=U instanceof Error?U.name:"";if(E==="NotFound"||E==="NoSuchKey"||E==="NotFoundError")return!1;throw U}}}function zg(_,$){if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)throw Error("S3 artifact storage requires storage.s3.bucket");return new yz({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 uz($.artifactsDir)}import{createHash as G1}from"crypto";import{spawnSync as qH}from"child_process";import{existsSync as X_,readFileSync as CH}from"fs";import{hostname as vH}from"os";import{join as g9,resolve as K9}from"path";import{createHash as ET,randomUUID as jT}from"crypto";import{createHash as c7,randomUUID as n7}from"crypto";import{existsSync as Rg,readdirSync as d7}from"fs";import{join as iz}from"path";import{pathToFileURL as m7}from"url";import{existsSync as w7,mkdirSync as r7,readFileSync as f7,unlinkSync as x7,writeFileSync as u7}from"fs";import{homedir as y7}from"os";import{dirname as h7,join as hz}from"path";var Xg="https://knowledge.md";function E6(_){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 e1(_=process.env){if(_.HASNA_KNOWLEDGE_AUTH_PATH)return _.HASNA_KNOWLEDGE_AUTH_PATH;let $=_.HASNA_KNOWLEDGE_AUTH_DIR??hz(y7(),".hasna","knowledge");return hz($,"auth.json")}function p1(_,$=process.env){return E6($.KNOWLEDGE_API_URL??_?.hosted?.api_url??Xg)}function cz(_=process.env){try{let $=e1(_);if(!w7($))return null;let D=JSON.parse(f7($,"utf8"));return typeof D.api_key==="string"&&D.api_key.length>0?D:null}catch{return null}}function nz(_,$=process.env){let D=e1($),I={..._,api_url:_.api_url?E6(_.api_url):void 0,created_at:_.created_at??new Date().toISOString()};return r7(h7(D),{recursive:!0,mode:448}),u7(D,`${JSON.stringify(I,null,2)} +`,{mode:384}),I}function dz(_=process.env){try{return x7(e1(_)),!0}catch{return!1}}function Gg(_=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 $=cz(_);return $?.api_key?{apiKey:$.api_key,source:"file"}:{apiKey:null,source:"none"}}function mz(_,$=process.env){let D=cz($),I=Gg($),U=$.KNOWLEDGE_API_URL?p1(_,$):D?.api_url?E6(D.api_url):p1(_,$);return{authenticated:Boolean(I.apiKey),source:I.source,api_url:U,auth_path:e1($),email:I.source==="file"?D?.email??null:null,org_id:I.source==="file"?D?.org_id??null:null,org_slug:I.source==="file"?D?.org_slug??null:null,user_id:I.source==="file"?D?.user_id??null:null,api_key_present:Boolean(I.apiKey)}}var lz=2;var tz=[{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."}],l7=["cloud.env","knowledge.db.pre-cloud-*.bak","db.json.pre-cloud-*.bak","migration-exports"];function oz(_){let $=[];if(Rg(iz(_.home,"cloud.env")))$.push("cloud.env");if(Rg(iz(_.home,"migration-exports")))$.push("migration-exports");if(Rg(_.home)){for(let D of d7(_.home))if(/^(?:knowledge\.db|db\.json)\.pre-cloud-.+\.bak$/i.test(D))$.push(D)}return $}function X0(_){let $=typeof _==="string"?Buffer.from(_):Buffer.from(_);return{hash:`sha256:${c7("sha256").update($).digest("hex")}`,size_bytes:$.byteLength}}function pz(_){return tz.find((D)=>_.startsWith(D.prefix))?.kind??"artifact"}function a1(_,$,D="global"){let I=Yg(_,$),U=_.storage.s3??null,E=U?.prefix?.replace(/^\/+|\/+$/g,"")??"",j=U?`s3://${U.bucket}/${E?`${E}/`:""}`:"",N=W_.s3.prefix.replace(/^\/+|\/+$/g,""),A=`s3://${W_.s3.bucket}/${N}/`,O=_.storage.type==="s3"&&U?.bucket===W_.s3.bucket&&(U.region??null)===W_.s3.region;return{scope:D,mode:_.mode,storage_type:_.storage.type,workspace_home:$.home,local_layout:{app_path:s$,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:m7(`${$.artifactsDir}/`).href,s3:U?{bucket:U.bucket,prefix:E,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:W_.division,app_type:W_.app_type,app:W_.app,env:W_.env,active:O,local_path:W_.local_path,s3:{bucket:W_.s3.bucket,region:W_.s3.region,profile:W_.s3.profile,prefix:N,uri_prefix:A,server_side_encryption:W_.s3.server_side_encryption},secrets:{env:W_.secrets.env,aws:W_.secrets.aws,s3:W_.secrets.s3,rds:W_.secrets.rds,future_rds:W_.secrets.future_rds},evidence_doc:W_.evidence_doc},hosted:{enabled:_.mode==="hosted",api_url:E6(_.hosted?.api_url??Xg),api_url_env:"KNOWLEDGE_API_URL",api_key_env:"KNOWLEDGE_API_KEY",auth_storage:"~/.hasna/knowledge/auth.json",registry_contract_version:lz,requires_hosted_account_for_local_use:!1},secret_handling:{workspace_env_files_supported:!1,forbidden_workspace_files:l7,forbidden_workspace_files_present:oz($),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:W_.secrets.env,aws:W_.secrets.aws,s3:W_.secrets.s3,rds:W_.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:tz,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:I.warnings}}function Yg(_,$){let D=[],I=[],U=oz($);for(let E of U)D.push(`Forbidden Knowledge workspace file present: ${E}. Move secrets to open-secrets/runtime env and remove or replace legacy backups/exports with redacted owner-only artifacts.`);if(!$.home.endsWith(s$))I.push(`Workspace home does not end with ${s$}: ${$.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)I.push("storage.s3.prefix is empty; generated knowledge artifacts will be written at the bucket root.");if(_.mode==="local")I.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)I.push("storage.s3 is configured but ignored while storage.type is local.");if(_.sources.preferred_ref!=="open-files")I.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{E6(_.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:I}}function j6(_,$,D=new Date){let I=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 E of j){let A={key:E.key,...E.modified_at?{artifact_modified_at:E.modified_at}:{},...E.metadata??{}};D.run(KT(),E.uri,E.kind,E.content_type??null,E.hash??null,E.size_bytes??null,JSON.stringify(A),U,U)}})($)}function AN(_){return["deleted","stale","invalidated","reindex_required"].includes((_??"").toLowerCase())}function K6(_){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:AN($)}}function D$(_){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 xz(_,$){return{..._,provenance:$}}import{createHash as MK}from"crypto";import{existsSync as ZK,readFileSync as HK}from"fs";import{basename as oU}from"path";import{createHash as sT}from"crypto";import{existsSync as _K,readFileSync as $K}from"fs";import{basename as gK}from"path";import{fileURLToPath as FT}from"url";function yz(_,$){if(!_)throw Error($);return _}function rT(_){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=yz(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 bT(_){let $=new URL(_),g=yz($.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 MT(_){return{kind:"file",uri:_,path:FT(_)}}function ZT(_){let $=new URL(_);return{kind:"web",uri:_,url:$.toString()}}function A$(_){if(_.startsWith("open-files://"))return rT(_);if(_.startsWith("s3://"))return bT(_);if(_.startsWith("file://"))return MT(_);if(_.startsWith("https://")||_.startsWith("http://"))return ZT(_);throw Error(`Unsupported source ref scheme: ${_}`)}function cz(_,$=A$(_)){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function hz(_){let $=A$(_);return $.kind==="open-files"&&$.entity==="file"?$.revision_id??null:null}import{createHash as HT,randomUUID as PN}from"crypto";import{relative as kT,resolve as dz,sep as CT}from"path";function nz(_){let $=process.env[_];return $==="1"||$==="true"||$==="yes"}function mz(_,$){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)=>dz(D)),readOnlySourceAccess:!0,network:{webSearchEnabled:g.safety?.network?.web_search_enabled??nz("HASNA_KNOWLEDGE_WEB_SEARCH"),s3ReadsEnabled:g.safety?.network?.s3_reads_enabled??nz("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 vT(_,$){let g=kT(_,$);return g===""||!g.startsWith("..")&&g!==".."&&!g.startsWith(`..${CT}`)}function $6(_,$){let g=dz(_);if(!$.allowWriteRoots.some((U)=>vT(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 L4(_){if(!_.network.webSearchEnabled)throw Error("Safety policy denied web search. Set safety.network.web_search_enabled=true or HASNA_KNOWLEDGE_WEB_SEARCH=1.")}var iz=[{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 w_(_,$){if($&&!$.redaction.enabled)return{text:_,findings:[]};let g=_,U=[];for(let D of iz)g=g.replace(D.regex,(I,...j)=>{let E=typeof j.at(-2)==="number"?j.at(-2):g.indexOf(I);return U.push({type:D.type,severity:D.severity,start:Math.max(0,E),end:Math.max(0,E+I.length)}),D.replacement});return{text:g,findings:U}}function wT(_){return`audit_${HT("sha256").update(`${_.event_type}\x00${_.action}\x00${_.target_uri??""}\x00${_.created_at??""}\x00${JSON.stringify(_.metadata??{})}\x00${PN()}`).digest("hex").slice(0,24)}`}function ON(_,$=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)=>ON(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]=ON(j,$+1);let D=Object.keys(_).length;if(D>U.length)g.__truncated_keys=D-U.length;return g}return String(_)}function z_(_,$){let g=$.created_at??new Date().toISOString(),U=ON($.metadata??{}),D=wT({...$,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 W4(_,$){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_${PN()}`,$.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_${PN()}`;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 uT=[{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]"}];iz.push(...uT);function fT(_,$,g){let U=_.query(`SELECT id FROM approval_gates + `);_.transaction((j)=>{for(let N of j){let A={key:N.key,...N.modified_at?{artifact_modified_at:N.modified_at}:{},...N.metadata??{}};U.run(n7(),N.uri,N.kind,N.content_type??null,N.hash??null,N.size_bytes??null,JSON.stringify(A),I,I)}})($)}function Qg(_){return["deleted","stale","invalidated","reindex_required"].includes((_??"").toLowerCase())}function M6(_){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:Qg($)}}function N$(_){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 ez(_,$){return{..._,provenance:$}}import{createHash as pK}from"crypto";import{existsSync as eK,readFileSync as aK}from"fs";import{basename as DI}from"path";import{createHash as RK}from"crypto";import{existsSync as YK,readFileSync as QK}from"fs";import{basename as KK}from"path";import{fileURLToPath as i7}from"url";function az(_,$){if(!_)throw Error($);return _}function t7(_){let D=_.slice(13).split("/").filter(Boolean),I=D[0];if(I!=="file"&&I!=="source")throw Error("Invalid open-files ref. Expected open-files://file/, open-files://file//revision/, or open-files://source//path/.");let U=az(D[1],"Invalid open-files ref. Missing id.");if(I==="file"){if(D.length===2)return{kind:"open-files",uri:_,entity:I,id:U};if(D[2]==="revision"&&D[3]&&D.length===4)return{kind:"open-files",uri:_,entity:I,id:U,revision_id:decodeURIComponent(D[3])};throw Error("Invalid open-files file ref. Expected open-files://file//revision/.")}let E=D.indexOf("path"),j=E>=0?decodeURIComponent(D.slice(E+1).join("/")):void 0;return{kind:"open-files",uri:_,entity:I,id:U,path:j}}function o7(_){let $=new URL(_),D=az($.hostname,"Invalid s3 ref. Missing bucket."),I=decodeURIComponent($.pathname.replace(/^\/+/,""));if(!I)throw Error("Invalid s3 ref. Missing object key.");return{kind:"s3",uri:_,bucket:D,key:I}}function p7(_){return{kind:"file",uri:_,path:i7(_)}}function e7(_){let $=new URL(_);return{kind:"web",uri:_,url:$.toString()}}function J$(_){if(_.startsWith("open-files://"))return t7(_);if(_.startsWith("s3://"))return o7(_);if(_.startsWith("file://"))return p7(_);if(_.startsWith("https://")||_.startsWith("http://"))return e7(_);throw Error(`Unsupported source ref scheme: ${_}`)}function sz(_,$=J$(_)){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function _3(_){let $=J$(_);return $.kind==="open-files"&&$.entity==="file"?$.revision_id??null:null}import{createHash as a7,randomUUID as Tg}from"crypto";import{relative as s7,resolve as D3,sep as _K}from"path";function $3(_){let $=process.env[_];return $==="1"||$==="true"||$==="yes"}function U3(_,$){let D=_,I=new Set(D.safety?.network?.allowed_s3_buckets??[]);if(_.storage.type==="s3"&&_.storage.s3?.bucket)I.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((E)=>E.trim()).filter(Boolean))I.add(U);return{mode:_.mode,allowWriteRoots:[$.home,$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir].map((U)=>D3(U)),readOnlySourceAccess:!0,network:{webSearchEnabled:D.safety?.network?.web_search_enabled??$3("HASNA_KNOWLEDGE_WEB_SEARCH"),s3ReadsEnabled:D.safety?.network?.s3_reads_enabled??$3("HASNA_KNOWLEDGE_ALLOW_S3_READS"),allowedS3Buckets:[...I].sort()},redaction:{enabled:D.safety?.redaction?.enabled??!0},approvals:{generatedWritesRequireApproval:D.safety?.approvals?.generated_writes_require_approval??!0}}}function $K(_,$){let D=s7(_,$);return D===""||!D.startsWith("..")&&D!==".."&&!D.startsWith(`..${_K}`)}function N6(_,$){let D=D3(_);if(!$.allowWriteRoots.some((I)=>$K(I,D)))throw Error(`Safety policy denied write outside .hasna/knowledge: ${_}`)}function b6(_,$){let I=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(I))throw Error(`Safety policy denied S3 bucket "${I}". Add it to safety.network.allowed_s3_buckets or HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.`)}function G0(_){if(!_.network.webSearchEnabled)throw Error("Safety policy denied web search. Set safety.network.web_search_enabled=true or HASNA_KNOWLEDGE_WEB_SEARCH=1.")}var I3=[{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 y_(_,$){if($&&!$.redaction.enabled)return{text:_,findings:[]};let D=_,I=[];for(let U of I3)D=D.replace(U.regex,(E,...j)=>{let N=typeof j.at(-2)==="number"?j.at(-2):D.indexOf(E);return I.push({type:U.type,severity:U.severity,start:Math.max(0,N),end:Math.max(0,N+E.length)}),U.replacement});return{text:D,findings:I}}function DK(_){return`audit_${a7("sha256").update(`${_.event_type}\x00${_.action}\x00${_.target_uri??""}\x00${_.created_at??""}\x00${JSON.stringify(_.metadata??{})}\x00${Tg()}`).digest("hex").slice(0,24)}`}function Kg(_,$=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((I)=>Kg(I,$+1));if(_.length>25)D.push(`[Truncated:${_.length-25} items]`);return D}if(typeof _==="object"){let D={},I=Object.entries(_).slice(0,50);for(let[E,j]of I)D[E]=Kg(j,$+1);let U=Object.keys(_).length;if(U>I.length)D.__truncated_keys=U-I.length;return D}return String(_)}function G_(_,$){let D=$.created_at??new Date().toISOString(),I=Kg($.metadata??{}),U=DK({...$,metadata:I,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(I),D]),U}function R0(_,$){let D=$.created_at??new Date().toISOString();for(let I of $.findings)_.run(`INSERT INTO redaction_findings (id, source_uri, run_id, severity, finding_type, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?)`,[`redact_${Tg()}`,$.source_uri??null,$.run_id??null,I.severity,I.type,JSON.stringify({...$.metadata??{},start:I.start,end:I.end}),D]);return $.findings.length}function s1(_,$){let D=$.created_at??new Date().toISOString(),I=`approval_${Tg()}`;return _.run(`INSERT INTO approval_gates (id, action, target_uri, status, reason, approved_by, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,$.action,$.target_uri??null,"approved",$.reason??null,$.approved_by??"local-cli",JSON.stringify($.metadata??{}),D,D]),{id:I,status:"approved"}}var UK=[{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]"}];I3.push(...UK);function IK(_,$,D){let I=_.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 lz(_,$,g,U){let D=g==="generated_write"&&$.approvals.generatedWritesRequireApproval,I=!D||fT(_,g,U);return{action:g,target_uri:U??null,approval_required:D,approved:I,decision:I?"allow":"requires_approval"}}import{createHash as xT}from"crypto";import{realpathSync as yT}from"fs";import{homedir as cT,tmpdir as hT}from"os";var _g=String.raw`[^\s"'<>),\]}]`,LN=String.raw`[^/\\\s"'<>]+`,pz=/file:\/\/[^\s"'<>),\]}]+/gi,nT=/\/[^\s"'<>),\]}]*\.hasna\/[^\s"'<>),\]}]*/g,ez=/(?:~|\/(?:home|Users)\/[^/\s"'<>]+)?\/?\.hasna(?:\/[^\s"'<>),\]}]*)?/gi,az=new RegExp(String.raw`/(?:home|Users)/${LN}/(?:workspace|Workspace)/${_g}*`,"g"),dT=[new RegExp(String.raw`/(?:home|Users)/${LN}(?:/${_g}*)?`,"g"),new RegExp(String.raw`(?:/private)?/var/(?:folders|tmp)/${_g}+`,"g"),new RegExp(String.raw`(?:/private)?/tmp/${_g}+`,"g"),new RegExp(String.raw`(?),\]}]+)\b/gi,_3=/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s"'<>),\]}]+/gi,mT=new Set(["content_base64"]);function iT(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function lT(_){return _.length>=4&&_!=="/"&&!/^[A-Za-z]:[\\/]?$/.test(_)}var tz=null,SN=[];function tT(){let _=new Set;for(let g of[cT(),hT()]){if(!g)continue;_.add(g);try{_.add(yT(g))}catch{}}let $=[..._].sort().join("\x00");if($===tz)return SN;return tz=$,SN=[..._].filter(lT).sort((g,U)=>U.length-g.length).map((g)=>new RegExp(`${iT(g)}(?:[/\\\\]${_g}*)?`,"g")),SN}function O$(_){return xT("sha256").update(_).digest("hex").slice(0,12)}function oT(_){return _.length<=80?_:`${_.slice(0,77)}...`}function oz(_){return/(?:^|\/)\.hasna(?:\/|$)/i.test(_)||/\b(?:knowledge\.db|db\.json|cloud\.env)\b/i.test(_)||/\bmigration-exports\//i.test(_)}function pT(_,$,g,U){for(let D of _.matchAll(pz)){let I=D[0];if(!g.allowFileSourceRefs||oz(I))U.push({type:oz(I)?"private_file_uri":"local_file_uri",severity:"high",path:$,preview:oT(I.replace(/^file:\/\/.*/,`[redacted:file-uri:${O$(I)}]`))})}for(let D of _.matchAll(ez))U.push({type:"private_hasna_path",severity:"high",path:$,preview:`[redacted:.hasna:${O$(D[0])}]`});for(let D of _.matchAll(sz))U.push({type:D[0].toLowerCase()==="cloud.env"?"workspace_env_file":"raw_database_or_export_ref",severity:"high",path:$,preview:`[redacted:${O$(D[0])}]`});for(let D of _.matchAll(_3))U.push({type:"database_url",severity:"high",path:$,preview:`[redacted:database-url:${O$(D[0])}]`});if(!g.allowPrivateWorkspaceRefs)for(let D of _.matchAll(az))U.push({type:"private_workspace_path",severity:"medium",path:$,preview:`[redacted:workspace:${O$(D[0])}]`})}function eT(_,$={},g="$"){let U=[],D=(I,j)=>{if(typeof I==="string"){pT(I,j,$,U);return}if(!I||typeof I!=="object")return;if(Array.isArray(I)){I.forEach((E,A)=>D(E,`${j}[${A}]`));return}for(let[E,A]of Object.entries(I))D(A,`${j}.${E}`)};return D(_,g),U}function $g(_,$={}){let g=eT(_,$);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 aT(_){let $=w_(_).text.replace(_3,(g)=>`[REDACTED:database-url:${O$(g)}]`).replace(pz,(g)=>`[REDACTED:local-file-uri:${O$(g)}]`).replace(nT,(g)=>`[REDACTED:local-hasna-path:${O$(g)}]`).replace(az,(g)=>`[REDACTED:private-workspace:${O$(g)}]`);for(let g of[...tT(),...dT])$=$.replace(g,(U)=>`[REDACTED:local-path:${O$(U)}]`);return $.replace(ez,(g)=>`[REDACTED:hasna-path:${O$(g)}]`).replace(sz,(g)=>`[REDACTED:private-artifact:${O$(g)}]`)}function T_(_){if(typeof _==="string")return aT(_);if(!_||typeof _!=="object")return _;if(Array.isArray(_))return _.map((g)=>T_(g));let $={};for(let[g,U]of Object.entries(_))$[g]=mT.has(g)?U:T_(U);return $}var DK=20971520,$3=1e4,UK=10;function JN(_,$){return`${_}_${sT("sha256").update($).digest("hex").slice(0,20)}`}function gg(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function E_(_){return typeof _==="string"&&_.length>0?_:void 0}function IK(_){return typeof _==="number"&&Number.isFinite(_)?_:void 0}function jK(_){let $=E_(_.source_ref)??E_(_.source_uri)??E_(_.uri);if($)return $;let g=E_(_.file_id);if(g){let I=E_(_.revision_id)??E_(_.revision),j=`open-files://file/${encodeURIComponent(g)}`;return I?`${j}/revision/${encodeURIComponent(I)}`:j}let U=E_(_.source_id),D=E_(_.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 EK(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function NK(_){let $=E_(_.extracted_text)??E_(_.text)??E_(_.content_text)??E_(_.markdown);if($!==void 0)return $;let g=_.content;return typeof g==="string"?g:null}function AK(_){let $=E_(_.extracted_text_ref)??E_(_.extracted_text_uri)??E_(_.text_ref);if($)return $;let g=gg(_.content);return E_(g?.extracted_text_ref)??E_(g?.extracted_text_uri)??null}function OK(_){let $=E_(_.path);return E_(_.title)??E_(_.name)??($?gK($):null)}function PK(_){return E_(_.hash)??E_(_.checksum)??E_(_.sha256)??null}var g3=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 D3(_){return _.toLowerCase().replace(/[\s-]+/g,"_")}function WN(_){if(Array.isArray(_))return _.map((U)=>WN(U));let $=gg(_);if(!$)return _;let g={};for(let[U,D]of Object.entries($)){if(g3.has(D3(U)))continue;g[U]=WN(D)}return g}function SK(_,$,g){return E_(_.revision_id)??E_(_.revision)??E_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??g??E_(_.updated_at)??"current"}function LK(_,$){let g={};for(let[U,D]of Object.entries(_)){if(g3.has(D3(U)))continue;g[U]=T_(WN(D))}return g.source_ref=$.sourceRef,g.source_uri=$.sourceUri,g.status=$.status,g}function WK(_,$,g={}){let U=jK(_);$g(U,{allowFileSourceRefs:g.allowFileSourceRefs===!0});let D=A$(U),I=EK(U,D),j=PK(_),E=E_(_.status)??"active";return{raw:_,sourceRef:U,sourceUri:I,kind:D.kind,title:OK(_),revision:SK(_,D,j),hash:j,extractedTextUri:AK(_),text:NK(_),metadata:LK(_,{sourceRef:U,sourceUri:I,status:E}),acl:_.permissions??_.acl??{},status:E,updatedAt:E_(_.updated_at)??$}}function JK(_){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=gg(U);if(!D)throw Error("Manifest array entries must be objects.");return D})}if($.startsWith("{"))try{let g=JSON.parse($),U=gg(g);if(!U)throw Error("Manifest object parse failed.");if(Array.isArray(U.items))return U.items.map((D)=>{let I=gg(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=gg(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=gg(JSON.parse(g));if(!U)throw Error("Manifest JSONL entries must be objects.");return U})}async function zK(_,$,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:E},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===D?$.storage.s3:void 0,W=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new E({Bucket:D,Key:I}));if(!W.Body)return"";return await W.Body.transformToString()}async function RK(_,$,g,U=DK){let D=_.startsWith("s3://")?await zK(_,$,g):(()=>{if(!_K(_))throw Error(`Manifest not found: ${_}`);return $K(_,"utf8")})(),I=Buffer.byteLength(D);if(I>U)throw Error(`Manifest input is too large: ${I} bytes exceeds ${U} byte limit.`);return D}function GK(_,$,g){let U=_.replace(/\r\n/g,` -`);if(!U.trim())return[];let D=[],I=0;while(I),\]}]`,Vg=String.raw`[^/\\\s"'<>]+`,g3=/file:\/\/[^\s"'<>),\]}]+/gi,AK=/\/[^\s"'<>),\]}]*\.hasna\/[^\s"'<>),\]}]*/g,A3=/(?:~|\/(?:home|Users)\/[^/\s"'<>]+)?\/?\.hasna(?:\/[^\s"'<>),\]}]*)?/gi,O3=new RegExp(String.raw`/(?:home|Users)/${Vg}/(?:workspace|Workspace)/${I4}*`,"g"),OK=[new RegExp(String.raw`/(?:home|Users)/${Vg}(?:/${I4}*)?`,"g"),new RegExp(String.raw`(?:/private)?/var/(?:folders|tmp)/${I4}+`,"g"),new RegExp(String.raw`(?:/private)?/tmp/${I4}+`,"g"),new RegExp(String.raw`(?),\]}]+)\b/gi,S3=/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s"'<>),\]}]+/gi,LK=new Set(["content_base64"]);function SK(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function JK(_){return _.length>=4&&_!=="/"&&!/^[A-Za-z]:[\\/]?$/.test(_)}var j3=null,Fg=[];function WK(){let _=new Set;for(let D of[NK(),gK()]){if(!D)continue;_.add(D);try{_.add(jK(D))}catch{}}let $=[..._].sort().join("\x00");if($===j3)return Fg;return j3=$,Fg=[..._].filter(JK).sort((D,I)=>I.length-D.length).map((D)=>new RegExp(`${SK(D)}(?:[/\\\\]${I4}*)?`,"g")),Fg}function W$(_){return EK("sha256").update(_).digest("hex").slice(0,12)}function PK(_){return _.length<=80?_:`${_.slice(0,77)}...`}function N3(_){return/(?:^|\/)\.hasna(?:\/|$)/i.test(_)||/\b(?:knowledge\.db|db\.json|cloud\.env)\b/i.test(_)||/\bmigration-exports\//i.test(_)}function zK(_,$,D,I){for(let U of _.matchAll(g3)){let E=U[0];if(!D.allowFileSourceRefs||N3(E))I.push({type:N3(E)?"private_file_uri":"local_file_uri",severity:"high",path:$,preview:PK(E.replace(/^file:\/\/.*/,`[redacted:file-uri:${W$(E)}]`))})}for(let U of _.matchAll(A3))I.push({type:"private_hasna_path",severity:"high",path:$,preview:`[redacted:.hasna:${W$(U[0])}]`});for(let U of _.matchAll(L3))I.push({type:U[0].toLowerCase()==="cloud.env"?"workspace_env_file":"raw_database_or_export_ref",severity:"high",path:$,preview:`[redacted:${W$(U[0])}]`});for(let U of _.matchAll(S3))I.push({type:"database_url",severity:"high",path:$,preview:`[redacted:database-url:${W$(U[0])}]`});if(!D.allowPrivateWorkspaceRefs)for(let U of _.matchAll(O3))I.push({type:"private_workspace_path",severity:"medium",path:$,preview:`[redacted:workspace:${W$(U[0])}]`})}function XK(_,$={},D="$"){let I=[],U=(E,j)=>{if(typeof E==="string"){zK(E,j,$,I);return}if(!E||typeof E!=="object")return;if(Array.isArray(E)){E.forEach((N,A)=>U(N,`${j}[${A}]`));return}for(let[N,A]of Object.entries(E))U(A,`${j}.${N}`)};return U(_,D),I}function E4(_,$={}){let D=XK(_,$);if(D.length===0)return;let I=new Map;for(let E of D)I.set(E.type,(I.get(E.type)??0)+1);let U=[...I.entries()].map(([E,j])=>`${E}:${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 GK(_){let $=y_(_).text.replace(S3,(D)=>`[REDACTED:database-url:${W$(D)}]`).replace(g3,(D)=>`[REDACTED:local-file-uri:${W$(D)}]`).replace(AK,(D)=>`[REDACTED:local-hasna-path:${W$(D)}]`).replace(O3,(D)=>`[REDACTED:private-workspace:${W$(D)}]`);for(let D of[...WK(),...OK])$=$.replace(D,(I)=>`[REDACTED:local-path:${W$(I)}]`);return $.replace(A3,(D)=>`[REDACTED:hasna-path:${W$(D)}]`).replace(L3,(D)=>`[REDACTED:private-artifact:${W$(D)}]`)}function F_(_){if(typeof _==="string")return GK(_);if(!_||typeof _!=="object")return _;if(Array.isArray(_))return _.map((D)=>F_(D));let $={};for(let[D,I]of Object.entries(_))$[D]=LK.has(D)?I:F_(I);return $}var TK=20971520,J3=1e4,FK=10;function Mg(_,$){return`${_}_${RK("sha256").update($).digest("hex").slice(0,20)}`}function j4(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function N_(_){return typeof _==="string"&&_.length>0?_:void 0}function VK(_){return typeof _==="number"&&Number.isFinite(_)?_:void 0}function BK(_){let $=N_(_.source_ref)??N_(_.source_uri)??N_(_.uri);if($)return $;let D=N_(_.file_id);if(D){let E=N_(_.revision_id)??N_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return E?`${j}/revision/${encodeURIComponent(E)}`:j}let I=N_(_.source_id),U=N_(_.path);if(I&&U)return`open-files://source/${encodeURIComponent(I)}/path/${encodeURIComponent(U)}`;throw Error("Manifest item is missing source_ref, file_id, or source_id/path.")}function MK(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function bK(_){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 ZK(_){let $=N_(_.extracted_text_ref)??N_(_.extracted_text_uri)??N_(_.text_ref);if($)return $;let D=j4(_.content);return N_(D?.extracted_text_ref)??N_(D?.extracted_text_uri)??null}function HK(_){let $=N_(_.path);return N_(_.title)??N_(_.name)??($?KK($):null)}function kK(_){return N_(_.hash)??N_(_.checksum)??N_(_.sha256)??null}var W3=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 P3(_){return _.toLowerCase().replace(/[\s-]+/g,"_")}function Bg(_){if(Array.isArray(_))return _.map((I)=>Bg(I));let $=j4(_);if(!$)return _;let D={};for(let[I,U]of Object.entries($)){if(W3.has(P3(I)))continue;D[I]=Bg(U)}return D}function qK(_,$,D){return N_(_.revision_id)??N_(_.revision)??N_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??N_(_.updated_at)??"current"}function CK(_,$){let D={};for(let[I,U]of Object.entries(_)){if(W3.has(P3(I)))continue;D[I]=F_(Bg(U))}return D.source_ref=$.sourceRef,D.source_uri=$.sourceUri,D.status=$.status,D}function vK(_,$,D={}){let I=BK(_);E4(I,{allowFileSourceRefs:D.allowFileSourceRefs===!0});let U=J$(I),E=MK(I,U),j=kK(_),N=N_(_.status)??"active";return{raw:_,sourceRef:I,sourceUri:E,kind:U.kind,title:HK(_),revision:qK(_,U,j),hash:j,extractedTextUri:ZK(_),text:bK(_),metadata:CK(_,{sourceRef:I,sourceUri:E,status:N}),acl:_.permissions??_.acl??{},status:N,updatedAt:N_(_.updated_at)??$}}function wK(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Manifest array parse failed.");return D.map((I)=>{let U=j4(I);if(!U)throw Error("Manifest array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),I=j4(D);if(!I)throw Error("Manifest object parse failed.");if(Array.isArray(I.items))return I.items.map((U)=>{let E=j4(U);if(!E)throw Error("Manifest items entries must be objects.");return E});if("source_ref"in I||"source_uri"in I||"file_id"in I)return[I]}catch(D){let I=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(I.length<=1)throw D;return I.map((U)=>{let E=j4(JSON.parse(U));if(!E)throw Error("Manifest JSONL entries must be objects.");return E})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let I=j4(JSON.parse(D));if(!I)throw Error("Manifest JSONL entries must be objects.");return I})}async function rK(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 manifest URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,J=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!J.Body)return"";return await J.Body.transformToString()}async function fK(_,$,D,I=TK){let U=_.startsWith("s3://")?await rK(_,$,D):(()=>{if(!YK(_))throw Error(`Manifest not found: ${_}`);return QK(_,"utf8")})(),E=Buffer.byteLength(U);if(E>I)throw Error(`Manifest input is too large: ${E} bytes exceeds ${I} byte limit.`);return U}function xK(_,$,D){let I=_.replace(/\r\n/g,` +`);if(!I.trim())return[];let U=[],E=0;while(EI+Math.floor($*0.5))E=W+(W===O?2:1)}let A=U.slice(I,E).trim();if(A)D.push({ordinal:D.length,text:A,startOffset:I,endOffset:E});if(E>=U.length)break;I=Math.max(0,E-g)}return D}function XK(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function YK(_,$){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 QK(_,$,g){let U=JN("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) +`,j),L=I.lastIndexOf(". ",j),J=Math.max(O,L);if(J>E+Math.floor($*0.5))N=J+(J===O?2:1)}let A=I.slice(E,N).trim();if(A)U.push({ordinal:U.length,text:A,startOffset:E,endOffset:N});if(N>=I.length)break;E=Math.max(0,N-D)}return U}function uK(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function yK(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($);for(let I of D)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[I.id]);return _.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]),D.length}function hK(_,$,D){let I=Mg("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 TK(_,$,g,U){let D=JN("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`,[I,$.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 cK(_,$,D,I){let U=Mg("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 KK(_,$,g,U,D,I,j){if(!g.text||g.status.toLowerCase()==="deleted")return{chunksInserted:0,redactions:0};let E=w_(g.text,j);if(E.findings.length>0)W4(_,{source_uri:g.sourceUri,findings:E.findings,metadata:{source_ref:g.sourceRef,revision:g.revision},created_at:U}),z_(_,{event_type:"redaction",action:"source_text_redact",target_uri:g.sourceUri,decision:"redacted",metadata:{findings:E.findings.length,source_ref:g.sourceRef,revision:g.revision},created_at:U});let A=GK(E.text,D,I);for(let O of A){let P=JN("chk",`${$}\x00${O.ordinal}\x00${O.text}`),W=K6({source_ref:g.sourceRef,source_uri:g.sourceUri,source_kind:g.kind,source_revision_id:$,revision:g.revision,hash:g.hash,chunk_id:P,start_offset:O.startOffset,end_offset:O.endOffset,status:g.status,resolver:"open-files-read-only"}),z=xz({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:E_(g.raw.path)??null,mime:E_(g.raw.mime)??E_(g.raw.content_type)??null,size:IK(g.raw.size)??null},W);_.run(`INSERT INTO chunks (id, source_revision_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[P,$,"source",O.ordinal,O.text,XK(O.text),O.startOffset,O.endOffset,JSON.stringify(z),U]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[P,O.text,g.title??"",g.sourceUri])}return{chunksInserted:A.length,redactions:E.findings.length}}async function U3(_){let $=_.now??new Date;if(_.safetyPolicy)$6(_.dbPath,_.safetyPolicy);c(_.dbPath);let g=await RK(_.input,_.config,_.safetyPolicy,_.maxInputBytes),U=JK(g),D=_.maxItems??$3;if(U.length>D)throw Error(`Manifest contains too many items: ${U.length} exceeds ${D} item limit.`);return Dg({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 Dg(_){let $=(_.now??new Date).toISOString(),g=_.maxChunkChars??4000,U=_.chunkOverlapChars??200,D=_.maxItems??$3;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);c(_.dbPath);let I=v(_.dbPath);try{return I.transaction(()=>{let E=new Set,A=new Set,O=0,P=0,W=0,z=0,S=[];z_(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 L of _.items){let J=WK(L,$,{allowFileSourceRefs:_.allowFileSourceRefs});if(S.length0)return U}return null}function I3(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return null}function qK(_,$){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 BK(_,$,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 VK(_,$,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),I]);let E=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision);if(!E)throw Error(`Failed to upsert source revision: ${D.sourceRef}`);return E.id}function nK(_,$,D,I,U,E,j){if(!D.text||D.status.toLowerCase()==="deleted")return{chunksInserted:0,redactions:0};let N=y_(D.text,j);if(N.findings.length>0)R0(_,{source_uri:D.sourceUri,findings:N.findings,metadata:{source_ref:D.sourceRef,revision:D.revision},created_at:I}),G_(_,{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:I});let A=xK(N.text,U,E);for(let O of A){let L=Mg("chk",`${$}\x00${O.ordinal}\x00${O.text}`),J=M6({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:O.startOffset,end_offset:O.endOffset,status:D.status,resolver:"open-files-read-only"}),P=ez({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:VK(D.raw.size)??null},J);_.run(`INSERT INTO chunks (id, source_revision_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[L,$,"source",O.ordinal,O.text,uK(O.text),O.startOffset,O.endOffset,JSON.stringify(P),I]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[L,O.text,D.title??"",D.sourceUri])}return{chunksInserted:A.length,redactions:N.findings.length}}async function z3(_){let $=_.now??new Date;if(_.safetyPolicy)N6(_.dbPath,_.safetyPolicy);h(_.dbPath);let D=await fK(_.input,_.config,_.safetyPolicy,_.maxInputBytes),I=wK(D),U=_.maxItems??J3;if(I.length>U)throw Error(`Manifest contains too many items: ${I.length} exceeds ${U} item limit.`);return N4({dbPath:_.dbPath,items:I,sourceLabel:_.input,allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")===!0,safetyPolicy:_.safetyPolicy,now:$,maxChunkChars:_.maxChunkChars,chunkOverlapChars:_.chunkOverlapChars,maxItems:_.maxItems})}async function N4(_){let $=(_.now??new Date).toISOString(),D=_.maxChunkChars??4000,I=_.chunkOverlapChars??200,U=_.maxItems??J3;if(D<500)throw Error("maxChunkChars must be at least 500.");if(I<0||I>=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)N6(_.dbPath,_.safetyPolicy);h(_.dbPath);let E=w(_.dbPath);try{return E.transaction(()=>{let N=new Set,A=new Set,O=0,L=0,J=0,P=0,z=[];G_(E,{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 S of _.items){let W=vK(S,$,{allowFileSourceRefs:_.allowFileSourceRefs});if(z.length0)return I}return null}function X3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function dK(_,$){let D=_.mode;if(typeof D==="string"&&D!=="read_only")throw Error(`Source resolver denied ${$}. Permission mode is ${D}, expected read_only.`);let I=_.denied_purposes;if(Array.isArray(I)&&I.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 mK(_,$,D){if(!$)return D;try{let I=J$(_);if(I.kind==="open-files"&&I.entity==="file")return`${_}/revision/${encodeURIComponent($.revision)}`}catch{return D}return D}function lK(_,$,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 FK(_,$,g){if(g)return _.query(`SELECT id, revision, hash, extracted_text_uri, metadata_json, created_at + LIMIT 1`).get($,D,$)??null}function iK(_,$,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 rK(_,$){if(!$)return 0;return _.query("SELECT COUNT(*) AS n FROM chunks WHERE source_revision_id = ?").get($)?.n??0}function bK(_,$,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 tK(_,$){if(!$)return 0;return _.query("SELECT COUNT(*) AS n FROM chunks WHERE source_revision_id = ?").get($)?.n??0}function oK(_,$,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=cz(_.sourceRef,D),j=hz(_.sourceRef);if(_.safetyPolicy){if(!_.safetyPolicy.readOnlySourceAccess)throw Error("Safety policy denied source resolution.");$6(_.dbPath,_.safetyPolicy)}c(_.dbPath);let E=v(_.dbPath);try{return E.transaction(()=>{let A=VK(E,I,_.sourceRef);if(!A)return z_(E,{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 O=lU(A.metadata_json),P=lU(A.acl_json);try{qK(P,$)}catch(Q){throw z_(E,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"deny",metadata:{purpose:$,read_only:!0,source_uri:A.uri,error:Q instanceof Error?Q.message:String(Q)},created_at:U}),Q}let W=FK(E,A.id,j),z=lU(W?.metadata_json),S=rK(E,W?.id??null),L=bK(E,W?.id??null,g),J=BK(A.uri,W,_.sourceRef),R=L.map((Q)=>{let T=lU(Q.metadata_json),K={resolver:"open-files-read-only",mode:"local_catalog",purpose:$,read_only:!0,source_ref:Ug(T,["source_ref"])??J,source_uri:A.uri,source_revision_id:W?.id??null,revision:W?.revision??null,hash:W?.hash??Ug(T,["hash"]),chunk_id:Q.id,start_offset:Q.start_offset,end_offset:Q.end_offset,resolved_at:U},V=K6({source_ref:K.source_ref,source_uri:K.source_uri,source_kind:A.kind,source_revision_id:K.source_revision_id,revision:K.revision,hash:K.hash,chunk_id:Q.id,start_offset:Q.start_offset,end_offset:Q.end_offset,status:Ug(T,["status"]),resolver:K.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:K,provenance:V}}),X=R.map((Q)=>({source_ref:Q.evidence.source_ref,source_uri:A.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}));z_(E,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:A.uri,revision:W?.revision??null,chunks_returned:R.length,chunks_total:S},created_at:U});let G=Ug(O,["mime","content_type"])??Ug(z,["mime","content_type"]),B=I3(O,["size","size_bytes"])??I3(z,["size","size_bytes"]);return{source_ref:J,source_uri:A.uri,purpose:$,read_only:!0,resolved:!0,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:{id:A.id,uri:A.uri,kind:A.kind,title:A.title,metadata:O,permissions:P,updated_at:A.updated_at},revision:W?{id:W.id,revision:W.revision,hash:W.hash,extracted_text_uri:W.extracted_text_uri,metadata:z,created_at:W.created_at,reindex_required:z.reindex_required===!0}:null,content:{mime:G,size:B,hash:W?.hash??Ug(O,["hash","checksum","sha256"]),text_available:S>0,chunks_total:S,chunks_returned:R.length,char_count_returned:R.reduce((Q,T)=>Q+T.text.length,0),extracted_text_ref:W?.extracted_text_uri??Ug(z,["extracted_text_ref","extracted_text_uri"]),bytes_available:!1,bytes_exposed:!1},chunks:R,citations:X}})()}finally{E.close()}}function J4(_){return`sha256:${MK("sha256").update(_).digest("hex")}`}function kK(_){return _.replace(//gi," ").replace(//gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\s+\n/g,` + LIMIT ?`).all($,D)}async function $I(_){let $=_.purpose??"knowledge_answer",D=Math.max(0,Math.min(_.limit??10,100)),I=(_.now??new Date).toISOString(),U=J$(_.sourceRef),E=sz(_.sourceRef,U),j=_3(_.sourceRef);if(_.safetyPolicy){if(!_.safetyPolicy.readOnlySourceAccess)throw Error("Safety policy denied source resolution.");N6(_.dbPath,_.safetyPolicy)}h(_.dbPath);let N=w(_.dbPath);try{return N.transaction(()=>{let A=lK(N,E,_.sourceRef);if(!A)return G_(N,{event_type:"source_read",action:"open_files_resolve_missing",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:E},created_at:I}),{source_ref:_.sourceRef,source_uri:E,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 O=_I(A.metadata_json),L=_I(A.acl_json);try{dK(L,$)}catch(Y){throw G_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"deny",metadata:{purpose:$,read_only:!0,source_uri:A.uri,error:Y instanceof Error?Y.message:String(Y)},created_at:I}),Y}let J=iK(N,A.id,j),P=_I(J?.metadata_json),z=tK(N,J?.id??null),S=oK(N,J?.id??null,D),W=mK(A.uri,J,_.sourceRef),X=S.map((Y)=>{let T=_I(Y.metadata_json),F={resolver:"open-files-read-only",mode:"local_catalog",purpose:$,read_only:!0,source_ref:g4(T,["source_ref"])??W,source_uri:A.uri,source_revision_id:J?.id??null,revision:J?.revision??null,hash:J?.hash??g4(T,["hash"]),chunk_id:Y.id,start_offset:Y.start_offset,end_offset:Y.end_offset,resolved_at:I},k=M6({source_ref:F.source_ref,source_uri:F.source_uri,source_kind:A.kind,source_revision_id:F.source_revision_id,revision:F.revision,hash:F.hash,chunk_id:Y.id,start_offset:Y.start_offset,end_offset:Y.end_offset,status:g4(T,["status"]),resolver:F.resolver});return{id:Y.id,kind:Y.kind,ordinal:Y.ordinal,text:Y.text,token_count:Y.token_count,start_offset:Y.start_offset,end_offset:Y.end_offset,metadata:T,evidence:F,provenance:k}}),G=X.map((Y)=>({source_ref:Y.evidence.source_ref,source_uri:A.uri,chunk_id:Y.id,quote:Y.text.slice(0,500),start_offset:Y.start_offset,end_offset:Y.end_offset,evidence:Y.evidence,provenance:Y.provenance}));G_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:A.uri,revision:J?.revision??null,chunks_returned:X.length,chunks_total:z},created_at:I});let R=g4(O,["mime","content_type"])??g4(P,["mime","content_type"]),K=X3(O,["size","size_bytes"])??X3(P,["size","size_bytes"]);return{source_ref:W,source_uri:A.uri,purpose:$,read_only:!0,resolved:!0,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:{id:A.id,uri:A.uri,kind:A.kind,title:A.title,metadata:O,permissions:L,updated_at:A.updated_at},revision:J?{id:J.id,revision:J.revision,hash:J.hash,extracted_text_uri:J.extracted_text_uri,metadata:P,created_at:J.created_at,reindex_required:P.reindex_required===!0}:null,content:{mime:R,size:K,hash:J?.hash??g4(O,["hash","checksum","sha256"]),text_available:z>0,chunks_total:z,chunks_returned:X.length,char_count_returned:X.reduce((Y,T)=>Y+T.text.length,0),extracted_text_ref:J?.extracted_text_uri??g4(P,["extracted_text_ref","extracted_text_uri"]),bytes_available:!1,bytes_exposed:!1},chunks:X,citations:G}})()}finally{N.close()}}function Y0(_){return`sha256:${pK("sha256").update(_).digest("hex")}`}function sK(_){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 CK(_,$,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:E},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===D?$.storage.s3:void 0,W=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new E({Bucket:D,Key:I}));if(!W.Body)return"";return await W.Body.transformToString()}async function vK(_,$){if($)L4($);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")?kK(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 j3(_,$,g){if(_.kind==="file"){if(!ZK(_.path))throw Error(`Source file not found: ${_.path}`);let U=HK(_.path,"utf8");return{text:U,contentSource:"file",title:pU(_),mime:"text/plain",size:U.length,hash:J4(U),revision:null,extractedTextRef:null,metadata:{path:_.path},permissions:{mode:"read_only"}}}if(_.kind==="s3"){let U=await CK(_.uri,$,g);return{text:U,contentSource:"s3",title:pU(_),mime:"text/plain",size:U.length,hash:J4(U),revision:null,extractedTextRef:null,metadata:{bucket:_.bucket,key:_.key},permissions:{mode:"read_only"}}}if(_.kind==="web"){let U=await vK(_.url,g);return{text:U.text,contentSource:"web",title:pU(_),mime:U.mime,size:U.text.length,hash:J4(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 wK(_,$,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 j3(U,$,g)).text,contentSource:"extracted_text_ref"}}async function uK(_){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 wK($.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??J4(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 _T(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 source URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,J=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!J.Body)return"";return await J.Body.transformToString()}async function $T(_,$){if($)G0($);let D=await P0(_,{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 I=D.headers.get("content-type"),U=await D.text();return{text:I?.includes("html")?sK(U):U,mime:I}}function UI(_){if(_.kind==="file")return DI(_.path);if(_.kind==="s3")return DI(_.key);if(_.kind==="web")return DI(new URL(_.url).pathname)||_.url;return _.path?DI(_.path):_.id}async function G3(_,$,D){if(_.kind==="file"){if(!eK(_.path))throw Error(`Source file not found: ${_.path}`);let I=aK(_.path,"utf8");return{text:I,contentSource:"file",title:UI(_),mime:"text/plain",size:I.length,hash:Y0(I),revision:null,extractedTextRef:null,metadata:{path:_.path},permissions:{mode:"read_only"}}}if(_.kind==="s3"){let I=await _T(_.uri,$,D);return{text:I,contentSource:"s3",title:UI(_),mime:"text/plain",size:I.length,hash:Y0(I),revision:null,extractedTextRef:null,metadata:{bucket:_.bucket,key:_.key},permissions:{mode:"read_only"}}}if(_.kind==="web"){let I=await $T(_.url,D);return{text:I.text,contentSource:"web",title:UI(_),mime:I.mime,size:I.text.length,hash:Y0(I.text),revision:null,extractedTextRef:null,metadata:{url:_.url},permissions:{mode:"read_only"}}}throw Error(`Direct source reading is not available for ${_.uri}`)}async function DT(_,$,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 I=J$(_);return{text:(await G3(I,$,D)).text,contentSource:"extracted_text_ref"}}async function UT(_){let $=await $I({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 I=await DT($.revision.extracted_text_uri,_.config,_.safetyPolicy);return{text:I.text,contentSource:I.contentSource,title:$.source?.title??null,mime:$.content.mime,size:I.text.length,hash:$.revision.hash??Y0(I.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((I)=>I.text).join(` -`);return{text:g,contentSource:"catalog_chunks",title:$.source?.title??null,mime:$.content.mime,size:g.length,hash:$.revision?.hash??J4(g),revision:$.revision?.revision??null,extractedTextRef:$.revision?.extracted_text_uri??null,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}function fK(_,$,g,U){let D=g.hash??J4(g.text),I={...T_(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";$g(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1});let g=A$(_.sourceRef),U=g.kind==="open-files"?await uK(_):await j3(g,_.config,_.safetyPolicy),D=fK(_.sourceRef,g,U,$);return{...await Dg({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`${_}_${xK("sha256").update($).digest("hex").slice(0,20)}`}function cK(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"note"}function zN(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function hK(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function E3(_){return Array.from(new Set((_??[]).map(($)=>$.trim()).filter(Boolean)))}function nK(_){let $=_.path?.trim()||`wiki/notes/${cK(_.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 dK(_){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 N3(_,$){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,...S4($.body),metadata:{...$.metadata??{}}}}async function mK(_,$,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`,E="";try{E=await _.getText(j)}catch{E=""}return N3(_,{key:j,body:`${E}${JSON.stringify($)} -`,content_type:"application/x-ndjson",metadata:{provenance:D$({generated_from:String($.event??"app_wiki_log"),artifact_key:j})}})}function iK(_){return{...T_(_.metadata??{}),app_wiki:!0,note:!0,artifact_key:_.path,tags:_.tags,source_refs:_.sourceRefs,provenance:_.provenance}}function RN(_){let $=zN(_.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 lK(_,$){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??Y0(D),revision:$.revision?.revision??null,extractedTextRef:$.revision?.extracted_text_uri??null,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}function IT(_,$,D,I){let U=D.hash??Y0(D.text),E={...F_(D.metadata),source_ref:_,content_source:D.contentSource,read_only:!0},j={source_ref:_,name:D.title??UI($),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:[I],...D.permissions},metadata:E,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 II(_){let $=_.purpose??"knowledge_index";E4(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1});let D=J$(_.sourceRef),I=D.kind==="open-files"?await UT(_):await G3(D,_.config,_.safetyPolicy),U=IT(_.sourceRef,D,I,$);return{...await N4({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:I.contentSource,read_only:!0,hash:String(U.hash)}}function EI(_,$){return`${_}_${ET("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 bg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function gT(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function R3(_){return Array.from(new Set((_??[]).map(($)=>$.trim()).filter(Boolean)))}function AT(_){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((I)=>I===".."||I==="."))throw Error(`Invalid app wiki note path: ${$}`);return D}function OT(_){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 Y3(_,$){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,...X0($.body),metadata:{...$.metadata??{}}}}async function LT(_,$,D){let I=String(D.getUTCFullYear()),U=String(D.getUTCMonth()+1).padStart(2,"0"),E=String(D.getUTCDate()).padStart(2,"0"),j=`logs/${I}/${U}/${E}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return Y3(_,{key:j,body:`${N}${JSON.stringify($)} +`,content_type:"application/x-ndjson",metadata:{provenance:N$({generated_from:String($.event??"app_wiki_log"),artifact_key:j})}})}function ST(_){return{...F_(_.metadata??{}),app_wiki:!0,note:!0,artifact_key:_.path,tags:_.tags,source_refs:_.sourceRefs,provenance:_.provenance}}function Zg(_){let $=bg(_.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 JT(_,$){return $.map((D)=>{let I=_.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=zN(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 tK(_,$,g,U){_.run("DELETE FROM citations WHERE wiki_page_id = ?",[$]);let D=lK(_,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??yK()}`),$,I.chunk_id,I.source_uri,I.quote,I.start_offset,I.end_offset,JSON.stringify(I.metadata),U]);return D.length}function oK(_,$){_.run(`INSERT INTO knowledge_indexes (id, kind, name, artifact_uri, shard_key, metadata_json, created_at, updated_at) + LIMIT 1`).get(D,`%${D}%`),U=bg(I?.metadata_json);return{source_ref:D,source_uri:I?.source_uri??D,chunk_id:I?.chunk_id??null,quote:I?.text?I.text.replace(/\s+/g," ").slice(0,240):null,start_offset:I?.start_offset??null,end_offset:I?.end_offset??null,metadata:{source_ref:D,revision:I?.revision??U.revision,hash:I?.hash??U.hash}}})}function WT(_,$,D,I){_.run("DELETE FROM citations WHERE wiki_page_id = ?",[$]);let U=JT(_,D);for(let E of U)_.run(`INSERT INTO citations (id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[EI("cit",`${$}\x00${E.source_uri}\x00${E.chunk_id??jT()}`),$,E.chunk_id,E.source_uri,E.quote,E.start_offset,E.end_offset,JSON.stringify(E.metadata),I]);return U.length}function PT(_,$){_.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 pK(_,$){_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) + updated_at = excluded.updated_at`,[EI("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 zT(_,$){_.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,hK($.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 f0(_){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 A3(_){f0(_);let $=c(_.workspace.knowledgeDbPath),g=v(_.workspace.knowledgeDbPath);try{z_(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 O3(_){f0(_);let $=_.now??new Date,g=$.toISOString(),U=E3(_.tags),D=E3(_.sourceRefs);for(let W of D)$g(W,{allowFileSourceRefs:_.safetyPolicy?.readOnlySourceAccess===!0});let I=nK(_),j=dK({title:_.title,content:_.content,tags:U,sourceRefs:D,now:g}),E=D$({generated_from:"app_wiki_note",artifact_key:I,source_refs:D}),A=await N3(_.store,{key:I,body:j,content_type:"text/markdown",metadata:{generated_from:"app_wiki_note",provenance:E,scope:_.scope,tags:U.join(","),source_refs:D.join(",")}}),O=await mK(_.store,{ts:g,event:"app_wiki_note_written",page_key:I,source_refs:D,tags:U},$);c(_.workspace.knowledgeDbPath);let P=v(_.workspace.knowledgeDbPath);try{let W=aU("wiki",I),z=iK({path:I,tags:U,sourceRefs:D,provenance:E,metadata:_.metadata});_6(P,[A,O],$),pK(P,{pageId:W,path:I,title:_.title,artifactUri:A.uri,contentHash:A.hash??"",body:j,metadata:z,now:g});let S=tK(P,W,D,g);oK(P,{title:_.title,path:I,artifactUri:A.uri,contentHash:A.hash??"",tags:U,sourceRefs:D,now:g}),z_(P,{event_type:"write",action:"app_wiki_note_write",target_uri:A.uri,decision:"allow",metadata:{scope:_.scope,path:I,source_refs:D,tags:U},created_at:g});let L=P.query("SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE id = ?").get(W);if(!L)throw Error(`Failed to write app wiki note: ${I}`);return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,note:RN(L),artifact_uri:A.uri,content_hash:A.hash??"",citations_written:S,chunks_written:1,storage_objects_written:2,message:`Wrote app wiki note ${I}`}}finally{P.close()}}function P3(_){let $=Math.max(1,Math.min(_.limit??50,200));if(!_.dbPath)return[];c(_.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 I=EI("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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,$.pageId,"wiki",0,$.body,gT($.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 (?, ?, ?, ?)",[I,$.body,$.title,$.artifactUri])}function mD(_){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)N6(_.workspace.knowledgeDbPath,_.safetyPolicy)}async function Q3(_){mD(_);let $=h(_.workspace.knowledgeDbPath),D=w(_.workspace.knowledgeDbPath);try{G_(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 K3(_){mD(_);let $=_.now??new Date,D=$.toISOString(),I=R3(_.tags),U=R3(_.sourceRefs);for(let J of U)E4(J,{allowFileSourceRefs:_.safetyPolicy?.readOnlySourceAccess===!0});let E=AT(_),j=OT({title:_.title,content:_.content,tags:I,sourceRefs:U,now:D}),N=N$({generated_from:"app_wiki_note",artifact_key:E,source_refs:U}),A=await Y3(_.store,{key:E,body:j,content_type:"text/markdown",metadata:{generated_from:"app_wiki_note",provenance:N,scope:_.scope,tags:I.join(","),source_refs:U.join(",")}}),O=await LT(_.store,{ts:D,event:"app_wiki_note_written",page_key:E,source_refs:U,tags:I},$);h(_.workspace.knowledgeDbPath);let L=w(_.workspace.knowledgeDbPath);try{let J=EI("wiki",E),P=ST({path:E,tags:I,sourceRefs:U,provenance:N,metadata:_.metadata});j6(L,[A,O],$),zT(L,{pageId:J,path:E,title:_.title,artifactUri:A.uri,contentHash:A.hash??"",body:j,metadata:P,now:D});let z=WT(L,J,U,D);PT(L,{title:_.title,path:E,artifactUri:A.uri,contentHash:A.hash??"",tags:I,sourceRefs:U,now:D}),G_(L,{event_type:"write",action:"app_wiki_note_write",target_uri:A.uri,decision:"allow",metadata:{scope:_.scope,path:E,source_refs:U,tags:I},created_at:D});let S=L.query("SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE id = ?").get(J);if(!S)throw Error(`Failed to write app wiki note: ${E}`);return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,note:Zg(S),artifact_uri:A.uri,content_hash:A.hash??"",citations_written:z,chunks_written:1,storage_objects_written:2,message:`Wrote app wiki note ${E}`}}finally{L.close()}}function T3(_){let $=Math.max(1,Math.min(_.limit??50,200));if(!_.dbPath)return[];h(_.dbPath);let D=w(_.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(RN)}finally{g.close()}}async function S3(_){c(_.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(Zg)}finally{D.close()}}async function F3(_){h(_.dbPath);let $=w(_.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 I=$.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:zN(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:RN(g),citations:U,content:D}}finally{$.close()}}async function L3(_){return f0(_),$g(_.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 bN}from"crypto";import{randomUUID as eK}from"crypto";var GN={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"}},aK={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}},sK={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 J3(_){return _?.providers??{}}function g6(_,$){let g=J3(_)[$]??{};return{...GN[$],...g}}function z3(_){let $=J3(_);return{...sK,...$.default_model?{default:$.default_model}:{},...$.aliases??{}}}function C_(_){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 z3($)[_]??_}function XN(_){let $=z3(_);return Object.entries($).map(([g,U])=>{let D=C_(U);return{alias:g,model_ref:U,provider:D.provider,model:D.model,default:g==="default",capabilities:aK[D.provider]}})}function R3(_,$=process.env){return Object.keys(GN).map((g)=>{let U=g6(_,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 G3(_,$=process.env){return{default_model:G$("default",_),providers:R3(_,$),models:XN(_)}}function Ig(_,$,g=process.env){let U=R3($,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 _7(_){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 $7(_={}){let{createProviderRegistry:$}=await import("ai"),g=_.env??process.env,U={};for(let D of Object.keys(GN)){let I=g6(_.config,D),j=g[I.api_key_env];if(!j)continue;let E=_.factories?.[D]??await _7(D);U[D]=E({apiKey:j,baseURL:I.base_url})}return $(U)}async function x0(_,$={}){let g=G$(_,$.config),U=C_(g);return Ig(U.provider,$.config,$.env),(await $7($)).languageModel(g)}function W3(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return 0}function jg(_){let $=_.usage??{};return{provider:_.provider,model:_.model,input_tokens:W3($,["inputTokens","promptTokens","input_tokens","prompt_tokens"]),output_tokens:W3($,["outputTokens","completionTokens","output_tokens","completion_tokens"]),cost_usd:_.costUsd??0,metadata:{usage:$,provider_metadata:_.providerMetadata??{}}}}function z4(_,$){let g=`usage_${eK()}`;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 V7}from"crypto";import{existsSync as A7,readFileSync as O7}from"fs";import{createHash as Q3}from"crypto";var g7="openai:text-embedding-3-small",T3=1536;function sU(_){return _?.embeddings??{}}function X3(_,$){return`${_}_${Q3("sha256").update($).digest("hex").slice(0,20)}`}function QN(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function X$(_,$){for(let g of $){let U=_[g];if(typeof U==="string"&&U.length>0)return U}return null}function Y3(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return null}function YN(_){return Math.sqrt(_.reduce(($,g)=>$+g*g,0))}function D7(_,$,g=YN($)){let U=YN(_);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 I7(_,$,g=process.env){Ig("openai",$,g);let U=g6($,"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 Eg(_,$){if(!_||_==="default"||_==="embedding")return sU($).default_model??g7;return _}async function K3(_,$={}){let g=Eg($.modelRef,$.config),U=C_(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??T3;if($.fake)return{provider:U.provider,model:U.model,dimensions:D,vectors:_.map((O)=>U7(O,D)),usage:{input_tokens:_.reduce((O,P)=>O+Math.max(1,Math.ceil(P.split(/\s+/).filter(Boolean).length*1.25)),0)}};let{embedMany:I}=await import("ai"),j=await I7(U.model,$.config,$.env),E=await I({model:j,values:_,maxParallelCalls:$.maxParallelCalls??sU($.config).max_parallel_calls,providerOptions:{openai:{dimensions:D}}}),A=E.embeddings;return{provider:U.provider,model:U.model,dimensions:A[0]?.length??D,vectors:A,usage:{input_tokens:E.usage?.tokens??0}}}function j7(_,$){if($.sourceRevisionId)return _.query(`SELECT + ORDER BY created_at ASC`).all(D.id).map((E)=>({...E,metadata:bg(E.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:Zg(D),citations:I,content:U}}finally{$.close()}}async function V3(_){return mD(_),E4(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1}),II({dbPath:_.workspace.knowledgeDbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",config:_.config,safetyPolicy:_.safetyPolicy})}import{randomUUID as hg}from"crypto";import{randomUUID as XT}from"crypto";var Hg={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"}},GT={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}},RT={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 M3(_){return _?.providers??{}}function g6(_,$){let D=M3(_)[$]??{};return{...Hg[$],...D}}function b3(_){let $=M3(_);return{...RT,...$.default_model?{default:$.default_model}:{},...$.aliases??{}}}function x_(_){let[$,...D]=_.split(":"),I=D.join(":");if($!=="openai"&&$!=="anthropic"&&$!=="deepseek")throw Error(`Unsupported AI provider: ${$}`);if(!I)throw Error(`Invalid model ref: ${_}. Expected provider:model.`);return{provider:$,model:I}}function T$(_,$){return b3($)[_]??_}function kg(_){let $=b3(_);return Object.entries($).map(([D,I])=>{let U=x_(I);return{alias:D,model_ref:I,provider:U.provider,model:U.model,default:D==="default",capabilities:GT[U.provider]}})}function Z3(_,$=process.env){return Object.keys(Hg).map((D)=>{let I=g6(_,D),U=Boolean($[I.api_key_env]);return{provider:D,api_key_env:I.api_key_env,configured:U,source:U?"env":"missing",base_url:I.base_url??null,default_model:I.default_model}})}function H3(_,$=process.env){return{default_model:T$("default",_),providers:Z3(_,$),models:kg(_)}}function A4(_,$,D=process.env){let I=Z3($,D).find((U)=>U.provider===_);if(!I)throw Error(`Unsupported AI provider: ${_}`);if(!I.configured)throw Error(`Missing ${I.api_key_env} for ${_}. Set the env var to use this provider.`);return I}async function YT(_){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 QT(_={}){let{createProviderRegistry:$}=await import("ai"),D=_.env??process.env,I={};for(let U of Object.keys(Hg)){let E=g6(_.config,U),j=D[E.api_key_env];if(!j)continue;let N=_.factories?.[U]??await YT(U);I[U]=N({apiKey:j,baseURL:E.base_url})}return $(I)}async function lD(_,$={}){let D=T$(_,$.config),I=x_(D);return A4(I.provider,$.config,$.env),(await QT($)).languageModel(D)}function B3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return 0}function O4(_){let $=_.usage??{};return{provider:_.provider,model:_.model,input_tokens:B3($,["inputTokens","promptTokens","input_tokens","prompt_tokens"]),output_tokens:B3($,["outputTokens","completionTokens","output_tokens","completion_tokens"]),cost_usd:_.costUsd??0,metadata:{usage:$,provider_metadata:_.providerMetadata??{}}}}function Q0(_,$){let D=`usage_${XT()}`;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 lT}from"crypto";import{existsSync as ZT,readFileSync as HT}from"fs";import{createHash as C3}from"crypto";var KT="openai:text-embedding-3-small",v3=1536;function jI(_){return _?.embeddings??{}}function k3(_,$){return`${_}_${C3("sha256").update($).digest("hex").slice(0,20)}`}function Cg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function F$(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function q3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function qg(_){return Math.sqrt(_.reduce(($,D)=>$+D*D,0))}function TT(_,$,D=qg($)){let I=qg(_);if(I===0||D===0)return 0;let U=Math.min(_.length,$.length),E=0;for(let j=0;j{let E=D[U%D.length]/255;return Number((E*2-1).toFixed(6))})}async function VT(_,$,D=process.env){A4("openai",$,D);let I=g6($,"openai"),{createOpenAI:U}=await import("@ai-sdk/openai"),E=U({apiKey:D[I.api_key_env],baseURL:I.base_url});if(E.embeddingModel)return E.embeddingModel(_);if(E.textEmbedding)return E.textEmbedding(_);if(E.textEmbeddingModel)return E.textEmbeddingModel(_);throw Error("OpenAI provider does not expose an embedding model factory.")}function L4(_,$){if(!_||_==="default"||_==="embedding")return jI($).default_model??KT;return _}async function w3(_,$={}){let D=L4($.modelRef,$.config),I=x_(D);if(I.provider!=="openai")throw Error(`Embedding provider ${I.provider} is not supported yet. Use openai:text-embedding-3-small.`);let U=$.dimensions??jI($.config).dimensions??v3;if($.fake)return{provider:I.provider,model:I.model,dimensions:U,vectors:_.map((O)=>FT(O,U)),usage:{input_tokens:_.reduce((O,L)=>O+Math.max(1,Math.ceil(L.split(/\s+/).filter(Boolean).length*1.25)),0)}};let{embedMany:E}=await import("ai"),j=await VT(I.model,$.config,$.env),N=await E({model:j,values:_,maxParallelCalls:$.maxParallelCalls??jI($.config).max_parallel_calls,providerOptions:{openai:{dimensions:U}}}),A=N.embeddings;return{provider:I.provider,model:I.model,dimensions:A[0]?.length??U,vectors:A,usage:{input_tokens:N.usage?.tokens??0}}}function BT(_,$){if($.sourceRevisionId)return _.query(`SELECT c.id, c.text, c.token_count, @@ -713,14 +713,14 @@ 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 E7(_){let $=QN(_.metadata_json),g=$.provenance;if(g&&typeof g==="object"&&!Array.isArray(g))return g;return K6({source_ref:X$($,["source_ref"]),source_uri:_.source_uri??X$($,["source_uri"]),source_kind:_.source_kind??X$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??X$($,["revision"]),hash:_.hash??X$($,["hash"]),chunk_id:_.id,start_offset:_.start_offset??Y3($,["start_offset"]),end_offset:_.end_offset??Y3($,["end_offset"]),status:X$($,["status"]),resolver:"open-files-read-only"})}function N7(_,$,g,U){let D=_.prepare(` + LIMIT ?`).all($.provider,$.model,$.limit)}function MT(_){let $=Cg(_.metadata_json),D=$.provenance;if(D&&typeof D==="object"&&!Array.isArray(D))return D;return M6({source_ref:F$($,["source_ref"]),source_uri:_.source_uri??F$($,["source_uri"]),source_kind:_.source_kind??F$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??F$($,["revision"]),hash:_.hash??F$($,["hash"]),chunk_id:_.id,start_offset:_.start_offset??q3($,["start_offset"]),end_offset:_.end_offset??q3($,["end_offset"]),status:F$($,["status"]),resolver:"open-files-read-only"})}function bT(_,$,D,I){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 dimensions = excluded.dimensions, vector_json = excluded.vector_json, created_at = excluded.created_at - `),I=_.prepare(` + `),E=_.prepare(` INSERT INTO vector_index_entries ( id, chunk_id, source_revision_id, provider, model, dimensions, vector_json, vector_norm, source_uri, source_ref, revision, hash, start_offset, end_offset, token_count, status, @@ -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 E=0;E<$.length;E+=1){let A=$[E],O=g.vectors[E];if(!O)continue;let P=QN(A.metadata_json),W=E7(A),z=W.source_ref??X$(P,["source_ref"]),S=W.source_uri??A.source_uri??X$(P,["source_uri"]),L=W.revision??A.revision??X$(P,["revision"]),J=W.hash??A.hash??X$(P,["hash"]),R=W.status??X$(P,["status"])??"active",X=JSON.stringify(O);D.run(X3("emb",`${A.id}\x00${g.provider}\x00${g.model}`),A.id,g.provider,g.model,g.dimensions,X,U),I.run(X3("vec",`${A.id}\x00${g.provider}\x00${g.model}`),A.id,A.source_revision_id,g.provider,g.model,g.dimensions,X,YN(O),S,z,L,J,W.start_offset,W.end_offset,A.token_count,R,JSON.stringify({...P,provenance:W,embedded_at:U}),U,U)}})(),$.length}async function _I(_){let $=Eg(_.modelRef,_.config),g=C_($);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));c(_.dbPath);let I=v(_.dbPath),j;try{j=j7(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??T3,chunks_seen:0,chunks_embedded:0,embeddings_upserted:0,vector_entries_upserted:0,usage:{input_tokens:0}};let E=await K3(j.map((O)=>O.text),_),A=v(_.dbPath);try{let O=N7(A,j,E,U);return{provider:E.provider,model:E.model,dimensions:E.dimensions,chunks_seen:j.length,chunks_embedded:j.length,embeddings_upserted:O,vector_entries_upserted:O,usage:E.usage}}finally{A.close()}}function q3(_){c(_);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 A=$[N],O=D.vectors[N];if(!O)continue;let L=Cg(A.metadata_json),J=MT(A),P=J.source_ref??F$(L,["source_ref"]),z=J.source_uri??A.source_uri??F$(L,["source_uri"]),S=J.revision??A.revision??F$(L,["revision"]),W=J.hash??A.hash??F$(L,["hash"]),X=J.status??F$(L,["status"])??"active",G=JSON.stringify(O);U.run(k3("emb",`${A.id}\x00${D.provider}\x00${D.model}`),A.id,D.provider,D.model,D.dimensions,G,I),E.run(k3("vec",`${A.id}\x00${D.provider}\x00${D.model}`),A.id,A.source_revision_id,D.provider,D.model,D.dimensions,G,qg(O),z,P,S,W,J.start_offset,J.end_offset,A.token_count,X,JSON.stringify({...L,provenance:J,embedded_at:I}),I,I)}})(),$.length}async function NI(_){let $=L4(_.modelRef,_.config),D=x_($);if(D.provider!=="openai")throw Error(`Embedding provider ${D.provider} is not supported yet.`);let I=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??100,1000));h(_.dbPath);let E=w(_.dbPath),j;try{j=BT(E,{provider:D.provider,model:D.model,limit:U,sourceRevisionId:_.sourceRevisionId})}finally{E.close()}if(j.length===0)return{provider:D.provider,model:D.model,dimensions:_.dimensions??jI(_.config).dimensions??v3,chunks_seen:0,chunks_embedded:0,embeddings_upserted:0,vector_entries_upserted:0,usage:{input_tokens:0}};let N=await w3(j.map((O)=>O.text),_),A=w(_.dbPath);try{let O=bT(A,j,N,I);return{provider:N.provider,model:N.model,dimensions:N.dimensions,chunks_seen:j.length,chunks_embedded:j.length,embeddings_upserted:O,vector_entries_upserted:O,usage:N.usage}}finally{A.close()}}function r3(_){h(_);let $=w(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,I=$.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 $=Eg(_.modelRef,_.config),g=C_($),U=Math.max(1,Math.min(_.limit??10,100)),D=await K3([_.query],_),I=D.vectors[0]??[];c(_.dbPath);let j=v(_.dbPath);try{let A=j.query(`SELECT + ORDER BY provider, model`).all();return{total_embeddings:D,total_vector_entries:I,indexes:U}}finally{$.close()}}async function gI(_){let $=L4(_.modelRef,_.config),D=x_($),I=Math.max(1,Math.min(_.limit??10,100)),U=await w3([_.query],_),E=U.vectors[0]??[];h(_.dbPath);let j=w(_.dbPath);try{let A=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((O)=>{let P=JSON.parse(O.vector_json),W=QN(O.metadata_json),z=W.provenance&&typeof W.provenance==="object"&&!Array.isArray(W.provenance)?W.provenance:null;return{chunk_id:O.chunk_id,score:D7(I,P,O.vector_norm),text:O.text,source_uri:O.source_uri,source_ref:O.source_ref,revision:O.revision,hash:O.hash,provenance:z}}).sort((O,P)=>P.score-O.score).slice(0,U);return{provider:g.provider,model:g.model,dimensions:D.dimensions,query:_.query,results:A}}finally{j.close()}}function gI(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function U$(_,$){for(let g of $){let U=_[g];if(typeof U==="string"&&U.length>0)return U}return null}function B3(_,$){for(let g of $){let U=_[g];if(typeof U==="number"&&Number.isFinite(U))return U}return null}function r3(_){return Array.from(new Set(_))}function b3(_){let $=_.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[];return r3($.filter((g)=>g.length>0)).slice(0,16)}function V3(_){return _.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[]}function P7(_){let $=[],g=/"([^"]*)"|(\S+)/g,U,D=!1;while((U=g.exec(_))!==null){if(U[1]!==void 0){let O=V3(U[1]);if(O.length>0)$.push({type:"phrase",value:O.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 E=!1;if(I.endsWith("*"))E=!0,I=I.slice(0,-1);let A=V3(I);if(A.length===0)continue;$.push({type:A.length>1?"phrase":"term",value:A.join(" "),negate:j,prefix:E})}return $.slice(0,24)}function S7(_){if(_.type==="phrase")return`"${_.value}"`;return`"${_.value}"*`}function L7(_){let $=P7(_);if($.filter((j)=>j.type!=="or"&&!j.negate).length===0)return{and:null,or:null};let U=(j)=>{let E="",A=!1,O=[];for(let P of $){if(P.type==="or"){A=!0;continue}let W=S7(P);if(P.negate){O.push(W);continue}if(E.length===0)E=W;else E=A?`${E} OR ${W}`:`${E} ${j} ${W}`;A=!1}for(let P of O)E=`(${E}) NOT ${P}`;return E.length>0?E:null},D=U("AND"),I=U("OR");return{and:D,or:I!==D?I:null}}function W7(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function M3(_,$){return _.flatMap((g)=>Array.from({length:$},()=>`%${W7(g)}%`))}function J7(_,$){let g=Number.isFinite(_)?1/(1+Math.abs(_)):0,U=1/(1+$);return DI(Math.max(g,U))}function TN(_,$){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 z7(_){return DI(Math.max(0,Math.min(1,(_+1)/2)))}function DI(_){return Number(_.toFixed(6))}function G4(_,$){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 KN(_){let $=_.provenance;return $&&typeof $==="object"&&!Array.isArray($)?$:null}function R7(_){let $=gI(_.chunk_metadata_json),g=KN($);if(g)return g;if(!_.source_revision_id&&!_.source_uri)return null;return K6({source_ref:U$($,["source_ref"]),source_uri:_.source_uri??U$($,["source_uri"]),source_kind:_.source_kind??U$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??U$($,["revision"]),hash:_.hash??U$($,["hash"]),chunk_id:_.chunk_id,start_offset:_.start_offset??B3($,["start_offset"]),end_offset:_.end_offset??B3($,["end_offset"]),status:U$($,["status"]),resolver:"open-files-read-only"})}function F3(_,$,g){if(!$)return[];try{return G7(_,$,g)}catch{return[]}}function G7(_,$,g){return _.query(`SELECT + WHERE v.provider = ? AND v.model = ? AND v.status = 'active'`).all(D.provider,D.model).map((O)=>{let L=JSON.parse(O.vector_json),J=Cg(O.metadata_json),P=J.provenance&&typeof J.provenance==="object"&&!Array.isArray(J.provenance)?J.provenance:null;return{chunk_id:O.chunk_id,score:TT(E,L,O.vector_norm),text:O.text,source_uri:O.source_uri,source_ref:O.source_ref,revision:O.revision,hash:O.hash,provenance:P}}).sort((O,L)=>L.score-O.score).slice(0,I);return{provider:D.provider,model:D.model,dimensions:U.dimensions,query:_.query,results:A}}finally{j.close()}}function AI(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function g$(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function f3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function y3(_){return Array.from(new Set(_))}function h3(_){let $=_.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[];return y3($.filter((D)=>D.length>0)).slice(0,16)}function x3(_){return _.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[]}function kT(_){let $=[],D=/"([^"]*)"|(\S+)/g,I,U=!1;while((I=D.exec(_))!==null){if(I[1]!==void 0){let O=x3(I[1]);if(O.length>0)$.push({type:"phrase",value:O.join(" "),negate:U,prefix:!1});U=!1;continue}let E=I[2]??"";if(E==="OR"||E==="||"||E==="|"){$.push({type:"or",value:"",negate:!1,prefix:!1});continue}if(E==="AND"||E==="&&")continue;if(E==="NOT"){U=!0;continue}let j=U;if(U=!1,E.startsWith("-")&&E.length>1)j=!0,E=E.slice(1);let N=!1;if(E.endsWith("*"))N=!0,E=E.slice(0,-1);let A=x3(E);if(A.length===0)continue;$.push({type:A.length>1?"phrase":"term",value:A.join(" "),negate:j,prefix:N})}return $.slice(0,24)}function qT(_){if(_.type==="phrase")return`"${_.value}"`;return`"${_.value}"*`}function CT(_){let $=kT(_);if($.filter((j)=>j.type!=="or"&&!j.negate).length===0)return{and:null,or:null};let I=(j)=>{let N="",A=!1,O=[];for(let L of $){if(L.type==="or"){A=!0;continue}let J=qT(L);if(L.negate){O.push(J);continue}if(N.length===0)N=J;else N=A?`${N} OR ${J}`:`${N} ${j} ${J}`;A=!1}for(let L of O)N=`(${N}) NOT ${L}`;return N.length>0?N:null},U=I("AND"),E=I("OR");return{and:U,or:E!==U?E:null}}function vT(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function c3(_,$){return _.flatMap((D)=>Array.from({length:$},()=>`%${vT(D)}%`))}function wT(_,$){let D=Number.isFinite(_)?1/(1+Math.abs(_)):0,I=1/(1+$);return OI(Math.max(D,I))}function vg(_,$){if($.length===0)return 0;let D=$.filter((I)=>_.includes(I)).length;if(D===0)return 0;return OI(Math.min(0.85,0.35+D/$.length*0.5))}function rT(_){return OI(Math.max(0,Math.min(1,(_+1)/2)))}function OI(_){return Number(_.toFixed(6))}function T0(_,$){let D=_.keyword??0,I=_.semantic??0,U=_.catalog??0,E=$?.chunk_id?0.05:0;return OI(Math.min(1,D*0.55+I*0.4+U*0.35+E))}function wg(_){let $=_.provenance;return $&&typeof $==="object"&&!Array.isArray($)?$:null}function fT(_){let $=AI(_.chunk_metadata_json),D=wg($);if(D)return D;if(!_.source_revision_id&&!_.source_uri)return null;return M6({source_ref:g$($,["source_ref"]),source_uri:_.source_uri??g$($,["source_uri"]),source_kind:_.source_kind??g$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??g$($,["revision"]),hash:_.hash??g$($,["hash"]),chunk_id:_.chunk_id,start_offset:_.start_offset??f3($,["start_offset"]),end_offset:_.end_offset??f3($,["end_offset"]),status:g$($,["status"]),resolver:"open-files-read-only"})}function u3(_,$,D){if(!$)return[];try{return xT(_,$,D)}catch{return[]}}function xT(_,$,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 Z3(_,$){if($.length===0)return"1 = 0";return $.map(()=>`(${_.map((U)=>`lower(COALESCE(${U}, '')) LIKE ? ESCAPE '\\'`).join(" OR ")})`).join(" OR ")}function X7(_,$,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 n3(_,$){if($.length===0)return"1 = 0";return $.map(()=>`(${_.map((I)=>`lower(COALESCE(${I}, '')) LIKE ? ESCAPE '\\'`).join(" OR ")})`).join(" OR ")}function uT(_,$,D){let I=["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 (${Z3(U,$)}) + WHERE status = 'active' AND (${n3(I,$)}) ORDER BY updated_at DESC - LIMIT ?`).all(...M3($,U.length),g)}function Y7(_,$,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(...c3($,I.length),D)}function yT(_,$,D){let I=["kind","name","shard_key","artifact_uri","metadata_json"];return _.query(`SELECT id, kind, name, artifact_uri, shard_key, metadata_json FROM knowledge_indexes - WHERE ${Z3(U,$)} + WHERE ${n3(I,$)} ORDER BY updated_at DESC - LIMIT ?`).all(...M3($,U.length),g)}function H3(_){if(!_||!A7(_))return[];try{let $=JSON.parse(O7(_,"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 Q7(_){return[_.id,_.short_id,_.title,_.content,_.url,..._.tags??[]].filter(($)=>typeof $==="string"&&$.length>0).join(" ").toLowerCase()}function k3(_,$,g){if($.length===0)return[];return _.filter((U)=>U.archived!==!0).map((U)=>({item:U,haystack:Q7(U)})).filter(({haystack:U})=>$.some((D)=>U.includes(D))).map(({item:U,haystack:D})=>({item:U,score:TN(D,$)})).sort((U,D)=>D.score-U.score||U.item.id.localeCompare(D.item.id)).slice(0,g)}function T7(_,$,g){return k3(H3(_),$,g)}function K7(_,$){let g=gI(_.chunk_metadata_json),U=R7(_),D=U$(g,["source_ref"]),I=_.source_uri??U$(g,["source_uri"]),j=Boolean(_.wiki_page_id),E={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??U$(g,["source_kind"]),revision:_.revision??U$(g,["revision"]),hash:_.hash??U$(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 E.score=G4(E.scores,E.citation),E}function qN(_,$){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=G4(U.scores,U.citation),U}function q7(_,$){let g=gI(_.metadata_json),U=TN(`${_.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:KN(g),reasons:["wiki_catalog_match"]};return D.score=G4(D.scores,D.citation),D}function B7(_,$){let g=gI(_.metadata_json),U=TN(`${_.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:U$(g,["artifact_key"]),hash:U$(g,["content_hash"]),shard_key:_.shard_key},provenance:KN(g),reasons:["index_catalog_match"]};return D.score=G4(D.scores,D.citation),D}function R4(_,$){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=r3([...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=G4(U.scores,U.citation)}function C3(_){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=b3($),j=L7($),E=_.semantic===!0||_.fake===!0||Boolean(_.modelRef),A=[],O=null,P=null,W=null,z=0,S=0,L=0,J=new Map;c(_.dbPath);let R=v(_.dbPath);try{let B=Math.max(D*3,20),Q=F3(R,j.and,B);if(Q.length===0&&j.or)Q=F3(R,j.or,B);z=Q.length,Q.forEach((F,o)=>R4(J,K7(F,J7(F.rank,o))));let T=X7(R,I,Math.max(D,10)),K=Y7(R,I,Math.max(D,10)),V=T7(_.legacyStorePath,I,Math.max(D,10));S=T.length+K.length,z+=V.length,V.forEach(({item:F,score:o})=>R4(J,qN(F,o))),T.forEach((F)=>R4(J,q7(F,I))),K.forEach((F)=>R4(J,B7(F,I)))}finally{R.close()}if(E)try{let B=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});O=B.provider,P=B.model,W=B.dimensions,L=B.results.length;for(let Q of B.results){let T={kind:"source_chunk",id:Q.chunk_id,title:null,text:Q.text,score:0,scores:{semantic:z7(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=G4(T.scores,T.citation),R4(J,T)}}catch(B){A.push(`semantic_search_failed: ${B instanceof Error?B.message:String(B)}`)}let G=C3(Array.from(J.values())).slice(U,U+g);return{query:$,limit:g,offset:U,mode:{keyword:!0,catalog:!0,semantic:E},semantic_provider:O,semantic_model:P,semantic_dimensions:W,counts:{keyword_results:z,catalog_results:S,semantic_results:L,merged_results:G.length},warnings:A,results:G}}async function II(_){return BN(H3(_.legacyStorePath),_,["knowledge_db_missing"])}async function BN(_,$,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=b3(U),E=$.semantic===!0||$.fake===!0||Boolean($.modelRef),A=new Map,O=k3(_,j,Math.max(I+D,10));O.forEach(({item:z,score:S})=>R4(A,qN(z,S)));let P=[...g];if(E)P.push("semantic_search_requires_local_catalog");let W=C3(Array.from(A.values())).slice(I,I+D);return{query:U,limit:D,offset:I,mode:{keyword:!0,catalog:!0,semantic:E},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:O.length,catalog_results:0,semantic_results:0,merged_results:W.length},warnings:P,results:W}}function VN(_,$,g=[],U=_.length){let D=$.query.trim();if(!D)throw Error("Search query is required.");let I=Math.max(1,Math.min($.limit??10,100)),j=Math.max(0,Math.floor($.offset??0)),E=_.map(({item:A,rank:O})=>qN(A,O));return{query:D,limit:I,offset:j,mode:{keyword:!0,catalog:!0,semantic:$.semantic===!0},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:U,catalog_results:0,semantic_results:0,merged_results:E.length},warnings:g,results:E}}function v3(_,$){return`${_}_${V7("sha256").update($).digest("hex").slice(0,20)}`}function w3(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function F7(_){return Array.from(new Set(w3(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,16)}function r7(_){return[_.title,_.text].filter(Boolean).join(" ").toLowerCase()}function b7(_,$){if($.length===0)return 0;let g=r7(_),U=$.filter((D)=>g.includes(D)).length;return Number((U/$.length).toFixed(6))}function M7(_){if(!_)return!0;if("read_only"in _)return _.read_only===!0;if("read_only_sources"in _)return _.read_only_sources===!0;return!0}function u3(_){if(!_)return!1;if("stale"in _&&_.stale)return!0;if("status"in _)return AN(_.status);return!1}function Z7(_){if(u3(_.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 H7(_){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 k7(_){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 C7(_,$){let g={base_score:_.score,exact_score:b7(_,$),citation_score:H7(_),freshness_score:Z7(_),authority_score:k7(_)},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 f3(_,$){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 v7(_){return{id:v3("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:f3(_,500),provenance:_.provenance}}function w7(_,$,g){let U=f3(_,g);if(!U)return null;return{id:v3("excerpt",`${_.kind}\x00${_.id}`),result_id:_.id,citation_id:$.id,kind:_.kind,text:U,score:_.score}}function jI(_){return _.map(()=>"?").join(", ")}function u7(_,$){let g=$.map((E)=>E.citation?.chunk_id).filter((E)=>Boolean(E)),U=$.filter((E)=>E.kind==="wiki_page").map((E)=>E.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(...c3($,I.length),D)}function d3(_){if(!_||!ZT(_))return[];try{let $=JSON.parse(HT(_,"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 hT(_){return[_.id,_.short_id,_.title,_.content,_.url,..._.tags??[]].filter(($)=>typeof $==="string"&&$.length>0).join(" ").toLowerCase()}function m3(_,$,D){if($.length===0)return[];return _.filter((I)=>I.archived!==!0).map((I)=>({item:I,haystack:hT(I)})).filter(({haystack:I})=>$.some((U)=>I.includes(U))).map(({item:I,haystack:U})=>({item:I,score:vg(U,$)})).sort((I,U)=>U.score-I.score||I.item.id.localeCompare(U.item.id)).slice(0,D)}function cT(_,$,D){return m3(d3(_),$,D)}function nT(_,$){let D=AI(_.chunk_metadata_json),I=fT(_),U=g$(D,["source_ref"]),E=_.source_uri??g$(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:E||U?{uri:E,ref:U,kind:_.source_kind??g$(D,["source_kind"]),revision:_.revision??g$(D,["revision"]),hash:_.hash??g$(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:I,reasons:["keyword_match"]};return N.score=T0(N.scores,N.citation),N}function rg(_,$){let D=`knowledge://item/${encodeURIComponent(_.id)}`,I={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 I.score=T0(I.scores,I.citation),I}function dT(_,$){let D=AI(_.metadata_json),I=vg(`${_.path} ${_.title} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"wiki_page",id:_.id,title:_.title,text:null,score:0,scores:{catalog:I},source:null,citation:null,artifact:{uri:_.artifact_uri,path:_.path,hash:_.content_hash,shard_key:_.path},provenance:wg(D),reasons:["wiki_catalog_match"]};return U.score=T0(U.scores,U.citation),U}function mT(_,$){let D=AI(_.metadata_json),I=vg(`${_.kind} ${_.name} ${_.shard_key??""} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"knowledge_index",id:_.id,title:_.name,text:null,score:0,scores:{catalog:I},source:null,citation:null,artifact:{uri:_.artifact_uri,path:g$(D,["artifact_key"]),hash:g$(D,["content_hash"]),shard_key:_.shard_key},provenance:wg(D),reasons:["index_catalog_match"]};return U.score=T0(U.scores,U.citation),U}function K0(_,$){let D=`${$.kind}:${$.id}`,I=_.get(D);if(!I){_.set(D,$);return}I.scores={keyword:Math.max(I.scores.keyword??0,$.scores.keyword??0)||void 0,semantic:Math.max(I.scores.semantic??0,$.scores.semantic??0)||void 0,catalog:Math.max(I.scores.catalog??0,$.scores.catalog??0)||void 0},I.reasons=y3([...I.reasons,...$.reasons]),I.text=I.text??$.text,I.title=I.title??$.title,I.source=I.source??$.source,I.citation=I.citation??$.citation,I.artifact=I.artifact??$.artifact,I.provenance=I.provenance??$.provenance,I.score=T0(I.scores,I.citation)}function l3(_){let $={source_chunk:0,wiki_chunk:1,legacy_item:2,wiki_page:3,knowledge_index:4};return _.sort((D,I)=>{if(I.score!==D.score)return I.score-D.score;return $[D.kind]-$[I.kind]||D.id.localeCompare(I.id)})}async function LI(_){let $=_.query.trim();if(!$)throw Error("Search query is required.");let D=Math.max(1,Math.min(_.limit??10,100)),I=Math.max(0,Math.floor(_.offset??0)),U=I+D,E=h3($),j=CT($),N=_.semantic===!0||_.fake===!0||Boolean(_.modelRef),A=[],O=null,L=null,J=null,P=0,z=0,S=0,W=new Map;h(_.dbPath);let X=w(_.dbPath);try{let K=Math.max(U*3,20),Y=u3(X,j.and,K);if(Y.length===0&&j.or)Y=u3(X,j.or,K);P=Y.length,Y.forEach((B,c)=>K0(W,nT(B,wT(B.rank,c))));let T=uT(X,E,Math.max(U,10)),F=yT(X,E,Math.max(U,10)),k=cT(_.legacyStorePath,E,Math.max(U,10));z=T.length+F.length,P+=k.length,k.forEach(({item:B,score:c})=>K0(W,rg(B,c))),T.forEach((B)=>K0(W,dT(B,E))),F.forEach((B)=>K0(W,mT(B,E)))}finally{X.close()}if(N)try{let K=await gI({dbPath:_.dbPath,query:$,limit:Math.max(U*3,20),config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,batchSize:_.batchSize,maxParallelCalls:_.maxParallelCalls});O=K.provider,L=K.model,J=K.dimensions,S=K.results.length;for(let Y of K.results){let T={kind:"source_chunk",id:Y.chunk_id,title:null,text:Y.text,score:0,scores:{semantic:rT(Y.score)},source:{uri:Y.source_uri,ref:Y.source_ref,kind:Y.provenance?.source_kind??null,revision:Y.revision,hash:Y.hash},citation:{chunk_id:Y.chunk_id,start_offset:Y.provenance?.start_offset??null,end_offset:Y.provenance?.end_offset??null},artifact:null,provenance:Y.provenance,reasons:["semantic_match"]};T.score=T0(T.scores,T.citation),K0(W,T)}}catch(K){A.push(`semantic_search_failed: ${K instanceof Error?K.message:String(K)}`)}let R=l3(Array.from(W.values())).slice(I,I+D);return{query:$,limit:D,offset:I,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:O,semantic_model:L,semantic_dimensions:J,counts:{keyword_results:P,catalog_results:z,semantic_results:S,merged_results:R.length},warnings:A,results:R}}async function SI(_){return fg(d3(_.legacyStorePath),_,["knowledge_db_missing"])}async function fg(_,$,D=[]){let I=$.query.trim();if(!I)throw Error("Search query is required.");let U=Math.max(1,Math.min($.limit??10,100)),E=Math.max(0,Math.floor($.offset??0)),j=h3(I),N=$.semantic===!0||$.fake===!0||Boolean($.modelRef),A=new Map,O=m3(_,j,Math.max(E+U,10));O.forEach(({item:P,score:z})=>K0(A,rg(P,z)));let L=[...D];if(N)L.push("semantic_search_requires_local_catalog");let J=l3(Array.from(A.values())).slice(E,E+U);return{query:I,limit:U,offset:E,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:O.length,catalog_results:0,semantic_results:0,merged_results:J.length},warnings:L,results:J}}function xg(_,$,D=[],I=_.length){let U=$.query.trim();if(!U)throw Error("Search query is required.");let E=Math.max(1,Math.min($.limit??10,100)),j=Math.max(0,Math.floor($.offset??0)),N=_.map(({item:A,rank:O})=>rg(A,O));return{query:U,limit:E,offset:j,mode:{keyword:!0,catalog:!0,semantic:$.semantic===!0},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:I,catalog_results:0,semantic_results:0,merged_results:N.length},warnings:D,results:N}}function i3(_,$){return`${_}_${lT("sha256").update($).digest("hex").slice(0,20)}`}function t3(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function iT(_){return Array.from(new Set(t3(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,16)}function tT(_){return[_.title,_.text].filter(Boolean).join(" ").toLowerCase()}function oT(_,$){if($.length===0)return 0;let D=tT(_),I=$.filter((U)=>D.includes(U)).length;return Number((I/$.length).toFixed(6))}function pT(_){if(!_)return!0;if("read_only"in _)return _.read_only===!0;if("read_only_sources"in _)return _.read_only_sources===!0;return!0}function o3(_){if(!_)return!1;if("stale"in _&&_.stale)return!0;if("status"in _)return Qg(_.status);return!1}function eT(_){if(o3(_.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 aT(_){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 sT(_){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 _F(_,$){let D={base_score:_.score,exact_score:oT(_,$),citation_score:aT(_),freshness_score:eT(_),authority_score:sT(_)},I=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(I.toFixed(6)),reasons:Array.from(U),rerank:{...D,final_score:Number(I.toFixed(6))}}}function p3(_,$){let D=_.text??_.title;if(!D)return null;let I=D.replace(/\s+/g," ").trim();return I.length<=$?I:`${I.slice(0,Math.max(0,$-1)).trim()}...`}function $F(_){return{id:i3("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:p3(_,500),provenance:_.provenance}}function DF(_,$,D){let I=p3(_,D);if(!I)return null;return{id:i3("excerpt",`${_.kind}\x00${_.id}`),result_id:_.id,citation_id:$.id,kind:_.kind,text:I,score:_.score}}function JI(_){return _.map(()=>"?").join(", ")}function UF(_,$){let D=$.map((N)=>N.citation?.chunk_id).filter((N)=>Boolean(N)),I=$.filter((N)=>N.kind==="wiki_page").map((N)=>N.id),U=[],E=[];if(D.length===0&&I.length===0)return{citations:U,backlinks:E};let j=w(_);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 (${JI(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(I.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 (${JI(I)}) ORDER BY created_at DESC - LIMIT 50`).all(...U)),I.push(...j.query(`SELECT from_page_id, to_page_id, label + LIMIT 50`).all(...I)),E.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 D6(_,$={}){let g=Math.max(200,Math.min($.contextChars??1200,4000)),U=F7(_.query),D=[..._.warnings],I=new Set,j=new Set,A=_.results.filter((W)=>{if(!M7(W.provenance))return D.push(`permission_filtered: ${W.kind}:${W.id}`),I.add("Dropped a result because provenance was not read-only."),!1;if(u3(W.provenance))return D.push(`stale_filtered: ${W.kind}:${W.id}`),j.add("Dropped a stale result whose source status requires reindexing."),!1;return!0}).map((W)=>C7(W,U)).sort((W,z)=>z.score-W.score||W.id.localeCompare(z.id)).slice(0,_.limit),O=A.map(v7),P=A.map((W,z)=>w7(W,O[z],g)).filter((W)=>Boolean(W));for(let W of A){if(W.provenance&&"read_only"in W.provenance&&W.provenance.read_only)I.add("All source-backed excerpts are read-only and citation-required.");if(W.rerank.freshness_score>=0.85)j.add("Fresh source revision/hash or artifact hash is present for top context.")}return{query:_.query,normalized_query:w3(_.query),created_at:new Date().toISOString(),mode:_.mode,warnings:D,search_counts:_.counts,results:A,citations:O,excerpts:P,graph:$.dbPath?u7($.dbPath,A):{citations:[],backlinks:[]},notes:{permissions:Array.from(I),freshness:Array.from(j)}}}async function X4(_){let $=await UI(_);return D6($,{dbPath:_.dbPath,contextChars:_.contextChars})}async function x3(_,$){let g=await BN(_,$);return D6(g,{contextChars:$.contextChars})}function Y4(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function rN(_){return`C${_+1}`}function c3(_,$){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((E)=>E.id===U.citation_id),j=I?.source_ref??I?.source_uri??I?.artifact_path??I?.artifact_uri??"unknown source";return`[${rN(D)}] ${U.text} (${j})`})].join(` -`)}function h3(_,$){let g=$.citations.map((D,I)=>({id:rN(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:rN(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 n3(_,$){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 f7(_,$){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 FN(_,$){let g=v(_);try{g.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${bN()}`,$.runId,$.level,$.event,JSON.stringify($.metadata),$.now])}finally{g.close()}}function y3(_,$){let g=v(_);try{g.run(`UPDATE runs + WHERE from_page_id IN (${JI(I)}) OR to_page_id IN (${JI(I)}) + LIMIT 50`).all(...I,...I))}finally{j.close()}return{citations:U,backlinks:E}}function A6(_,$={}){let D=Math.max(200,Math.min($.contextChars??1200,4000)),I=iT(_.query),U=[..._.warnings],E=new Set,j=new Set,A=_.results.filter((J)=>{if(!pT(J.provenance))return U.push(`permission_filtered: ${J.kind}:${J.id}`),E.add("Dropped a result because provenance was not read-only."),!1;if(o3(J.provenance))return U.push(`stale_filtered: ${J.kind}:${J.id}`),j.add("Dropped a stale result whose source status requires reindexing."),!1;return!0}).map((J)=>_F(J,I)).sort((J,P)=>P.score-J.score||J.id.localeCompare(P.id)).slice(0,_.limit),O=A.map($F),L=A.map((J,P)=>DF(J,O[P],D)).filter((J)=>Boolean(J));for(let J of A){if(J.provenance&&"read_only"in J.provenance&&J.provenance.read_only)E.add("All source-backed excerpts are read-only and citation-required.");if(J.rerank.freshness_score>=0.85)j.add("Fresh source revision/hash or artifact hash is present for top context.")}return{query:_.query,normalized_query:t3(_.query),created_at:new Date().toISOString(),mode:_.mode,warnings:U,search_counts:_.counts,results:A,citations:O,excerpts:L,graph:$.dbPath?UF($.dbPath,A):{citations:[],backlinks:[]},notes:{permissions:Array.from(E),freshness:Array.from(j)}}}async function F0(_){let $=await LI(_);return A6($,{dbPath:_.dbPath,contextChars:_.contextChars})}async function e3(_,$){let D=await fg(_,$);return A6(D,{contextChars:$.contextChars})}function V0(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function yg(_){return`C${_+1}`}function s3(_,$){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((I,U)=>{let E=$.citations.find((N)=>N.id===I.citation_id),j=E?.source_ref??E?.source_uri??E?.artifact_path??E?.artifact_uri??"unknown source";return`[${yg(U)}] ${I.text} (${j})`})].join(` +`)}function _X(_,$){let D=$.citations.map((U,E)=>({id:yg(E),source_ref:U.source_ref,source_uri:U.source_uri,artifact_path:U.artifact_path,revision:U.revision,hash:U.hash,quote:U.quote})),I=$.excerpts.map((U,E)=>({id:yg(E),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(I,null,2)}`,"",`Citations: +${JSON.stringify(D,null,2)}`].join(` +`)}function $X(_,$){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 IF(_,$){let D=w(_);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 ug(_,$){let D=w(_);try{D.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${hg()}`,$.runId,$.level,$.event,JSON.stringify($.metadata),$.now])}finally{D.close()}}function a3(_,$){let D=w(_);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 x7(_,$,g,U,D,I,j={}){let E=v(_);try{z4(E,{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{E.close()}}async function d3(_){let $=_.prompt.trim();if(!$)throw Error("Knowledge prompt is required.");let g=(_.now??new Date).toISOString(),U=`run_${bN()}`,D=G$(_.modelRef??"default",_.config),I=C_(D);c(_.dbPath),f7(_.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:E,approveWrite:A,now:O,...P}=_,W=await X4({...P,query:$});FN(_.dbPath,{runId:U,level:"info",event:"context_retrieved",metadata:{results:W.results.length,citations:W.citations.length,warnings:W.warnings},now:g});let z=c3($,W),S=!1,L="local",J="context-draft",R={input_tokens:Y4($)+W.excerpts.reduce((Q,T)=>Q+Y4(T.text),0),output_tokens:Y4(z),cost_usd:0},X=[...W.warnings];if(_.generate)try{if(_.fake)S=!0,L=I.provider,J=I.model,z=`Fake generated answer for: ${$} + WHERE id = ?`,[$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.runId])}finally{D.close()}}function EF(_,$,D,I,U,E,j={}){let N=w(_);try{Q0(N,{run_id:$,provider:I,model:U,input_tokens:D.input_tokens,output_tokens:D.output_tokens,cost_usd:D.cost_usd,metadata:j,created_at:E})}finally{N.close()}}async function DX(_){let $=_.prompt.trim();if(!$)throw Error("Knowledge prompt is required.");let D=(_.now??new Date).toISOString(),I=`run_${hg()}`,U=T$(_.modelRef??"default",_.config),E=x_(U);h(_.dbPath),IF(_.dbPath,{runId:I,prompt:$,status:_.generate?"running":"dry_run",provider:_.generate?E.provider:"local",model:_.generate?E.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:A,now:O,...L}=_,J=await F0({...L,query:$});ug(_.dbPath,{runId:I,level:"info",event:"context_retrieved",metadata:{results:J.results.length,citations:J.citations.length,warnings:J.warnings},now:D});let P=s3($,J),z=!1,S="local",W="context-draft",X={input_tokens:V0($)+J.excerpts.reduce((Y,T)=>Y+V0(T.text),0),output_tokens:V0(P),cost_usd:0},G=[...J.warnings];if(_.generate)try{if(_.fake)z=!0,S=E.provider,W=E.model,P=`Fake generated answer for: ${$} -${z}`;else{let{generateText:Q}=await import("ai"),T=await x0(D,{config:_.config,env:_.env}),K=await Q({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:h3($,W)});S=!0,L=I.provider,J=I.model,z=K.text;let V=jg({provider:L,model:J,usage:K.usage,providerMetadata:K.providerMetadata});R={input_tokens:V.input_tokens,output_tokens:V.output_tokens,cost_usd:V.cost_usd}}}catch(Q){throw FN(_.dbPath,{runId:U,level:"error",event:"answer_generation_failed",metadata:{message:Q instanceof Error?Q.message:String(Q)},now:g}),y3(_.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 G=n3($,W),B={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 FN(_.dbPath,{runId:U,level:"info",event:S?"answer_generated":"answer_drafted",metadata:{provider:L,model:J,proposed_updates:G.length,durable_writes_performed:!1},now:g}),x7(_.dbPath,U,R,L,J,g,{generated:S,citations:W.citations.length}),y3(_.dbPath,{runId:U,status:S?"completed":"dry_run",provider:L,model:J,metadata:{generated:S,citations:W.citations.length,proposed_updates:G.length,approve_write:_.approveWrite===!0},now:g}),{run_id:U,prompt:$,generated:S,provider:L,model:J,answer:z,context:W,citations:W.citations,proposed_wiki_updates:G,write_policy:B,usage:R,warnings:X}}async function m3(_,$,g){let U=$.prompt.trim();if(!U)throw Error("Knowledge prompt is required.");let D=`run_${bN()}`,I=G$($.modelRef??"default",$.config),j=C_(I),{prompt:E,generate:A,approveWrite:O,now:P,...W}=$,z=g?D6(g,{contextChars:$.contextChars}):await x3(_,{...W,query:U}),S=c3(U,z),L=!1,J="local",R="context-draft",X={input_tokens:Y4(U)+z.excerpts.reduce((T,K)=>T+Y4(K.text),0),output_tokens:Y4(S),cost_usd:0},G=[...z.warnings];if($.generate)if($.fake)L=!0,J=j.provider,R=j.model,S=`Fake generated answer for: ${U} +${P}`;else{let{generateText:Y}=await import("ai"),T=await lD(U,{config:_.config,env:_.env}),F=await Y({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:_X($,J)});z=!0,S=E.provider,W=E.model,P=F.text;let k=O4({provider:S,model:W,usage:F.usage,providerMetadata:F.providerMetadata});X={input_tokens:k.input_tokens,output_tokens:k.output_tokens,cost_usd:k.cost_usd}}}catch(Y){throw ug(_.dbPath,{runId:I,level:"error",event:"answer_generation_failed",metadata:{message:Y instanceof Error?Y.message:String(Y)},now:D}),a3(_.dbPath,{runId:I,status:"failed",provider:E.provider,model:E.model,metadata:{generated:!1,error:Y instanceof Error?Y.message:String(Y)},now:D}),Y}let R=$X($,J),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 ug(_.dbPath,{runId:I,level:"info",event:z?"answer_generated":"answer_drafted",metadata:{provider:S,model:W,proposed_updates:R.length,durable_writes_performed:!1},now:D}),EF(_.dbPath,I,X,S,W,D,{generated:z,citations:J.citations.length}),a3(_.dbPath,{runId:I,status:z?"completed":"dry_run",provider:S,model:W,metadata:{generated:z,citations:J.citations.length,proposed_updates:R.length,approve_write:_.approveWrite===!0},now:D}),{run_id:I,prompt:$,generated:z,provider:S,model:W,answer:P,context:J,citations:J.citations,proposed_wiki_updates:R,write_policy:K,usage:X,warnings:G}}async function UX(_,$,D){let I=$.prompt.trim();if(!I)throw Error("Knowledge prompt is required.");let U=`run_${hg()}`,E=T$($.modelRef??"default",$.config),j=x_(E),{prompt:N,generate:A,approveWrite:O,now:L,...J}=$,P=D?A6(D,{contextChars:$.contextChars}):await e3(_,{...J,query:I}),z=s3(I,P),S=!1,W="local",X="context-draft",G={input_tokens:V0(I)+P.excerpts.reduce((T,F)=>T+V0(F.text),0),output_tokens:V0(z),cost_usd:0},R=[...P.warnings];if($.generate)if($.fake)S=!0,W=j.provider,X=j.model,z=`Fake generated answer for: ${I} -${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{config:$.config,env:$.env}),V=await T({model:K,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:h3(U,z)});L=!0,J=j.provider,R=j.model,S=V.text;let F=jg({provider:J,model:R,usage:V.usage,providerMetadata:V.providerMetadata});X={input_tokens:F.input_tokens,output_tokens:F.output_tokens,cost_usd:F.cost_usd}}let B=n3(U,z),Q={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:D,prompt:U,generated:L,provider:J,model:R,answer:S,context:z,citations:z.citations,proposed_wiki_updates:B,write_policy:Q,usage:X,warnings:G}}import{createHash as y7}from"crypto";var c7=1200,h7=6,n7=12000,d7=50,i3=800;function T4(_,$,g=16){return`${_}_${y7("sha256").update($).digest("hex").slice(0,g)}`}function ZN(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function HN(_){return ZN(_).toLowerCase()}function m7(_){return Array.from(new Set(HN(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,24)}function U6(_,$){let g=ZN(_);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 l3(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function kN(_){return/(?:api[_-]?key|secret|token|password|private[_-]?key|credential)/i.test(_)}function MN(_){return Object.keys(_).filter(($)=>!kN($)).sort().slice(0,12)}function i7(_,$){for(let g of $){if(kN(g))continue;let U=_[g];if(typeof U==="string"&&U.trim())return U.trim()}return null}function y0(_,$){if(!_)return null;let g=w_(_,$).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(kN(I))U.searchParams.delete(I);return U.toString()}catch{return g}}function w$(_,$,g){return y0(i7(_,$),g)}function EI(_){let $=[];for(let g of MN(_).slice(0,6)){let U=_[g];if(typeof U==="string"&&U.trim())$.push(`${g}=${U6(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 l7(_){if(!_.trim())return 0;return Math.max(1,Math.ceil(_.length/4))}function t3(_){return l7(JSON.stringify(_))}function t7(_){if(!Number.isFinite(_??NaN))return c7;let $=Math.floor(_);if($g.includes(D)).length;return Number((U/$.length).toFixed(6))}function p7(_){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 e7(_,$,g){let U=y0($.source_ref,g),D=y0($.source_uri,g),I=y0($.artifact_uri,g),j=y0($.artifact_path,g),E=U??D??j??I??$.id,A=$.quote?Q4($.quote,g,_<3?220:140):null;return{citation:{id:T4("cite",`${$.id}\x00${E}`,12),kind:$.artifact_uri||$.artifact_path?"artifact":"source",ref:E,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:A?.text??null},redactions:A?.redactions??0}}async function a7(_,$){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:E,dimensions:A,fake:O,env:P,batchSize:W,maxParallelCalls:z,legacyStorePath:S}=_,L=await X4({dbPath:D,config:U,legacyStorePath:S,query:g,limit:Math.max($,I??$),semantic:j,modelRef:E,dimensions:A,fake:O,env:P,batchSize:W,maxParallelCalls:z,contextChars:Math.min(_.contextChars??700,1200)}),J=new Map,R=0;L.citations.forEach((Q,T)=>{let K=e7(T,Q,_.safetyPolicy);R+=K.redactions,J.set(Q.id,K.citation)});let X=L.excerpts.slice(0,Math.max($*2,$)).map((Q)=>{let T=L.results.find((o)=>o.id===Q.result_id),K=Q.citation_id?J.get(Q.citation_id):null,V=Q4(Q.text,_.safetyPolicy,520);R+=V.redactions;let F=T?.title??K?.ref??Q.kind;return{id:T4("ev",`${Q.kind}\x00${Q.result_id}\x00${Q.citation_id??""}`,14),kind:Q.kind,title:U6(F,100),text_preview:V.text,score:Number(Q.score.toFixed(6)),citation_ids:K?[K.id]:[],provenance:{source:"search",record_ref:`${Q.kind}:${Q.result_id}`,created_at:L.created_at,updated_at:null,metadata_keys:[]}}}),G=new Set(X.flatMap((Q)=>Q.citation_ids));return{citations:Array.from(J.values()).filter((Q)=>G.has(Q.id)),evidence:X,duplicateCandidates:[],redactions:R,warnings:L.warnings,available:L.excerpts.length}}function s7(_,$,g){if($)return _.query(`SELECT id, type, prompt, status, provider, model, cost_tokens, cost_usd, metadata_json, created_at, updated_at +${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{config:$.config,env:$.env}),k=await T({model:F,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:_X(I,P)});S=!0,W=j.provider,X=j.model,z=k.text;let B=O4({provider:W,model:X,usage:k.usage,providerMetadata:k.providerMetadata});G={input_tokens:B.input_tokens,output_tokens:B.output_tokens,cost_usd:B.cost_usd}}let K=$X(I,P),Y={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:I,generated:S,provider:W,model:X,answer:z,context:P,citations:P.citations,proposed_wiki_updates:K,write_policy:Y,usage:G,warnings:R}}import{createHash as jF}from"crypto";var NF=1200,gF=6,AF=12000,OF=50,IX=800;function M0(_,$,D=16){return`${_}_${jF("sha256").update($).digest("hex").slice(0,D)}`}function ng(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function dg(_){return ng(_).toLowerCase()}function LF(_){return Array.from(new Set(dg(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,24)}function O6(_,$){let D=ng(_);if(D.length<=$)return D;let I="...";if($<=I.length)return D.slice(0,Math.max(0,$));return`${D.slice(0,$-I.length).trim()}${I}`}function EX(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function mg(_){return/(?:api[_-]?key|secret|token|password|private[_-]?key|credential)/i.test(_)}function cg(_){return Object.keys(_).filter(($)=>!mg($)).sort().slice(0,12)}function SF(_,$){for(let D of $){if(mg(D))continue;let I=_[D];if(typeof I==="string"&&I.trim())return I.trim()}return null}function iD(_,$){if(!_)return null;let D=y_(_,$).text;try{let I=new URL(D),U=["token","access_token","api_key","apikey","key","secret","password","signature","sig"];for(let E of U)I.searchParams.delete(E);for(let[E]of I.searchParams)if(mg(E))I.searchParams.delete(E);return I.toString()}catch{return D}}function n$(_,$,D){return iD(SF(_,$),D)}function WI(_){let $=[];for(let D of cg(_).slice(0,6)){let I=_[D];if(typeof I==="string"&&I.trim())$.push(`${D}=${O6(I,80)}`);else if(typeof I==="number"||typeof I==="boolean")$.push(`${D}=${String(I)}`);else if(I&&typeof I==="object")$.push(`${D}={...}`)}return $.join("; ")}function JF(_){if(!_.trim())return 0;return Math.max(1,Math.ceil(_.length/4))}function jX(_){return JF(JSON.stringify(_))}function WF(_){if(!Number.isFinite(_??NaN))return NF;let $=Math.floor(_);if($D.includes(U)).length;return Number((I/$.length).toFixed(6))}function zF(_){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 XF(_,$,D){let I=iD($.source_ref,D),U=iD($.source_uri,D),E=iD($.artifact_uri,D),j=iD($.artifact_path,D),N=I??U??j??E??$.id,A=$.quote?B0($.quote,D,_<3?220:140):null;return{citation:{id:M0("cite",`${$.id}\x00${N}`,12),kind:$.artifact_uri||$.artifact_path?"artifact":"source",ref:N,source_ref:I,source_uri:U,artifact_uri:E,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:A?.text??null},redactions:A?.redactions??0}}async function GF(_,$){let D=(_.query??_.topic??"").trim();if(!D)throw Error("Context pack query is required for search source.");let{config:I,dbPath:U,limit:E,semantic:j,modelRef:N,dimensions:A,fake:O,env:L,batchSize:J,maxParallelCalls:P,legacyStorePath:z}=_,S=await F0({dbPath:U,config:I,legacyStorePath:z,query:D,limit:Math.max($,E??$),semantic:j,modelRef:N,dimensions:A,fake:O,env:L,batchSize:J,maxParallelCalls:P,contextChars:Math.min(_.contextChars??700,1200)}),W=new Map,X=0;S.citations.forEach((Y,T)=>{let F=XF(T,Y,_.safetyPolicy);X+=F.redactions,W.set(Y.id,F.citation)});let G=S.excerpts.slice(0,Math.max($*2,$)).map((Y)=>{let T=S.results.find((c)=>c.id===Y.result_id),F=Y.citation_id?W.get(Y.citation_id):null,k=B0(Y.text,_.safetyPolicy,520);X+=k.redactions;let B=T?.title??F?.ref??Y.kind;return{id:M0("ev",`${Y.kind}\x00${Y.result_id}\x00${Y.citation_id??""}`,14),kind:Y.kind,title:O6(B,100),text_preview:k.text,score:Number(Y.score.toFixed(6)),citation_ids:F?[F.id]:[],provenance:{source:"search",record_ref:`${Y.kind}:${Y.result_id}`,created_at:S.created_at,updated_at:null,metadata_keys:[]}}}),R=new Set(G.flatMap((Y)=>Y.citation_ids));return{citations:Array.from(W.values()).filter((Y)=>R.has(Y.id)),evidence:G,duplicateCandidates:[],redactions:X,warnings:S.warnings,available:S.excerpts.length}}function RF(_,$,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 _q(_,$,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 YF(_,$,D){if($.length===0)return[];let I=$.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 (${I}) ORDER BY created_at DESC - LIMIT ?`).all(...$,g)}function $q(_,$){return`${_.type} ${_.metadata_json} ${$.map((U)=>`${U.event} ${U.metadata_json}`).join(" ")}`.toLowerCase().includes("loop")}function gq(_,$,g){let U=w$($,["source_ref","source_uri","evidence_uri","receipt_uri"],g),D=w$($,["artifact_uri"],g),I=w$($,["artifact_path","artifact_key"],g),j=U??D??I??`knowledge://project/runs/${_.id}`,E=_.prompt?Q4(_.prompt,g,180).text:null;return{id:T4("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:w$($,["revision"],g),hash:w$($,["hash","content_hash"],g),chunk_id:null,offsets:{start:null,end:null},quote_preview:E}}function Dq(_,$,g){let U=w$($,["source_ref","source_uri","evidence_uri","receipt_uri"],g),D=w$($,["artifact_uri"],g),I=w$($,["artifact_path","artifact_key"],g),j=U??D??I??`knowledge://project/runs/${_.run_id}`,E=Q4(_.event,g,160).text;return{id:T4("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:w$($,["revision"],g),hash:w$($,["hash","content_hash"],g),chunk_id:null,offsets:{start:null,end:null},quote_preview:E}}function a3(_){let $=new Map;for(let g of _){let U=HN(`${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:T4("dup",g,12),reason:"normalized_text_match",evidence_ids:U,confidence:U.length>2?"high":"medium"}))}async function Uq(_,$,g){let U=_.source==="loops"?"loops":"runs",D=(_.topic??_.query??"").trim(),I=m7(D),j=e3(_.since,g),E=j.warning?[j.warning]:[];c(_.dbPath);let A=v(_.dbPath);try{let O=s7(A,j.cutoff,Math.max($*8,40)),P=_q(A,O.map((X)=>X.id),Math.max($*12,80)),W=new Map;for(let X of P)W.set(X.run_id,[...W.get(X.run_id)??[],X]);let S=(U==="loops"?O.filter((X)=>$q(X,W.get(X.id)??[])):O).map((X)=>{let G=l3(X.metadata_json),B=`${X.type} ${X.status} ${X.prompt??""} ${EI(G)} ${(W.get(X.id)??[]).map((Q)=>`${Q.event} ${Q.metadata_json}`).join(" ")}`;return{row:X,metadata:G,score:o3(B,I),text:B}}).filter((X)=>I.length===0||X.score>0).sort((X,G)=>G.score-X.score||G.row.updated_at.localeCompare(X.row.updated_at)||X.row.id.localeCompare(G.row.id)),L=[],J=[],R=0;for(let X of S.slice(0,Math.max($*2,$))){let G=gq(X.row,X.metadata,_.safetyPolicy);L.push(G);let B=EI(X.metadata),Q=[X.row.prompt,B].filter(Boolean).join(" | ")||`${X.row.type} ${X.row.status}`,T=Q4(Q,_.safetyPolicy,420);R+=T.redactions,J.push({id:`run:${X.row.id}`,kind:X.row.type,title:U6(`${X.row.type}: ${X.row.status}`,100),text_preview:T.text,score:X.score,citation_ids:[G.id],provenance:{source:U,record_ref:`knowledge://project/runs/${X.row.id}`,created_at:X.row.created_at,updated_at:X.row.updated_at,metadata_keys:MN(X.metadata)}});let K=(W.get(X.row.id)??[]).map((V)=>{let F=l3(V.metadata_json),o=`${V.event} ${EI(F)} ${V.metadata_json}`;return{event:V,metadata:F,score:o3(o,I),text:o}}).filter((V)=>I.length===0||V.score>0).sort((V,F)=>F.score-V.score||F.event.created_at.localeCompare(V.event.created_at)||V.event.id.localeCompare(F.event.id)).slice(0,2);for(let V of K){let F=Dq(V.event,V.metadata,_.safetyPolicy);L.push(F);let o=Q4(`${V.event}: ${EI(V.metadata)}`,_.safetyPolicy,320);R+=o.redactions,J.push({id:`event:${V.event.id}`,kind:`run_event:${V.event.level}`,title:U6(V.event.event,100),text_preview:o.text,score:V.score,citation_ids:[F.id],provenance:{source:U,record_ref:`knowledge://project/runs/${V.event.run_id}`,created_at:V.event.created_at,updated_at:null,metadata_keys:MN(V.metadata)}})}}return{citations:L,evidence:J,duplicateCandidates:_.dedupe?a3(J):[],redactions:R,warnings:E,available:S.length}}finally{A.close()}}function Iq(_){let $=_.purpose==="proposal"?`Proposal context: ${U6(_.query||"loop evidence",80)}`:`Knowledge context: ${U6(_.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 s3(_){let $=new Set(_.evidence.flatMap((g)=>g.citation_ids));_.citations=_.citations.filter((g)=>$.has(g.id))}function p3(_){_.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 jq(_){let $=_.budgets.max_tokens,g=new Set(_.warnings);while(t3(_)>$){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=U6(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=U6(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((E)=>E.id===j))})).filter((I)=>I.evidence_ids.length>1),p3(_),g.add("evidence_truncated_for_token_budget"),s3(_);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,p3(_),_.budgets.estimated_tokens=t3(_),_.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 _R(_){let $=_.now??new Date,g=_.source??"search",U=_.purpose??(g==="loops"||g==="runs"?"proposal":"agent_context"),D=t7(_.maxTokens),I=o7(_.maxItems,_.limit),j=ZN(_.query??_.topic??"");if(U==="proposal"&&g!=="search"&&!j)throw Error("Proposal context requires --topic or a positional topic.");if(g!=="search")c(_.dbPath);let E=e3(_.since,$).cutoff??_.since??"",A=g==="search"?await a7(_,I):await Uq(_,I,$),O=A.evidence.sort((L,J)=>J.score-L.score||L.id.localeCompare(J.id)).slice(0,I),P=A.citations.filter((L,J,R)=>R.findIndex((X)=>X.id===L.id)===J).sort((L,J)=>L.id.localeCompare(J.id)),W=_.dedupe?a3(O):A.duplicateCandidates.filter((L)=>L.evidence_ids.every((J)=>O.some((R)=>R.id===J))),z=Iq({source:g,purpose:U,query:j,evidence:O,duplicates:W}),S={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:T4("ctx",[g,U,j,E,_.dedupe===!0?"dedupe":"no-dedupe",_.semantic===!0?"semantic":"keyword",_.modelRef??"",_.limit??"",D,I,O.map((L)=>L.id).join(","),P.map((L)=>L.id).join(",")].join("\x00"),20),budgets:{max_tokens:D,estimated_tokens:0,max_items:I,items_included:O.length,items_available:A.available,items_truncated:Math.max(0,A.available-O.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:A.redactions,reminders:p7(g)},citations:P,evidence:O,duplicate_candidates:W,outline:z,warnings:A.warnings,message:`${O.length} bounded evidence item(s), estimated under ${D} token(s)`};return s3(S),jq(S)}import{randomUUID as qX}from"crypto";import{createHash as Eq,randomUUID as Nq}from"crypto";import{existsSync as Aq,readFileSync as Oq}from"fs";import{hostname as jR}from"os";import{fileURLToPath as ER}from"url";import{extname as Pq,relative as NR,resolve as $R,sep as Sq}from"path";var OI=["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,r6=1,m0={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"]},i0=new Set(["storage_objects","knowledge_sync_changes","knowledge_sync_table_clocks","knowledge_sync_imports"]);function u$(_=new Date){return _.toISOString()}function xN(_){return`${_}_${Date.now().toString(36)}_${Nq().slice(0,8)}`}function AR(_){let $=_?.trim();if($)return $;return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??jR()}function q4(_){if(Array.isArray(_))return`[${_.map(q4).join(",")}]`;if(_&&typeof _==="object"){let $=_;return`{${Object.keys($).sort().map((g)=>`${JSON.stringify(g)}:${q4($[g])}`).join(",")}}`}return JSON.stringify(_)}function h0(_){return`sha256:${Eq("sha256").update(_).digest("hex")}`}function NI(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function SI(_,$){try{return JSON.parse(_)}catch{return $}}function I$(_){return`"${_.replace(/"/g,'""')}"`}function Lq(_){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 OR(_,$){return $.filter((g)=>P$(_,g))}function P$(_,$){let g=_.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get($);return Boolean(g)}function Wq(_,$){let g=_.query(`PRAGMA table_info(${I$($)})`).all();return new Set(g.map((U)=>U.name))}function Jq(_,$,g){let U=Wq(_,$);return g.filter((D)=>U.has(D))}function PR(_){if(!_||_.length===0)return[...OI];let $=new Set(OI),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 Ag(_,$){return m0[_].map((U)=>`${U}=${JSON.stringify($[U]??null)}`).join("&")}var zq=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body_bytes"]);function n0(_,$=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)=>n0(U,$+1));let g={};for(let[U,D]of Object.entries(_)){if(zq.has(U.toLowerCase()))continue;g[U]=n0(D,$+1)}return g}function c0(_){if(!_)return null;return n0(_)}function yN(_){return h0(q4(_))}function Rq(_,$){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 Ng(_,$=new Map){return yN(Rq(_,$))}function SR(_,$){if(!P$(_,$))return[];return _.query(`SELECT * FROM ${I$($)} ORDER BY rowid ASC`).all()}function PI(_,$,g=new Map){return yN($.map((U)=>({key:Ag(_,U),hash:Ng(U,g)})).sort((U,D)=>U.key.localeCompare(D.key)))}function d0(_,$,g){return _.query("SELECT * FROM knowledge_sync_table_clocks WHERE table_name = ? AND machine_id = ?").get($,g)??null}function Gq(_){if(!P$(_,"knowledge_sync_table_clocks"))return[];return _.query("SELECT * FROM knowledge_sync_table_clocks ORDER BY table_name ASC, machine_id ASC").all()}function LI(_,$){let g=$.now??u$(),D=d0(_,$.table,$.machineId)?.created_at??g;_.query(` + LIMIT ?`).all(...$,D)}function QF(_,$){return`${_.type} ${_.metadata_json} ${$.map((I)=>`${I.event} ${I.metadata_json}`).join(" ")}`.toLowerCase().includes("loop")}function KF(_,$,D){let I=n$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=n$($,["artifact_uri"],D),E=n$($,["artifact_path","artifact_key"],D),j=I??U??E??`knowledge://project/runs/${_.id}`,N=_.prompt?B0(_.prompt,D,180).text:null;return{id:M0("cite",`run\x00${_.id}\x00${j}`,12),kind:U||E?"artifact":"run",ref:j,source_ref:I?.startsWith("open-files://")?I:null,source_uri:I&&!I.startsWith("open-files://")?I:null,artifact_uri:U,artifact_path:E,run_id:_.id,run_event_id:null,revision:n$($,["revision"],D),hash:n$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function TF(_,$,D){let I=n$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=n$($,["artifact_uri"],D),E=n$($,["artifact_path","artifact_key"],D),j=I??U??E??`knowledge://project/runs/${_.run_id}`,N=B0(_.event,D,160).text;return{id:M0("cite",`event\x00${_.id}\x00${j}`,12),kind:U||E?"artifact":"run_event",ref:j,source_ref:I?.startsWith("open-files://")?I:null,source_uri:I&&!I.startsWith("open-files://")?I:null,artifact_uri:U,artifact_path:E,run_id:_.run_id,run_event_id:_.id,revision:n$($,["revision"],D),hash:n$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function OX(_){let $=new Map;for(let D of _){let I=dg(`${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(!I)continue;$.set(I,[...$.get(I)??[],D.id])}return Array.from($.entries()).filter(([,D])=>D.length>1).map(([D,I])=>({id:M0("dup",D,12),reason:"normalized_text_match",evidence_ids:I,confidence:I.length>2?"high":"medium"}))}async function FF(_,$,D){let I=_.source==="loops"?"loops":"runs",U=(_.topic??_.query??"").trim(),E=LF(U),j=AX(_.since,D),N=j.warning?[j.warning]:[];h(_.dbPath);let A=w(_.dbPath);try{let O=RF(A,j.cutoff,Math.max($*8,40)),L=YF(A,O.map((G)=>G.id),Math.max($*12,80)),J=new Map;for(let G of L)J.set(G.run_id,[...J.get(G.run_id)??[],G]);let z=(I==="loops"?O.filter((G)=>QF(G,J.get(G.id)??[])):O).map((G)=>{let R=EX(G.metadata_json),K=`${G.type} ${G.status} ${G.prompt??""} ${WI(R)} ${(J.get(G.id)??[]).map((Y)=>`${Y.event} ${Y.metadata_json}`).join(" ")}`;return{row:G,metadata:R,score:NX(K,E),text:K}}).filter((G)=>E.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)),S=[],W=[],X=0;for(let G of z.slice(0,Math.max($*2,$))){let R=KF(G.row,G.metadata,_.safetyPolicy);S.push(R);let K=WI(G.metadata),Y=[G.row.prompt,K].filter(Boolean).join(" | ")||`${G.row.type} ${G.row.status}`,T=B0(Y,_.safetyPolicy,420);X+=T.redactions,W.push({id:`run:${G.row.id}`,kind:G.row.type,title:O6(`${G.row.type}: ${G.row.status}`,100),text_preview:T.text,score:G.score,citation_ids:[R.id],provenance:{source:I,record_ref:`knowledge://project/runs/${G.row.id}`,created_at:G.row.created_at,updated_at:G.row.updated_at,metadata_keys:cg(G.metadata)}});let F=(J.get(G.row.id)??[]).map((k)=>{let B=EX(k.metadata_json),c=`${k.event} ${WI(B)} ${k.metadata_json}`;return{event:k,metadata:B,score:NX(c,E),text:c}}).filter((k)=>E.length===0||k.score>0).sort((k,B)=>B.score-k.score||B.event.created_at.localeCompare(k.event.created_at)||k.event.id.localeCompare(B.event.id)).slice(0,2);for(let k of F){let B=TF(k.event,k.metadata,_.safetyPolicy);S.push(B);let c=B0(`${k.event}: ${WI(k.metadata)}`,_.safetyPolicy,320);X+=c.redactions,W.push({id:`event:${k.event.id}`,kind:`run_event:${k.event.level}`,title:O6(k.event.event,100),text_preview:c.text,score:k.score,citation_ids:[B.id],provenance:{source:I,record_ref:`knowledge://project/runs/${k.event.run_id}`,created_at:k.event.created_at,updated_at:null,metadata_keys:cg(k.metadata)}})}}return{citations:S,evidence:W,duplicateCandidates:_.dedupe?OX(W):[],redactions:X,warnings:N,available:z.length}}finally{A.close()}}function VF(_){let $=_.purpose==="proposal"?`Proposal context: ${O6(_.query||"loop evidence",80)}`:`Knowledge context: ${O6(_.query,80)}`,D=_.evidence.slice(0,8).map((E)=>E.id),I=_.duplicates.slice(0,5).map((E)=>E.id),U=_.evidence.slice(0,5).map((E)=>`${E.id}: ${E.title}`);if(_.evidence.length===0)U.push("No matching bounded evidence was found.");return{title:$,bullets:U,evidence_ids:D,duplicate_candidate_ids:I,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 LX(_){let $=new Set(_.evidence.flatMap((D)=>D.citation_ids));_.citations=_.citations.filter((D)=>$.has(D.id))}function gX(_){_.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 BF(_){let $=_.budgets.max_tokens,D=new Set(_.warnings);while(jX(_)>$){let I=_.evidence.map((E,j)=>({entry:E,index:j})).filter(({entry:E})=>E.text_preview.length>180).sort((E,j)=>j.entry.text_preview.length-E.entry.text_preview.length)[0];if(I){I.entry.text_preview=O6(I.entry.text_preview,180),D.add("text_preview_truncated_for_token_budget");continue}let U=_.citations.filter((E)=>(E.quote_preview?.length??0)>120).sort((E,j)=>(j.quote_preview?.length??0)-(E.quote_preview?.length??0))[0];if(U?.quote_preview){U.quote_preview=O6(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((E)=>({...E,evidence_ids:E.evidence_ids.filter((j)=>_.evidence.some((N)=>N.id===j))})).filter((E)=>E.evidence_ids.length>1),gX(_),D.add("evidence_truncated_for_token_budget"),LX(_);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,gX(_),_.budgets.estimated_tokens=jX(_),_.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 SX(_){let $=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=WF(_.maxTokens),E=PF(_.maxItems,_.limit),j=ng(_.query??_.topic??"");if(I==="proposal"&&D!=="search"&&!j)throw Error("Proposal context requires --topic or a positional topic.");if(D!=="search")h(_.dbPath);let N=AX(_.since,$).cutoff??_.since??"",A=D==="search"?await GF(_,E):await FF(_,E,$),O=A.evidence.sort((S,W)=>W.score-S.score||S.id.localeCompare(W.id)).slice(0,E),L=A.citations.filter((S,W,X)=>X.findIndex((G)=>G.id===S.id)===W).sort((S,W)=>S.id.localeCompare(W.id)),J=_.dedupe?OX(O):A.duplicateCandidates.filter((S)=>S.evidence_ids.every((W)=>O.some((X)=>X.id===W))),P=VF({source:D,purpose:I,query:j,evidence:O,duplicates:J}),z={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:D,purpose:I,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:M0("ctx",[D,I,j,N,_.dedupe===!0?"dedupe":"no-dedupe",_.semantic===!0?"semantic":"keyword",_.modelRef??"",_.limit??"",U,E,O.map((S)=>S.id).join(","),L.map((S)=>S.id).join(",")].join("\x00"),20),budgets:{max_tokens:U,estimated_tokens:0,max_items:E,items_included:O.length,items_available:A.available,items_truncated:Math.max(0,A.available-O.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:A.redactions,reminders:zF(D)},citations:L,evidence:O,duplicate_candidates:J,outline:P,warnings:A.warnings,message:`${O.length} bounded evidence item(s), estimated under ${U} token(s)`};return LX(z),BF(z)}import{randomUUID as rG}from"crypto";import{createHash as MF,randomUUID as bF}from"crypto";import{existsSync as ZF,readFileSync as HF}from"fs";import{hostname as GX}from"os";import{fileURLToPath as RX}from"url";import{extname as kF,relative as YX,resolve as JX,sep as qF}from"path";var XI=["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"],k6=2,q6=1,aD={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"]},sD=new Set(["storage_objects","knowledge_sync_changes","knowledge_sync_table_clocks","knowledge_sync_imports"]);function d$(_=new Date){return _.toISOString()}function eg(_){return`${_}_${Date.now().toString(36)}_${bF().slice(0,8)}`}function QX(_){let $=_?.trim();if($)return $;return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??GX()}function Z0(_){if(Array.isArray(_))return`[${_.map(Z0).join(",")}]`;if(_&&typeof _==="object"){let $=_;return`{${Object.keys($).sort().map((D)=>`${JSON.stringify(D)}:${Z0($[D])}`).join(",")}}`}return JSON.stringify(_)}function oD(_){return`sha256:${MF("sha256").update(_).digest("hex")}`}function PI(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function RI(_,$){try{return JSON.parse(_)}catch{return $}}function A$(_){return`"${_.replace(/"/g,'""')}"`}function CF(_){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 KX(_,$){return $.filter((D)=>P$(_,D))}function P$(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get($);return Boolean(D)}function vF(_,$){let D=_.query(`PRAGMA table_info(${A$($)})`).all();return new Set(D.map((I)=>I.name))}function wF(_,$,D){let I=vF(_,$);return D.filter((U)=>I.has(U))}function TX(_){if(!_||_.length===0)return[...XI];let $=new Set(XI),D=_.map((U)=>U.trim()).filter(Boolean),I=D.filter((U)=>!$.has(U));if(I.length>0)throw Error(`Unknown knowledge sync table(s): ${I.join(", ")}`);return D}function J4(_,$){return aD[_].map((I)=>`${I}=${JSON.stringify($[I]??null)}`).join("&")}var rF=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body_bytes"]);function pD(_,$=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((I)=>pD(I,$+1));let D={};for(let[I,U]of Object.entries(_)){if(rF.has(I.toLowerCase()))continue;D[I]=pD(U,$+1)}return D}function tD(_){if(!_)return null;return pD(_)}function ag(_){return oD(Z0(_))}function fF(_,$){let D={};for(let[I,U]of Object.entries(_))if(I==="artifact_uri"&&typeof U==="string"&&$.has(U))D[I]=`artifact:${$.get(U)}`;else D[I]=U;return D}function S4(_,$=new Map){return ag(fF(_,$))}function FX(_,$){if(!P$(_,$))return[];return _.query(`SELECT * FROM ${A$($)} ORDER BY rowid ASC`).all()}function GI(_,$,D=new Map){return ag($.map((I)=>({key:J4(_,I),hash:S4(I,D)})).sort((I,U)=>I.key.localeCompare(U.key)))}function eD(_,$,D){return _.query("SELECT * FROM knowledge_sync_table_clocks WHERE table_name = ? AND machine_id = ?").get($,D)??null}function xF(_){if(!P$(_,"knowledge_sync_table_clocks"))return[];return _.query("SELECT * FROM knowledge_sync_table_clocks ORDER BY table_name ASC, machine_id ASC").all()}function YI(_,$){let D=$.now??d$(),U=eD(_,$.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 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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=d0(_,$.table,$.machineId);if(!I)throw Error(`Failed to record sync clock for ${$.table}:${$.machineId}`);return I}function Xq(_,$){let g=d0(_,$.table,$.machineId),U=g?.high_water_hash===$.highWaterHash?g.logical_clock:(g?.logical_clock??0)+1,D=$.record?LI(_,{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 Yq(_,$,g,U,D){if($.high_water_bundle_id=g,!U)return;LI(_,{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 LR(_,$){return _.table_clocks?.find((g)=>g.table===$)??null}function Qq(_,$){if(!_||!$)return!1;return $.logical_clock<_.logical_clock}function Tq(_,$,g){if(g.length===0)return 0;let U=Jq(_,$,Object.keys(g[0]));if(U.length===0)return 0;let D=m0[$],I=U.map(I$).join(", "),j=U.map(()=>"?").join(", "),E=D.map(I$).join(", "),A=U.filter((S)=>!D.includes(S)),O=D[0],P=A.length>0?A.map((S)=>`${I$(S)} = excluded.${I$(S)}`).join(", "):`${I$(O)} = excluded.${I$(O)}`,W=_.query(`INSERT INTO ${I$($)} (${I}) VALUES (${j}) - ON CONFLICT (${E}) DO UPDATE SET ${P}`);return _.transaction((S)=>{for(let L of S)W.run(...U.map((J)=>Lq(L[J])))})(g),g.length}function WR(_,$){let g=m0[_],U=[],D=$;for(let I=0;I=0?A.slice(0,W):A;try{U.push(JSON.parse(z))}catch{return null}D=W>=0&&P?A.slice(W+1):""}return D.length===0?U:null}function JR(_){return m0[_].map(($)=>`${I$($)} = ?`).join(" AND ")}function Kq(_,$,g){if(!P$(_,"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 E=eD(_,$.table,$.machineId);if(!E)throw Error(`Failed to record sync clock for ${$.table}:${$.machineId}`);return E}function uF(_,$){let D=eD(_,$.table,$.machineId),I=D?.high_water_hash===$.highWaterHash?D.logical_clock:(D?.logical_clock??0)+1,U=$.record?YI(_,{table:$.table,machineId:$.machineId,logicalClock:I,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:I,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 yF(_,$,D,I,U){if($.high_water_bundle_id=D,!I)return;YI(_,{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 VX(_,$){return _.table_clocks?.find((D)=>D.table===$)??null}function hF(_,$){if(!_||!$)return!1;return $.logical_clock<_.logical_clock}function cF(_,$,D){if(D.length===0)return 0;let I=wF(_,$,Object.keys(D[0]));if(I.length===0)return 0;let U=aD[$],E=I.map(A$).join(", "),j=I.map(()=>"?").join(", "),N=U.map(A$).join(", "),A=I.filter((z)=>!U.includes(z)),O=U[0],L=A.length>0?A.map((z)=>`${A$(z)} = excluded.${A$(z)}`).join(", "):`${A$(O)} = excluded.${A$(O)}`,J=_.query(`INSERT INTO ${A$($)} (${E}) VALUES (${j}) + ON CONFLICT (${N}) DO UPDATE SET ${L}`);return _.transaction((z)=>{for(let S of z)J.run(...I.map((W)=>CF(S[W])))})(D),D.length}function BX(_,$){let D=aD[_],I=[],U=$;for(let E=0;E=0?A.slice(0,J):A;try{I.push(JSON.parse(P))}catch{return null}U=J>=0&&L?A.slice(J+1):""}return U.length===0?I:null}function MX(_){return aD[_].map(($)=>`${A$($)} = ?`).join(" AND ")}function nF(_,$,D){if(!P$(_,"knowledge_sync_changes"))return new Map;let I=_.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 qq(_,$){if(P$(_,"chunks_fts"))_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run($);if(P$(_,"chunk_embeddings"))_.query("DELETE FROM chunk_embeddings WHERE chunk_id = ?").run($);if(P$(_,"vector_index_entries"))_.query("DELETE FROM vector_index_entries WHERE chunk_id = ?").run($);if(P$(_,"citations"))_.query("DELETE FROM citations WHERE chunk_id = ?").run($)}function Bq(_,$,g){let U=WR($,g);if(!U)return!1;let D=JR($),I=_.query(`SELECT * FROM ${I$($)} WHERE ${D} LIMIT 1`).get(...U);if(!I)return!1;if($==="chunks"&&typeof I.id==="string")qq(_,I.id);return _.query(`DELETE FROM ${I$($)} WHERE ${D}`).run(...U),!0}function Vq(_,$){if(!P$(_,"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="",E=typeof g.source_revision_id==="string"?g.source_revision_id:null;if(E){let A=_.query(`SELECT s.title, s.uri + ORDER BY created_at ASC, id ASC`).all(D,$),U=new Map;for(let E of I)U.set(E.entity_id,E.next_hash);return U}function dF(_,$){if(P$(_,"chunks_fts"))_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run($);if(P$(_,"chunk_embeddings"))_.query("DELETE FROM chunk_embeddings WHERE chunk_id = ?").run($);if(P$(_,"vector_index_entries"))_.query("DELETE FROM vector_index_entries WHERE chunk_id = ?").run($);if(P$(_,"citations"))_.query("DELETE FROM citations WHERE chunk_id = ?").run($)}function mF(_,$,D){let I=BX($,D);if(!I)return!1;let U=MX($),E=_.query(`SELECT * FROM ${A$($)} WHERE ${U} LIMIT 1`).get(...I);if(!E)return!1;if($==="chunks"&&typeof E.id==="string")dF(_,E.id);return _.query(`DELETE FROM ${A$($)} WHERE ${U}`).run(...I),!0}function lF(_,$){if(!P$(_,"chunks_fts"))return;for(let D of $){let I=typeof D.id==="string"?D.id:null,U=typeof D.text==="string"?D.text:null;if(!I||U===null)continue;let E="",j="",N=typeof D.source_revision_id==="string"?D.source_revision_id:null;if(N){let A=_.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(E);I=A?.title??"",j=A?.uri??""}if(!j&&typeof g.metadata_json==="string"){let A=SI(g.metadata_json,{});j=typeof A.source_uri==="string"?A.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 Fq(_,$,g){if($==="chunks")Vq(_,g)}function rq(_,$){let g=NR(_,$);return g!==".."&&!g.startsWith("..")&&!g.startsWith(`..${Sq}`)}function bq(_,$){let g=SI(_.metadata_json,{});if(typeof g.key==="string")return g.key;if(!_.artifact_uri.startsWith("file://"))return null;try{let U=ER(_.artifact_uri),D=$R($),I=$R(U);if(!rq(D,I))return null;let j=NR(D,I).replace(/\\/g,"/");return j?v$(j):null}catch{return null}}var Mq=new Set([".csv",".html",".json",".jsonl",".log",".md",".txt",".xml",".yaml",".yml"]);function Zq(_,$){let g=_?.toLowerCase()??"";if(g.startsWith("text/"))return!0;if(/(json|markdown|xml|yaml|csv)/.test(g))return!0;return $?Mq.has(Pq($).toLowerCase()):!1}function Og(_){let $=new Map;for(let g of _)if(g.key)$.set(g.artifact_uri,g.key);return $}function B6(_){return yN({key:_.key,kind:_.kind,hash:_.hash,size_bytes:_.size_bytes})}function WI(_){return _.key??_.artifact_uri}function Hq(_,$){return _.artifact_uri.startsWith("s3://")&&$.artifact_store.type==="s3"&&_.artifact_uri.startsWith($.artifact_store.uri_prefix)}function zR(_){return Object.fromEntries(OI.map(($)=>[$,P$(_,$)?NI(_,$):0]))}function kq(_){return _.query(`SELECT artifact_uri, kind, hash, size_bytes + LIMIT 1`).get(N);E=A?.title??"",j=A?.uri??""}if(!j&&typeof D.metadata_json==="string"){let A=RI(D.metadata_json,{});j=typeof A.source_uri==="string"?A.source_uri:""}_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run(I),_.query("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)").run(I,U,E,j)}}function iF(_,$,D){if($==="chunks")lF(_,D)}function tF(_,$){let D=YX(_,$);return D!==".."&&!D.startsWith("..")&&!D.startsWith(`..${qF}`)}function oF(_,$){let D=RI(_.metadata_json,{});if(typeof D.key==="string")return D.key;if(!_.artifact_uri.startsWith("file://"))return null;try{let I=RX(_.artifact_uri),U=JX($),E=JX(I);if(!tF(U,E))return null;let j=YX(U,E).replace(/\\/g,"/");return j?c$(j):null}catch{return null}}var pF=new Set([".csv",".html",".json",".jsonl",".log",".md",".txt",".xml",".yaml",".yml"]);function eF(_,$){let D=_?.toLowerCase()??"";if(D.startsWith("text/"))return!0;if(/(json|markdown|xml|yaml|csv)/.test(D))return!0;return $?pF.has(kF($).toLowerCase()):!1}function W4(_){let $=new Map;for(let D of _)if(D.key)$.set(D.artifact_uri,D.key);return $}function Z6(_){return ag({key:_.key,kind:_.kind,hash:_.hash,size_bytes:_.size_bytes})}function QI(_){return _.key??_.artifact_uri}function aF(_,$){return _.artifact_uri.startsWith("s3://")&&$.artifact_store.type==="s3"&&_.artifact_uri.startsWith($.artifact_store.uri_prefix)}function bX(_){return Object.fromEntries(XI.map(($)=>[$,P$(_,$)?PI(_,$):0]))}function sF(_){return _.query(`SELECT artifact_uri, kind, hash, size_bytes FROM storage_objects - ORDER BY artifact_uri ASC`).all()}function Cq(_,$){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 CN(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function vq(_){if(!_)return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function V6(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function AI(_){return Object.fromEntries(Object.entries(_).filter(([,$])=>$!==void 0))}function K4(_){if(Array.isArray(_))return`[${_.map(K4).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).filter(([,$])=>$!==void 0).sort(([$],[g])=>$.localeCompare(g)).map(([$,g])=>`${JSON.stringify($)}:${K4(g)}`).join(",")}}`;return JSON.stringify(_)}function gR(_){let{recorded_at:$,...g}=_;return g}function V_(_){return typeof _==="string"&&_.length>0?_:null}function wq(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function DR(_){return typeof _==="boolean"?_:null}function uq(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function RR(_){let $=V6(_),g=V_($.observed_at),U=V_($.source_authority);if(!g||!U)return null;return{observed_at:g,verified_at:V_($.verified_at),expires_at:V_($.expires_at),ttl_ms:wq($.ttl_ms),source_authority:U,confidence:V_($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:uq($.reasons)}}function GR(_,$){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 fq(_,$){return V_($.source)===_.source&&V_($.target)===_.target&&V_($.route)===_.route&&V_($.target_kind)===_.targetKind&&V_($.confidence)===_.confidence}function xq(_,$){return V_($.source)===_.source&&V_($.requested_machine_id)===_.requested_machine_id&&V_($.machine_id)===_.machine_id&&V_($.project_id)===_.project_id&&V_($.repo_name)===_.repo_name&&V_($.project_root)===_.project_root&&V_($.project_root_source)===_.project_root_source&&V_($.workspace_root)===_.workspace_root&&V_($.workspace_root_source)===_.workspace_root_source&&V_($.open_files_root)===_.open_files_root&&V_($.open_files_root_source)===_.open_files_root_source&&V_($.trust_status)===_.trust_status&&V_($.auth_status)===_.auth_status&&DR($.current)===_.current&&DR($.primary)===_.primary}function yq(_,$,g){if(!_)return null;let U=RR($.cacheability);if(U&&GR(U,g)&&fq(_,$))return{..._,cacheability:U};return _}function cq(_,$,g){if(!_)return null;let U=RR($.cacheability);if(U&&GR(U,g)&&xq(_,$))return{..._,cacheability:U};return _}function hq(_){return _.workspace?.machine_id??_.workspace?.requested_machine_id??_.machineId??_.route?.target??jR()}function nq(_,$){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 UR(_,$){if($?.target&&($.route==="tailscale"||$.targetKind==="tailscale"))return $.target;return _?.tailscale_dns??null}function dq(_,$,g){let U=V6($.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}):V6(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}):V6(U.workspace);return AI({...U,recorded_at:g,route:D,workspace:I})}function XR(_,$){c(_);let g=v(_);try{let U=hq($),D=g.query("SELECT * FROM knowledge_machines WHERE machine_id = ?").get(U)??null,I=u$($.now),j=CN(D?.capabilities_json),E=CN(D?.metadata_json),A=V6(j.resolver),O=V6(E.resolver_evidence),P=V6(O.route),W=V6(O.workspace),z=yq($.route?.source==="registry"?null:$.route??null,P,I),S=cq($.workspace?.source==="registry"?null:$.workspace??null,W,I),L={...$,route:z,workspace:S},J={...j,resolver:AI({...A,route_source:z?.source??A.route_source,route_kind:z?.route??A.route_kind,route_target_kind:z?.targetKind??A.route_target_kind,route_confidence:z?.confidence??A.route_confidence,route_cacheable:z?.cacheability?.cacheable??A.route_cacheable,route_stale:z?.cacheability?.stale??A.route_stale,route_expires_at:z?.cacheability?.expires_at??A.route_expires_at,route_observed_at:z?.cacheability?.observed_at??A.route_observed_at,route_source_authority:z?.cacheability?.source_authority??A.route_source_authority,workspace_source:S?.source??A.workspace_source,project_root_source:S?.project_root_source??A.project_root_source,workspace_root_source:S?.workspace_root_source??A.workspace_root_source,open_files_root_source:S?.open_files_root_source??A.open_files_root_source,trust_status:S?.trust_status??A.trust_status,auth_status:S?.auth_status??A.auth_status,workspace_cacheable:S?.cacheability?.cacheable??A.workspace_cacheable,workspace_stale:S?.cacheability?.stale??A.workspace_stale,workspace_expires_at:S?.cacheability?.expires_at??A.workspace_expires_at,workspace_observed_at:S?.cacheability?.observed_at??A.workspace_observed_at,workspace_source_authority:S?.cacheability?.source_authority??A.workspace_source_authority}),route_fallback:Boolean(z?.target??D?.ssh_target),workspace_fallback:Boolean(S?.project_root??D?.workspace_home)},R=dq(L,E,I);if(D){let G=O;if(D.workspace_home===(S?.project_root??D.workspace_home??null)&&D.tailscale_dns===UR(D,z)&&D.ssh_target===(z?.target??D.ssh_target??null)&&K4(CN(D.capabilities_json))===K4(J)&&K4(gR(G))===K4(gR(R)))return D}let X={machine_id:U,hostname:D?.hostname??null,platform:D?.platform??null,user_label:D?.user_label??null,workspace_home:S?.project_root??D?.workspace_home??null,tailscale_dns:UR(D,z),tailscale_ips_json:JSON.stringify(vq(D?.tailscale_ips_json)),ssh_target:z?.target??D?.ssh_target??null,last_seen_at:I,capabilities_json:JSON.stringify(J),metadata_json:JSON.stringify({...E,source:"knowledge",sources:nq(L,E),resolver_evidence:R}),created_at:D?.created_at??I,updated_at:I};return YR(g,X),X}finally{g.close()}}function YR(_,$){_.query(` + ORDER BY artifact_uri ASC`).all()}function _V(_,$){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 lg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function $V(_){if(!_)return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function H6(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function zI(_){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(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${b0(D)}`).join(",")}}`;return JSON.stringify(_)}function WX(_){let{recorded_at:$,...D}=_;return D}function b_(_){return typeof _==="string"&&_.length>0?_:null}function DV(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function PX(_){return typeof _==="boolean"?_:null}function UV(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function ZX(_){let $=H6(_),D=b_($.observed_at),I=b_($.source_authority);if(!D||!I)return null;return{observed_at:D,verified_at:b_($.verified_at),expires_at:b_($.expires_at),ttl_ms:DV($.ttl_ms),source_authority:I,confidence:b_($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:UV($.reasons)}}function HX(_,$){if(!_||_.stale)return!1;if(!_.expires_at)return!0;let D=Date.parse(_.expires_at),I=Date.parse($);return Number.isNaN(D)||Number.isNaN(I)||D>I}function IV(_,$){return b_($.source)===_.source&&b_($.target)===_.target&&b_($.route)===_.route&&b_($.target_kind)===_.targetKind&&b_($.confidence)===_.confidence}function EV(_,$){return b_($.source)===_.source&&b_($.requested_machine_id)===_.requested_machine_id&&b_($.machine_id)===_.machine_id&&b_($.project_id)===_.project_id&&b_($.repo_name)===_.repo_name&&b_($.project_root)===_.project_root&&b_($.project_root_source)===_.project_root_source&&b_($.workspace_root)===_.workspace_root&&b_($.workspace_root_source)===_.workspace_root_source&&b_($.open_files_root)===_.open_files_root&&b_($.open_files_root_source)===_.open_files_root_source&&b_($.trust_status)===_.trust_status&&b_($.auth_status)===_.auth_status&&PX($.current)===_.current&&PX($.primary)===_.primary}function jV(_,$,D){if(!_)return null;let I=ZX($.cacheability);if(I&&HX(I,D)&&IV(_,$))return{..._,cacheability:I};return _}function NV(_,$,D){if(!_)return null;let I=ZX($.cacheability);if(I&&HX(I,D)&&EV(_,$))return{..._,cacheability:I};return _}function gV(_){return _.workspace?.machine_id??_.workspace?.requested_machine_id??_.machineId??_.route?.target??GX()}function AV(_,$){let D=new Set,I=Array.isArray($.sources)?$.sources:[];for(let U of I)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 zX(_,$){if($?.target&&($.route==="tailscale"||$.targetKind==="tailscale"))return $.target;return _?.tailscale_dns??null}function OV(_,$,D){let I=H6($.resolver_evidence),U=_.route?zI({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}):H6(I.route),E=_.workspace?zI({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}):H6(I.workspace);return zI({...I,recorded_at:D,route:U,workspace:E})}function kX(_,$){h(_);let D=w(_);try{let I=gV($),U=D.query("SELECT * FROM knowledge_machines WHERE machine_id = ?").get(I)??null,E=d$($.now),j=lg(U?.capabilities_json),N=lg(U?.metadata_json),A=H6(j.resolver),O=H6(N.resolver_evidence),L=H6(O.route),J=H6(O.workspace),P=jV($.route?.source==="registry"?null:$.route??null,L,E),z=NV($.workspace?.source==="registry"?null:$.workspace??null,J,E),S={...$,route:P,workspace:z},W={...j,resolver:zI({...A,route_source:P?.source??A.route_source,route_kind:P?.route??A.route_kind,route_target_kind:P?.targetKind??A.route_target_kind,route_confidence:P?.confidence??A.route_confidence,route_cacheable:P?.cacheability?.cacheable??A.route_cacheable,route_stale:P?.cacheability?.stale??A.route_stale,route_expires_at:P?.cacheability?.expires_at??A.route_expires_at,route_observed_at:P?.cacheability?.observed_at??A.route_observed_at,route_source_authority:P?.cacheability?.source_authority??A.route_source_authority,workspace_source:z?.source??A.workspace_source,project_root_source:z?.project_root_source??A.project_root_source,workspace_root_source:z?.workspace_root_source??A.workspace_root_source,open_files_root_source:z?.open_files_root_source??A.open_files_root_source,trust_status:z?.trust_status??A.trust_status,auth_status:z?.auth_status??A.auth_status,workspace_cacheable:z?.cacheability?.cacheable??A.workspace_cacheable,workspace_stale:z?.cacheability?.stale??A.workspace_stale,workspace_expires_at:z?.cacheability?.expires_at??A.workspace_expires_at,workspace_observed_at:z?.cacheability?.observed_at??A.workspace_observed_at,workspace_source_authority:z?.cacheability?.source_authority??A.workspace_source_authority}),route_fallback:Boolean(P?.target??U?.ssh_target),workspace_fallback:Boolean(z?.project_root??U?.workspace_home)},X=OV(S,N,E);if(U){let R=O;if(U.workspace_home===(z?.project_root??U.workspace_home??null)&&U.tailscale_dns===zX(U,P)&&U.ssh_target===(P?.target??U.ssh_target??null)&&b0(lg(U.capabilities_json))===b0(W)&&b0(WX(R))===b0(WX(X)))return U}let G={machine_id:I,hostname:U?.hostname??null,platform:U?.platform??null,user_label:U?.user_label??null,workspace_home:z?.project_root??U?.workspace_home??null,tailscale_dns:zX(U,P),tailscale_ips_json:JSON.stringify($V(U?.tailscale_ips_json)),ssh_target:P?.target??U?.ssh_target??null,last_seen_at:E,capabilities_json:JSON.stringify(W),metadata_json:JSON.stringify({...N,source:"knowledge",sources:AV(S,N),resolver_evidence:X}),created_at:U?.created_at??E,updated_at:E};return qX(D,G),G}finally{D.close()}}function qX(_,$){_.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 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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 mq(_,$,g=u$()){for(let U of $.machines)YR(_,Cq(U,g));return $.machines.length}function cN(_){c(_);let $=v(_);try{return $.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all()}finally{$.close()}}function l0(_){c(_.dbPath);let $=v(_.dbPath),g=[],U=u$(_.now),D=AR(_.machineId),I=_.recordClocks!==!1;try{let j=OR($,PR(_.tables)),A=$.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 LV(_,$,D=d$()){for(let I of $.machines)qX(_,_V(I,D));return $.machines.length}function sg(_){h(_);let $=w(_);try{return $.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all()}finally{$.close()}}function _U(_){h(_.dbPath);let $=w(_.dbPath),D=[],I=d$(_.now),U=QX(_.machineId),E=_.recordClocks!==!1;try{let j=KX($,TX(_.tables)),A=$.query(`SELECT id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all().map((L)=>{let J=bq(L,_.storage.local_layout.directories.artifacts),R={...L,key:J};if(_.includeArtifactContent!==!1&&J&&L.artifact_uri.startsWith("file://"))try{let X=ER(L.artifact_uri);if(Aq(X))if(!Zq(L.content_type,J))g.push(`artifact_content_not_embedded_binary:${L.id}`);else{let G=Oq(X,"utf8"),B=T_(G);if(B!==G)g.push(`artifact_content_redacted:${L.id}`);R.content_base64=Buffer.from(B,"utf8").toString("base64"),R.hash=h0(B),R.size_bytes=Buffer.byteLength(B)}else g.push(`artifact_missing:${L.artifact_uri}`)}catch(X){g.push(`artifact_read_failed:${L.artifact_uri}:${X instanceof Error?X.message:String(X)}`)}else if(_.includeArtifactContent!==!1&&L.artifact_uri.startsWith("s3://"))g.push(`artifact_content_not_embedded:${L.artifact_uri}`);return R=T_(R),R}),O=Og(A),P=j.filter((L)=>!i0.has(L)).map((L)=>({table:L,primary_keys:m0[L],rows:SR($,L).map((J)=>T_(J))})),W=P.map((L)=>Xq($,{table:L.table,machineId:D,highWaterHash:PI(L.table,L.rows,O),rowCount:L.rows.length,record:I,now:U})),z=h0(q4({source:{scope:_.scope,workspace_home:T_(_.workspaceHome),sqlite_schema_version:k_($),machine_id:D,artifact_root_uri:T_(_.storage.artifact_store.uri_prefix)},tables:P.map((L)=>({table:L.table,primary_keys:L.primary_keys,rows:L.rows.map((J)=>({key:Ag(L.table,J),hash:Ng(J,O)})).sort((J,R)=>J.key.localeCompare(R.key))})),table_clocks:W.map((L)=>({table:L.table,machine_id:L.machine_id,logical_clock:L.logical_clock,high_water_hash:L.high_water_hash,row_count:L.row_count})),artifacts:A.map((L)=>({identity:WI(L),fingerprint:B6(L)})).sort((L,J)=>L.identity.localeCompare(J.identity))})),S=`syncbundle_${z.replace("sha256:","").slice(0,32)}`;for(let L of W)Yq($,L,S,I,U);return{ok:!0,format:"knowledge-sync-bundle",version:1,protocol_version:F6,min_protocol_version:r6,bundle_id:S,content_hash:z,generated_at:U,source:{scope:_.scope,workspace_home:T_(_.workspaceHome),sqlite_schema_version:k_($),machine_id:D,artifact_root_uri:T_(_.storage.artifact_store.uri_prefix)},table_clocks:W,tables:P,artifacts:A,warnings:T_(g),message:`${P.reduce((L,J)=>L+J.rows.length,0)} row(s), ${A.length} artifact(s) exported`}}finally{$.close()}}function iq(_,$){let g=typeof _.protocol_version==="number"?_.protocol_version:null,U=typeof _.min_protocol_version==="number"?_.min_protocol_version:null;if(g===null||U===null||gF6)throw Error(`Unsupported ${$} protocol. Expected knowledge sync protocol v${F6} with min v${r6}.`)}function lq(_){if(!_||_.format!=="knowledge-sync-bundle"||_.version!==1)throw Error("Invalid knowledge sync bundle.");iq(_,"knowledge sync bundle")}function hN(_,$){return _.tables.find((g)=>g.table===$)??null}function QR(_){if(typeof _.content_hash==="string"&&_.content_hash.length>0)return _.content_hash;return h0(q4({source:_.source,tables:_.tables.map(($)=>({table:$.table,rows:$.rows.map((g)=>({key:Ag($.table,g),hash:Ng(g,Og(_.artifacts))})).sort((g,U)=>g.key.localeCompare(U.key))})),artifacts:_.artifacts.map(($)=>({identity:WI($),fingerprint:B6($)})).sort(($,g)=>$.identity.localeCompare(g.identity))}))}function tq(_){if(typeof _.bundle_id==="string"&&_.bundle_id.length>0)return _.bundle_id;return`syncbundle_${QR(_).replace("sha256:","").slice(0,32)}`}function oq(_,$){return new Map($.map((g)=>[Ag(_,g),g]))}function pq(_){return new Map(_.artifacts.map(($)=>[WI($),$]))}async function eq(_){let $=pq(_.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=WI(I),E=$.get(j);if(E&&B6(E)===B6(I)){if(E.artifact_uri)g.set(I.artifact_uri,E.artifact_uri);D.skipped+=1;continue}if(E&&B6(E)!==B6(I)){let L={entityKind:"storage_object",entityId:j,localMachineId:_.localMachineId,remoteMachineId:_.bundle.source.machine_id??"unknown",localHash:B6(E),remoteHash:B6(I),metadata:{direction:_.direction,target_artifact_uri:E.artifact_uri,source_artifact_uri:I.artifact_uri,local_artifact:n0(E),remote_artifact:n0(I)}};if(uN(_.db,L)){D.skipped+=1;continue}D.conflicts+=1,U.push(L);continue}let A=Boolean(I.key&&I.content_base64),O=Hq(I,_.targetStorage);if(!A&&!O){D.missing_content+=1,_.warnings.push(`artifact_content_missing:${I.artifact_uri}`);continue}if(_.dryRun){D.copied+=1;continue}let P=I.artifact_uri;if(A&&I.key&&I.content_base64)P=(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,P);else if(O)g.set(I.artifact_uri,P);let W=SI(I.metadata_json,{}),z=typeof W.artifact_modified_at==="string"?W.artifact_modified_at:void 0,S={uri:P,key:I.key??W.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:z,metadata:{...W,synced_from_artifact_uri:I.artifact_uri,synced_from_machine_id:_.bundle.source.machine_id??void 0}};_6(_.db,[S]),D.copied+=1}return{result:D,uriMap:g,conflicts:U}}function vN(_,$){let g={..._};if(typeof g.artifact_uri==="string"&&$.has(g.artifact_uri))g.artifact_uri=$.get(g.artifact_uri);return g}function aq(_,$){let g=u$();_.query(` + ORDER BY artifact_uri ASC`).all().map((S)=>{let W=oF(S,_.storage.local_layout.directories.artifacts),X={...S,key:W};if(_.includeArtifactContent!==!1&&W&&S.artifact_uri.startsWith("file://"))try{let G=RX(S.artifact_uri);if(ZF(G))if(!eF(S.content_type,W))D.push(`artifact_content_not_embedded_binary:${S.id}`);else{let R=HF(G,"utf8"),K=F_(R);if(K!==R)D.push(`artifact_content_redacted:${S.id}`);X.content_base64=Buffer.from(K,"utf8").toString("base64"),X.hash=oD(K),X.size_bytes=Buffer.byteLength(K)}else D.push(`artifact_missing:${S.artifact_uri}`)}catch(G){D.push(`artifact_read_failed:${S.artifact_uri}:${G instanceof Error?G.message:String(G)}`)}else if(_.includeArtifactContent!==!1&&S.artifact_uri.startsWith("s3://"))D.push(`artifact_content_not_embedded:${S.artifact_uri}`);return X=F_(X),X}),O=W4(A),L=j.filter((S)=>!sD.has(S)).map((S)=>({table:S,primary_keys:aD[S],rows:FX($,S).map((W)=>F_(W))})),J=L.map((S)=>uF($,{table:S.table,machineId:U,highWaterHash:GI(S.table,S.rows,O),rowCount:S.rows.length,record:E,now:I})),P=oD(Z0({source:{scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:f_($),machine_id:U,artifact_root_uri:F_(_.storage.artifact_store.uri_prefix)},tables:L.map((S)=>({table:S.table,primary_keys:S.primary_keys,rows:S.rows.map((W)=>({key:J4(S.table,W),hash:S4(W,O)})).sort((W,X)=>W.key.localeCompare(X.key))})),table_clocks:J.map((S)=>({table:S.table,machine_id:S.machine_id,logical_clock:S.logical_clock,high_water_hash:S.high_water_hash,row_count:S.row_count})),artifacts:A.map((S)=>({identity:QI(S),fingerprint:Z6(S)})).sort((S,W)=>S.identity.localeCompare(W.identity))})),z=`syncbundle_${P.replace("sha256:","").slice(0,32)}`;for(let S of J)yF($,S,z,E,I);return{ok:!0,format:"knowledge-sync-bundle",version:1,protocol_version:k6,min_protocol_version:q6,bundle_id:z,content_hash:P,generated_at:I,source:{scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:f_($),machine_id:U,artifact_root_uri:F_(_.storage.artifact_store.uri_prefix)},table_clocks:J,tables:L,artifacts:A,warnings:F_(D),message:`${L.reduce((S,W)=>S+W.rows.length,0)} row(s), ${A.length} artifact(s) exported`}}finally{$.close()}}function SV(_,$){let D=typeof _.protocol_version==="number"?_.protocol_version:null,I=typeof _.min_protocol_version==="number"?_.min_protocol_version:null;if(D===null||I===null||Dk6)throw Error(`Unsupported ${$} protocol. Expected knowledge sync protocol v${k6} with min v${q6}.`)}function JV(_){if(!_||_.format!=="knowledge-sync-bundle"||_.version!==1)throw Error("Invalid knowledge sync bundle.");SV(_,"knowledge sync bundle")}function _2(_,$){return _.tables.find((D)=>D.table===$)??null}function CX(_){if(typeof _.content_hash==="string"&&_.content_hash.length>0)return _.content_hash;return oD(Z0({source:_.source,tables:_.tables.map(($)=>({table:$.table,rows:$.rows.map((D)=>({key:J4($.table,D),hash:S4(D,W4(_.artifacts))})).sort((D,I)=>D.key.localeCompare(I.key))})),artifacts:_.artifacts.map(($)=>({identity:QI($),fingerprint:Z6($)})).sort(($,D)=>$.identity.localeCompare(D.identity))}))}function WV(_){if(typeof _.bundle_id==="string"&&_.bundle_id.length>0)return _.bundle_id;return`syncbundle_${CX(_).replace("sha256:","").slice(0,32)}`}function PV(_,$){return new Map($.map((D)=>[J4(_,D),D]))}function zV(_){return new Map(_.artifacts.map(($)=>[QI($),$]))}async function XV(_){let $=zV(_.targetBundle),D=new Map,I=[],U={source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:0,conflicts:0,missing_content:0};for(let E of _.bundle.artifacts){let j=QI(E),N=$.get(j);if(N&&Z6(N)===Z6(E)){if(N.artifact_uri)D.set(E.artifact_uri,N.artifact_uri);U.skipped+=1;continue}if(N&&Z6(N)!==Z6(E)){let S={entityKind:"storage_object",entityId:j,localMachineId:_.localMachineId,remoteMachineId:_.bundle.source.machine_id??"unknown",localHash:Z6(N),remoteHash:Z6(E),metadata:{direction:_.direction,target_artifact_uri:N.artifact_uri,source_artifact_uri:E.artifact_uri,local_artifact:pD(N),remote_artifact:pD(E)}};if(og(_.db,S)){U.skipped+=1;continue}U.conflicts+=1,I.push(S);continue}let A=Boolean(E.key&&E.content_base64),O=aF(E,_.targetStorage);if(!A&&!O){U.missing_content+=1,_.warnings.push(`artifact_content_missing:${E.artifact_uri}`);continue}if(_.dryRun){U.copied+=1;continue}let L=E.artifact_uri;if(A&&E.key&&E.content_base64)L=(await _.targetStore.put({key:E.key,body:Buffer.from(E.content_base64,"base64"),content_type:E.content_type??void 0})).uri,D.set(E.artifact_uri,L);else if(O)D.set(E.artifact_uri,L);let J=RI(E.metadata_json,{}),P=typeof J.artifact_modified_at==="string"?J.artifact_modified_at:void 0,z={uri:L,key:E.key??J.key??E.artifact_uri,kind:E.kind,content_type:E.content_type??void 0,hash:E.hash??void 0,size_bytes:E.size_bytes??void 0,modified_at:P,metadata:{...J,synced_from_artifact_uri:E.artifact_uri,synced_from_machine_id:_.bundle.source.machine_id??void 0}};j6(_.db,[z]),U.copied+=1}return{result:U,uriMap:D,conflicts:I}}function ig(_,$){let D={..._};if(typeof D.artifact_uri==="string"&&$.has(D.artifact_uri))D.artifact_uri=$.get(D.artifact_uri);return D}function GV(_,$){let D=d$();_.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(xN("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 uN(_,$){let g=$.localHash??"",U=$.remoteHash??"";if(_.query(` + `).run(eg("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 og(_,$){let D=$.localHash??"",I=$.remoteHash??"";if(_.query(` SELECT id FROM knowledge_sync_conflicts WHERE entity_kind = ? AND entity_id = ? @@ -890,7 +890,7 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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,I))return!0;let E=_.query(` SELECT id FROM knowledge_sync_conflicts WHERE entity_kind = ? AND entity_id = ? @@ -901,7 +901,7 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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 wN(_,$){if(_.query(` + `).get($.entityKind,$.entityId,$.remoteMachineId,$.localMachineId,I,D);return Boolean(E)}function tg(_,$){if(_.query(` SELECT id FROM knowledge_sync_conflicts WHERE entity_kind = ? AND entity_id = ? @@ -912,13 +912,13 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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 I=d$();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(xN("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 sq(_,$){return _.query("SELECT * FROM knowledge_sync_imports WHERE bundle_id = ?").get($)??null}function _B(_,$){let g=$.now??u$();_.query(` + `).run(eg("syncconf"),$.entityKind,$.entityId,$.localMachineId,$.remoteMachineId,$.localHash??null,$.remoteHash??null,$.baseHash??null,$.status??"open",$.resolutionStrategy??null,$.proposedPatchUri??null,$.approvedBy??null,$.resolvedAt??null,JSON.stringify($.metadata??{}),I),!0}function RV(_,$){return _.query("SELECT * FROM knowledge_sync_imports WHERE bundle_id = ?").get($)??null}function YV(_,$){let D=$.now??d$();_.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 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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 $B(_){return{ok:!0,protocol_version:F6,min_protocol_version:r6,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(($)=>!i0.has($.table)).map(($)=>({table:$.table,source_rows:$.rows.length,target_rows:hN(_.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 gB(_,$){let g=Og(_.artifacts),U=Og($.artifacts);for(let D of _.tables){if(i0.has(D.table))continue;let I=hN($,D.table),E=LR(_,D.table)?.high_water_hash??PI(D.table,D.rows,g);if(PI(D.table,I?.rows??[],U)!==E)return!1}return!0}async function JI(_){lq(_.bundle),c(_.targetDbPath);let $=[..._.bundle.warnings],g=_.dryRun===!0,U=AR(_.localMachineId),D=_.bundle.source.machine_id??"unknown",I=tq(_.bundle),j=QR(_.bundle),E=_.targetBundle??l0({dbPath:_.targetDbPath,scope:_.targetScope,workspaceHome:_.targetWorkspaceHome,storage:_.targetStorage,machineId:U,includeArtifactContent:!1,recordClocks:!g}),A=v(_.targetDbPath);try{if(!g&&sq(A,I)&&gB(_.bundle,E))return $B({bundle:_.bundle,targetBundle:E,targetScope:_.targetScope,targetWorkspaceHome:_.targetWorkspaceHome,targetStorage:_.targetStorage,direction:_.direction,warnings:$,bundleId:I});let O=await eq({db:A,bundle:_.bundle,targetBundle:E,targetStorage:_.targetStorage,targetStore:_.targetStore,dryRun:g,direction:_.direction,localMachineId:U,warnings:$}),P=Og(_.bundle.artifacts),W=Og(E.artifacts),z=[],S=0,L=0,J=0;for(let G of _.bundle.tables){if(G.table==="storage_objects"||i0.has(G.table))continue;if(!P$(A,G.table))continue;let B=LR(_.bundle,G.table),Q=d0(A,G.table,D),T=hN(E,G.table),K=oq(G.table,T?.rows??[]),V=new Set(G.rows.map((j_)=>Ag(G.table,j_))),F=Kq(A,G.table,D),o=[],I_={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(!B)$.push(`legacy_clock_missing:${G.table}`);else if(Qq(Q,B)){J+=1,I_.skipped+=G.rows.length,I_.stale_skipped=G.rows.length,$.push(`stale_table_skipped:${G.table}:${D}:${B.logical_clock}`),z.push(I_);continue}for(let j_ of G.rows){let p=Ag(G.table,j_),$$=K.get(p),H_=Ng(j_,P);if(!$$){I_.inserted+=1,o.push(vN(j_,O.uriMap));continue}let i$=Ng($$,W);if(i$===H_){I_.skipped+=1;continue}let Q_=F.get(p);if(F.has(p)&&Q_===i$){I_.updated+=1,o.push(vN(j_,O.uriMap));continue}let M_={entityKind:G.table,entityId:p,localMachineId:U,remoteMachineId:D,localHash:i$,remoteHash:H_,baseHash:Q?.high_water_hash??null,metadata:{direction:_.direction,bundle_id:I,incoming_logical_clock:B?.logical_clock??null,current_logical_clock:Q?.logical_clock??null,source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:c0($$),remote_row:c0(j_)}};if(uN(A,M_)){I_.skipped+=1;continue}if(I_.conflicts+=1,!g&&wN(A,M_))S+=1}if(!g&&o.length>0){let j_=o.map((p)=>vN(p,O.uriMap));Tq(A,G.table,j_),Fq(A,G.table,j_);for(let p of j_)aq(A,{direction:_.direction,sourceMachineId:_.bundle.source.machine_id??"unknown",localMachineId:U,entityKind:G.table,entityId:Ag(G.table,p),nextHash:Ng(p,Og(_.bundle.artifacts)),logicalClock:B?.logical_clock??0,bundleId:I,row:p})}for(let[j_,p]of F){if(V.has(j_))continue;let $$=K.get(j_);if(!$$)continue;let H_=Ng($$,W);if(p&&H_!==p){let i$={entityKind:G.table,entityId:j_,localMachineId:U,remoteMachineId:D,localHash:H_,remoteHash:null,baseHash:p,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:c0($$),remote_row:null}};if(uN(A,i$)){I_.skipped+=1;continue}if(I_.conflicts+=1,!g&&wN(A,i$))S+=1;continue}if(I_.deleted+=1,!g)Bq(A,G.table,j_)}if(!g&&B)LI(A,{table:G.table,machineId:D,logicalClock:B.logical_clock,highWaterHash:B.high_water_hash,highWaterBundleId:I,originMachineId:D,updatedByMachineId:U,lastAppliedAt:u$(),metadata:{source:"import",direction:_.direction,row_count:G.rows.length,inserted:I_.inserted,updated:I_.updated,deleted:I_.deleted,skipped:I_.skipped,conflicts:I_.conflicts}}),L+=1;z.push(I_)}for(let G of O.conflicts)if(!g){if(wN(A,{...G,baseHash:G.baseHash??null,metadata:{...G.metadata,bundle_id:I}}))S+=1}let R=z.reduce((G,B)=>G+B.inserted,0),X=z.reduce((G,B)=>G+B.conflicts,0)+O.result.conflicts;if(!g)_B(A,{bundle:_.bundle,bundleId:I,contentHash:j,sourceMachineId:D,targetMachineId:U,direction:_.direction,status:X===0?"applied":"conflicted",tableResults:z,conflicts:X,artifacts:O.result});return{ok:X===0,protocol_version:F6,min_protocol_version:r6,dry_run:g,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:k_(A),artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:z,artifacts:O.result,conflicts_created:S,bundle_id:I,replayed:!1,clocks:{advanced:L,stale_tables:J},warnings:$,message:`${_.dryRun?"Would import":"Imported"} ${R} row(s), copied ${O.result.copied} artifact(s), ${X} conflict(s)`}}finally{A.close()}}function TR(_){c(_.dbPath);let $=v(_.dbPath),g=u$(_.now);try{let U=_.topology?mq($,_.topology,g):0,D=zR($),I=T_(kq($)),j=_.machineId??_.topology?.local_machine_id??"unknown",E=T_(_.storage.artifact_store.uri_prefix),A=T_(_.workspaceHome),O=h0(q4({machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:k_($),artifact_root_uri:E,tables:D,artifacts:I})),P={id:xN("syncsnap"),machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:k_($),artifact_root_uri:E,content_hash:O,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 QV(_){return{ok:!0,protocol_version:k6,min_protocol_version:q6,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(($)=>!sD.has($.table)).map(($)=>({table:$.table,source_rows:$.rows.length,target_rows:_2(_.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 KV(_,$){let D=W4(_.artifacts),I=W4($.artifacts);for(let U of _.tables){if(sD.has(U.table))continue;let E=_2($,U.table),N=VX(_,U.table)?.high_water_hash??GI(U.table,U.rows,D);if(GI(U.table,E?.rows??[],I)!==N)return!1}return!0}async function KI(_){JV(_.bundle),h(_.targetDbPath);let $=[..._.bundle.warnings],D=_.dryRun===!0,I=QX(_.localMachineId),U=_.bundle.source.machine_id??"unknown",E=WV(_.bundle),j=CX(_.bundle),N=_.targetBundle??_U({dbPath:_.targetDbPath,scope:_.targetScope,workspaceHome:_.targetWorkspaceHome,storage:_.targetStorage,machineId:I,includeArtifactContent:!1,recordClocks:!D}),A=w(_.targetDbPath);try{if(!D&&RV(A,E)&&KV(_.bundle,N))return QV({bundle:_.bundle,targetBundle:N,targetScope:_.targetScope,targetWorkspaceHome:_.targetWorkspaceHome,targetStorage:_.targetStorage,direction:_.direction,warnings:$,bundleId:E});let O=await XV({db:A,bundle:_.bundle,targetBundle:N,targetStorage:_.targetStorage,targetStore:_.targetStore,dryRun:D,direction:_.direction,localMachineId:I,warnings:$}),L=W4(_.bundle.artifacts),J=W4(N.artifacts),P=[],z=0,S=0,W=0;for(let R of _.bundle.tables){if(R.table==="storage_objects"||sD.has(R.table))continue;if(!P$(A,R.table))continue;let K=VX(_.bundle,R.table),Y=eD(A,R.table,U),T=_2(N,R.table),F=PV(R.table,T?.rows??[]),k=new Set(R.rows.map((D_)=>J4(R.table,D_))),B=nF(A,R.table,U),c=[],E_={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(hF(Y,K)){W+=1,E_.skipped+=R.rows.length,E_.stale_skipped=R.rows.length,$.push(`stale_table_skipped:${R.table}:${U}:${K.logical_clock}`),P.push(E_);continue}for(let D_ of R.rows){let J_=J4(R.table,D_),A_=F.get(J_),K$=S4(D_,L);if(!A_){E_.inserted+=1,c.push(ig(D_,O.uriMap));continue}let r_=S4(A_,J);if(r_===K$){E_.skipped+=1;continue}let T_=B.get(J_);if(B.has(J_)&&T_===r_){E_.updated+=1,c.push(ig(D_,O.uriMap));continue}let C_={entityKind:R.table,entityId:J_,localMachineId:I,remoteMachineId:U,localHash:r_,remoteHash:K$,baseHash:Y?.high_water_hash??null,metadata:{direction:_.direction,bundle_id:E,incoming_logical_clock:K?.logical_clock??null,current_logical_clock:Y?.logical_clock??null,source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:tD(A_),remote_row:tD(D_)}};if(og(A,C_)){E_.skipped+=1;continue}if(E_.conflicts+=1,!D&&tg(A,C_))z+=1}if(!D&&c.length>0){let D_=c.map((J_)=>ig(J_,O.uriMap));cF(A,R.table,D_),iF(A,R.table,D_);for(let J_ of D_)GV(A,{direction:_.direction,sourceMachineId:_.bundle.source.machine_id??"unknown",localMachineId:I,entityKind:R.table,entityId:J4(R.table,J_),nextHash:S4(J_,W4(_.bundle.artifacts)),logicalClock:K?.logical_clock??0,bundleId:E,row:J_})}for(let[D_,J_]of B){if(k.has(D_))continue;let A_=F.get(D_);if(!A_)continue;let K$=S4(A_,J);if(J_&&K$!==J_){let r_={entityKind:R.table,entityId:D_,localMachineId:I,remoteMachineId:U,localHash:K$,remoteHash:null,baseHash:J_,metadata:{direction:_.direction,bundle_id:E,reason:"remote_owned_row_missing_from_incoming_bundle",source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:tD(A_),remote_row:null}};if(og(A,r_)){E_.skipped+=1;continue}if(E_.conflicts+=1,!D&&tg(A,r_))z+=1;continue}if(E_.deleted+=1,!D)mF(A,R.table,D_)}if(!D&&K)YI(A,{table:R.table,machineId:U,logicalClock:K.logical_clock,highWaterHash:K.high_water_hash,highWaterBundleId:E,originMachineId:U,updatedByMachineId:I,lastAppliedAt:d$(),metadata:{source:"import",direction:_.direction,row_count:R.rows.length,inserted:E_.inserted,updated:E_.updated,deleted:E_.deleted,skipped:E_.skipped,conflicts:E_.conflicts}}),S+=1;P.push(E_)}for(let R of O.conflicts)if(!D){if(tg(A,{...R,baseHash:R.baseHash??null,metadata:{...R.metadata,bundle_id:E}}))z+=1}let X=P.reduce((R,K)=>R+K.inserted,0),G=P.reduce((R,K)=>R+K.conflicts,0)+O.result.conflicts;if(!D)YV(A,{bundle:_.bundle,bundleId:E,contentHash:j,sourceMachineId:U,targetMachineId:I,direction:_.direction,status:G===0?"applied":"conflicted",tableResults:P,conflicts:G,artifacts:O.result});return{ok:G===0,protocol_version:k6,min_protocol_version:q6,dry_run:D,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:f_(A),artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:P,artifacts:O.result,conflicts_created:z,bundle_id:E,replayed:!1,clocks:{advanced:S,stale_tables:W},warnings:$,message:`${_.dryRun?"Would import":"Imported"} ${X} row(s), copied ${O.result.copied} artifact(s), ${G} conflict(s)`}}finally{A.close()}}function vX(_){h(_.dbPath);let $=w(_.dbPath),D=d$(_.now);try{let I=_.topology?LV($,_.topology,D):0,U=bX($),E=F_(sF($)),j=_.machineId??_.topology?.local_machine_id??"unknown",N=F_(_.storage.artifact_store.uri_prefix),A=F_(_.workspaceHome),O=oD(Z0({machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:f_($),artifact_root_uri:N,tables:U,artifacts:E})),L={id:eg("syncsnap"),machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:f_($),artifact_root_uri:N,content_hash:O,tables_json:JSON.stringify(U),artifact_hashes_json:JSON.stringify(E),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(P.id,P.machine_id,P.scope,P.workspace_home,P.sqlite_schema_version,P.artifact_root_uri,P.content_hash,P.tables_json,P.artifact_hashes_json,P.created_at);let W=new Map;for(let z of OR($,PR()).filter((S)=>!i0.has(S))){let S=SR($,z).map((X)=>T_(X)),L=PI(z,S,W),J=d0($,z,j),R=J?.high_water_hash===L?J.logical_clock:(J?.logical_clock??0)+1;LI($,{table:z,machineId:j,logicalClock:R,highWaterHash:L,highWaterBundleId:P.id,originMachineId:J?.origin_machine_id??j,updatedByMachineId:j,lastAppliedAt:g,metadata:{source:"snapshot",row_count:S.length},now:g})}return{ok:!0,snapshot:{...P,tables:D,artifact_hashes:I},machines_upserted:U,message:`Recorded sync snapshot ${P.id}`}}finally{$.close()}}function KR(_){c(_.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=Gq($),E=$.query("SELECT * FROM knowledge_sync_imports ORDER BY applied_at DESC LIMIT 1").get()??null,A=D.reduce((P,W)=>P+W.count,0),O=D.filter((P)=>P.status!=="resolved"&&P.status!=="ignored").reduce((P,W)=>P+W.count,0);return{ok:!0,scope:_.scope,workspace_home:T_(_.workspaceHome),sqlite_schema_version:k_($),local_machine_id:_.localMachineId??null,machines:{total:g.length,rows:T_(g)},snapshots:{total:NI($,"knowledge_sync_snapshots"),latest:T_(U)},changes:{total:NI($,"knowledge_sync_changes"),by_operation:I},clocks:{total:j.length,rows:j},imports:{total:NI($,"knowledge_sync_imports"),latest:T_(E)},conflicts:{total:A,by_status:D,open:O},table_counts:zR($),message:`${g.length} machine(s), ${O} open sync conflict(s)`}}finally{$.close()}}function nN(_){return{..._,metadata:SI(_.metadata_json,{})}}function zI(_,$){c(_);let g=v(_);try{let U=g.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($);return U?nN(U):null}finally{g.close()}}function qR(_,$={}){c(_);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(nN)}finally{g.close()}}function DB(_){return OI.includes(_)?_:null}function UB(_,$){let g=DB($.entity_kind);if(!g||!P$(_,g))return null;let U=WR(g,$.entity_id);if(!U)return null;let D=JR(g);return _.query(`SELECT * FROM ${I$(g)} WHERE ${D} LIMIT 1`).get(...U)}function IB(_,$){for(let g of $){let U=_[g];if(U&&typeof U==="object"&&!Array.isArray(U))return c0(U)}return null}function IR(_,$){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 fN(_,$=new Set,g=0){if(g>8||_===null||_===void 0)return $;if(typeof _==="string")return IR($,_),$;if(Array.isArray(_)){for(let U of _)fN(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"))IR($,D);fN(D,$,g+1)}return $}function BR(_){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 VR(_,$){let g=zI(_,$);if(!g)throw Error(`Sync conflict not found: ${$}`);c(_);let U=v(_);try{let D=c0(UB(U,g)),I=IB(g.metadata,["remote_row","source_row","incoming_row"]),E=[...fN({conflict:{entity_kind:g.entity_kind,entity_id:g.entity_id,metadata:g.metadata},local_row:D,remote_row:I})].slice(0,25),A=[{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:`${E.length} source/artifact ref(s) found`}];return{conflict:g,local_row:D,remote_row:I,source_refs:E,citations:BR({conflict:g,localRow:D,remoteRow:I,sourceRefs:E}),read_only_tools:A}}finally{U.close()}}function t0(_,$){let g=zI(_,$);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:BR({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 FR(_,$){c(_);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 J=new Map;for(let P of KX($,TX()).filter((z)=>!sD.has(z))){let z=FX($,P).map((G)=>F_(G)),S=GI(P,z,J),W=eD($,P,j),X=W?.high_water_hash===S?W.logical_clock:(W?.logical_clock??0)+1;YI($,{table:P,machineId:j,logicalClock:X,highWaterHash:S,highWaterBundleId:L.id,originMachineId:W?.origin_machine_id??j,updatedByMachineId:j,lastAppliedAt:D,metadata:{source:"snapshot",row_count:z.length},now:D})}return{ok:!0,snapshot:{...L,tables:U,artifact_hashes:E},machines_upserted:I,message:`Recorded sync snapshot ${L.id}`}}finally{$.close()}}function wX(_){h(_.dbPath);let $=w(_.dbPath);try{let D=$.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all(),I=$.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(),E=$.query("SELECT operation, COUNT(*) AS count FROM knowledge_sync_changes GROUP BY operation ORDER BY operation").all(),j=xF($),N=$.query("SELECT * FROM knowledge_sync_imports ORDER BY applied_at DESC LIMIT 1").get()??null,A=U.reduce((L,J)=>L+J.count,0),O=U.filter((L)=>L.status!=="resolved"&&L.status!=="ignored").reduce((L,J)=>L+J.count,0);return{ok:!0,scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:f_($),local_machine_id:_.localMachineId??null,machines:{total:D.length,rows:F_(D)},snapshots:{total:PI($,"knowledge_sync_snapshots"),latest:F_(I)},changes:{total:PI($,"knowledge_sync_changes"),by_operation:E},clocks:{total:j.length,rows:j},imports:{total:PI($,"knowledge_sync_imports"),latest:F_(N)},conflicts:{total:A,by_status:U,open:O},table_counts:bX($),message:`${D.length} machine(s), ${O} open sync conflict(s)`}}finally{$.close()}}function $2(_){return{..._,metadata:RI(_.metadata_json,{})}}function TI(_,$){h(_);let D=w(_);try{let I=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($);return I?$2(I):null}finally{D.close()}}function rX(_,$={}){h(_);let D=w(_),I=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,I):D.query("SELECT * FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ?").all(I)).map($2)}finally{D.close()}}function TV(_){return XI.includes(_)?_:null}function FV(_,$){let D=TV($.entity_kind);if(!D||!P$(_,D))return null;let I=BX(D,$.entity_id);if(!I)return null;let U=MX(D);return _.query(`SELECT * FROM ${A$(D)} WHERE ${U} LIMIT 1`).get(...I)}function VV(_,$){for(let D of $){let I=_[D];if(I&&typeof I==="object"&&!Array.isArray(I))return tD(I)}return null}function XX(_,$){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 pg(_,$=new Set,D=0){if(D>8||_===null||_===void 0)return $;if(typeof _==="string")return XX($,_),$;if(Array.isArray(_)){for(let I of _)pg(I,$,D+1);return $}if(typeof _==="object")for(let[I,U]of Object.entries(_)){if(I==="source_ref"||I==="source_uri"||I==="artifact_uri"||I.endsWith("_uri"))XX($,U);pg(U,$,D+1)}return $}function fX(_){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,I)=>{$.push({id:`source-${I+1}`,kind:D.startsWith("file://")||D.startsWith("s3://")?"artifact":"source_ref",ref:D,hash:null,quote:null})}),$}function xX(_,$){let D=TI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);h(_);let I=w(_);try{let U=tD(FV(I,D)),E=VV(D.metadata,["remote_row","source_row","incoming_row"]),N=[...pg({conflict:{entity_kind:D.entity_kind,entity_id:D.entity_id,metadata:D.metadata},local_row:U,remote_row:E})].slice(0,25),A=[{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:E,source_refs:N,citations:fX({conflict:D,localRow:U,remoteRow:E,sourceRefs:N}),read_only_tools:A}}finally{I.close()}}function $U(_,$){let D=TI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);let I=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(" "),E=["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:I,summary:U,merge_prompt:E,proposed_patch:null,citations:fX({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 uX(_,$){h(_);let D=w(_),I=d$();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 @@ ${S}`;else{let{generateText:T}=await import("ai"),K=await x0(I,{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 nN(I)}finally{g.close()}}function gW(_){let g=(typeof _==="string"?_:JSON.stringify(_)).trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil(g*1.25))}function lF(_){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 KX(_){let $=v(_.dbPath);try{$.run(`UPDATE runs + `).run($.strategy,$.proposedPatchUri??U.proposed_patch_uri,$.approvedBy,I,$.id);let E=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($.id);if(!E)throw Error(`Sync conflict not found after resolve: ${$.id}`);return $2(E)}finally{D.close()}}function WW(_){let D=(typeof _==="string"?_:JSON.stringify(_)).trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil(D*1.25))}function Jb(_){let $=w(_.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 wG(_){let $=w(_.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 DW(_){let $=v(_.dbPath);try{$.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`event_${qX()}`,_.runId,_.level,_.event,JSON.stringify(_.metadata),_.now])}finally{$.close()}}function tF(_,$,g,U){let D=v(_);try{z4(D,{...g,run_id:$,created_at:U})}finally{D.close()}}function oF(_){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 PW(_){let $=w(_.dbPath);try{$.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`event_${rG()}`,_.runId,_.level,_.event,JSON.stringify(_.metadata),_.now])}finally{$.close()}}function Wb(_,$,D,I){let U=w(_);try{Q0(U,{...D,run_id:$,created_at:I})}finally{U.close()}}function Pb(_){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 pF(_){let $=typeof _==="number"&&Number.isFinite(_)?_:0.5;return Math.max(0,Math.min(1,$))}function eF(_,$){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 aF(_){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 BX(_){let $=(_.now??new Date).toISOString();c(_.dbPath);let g=t0(_.dbPath,_.id),U=VR(_.dbPath,_.id),D=G$(_.modelRef??"default",_.config),I=C_(D),j=`run_${qX()}`,E=oF({deterministic:g,evidence:U});lF({dbPath:_.dbPath,runId:j,prompt:E,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((z)=>z.name)},now:$}),DW({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 A,O,P=0.5,W={input_tokens:gW(E),output_tokens:0,cost_usd:0};if(_.fake)A=aF(U),O=A.summary,W.output_tokens=gW(O)+gW(A.diff??"");else try{let{generateObject:z}=await import("ai"),{z:S}=await Promise.resolve().then(() => (TX(),QX)),L=await x0(D,{config:_.config,env:_.env}),J=S.object({summary:S.string(),confidence:S.number().min(0).max(1),proposed_patch:S.object({kind:S.enum(["manual_merge","choose_local","choose_remote","no_op","custom"]),target:S.string(),strategy:S.string(),summary:S.string(),diff:S.string().nullable(),metadata:S.record(S.string(),S.unknown()).default({})})}),R=await z({model:L,schema:J,system:"You are a read-only knowledge sync conflict proposal agent. You produce reviewable proposals only; never approve or apply writes.",prompt:E});O=R.object.summary,P=pF(R.object.confidence),A=eF(R.object.proposed_patch,`${U.conflict.entity_kind}:${U.conflict.entity_id}`);let X=jg({provider:I.provider,model:I.model,usage:R.usage,providerMetadata:R.providerMetadata});W={input_tokens:X.input_tokens,output_tokens:X.output_tokens,cost_usd:X.cost_usd},tF(_.dbPath,j,X,$)}catch(z){throw DW({dbPath:_.dbPath,runId:j,level:"error",event:"conflict_proposal_generation_failed",metadata:{message:z instanceof Error?z.message:String(z)},now:$}),KX({dbPath:_.dbPath,runId:j,status:"failed",provider:I.provider,model:I.model,usage:W,metadata:{conflict_id:_.id,mode:"ai",error:z instanceof Error?z.message:String(z)},now:$}),z}return KX({dbPath:_.dbPath,runId:j,status:_.fake?"dry_run":"completed",provider:I.provider,model:I.model,usage:W,metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,confidence:P,proposed_strategy:A.strategy,citation_count:U.citations.length},now:$}),DW({dbPath:_.dbPath,runId:j,level:"info",event:_.fake?"fake_conflict_proposal_generated":"conflict_proposal_generated",metadata:{strategy:A.strategy,confidence:P,patch_kind:A.kind},now:$}),{...g,mode:"ai",proposed_strategy:A.strategy,summary:O,proposed_patch:A,citations:U.citations,confidence:P,agent:{generated:!0,provider:I.provider,model:I.model,run_id:j,read_only_tools:U.read_only_tools,usage:W},warnings:[...g.warnings,...U.remote_row?[]:["remote_row_snapshot_unavailable"]],message:`Prepared AI SDK approval-gated merge proposal for ${_.id}`}}import{createHash as sF,randomUUID as _r}from"crypto";import{existsSync as $r,readFileSync as gr}from"fs";import{basename as Dr}from"path";function bj(_,$){return`${_}_${sF("sha256").update($).digest("hex").slice(0,20)}`}function e4(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function W_(_){return typeof _==="string"&&_.length>0?_:void 0}function Ur(_){let $=W_(_.source_ref)??W_(_.source_uri)??W_(_.uri);if($)return $;let g=W_(_.file_id);if(g){let I=W_(_.revision_id)??W_(_.revision),j=`open-files://file/${encodeURIComponent(g)}`;return I?`${j}/revision/${encodeURIComponent(I)}`:j}let U=W_(_.source_id),D=W_(_.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 Ir(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function jr(_){return W_(_.hash)??W_(_.checksum)??W_(_.sha256)??null}function Er(_,$,g){return W_(_.revision_id)??W_(_.revision)??W_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??g??null}function Nr(_){return W_(_.previous_revision_id)??W_(_.previous_revision)??W_(_.previous_version_id)??null}function Ar(_){return(W_(_.event_type)??W_(_.event)??W_(_.type)??W_(_.action)??W_(_.change_type)??"changed").toLowerCase()}function Or(_){let $=W_(_.path);return W_(_.title)??W_(_.name)??($?Dr($):null)}function Pr(_,$){let g=Ur(_),U=A$(g),D=jr(_);return{raw:_,eventType:Ar(_),sourceRef:g,sourceUri:Ir(g,U),kind:U.kind,title:Or(_),revision:Er(_,U,D),previousRevision:Nr(_),hash:D,status:W_(_.status)?.toLowerCase()??null,updatedAt:W_(_.updated_at)??$,acl:_.permissions??_.acl??void 0}}function Sr(_){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=e4(U);if(!D)throw Error("Outbox array entries must be objects.");return D})}if($.startsWith("{"))try{let g=JSON.parse($),U=e4(g);if(!U)throw Error("Outbox object parse failed.");if(Array.isArray(U.events))return U.events.map((D)=>{let I=e4(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=e4(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=e4(JSON.parse(g));if(!U)throw Error("Outbox JSONL entries must be objects.");return U})}async function Lr(_,$,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:E},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===D?$.storage.s3:void 0,W=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new E({Bucket:D,Key:I}));if(!W.Body)return"";return await W.Body.transformToString()}async function Wr(_,$,g){if(_.startsWith("s3://"))return Lr(_,$,g);if(!$r(_))throw Error(`Outbox not found: ${_}`);return gr(_,"utf8")}function VX(_,$){let g={};if(_)try{g=e4(JSON.parse(_))??{}}catch{g={}}return JSON.stringify({...g,...$})}function Jr(_,$,g){let U=bj("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) +`)}function zb(_){let $=typeof _==="number"&&Number.isFinite(_)?_:0.5;return Math.max(0,Math.min(1,$))}function Xb(_,$){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 Gb(_){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 fG(_){let $=(_.now??new Date).toISOString();h(_.dbPath);let D=$U(_.dbPath,_.id),I=xX(_.dbPath,_.id),U=T$(_.modelRef??"default",_.config),E=x_(U),j=`run_${rG()}`,N=Pb({deterministic:D,evidence:I});Jb({dbPath:_.dbPath,runId:j,prompt:N,provider:E.provider,model:E.model,status:_.fake?"dry_run":"running",metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,read_only_tools:I.read_only_tools.map((P)=>P.name)},now:$}),PW({dbPath:_.dbPath,runId:j,level:"info",event:"conflict_evidence_retrieved",metadata:{citations:I.citations.length,source_refs:I.source_refs.length,read_only_tools:I.read_only_tools},now:$});let A,O,L=0.5,J={input_tokens:WW(N),output_tokens:0,cost_usd:0};if(_.fake)A=Gb(I),O=A.summary,J.output_tokens=WW(O)+WW(A.diff??"");else try{let{generateObject:P}=await import("ai"),{z}=await Promise.resolve().then(() => (vG(),CG)),S=await lD(U,{config:_.config,env:_.env}),W=z.object({summary:z.string(),confidence:z.number().min(0).max(1),proposed_patch:z.object({kind:z.enum(["manual_merge","choose_local","choose_remote","no_op","custom"]),target:z.string(),strategy:z.string(),summary:z.string(),diff:z.string().nullable(),metadata:z.record(z.string(),z.unknown()).default({})})}),X=await P({model:S,schema:W,system:"You are a read-only knowledge sync conflict proposal agent. You produce reviewable proposals only; never approve or apply writes.",prompt:N});O=X.object.summary,L=zb(X.object.confidence),A=Xb(X.object.proposed_patch,`${I.conflict.entity_kind}:${I.conflict.entity_id}`);let G=O4({provider:E.provider,model:E.model,usage:X.usage,providerMetadata:X.providerMetadata});J={input_tokens:G.input_tokens,output_tokens:G.output_tokens,cost_usd:G.cost_usd},Wb(_.dbPath,j,G,$)}catch(P){throw PW({dbPath:_.dbPath,runId:j,level:"error",event:"conflict_proposal_generation_failed",metadata:{message:P instanceof Error?P.message:String(P)},now:$}),wG({dbPath:_.dbPath,runId:j,status:"failed",provider:E.provider,model:E.model,usage:J,metadata:{conflict_id:_.id,mode:"ai",error:P instanceof Error?P.message:String(P)},now:$}),P}return wG({dbPath:_.dbPath,runId:j,status:_.fake?"dry_run":"completed",provider:E.provider,model:E.model,usage:J,metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,confidence:L,proposed_strategy:A.strategy,citation_count:I.citations.length},now:$}),PW({dbPath:_.dbPath,runId:j,level:"info",event:_.fake?"fake_conflict_proposal_generated":"conflict_proposal_generated",metadata:{strategy:A.strategy,confidence:L,patch_kind:A.kind},now:$}),{...D,mode:"ai",proposed_strategy:A.strategy,summary:O,proposed_patch:A,citations:I.citations,confidence:L,agent:{generated:!0,provider:E.provider,model:E.model,run_id:j,read_only_tools:I.read_only_tools,usage:J},warnings:[...D.warnings,...I.remote_row?[]:["remote_row_snapshot_unavailable"]],message:`Prepared AI SDK approval-gated merge proposal for ${_.id}`}}import{createHash as Rb,randomUUID as Yb}from"crypto";import{existsSync as Qb,readFileSync as Kb}from"fs";import{basename as Tb}from"path";function rj(_,$){return`${_}_${Rb("sha256").update($).digest("hex").slice(0,20)}`}function DD(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function z_(_){return typeof _==="string"&&_.length>0?_:void 0}function Fb(_){let $=z_(_.source_ref)??z_(_.source_uri)??z_(_.uri);if($)return $;let D=z_(_.file_id);if(D){let E=z_(_.revision_id)??z_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return E?`${j}/revision/${encodeURIComponent(E)}`:j}let I=z_(_.source_id),U=z_(_.path);if(I&&U)return`open-files://source/${encodeURIComponent(I)}/path/${encodeURIComponent(U)}`;throw Error("Outbox event is missing source_ref, file_id, or source_id/path.")}function Vb(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function Bb(_){return z_(_.hash)??z_(_.checksum)??z_(_.sha256)??null}function Mb(_,$,D){return z_(_.revision_id)??z_(_.revision)??z_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??null}function bb(_){return z_(_.previous_revision_id)??z_(_.previous_revision)??z_(_.previous_version_id)??null}function Zb(_){return(z_(_.event_type)??z_(_.event)??z_(_.type)??z_(_.action)??z_(_.change_type)??"changed").toLowerCase()}function Hb(_){let $=z_(_.path);return z_(_.title)??z_(_.name)??($?Tb($):null)}function kb(_,$){let D=Fb(_),I=J$(D),U=Bb(_);return{raw:_,eventType:Zb(_),sourceRef:D,sourceUri:Vb(D,I),kind:I.kind,title:Hb(_),revision:Mb(_,I,U),previousRevision:bb(_),hash:U,status:z_(_.status)?.toLowerCase()??null,updatedAt:z_(_.updated_at)??$,acl:_.permissions??_.acl??void 0}}function qb(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Outbox array parse failed.");return D.map((I)=>{let U=DD(I);if(!U)throw Error("Outbox array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),I=DD(D);if(!I)throw Error("Outbox object parse failed.");if(Array.isArray(I.events))return I.events.map((U)=>{let E=DD(U);if(!E)throw Error("Outbox events entries must be objects.");return E});if("source_ref"in I||"source_uri"in I||"file_id"in I)return[I]}catch(D){let I=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(I.length<=1)throw D;return I.map((U)=>{let E=DD(JSON.parse(U));if(!E)throw Error("Outbox JSONL entries must be objects.");return E})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let I=DD(JSON.parse(D));if(!I)throw Error("Outbox JSONL entries must be objects.");return I})}async function Cb(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 outbox URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,J=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!J.Body)return"";return await J.Body.transformToString()}async function vb(_,$,D){if(_.startsWith("s3://"))return Cb(_,$,D);if(!Qb(_))throw Error(`Outbox not found: ${_}`);return Kb(_,"utf8")}function xG(_,$){let D={};if(_)try{D=DD(JSON.parse(_))??{}}catch{D={}}return JSON.stringify({...D,...$})}function wb(_,$,D){let I=rj("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(W_($.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 = ?",[VX(D.metadata_json,I),$.acl===void 0?null:JSON.stringify($.acl),$.acl===void 0?null:JSON.stringify($.acl),$.updatedAt,D.id]),D.id}function zr(_,$,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`,[I,$.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 E={source_ref:$.sourceRef,source_uri:$.sourceUri,last_outbox_event:$.eventType,last_outbox_at:$.updatedAt};if($.status)E.status=$.status;if(z_($.raw.path))E.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 = ?",[xG(U.metadata_json,E),$.acl===void 0?null:JSON.stringify($.acl),$.acl===void 0?null:JSON.stringify($.acl),$.updatedAt,U.id]),U.id}function rb(_,$,D,I){if(!D.revision)return null;let U=rj("rev",`${$}\x00${D.revision}`),E={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,W_(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 Rr(_,$,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 Gr(_,$){let g=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($),U=0,D=0;for(let j of g){let E=_.query("SELECT COUNT(*) AS n FROM chunk_embeddings WHERE chunk_id = ?").get(j.id);U+=E?.n??0;let A=_.query("SELECT COUNT(*) AS n FROM vector_index_entries WHERE chunk_id = ?").get(j.id);D+=A?.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 = ?",[VX(I?.metadata_json,{reindex_required:!0,invalidated_at:new Date().toISOString()}),$]),{chunksDeleted:g.length,embeddingsDeleted:U,vectorEntriesDeleted:D}}function Xr(_,$){return $==="deleted"||["delete","deleted","remove","removed"].includes(_)}function Yr(_){return["move","moved","rename","renamed","path_changed","canonical_key_changed"].includes(_)}function Qr(_){return["permission","permissions","permission_changed","acl_changed","acl_revoked"].includes(_)}async function FX(_){let $=(_.now??new Date).toISOString();if(_.safetyPolicy)$6(_.dbPath,_.safetyPolicy);c(_.dbPath);let g=await Wr(_.input,_.config,_.safetyPolicy),U=Sr(g),D=v(_.dbPath),I=`run_${_r()}`;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,E=new Set,A=0,O=0,P=0,W=0,z=0,S=0,L=0;return z_(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((J,R)=>{let X=Pr(J,$),G=Jr(D,X,$);j.add(G);let B=zr(D,G,X,$);if(B)E.add(B);let Q=Rr(D,G,X);for(let T of Q){E.add(T);let K=Gr(D,T);A+=K.chunksDeleted,O+=K.embeddingsDeleted,P+=K.vectorEntriesDeleted,W+=1}if(Xr(X.eventType,X.status))z+=1;if(Yr(X.eventType))S+=1;if(Qr(X.eventType)||X.acl!==void 0)L+=1;D.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[bj("evt",`${I}\x00${R}\x00${X.sourceRef}\x00${X.eventType}`),I,"info",X.eventType,JSON.stringify({source_ref:X.sourceRef,source_uri:X.sourceUri,revision:X.revision,hash:X.hash,status:X.status,affected_revisions:Q.length}),X.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."}),$]),z_(D,{event_type:"write",action:"knowledge_outbox_invalidation",target_uri:_.dbPath,decision:"allow",metadata:{run_id:I,events:U.length,sources:j.size,revisions:E.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:P},created_at:$}),{path:_.input,db_path:_.dbPath,run_id:I,events_seen:U.length,sources_touched:j.size,revisions_touched:E.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:P,stale_revisions:W,deleted_sources:z,moved_sources:S,permission_updates:L}})()}finally{D.close()}}import{spawnSync as MX}from"child_process";import{hostname as xg,platform as ZX,userInfo as Tr}from"os";var Kr=1,qr="@hasna/machines",Br="@hasna/machines/consumer";function d(_){return typeof _==="string"&&_.length>0?_:null}function c6(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function c_(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function vj(_){return typeof _==="boolean"?_:null}function Vr(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function wj(_=ZX()){let $=_.toLowerCase();if($==="darwin"||$==="macos")return"macos";if($==="win32"||$==="windows")return"windows";if($==="linux")return"linux";return _}function UU(_){let $=MX("bash",["-c",_],{encoding:"utf8",env:process.env});return{stdout:$.stdout||"",stderr:$.stderr||"",exitCode:$.status??1}}async function a4(_,$){return await _($)}async function IU(_,$){return(await a4($,`command -v ${_} >/dev/null 2>&1`)).exitCode===0}function Fr(_){try{let $=JSON.parse(_);if(!$||typeof $!=="object")return null;return $}catch{return null}}function rX(_){if(!_)return null;return _.HostName??_.DNSName?.split(".")[0]??null}async function rr(_,$){let g=new Map;if(!await IU("tailscale",_))return $.push("tailscale_not_available"),{peers:g,selfKey:null};let U=await a4(_,"tailscale status --json");if(U.exitCode!==0)return $.push(`tailscale_status_failed:${U.stderr.trim()||U.exitCode}`),{peers:g,selfKey:null};let D=Fr(U.stdout);if(!D)return $.push("tailscale_status_invalid_json"),{peers:g,selfKey:null};let I=(j)=>{let E=rX(j);if(E&&j)g.set(E,j)};I(D.Self);for(let j of Object.values(D.Peer??{}))I(j);return{peers:g,selfKey:rX(D.Self)}}function br(_){return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??_??xg()}function Mr(_){let $=_.machineId===_.localMachineId||_.machineId===xg(),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??($?xg():_.machineId),local:$,platform:_.peer?.OS?wj(_.peer.OS):$?wj():null,os:_.peer?.OS??($?ZX():null),user:$?Tr().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 Zr(_){if(!Array.isArray(_))return[];return _.map(($)=>{let g=c_($),U=d(g.kind)??"unknown";return{kind:U==="local"||U==="lan"||U==="tailscale"||U==="ssh"?U:"unknown",target:d(g.target)??"",reachable:vj(g.reachable)}}).filter(($)=>$.target.length>0)}function Hr(_,$){let g=d(_.machine_id)??d(_.hostname)??"unknown",U=c_(_.tailscale),D=c_(_.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:c6(U.ips),online:vj(U.online),active:vj(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:Zr(_.route_hints),tags:c6(_.tags),metadata:c_(_.metadata),source:"open-machines"}}function kr(_,$){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 HX(_){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 EU(_){return typeof _==="number"&&_>Kr?_:null}function fj(_){return{package:qr,entrypoint:Br,mode:_.mode,implementation:_.implementation,contract_version:_.contractVersion??null,available:_.available,error:_.error??null}}function U_(_,$="adapter_disabled"){return fj({mode:_,implementation:"disabled",available:!1,error:$})}function xj(_,$){let g=EU(HX($));if(!g)return null;return fj({mode:_,implementation:"disabled",available:!1,error:`unsupported_contract_version:${g}`,contractVersion:g})}function yj(_){return fj({mode:_,implementation:"cli",available:!0})}function cj(_,$){return fj({mode:_,implementation:"sdk",available:!0,contractVersion:HX($)})}function hj(_){try{return JSON.parse(_)}catch{return null}}function yg(_){return`'${_.replace(/'/g,"'\\''")}'`}function nj(_){return["machines",..._].map(yg).join(" ")}function dj(_){return _==="local"||_==="localhost"||_===xg()||_===process.env.HASNA_MACHINE_ID||_===process.env.OPEN_MACHINES_MACHINE_ID||_===process.env.MACHINE_ID}function Cr(_,$){let g=dj(_),U=g?$:`ssh ${yg(_)} ${yg($)}`,D=MX("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 kX(_,$,g){return await _($,g)}function ug(_,$){if($)return"ok";return _===!1?"warn":"fail"}function fg(_){return _.replace(/[^a-zA-Z0-9_.@/-]+/g,"-").replace(/^-+|-+$/g,"")}function vr(_){if(_==="@hasna/knowledge")return"knowledge";if(_==="@hasna/machines")return"machines";return _.split("/").pop()??_}function wr(_){return _.trim().split(/\r?\n/).find(Boolean)??""}function CX(_){return _.match(/\b\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?\b/)?.[0]??null}function vX(_){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 S6(_){return{id:_.id,kind:_.kind,status:_.status,target:_.target,expected:_.expected??null,actual:_.actual??null,detail:_.detail,source:_.source}}async function wX(_,$,g){let U=[`cmd=${yg($.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 kX(g,_,U),I=vX(D.stdout);return{path:I.path||null,version:I.version?wr(I.version):null,stderr:D.stderr,source:D.source??(dj(_)?"local":"ssh")}}function bX(_){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 ur(_,$,g){let U=[`path=${yg($.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" "$(${bX("name")})"; printf "version=%s\\n" "$(${bX("version")})"; fi`].join("; "),D=await kX(g,_,U),I=vX(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??(dj(_)?"local":"ssh")}}async function fr(_,$,g){let U=await wX(_,$,g),D=Boolean(U.path),I=[S6({id:`command:${fg($.command)}:path`,kind:"command",status:ug($.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=CX(U.version??"");I.push(S6({id:`command:${fg($.command)}:version`,kind:"command",status:j===$.expectedVersion?"ok":ug($.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 xr(_,$,g){let U=$.command??vr($.name),D=await wX(_,{command:U,expectedVersion:$.expectedVersion,required:$.required},g),I=Boolean(D.path),j=[S6({id:`package:${fg($.name)}:command`,kind:"package",status:ug($.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 E=CX(D.version??"");j.push(S6({id:`package:${fg($.name)}:version`,kind:"package",status:E===$.expectedVersion?"ok":ug($.required,!1),target:$.name,expected:$.expectedVersion,actual:E??D.version??"missing",detail:E?`version output: ${D.version}`:"version unavailable",source:D.source}))}return j}async function yr(_,$,g){let U=await ur(_,$,g),D=$.label??$.path,I=[S6({id:`workspace:${fg(D)}:path`,kind:"workspace",status:ug($.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(S6({id:`workspace:${fg(D)}:package-name`,kind:"workspace",status:U.packageName===$.expectedPackageName?"ok":ug($.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(S6({id:`workspace:${fg(D)}:version`,kind:"workspace",status:U.version===$.expectedVersion?"ok":ug($.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 uX(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:l$,workspace_home:$.knowledge?.workspace_home??null},message:kr(_.source,_.machines.length)}}async function mj(){try{return await import("@hasna/machines/consumer")}catch(_){if(E$(_)!=="module_not_found")throw _;return await import("@hasna/machines")}}function fX(_,$,g){let U=c_(_);if(EU(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)??xg(),current_platform:d(U.current_platform)??wj(),machines:D.map((E)=>Hr(E,I)),warnings:c6(U.warnings),adapter:g};return uX(j,$)}function Mj(_){return _==="local"||_==="lan"||_==="tailscale"||_==="ssh"||_==="unknown"?_:null}function xX(_){let $=c_(_),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:Vr($.ttl_ms),source_authority:U,confidence:d($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:c6($.reasons)}}function yX(_,$){let g=c_(_);if(EU(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:Mj(g.route),targetKind:Mj(I?.kind)??Mj(g.source)??Mj(g.route),confidence:d(g.confidence),source:"open-machines",adapter:$,evidence:D,cacheability:xX(g.cacheability),warnings:c6(g.warnings)}}function UW(_){let $=c_(_);return{path:d($.path),source:d($.source)??"unresolved"}}function cr(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let g=c_($),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:vj(g.path_exists)}]})}function hr(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let g=c_($),U=d(g.id),D=d(g.reason),I=c6(g.command),j=d(g.shell_command),E=c6(g.apply_command),A=d(g.apply_shell_command);if(!U||!D||!I.length||!j||!E.length||!A)return[];return[{id:U,reason:D,command:I,shell_command:j,apply_command:E,apply_shell_command:A}]})}function nr(_){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(yg).join(" "),apply_command:U,apply_shell_command:U.map(yg).join(" ")}]}function cX(_,$,g){let U=c_(_);if(EU(uj(U)))return null;let D=c_(U.paths),I=c_(U.project),j=c_(U.machine),E=UW(D.project_root),A=UW(D.workspace_root),O=UW(D.open_files_root);if(U.ok!==!0||!E.path)return null;let P=typeof U.evidence==="object"&&U.evidence!==null?U.evidence:null,W=d(U.requested_machine_id)??$.machineId,z=d(I.project_id)??$.projectId??"open-knowledge",S=d(I.repo_name)??$.repoName??$.projectId??"open-knowledge",L=d(j.trust_status)??"unknown",J=d(j.auth_status)??"unknown",R=c6(U.warnings),X=cr(U.diagnostics),G=hr(U.repair_hints);return{ok:!0,source:"open-machines",adapter:g,requested_machine_id:W,machine_id:d(U.machine_id),project_id:z,repo_name:S,project_root:E.path,project_root_source:E.source,workspace_root:A.path,workspace_root_source:A.source,open_files_root:O.path,open_files_root_source:O.source,trust_status:L,auth_status:J,current:j.current===!0,primary:j.primary===!0,diagnostics:X,repair_hints:G.length?G:nr({requestedMachineId:W,projectId:z,repoName:S,openFilesRepoName:$.openFilesRepoName,warnings:R,projectRootSource:E.source,openFilesRootSource:O.source,trustStatus:L,authStatus:J}),evidence:P,cacheability:xX(U.cacheability),warnings:R}}async function Zj(_,$){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 a4(g,nj(U));if(D.exitCode!==0)return null;return fX(hj(D.stdout),_,$)}async function N6(_,$){let g=[];if($.error)g.push(`open_machines_unavailable:${$.error}`);let U=_.runner??UU,D=_.includeTailscale===!1?{peers:new Map,selfKey:null}:await rr(U,g),I=br(D.selfKey),E=[...new Set([I,...D.peers.keys()])].sort().map((A)=>Mr({machineId:A,localMachineId:I,peer:D.peers.get(A)}));return uX({ok:!0,source:"local",generated_at:(_.now??new Date).toISOString(),local_machine_id:I,local_hostname:xg(),current_platform:wj(),machines:E,warnings:g,adapter:$},_)}async function hX(_={}){let $=jU(_);if($==="disabled")return await N6(_,U_($));let g=yj($);try{if($!=="cli"){let D=await(_.loadOpenMachines??mj)(),I=xj($,D);if(I)return await N6(_,I);let j=cj($,D);if(D?.discoverMachineTopology){let E=D.discoverMachineTopology({includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),A=fX(E,_,j);if(A)return A;if($==="sdk")return await N6(_,U_($,"invalid_topology_shape"));return await Zj(_,g)??await N6(_,U_($,"invalid_topology_shape"))}if($==="sdk")return await N6(_,U_($,"missing_discoverMachineTopology"));return await Zj(_,g)??await N6(_,U_($,"missing_discoverMachineTopology"))}return await Zj(_,g)??await N6(_,U_($,"machines_cli_unavailable"))}catch(U){if($==="sdk")return await N6(_,U_($,E$(U)));return await Zj(_,g)??await N6(_,U_($,E$(U)))}}async function Hj(_,$){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 a4(g,nj(U));if(D.exitCode!==0)return null;return yX(hj(D.stdout),$)}function A6(_,$){return{target:_,route:null,targetKind:null,confidence:null,source:"raw",adapter:$,evidence:null,cacheability:null,warnings:[]}}async function IW(_){let $=jU(_);if($==="disabled")return A6(_.machineId,U_($));let g=yj($);try{if($!=="cli"){let D=await(_.loadOpenMachines??mj)(),I=xj($,D);if(I)return A6(_.machineId,I);let j=cj($,D);if(D?.resolveMachineRoute){let E=yX(D.resolveMachineRoute(_.machineId,{includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),j);if(E)return E;if($==="sdk")return A6(_.machineId,U_($,"invalid_route_shape"));return await Hj(_,g)??A6(_.machineId,U_($,"invalid_route_shape"))}if($==="sdk")return A6(_.machineId,U_($,"missing_resolveMachineRoute"));return await Hj(_,g)??A6(_.machineId,U_($,"missing_resolveMachineRoute"))}return await Hj(_,g)??A6(_.machineId,U_($,"machines_cli_unavailable"))}catch(U){if($==="sdk")return{...A6(_.machineId,U_($,E$(U))),warnings:[E$(U)]};return await Hj(_,g)??{...A6(_.machineId,U_($,E$(U))),warnings:[E$(U)]}}}async function kj(_,$){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 a4(g,nj(I));if(j.exitCode!==0)return null;return cX(hj(j.stdout),_,$)}function dr(_){let $=_.peerWorkspace?.trim();if(!$)return null;return{ok:!0,source:"argument",adapter:U_(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 O6(_,$,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 ij(_){let $=dr(_);if($)return $;let g=jU(_);if(g==="disabled")return O6(_,["adapter_disabled"],U_(g));let U=yj(g);try{if(g!=="cli"){let I=await(_.loadOpenMachines??mj)(),j=xj(g,I);if(j)return O6(_,[`unsupported_contract_version:${j.contract_version}`],j);let E=cj(g,I);if(I?.resolveMachineWorkspace){let A=cX(I.resolveMachineWorkspace({machineId:_.machineId,projectId:_.projectId??"open-knowledge",repoName:_.repoName??"open-knowledge",openFilesRepoName:_.openFilesRepoName??"open-files",includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),_,E);if(A)return A;if(g==="sdk")return O6(_,["invalid_workspace_shape"],U_(g,"invalid_workspace_shape"));return await kj(_,U)??O6(_,["invalid_workspace_shape"],U_(g,"invalid_workspace_shape"))}if(g==="sdk")return O6(_,["missing_resolveMachineWorkspace"],U_(g,"missing_resolveMachineWorkspace"));return await kj(_,U)??O6(_,["missing_resolveMachineWorkspace"],U_(g,"missing_resolveMachineWorkspace"))}return await kj(_,U)??O6(_,["machines_cli_unavailable"],U_(g,"machines_cli_unavailable"))}catch(D){if(g==="sdk")return O6(_,[E$(D)],U_(g,E$(D)));return await kj(_,U)??O6(_,[E$(D)],U_(g,E$(D)))}}function nX(_,$){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 dX(_,$,g){let U=c_(_);if(EU(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((A)=>{let O=c_(A),P=d(O.status),W=d(O.kind),z=d(O.source);return S6({id:d(O.id)??"unknown",kind:W==="command"||W==="package"||W==="workspace"?W:"command",status:P==="ok"||P==="warn"||P==="fail"?P:"fail",target:d(O.target)??"unknown",expected:d(O.expected),actual:d(O.actual),detail:d(O.detail)??"",source:z==="local"||z==="ssh"||z==="open-machines"?z:"open-machines"})}),E={ok:j.filter((A)=>A.status==="ok").length,warn:j.filter((A)=>A.status==="warn").length,fail:j.filter((A)=>A.status==="fail").length};return nX({ok:E.fail===0,source:"open-machines",machine_id:I,generated_at:d(U.generated_at)??($.now??new Date).toISOString(),checks:j,summary:E,adapter:g},$)}function mr(_){if(!_.runner)return UU;return async($)=>{let g=await _.runner?.("local",$);return{stdout:g?.stdout??"",stderr:g?.stderr??"",exitCode:g?.exitCode??1}}}function ir(_){return[_.name,_.command,_.expectedVersion].filter(($)=>Boolean($)).join(":")}function lr(_){let $=[_.expectedPackageName,_.expectedVersion].filter((U)=>Boolean(U)).join(":"),g=$?`${_.path}:${$}`:_.path;return _.label?`${_.label}=${g}`:g}async function Cj(_,$){let g=mr(_);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",ir(I));for(let I of _.workspaces??[])U.push("--workspace",lr(I));let D=await a4(g,nj(U));if(D.exitCode!==0)return null;return dX(hj(D.stdout),_,$)}async function P6(_,$){let g=_.machineId??xg(),U=_.runner??Cr,D=_.commands??[{command:"bun",required:!0},{command:"knowledge",required:!0}],I=_.packages??[{name:"@hasna/knowledge",command:"knowledge",required:!0}],j=_.workspaces??[],E=[];for(let O of D)E.push(...await fr(g,O,U));for(let O of I)E.push(...await xr(g,O,U));for(let O of j)E.push(...await yr(g,O,U));if($.error)E.push(S6({id:"adapter:@hasna/machines",kind:"package",status:"warn",target:"@hasna/machines",expected:"optional",actual:$.error,detail:"Using knowledge local/ssh compatibility fallback",source:dj(g)?"local":"ssh"}));let A={ok:E.filter((O)=>O.status==="ok").length,warn:E.filter((O)=>O.status==="warn").length,fail:E.filter((O)=>O.status==="fail").length};return nX({ok:A.fail===0,source:"local",machine_id:g,generated_at:(_.now??new Date).toISOString(),checks:E,summary:A,adapter:$},_)}async function mX(_={}){let $=jU(_);if($==="disabled")return await P6(_,U_($));let g=yj($);try{if($!=="cli"){let D=await(_.loadOpenMachines??mj)(),I=xj($,D);if(I)return await P6(_,I);let j=cj($,D);if(D?.checkMachineCompatibility){let E=D.checkMachineCompatibility({machineId:_.machineId,commands:_.commands,packages:_.packages,workspaces:_.workspaces,runner:_.runner,now:_.now}),A=dX(E,_,j);if(A)return A;if($==="sdk")return await P6(_,U_($,"invalid_compatibility_shape"));return await Cj(_,g)??await P6(_,U_($,"invalid_compatibility_shape"))}if($==="sdk")return await P6(_,U_($,"missing_checkMachineCompatibility"));return await Cj(_,g)??await P6(_,U_($,"missing_checkMachineCompatibility"))}return await Cj(_,g)??await P6(_,U_($,"machines_cli_unavailable"))}catch(U){if($==="sdk")return await P6(_,U_($,E$(U)));return await Cj(_,g)??await P6(_,U_($,E$(U)))}}import{createHash as iX}from"crypto";function EW(_,$,g=24){return`${_}_${iX("sha256").update($).digest("hex").slice(0,g)}`}function s4(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function tr(_){return s4(_).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")}function q$(_,$){try{return JSON.parse(_)}catch{return $}}function h6(_){return{..._,record_kind:_.record_kind,source_kind:_.source_kind,status:_.status,source_refs:q$(_.source_refs_json,[]),evidence_refs:q$(_.evidence_refs_json,[]),requires_approval:_.requires_approval===1,checks:q$(_.checks_json,lX()),metadata:q$(_.metadata_json,{})}}function NW(_){return{..._,record_kind:_.record_kind,source_refs:q$(_.source_refs_json,[]),evidence_refs:q$(_.evidence_refs_json,[]),metadata:q$(_.metadata_json,{})}}function lX(){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 or(_){let $=typeof _==="string"?{ref:_}:_;return{ref:s4($.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 tX(_){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 lj(_){return["deleted","stale","invalidated","reindex_required","expired","superseded"].includes((_??"").toLowerCase())}function jW(_){if(!_)return null;let $=q$(_,{});if($.stale===!0)return"stale";return typeof $.status==="string"?$.status:null}function pr(_){if(_.citation_id)return _.citation_id;return _.ref.match(/^(?:cite|citation):(.+)$/)?.[1]??null}function er(_){if(_.chunk_id)return _.chunk_id;return _.ref.match(/^chunk:(.+)$/)?.[1]??null}function ar(_,$,g){let U=lj($.status)||Boolean($.expires_at&&$.expires_at<=g);if(!$.ref||!tX($.ref))return{ref:$.ref,valid:!1,resolved_by:"none",stale:U,reason:"invalid_reference"};let D=pr($),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,z_(D.raw.extracted_text_ref)??null,JSON.stringify(E),I]),_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision)?.id??null}function fb(_,$,D){if(D.previousRevision){let I=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.previousRevision).map((U)=>U.id);if(I.length>0)return I}if(D.revision)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.revision).map((I)=>I.id);if(D.hash)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND hash = ?").all($,D.hash).map((I)=>I.id);return _.query("SELECT id FROM source_revisions WHERE source_id = ?").all($).map((I)=>I.id)}function xb(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($),I=0,U=0;for(let j of D){let N=_.query("SELECT COUNT(*) AS n FROM chunk_embeddings WHERE chunk_id = ?").get(j.id);I+=N?.n??0;let A=_.query("SELECT COUNT(*) AS n FROM vector_index_entries WHERE chunk_id = ?").get(j.id);U+=A?.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 E=_.query("SELECT metadata_json FROM source_revisions WHERE id = ?").get($);return _.run("UPDATE source_revisions SET metadata_json = ? WHERE id = ?",[xG(E?.metadata_json,{reindex_required:!0,invalidated_at:new Date().toISOString()}),$]),{chunksDeleted:D.length,embeddingsDeleted:I,vectorEntriesDeleted:U}}function ub(_,$){return $==="deleted"||["delete","deleted","remove","removed"].includes(_)}function yb(_){return["move","moved","rename","renamed","path_changed","canonical_key_changed"].includes(_)}function hb(_){return["permission","permissions","permission_changed","acl_changed","acl_revoked"].includes(_)}async function uG(_){let $=(_.now??new Date).toISOString();if(_.safetyPolicy)N6(_.dbPath,_.safetyPolicy);h(_.dbPath);let D=await vb(_.input,_.config,_.safetyPolicy),I=qb(D),U=w(_.dbPath),E=`run_${Yb()}`;try{return U.transaction(()=>{U.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[E,"open-files-outbox",_.input,"completed","local","open-files-outbox",JSON.stringify({path:_.input,events:I.length}),$,$]);let j=new Set,N=new Set,A=0,O=0,L=0,J=0,P=0,z=0,S=0;return G_(U,{event_type:"source_read",action:_.input.startsWith("s3://")?"s3_outbox_read":"local_outbox_read",target_uri:_.input,decision:"allow",metadata:{events:I.length,read_only:!0},created_at:$}),I.forEach((W,X)=>{let G=kb(W,$),R=wb(U,G,$);j.add(R);let K=rb(U,R,G,$);if(K)N.add(K);let Y=fb(U,R,G);for(let T of Y){N.add(T);let F=xb(U,T);A+=F.chunksDeleted,O+=F.embeddingsDeleted,L+=F.vectorEntriesDeleted,J+=1}if(ub(G.eventType,G.status))P+=1;if(yb(G.eventType))z+=1;if(hb(G.eventType)||G.acl!==void 0)S+=1;U.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[rj("evt",`${E}\x00${X}\x00${G.sourceRef}\x00${G.eventType}`),E,"info",G.eventType,JSON.stringify({source_ref:G.sourceRef,source_uri:G.sourceUri,revision:G.revision,hash:G.hash,status:G.status,affected_revisions:Y.length}),G.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, ?, ?)`,[rj("usage",E),E,"local","open-files-outbox",JSON.stringify({note:"No model provider used for outbox invalidation."}),$]),G_(U,{event_type:"write",action:"knowledge_outbox_invalidation",target_uri:_.dbPath,decision:"allow",metadata:{run_id:E,events:I.length,sources:j.size,revisions:N.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:L},created_at:$}),{path:_.input,db_path:_.dbPath,run_id:E,events_seen:I.length,sources_touched:j.size,revisions_touched:N.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:L,stale_revisions:J,deleted_sources:P,moved_sources:z,permission_updates:S}})()}finally{U.close()}}import{spawnSync as cG}from"child_process";import{hostname as n4,platform as nG,userInfo as cb}from"os";var nb=1,db="@hasna/machines",mb="@hasna/machines/consumer";function m(_){return typeof _==="string"&&_.length>0?_:null}function m6(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function m_(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function cj(_){return typeof _==="boolean"?_:null}function lb(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function nj(_=nG()){let $=_.toLowerCase();if($==="darwin"||$==="macos")return"macos";if($==="win32"||$==="windows")return"windows";if($==="linux")return"linux";return _}function L1(_){let $=cG("bash",["-c",_],{encoding:"utf8",env:process.env});return{stdout:$.stdout||"",stderr:$.stderr||"",exitCode:$.status??1}}async function UD(_,$){return await _($)}async function S1(_,$){return(await UD($,`command -v ${_} >/dev/null 2>&1`)).exitCode===0}function ib(_){try{let $=JSON.parse(_);if(!$||typeof $!=="object")return null;return $}catch{return null}}function yG(_){if(!_)return null;return _.HostName??_.DNSName?.split(".")[0]??null}async function tb(_,$){let D=new Map;if(!await S1("tailscale",_))return $.push("tailscale_not_available"),{peers:D,selfKey:null};let I=await UD(_,"tailscale status --json");if(I.exitCode!==0)return $.push(`tailscale_status_failed:${I.stderr.trim()||I.exitCode}`),{peers:D,selfKey:null};let U=ib(I.stdout);if(!U)return $.push("tailscale_status_invalid_json"),{peers:D,selfKey:null};let E=(j)=>{let N=yG(j);if(N&&j)D.set(N,j)};E(U.Self);for(let j of Object.values(U.Peer??{}))E(j);return{peers:D,selfKey:yG(U.Self)}}function ob(_){return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??_??n4()}function pb(_){let $=_.machineId===_.localMachineId||_.machineId===n4(),D=_.peer?.DNSName?.replace(/\.$/,"")??null,I=D??_.peer?.TailscaleIPs?.[0]??null,U=[];if($)U.push({kind:"local",target:"localhost",reachable:!0});if(I)U.push({kind:"tailscale",target:I,reachable:_.peer?.Online??null});let E=U.find((j)=>j.kind==="local")??U.find((j)=>j.kind==="tailscale")??null;return{machine_id:_.machineId,hostname:_.peer?.HostName??($?n4():_.machineId),local:$,platform:_.peer?.OS?nj(_.peer.OS):$?nj():null,os:_.peer?.OS??($?nG():null),user:$?cb().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:E?.kind==="local"?"local":E?.kind==="tailscale"?"tailscale":"unknown",command_target:E?.target??null},route_hints:U,tags:[],metadata:{},source:"local"}}function eb(_){if(!Array.isArray(_))return[];return _.map(($)=>{let D=m_($),I=m(D.kind)??"unknown";return{kind:I==="local"||I==="lan"||I==="tailscale"||I==="ssh"?I:"unknown",target:m(D.target)??"",reachable:cj(D.reachable)}}).filter(($)=>$.target.length>0)}function ab(_,$){let D=m(_.machine_id)??m(_.hostname)??"unknown",I=m_(_.tailscale),U=m_(_.ssh),E=m(_.heartbeat_status),j=m(U.route);return{machine_id:D,hostname:m(_.hostname),local:D===$,platform:m(_.platform),os:m(_.os),user:m(_.user),workspace_path:m(_.workspace_path),manifest_declared:_.manifest_declared===!0,heartbeat_status:E==="online"||E==="offline"?E:"unknown",last_heartbeat_at:m(_.last_heartbeat_at),tailscale:{dns_name:m(I.dns_name),ips:m6(I.ips),online:cj(I.online),active:cj(I.active),last_seen:m(I.last_seen)},ssh:{address:m(U.address),route:j==="local"||j==="lan"||j==="tailscale"?j:"unknown",command_target:m(U.command_target)},route_hints:eb(_.route_hints),tags:m6(_.tags),metadata:m_(_.metadata),source:"open-machines"}}function sb(_,$){return`${$} machine${$===1?"":"s"} discovered via ${_}`}function L$(_){let $=_ instanceof Error?_.message:String(_);return $.includes("Cannot find module '@hasna/machines'")||$.includes("Cannot find module '@hasna/machines/consumer'")?"module_not_found":$}function J1(_){return _.adapterMode??"auto"}function dG(_){let $=_?.MACHINES_CONSUMER_CONTRACT?.schema_version;if(typeof $==="number")return $;let D=_?.MACHINES_CONSUMER_CONTRACT_VERSION;return typeof D==="number"?D:null}function dj(_){return typeof _.schema_version==="number"?_.schema_version:null}function W1(_){return typeof _==="number"&&_>nb?_:null}function mj(_){return{package:db,entrypoint:mb,mode:_.mode,implementation:_.implementation,contract_version:_.contractVersion??null,available:_.available,error:_.error??null}}function j_(_,$="adapter_disabled"){return mj({mode:_,implementation:"disabled",available:!1,error:$})}function lj(_,$){let D=W1(dG($));if(!D)return null;return mj({mode:_,implementation:"disabled",available:!1,error:`unsupported_contract_version:${D}`,contractVersion:D})}function ij(_){return mj({mode:_,implementation:"cli",available:!0})}function tj(_,$){return mj({mode:_,implementation:"sdk",available:!0,contractVersion:dG($)})}function oj(_){try{return JSON.parse(_)}catch{return null}}function d4(_){return`'${_.replace(/'/g,"'\\''")}'`}function pj(_){return["machines",..._].map(d4).join(" ")}function ej(_){return _==="local"||_==="localhost"||_===n4()||_===process.env.HASNA_MACHINE_ID||_===process.env.OPEN_MACHINES_MACHINE_ID||_===process.env.MACHINE_ID}function _Z(_,$){let D=ej(_),I=D?$:`ssh ${d4(_)} ${d4($)}`,U=cG("bash",["-c",I],{encoding:"utf8",env:process.env});return{stdout:U.stdout||"",stderr:U.stderr||"",exitCode:U.status??1,source:D?"local":"ssh"}}async function mG(_,$,D){return await _($,D)}function h4(_,$){if($)return"ok";return _===!1?"warn":"fail"}function c4(_){return _.replace(/[^a-zA-Z0-9_.@/-]+/g,"-").replace(/^-+|-+$/g,"")}function $Z(_){if(_==="@hasna/knowledge")return"knowledge";if(_==="@hasna/machines")return"machines";return _.split("/").pop()??_}function DZ(_){return _.trim().split(/\r?\n/).find(Boolean)??""}function lG(_){return _.match(/\b\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?\b/)?.[0]??null}function iG(_){let $={};for(let D of _.split(/\r?\n/)){let I=D.indexOf("=");if(I<=0)continue;$[D.slice(0,I)]=D.slice(I+1)}return $}function G6(_){return{id:_.id,kind:_.kind,status:_.status,target:_.target,expected:_.expected??null,actual:_.actual??null,detail:_.detail,source:_.source}}async function tG(_,$,D){let I=[`cmd=${d4($.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 mG(D,_,I),E=iG(U.stdout);return{path:E.path||null,version:E.version?DZ(E.version):null,stderr:U.stderr,source:U.source??(ej(_)?"local":"ssh")}}function hG(_){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 UZ(_,$,D){let I=[`path=${d4($.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" "$(${hG("name")})"; printf "version=%s\\n" "$(${hG("version")})"; fi`].join("; "),U=await mG(D,_,I),E=iG(U.stdout);return{exists:E.exists==="yes",packageJson:E.package_json==="yes",packageName:E.package_name||null,version:E.version||null,stderr:U.stderr,source:U.source??(ej(_)?"local":"ssh")}}async function IZ(_,$,D){let I=await tG(_,$,D),U=Boolean(I.path),E=[G6({id:`command:${c4($.command)}:path`,kind:"command",status:h4($.required,U),target:$.command,expected:"available",actual:I.path??"missing",detail:U?`found at ${I.path}`:I.stderr||"command missing",source:I.source})];if($.expectedVersion){let j=lG(I.version??"");E.push(G6({id:`command:${c4($.command)}:version`,kind:"command",status:j===$.expectedVersion?"ok":h4($.required,!1),target:$.command,expected:$.expectedVersion,actual:j??I.version??"missing",detail:j?`version output: ${I.version}`:"version unavailable",source:I.source}))}return E}async function EZ(_,$,D){let I=$.command??$Z($.name),U=await tG(_,{command:I,expectedVersion:$.expectedVersion,required:$.required},D),E=Boolean(U.path),j=[G6({id:`package:${c4($.name)}:command`,kind:"package",status:h4($.required,E),target:$.name,expected:I,actual:U.path??"missing",detail:E?`${I} found at ${U.path}`:`${I} command missing`,source:U.source})];if($.expectedVersion){let N=lG(U.version??"");j.push(G6({id:`package:${c4($.name)}:version`,kind:"package",status:N===$.expectedVersion?"ok":h4($.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 jZ(_,$,D){let I=await UZ(_,$,D),U=$.label??$.path,E=[G6({id:`workspace:${c4(U)}:path`,kind:"workspace",status:h4($.required,I.exists),target:U,expected:$.path,actual:I.exists?"exists":"missing",detail:I.exists?`workspace exists at ${$.path}`:I.stderr||`workspace missing at ${$.path}`,source:I.source})];if($.expectedPackageName)E.push(G6({id:`workspace:${c4(U)}:package-name`,kind:"workspace",status:I.packageName===$.expectedPackageName?"ok":h4($.required,!1),target:U,expected:$.expectedPackageName,actual:I.packageName??(I.packageJson?"missing-name":"missing-package-json"),detail:I.packageJson?"package.json inspected":"package.json missing",source:I.source}));if($.expectedVersion)E.push(G6({id:`workspace:${c4(U)}:version`,kind:"workspace",status:I.version===$.expectedVersion?"ok":h4($.required,!1),target:U,expected:$.expectedVersion,actual:I.version??(I.packageJson?"missing-version":"missing-package-json"),detail:I.packageJson?"package.json inspected":"package.json missing",source:I.source}));return E}function oG(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:s$,workspace_home:$.knowledge?.workspace_home??null},message:sb(_.source,_.machines.length)}}async function aj(){try{return await import("@hasna/machines/consumer")}catch(_){if(L$(_)!=="module_not_found")throw _;return await import("@hasna/machines")}}function pG(_,$,D){let I=m_(_);if(W1(dj(I)))return null;let U=Array.isArray(I.machines)?I.machines:null,E=m(I.local_machine_id);if(!U||!E)return null;let j={ok:!0,source:"open-machines",generated_at:m(I.generated_at)??($.now??new Date).toISOString(),local_machine_id:E,local_hostname:m(I.local_hostname)??n4(),current_platform:m(I.current_platform)??nj(),machines:U.map((N)=>ab(N,E)),warnings:m6(I.warnings),adapter:D};return oG(j,$)}function fj(_){return _==="local"||_==="lan"||_==="tailscale"||_==="ssh"||_==="unknown"?_:null}function eG(_){let $=m_(_),D=m($.observed_at),I=m($.source_authority);if(!D||!I)return null;return{observed_at:D,verified_at:m($.verified_at),expires_at:m($.expires_at),ttl_ms:lb($.ttl_ms),source_authority:I,confidence:m($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:m6($.reasons)}}function aG(_,$){let D=m_(_);if(W1(dj(D)))return null;let I=m(D.target)??m(D.command_target);if(D.ok!==!0||!I)return null;let U=typeof D.evidence==="object"&&D.evidence!==null?D.evidence:null,E=typeof U?.selected_hint==="object"&&U.selected_hint!==null?U.selected_hint:null;return{target:I,route:fj(D.route),targetKind:fj(E?.kind)??fj(D.source)??fj(D.route),confidence:m(D.confidence),source:"open-machines",adapter:$,evidence:U,cacheability:eG(D.cacheability),warnings:m6(D.warnings)}}function zW(_){let $=m_(_);return{path:m($.path),source:m($.source)??"unresolved"}}function NZ(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=m_($),I=m(D.id),U=m(D.status),E=m(D.severity),j=m(D.message);if(!I||!U||!E||!j)return[];return[{id:I,status:U,severity:E,message:j,path:m(D.path),source:m(D.source)??"unknown",path_exists:cj(D.path_exists)}]})}function gZ(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=m_($),I=m(D.id),U=m(D.reason),E=m6(D.command),j=m(D.shell_command),N=m6(D.apply_command),A=m(D.apply_shell_command);if(!I||!U||!E.length||!j||!N.length||!A)return[];return[{id:I,reason:U,command:E,shell_command:j,apply_command:N,apply_shell_command:A}]})}function AZ(_){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"],I=[...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(d4).join(" "),apply_command:I,apply_shell_command:I.map(d4).join(" ")}]}function sG(_,$,D){let I=m_(_);if(W1(dj(I)))return null;let U=m_(I.paths),E=m_(I.project),j=m_(I.machine),N=zW(U.project_root),A=zW(U.workspace_root),O=zW(U.open_files_root);if(I.ok!==!0||!N.path)return null;let L=typeof I.evidence==="object"&&I.evidence!==null?I.evidence:null,J=m(I.requested_machine_id)??$.machineId,P=m(E.project_id)??$.projectId??"open-knowledge",z=m(E.repo_name)??$.repoName??$.projectId??"open-knowledge",S=m(j.trust_status)??"unknown",W=m(j.auth_status)??"unknown",X=m6(I.warnings),G=NZ(I.diagnostics),R=gZ(I.repair_hints);return{ok:!0,source:"open-machines",adapter:D,requested_machine_id:J,machine_id:m(I.machine_id),project_id:P,repo_name:z,project_root:N.path,project_root_source:N.source,workspace_root:A.path,workspace_root_source:A.source,open_files_root:O.path,open_files_root_source:O.source,trust_status:S,auth_status:W,current:j.current===!0,primary:j.primary===!0,diagnostics:G,repair_hints:R.length?R:AZ({requestedMachineId:J,projectId:P,repoName:z,openFilesRepoName:$.openFilesRepoName,warnings:X,projectRootSource:N.source,openFilesRootSource:O.source,trustStatus:S,authStatus:W}),evidence:L,cacheability:eG(I.cacheability),warnings:X}}async function xj(_,$){let D=_.runner??L1;if(!await S1("machines",D))return null;let I=["topology","--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return pG(oj(U.stdout),_,$)}async function W6(_,$){let D=[];if($.error)D.push(`open_machines_unavailable:${$.error}`);let I=_.runner??L1,U=_.includeTailscale===!1?{peers:new Map,selfKey:null}:await tb(I,D),E=ob(U.selfKey),N=[...new Set([E,...U.peers.keys()])].sort().map((A)=>pb({machineId:A,localMachineId:E,peer:U.peers.get(A)}));return oG({ok:!0,source:"local",generated_at:(_.now??new Date).toISOString(),local_machine_id:E,local_hostname:n4(),current_platform:nj(),machines:N,warnings:D,adapter:$},_)}async function _R(_={}){let $=J1(_);if($==="disabled")return await W6(_,j_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return await W6(_,E);let j=tj($,U);if(U?.discoverMachineTopology){let N=U.discoverMachineTopology({includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),A=pG(N,_,j);if(A)return A;if($==="sdk")return await W6(_,j_($,"invalid_topology_shape"));return await xj(_,D)??await W6(_,j_($,"invalid_topology_shape"))}if($==="sdk")return await W6(_,j_($,"missing_discoverMachineTopology"));return await xj(_,D)??await W6(_,j_($,"missing_discoverMachineTopology"))}return await xj(_,D)??await W6(_,j_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return await W6(_,j_($,L$(I)));return await xj(_,D)??await W6(_,j_($,L$(I)))}}async function uj(_,$){let D=_.runner??L1;if(!await S1("machines",D))return null;let I=["route","--machine",_.machineId,"--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return aG(oj(U.stdout),$)}function P6(_,$){return{target:_,route:null,targetKind:null,confidence:null,source:"raw",adapter:$,evidence:null,cacheability:null,warnings:[]}}async function XW(_){let $=J1(_);if($==="disabled")return P6(_.machineId,j_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return P6(_.machineId,E);let j=tj($,U);if(U?.resolveMachineRoute){let N=aG(U.resolveMachineRoute(_.machineId,{includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),j);if(N)return N;if($==="sdk")return P6(_.machineId,j_($,"invalid_route_shape"));return await uj(_,D)??P6(_.machineId,j_($,"invalid_route_shape"))}if($==="sdk")return P6(_.machineId,j_($,"missing_resolveMachineRoute"));return await uj(_,D)??P6(_.machineId,j_($,"missing_resolveMachineRoute"))}return await uj(_,D)??P6(_.machineId,j_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return{...P6(_.machineId,j_($,L$(I))),warnings:[L$(I)]};return await uj(_,D)??{...P6(_.machineId,j_($,L$(I))),warnings:[L$(I)]}}}async function yj(_,$){let D=_.runner??L1;if(!await S1("machines",D))return null;let I=_.projectId??"open-knowledge",U=_.repoName??"open-knowledge",E=["workspace","resolve","--machine",_.machineId,"--project",I,"--repo",U,"--open-files-repo",_.openFilesRepoName??"open-files","--json"];if(_.includeTailscale===!1)E.push("--no-tailscale");let j=await UD(D,pj(E));if(j.exitCode!==0)return null;return sG(oj(j.stdout),_,$)}function OZ(_){let $=_.peerWorkspace?.trim();if(!$)return null;return{ok:!0,source:"argument",adapter:j_(J1(_),"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 z6(_,$,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 sj(_){let $=OZ(_);if($)return $;let D=J1(_);if(D==="disabled")return z6(_,["adapter_disabled"],j_(D));let I=ij(D);try{if(D!=="cli"){let E=await(_.loadOpenMachines??aj)(),j=lj(D,E);if(j)return z6(_,[`unsupported_contract_version:${j.contract_version}`],j);let N=tj(D,E);if(E?.resolveMachineWorkspace){let A=sG(E.resolveMachineWorkspace({machineId:_.machineId,projectId:_.projectId??"open-knowledge",repoName:_.repoName??"open-knowledge",openFilesRepoName:_.openFilesRepoName??"open-files",includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),_,N);if(A)return A;if(D==="sdk")return z6(_,["invalid_workspace_shape"],j_(D,"invalid_workspace_shape"));return await yj(_,I)??z6(_,["invalid_workspace_shape"],j_(D,"invalid_workspace_shape"))}if(D==="sdk")return z6(_,["missing_resolveMachineWorkspace"],j_(D,"missing_resolveMachineWorkspace"));return await yj(_,I)??z6(_,["missing_resolveMachineWorkspace"],j_(D,"missing_resolveMachineWorkspace"))}return await yj(_,I)??z6(_,["machines_cli_unavailable"],j_(D,"machines_cli_unavailable"))}catch(U){if(D==="sdk")return z6(_,[L$(U)],j_(D,L$(U)));return await yj(_,I)??z6(_,[L$(U)],j_(D,L$(U)))}}function $R(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:s$,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 DR(_,$,D){let I=m_(_);if(W1(dj(I)))return null;let U=Array.isArray(I.checks)?I.checks:null,E=m(I.machine_id)??m(I.machineId);if(!U||!E)return null;let j=U.map((A)=>{let O=m_(A),L=m(O.status),J=m(O.kind),P=m(O.source);return G6({id:m(O.id)??"unknown",kind:J==="command"||J==="package"||J==="workspace"?J:"command",status:L==="ok"||L==="warn"||L==="fail"?L:"fail",target:m(O.target)??"unknown",expected:m(O.expected),actual:m(O.actual),detail:m(O.detail)??"",source:P==="local"||P==="ssh"||P==="open-machines"?P:"open-machines"})}),N={ok:j.filter((A)=>A.status==="ok").length,warn:j.filter((A)=>A.status==="warn").length,fail:j.filter((A)=>A.status==="fail").length};return $R({ok:N.fail===0,source:"open-machines",machine_id:E,generated_at:m(I.generated_at)??($.now??new Date).toISOString(),checks:j,summary:N,adapter:D},$)}function LZ(_){if(!_.runner)return L1;return async($)=>{let D=await _.runner?.("local",$);return{stdout:D?.stdout??"",stderr:D?.stderr??"",exitCode:D?.exitCode??1}}}function SZ(_){return[_.name,_.command,_.expectedVersion].filter(($)=>Boolean($)).join(":")}function JZ(_){let $=[_.expectedPackageName,_.expectedVersion].filter((I)=>Boolean(I)).join(":"),D=$?`${_.path}:${$}`:_.path;return _.label?`${_.label}=${D}`:D}async function hj(_,$){let D=LZ(_);if(!await S1("machines",D))return null;let I=["compatibility","--json","--machine",_.machineId??"local"];for(let E of _.commands??[])I.push("--command",E.expectedVersion?`${E.command}:${E.expectedVersion}`:E.command);for(let E of _.packages??[])I.push("--package",SZ(E));for(let E of _.workspaces??[])I.push("--workspace",JZ(E));let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return DR(oj(U.stdout),_,$)}async function X6(_,$){let D=_.machineId??n4(),I=_.runner??_Z,U=_.commands??[{command:"bun",required:!0},{command:"knowledge",required:!0}],E=_.packages??[{name:"@hasna/knowledge",command:"knowledge",required:!0}],j=_.workspaces??[],N=[];for(let O of U)N.push(...await IZ(D,O,I));for(let O of E)N.push(...await EZ(D,O,I));for(let O of j)N.push(...await jZ(D,O,I));if($.error)N.push(G6({id:"adapter:@hasna/machines",kind:"package",status:"warn",target:"@hasna/machines",expected:"optional",actual:$.error,detail:"Using knowledge local/ssh compatibility fallback",source:ej(D)?"local":"ssh"}));let A={ok:N.filter((O)=>O.status==="ok").length,warn:N.filter((O)=>O.status==="warn").length,fail:N.filter((O)=>O.status==="fail").length};return $R({ok:A.fail===0,source:"local",machine_id:D,generated_at:(_.now??new Date).toISOString(),checks:N,summary:A,adapter:$},_)}async function UR(_={}){let $=J1(_);if($==="disabled")return await X6(_,j_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return await X6(_,E);let j=tj($,U);if(U?.checkMachineCompatibility){let N=U.checkMachineCompatibility({machineId:_.machineId,commands:_.commands,packages:_.packages,workspaces:_.workspaces,runner:_.runner,now:_.now}),A=DR(N,_,j);if(A)return A;if($==="sdk")return await X6(_,j_($,"invalid_compatibility_shape"));return await hj(_,D)??await X6(_,j_($,"invalid_compatibility_shape"))}if($==="sdk")return await X6(_,j_($,"missing_checkMachineCompatibility"));return await hj(_,D)??await X6(_,j_($,"missing_checkMachineCompatibility"))}return await hj(_,D)??await X6(_,j_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return await X6(_,j_($,L$(I)));return await hj(_,D)??await X6(_,j_($,L$(I)))}}import{createHash as IR}from"crypto";function RW(_,$,D=24){return`${_}_${IR("sha256").update($).digest("hex").slice(0,D)}`}function ID(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function WZ(_){return ID(_).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")}function Z$(_,$){try{return JSON.parse(_)}catch{return $}}function l6(_){return{..._,record_kind:_.record_kind,source_kind:_.source_kind,status:_.status,source_refs:Z$(_.source_refs_json,[]),evidence_refs:Z$(_.evidence_refs_json,[]),requires_approval:_.requires_approval===1,checks:Z$(_.checks_json,ER()),metadata:Z$(_.metadata_json,{})}}function YW(_){return{..._,record_kind:_.record_kind,source_refs:Z$(_.source_refs_json,[]),evidence_refs:Z$(_.evidence_refs_json,[]),metadata:Z$(_.metadata_json,{})}}function ER(){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 PZ(_){let $=typeof _==="string"?{ref:_}:_;return{ref:ID($.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 jR(_){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 _N(_){return["deleted","stale","invalidated","reindex_required","expired","superseded"].includes((_??"").toLowerCase())}function GW(_){if(!_)return null;let $=Z$(_,{});if($.stale===!0)return"stale";return typeof $.status==="string"?$.status:null}function zZ(_){if(_.citation_id)return _.citation_id;return _.ref.match(/^(?:cite|citation):(.+)$/)?.[1]??null}function XZ(_){if(_.chunk_id)return _.chunk_id;return _.ref.match(/^chunk:(.+)$/)?.[1]??null}function GZ(_,$,D){let I=_N($.status)||Boolean($.expires_at&&$.expires_at<=D);if(!$.ref||!jR($.ref))return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"invalid_reference"};let U=zZ($),E=_.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,46 +971,46 @@ ${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 O=Boolean($.hash&&I.revision_hash&&$.hash!==I.revision_hash),P=Boolean($.revision&&I.revision&&$.revision!==I.revision),W=Boolean(I.revision_created_at&&I.latest_revision_at&&I.revision_created_at!tX(W)),j.citations.entries=U.map((W)=>ar(_,W,g)),j.citations.provided=U.length,j.citations.valid=j.citations.entries.filter((W)=>W.valid).length,j.citations.invalid=j.citations.entries.length-j.citations.valid,j.stale_refs=j.citations.entries.filter((W)=>W.stale).map((W)=>W.ref),j.duplicate_record_ids=_.query(`SELECT id FROM durable_knowledge_records + WHERE ch.id = ?`).get(j);if(!O)return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"chunk_not_found"};let L=Boolean($.hash&&O.hash&&$.hash!==O.hash||$.revision&&O.revision&&$.revision!==O.revision),J=I||_N(GW(O.metadata_json))||L;return{ref:$.ref,valid:!0,resolved_by:"chunk",stale:J,reason:L?"source_version_mismatch":J?"stale_chunk":null}}let N=_.query("SELECT metadata_json FROM sources WHERE uri = ? LIMIT 1").get($.ref);if(N){let O=I||_N(GW(N.metadata_json));return{ref:$.ref,valid:!0,resolved_by:"source",stale:O,reason:O?"stale_source":null}}let A=$.ref.match(/^knowledge:\/\/project\/runs\/([^/?#]+)/);if(A){if(!_.query("SELECT id FROM runs WHERE id = ?").get(decodeURIComponent(A[1])))return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"run_not_found"};return{ref:$.ref,valid:!0,resolved_by:"run",stale:I,reason:I?"expired_evidence":null}}return{ref:$.ref,valid:!0,resolved_by:"external_uri",stale:I,reason:I?"expired_evidence":null}}function i6(_,$){return _.query("SELECT * FROM knowledge_promotion_candidates WHERE id = ?").get($)??null}function QW(_,$,D){let I=Z$($.evidence_refs_json,[]),U=Z$($.source_refs_json,[]),E=Z$($.metadata_json,{}),j=ER();j.invalid_source_refs=U.filter((J)=>!jR(J)),j.citations.entries=I.map((J)=>GZ(_,J,D)),j.citations.provided=I.length,j.citations.valid=j.citations.entries.filter((J)=>J.valid).length,j.citations.invalid=j.citations.entries.length-j.citations.valid,j.stale_refs=j.citations.entries.filter((J)=>J.stale).map((J)=>J.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((W)=>W.id),j.duplicate_candidate_ids=_.query(`SELECT id FROM knowledge_promotion_candidates + ORDER BY created_at`).all($.record_kind,$.content_hash).map((J)=>J.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') - ORDER BY created_at`).all($.id,$.record_kind,$.content_hash).map((W)=>W.id),j.conflicting_record_ids=_.query(`SELECT id FROM durable_knowledge_records + ORDER BY created_at`).all($.id,$.record_kind,$.content_hash).map((J)=>J.id),j.conflicting_record_ids=_.query(`SELECT id FROM durable_knowledge_records WHERE record_kind = ? AND canonical_key = ? AND content_hash <> ? AND status IN ('active', 'conflicted') - ORDER BY created_at`).all($.record_kind,$.canonical_key,$.content_hash).map((W)=>W.id),j.conflicting_candidate_ids=_.query(`SELECT id FROM knowledge_promotion_candidates + ORDER BY created_at`).all($.record_kind,$.canonical_key,$.content_hash).map((J)=>J.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((W)=>W.id);let E=j.duplicate_record_ids[0]??j.duplicate_candidate_ids[0]??null,A=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 O=j.approval_reasons.length>0,P=E?"duplicate":A?"blocked":O?"needs_approval":"ready";return _.run(`UPDATE knowledge_promotion_candidates + ORDER BY created_at`).all($.id,$.record_kind,$.canonical_key,$.content_hash).map((J)=>J.id);let N=j.duplicate_record_ids[0]??j.duplicate_candidate_ids[0]??null,A=U.length===0||I.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(E.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 O=j.approval_reasons.length>0,L=N?"duplicate":A?"blocked":O?"needs_approval":"ready";return _.run(`UPDATE knowledge_promotion_candidates SET status = ?, requires_approval = ?, checks_json = ?, duplicate_of = ?, updated_at = ?, reviewed_at = ? - WHERE id = ?`,[P,O?1:0,JSON.stringify(j),E,g,g,$.id]),h6(n6(_,$.id))}function oX(_,$){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=w_(s4($.title)),I=w_(s4($.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(s4).filter(Boolean))).sort(),E=$.evidenceRefs.map(or).filter((J)=>J.ref.length>0).sort((J,R)=>J.ref.localeCompare(R.ref)),A=tr($.canonicalKey??D.text);if(!A)throw Error("Promotion canonical key is empty after normalization.");let O=`sha256:${iX("sha256").update(`${$.kind}\x00${s4(I.text).toLowerCase()}`).digest("hex")}`,P=EW("promote",[$.sourceKind,$.kind,A,O,...j].join("\x00")),W=EW("promotion",P),z=($.now??new Date).toISOString(),S={...$.metadata??{},requested_approval:$.requiresApproval===!0,confidence:$.confidence??null,valid_from:$.validFrom??z,valid_to:$.validTo??null,redactions:D.findings.length+I.findings.length};c(_);let L=v(_);try{let J=L.query("SELECT * FROM knowledge_promotion_candidates WHERE idempotency_key = ?").get(P);if(J)return{created:!1,candidate:h6(J)};L.run(`INSERT INTO knowledge_promotion_candidates ( + WHERE id = ?`,[L,O?1:0,JSON.stringify(j),N,D,D,$.id]),l6(i6(_,$.id))}function NR(_,$){let D=["lesson","decision","claim"],I=["memento","session","report"];if(!D.includes($.kind))throw Error("Promotion kind must be lesson, decision, or claim.");if(!I.includes($.sourceKind))throw Error("Promotion source kind must be memento, session, or report.");let U=y_(ID($.title)),E=y_(ID($.content));if(!U.text)throw Error("Promotion title is required.");if(!E.text)throw Error("Promotion content is required.");let j=Array.from(new Set($.sourceRefs.map(ID).filter(Boolean))).sort(),N=$.evidenceRefs.map(PZ).filter((W)=>W.ref.length>0).sort((W,X)=>W.ref.localeCompare(X.ref)),A=WZ($.canonicalKey??U.text);if(!A)throw Error("Promotion canonical key is empty after normalization.");let O=`sha256:${IR("sha256").update(`${$.kind}\x00${ID(E.text).toLowerCase()}`).digest("hex")}`,L=RW("promote",[$.sourceKind,$.kind,A,O,...j].join("\x00")),J=RW("promotion",L),P=($.now??new Date).toISOString(),z={...$.metadata??{},requested_approval:$.requiresApproval===!0,confidence:$.confidence??null,valid_from:$.validFrom??P,valid_to:$.validTo??null,redactions:U.findings.length+E.findings.length};h(_);let S=w(_);try{let W=S.query("SELECT * FROM knowledge_promotion_candidates WHERE idempotency_key = ?").get(L);if(W)return{created:!1,candidate:l6(W)};S.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, '{}', ?, ?, ?, ?)`,[W,$.kind,D.text,I.text,A,O,$.sourceKind,JSON.stringify(j),JSON.stringify(E),P,JSON.stringify(S),z,z]);let R=[...D.findings,...I.findings];if(R.length>0)W4(L,{source_uri:j[0]??`knowledge://promotion/${W}`,findings:R,metadata:{promotion_candidate_id:W},created_at:z});return z_(L,{event_type:"knowledge_promotion",action:"enqueue_promotion",target_uri:`knowledge://promotion/${W}`,decision:"info",metadata:{record_kind:$.kind,source_kind:$.sourceKind,source_refs:j},created_at:z}),{created:!0,candidate:AW(L,n6(L,W),z)}}finally{L.close()}}function pX(_,$){c(_);let g=v(_);try{let U=n6(g,$);return U?h6(U):null}finally{g.close()}}function eX(_,$={}){c(_);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, '{}', ?, ?, ?, ?)`,[J,$.kind,U.text,E.text,A,O,$.sourceKind,JSON.stringify(j),JSON.stringify(N),L,JSON.stringify(z),P,P]);let X=[...U.findings,...E.findings];if(X.length>0)R0(S,{source_uri:j[0]??`knowledge://promotion/${J}`,findings:X,metadata:{promotion_candidate_id:J},created_at:P});return G_(S,{event_type:"knowledge_promotion",action:"enqueue_promotion",target_uri:`knowledge://promotion/${J}`,decision:"info",metadata:{record_kind:$.kind,source_kind:$.sourceKind,source_refs:j},created_at:P}),{created:!0,candidate:QW(S,i6(S,J),P)}}finally{S.close()}}function gR(_,$){h(_);let D=w(_);try{let I=i6(D,$);return I?l6(I):null}finally{D.close()}}function AR(_,$={}){h(_);let D=Math.max(1,Math.min($.limit??50,200)),I=[],U=[];if($.status==="inbox"||!$.status)I.push("status IN ('ready', 'needs_approval', 'blocked')");else I.push("status = ?"),U.push($.status);if($.kind)I.push("record_kind = ?"),U.push($.kind);let E=w(_);try{return E.query(`SELECT * FROM knowledge_promotion_candidates + WHERE ${I.join(" AND ")} ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all(...D,g).map(h6)}finally{I.close()}}function aX(_,$,g=new Date){c(_);let U=v(_);try{let D=n6(U,$);if(!D)throw Error(`Promotion candidate not found: ${$}`);if(D.status==="promoted"||D.status==="rejected")return h6(D);return AW(U,D,g.toISOString())}finally{U.close()}}function sX(_,$,g={}){c(_);let U=v(_),D=(g.now??new Date).toISOString();try{let I=n6(U,$);if(!I)throw Error(`Promotion candidate not found: ${$}`);if(I.status==="promoted"&&I.promoted_record_id){let S=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:S?NW(S):null,approval_id:null,reason:"already_promoted"}}if(I.status==="rejected")throw Error(`Promotion candidate ${$} was rejected.`);let j=AW(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 E=j.requires_approval?g.approvedBy.trim():null,A=null;if(j.requires_approval)A=iU(U,{action:"promote_durable_knowledge",target_uri:`knowledge://promotion/${j.id}`,reason:j.checks.approval_reasons.join(", "),approved_by:E,metadata:{promotion_candidate_id:j.id,checks:j.checks},created_at:D}).id;let O=EW("durable",j.id),P={...j.metadata,promotion_candidate_id:j.id,source_kind:j.source_kind,checks:j.checks,approval_id:A,provenance:D$({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(l6)}finally{E.close()}}function OR(_,$,D=new Date){h(_);let I=w(_);try{let U=i6(I,$);if(!U)throw Error(`Promotion candidate not found: ${$}`);if(U.status==="promoted"||U.status==="rejected")return l6(U);return QW(I,U,D.toISOString())}finally{I.close()}}function LR(_,$,D={}){h(_);let I=w(_),U=(D.now??new Date).toISOString();try{let E=i6(I,$);if(!E)throw Error(`Promotion candidate not found: ${$}`);if(E.status==="promoted"&&E.promoted_record_id){let z=I.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(E.promoted_record_id);return{ok:!0,promoted:!1,requires_approval:E.requires_approval===1,candidate:l6(E),record:z?YW(z):null,approval_id:null,reason:"already_promoted"}}if(E.status==="rejected")throw Error(`Promotion candidate ${$} was rejected.`);let j=QW(I,E,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,A=null;if(j.requires_approval)A=s1(I,{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 O=RW("durable",j.id),L={...j.metadata,promotion_candidate_id:j.id,source_kind:j.source_kind,checks:j.checks,approval_id:A,provenance:N$({generated_from:`knowledge://promotion/${j.id}`,artifact_key:`durable/${j.record_kind}/${j.canonical_key}`,source_refs:j.source_refs,citation_required:!0})};I.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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,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,E,JSON.stringify(P),D,D]),U.run(`UPDATE knowledge_promotion_candidates + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,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]),I.run(`UPDATE knowledge_promotion_candidates SET status = 'promoted', approved_by = ?, promoted_record_id = ?, promoted_at = ?, updated_at = ? - WHERE id = ?`,[E,O,D,D,j.id]),z_(U,{event_type:"knowledge_promotion",action:"promote_durable_knowledge",target_uri:`knowledge://durable/${O}`,decision:"allow",metadata:{promotion_candidate_id:j.id,approval_id:A,source_refs:j.source_refs},created_at:D});let W=h6(n6(U,j.id)),z=U.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(O);return{ok:!0,promoted:!0,requires_approval:j.requires_approval,candidate:W,record:NW(z),approval_id:A,reason:null}}finally{U.close()}}function _5(_,$,g={}){c(_);let U=v(_),D=(g.now??new Date).toISOString();try{let I=n6(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,O,U,U,j.id]),G_(I,{event_type:"knowledge_promotion",action:"promote_durable_knowledge",target_uri:`knowledge://durable/${O}`,decision:"allow",metadata:{promotion_candidate_id:j.id,approval_id:A,source_refs:j.source_refs},created_at:U});let J=l6(i6(I,j.id)),P=I.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(O);return{ok:!0,promoted:!0,requires_approval:j.requires_approval,candidate:J,record:YW(P),approval_id:A,reason:null}}finally{I.close()}}function SR(_,$,D={}){h(_);let I=w(_),U=(D.now??new Date).toISOString();try{let E=i6(I,$);if(!E)throw Error(`Promotion candidate not found: ${$}`);if(E.status==="promoted")throw Error(`Promotion candidate ${$} is already promoted.`);return I.run(`UPDATE knowledge_promotion_candidates SET status = 'rejected', approved_by = ?, updated_at = ?, reviewed_at = ? - WHERE id = ?`,[g.rejectedBy?.trim()||null,D,D,$]),z_(U,{event_type:"knowledge_promotion",action:"reject_promotion",target_uri:`knowledge://promotion/${$}`,decision:"deny",metadata:{rejected_by:g.rejectedBy??null},created_at:D}),h6(n6(U,$))}finally{U.close()}}function $5(_,$={}){c(_);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,$]),G_(I,{event_type:"knowledge_promotion",action:"reject_promotion",target_uri:`knowledge://promotion/${$}`,decision:"deny",metadata:{rejected_by:D.rejectedBy??null},created_at:U}),l6(i6(I,$))}finally{I.close()}}function JR(_,$={}){h(_);let D=[],I=[];if($.kind)D.push("record_kind = ?"),I.push($.kind);if($.status)D.push("status = ?"),I.push($.status);let U=Math.max(1,Math.min($.limit??50,200)),E=w(_);try{return E.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(NW)}finally{I.close()}}import{createHash as sr,randomUUID as g5}from"crypto";function _b(_,$){return`${_}_${sr("sha256").update($).digest("hex").slice(0,20)}`}function $b(_){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 D5(_,$){let g=Eg($.modelRef,$.config),U=C_(g),D=v(_);try{return D.query(`SELECT c.id AS chunk_id, c.source_revision_id, s.uri AS source_uri + LIMIT ?`).all(...I,U).map(YW)}finally{E.close()}}import{createHash as RZ,randomUUID as WR}from"crypto";function YZ(_,$){return`${_}_${RZ("sha256").update($).digest("hex").slice(0,20)}`}function QZ(_){let $=w(_);try{let D=$.query("SELECT status, COUNT(*) AS n FROM reindex_queue GROUP BY status ORDER BY status").all();return Object.fromEntries(D.map((I)=>[I.status,I.n]))}finally{$.close()}}function PR(_,$){let D=L4($.modelRef,$.config),I=x_(D),U=w(_);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 U5(_){c(_.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=D5(_.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:$b(_.dbPath),stale_revisions:j}}finally{$.close()}}function OW(_){c(_.dbPath);let $=(_.now??new Date).toISOString(),g=_.reason??"missing_embedding",U=D5(_.dbPath,_),D=v(_.dbPath),I=0,j=0;try{D.transaction(()=>{for(let A of U){let O=_b("rq",`embedding\x00${A.chunk_id}\x00${g}`);if(D.query("SELECT id FROM reindex_queue WHERE kind = ? AND target_id = ? AND reason = ?").get("embedding",A.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 (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,"embedding",A.chunk_id,A.source_uri,g,"pending",JSON.stringify({source_revision_id:A.source_revision_id}),$,$]),I+=1}})()}finally{D.close()}return{enqueued:I,already_queued:j,reason:g}}function gb(_){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 Db(_,$,g){let U=Eg($.modelRef,$.config),D=C_(U),I=v(_);try{return I.run(`UPDATE reindex_queue + ORDER BY c.created_at ASC, c.ordinal ASC`).all(I.provider,I.model)}finally{U.close()}}function zR(_){h(_.dbPath);let $=w(_.dbPath);try{let D=$.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0,I=$.query("SELECT COUNT(*) AS n FROM chunks").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,E=PR(_.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:I,vector_entries:U,missing_embeddings:E,queued:QZ(_.dbPath),stale_revisions:j}}finally{$.close()}}function KW(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),D=_.reason??"missing_embedding",I=PR(_.dbPath,_),U=w(_.dbPath),E=0,j=0;try{U.transaction(()=>{for(let A of I){let O=YZ("rq",`embedding\x00${A.chunk_id}\x00${D}`);if(U.query("SELECT id FROM reindex_queue WHERE kind = ? AND target_id = ? AND reason = ?").get("embedding",A.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 (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,"embedding",A.chunk_id,A.source_uri,D,"pending",JSON.stringify({source_revision_id:A.source_revision_id}),$,$]),E+=1}})()}finally{U.close()}return{enqueued:E,already_queued:j,reason:D}}function KZ(_){let $=w(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,I=$.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:I}}finally{$.close()}}function TZ(_,$,D){let I=L4($.modelRef,$.config),U=x_(I),E=w(_);try{return E.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 I5(_){c(_.dbPath);let $=(_.now??new Date).toISOString(),g=`run_${g5()}`,U=_.full?gb(_.dbPath):{embeddings:0,vectorEntries:0},D=OW({..._,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",Eg(_.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}),E=Db(_.dbPath,_,$),A=v(_.dbPath);try{A.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({full:_.full===!0,queued:D,indexed:j,completed_queue_items:E}),$,g]),A.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${g5()}`,g,"info","embedding_refresh_completed",JSON.stringify({queued:D,indexed:j,completed_queue_items:E}),$])}finally{A.close()}return{run_id:g,full:_.full===!0,deleted_embeddings:U.embeddings,deleted_vector_entries:U.vectorEntries,queued:D,indexed:j,completed_queue_items:E}}import{createHash as N5}from"crypto";import{existsSync as A5,lstatSync as Ub,readdirSync as Ib,readFileSync as jb,statSync as Eb}from"fs";import{basename as _0,extname as Nb,join as Ab,relative as Ob,resolve as WW,sep as Pb}from"path";import{pathToFileURL as j5}from"url";var Sb=100,Lb=25,Wb=262144,Jb=5,zb=new Set([".md",".mdx",".txt",".json",".jsonc",".toml",".yaml",".yml"]),PW=new Set(["CODEWITH.md","AGENTS.md","CLAUDE.md","RULES.md","INSTRUCTIONS.md"]),Rb=new Set([".git","node_modules","dist","build",".codewith-worktrees",".connect",".secrets",".tmp","tmp","auth_profiles","profiles","preserved","backup","backups","cache","logs","runs"]),Gb=/(^|[._-])(secret|secrets|token|tokens|credential|credentials|password|passwd|private[_-]?key|id_rsa)([._-]|$)/i,tj=/(agent|rule|rules|instruction|instructions|global|operating|standard|knowledge)/i;function SW(_){return`sha256:${N5("sha256").update(_).digest("hex")}`}function Xb(_){return`sha256:${N5("sha256").update(_).digest("hex")}`}function NU(_){return _.split(Pb).join("/")}function LW(_,$){let g=Ob(_,$);return g?NU(g):_0($)}function d6(_){return zb.has(Nb(_).toLowerCase())}function E5(_){return NU(_).split("/").some(($)=>Gb.test($))}function O5(_,$=220){let g=_.normalize("NFKC").trim().replace(/\s+/g," ");if(g.length<=$)return g;return`${g.slice(0,Math.max(0,$-1)).trim()}...`}function P5(_){if(!_)return 0;return _.split(/\r\n|\n|\r/).length}function S5(_){return{source_ref:_.sourceRef,source_path:_.sourcePath,line_start:_.lineCount>0?1:0,line_end:_.lineCount,content_hash:_.contentHash}}function Yb(){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:(_)=>PW.has(_)}},{base:".codewith",spec:{family:"codewith",owner:"codewith",scope:"global",precedence:{rank:20,label:"codewith"},tags:["global-rules","codewith","agent-instructions"],include:(_)=>{let $=NU(_),g=_0($);if(PW.has(g)||$==="config.toml")return!0;if($.endsWith("/SKILL.md"))return!0;if(/^(rules|instructions|prompts|plans)\//.test($)&&d6($))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 $=NU(_);return $==="CLAUDE.md"||/^rules\//.test($)&&d6($)}}},{base:".codex",spec:{family:"codex",owner:"codex",scope:"global",precedence:{rank:40,label:"codex"},tags:["global-rules","codex","agent-instructions"],include:(_)=>{let $=NU(_),g=_0($);if(PW.has(g)||g==="config.toml")return!0;return/^(rules|instructions|prompts)\//.test($)&&d6($)}}},{base:".opencode",spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode"},tags:["global-rules","opencode","agent-instructions"],include:(_)=>tj.test(_)&&d6(_)}},{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:(_)=>tj.test(_)&&d6(_)}},{base:".hasna/plans",spec:{family:"plan",owner:"hasna",scope:"global",precedence:{rank:65,label:"selected-plans"},tags:["global-rules","plan"],include:(_)=>tj.test(_)&&d6(_)}},{base:"docs",spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:70,label:"rule-docs"},tags:["global-rules","rule-doc"],include:(_)=>tj.test(_)&&d6(_)}}]}function Qb(_,$){let g=new Map;for(let U of Yb()){let D=WW(_,U.base);if(!A5(D))continue;if(Eb(D).isFile()){let j=_0(D);if(U.spec.include(j))g.set(D,{...U.spec,absPath:D});continue}L5({basePath:D,depth:0,maxDepth:U.maxDepth??Jb,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 L5(_){let $=_.rootBasePath??_.basePath;if(_.depth>_.maxDepth)return;for(let g of Ib(_.basePath,{withFileTypes:!0})){let U=Ab(_.basePath,g.name),D=LW($,U);if(g.isSymbolicLink())continue;if(g.isDirectory()){if(Rb.has(g.name))continue;if(E5(D)){_.skipped.push({source_family:_.spec.family,source_path:U,reason:"sensitive_path"});continue}L5({..._,rootBasePath:$,basePath:U,depth:_.depth+1});continue}if(!g.isFile())continue;let I=LW(WW($),U);if(E5(I)){_.skipped.push({source_family:_.spec.family,source_path:U,reason:"sensitive_path"});continue}if(!_.spec.include(I))continue;if(!d6(U))continue;_.candidates.set(U,{..._.spec,absPath:U})}}function Tb(_){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 W5(_,$){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 Kb(_){let $=Ub(_.candidate.absPath),g=_.candidate.absPath,U=LW(_.root,g);if($.size>_.maxBytesPerFile){let S=j5(g).href;return{evidence:{source_family:_.candidate.family,title:_0(g),source_path:g,source_path_ref:U,source_ref:S,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=jb(g),I=D.toString("utf8"),j=w_(I,_.safetyPolicy),A=j.findings.some((S)=>S.severity==="high")?"refused":j.findings.length>0?"redacted":"clean",O=SW(j.text),P=j5(g).href,W=P5(j.text),z={source_family:_.candidate.family,title:_0(g),source_path:g,source_path_ref:U,source_ref:P,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:Xb(D),content_hash:O,discovered_at:_.discoveredAt,tags:[..._.candidate.tags],redaction_status:A,redactions:j.findings.map((S)=>({type:S.type,severity:S.severity})),citations:[S5({sourceRef:P,sourcePath:g,lineCount:W,contentHash:O})],bytes:D.byteLength,line_count:W,importable:A!=="refused",skipped_reason:A==="refused"?"secret_refused":null,preview:A==="refused"?null:O5(j.text)};return{evidence:z,text:j.text,manifest:z.importable?W5(z,j.text):null}}function qb(_){let $=w_(_.item.content,_.safetyPolicy),U=$.findings.some((O)=>O.severity==="high")?"refused":$.findings.length>0?"redacted":"clean",D=`open-files://source/legacy-json/path/${encodeURIComponent(_.item.id)}`,I=SW($.text),j=SW(_.item.content),E=P5($.text),A={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((O)=>({type:O.type,severity:O.severity})),citations:[S5({sourceRef:D,sourcePath:_.legacyStorePath,lineCount:E,contentHash:I})],bytes:Buffer.byteLength(_.item.content),line_count:E,importable:U!=="refused",skipped_reason:U==="refused"?"secret_refused":null,preview:U==="refused"?null:O5($.text),legacy_json_id:_.item.id};return{evidence:A,text:$.text,manifest:A.importable?W5(A,$.text):null}}function Bb(_){if(!_.legacyStorePath||!A5(_.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 C$(_.legacyStorePath,()=>{let g=s6(_.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 J5(_={}){let $=WW(_.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??Sb,1000)),E=Math.max(1,Math.min(_.limit??Lb,100)),A=Math.max(1024,Math.min(_.maxBytesPerFile??Wb,2097152)),O=[],W=Qb($,O).slice(0,j).map((F)=>Kb({root:$,candidate:{...F,owner:F.owner==="repository"?U:F.owner,scope:g},discoveredAt:I,maxBytesPerFile:A,safetyPolicy:_.safetyPolicy})),S=(_.includeLegacy===!1||!_.legacyStorePath?{exists:!1,items:[]}:s6(_.legacyStorePath)).items.filter((F)=>F.archived!==!0&&Tb(F)).slice(0,j),L=S.map((F)=>qb({item:F,legacyStorePath:_.legacyStorePath,discoveredAt:I,scope:g,safetyPolicy:_.safetyPolicy})),J=[...W,...L].slice(0,j),R=J.map((F)=>F.evidence),G=J.filter((F)=>F.manifest).map((F)=>F.manifest),B=R.filter((F)=>F.redaction_status==="refused").length,Q=R.slice(0,E),T=O.slice(0,E),K=null,V=0;if(!D){if(!_.dbPath)throw Error("rules provenance apply mode requires dbPath.");if(G.length>0)K=await Dg({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)V=Bb({legacyStorePath:_.legacyStorePath,records:R,now:I})}return{ok:B===0||G.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:E,records_seen:R.length,records_importable:G.length,records_refused:B,records_skipped:O.length,evidence_truncated:R.length>Q.length,skipped_truncated:O.length>T.length,evidence:Q,skipped:T,import_result:K,legacy:{store_path:_.legacyStorePath??null,candidates:S.length,promoted:L.filter((F)=>F.manifest).length,deprecated:V,data_loss:!1},message:D?`Discovered ${R.length} rule source(s); ${G.length} importable, ${B} refused`:`Imported ${K?.items_seen??0} rule source(s); ${V} legacy note(s) deprecated`}}import{createHash as Vb,randomUUID as z5}from"crypto";function Fb(_){return`sha256:${Vb("sha256").update(_).digest("hex")}`}function R5(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function G5(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function m6(_){return typeof _==="string"&&_.length>0?_:null}function rb(_){let $=G5(_),g=m6($.url)??m6($.uri)??m6($.sourceUrl);if(!g)return null;return{url:g,title:m6($.title)??m6($.name),snippet:m6($.snippet)??m6($.text)??m6($.description),provider_metadata:$}}function oj(_,$){if(Array.isArray(_)){for(let D of _)oj(D,$);return}let g=rb(_);if(g)$.set(g.url,g);let U=G5(_);for(let D of["sources","results","citations","annotations","output"])if(U[D])oj(U[D],$)}function bb(_,$){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 Mb(_){let{generateText:$}=await import("ai"),{createOpenAI:g}=await import("@ai-sdk/openai"),U=g6(_.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 Zb(_){let{generateText:$}=await import("ai"),{createAnthropic:g}=await import("@ai-sdk/anthropic"),U=g6(_.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 Hb(_,$,g){if(!_.fileResults||$.length===0)return 0;let U=$.map((I)=>{let j=[I.title,I.snippet,I.url].filter(Boolean).join(` -`),E=Fb(j);return{source_ref:I.url,name:I.title??I.url,url:I.url,mime:"text/plain",hash:E,revision:E,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 Dg({dbPath:_.dbPath,items:U,sourceLabel:`web-search:${_.query}`,readAction:"provider_web_search_file_results",safetyPolicy:_.safetyPolicy,now:new Date(g)})).sources_upserted}async function X5(_){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??[],E=G$(_.modelRef??(_.provider?`${_.provider}:${g6(_.config,_.provider).default_model}`:"default"),_.config),A=C_(E),O=_.provider??A.provider,P=A.provider===O?A.model:g6(_.config,O).default_model,W=`run_${z5()}`;if(!_.fake&&_.safetyPolicy)L4(_.safetyPolicy);if(!_.fake&&O!=="openai"&&O!=="anthropic")throw Error(`Provider ${O} does not expose native web search yet.`);if(!_.fake)Ig(O,_.config,g);c(_.dbPath);let z=v(_.dbPath);try{z.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[W,"provider-web-search",$,"running",O,P,JSON.stringify({domains:j,max_uses:I,fake:_.fake===!0}),U,U]),z_(z,{event_type:"source_read",action:_.fake?"fake_provider_web_search":"provider_web_search",target_uri:$,decision:"allow",metadata:{provider:O,model:P,domains:j,max_uses:I},created_at:U})}finally{z.close()}let S="",L=[],J={input_tokens:R5($),output_tokens:0,cost_usd:0},R=[];if(_.fake)L=bb($,D),S=`Fake web search answer for: ${$}`,J.output_tokens=R5(S);else{let B=O==="openai"?await Mb({query:$,model:P,config:_.config,env:g,maxUses:I,domains:j}):await Zb({query:$,model:P,config:_.config,env:g,maxUses:I,domains:j});S=B.text;let Q=new Map;oj(B.sources,Q),oj(B.toolResults,Q),L=Array.from(Q.values()).slice(0,D);let T=jg({provider:O,model:P,usage:B.usage,providerMetadata:B.providerMetadata});J={input_tokens:T.input_tokens,output_tokens:T.output_tokens,cost_usd:T.cost_usd}}let X=await Hb(_,L,U),G=v(_.dbPath);try{G.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({domains:j,max_uses:I,sources:L.length,filed_sources:X,fake:_.fake===!0}),U,W]),G.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${z5()}`,W,"info","provider_web_search_completed",JSON.stringify({sources:L.length,filed_sources:X}),U]),z4(G,{run_id:W,provider:O,model:P,input_tokens:J.input_tokens,output_tokens:J.output_tokens,cost_usd:J.cost_usd,metadata:{web_search:!0,sources:L.length,filed_sources:X},created_at:U})}finally{G.close()}if(L.length===0)R.push("no_web_sources_returned");return{run_id:W,query:$,provider:O,model:P,answer:S,sources:L,filed_sources:X,usage:J,warnings:R}}import{createHash as kb,randomUUID as Cb}from"crypto";function $0(_,$){return`${_}_${kb("sha256").update($).digest("hex").slice(0,20)}`}function JW(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"knowledge-page"}function vb(_){return{year:String(_.getUTCFullYear()),month:String(_.getUTCMonth()+1).padStart(2,"0"),day:String(_.getUTCDate()).padStart(2,"0")}}function wb(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function Y5(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function ub(_){return Array.from(new Set((_??"").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,12)}function Q5(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function fb(_,$){let g=Math.max(1,Math.min($.limit??10,50)),U=$.sourceRefs??[],D=ub($.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 E of U)j.push(E,`%${Q5(E)}%`)}if(D.length>0){I.push(`(${D.map(()=>"lower(c.text) LIKE ? ESCAPE '\\'").join(" OR ")})`);for(let E of D)j.push(`%${Q5(E)}%`)}return j.push(g),_.query(`SELECT + )`,["completed",D,"embedding","pending",U.provider,U.model]).changes}finally{E.close()}}async function XR(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),D=`run_${WR()}`,I=_.full?KZ(_.dbPath):{embeddings:0,vectorEntries:0},U=KW({..._,reason:_.full?"full_embedding_rebuild":"missing_embedding"}),E=w(_.dbPath);try{E.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",L4(_.modelRef,_.config),JSON.stringify({full:_.full===!0,queued:U}),$,$])}finally{E.close()}let j=await NI({dbPath:_.dbPath,config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,limit:_.limit,now:_.now}),N=TZ(_.dbPath,_,$),A=w(_.dbPath);try{A.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]),A.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${WR()}`,D,"info","embedding_refresh_completed",JSON.stringify({queued:U,indexed:j,completed_queue_items:N}),$])}finally{A.close()}return{run_id:D,full:_.full===!0,deleted_embeddings:I.embeddings,deleted_vector_entries:I.vectorEntries,queued:U,indexed:j,completed_queue_items:N}}import{createHash as YR}from"crypto";import{existsSync as QR,lstatSync as FZ,readdirSync as VZ,readFileSync as BZ,statSync as MZ}from"fs";import{basename as ED,extname as bZ,join as ZZ,relative as HZ,resolve as BW,sep as kZ}from"path";import{pathToFileURL as GR}from"url";var qZ=100,CZ=25,vZ=262144,wZ=5,rZ=new Set([".md",".mdx",".txt",".json",".jsonc",".toml",".yaml",".yml"]),TW=new Set(["CODEWITH.md","AGENTS.md","CLAUDE.md","RULES.md","INSTRUCTIONS.md"]),fZ=new Set([".git","node_modules","dist","build",".codewith-worktrees",".connect",".secrets",".tmp","tmp","auth_profiles","profiles","preserved","backup","backups","cache","logs","runs"]),xZ=/(^|[._-])(secret|secrets|token|tokens|credential|credentials|password|passwd|private[_-]?key|id_rsa)([._-]|$)/i,$N=/(agent|rule|rules|instruction|instructions|global|operating|standard|knowledge)/i;function FW(_){return`sha256:${YR("sha256").update(_).digest("hex")}`}function uZ(_){return`sha256:${YR("sha256").update(_).digest("hex")}`}function P1(_){return _.split(kZ).join("/")}function VW(_,$){let D=HZ(_,$);return D?P1(D):ED($)}function t6(_){return rZ.has(bZ(_).toLowerCase())}function RR(_){return P1(_).split("/").some(($)=>xZ.test($))}function KR(_,$=220){let D=_.normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function TR(_){if(!_)return 0;return _.split(/\r\n|\n|\r/).length}function FR(_){return{source_ref:_.sourceRef,source_path:_.sourcePath,line_start:_.lineCount>0?1:0,line_end:_.lineCount,content_hash:_.contentHash}}function yZ(){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:(_)=>TW.has(_)}},{base:".codewith",spec:{family:"codewith",owner:"codewith",scope:"global",precedence:{rank:20,label:"codewith"},tags:["global-rules","codewith","agent-instructions"],include:(_)=>{let $=P1(_),D=ED($);if(TW.has(D)||$==="config.toml")return!0;if($.endsWith("/SKILL.md"))return!0;if(/^(rules|instructions|prompts|plans)\//.test($)&&t6($))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 $=P1(_);return $==="CLAUDE.md"||/^rules\//.test($)&&t6($)}}},{base:".codex",spec:{family:"codex",owner:"codex",scope:"global",precedence:{rank:40,label:"codex"},tags:["global-rules","codex","agent-instructions"],include:(_)=>{let $=P1(_),D=ED($);if(TW.has(D)||D==="config.toml")return!0;return/^(rules|instructions|prompts)\//.test($)&&t6($)}}},{base:".opencode",spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode"},tags:["global-rules","opencode","agent-instructions"],include:(_)=>$N.test(_)&&t6(_)}},{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:(_)=>$N.test(_)&&t6(_)}},{base:".hasna/plans",spec:{family:"plan",owner:"hasna",scope:"global",precedence:{rank:65,label:"selected-plans"},tags:["global-rules","plan"],include:(_)=>$N.test(_)&&t6(_)}},{base:"docs",spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:70,label:"rule-docs"},tags:["global-rules","rule-doc"],include:(_)=>$N.test(_)&&t6(_)}}]}function hZ(_,$){let D=new Map;for(let I of yZ()){let U=BW(_,I.base);if(!QR(U))continue;if(MZ(U).isFile()){let j=ED(U);if(I.spec.include(j))D.set(U,{...I.spec,absPath:U});continue}VR({basePath:U,depth:0,maxDepth:I.maxDepth??wZ,spec:I.spec,candidates:D,skipped:$})}return[...D.values()].sort((I,U)=>{if(I.precedence.rank!==U.precedence.rank)return I.precedence.rank-U.precedence.rank;return I.absPath.localeCompare(U.absPath)})}function VR(_){let $=_.rootBasePath??_.basePath;if(_.depth>_.maxDepth)return;for(let D of VZ(_.basePath,{withFileTypes:!0})){let I=ZZ(_.basePath,D.name),U=VW($,I);if(D.isSymbolicLink())continue;if(D.isDirectory()){if(fZ.has(D.name))continue;if(RR(U)){_.skipped.push({source_family:_.spec.family,source_path:I,reason:"sensitive_path"});continue}VR({..._,rootBasePath:$,basePath:I,depth:_.depth+1});continue}if(!D.isFile())continue;let E=VW(BW($),I);if(RR(E)){_.skipped.push({source_family:_.spec.family,source_path:I,reason:"sensitive_path"});continue}if(!_.spec.include(E))continue;if(!t6(I))continue;_.candidates.set(I,{..._.spec,absPath:I})}}function cZ(_){if((_.tags??[]).map((I)=>I.toLowerCase()).some((I)=>["rule","rules","agent","instructions","global-rules","global-agent-rules"].includes(I)))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 BR(_,$){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 nZ(_){let $=FZ(_.candidate.absPath),D=_.candidate.absPath,I=VW(_.root,D);if($.size>_.maxBytesPerFile){let z=GR(D).href;return{evidence:{source_family:_.candidate.family,title:ED(D),source_path:D,source_path_ref:I,source_ref:z,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=BZ(D),E=U.toString("utf8"),j=y_(E,_.safetyPolicy),A=j.findings.some((z)=>z.severity==="high")?"refused":j.findings.length>0?"redacted":"clean",O=FW(j.text),L=GR(D).href,J=TR(j.text),P={source_family:_.candidate.family,title:ED(D),source_path:D,source_path_ref:I,source_ref:L,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:uZ(U),content_hash:O,discovered_at:_.discoveredAt,tags:[..._.candidate.tags],redaction_status:A,redactions:j.findings.map((z)=>({type:z.type,severity:z.severity})),citations:[FR({sourceRef:L,sourcePath:D,lineCount:J,contentHash:O})],bytes:U.byteLength,line_count:J,importable:A!=="refused",skipped_reason:A==="refused"?"secret_refused":null,preview:A==="refused"?null:KR(j.text)};return{evidence:P,text:j.text,manifest:P.importable?BR(P,j.text):null}}function dZ(_){let $=y_(_.item.content,_.safetyPolicy),I=$.findings.some((O)=>O.severity==="high")?"refused":$.findings.length>0?"redacted":"clean",U=`open-files://source/legacy-json/path/${encodeURIComponent(_.item.id)}`,E=FW($.text),j=FW(_.item.content),N=TR($.text),A={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:E,discovered_at:_.discoveredAt,tags:[...new Set(["global-rules","legacy-json",..._.item.tags??[]])],redaction_status:I,redactions:$.findings.map((O)=>({type:O.type,severity:O.severity})),citations:[FR({sourceRef:U,sourcePath:_.legacyStorePath,lineCount:N,contentHash:E})],bytes:Buffer.byteLength(_.item.content),line_count:N,importable:I!=="refused",skipped_reason:I==="refused"?"secret_refused":null,preview:I==="refused"?null:KR($.text),legacy_json_id:_.item.id};return{evidence:A,text:$.text,manifest:A.importable?BR(A,$.text):null}}function mZ(_){if(!_.legacyStorePath||!QR(_.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 y$(_.legacyStorePath,()=>{let D=U4(_.legacyStorePath);if(!D.exists)return 0;let I=0;for(let U of D.items){let E=$.get(U.id);if(!E)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:E.source_ref,source_hash:E.source_hash,content_hash:E.content_hash,data_loss:!1}},U.tags=[...new Set([...U.tags??[],"deprecated:knowledge-rules-import"])],U.updated_at=_.now,I+=1}if(I>0)_6(_.legacyStorePath,{items:D.items});return I})}async function MR(_={}){let $=BW(_.root??process.cwd()),D=_.scope??"global",I=_.owner??"global-agent-rules-standard",U=_.dryRun!==!1,E=(_.now??new Date).toISOString(),j=Math.max(1,Math.min(_.maxItems??qZ,1000)),N=Math.max(1,Math.min(_.limit??CZ,100)),A=Math.max(1024,Math.min(_.maxBytesPerFile??vZ,2097152)),O=[],J=hZ($,O).slice(0,j).map((B)=>nZ({root:$,candidate:{...B,owner:B.owner==="repository"?I:B.owner,scope:D},discoveredAt:E,maxBytesPerFile:A,safetyPolicy:_.safetyPolicy})),z=(_.includeLegacy===!1||!_.legacyStorePath?{exists:!1,items:[]}:U4(_.legacyStorePath)).items.filter((B)=>B.archived!==!0&&cZ(B)).slice(0,j),S=z.map((B)=>dZ({item:B,legacyStorePath:_.legacyStorePath,discoveredAt:E,scope:D,safetyPolicy:_.safetyPolicy})),W=[...J,...S].slice(0,j),X=W.map((B)=>B.evidence),R=W.filter((B)=>B.manifest).map((B)=>B.manifest),K=X.filter((B)=>B.redaction_status==="refused").length,Y=X.slice(0,N),T=O.slice(0,N),F=null,k=0;if(!U){if(!_.dbPath)throw Error("rules provenance apply mode requires dbPath.");if(R.length>0)F=await N4({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)k=mZ({legacyStorePath:_.legacyStorePath,records:X,now:E})}return{ok:K===0||R.length>0||U,workflow:"global-rules-provenance-import",dry_run:U,writes_performed:!U,root:$,scope:D,owner:I,discovered_at:E,max_items:j,evidence_limit:N,records_seen:X.length,records_importable:R.length,records_refused:K,records_skipped:O.length,evidence_truncated:X.length>Y.length,skipped_truncated:O.length>T.length,evidence:Y,skipped:T,import_result:F,legacy:{store_path:_.legacyStorePath??null,candidates:z.length,promoted:S.filter((B)=>B.manifest).length,deprecated:k,data_loss:!1},message:U?`Discovered ${X.length} rule source(s); ${R.length} importable, ${K} refused`:`Imported ${F?.items_seen??0} rule source(s); ${k} legacy note(s) deprecated`}}import{createHash as lZ,randomUUID as bR}from"crypto";function iZ(_){return`sha256:${lZ("sha256").update(_).digest("hex")}`}function ZR(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function HR(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function o6(_){return typeof _==="string"&&_.length>0?_:null}function tZ(_){let $=HR(_),D=o6($.url)??o6($.uri)??o6($.sourceUrl);if(!D)return null;return{url:D,title:o6($.title)??o6($.name),snippet:o6($.snippet)??o6($.text)??o6($.description),provider_metadata:$}}function DN(_,$){if(Array.isArray(_)){for(let U of _)DN(U,$);return}let D=tZ(_);if(D)$.set(D.url,D);let I=HR(_);for(let U of["sources","results","citations","annotations","output"])if(I[U])DN(I[U],$)}function oZ(_,$){return Array.from({length:Math.min($,3)},(D,I)=>({url:`https://example.com/knowledge-web-${I+1}`,title:`Fake web source ${I+1}`,snippet:`Deterministic web-search fixture for "${_}"`,provider_metadata:{fake:!0,rank:I+1}}))}async function pZ(_){let{generateText:$}=await import("ai"),{createOpenAI:D}=await import("@ai-sdk/openai"),I=g6(_.config,"openai"),U=D({apiKey:_.env[I.api_key_env],baseURL:I.base_url}),E=U.tools?.webSearch;if(!E)throw Error("OpenAI provider does not expose tools.webSearch.");return $({model:U(_.model),prompt:_.query,tools:{web_search:E({externalWebAccess:!0,searchContextSize:"medium",..._.domains.length>0?{allowedDomains:_.domains}:{}})},toolChoice:{type:"tool",toolName:"web_search"}})}async function eZ(_){let{generateText:$}=await import("ai"),{createAnthropic:D}=await import("@ai-sdk/anthropic"),I=g6(_.config,"anthropic"),U=D({apiKey:_.env[I.api_key_env],baseURL:I.base_url}),E=U.tools?.webSearch_20250305??U.tools?.webSearch;if(!E)throw Error("Anthropic provider does not expose a web search tool.");return $({model:U(_.model),prompt:_.query,tools:{web_search:E({maxUses:_.maxUses,..._.domains.length>0?{allowedDomains:_.domains}:{}})}})}async function aZ(_,$,D){if(!_.fileResults||$.length===0)return 0;let I=$.map((E)=>{let j=[E.title,E.snippet,E.url].filter(Boolean).join(` +`),N=iZ(j);return{source_ref:E.url,name:E.title??E.url,url:E.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:E.url,content_source:"provider_web_search",provider_metadata:E.provider_metadata},extracted_text:j}});return(await N4({dbPath:_.dbPath,items:I,sourceLabel:`web-search:${_.query}`,readAction:"provider_web_search_file_results",safetyPolicy:_.safetyPolicy,now:new Date(D)})).sources_upserted}async function kR(_){let $=_.query.trim();if(!$)throw Error("Web search query is required.");let D=_.env??process.env,I=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??5,20)),E=Math.max(1,Math.min(_.maxUses??3,10)),j=_.domains??[],N=T$(_.modelRef??(_.provider?`${_.provider}:${g6(_.config,_.provider).default_model}`:"default"),_.config),A=x_(N),O=_.provider??A.provider,L=A.provider===O?A.model:g6(_.config,O).default_model,J=`run_${bR()}`;if(!_.fake&&_.safetyPolicy)G0(_.safetyPolicy);if(!_.fake&&O!=="openai"&&O!=="anthropic")throw Error(`Provider ${O} does not expose native web search yet.`);if(!_.fake)A4(O,_.config,D);h(_.dbPath);let P=w(_.dbPath);try{P.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[J,"provider-web-search",$,"running",O,L,JSON.stringify({domains:j,max_uses:E,fake:_.fake===!0}),I,I]),G_(P,{event_type:"source_read",action:_.fake?"fake_provider_web_search":"provider_web_search",target_uri:$,decision:"allow",metadata:{provider:O,model:L,domains:j,max_uses:E},created_at:I})}finally{P.close()}let z="",S=[],W={input_tokens:ZR($),output_tokens:0,cost_usd:0},X=[];if(_.fake)S=oZ($,U),z=`Fake web search answer for: ${$}`,W.output_tokens=ZR(z);else{let K=O==="openai"?await pZ({query:$,model:L,config:_.config,env:D,maxUses:E,domains:j}):await eZ({query:$,model:L,config:_.config,env:D,maxUses:E,domains:j});z=K.text;let Y=new Map;DN(K.sources,Y),DN(K.toolResults,Y),S=Array.from(Y.values()).slice(0,U);let T=O4({provider:O,model:L,usage:K.usage,providerMetadata:K.providerMetadata});W={input_tokens:T.input_tokens,output_tokens:T.output_tokens,cost_usd:T.cost_usd}}let G=await aZ(_,S,I),R=w(_.dbPath);try{R.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({domains:j,max_uses:E,sources:S.length,filed_sources:G,fake:_.fake===!0}),I,J]),R.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${bR()}`,J,"info","provider_web_search_completed",JSON.stringify({sources:S.length,filed_sources:G}),I]),Q0(R,{run_id:J,provider:O,model:L,input_tokens:W.input_tokens,output_tokens:W.output_tokens,cost_usd:W.cost_usd,metadata:{web_search:!0,sources:S.length,filed_sources:G},created_at:I})}finally{R.close()}if(S.length===0)X.push("no_web_sources_returned");return{run_id:J,query:$,provider:O,model:L,answer:z,sources:S,filed_sources:G,usage:W,warnings:X}}import{createHash as sZ,randomUUID as _H}from"crypto";function jD(_,$){return`${_}_${sZ("sha256").update($).digest("hex").slice(0,20)}`}function MW(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"knowledge-page"}function $H(_){return{year:String(_.getUTCFullYear()),month:String(_.getUTCMonth()+1).padStart(2,"0"),day:String(_.getUTCDate()).padStart(2,"0")}}function DH(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function qR(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function UH(_){return Array.from(new Set((_??"").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,12)}function CR(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function IH(_,$){let D=Math.max(1,Math.min($.limit??10,50)),I=$.sourceRefs??[],U=UH($.query),E=["c.kind = 'source'"],j=[];if(I.length>0){E.push(`(${I.map(()=>"(s.uri = ? OR c.metadata_json LIKE ?)").join(" OR ")})`);for(let N of I)j.push(N,`%${CR(N)}%`)}if(U.length>0){E.push(`(${U.map(()=>"lower(c.text) LIKE ? ESCAPE '\\'").join(" OR ")})`);for(let N of U)j.push(`%${CR(N)}%`)}return j.push(D),_.query(`SELECT c.id AS chunk_id, c.text, c.start_offset, @@ -1039,12 +1039,12 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| FROM chunks c JOIN source_revisions sr ON sr.id = c.source_revision_id JOIN sources s ON s.id = sr.source_id - WHERE ${I.join(" AND ")} + WHERE ${E.join(" AND ")} ORDER BY c.created_at ASC, c.ordinal ASC - LIMIT ?`).all(...j)}function T5(_,$=420){let g=_.replace(/\s+/g," ").trim();return g.length<=$?g:`${g.slice(0,$-1).trim()}...`}function xb(_,$){if(_.title?.trim())return _.title.trim();if(_.query?.trim())return _.query.trim();return $[0]?.source_title??"Compiled Knowledge"}function yb(_,$,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 E=`S${j+1}`;return[`## ${I.source_title??`Source ${j+1}`}`,"",T5(I.text),"",`Citation: [${E}]`].join(` -`)});return[`# ${_}`,"",`Generated at: ${g}`,"","## Sources","",...U,"",...D,""].join(` -`)}async function pj(_,$){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,...S4($.body),metadata:{...$.metadata??{}}}}async function K5(_,$,g){let{year:U,month:D,day:I}=vb(g),j=`logs/${U}/${D}/${I}.jsonl`,E="";try{E=await _.getText(j)}catch{E=""}return pj(_,{key:j,body:`${E}${JSON.stringify($)} -`,content_type:"application/x-ndjson",metadata:{provenance:D$({generated_from:String($.event??"wiki_log"),artifact_key:j})}})}function zW(_,$){_.run(`INSERT INTO wiki_pages (id, path, title, artifact_uri, content_hash, status, metadata_json, created_at, updated_at) + LIMIT ?`).all(...j)}function vR(_,$=420){let D=_.replace(/\s+/g," ").trim();return D.length<=$?D:`${D.slice(0,$-1).trim()}...`}function EH(_,$){if(_.title?.trim())return _.title.trim();if(_.query?.trim())return _.query.trim();return $[0]?.source_title??"Compiled Knowledge"}function jH(_,$,D){let I=$.map((E,j)=>{return`- [${`S${j+1}`}] ${E.source_title??E.source_uri??"Source"} (${E.source_uri??"unknown"}, revision ${E.revision??"unknown"}, hash ${E.hash??"unknown"})`}),U=$.map((E,j)=>{let N=`S${j+1}`;return[`## ${E.source_title??`Source ${j+1}`}`,"",vR(E.text),"",`Citation: [${N}]`].join(` +`)});return[`# ${_}`,"",`Generated at: ${D}`,"","## Sources","",...I,"",...U,""].join(` +`)}async function UN(_,$){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,...X0($.body),metadata:{...$.metadata??{}}}}async function wR(_,$,D){let{year:I,month:U,day:E}=$H(D),j=`logs/${I}/${U}/${E}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return UN(_,{key:j,body:`${N}${JSON.stringify($)} +`,content_type:"application/x-ndjson",metadata:{provenance:N$({generated_from:String($.event??"wiki_log"),artifact_key:j})}})}function bW(_,$){_.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=$0("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,wb($.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 q5(_,$,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 (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[$0("cit",`${$}\x00${D.source_uri}\x00${D.chunk_id??Cb()}`),$,D.chunk_id,D.source_uri,D.quote,D.start_offset,D.end_offset,JSON.stringify(D.metadata),U]);return g.length}function B5(_,$){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 I=jD("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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,$.pageId,"wiki",0,$.body,DH($.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 (?, ?, ?, ?)",[I,$.body,$.title,$.artifactUri])}function rR(_,$,D,I){_.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 (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[jD("cit",`${$}\x00${U.source_uri}\x00${U.chunk_id??_H()}`),$,U.chunk_id,U.source_uri,U.quote,U.start_offset,U.end_offset,JSON.stringify(U.metadata),I]);return D.length}function fR(_,$){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`,[$0("idx",`wiki-topic\x00${$.path}`),"wiki_topic",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash}),$.now,$.now]),1}function cb(_){return _.toLowerCase().match(/[a-z0-9][a-z0-9-]{2,}/)?.[0]??"knowledge"}async function V5(_){let $=_.now??new Date,g=$.toISOString();c(_.dbPath);let U=v(_.dbPath),D;try{D=fb(U,_)}finally{U.close()}if(D.length===0)throw Error("No source chunks matched wiki compile input.");let I=xb(_,D),E=`wiki/generated/${JW(I)}.md`,A=yb(I,D,g),O=D.map((K)=>{let V=Y5(K.metadata_json);return typeof V.source_ref==="string"?V.source_ref:K.source_uri}).filter((K)=>Boolean(K)),P=D$({generated_from:"wiki_compile",artifact_key:E,source_refs:O}),W=await pj(_.store,{key:E,body:A,content_type:"text/markdown",metadata:{generated_from:"wiki_compile"}}),z=$0("wiki",E),S=D.map((K)=>({chunk_id:K.chunk_id,source_uri:K.source_uri??"unknown",quote:T5(K.text,240),start_offset:K.start_offset,end_offset:K.end_offset,metadata:{source_revision_id:K.source_revision_id,revision:K.revision,hash:K.hash,source_ref:Y5(K.metadata_json).source_ref??K.source_uri}})),L=cb(I),J=`wiki/concepts/${JW(L)}.md`,R=[`# ${L}`,"",`Related page: [[${E}]]`,""].join(` -`),X=D$({generated_from:"wiki_compile_concept",artifact_key:J,source_refs:O}),G=await pj(_.store,{key:J,body:R,content_type:"text/markdown",metadata:{generated_from:"wiki_compile_concept"}}),B=$0("wiki",J),Q=await K5(_.store,{ts:g,event:"wiki_compile_completed",page_key:E,source_refs:O,chunks_seen:D.length},$),T=v(_.dbPath);try{_6(T,[W,G,Q],$),zW(T,{pageId:z,path:E,title:I,artifactUri:W.uri,contentHash:W.hash??"",body:A,provenance:P,now:g}),zW(T,{pageId:B,path:J,title:L,artifactUri:G.uri,contentHash:G.hash??"",body:R,provenance:X,now:g}),T.run(`INSERT OR REPLACE INTO wiki_backlinks (from_page_id, to_page_id, label, created_at) - VALUES (?, ?, ?, ?)`,[z,B,"concept",g]);let K=q5(T,z,S,g),V=B5(T,{title:I,path:E,artifactUri:W.uri,contentHash:W.hash??"",now:g});return{page_id:z,path:E,artifact_uri:W.uri,content_hash:W.hash??"",chunks_seen:D.length,citations_written:K,concept_page_id:B,indexes_updated:V,log_key:Q.key,warnings:[]}}finally{T.close()}}async function F5(_){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/${JW(U)}.md`,j=_.context.citations,E=[`# ${U}`,"",_.answer,"","## Citations","",...j.map((L,J)=>`- [C${J+1}] ${L.source_ref??L.source_uri??L.artifact_path??L.artifact_uri??"unknown"} ${L.hash?`(hash ${L.hash})`:""}`),""].join(` -`),A=j.map((L)=>L.source_ref??L.source_uri).filter((L)=>Boolean(L)),O=D$({generated_from:"knowledge_answer",artifact_key:I,source_refs:A}),P=await pj(_.store,{key:I,body:E,content_type:"text/markdown",metadata:{generated_from:"knowledge_answer"}}),W=await K5(_.store,{ts:g,event:"wiki_answer_filed",page_key:I,prompt:_.prompt,citations:j.length},$),z=$0("wiki",I),S=v(_.dbPath);try{_6(S,[P,W],$),zW(S,{pageId:z,path:I,title:U,artifactUri:P.uri,contentHash:P.hash??"",body:E,provenance:O,now:g});let L=q5(S,z,j.map((J)=>({chunk_id:J.chunk_id,source_uri:J.source_uri??J.artifact_uri??"unknown",quote:J.quote,start_offset:J.start_offset,end_offset:J.end_offset,metadata:{source_ref:J.source_ref,artifact_path:J.artifact_path,revision:J.revision,hash:J.hash}})),g);return B5(S,{title:U,path:I,artifactUri:P.uri,contentHash:P.hash??"",now:g}),{approved:!0,durable_writes_performed:!0,page_id:z,path:I,artifact_uri:P.uri,citations_written:L,log_key:W.key,message:`Filed answer to ${I}`}}finally{S.close()}}function cg(_,$){_.push($)}function r5(_){c(_.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`,[jD("idx",`wiki-topic\x00${$.path}`),"wiki_topic",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash}),$.now,$.now]),1}function NH(_){return _.toLowerCase().match(/[a-z0-9][a-z0-9-]{2,}/)?.[0]??"knowledge"}async function xR(_){let $=_.now??new Date,D=$.toISOString();h(_.dbPath);let I=w(_.dbPath),U;try{U=IH(I,_)}finally{I.close()}if(U.length===0)throw Error("No source chunks matched wiki compile input.");let E=EH(_,U),N=`wiki/generated/${MW(E)}.md`,A=jH(E,U,D),O=U.map((F)=>{let k=qR(F.metadata_json);return typeof k.source_ref==="string"?k.source_ref:F.source_uri}).filter((F)=>Boolean(F)),L=N$({generated_from:"wiki_compile",artifact_key:N,source_refs:O}),J=await UN(_.store,{key:N,body:A,content_type:"text/markdown",metadata:{generated_from:"wiki_compile"}}),P=jD("wiki",N),z=U.map((F)=>({chunk_id:F.chunk_id,source_uri:F.source_uri??"unknown",quote:vR(F.text,240),start_offset:F.start_offset,end_offset:F.end_offset,metadata:{source_revision_id:F.source_revision_id,revision:F.revision,hash:F.hash,source_ref:qR(F.metadata_json).source_ref??F.source_uri}})),S=NH(E),W=`wiki/concepts/${MW(S)}.md`,X=[`# ${S}`,"",`Related page: [[${N}]]`,""].join(` +`),G=N$({generated_from:"wiki_compile_concept",artifact_key:W,source_refs:O}),R=await UN(_.store,{key:W,body:X,content_type:"text/markdown",metadata:{generated_from:"wiki_compile_concept"}}),K=jD("wiki",W),Y=await wR(_.store,{ts:D,event:"wiki_compile_completed",page_key:N,source_refs:O,chunks_seen:U.length},$),T=w(_.dbPath);try{j6(T,[J,R,Y],$),bW(T,{pageId:P,path:N,title:E,artifactUri:J.uri,contentHash:J.hash??"",body:A,provenance:L,now:D}),bW(T,{pageId:K,path:W,title:S,artifactUri:R.uri,contentHash:R.hash??"",body:X,provenance:G,now:D}),T.run(`INSERT OR REPLACE INTO wiki_backlinks (from_page_id, to_page_id, label, created_at) + VALUES (?, ?, ?, ?)`,[P,K,"concept",D]);let F=rR(T,P,z,D),k=fR(T,{title:E,path:N,artifactUri:J.uri,contentHash:J.hash??"",now:D});return{page_id:P,path:N,artifact_uri:J.uri,content_hash:J.hash??"",chunks_seen:U.length,citations_written:F,concept_page_id:K,indexes_updated:k,log_key:Y.key,warnings:[]}}finally{T.close()}}async function uR(_){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(),I=_.prompt.length>80?`${_.prompt.slice(0,77)}...`:_.prompt,E=`wiki/answers/${MW(I)}.md`,j=_.context.citations,N=[`# ${I}`,"",_.answer,"","## Citations","",...j.map((S,W)=>`- [C${W+1}] ${S.source_ref??S.source_uri??S.artifact_path??S.artifact_uri??"unknown"} ${S.hash?`(hash ${S.hash})`:""}`),""].join(` +`),A=j.map((S)=>S.source_ref??S.source_uri).filter((S)=>Boolean(S)),O=N$({generated_from:"knowledge_answer",artifact_key:E,source_refs:A}),L=await UN(_.store,{key:E,body:N,content_type:"text/markdown",metadata:{generated_from:"knowledge_answer"}}),J=await wR(_.store,{ts:D,event:"wiki_answer_filed",page_key:E,prompt:_.prompt,citations:j.length},$),P=jD("wiki",E),z=w(_.dbPath);try{j6(z,[L,J],$),bW(z,{pageId:P,path:E,title:I,artifactUri:L.uri,contentHash:L.hash??"",body:N,provenance:O,now:D});let S=rR(z,P,j.map((W)=>({chunk_id:W.chunk_id,source_uri:W.source_uri??W.artifact_uri??"unknown",quote:W.quote,start_offset:W.start_offset,end_offset:W.end_offset,metadata:{source_ref:W.source_ref,artifact_path:W.artifact_path,revision:W.revision,hash:W.hash}})),D);return fR(z,{title:I,path:E,artifactUri:L.uri,contentHash:L.hash??"",now:D}),{approved:!0,durable_writes_performed:!0,page_id:P,path:E,artifact_uri:L.uri,citations_written:S,log_key:J.key,message:`Filed answer to ${E}`}}finally{z.close()}}function m4(_,$){_.push($)}function yR(_){h(_.dbPath);let $=w(_.dbPath),D=[];try{let I=$.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,E=$.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 S of j)cg(g,{type:"missing_citation",severity:"error",page_id:S.id,path:S.path,message:"Generated wiki page has no citations."});let E=$.query(`SELECT wp.id AS page_id, wp.path, c.source_uri, c.chunk_id + HAVING COUNT(c.id) = 0`).all();for(let z of j)m4(D,{type:"missing_citation",severity:"error",page_id:z.id,path:z.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 S of E)cg(g,{type:"stale_citation",severity:"warn",page_id:S.page_id,path:S.path,source_uri:S.source_uri,chunk_id:S.chunk_id??void 0,message:"Page cites a stale or deleted source chunk."});let A=$.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 z of N)m4(D,{type:"stale_citation",severity:"warn",page_id:z.page_id,path:z.path,source_uri:z.source_uri,chunk_id:z.chunk_id??void 0,message:"Page cites a stale or deleted source chunk."});let A=$.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 S of A)cg(g,{type:"duplicate_page",severity:"warn",message:`Duplicate active wiki title: ${S.title} (${S.n} pages).`});let O=$.query(`SELECT wp.id, wp.path + HAVING COUNT(*) > 1`).all();for(let z of A)m4(D,{type:"duplicate_page",severity:"warn",message:`Duplicate active wiki title: ${z.title} (${z.n} pages).`});let O=$.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 S of O)cg(g,{type:"orphan_page",severity:"info",page_id:S.id,path:S.path,message:"Wiki page has no backlinks."});let P=$.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 z of O)m4(D,{type:"orphan_page",severity:"info",page_id:z.id,path:z.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 S of P)cg(g,{type:"unresolved_source_ref",severity:"error",page_id:S.page_id,path:S.path,source_uri:S.source_uri,message:"Citation source URI cannot be resolved to a known or allowed source ref."});let W=$.query("SELECT id, path FROM wiki_pages WHERE lower(metadata_json) LIKE '%contradiction%'").all();for(let S of W)cg(g,{type:"contradiction_marker",severity:"warn",page_id:S.id,path:S.path,message:"Page metadata contains a contradiction marker."});let z=$.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 z of L)m4(D,{type:"unresolved_source_ref",severity:"error",page_id:z.page_id,path:z.path,source_uri:z.source_uri,message:"Citation source URI cannot be resolved to a known or allowed source ref."});let J=$.query("SELECT id, path FROM wiki_pages WHERE lower(metadata_json) LIKE '%contradiction%'").all();for(let z of J)m4(D,{type:"contradiction_marker",severity:"warn",page_id:z.id,path:z.path,message:"Page metadata contains a contradiction marker."});let P=$.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 S of z)cg(g,{type:"new_article_candidate",severity:"info",chunk_id:S.chunk_id,source_uri:S.source_uri??void 0,message:"Source chunk is indexed but not cited by any wiki page yet."});return{ok:g.every((S)=>S.severity!=="error"),issue_count:g.length,issues:g,counts:{active_pages:U,citations:D,backlinks:I,new_article_candidates:z.length}}}finally{$.close()}}import{createHash as hb}from"crypto";function nb(_){let $=String(_.getUTCFullYear()),g=String(_.getUTCMonth()+1).padStart(2,"0"),U=String(_.getUTCDate()).padStart(2,"0");return{year:$,month:g,day:U}}function RW(_,$){return`${_}_${hb("sha256").update($).digest("hex").slice(0,20)}`}function db(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function mb(){return`# Knowledge Agent Schema v1 + LIMIT 25`).all();for(let z of P)m4(D,{type:"new_article_candidate",severity:"info",chunk_id:z.chunk_id,source_uri:z.source_uri??void 0,message:"Source chunk is indexed but not cited by any wiki page yet."});return{ok:D.every((z)=>z.severity!=="error"),issue_count:D.length,issues:D,counts:{active_pages:I,citations:U,backlinks:E,new_article_candidates:P.length}}}finally{$.close()}}import{createHash as gH}from"crypto";function AH(_){let $=String(_.getUTCFullYear()),D=String(_.getUTCMonth()+1).padStart(2,"0"),I=String(_.getUTCDate()).padStart(2,"0");return{year:$,month:D,day:I}}function ZW(_,$){return`${_}_${gH("sha256").update($).digest("hex").slice(0,20)}`}function OH(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function LH(){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 ib(){return`# Knowledge Index +`}function SH(){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 b5(){return`# Wiki +`}function hR(){return`# Wiki Generated durable knowledge pages live here. Pages should be concise, cited, and organized for both humans and agents. -`}async function M5(_,$=new Date){let{year:g,month:U,day:D}=nb($),I="schemas/v1.md",j="indexes/root.md",E="wiki/README.md",A=`logs/${g}/${U}/${D}.jsonl`,O={ts:$.toISOString(),event:"wiki_layout_initialized",schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md"},P=[{key:"schemas/v1.md",body:mb(),content_type:"text/markdown"},{key:"indexes/root.md",body:ib(),content_type:"text/markdown"},{key:"wiki/README.md",body:b5(),content_type:"text/markdown"},{key:A,body:`${JSON.stringify(O)} -`,content_type:"application/x-ndjson"}],W=await Promise.all(P.map(async(z)=>{let S=await _.put(z);return{key:S.key,uri:S.uri,kind:fz(z.key),content_type:z.content_type,modified_at:S.modified_at,metadata:{provenance:D$({generated_from:"wiki_layout_init",artifact_key:z.key,citation_required:z.key.startsWith("wiki/")||z.key.startsWith("indexes/")})},...S4(z.body)}}));return{schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md",log_key:A,artifacts:W,written:["schemas/v1.md","indexes/root.md","wiki/README.md",A]}}function GW(_){let $=_.metadata?.provenance;if($&&typeof $==="object"&&!Array.isArray($))return $;return D$({generated_from:"wiki_layout_init",artifact_key:_.key})}function lb(_,$,g,U,D,I){let j=GW(U),E=RW("chk",`${$}\x00${U.hash??U.uri}`),A=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($);for(let O of A)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[O.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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[E,$,"wiki",0,D,db(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 (?, ?, ?, ?)",[E,D,g,U.uri])}function Z5(_,$,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 cR(_,$=new Date){let{year:D,month:I,day:U}=AH($),E="schemas/v1.md",j="indexes/root.md",N="wiki/README.md",A=`logs/${D}/${I}/${U}.jsonl`,O={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:LH(),content_type:"text/markdown"},{key:"indexes/root.md",body:SH(),content_type:"text/markdown"},{key:"wiki/README.md",body:hR(),content_type:"text/markdown"},{key:A,body:`${JSON.stringify(O)} +`,content_type:"application/x-ndjson"}],J=await Promise.all(L.map(async(P)=>{let z=await _.put(P);return{key:z.key,uri:z.uri,kind:pz(P.key),content_type:P.content_type,modified_at:z.modified_at,metadata:{provenance:N$({generated_from:"wiki_layout_init",artifact_key:P.key,citation_required:P.key.startsWith("wiki/")||P.key.startsWith("indexes/")})},...X0(P.body)}}));return{schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md",log_key:A,artifacts:J,written:["schemas/v1.md","indexes/root.md","wiki/README.md",A]}}function HW(_){let $=_.metadata?.provenance;if($&&typeof $==="object"&&!Array.isArray($))return $;return N$({generated_from:"wiki_layout_init",artifact_key:_.key})}function JH(_,$,D,I,U,E){let j=HW(I),N=ZW("chk",`${$}\x00${I.hash??I.uri}`),A=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($);for(let O of A)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[O.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,OH(U),0,U.length,JSON.stringify({artifact_key:I.key,artifact_uri:I.uri,content_hash:I.hash??null,provenance:j}),E]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[N,U,D,I.uri])}function nR(_,$,D=new Date){let I=D.toISOString(),U=$.find((j)=>j.key.endsWith("indexes/root.md")),E=$.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`,[RW("idx","root:indexes/root.md"),"root","root",D.uri,"root",JSON.stringify({artifact_key:D.key,content_hash:D.hash??null,provenance:GW(D)}),U,U]);if(I){let j=RW("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`,[ZW("idx","root:indexes/root.md"),"root","root",U.uri,"root",JSON.stringify({artifact_key:U.key,content_hash:U.hash??null,provenance:HW(U)}),I,I]);if(E){let j=ZW("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,264 @@ 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:GW(I)}),U,U]),lb(_,j,"Wiki",I,b5(),U)}}import{createHash as H5}from"crypto";import{cpSync as BW,chmodSync as YW,existsSync as B$,lstatSync as u5,mkdirSync as ej,readdirSync as VW,readFileSync as AU,renameSync as tb,rmSync as sj,writeFileSync as k5}from"fs";import{dirname as QW,join as L6,relative as ob}from"path";function TW(_,$=_){if(!B$(_))return[];let g=u5(_);if(g.isFile())return[ob($,_)||"."];if(!g.isDirectory())return[];return VW(_).flatMap((U)=>TW(L6(_,U),$)).sort()}function C5(_,$){if($.length===0)return{sha256:null,bytes:0};let g=H5("sha256"),U=0;for(let D of $){let I=L6(_,D),j=AU(I),E=H5("sha256").update(j).digest("hex");U+=j.byteLength,g.update(D),g.update("\x00"),g.update(E),g.update("\x00")}return{sha256:g.digest("hex"),bytes:U}}function pb(_){if(!B$(_))return null;let $=JSON.parse(AU(_,"utf8"));return Array.isArray($.items)?$.items.length:null}function eb(_){if(!B$(_))return{exists:!1,integrity_check:null,table_counts:{}};let $=Kz(_);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 E=`"${j.name.replaceAll('"','""')}"`,A=$.query(`SELECT COUNT(*) AS n FROM ${E}`).get();I[j.name]=A?.n??0}return{exists:!0,integrity_check:U,table_counts:I}}finally{$.close()}}function h_(_,$={}){let g=TW(_.home),U=C5(_.home,g),D=TW(_.artifactsDir),I=C5(_.artifactsDir,D),j=B$(_.knowledgeDbPath);return{path:_.home,exists:B$(_.home),file_count:g.length,total_bytes:U.bytes,tree_sha256:U.sha256,json_items:pb(_.jsonStorePath),sqlite:$.includeSqlite===!1?{exists:j,integrity_check:null,table_counts:{}}:eb(_.knowledgeDbPath),artifacts:{exists:B$(_.artifactsDir),file_count:D.length,total_bytes:I.bytes,tree_sha256:I.sha256},files:g}}function ab(_,$){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(AU(_.configPath,"utf8")))===JSON.stringify(F0())}catch{return!1}}function KW(_,$){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 aj(_){return _.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z")}function qW(_){if(Array.isArray(_))return`[${_.map(qW).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).sort(([$],[g])=>$.localeCompare(g)).map(([$,g])=>`${JSON.stringify($)}:${qW(g)}`).join(",")}}`;return JSON.stringify(_)}function v5(_){return qW(_)}function XW(_){return typeof _.short_id==="string"&&_.short_id.trim().length>0?_.short_id:null}function hg(_){if(!B$(_))return{items:[]};let $=JSON.parse(AU(_,"utf8"));if(!$||!Array.isArray($.items))throw Error(`Invalid knowledge JSON store shape at ${_}`);return{items:$.items}}function w5(_,$){let g=new Map(_.items.map((P)=>[P.id,P])),U=new Map;for(let P of _.items){let W=U.get(P.id);if(W&&W.item.id!==P.id);U.set(P.id,{item:P,keyKind:"id",source:"current"});let z=XW(P);if(z&&!U.has(z))U.set(z,{item:P,keyKind:"short_id",source:"current"})}let D=[],I=0,j=0,E=0,A=[];for(let P of $.items){let W=g.get(P.id);if(W){if(v5(W)===v5(P))I+=1;else j+=1,D.push({type:"id_conflict",id:P.id,legacy_title:P.title,current_title:W.title});continue}let z=[{key:P.id,keyKind:"id"},...XW(P)?[{key:XW(P),keyKind:"short_id"}]:[]],S=!1;for(let{key:L,keyKind:J}of z){let R=U.get(L);if(!R)continue;if(J==="id"&&R.keyKind==="id")j+=1,D.push({type:"id_conflict",id:L,legacy_id:P.id,current_id:R.item.id,legacy_title:P.title,current_title:R.item.title});else E+=1,D.push({type:"short_id_conflict",id:L,legacy_id:P.id,current_id:R.item.id,legacy_title:P.title,current_title:R.item.title});S=!0}if(S)continue;A.push(P);for(let{key:L,keyKind:J}of z)U.set(L,{item:P,keyKind:J,source:"legacy"})}let O={items:[..._.items,...A]};return{stats:{current_items:_.items.length,legacy_items:$.items.length,duplicate_ids_identical:I,duplicate_ids_conflicting:j,short_id_conflicts:E,stranded_items:A.length,merged_items:D.length===0?A.length:0,expected_total_items:_.items.length+A.length,final_items:null},conflicts:D,mergedStore:O}}function sb(_,$){let g=[...new Set(_)].sort(),U=(D)=>{if(D>=g.length)return $();return C$(g[D],()=>U(D+1),{createParent:!0})};return U(0)}function f5(_){let $=_.now??new Date,g=_.approveWrite!==!0,U=h_(_.legacy),D=h_(_.current),I={legacy_exists:U.exists,legacy_store_exists:B$(_.legacy.jsonStorePath),current_store_exists:B$(_.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:hg(_.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:hg(_.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 E=hg(_.current.jsonStorePath),A=hg(_.legacy.jsonStorePath),O=w5(E,A);if(I.no_conflicts=O.conflicts.length===0,O.conflicts.length>0)j.push("merge_conflicts_detected");if(!I.approval_present)j.push("write_approval_required");if(g||!I.approval_present||O.conflicts.length>0)return{ok:O.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-${aj($)}`,legacy_before:U,current_before:D,backup_after:null,current_after:null,merge:O.stats,conflicts:O.conflicts,checks:I,warnings:j,message:O.conflicts.length===0?`Dry run: would merge ${O.stats.stranded_items} legacy item(s) into ${_.current.jsonStorePath}`:`Refusing legacy merge with ${O.conflicts.length} conflict(s)`};return sb([_.current.jsonStorePath,_.legacy.jsonStorePath],()=>{let P=hg(_.current.jsonStorePath),W=hg(_.legacy.jsonStorePath),z=w5(P,W);if(I.no_conflicts=z.conflicts.length===0,z.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:h_(_.legacy),current_before:h_(_.current),backup_after:null,current_after:null,merge:z.stats,conflicts:z.conflicts,checks:I,warnings:[...j,"merge_conflicts_detected_after_lock"],message:`Refusing legacy merge with ${z.conflicts.length} conflict(s)`};if(z.stats.stranded_items===0)return z.stats.final_items=P.items.length,I.final_count_matches_expected=P.items.length===z.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:h_(_.legacy),current_before:h_(_.current),backup_after:null,current_after:h_(_.current),merge:z.stats,conflicts:[],checks:I,warnings:j,message:`Legacy merge already up to date for ${_.current.jsonStorePath}`};let S=`${_.legacy.home}.merge-backup-${aj($)}`;ej(QW(S),{recursive:!0}),BW(_.legacy.home,S,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});let L=g$(S),J=h_(L);if(I.legacy_backup_written=KW(h_(_.legacy),J),!I.legacy_backup_written)throw Error(`Legacy knowledge merge backup verification failed: ${S}`);t$(_.current.jsonStorePath,z.mergedStore);let R=hg(_.current.jsonStorePath);z.stats.final_items=R.items.length,I.final_count_matches_expected=R.items.length===z.stats.expected_total_items;let X=h_(_.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:S,legacy_before:U,current_before:D,backup_after:J,current_after:X,merge:z.stats,conflicts:[],checks:I,warnings:j,message:G?`Merged ${z.stats.merged_items} legacy item(s) into ${_.current.jsonStorePath}`:`Merged legacy knowledge store, but verification failed for ${_.current.jsonStorePath}`}})}function _M(_){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,_)}function FW(_){return _ instanceof Error&&/\b(EBUSY|EPERM)\b/.test(_.message)}function $M(_){let $;for(let g=0;g<8;g+=1)try{sj(_,{recursive:!0,force:!1});return}catch(U){if($=U,!FW(U))throw U;_M(50*(g+1))}throw $}function x5(_){if(!B$(_))return;let $=u5(_);if(YW(_,$.isDirectory()?448:384),!$.isDirectory())return;for(let g of VW(_))x5(L6(_,g))}function gM(_){return _==="TOMBSTONE.md"||_==="migration.json"||_==="knowledge.db"||_==="knowledge.db-shm"||_==="knowledge.db-wal"||_==="knowledge.db-journal"}function DM(_){for(let $ of VW(_)){if($==="TOMBSTONE.md"||$==="migration.json")continue;try{sj(L6(_,$),{recursive:!0,force:!1})}catch(g){if(!FW(g)||!$.startsWith("knowledge.db"))throw g}}}function UM(_,$){try{tb(_,$);return}catch(g){BW(_,$,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});try{$M(_)}catch(U){if(FW(U)){DM(_);return}throw sj($,{recursive:!0,force:!0}),U}if(g instanceof Error&&g.message.includes("EXDEV"))return}}function IM(_,$,g){if(!$.exists)return!1;if(!$.files.includes("TOMBSTONE.md")||!$.files.includes("migration.json"))return!1;if($.files.some((U)=>!gM(U)))return!1;try{let U=JSON.parse(AU(L6(_.home,"migration.json"),"utf8"));return U.new_path===g&&typeof U.backup_path==="string"}catch{return!1}}function y5(_){let $=_.now??new Date,g=_.approveWrite!==!0,U=h_(_.current),D=ab(_.current,U),I=_.approveWrite===!0&&Boolean(_.approvedBy)&&(!U.exists||D),j=h_(_.legacy,{includeSqlite:!I}),E={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},A=[];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:E,warnings:A,message:`No legacy knowledge workspace found at ${_.legacy.home}`};if(E.legacy_is_tombstone=IM(_.legacy,j,_.current.home),E.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:{...E,tombstone_written:!0},warnings:A,message:`Legacy knowledge workspace already migrated to ${_.current.home}`};if(!E.current_absent_or_default_scaffold)A.push("current_workspace_contains_data");if(!E.approval_present)A.push("write_approval_required");if(g||!E.current_absent_or_default_scaffold||!E.approval_present)return{ok:E.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-${aj($)}`,tombstone_path:L6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:U,backup_after:null,current_after:null,checks:E,warnings:A,message:E.current_absent_or_default_scaffold?`Dry run: would migrate ${_.legacy.home} to ${_.current.home}`:`Cannot migrate while ${_.current.home} contains data`};let O=`${_.legacy.home}.backup-${aj($)}`;ej(QW(_.current.home),{recursive:!0}),ej(QW(O),{recursive:!0}),BW(_.legacy.home,O,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0}),x5(O);let P=g$(O),W=h_(P,{includeSqlite:!1});if(E.backup_matches_legacy=KW(j,W),!E.backup_matches_legacy)throw Error(`Legacy knowledge backup verification failed: ${O}`);if(U.exists&&D)sj(_.current.home,{recursive:!0,force:!0});UM(_.legacy.home,_.current.home);let z=h_(_.current,{includeSqlite:!1});E.migrated_matches_backup=KW(W,z);let S=h_(P),L=h_(_.current),J={...S,path:_.legacy.home};ej(_.legacy.home,{recursive:!0});let R=L6(_.legacy.home,"TOMBSTONE.md");k5(R,["# Migrated OpenKnowledge Workspace","",`Migrated at: ${$.toISOString()}`,`Approved by: ${_.approvedBy}`,`New path: ${_.current.home}`,`Backup path: ${O}`,"","This directory is a diagnostic tombstone only. OpenKnowledge reads and writes the canonical .hasna/knowledge workspace.",""].join(` -`),{mode:384}),YW(R,384);let X=L6(_.legacy.home,"migration.json");k5(X,`${JSON.stringify({migrated_at:$.toISOString(),approved_by:_.approvedBy,new_path:_.current.home,backup_path:O,legacy_before:J,backup_after:S,current_after:L},null,2)} -`,{mode:384}),YW(X,384),E.tombstone_written=B$(R);let G=E.backup_matches_legacy&&E.migrated_matches_backup&&E.tombstone_written;return{ok:G,dry_run:!1,approval_required:!1,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:O,tombstone_path:R,legacy_before:J,current_before:U,backup_after:S,current_after:L,checks:E,warnings:A,message:G?`Migrated legacy knowledge workspace to ${_.current.home}`:`Migrated legacy knowledge workspace, but verification failed for ${_.current.home}`}}function AM(_){let $=$9(_);if(J_(c5($,"knowledge.db"))||J_(c5($,"config.json")))return U4($);return U4(g$(FE($)).home)}function rW(_){return`${NM()}:${PU("sha256").update(_.home).digest("hex").slice(0,12)}`}function ZW(_){return`'${_.replace(/'/g,"'\\''")}'`}function OM(_){return["knowledge",..._].map(ZW).join(" ")}function h5(_,$){return`cd ${ZW(_)} && knowledge ${$.map(ZW).join(" ")}`}function g9(_){return!_||_==="local"||_==="localhost"}function OU(_,$){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 bW(_){return{source:_.source,adapter:_.adapter,target:_.target,route:_.route,target_kind:_.targetKind,confidence:_.confidence,evidence:_.evidence,cacheability:_.cacheability}}function PM(_){try{let $=JSON.parse(_);return Array.isArray($)?$.filter((g)=>typeof g==="string"):[]}catch{return[]}}function SU(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function b_(_){return typeof _==="string"&&_.length>0?_:null}function SM(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function _E(_){return typeof _==="boolean"?_:null}function LM(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function D9(_,$,g){let U=SU(_),D=b_(U.observed_at)??b_($[`${g}_observed_at`]),I=b_(U.source_authority)??b_($[`${g}_source_authority`]);if(!D||!I)return null;return{observed_at:D,verified_at:b_(U.verified_at),expires_at:b_(U.expires_at)??b_($[`${g}_expires_at`]),ttl_ms:SM(U.ttl_ms),source_authority:I,confidence:b_(U.confidence)??(g==="route"?b_($.route_confidence):null),cacheable:_E(U.cacheable)??_E($[`${g}_cacheable`])??!1,stale:_E(U.stale)??_E($[`${g}_stale`])??!1,reasons:LM(U.reasons)}}function WM(_,$){return _.machine_id===$||_.hostname===$||_.ssh_target===$||_.tailscale_dns===$||PM(_.tailscale_ips_json).includes($)}function n5(_,$){return cN(_).find((g)=>WM(g,$))??null}function U9(_){return SU(ng(_.metadata_json).resolver_evidence)}function LU(_){return SU(ng(_.capabilities_json).resolver)}function I9(_){let $=LU(_),g=b_($.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 JM(_){let $=LU(_),g=b_($.route_target_kind);if(g==="local"||g==="lan"||g==="tailscale"||g==="ssh"||g==="unknown")return g;return I9(_)}function zM(_){return b_(LU(_).route_confidence)??"medium"}function d5(_,$,g){let U=U9(_),D=SU(U.route),I=LU(_);return{target:_.ssh_target??_.tailscale_dns??_.hostname??_.machine_id,route:I9(_),targetKind:JM(_),confidence:zM(_),source:"registry",adapter:g.adapter,evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,route:D},cacheability:D9(D.cacheability,I,"route")??g.cacheability,warnings:[...new Set([...g.warnings,"registry_route_fallback"])]}}function m5(_,$,g){if(!_.workspace_home)return null;let U=U9(_),D=SU(U.workspace),I=LU(_);return{ok:!0,source:"registry",adapter:g.adapter,requested_machine_id:$,machine_id:_.machine_id,project_id:b_(D.project_id)??g.project_id,repo_name:b_(D.repo_name)??g.repo_name,project_root:_.workspace_home,project_root_source:b_(I.project_root_source)??"registry",workspace_root:b_(D.workspace_root),workspace_root_source:b_(I.workspace_root_source)??"registry",open_files_root:b_(D.open_files_root),open_files_root_source:b_(I.open_files_root_source)??"registry",trust_status:b_(I.trust_status)??"unknown",auth_status:b_(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:D9(D.cacheability,I,"workspace")??g.cacheability,warnings:[...new Set([...g.warnings,"registry_workspace_fallback"])]}}function i5(_){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 $E(_){return{id:_.id,reason:_.reason,command:["knowledge",..._.args],shell_command:OM(_.args)}}function gE(_,$){let g=v(_);try{return Number(g.query($).get()?.count??0)}finally{g.close()}}function RM(_,$){let g=gE(_,"SELECT COUNT(*) AS count FROM sources WHERE uri LIKE 'open-files://%'"),U=gE(_,"SELECT COUNT(*) AS count FROM sources WHERE metadata_json LIKE '%open-files://%' OR metadata_json LIKE '%source_ref%'"),D=gE(_,"SELECT COUNT(*) AS count FROM source_revisions WHERE extracted_text_uri IS NOT NULL"),I=gE(_,["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 GM=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body","body_bytes"]);function HW(_,$=0){if($>8)return!1;if(!_||typeof _!=="object")return!1;if(Array.isArray(_))return _.some((g)=>HW(g,$+1));for(let[g,U]of Object.entries(_)){if(GM.has(g.toLowerCase()))return!0;if(HW(U,$+1))return!0}return!1}function ng(_){try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function l5(_,$=20,g=200){if(!Number.isFinite(_)||_<=0)return $;return Math.min(Math.floor(_),g)}function XM(_,$=220){let g=_??"";return g.length>$?`${g.slice(0,$)}...`:g}function W$(_,$=["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]=ng(I),delete U[D]}}return U})}function UE(_){if(typeof _!=="string")return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function kW(_){if(typeof _!=="string")return{};return ng(_)}function YM(_){let $={..._};return $.source_refs=UE($.source_refs_json),$.evidence_refs=UE($.evidence_refs_json),$.requires_approval=$.requires_approval===1||$.requires_approval===!0,$.checks=kW($.checks_json),$.metadata=kW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.checks_json,delete $.metadata_json,$}function QM(_){let $={..._};return $.source_refs=UE($.source_refs_json),$.evidence_refs=UE($.evidence_refs_json),$.metadata=kW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.metadata_json,$}function t_(_,$,g=[]){return _.query($).all(...g)}function TM(_){if(!J_(_))return{exists:!1,read_error:null,items:[]};try{let $=JSON.parse(EM(_,"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 t5(_){return{id:_.id,short_id:_.short_id??null,title:_.title,content_preview:XM(_.content),url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:_.archived===!0,created_at:_.created_at,updated_at:_.updated_at}}function o5(){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 j9(_,$,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 KM(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function qM(_,$,g=!1){let U=j9(_,$,g);return{query:_,normalized_query:KM(_),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 MW(_,$,g){let U=g??$.jsonStorePath;if(J_(U))return U;if(_==="global"){let D=V0();if(J_(D))return D}return U}function BM(_){let $=JSON.stringify(_);return Math.max(1,Math.ceil($.length/4))}function CW(_,$){let g=(_??"").normalize("NFKC").trim().replace(/\s+/g," ");if(g.length<=$)return g;return`${g.slice(0,Math.max(0,$-1)).trim()}...`}function p5(_,$,g){let U=w_(CW(_,g),$);return{text:U.text,redactions:U.findings.length}}function e5(_,$,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," "),E=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),A=Math.max(500,Math.min(_.maxTokens??6000,1e5)),O=0,P=$.citations.slice(0,Math.max(E*2,E)).map((G,B)=>{let Q=p5(G.quote,g,B<3?220:140);O+=Q.redactions;let T=G.source_ref??G.source_uri??G.artifact_path??G.artifact_uri??G.id;return{id:`cite_${PU("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}}),W=new Map($.citations.map((G,B)=>[G.id,P[B]])),z=$.excerpts.slice(0,Math.max(E*2,E)).map((G)=>{let B=$.results.find((K)=>K.id===G.result_id),Q=G.citation_id?W.get(G.citation_id):void 0,T=p5(G.text,g,520);return O+=T.redactions,{id:`ev_${PU("sha256").update(`${G.kind}\x00${G.result_id}\x00${G.citation_id??""}`).digest("hex").slice(0,14)}`,kind:G.kind,title:CW(B?.title??Q?.ref??G.kind,100),text_preview:T.text,score:Number(G.score.toFixed(6)),citation_ids:Q?[Q.id]:[],provenance:{source:D,record_ref:`${G.kind}:${G.result_id}`,created_at:$.created_at,updated_at:null,metadata_keys:[]}}}).sort((G,B)=>B.score-G.score||G.id.localeCompare(B.id)).slice(0,E),S=new Set(z.flatMap((G)=>G.citation_ids)),L=P.filter((G)=>S.has(G.id)),J=Array.from(new Set($.warnings)),R=`ctx_${PU("sha256").update([D,I,j,J.join(","),z.map((G)=>G.id).join(",")].join("\x00")).digest("hex").slice(0,20)}`,X={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:R,budgets:{max_tokens:A,estimated_tokens:0,max_items:E,items_included:z.length,items_available:$.excerpts.length,items_truncated:Math.max(0,$.excerpts.length-z.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:O,reminders:["This pack is read-only and performs no durable writes.","Legacy JSON note evidence is bounded and redacted before inclusion."]},citations:L,evidence:z,duplicate_candidates:[],outline:{title:j?`Knowledge context: ${CW(j,80)}`:"Knowledge context",bullets:z.length>0?z.slice(0,5).map((G)=>`${G.id}: ${G.title}`):["No matching bounded evidence was found."],evidence_ids:z.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:J,message:`${z.length} bounded evidence item(s), estimated under ${A} token(s)`};return X.budgets.estimated_tokens=BM(X),X.budgets.token_budget_exceeded=X.budgets.estimated_tokens>A,X.message=`${X.evidence.length} bounded evidence item(s), estimated ${X.budgets.estimated_tokens}/${A} token(s)`,X}function VM(){return{schema_version:0,chunks:0,vector_entries:0,missing_embeddings:0,queued:{},stale_revisions:0}}function FM(){return{total_embeddings:0,total_vector_entries:0,indexes:[]}}function rM(_){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 a5(_){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)),E=`ctx_${PU("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:E,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 vW(_){let $=_.artifact_store.s3?.prefix?.replace(/^\/+|\/+$/g,"");return $?`${$}/`:null}function bM(_,$){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",E.uri,E.hash??null,"active",JSON.stringify({artifact_key:E.key,provenance:HW(E)}),I,I]),JH(_,j,"Wiki",E,hR(),I)}}import{createHash as dR}from"crypto";import{cpSync as fW,chmodSync as qW,existsSync as H$,lstatSync as oR,mkdirSync as IN,readdirSync as xW,readFileSync as z1,renameSync as WH,rmSync as jN,writeFileSync as mR}from"fs";import{dirname as CW,join as R6,relative as PH}from"path";function vW(_,$=_){if(!H$(_))return[];let D=oR(_);if(D.isFile())return[PH($,_)||"."];if(!D.isDirectory())return[];return xW(_).flatMap((I)=>vW(R6(_,I),$)).sort()}function lR(_,$){if($.length===0)return{sha256:null,bytes:0};let D=dR("sha256"),I=0;for(let U of $){let E=R6(_,U),j=z1(E),N=dR("sha256").update(j).digest("hex");I+=j.byteLength,D.update(U),D.update("\x00"),D.update(N),D.update("\x00")}return{sha256:D.digest("hex"),bytes:I}}function zH(_){if(!H$(_))return null;let $=JSON.parse(z1(_,"utf8"));return Array.isArray($.items)?$.items.length:null}function XH(_){if(!H$(_))return{exists:!1,integrity_check:null,table_counts:{}};let $=rz(_);try{let D=$.query("PRAGMA integrity_check").get(),I=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(),E={};for(let j of U){let N=`"${j.name.replaceAll('"','""')}"`,A=$.query(`SELECT COUNT(*) AS n FROM ${N}`).get();E[j.name]=A?.n??0}return{exists:!0,integrity_check:I,table_counts:E}}finally{$.close()}}function l_(_,$={}){let D=vW(_.home),I=lR(_.home,D),U=vW(_.artifactsDir),E=lR(_.artifactsDir,U),j=H$(_.knowledgeDbPath);return{path:_.home,exists:H$(_.home),file_count:D.length,total_bytes:I.bytes,tree_sha256:I.sha256,json_items:zH(_.jsonStorePath),sqlite:$.includeSqlite===!1?{exists:j,integrity_check:null,table_counts:{}}:XH(_.knowledgeDbPath),artifacts:{exists:H$(_.artifactsDir),file_count:U.length,total_bytes:E.bytes,tree_sha256:E.sha256},files:D}}function GH(_,$){if(!$.exists)return!0;if($.files.filter((I)=>I!=="config.json").length>0)return!1;if(!$.files.includes("config.json"))return!0;try{return JSON.stringify(JSON.parse(z1(_.configPath,"utf8")))===JSON.stringify(vD())}catch{return!1}}function wW(_,$){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 EN(_){return _.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z")}function rW(_){if(Array.isArray(_))return`[${_.map(rW).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${rW(D)}`).join(",")}}`;return JSON.stringify(_)}function iR(_){return rW(_)}function kW(_){return typeof _.short_id==="string"&&_.short_id.trim().length>0?_.short_id:null}function l4(_){if(!H$(_))return{items:[]};let $=JSON.parse(z1(_,"utf8"));if(!$||!Array.isArray($.items))throw Error(`Invalid knowledge JSON store shape at ${_}`);return{items:$.items}}function tR(_,$){let D=new Map(_.items.map((L)=>[L.id,L])),I=new Map;for(let L of _.items){let J=I.get(L.id);if(J&&J.item.id!==L.id);I.set(L.id,{item:L,keyKind:"id",source:"current"});let P=kW(L);if(P&&!I.has(P))I.set(P,{item:L,keyKind:"short_id",source:"current"})}let U=[],E=0,j=0,N=0,A=[];for(let L of $.items){let J=D.get(L.id);if(J){if(iR(J)===iR(L))E+=1;else j+=1,U.push({type:"id_conflict",id:L.id,legacy_title:L.title,current_title:J.title});continue}let P=[{key:L.id,keyKind:"id"},...kW(L)?[{key:kW(L),keyKind:"short_id"}]:[]],z=!1;for(let{key:S,keyKind:W}of P){let X=I.get(S);if(!X)continue;if(W==="id"&&X.keyKind==="id")j+=1,U.push({type:"id_conflict",id:S,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:S,legacy_id:L.id,current_id:X.item.id,legacy_title:L.title,current_title:X.item.title});z=!0}if(z)continue;A.push(L);for(let{key:S,keyKind:W}of P)I.set(S,{item:L,keyKind:W,source:"legacy"})}let O={items:[..._.items,...A]};return{stats:{current_items:_.items.length,legacy_items:$.items.length,duplicate_ids_identical:E,duplicate_ids_conflicting:j,short_id_conflicts:N,stranded_items:A.length,merged_items:U.length===0?A.length:0,expected_total_items:_.items.length+A.length,final_items:null},conflicts:U,mergedStore:O}}function RH(_,$){let D=[...new Set(_)].sort(),I=(U)=>{if(U>=D.length)return $();return y$(D[U],()=>I(U+1),{createParent:!0})};return I(0)}function pR(_){let $=_.now??new Date,D=_.approveWrite!==!0,I=l_(_.legacy),U=l_(_.current),E={legacy_exists:I.exists,legacy_store_exists:H$(_.legacy.jsonStorePath),current_store_exists:H$(_.current.jsonStorePath),approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_backup_written:!1,no_conflicts:!1,final_count_matches_expected:!1},j=[];if(!I.exists||!E.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:I,current_before:U,backup_after:null,current_after:U,merge:{current_items:l4(_.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:l4(_.current.jsonStorePath).items.length,final_items:U.json_items},conflicts:[],checks:{...E,no_conflicts:!0,final_count_matches_expected:!0},warnings:j,message:`No legacy knowledge JSON store found at ${_.legacy.jsonStorePath}`};let N=l4(_.current.jsonStorePath),A=l4(_.legacy.jsonStorePath),O=tR(N,A);if(E.no_conflicts=O.conflicts.length===0,O.conflicts.length>0)j.push("merge_conflicts_detected");if(!E.approval_present)j.push("write_approval_required");if(D||!E.approval_present||O.conflicts.length>0)return{ok:O.conflicts.length===0,dry_run:!0,approval_required:!E.approval_present,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.merge-backup-${EN($)}`,legacy_before:I,current_before:U,backup_after:null,current_after:null,merge:O.stats,conflicts:O.conflicts,checks:E,warnings:j,message:O.conflicts.length===0?`Dry run: would merge ${O.stats.stranded_items} legacy item(s) into ${_.current.jsonStorePath}`:`Refusing legacy merge with ${O.conflicts.length} conflict(s)`};return RH([_.current.jsonStorePath,_.legacy.jsonStorePath],()=>{let L=l4(_.current.jsonStorePath),J=l4(_.legacy.jsonStorePath),P=tR(L,J);if(E.no_conflicts=P.conflicts.length===0,P.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:l_(_.legacy),current_before:l_(_.current),backup_after:null,current_after:null,merge:P.stats,conflicts:P.conflicts,checks:E,warnings:[...j,"merge_conflicts_detected_after_lock"],message:`Refusing legacy merge with ${P.conflicts.length} conflict(s)`};if(P.stats.stranded_items===0)return P.stats.final_items=L.items.length,E.final_count_matches_expected=L.items.length===P.stats.expected_total_items,{ok:E.no_conflicts&&E.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:l_(_.legacy),current_before:l_(_.current),backup_after:null,current_after:l_(_.current),merge:P.stats,conflicts:[],checks:E,warnings:j,message:`Legacy merge already up to date for ${_.current.jsonStorePath}`};let z=`${_.legacy.home}.merge-backup-${EN($)}`;IN(CW(z),{recursive:!0}),fW(_.legacy.home,z,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});let S=j$(z),W=l_(S);if(E.legacy_backup_written=wW(l_(_.legacy),W),!E.legacy_backup_written)throw Error(`Legacy knowledge merge backup verification failed: ${z}`);_6(_.current.jsonStorePath,P.mergedStore);let X=l4(_.current.jsonStorePath);P.stats.final_items=X.items.length,E.final_count_matches_expected=X.items.length===P.stats.expected_total_items;let G=l_(_.current),R=E.legacy_backup_written&&E.no_conflicts&&E.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:z,legacy_before:I,current_before:U,backup_after:W,current_after:G,merge:P.stats,conflicts:[],checks:E,warnings:j,message:R?`Merged ${P.stats.merged_items} legacy item(s) into ${_.current.jsonStorePath}`:`Merged legacy knowledge store, but verification failed for ${_.current.jsonStorePath}`}})}function YH(_){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,_)}function uW(_){return _ instanceof Error&&/\b(EBUSY|EPERM)\b/.test(_.message)}function QH(_){let $;for(let D=0;D<8;D+=1)try{jN(_,{recursive:!0,force:!1});return}catch(I){if($=I,!uW(I))throw I;YH(50*(D+1))}throw $}function eR(_){if(!H$(_))return;let $=oR(_);if(qW(_,$.isDirectory()?448:384),!$.isDirectory())return;for(let D of xW(_))eR(R6(_,D))}function KH(_){return _==="TOMBSTONE.md"||_==="migration.json"||_==="knowledge.db"||_==="knowledge.db-shm"||_==="knowledge.db-wal"||_==="knowledge.db-journal"}function TH(_){for(let $ of xW(_)){if($==="TOMBSTONE.md"||$==="migration.json")continue;try{jN(R6(_,$),{recursive:!0,force:!1})}catch(D){if(!uW(D)||!$.startsWith("knowledge.db"))throw D}}}function FH(_,$){try{WH(_,$);return}catch(D){fW(_,$,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});try{QH(_)}catch(I){if(uW(I)){TH(_);return}throw jN($,{recursive:!0,force:!0}),I}if(D instanceof Error&&D.message.includes("EXDEV"))return}}function VH(_,$,D){if(!$.exists)return!1;if(!$.files.includes("TOMBSTONE.md")||!$.files.includes("migration.json"))return!1;if($.files.some((I)=>!KH(I)))return!1;try{let I=JSON.parse(z1(R6(_.home,"migration.json"),"utf8"));return I.new_path===D&&typeof I.backup_path==="string"}catch{return!1}}function aR(_){let $=_.now??new Date,D=_.approveWrite!==!0,I=l_(_.current),U=GH(_.current,I),E=_.approveWrite===!0&&Boolean(_.approvedBy)&&(!I.exists||U),j=l_(_.legacy,{includeSqlite:!E}),N={legacy_exists:j.exists,current_absent_or_default_scaffold:!I.exists||U,approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_is_tombstone:!1,backup_matches_legacy:!1,migrated_matches_backup:!1,tombstone_written:!1},A=[];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:I,backup_after:null,current_after:null,checks:N,warnings:A,message:`No legacy knowledge workspace found at ${_.legacy.home}`};if(N.legacy_is_tombstone=VH(_.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:R6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:I,backup_after:null,current_after:I,checks:{...N,tombstone_written:!0},warnings:A,message:`Legacy knowledge workspace already migrated to ${_.current.home}`};if(!N.current_absent_or_default_scaffold)A.push("current_workspace_contains_data");if(!N.approval_present)A.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-${EN($)}`,tombstone_path:R6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:I,backup_after:null,current_after:null,checks:N,warnings:A,message:N.current_absent_or_default_scaffold?`Dry run: would migrate ${_.legacy.home} to ${_.current.home}`:`Cannot migrate while ${_.current.home} contains data`};let O=`${_.legacy.home}.backup-${EN($)}`;IN(CW(_.current.home),{recursive:!0}),IN(CW(O),{recursive:!0}),fW(_.legacy.home,O,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0}),eR(O);let L=j$(O),J=l_(L,{includeSqlite:!1});if(N.backup_matches_legacy=wW(j,J),!N.backup_matches_legacy)throw Error(`Legacy knowledge backup verification failed: ${O}`);if(I.exists&&U)jN(_.current.home,{recursive:!0,force:!0});FH(_.legacy.home,_.current.home);let P=l_(_.current,{includeSqlite:!1});N.migrated_matches_backup=wW(J,P);let z=l_(L),S=l_(_.current),W={...z,path:_.legacy.home};IN(_.legacy.home,{recursive:!0});let X=R6(_.legacy.home,"TOMBSTONE.md");mR(X,["# Migrated OpenKnowledge Workspace","",`Migrated at: ${$.toISOString()}`,`Approved by: ${_.approvedBy}`,`New path: ${_.current.home}`,`Backup path: ${O}`,"","This directory is a diagnostic tombstone only. OpenKnowledge reads and writes the canonical .hasna/knowledge workspace.",""].join(` +`),{mode:384}),qW(X,384);let G=R6(_.legacy.home,"migration.json");mR(G,`${JSON.stringify({migrated_at:$.toISOString(),approved_by:_.approvedBy,new_path:_.current.home,backup_path:O,legacy_before:W,backup_after:z,current_after:S},null,2)} +`,{mode:384}),qW(G,384),N.tombstone_written=H$(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:O,tombstone_path:X,legacy_before:W,current_before:I,backup_after:z,current_after:S,checks:N,warnings:A,message:R?`Migrated legacy knowledge workspace to ${_.current.home}`:`Migrated legacy knowledge workspace, but verification failed for ${_.current.home}`}}import{createHash as D9}from"crypto";import{Database as BH}from"bun:sqlite";var k$="knowledge.project-registration.v1",sR="knowledge.project-resources.v1",MH=1,ND="explicit_collection_binding";class e extends Error{code;details;constructor(_,$,D={}){super($);this.code=_;this.details=D;this.name="KnowledgeProjectLinksError"}}class U9{db;tail=Promise.resolve();constructor(_){this.db=_}async get(_,$=[]){return this.db.query(_).get(...$)??null}async many(_,$=[]){return this.db.query(_).all(...$)}async run(_,$=[]){let D=this.db.query(_).run(...$);return{changes:Number(D.changes)}}transaction(_){let $=this.tail.then(async()=>{this.db.exec("BEGIN IMMEDIATE");try{let D=await _(this);return this.db.exec("COMMIT"),D}catch(D){throw this.db.exec("ROLLBACK"),D}});return this.tail=$.then(()=>{return},()=>{return}),$}}function bH(){return` + PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + ); + CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + ); + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_update + BEFORE UPDATE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_delete + BEFORE DELETE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + `}function I9(){return[`CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + )`,`CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + )`,`CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + )`,`CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + )`,`CREATE OR REPLACE FUNCTION knowledge_project_link_receipts_immutable() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + RAISE EXCEPTION 'knowledge project link receipts are immutable'; + END; + $$`,`DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable + ON knowledge_project_link_receipts`,`CREATE TRIGGER knowledge_project_link_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()`]}function yW(_){if(Array.isArray(_))return _.map(yW);if(_&&typeof _==="object")return Object.fromEntries(Object.entries(_).filter(([,$])=>$!==void 0).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>[$,yW(D)]));return _}function gD(_){return JSON.stringify(yW(_))}function v_(_){return D9("sha256").update(gD(_)).digest("hex")}function NN(_){let $=D9("sha256").update(_).digest("hex").slice(0,32).split("");$[12]="5",$[16]=(Number.parseInt($[16],16)&3|8).toString(16);let D=$.join("");return`${D.slice(0,8)}-${D.slice(8,12)}-${D.slice(12,16)}-${D.slice(16,20)}-${D.slice(20)}`}function k_(_,$){if(typeof _!=="string"||_.trim().length===0)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT",`${$} must be a non-empty string.`);return _.trim()}function ZH(_){let $=_??100;if(!Number.isInteger($)||$<1||$>200)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","limit must be an integer between 1 and 200.");return $}function HH(_){let $=["project","collection","item","taxonomy"];if(!_||_.length===0)return $;let D=[...new Set(_)];for(let I of D)if(!$.includes(I))throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT",`unsupported project resource kind: ${I}`);return D.sort((I,U)=>$.indexOf(I)-$.indexOf(U))}function _9(_){return{receipt_id:_.receipt_id,authority:"knowledge",route:k$,package_version:_.package_version,authority_id:_.authority_id,tenant_id:_.tenant_id,corpus_id:_.corpus_id,operation_id:_.operation_id,step_id:_.step_id,action:_.action,resource_kind:_.resource_kind,direction:_.direction,idempotency_key:_.idempotency_key,request_digest:_.request_digest,precondition_digest:_.precondition_digest,outcome:_.outcome,reason:_.reason,source_project_id:_.source_project_id,project_id:_.project_id,collection_id:_.collection_id,item_id:_.item_id,result_revision:_.result_revision,result_digest:_.result_digest,accepted_receipt_id:_.accepted_receipt_id,created_by_operation:Number(_.created_by_operation)===1,created_at:_.created_at}}function $9(_){let $={source_project_id:_.source_project_id,project_id:_.project_id,project_slug:_.project_slug,project_name:_.project_name,collection_id:_.collection_id,collection_slug:_.collection_slug,collection_name:_.collection_name,membership_rule:ND,revision:`r${Number(_.revision)}`,created_at:_.created_at,updated_at:_.updated_at};return{...$,digest:v_($)}}function gN(_){return[_.receipt_id,_.authority,_.route,_.package_version,_.authority_id,_.tenant_id,_.corpus_id,_.operation_id,_.step_id,_.action,_.resource_kind,_.direction,_.idempotency_key,_.request_digest,_.precondition_digest,_.outcome,_.reason,_.source_project_id,_.project_id,_.collection_id,_.item_id,_.result_revision,_.result_digest,_.accepted_receipt_id,_.created_by_operation?1:0,_.created_at]}var AN=`INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;class E9{sql;itemResolver;options;identity;now;constructor(_,$,D){this.sql=_;this.itemResolver=$;this.options=D;this.identity={authority_id:k_(D.authorityId,"authority_id"),tenant_id:k_(D.tenantId,"tenant_id"),corpus_id:k_(D.corpusId,"corpus_id")},this.now=D.now??(()=>new Date().toISOString())}capabilityValue(){return{authority:"knowledge",route:k$,resource_route:sR,package_version:this.options.packageVersion,schema_version:MH,...this.identity,registration_resource:"collection",supported_resources:["project","collection","item","taxonomy"],stable_project_ids:!0,stable_collection_ids:!0,explicit_membership:!0,membership_rule:ND,later_child_binding_required:!0,bind_existing_items:!0,immutable_receipts:!0,exact_terminal_lookup:!0,exact_readback:!0,conditional_inverse:!0,complete_keyset_pagination:!0,revision_bound_cursors:!0}}async capability(){return this.capabilityValue()}assertIdentity(_){let $=this.capabilityValue();if(_.authority_route!==$.route||_.package_version!==$.package_version||_.authority_id!==$.authority_id||_.tenant_id!==$.tenant_id||_.corpus_id!==$.corpus_id)throw new e("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH","request does not match the current Knowledge project-registration capability identity.")}stableProjectId(_){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${_}`)}stableCollectionId(_,$){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${_}\x00${$}`)}stableReceiptId(_,$,D,I){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${_}\x00${$}\x00${D}\x00${I}`)}async getAggregateBySource(_,$){return _.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$])}async getAggregateByCollection(_,$){return _.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$])}async getAggregateByProject(_,$){return _.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,$])}async getReceiptByAttempt(_,$){let D=await _.get(`SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.operation_id,$.step_id,$.action,$.direction]);return D?_9(D):null}assertIdempotent(_,$){if(_.idempotency_key!==$.idempotency_key||$.request_digest!==void 0&&_.request_digest!==$.request_digest||$.precondition_digest!==void 0&&_.precondition_digest!==$.precondition_digest)throw new e("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH","operation and step identity are already bound to a different Knowledge project-link request.",{receipt_id:_.receipt_id})}async registerCollection(_){if(this.assertIdentity(_),_.resource_kind!=="collection"||_.direction!=="forward")throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","collection registration requires resource_kind=collection and direction=forward.");let $=k_(_.project_id,"project_id"),D=k_(_.project_slug,"project_slug"),I=k_(_.project_name,"project_name");if(k_(_.target_selector,"target_selector")!==$)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","target_selector must equal the exact source project id.");let E=k_(_.desired.collection_slug??`${D}-knowledge`,"desired.collection_slug"),j=k_(_.desired.collection_name??`${I} Knowledge`,"desired.collection_name"),N=v_({action:"register_collection",source_project_id:$,project_slug:D,project_name:I,collection_slug:E,collection_name:j,membership_rule:ND});if(_.request_digest!==N)throw new e("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH","request_digest does not bind the normalized collection-registration request.",{expected_request_digest:N});return this.sql.transaction(async(A)=>{let O=await this.getReceiptByAttempt(A,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"forward"});if(O)return this.assertIdempotent(O,_),O;let L=await this.getAggregateBySource(A,$),J=L===null;if(!L){let S=this.now(),W=this.stableProjectId($),X=this.stableCollectionId($,E);await A.run(`INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,W,D,I,S,S]),await A.run(`INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,X,W,E,j,ND,1,S,S]),L=await this.getAggregateByCollection(A,X)}else if(L.project_slug!==D||L.project_name!==I||L.collection_slug!==E||L.collection_name!==j||L.membership_rule!==ND)throw new e("KNOWLEDGE_PROJECT_LINKS_CONFLICT","the source project is already bound to a different Knowledge collection aggregate.",{source_project_id:$,collection_id:L.collection_id});if(!L)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","collection registration committed but exact aggregate readback was unavailable.");let P=$9(L),z={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"register_collection","forward"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",resource_kind:"collection",direction:"forward",idempotency_key:k_(_.idempotency_key,"idempotency_key"),request_digest:_.request_digest,precondition_digest:k_(_.precondition_digest,"precondition_digest"),outcome:"accepted",reason:J?null:"adopted_existing_collection",source_project_id:P.source_project_id,project_id:P.project_id,collection_id:P.collection_id,item_id:null,result_revision:P.revision,result_digest:P.digest,accepted_receipt_id:null,created_by_operation:J,created_at:this.now()};return await A.run(AN,gN(z)),z})}async readCollection(_){let $=await this.getAggregateByCollection(this.sql,k_(_,"collection_id"));if(!$)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection was not found by exact id.");return $9($)}async lookupReceipt(_){if(_.max_items!==1)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","exact terminal receipt lookup requires max_items=1.");if(_.authority_id!==this.identity.authority_id||_.tenant_id!==this.identity.tenant_id||_.corpus_id!==this.identity.corpus_id)throw new e("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH","receipt lookup does not match this authority identity.");let $=await this.getReceiptByAttempt(this.sql,_);if(!$||$.idempotency_key!==_.idempotency_key)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","exact Knowledge project-link receipt was not found.");return $}async receiptById(_,$){let D=await _.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`,[$,this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id]);return D?_9(D):null}assertInverseIdentity(_){this.assertIdentity(_),k_(_.accepted_receipt_id,"accepted_receipt_id"),k_(_.idempotency_key,"idempotency_key")}async compensateRegistration(_){return this.assertInverseIdentity(_),this.sql.transaction(async($)=>{let D=await this.getReceiptByAttempt($,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"inverse"});if(D)return this.assertIdempotent(D,_),D;let I=await this.receiptById($,_.accepted_receipt_id);if(!I||I.action!=="register_collection"||I.direction!=="forward"||I.outcome!=="accepted")throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted collection-registration receipt was not found.");let U=I.collection_id?await this.getAggregateByCollection($,I.collection_id):null,E="accepted",j=null;if(!I.created_by_operation)E="terminal_nonacceptance",j="adopted_collection_is_not_inverse_owned";else if(!U)E="terminal_nonacceptance",j="accepted_collection_is_already_absent";else{let O=await $.get(`SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.collection_id]);if(Number(O?.count??0)>0)E="terminal_nonacceptance",j="collection_has_bound_items";else await $.run(`DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.collection_id]),await $.run(`DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.project_id])}let N={accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,absent:E==="accepted"},A={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"register_collection","inverse"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",resource_kind:"collection",direction:"inverse",idempotency_key:_.idempotency_key,request_digest:v_({accepted_receipt_id:I.receipt_id,collection_id:I.collection_id}),precondition_digest:I.result_digest??"",outcome:E,reason:j,source_project_id:I.source_project_id,project_id:I.project_id,collection_id:I.collection_id,item_id:null,result_revision:E==="accepted"?"absent":I.result_revision,result_digest:v_(N),accepted_receipt_id:I.receipt_id,created_by_operation:!1,created_at:this.now()};return await $.run(AN,gN(A)),A})}async verifyRegistrationInverse(_){this.assertInverseIdentity(_);let $=await this.getReceiptByAttempt(this.sql,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"inverse"});if(!$||$.outcome!=="accepted"||$.accepted_receipt_id!==_.accepted_receipt_id)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted collection inverse receipt was not found.");if($.collection_id?await this.getAggregateByCollection(this.sql,$.collection_id):null)throw new e("KNOWLEDGE_PROJECT_LINKS_CONFLICT","collection inverse verification found the target still present.");return{accepted_receipt_id:_.accepted_receipt_id,target_id:$.collection_id,absent:!0,digest:$.result_digest}}async bindItem(_){if(this.assertIdentity(_),_.direction!=="forward")throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","item binding requires direction=forward.");let $=k_(_.collection_id,"collection_id"),D=k_(_.item_id,"item_id"),I=await this.itemResolver(D);if(!I||I.id!==D)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","bind-existing requires an exact existing Knowledge item id.",{item_id:D});let U=v_({action:"bind_item",collection_id:$,item_id:D});if(_.request_digest!==U)throw new e("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH","request_digest does not bind the normalized item-membership request.",{expected_request_digest:U});return this.sql.transaction(async(E)=>{let j=await this.getReceiptByAttempt(E,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"forward"});if(j)return this.assertIdempotent(j,_),j;if(!await this.getAggregateByCollection(E,$))throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection was not found by exact id.");let A=await E.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,D]),O=A===null,L=this.now(),J=this.stableReceiptId(_.operation_id,_.step_id,"bind_item","forward");if(!A)await E.run(`INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,D,J,1,L]),await E.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[L,this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$]);let P=await this.getAggregateByCollection(E,$);if(!P)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","item binding committed but collection readback was unavailable.");let z={collection_id:$,item_id:D,collection_revision:`r${Number(P.revision)}`,item_revision:`v${I.version??1}`},S={receipt_id:J,authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",resource_kind:"item",direction:"forward",idempotency_key:k_(_.idempotency_key,"idempotency_key"),request_digest:_.request_digest,precondition_digest:k_(_.precondition_digest,"precondition_digest"),outcome:"accepted",reason:O?null:"adopted_existing_membership",source_project_id:P.source_project_id,project_id:P.project_id,collection_id:$,item_id:D,result_revision:z.collection_revision,result_digest:v_(z),accepted_receipt_id:null,created_by_operation:O,created_at:L};return await E.run(AN,gN(S)),S})}async readItemBinding(_,$){let D=await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,k_(_,"collection_id"),k_($,"item_id")]);if(!D)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection membership was not found by exact ids.");let I=await this.getAggregateByCollection(this.sql,_);if(!I)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","membership exists without its collection aggregate.");let U={collection_id:_,item_id:$,revision:`r${Number(I.revision)}`,bound_at:D.bound_at};return{...U,digest:v_(U)}}async compensateItemBinding(_){return this.assertInverseIdentity(_),this.sql.transaction(async($)=>{let D=await this.getReceiptByAttempt($,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"inverse"});if(D)return this.assertIdempotent(D,_),D;let I=await this.receiptById($,_.accepted_receipt_id);if(!I||I.action!=="bind_item"||I.direction!=="forward"||I.outcome!=="accepted")throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted item-binding receipt was not found.");let U="accepted",E=null,j=await $.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id,I.item_id]);if(!I.created_by_operation)U="terminal_nonacceptance",E="adopted_membership_is_not_inverse_owned";else if(!j)U="terminal_nonacceptance",E="accepted_membership_is_already_absent";else if(j.bound_receipt_id!==I.receipt_id||Number(j.created_by_operation)!==1)U="terminal_nonacceptance",E="membership_is_owned_by_a_different_receipt";else await $.run(`DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id,I.item_id,I.receipt_id]),await $.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.now(),this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id]);let N=I.collection_id?await this.getAggregateByCollection($,I.collection_id):null,A={accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,item_id:I.item_id,absent:U==="accepted"},O={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"bind_item","inverse"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",resource_kind:"item",direction:"inverse",idempotency_key:_.idempotency_key,request_digest:v_({accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,item_id:I.item_id}),precondition_digest:I.result_digest??"",outcome:U,reason:E,source_project_id:I.source_project_id,project_id:I.project_id,collection_id:I.collection_id,item_id:I.item_id,result_revision:U==="accepted"&&N?`r${Number(N.revision)}`:I.result_revision,result_digest:v_(A),accepted_receipt_id:I.receipt_id,created_by_operation:!1,created_at:this.now()};return await $.run(AN,gN(O)),O})}async verifyItemBindingInverse(_){this.assertInverseIdentity(_);let $=await this.getReceiptByAttempt(this.sql,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"inverse"});if(!$||$.outcome!=="accepted"||$.accepted_receipt_id!==_.accepted_receipt_id)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted item-binding inverse receipt was not found.");if(await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.collection_id,$.item_id]))throw new e("KNOWLEDGE_PROJECT_LINKS_CONFLICT","item-binding inverse verification found the membership still present.");return{accepted_receipt_id:_.accepted_receipt_id,target_id:$.item_id,absent:!0,digest:$.result_digest}}async buildResources(_){let $=await this.getAggregateByProject(this.sql,k_(_,"project_id"));if(!$)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge project aggregate was not found by source or stable project id.");let D=await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.collection_id]),I=await Promise.all(D.map(async(L)=>{let J=await this.itemResolver(L.item_id);if(!J||J.id!==L.item_id)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","collection membership points at a missing Knowledge item; refusing a partial resource population.",{collection_id:$.collection_id,item_id:L.item_id});return J})),U=`r${Number($.revision)}`,E={project_id:$.project_id,source_project_id:$.source_project_id,collection_id:$.collection_id,revision:U},j=[],N={...E,kind:"project",id:$.project_id,title:$.project_name,locator:{kind:"canonical_uri",value:`knowledge:project:${$.project_id}`},metadata:{source_project_id:$.source_project_id,slug:$.project_slug,collection_count:1}};j.push({...N,key:`project:${$.project_id}`,digest:v_(N)});let A={...E,kind:"collection",id:$.collection_id,title:$.collection_name,locator:{kind:"external_uuid",value:$.collection_id},metadata:{slug:$.collection_slug,membership_rule:ND,member_count:I.length}};j.push({...A,key:`collection:${$.collection_id}`,digest:v_(A)});for(let L of I){let J={...E,kind:"item",id:L.id,revision:`v${L.version??1}`,title:L.title,locator:{kind:"canonical_uri",value:`knowledge:item:${encodeURIComponent(L.id)}`},metadata:{tags:[...L.tags??[]],archived:L.archived===!0,updated_at:L.updated_at}};j.push({...J,key:`item:${L.id}`,digest:v_(J)})}let O=new Map;for(let L of I)for(let J of L.tags??[]){let P=J.trim().toLowerCase();if(!P)continue;let z=O.get(P)??{label:J.trim(),itemIds:[]};z.itemIds.push(L.id),O.set(P,z)}for(let[L,J]of[...O.entries()].sort(([P],[z])=>P.localeCompare(z))){let P=NN(`${$.collection_id}\x00taxonomy\x00${L}`),z={...E,kind:"taxonomy",id:P,title:J.label,locator:{kind:"external_uuid",value:P},metadata:{tag:J.label,normalized_tag:L,item_count:J.itemIds.length,member_digest:v_([...J.itemIds].sort())}};j.push({...z,key:`taxonomy:${P}`,digest:v_(z)})}return j.sort((L,J)=>L.key.localeCompare(J.key)),{aggregate:$,resources:j}}async listProjectResources(_,$={}){let D=ZH($.limit),I=HH($.kinds),{aggregate:U,resources:E}=await this.buildResources(_),j=`r${Number(U.revision)}`,N=E.filter((S)=>I.includes(S.kind)),A=v_(N.map((S)=>({key:S.key,digest:S.digest}))),O="";if($.cursor){let S;try{S=JSON.parse(Buffer.from($.cursor,"base64url").toString("utf8"))}catch{throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","cursor is not a valid Knowledge project-resources cursor.")}if(S.version!==1||S.project_id!==U.project_id||S.collection_id!==U.collection_id||S.collection_revision!==j||S.population_digest!==A||gD(S.kinds)!==gD(I)||typeof S.after!=="string")throw new e("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed or the cursor belongs to a different project/kind selection; restart from the first page.");O=S.after}let L=O?N.filter((S)=>S.key>O):N,J=L.slice(0,D),P=L.length>J.length,z=P&&J.length>0?Buffer.from(JSON.stringify({version:1,project_id:U.project_id,collection_id:U.collection_id,collection_revision:j,population_digest:A,kinds:I,after:J.at(-1).key})).toString("base64url"):null;return{schema:"knowledge.project-resources.page.v1",authority:"knowledge",route:sR,...this.identity,project_id:U.project_id,source_project_id:U.source_project_id,collection_id:U.collection_id,collection_revision:j,population_digest:A,resource_kinds:I,resources:J,count:J.length,total:N.length,limit:D,cursor:$.cursor??null,next_cursor:z,has_more:P,complete:!P,truncated:!1}}async readProjectResource(_,$,D){let{resources:I}=await this.buildResources(_),U=I.find((E)=>E.kind===$&&E.id===D);if(!U)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge project resource was not found by exact kind and id.");return U}async readAllProjectResources(_,$={}){let D=[],I=new Set,U=null,E=null;do{let j=await this.listProjectResources(_,{...$,cursor:U}),N={project_id:j.project_id,collection_id:j.collection_id,collection_revision:j.collection_revision,population_digest:j.population_digest,total:j.total,kinds:gD(j.resource_kinds)};if(E&&gD(E)!==gD(N))throw new e("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed while the complete population was being read.");E??=N;for(let A of j.resources){if(I.has(A.key))throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resource pagination returned a duplicate stable resource key.",{key:A.key});I.add(A.key),D.push(A)}if(j.has_more&&!j.next_cursor)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resource page claims more data without a continuation cursor.");U=j.next_cursor}while(U);if(!E||D.length!==E.total)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","complete project resource enumeration did not match the producer total.",{expected_total:E?.total??null,received:D.length});return D}}function ON(_){if(_.databasePath!==":memory:")u$(_.databasePath);let $=new BH(_.databasePath,{create:!0});return $.exec(bH()),new E9(new U9($),(D)=>_.itemStore.get(D),_.options)}class j9{options;fetchImpl;root;constructor(_){this.options=_;this.fetchImpl=_.fetch??P0,this.root=_.baseUrl.replace(/\/+$/,"")}headers(_={}){let $=new Headers(this.options.headers);if($.set("accept","application/json"),this.options.apiKey)$.set("x-api-key",this.options.apiKey);for(let[D,I]of Object.entries(_))$.set(D,I);return $}async request(_,$={}){let D=await this.fetchImpl(`${this.root}${_}`,{...$,headers:this.headers($.body?{"content-type":"application/json"}:{})}),I=await D.json().catch(()=>({}));if(!D.ok)throw new e(typeof I.error==="string"?I.error:"KNOWLEDGE_PROJECT_LINKS_CONFLICT",typeof I.message==="string"?I.message:`Knowledge project-links HTTP ${D.status}`,I.details&&typeof I.details==="object"?I.details:{});return I}async capability(){return(await this.request("/v1/project-registration/capability")).capability}async registerCollection(_){return(await this.request("/v1/project-registration/create",{method:"POST",body:JSON.stringify(_)})).receipt}async readCollection(_){return(await this.request("/v1/project-registration/read-exact",{method:"POST",body:JSON.stringify({collection_id:_})})).record}async lookupReceipt(_){return(await this.request("/v1/project-registration/receipts/lookup",{method:"POST",body:JSON.stringify(_)})).receipt}async compensateRegistration(_){return(await this.request("/v1/project-registration/compensate",{method:"POST",body:JSON.stringify(_)})).receipt}async verifyRegistrationInverse(_){return(await this.request("/v1/project-registration/verify-inverse",{method:"POST",body:JSON.stringify(_)})).verification}async bindItem(_){return(await this.request("/v1/project-registration/items/bind",{method:"POST",body:JSON.stringify(_)})).receipt}async readItemBinding(_,$){return(await this.request("/v1/project-registration/items/read-exact",{method:"POST",body:JSON.stringify({collection_id:_,item_id:$})})).record}async compensateItemBinding(_){return(await this.request("/v1/project-registration/items/compensate",{method:"POST",body:JSON.stringify(_)})).receipt}async verifyItemBindingInverse(_){return(await this.request("/v1/project-registration/items/verify-inverse",{method:"POST",body:JSON.stringify(_)})).verification}async listProjectResources(_,$={}){let D=new URLSearchParams;if($.limit!==void 0)D.set("limit",String($.limit));if($.cursor)D.set("cursor",$.cursor);for(let U of $.kinds??[])D.append("kind",U);let I=D.size>0?`?${D.toString()}`:"";return this.request(`/v1/projects/${encodeURIComponent(_)}/resources${I}`)}async readProjectResource(_,$,D){return(await this.request(`/v1/projects/${encodeURIComponent(_)}/resources/${$}/${encodeURIComponent(D)}`)).resource}async readAllProjectResources(_,$={}){let D=[],I=new Set,U=null,E=null,j=null,N=null;do{let A=await this.listProjectResources(_,{...$,cursor:U});if(E??=A.total,j??=A.collection_revision,N??=A.population_digest,A.total!==E||A.collection_revision!==j||A.population_digest!==N)throw new e("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed while the complete HTTP population was being read.");for(let O of A.resources){if(I.has(O.key))throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resources HTTP pagination returned a duplicate stable key.");I.add(O.key),D.push(O)}if(A.has_more&&!A.next_cursor)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resources HTTP page claims more data without a cursor.");U=A.next_cursor}while(U);if(E===null||D.length!==E)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","complete HTTP resource enumeration did not match the producer total.");return D}}function N9(_){return new j9(_)}var E$={name:"@hasna/knowledge",version:"0.2.102",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/live-private-query.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","live:private-query":"bun scripts/live-private-query.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"}};function wH(_){let $=K9(_);if(X_(g9($,"knowledge.db"))||X_(g9($,"config.json")))return g0($);return g0(j$(xN($)).home)}function hW(_){return`${vH()}:${G1("sha256").update(_.home).digest("hex").slice(0,12)}`}function dW(_){return`'${_.replace(/'/g,"'\\''")}'`}function rH(_){return["knowledge",..._].map(dW).join(" ")}function A9(_,$){return`cd ${dW(_)} && knowledge ${$.map(dW).join(" ")}`}function T9(_){return!_||_==="local"||_==="localhost"}function X1(_,$){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 cW(_){return{source:_.source,adapter:_.adapter,target:_.target,route:_.route,target_kind:_.targetKind,confidence:_.confidence,evidence:_.evidence,cacheability:_.cacheability}}function fH(_){try{let $=JSON.parse(_);return Array.isArray($)?$.filter((D)=>typeof D==="string"):[]}catch{return[]}}function R1(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function q_(_){return typeof _==="string"&&_.length>0?_:null}function xH(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function LN(_){return typeof _==="boolean"?_:null}function uH(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function F9(_,$,D){let I=R1(_),U=q_(I.observed_at)??q_($[`${D}_observed_at`]),E=q_(I.source_authority)??q_($[`${D}_source_authority`]);if(!U||!E)return null;return{observed_at:U,verified_at:q_(I.verified_at),expires_at:q_(I.expires_at)??q_($[`${D}_expires_at`]),ttl_ms:xH(I.ttl_ms),source_authority:E,confidence:q_(I.confidence)??(D==="route"?q_($.route_confidence):null),cacheable:LN(I.cacheable)??LN($[`${D}_cacheable`])??!1,stale:LN(I.stale)??LN($[`${D}_stale`])??!1,reasons:uH(I.reasons)}}function yH(_,$){return _.machine_id===$||_.hostname===$||_.ssh_target===$||_.tailscale_dns===$||fH(_.tailscale_ips_json).includes($)}function O9(_,$){return sg(_).find((D)=>yH(D,$))??null}function V9(_){return R1(i4(_.metadata_json).resolver_evidence)}function Y1(_){return R1(i4(_.capabilities_json).resolver)}function B9(_){let $=Y1(_),D=q_($.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 hH(_){let $=Y1(_),D=q_($.route_target_kind);if(D==="local"||D==="lan"||D==="tailscale"||D==="ssh"||D==="unknown")return D;return B9(_)}function cH(_){return q_(Y1(_).route_confidence)??"medium"}function L9(_,$,D){let I=V9(_),U=R1(I.route),E=Y1(_);return{target:_.ssh_target??_.tailscale_dns??_.hostname??_.machine_id,route:B9(_),targetKind:hH(_),confidence:cH(_),source:"registry",adapter:D.adapter,evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,route:U},cacheability:F9(U.cacheability,E,"route")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_route_fallback"])]}}function S9(_,$,D){if(!_.workspace_home)return null;let I=V9(_),U=R1(I.workspace),E=Y1(_);return{ok:!0,source:"registry",adapter:D.adapter,requested_machine_id:$,machine_id:_.machine_id,project_id:q_(U.project_id)??D.project_id,repo_name:q_(U.repo_name)??D.repo_name,project_root:_.workspace_home,project_root_source:q_(E.project_root_source)??"registry",workspace_root:q_(U.workspace_root),workspace_root_source:q_(E.workspace_root_source)??"registry",open_files_root:q_(U.open_files_root),open_files_root_source:q_(E.open_files_root_source)??"registry",trust_status:q_(E.trust_status)??"unknown",auth_status:q_(E.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:F9(U.cacheability,E,"workspace")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_workspace_fallback"])]}}function J9(_){if(!_)return null;let $=_.diagnostics.filter((I)=>I.severity!=="ok"),D=_.repair_hints[0];if(!$.length&&!_.warnings.length&&!D)return null;return[$.length?`workspace diagnostics: ${$.map((I)=>`${I.id}=${I.status}`).join(", ")}`:null,_.warnings.length?`warnings: ${_.warnings.join(", ")}`:null,D?`repair: ${D.shell_command}`:null].filter(Boolean).join("; ")}function SN(_){return{id:_.id,reason:_.reason,command:["knowledge",..._.args],shell_command:rH(_.args)}}function JN(_,$){let D=w(_);try{return Number(D.query($).get()?.count??0)}finally{D.close()}}function nH(_,$){let D=JN(_,"SELECT COUNT(*) AS count FROM sources WHERE uri LIKE 'open-files://%'"),I=JN(_,"SELECT COUNT(*) AS count FROM sources WHERE metadata_json LIKE '%open-files://%' OR metadata_json LIKE '%source_ref%'"),U=JN(_,"SELECT COUNT(*) AS count FROM source_revisions WHERE extracted_text_uri IS NOT NULL"),E=JN(_,["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=E===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:I},extracted_text_artifacts:U,raw_source_bytes_owned_by:"open-files",raw_payload_sentinel_hits:E,message:j?`${D} open-files source ref(s); raw source bytes remain owned by open-files`:`${E} raw source payload metadata sentinel(s) found`}}var dH=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body","body_bytes"]);function mW(_,$=0){if($>8)return!1;if(!_||typeof _!=="object")return!1;if(Array.isArray(_))return _.some((D)=>mW(D,$+1));for(let[D,I]of Object.entries(_)){if(dH.has(D.toLowerCase()))return!0;if(mW(I,$+1))return!0}return!1}function i4(_){try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function W9(_,$=20,D=200){if(!Number.isFinite(_)||_<=0)return $;return Math.min(Math.floor(_),D)}function mH(_,$=220){let D=_??"";return D.length>$?`${D.slice(0,$)}...`:D}function G$(_,$=["metadata_json"]){return _.map((D)=>{let I={...D};for(let U of $){let E=I[U];if(typeof E==="string"){let j=U.endsWith("_json")?U.slice(0,-5):U;I[j]=i4(E),delete I[U]}}return I})}function PN(_){if(typeof _!=="string")return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function lW(_){if(typeof _!=="string")return{};return i4(_)}function lH(_){let $={..._};return $.source_refs=PN($.source_refs_json),$.evidence_refs=PN($.evidence_refs_json),$.requires_approval=$.requires_approval===1||$.requires_approval===!0,$.checks=lW($.checks_json),$.metadata=lW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.checks_json,delete $.metadata_json,$}function iH(_){let $={..._};return $.source_refs=PN($.source_refs_json),$.evidence_refs=PN($.evidence_refs_json),$.metadata=lW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.metadata_json,$}function a_(_,$,D=[]){return _.query($).all(...D)}function tH(_){if(!X_(_))return{exists:!1,read_error:null,items:[]};try{let $=JSON.parse(CH(_,"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 P9(_){return{id:_.id,short_id:_.short_id??null,title:_.title,content_preview:mH(_.content),url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:_.archived===!0,created_at:_.created_at,updated_at:_.updated_at}}function z9(){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 M9(_,$,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 oH(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function pH(_,$,D=!1){let I=M9(_,$,D);return{query:_,normalized_query:oH(_),created_at:new Date().toISOString(),mode:I.mode,warnings:I.warnings,search_counts:I.counts,results:[],citations:[],excerpts:[],graph:{citations:[],backlinks:[]},notes:{permissions:[],freshness:[]}}}function nW(_,$,D){let I=D??$.jsonStorePath;if(X_(I))return I;if(_==="global"){let U=CD();if(X_(U))return U}return I}function eH(_){let $=JSON.stringify(_);return Math.max(1,Math.ceil($.length/4))}function iW(_,$){let D=(_??"").normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function X9(_,$,D){let I=y_(iW(_,D),$);return{text:I.text,redactions:I.findings.length}}function G9(_,$,D){let I=_.now??new Date,U=_.source??"search",E=_.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)),A=Math.max(500,Math.min(_.maxTokens??6000,1e5)),O=0,L=$.citations.slice(0,Math.max(N*2,N)).map((R,K)=>{let Y=X9(R.quote,D,K<3?220:140);O+=Y.redactions;let T=R.source_ref??R.source_uri??R.artifact_path??R.artifact_uri??R.id;return{id:`cite_${G1("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:Y.text}}),J=new Map($.citations.map((R,K)=>[R.id,L[K]])),P=$.excerpts.slice(0,Math.max(N*2,N)).map((R)=>{let K=$.results.find((F)=>F.id===R.result_id),Y=R.citation_id?J.get(R.citation_id):void 0,T=X9(R.text,D,520);return O+=T.redactions,{id:`ev_${G1("sha256").update(`${R.kind}\x00${R.result_id}\x00${R.citation_id??""}`).digest("hex").slice(0,14)}`,kind:R.kind,title:iW(K?.title??Y?.ref??R.kind,100),text_preview:T.text,score:Number(R.score.toFixed(6)),citation_ids:Y?[Y.id]:[],provenance:{source:U,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),z=new Set(P.flatMap((R)=>R.citation_ids)),S=L.filter((R)=>z.has(R.id)),W=Array.from(new Set($.warnings)),X=`ctx_${G1("sha256").update([U,E,j,W.join(","),P.map((R)=>R.id).join(",")].join("\x00")).digest("hex").slice(0,20)}`,G={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:I.toISOString(),source:U,purpose:E,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:X,budgets:{max_tokens:A,estimated_tokens:0,max_items:N,items_included:P.length,items_available:$.excerpts.length,items_truncated:Math.max(0,$.excerpts.length-P.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:O,reminders:["This pack is read-only and performs no durable writes.","Legacy JSON note evidence is bounded and redacted before inclusion."]},citations:S,evidence:P,duplicate_candidates:[],outline:{title:j?`Knowledge context: ${iW(j,80)}`:"Knowledge context",bullets:P.length>0?P.slice(0,5).map((R)=>`${R.id}: ${R.title}`):["No matching bounded evidence was found."],evidence_ids:P.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:W,message:`${P.length} bounded evidence item(s), estimated under ${A} token(s)`};return G.budgets.estimated_tokens=eH(G),G.budgets.token_budget_exceeded=G.budgets.estimated_tokens>A,G.message=`${G.evidence.length} bounded evidence item(s), estimated ${G.budgets.estimated_tokens}/${A} token(s)`,G}function aH(){return{schema_version:0,chunks:0,vector_entries:0,missing_embeddings:0,queued:{},stale_revisions:0}}function sH(){return{total_embeddings:0,total_vector_entries:0,indexes:[]}}function _k(_){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 R9(_){let $=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=(_.query??_.topic??"").normalize("NFKC").trim().replace(/\s+/g," "),E=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),j=Math.max(500,Math.min(_.maxTokens??6000,1e5)),N=`ctx_${G1("sha256").update(["empty",D,I,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:I,query:U,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:N,budgets:{max_tokens:j,estimated_tokens:0,max_items:E,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 tW(_){let $=_.artifact_store.s3?.prefix?.replace(/^\/+|\/+$/g,"");return $?`${$}/`:null}function $k(_,$){let D=w(_);try{let I=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,E=0,A=0,O=0,P=0,W=0,z=0,S=0,L=0,J=0,R=0,X=new Map,G=[],B=[],Q=[],T=[],K=$.artifact_store.uri_prefix,V=vW($);for(let Q_ of U){if(D.set(Q_.kind,(D.get(Q_.kind)??0)+1),Q_.hash?.startsWith("sha256:"))I+=1;if(typeof Q_.size_bytes==="number"&&Q_.size_bytes>=0)j+=1,E+=Q_.size_bytes;if(Q_.artifact_uri.startsWith(K))A+=1;else if(G.length<5)G.push(Q_.artifact_uri);let M_=ng(Q_.metadata_json);if(HW(M_))W+=1;let D4=typeof M_.key==="string"?M_.key:null;if(!D4)O+=1;else if(V&&D4.startsWith(V)){if(P+=1,B.length<5)B.push(D4)}let zJ=typeof M_.artifact_modified_at==="string"?M_.artifact_modified_at:null;if(zJ)if(Number.isNaN(Date.parse(zJ))){if(S+=1,Q.length<5)Q.push(Q_.artifact_uri)}else z+=1;let B0=M_.provenance&&typeof M_.provenance==="object"&&!Array.isArray(M_.provenance)?M_.provenance:null;if(B0){L+=1;let KE=typeof B0.artifact_key==="string"?B0.artifact_key:null,RJ=typeof B0.generated_from==="string"?B0.generated_from:"unknown";if(X.set(RJ,(X.get(RJ)??0)+1),KE){if(J+=1,D4&&KE!==D4){if(R+=1,T.length<5)T.push(`${Q_.artifact_uri}:provenance.artifact_key=${KE}:key=${D4}`)}}else if(T.length<5)T.push(`${Q_.artifact_uri}:missing_provenance_artifact_key`)}else if(T.length<5)T.push(`${Q_.artifact_uri}:missing_provenance`)}let F=U.length-I,o=U.length-j,I_=U.length-z-S,j_=U.length-L,p=L-J,$$=U.length-A,H_=[F>0?`artifact_manifest_missing_hash:${F}`:null,o>0?`artifact_manifest_missing_size:${o}`:null,O>0?`artifact_manifest_missing_key:${O}`:null,$$>0?`artifact_manifest_uri_prefix_mismatch:${$$}`:null,P>0?`artifact_manifest_s3_key_contains_storage_prefix:${P}`:null,S>0?`artifact_manifest_invalid_modified_at:${S}`:null,j_>0?`artifact_manifest_missing_provenance:${j_}`:null,p>0?`artifact_manifest_missing_provenance_artifact_key:${p}`:null,R>0?`artifact_manifest_provenance_key_mismatch:${R}`:null,W>0?`artifact_manifest_raw_payload_sentinels:${W}`:null].filter((Q_)=>Boolean(Q_)),i$=H_.length===0;return{ok:i$,read_only:!0,storage_type:$.storage_type,artifact_uri_prefix:K,s3:$.artifact_store.s3,artifacts:{total:U.length,by_kind:[...D.entries()].map(([Q_,M_])=>({kind:Q_,count:M_})).sort((Q_,M_)=>Q_.kind.localeCompare(M_.kind)),with_hash:I,missing_hash:F,with_size:j,missing_size:o,total_size_bytes:E},modified_time:{with_modified_at:z,missing_modified_at:I_,invalid_modified_at:S,examples:Q},provenance:{with_provenance:L,missing_provenance:j_,with_artifact_key:J,missing_artifact_key:p,artifact_key_mismatches:R,generated_from:[...X.entries()].map(([Q_,M_])=>({value:Q_,count:M_})).sort((Q_,M_)=>Q_.value.localeCompare(M_.value)),examples:T},uri_prefix:{matching:A,mismatched:$$,examples:G},keys:{with_key:U.length-O,missing_key:O,prefixed_with_storage_prefix:P,prefixed_examples:B},sync_manifest:{copied_by_sync:!0,generated_artifacts_only:!0,includes_raw_source_bytes:!1,hash_algorithm:"sha256",portable_keys:P===0&&O===0,tracks_modified_time:z>0&&S===0,preserves_provenance:j_===0&&p===0&&R===0},raw_payload_sentinel_hits:W,warnings:H_,message:i$?`${U.length} generated artifact manifest row(s) ready for ${$.storage_type} sync`:`Generated artifact manifest needs attention: ${H_.join(", ")}`}}finally{g.close()}}function MM(_,$){let g=vW($);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,E=0,j=0,N=0,A=0,O=0,L=0,J=0,P=0,z=0,S=0,W=0,X=0,G=new Map,R=[],K=[],Y=[],T=[],F=$.artifact_store.uri_prefix,k=tW($);for(let T_ of I){if(U.set(T_.kind,(U.get(T_.kind)??0)+1),T_.hash?.startsWith("sha256:"))E+=1;if(typeof T_.size_bytes==="number"&&T_.size_bytes>=0)j+=1,N+=T_.size_bytes;if(T_.artifact_uri.startsWith(F))A+=1;else if(R.length<5)R.push(T_.artifact_uri);let C_=i4(T_.metadata_json);if(mW(C_))J+=1;let N0=typeof C_.key==="string"?C_.key:null;if(!N0)O+=1;else if(k&&N0.startsWith(k)){if(L+=1,K.length<5)K.push(N0)}let ZP=typeof C_.artifact_modified_at==="string"?C_.artifact_modified_at:null;if(ZP)if(Number.isNaN(Date.parse(ZP))){if(z+=1,Y.length<5)Y.push(T_.artifact_uri)}else P+=1;let qD=C_.provenance&&typeof C_.provenance==="object"&&!Array.isArray(C_.provenance)?C_.provenance:null;if(qD){S+=1;let vN=typeof qD.artifact_key==="string"?qD.artifact_key:null,HP=typeof qD.generated_from==="string"?qD.generated_from:"unknown";if(G.set(HP,(G.get(HP)??0)+1),vN){if(W+=1,N0&&vN!==N0){if(X+=1,T.length<5)T.push(`${T_.artifact_uri}:provenance.artifact_key=${vN}:key=${N0}`)}}else if(T.length<5)T.push(`${T_.artifact_uri}:missing_provenance_artifact_key`)}else if(T.length<5)T.push(`${T_.artifact_uri}:missing_provenance`)}let B=I.length-E,c=I.length-j,E_=I.length-P-z,D_=I.length-S,J_=S-W,A_=I.length-A,K$=[B>0?`artifact_manifest_missing_hash:${B}`:null,c>0?`artifact_manifest_missing_size:${c}`:null,O>0?`artifact_manifest_missing_key:${O}`:null,A_>0?`artifact_manifest_uri_prefix_mismatch:${A_}`:null,L>0?`artifact_manifest_s3_key_contains_storage_prefix:${L}`:null,z>0?`artifact_manifest_invalid_modified_at:${z}`:null,D_>0?`artifact_manifest_missing_provenance:${D_}`:null,J_>0?`artifact_manifest_missing_provenance_artifact_key:${J_}`:null,X>0?`artifact_manifest_provenance_key_mismatch:${X}`:null,J>0?`artifact_manifest_raw_payload_sentinels:${J}`:null].filter((T_)=>Boolean(T_)),r_=K$.length===0;return{ok:r_,read_only:!0,storage_type:$.storage_type,artifact_uri_prefix:F,s3:$.artifact_store.s3,artifacts:{total:I.length,by_kind:[...U.entries()].map(([T_,C_])=>({kind:T_,count:C_})).sort((T_,C_)=>T_.kind.localeCompare(C_.kind)),with_hash:E,missing_hash:B,with_size:j,missing_size:c,total_size_bytes:N},modified_time:{with_modified_at:P,missing_modified_at:E_,invalid_modified_at:z,examples:Y},provenance:{with_provenance:S,missing_provenance:D_,with_artifact_key:W,missing_artifact_key:J_,artifact_key_mismatches:X,generated_from:[...G.entries()].map(([T_,C_])=>({value:T_,count:C_})).sort((T_,C_)=>T_.value.localeCompare(C_.value)),examples:T},uri_prefix:{matching:A,mismatched:A_,examples:R},keys:{with_key:I.length-O,missing_key:O,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&&O===0,tracks_modified_time:P>0&&z===0,preserves_provenance:D_===0&&J_===0&&X===0},raw_payload_sentinel_hits:J,warnings:K$,message:r_?`${I.length} generated artifact manifest row(s) ready for ${$.storage_type} sync`:`Generated artifact manifest needs attention: ${K$.join(", ")}`}}finally{D.close()}}function Dk(_,$){let D=tW($);if(!D)return[];let I=w(_);try{let U=I.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 E=ng(j.metadata_json),A=typeof E.key==="string"?E.key:null;if(!A?.startsWith(g))continue;let O=A.slice(g.length);if(!O)continue;I.push({id:j.id,artifact_uri:j.artifact_uri,kind:j.kind,current_key:A,repaired_key:v$(O),hash:j.hash,size_bytes:j.size_bytes})}return I}finally{U.close()}}function ZM(_){let $=["--scope",_.scope,"--json"],g=_.tables?.length?["--tables",_.tables.join(",")]:[],U=[$E({id:"sync_status",reason:"Inspect local sync registry, clocks, snapshots, and conflicts.",args:["sync","status",...$]})];if(_.machine&&!g9(_.machine))U.push($E({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($E({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($E({id:"sync_conflicts",reason:"Review open conflicts before relying on bidirectional sync.",args:["sync","conflicts",...$]}));return U}function HM(){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 s5(_,$,g,U){let D=HM(),I=jM(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 _9(_,$,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 kM(_,$){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"||gF6)throw Error(`Remote knowledge sync export on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function CM(_,$){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"||gF6)throw Error(`Remote knowledge sync import on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function vM(_){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 DE extends Error{code="semantic_query_unavailable";constructor(){super("semantic_query_unavailable: the hosted Knowledge item store has no configured vector index.");this.name="KnowledgeSemanticSearchUnavailableError"}}class E9{options;ensuredWorkspace;cachedConfig;constructor(_={}){this.options=_}get scope(){return this.options.scope??"global"}get workspace(){return this.ensuredWorkspace??MU(this.options.scope,this.options.cwd)}ensureWorkspace(){if(!this.ensuredWorkspace)this.ensuredWorkspace=U4(this.workspace.home);return this.ensuredWorkspace}jsonStorePath(){return this.ensureWorkspace().jsonStorePath}itemStore(){let _=this.ensureWorkspace();return hU({storePath:_.jsonStorePath,storePathOverridden:!1})}async listItems(_={}){return this.itemStore().list(_)}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||J_($.configPath))this.cachedConfig=J_($.configPath)?bE($.configPath):F0();return this.cachedConfig}safetyPolicy(){return mz(this.config(),this.workspace)}artifactStore(){return IN(this.config(),this.ensureWorkspace())}storageContract(){return mU(this.config(),this.workspace,this.scope)}validateStorage(){return NN(this.config(),this.workspace)}assertStorageValid(_){let $=this.validateStorage();if(!$.ok)throw Error(`Storage contract invalid before ${_}: ${$.errors.join("; ")}`)}migrateLegacyPath(_={}){let $=this.workspace,g=rE(this.options.scope,this.options.cwd),U=y5({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=rE(this.options.scope,this.options.cwd),U=f5({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=vM(_.mode)??g.mode,D=_.apiUrl?s$(_.apiUrl):g.hosted?.api_url?s$(g.hosted.api_url):null,I={...g,mode:U,hosted:{...g.hosted??{},...D?{api_url:D}:{}},storage:_.canonicalExample?TJ():g.storage};KJ($.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 kz(this.config(),_)}saveAuth(_,$=process.env){let g=_.apiUrl??this.config().hosted?.api_url;return Zz({api_key:_.apiKey,email:_.email,org_id:_.orgId,org_slug:_.orgSlug,user_id:_.userId,api_url:g},$)}clearAuth(_=process.env){return Hz(_)}paths(){let _=this.workspace;return{ok:!0,scope:this.scope,home:_.home,exists:J_(_.home),config_path:_.configPath,config_exists:J_(_.configPath),json_store_path:_.jsonStorePath,json_store_exists:J_(_.jsonStorePath),knowledge_db_path:_.knowledgeDbPath,knowledge_db_exists:J_(_.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 c(this.ensureWorkspace().knowledgeDbPath)}dbStats(){nU("reading knowledge.db stats");let _=this.workspace;if(!J_(_.knowledgeDbPath))return o5();return gN(_.knowledgeDbPath)}enqueuePromotion(_){return oX(this.ensureWorkspace().knowledgeDbPath,_)}promotionInbox(_={}){return eX(this.ensureWorkspace().knowledgeDbPath,_)}getPromotion(_){return pX(this.ensureWorkspace().knowledgeDbPath,_)}reviewPromotion(_,$){return aX(this.ensureWorkspace().knowledgeDbPath,_,$)}promoteCandidate(_,$={}){return sX(this.ensureWorkspace().knowledgeDbPath,_,$)}rejectPromotion(_,$={}){return _5(this.ensureWorkspace().knowledgeDbPath,_,$)}durableRecords(_={}){return $5(this.ensureWorkspace().knowledgeDbPath,_)}itemOnlyInventory(_){let $=this.workspace,{items:g,limit:U,includeArchived:D,storePath:I,storeExists:j,storeReadError:E}=_,A=g.filter((z)=>z.archived!==!0),O=D?g:A,P=o5(),W={legacy_items:g.length,active_items:A.length,archived_items:g.length-A.length,schema_version:P.schema_version,sources:P.sources,source_revisions:P.source_revisions,chunks:P.chunks,wiki_pages:P.wiki_pages,citations:P.citations,indexes:P.indexes,runs:P.runs,run_events:P.run_events,storage_objects:P.storage_objects,embeddings:P.embeddings,vector_entries:P.vector_entries,reindex_queue:P.reindex_queue,redaction_findings:P.redaction_findings,audit_events:P.audit_events,approval_gates:P.approval_gates,knowledge_machines:P.knowledge_machines,sync_snapshots:P.sync_snapshots,sync_changes:P.sync_changes,sync_conflicts:P.sync_conflicts,sync_table_clocks:P.sync_table_clocks,sync_imports:P.sync_imports,promotion_candidates:P.promotion_candidates,durable_records:P.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:U,paths:{json_store_path:$.jsonStorePath,json_store_exists:J_($.jsonStorePath),knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:J_($.knowledgeDbPath),artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:W,legacy_store:{path:I,exists:j,read_error:E,total_items:g.length,active_items:A.length,archived_items:g.length-A.length,items_returned:Math.min(O.length,U)},items:O.slice(0,U).map(t5),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 $=l5(_.limit),g=await this.fetchCloudItems(),U=u0();return this.itemOnlyInventory({items:g,limit:$,includeArchived:_.includeArchived??!1,storePath:U?.baseUrl??"cloud",storeExists:!0,storeReadError:null})}inventory(_={}){let $=this.workspace,g=l5(_.limit),U=_.storePath??$.jsonStorePath,D=TM(U),I=D.items.filter((P)=>P.archived!==!0),j=_.includeArchived?D.items:I;if(!J_($.knowledgeDbPath))return this.itemOnlyInventory({items:D.items,limit:g,includeArchived:_.includeArchived??!1,storePath:U,storeExists:D.exists,storeReadError:D.read_error});c($.knowledgeDbPath);let A=gN($.knowledgeDbPath),O=v($.knowledgeDbPath);try{let P=W$(t_(O,` + ORDER BY artifact_uri ASC`).all(),E=[];for(let j of U){let N=i4(j.metadata_json),A=typeof N.key==="string"?N.key:null;if(!A?.startsWith(D))continue;let O=A.slice(D.length);if(!O)continue;E.push({id:j.id,artifact_uri:j.artifact_uri,kind:j.kind,current_key:A,repaired_key:c$(O),hash:j.hash,size_bytes:j.size_bytes})}return E}finally{I.close()}}function Uk(_){let $=["--scope",_.scope,"--json"],D=_.tables?.length?["--tables",_.tables.join(",")]:[],I=[SN({id:"sync_status",reason:"Inspect local sync registry, clocks, snapshots, and conflicts.",args:["sync","status",...$]})];if(_.machine&&!T9(_.machine))I.push(SN({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)I.push(SN({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??[])I.push({id:U.id,reason:U.reason,command:U.command,shell_command:U.shell_command});if(_.openConflicts>0)I.push(SN({id:"sync_conflicts",reason:"Review open conflicts before relying on bidirectional sync.",args:["sync","conflicts",...$]}));return I}function Ik(){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(I){throw Error(`KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array: ${I instanceof Error?I.message:String(I)}`)}if(!Array.isArray(D)||!D.every((I)=>typeof I==="string"))throw Error("KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array.");return{command:_,argsPrefix:D}}function Y9(_,$,D,I){let U=Ik(),E=qH(U.command,[...U.argsPrefix,I.target,$],{encoding:"utf8",env:process.env,input:D,maxBuffer:67108864});if((E.status??1)!==0){let j=I.source==="open-machines"?` via ${I.route??"resolved"}:${I.target}`:"";throw Error(`ssh ${_}${j} failed: ${(E.stderr||E.stdout||String(E.status)).trim()}`)}return E.stdout||""}function Q9(_,$,D){try{return JSON.parse(D)}catch(I){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(I)}`)}}function Ek(_,$){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:I}=$;if(typeof D!=="number"||typeof I!=="number"||Dk6)throw Error(`Remote knowledge sync export on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function jk(_,$){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:I}=$;if(typeof D!=="number"||typeof I!=="number"||Dk6)throw Error(`Remote knowledge sync import on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function Nk(_){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 WN extends Error{code="semantic_query_unavailable";constructor(){super("semantic_query_unavailable: the hosted Knowledge item store has no configured vector index.");this.name="KnowledgeSemanticSearchUnavailableError"}}class b9{options;ensuredWorkspace;cachedConfig;cachedProjectLinksAuthority;constructor(_={}){this.options=_}get scope(){return this.options.scope??"global"}get workspace(){return this.ensuredWorkspace??f1(this.options.scope,this.options.cwd)}ensureWorkspace(){if(!this.ensuredWorkspace)this.ensuredWorkspace=g0(this.workspace.home);return this.ensuredWorkspace}jsonStorePath(){return this.ensureWorkspace().jsonStorePath}itemStore(){let _=this.ensureWorkspace();return t1({storePath:_.jsonStorePath,storePathOverridden:!1})}projectLinksAuthority(){if(this.options.projectLinksAuthority)return this.options.projectLinksAuthority;if(this.cachedProjectLinksAuthority)return this.cachedProjectLinksAuthority;if(h$()){let{apiKey:$}=Gg(process.env);if(!$)throw Error("Knowledge project links require the configured API credential in postgres mode.");return this.cachedProjectLinksAuthority=N9({baseUrl:p1(this.config(),process.env),apiKey:$}),this.cachedProjectLinksAuthority}let _=this.ensureWorkspace();return this.cachedProjectLinksAuthority=ON({databasePath:_.knowledgeDbPath,itemStore:this.itemStore(),options:{packageVersion:E$.version,authorityId:this.options.projectLinksIdentity?.authorityId??process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID??"knowledge",tenantId:this.options.projectLinksIdentity?.tenantId??process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID??"local",corpusId:this.options.projectLinksIdentity?.corpusId??process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID??"knowledge"}}),this.cachedProjectLinksAuthority}async listItems(_={}){return this.itemStore().list(_)}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||X_($.configPath))this.cachedConfig=X_($.configPath)?yN($.configPath):vD();return this.cachedConfig}safetyPolicy(){return U3(this.config(),this.workspace)}artifactStore(){return zg(this.config(),this.ensureWorkspace())}storageContract(){return a1(this.config(),this.workspace,this.scope)}validateStorage(){return Yg(this.config(),this.workspace)}assertStorageValid(_){let $=this.validateStorage();if(!$.ok)throw Error(`Storage contract invalid before ${_}: ${$.errors.join("; ")}`)}migrateLegacyPath(_={}){let $=this.workspace,D=uN(this.options.scope,this.options.cwd),I=aR({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!I.dry_run&&I.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return I}mergeLegacyPath(_={}){let $=this.workspace,D=uN(this.options.scope,this.options.cwd),I=pR({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!I.dry_run&&I.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return I}setup(_={}){let $=this.ensureWorkspace(),D=this.config({ensure:!0}),I=Nk(_.mode)??D.mode,U=_.apiUrl?E6(_.apiUrl):D.hosted?.api_url?E6(D.hosted.api_url):null,E={...D,mode:I,hosted:{...D.hosted??{},...U?{api_url:U}:{}},storage:_.canonicalExample?wP():D.storage};rP($.configPath,E),this.cachedConfig=E;let j=a1(E,$,this.scope);return{ok:!0,mode:I,api_url:E.hosted?.api_url??null,storage_type:E.storage.type,artifact_uri_prefix:j.artifact_store.uri_prefix,canonical_example:j.canonical_example,config_path:$.configPath,next:I==="hosted"?["knowledge auth login --api-key ","knowledge storage status --json"]:["knowledge search ","knowledge "],message:`Set knowledge mode to ${I}`}}authStatus(_=process.env){return mz(this.config(),_)}saveAuth(_,$=process.env){let D=_.apiUrl??this.config().hosted?.api_url;return nz({api_key:_.apiKey,email:_.email,org_id:_.orgId,org_slug:_.orgSlug,user_id:_.userId,api_url:D},$)}clearAuth(_=process.env){return dz(_)}paths(){let _=this.workspace;return{ok:!0,scope:this.scope,home:_.home,exists:X_(_.home),config_path:_.configPath,config_exists:X_(_.configPath),json_store_path:_.jsonStorePath,json_store_exists:X_(_.jsonStorePath),knowledge_db_path:_.knowledgeDbPath,knowledge_db_exists:X_(_.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(){o1("reading knowledge.db stats");let _=this.workspace;if(!X_(_.knowledgeDbPath))return z9();return Jg(_.knowledgeDbPath)}enqueuePromotion(_){return NR(this.ensureWorkspace().knowledgeDbPath,_)}promotionInbox(_={}){return AR(this.ensureWorkspace().knowledgeDbPath,_)}getPromotion(_){return gR(this.ensureWorkspace().knowledgeDbPath,_)}reviewPromotion(_,$){return OR(this.ensureWorkspace().knowledgeDbPath,_,$)}promoteCandidate(_,$={}){return LR(this.ensureWorkspace().knowledgeDbPath,_,$)}rejectPromotion(_,$={}){return SR(this.ensureWorkspace().knowledgeDbPath,_,$)}durableRecords(_={}){return JR(this.ensureWorkspace().knowledgeDbPath,_)}itemOnlyInventory(_){let $=this.workspace,{items:D,limit:I,includeArchived:U,storePath:E,storeExists:j,storeReadError:N}=_,A=D.filter((P)=>P.archived!==!0),O=U?D:A,L=z9(),J={legacy_items:D.length,active_items:A.length,archived_items:D.length-A.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:I,paths:{json_store_path:$.jsonStorePath,json_store_exists:X_($.jsonStorePath),knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:X_($.knowledgeDbPath),artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:J,legacy_store:{path:E,exists:j,read_error:N,total_items:D.length,active_items:A.length,archived_items:D.length-A.length,items_returned:Math.min(O.length,I)},items:O.slice(0,I).map(P9),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 $=W9(_.limit),D=await this.fetchCloudItems(),I=dD();return this.itemOnlyInventory({items:D,limit:$,includeArchived:_.includeArchived??!1,storePath:I?.baseUrl??"cloud",storeExists:!0,storeReadError:null})}inventory(_={}){let $=this.workspace,D=W9(_.limit),I=_.storePath??$.jsonStorePath,U=tH(I),E=U.items.filter((L)=>L.archived!==!0),j=_.includeArchived?U.items:E;if(!X_($.knowledgeDbPath))return this.itemOnlyInventory({items:U.items,limit:D,includeArchived:_.includeArchived??!1,storePath:I,storeExists:U.exists,storeReadError:U.read_error});h($.knowledgeDbPath);let A=Jg($.knowledgeDbPath),O=w($.knowledgeDbPath);try{let L=G$(a_(O,` SELECT s.id, s.uri, @@ -1178,7 +1429,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"]),W=W$(t_(O,` + `,[D]),["metadata_json","acl_json"]),J=G$(a_(O,` SELECT sr.id, s.uri AS source_uri, @@ -1191,7 +1442,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])),z=W$(t_(O,` + `,[D])),P=G$(a_(O,` SELECT c.id, c.kind, @@ -1212,22 +1463,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])),S=W$(t_(O,` + `,[D])),z=G$(a_(O,` 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])),L=W$(t_(O,` + `,[D])),S=G$(a_(O,` 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])),J=W$(t_(O,` + `,[D])),W=G$(a_(O,` 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])),R=W$(t_(O,` + `,[D])),X=G$(a_(O,` SELECT id, type, @@ -1243,18 +1494,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])),X=t_(O,` + `,[D])),G=a_(O,` SELECT provider, model, dimensions, status, COUNT(*) AS entries FROM vector_index_entries GROUP BY provider, model, dimensions, status ORDER BY entries DESC LIMIT ? - `,[g]),G=W$(t_(O,` + `,[D]),R=G$(a_(O,` 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])),B=W$(t_(O,` + `,[D])),K=G$(a_(O,` SELECT machine_id, hostname, @@ -1272,7 +1523,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=W$(t_(O,` + `,[D]),["tailscale_ips_json","capabilities_json","metadata_json"]),Y=G$(a_(O,` SELECT id, entity_kind, @@ -1289,17 +1540,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=W$(t_(O,` + `,[D])),T=G$(a_(O,` 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])),K=W$(t_(O,` + `,[D])),F=G$(a_(O,` SELECT id, event_type, action, target_uri, decision, metadata_json, created_at FROM audit_events ORDER BY created_at DESC LIMIT ? - `,[g])),V=t_(O,` + `,[D])),k=a_(O,` SELECT id, record_kind, @@ -1324,7 +1575,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(YM),F=t_(O,` + `,[D]).map(lH),B=a_(O,` SELECT id, record_kind, @@ -1346,17 +1597,1173 @@ 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(QM),o={legacy_items:D.items.length,active_items:I.length,archived_items:D.items.length-I.length,schema_version:A.schema_version,sources:A.sources,source_revisions:A.source_revisions,chunks:A.chunks,wiki_pages:A.wiki_pages,citations:A.citations,indexes:A.indexes,runs:A.runs,run_events:A.run_events,storage_objects:A.storage_objects,embeddings:A.embeddings,vector_entries:A.vector_entries,reindex_queue:A.reindex_queue,redaction_findings:A.redaction_findings,audit_events:A.audit_events,approval_gates:A.approval_gates,knowledge_machines:A.knowledge_machines,sync_snapshots:A.sync_snapshots,sync_changes:A.sync_changes,sync_conflicts:A.sync_conflicts,sync_table_clocks:A.sync_table_clocks,sync_imports:A.sync_imports,promotion_candidates:A.promotion_candidates,durable_records:A.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:o,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(t5),sources:P,source_revisions:W,chunks:z,wiki_pages:S,indexes:L,storage_objects:J,runs:R,vector_indexes:X,reindex_queue:G,machines:B,sync_conflicts:Q,approval_gates:T,audit_events:K,promotion_candidates:V,durable_records:F,message:`${D.items.length} item(s), ${A.sources} source(s), ${A.chunks} chunk(s), ${A.wiki_pages} wiki page(s), ${A.storage_objects} artifact(s)`}}finally{O.close()}}assertAppWikiWrite(_){f0({scope:this.scope,workspace:this.workspace,safetyPolicy:this.safetyPolicy(),allowGlobal:_})}async initAppWiki(_={}){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return A3({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async addAppWikiNote(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return O3({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(!J_($.knowledgeDbPath))return[];return P3({dbPath:$.knowledgeDbPath,limit:_.limit})}async getAppWikiNote(_,$={}){let g=this.workspace;if(!J_(g.knowledgeDbPath))return null;return S3({dbPath:g.knowledgeDbPath,store:this.artifactStore(),id:_,includeContent:$.includeContent})}async addAppWikiSourceRef(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return L3({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();c(_.knowledgeDbPath);let $=await M5(this.artifactStore()),g=v(_.knowledgeDbPath);try{_6(g,$.artifacts),Z5(g,$.artifacts)}finally{g.close()}return $}async compileWiki(_={}){let $=this.ensureWorkspace();return V5({..._,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 F5({dbPath:$.knowledgeDbPath,store:this.artifactStore(),prompt:_.prompt,answer:_.answer,context:g,approveWrite:_.approveWrite})}lintWiki(){let _=this.ensureWorkspace();return r5({dbPath:_.knowledgeDbPath})}async ingestManifest(_){let $=this.ensureWorkspace();return U3({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 J5({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 FX({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}reindexHealth(_={}){let $=this.workspace;if(!J_($.knowledgeDbPath))return VM();return U5({..._,dbPath:$.knowledgeDbPath,config:this.config()})}enqueueReindex(_={}){let $=this.ensureWorkspace();return OW({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async refreshEmbeddings(_={}){let $=this.ensureWorkspace();return I5({..._,dbPath:$.knowledgeDbPath,config:this.config()})}providerStatus(_=process.env){return G3(this.config(),_)}modelRegistry(){return XN(this.config())}embeddingStatus(){let _=this.workspace;if(!J_(_.knowledgeDbPath))return FM();return q3(_.knowledgeDbPath)}async indexEmbeddings(_={}){let $=this.ensureWorkspace();return _I({..._,dbPath:$.knowledgeDbPath,config:this.config()})}isApiMode(){return Q6()}cloudStore(){let _=u0();if(!_)throw Error("knowledge: cloud store requested but not resolvable (check HASNA_KNOWLEDGE_API_URL + HASNA_KNOWLEDGE_API_KEY).");return _}async fetchCloudItems(){return cU(this.cloudStore())}async semanticSearch(_){let $=this.workspace;if(this.isApiMode())throw new DE;if(!J_($.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()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new DE;let U=await this.cloudStore().search({query:_.query,archive:"active",limit:_.limit,offset:_.offset});return VN(U.items,_,[],U.total)}let g=MW(this.scope,$,_.legacyStorePath);if(!J_($.knowledgeDbPath)){if(J_(g))return II({..._,legacyStorePath:g,config:this.config()});return j9(_.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.search(_);return D6(U,{contextChars:_.contextChars})}let g=MW(this.scope,$,_.legacyStorePath);if(!J_($.knowledgeDbPath)){if(J_(g)){let U=await II({..._,legacyStorePath:g,config:this.config()});return D6(U,{contextChars:_.contextChars})}return qM(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return X4({..._,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.search({..._,query:U}),I=D6(D,{contextChars:_.contextChars});return e5(_,I,this.safetyPolicy())}return a5(_)}let g=MW(this.scope,$,_.legacyStorePath);if(!J_($.knowledgeDbPath)){let U=(_.query??_.topic??"").trim();if(U&&_.source!=="loops"&&_.source!=="runs"&&J_(g)){let D=await II({..._,query:U,legacyStorePath:g,config:this.config()}),I=D6(D,{contextChars:_.contextChars});return e5(_,I,this.safetyPolicy())}return a5(_)}return _R({..._,dbPath:$.knowledgeDbPath,legacyStorePath:g,config:this.config(),safetyPolicy:this.safetyPolicy()})}async runPrompt(_){if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new DE;let U=await this.cloudStore().search({query:_.prompt,archive:"active",limit:_.limit,offset:_.offset}),D=VN(U.items,{query:_.prompt,limit:_.limit,offset:_.offset,semantic:!1},[],U.total);return m3(U.items.map((I)=>I.item),{..._,config:this.config()},D)}let $=this.ensureWorkspace(),g=_.legacyStorePath??$.jsonStorePath;if(!_.legacyStorePath)Z0(g);return d3({..._,dbPath:$.knowledgeDbPath,legacyStorePath:g,config:this.config()})}async webSearch(_){let $=this.ensureWorkspace();return X5({..._,dbPath:$.knowledgeDbPath,config:this.config(),safetyPolicy:this.safetyPolicy()})}async machineTopology(_={}){let $=this.workspace;return hX({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}async machinePreflight(_={}){let $=this.workspace;return mX({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}syncStatus(){let _=this.workspace;if(!J_(_.knowledgeDbPath))return rM({scope:this.scope,workspaceHome:_.home});return KR({dbPath:_.knowledgeDbPath,scope:this.scope,workspaceHome:_.home})}async syncDoctor(_={}){let $=this.ensureWorkspace();c($.knowledgeDbPath);let g=this.syncStatus(),U=this.storageContract(),D=this.validateStorage(),I=bM($.knowledgeDbPath,U),j=_.machine?.trim()||null,E=_.peerWorkspace?.trim()||null,A=[],O=null,P=null;if(j&&!g9(j)){let J=await IW({machineId:j,includeTailscale:_.includeTailscale});O=bW(J),A.push(...J.warnings)}if(j||E){let J=await ij({machineId:j??rW($),peerWorkspace:E,includeTailscale:_.includeTailscale});if(j&&!E&&(O?.source==="raw"||!J.ok||!J.project_root)){let R=n5($.knowledgeDbPath,j);if(R){if(O?.source==="raw"&&R.ssh_target)O=bW(d5(R,j,{target:O.target,route:O.route,targetKind:O.target_kind,confidence:O.confidence,source:O.source,adapter:O.adapter,evidence:O.evidence,cacheability:O.cacheability,warnings:[]}));if(!J.ok||!J.project_root){let X=m5(R,j,J);if(X)P=OU(X,X.project_root),A.push(...X.warnings)}}}P=J.ok&&J.project_root?OU(J,J.project_root):P??{...OU(J,E??""),project_root:J.project_root??E??""},A.push(...J.warnings)}if(!D.ok)A.push(...D.errors.map((J)=>`storage:${J}`));let W=RM($.knowledgeDbPath,P);if(!W.ok)A.push("open_files_boundary_raw_payload_sentinels");if(!I.ok)A.push(...I.warnings);let z=P?.diagnostics.filter((J)=>J.severity==="fail")??[],S=D.ok&&I.ok&&W.ok&&z.length===0&&(P?.project_root!==""||!P),L=ZM({scope:this.scope,machine:j,peerWorkspace:E,tables:_.tables,resolvedWorkspace:P,openConflicts:g.conflicts.open});return{ok:S,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:W,resolved_route:O,resolved_workspace:P,recommended_commands:L,warnings:[...new Set(A)],message:S?`Sync readiness ok: ${g.clocks.total} table clock(s), ${g.conflicts.open} open conflict(s)`:`Sync readiness needs attention: ${[...new Set(A)].join(", ")||"workspace diagnostics failed"}`}}repairArtifactManifestKeys(_={}){let $=this.ensureWorkspace();c($.knowledgeDbPath);let g=this.storageContract(),U=vW(g),D=MM($.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 E=new Date().toISOString();j.transaction((P)=>{let W=j.query("UPDATE storage_objects SET metadata_json = ?, updated_at = ? WHERE id = ?"),z=j.query("SELECT id, metadata_json FROM storage_objects").all(),S=new Map(z.map((L)=>[L.id,ng(L.metadata_json)]));for(let L of P){let J=S.get(L.id)??{};J.key=L.repaired_key,W.run(JSON.stringify(J),E,L.id)}})(D);let O=z_(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((P)=>P.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:O,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 TR({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),topology:g,machineId:_.machineId})}syncConflicts(_={}){let $=this.workspace;if(!J_($.knowledgeDbPath))return[];return qR($.knowledgeDbPath,_)}syncConflict(_){let $=this.ensureWorkspace(),g=zI($.knowledgeDbPath,_);if(!g)throw Error(`Sync conflict not found: ${_}`);return g}proposeSyncConflictResolution(_){let $=this.ensureWorkspace();return t0($.knowledgeDbPath,_)}async proposeSyncConflictResolutionWithAi(_){let $=this.ensureWorkspace();return BX({dbPath:$.knowledgeDbPath,id:_.id,config:this.config(),modelRef:_.modelRef,fake:_.fake,env:_.env})}resolveSyncConflict(_){let $=this.ensureWorkspace(),g=t0($.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=FR($.knowledgeDbPath,{id:_.id,strategy:_.strategy??g.proposed_strategy,approvedBy:_.approvedBy,proposedPatchUri:_.proposedPatchUri}),D=v($.knowledgeDbPath);try{let I=z_(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(!J_(_.knowledgeDbPath))return[];return cN(_.knowledgeDbPath)}exportSyncBundle(_={}){let $=this.ensureWorkspace();return this.assertStorageValid("sync export"),c($.knowledgeDbPath),l0({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"),c($.knowledgeDbPath),JI({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();c(U.knowledgeDbPath);let D=_.tables?.length?["--tables",_.tables.join(",")]:[],I=_.includeArtifactContent===!1?["--no-artifact-content"]:[],j=["--scope",this.scope,"--json"],E=await IW({machineId:_.machine,includeTailscale:_.includeTailscale}),A=await ij({machineId:_.machine,peerWorkspace:_.peerWorkspace,includeTailscale:_.includeTailscale});if(!_.peerWorkspace&&E.source==="raw"||!A.ok||!A.project_root){let S=n5(U.knowledgeDbPath,_.machine);if(S){if(!_.peerWorkspace&&E.source==="raw"&&S.ssh_target)E=d5(S,_.machine,E);if(!A.ok||!A.project_root){let L=m5(S,_.machine,A);if(L)A=L}}}if(!A.ok||!A.project_root)throw Error([`Unable to resolve peer workspace for ${_.machine}.`,"Pass --peer-workspace or configure workspace path mapping in machines.",A.warnings.length?`Warnings: ${A.warnings.join(", ")}`:null].filter(Boolean).join(" "));let O=A.project_root,P={ok:!0,dry_run:g,direction:$,transport:"ssh",machine:_.machine,resolved_machine:E.target,resolved_route:bW(E),resolved_workspace:OU(A,A.project_root),peer_workspace:O,message:""},W=!1,z=()=>{if(g||W)return;XR(U.knowledgeDbPath,{machineId:_.machine,route:E,workspace:A}),W=!0};if($==="pull"||$==="both"){let S=h5(O,["sync","export",...j,...D,...I]),L=s5(_.machine,S,void 0,E),J=_9(_.machine,"sync export",L);kM(_.machine,J),P.pull=await this.importSyncBundle({bundle:J,dryRun:g,direction:"pull",machineId:_.machineId??null})}if($==="push"||$==="both"){z();let S=this.exportSyncBundle({machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:!g}),L=h5(O,["sync","import",...j,...g?["--dry-run"]:[]]),J=_9(_.machine,"sync import",s5(_.machine,L,JSON.stringify(S),E));CM(_.machine,J),P.push=J}return P.ok=(P.pull?.ok??!0)&&(P.push?.ok??!0),z(),P.message=[i5(P.resolved_workspace),P.pull?`pull: ${P.pull.message}`:null,P.push?`push: ${P.push.message}`:null].filter(Boolean).join("; "),P}async syncPeer(_){let $=_.direction??"both",g=this.ensureWorkspace();c(g.knowledgeDbPath);let U=$9(_.peerWorkspace),D=AM(U);c(D.knowledgeDbPath);let I=bE(D.configPath),j=mU(I,D,this.scope),E=IN(I,D),A=_.machineId??rW(g),O=rW(D),P=await ij({machineId:_.machineId??O,peerWorkspace:U,includeTailscale:!1}),W=()=>l0({dbPath:g.knowledgeDbPath,scope:this.scope,workspaceHome:g.home,storage:this.storageContract(),machineId:A,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),z=()=>l0({dbPath:D.knowledgeDbPath,scope:this.scope,workspaceHome:D.home,storage:j,machineId:O,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),S={ok:!0,dry_run:_.dryRun===!0,direction:$,resolved_workspace:OU(P,P.project_root??U),message:""};if($==="pull"||$==="both")S.pull=await JI({targetDbPath:g.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:g.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:z(),targetBundle:W(),direction:"pull",dryRun:_.dryRun,localMachineId:A});if($==="push"||$==="both")S.push=await JI({targetDbPath:D.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:D.home,targetStorage:j,targetStore:E,bundle:W(),targetBundle:z(),direction:"push",dryRun:_.dryRun,localMachineId:O});return S.ok=(S.pull?.ok??!0)&&(S.push?.ok??!0),S.message=[i5(S.resolved_workspace),S.pull?`pull: ${S.pull.message}`:null,S.push?`push: ${S.push.message}`:null].filter(Boolean).join("; "),S}}function IE(_={}){return new E9(_)}import{createHash as N9}from"crypto";var wM=Object.defineProperty,uM=(_)=>_;function fM(_,$){this[_]=uM.bind(null,$)}var xM=(_,$)=>{for(var g in $)wM(_,g,{get:$[g],enumerable:!0,configurable:!0,set:fM.bind($,g)})},N={};xM(N,{void:()=>KZ,util:()=>D_,unknown:()=>QZ,union:()=>FZ,undefined:()=>GZ,tuple:()=>MZ,transformer:()=>P9,symbol:()=>RZ,string:()=>B9,strictObject:()=>VZ,setErrorMap:()=>hM,set:()=>kZ,record:()=>ZZ,quotelessJson:()=>yM,promise:()=>xZ,preprocess:()=>hZ,pipeline:()=>nZ,ostring:()=>dZ,optional:()=>yZ,onumber:()=>mZ,oboolean:()=>iZ,objectUtil:()=>fW,object:()=>BZ,number:()=>V9,nullable:()=>cZ,null:()=>XZ,never:()=>TZ,nativeEnum:()=>fZ,nan:()=>WZ,map:()=>HZ,makeIssue:()=>NE,literal:()=>wZ,lazy:()=>vZ,late:()=>SZ,isValid:()=>dg,isDirty:()=>yW,isAsync:()=>WU,isAborted:()=>xW,intersection:()=>bZ,instanceof:()=>LZ,getParsedType:()=>J6,getErrorMap:()=>EE,function:()=>CZ,enum:()=>uZ,effect:()=>P9,discriminatedUnion:()=>rZ,defaultErrorMap:()=>N0,datetimeRegex:()=>T9,date:()=>zZ,custom:()=>q9,coerce:()=>lZ,boolean:()=>F9,bigint:()=>JZ,array:()=>qZ,any:()=>YZ,addIssueToContext:()=>f,ZodVoid:()=>zU,ZodUnknown:()=>i6,ZodUnion:()=>S0,ZodUndefined:()=>O0,ZodType:()=>__,ZodTuple:()=>n$,ZodTransformer:()=>R$,ZodSymbol:()=>JU,ZodString:()=>V$,ZodSet:()=>lg,ZodSchema:()=>__,ZodRecord:()=>RU,ZodReadonly:()=>X0,ZodPromise:()=>tg,ZodPipeline:()=>YU,ZodParsedType:()=>y,ZodOptional:()=>r$,ZodObject:()=>r_,ZodNumber:()=>l6,ZodNullable:()=>z6,ZodNull:()=>P0,ZodNever:()=>h$,ZodNativeEnum:()=>z0,ZodNaN:()=>XU,ZodMap:()=>GU,ZodLiteral:()=>J0,ZodLazy:()=>W0,ZodIssueCode:()=>H,ZodIntersection:()=>L0,ZodFunction:()=>j0,ZodFirstPartyTypeKind:()=>i,ZodError:()=>N$,ZodEnum:()=>o6,ZodEffects:()=>R$,ZodDiscriminatedUnion:()=>PE,ZodDefault:()=>R0,ZodDate:()=>mg,ZodCatch:()=>G0,ZodBranded:()=>SE,ZodBoolean:()=>A0,ZodBigInt:()=>t6,ZodArray:()=>F$,ZodAny:()=>ig,Schema:()=>__,ParseStatus:()=>n_,OK:()=>p_,NEVER:()=>tZ,INVALID:()=>m,EMPTY_PATH:()=>nM,DIRTY:()=>I0,BRAND:()=>PZ});var D_;(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((E)=>typeof D[D[E]]!=="number"),j={};for(let E of I)j[E]=D[E];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}})(D_||(D_={}));var fW;(function(_){_.mergeShapes=($,g)=>{return{...$,...g}}})(fW||(fW={}));var y=D_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),J6=(_)=>{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}},H=D_.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"]),yM=(_)=>{return JSON.stringify(_,null,2).replace(/"([^"]+)":/g,"$1:")};class N$ 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,E=0;while(E$.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()}}N$.create=(_)=>{return new N$(_)};var cM=(_,$)=>{let g;switch(_.code){case H.invalid_type:if(_.received===y.undefined)g="Required";else g=`Expected ${_.expected}, received ${_.received}`;break;case H.invalid_literal:g=`Invalid literal value, expected ${JSON.stringify(_.expected,D_.jsonStringifyReplacer)}`;break;case H.unrecognized_keys:g=`Unrecognized key(s) in object: ${D_.joinValues(_.keys,", ")}`;break;case H.invalid_union:g="Invalid input";break;case H.invalid_union_discriminator:g=`Invalid discriminator value. Expected ${D_.joinValues(_.options)}`;break;case H.invalid_enum_value:g=`Invalid enum value. Expected ${D_.joinValues(_.options)}, received '${_.received}'`;break;case H.invalid_arguments:g="Invalid function arguments";break;case H.invalid_return_type:g="Invalid function return type";break;case H.invalid_date:g="Invalid date";break;case H.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 D_.assertNever(_.validation);else if(_.validation!=="regex")g=`Invalid ${_.validation}`;else g="Invalid";break;case H.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 H.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 H.custom:g="Invalid input";break;case H.invalid_intersection_types:g="Intersection results could not be merged";break;case H.not_multiple_of:g=`Number must be a multiple of ${_.multipleOf}`;break;case H.not_finite:g="Number must be finite";break;default:g=$.defaultError,D_.assertNever(_)}return{message:g}},N0=cM,X9=N0;function hM(_){X9=_}function EE(){return X9}var NE=(_)=>{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 E="",A=U.filter((O)=>!!O).slice().reverse();for(let O of A)E=O(j,{data:$,defaultError:E}).message;return{...D,path:I,message:E}},nM=[];function f(_,$){let g=EE(),U=NE({issueData:$,data:_.data,path:_.path,errorMaps:[_.common.contextualErrorMap,_.schemaErrorMap,g,g===N0?void 0:N0].filter((D)=>!!D)});_.common.issues.push(U)}class n_{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 n_.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"}),I0=(_)=>({status:"dirty",value:_}),p_=(_)=>({status:"valid",value:_}),xW=(_)=>_.status==="aborted",yW=(_)=>_.status==="dirty",dg=(_)=>_.status==="valid",WU=(_)=>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 A9=(_,$)=>{if(dg($))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 N$(_.common.issues);return this._error=g,this._error}}}};function a(_){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,E)=>{let{message:A}=_;if(j.code==="invalid_enum_value")return{message:A??E.defaultError};if(typeof E.data>"u")return{message:A??U??E.defaultError};if(j.code!=="invalid_type")return{message:E.defaultError};return{message:A??g??E.defaultError}},description:D}}class __{get description(){return this._def.description}_getType(_){return J6(_.data)}_getOrReturnCtx(_,$){return $||{common:_.parent.common,data:_.data,parsedType:J6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}_processInputParams(_){return{status:new n_,ctx:{common:_.parent.common,data:_.data,parsedType:J6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}}_parseSync(_){let $=this._parse(_);if(WU($))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:J6(_)},U=this._parseSync({data:_,path:g.path,parent:g});return A9(g,U)}"~validate"(_){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:J6(_)};if(!this["~standard"].async)try{let g=this._parseSync({data:_,path:[],parent:$});return dg(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)=>dg(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:J6(_)},U=this._parse({data:_,path:g.path,parent:g}),D=await(WU(U)?U:Promise.resolve(U));return A9(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:H.custom,...g(U)});if(typeof Promise<"u"&&I instanceof Promise)return I.then((E)=>{if(!E)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 r$.create(this,this._def)}nullable(){return z6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return F$.create(this)}promise(){return tg.create(this,this._def)}or(_){return S0.create([this,_],this._def)}and(_){return L0.create(this,_,this._def)}transform(_){return new R$({...a(this._def),schema:this,typeName:i.ZodEffects,effect:{type:"transform",transform:_}})}default(_){let $=typeof _==="function"?_:()=>_;return new R0({...a(this._def),innerType:this,defaultValue:$,typeName:i.ZodDefault})}brand(){return new SE({typeName:i.ZodBranded,type:this,...a(this._def)})}catch(_){let $=typeof _==="function"?_:()=>_;return new G0({...a(this._def),innerType:this,catchValue:$,typeName:i.ZodCatch})}describe(_){return new this.constructor({...this._def,description:_})}pipe(_){return YU.create(this,_)}readonly(){return X0.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var dM=/^c[^\s-]{8,}$/i,mM=/^[0-9a-z]+$/,iM=/^[0-9A-HJKMNP-TV-Z]{26}$/i,lM=/^[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,tM=/^[a-z0-9_-]{21}$/i,oM=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,pM=/^[-+]?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)?)??$/,eM=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,aM="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",wW,sM=/^(?:(?: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])$/,_Z=/^(?:(?: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])$/,$Z=/^(([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]))$/,gZ=/^(([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])$/,DZ=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,UZ=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Y9="((\\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])))",IZ=new RegExp(`^${Y9}$`);function Q9(_){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 jZ(_){return new RegExp(`^${Q9(_)}$`)}function T9(_){let $=`${Y9}T${Q9(_)}`,g=[];if(g.push(_.local?"Z?":"Z"),_.offset)g.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${g.join("|")})`,new RegExp(`^${$}$`)}function EZ(_,$){if(($==="v4"||!$)&&sM.test(_))return!0;if(($==="v6"||!$)&&$Z.test(_))return!0;return!1}function NZ(_,$){if(!oM.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 AZ(_,$){if(($==="v4"||!$)&&_Z.test(_))return!0;if(($==="v6"||!$)&&gZ.test(_))return!0;return!1}class V$ extends __{_parse(_){if(this._def.coerce)_.data=String(_.data);if(this._getType(_)!==y.string){let D=this._getOrReturnCtx(_);return f(D,{code:H.invalid_type,expected:y.string,received:D.parsedType}),m}let g=new n_,U=void 0;for(let D of this._def.checks)if(D.kind==="min"){if(_.data.lengthD.value)U=this._getOrReturnCtx(_,U),f(U,{code:H.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:H.invalid_string,...n.errToObj(g)})}_addCheck(_){return new V$({...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 V$({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new V$({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new V$({...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 _}}V$.create=(_)=>{return new V$({checks:[],typeName:i.ZodString,coerce:_?.coerce??!1,...a(_)})};function OZ(_,$){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 l6 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 f(D,{code:H.invalid_type,expected:y.number,received:D.parsedType}),m}let g=void 0,U=new n_;for(let D of this._def.checks)if(D.kind==="int"){if(!D_.isInteger(_.data))g=this._getOrReturnCtx(_,g),f(g,{code:H.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),f(g,{code:H.too_big,maximum:D.value,type:"number",inclusive:D.inclusive,exact:!1,message:D.message}),U.dirty()}else if(D.kind==="multipleOf"){if(OZ(_.data,D.value)!==0)g=this._getOrReturnCtx(_,g),f(g,{code:H.not_multiple_of,multipleOf:D.value,message:D.message}),U.dirty()}else if(D.kind==="finite"){if(!Number.isFinite(_.data))g=this._getOrReturnCtx(_,g),f(g,{code:H.not_finite,message:D.message}),U.dirty()}else D_.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 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,_]})}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"&&D_.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(_)}}l6.create=(_)=>{return new l6({checks:[],typeName:i.ZodNumber,coerce:_?.coerce||!1,...a(_)})};class t6 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 n_;for(let D of this._def.checks)if(D.kind==="min"){if(D.inclusive?_.dataD.value:_.data>=D.value)g=this._getOrReturnCtx(_,g),f(g,{code:H.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),f(g,{code:H.not_multiple_of,multipleOf:D.value,message:D.message}),U.dirty()}else D_.assertNever(D);return{status:U.value,value:_.data}}_getInvalidInput(_){let $=this._getOrReturnCtx(_);return f($,{code:H.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 t6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:g,message:n.toString(U)}]})}_addCheck(_){return new t6({...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 _}}t6.create=(_)=>{return new t6({checks:[],typeName:i.ZodBigInt,coerce:_?.coerce??!1,...a(_)})};class A0 extends __{_parse(_){if(this._def.coerce)_.data=Boolean(_.data);if(this._getType(_)!==y.boolean){let g=this._getOrReturnCtx(_);return f(g,{code:H.invalid_type,expected:y.boolean,received:g.parsedType}),m}return p_(_.data)}}A0.create=(_)=>{return new A0({typeName:i.ZodBoolean,coerce:_?.coerce||!1,...a(_)})};class mg extends __{_parse(_){if(this._def.coerce)_.data=new Date(_.data);if(this._getType(_)!==y.date){let D=this._getOrReturnCtx(_);return f(D,{code:H.invalid_type,expected:y.date,received:D.parsedType}),m}if(Number.isNaN(_.data.getTime())){let D=this._getOrReturnCtx(_);return f(D,{code:H.invalid_date}),m}let g=new n_,U=void 0;for(let D of this._def.checks)if(D.kind==="min"){if(_.data.getTime()D.value)U=this._getOrReturnCtx(_,U),f(U,{code:H.too_big,message:D.message,inclusive:!0,exact:!1,maximum:D.value,type:"date"}),g.dirty()}else D_.assertNever(D);return{status:g.value,value:new Date(_.data.getTime())}}_addCheck(_){return new mg({...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}}mg.create=(_)=>{return new mg({checks:[],coerce:_?.coerce||!1,typeName:i.ZodDate,...a(_)})};class JU extends __{_parse(_){if(this._getType(_)!==y.symbol){let g=this._getOrReturnCtx(_);return f(g,{code:H.invalid_type,expected:y.symbol,received:g.parsedType}),m}return p_(_.data)}}JU.create=(_)=>{return new JU({typeName:i.ZodSymbol,...a(_)})};class O0 extends __{_parse(_){if(this._getType(_)!==y.undefined){let g=this._getOrReturnCtx(_);return f(g,{code:H.invalid_type,expected:y.undefined,received:g.parsedType}),m}return p_(_.data)}}O0.create=(_)=>{return new O0({typeName:i.ZodUndefined,...a(_)})};class P0 extends __{_parse(_){if(this._getType(_)!==y.null){let g=this._getOrReturnCtx(_);return f(g,{code:H.invalid_type,expected:y.null,received:g.parsedType}),m}return p_(_.data)}}P0.create=(_)=>{return new P0({typeName:i.ZodNull,...a(_)})};class ig extends __{constructor(){super(...arguments);this._any=!0}_parse(_){return p_(_.data)}}ig.create=(_)=>{return new ig({typeName:i.ZodAny,...a(_)})};class i6 extends __{constructor(){super(...arguments);this._unknown=!0}_parse(_){return p_(_.data)}}i6.create=(_)=>{return new i6({typeName:i.ZodUnknown,...a(_)})};class h$ extends __{_parse(_){let $=this._getOrReturnCtx(_);return f($,{code:H.invalid_type,expected:y.never,received:$.parsedType}),m}}h$.create=(_)=>{return new h$({typeName:i.ZodNever,...a(_)})};class zU extends __{_parse(_){if(this._getType(_)!==y.undefined){let g=this._getOrReturnCtx(_);return f(g,{code:H.invalid_type,expected:y.void,received:g.parsedType}),m}return p_(_.data)}}zU.create=(_)=>{return new zU({typeName:i.ZodVoid,...a(_)})};class F$ extends __{_parse(_){let{ctx:$,status:g}=this._processInputParams(_),U=this._def;if($.parsedType!==y.array)return f($,{code:H.invalid_type,expected:y.array,received:$.parsedType}),m;if(U.exactLength!==null){let I=$.data.length>U.exactLength.value,j=$.data.lengthU.maxLength.value)f($,{code:H.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 n_.mergeArray(g,I)});let D=[...$.data].map((I,j)=>{return U.type._parseSync(new b$($,I,$.path,j))});return n_.mergeArray(g,D)}get element(){return this._def.type}min(_,$){return new F$({...this._def,minLength:{value:_,message:n.toString($)}})}max(_,$){return new F$({...this._def,maxLength:{value:_,message:n.toString($)}})}length(_,$){return new F$({...this._def,exactLength:{value:_,message:n.toString($)}})}nonempty(_){return this.min(1,_)}}F$.create=(_,$)=>{return new F$({type:_,minLength:null,maxLength:null,exactLength:null,typeName:i.ZodArray,...a($)})};function D0(_){if(_ instanceof r_){let $={};for(let g in _.shape){let U=_.shape[g];$[g]=r$.create(D0(U))}return new r_({..._._def,shape:()=>$})}else if(_ instanceof F$)return new F$({..._._def,type:D0(_.element)});else if(_ instanceof r$)return r$.create(D0(_.unwrap()));else if(_ instanceof z6)return z6.create(D0(_.unwrap()));else if(_ instanceof n$)return n$.create(_.items.map(($)=>D0($)));else return _}class r_ 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(),$=D_.objectKeys(_);return this._cached={shape:_,keys:$},this._cached}_parse(_){if(this._getType(_)!==y.object){let A=this._getOrReturnCtx(_);return f(A,{code:H.invalid_type,expected:y.object,received:A.parsedType}),m}let{status:g,ctx:U}=this._processInputParams(_),{shape:D,keys:I}=this._getCached(),j=[];if(!(this._def.catchall instanceof h$&&this._def.unknownKeys==="strip")){for(let A in U.data)if(!I.includes(A))j.push(A)}let E=[];for(let A of I){let O=D[A],P=U.data[A];E.push({key:{status:"valid",value:A},value:O._parse(new b$(U,P,U.path,A)),alwaysSet:A in U.data})}if(this._def.catchall instanceof h$){let A=this._def.unknownKeys;if(A==="passthrough")for(let O of j)E.push({key:{status:"valid",value:O},value:{status:"valid",value:U.data[O]}});else if(A==="strict"){if(j.length>0)f(U,{code:H.unrecognized_keys,keys:j}),g.dirty()}else if(A==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let A=this._def.catchall;for(let O of j){let P=U.data[O];E.push({key:{status:"valid",value:O},value:A._parse(new b$(U,P,U.path,O)),alwaysSet:O in U.data})}}if(U.common.async)return Promise.resolve().then(async()=>{let A=[];for(let O of E){let P=await O.key,W=await O.value;A.push({key:P,value:W,alwaysSet:O.alwaysSet})}return A}).then((A)=>{return n_.mergeObjectSync(g,A)});else return n_.mergeObjectSync(g,E)}get shape(){return this._def.shape()}strict(_){return n.errToObj,new r_({...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 r_({...this._def,unknownKeys:"strip"})}passthrough(){return new r_({...this._def,unknownKeys:"passthrough"})}extend(_){return new r_({...this._def,shape:()=>({...this._def.shape(),..._})})}merge(_){return new r_({unknownKeys:_._def.unknownKeys,catchall:_._def.catchall,shape:()=>({...this._def.shape(),..._._def.shape()}),typeName:i.ZodObject})}setKey(_,$){return this.augment({[_]:$})}catchall(_){return new r_({...this._def,catchall:_})}pick(_){let $={};for(let g of D_.objectKeys(_))if(_[g]&&this.shape[g])$[g]=this.shape[g];return new r_({...this._def,shape:()=>$})}omit(_){let $={};for(let g of D_.objectKeys(this.shape))if(!_[g])$[g]=this.shape[g];return new r_({...this._def,shape:()=>$})}deepPartial(){return D0(this)}partial(_){let $={};for(let g of D_.objectKeys(this.shape)){let U=this.shape[g];if(_&&!_[g])$[g]=U;else $[g]=U.optional()}return new r_({...this._def,shape:()=>$})}required(_){let $={};for(let g of D_.objectKeys(this.shape))if(_&&!_[g])$[g]=this.shape[g];else{let D=this.shape[g];while(D instanceof r$)D=D._def.innerType;$[g]=D}return new r_({...this._def,shape:()=>$})}keyof(){return K9(D_.objectKeys(this.shape))}}r_.create=(_,$)=>{return new r_({shape:()=>_,unknownKeys:"strip",catchall:h$.create(),typeName:i.ZodObject,...a($)})};r_.strictCreate=(_,$)=>{return new r_({shape:()=>_,unknownKeys:"strict",catchall:h$.create(),typeName:i.ZodObject,...a($)})};r_.lazycreate=(_,$)=>{return new r_({shape:_,unknownKeys:"strip",catchall:h$.create(),typeName:i.ZodObject,...a($)})};class S0 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 N$(j.ctx.common.issues));return f($,{code:H.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 E of g){let A={...$,common:{...$.common,issues:[]},parent:null},O=E._parseSync({data:$.data,path:$.path,parent:A});if(O.status==="valid")return O;else if(O.status==="dirty"&&!D)D={result:O,ctx:A};if(A.common.issues.length)I.push(A.common.issues)}if(D)return $.common.issues.push(...D.ctx.common.issues),D.result;let j=I.map((E)=>new N$(E));return f($,{code:H.invalid_union,unionErrors:j}),m}}get options(){return this._def.options}}S0.create=(_,$)=>{return new S0({options:_,typeName:i.ZodUnion,...a($)})};var W6=(_)=>{if(_ instanceof W0)return W6(_.schema);else if(_ instanceof R$)return W6(_.innerType());else if(_ instanceof J0)return[_.value];else if(_ instanceof o6)return _.options;else if(_ instanceof z0)return D_.objectValues(_.enum);else if(_ instanceof R0)return W6(_._def.innerType);else if(_ instanceof O0)return[void 0];else if(_ instanceof P0)return[null];else if(_ instanceof r$)return[void 0,...W6(_.unwrap())];else if(_ instanceof z6)return[null,...W6(_.unwrap())];else if(_ instanceof SE)return W6(_.unwrap());else if(_ instanceof X0)return W6(_.unwrap());else if(_ instanceof G0)return W6(_._def.innerType);else return[]};class PE extends __{_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.object)return f($,{code:H.invalid_type,expected:y.object,received:$.parsedType}),m;let g=this.discriminator,U=$.data[g],D=this.optionsMap.get(U);if(!D)return f($,{code:H.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=W6(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 PE({typeName:i.ZodDiscriminatedUnion,discriminator:_,options:$,optionsMap:U,...a(g)})}}function cW(_,$){let g=J6(_),U=J6($);if(_===$)return{valid:!0,data:_};else if(g===y.object&&U===y.object){let D=D_.objectKeys($),I=D_.objectKeys(_).filter((E)=>D.indexOf(E)!==-1),j={..._,...$};for(let E of I){let A=cW(_[E],$[E]);if(!A.valid)return{valid:!1};j[E]=A.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],E=$[I],A=cW(j,E);if(!A.valid)return{valid:!1};D.push(A.data)}return{valid:!0,data:D}}else if(g===y.date&&U===y.date&&+_===+$)return{valid:!0,data:_};else return{valid:!1}}class L0 extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_),U=(D,I)=>{if(xW(D)||xW(I))return m;let j=cW(D.value,I.value);if(!j.valid)return f(g,{code:H.invalid_intersection_types}),m;if(yW(D)||yW(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}))}}L0.create=(_,$,g)=>{return new L0({left:_,right:$,typeName:i.ZodIntersection,...a(g)})};class n$ extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.parsedType!==y.array)return f(g,{code:H.invalid_type,expected:y.array,received:g.parsedType}),m;if(g.data.lengththis._def.items.length)f(g,{code:H.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let D=[...g.data].map((I,j)=>{let E=this._def.items[j]||this._def.rest;if(!E)return null;return E._parse(new b$(g,I,g.path,j))}).filter((I)=>!!I);if(g.common.async)return Promise.all(D).then((I)=>{return n_.mergeArray($,I)});else return n_.mergeArray($,D)}get items(){return this._def.items}rest(_){return new n$({...this._def,rest:_})}}n$.create=(_,$)=>{if(!Array.isArray(_))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new n$({items:_,typeName:i.ZodTuple,rest:null,...a($)})};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.object)return f(g,{code:H.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 n_.mergeObjectAsync($,U);else return n_.mergeObjectSync($,U)}get element(){return this._def.valueType}static create(_,$,g){if($ instanceof __)return new RU({keyType:_,valueType:$,typeName:i.ZodRecord,...a(g)});return new RU({keyType:V$.create(),valueType:_,typeName:i.ZodRecord,...a($)})}}class GU 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 f(g,{code:H.invalid_type,expected:y.map,received:g.parsedType}),m;let U=this._def.keyType,D=this._def.valueType,I=[...g.data.entries()].map(([j,E],A)=>{return{key:U._parse(new b$(g,j,g.path,[A,"key"])),value:D._parse(new b$(g,E,g.path,[A,"value"]))}});if(g.common.async){let j=new Map;return Promise.resolve().then(async()=>{for(let E of I){let A=await E.key,O=await E.value;if(A.status==="aborted"||O.status==="aborted")return m;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}})}else{let j=new Map;for(let E of I){let{key:A,value:O}=E;if(A.status==="aborted"||O.status==="aborted")return m;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}}}}GU.create=(_,$,g)=>{return new GU({valueType:$,keyType:_,typeName:i.ZodMap,...a(g)})};class lg extends __{_parse(_){let{status:$,ctx:g}=this._processInputParams(_);if(g.parsedType!==y.set)return f(g,{code:H.invalid_type,expected:y.set,received:g.parsedType}),m;let U=this._def;if(U.minSize!==null){if(g.data.sizeU.maxSize.value)f(g,{code:H.too_big,maximum:U.maxSize.value,type:"set",inclusive:!0,exact:!1,message:U.maxSize.message}),$.dirty()}let D=this._def.valueType;function I(E){let A=new Set;for(let O of E){if(O.status==="aborted")return m;if(O.status==="dirty")$.dirty();A.add(O.value)}return{status:$.value,value:A}}let j=[...g.data.values()].map((E,A)=>D._parse(new b$(g,E,g.path,A)));if(g.common.async)return Promise.all(j).then((E)=>I(E));else return I(j)}min(_,$){return new lg({...this._def,minSize:{value:_,message:n.toString($)}})}max(_,$){return new lg({...this._def,maxSize:{value:_,message:n.toString($)}})}size(_,$){return this.min(_,$).max(_,$)}nonempty(_){return this.min(1,_)}}lg.create=(_,$)=>{return new lg({valueType:_,minSize:null,maxSize:null,typeName:i.ZodSet,...a($)})};class j0 extends __{constructor(){super(...arguments);this.validate=this.implement}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.function)return f($,{code:H.invalid_type,expected:y.function,received:$.parsedType}),m;function g(j,E){return NE({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,EE(),N0].filter((A)=>!!A),issueData:{code:H.invalid_arguments,argumentsError:E}})}function U(j,E){return NE({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,EE(),N0].filter((A)=>!!A),issueData:{code:H.invalid_return_type,returnTypeError:E}})}let D={errorMap:$.common.contextualErrorMap},I=$.data;if(this._def.returns instanceof tg){let j=this;return p_(async function(...E){let A=new N$([]),O=await j._def.args.parseAsync(E,D).catch((z)=>{throw A.addIssue(g(E,z)),A}),P=await Reflect.apply(I,this,O);return await j._def.returns._def.type.parseAsync(P,D).catch((z)=>{throw A.addIssue(U(P,z)),A})})}else{let j=this;return p_(function(...E){let A=j._def.args.safeParse(E,D);if(!A.success)throw new N$([g(E,A.error)]);let O=Reflect.apply(I,this,A.data),P=j._def.returns.safeParse(O,D);if(!P.success)throw new N$([U(O,P.error)]);return P.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(..._){return new j0({...this._def,args:n$.create(_).rest(i6.create())})}returns(_){return new j0({...this._def,returns:_})}implement(_){return this.parse(_)}strictImplement(_){return this.parse(_)}static create(_,$,g){return new j0({args:_?_:n$.create([]).rest(i6.create()),returns:$||i6.create(),typeName:i.ZodFunction,...a(g)})}}class W0 extends __{get schema(){return this._def.getter()}_parse(_){let{ctx:$}=this._processInputParams(_);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}}W0.create=(_,$)=>{return new W0({getter:_,typeName:i.ZodLazy,...a($)})};class J0 extends __{_parse(_){if(_.data!==this._def.value){let $=this._getOrReturnCtx(_);return f($,{received:$.data,code:H.invalid_literal,expected:this._def.value}),m}return{status:"valid",value:_.data}}get value(){return this._def.value}}J0.create=(_,$)=>{return new J0({value:_,typeName:i.ZodLiteral,...a($)})};function K9(_,$){return new o6({values:_,typeName:i.ZodEnum,...a($)})}class o6 extends __{_parse(_){if(typeof _.data!=="string"){let $=this._getOrReturnCtx(_),g=this._def.values;return f($,{expected:D_.joinValues(g),received:$.parsedType,code:H.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 f($,{received:$.data,code:H.invalid_enum_value,options:g}),m}return p_(_.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 o6.create(_,{...this._def,...$})}exclude(_,$=this._def){return o6.create(this.options.filter((g)=>!_.includes(g)),{...this._def,...$})}}o6.create=K9;class z0 extends __{_parse(_){let $=D_.getValidEnumValues(this._def.values),g=this._getOrReturnCtx(_);if(g.parsedType!==y.string&&g.parsedType!==y.number){let U=D_.objectValues($);return f(g,{expected:D_.joinValues(U),received:g.parsedType,code:H.invalid_type}),m}if(!this._cache)this._cache=new Set(D_.getValidEnumValues(this._def.values));if(!this._cache.has(_.data)){let U=D_.objectValues($);return f(g,{received:g.data,code:H.invalid_enum_value,options:U}),m}return p_(_.data)}get enum(){return this._def.values}}z0.create=(_,$)=>{return new z0({values:_,typeName:i.ZodNativeEnum,...a($)})};class tg extends __{unwrap(){return this._def.type}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.promise&&$.common.async===!1)return f($,{code:H.invalid_type,expected:y.promise,received:$.parsedType}),m;let g=$.parsedType===y.promise?$.data:Promise.resolve($.data);return p_(g.then((U)=>{return this._def.type.parseAsync(U,{path:$.path,errorMap:$.common.contextualErrorMap})}))}}tg.create=(_,$)=>{return new tg({type:_,typeName:i.ZodPromise,...a($)})};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(f(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 E=await this._def.schema._parseAsync({data:j,path:g.path,parent:g});if(E.status==="aborted")return m;if(E.status==="dirty")return I0(E.value);if($.value==="dirty")return I0(E.value);return E});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 I0(j.value);if($.value==="dirty")return I0(j.value);return j}}if(U.type==="refinement"){let I=(j)=>{let E=U.refinement(j,D);if(g.common.async)return Promise.resolve(E);if(E 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(!dg(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(!dg(I))return m;return Promise.resolve(U.transform(I.value,D)).then((j)=>({status:$.value,value:j}))});D_.assertNever(U)}}R$.create=(_,$,g)=>{return new R$({schema:_,typeName:i.ZodEffects,effect:$,...a(g)})};R$.createWithPreprocess=(_,$,g)=>{return new R$({schema:$,effect:{type:"preprocess",transform:_},typeName:i.ZodEffects,...a(g)})};class r$ extends __{_parse(_){if(this._getType(_)===y.undefined)return p_(void 0);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}r$.create=(_,$)=>{return new r$({innerType:_,typeName:i.ZodOptional,...a($)})};class z6 extends __{_parse(_){if(this._getType(_)===y.null)return p_(null);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}z6.create=(_,$)=>{return new z6({innerType:_,typeName:i.ZodNullable,...a($)})};class R0 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}}R0.create=(_,$)=>{return new R0({innerType:_,typeName:i.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...a($)})};class G0 extends __{_parse(_){let{ctx:$}=this._processInputParams(_),g={...$,common:{...$.common,issues:[]}},U=this._def.innerType._parse({data:g.data,path:g.path,parent:{...g}});if(WU(U))return U.then((D)=>{return{status:"valid",value:D.status==="valid"?D.value:this._def.catchValue({get error(){return new N$(g.common.issues)},input:g.data})}});else return{status:"valid",value:U.status==="valid"?U.value:this._def.catchValue({get error(){return new N$(g.common.issues)},input:g.data})}}removeCatch(){return this._def.innerType}}G0.create=(_,$)=>{return new G0({innerType:_,typeName:i.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...a($)})};class XU extends __{_parse(_){if(this._getType(_)!==y.nan){let g=this._getOrReturnCtx(_);return f(g,{code:H.invalid_type,expected:y.nan,received:g.parsedType}),m}return{status:"valid",value:_.data}}}XU.create=(_)=>{return new XU({typeName:i.ZodNaN,...a(_)})};var PZ=Symbol("zod_brand");class SE 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(),I0(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 X0 extends __{_parse(_){let $=this._def.innerType._parse(_),g=(U)=>{if(dg(U))U.value=Object.freeze(U.value);return U};return WU($)?$.then((U)=>g(U)):g($)}unwrap(){return this._def.innerType}}X0.create=(_,$)=>{return new X0({innerType:_,typeName:i.ZodReadonly,...a($)})};function O9(_,$){let g=typeof _==="function"?_($):typeof _==="string"?{message:_}:_;return typeof g==="string"?{message:g}:g}function q9(_,$={},g){if(_)return ig.create().superRefine((U,D)=>{let I=_(U);if(I instanceof Promise)return I.then((j)=>{if(!j){let E=O9($,U),A=E.fatal??g??!0;D.addIssue({code:"custom",...E,fatal:A})}});if(!I){let j=O9($,U),E=j.fatal??g??!0;D.addIssue({code:"custom",...j,fatal:E})}return});return ig.create()}var SZ={object:r_.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 LZ=(_,$={message:`Input not instance of ${_.name}`})=>q9((g)=>g instanceof _,$),B9=V$.create,V9=l6.create,WZ=XU.create,JZ=t6.create,F9=A0.create,zZ=mg.create,RZ=JU.create,GZ=O0.create,XZ=P0.create,YZ=ig.create,QZ=i6.create,TZ=h$.create,KZ=zU.create,qZ=F$.create,BZ=r_.create,VZ=r_.strictCreate,FZ=S0.create,rZ=PE.create,bZ=L0.create,MZ=n$.create,ZZ=RU.create,HZ=GU.create,kZ=lg.create,CZ=j0.create,vZ=W0.create,wZ=J0.create,uZ=o6.create,fZ=z0.create,xZ=tg.create,P9=R$.create,yZ=r$.create,cZ=z6.create,hZ=R$.createWithPreprocess,nZ=YU.create,dZ=()=>B9().optional(),mZ=()=>V9().optional(),iZ=()=>F9().optional(),lZ={string:(_)=>V$.create({..._,coerce:!0}),number:(_)=>l6.create({..._,coerce:!0}),boolean:(_)=>A0.create({..._,coerce:!0}),bigint:(_)=>t6.create({..._,coerce:!0}),date:(_)=>mg.create({..._,coerce:!0})},tZ=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"},nW=N.string().regex(/^hasna\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*\.v[0-9]+$/),q_=N.string().datetime(),t=N.string().trim().min(1),M$=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://"),r9=N.string().regex(/^[a-fA-F0-9]{64}$/),b9=N.string().regex(/^(sha256:)?[a-fA-F0-9]{64}$/),p6=N.record(N.unknown()),T0=N.array(N.string().min(1)).default([]),og=q_.nullable().optional(),oZ=new Set(["succeeded","failed","cancelled","blocked","skipped"]),ag=N.enum(["pending","running","succeeded","failed","cancelled","blocked","skipped","unknown"]);function P_(_){return N.object({schema:N.literal(_),id:N.string().min(1),createdAt:q_,updatedAt:og,metadata:p6.optional()}).strict()}var bd=N.object({schema:nW,id:N.string().min(1),createdAt:q_,updatedAt:og,metadata:p6.optional()}).strict(),M9=N.enum(["agent","human","service","model","workflow","system"]),pZ=P_(x.actorRef).extend({kind:M9,name:N.string().min(1).optional(),provider:N.string().min(1).optional(),accountId:N.string().min(1).optional(),machineId:N.string().min(1).optional(),capabilities:N.array(N.string().min(1)).default([])}).strict(),d$=N.object({kind:M9,id:N.string().min(1),name:N.string().min(1).optional(),provider:N.string().min(1).optional(),accountId:N.string().min(1).optional(),machineId:N.string().min(1).optional()}).strict(),Z9=N.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"]),eZ=P_(x.resourceRef).extend({kind:Z9,name:N.string().min(1).optional(),uri:M$.optional(),externalId:t.optional(),sourcePackage:t.optional(),tags:T0}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.externalId&&_.sourcePackage))$.addIssue({code:N.ZodIssueCode.custom,message:"Resource refs require uri or both sourcePackage and externalId",path:["uri"]})}),s=N.object({kind:Z9,id:N.string().min(1),name:N.string().min(1).optional(),uri:M$.optional(),externalId:t.optional(),sourcePackage:t.optional(),tags:T0}).strict().superRefine((_,$)=>{if(!_.uri&&Boolean(_.externalId)!==Boolean(_.sourcePackage))$.addIssue({code:N.ZodIssueCode.custom,message:"Resource pointers with external package locators require both sourcePackage and externalId",path:_.externalId?["sourcePackage"]:["externalId"]})}),dW=N.enum(["file","command_output","screenshot","log","diff","report","artifact","url","video","har","test_result","metric","trace","other"]),aZ=N.enum(["none","partial","full","unknown"]),sZ=P_(x.evidenceRef).extend({kind:dW,uri:M$,sha256:r9.optional(),summary:N.string().min(1).optional(),contentType:N.string().min(1).optional(),sizeBytes:N.number().int().nonnegative().optional(),redaction:aZ.default("unknown"),producer:d$.optional(),resourceRefs:N.array(s).default([]),tags:T0}).strict(),Y_=N.object({id:N.string().min(1),kind:dW.optional(),uri:M$.optional(),sha256:r9.optional(),summary:N.string().min(1).optional()}).strict(),QU=P_(x.costEstimate).extend({currency:N.string().regex(/^[A-Z]{3}$/).default("USD"),amountMicros:N.number().int().nonnegative(),provider:N.string().min(1).optional(),model:N.string().min(1).optional(),accountId:N.string().min(1).optional(),promptTokens:N.number().int().nonnegative().optional(),completionTokens:N.number().int().nonnegative().optional(),totalTokens:N.number().int().nonnegative().optional(),basis:N.enum(["actual","estimated","budget","limit"]).default("estimated"),resourceRefs:N.array(s).default([])}).strict().superRefine((_,$)=>{if(_.promptTokens!==void 0&&_.completionTokens!==void 0&&_.totalTokens!==void 0&&_.totalTokens!==_.promptTokens+_.completionTokens)$.addIssue({code:N.ZodIssueCode.custom,message:"totalTokens must equal promptTokens plus completionTokens when all are present",path:["totalTokens"]})}),_H=N.enum(["allowed","denied","warned","approval_required","selected","skipped","unknown"]),H9=P_(x.decisionEnvelope).extend({decisionType:N.enum(["guardrail","model_route","tool_select","budget","secret_access","approval","policy","other"]),status:_H,actor:d$.optional(),traceId:N.string().min(1).optional(),inputHash:b9.optional(),policyBundleId:N.string().min(1).optional(),selected:N.array(s).default([]),skipped:N.array(s).default([]),reason:N.string().min(1),obligations:N.array(N.string().min(1)).default([]),redactions:N.array(N.string().min(1)).default([]),costEstimate:QU.optional(),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{if(_.status==="selected"&&_.selected.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Selected decisions require at least one selected resource",path:["selected"]});if(_.status==="skipped"&&_.skipped.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Skipped decisions require at least one skipped resource",path:["skipped"]});if(_.status==="denied"){if(_.selected.length>0)$.addIssue({code:N.ZodIssueCode.custom,message:"Denied decisions cannot include selected resources",path:["selected"]});if(!_.policyBundleId&&_.evidenceRefs.length===0&&_.obligations.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Denied decisions require policy, evidence, or obligations",path:["policyBundleId"]})}if(_.status==="approval_required"&&_.obligations.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Approval-required decisions require actionable obligations",path:["obligations"]})}),$H=P_(x.capabilityCard).extend({kind:N.enum(["model","tool","machine","agent","lane","connector","service"]),name:N.string().min(1),version:N.string().min(1).optional(),status:N.enum(["available","unavailable","degraded","unknown"]).default("unknown"),capabilities:N.array(N.string().min(1)).default([]),limitations:N.array(N.string().min(1)).default([]),riskLevel:N.enum(["low","medium","high","critical","unknown"]).default("unknown"),costEstimate:QU.optional(),evidenceRefs:N.array(Y_).default([])}).strict(),Y0=N.enum(["mock","fixture","sandbox","read_only_live","live_mutating"]),gH=N.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"]),DH=N.object({refName:t,requiredForModes:N.array(Y0).min(1),allowedSecretInputs:N.array(N.enum(["credential_ref","lease_ref"])).min(1).default(["credential_ref"]),failClosedDiagnostic:t,revocationCheck:N.boolean().default(!0)}).strict(),UH=N.object({operation:t,supportedModes:N.array(Y0).min(1),sideEffectClass:gH,requiresApproval:N.boolean().default(!1),requiresIdempotencyKey:N.boolean().default(!1),requiresSandboxEvidence:N.boolean().default(!1),requiresRollbackOrRevocation:N.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:N.ZodIssueCode.custom,message:"live_mutating operations must declare a side-effecting class",path:["sideEffectClass"]});if(!_.requiresApproval)$.addIssue({code:N.ZodIssueCode.custom,message:"live_mutating operations require approval",path:["requiresApproval"]});if(!_.requiresIdempotencyKey)$.addIssue({code:N.ZodIssueCode.custom,message:"live_mutating operations require idempotency keys",path:["requiresIdempotencyKey"]});if(!_.requiresSandboxEvidence)$.addIssue({code:N.ZodIssueCode.custom,message:"live_mutating operations require sandbox evidence before live proof",path:["requiresSandboxEvidence"]});if(!_.requiresRollbackOrRevocation||!_.rollbackOrRevocation)$.addIssue({code:N.ZodIssueCode.custom,message:"live_mutating operations require rollback or revocation instructions",path:["rollbackOrRevocation"]});if(!_.reconciliation)$.addIssue({code:N.ZodIssueCode.custom,message:"live_mutating operations require reconciliation behavior",path:["reconciliation"]})}}),IH=N.object({providerId:t,appId:t,adapterId:t,ownerPackage:t,modes:N.array(Y0).min(1),defaultMode:Y0,credentialRequirements:N.array(DH).default([]),operations:N.array(UH).min(1),rateLimitPosture:t,costPosture:t.optional(),auditEvents:N.array(t).default([]),redactionRules:N.array(t).default([]),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{if(!_.modes.includes(_.defaultMode))$.addIssue({code:N.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:N.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:N.ZodIssueCode.custom,message:"live_mutating providers require at least one live credential reference requirement",path:["credentialRequirements"]});if(_.auditEvents.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"live_mutating providers require audit events",path:["auditEvents"]})}}),jH=N.object({appId:t,repo:t,priority:N.enum(["p0","p1","p2"]).default("p1"),requiredEvidence:N.array(t).min(1),firstOperations:N.array(t).min(1),blockedUntil:N.array(t).default([])}).strict(),EH=P_(x.providerLiveModeStandard).extend({name:t,version:t,modes:N.array(Y0).refine((_)=>["mock","fixture","sandbox","read_only_live","live_mutating"].every(($)=>_.includes($)),"provider live-mode standard must include every canonical provider mode"),requiredCapabilityFields:N.array(t).min(1),liveMutationGate:N.object({requiredMode:N.literal("live_mutating"),requiredChecks:N.array(t).min(1),forbiddenBypassSignals:N.array(t).min(1),disabledLiveSmoke:t}).strict(),noSideEffectSmoke:N.object({requiredForModes:N.array(Y0).min(1),commandEvidence:N.array(t).min(1),secretOutputScan:N.boolean().default(!0)}).strict(),credentialPolicy:N.object({acceptedInputs:N.array(N.enum(["credential_ref","lease_ref"])).min(1),rawSecretInputsAllowed:N.literal(!1),missingCredentialBehavior:N.literal("fail_closed"),revocationCheckRequired:N.boolean().default(!0)}).strict(),operationCards:N.array(IH).min(1),firstAdoptionTargets:N.array(jH).min(1),evidenceRefs:N.array(Y_).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:N.ZodIssueCode.custom,message:`first adoption target ${D} requires a provider capability card`,path:["firstAdoptionTargets"]})}),NH=N.object({id:N.string().min(1),title:N.string().min(1).optional(),summary:N.string().min(1),text:N.string().optional(),tokens:N.number().int().nonnegative().optional(),source:Y_,resourceRefs:N.array(s).default([])}).strict(),k9=P_(x.contextPack).extend({objective:N.string().min(1),budget:N.object({maxTokens:N.number().int().positive().optional(),maxBytes:N.number().int().positive().optional()}).strict().optional(),items:N.array(NH).default([]),citations:N.array(Y_).default([]),freshness:N.enum(["fresh","stale","unknown"]).default("unknown"),permissions:N.array(N.string().min(1)).default([]),redactions:N.array(N.string().min(1)).default([]),conflicts:N.array(N.string().min(1)).default([]),uncertainty:N.string().min(1).optional()}).strict(),J$=t.refine((_)=>!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."),"Project paths must be relative and cannot contain parent-directory segments"),pg=N.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Project slugs must be lowercase dashed identifiers"),AH=N.enum(["public","internal","private","sensitive"]),OH=N.enum(["draft","active","paused","archived"]),mW=N.enum(["todos","files","mailery","conversations","knowledge","mementos","reports","actions","render","contracts","custom"]),C9=P_(x.integrationRef).extend({kind:mW,name:N.string().min(1),projectId:pg.optional(),sourcePackage:t.optional(),externalId:t.optional(),uri:M$.optional(),enabled:N.boolean().default(!0),readOnly:N.boolean().default(!0),capabilities:N.array(N.string().min(1)).default([]),freshness:N.enum(["fresh","stale","unknown"]).default("unknown"),resourceRef:s.optional(),evidenceRefs:N.array(Y_).default([]),config:p6.optional()}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.sourcePackage&&_.externalId)&&!_.resourceRef)$.addIssue({code:N.ZodIssueCode.custom,message:"Integration refs require uri, resourceRef, or both sourcePackage and externalId",path:["uri"]})}),PH=N.object({schemaRoot:J$.default(".hasna/project"),dashboardManifest:J$.default(".hasna/project/dashboard.render.json"),snapshotsDir:J$.default(".hasna/project/snapshots"),documentsDir:J$.default("documents"),reportsDir:J$.default("reports"),evidenceDir:J$.default(".hasna/project/evidence"),privateDir:J$.default(".hasna/project/private")}).strict(),SH=P_(x.projectManifest).extend({projectId:pg,slug:pg,name:N.string().min(1),summary:N.string().min(1).optional(),status:OH.default("active"),classification:AH.default("private"),owner:d$.optional(),layout:PH.default({}),integrations:N.array(C9).default([]),renderManifests:N.array(s).default([]),resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([]),tags:T0}).strict().superRefine((_,$)=>{let g=new Set,U=new Set;if(_.projectId!==_.slug)$.addIssue({code:N.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:N.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:N.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:N.ZodIssueCode.custom,message:"Project renderManifests must use resource kind render",path:["renderManifests",D,"kind"]});if(U.has(I.id))$.addIssue({code:N.ZodIssueCode.custom,message:"Project renderManifest refs must be unique",path:["renderManifests",D,"id"]});U.add(I.id)}}),LH=N.enum(["local","package","provider","url"]),iW=N.object({id:N.string().min(1),kind:LH,specifier:N.string().min(1),path:J$.optional(),packageName:N.string().min(1).optional(),uri:M$.optional(),provider:mW.optional(),schemaId:nW.optional(),integrity:b9.optional(),resourceRef:s.optional(),optional:N.boolean().default(!1)}).strict().superRefine((_,$)=>{if(_.kind==="local"&&!_.path)$.addIssue({code:N.ZodIssueCode.custom,message:"Local render imports require path",path:["path"]});if(_.kind==="package"&&!_.packageName)$.addIssue({code:N.ZodIssueCode.custom,message:"Package render imports require packageName",path:["packageName"]});if(_.kind==="provider"&&!_.provider)$.addIssue({code:N.ZodIssueCode.custom,message:"Provider render imports require provider",path:["provider"]});if(_.kind==="url"&&!_.uri)$.addIssue({code:N.ZodIssueCode.custom,message:"URL render imports require uri",path:["uri"]})}),WH=N.enum(["dashboard","canvas","panel","report","document","custom"]),JH=N.object({id:N.string().min(1),title:N.string().min(1),kind:WH,default:N.boolean().default(!1),entry:J$.optional(),imports:N.array(iW).default([]),panelRefs:N.array(s).default([]),dataRefs:N.array(s).default([]),layout:p6.optional()}).strict(),zH=P_(x.renderManifest).extend({projectId:pg,name:N.string().min(1),version:N.string().min(1),manifestPath:J$.default(".hasna/project/dashboard.render.json"),renderer:N.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),views:N.array(JH).min(1),imports:N.array(iW).default([]),theme:p6.optional(),compatibility:N.object({minProjectsVersion:N.string().min(1).optional(),minContractsVersion:N.string().min(1).optional()}).strict().optional(),resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{let g=_.views.filter((I)=>I.default),U=new Set,D=new Set;if(g.length>1)$.addIssue({code:N.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:N.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:N.ZodIssueCode.custom,message:"Render manifest view ids must be unique",path:["views",I,"id"]});U.add(j.id);let E=new Set;for(let[A,O]of j.imports.entries()){if(E.has(O.id))$.addIssue({code:N.ZodIssueCode.custom,message:"Render view import ids must be unique",path:["views",I,"imports",A,"id"]});E.add(O.id)}for(let[A,O]of j.panelRefs.entries())if(O.kind!=="panel")$.addIssue({code:N.ZodIssueCode.custom,message:"Render view panelRefs must use resource kind panel",path:["views",I,"panelRefs",A,"kind"]})}}),RH=N.enum(["ready","empty","loading","error","auth_required","unavailable","stale"]),GH=N.enum(["overview","tasks","files","mailery","conversations","knowledge","mementos","reports","actions","timeline","risks","documents","custom"]),XH=N.object({id:N.string().min(1),label:N.string().min(1),value:N.union([N.string(),N.number(),N.boolean()]),unit:N.string().min(1).optional(),status:N.enum(["good","warning","critical","unknown"]).default("unknown"),resourceRefs:N.array(s).default([])}).strict(),YH=N.object({id:N.string().min(1),title:N.string().min(1),summary:N.string().min(1).optional(),status:N.string().min(1).optional(),priority:N.enum(["low","medium","high","critical","unknown"]).default("unknown"),timestamp:q_.optional(),resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([]),metadata:p6.optional()}).strict(),QH=N.object({renderer:N.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),title:N.string().min(1).optional(),entry:J$.optional(),imports:N.array(iW).default([]),spec:p6.default({})}).strict(),v9=P_(x.projectPanel).extend({projectId:pg,provider:N.object({kind:mW,id:N.string().min(1),name:N.string().min(1).optional(),sourcePackage:t.optional(),externalId:t.optional()}).strict(),kind:GH,title:N.string().min(1),summary:N.string().min(1).optional(),state:RH.default("ready"),stateReason:N.string().min(1).optional(),generatedAt:q_,freshness:N.enum(["fresh","stale","unknown"]).default("unknown"),metrics:N.array(XH).default([]),items:N.array(YH).default([]),actions:N.array(s).default([]),resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([]),renderFragment:QH.optional(),warnings:N.array(N.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:N.ZodIssueCode.custom,message:"Non-ready provider states require stateReason",path:["stateReason"]});if(_.state==="ready"&&_.metrics.length===0&&_.items.length===0&&!_.renderFragment)$.addIssue({code:N.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:N.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:N.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:N.ZodIssueCode.custom,message:"Project panel actions must use resource kind action",path:["actions",I,"kind"]})}),TH=P_(x.projectSnapshot).extend({projectId:pg,generatedAt:q_,status:ag.default("unknown"),manifestRef:s,renderManifestRef:s.optional(),panels:N.array(v9).default([]),contextPacks:N.array(k9).default([]),proofBundleRefs:N.array(s).default([]),resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([]),warnings:N.array(N.string().min(1)).default([]),freshness:N.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{let g=new Set,U=new Set;if(_.manifestRef.kind!=="project")$.addIssue({code:N.ZodIssueCode.custom,message:"Project snapshot manifestRef must use resource kind project",path:["manifestRef","kind"]});if(_.renderManifestRef&&_.renderManifestRef.kind!=="render")$.addIssue({code:N.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:N.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:N.ZodIssueCode.custom,message:"Panel projectId must match snapshot projectId",path:["panels",D,"projectId"]});if(g.has(I.id))$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Project snapshot context pack ids must be unique",path:["contextPacks",D,"id"]});U.add(I.id)}}),w9=N.object({id:N.string().min(1),kind:N.enum(["command","test","typecheck","lint","eval","security","review","deploy","smoke","manual","other"]),required:N.boolean().default(!0),command:N.string().min(1).optional(),expected:N.string().min(1).optional(),timeoutMs:N.number().int().positive().optional(),resourceRefs:N.array(s).default([])}).strict().superRefine((_,$)=>{if(new Set(["command","test","typecheck","lint","smoke","eval"]).has(_.kind)&&!_.command&&!_.expected)$.addIssue({code:N.ZodIssueCode.custom,message:"Actionable validation checks require command or expected",path:["command"]})}),KH=P_(x.validationPlan).extend({objective:N.string().min(1),subject:s.optional(),checks:N.array(w9).min(1),verifier:d$.optional(),requiredEvidenceKinds:N.array(dW).default([])}).strict(),qH=N.enum(["open_source","internal_app","platform","app","agent","content","overlay","other"]),BH=N.enum(["draft","active","deprecated","archived"]),VH=N.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"]),FH=N.object({key:N.string().regex(/^[A-Z][A-Z0-9_]*$/),description:N.string().min(1),required:N.boolean().default(!1),["secret"]:N.boolean().default(!1),group:N.string().min(1).optional(),default:N.string().optional()}).strict().superRefine((_,$)=>{if(_.secret&&_.default!==void 0)$.addIssue({code:N.ZodIssueCode.custom,message:"Secret scaffold env vars cannot include defaults",path:["default"]})}),rH=N.object({name:N.string().min(1),command:N.string().min(1),description:N.string().min(1).optional(),required:N.boolean().default(!1)}).strict(),bH=N.object({packageManager:N.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),languages:N.array(N.string().min(1)).default([]),requiredFiles:N.array(N.string().min(1)).default([]),requiredDirectories:N.array(N.string().min(1)).default([]),optionalDirectories:N.array(N.string().min(1)).default([])}).strict(),MH=P_(x.scaffoldManifest).extend({name:N.string().min(1),version:N.string().min(1),summary:N.string().min(1),type:qH,status:BH.default("draft"),capabilities:N.array(VH).default([]),techStack:N.array(N.string().min(1)).default([]),tags:T0,source:s.optional(),output:bH,env:N.array(FH).default([]),scripts:N.array(rH).default([]),validationChecks:N.array(w9).default([]),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{if(_.source?.uri?.startsWith("file://"))$.addIssue({code:N.ZodIssueCode.custom,message:"Public scaffold manifest source refs cannot use local file:// URIs",path:["source","uri"]});if(_.status==="active"&&_.validationChecks.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Active scaffold manifests require validation checks",path:["validationChecks"]});if(_.status==="active"&&_.output.requiredFiles.length===0&&_.output.requiredDirectories.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Active scaffold manifests require at least one required file or directory",path:["output"]})}),ZH=N.enum(["installed","failed","cancelled","partial","unknown"]),HH=P_(x.scaffoldInstallRecord).extend({scaffoldId:N.string().min(1),scaffoldVersion:N.string().min(1).optional(),manifestRef:s.optional(),target:s,status:ZH,installedAt:q_.optional(),installer:d$.optional(),packageManager:N.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),options:p6.optional(),generatedFiles:N.array(s).default([]),evidenceRefs:N.array(Y_).default([]),proofBundleRefs:N.array(s).default([])}).strict().superRefine((_,$)=>{if(_.status==="installed"&&!_.installedAt)$.addIssue({code:N.ZodIssueCode.custom,message:"Installed scaffold records require installedAt",path:["installedAt"]});if(_.status==="installed"&&_.generatedFiles.length===0&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Failed or partial scaffold records require evidence or proof bundle refs",path:["evidenceRefs"]})}),Q0=N.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"App ids must be lowercase dashed identifiers"),lW=N.string().regex(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,"Must be a valid npm package name"),u9=N.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"),kH=N.string().regex(/^[0-9a-f]{7,40}$/,"Must be a lowercase git sha (7-40 hex chars)"),CH=t.refine((_)=>_.startsWith("https://github.com/")||_.startsWith("git+https://github.com/"),"GitHub URLs must start with https://github.com/ or git+https://github.com/"),vH=N.enum(["active","stub","deprecated","archived"]),wH=N.enum(["stable","beta","canary","internal"]),uH=N.object({transport:N.enum(["http","stdio"]).default("http"),bin:N.string().min(1).optional(),url:M$.optional()}).strict(),fH=N.object({healthPath:N.string().min(1).default("/health"),port:N.number().int().positive().optional(),baseUrl:M$.optional()}).strict(),xH=N.object({bins:N.array(N.string().min(1)).default([]),mcp:uH.optional(),http:fH.optional()}).strict(),yH=P_(x.app).extend({appId:Q0,npmName:lW,repoFolder:Q0,githubUrl:CH,projectSlug:pg,surfaces:xH.default({}),lifecycle:vH,releaseChannel:wH.default("stable"),summary:N.string().min(1).optional(),tags:T0}).strict().superRefine((_,$)=>{let g=new Set;for(let[U,D]of _.surfaces.bins.entries()){if(g.has(D))$.addIssue({code:N.ZodIssueCode.custom,message:"App surface bins must be unique",path:["surfaces","bins",U]});g.add(D)}}),cH=N.enum(["skill","ci","backfilled"]),hH=P_(x.release).extend({appId:Q0,package:lW,version:u9,gitSha:kH,publishedAt:q_,publishPath:cH,changelogRef:s.optional(),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{if(_.publishPath!=="backfilled"&&_.evidenceRefs.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"skill and ci releases require publish evidence; only backfilled releases may omit it",path:["evidenceRefs"]})}),nH=N.enum(["install","update","rollback","freeze-blocked"]),dH=N.object({cliVersion:N.string().min(1).optional(),mcpHealth:N.enum(["ok","degraded","unavailable","not_checked"]).optional()}).strict().superRefine((_,$)=>{if(!_.cliVersion&&_.mcpHealth===void 0)$.addIssue({code:N.ZodIssueCode.custom,message:"Rollout verification requires at least one concrete verifier field"})}),mH=P_(x.rolloutRecord).extend({appId:Q0,package:lW,version:u9,machine:t,action:nH,result:ag,verifiedBy:dH.optional(),at:q_,evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{if(_.action==="freeze-blocked"&&_.result!=="blocked"&&_.result!=="skipped")$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Succeeded install/update rollout records require concrete verification",path:["verifiedBy"]})}),iH=N.enum(["email","telegram","slack","discord","x","blog","rss","webhook","github","other"]),lH=N.enum(["pending","queued","sent","failed","skipped","suppressed"]),tH=N.object({channel:iH,status:lH,deliveredAt:q_.optional(),detail:N.string().min(1).optional()}).strict().superRefine((_,$)=>{if(_.status==="sent"&&!_.deliveredAt)$.addIssue({code:N.ZodIssueCode.custom,message:"Sent announcement channels require deliveredAt",path:["deliveredAt"]});if(_.status==="failed"&&!_.detail)$.addIssue({code:N.ZodIssueCode.custom,message:"Failed announcement channels require detail",path:["detail"]})}),oH=P_(x.announcement).extend({campaignId:t,appId:Q0.optional(),releaseRef:s.optional(),channels:N.array(tH).min(1),audienceRef:s,sentAt:q_}).strict().superRefine((_,$)=>{if(_.releaseRef&&_.releaseRef.kind!=="release")$.addIssue({code:N.ZodIssueCode.custom,message:"Announcement releaseRef must use resource kind release",path:["releaseRef","kind"]});if(_.audienceRef.kind!=="audience")$.addIssue({code:N.ZodIssueCode.custom,message:"Announcement audienceRef must use resource kind audience",path:["audienceRef","kind"]})}),pH=N.enum(["tag","attribute","group"]),eH=N.enum(["eq","neq","in","not_in","exists","not_exists"]),S9=N.union([N.string(),N.number(),N.boolean()]),aH=N.object({kind:pH,key:N.string().min(1).optional(),op:eH.default("eq"),value:S9.optional(),values:N.array(S9).default([])}).strict().superRefine((_,$)=>{if(_.kind==="attribute"&&!_.key)$.addIssue({code:N.ZodIssueCode.custom,message:"Attribute predicates require key",path:["key"]});if((_.op==="eq"||_.op==="neq")&&_.value===void 0)$.addIssue({code:N.ZodIssueCode.custom,message:"eq/neq predicates require value",path:["value"]});if((_.op==="in"||_.op==="not_in")&&_.values.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"in/not_in predicates require values",path:["values"]})}),sH=N.object({match:N.enum(["all","any"]).default("all"),predicates:N.array(aH).min(1)}).strict(),_k=N.enum(["opt_in","opt_out","transactional","none"]),$k=P_(x.audience).extend({audienceId:Q0,name:t,definition:sH,consentPolicy:_k,suppressionSyncedAt:og}).strict(),jE=["@hasna/cloud","open-cloud"],gk=N.enum(["aws","gcp","azure","cloudflare","vercel","neon","supabase","postgres","s3","rds","other"]),Dk=N.object({id:N.string().min(1),provider:gk,kind:N.enum(["database","bucket","queue","secret","function","worker","cache","topic","scheduler","object_store","other"]),ownerPackage:N.string().min(1),region:N.string().min(1).optional(),accountId:N.string().min(1).optional(),uri:M$.optional(),machineScoped:N.boolean().default(!1)}).strict(),f9=P_(x.appCloudManifest).extend({packageName:N.string().min(1),packageVersion:N.string().min(1).optional(),appId:N.string().min(1),repository:s.optional(),storageMode:N.enum(["local_only","app_owned_cloud","hybrid_local_cache","external_service"]),cloudBoundary:N.enum(["none","app_owned","external_service","local_cache"]),cloudResources:N.array(Dk).default([]),localCache:N.object({path:N.string().min(1).optional(),pullMode:N.enum(["manual","daemon","ci","none"]).default("manual"),conflictPolicy:N.enum(["cloud_wins","local_wins","merge","manual_review"]).default("manual_review")}).strict().optional(),forbiddenSharedRuntimes:N.array(N.string().min(1)).default([...jE]),dependencies:N.array(N.string().min(1)).default([]),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{let g=new Set([...jE,..._.forbiddenSharedRuntimes]);if(g.has(_.packageName))$.addIssue({code:N.ZodIssueCode.custom,message:"App-owned cloud manifests cannot be for a forbidden runtime",path:["packageName"]});for(let U of jE)if(!_.forbiddenSharedRuntimes.includes(U))$.addIssue({code:N.ZodIssueCode.custom,message:`forbiddenSharedRuntimes must include ${U}`,path:["forbiddenSharedRuntimes"]});for(let U of g)if(_.dependencies.includes(U))$.addIssue({code:N.ZodIssueCode.custom,message:`App-owned cloud manifests cannot depend on ${U}`,path:["dependencies"]});if(_.storageMode==="local_only"&&_.cloudBoundary!=="none")$.addIssue({code:N.ZodIssueCode.custom,message:"local_only storage requires cloudBoundary none",path:["cloudBoundary"]});if(_.storageMode==="app_owned_cloud"&&_.cloudBoundary!=="app_owned")$.addIssue({code:N.ZodIssueCode.custom,message:"app_owned_cloud storage requires cloudBoundary app_owned",path:["cloudBoundary"]});if(_.storageMode==="hybrid_local_cache"){if(_.cloudBoundary!=="local_cache")$.addIssue({code:N.ZodIssueCode.custom,message:"hybrid_local_cache storage requires cloudBoundary local_cache",path:["cloudBoundary"]});if(!_.localCache)$.addIssue({code:N.ZodIssueCode.custom,message:"hybrid_local_cache storage requires localCache settings",path:["localCache"]})}if(_.storageMode==="external_service"){if(_.cloudBoundary!=="external_service")$.addIssue({code:N.ZodIssueCode.custom,message:"external_service storage requires cloudBoundary external_service",path:["cloudBoundary"]});if(_.cloudResources.length>0)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Cloud-backed storage modes require explicit app-owned cloudResources",path:["cloudResources"]});if(_.cloudBoundary==="none"&&_.cloudResources.length>0)$.addIssue({code:N.ZodIssueCode.custom,message:"cloudBoundary none cannot declare cloudResources",path:["cloudResources"]});_.cloudResources.forEach((U,D)=>{if(U.ownerPackage!==_.packageName)$.addIssue({code:N.ZodIssueCode.custom,message:"Cloud resources must be owned by the app package that declares the manifest",path:["cloudResources",D,"ownerPackage"]})})}),x9=N.enum(["package_manifest","lockfile","source_import","runtime_config","packed_artifact","published_metadata","app_cloud_manifest","remote_config","boundary_doc","other"]),Uk=N.enum(["low","medium","high","critical"]),y9=N.object({id:N.string().min(1),kind:x9,severity:Uk,path:N.string().min(1).optional(),packageName:N.string().min(1).optional(),pattern:N.string().min(1),message:N.string().min(1),evidenceRefs:N.array(Y_).default([])}).strict(),Ik=N.object({id:N.string().min(1),kind:x9,status:ag,target:N.string().min(1),command:N.string().min(1).optional(),evidenceRefs:N.array(Y_).default([]),findings:N.array(y9).default([])}).strict(),jk=P_(x.noCloudEvidencePack).extend({subject:s,packageName:N.string().min(1).optional(),packageVersion:N.string().min(1).optional(),generatedBy:d$.optional(),scanMode:N.enum(["source_tree","packed_artifact","published_metadata","runtime_config","workspace","ci"]),status:ag,verdict:N.enum(["passed","failed","warning","not_run"]),appCloudManifest:f9.optional(),checks:N.array(Ik).min(1),findings:N.array(y9).default([]),evidenceRefs:N.array(Y_).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:N.ZodIssueCode.custom,message:"Passed no-cloud evidence requires succeeded status",path:["status"]});if(U.length>0)$.addIssue({code:N.ZodIssueCode.custom,message:"Passed no-cloud evidence cannot include high or critical findings",path:["findings"]});if(_.checks.some((D)=>D.status!=="succeeded"))$.addIssue({code:N.ZodIssueCode.custom,message:"Passed no-cloud evidence requires every check to be succeeded",path:["checks"]})}if(_.verdict==="failed"&&g.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Failed no-cloud evidence requires findings",path:["findings"]});if(_.status==="succeeded"&&_.checks.some((D)=>D.status==="failed"))$.addIssue({code:N.ZodIssueCode.custom,message:"Succeeded no-cloud evidence cannot contain failed checks",path:["checks"]});_.checks.forEach((D,I)=>{let j=D.findings.filter((E)=>E.severity==="high"||E.severity==="critical");if(D.status==="succeeded"&&j.length>0)$.addIssue({code:N.ZodIssueCode.custom,message:"Succeeded no-cloud checks cannot contain high or critical findings",path:["checks",I,"findings"]})})}),Ek=N.object({checkId:N.string().min(1),status:ag,summary:N.string().min(1).optional(),startedAt:og,finishedAt:og,evidenceRefs:N.array(Y_).default([])}).strict(),Nk=P_(x.proofBundle).extend({subject:s,validationPlanRef:s.optional(),status:ag,verdict:N.enum(["passed","failed","inconclusive","not_run"]).default("inconclusive"),checks:N.array(Ek).default([]),verifier:d$.optional(),evidenceRefs:N.array(Y_).default([]),residualRisks:N.array(N.string().min(1)).default([]),freshness:N.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:N.ZodIssueCode.custom,message:"Passed proof bundles must have status succeeded",path:["status"]});if(_.checks.length===0)$.addIssue({code:N.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:N.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:N.ZodIssueCode.custom,message:"Passed proof bundles require evidence",path:["evidenceRefs"]});if(!_.verifier)$.addIssue({code:N.ZodIssueCode.custom,message:"Passed proof bundles require a verifier",path:["verifier"]})}if(_.verdict==="not_run"&&_.checks.length>0)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Failed proof bundles require a failed check or evidence",path:["checks"]})}),Ak=P_(x.workRun).extend({objective:N.string().min(1),status:ag,actor:d$,traceId:N.string().min(1).optional(),startedAt:og,finishedAt:og,constraints:N.array(N.string().min(1)).default([]),resourceRefs:N.array(s).default([]),decisions:N.array(H9).default([]),costEstimates:N.array(QU).default([]),evidenceRefs:N.array(Y_).default([]),validationPlanRefs:N.array(s).default([]),proofBundleRefs:N.array(s).default([])}).strict().superRefine((_,$)=>{if(_.startedAt&&_.finishedAt&&Date.parse(_.finishedAt)0||_.proofBundleRefs.length>0;if(_.status==="succeeded"&&!g)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Failed or blocked work runs require evidence, a proof bundle, or a decision record",path:["evidenceRefs"]})}),Ok=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"])}),Pk=N.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"]),Sk=N.enum(["todos","codewith","repos","review","merge_provider","openloops","adapter"]),eg=N.string().regex(/^[a-f0-9]{64}$/),LE=N.string().trim().min(3).max(256),c9=/^[a-f0-9]{32}$/;function Lk(_,$,g){return`${_}:${$}:opaque-${g.slice(0,32)}`}function Wk(_){return`evidence:opaque-${_.slice(0,32)}`}var h9=LE.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"),tW=LE.refine((_)=>{let g=_.startsWith("attempt_nonce:opaque-")?_.slice(21):"";return c9.test(g)},"Attempt nonces must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),Jk=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"]),oW=N.object({role:Pk,authority:Sk,id:LE,digest:eg,redaction:N.enum(["none","partial","full"])}).strict().superRefine((_,$)=>{let g=Ok[_.role];if(!g.includes(_.authority))$.addIssue({code:N.ZodIssueCode.custom,message:`${_.role} refs must be owned by ${g.join(" or ")}`,path:["authority"]});if(Jk.has(_.role)&&_.redaction==="none")$.addIssue({code:N.ZodIssueCode.custom,message:`${_.role} refs must be redacted and cannot carry a raw locator or credential`,path:["redaction"]});let U=Lk(_.role,_.authority,_.digest);if(_.id!==U)$.addIssue({code:N.ZodIssueCode.custom,message:"Reference ids must be nonsemantic authority-bound surrogates derived from the canonical role, authority, and owner-record digest",path:["id"]})}),z$=N.object({id:LE,digest:eg,redaction:N.enum(["partial","full"])}).strict().superRefine((_,$)=>{if(_.id!==Wk(_.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Evidence ids must be nonsemantic owner-resolvable surrogates derived from their canonical digest",path:["id"]})});function n9(_,$,g,U){if(_.id===$.id||_.digest===$.digest)g.addIssue({code:N.ZodIssueCode.custom,message:"Stop and lease-revocation facts require distinct evidence identities and digests",path:U})}function M(_){return oW.refine(($)=>$.role===_,{message:`Reference must use role ${_}`,path:["role"]})}function K_(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id&&_.digest===$.digest&&_.redaction===$.redaction}function pW(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id}function E0(_,$,g,U,D){if(pW(_,$))g.addIssue({code:N.ZodIssueCode.custom,message:`${D} requires a fresh canonical role/authority/id`,path:U});if(_.digest===$.digest)g.addIssue({code:N.ZodIssueCode.custom,message:`${D} requires a fresh canonical digest`,path:U})}function AE(_){return`${_.role}\x00${_.authority}\x00${_.id}`}function o_(_,$){return _.algorithm===$.algorithm&&_.value===$.value}var X_=N.object({algorithm:N.enum(["sha1","sha256"]),value:N.string().regex(/^[a-f0-9]+$/)}).strict().superRefine((_,$)=>{let g=_.algorithm==="sha1"?40:64;if(_.value.length!==g)$.addIssue({code:N.ZodIssueCode.custom,message:`${_.algorithm} object ids must contain exactly ${g} lowercase hex characters`,path:["value"]})});function L9(_){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 N9("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 N9("sha256").update($,"utf8").digest("hex")}var zk=N.object({ref:M("attempt"),nonce:tW,admissionRef:M("admission"),admissionWriterGenerationRef:M("writer_generation"),workerActorRef:M("worker_actor"),workerRef:M("worker"),runtimeRef:M("runtime"),writerGenerationRef:M("writer_generation"),writerLeaseRef:M("writer_lease"),writerFenceRef:M("writer_fence"),providerProfileRef:M("provider_profile"),providerRouteRef:M("provider_route")}).strict(),Rk=N.object({repoRef:M("repo"),worktreeRef:M("worktree"),branchRef:M("branch"),baseHead:X_,branchHead:X_}).strict(),Gk=N.object({streamRef:M("event_stream"),replayCursorRef:M("replay_cursor"),sequence:N.number().int().safe().nonnegative(),prefixDigest:eg}).strict(),Xk=N.object({ref:M("handoff"),previousAttemptRef:M("attempt"),nextAttemptRef:M("attempt"),previousWriterGenerationRef:M("writer_generation"),nextWriterGenerationRef:M("writer_generation"),stoppedWorkRunRef:M("work_run"),stopEvidenceRef:z$,leaseRevocationEvidenceRef:z$}).strict().superRefine((_,$)=>{E0(_.previousAttemptRef,_.nextAttemptRef,$,["nextAttemptRef"],"Handoff attempt rotation"),E0(_.previousWriterGenerationRef,_.nextWriterGenerationRef,$,["nextWriterGenerationRef"],"Handoff writer-generation rotation"),n9(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),Yk=N.object({ref:M("review"),pullRequestRef:M("pull_request"),base:X_,head:X_,reviewerRef:M("reviewer"),reviewRunRef:M("review_run"),proofBundleRef:M("proof_bundle"),verdict:N.enum(["approved","changes_requested","blocked"]),reviewedAt:q_}).strict(),Qk=N.object({pullRequestRef:M("pull_request"),remoteBranchRef:M("branch"),expectedBase:X_,providerPullRequestBase:X_,localHead:X_,remoteHead:X_,providerPullRequestHead:X_,equalityProofRef:M("proof_bundle"),ciProofBundleRefs:N.array(M("proof_bundle")).min(1),verifiedAt:q_}).strict().superRefine((_,$)=>{if(!o_(_.expectedBase,_.providerPullRequestBase))$.addIssue({code:N.ZodIssueCode.custom,message:"Expected and provider-observed pull-request bases must be exactly equal",path:["providerPullRequestBase"]});if(!o_(_.localHead,_.remoteHead)||!o_(_.localHead,_.providerPullRequestHead))$.addIssue({code:N.ZodIssueCode.custom,message:"Local, remote, and provider pull-request heads must be exactly equal",path:["providerPullRequestHead"]});let g=_.ciProofBundleRefs.map(AE);if(new Set(g).size!==g.length)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical digests",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((D)=>pW(D,_.equalityProofRef)))$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical digests",path:["ciProofBundleRefs"]})}),Tk=N.object({ref:M("repair_cycle"),cycle:N.number().int().min(0).max(2),cap:N.literal(2),exhausted:N.boolean(),latestRepairRef:M("repair_cycle").optional()}).strict().superRefine((_,$)=>{if(_.exhausted!==(_.cycle===_.cap))$.addIssue({code:N.ZodIssueCode.custom,message:"Repair exhaustion must equal the cumulative cycle cap",path:["exhausted"]});if(_.cycle===0&&_.latestRepairRef)$.addIssue({code:N.ZodIssueCode.custom,message:"Cycle zero cannot reference a repair",path:["latestRepairRef"]});if(_.cycle>0&&!_.latestRepairRef)$.addIssue({code:N.ZodIssueCode.custom,message:"Non-zero repair state requires the latest immutable repair ref",path:["latestRepairRef"]});if(_.latestRepairRef&&pW(_.ref,_.latestRepairRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must be distinct canonical records",path:["latestRepairRef"]});if(_.latestRepairRef&&_.ref.digest===_.latestRepairRef.digest)$.addIssue({code:N.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must have distinct canonical digests",path:["latestRepairRef"]})}),Kk=N.object({ref:M("merge_guard"),pullRequestRef:M("pull_request"),expectedBase:X_,expectedHead:X_,reviewRefs:N.array(M("review")).min(1),proofBundleRefs:N.array(M("proof_bundle")).min(1),operatorRef:M("merge_operator"),operatorRunRef:M("merge_operator_run"),providerGuardReceiptRef:M("merge_guard_receipt"),mechanism:N.enum(["compare_and_swap","queue_expected_head"]),decision:N.enum(["eligible","denied","consumed","revoked"]),evaluatedAt:q_}).strict().superRefine((_,$)=>{if(new Set(_.reviewRefs.map((I)=>I.id)).size!==_.reviewRefs.length)$.addIssue({code:N.ZodIssueCode.custom,message:"Merge guard review refs must be unique",path:["reviewRefs"]});if(new Set(_.proofBundleRefs.map(AE)).size!==_.proofBundleRefs.length)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical digests",path:["proofBundleRefs"]})}),qk=N.object({ref:M("merge_outcome"),guardRef:M("merge_guard"),pullRequestRef:M("pull_request"),expectedBase:X_,observedBase:X_,expectedHead:X_,observedHead:X_,status:N.enum(["merged","closed_unmerged","refused","head_drift","base_drift"]),mergeCommitRef:M("commit").optional(),finishedAt:q_,evidenceRefs:N.array(z$).min(1)}).strict().superRefine((_,$)=>{let g=o_(_.expectedBase,_.observedBase),U=o_(_.expectedHead,_.observedHead);if(_.status==="merged"){if(!g||!U)$.addIssue({code:N.ZodIssueCode.custom,message:"Merged outcomes require observed base and head to equal the guarded values",path:[!g?"observedBase":"observedHead"]});if(!_.mergeCommitRef)$.addIssue({code:N.ZodIssueCode.custom,message:"Merged outcomes require an immutable merge commit ref",path:["mergeCommitRef"]})}else if(_.mergeCommitRef)$.addIssue({code:N.ZodIssueCode.custom,message:"Unmerged outcomes cannot claim a merge commit",path:["mergeCommitRef"]});if(_.status==="head_drift"&&U)$.addIssue({code:N.ZodIssueCode.custom,message:"Head-drift outcomes require distinct expected and observed heads",path:["observedHead"]});if(_.status==="head_drift"&&!g)$.addIssue({code:N.ZodIssueCode.custom,message:"Head-drift outcomes cannot also carry an unclassified base drift",path:["observedBase"]});if(_.status==="base_drift"&&g)$.addIssue({code:N.ZodIssueCode.custom,message:"Base-drift outcomes require distinct expected and observed bases",path:["observedBase"]});if(_.status==="base_drift"&&!U)$.addIssue({code:N.ZodIssueCode.custom,message:"Base-drift outcomes cannot also carry an unclassified head drift",path:["observedHead"]});if(!U&&_.status!=="head_drift")$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Only a base_drift outcome may record an observed base that differs from the expected base",path:["observedBase"]})}),Bk=N.object({guard:Kk,outcome:qk.optional()}).strict(),Vk=N.object({ref:M("recovery"),priorAttemptRef:M("attempt"),priorWriterGenerationRef:M("writer_generation"),priorWorkRunRef:M("work_run"),successorAttemptNonce:tW,successorWriterGenerationRef:M("writer_generation"),preservedStateRefs:N.array(oW).min(1),stopEvidenceRef:z$,leaseRevocationEvidenceRef:z$}).strict().superRefine((_,$)=>{E0(_.priorWriterGenerationRef,_.successorWriterGenerationRef,$,["successorWriterGenerationRef"],"Recovery writer-generation rotation"),n9(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),Fk=N.object({ref:M("cancellation"),cancelledAttemptRef:M("attempt"),preservedStateRefs:N.array(oW).min(1),evidenceRefs:N.array(z$).min(1)}).strict(),rk=N.object({ref:M("cleanup_eligibility"),status:N.enum(["not_ready","preserved","blocked","eligible"]),targetWorktreeRef:M("worktree"),eventCursorRef:M("replay_cursor"),terminalDispositionRef:M("terminal_disposition"),writerLeaseRef:M("writer_lease"),leaseRevocationEvidenceRef:z$,consumedEventEvidenceRef:z$,evaluatedAt:q_,evidenceRefs:N.array(z$).min(1)}).strict().superRefine((_,$)=>{if(_.leaseRevocationEvidenceRef.id===_.consumedEventEvidenceRef.id||_.leaseRevocationEvidenceRef.digest===_.consumedEventEvidenceRef.digest)$.addIssue({code:N.ZodIssueCode.custom,message:"Cleanup lease-revocation and consumed-event facts require distinct evidence identities and digests",path:["consumedEventEvidenceRef"]})}),bk=N.object({ref:M("cleanup_outcome"),eligibilityRef:M("cleanup_eligibility"),targetWorktreeRef:M("worktree"),status:N.enum(["preserved","deleted","failed","skipped"]),finishedAt:q_,evidenceRefs:N.array(z$).min(1)}).strict(),Mk=N.object({eligibility:rk,outcome:bk.optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!K_(_.outcome.eligibilityRef,_.eligibility.ref))$.addIssue({code:N.ZodIssueCode.custom,message:"Cleanup outcomes must bind the exact eligibility decision",path:["outcome","eligibilityRef"]});if(_.outcome&&!K_(_.outcome.targetWorktreeRef,_.eligibility.targetWorktreeRef))$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Deletion requires an eligible cleanup decision",path:["outcome","status"]})}),Zk=N.object({plan:N.object({ref:M("rollback_plan"),targetRef:N.union([M("commit"),M("branch")]),createdAt:q_}).strict(),outcome:N.object({ref:M("rollback_outcome"),planRef:M("rollback_plan"),targetRef:N.union([M("commit"),M("branch")]),status:N.enum(["not_run","succeeded","failed","cancelled"]),finishedAt:q_,evidenceRefs:N.array(z$).min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!K_(_.outcome.planRef,_.plan.ref))$.addIssue({code:N.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback plan",path:["outcome","planRef"]});if(_.outcome&&!K_(_.outcome.targetRef,_.plan.targetRef))$.addIssue({code:N.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 Ck(_,$){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 K_(_.ref,$.ref)&&(("head"in _)&&("head"in $)&&("base"in _)&&("base"in $)&&o_(_.base,$.base)&&o_(_.head,$.head)||!("head"in _)&&!("head"in $)&&!("base"in _)&&!("base"in $))}var vk="hasna.task_to_pr_adapter_extension.",wk=N.object({mode:N.enum(["local","cloud"]),schema:nW,ref:M("adapter_extension"),digest:eg}).strict().superRefine((_,$)=>{if(!_.schema.startsWith(vk))$.addIssue({code:N.ZodIssueCode.custom,message:"Adapter extension schema ids must use the permanently reserved task-to-PR adapter-extension namespace",path:["schema"]})}),uk=N.enum(["admitted","running","handed_off","reviewing","repairing","merge_ready","merged","closed_unmerged","failed","blocked","cancelled","recovering","cleanup_complete","rolled_back"]),W9=new Set(["admitted","running","handed_off"]),J9=new Set(["merged","closed_unmerged","failed","blocked","cancelled","cleanup_complete","rolled_back"]),fk={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"])},xk=N.object({schema:N.literal(x.taskToPrProjection),id:h9,createdAt:q_,canonicalizationVersion:N.union([N.literal(1),N.literal(2)]),identityDigest:eg,frozenScopeDigest:eg,state:uk,workRunRef:M("work_run"),rootRequestRef:M("root_request"),prGroupRef:M("pr_group"),leafTaskRef:M("leaf_task"),attempt:zk,repository:Rk,events:Gk,openLoopsInvocationRef:M("openloops_invocation").optional(),pullRequestRef:M("pull_request").optional(),exactHead:Qk.optional(),handoff:Xk.optional(),reviews:N.array(Yk).default([]),repair:Tk,merge:Bk.optional(),recovery:Vk.optional(),cancellation:Fk.optional(),cleanup:Mk.optional(),rollback:Zk.optional(),terminalDispositionRef:M("terminal_disposition").optional(),provenanceLedger:N.array(Hk),adapterExtensions:N.array(wk).default([]),evidenceRefs:N.array(z$).default([])}).strict().superRefine((_,$)=>{let g=_.canonicalizationVersion===1?L9({canonicalizationVersion:1,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest}):L9({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:N.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,E=new Set,A=new Set;for(let[T,K]of _.provenanceLedger.entries()){if("ref"in K){if(U.has(K.ref.id))$.addIssue({code:N.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical owner id across categories or generations",path:["provenanceLedger",T,"ref","id"]});if(U.add(K.ref.id),D.has(K.ref.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical digest across categories or generations",path:["provenanceLedger",T,"ref","digest"]});D.add(K.ref.digest);continue}if(K.category==="projection_id"){if(I.has(K.projectionId))$.addIssue({code:N.ZodIssueCode.custom,message:"Projection identity provenance tombstones must be globally unique",path:["provenanceLedger",T,"projectionId"]});I.add(K.projectionId);continue}if(K.category==="attempt_nonce"){if(j.has(K.nonce))$.addIssue({code:N.ZodIssueCode.custom,message:"Attempt nonce provenance tombstones must be globally unique",path:["provenanceLedger",T,"nonce"]});j.add(K.nonce);continue}if(E.has(K.prefixDigest))$.addIssue({code:N.ZodIssueCode.custom,message:"Replay prefix provenance tombstones must be globally unique",path:["provenanceLedger",T,"prefixDigest"]});if(E.add(K.prefixDigest),A.has(K.sequence))$.addIssue({code:N.ZodIssueCode.custom,message:"Replay prefix provenance entries must bind globally unique replay sequences",path:["provenanceLedger",T,"sequence"]});A.add(K.sequence)}for(let T of kk(_))if(!_.provenanceLedger.some((K)=>Ck(K,T)))$.addIssue({code:N.ZodIssueCode.custom,message:`The active ${T.category} identity must be represented exactly in the monotonic provenance ledger`,path:["provenanceLedger"]});let O=[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repository.repoRef,_.repository.worktreeRef,_.repository.branchRef,_.events.streamRef,..._.pullRequestRef?[_.pullRequestRef]:[]],P=(T,K,V,F)=>{let o=new Set(K.map((j_)=>j_.role)),I_=new Set;for(let[j_,p]of T.entries()){if(!o.has(p.role))$.addIssue({code:N.ZodIssueCode.custom,message:`${F} cannot preserve an unrecognized ${p.role} role`,path:[...V,j_]});if(I_.has(p.role))$.addIssue({code:N.ZodIssueCode.custom,message:`${F} must preserve exactly one canonical ref per role`,path:[...V,j_]});I_.add(p.role)}if(T.length!==K.length)$.addIssue({code:N.ZodIssueCode.custom,message:`${F} preservation refs must exactly equal the required canonical role set`,path:V});for(let j_ of K)if(!T.some((p)=>K_(p,j_)))$.addIssue({code:N.ZodIssueCode.custom,message:`${F} must preserve ${j_.role}`,path:V})};if(_.handoff&&!K_(_.handoff.nextWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Handoff next generation must be the current attempt writer generation",path:["handoff","nextWriterGenerationRef"]});if(_.handoff&&!K_(_.handoff.nextAttemptRef,_.attempt.ref))$.addIssue({code:N.ZodIssueCode.custom,message:"Handoff next attempt must be the current attempt",path:["handoff","nextAttemptRef"]});if(_.handoff)E0(_.handoff.stoppedWorkRunRef,_.workRunRef,$,["handoff","stoppedWorkRunRef"],"Handoff WorkRun rotation");if(_.recovery){if(_.recovery.successorAttemptNonce!==_.attempt.nonce)$.addIssue({code:N.ZodIssueCode.custom,message:"Recovery successor nonce must equal the current attempt nonce",path:["recovery","successorAttemptNonce"]});if(!K_(_.recovery.successorWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Recovery successor generation must equal the current writer generation",path:["recovery","successorWriterGenerationRef"]});E0(_.recovery.priorAttemptRef,_.attempt.ref,$,["recovery","priorAttemptRef"],"Recovery attempt rotation"),E0(_.recovery.priorWorkRunRef,_.workRunRef,$,["recovery","priorWorkRunRef"],"Recovery WorkRun rotation"),P(_.recovery.preservedStateRefs,[_.recovery.priorWorkRunRef,...O],["recovery","preservedStateRefs"],"Recovery")}if(_.cancellation&&!K_(_.cancellation.cancelledAttemptRef,_.attempt.ref))$.addIssue({code:N.ZodIssueCode.custom,message:"Cancellation must bind the current attempt",path:["cancellation","cancelledAttemptRef"]});if(_.cancellation)P(_.cancellation.preservedStateRefs,[_.workRunRef,_.attempt.ref,...O],["cancellation","preservedStateRefs"],"Cancellation");if(_.cancellation&&_.recovery)$.addIssue({code:N.ZodIssueCode.custom,message:"A projection cannot be both the cancellation and recovery snapshot",path:["recovery"]});if(_.handoff&&_.recovery)$.addIssue({code:N.ZodIssueCode.custom,message:"A projection cannot be both the handoff and recovery snapshot",path:["recovery"]});if(_.cleanup&&!K_(_.cleanup.eligibility.eventCursorRef,_.events.replayCursorRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Cleanup eligibility must bind the current canonical replay cursor",path:["cleanup","eligibility","eventCursorRef"]});if(_.cleanup&&(!_.terminalDispositionRef||!K_(_.cleanup.eligibility.terminalDispositionRef,_.terminalDispositionRef)))$.addIssue({code:N.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact durable terminal owner fact",path:["cleanup","eligibility","terminalDispositionRef"]});if(_.cleanup&&!K_(_.cleanup.eligibility.writerLeaseRef,_.attempt.writerLeaseRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact writer lease being revoked",path:["cleanup","eligibility","writerLeaseRef"]});if(_.cleanup&&!K_(_.cleanup.eligibility.targetWorktreeRef,_.repository.worktreeRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Cleanup eligibility must bind the canonical worktree",path:["cleanup","eligibility","targetWorktreeRef"]});if(_.pullRequestRef){if(_.exactHead&&!K_(_.exactHead.pullRequestRef,_.pullRequestRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Exact-head proof must bind the canonical pull request ref",path:["exactHead","pullRequestRef"]});for(let[T,K]of _.reviews.entries())if(!K_(K.pullRequestRef,_.pullRequestRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Every review must bind the canonical pull request ref",path:["reviews",T,"pullRequestRef"]});if(_.merge&&!K_(_.merge.guard.pullRequestRef,_.pullRequestRef))$.addIssue({code:N.ZodIssueCode.custom,message:"Merge guard must bind the canonical pull request ref",path:["merge","guard","pullRequestRef"]});if(_.merge?.outcome&&!K_(_.merge.outcome.pullRequestRef,_.pullRequestRef))$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Review and merge state require a canonical pull request ref",path:["pullRequestRef"]});if(_.exactHead&&!o_(_.exactHead.localHead,_.repository.branchHead))$.addIssue({code:N.ZodIssueCode.custom,message:"Exact local head must equal the canonical branch head",path:["exactHead","localHead"]});if(_.exactHead&&!o_(_.exactHead.expectedBase,_.repository.baseHead))$.addIssue({code:N.ZodIssueCode.custom,message:"Exact-head expected base must equal the canonical repository base",path:["exactHead","expectedBase"]});if(_.exactHead&&!K_(_.exactHead.remoteBranchRef,_.repository.branchRef))$.addIssue({code:N.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:N.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((F,o)=>({ref:F,path:["exactHead","ciProofBundleRefs",o]})),..._.reviews.map((F,o)=>({ref:F.proofBundleRef,path:["reviews",o,"proofBundleRef"]}))],K=new Set,V=new Set;for(let F of T){let o=AE(F.ref);if(K.has(o))$.addIssue({code:N.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical identities",path:F.path});if(K.add(o),V.has(F.ref.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical digests",path:F.path});V.add(F.ref.digest)}}let W=new Set,z=new Set,S=new Set,L=new Set,J=new Set,R=new Set,X=new Set,G=new Set;for(let[T,K]of _.reviews.entries()){if(!o_(K.base,_.repository.baseHead))$.addIssue({code:N.ZodIssueCode.custom,message:"Review base must equal the exact canonical pull-request base",path:["reviews",T,"base"]});if(!o_(K.head,_.repository.branchHead))$.addIssue({code:N.ZodIssueCode.custom,message:"Review head must equal the exact canonical branch head",path:["reviews",T,"head"]});for(let[F,o,I_]of[[K.ref.id,W,"ref"],[K.reviewerRef.id,S,"reviewerRef"],[K.reviewRunRef.id,J,"reviewRunRef"]]){if(o.has(F))$.addIssue({code:N.ZodIssueCode.custom,message:"Review, reviewer, and review-run refs must each be unique",path:["reviews",T,I_]});o.add(F)}if(z.has(K.ref.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Review refs must resolve to distinct canonical record digests",path:["reviews",T,"ref"]});if(z.add(K.ref.digest),L.has(K.reviewerRef.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Reviewer refs must resolve to distinct canonical actor digests",path:["reviews",T,"reviewerRef"]});if(L.add(K.reviewerRef.digest),R.has(K.reviewRunRef.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Review-run refs must resolve to distinct canonical run digests",path:["reviews",T,"reviewRunRef"]});R.add(K.reviewRunRef.digest);let V=AE(K.proofBundleRef);if(X.has(V))$.addIssue({code:N.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical identities",path:["reviews",T,"proofBundleRef"]});if(X.add(V),G.has(K.proofBundleRef.digest))$.addIssue({code:N.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical digests",path:["reviews",T,"proofBundleRef"]});if(G.add(K.proofBundleRef.digest),K.reviewerRef.digest===_.attempt.workerRef.digest)$.addIssue({code:N.ZodIssueCode.custom,message:"Worker and reviewer identities must resolve to distinct canonical digests",path:["reviews",T,"reviewerRef"]});if(K.reviewRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:N.ZodIssueCode.custom,message:"Worker runtime and review run must resolve to distinct canonical digests",path:["reviews",T,"reviewRunRef"]});if(_.exactHead&&Date.parse(K.reviewedAt)Date.parse(_.merge.guard.evaluatedAt)T.verdict!=="approved"))$.addIssue({code:N.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((K)=>K_(T,K.ref))))$.addIssue({code:N.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((K)=>K_(K,T.proofBundleRef)))$.addIssue({code:N.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact review proof bundle",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&!_.merge.guard.proofBundleRefs.some((T)=>K_(T,_.exactHead.equalityProofRef)))$.addIssue({code:N.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((K)=>K_(K,T))))$.addIssue({code:N.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact-head CI proof",path:["merge","guard","proofBundleRefs"]})}}if(_.merge?.outcome){if(!K_(_.merge.outcome.guardRef,_.merge.guard.ref))$.addIssue({code:N.ZodIssueCode.custom,message:"Merge outcome must bind the exact immutable merge guard",path:["merge","outcome","guardRef"]});if(!o_(_.merge.outcome.expectedHead,_.merge.guard.expectedHead))$.addIssue({code:N.ZodIssueCode.custom,message:"Merge outcome expected head must equal the guarded expected head",path:["merge","outcome","expectedHead"]});if(!o_(_.merge.outcome.expectedBase,_.merge.guard.expectedBase))$.addIssue({code:N.ZodIssueCode.custom,message:"Merge outcome expected base must equal the guarded expected base",path:["merge","outcome","expectedBase"]});if(_.merge.guard.decision!=="consumed")$.addIssue({code:N.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:N.ZodIssueCode.custom,message:`${_.state} projections cannot carry review bindings before review authority is active`,path:["reviews"]});if((W9.has(_.state)||_.state==="recovering")&&(_.merge?.guard.reviewRefs.length??0)>0)$.addIssue({code:N.ZodIssueCode.custom,message:`${_.state} projections cannot hide review bindings in a merge guard before review authority is active`,path:["merge","guard","reviewRefs"]});let B=_.merge?`${_.merge.guard.decision}:${_.merge.outcome?.status??"none"}`:"absent";if(!fk[_.state].has(B))$.addIssue({code:N.ZodIssueCode.custom,message:`State ${_.state} is incompatible with merge authority ${B}`,path:["merge"]});if(J9.has(_.state)&&!_.terminalDispositionRef)$.addIssue({code:N.ZodIssueCode.custom,message:`${_.state} projections require a durable Todos terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(!J9.has(_.state)&&_.terminalDispositionRef)$.addIssue({code:N.ZodIssueCode.custom,message:`${_.state} projections cannot carry a terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(_.state==="reviewing"&&_.reviews.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Reviewing projections require review refs",path:["reviews"]});if(_.state==="cancelled"&&!_.cancellation)$.addIssue({code:N.ZodIssueCode.custom,message:"Cancelled projections require preservation state",path:["cancellation"]});if(_.cancellation&&_.merge?.outcome)$.addIssue({code:N.ZodIssueCode.custom,message:"Cancellation cannot coexist with a terminal merge outcome",path:["cancellation"]});if(_.state==="recovering"&&!_.recovery)$.addIssue({code:N.ZodIssueCode.custom,message:"Recovering projections require recovery state",path:["recovery"]});if(_.state==="repairing"&&_.repair.cycle===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Repairing projections require a non-zero repair cycle",path:["repair","cycle"]});if(_.merge&&(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed")&&!K_(_.attempt.admissionWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Merge-ready projections require an eligible guard",path:["merge"]});if(_.state==="merged"&&_.merge?.outcome?.status!=="merged")$.addIssue({code:N.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:N.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:N.ZodIssueCode.custom,message:"Cleanup-complete projections require an immutable cleanup outcome",path:["cleanup"]});if(_.state==="rolled_back"&&_.rollback?.outcome?.status!=="succeeded")$.addIssue({code:N.ZodIssueCode.custom,message:"Rolled-back projections require a successful rollback outcome",path:["rollback"]});if((_.state==="failed"||_.state==="blocked")&&_.evidenceRefs.length===0)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"Non-terminal projections cannot carry terminal owner outcomes",path:["state"]});let Q=new Set;for(let[T,K]of _.adapterExtensions.entries()){let V=`${K.mode}:${K.schema}`;if(Q.has(V))$.addIssue({code:N.ZodIssueCode.custom,message:"Adapter extensions must be unique per local/cloud mode and schema",path:["adapterExtensions",T]});Q.add(V)}});var yk=N.object({id:N.string().min(1),at:q_,kind:N.enum(["message","tool_call","command","file_change","error","test","decision","verification","status","other"]),summary:N.string().min(1),resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([]),costEstimate:QU.optional()}).strict(),ck=P_(x.agentTrajectory).extend({actor:d$,workRunRef:s.optional(),events:N.array(yk).default([]),outcome:N.enum(["succeeded","failed","cancelled","blocked","unknown"]).default("unknown"),proofBundleRef:s.optional()}).strict(),hk="v1",nk=N.enum(["library","cli-with-store","service","saas"]),dk=["user-hosted","hasna-saas"],mk=N.enum(dk),ik=["api","sdk","mcp","cli"],d9=N.enum(ik),lk=N.enum(["supported","deferred","unsupported"]),tk=N.enum(["none","local-only","api-key","session","service-token","custom"]),uW=N.object({method:N.enum(["GET","POST","PUT","PATCH","DELETE"]),path:N.string().regex(/^\/[A-Za-z0-9_./:*-]*$/,"Endpoint paths must be absolute HTTP paths"),public:N.boolean().default(!1),description:N.string().min(1).optional()}).strict(),ok=N.object({id:N.string().min(1),kind:N.enum(["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]),required:N.boolean().default(!0),command:N.string().min(1).optional(),evidenceRef:Y_.optional(),status:N.enum(["pending","passed","failed","blocked","deferred"]).default("pending"),summary:N.string().min(1).optional()}).strict().superRefine((_,$)=>{if((_.status==="passed"||_.status==="failed"||_.status==="blocked")&&!_.command&&!_.evidenceRef&&!_.summary)$.addIssue({code:N.ZodIssueCode.custom,message:"Terminal readiness gates require command, evidenceRef, or summary",path:["status"]})}),pk=N.object({name:N.string().min(1),kind:d9.optional(),status:lk,bin:N.string().min(1).optional(),mcpBin:N.string().min(1).optional(),authMode:tk,health:uW.optional(),readiness:uW.optional(),version:uW.optional(),apiBasePath:N.string().regex(/^\/v[0-9]+$/,"Stable API base path must be /vN").optional(),openApiPath:N.string().regex(/^\/[A-Za-z0-9_./:-]*$/).optional(),exportSubpath:N.string().regex(/^\.(?:\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*)?$/,"SDK export subpaths must be package export keys such as . or ./sdk").optional(),generatedFrom:N.string().regex(/^\/[A-Za-z0-9_./:-]*$/,"SDK generatedFrom must reference an absolute OpenAPI path").optional(),clientClassName:N.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/).optional(),deferReason:N.string().min(1).optional(),readinessGates:N.array(ok).default([])}).strict().superRefine((_,$)=>{if(_.status==="supported"){if(!_.kind||_.kind==="api"){if(!_.bin)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported API surfaces require a serve bin",path:["bin"]});if(!_.health)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported API surfaces require a health endpoint",path:["health"]});if(!_.readiness)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported API surfaces require a readiness endpoint",path:["readiness"]});if(!_.version)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported API surfaces require a version endpoint",path:["version"]})}if(_.kind==="cli"&&!_.bin)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported CLI surfaces require a bin",path:["bin"]});if(_.kind==="mcp"&&!_.mcpBin)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported MCP surfaces require an mcpBin",path:["mcpBin"]});if(_.kind==="sdk"&&!_.exportSubpath)$.addIssue({code:N.ZodIssueCode.custom,message:"Supported SDK surfaces require an exportSubpath",path:["exportSubpath"]})}if((_.status==="deferred"||_.status==="unsupported")&&!_.deferReason)$.addIssue({code:N.ZodIssueCode.custom,message:"Deferred or unsupported service surfaces require a deferReason",path:["deferReason"]});if(_.health&&_.health.path!=="/health")$.addIssue({code:N.ZodIssueCode.custom,message:"Health endpoint must be /health",path:["health","path"]});if(_.health&&_.health.method!=="GET")$.addIssue({code:N.ZodIssueCode.custom,message:"Health endpoint must use GET",path:["health","method"]});if(_.readiness&&_.readiness.path!=="/ready")$.addIssue({code:N.ZodIssueCode.custom,message:"Readiness endpoint must be /ready",path:["readiness","path"]});if(_.readiness&&_.readiness.method!=="GET")$.addIssue({code:N.ZodIssueCode.custom,message:"Readiness endpoint must use GET",path:["readiness","method"]});if(_.version&&_.version.path!=="/version")$.addIssue({code:N.ZodIssueCode.custom,message:"Version endpoint must be /version",path:["version","path"]});if(_.version&&_.version.method!=="GET")$.addIssue({code:N.ZodIssueCode.custom,message:"Version endpoint must use GET",path:["version","method"]})}),ek=["sqlite","postgres"],m9=N.enum(ek),i9=["sqlite","postgres"],ak=N.enum(i9),hW=["postgres"],sk=N.object({kind:d9,reason:N.string().trim().min(1)}).strict(),eW=500,aW=200,OE=(_)=>N.string().trim().min(1).max(_).regex(/^[^\u0000-\u001f\u007f]+$/,"Waiver text must not contain control characters"),_C=["domain","host","ip","email"],$C=N.object({kind:N.enum(_C),reason:OE(eW),reviewedBy:OE(aW),expiresAt:q_}).strict(),gC=N.object({engine:N.enum(hW),reason:OE(eW),reviewedBy:OE(aW).optional(),expiresAt:q_.optional()}).strict();function DC(_){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 UC=N.object({conformance:N.object({waivedSurfaces:N.array(sk).default([]),waiverProfile:N.literal("non-node-monorepo").optional(),waivedStorageEngines:N.array(gC).default([]),waivedAssetInventories:N.array($C).default([])}).catchall(N.unknown()).optional(),release:N.object({artifactScan:N.object({script:N.string().trim().min(1)}).strict().optional()}).catchall(N.unknown()).optional()}).catchall(N.unknown()),IC=N.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,"App names must be lowercase dashed identifiers"),jC=["","-cli","-mcp","-serve","-worker","-runner","-daemon","-migrate","-doctor"];function EC(_){return jC.map(($)=>`${_}${$}`)}function z9(_){return`hasna/oss/${_}/database-url`}var NC=N.object({mode:m9,engines:N.array(ak).min(1).optional(),envPrefix:N.string().regex(/^HASNA_[A-Z][A-Z0-9]*_$/).optional(),aliasEnvPrefix:N.string().regex(/^[A-Z][A-Z0-9]*_$/).optional(),databaseUrlSecretRef:N.string().regex(/^hasna\/oss\/[a-z0-9-]+\/database-url$/).optional(),sqlitePath:N.string().min(1).endsWith(".db","storage.sqlitePath must end in .db").optional(),pgTestGate:N.object({envVar:N.string().regex(/^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$/),command:N.string().trim().min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.engines&&new Set(_.engines).size!==_.engines.length)$.addIssue({code:N.ZodIssueCode.custom,message:"storage.engines must not contain duplicates",path:["engines"]});if(_.engines?.includes("postgres")&&!_.envPrefix)$.addIssue({code:N.ZodIssueCode.custom,message:"storage.engines containing postgres requires envPrefix for the HASNA__DATABASE_URL contract",path:["envPrefix"]})}),l9=N.enum(["0600"]),t9=N.enum(["0700"]),o9=N.enum([".hasna",".codewith"]),AC=N.enum(["directory","file","sqlite_db","sqlite_wal","sqlite_shm","backup","export","report","tmp","log","session","snapshot"]),U0=J$.refine((_)=>!_.startsWith("~"),"Local store path patterns must be relative to their declared root"),OC=N.object({id:N.string().min(1),source:N.enum(["sqlite","manifest","index","runtime","package_adapter"]),table:N.string().min(1).optional(),column:N.string().min(1).optional(),description:N.string().min(1),required:N.boolean().default(!0)}).strict(),PC=N.object({safeWhen:N.enum(["exclusive_access","offline_only","never"]),operations:N.array(N.enum(["wal_checkpoint_truncate","incremental_vacuum","optimize","vacuum"])).default([])}).strict().superRefine((_,$)=>{if(_.safeWhen==="never"&&_.operations.length>0)$.addIssue({code:N.ZodIssueCode.custom,message:"sqliteMaintenance.safeWhen=never cannot declare operations",path:["operations"]})}),SC=N.object({id:N.string().min(1),description:N.string().min(1),ttlDays:N.number().int().nonnegative().optional(),artifactClasses:N.array(AC).min(1),allowlistGlobs:N.array(U0).min(1),activeRecordExclusions:N.array(OC).default([]),sqliteMaintenance:PC.optional()}).strict(),LC=N.object({storeId:N.string().regex(/^[a-z][a-z0-9-]*$/),packageName:N.string().min(1),displayName:N.string().min(1),root:o9,relativePath:U0,directoryMode:t9.default("0700"),fileMode:l9.default("0600"),sqliteDatabaseGlobs:N.array(U0).default([]),sensitiveFileGlobs:N.array(U0).default([]),backupGlobs:N.array(U0).default([]),exportGlobs:N.array(U0).default([]),retentionAdapters:N.array(SC).default([]),notes:N.array(N.string().min(1)).default([])}).strict().superRefine((_,$)=>{if(_.relativePath.includes("*"))$.addIssue({code:N.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:N.ZodIssueCode.custom,message:"retention adapter ids must be unique within a store",path:["retentionAdapters",U,"id"]});g.add(D.id)}}),p9=P_(x.secureLocalStorePolicy).extend({version:N.string().min(1),scope:N.array(o9).min(1),defaults:N.object({directoryMode:t9.default("0700"),fileMode:l9.default("0600"),dryRunDefault:N.literal(!0),requireExplicitApply:N.literal(!0),includeSqliteSidecars:N.literal(!0),redactedEvidenceOnly:N.literal(!0)}).strict(),stores:N.array(LC).min(1),lifecycle:N.object({retentionDryRunDefault:N.literal(!0),requireActiveRecordExclusionProof:N.literal(!0),requireArtifactAllowlist:N.literal(!0),sqliteMaintenanceRequiresExclusiveAccess:N.literal(!0)}).strict(),warnings:N.array(N.string().min(1)).default([])}).strict().superRefine((_,$)=>{let g=new Set;for(let[U,D]of _.stores.entries()){if(g.has(D.storeId))$.addIssue({code:N.ZodIssueCode.custom,message:"store ids must be unique",path:["stores",U,"storeId"]});if(g.add(D.storeId),!_.scope.includes(D.root))$.addIssue({code:N.ZodIssueCode.custom,message:"store root must be listed in policy scope",path:["stores",U,"root"]})}}),WC=N.object({$schema:N.string().min(1).optional(),schema:N.literal(x.serviceContract),name:IC,class:nk,contractVersion:N.literal(hk),kitVersion:N.string().min(1),description:N.string().min(1).optional(),bins:N.array(N.string().min(1)).default([]),storage:NC.optional(),hosting:N.array(mk).min(1).default(["user-hosted"]),serviceSurfaces:N.array(pk).default([]),metadata:UC.optional()}).strict().superRefine((_,$)=>{if(new Set(_.hosting).size!==_.hosting.length)$.addIssue({code:N.ZodIssueCode.custom,message:"hosting must not contain duplicates",path:["hosting"]});let g=new Set(EC(_.name)),U=new Set;for(let[O,P]of _.bins.entries()){if(U.has(P))$.addIssue({code:N.ZodIssueCode.custom,message:"Duplicate bin declaration",path:["bins",O]});if(U.add(P),!g.has(P))$.addIssue({code:N.ZodIssueCode.custom,message:`Bin "${P}" is not allowlisted for app "${_.name}"; allowed: ${[...g].join(", ")}`,path:["bins",O]})}let D=(O)=>U.has(`${_.name}${O}`);if(_.storage){let O=_.name.toUpperCase().replace(/-/g,"_");if(_.storage.envPrefix&&_.storage.envPrefix!==`HASNA_${O}_`)$.addIssue({code:N.ZodIssueCode.custom,message:`storage.envPrefix must be HASNA_${O}_`,path:["storage","envPrefix"]});if(_.storage.databaseUrlSecretRef&&_.storage.databaseUrlSecretRef!==z9(_.name))$.addIssue({code:N.ZodIssueCode.custom,message:`storage.databaseUrlSecretRef must be ${z9(_.name)}`,path:["storage","databaseUrlSecretRef"]})}if(_.class==="library"){if(_.storage)$.addIssue({code:N.ZodIssueCode.custom,message:"library repos must not declare storage",path:["storage"]});if(D("-serve")||D("-mcp"))$.addIssue({code:N.ZodIssueCode.custom,message:"library repos must not ship a -serve or -mcp bin",path:["bins"]})}if(_.class==="cli-with-store"){if(!_.storage)$.addIssue({code:N.ZodIssueCode.custom,message:"cli-with-store repos must declare storage",path:["storage"]});else{if(_.storage.mode==="sqlite"&&!_.storage.sqlitePath)$.addIssue({code:N.ZodIssueCode.custom,message:"sqlite cli-with-store storage requires sqlitePath (~/.hasna//.db)",path:["storage","sqlitePath"]});if(_.storage.engines){let O=new Set(_.storage.engines),P=_.metadata?.conformance?.waivedStorageEngines??[],W=DC({class:_.class,name:_.name,bins:_.bins,hosting:_.hosting,storageMode:_.storage.mode}),z=new Set(W?[]:P.map((L)=>L.engine)),S=i9.filter((L)=>!O.has(L)&&!z.has(L));if(S.length>0){let L=W&&P.length>0?`; declared waiver ignored: ${W}`:"";$.addIssue({code:N.ZodIssueCode.custom,message:`cli-with-store storage.engines must declare both sqlite and postgres unless the engine carries a metadata.conformance.waivedStorageEngines waiver; missing: ${S.join(", ")}${L}`,path:["storage","engines"]})}}}if(!U.has(_.name))$.addIssue({code:N.ZodIssueCode.custom,message:`cli-with-store repos must ship the "${_.name}" bin`,path:["bins"]})}if(_.class==="service"){if(!_.storage)$.addIssue({code:N.ZodIssueCode.custom,message:"service repos must declare storage",path:["storage"]});else if(_.storage.engines&&(!_.storage.engines.includes("sqlite")||!_.storage.engines.includes("postgres")))$.addIssue({code:N.ZodIssueCode.custom,message:"service storage.engines must declare both sqlite and postgres",path:["storage","engines"]});if(!D("-serve"))$.addIssue({code:N.ZodIssueCode.custom,message:`service repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"service repos must declare at least one service surface",path:["serviceSurfaces"]})}if(_.class==="saas"){if(!_.storage)$.addIssue({code:N.ZodIssueCode.custom,message:"saas repos must declare storage",path:["storage"]});else{if(_.storage.mode!=="postgres")$.addIssue({code:N.ZodIssueCode.custom,message:"saas repos must use the postgres storage backend",path:["storage","mode"]});if(!_.storage.envPrefix)$.addIssue({code:N.ZodIssueCode.custom,message:"saas storage requires envPrefix for the public DATABASE_URL contract",path:["storage","envPrefix"]})}if(!D("-serve"))$.addIssue({code:N.ZodIssueCode.custom,message:`saas repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"saas repos must declare at least one service surface",path:["serviceSurfaces"]})}for(let[O,P]of _.serviceSurfaces.entries()){if(P.bin&&!U.has(P.bin))$.addIssue({code:N.ZodIssueCode.custom,message:`Service surface bin "${P.bin}" must be declared in bins`,path:["serviceSurfaces",O,"bin"]});if(P.mcpBin&&!U.has(P.mcpBin))$.addIssue({code:N.ZodIssueCode.custom,message:`Service surface MCP bin "${P.mcpBin}" must be declared in bins`,path:["serviceSurfaces",O,"mcpBin"]})}let I=_.metadata?.conformance?.waivedSurfaces??[],j=new Set;for(let[O,P]of I.entries()){if(j.has(P.kind))$.addIssue({code:N.ZodIssueCode.custom,message:`Duplicate conformance waiver for ${P.kind}`,path:["metadata","conformance","waivedSurfaces",O,"kind"]});j.add(P.kind)}let E=_.metadata?.conformance?.waivedStorageEngines??[],A=new Set;for(let[O,P]of E.entries()){if(A.has(P.engine))$.addIssue({code:N.ZodIssueCode.custom,message:`Duplicate storage-engine waiver for ${P.engine}`,path:["metadata","conformance","waivedStorageEngines",O,"engine"]});A.add(P.engine)}}),Md=N.object({status:N.enum(["ok","degraded","unavailable"]),version:N.string().min(1),mode:m9}).strict(),Zd=N.object({ready:N.boolean(),reason:N.string().min(1).optional()}).strict(),Hd=N.object({version:N.string().min(1)}).strict(),JC=N.enum(["info","notice","breaking","critical"]),zC=N.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 (..)"),RC=["FREEZE","UNFREEZE","BREAKING","CUTOVER","POLICY","RELEASE"],GC=N.enum(RC);var XC=N.enum(["fleet","package","machine"]),e9=P_(x.commsEventEnvelope).extend({type:zC,severity:JC,scope:XC,summary:N.string().min(1).optional(),source:d$.optional(),affected_packages:N.array(t).default([]),affected_machines:N.array(t).default([]),action_required:N.boolean().default(!1),ack_by:q_.optional(),dedupe_key:t,resourceRefs:N.array(s).default([]),evidenceRefs:N.array(Y_).default([])}).strict().superRefine((_,$)=>{if(_.scope==="package"&&_.affected_packages.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Package-scoped comms events require affected_packages",path:["affected_packages"]});if(_.scope==="machine"&&_.affected_machines.length===0)$.addIssue({code:N.ZodIssueCode.custom,message:"Machine-scoped comms events require affected_machines",path:["affected_machines"]});if(_.ack_by&&!_.action_required)$.addIssue({code:N.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:N.ZodIssueCode.custom,message:`${_.type} events are always critical`,path:["severity"]});if(_.scope!=="fleet")$.addIssue({code:N.ZodIssueCode.custom,message:`${_.type} events are always fleet-scoped`,path:["scope"]});if(!_.action_required)$.addIssue({code:N.ZodIssueCode.custom,message:`${_.type} events require action_required`,path:["action_required"]})}}),YC=N.enum(["fleet","package","product","loop-lane","initiative","personal"]),QC=N.enum(["quiet","work","firehose"]),TC=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:)"),KC=P_(x.commsChannelMetadata).extend({class:YC,noise:QC.optional(),owner:t.optional(),until:TC.optional(),successor:t.optional()}).strict().superRefine((_,$)=>{if(_.class==="initiative"){if(!_.owner)$.addIssue({code:N.ZodIssueCode.custom,message:"Initiative channels require an owner",path:["owner"]});if(!_.until)$.addIssue({code:N.ZodIssueCode.custom,message:"Initiative channels require an until horizon (date or gate id)",path:["until"]})}}),R9={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}},qC=P_(x.commsMessageMetadata).extend({tag:GC,envelope:e9}).strict().superRefine((_,$)=>{let g=R9[_.tag];if(!g.allowedSeverities.includes(_.envelope.severity))$.addIssue({code:N.ZodIssueCode.custom,message:`[${_.tag}] posts allow severities ${g.allowedSeverities.join(", ")}`,path:["envelope","severity"]});if(g.requiredEventType&&_.envelope.type!==g.requiredEventType)$.addIssue({code:N.ZodIssueCode.custom,message:`[${_.tag}] posts require event type ${g.requiredEventType}`,path:["envelope","type"]});for(let[U,D]of Object.entries(R9))if(D.requiredEventType===_.envelope.type&&_.tag!==U)$.addIssue({code:N.ZodIssueCode.custom,message:`${_.envelope.type} events must use the [${U}] tag`,path:["tag"]})});var BC={[x.actorRef]:pZ,[x.resourceRef]:eZ,[x.evidenceRef]:sZ,[x.workRun]:Ak,[x.taskToPrProjection]:xk,[x.decisionEnvelope]:H9,[x.costEstimate]:QU,[x.capabilityCard]:$H,[x.providerLiveModeStandard]:EH,[x.contextPack]:k9,[x.integrationRef]:C9,[x.projectManifest]:SH,[x.projectPanel]:v9,[x.projectSnapshot]:TH,[x.renderManifest]:zH,[x.agentTrajectory]:ck,[x.validationPlan]:KH,[x.proofBundle]:Nk,[x.scaffoldManifest]:MH,[x.scaffoldInstallRecord]:HH,[x.appCloudManifest]:f9,[x.noCloudEvidencePack]:jk,[x.secureLocalStorePolicy]:p9,[x.serviceContract]:WC,[x.commsEventEnvelope]:e9,[x.commsChannelMetadata]:KC,[x.commsMessageMetadata]:qC,[x.app]:yH,[x.release]:hH,[x.rolloutRecord]:mH,[x.announcement]:oH,[x.audience]:$k};class a9 extends Error{schemaId;issues;constructor(_,$){super(`Contract validation failed for ${_}`);this.name="ContractValidationError",this.schemaId=_,this.issues=$}}function s9(_,$){let U=BC[_].safeParse($);if(!U.success)throw new a9(_,U.error.issues);return U.data}var kd=String.raw`(?:^|[^\w$])(?:_*(?:import|require)|createRequire|Module\s*\.\s*_load)`;var sW=[{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"}],Cd=sW.filter((_)=>("checkKind"in _)),VC=sW.filter((_)=>_.kind==="module"),vd=[...new Set([...jE,...VC.map((_)=>_.pattern)])],wd=sW.filter((_)=>_.kind==="config");var G9="^[^\\u0000-\\u001f\\u007f]*$",ud={$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:hW.length,items:{type:"object",additionalProperties:!1,required:["engine","reason"],properties:{engine:{enum:[...hW]},reason:{type:"string",minLength:1,maxLength:eW,allOf:[{pattern:"\\S"},{pattern:G9}]},reviewedBy:{type:"string",minLength:1,maxLength:aW,allOf:[{pattern:"\\S"},{pattern:G9}]},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 FC="2026-07-06";function c$(_,$,g,U,D,I=[],j){return{id:_,description:$,ttlDays:g,artifactClasses:U,allowlistGlobs:D,activeRecordExclusions:I.map((E)=>({...E,required:E.required??!0})),sqliteMaintenance:j}}var fd=p9.parse({schema:x.secureLocalStorePolicy,id:"hasna-secure-local-store-defaults",createdAt:"2026-07-06T00:00:00.000Z",version:FC,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 rC=64,xd=new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${rC-1}}$`),g0="[0-9a-fA-F]",yd=new RegExp(`^\\{?(?:${g0}{8}-${g0}{4}-${g0}{4}-${g0}{4}-${g0}{12}|${g0}{32})\\}?$`);var bC=/^hasna_([a-z][a-z0-9-]*)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;var cd=new RegExp(bC.source.replace(/^\^/,"\\b").replace(/\$$/,"\\b"));var _8="@hasna/knowledge";function MC(_){if(!Number.isFinite(_??0))return 20;return Math.max(1,Math.min(100,Math.trunc(_??20)))}function ZC(_){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 Z_(_,$=""){return typeof _==="string"&&_.length>0?_:$}function KU(_){return typeof _==="number"&&Number.isFinite(_)?_:0}function K0(_){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 WE(_){return M$.safeParse(_).success}function Z$(_,$,g,U,D=[]){return{kind:_,id:$,name:g,uri:U&&WE(U)?U:void 0,externalId:$,sourcePackage:_8,tags:D}}function HC(_){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(K0).filter(Boolean).sort((g,U)=>U.localeCompare(g))[0]}function kC(_){if(!_)return"unknown";let $=Date.now()-new Date(_).valueOf();if(!Number.isFinite($))return"unknown";return $>2592000000?"stale":"fresh"}function CC(_){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 vC(_,$){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:K0(U.updated_at??U.created_at),resourceRefs:[Z$("knowledge",U.id,U.title,`knowledge://item/${encodeURIComponent(U.id)}`,U.tags)],evidenceRefs:U.url&&WE(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=Z_(U.id,Z_(U.uri,"source")),I=Z_(U.title,Z_(U.uri,D)),j=Z_(U.uri,`knowledge://source/${encodeURIComponent(D)}`);g.push({id:`source_${D}`,title:I,summary:TU(`${KU(U.chunks)} chunk(s), ${KU(U.revisions)} revision(s)`),status:KU(U.chunks)>0?"indexed":"source",priority:"medium",timestamp:K0(U.updated_at??U.created_at),resourceRefs:[Z$("document",D,I,j)],evidenceRefs:WE(j)?[{id:`source_${D}`,kind:"url",uri:j,summary:"Source reference."}]:[],metadata:{source:"knowledge_db.sources",kind:U.kind,chunks:KU(U.chunks),revisions:KU(U.revisions)}})}for(let U of _.chunks.slice(0,Math.max(0,$-g.length))){let D=Z_(U.id,"chunk"),I=Z_(U.source_uri);g.push({id:`chunk_${D}`,title:Z_(U.wiki_title,I?`Chunk from ${I}`:`Knowledge chunk ${D}`),summary:TU(U.text_preview),status:"chunk",priority:"low",timestamp:K0(U.created_at),resourceRefs:[Z$("context_pack",D,Z_(U.wiki_title,D),`knowledge://chunk/${encodeURIComponent(D)}`)],evidenceRefs:I&&WE(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=Z_(U.id,"sync_conflict");g.push({id:`sync_conflict_${D}`,title:`Sync conflict: ${Z_(U.entity_kind,"entity")}/${Z_(U.entity_id,D)}`,summary:TU(`Status ${Z_(U.status,"unknown")}; strategy ${Z_(U.resolution_strategy,"none")}.`),status:Z_(U.status,"unknown"),priority:"critical",timestamp:K0(U.created_at),resourceRefs:[Z$("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=Z_(U.id,"reindex");g.push({id:`reindex_${D}`,title:`Reindex ${Z_(U.kind,"item")}: ${Z_(U.target_id,D)}`,summary:TU(U.reason),status:Z_(U.status,"unknown"),priority:Z_(U.status).toLowerCase()==="failed"?"high":"medium",timestamp:K0(U.updated_at??U.created_at),resourceRefs:[Z$("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 $8(_,$={}){let g=MC($.limit),U=new Date().toISOString(),D=ZC(_),j=await($.service??IE({scope:$.scope??"project",cwd:$.cwd})).resolveInventory({limit:g,storePath:$.storePath,includeArchived:$.includeArchived}),E=HC(j),A=kC(E),O=j.summary.active_items+j.summary.sources+j.summary.chunks+j.summary.wiki_pages+j.summary.storage_objects,P=CC(j),W=O===0?"empty":A==="stale"?"stale":"ready",z=vC(j,g),S={schema:x.projectPanel,id:`knowledge_panel_${D}`,createdAt:U,projectId:D,provider:{kind:"knowledge",id:`knowledge_${D}`,name:"Knowledge",sourcePackage:_8,externalId:j.home},kind:"knowledge",title:"Knowledge",summary:W==="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:W,stateReason:W==="stale"?"Latest indexed knowledge activity is older than 30 days.":void 0,generatedAt:U,freshness:A,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:P,status:P>0?"warning":"good"}],items:z,actions:[Z$("action","knowledge:inventory","Inspect knowledge inventory"),Z$("action","knowledge:context-pack","Build cited context pack"),Z$("action","knowledge:ingest","Ingest project source")],resourceRefs:[Z$("project",D,_,`project://${D}`),Z$("knowledge",`home_${D}`,"Knowledge workspace",`knowledge://workspace/${encodeURIComponent(D)}`),Z$("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:E}};return s9(x.projectPanel,S)}function g8(_){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 I8=["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 j8="HASNA_KNOWLEDGE_STORAGE_MODE",E8="KNOWLEDGE_STORAGE_MODE";function D8(_){return process.env[_]?.trim()||void 0}function U8(_){let $=_?.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return"sqlite";if($==="postgres"||$==="postgresql")return"postgres";return}function wC(_={}){let $=U4(MU(_.scope,_.cwd).home);return c($.knowledgeDbPath),{db:v($.knowledgeDbPath),path:$.knowledgeDbPath,scope:_.scope??"global"}}function N8(){let _=U8(D8(j8))??U8(D8(E8));if(_)return _;return"sqlite"}function _J(_={}){let $=wC(_);try{uC($.db);let g=$.db.query("SELECT table_name, last_synced_at, direction FROM _knowledge_sync_meta ORDER BY table_name, direction").all();return{mode:N8(),service:"knowledge",scope:$.scope,databasePath:$.path,tables:I8,sync:g}}finally{$.db.close()}}function uC(_){_.exec(` + `,[D]).map(iH),c={legacy_items:U.items.length,active_items:E.length,archived_items:U.items.length-E.length,schema_version:A.schema_version,sources:A.sources,source_revisions:A.source_revisions,chunks:A.chunks,wiki_pages:A.wiki_pages,citations:A.citations,indexes:A.indexes,runs:A.runs,run_events:A.run_events,storage_objects:A.storage_objects,embeddings:A.embeddings,vector_entries:A.vector_entries,reindex_queue:A.reindex_queue,redaction_findings:A.redaction_findings,audit_events:A.audit_events,approval_gates:A.approval_gates,knowledge_machines:A.knowledge_machines,sync_snapshots:A.sync_snapshots,sync_changes:A.sync_changes,sync_conflicts:A.sync_conflicts,sync_table_clocks:A.sync_table_clocks,sync_imports:A.sync_imports,promotion_candidates:A.promotion_candidates,durable_records:A.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:D,paths:{json_store_path:I,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:c,legacy_store:{path:I,exists:U.exists,read_error:U.read_error,total_items:U.items.length,active_items:E.length,archived_items:U.items.length-E.length,items_returned:Math.min(j.length,D)},items:j.slice(0,D).map(P9),sources:L,source_revisions:J,chunks:P,wiki_pages:z,indexes:S,storage_objects:W,runs:X,vector_indexes:G,reindex_queue:R,machines:K,sync_conflicts:Y,approval_gates:T,audit_events:F,promotion_candidates:k,durable_records:B,message:`${U.items.length} item(s), ${A.sources} source(s), ${A.chunks} chunk(s), ${A.wiki_pages} wiki page(s), ${A.storage_objects} artifact(s)`}}finally{O.close()}}assertAppWikiWrite(_){mD({scope:this.scope,workspace:this.workspace,safetyPolicy:this.safetyPolicy(),allowGlobal:_})}async initAppWiki(_={}){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return Q3({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async addAppWikiNote(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return K3({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(!X_($.knowledgeDbPath))return[];return T3({dbPath:$.knowledgeDbPath,limit:_.limit})}async getAppWikiNote(_,$={}){let D=this.workspace;if(!X_(D.knowledgeDbPath))return null;return F3({dbPath:D.knowledgeDbPath,store:this.artifactStore(),id:_,includeContent:$.includeContent})}async addAppWikiSourceRef(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return V3({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 cR(this.artifactStore()),D=w(_.knowledgeDbPath);try{j6(D,$.artifacts),nR(D,$.artifacts)}finally{D.close()}return $}async compileWiki(_={}){let $=this.ensureWorkspace();return xR({..._,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 uR({dbPath:$.knowledgeDbPath,store:this.artifactStore(),prompt:_.prompt,answer:_.answer,context:D,approveWrite:_.approveWrite})}lintWiki(){let _=this.ensureWorkspace();return yR({dbPath:_.knowledgeDbPath})}async ingestManifest(_){let $=this.ensureWorkspace();return z3({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}async ingestSource(_,$){let D=this.ensureWorkspace();return II({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$,config:this.config(),safetyPolicy:this.safetyPolicy()})}async importRulesProvenance(_={}){let $=_.dryRun!==!1,D=$?this.workspace:this.ensureWorkspace();return MR({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 $I({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$.purpose,limit:$.limit,safetyPolicy:this.safetyPolicy()})}async consumeOutbox(_){let $=this.ensureWorkspace();return uG({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}reindexHealth(_={}){let $=this.workspace;if(!X_($.knowledgeDbPath))return aH();return zR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}enqueueReindex(_={}){let $=this.ensureWorkspace();return KW({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async refreshEmbeddings(_={}){let $=this.ensureWorkspace();return XR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}providerStatus(_=process.env){return H3(this.config(),_)}modelRegistry(){return kg(this.config())}embeddingStatus(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return sH();return r3(_.knowledgeDbPath)}async indexEmbeddings(_={}){let $=this.ensureWorkspace();return NI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}isApiMode(){return h$()}cloudStore(){let _=dD();if(!_)throw Error("knowledge: cloud store requested but not resolvable (check HASNA_KNOWLEDGE_API_URL + HASNA_KNOWLEDGE_API_KEY).");return _}async fetchCloudItems(){return i1(this.cloudStore())}async semanticSearch(_){let $=this.workspace;if(this.isApiMode())throw new WN;if(!X_($.knowledgeDbPath))return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:[]};return gI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async search(_){let $=this.workspace;if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new WN;let I=await this.cloudStore().search({query:_.query,archive:"active",limit:_.limit,offset:_.offset});return xg(I.items,_,[],I.total)}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){if(X_(D))return SI({..._,legacyStorePath:D,config:this.config()});return M9(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return LI({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async retrieveContext(_){let $=this.workspace;if(this.isApiMode()){let I=await this.search(_);return A6(I,{contextChars:_.contextChars})}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){if(X_(D)){let I=await SI({..._,legacyStorePath:D,config:this.config()});return A6(I,{contextChars:_.contextChars})}return pH(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return F0({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async contextPack(_){let $=this.workspace;if(this.isApiMode()){let I=(_.query??_.topic??"").trim();if(I&&_.source!=="loops"&&_.source!=="runs"){let U=await this.search({..._,query:I}),E=A6(U,{contextChars:_.contextChars});return G9(_,E,this.safetyPolicy())}return R9(_)}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){let I=(_.query??_.topic??"").trim();if(I&&_.source!=="loops"&&_.source!=="runs"&&X_(D)){let U=await SI({..._,query:I,legacyStorePath:D,config:this.config()}),E=A6(U,{contextChars:_.contextChars});return G9(_,E,this.safetyPolicy())}return R9(_)}return SX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config(),safetyPolicy:this.safetyPolicy()})}async runPrompt(_){if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new WN;let I=await this.cloudStore().search({query:_.prompt,archive:"active",limit:_.limit,offset:_.offset}),U=xg(I.items,{query:_.prompt,limit:_.limit,offset:_.offset,semantic:!1},[],I.total);return UX(I.items.map((E)=>E.item),{..._,config:this.config()},U)}let $=this.ensureWorkspace(),D=_.legacyStorePath??$.jsonStorePath;if(!_.legacyStorePath)xD(D);return DX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async webSearch(_){let $=this.ensureWorkspace();return kR({..._,dbPath:$.knowledgeDbPath,config:this.config(),safetyPolicy:this.safetyPolicy()})}async machineTopology(_={}){let $=this.workspace;return _R({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}async machinePreflight(_={}){let $=this.workspace;return UR({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}syncStatus(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return _k({scope:this.scope,workspaceHome:_.home});return wX({dbPath:_.knowledgeDbPath,scope:this.scope,workspaceHome:_.home})}async syncDoctor(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let D=this.syncStatus(),I=this.storageContract(),U=this.validateStorage(),E=$k($.knowledgeDbPath,I),j=_.machine?.trim()||null,N=_.peerWorkspace?.trim()||null,A=[],O=null,L=null;if(j&&!T9(j)){let W=await XW({machineId:j,includeTailscale:_.includeTailscale});O=cW(W),A.push(...W.warnings)}if(j||N){let W=await sj({machineId:j??hW($),peerWorkspace:N,includeTailscale:_.includeTailscale});if(j&&!N&&(O?.source==="raw"||!W.ok||!W.project_root)){let X=O9($.knowledgeDbPath,j);if(X){if(O?.source==="raw"&&X.ssh_target)O=cW(L9(X,j,{target:O.target,route:O.route,targetKind:O.target_kind,confidence:O.confidence,source:O.source,adapter:O.adapter,evidence:O.evidence,cacheability:O.cacheability,warnings:[]}));if(!W.ok||!W.project_root){let G=S9(X,j,W);if(G)L=X1(G,G.project_root),A.push(...G.warnings)}}}L=W.ok&&W.project_root?X1(W,W.project_root):L??{...X1(W,N??""),project_root:W.project_root??N??""},A.push(...W.warnings)}if(!U.ok)A.push(...U.errors.map((W)=>`storage:${W}`));let J=nH($.knowledgeDbPath,L);if(!J.ok)A.push("open_files_boundary_raw_payload_sentinels");if(!E.ok)A.push(...E.warnings);let P=L?.diagnostics.filter((W)=>W.severity==="fail")??[],z=U.ok&&E.ok&&J.ok&&P.length===0&&(L?.project_root!==""||!L),S=Uk({scope:this.scope,machine:j,peerWorkspace:N,tables:_.tables,resolvedWorkspace:L,openConflicts:D.conflicts.open});return{ok:z,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:I,validation:U,artifact_manifest:E},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:J,resolved_route:O,resolved_workspace:L,recommended_commands:S,warnings:[...new Set(A)],message:z?`Sync readiness ok: ${D.clocks.total} table clock(s), ${D.conflicts.open} open conflict(s)`:`Sync readiness needs attention: ${[...new Set(A)].join(", ")||"workspace diagnostics failed"}`}}repairArtifactManifestKeys(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let D=this.storageContract(),I=tW(D),U=Dk($.knowledgeDbPath,D),E=_.dryRun===!0||_.approveWrite!==!0;if(U.length===0)return{ok:!0,dry_run:E,approval_required:!1,storage_type:D.storage_type,storage_prefix:I,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:I,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:I,candidates:U,repaired:0,audit_event_id:null,message:"Artifact key repair requires --approve-write and --approved-by "};let j=w($.knowledgeDbPath);try{let N=new Date().toISOString();j.transaction((L)=>{let J=j.query("UPDATE storage_objects SET metadata_json = ?, updated_at = ? WHERE id = ?"),P=j.query("SELECT id, metadata_json FROM storage_objects").all(),z=new Map(P.map((S)=>[S.id,i4(S.metadata_json)]));for(let S of L){let W=z.get(S.id)??{};W.key=S.repaired_key,J.run(JSON.stringify(W),N,S.id)}})(U);let O=G_(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:I,artifact_uris:U.map((L)=>L.artifact_uri)}});return{ok:!0,dry_run:!1,approval_required:!1,storage_type:D.storage_type,storage_prefix:I,candidates:U,repaired:U.length,audit_event_id:O,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 vX({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),topology:D,machineId:_.machineId})}syncConflicts(_={}){let $=this.workspace;if(!X_($.knowledgeDbPath))return[];return rX($.knowledgeDbPath,_)}syncConflict(_){let $=this.ensureWorkspace(),D=TI($.knowledgeDbPath,_);if(!D)throw Error(`Sync conflict not found: ${_}`);return D}proposeSyncConflictResolution(_){let $=this.ensureWorkspace();return $U($.knowledgeDbPath,_)}async proposeSyncConflictResolutionWithAi(_){let $=this.ensureWorkspace();return fG({dbPath:$.knowledgeDbPath,id:_.id,config:this.config(),modelRef:_.modelRef,fake:_.fake,env:_.env})}resolveSyncConflict(_){let $=this.ensureWorkspace(),D=$U($.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 I=uX($.knowledgeDbPath,{id:_.id,strategy:_.strategy??D.proposed_strategy,approvedBy:_.approvedBy,proposedPatchUri:_.proposedPatchUri}),U=w($.knowledgeDbPath);try{let E=G_(U,{event_type:"sync_conflict_resolution",action:"sync.conflict.resolve",target_uri:`knowledge-sync-conflict://${_.id}`,decision:"allow",metadata:{conflict_id:_.id,entity_kind:I.entity_kind,entity_id:I.entity_id,strategy:I.resolution_strategy,approved_by:I.approved_by,proposed_patch_uri:I.proposed_patch_uri}});return{ok:!0,approval_required:!1,conflict:I,audit_event_id:E,message:`Resolved sync conflict ${_.id}`}}finally{U.close()}}syncMachines(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return[];return sg(_.knowledgeDbPath)}exportSyncBundle(_={}){let $=this.ensureWorkspace();return this.assertStorageValid("sync export"),h($.knowledgeDbPath),_U({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),KI({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,I=this.ensureWorkspace();h(I.knowledgeDbPath);let U=_.tables?.length?["--tables",_.tables.join(",")]:[],E=_.includeArtifactContent===!1?["--no-artifact-content"]:[],j=["--scope",this.scope,"--json"],N=await XW({machineId:_.machine,includeTailscale:_.includeTailscale}),A=await sj({machineId:_.machine,peerWorkspace:_.peerWorkspace,includeTailscale:_.includeTailscale});if(!_.peerWorkspace&&N.source==="raw"||!A.ok||!A.project_root){let z=O9(I.knowledgeDbPath,_.machine);if(z){if(!_.peerWorkspace&&N.source==="raw"&&z.ssh_target)N=L9(z,_.machine,N);if(!A.ok||!A.project_root){let S=S9(z,_.machine,A);if(S)A=S}}}if(!A.ok||!A.project_root)throw Error([`Unable to resolve peer workspace for ${_.machine}.`,"Pass --peer-workspace or configure workspace path mapping in machines.",A.warnings.length?`Warnings: ${A.warnings.join(", ")}`:null].filter(Boolean).join(" "));let O=A.project_root,L={ok:!0,dry_run:D,direction:$,transport:"ssh",machine:_.machine,resolved_machine:N.target,resolved_route:cW(N),resolved_workspace:X1(A,A.project_root),peer_workspace:O,message:""},J=!1,P=()=>{if(D||J)return;kX(I.knowledgeDbPath,{machineId:_.machine,route:N,workspace:A}),J=!0};if($==="pull"||$==="both"){let z=A9(O,["sync","export",...j,...U,...E]),S=Y9(_.machine,z,void 0,N),W=Q9(_.machine,"sync export",S);Ek(_.machine,W),L.pull=await this.importSyncBundle({bundle:W,dryRun:D,direction:"pull",machineId:_.machineId??null})}if($==="push"||$==="both"){P();let z=this.exportSyncBundle({machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:!D}),S=A9(O,["sync","import",...j,...D?["--dry-run"]:[]]),W=Q9(_.machine,"sync import",Y9(_.machine,S,JSON.stringify(z),N));jk(_.machine,W),L.push=W}return L.ok=(L.pull?.ok??!0)&&(L.push?.ok??!0),P(),L.message=[J9(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 I=K9(_.peerWorkspace),U=wH(I);h(U.knowledgeDbPath);let E=yN(U.configPath),j=a1(E,U,this.scope),N=zg(E,U),A=_.machineId??hW(D),O=hW(U),L=await sj({machineId:_.machineId??O,peerWorkspace:I,includeTailscale:!1}),J=()=>_U({dbPath:D.knowledgeDbPath,scope:this.scope,workspaceHome:D.home,storage:this.storageContract(),machineId:A,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),P=()=>_U({dbPath:U.knowledgeDbPath,scope:this.scope,workspaceHome:U.home,storage:j,machineId:O,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),z={ok:!0,dry_run:_.dryRun===!0,direction:$,resolved_workspace:X1(L,L.project_root??I),message:""};if($==="pull"||$==="both")z.pull=await KI({targetDbPath:D.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:D.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:P(),targetBundle:J(),direction:"pull",dryRun:_.dryRun,localMachineId:A});if($==="push"||$==="both")z.push=await KI({targetDbPath:U.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:U.home,targetStorage:j,targetStore:N,bundle:J(),targetBundle:P(),direction:"push",dryRun:_.dryRun,localMachineId:O});return z.ok=(z.pull?.ok??!0)&&(z.push?.ok??!0),z.message=[J9(z.resolved_workspace),z.pull?`pull: ${z.pull.message}`:null,z.push?`push: ${z.push.message}`:null].filter(Boolean).join("; "),z}}function zN(_={}){return new b9(_)}import{createHash as Z9}from"crypto";var gk=Object.defineProperty,Ak=(_)=>_;function Ok(_,$){this[_]=Ak.bind(null,$)}var Lk=(_,$)=>{for(var D in $)gk(_,D,{get:$[D],enumerable:!0,configurable:!0,set:Ok.bind($,D)})},g={};Lk(g,{void:()=>ok,util:()=>I_,unknown:()=>ik,union:()=>sk,undefined:()=>dk,tuple:()=>Dq,transformer:()=>q9,symbol:()=>nk,string:()=>l9,strictObject:()=>ak,setErrorMap:()=>Wk,set:()=>Eq,record:()=>Uq,quotelessJson:()=>Sk,promise:()=>Lq,preprocess:()=>Wq,pipeline:()=>Pq,ostring:()=>zq,optional:()=>Sq,onumber:()=>Xq,oboolean:()=>Gq,objectUtil:()=>eW,object:()=>ek,number:()=>i9,nullable:()=>Jq,null:()=>mk,never:()=>tk,nativeEnum:()=>Oq,nan:()=>yk,map:()=>Iq,makeIssue:()=>RN,literal:()=>gq,lazy:()=>Nq,late:()=>xk,isValid:()=>t4,isDirty:()=>sW,isAsync:()=>Q1,isAborted:()=>aW,intersection:()=>$q,instanceof:()=>uk,getParsedType:()=>Q6,getErrorMap:()=>GN,function:()=>jq,enum:()=>Aq,effect:()=>q9,discriminatedUnion:()=>_q,defaultErrorMap:()=>PD,datetimeRegex:()=>n9,date:()=>ck,custom:()=>m9,coerce:()=>Rq,boolean:()=>t9,bigint:()=>hk,array:()=>pk,any:()=>lk,addIssueToContext:()=>x,ZodVoid:()=>T1,ZodUnknown:()=>p6,ZodUnion:()=>RD,ZodUndefined:()=>XD,ZodType:()=>__,ZodTuple:()=>p$,ZodTransformer:()=>Q$,ZodSymbol:()=>K1,ZodString:()=>q$,ZodSet:()=>e4,ZodSchema:()=>__,ZodRecord:()=>F1,ZodReadonly:()=>BD,ZodPromise:()=>a4,ZodPipeline:()=>M1,ZodParsedType:()=>y,ZodOptional:()=>v$,ZodObject:()=>H_,ZodNumber:()=>e6,ZodNullable:()=>K6,ZodNull:()=>GD,ZodNever:()=>o$,ZodNativeEnum:()=>TD,ZodNaN:()=>B1,ZodMap:()=>V1,ZodLiteral:()=>KD,ZodLazy:()=>QD,ZodIssueCode:()=>C,ZodIntersection:()=>YD,ZodFunction:()=>JD,ZodFirstPartyTypeKind:()=>i,ZodError:()=>S$,ZodEnum:()=>s6,ZodEffects:()=>Q$,ZodDiscriminatedUnion:()=>KN,ZodDefault:()=>FD,ZodDate:()=>o4,ZodCatch:()=>VD,ZodBranded:()=>TN,ZodBoolean:()=>zD,ZodBigInt:()=>a6,ZodArray:()=>C$,ZodAny:()=>p4,Schema:()=>__,ParseStatus:()=>i_,OK:()=>_$,NEVER:()=>Yq,INVALID:()=>l,EMPTY_PATH:()=>Pk,DIRTY:()=>SD,BRAND:()=>fk});var I_;(function(_){_.assertEqual=(U)=>{};function $(U){}_.assertIs=$;function D(U){throw Error()}_.assertNever=D,_.arrayToEnum=(U)=>{let E={};for(let j of U)E[j]=j;return E},_.getValidEnumValues=(U)=>{let E=_.objectKeys(U).filter((N)=>typeof U[U[N]]!=="number"),j={};for(let N of E)j[N]=U[N];return _.objectValues(j)},_.objectValues=(U)=>{return _.objectKeys(U).map(function(E){return U[E]})},_.objectKeys=typeof Object.keys==="function"?(U)=>Object.keys(U):(U)=>{let E=[];for(let j in U)if(Object.prototype.hasOwnProperty.call(U,j))E.push(j);return E},_.find=(U,E)=>{for(let j of U)if(E(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 I(U,E=" | "){return U.map((j)=>typeof j==="string"?`'${j}'`:j).join(E)}_.joinValues=I,_.jsonStringifyReplacer=(U,E)=>{if(typeof E==="bigint")return E.toString();return E}})(I_||(I_={}));var eW;(function(_){_.mergeShapes=($,D)=>{return{...$,...D}}})(eW||(eW={}));var y=I_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Q6=(_)=>{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}},C=I_.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"]),Sk=(_)=>{return JSON.stringify(_,null,2).replace(/"([^"]+)":/g,"$1:")};class S$ 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:[]},I=(U)=>{for(let E of U.issues)if(E.code==="invalid_union")E.unionErrors.map(I);else if(E.code==="invalid_return_type")I(E.returnTypeError);else if(E.code==="invalid_arguments")I(E.argumentsError);else if(E.path.length===0)D._errors.push($(E));else{let j=D,N=0;while(N$.message){let $={},D=[];for(let I of this.issues)if(I.path.length>0){let U=I.path[0];$[U]=$[U]||[],$[U].push(_(I))}else D.push(_(I));return{formErrors:D,fieldErrors:$}}get formErrors(){return this.flatten()}}S$.create=(_)=>{return new S$(_)};var Jk=(_,$)=>{let D;switch(_.code){case C.invalid_type:if(_.received===y.undefined)D="Required";else D=`Expected ${_.expected}, received ${_.received}`;break;case C.invalid_literal:D=`Invalid literal value, expected ${JSON.stringify(_.expected,I_.jsonStringifyReplacer)}`;break;case C.unrecognized_keys:D=`Unrecognized key(s) in object: ${I_.joinValues(_.keys,", ")}`;break;case C.invalid_union:D="Invalid input";break;case C.invalid_union_discriminator:D=`Invalid discriminator value. Expected ${I_.joinValues(_.options)}`;break;case C.invalid_enum_value:D=`Invalid enum value. Expected ${I_.joinValues(_.options)}, received '${_.received}'`;break;case C.invalid_arguments:D="Invalid function arguments";break;case C.invalid_return_type:D="Invalid function return type";break;case C.invalid_date:D="Invalid date";break;case C.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 I_.assertNever(_.validation);else if(_.validation!=="regex")D=`Invalid ${_.validation}`;else D="Invalid";break;case C.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 C.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 C.custom:D="Invalid input";break;case C.invalid_intersection_types:D="Intersection results could not be merged";break;case C.not_multiple_of:D=`Number must be a multiple of ${_.multipleOf}`;break;case C.not_finite:D="Number must be finite";break;default:D=$.defaultError,I_.assertNever(_)}return{message:D}},PD=Jk,y9=PD;function Wk(_){y9=_}function GN(){return y9}var RN=(_)=>{let{data:$,path:D,errorMaps:I,issueData:U}=_,E=[...D,...U.path||[]],j={...U,path:E};if(U.message!==void 0)return{...U,path:E,message:U.message};let N="",A=I.filter((O)=>!!O).slice().reverse();for(let O of A)N=O(j,{data:$,defaultError:N}).message;return{...U,path:E,message:N}},Pk=[];function x(_,$){let D=GN(),I=RN({issueData:$,data:_.data,path:_.path,errorMaps:[_.common.contextualErrorMap,_.schemaErrorMap,D,D===PD?void 0:PD].filter((U)=>!!U)});_.common.issues.push(I)}class i_{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 I of $){if(I.status==="aborted")return l;if(I.status==="dirty")_.dirty();D.push(I.value)}return{status:_.value,value:D}}static async mergeObjectAsync(_,$){let D=[];for(let I of $){let U=await I.key,E=await I.value;D.push({key:U,value:E})}return i_.mergeObjectSync(_,D)}static mergeObjectSync(_,$){let D={};for(let I of $){let{key:U,value:E}=I;if(U.status==="aborted")return l;if(E.status==="aborted")return l;if(U.status==="dirty")_.dirty();if(E.status==="dirty")_.dirty();if(U.value!=="__proto__"&&(typeof E.value<"u"||I.alwaysSet))D[U.value]=E.value}return{status:_.value,value:D}}}var l=Object.freeze({status:"aborted"}),SD=(_)=>({status:"dirty",value:_}),_$=(_)=>({status:"valid",value:_}),aW=(_)=>_.status==="aborted",sW=(_)=>_.status==="dirty",t4=(_)=>_.status==="valid",Q1=(_)=>typeof Promise<"u"&&_ instanceof Promise,d;(function(_){_.errToObj=($)=>typeof $==="string"?{message:$}:$||{},_.toString=($)=>typeof $==="string"?$:$?.message})(d||(d={}));class w${constructor(_,$,D,I){this._cachedPath=[],this.parent=_,this.data=$,this._path=D,this._key=I}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 H9=(_,$)=>{if(t4($))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 S$(_.common.issues);return this._error=D,this._error}}}};function a(_){if(!_)return{};let{errorMap:$,invalid_type_error:D,required_error:I,description:U}=_;if($&&(D||I))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:A}=_;if(j.code==="invalid_enum_value")return{message:A??N.defaultError};if(typeof N.data>"u")return{message:A??I??N.defaultError};if(j.code!=="invalid_type")return{message:N.defaultError};return{message:A??D??N.defaultError}},description:U}}class __{get description(){return this._def.description}_getType(_){return Q6(_.data)}_getOrReturnCtx(_,$){return $||{common:_.parent.common,data:_.data,parsedType:Q6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}_processInputParams(_){return{status:new i_,ctx:{common:_.parent.common,data:_.data,parsedType:Q6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}}_parseSync(_){let $=this._parse(_);if(Q1($))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:Q6(_)},I=this._parseSync({data:_,path:D.path,parent:D});return H9(D,I)}"~validate"(_){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:Q6(_)};if(!this["~standard"].async)try{let D=this._parseSync({data:_,path:[],parent:$});return t4(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)=>t4(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:Q6(_)},I=this._parse({data:_,path:D.path,parent:D}),U=await(Q1(I)?I:Promise.resolve(I));return H9(D,U)}refine(_,$){let D=(I)=>{if(typeof $==="string"||typeof $>"u")return{message:$};else if(typeof $==="function")return $(I);else return $};return this._refinement((I,U)=>{let E=_(I),j=()=>U.addIssue({code:C.custom,...D(I)});if(typeof Promise<"u"&&E instanceof Promise)return E.then((N)=>{if(!N)return j(),!1;else return!0});if(!E)return j(),!1;else return!0})}refinement(_,$){return this._refinement((D,I)=>{if(!_(D))return I.addIssue(typeof $==="function"?$(D,I):$),!1;else return!0})}_refinement(_){return new Q$({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 v$.create(this,this._def)}nullable(){return K6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return C$.create(this)}promise(){return a4.create(this,this._def)}or(_){return RD.create([this,_],this._def)}and(_){return YD.create(this,_,this._def)}transform(_){return new Q$({...a(this._def),schema:this,typeName:i.ZodEffects,effect:{type:"transform",transform:_}})}default(_){let $=typeof _==="function"?_:()=>_;return new FD({...a(this._def),innerType:this,defaultValue:$,typeName:i.ZodDefault})}brand(){return new TN({typeName:i.ZodBranded,type:this,...a(this._def)})}catch(_){let $=typeof _==="function"?_:()=>_;return new VD({...a(this._def),innerType:this,catchValue:$,typeName:i.ZodCatch})}describe(_){return new this.constructor({...this._def,description:_})}pipe(_){return M1.create(this,_)}readonly(){return BD.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var zk=/^c[^\s-]{8,}$/i,Xk=/^[0-9a-z]+$/,Gk=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Rk=/^[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,Yk=/^[a-z0-9_-]{21}$/i,Qk=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Kk=/^[-+]?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)?)??$/,Tk=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Fk="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",oW,Vk=/^(?:(?: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])$/,Bk=/^(?:(?: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])$/,Mk=/^(([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]))$/,bk=/^(([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])$/,Zk=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Hk=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,h9="((\\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])))",kk=new RegExp(`^${h9}$`);function c9(_){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 qk(_){return new RegExp(`^${c9(_)}$`)}function n9(_){let $=`${h9}T${c9(_)}`,D=[];if(D.push(_.local?"Z?":"Z"),_.offset)D.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${D.join("|")})`,new RegExp(`^${$}$`)}function Ck(_,$){if(($==="v4"||!$)&&Vk.test(_))return!0;if(($==="v6"||!$)&&Mk.test(_))return!0;return!1}function vk(_,$){if(!Qk.test(_))return!1;try{let[D]=_.split(".");if(!D)return!1;let I=D.replace(/-/g,"+").replace(/_/g,"/").padEnd(D.length+(4-D.length%4)%4,"="),U=JSON.parse(atob(I));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 wk(_,$){if(($==="v4"||!$)&&Bk.test(_))return!0;if(($==="v6"||!$)&&bk.test(_))return!0;return!1}class q$ extends __{_parse(_){if(this._def.coerce)_.data=String(_.data);if(this._getType(_)!==y.string){let U=this._getOrReturnCtx(_);return x(U,{code:C.invalid_type,expected:y.string,received:U.parsedType}),l}let D=new i_,I=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.lengthU.value)I=this._getOrReturnCtx(_,I),x(I,{code:C.too_big,maximum:U.value,type:"string",inclusive:!0,exact:!1,message:U.message}),D.dirty()}else if(U.kind==="length"){let E=_.data.length>U.value,j=_.data.length_.test(I),{validation:$,code:C.invalid_string,...d.errToObj(D)})}_addCheck(_){return new q$({...this._def,checks:[...this._def.checks,_]})}email(_){return this._addCheck({kind:"email",...d.errToObj(_)})}url(_){return this._addCheck({kind:"url",...d.errToObj(_)})}emoji(_){return this._addCheck({kind:"emoji",...d.errToObj(_)})}uuid(_){return this._addCheck({kind:"uuid",...d.errToObj(_)})}nanoid(_){return this._addCheck({kind:"nanoid",...d.errToObj(_)})}cuid(_){return this._addCheck({kind:"cuid",...d.errToObj(_)})}cuid2(_){return this._addCheck({kind:"cuid2",...d.errToObj(_)})}ulid(_){return this._addCheck({kind:"ulid",...d.errToObj(_)})}base64(_){return this._addCheck({kind:"base64",...d.errToObj(_)})}base64url(_){return this._addCheck({kind:"base64url",...d.errToObj(_)})}jwt(_){return this._addCheck({kind:"jwt",...d.errToObj(_)})}ip(_){return this._addCheck({kind:"ip",...d.errToObj(_)})}cidr(_){return this._addCheck({kind:"cidr",...d.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,...d.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,...d.errToObj(_?.message)})}duration(_){return this._addCheck({kind:"duration",...d.errToObj(_)})}regex(_,$){return this._addCheck({kind:"regex",regex:_,...d.errToObj($)})}includes(_,$){return this._addCheck({kind:"includes",value:_,position:$?.position,...d.errToObj($?.message)})}startsWith(_,$){return this._addCheck({kind:"startsWith",value:_,...d.errToObj($)})}endsWith(_,$){return this._addCheck({kind:"endsWith",value:_,...d.errToObj($)})}min(_,$){return this._addCheck({kind:"min",value:_,...d.errToObj($)})}max(_,$){return this._addCheck({kind:"max",value:_,...d.errToObj($)})}length(_,$){return this._addCheck({kind:"length",value:_,...d.errToObj($)})}nonempty(_){return this.min(1,d.errToObj(_))}trim(){return new q$({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new q$({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new q$({...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 _}}q$.create=(_)=>{return new q$({checks:[],typeName:i.ZodString,coerce:_?.coerce??!1,...a(_)})};function rk(_,$){let D=(_.toString().split(".")[1]||"").length,I=($.toString().split(".")[1]||"").length,U=D>I?D:I,E=Number.parseInt(_.toFixed(U).replace(".","")),j=Number.parseInt($.toFixed(U).replace(".",""));return E%j/10**U}class e6 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 x(U,{code:C.invalid_type,expected:y.number,received:U.parsedType}),l}let D=void 0,I=new i_;for(let U of this._def.checks)if(U.kind==="int"){if(!I_.isInteger(_.data))D=this._getOrReturnCtx(_,D),x(D,{code:C.invalid_type,expected:"integer",received:"float",message:U.message}),I.dirty()}else if(U.kind==="min"){if(U.inclusive?_.dataU.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),x(D,{code:C.too_big,maximum:U.value,type:"number",inclusive:U.inclusive,exact:!1,message:U.message}),I.dirty()}else if(U.kind==="multipleOf"){if(rk(_.data,U.value)!==0)D=this._getOrReturnCtx(_,D),x(D,{code:C.not_multiple_of,multipleOf:U.value,message:U.message}),I.dirty()}else if(U.kind==="finite"){if(!Number.isFinite(_.data))D=this._getOrReturnCtx(_,D),x(D,{code:C.not_finite,message:U.message}),I.dirty()}else I_.assertNever(U);return{status:I.value,value:_.data}}gte(_,$){return this.setLimit("min",_,!0,d.toString($))}gt(_,$){return this.setLimit("min",_,!1,d.toString($))}lte(_,$){return this.setLimit("max",_,!0,d.toString($))}lt(_,$){return this.setLimit("max",_,!1,d.toString($))}setLimit(_,$,D,I){return new e6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:d.toString(I)}]})}_addCheck(_){return new e6({...this._def,checks:[...this._def.checks,_]})}int(_){return this._addCheck({kind:"int",message:d.toString(_)})}positive(_){return this._addCheck({kind:"min",value:0,inclusive:!1,message:d.toString(_)})}negative(_){return this._addCheck({kind:"max",value:0,inclusive:!1,message:d.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:0,inclusive:!0,message:d.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:0,inclusive:!0,message:d.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:d.toString($)})}finite(_){return this._addCheck({kind:"finite",message:d.toString(_)})}safe(_){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:d.toString(_)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:d.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"&&I_.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(_)}}e6.create=(_)=>{return new e6({checks:[],typeName:i.ZodNumber,coerce:_?.coerce||!1,...a(_)})};class a6 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,I=new i_;for(let U of this._def.checks)if(U.kind==="min"){if(U.inclusive?_.dataU.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),x(D,{code:C.too_big,type:"bigint",maximum:U.value,inclusive:U.inclusive,message:U.message}),I.dirty()}else if(U.kind==="multipleOf"){if(_.data%U.value!==BigInt(0))D=this._getOrReturnCtx(_,D),x(D,{code:C.not_multiple_of,multipleOf:U.value,message:U.message}),I.dirty()}else I_.assertNever(U);return{status:I.value,value:_.data}}_getInvalidInput(_){let $=this._getOrReturnCtx(_);return x($,{code:C.invalid_type,expected:y.bigint,received:$.parsedType}),l}gte(_,$){return this.setLimit("min",_,!0,d.toString($))}gt(_,$){return this.setLimit("min",_,!1,d.toString($))}lte(_,$){return this.setLimit("max",_,!0,d.toString($))}lt(_,$){return this.setLimit("max",_,!1,d.toString($))}setLimit(_,$,D,I){return new a6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:d.toString(I)}]})}_addCheck(_){return new a6({...this._def,checks:[...this._def.checks,_]})}positive(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:d.toString(_)})}negative(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:d.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:d.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:d.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:d.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 _}}a6.create=(_)=>{return new a6({checks:[],typeName:i.ZodBigInt,coerce:_?.coerce??!1,...a(_)})};class zD extends __{_parse(_){if(this._def.coerce)_.data=Boolean(_.data);if(this._getType(_)!==y.boolean){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.boolean,received:D.parsedType}),l}return _$(_.data)}}zD.create=(_)=>{return new zD({typeName:i.ZodBoolean,coerce:_?.coerce||!1,...a(_)})};class o4 extends __{_parse(_){if(this._def.coerce)_.data=new Date(_.data);if(this._getType(_)!==y.date){let U=this._getOrReturnCtx(_);return x(U,{code:C.invalid_type,expected:y.date,received:U.parsedType}),l}if(Number.isNaN(_.data.getTime())){let U=this._getOrReturnCtx(_);return x(U,{code:C.invalid_date}),l}let D=new i_,I=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.getTime()U.value)I=this._getOrReturnCtx(_,I),x(I,{code:C.too_big,message:U.message,inclusive:!0,exact:!1,maximum:U.value,type:"date"}),D.dirty()}else I_.assertNever(U);return{status:D.value,value:new Date(_.data.getTime())}}_addCheck(_){return new o4({...this._def,checks:[...this._def.checks,_]})}min(_,$){return this._addCheck({kind:"min",value:_.getTime(),message:d.toString($)})}max(_,$){return this._addCheck({kind:"max",value:_.getTime(),message:d.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}}o4.create=(_)=>{return new o4({checks:[],coerce:_?.coerce||!1,typeName:i.ZodDate,...a(_)})};class K1 extends __{_parse(_){if(this._getType(_)!==y.symbol){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.symbol,received:D.parsedType}),l}return _$(_.data)}}K1.create=(_)=>{return new K1({typeName:i.ZodSymbol,...a(_)})};class XD extends __{_parse(_){if(this._getType(_)!==y.undefined){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.undefined,received:D.parsedType}),l}return _$(_.data)}}XD.create=(_)=>{return new XD({typeName:i.ZodUndefined,...a(_)})};class GD extends __{_parse(_){if(this._getType(_)!==y.null){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.null,received:D.parsedType}),l}return _$(_.data)}}GD.create=(_)=>{return new GD({typeName:i.ZodNull,...a(_)})};class p4 extends __{constructor(){super(...arguments);this._any=!0}_parse(_){return _$(_.data)}}p4.create=(_)=>{return new p4({typeName:i.ZodAny,...a(_)})};class p6 extends __{constructor(){super(...arguments);this._unknown=!0}_parse(_){return _$(_.data)}}p6.create=(_)=>{return new p6({typeName:i.ZodUnknown,...a(_)})};class o$ extends __{_parse(_){let $=this._getOrReturnCtx(_);return x($,{code:C.invalid_type,expected:y.never,received:$.parsedType}),l}}o$.create=(_)=>{return new o$({typeName:i.ZodNever,...a(_)})};class T1 extends __{_parse(_){if(this._getType(_)!==y.undefined){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.void,received:D.parsedType}),l}return _$(_.data)}}T1.create=(_)=>{return new T1({typeName:i.ZodVoid,...a(_)})};class C$ extends __{_parse(_){let{ctx:$,status:D}=this._processInputParams(_),I=this._def;if($.parsedType!==y.array)return x($,{code:C.invalid_type,expected:y.array,received:$.parsedType}),l;if(I.exactLength!==null){let E=$.data.length>I.exactLength.value,j=$.data.lengthI.maxLength.value)x($,{code:C.too_big,maximum:I.maxLength.value,type:"array",inclusive:!0,exact:!1,message:I.maxLength.message}),D.dirty()}if($.common.async)return Promise.all([...$.data].map((E,j)=>{return I.type._parseAsync(new w$($,E,$.path,j))})).then((E)=>{return i_.mergeArray(D,E)});let U=[...$.data].map((E,j)=>{return I.type._parseSync(new w$($,E,$.path,j))});return i_.mergeArray(D,U)}get element(){return this._def.type}min(_,$){return new C$({...this._def,minLength:{value:_,message:d.toString($)}})}max(_,$){return new C$({...this._def,maxLength:{value:_,message:d.toString($)}})}length(_,$){return new C$({...this._def,exactLength:{value:_,message:d.toString($)}})}nonempty(_){return this.min(1,_)}}C$.create=(_,$)=>{return new C$({type:_,minLength:null,maxLength:null,exactLength:null,typeName:i.ZodArray,...a($)})};function OD(_){if(_ instanceof H_){let $={};for(let D in _.shape){let I=_.shape[D];$[D]=v$.create(OD(I))}return new H_({..._._def,shape:()=>$})}else if(_ instanceof C$)return new C$({..._._def,type:OD(_.element)});else if(_ instanceof v$)return v$.create(OD(_.unwrap()));else if(_ instanceof K6)return K6.create(OD(_.unwrap()));else if(_ instanceof p$)return p$.create(_.items.map(($)=>OD($)));else return _}class H_ 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(),$=I_.objectKeys(_);return this._cached={shape:_,keys:$},this._cached}_parse(_){if(this._getType(_)!==y.object){let A=this._getOrReturnCtx(_);return x(A,{code:C.invalid_type,expected:y.object,received:A.parsedType}),l}let{status:D,ctx:I}=this._processInputParams(_),{shape:U,keys:E}=this._getCached(),j=[];if(!(this._def.catchall instanceof o$&&this._def.unknownKeys==="strip")){for(let A in I.data)if(!E.includes(A))j.push(A)}let N=[];for(let A of E){let O=U[A],L=I.data[A];N.push({key:{status:"valid",value:A},value:O._parse(new w$(I,L,I.path,A)),alwaysSet:A in I.data})}if(this._def.catchall instanceof o$){let A=this._def.unknownKeys;if(A==="passthrough")for(let O of j)N.push({key:{status:"valid",value:O},value:{status:"valid",value:I.data[O]}});else if(A==="strict"){if(j.length>0)x(I,{code:C.unrecognized_keys,keys:j}),D.dirty()}else if(A==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let A=this._def.catchall;for(let O of j){let L=I.data[O];N.push({key:{status:"valid",value:O},value:A._parse(new w$(I,L,I.path,O)),alwaysSet:O in I.data})}}if(I.common.async)return Promise.resolve().then(async()=>{let A=[];for(let O of N){let L=await O.key,J=await O.value;A.push({key:L,value:J,alwaysSet:O.alwaysSet})}return A}).then((A)=>{return i_.mergeObjectSync(D,A)});else return i_.mergeObjectSync(D,N)}get shape(){return this._def.shape()}strict(_){return d.errToObj,new H_({...this._def,unknownKeys:"strict",..._!==void 0?{errorMap:($,D)=>{let I=this._def.errorMap?.($,D).message??D.defaultError;if($.code==="unrecognized_keys")return{message:d.errToObj(_).message??I};return{message:I}}}:{}})}strip(){return new H_({...this._def,unknownKeys:"strip"})}passthrough(){return new H_({...this._def,unknownKeys:"passthrough"})}extend(_){return new H_({...this._def,shape:()=>({...this._def.shape(),..._})})}merge(_){return new H_({unknownKeys:_._def.unknownKeys,catchall:_._def.catchall,shape:()=>({...this._def.shape(),..._._def.shape()}),typeName:i.ZodObject})}setKey(_,$){return this.augment({[_]:$})}catchall(_){return new H_({...this._def,catchall:_})}pick(_){let $={};for(let D of I_.objectKeys(_))if(_[D]&&this.shape[D])$[D]=this.shape[D];return new H_({...this._def,shape:()=>$})}omit(_){let $={};for(let D of I_.objectKeys(this.shape))if(!_[D])$[D]=this.shape[D];return new H_({...this._def,shape:()=>$})}deepPartial(){return OD(this)}partial(_){let $={};for(let D of I_.objectKeys(this.shape)){let I=this.shape[D];if(_&&!_[D])$[D]=I;else $[D]=I.optional()}return new H_({...this._def,shape:()=>$})}required(_){let $={};for(let D of I_.objectKeys(this.shape))if(_&&!_[D])$[D]=this.shape[D];else{let U=this.shape[D];while(U instanceof v$)U=U._def.innerType;$[D]=U}return new H_({...this._def,shape:()=>$})}keyof(){return d9(I_.objectKeys(this.shape))}}H_.create=(_,$)=>{return new H_({shape:()=>_,unknownKeys:"strip",catchall:o$.create(),typeName:i.ZodObject,...a($)})};H_.strictCreate=(_,$)=>{return new H_({shape:()=>_,unknownKeys:"strict",catchall:o$.create(),typeName:i.ZodObject,...a($)})};H_.lazycreate=(_,$)=>{return new H_({shape:_,unknownKeys:"strip",catchall:o$.create(),typeName:i.ZodObject,...a($)})};class RD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=this._def.options;function I(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 E=U.map((j)=>new S$(j.ctx.common.issues));return x($,{code:C.invalid_union,unionErrors:E}),l}if($.common.async)return Promise.all(D.map(async(U)=>{let E={...$,common:{...$.common,issues:[]},parent:null};return{result:await U._parseAsync({data:$.data,path:$.path,parent:E}),ctx:E}})).then(I);else{let U=void 0,E=[];for(let N of D){let A={...$,common:{...$.common,issues:[]},parent:null},O=N._parseSync({data:$.data,path:$.path,parent:A});if(O.status==="valid")return O;else if(O.status==="dirty"&&!U)U={result:O,ctx:A};if(A.common.issues.length)E.push(A.common.issues)}if(U)return $.common.issues.push(...U.ctx.common.issues),U.result;let j=E.map((N)=>new S$(N));return x($,{code:C.invalid_union,unionErrors:j}),l}}get options(){return this._def.options}}RD.create=(_,$)=>{return new RD({options:_,typeName:i.ZodUnion,...a($)})};var Y6=(_)=>{if(_ instanceof QD)return Y6(_.schema);else if(_ instanceof Q$)return Y6(_.innerType());else if(_ instanceof KD)return[_.value];else if(_ instanceof s6)return _.options;else if(_ instanceof TD)return I_.objectValues(_.enum);else if(_ instanceof FD)return Y6(_._def.innerType);else if(_ instanceof XD)return[void 0];else if(_ instanceof GD)return[null];else if(_ instanceof v$)return[void 0,...Y6(_.unwrap())];else if(_ instanceof K6)return[null,...Y6(_.unwrap())];else if(_ instanceof TN)return Y6(_.unwrap());else if(_ instanceof BD)return Y6(_.unwrap());else if(_ instanceof VD)return Y6(_._def.innerType);else return[]};class KN extends __{_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.object)return x($,{code:C.invalid_type,expected:y.object,received:$.parsedType}),l;let D=this.discriminator,I=$.data[D],U=this.optionsMap.get(I);if(!U)return x($,{code:C.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[D]}),l;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 I=new Map;for(let U of $){let E=Y6(U.shape[_]);if(!E.length)throw Error(`A discriminator value for key \`${_}\` could not be extracted from all schema options`);for(let j of E){if(I.has(j))throw Error(`Discriminator property ${String(_)} has duplicate value ${String(j)}`);I.set(j,U)}}return new KN({typeName:i.ZodDiscriminatedUnion,discriminator:_,options:$,optionsMap:I,...a(D)})}}function _P(_,$){let D=Q6(_),I=Q6($);if(_===$)return{valid:!0,data:_};else if(D===y.object&&I===y.object){let U=I_.objectKeys($),E=I_.objectKeys(_).filter((N)=>U.indexOf(N)!==-1),j={..._,...$};for(let N of E){let A=_P(_[N],$[N]);if(!A.valid)return{valid:!1};j[N]=A.data}return{valid:!0,data:j}}else if(D===y.array&&I===y.array){if(_.length!==$.length)return{valid:!1};let U=[];for(let E=0;E<_.length;E++){let j=_[E],N=$[E],A=_P(j,N);if(!A.valid)return{valid:!1};U.push(A.data)}return{valid:!0,data:U}}else if(D===y.date&&I===y.date&&+_===+$)return{valid:!0,data:_};else return{valid:!1}}class YD extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_),I=(U,E)=>{if(aW(U)||aW(E))return l;let j=_P(U.value,E.value);if(!j.valid)return x(D,{code:C.invalid_intersection_types}),l;if(sW(U)||sW(E))$.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,E])=>I(U,E));else return I(this._def.left._parseSync({data:D.data,path:D.path,parent:D}),this._def.right._parseSync({data:D.data,path:D.path,parent:D}))}}YD.create=(_,$,D)=>{return new YD({left:_,right:$,typeName:i.ZodIntersection,...a(D)})};class p$ extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.array)return x(D,{code:C.invalid_type,expected:y.array,received:D.parsedType}),l;if(D.data.lengththis._def.items.length)x(D,{code:C.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let U=[...D.data].map((E,j)=>{let N=this._def.items[j]||this._def.rest;if(!N)return null;return N._parse(new w$(D,E,D.path,j))}).filter((E)=>!!E);if(D.common.async)return Promise.all(U).then((E)=>{return i_.mergeArray($,E)});else return i_.mergeArray($,U)}get items(){return this._def.items}rest(_){return new p$({...this._def,rest:_})}}p$.create=(_,$)=>{if(!Array.isArray(_))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new p$({items:_,typeName:i.ZodTuple,rest:null,...a($)})};class F1 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 x(D,{code:C.invalid_type,expected:y.object,received:D.parsedType}),l;let I=[],U=this._def.keyType,E=this._def.valueType;for(let j in D.data)I.push({key:U._parse(new w$(D,j,D.path,j)),value:E._parse(new w$(D,D.data[j],D.path,j)),alwaysSet:j in D.data});if(D.common.async)return i_.mergeObjectAsync($,I);else return i_.mergeObjectSync($,I)}get element(){return this._def.valueType}static create(_,$,D){if($ instanceof __)return new F1({keyType:_,valueType:$,typeName:i.ZodRecord,...a(D)});return new F1({keyType:q$.create(),valueType:_,typeName:i.ZodRecord,...a($)})}}class V1 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 x(D,{code:C.invalid_type,expected:y.map,received:D.parsedType}),l;let I=this._def.keyType,U=this._def.valueType,E=[...D.data.entries()].map(([j,N],A)=>{return{key:I._parse(new w$(D,j,D.path,[A,"key"])),value:U._parse(new w$(D,N,D.path,[A,"value"]))}});if(D.common.async){let j=new Map;return Promise.resolve().then(async()=>{for(let N of E){let A=await N.key,O=await N.value;if(A.status==="aborted"||O.status==="aborted")return l;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}})}else{let j=new Map;for(let N of E){let{key:A,value:O}=N;if(A.status==="aborted"||O.status==="aborted")return l;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}}}}V1.create=(_,$,D)=>{return new V1({valueType:$,keyType:_,typeName:i.ZodMap,...a(D)})};class e4 extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.set)return x(D,{code:C.invalid_type,expected:y.set,received:D.parsedType}),l;let I=this._def;if(I.minSize!==null){if(D.data.sizeI.maxSize.value)x(D,{code:C.too_big,maximum:I.maxSize.value,type:"set",inclusive:!0,exact:!1,message:I.maxSize.message}),$.dirty()}let U=this._def.valueType;function E(N){let A=new Set;for(let O of N){if(O.status==="aborted")return l;if(O.status==="dirty")$.dirty();A.add(O.value)}return{status:$.value,value:A}}let j=[...D.data.values()].map((N,A)=>U._parse(new w$(D,N,D.path,A)));if(D.common.async)return Promise.all(j).then((N)=>E(N));else return E(j)}min(_,$){return new e4({...this._def,minSize:{value:_,message:d.toString($)}})}max(_,$){return new e4({...this._def,maxSize:{value:_,message:d.toString($)}})}size(_,$){return this.min(_,$).max(_,$)}nonempty(_){return this.min(1,_)}}e4.create=(_,$)=>{return new e4({valueType:_,minSize:null,maxSize:null,typeName:i.ZodSet,...a($)})};class JD extends __{constructor(){super(...arguments);this.validate=this.implement}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.function)return x($,{code:C.invalid_type,expected:y.function,received:$.parsedType}),l;function D(j,N){return RN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,GN(),PD].filter((A)=>!!A),issueData:{code:C.invalid_arguments,argumentsError:N}})}function I(j,N){return RN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,GN(),PD].filter((A)=>!!A),issueData:{code:C.invalid_return_type,returnTypeError:N}})}let U={errorMap:$.common.contextualErrorMap},E=$.data;if(this._def.returns instanceof a4){let j=this;return _$(async function(...N){let A=new S$([]),O=await j._def.args.parseAsync(N,U).catch((P)=>{throw A.addIssue(D(N,P)),A}),L=await Reflect.apply(E,this,O);return await j._def.returns._def.type.parseAsync(L,U).catch((P)=>{throw A.addIssue(I(L,P)),A})})}else{let j=this;return _$(function(...N){let A=j._def.args.safeParse(N,U);if(!A.success)throw new S$([D(N,A.error)]);let O=Reflect.apply(E,this,A.data),L=j._def.returns.safeParse(O,U);if(!L.success)throw new S$([I(O,L.error)]);return L.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(..._){return new JD({...this._def,args:p$.create(_).rest(p6.create())})}returns(_){return new JD({...this._def,returns:_})}implement(_){return this.parse(_)}strictImplement(_){return this.parse(_)}static create(_,$,D){return new JD({args:_?_:p$.create([]).rest(p6.create()),returns:$||p6.create(),typeName:i.ZodFunction,...a(D)})}}class QD extends __{get schema(){return this._def.getter()}_parse(_){let{ctx:$}=this._processInputParams(_);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}}QD.create=(_,$)=>{return new QD({getter:_,typeName:i.ZodLazy,...a($)})};class KD extends __{_parse(_){if(_.data!==this._def.value){let $=this._getOrReturnCtx(_);return x($,{received:$.data,code:C.invalid_literal,expected:this._def.value}),l}return{status:"valid",value:_.data}}get value(){return this._def.value}}KD.create=(_,$)=>{return new KD({value:_,typeName:i.ZodLiteral,...a($)})};function d9(_,$){return new s6({values:_,typeName:i.ZodEnum,...a($)})}class s6 extends __{_parse(_){if(typeof _.data!=="string"){let $=this._getOrReturnCtx(_),D=this._def.values;return x($,{expected:I_.joinValues(D),received:$.parsedType,code:C.invalid_type}),l}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(_.data)){let $=this._getOrReturnCtx(_),D=this._def.values;return x($,{received:$.data,code:C.invalid_enum_value,options:D}),l}return _$(_.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 s6.create(_,{...this._def,...$})}exclude(_,$=this._def){return s6.create(this.options.filter((D)=>!_.includes(D)),{...this._def,...$})}}s6.create=d9;class TD extends __{_parse(_){let $=I_.getValidEnumValues(this._def.values),D=this._getOrReturnCtx(_);if(D.parsedType!==y.string&&D.parsedType!==y.number){let I=I_.objectValues($);return x(D,{expected:I_.joinValues(I),received:D.parsedType,code:C.invalid_type}),l}if(!this._cache)this._cache=new Set(I_.getValidEnumValues(this._def.values));if(!this._cache.has(_.data)){let I=I_.objectValues($);return x(D,{received:D.data,code:C.invalid_enum_value,options:I}),l}return _$(_.data)}get enum(){return this._def.values}}TD.create=(_,$)=>{return new TD({values:_,typeName:i.ZodNativeEnum,...a($)})};class a4 extends __{unwrap(){return this._def.type}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.promise&&$.common.async===!1)return x($,{code:C.invalid_type,expected:y.promise,received:$.parsedType}),l;let D=$.parsedType===y.promise?$.data:Promise.resolve($.data);return _$(D.then((I)=>{return this._def.type.parseAsync(I,{path:$.path,errorMap:$.common.contextualErrorMap})}))}}a4.create=(_,$)=>{return new a4({type:_,typeName:i.ZodPromise,...a($)})};class Q$ 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(_),I=this._def.effect||null,U={addIssue:(E)=>{if(x(D,E),E.fatal)$.abort();else $.dirty()},get path(){return D.path}};if(U.addIssue=U.addIssue.bind(U),I.type==="preprocess"){let E=I.transform(D.data,U);if(D.common.async)return Promise.resolve(E).then(async(j)=>{if($.value==="aborted")return l;let N=await this._def.schema._parseAsync({data:j,path:D.path,parent:D});if(N.status==="aborted")return l;if(N.status==="dirty")return SD(N.value);if($.value==="dirty")return SD(N.value);return N});else{if($.value==="aborted")return l;let j=this._def.schema._parseSync({data:E,path:D.path,parent:D});if(j.status==="aborted")return l;if(j.status==="dirty")return SD(j.value);if($.value==="dirty")return SD(j.value);return j}}if(I.type==="refinement"){let E=(j)=>{let N=I.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 l;if(j.status==="dirty")$.dirty();return E(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 l;if(j.status==="dirty")$.dirty();return E(j.value).then(()=>{return{status:$.value,value:j.value}})})}if(I.type==="transform")if(D.common.async===!1){let E=this._def.schema._parseSync({data:D.data,path:D.path,parent:D});if(!t4(E))return l;let j=I.transform(E.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((E)=>{if(!t4(E))return l;return Promise.resolve(I.transform(E.value,U)).then((j)=>({status:$.value,value:j}))});I_.assertNever(I)}}Q$.create=(_,$,D)=>{return new Q$({schema:_,typeName:i.ZodEffects,effect:$,...a(D)})};Q$.createWithPreprocess=(_,$,D)=>{return new Q$({schema:$,effect:{type:"preprocess",transform:_},typeName:i.ZodEffects,...a(D)})};class v$ extends __{_parse(_){if(this._getType(_)===y.undefined)return _$(void 0);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}v$.create=(_,$)=>{return new v$({innerType:_,typeName:i.ZodOptional,...a($)})};class K6 extends __{_parse(_){if(this._getType(_)===y.null)return _$(null);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}K6.create=(_,$)=>{return new K6({innerType:_,typeName:i.ZodNullable,...a($)})};class FD 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}}FD.create=(_,$)=>{return new FD({innerType:_,typeName:i.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...a($)})};class VD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D={...$,common:{...$.common,issues:[]}},I=this._def.innerType._parse({data:D.data,path:D.path,parent:{...D}});if(Q1(I))return I.then((U)=>{return{status:"valid",value:U.status==="valid"?U.value:this._def.catchValue({get error(){return new S$(D.common.issues)},input:D.data})}});else return{status:"valid",value:I.status==="valid"?I.value:this._def.catchValue({get error(){return new S$(D.common.issues)},input:D.data})}}removeCatch(){return this._def.innerType}}VD.create=(_,$)=>{return new VD({innerType:_,typeName:i.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...a($)})};class B1 extends __{_parse(_){if(this._getType(_)!==y.nan){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.nan,received:D.parsedType}),l}return{status:"valid",value:_.data}}}B1.create=(_)=>{return new B1({typeName:i.ZodNaN,...a(_)})};var fk=Symbol("zod_brand");class TN extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=$.data;return this._def.type._parse({data:D,path:$.path,parent:$})}unwrap(){return this._def.type}}class M1 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 l;if(U.status==="dirty")return $.dirty(),SD(U.value);else return this._def.out._parseAsync({data:U.value,path:D.path,parent:D})})();else{let I=this._def.in._parseSync({data:D.data,path:D.path,parent:D});if(I.status==="aborted")return l;if(I.status==="dirty")return $.dirty(),{status:"dirty",value:I.value};else return this._def.out._parseSync({data:I.value,path:D.path,parent:D})}}static create(_,$){return new M1({in:_,out:$,typeName:i.ZodPipeline})}}class BD extends __{_parse(_){let $=this._def.innerType._parse(_),D=(I)=>{if(t4(I))I.value=Object.freeze(I.value);return I};return Q1($)?$.then((I)=>D(I)):D($)}unwrap(){return this._def.innerType}}BD.create=(_,$)=>{return new BD({innerType:_,typeName:i.ZodReadonly,...a($)})};function k9(_,$){let D=typeof _==="function"?_($):typeof _==="string"?{message:_}:_;return typeof D==="string"?{message:D}:D}function m9(_,$={},D){if(_)return p4.create().superRefine((I,U)=>{let E=_(I);if(E instanceof Promise)return E.then((j)=>{if(!j){let N=k9($,I),A=N.fatal??D??!0;U.addIssue({code:"custom",...N,fatal:A})}});if(!E){let j=k9($,I),N=j.fatal??D??!0;U.addIssue({code:"custom",...j,fatal:N})}return});return p4.create()}var xk={object:H_.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 uk=(_,$={message:`Input not instance of ${_.name}`})=>m9((D)=>D instanceof _,$),l9=q$.create,i9=e6.create,yk=B1.create,hk=a6.create,t9=zD.create,ck=o4.create,nk=K1.create,dk=XD.create,mk=GD.create,lk=p4.create,ik=p6.create,tk=o$.create,ok=T1.create,pk=C$.create,ek=H_.create,ak=H_.strictCreate,sk=RD.create,_q=KN.create,$q=YD.create,Dq=p$.create,Uq=F1.create,Iq=V1.create,Eq=e4.create,jq=JD.create,Nq=QD.create,gq=KD.create,Aq=s6.create,Oq=TD.create,Lq=a4.create,q9=Q$.create,Sq=v$.create,Jq=K6.create,Wq=Q$.createWithPreprocess,Pq=M1.create,zq=()=>l9().optional(),Xq=()=>i9().optional(),Gq=()=>t9().optional(),Rq={string:(_)=>q$.create({..._,coerce:!0}),number:(_)=>e6.create({..._,coerce:!0}),boolean:(_)=>zD.create({..._,coerce:!0}),bigint:(_)=>a6.create({..._,coerce:!0}),date:(_)=>o4.create({..._,coerce:!0})},Yq=l;var u={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"},DP=g.string().regex(/^hasna\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*\.v[0-9]+$/),B_=g.string().datetime(),o=g.string().trim().min(1),r$=o.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://"),o9=g.string().regex(/^[a-fA-F0-9]{64}$/),p9=g.string().regex(/^(sha256:)?[a-fA-F0-9]{64}$/),_4=g.record(g.unknown()),ZD=g.array(g.string().min(1)).default([]),s4=B_.nullable().optional(),Qq=new Set(["succeeded","failed","cancelled","blocked","skipped"]),D0=g.enum(["pending","running","succeeded","failed","cancelled","blocked","skipped","unknown"]);function S_(_){return g.object({schema:g.literal(_),id:g.string().min(1),createdAt:B_,updatedAt:s4,metadata:_4.optional()}).strict()}var Lm=g.object({schema:DP,id:g.string().min(1),createdAt:B_,updatedAt:s4,metadata:_4.optional()}).strict(),e9=g.enum(["agent","human","service","model","workflow","system"]),Kq=S_(u.actorRef).extend({kind:e9,name:g.string().min(1).optional(),provider:g.string().min(1).optional(),accountId:g.string().min(1).optional(),machineId:g.string().min(1).optional(),capabilities:g.array(g.string().min(1)).default([])}).strict(),e$=g.object({kind:e9,id:g.string().min(1),name:g.string().min(1).optional(),provider:g.string().min(1).optional(),accountId:g.string().min(1).optional(),machineId:g.string().min(1).optional()}).strict(),a9=g.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"]),Tq=S_(u.resourceRef).extend({kind:a9,name:g.string().min(1).optional(),uri:r$.optional(),externalId:o.optional(),sourcePackage:o.optional(),tags:ZD}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.externalId&&_.sourcePackage))$.addIssue({code:g.ZodIssueCode.custom,message:"Resource refs require uri or both sourcePackage and externalId",path:["uri"]})}),s=g.object({kind:a9,id:g.string().min(1),name:g.string().min(1).optional(),uri:r$.optional(),externalId:o.optional(),sourcePackage:o.optional(),tags:ZD}).strict().superRefine((_,$)=>{if(!_.uri&&Boolean(_.externalId)!==Boolean(_.sourcePackage))$.addIssue({code:g.ZodIssueCode.custom,message:"Resource pointers with external package locators require both sourcePackage and externalId",path:_.externalId?["sourcePackage"]:["externalId"]})}),UP=g.enum(["file","command_output","screenshot","log","diff","report","artifact","url","video","har","test_result","metric","trace","other"]),Fq=g.enum(["none","partial","full","unknown"]),Vq=S_(u.evidenceRef).extend({kind:UP,uri:r$,sha256:o9.optional(),summary:g.string().min(1).optional(),contentType:g.string().min(1).optional(),sizeBytes:g.number().int().nonnegative().optional(),redaction:Fq.default("unknown"),producer:e$.optional(),resourceRefs:g.array(s).default([]),tags:ZD}).strict(),K_=g.object({id:g.string().min(1),kind:UP.optional(),uri:r$.optional(),sha256:o9.optional(),summary:g.string().min(1).optional()}).strict(),b1=S_(u.costEstimate).extend({currency:g.string().regex(/^[A-Z]{3}$/).default("USD"),amountMicros:g.number().int().nonnegative(),provider:g.string().min(1).optional(),model:g.string().min(1).optional(),accountId:g.string().min(1).optional(),promptTokens:g.number().int().nonnegative().optional(),completionTokens:g.number().int().nonnegative().optional(),totalTokens:g.number().int().nonnegative().optional(),basis:g.enum(["actual","estimated","budget","limit"]).default("estimated"),resourceRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(_.promptTokens!==void 0&&_.completionTokens!==void 0&&_.totalTokens!==void 0&&_.totalTokens!==_.promptTokens+_.completionTokens)$.addIssue({code:g.ZodIssueCode.custom,message:"totalTokens must equal promptTokens plus completionTokens when all are present",path:["totalTokens"]})}),Bq=g.enum(["allowed","denied","warned","approval_required","selected","skipped","unknown"]),s9=S_(u.decisionEnvelope).extend({decisionType:g.enum(["guardrail","model_route","tool_select","budget","secret_access","approval","policy","other"]),status:Bq,actor:e$.optional(),traceId:g.string().min(1).optional(),inputHash:p9.optional(),policyBundleId:g.string().min(1).optional(),selected:g.array(s).default([]),skipped:g.array(s).default([]),reason:g.string().min(1),obligations:g.array(g.string().min(1)).default([]),redactions:g.array(g.string().min(1)).default([]),costEstimate:b1.optional(),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.status==="selected"&&_.selected.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Selected decisions require at least one selected resource",path:["selected"]});if(_.status==="skipped"&&_.skipped.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Skipped decisions require at least one skipped resource",path:["skipped"]});if(_.status==="denied"){if(_.selected.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Denied decisions cannot include selected resources",path:["selected"]});if(!_.policyBundleId&&_.evidenceRefs.length===0&&_.obligations.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Denied decisions require policy, evidence, or obligations",path:["policyBundleId"]})}if(_.status==="approval_required"&&_.obligations.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Approval-required decisions require actionable obligations",path:["obligations"]})}),Mq=S_(u.capabilityCard).extend({kind:g.enum(["model","tool","machine","agent","lane","connector","service"]),name:g.string().min(1),version:g.string().min(1).optional(),status:g.enum(["available","unavailable","degraded","unknown"]).default("unknown"),capabilities:g.array(g.string().min(1)).default([]),limitations:g.array(g.string().min(1)).default([]),riskLevel:g.enum(["low","medium","high","critical","unknown"]).default("unknown"),costEstimate:b1.optional(),evidenceRefs:g.array(K_).default([])}).strict(),MD=g.enum(["mock","fixture","sandbox","read_only_live","live_mutating"]),bq=g.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"]),Zq=g.object({refName:o,requiredForModes:g.array(MD).min(1),allowedSecretInputs:g.array(g.enum(["credential_ref","lease_ref"])).min(1).default(["credential_ref"]),failClosedDiagnostic:o,revocationCheck:g.boolean().default(!0)}).strict(),Hq=g.object({operation:o,supportedModes:g.array(MD).min(1),sideEffectClass:bq,requiresApproval:g.boolean().default(!1),requiresIdempotencyKey:g.boolean().default(!1),requiresSandboxEvidence:g.boolean().default(!1),requiresRollbackOrRevocation:g.boolean().default(!1),rollbackOrRevocation:o.optional(),noSideEffectSmoke:o.optional(),reconciliation:o.optional()}).strict().superRefine((_,$)=>{if(_.supportedModes.includes("live_mutating")){if(_.sideEffectClass==="none"||_.sideEffectClass==="read_only")$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations must declare a side-effecting class",path:["sideEffectClass"]});if(!_.requiresApproval)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require approval",path:["requiresApproval"]});if(!_.requiresIdempotencyKey)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require idempotency keys",path:["requiresIdempotencyKey"]});if(!_.requiresSandboxEvidence)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require sandbox evidence before live proof",path:["requiresSandboxEvidence"]});if(!_.requiresRollbackOrRevocation||!_.rollbackOrRevocation)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require rollback or revocation instructions",path:["rollbackOrRevocation"]});if(!_.reconciliation)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require reconciliation behavior",path:["reconciliation"]})}}),kq=g.object({providerId:o,appId:o,adapterId:o,ownerPackage:o,modes:g.array(MD).min(1),defaultMode:MD,credentialRequirements:g.array(Zq).default([]),operations:g.array(Hq).min(1),rateLimitPosture:o,costPosture:o.optional(),auditEvents:g.array(o).default([]),redactionRules:g.array(o).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(!_.modes.includes(_.defaultMode))$.addIssue({code:g.ZodIssueCode.custom,message:"defaultMode must be one of modes",path:["defaultMode"]});let D=new Set(_.operations.flatMap((I)=>I.supportedModes));for(let I of D)if(!_.modes.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`operation mode ${I} is not declared in provider modes`,path:["operations"]});if(D.has("live_mutating")){if(!_.credentialRequirements.some((U)=>U.requiredForModes.includes("live_mutating")))$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating providers require at least one live credential reference requirement",path:["credentialRequirements"]});if(_.auditEvents.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating providers require audit events",path:["auditEvents"]})}}),qq=g.object({appId:o,repo:o,priority:g.enum(["p0","p1","p2"]).default("p1"),requiredEvidence:g.array(o).min(1),firstOperations:g.array(o).min(1),blockedUntil:g.array(o).default([])}).strict(),Cq=S_(u.providerLiveModeStandard).extend({name:o,version:o,modes:g.array(MD).refine((_)=>["mock","fixture","sandbox","read_only_live","live_mutating"].every(($)=>_.includes($)),"provider live-mode standard must include every canonical provider mode"),requiredCapabilityFields:g.array(o).min(1),liveMutationGate:g.object({requiredMode:g.literal("live_mutating"),requiredChecks:g.array(o).min(1),forbiddenBypassSignals:g.array(o).min(1),disabledLiveSmoke:o}).strict(),noSideEffectSmoke:g.object({requiredForModes:g.array(MD).min(1),commandEvidence:g.array(o).min(1),secretOutputScan:g.boolean().default(!0)}).strict(),credentialPolicy:g.object({acceptedInputs:g.array(g.enum(["credential_ref","lease_ref"])).min(1),rawSecretInputsAllowed:g.literal(!1),missingCredentialBehavior:g.literal("fail_closed"),revocationCheckRequired:g.boolean().default(!0)}).strict(),operationCards:g.array(kq).min(1),firstAdoptionTargets:g.array(qq).min(1),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=new Set(_.firstAdoptionTargets.map((U)=>U.appId)),I=new Set(_.operationCards.map((U)=>U.appId));for(let U of D)if(!I.has(U))$.addIssue({code:g.ZodIssueCode.custom,message:`first adoption target ${U} requires a provider capability card`,path:["firstAdoptionTargets"]})}),vq=g.object({id:g.string().min(1),title:g.string().min(1).optional(),summary:g.string().min(1),text:g.string().optional(),tokens:g.number().int().nonnegative().optional(),source:K_,resourceRefs:g.array(s).default([])}).strict(),_8=S_(u.contextPack).extend({objective:g.string().min(1),budget:g.object({maxTokens:g.number().int().positive().optional(),maxBytes:g.number().int().positive().optional()}).strict().optional(),items:g.array(vq).default([]),citations:g.array(K_).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),permissions:g.array(g.string().min(1)).default([]),redactions:g.array(g.string().min(1)).default([]),conflicts:g.array(g.string().min(1)).default([]),uncertainty:g.string().min(1).optional()}).strict(),R$=o.refine((_)=>!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."),"Project paths must be relative and cannot contain parent-directory segments"),_0=g.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Project slugs must be lowercase dashed identifiers"),wq=g.enum(["public","internal","private","sensitive"]),rq=g.enum(["draft","active","paused","archived"]),IP=g.enum(["todos","files","mailery","conversations","knowledge","mementos","reports","actions","render","contracts","custom"]),$8=S_(u.integrationRef).extend({kind:IP,name:g.string().min(1),projectId:_0.optional(),sourcePackage:o.optional(),externalId:o.optional(),uri:r$.optional(),enabled:g.boolean().default(!0),readOnly:g.boolean().default(!0),capabilities:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),resourceRef:s.optional(),evidenceRefs:g.array(K_).default([]),config:_4.optional()}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.sourcePackage&&_.externalId)&&!_.resourceRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Integration refs require uri, resourceRef, or both sourcePackage and externalId",path:["uri"]})}),fq=g.object({schemaRoot:R$.default(".hasna/project"),dashboardManifest:R$.default(".hasna/project/dashboard.render.json"),snapshotsDir:R$.default(".hasna/project/snapshots"),documentsDir:R$.default("documents"),reportsDir:R$.default("reports"),evidenceDir:R$.default(".hasna/project/evidence"),privateDir:R$.default(".hasna/project/private")}).strict(),xq=S_(u.projectManifest).extend({projectId:_0,slug:_0,name:g.string().min(1),summary:g.string().min(1).optional(),status:rq.default("active"),classification:wq.default("private"),owner:e$.optional(),layout:fq.default({}),integrations:g.array($8).default([]),renderManifests:g.array(s).default([]),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),tags:ZD}).strict().superRefine((_,$)=>{let D=new Set,I=new Set;if(_.projectId!==_.slug)$.addIssue({code:g.ZodIssueCode.custom,message:"projectId and slug must match for canonical project manifests",path:["slug"]});for(let[U,E]of _.integrations.entries()){if(D.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project manifest integration ids must be unique",path:["integrations",U,"id"]});if(D.add(E.id),E.projectId&&E.projectId!==_.projectId)$.addIssue({code:g.ZodIssueCode.custom,message:"Integration projectId must match the manifest projectId",path:["integrations",U,"projectId"]})}for(let[U,E]of _.renderManifests.entries()){if(E.kind!=="render")$.addIssue({code:g.ZodIssueCode.custom,message:"Project renderManifests must use resource kind render",path:["renderManifests",U,"kind"]});if(I.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project renderManifest refs must be unique",path:["renderManifests",U,"id"]});I.add(E.id)}}),uq=g.enum(["local","package","provider","url"]),EP=g.object({id:g.string().min(1),kind:uq,specifier:g.string().min(1),path:R$.optional(),packageName:g.string().min(1).optional(),uri:r$.optional(),provider:IP.optional(),schemaId:DP.optional(),integrity:p9.optional(),resourceRef:s.optional(),optional:g.boolean().default(!1)}).strict().superRefine((_,$)=>{if(_.kind==="local"&&!_.path)$.addIssue({code:g.ZodIssueCode.custom,message:"Local render imports require path",path:["path"]});if(_.kind==="package"&&!_.packageName)$.addIssue({code:g.ZodIssueCode.custom,message:"Package render imports require packageName",path:["packageName"]});if(_.kind==="provider"&&!_.provider)$.addIssue({code:g.ZodIssueCode.custom,message:"Provider render imports require provider",path:["provider"]});if(_.kind==="url"&&!_.uri)$.addIssue({code:g.ZodIssueCode.custom,message:"URL render imports require uri",path:["uri"]})}),yq=g.enum(["dashboard","canvas","panel","report","document","custom"]),hq=g.object({id:g.string().min(1),title:g.string().min(1),kind:yq,default:g.boolean().default(!1),entry:R$.optional(),imports:g.array(EP).default([]),panelRefs:g.array(s).default([]),dataRefs:g.array(s).default([]),layout:_4.optional()}).strict(),cq=S_(u.renderManifest).extend({projectId:_0,name:g.string().min(1),version:g.string().min(1),manifestPath:R$.default(".hasna/project/dashboard.render.json"),renderer:g.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),views:g.array(hq).min(1),imports:g.array(EP).default([]),theme:_4.optional(),compatibility:g.object({minProjectsVersion:g.string().min(1).optional(),minContractsVersion:g.string().min(1).optional()}).strict().optional(),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=_.views.filter((E)=>E.default),I=new Set,U=new Set;if(D.length>1)$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifests can have at most one default view",path:["views"]});for(let[E,j]of _.imports.entries()){if(U.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifest import ids must be unique",path:["imports",E,"id"]});U.add(j.id)}for(let[E,j]of _.views.entries()){if(I.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifest view ids must be unique",path:["views",E,"id"]});I.add(j.id);let N=new Set;for(let[A,O]of j.imports.entries()){if(N.has(O.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render view import ids must be unique",path:["views",E,"imports",A,"id"]});N.add(O.id)}for(let[A,O]of j.panelRefs.entries())if(O.kind!=="panel")$.addIssue({code:g.ZodIssueCode.custom,message:"Render view panelRefs must use resource kind panel",path:["views",E,"panelRefs",A,"kind"]})}}),nq=g.enum(["ready","empty","loading","error","auth_required","unavailable","stale"]),dq=g.enum(["overview","tasks","files","mailery","conversations","knowledge","mementos","reports","actions","timeline","risks","documents","custom"]),mq=g.object({id:g.string().min(1),label:g.string().min(1),value:g.union([g.string(),g.number(),g.boolean()]),unit:g.string().min(1).optional(),status:g.enum(["good","warning","critical","unknown"]).default("unknown"),resourceRefs:g.array(s).default([])}).strict(),lq=g.object({id:g.string().min(1),title:g.string().min(1),summary:g.string().min(1).optional(),status:g.string().min(1).optional(),priority:g.enum(["low","medium","high","critical","unknown"]).default("unknown"),timestamp:B_.optional(),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),metadata:_4.optional()}).strict(),iq=g.object({renderer:g.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),title:g.string().min(1).optional(),entry:R$.optional(),imports:g.array(EP).default([]),spec:_4.default({})}).strict(),D8=S_(u.projectPanel).extend({projectId:_0,provider:g.object({kind:IP,id:g.string().min(1),name:g.string().min(1).optional(),sourcePackage:o.optional(),externalId:o.optional()}).strict(),kind:dq,title:g.string().min(1),summary:g.string().min(1).optional(),state:nq.default("ready"),stateReason:g.string().min(1).optional(),generatedAt:B_,freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),metrics:g.array(mq).default([]),items:g.array(lq).default([]),actions:g.array(s).default([]),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),renderFragment:iq.optional(),warnings:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set(["error","auth_required","unavailable","stale"]),I=new Set,U=new Set;if(D.has(_.state)&&!_.stateReason)$.addIssue({code:g.ZodIssueCode.custom,message:"Non-ready provider states require stateReason",path:["stateReason"]});if(_.state==="ready"&&_.metrics.length===0&&_.items.length===0&&!_.renderFragment)$.addIssue({code:g.ZodIssueCode.custom,message:"Ready panels require metrics, items, or a renderFragment; use state=empty for empty panels",path:["state"]});for(let[E,j]of _.metrics.entries()){if(I.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel metric ids must be unique",path:["metrics",E,"id"]});I.add(j.id)}for(let[E,j]of _.items.entries()){if(U.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel item ids must be unique",path:["items",E,"id"]});U.add(j.id)}for(let[E,j]of _.actions.entries())if(j.kind!=="action")$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel actions must use resource kind action",path:["actions",E,"kind"]})}),tq=S_(u.projectSnapshot).extend({projectId:_0,generatedAt:B_,status:D0.default("unknown"),manifestRef:s,renderManifestRef:s.optional(),panels:g.array(D8).default([]),contextPacks:g.array(_8).default([]),proofBundleRefs:g.array(s).default([]),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),warnings:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{let D=new Set,I=new Set;if(_.manifestRef.kind!=="project")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot manifestRef must use resource kind project",path:["manifestRef","kind"]});if(_.renderManifestRef&&_.renderManifestRef.kind!=="render")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot renderManifestRef must use resource kind render",path:["renderManifestRef","kind"]});for(let[U,E]of _.proofBundleRefs.entries())if(E.kind!=="proof_bundle")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot proofBundleRefs must use resource kind proof_bundle",path:["proofBundleRefs",U,"kind"]});for(let[U,E]of _.panels.entries()){if(E.projectId!==_.projectId)$.addIssue({code:g.ZodIssueCode.custom,message:"Panel projectId must match snapshot projectId",path:["panels",U,"projectId"]});if(D.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot panel ids must be unique",path:["panels",U,"id"]});D.add(E.id)}for(let[U,E]of _.contextPacks.entries()){if(I.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot context pack ids must be unique",path:["contextPacks",U,"id"]});I.add(E.id)}}),U8=g.object({id:g.string().min(1),kind:g.enum(["command","test","typecheck","lint","eval","security","review","deploy","smoke","manual","other"]),required:g.boolean().default(!0),command:g.string().min(1).optional(),expected:g.string().min(1).optional(),timeoutMs:g.number().int().positive().optional(),resourceRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(new Set(["command","test","typecheck","lint","smoke","eval"]).has(_.kind)&&!_.command&&!_.expected)$.addIssue({code:g.ZodIssueCode.custom,message:"Actionable validation checks require command or expected",path:["command"]})}),oq=S_(u.validationPlan).extend({objective:g.string().min(1),subject:s.optional(),checks:g.array(U8).min(1),verifier:e$.optional(),requiredEvidenceKinds:g.array(UP).default([])}).strict(),pq=g.enum(["open_source","internal_app","platform","app","agent","content","overlay","other"]),eq=g.enum(["draft","active","deprecated","archived"]),aq=g.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"]),sq=g.object({key:g.string().regex(/^[A-Z][A-Z0-9_]*$/),description:g.string().min(1),required:g.boolean().default(!1),["secret"]:g.boolean().default(!1),group:g.string().min(1).optional(),default:g.string().optional()}).strict().superRefine((_,$)=>{if(_.secret&&_.default!==void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"Secret scaffold env vars cannot include defaults",path:["default"]})}),_C=g.object({name:g.string().min(1),command:g.string().min(1),description:g.string().min(1).optional(),required:g.boolean().default(!1)}).strict(),$C=g.object({packageManager:g.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),languages:g.array(g.string().min(1)).default([]),requiredFiles:g.array(g.string().min(1)).default([]),requiredDirectories:g.array(g.string().min(1)).default([]),optionalDirectories:g.array(g.string().min(1)).default([])}).strict(),DC=S_(u.scaffoldManifest).extend({name:g.string().min(1),version:g.string().min(1),summary:g.string().min(1),type:pq,status:eq.default("draft"),capabilities:g.array(aq).default([]),techStack:g.array(g.string().min(1)).default([]),tags:ZD,source:s.optional(),output:$C,env:g.array(sq).default([]),scripts:g.array(_C).default([]),validationChecks:g.array(U8).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.source?.uri?.startsWith("file://"))$.addIssue({code:g.ZodIssueCode.custom,message:"Public scaffold manifest source refs cannot use local file:// URIs",path:["source","uri"]});if(_.status==="active"&&_.validationChecks.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Active scaffold manifests require validation checks",path:["validationChecks"]});if(_.status==="active"&&_.output.requiredFiles.length===0&&_.output.requiredDirectories.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Active scaffold manifests require at least one required file or directory",path:["output"]})}),UC=g.enum(["installed","failed","cancelled","partial","unknown"]),IC=S_(u.scaffoldInstallRecord).extend({scaffoldId:g.string().min(1),scaffoldVersion:g.string().min(1).optional(),manifestRef:s.optional(),target:s,status:UC,installedAt:B_.optional(),installer:e$.optional(),packageManager:g.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),options:_4.optional(),generatedFiles:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),proofBundleRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(_.status==="installed"&&!_.installedAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Installed scaffold records require installedAt",path:["installedAt"]});if(_.status==="installed"&&_.generatedFiles.length===0&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed or partial scaffold records require evidence or proof bundle refs",path:["evidenceRefs"]})}),bD=g.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"App ids must be lowercase dashed identifiers"),jP=g.string().regex(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,"Must be a valid npm package name"),I8=g.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"),EC=g.string().regex(/^[0-9a-f]{7,40}$/,"Must be a lowercase git sha (7-40 hex chars)"),jC=o.refine((_)=>_.startsWith("https://github.com/")||_.startsWith("git+https://github.com/"),"GitHub URLs must start with https://github.com/ or git+https://github.com/"),NC=g.enum(["active","stub","deprecated","archived"]),gC=g.enum(["stable","beta","canary","internal"]),AC=g.object({transport:g.enum(["http","stdio"]).default("http"),bin:g.string().min(1).optional(),url:r$.optional()}).strict(),OC=g.object({healthPath:g.string().min(1).default("/health"),port:g.number().int().positive().optional(),baseUrl:r$.optional()}).strict(),LC=g.object({bins:g.array(g.string().min(1)).default([]),mcp:AC.optional(),http:OC.optional()}).strict(),SC=S_(u.app).extend({appId:bD,npmName:jP,repoFolder:bD,githubUrl:jC,projectSlug:_0,surfaces:LC.default({}),lifecycle:NC,releaseChannel:gC.default("stable"),summary:g.string().min(1).optional(),tags:ZD}).strict().superRefine((_,$)=>{let D=new Set;for(let[I,U]of _.surfaces.bins.entries()){if(D.has(U))$.addIssue({code:g.ZodIssueCode.custom,message:"App surface bins must be unique",path:["surfaces","bins",I]});D.add(U)}}),JC=g.enum(["skill","ci","backfilled"]),WC=S_(u.release).extend({appId:bD,package:jP,version:I8,gitSha:EC,publishedAt:B_,publishPath:JC,changelogRef:s.optional(),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.publishPath!=="backfilled"&&_.evidenceRefs.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"skill and ci releases require publish evidence; only backfilled releases may omit it",path:["evidenceRefs"]})}),PC=g.enum(["install","update","rollback","freeze-blocked"]),zC=g.object({cliVersion:g.string().min(1).optional(),mcpHealth:g.enum(["ok","degraded","unavailable","not_checked"]).optional()}).strict().superRefine((_,$)=>{if(!_.cliVersion&&_.mcpHealth===void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"Rollout verification requires at least one concrete verifier field"})}),XC=S_(u.rolloutRecord).extend({appId:bD,package:jP,version:I8,machine:o,action:PC,result:D0,verifiedBy:zC.optional(),at:B_,evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.action==="freeze-blocked"&&_.result!=="blocked"&&_.result!=="skipped")$.addIssue({code:g.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",I=_.verifiedBy?Object.keys(_.verifiedBy).length>0:!1;if((_.action==="install"||_.action==="update")&&_.result==="succeeded"&&(!_.verifiedBy||I&&!D))$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded install/update rollout records require concrete verification",path:["verifiedBy"]})}),GC=g.enum(["email","telegram","slack","discord","x","blog","rss","webhook","github","other"]),RC=g.enum(["pending","queued","sent","failed","skipped","suppressed"]),YC=g.object({channel:GC,status:RC,deliveredAt:B_.optional(),detail:g.string().min(1).optional()}).strict().superRefine((_,$)=>{if(_.status==="sent"&&!_.deliveredAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Sent announcement channels require deliveredAt",path:["deliveredAt"]});if(_.status==="failed"&&!_.detail)$.addIssue({code:g.ZodIssueCode.custom,message:"Failed announcement channels require detail",path:["detail"]})}),QC=S_(u.announcement).extend({campaignId:o,appId:bD.optional(),releaseRef:s.optional(),channels:g.array(YC).min(1),audienceRef:s,sentAt:B_}).strict().superRefine((_,$)=>{if(_.releaseRef&&_.releaseRef.kind!=="release")$.addIssue({code:g.ZodIssueCode.custom,message:"Announcement releaseRef must use resource kind release",path:["releaseRef","kind"]});if(_.audienceRef.kind!=="audience")$.addIssue({code:g.ZodIssueCode.custom,message:"Announcement audienceRef must use resource kind audience",path:["audienceRef","kind"]})}),KC=g.enum(["tag","attribute","group"]),TC=g.enum(["eq","neq","in","not_in","exists","not_exists"]),C9=g.union([g.string(),g.number(),g.boolean()]),FC=g.object({kind:KC,key:g.string().min(1).optional(),op:TC.default("eq"),value:C9.optional(),values:g.array(C9).default([])}).strict().superRefine((_,$)=>{if(_.kind==="attribute"&&!_.key)$.addIssue({code:g.ZodIssueCode.custom,message:"Attribute predicates require key",path:["key"]});if((_.op==="eq"||_.op==="neq")&&_.value===void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"eq/neq predicates require value",path:["value"]});if((_.op==="in"||_.op==="not_in")&&_.values.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"in/not_in predicates require values",path:["values"]})}),VC=g.object({match:g.enum(["all","any"]).default("all"),predicates:g.array(FC).min(1)}).strict(),BC=g.enum(["opt_in","opt_out","transactional","none"]),MC=S_(u.audience).extend({audienceId:bD,name:o,definition:VC,consentPolicy:BC,suppressionSyncedAt:s4}).strict(),XN=["@hasna/cloud","open-cloud"],bC=g.enum(["aws","gcp","azure","cloudflare","vercel","neon","supabase","postgres","s3","rds","other"]),ZC=g.object({id:g.string().min(1),provider:bC,kind:g.enum(["database","bucket","queue","secret","function","worker","cache","topic","scheduler","object_store","other"]),ownerPackage:g.string().min(1),region:g.string().min(1).optional(),accountId:g.string().min(1).optional(),uri:r$.optional(),machineScoped:g.boolean().default(!1)}).strict(),E8=S_(u.appCloudManifest).extend({packageName:g.string().min(1),packageVersion:g.string().min(1).optional(),appId:g.string().min(1),repository:s.optional(),storageMode:g.enum(["local_only","app_owned_cloud","hybrid_local_cache","external_service"]),cloudBoundary:g.enum(["none","app_owned","external_service","local_cache"]),cloudResources:g.array(ZC).default([]),localCache:g.object({path:g.string().min(1).optional(),pullMode:g.enum(["manual","daemon","ci","none"]).default("manual"),conflictPolicy:g.enum(["cloud_wins","local_wins","merge","manual_review"]).default("manual_review")}).strict().optional(),forbiddenSharedRuntimes:g.array(g.string().min(1)).default([...XN]),dependencies:g.array(g.string().min(1)).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=new Set([...XN,..._.forbiddenSharedRuntimes]);if(D.has(_.packageName))$.addIssue({code:g.ZodIssueCode.custom,message:"App-owned cloud manifests cannot be for a forbidden runtime",path:["packageName"]});for(let I of XN)if(!_.forbiddenSharedRuntimes.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`forbiddenSharedRuntimes must include ${I}`,path:["forbiddenSharedRuntimes"]});for(let I of D)if(_.dependencies.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`App-owned cloud manifests cannot depend on ${I}`,path:["dependencies"]});if(_.storageMode==="local_only"&&_.cloudBoundary!=="none")$.addIssue({code:g.ZodIssueCode.custom,message:"local_only storage requires cloudBoundary none",path:["cloudBoundary"]});if(_.storageMode==="app_owned_cloud"&&_.cloudBoundary!=="app_owned")$.addIssue({code:g.ZodIssueCode.custom,message:"app_owned_cloud storage requires cloudBoundary app_owned",path:["cloudBoundary"]});if(_.storageMode==="hybrid_local_cache"){if(_.cloudBoundary!=="local_cache")$.addIssue({code:g.ZodIssueCode.custom,message:"hybrid_local_cache storage requires cloudBoundary local_cache",path:["cloudBoundary"]});if(!_.localCache)$.addIssue({code:g.ZodIssueCode.custom,message:"hybrid_local_cache storage requires localCache settings",path:["localCache"]})}if(_.storageMode==="external_service"){if(_.cloudBoundary!=="external_service")$.addIssue({code:g.ZodIssueCode.custom,message:"external_service storage requires cloudBoundary external_service",path:["cloudBoundary"]});if(_.cloudResources.length>0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Cloud-backed storage modes require explicit app-owned cloudResources",path:["cloudResources"]});if(_.cloudBoundary==="none"&&_.cloudResources.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"cloudBoundary none cannot declare cloudResources",path:["cloudResources"]});_.cloudResources.forEach((I,U)=>{if(I.ownerPackage!==_.packageName)$.addIssue({code:g.ZodIssueCode.custom,message:"Cloud resources must be owned by the app package that declares the manifest",path:["cloudResources",U,"ownerPackage"]})})}),j8=g.enum(["package_manifest","lockfile","source_import","runtime_config","packed_artifact","published_metadata","app_cloud_manifest","remote_config","boundary_doc","other"]),HC=g.enum(["low","medium","high","critical"]),N8=g.object({id:g.string().min(1),kind:j8,severity:HC,path:g.string().min(1).optional(),packageName:g.string().min(1).optional(),pattern:g.string().min(1),message:g.string().min(1),evidenceRefs:g.array(K_).default([])}).strict(),kC=g.object({id:g.string().min(1),kind:j8,status:D0,target:g.string().min(1),command:g.string().min(1).optional(),evidenceRefs:g.array(K_).default([]),findings:g.array(N8).default([])}).strict(),qC=S_(u.noCloudEvidencePack).extend({subject:s,packageName:g.string().min(1).optional(),packageVersion:g.string().min(1).optional(),generatedBy:e$.optional(),scanMode:g.enum(["source_tree","packed_artifact","published_metadata","runtime_config","workspace","ci"]),status:D0,verdict:g.enum(["passed","failed","warning","not_run"]),appCloudManifest:E8.optional(),checks:g.array(kC).min(1),findings:g.array(N8).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=[..._.findings,..._.checks.flatMap((U)=>U.findings)],I=D.filter((U)=>U.severity==="high"||U.severity==="critical");if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence requires succeeded status",path:["status"]});if(I.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence cannot include high or critical findings",path:["findings"]});if(_.checks.some((U)=>U.status!=="succeeded"))$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence requires every check to be succeeded",path:["checks"]})}if(_.verdict==="failed"&&D.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Failed no-cloud evidence requires findings",path:["findings"]});if(_.status==="succeeded"&&_.checks.some((U)=>U.status==="failed"))$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded no-cloud evidence cannot contain failed checks",path:["checks"]});_.checks.forEach((U,E)=>{let j=U.findings.filter((N)=>N.severity==="high"||N.severity==="critical");if(U.status==="succeeded"&&j.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded no-cloud checks cannot contain high or critical findings",path:["checks",E,"findings"]})})}),CC=g.object({checkId:g.string().min(1),status:D0,summary:g.string().min(1).optional(),startedAt:s4,finishedAt:s4,evidenceRefs:g.array(K_).default([])}).strict(),vC=S_(u.proofBundle).extend({subject:s,validationPlanRef:s.optional(),status:D0,verdict:g.enum(["passed","failed","inconclusive","not_run"]).default("inconclusive"),checks:g.array(CC).default([]),verifier:e$.optional(),evidenceRefs:g.array(K_).default([]),residualRisks:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles must have status succeeded",path:["status"]});if(_.checks.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require at least one check result",path:["checks"]});if(_.checks.forEach((I,U)=>{if(I.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require all checks to have status succeeded",path:["checks",U,"status"]})}),!(_.evidenceRefs.length>0||_.checks.some((I)=>I.evidenceRefs.length>0)))$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require evidence",path:["evidenceRefs"]});if(!_.verifier)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require a verifier",path:["verifier"]})}if(_.verdict==="not_run"&&_.checks.length>0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed proof bundles require a failed check or evidence",path:["checks"]})}),wC=S_(u.workRun).extend({objective:g.string().min(1),status:D0,actor:e$,traceId:g.string().min(1).optional(),startedAt:s4,finishedAt:s4,constraints:g.array(g.string().min(1)).default([]),resourceRefs:g.array(s).default([]),decisions:g.array(s9).default([]),costEstimates:g.array(b1).default([]),evidenceRefs:g.array(K_).default([]),validationPlanRefs:g.array(s).default([]),proofBundleRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(_.startedAt&&_.finishedAt&&Date.parse(_.finishedAt)0||_.proofBundleRefs.length>0;if(_.status==="succeeded"&&!D)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed or blocked work runs require evidence, a proof bundle, or a decision record",path:["evidenceRefs"]})}),rC=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"])}),fC=g.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"]),xC=g.enum(["todos","codewith","repos","review","merge_provider","openloops","adapter"]),$0=g.string().regex(/^[a-f0-9]{64}$/),FN=g.string().trim().min(3).max(256),g8=/^[a-f0-9]{32}$/;function uC(_,$,D){return`${_}:${$}:opaque-${D.slice(0,32)}`}function yC(_){return`evidence:opaque-${_.slice(0,32)}`}var A8=FN.refine((_)=>{let D=_.startsWith("task_to_pr_projection:opaque-")?_.slice(29):"";return g8.test(D)},"Projection ids must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),NP=FN.refine((_)=>{let D=_.startsWith("attempt_nonce:opaque-")?_.slice(21):"";return g8.test(D)},"Attempt nonces must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),hC=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"]),gP=g.object({role:fC,authority:xC,id:FN,digest:$0,redaction:g.enum(["none","partial","full"])}).strict().superRefine((_,$)=>{let D=rC[_.role];if(!D.includes(_.authority))$.addIssue({code:g.ZodIssueCode.custom,message:`${_.role} refs must be owned by ${D.join(" or ")}`,path:["authority"]});if(hC.has(_.role)&&_.redaction==="none")$.addIssue({code:g.ZodIssueCode.custom,message:`${_.role} refs must be redacted and cannot carry a raw locator or credential`,path:["redaction"]});let I=uC(_.role,_.authority,_.digest);if(_.id!==I)$.addIssue({code:g.ZodIssueCode.custom,message:"Reference ids must be nonsemantic authority-bound surrogates derived from the canonical role, authority, and owner-record digest",path:["id"]})}),Y$=g.object({id:FN,digest:$0,redaction:g.enum(["partial","full"])}).strict().superRefine((_,$)=>{if(_.id!==yC(_.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Evidence ids must be nonsemantic owner-resolvable surrogates derived from their canonical digest",path:["id"]})});function O8(_,$,D,I){if(_.id===$.id||_.digest===$.digest)D.addIssue({code:g.ZodIssueCode.custom,message:"Stop and lease-revocation facts require distinct evidence identities and digests",path:I})}function Z(_){return gP.refine(($)=>$.role===_,{message:`Reference must use role ${_}`,path:["role"]})}function V_(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id&&_.digest===$.digest&&_.redaction===$.redaction}function AP(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id}function WD(_,$,D,I,U){if(AP(_,$))D.addIssue({code:g.ZodIssueCode.custom,message:`${U} requires a fresh canonical role/authority/id`,path:I});if(_.digest===$.digest)D.addIssue({code:g.ZodIssueCode.custom,message:`${U} requires a fresh canonical digest`,path:I})}function YN(_){return`${_.role}\x00${_.authority}\x00${_.id}`}function s_(_,$){return _.algorithm===$.algorithm&&_.value===$.value}var Q_=g.object({algorithm:g.enum(["sha1","sha256"]),value:g.string().regex(/^[a-f0-9]+$/)}).strict().superRefine((_,$)=>{let D=_.algorithm==="sha1"?40:64;if(_.value.length!==D)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.algorithm} object ids must contain exactly ${D} lowercase hex characters`,path:["value"]})});function v9(_){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 Z9("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 Z9("sha256").update($,"utf8").digest("hex")}var cC=g.object({ref:Z("attempt"),nonce:NP,admissionRef:Z("admission"),admissionWriterGenerationRef:Z("writer_generation"),workerActorRef:Z("worker_actor"),workerRef:Z("worker"),runtimeRef:Z("runtime"),writerGenerationRef:Z("writer_generation"),writerLeaseRef:Z("writer_lease"),writerFenceRef:Z("writer_fence"),providerProfileRef:Z("provider_profile"),providerRouteRef:Z("provider_route")}).strict(),nC=g.object({repoRef:Z("repo"),worktreeRef:Z("worktree"),branchRef:Z("branch"),baseHead:Q_,branchHead:Q_}).strict(),dC=g.object({streamRef:Z("event_stream"),replayCursorRef:Z("replay_cursor"),sequence:g.number().int().safe().nonnegative(),prefixDigest:$0}).strict(),mC=g.object({ref:Z("handoff"),previousAttemptRef:Z("attempt"),nextAttemptRef:Z("attempt"),previousWriterGenerationRef:Z("writer_generation"),nextWriterGenerationRef:Z("writer_generation"),stoppedWorkRunRef:Z("work_run"),stopEvidenceRef:Y$,leaseRevocationEvidenceRef:Y$}).strict().superRefine((_,$)=>{WD(_.previousAttemptRef,_.nextAttemptRef,$,["nextAttemptRef"],"Handoff attempt rotation"),WD(_.previousWriterGenerationRef,_.nextWriterGenerationRef,$,["nextWriterGenerationRef"],"Handoff writer-generation rotation"),O8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),lC=g.object({ref:Z("review"),pullRequestRef:Z("pull_request"),base:Q_,head:Q_,reviewerRef:Z("reviewer"),reviewRunRef:Z("review_run"),proofBundleRef:Z("proof_bundle"),verdict:g.enum(["approved","changes_requested","blocked"]),reviewedAt:B_}).strict(),iC=g.object({pullRequestRef:Z("pull_request"),remoteBranchRef:Z("branch"),expectedBase:Q_,providerPullRequestBase:Q_,localHead:Q_,remoteHead:Q_,providerPullRequestHead:Q_,equalityProofRef:Z("proof_bundle"),ciProofBundleRefs:g.array(Z("proof_bundle")).min(1),verifiedAt:B_}).strict().superRefine((_,$)=>{if(!s_(_.expectedBase,_.providerPullRequestBase))$.addIssue({code:g.ZodIssueCode.custom,message:"Expected and provider-observed pull-request bases must be exactly equal",path:["providerPullRequestBase"]});if(!s_(_.localHead,_.remoteHead)||!s_(_.localHead,_.providerPullRequestHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Local, remote, and provider pull-request heads must be exactly equal",path:["providerPullRequestHead"]});let D=_.ciProofBundleRefs.map(YN);if(new Set(D).size!==D.length)$.addIssue({code:g.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical identities",path:["ciProofBundleRefs"]});let I=_.ciProofBundleRefs.map((U)=>U.digest);if(new Set(I).size!==I.length)$.addIssue({code:g.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical digests",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((U)=>AP(U,_.equalityProofRef)))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical digests",path:["ciProofBundleRefs"]})}),tC=g.object({ref:Z("repair_cycle"),cycle:g.number().int().min(0).max(2),cap:g.literal(2),exhausted:g.boolean(),latestRepairRef:Z("repair_cycle").optional()}).strict().superRefine((_,$)=>{if(_.exhausted!==(_.cycle===_.cap))$.addIssue({code:g.ZodIssueCode.custom,message:"Repair exhaustion must equal the cumulative cycle cap",path:["exhausted"]});if(_.cycle===0&&_.latestRepairRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Cycle zero cannot reference a repair",path:["latestRepairRef"]});if(_.cycle>0&&!_.latestRepairRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Non-zero repair state requires the latest immutable repair ref",path:["latestRepairRef"]});if(_.latestRepairRef&&AP(_.ref,_.latestRepairRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must be distinct canonical records",path:["latestRepairRef"]});if(_.latestRepairRef&&_.ref.digest===_.latestRepairRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must have distinct canonical digests",path:["latestRepairRef"]})}),oC=g.object({ref:Z("merge_guard"),pullRequestRef:Z("pull_request"),expectedBase:Q_,expectedHead:Q_,reviewRefs:g.array(Z("review")).min(1),proofBundleRefs:g.array(Z("proof_bundle")).min(1),operatorRef:Z("merge_operator"),operatorRunRef:Z("merge_operator_run"),providerGuardReceiptRef:Z("merge_guard_receipt"),mechanism:g.enum(["compare_and_swap","queue_expected_head"]),decision:g.enum(["eligible","denied","consumed","revoked"]),evaluatedAt:B_}).strict().superRefine((_,$)=>{if(new Set(_.reviewRefs.map((E)=>E.id)).size!==_.reviewRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard review refs must be unique",path:["reviewRefs"]});if(new Set(_.proofBundleRefs.map(YN)).size!==_.proofBundleRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical identities",path:["proofBundleRefs"]});if(new Set(_.proofBundleRefs.map((E)=>E.digest)).size!==_.proofBundleRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical digests",path:["proofBundleRefs"]})}),pC=g.object({ref:Z("merge_outcome"),guardRef:Z("merge_guard"),pullRequestRef:Z("pull_request"),expectedBase:Q_,observedBase:Q_,expectedHead:Q_,observedHead:Q_,status:g.enum(["merged","closed_unmerged","refused","head_drift","base_drift"]),mergeCommitRef:Z("commit").optional(),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().superRefine((_,$)=>{let D=s_(_.expectedBase,_.observedBase),I=s_(_.expectedHead,_.observedHead);if(_.status==="merged"){if(!D||!I)$.addIssue({code:g.ZodIssueCode.custom,message:"Merged outcomes require observed base and head to equal the guarded values",path:[!D?"observedBase":"observedHead"]});if(!_.mergeCommitRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Merged outcomes require an immutable merge commit ref",path:["mergeCommitRef"]})}else if(_.mergeCommitRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Unmerged outcomes cannot claim a merge commit",path:["mergeCommitRef"]});if(_.status==="head_drift"&&I)$.addIssue({code:g.ZodIssueCode.custom,message:"Head-drift outcomes require distinct expected and observed heads",path:["observedHead"]});if(_.status==="head_drift"&&!D)$.addIssue({code:g.ZodIssueCode.custom,message:"Head-drift outcomes cannot also carry an unclassified base drift",path:["observedBase"]});if(_.status==="base_drift"&&D)$.addIssue({code:g.ZodIssueCode.custom,message:"Base-drift outcomes require distinct expected and observed bases",path:["observedBase"]});if(_.status==="base_drift"&&!I)$.addIssue({code:g.ZodIssueCode.custom,message:"Base-drift outcomes cannot also carry an unclassified head drift",path:["observedHead"]});if(!I&&_.status!=="head_drift")$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Only a base_drift outcome may record an observed base that differs from the expected base",path:["observedBase"]})}),eC=g.object({guard:oC,outcome:pC.optional()}).strict(),aC=g.object({ref:Z("recovery"),priorAttemptRef:Z("attempt"),priorWriterGenerationRef:Z("writer_generation"),priorWorkRunRef:Z("work_run"),successorAttemptNonce:NP,successorWriterGenerationRef:Z("writer_generation"),preservedStateRefs:g.array(gP).min(1),stopEvidenceRef:Y$,leaseRevocationEvidenceRef:Y$}).strict().superRefine((_,$)=>{WD(_.priorWriterGenerationRef,_.successorWriterGenerationRef,$,["successorWriterGenerationRef"],"Recovery writer-generation rotation"),O8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),sC=g.object({ref:Z("cancellation"),cancelledAttemptRef:Z("attempt"),preservedStateRefs:g.array(gP).min(1),evidenceRefs:g.array(Y$).min(1)}).strict(),_v=g.object({ref:Z("cleanup_eligibility"),status:g.enum(["not_ready","preserved","blocked","eligible"]),targetWorktreeRef:Z("worktree"),eventCursorRef:Z("replay_cursor"),terminalDispositionRef:Z("terminal_disposition"),writerLeaseRef:Z("writer_lease"),leaseRevocationEvidenceRef:Y$,consumedEventEvidenceRef:Y$,evaluatedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().superRefine((_,$)=>{if(_.leaseRevocationEvidenceRef.id===_.consumedEventEvidenceRef.id||_.leaseRevocationEvidenceRef.digest===_.consumedEventEvidenceRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup lease-revocation and consumed-event facts require distinct evidence identities and digests",path:["consumedEventEvidenceRef"]})}),$v=g.object({ref:Z("cleanup_outcome"),eligibilityRef:Z("cleanup_eligibility"),targetWorktreeRef:Z("worktree"),status:g.enum(["preserved","deleted","failed","skipped"]),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict(),Dv=g.object({eligibility:_v,outcome:$v.optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!V_(_.outcome.eligibilityRef,_.eligibility.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup outcomes must bind the exact eligibility decision",path:["outcome","eligibilityRef"]});if(_.outcome&&!V_(_.outcome.targetWorktreeRef,_.eligibility.targetWorktreeRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Deletion requires an eligible cleanup decision",path:["outcome","status"]})}),Uv=g.object({plan:g.object({ref:Z("rollback_plan"),targetRef:g.union([Z("commit"),Z("branch")]),createdAt:B_}).strict(),outcome:g.object({ref:Z("rollback_outcome"),planRef:Z("rollback_plan"),targetRef:g.union([Z("commit"),Z("branch")]),status:g.enum(["not_run","succeeded","failed","cancelled"]),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!V_(_.outcome.planRef,_.plan.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback plan",path:["outcome","planRef"]});if(_.outcome&&!V_(_.outcome.targetRef,_.plan.targetRef))$.addIssue({code:g.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 jv(_,$){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 V_(_.ref,$.ref)&&(("head"in _)&&("head"in $)&&("base"in _)&&("base"in $)&&s_(_.base,$.base)&&s_(_.head,$.head)||!("head"in _)&&!("head"in $)&&!("base"in _)&&!("base"in $))}var Nv="hasna.task_to_pr_adapter_extension.",gv=g.object({mode:g.enum(["local","cloud"]),schema:DP,ref:Z("adapter_extension"),digest:$0}).strict().superRefine((_,$)=>{if(!_.schema.startsWith(Nv))$.addIssue({code:g.ZodIssueCode.custom,message:"Adapter extension schema ids must use the permanently reserved task-to-PR adapter-extension namespace",path:["schema"]})}),Av=g.enum(["admitted","running","handed_off","reviewing","repairing","merge_ready","merged","closed_unmerged","failed","blocked","cancelled","recovering","cleanup_complete","rolled_back"]),w9=new Set(["admitted","running","handed_off"]),r9=new Set(["merged","closed_unmerged","failed","blocked","cancelled","cleanup_complete","rolled_back"]),Ov={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"])},Lv=g.object({schema:g.literal(u.taskToPrProjection),id:A8,createdAt:B_,canonicalizationVersion:g.union([g.literal(1),g.literal(2)]),identityDigest:$0,frozenScopeDigest:$0,state:Av,workRunRef:Z("work_run"),rootRequestRef:Z("root_request"),prGroupRef:Z("pr_group"),leafTaskRef:Z("leaf_task"),attempt:cC,repository:nC,events:dC,openLoopsInvocationRef:Z("openloops_invocation").optional(),pullRequestRef:Z("pull_request").optional(),exactHead:iC.optional(),handoff:mC.optional(),reviews:g.array(lC).default([]),repair:tC,merge:eC.optional(),recovery:aC.optional(),cancellation:sC.optional(),cleanup:Dv.optional(),rollback:Uv.optional(),terminalDispositionRef:Z("terminal_disposition").optional(),provenanceLedger:g.array(Iv),adapterExtensions:g.array(gv).default([]),evidenceRefs:g.array(Y$).default([])}).strict().superRefine((_,$)=>{let D=_.canonicalizationVersion===1?v9({canonicalizationVersion:1,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest}):v9({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:g.ZodIssueCode.custom,message:"identityDigest must equal the selected v1 compatibility or v2 branch/worktree-bound canonical identity digest",path:["identityDigest"]});let I=new Set,U=new Set,E=new Set,j=new Set,N=new Set,A=new Set;for(let[T,F]of _.provenanceLedger.entries()){if("ref"in F){if(I.has(F.ref.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical owner id across categories or generations",path:["provenanceLedger",T,"ref","id"]});if(I.add(F.ref.id),U.has(F.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical digest across categories or generations",path:["provenanceLedger",T,"ref","digest"]});U.add(F.ref.digest);continue}if(F.category==="projection_id"){if(E.has(F.projectionId))$.addIssue({code:g.ZodIssueCode.custom,message:"Projection identity provenance tombstones must be globally unique",path:["provenanceLedger",T,"projectionId"]});E.add(F.projectionId);continue}if(F.category==="attempt_nonce"){if(j.has(F.nonce))$.addIssue({code:g.ZodIssueCode.custom,message:"Attempt nonce provenance tombstones must be globally unique",path:["provenanceLedger",T,"nonce"]});j.add(F.nonce);continue}if(N.has(F.prefixDigest))$.addIssue({code:g.ZodIssueCode.custom,message:"Replay prefix provenance tombstones must be globally unique",path:["provenanceLedger",T,"prefixDigest"]});if(N.add(F.prefixDigest),A.has(F.sequence))$.addIssue({code:g.ZodIssueCode.custom,message:"Replay prefix provenance entries must bind globally unique replay sequences",path:["provenanceLedger",T,"sequence"]});A.add(F.sequence)}for(let T of Ev(_))if(!_.provenanceLedger.some((F)=>jv(F,T)))$.addIssue({code:g.ZodIssueCode.custom,message:`The active ${T.category} identity must be represented exactly in the monotonic provenance ledger`,path:["provenanceLedger"]});let O=[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repository.repoRef,_.repository.worktreeRef,_.repository.branchRef,_.events.streamRef,..._.pullRequestRef?[_.pullRequestRef]:[]],L=(T,F,k,B)=>{let c=new Set(F.map((D_)=>D_.role)),E_=new Set;for(let[D_,J_]of T.entries()){if(!c.has(J_.role))$.addIssue({code:g.ZodIssueCode.custom,message:`${B} cannot preserve an unrecognized ${J_.role} role`,path:[...k,D_]});if(E_.has(J_.role))$.addIssue({code:g.ZodIssueCode.custom,message:`${B} must preserve exactly one canonical ref per role`,path:[...k,D_]});E_.add(J_.role)}if(T.length!==F.length)$.addIssue({code:g.ZodIssueCode.custom,message:`${B} preservation refs must exactly equal the required canonical role set`,path:k});for(let D_ of F)if(!T.some((J_)=>V_(J_,D_)))$.addIssue({code:g.ZodIssueCode.custom,message:`${B} must preserve ${D_.role}`,path:k})};if(_.handoff&&!V_(_.handoff.nextWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Handoff next generation must be the current attempt writer generation",path:["handoff","nextWriterGenerationRef"]});if(_.handoff&&!V_(_.handoff.nextAttemptRef,_.attempt.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Handoff next attempt must be the current attempt",path:["handoff","nextAttemptRef"]});if(_.handoff)WD(_.handoff.stoppedWorkRunRef,_.workRunRef,$,["handoff","stoppedWorkRunRef"],"Handoff WorkRun rotation");if(_.recovery){if(_.recovery.successorAttemptNonce!==_.attempt.nonce)$.addIssue({code:g.ZodIssueCode.custom,message:"Recovery successor nonce must equal the current attempt nonce",path:["recovery","successorAttemptNonce"]});if(!V_(_.recovery.successorWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Recovery successor generation must equal the current writer generation",path:["recovery","successorWriterGenerationRef"]});WD(_.recovery.priorAttemptRef,_.attempt.ref,$,["recovery","priorAttemptRef"],"Recovery attempt rotation"),WD(_.recovery.priorWorkRunRef,_.workRunRef,$,["recovery","priorWorkRunRef"],"Recovery WorkRun rotation"),L(_.recovery.preservedStateRefs,[_.recovery.priorWorkRunRef,...O],["recovery","preservedStateRefs"],"Recovery")}if(_.cancellation&&!V_(_.cancellation.cancelledAttemptRef,_.attempt.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Cancellation must bind the current attempt",path:["cancellation","cancelledAttemptRef"]});if(_.cancellation)L(_.cancellation.preservedStateRefs,[_.workRunRef,_.attempt.ref,...O],["cancellation","preservedStateRefs"],"Cancellation");if(_.cancellation&&_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"A projection cannot be both the cancellation and recovery snapshot",path:["recovery"]});if(_.handoff&&_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"A projection cannot be both the handoff and recovery snapshot",path:["recovery"]});if(_.cleanup&&!V_(_.cleanup.eligibility.eventCursorRef,_.events.replayCursorRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the current canonical replay cursor",path:["cleanup","eligibility","eventCursorRef"]});if(_.cleanup&&(!_.terminalDispositionRef||!V_(_.cleanup.eligibility.terminalDispositionRef,_.terminalDispositionRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact durable terminal owner fact",path:["cleanup","eligibility","terminalDispositionRef"]});if(_.cleanup&&!V_(_.cleanup.eligibility.writerLeaseRef,_.attempt.writerLeaseRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact writer lease being revoked",path:["cleanup","eligibility","writerLeaseRef"]});if(_.cleanup&&!V_(_.cleanup.eligibility.targetWorktreeRef,_.repository.worktreeRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the canonical worktree",path:["cleanup","eligibility","targetWorktreeRef"]});if(_.pullRequestRef){if(_.exactHead&&!V_(_.exactHead.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head proof must bind the canonical pull request ref",path:["exactHead","pullRequestRef"]});for(let[T,F]of _.reviews.entries())if(!V_(F.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Every review must bind the canonical pull request ref",path:["reviews",T,"pullRequestRef"]});if(_.merge&&!V_(_.merge.guard.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard must bind the canonical pull request ref",path:["merge","guard","pullRequestRef"]});if(_.merge?.outcome&&!V_(_.merge.outcome.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Review and merge state require a canonical pull request ref",path:["pullRequestRef"]});if(_.exactHead&&!s_(_.exactHead.localHead,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact local head must equal the canonical branch head",path:["exactHead","localHead"]});if(_.exactHead&&!s_(_.exactHead.expectedBase,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head expected base must equal the canonical repository base",path:["exactHead","expectedBase"]});if(_.exactHead&&!V_(_.exactHead.remoteBranchRef,_.repository.branchRef))$.addIssue({code:g.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:g.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((B,c)=>({ref:B,path:["exactHead","ciProofBundleRefs",c]})),..._.reviews.map((B,c)=>({ref:B.proofBundleRef,path:["reviews",c,"proofBundleRef"]}))],F=new Set,k=new Set;for(let B of T){let c=YN(B.ref);if(F.has(c))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical identities",path:B.path});if(F.add(c),k.has(B.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical digests",path:B.path});k.add(B.ref.digest)}}let J=new Set,P=new Set,z=new Set,S=new Set,W=new Set,X=new Set,G=new Set,R=new Set;for(let[T,F]of _.reviews.entries()){if(!s_(F.base,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Review base must equal the exact canonical pull-request base",path:["reviews",T,"base"]});if(!s_(F.head,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Review head must equal the exact canonical branch head",path:["reviews",T,"head"]});for(let[B,c,E_]of[[F.ref.id,J,"ref"],[F.reviewerRef.id,z,"reviewerRef"],[F.reviewRunRef.id,W,"reviewRunRef"]]){if(c.has(B))$.addIssue({code:g.ZodIssueCode.custom,message:"Review, reviewer, and review-run refs must each be unique",path:["reviews",T,E_]});c.add(B)}if(P.has(F.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review refs must resolve to distinct canonical record digests",path:["reviews",T,"ref"]});if(P.add(F.ref.digest),S.has(F.reviewerRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewer refs must resolve to distinct canonical actor digests",path:["reviews",T,"reviewerRef"]});if(S.add(F.reviewerRef.digest),X.has(F.reviewRunRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review-run refs must resolve to distinct canonical run digests",path:["reviews",T,"reviewRunRef"]});X.add(F.reviewRunRef.digest);let k=YN(F.proofBundleRef);if(G.has(k))$.addIssue({code:g.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical identities",path:["reviews",T,"proofBundleRef"]});if(G.add(k),R.has(F.proofBundleRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical digests",path:["reviews",T,"proofBundleRef"]});if(R.add(F.proofBundleRef.digest),F.reviewerRef.digest===_.attempt.workerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker and reviewer identities must resolve to distinct canonical digests",path:["reviews",T,"reviewerRef"]});if(F.reviewRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker runtime and review run must resolve to distinct canonical digests",path:["reviews",T,"reviewRunRef"]});if(_.exactHead&&Date.parse(F.reviewedAt)Date.parse(_.merge.guard.evaluatedAt)T.verdict!=="approved"))$.addIssue({code:g.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((F)=>V_(T,F.ref))))$.addIssue({code:g.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((F)=>V_(F,T.proofBundleRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact review proof bundle",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&!_.merge.guard.proofBundleRefs.some((T)=>V_(T,_.exactHead.equalityProofRef)))$.addIssue({code:g.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((F)=>V_(F,T))))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact-head CI proof",path:["merge","guard","proofBundleRefs"]})}}if(_.merge?.outcome){if(!V_(_.merge.outcome.guardRef,_.merge.guard.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome must bind the exact immutable merge guard",path:["merge","outcome","guardRef"]});if(!s_(_.merge.outcome.expectedHead,_.merge.guard.expectedHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome expected head must equal the guarded expected head",path:["merge","outcome","expectedHead"]});if(!s_(_.merge.outcome.expectedBase,_.merge.guard.expectedBase))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome expected base must equal the guarded expected base",path:["merge","outcome","expectedBase"]});if(_.merge.guard.decision!=="consumed")$.addIssue({code:g.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:g.ZodIssueCode.custom,message:`${_.state} projections cannot carry review bindings before review authority is active`,path:["reviews"]});if((w9.has(_.state)||_.state==="recovering")&&(_.merge?.guard.reviewRefs.length??0)>0)$.addIssue({code:g.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(!Ov[_.state].has(K))$.addIssue({code:g.ZodIssueCode.custom,message:`State ${_.state} is incompatible with merge authority ${K}`,path:["merge"]});if(r9.has(_.state)&&!_.terminalDispositionRef)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections require a durable Todos terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(!r9.has(_.state)&&_.terminalDispositionRef)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections cannot carry a terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(_.state==="reviewing"&&_.reviews.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewing projections require review refs",path:["reviews"]});if(_.state==="cancelled"&&!_.cancellation)$.addIssue({code:g.ZodIssueCode.custom,message:"Cancelled projections require preservation state",path:["cancellation"]});if(_.cancellation&&_.merge?.outcome)$.addIssue({code:g.ZodIssueCode.custom,message:"Cancellation cannot coexist with a terminal merge outcome",path:["cancellation"]});if(_.state==="recovering"&&!_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"Recovering projections require recovery state",path:["recovery"]});if(_.state==="repairing"&&_.repair.cycle===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Repairing projections require a non-zero repair cycle",path:["repair","cycle"]});if(_.merge&&(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed")&&!V_(_.attempt.admissionWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Merge-ready projections require an eligible guard",path:["merge"]});if(_.state==="merged"&&_.merge?.outcome?.status!=="merged")$.addIssue({code:g.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:g.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:g.ZodIssueCode.custom,message:"Cleanup-complete projections require an immutable cleanup outcome",path:["cleanup"]});if(_.state==="rolled_back"&&_.rollback?.outcome?.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Rolled-back projections require a successful rollback outcome",path:["rollback"]});if((_.state==="failed"||_.state==="blocked")&&_.evidenceRefs.length===0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Non-terminal projections cannot carry terminal owner outcomes",path:["state"]});let Y=new Set;for(let[T,F]of _.adapterExtensions.entries()){let k=`${F.mode}:${F.schema}`;if(Y.has(k))$.addIssue({code:g.ZodIssueCode.custom,message:"Adapter extensions must be unique per local/cloud mode and schema",path:["adapterExtensions",T]});Y.add(k)}});var Sv=g.object({id:g.string().min(1),at:B_,kind:g.enum(["message","tool_call","command","file_change","error","test","decision","verification","status","other"]),summary:g.string().min(1),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),costEstimate:b1.optional()}).strict(),Jv=S_(u.agentTrajectory).extend({actor:e$,workRunRef:s.optional(),events:g.array(Sv).default([]),outcome:g.enum(["succeeded","failed","cancelled","blocked","unknown"]).default("unknown"),proofBundleRef:s.optional()}).strict(),Wv="v1",Pv=g.enum(["library","cli-with-store","service","saas"]),zv=["user-hosted","hasna-saas"],Xv=g.enum(zv),Gv=["api","sdk","mcp","cli"],L8=g.enum(Gv),Rv=g.enum(["supported","deferred","unsupported"]),Yv=g.enum(["none","local-only","api-key","session","service-token","custom"]),pW=g.object({method:g.enum(["GET","POST","PUT","PATCH","DELETE"]),path:g.string().regex(/^\/[A-Za-z0-9_./:*-]*$/,"Endpoint paths must be absolute HTTP paths"),public:g.boolean().default(!1),description:g.string().min(1).optional()}).strict(),Qv=g.object({id:g.string().min(1),kind:g.enum(["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]),required:g.boolean().default(!0),command:g.string().min(1).optional(),evidenceRef:K_.optional(),status:g.enum(["pending","passed","failed","blocked","deferred"]).default("pending"),summary:g.string().min(1).optional()}).strict().superRefine((_,$)=>{if((_.status==="passed"||_.status==="failed"||_.status==="blocked")&&!_.command&&!_.evidenceRef&&!_.summary)$.addIssue({code:g.ZodIssueCode.custom,message:"Terminal readiness gates require command, evidenceRef, or summary",path:["status"]})}),Kv=g.object({name:g.string().min(1),kind:L8.optional(),status:Rv,bin:g.string().min(1).optional(),mcpBin:g.string().min(1).optional(),authMode:Yv,health:pW.optional(),readiness:pW.optional(),version:pW.optional(),apiBasePath:g.string().regex(/^\/v[0-9]+$/,"Stable API base path must be /vN").optional(),openApiPath:g.string().regex(/^\/[A-Za-z0-9_./:-]*$/).optional(),exportSubpath:g.string().regex(/^\.(?:\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*)?$/,"SDK export subpaths must be package export keys such as . or ./sdk").optional(),generatedFrom:g.string().regex(/^\/[A-Za-z0-9_./:-]*$/,"SDK generatedFrom must reference an absolute OpenAPI path").optional(),clientClassName:g.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/).optional(),deferReason:g.string().min(1).optional(),readinessGates:g.array(Qv).default([])}).strict().superRefine((_,$)=>{if(_.status==="supported"){if(!_.kind||_.kind==="api"){if(!_.bin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a serve bin",path:["bin"]});if(!_.health)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a health endpoint",path:["health"]});if(!_.readiness)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a readiness endpoint",path:["readiness"]});if(!_.version)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a version endpoint",path:["version"]})}if(_.kind==="cli"&&!_.bin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported CLI surfaces require a bin",path:["bin"]});if(_.kind==="mcp"&&!_.mcpBin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported MCP surfaces require an mcpBin",path:["mcpBin"]});if(_.kind==="sdk"&&!_.exportSubpath)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported SDK surfaces require an exportSubpath",path:["exportSubpath"]})}if((_.status==="deferred"||_.status==="unsupported")&&!_.deferReason)$.addIssue({code:g.ZodIssueCode.custom,message:"Deferred or unsupported service surfaces require a deferReason",path:["deferReason"]});if(_.health&&_.health.path!=="/health")$.addIssue({code:g.ZodIssueCode.custom,message:"Health endpoint must be /health",path:["health","path"]});if(_.health&&_.health.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Health endpoint must use GET",path:["health","method"]});if(_.readiness&&_.readiness.path!=="/ready")$.addIssue({code:g.ZodIssueCode.custom,message:"Readiness endpoint must be /ready",path:["readiness","path"]});if(_.readiness&&_.readiness.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Readiness endpoint must use GET",path:["readiness","method"]});if(_.version&&_.version.path!=="/version")$.addIssue({code:g.ZodIssueCode.custom,message:"Version endpoint must be /version",path:["version","path"]});if(_.version&&_.version.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Version endpoint must use GET",path:["version","method"]})}),Tv=["sqlite","postgres"],S8=g.enum(Tv),J8=["sqlite","postgres"],Fv=g.enum(J8),$P=["postgres"],Vv=g.object({kind:L8,reason:g.string().trim().min(1)}).strict(),OP=500,LP=200,QN=(_)=>g.string().trim().min(1).max(_).regex(/^[^\u0000-\u001f\u007f]+$/,"Waiver text must not contain control characters"),Bv=["domain","host","ip","email"],Mv=g.object({kind:g.enum(Bv),reason:QN(OP),reviewedBy:QN(LP),expiresAt:B_}).strict(),bv=g.object({engine:g.enum($P),reason:QN(OP),reviewedBy:QN(LP).optional(),expiresAt:B_.optional()}).strict();function Zv(_){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 Hv=g.object({conformance:g.object({waivedSurfaces:g.array(Vv).default([]),waiverProfile:g.literal("non-node-monorepo").optional(),waivedStorageEngines:g.array(bv).default([]),waivedAssetInventories:g.array(Mv).default([])}).catchall(g.unknown()).optional(),release:g.object({artifactScan:g.object({script:g.string().trim().min(1)}).strict().optional()}).catchall(g.unknown()).optional()}).catchall(g.unknown()),kv=g.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,"App names must be lowercase dashed identifiers"),qv=["","-cli","-mcp","-serve","-worker","-runner","-daemon","-migrate","-doctor"];function Cv(_){return qv.map(($)=>`${_}${$}`)}function f9(_){return`hasna/oss/${_}/database-url`}var vv=g.object({mode:S8,engines:g.array(Fv).min(1).optional(),envPrefix:g.string().regex(/^HASNA_[A-Z][A-Z0-9]*_$/).optional(),aliasEnvPrefix:g.string().regex(/^[A-Z][A-Z0-9]*_$/).optional(),databaseUrlSecretRef:g.string().regex(/^hasna\/oss\/[a-z0-9-]+\/database-url$/).optional(),sqlitePath:g.string().min(1).endsWith(".db","storage.sqlitePath must end in .db").optional(),pgTestGate:g.object({envVar:g.string().regex(/^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$/),command:g.string().trim().min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.engines&&new Set(_.engines).size!==_.engines.length)$.addIssue({code:g.ZodIssueCode.custom,message:"storage.engines must not contain duplicates",path:["engines"]});if(_.engines?.includes("postgres")&&!_.envPrefix)$.addIssue({code:g.ZodIssueCode.custom,message:"storage.engines containing postgres requires envPrefix for the HASNA__DATABASE_URL contract",path:["envPrefix"]})}),W8=g.enum(["0600"]),P8=g.enum(["0700"]),z8=g.enum([".hasna",".codewith"]),wv=g.enum(["directory","file","sqlite_db","sqlite_wal","sqlite_shm","backup","export","report","tmp","log","session","snapshot"]),LD=R$.refine((_)=>!_.startsWith("~"),"Local store path patterns must be relative to their declared root"),rv=g.object({id:g.string().min(1),source:g.enum(["sqlite","manifest","index","runtime","package_adapter"]),table:g.string().min(1).optional(),column:g.string().min(1).optional(),description:g.string().min(1),required:g.boolean().default(!0)}).strict(),fv=g.object({safeWhen:g.enum(["exclusive_access","offline_only","never"]),operations:g.array(g.enum(["wal_checkpoint_truncate","incremental_vacuum","optimize","vacuum"])).default([])}).strict().superRefine((_,$)=>{if(_.safeWhen==="never"&&_.operations.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"sqliteMaintenance.safeWhen=never cannot declare operations",path:["operations"]})}),xv=g.object({id:g.string().min(1),description:g.string().min(1),ttlDays:g.number().int().nonnegative().optional(),artifactClasses:g.array(wv).min(1),allowlistGlobs:g.array(LD).min(1),activeRecordExclusions:g.array(rv).default([]),sqliteMaintenance:fv.optional()}).strict(),uv=g.object({storeId:g.string().regex(/^[a-z][a-z0-9-]*$/),packageName:g.string().min(1),displayName:g.string().min(1),root:z8,relativePath:LD,directoryMode:P8.default("0700"),fileMode:W8.default("0600"),sqliteDatabaseGlobs:g.array(LD).default([]),sensitiveFileGlobs:g.array(LD).default([]),backupGlobs:g.array(LD).default([]),exportGlobs:g.array(LD).default([]),retentionAdapters:g.array(xv).default([]),notes:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{if(_.relativePath.includes("*"))$.addIssue({code:g.ZodIssueCode.custom,message:"store relativePath must be a concrete directory; use glob fields for files",path:["relativePath"]});let D=new Set;for(let[I,U]of _.retentionAdapters.entries()){if(D.has(U.id))$.addIssue({code:g.ZodIssueCode.custom,message:"retention adapter ids must be unique within a store",path:["retentionAdapters",I,"id"]});D.add(U.id)}}),X8=S_(u.secureLocalStorePolicy).extend({version:g.string().min(1),scope:g.array(z8).min(1),defaults:g.object({directoryMode:P8.default("0700"),fileMode:W8.default("0600"),dryRunDefault:g.literal(!0),requireExplicitApply:g.literal(!0),includeSqliteSidecars:g.literal(!0),redactedEvidenceOnly:g.literal(!0)}).strict(),stores:g.array(uv).min(1),lifecycle:g.object({retentionDryRunDefault:g.literal(!0),requireActiveRecordExclusionProof:g.literal(!0),requireArtifactAllowlist:g.literal(!0),sqliteMaintenanceRequiresExclusiveAccess:g.literal(!0)}).strict(),warnings:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set;for(let[I,U]of _.stores.entries()){if(D.has(U.storeId))$.addIssue({code:g.ZodIssueCode.custom,message:"store ids must be unique",path:["stores",I,"storeId"]});if(D.add(U.storeId),!_.scope.includes(U.root))$.addIssue({code:g.ZodIssueCode.custom,message:"store root must be listed in policy scope",path:["stores",I,"root"]})}}),yv=g.object({$schema:g.string().min(1).optional(),schema:g.literal(u.serviceContract),name:kv,class:Pv,contractVersion:g.literal(Wv),kitVersion:g.string().min(1),description:g.string().min(1).optional(),bins:g.array(g.string().min(1)).default([]),storage:vv.optional(),hosting:g.array(Xv).min(1).default(["user-hosted"]),serviceSurfaces:g.array(Kv).default([]),metadata:Hv.optional()}).strict().superRefine((_,$)=>{if(new Set(_.hosting).size!==_.hosting.length)$.addIssue({code:g.ZodIssueCode.custom,message:"hosting must not contain duplicates",path:["hosting"]});let D=new Set(Cv(_.name)),I=new Set;for(let[O,L]of _.bins.entries()){if(I.has(L))$.addIssue({code:g.ZodIssueCode.custom,message:"Duplicate bin declaration",path:["bins",O]});if(I.add(L),!D.has(L))$.addIssue({code:g.ZodIssueCode.custom,message:`Bin "${L}" is not allowlisted for app "${_.name}"; allowed: ${[...D].join(", ")}`,path:["bins",O]})}let U=(O)=>I.has(`${_.name}${O}`);if(_.storage){let O=_.name.toUpperCase().replace(/-/g,"_");if(_.storage.envPrefix&&_.storage.envPrefix!==`HASNA_${O}_`)$.addIssue({code:g.ZodIssueCode.custom,message:`storage.envPrefix must be HASNA_${O}_`,path:["storage","envPrefix"]});if(_.storage.databaseUrlSecretRef&&_.storage.databaseUrlSecretRef!==f9(_.name))$.addIssue({code:g.ZodIssueCode.custom,message:`storage.databaseUrlSecretRef must be ${f9(_.name)}`,path:["storage","databaseUrlSecretRef"]})}if(_.class==="library"){if(_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"library repos must not declare storage",path:["storage"]});if(U("-serve")||U("-mcp"))$.addIssue({code:g.ZodIssueCode.custom,message:"library repos must not ship a -serve or -mcp bin",path:["bins"]})}if(_.class==="cli-with-store"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"cli-with-store repos must declare storage",path:["storage"]});else{if(_.storage.mode==="sqlite"&&!_.storage.sqlitePath)$.addIssue({code:g.ZodIssueCode.custom,message:"sqlite cli-with-store storage requires sqlitePath (~/.hasna//.db)",path:["storage","sqlitePath"]});if(_.storage.engines){let O=new Set(_.storage.engines),L=_.metadata?.conformance?.waivedStorageEngines??[],J=Zv({class:_.class,name:_.name,bins:_.bins,hosting:_.hosting,storageMode:_.storage.mode}),P=new Set(J?[]:L.map((S)=>S.engine)),z=J8.filter((S)=>!O.has(S)&&!P.has(S));if(z.length>0){let S=J&&L.length>0?`; declared waiver ignored: ${J}`:"";$.addIssue({code:g.ZodIssueCode.custom,message:`cli-with-store storage.engines must declare both sqlite and postgres unless the engine carries a metadata.conformance.waivedStorageEngines waiver; missing: ${z.join(", ")}${S}`,path:["storage","engines"]})}}}if(!I.has(_.name))$.addIssue({code:g.ZodIssueCode.custom,message:`cli-with-store repos must ship the "${_.name}" bin`,path:["bins"]})}if(_.class==="service"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"service repos must declare storage",path:["storage"]});else if(_.storage.engines&&(!_.storage.engines.includes("sqlite")||!_.storage.engines.includes("postgres")))$.addIssue({code:g.ZodIssueCode.custom,message:"service storage.engines must declare both sqlite and postgres",path:["storage","engines"]});if(!U("-serve"))$.addIssue({code:g.ZodIssueCode.custom,message:`service repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"service repos must declare at least one service surface",path:["serviceSurfaces"]})}if(_.class==="saas"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must declare storage",path:["storage"]});else{if(_.storage.mode!=="postgres")$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must use the postgres storage backend",path:["storage","mode"]});if(!_.storage.envPrefix)$.addIssue({code:g.ZodIssueCode.custom,message:"saas storage requires envPrefix for the public DATABASE_URL contract",path:["storage","envPrefix"]})}if(!U("-serve"))$.addIssue({code:g.ZodIssueCode.custom,message:`saas repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must declare at least one service surface",path:["serviceSurfaces"]})}for(let[O,L]of _.serviceSurfaces.entries()){if(L.bin&&!I.has(L.bin))$.addIssue({code:g.ZodIssueCode.custom,message:`Service surface bin "${L.bin}" must be declared in bins`,path:["serviceSurfaces",O,"bin"]});if(L.mcpBin&&!I.has(L.mcpBin))$.addIssue({code:g.ZodIssueCode.custom,message:`Service surface MCP bin "${L.mcpBin}" must be declared in bins`,path:["serviceSurfaces",O,"mcpBin"]})}let E=_.metadata?.conformance?.waivedSurfaces??[],j=new Set;for(let[O,L]of E.entries()){if(j.has(L.kind))$.addIssue({code:g.ZodIssueCode.custom,message:`Duplicate conformance waiver for ${L.kind}`,path:["metadata","conformance","waivedSurfaces",O,"kind"]});j.add(L.kind)}let N=_.metadata?.conformance?.waivedStorageEngines??[],A=new Set;for(let[O,L]of N.entries()){if(A.has(L.engine))$.addIssue({code:g.ZodIssueCode.custom,message:`Duplicate storage-engine waiver for ${L.engine}`,path:["metadata","conformance","waivedStorageEngines",O,"engine"]});A.add(L.engine)}}),Sm=g.object({status:g.enum(["ok","degraded","unavailable"]),version:g.string().min(1),mode:S8}).strict(),Jm=g.object({ready:g.boolean(),reason:g.string().min(1).optional()}).strict(),Wm=g.object({version:g.string().min(1)}).strict(),hv=g.enum(["info","notice","breaking","critical"]),cv=g.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 (..)"),nv=["FREEZE","UNFREEZE","BREAKING","CUTOVER","POLICY","RELEASE"],dv=g.enum(nv);var mv=g.enum(["fleet","package","machine"]),G8=S_(u.commsEventEnvelope).extend({type:cv,severity:hv,scope:mv,summary:g.string().min(1).optional(),source:e$.optional(),affected_packages:g.array(o).default([]),affected_machines:g.array(o).default([]),action_required:g.boolean().default(!1),ack_by:B_.optional(),dedupe_key:o,resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.scope==="package"&&_.affected_packages.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Package-scoped comms events require affected_packages",path:["affected_packages"]});if(_.scope==="machine"&&_.affected_machines.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Machine-scoped comms events require affected_machines",path:["affected_machines"]});if(_.ack_by&&!_.action_required)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:`${_.type} events are always critical`,path:["severity"]});if(_.scope!=="fleet")$.addIssue({code:g.ZodIssueCode.custom,message:`${_.type} events are always fleet-scoped`,path:["scope"]});if(!_.action_required)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.type} events require action_required`,path:["action_required"]})}}),lv=g.enum(["fleet","package","product","loop-lane","initiative","personal"]),iv=g.enum(["quiet","work","firehose"]),tv=o.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:)"),ov=S_(u.commsChannelMetadata).extend({class:lv,noise:iv.optional(),owner:o.optional(),until:tv.optional(),successor:o.optional()}).strict().superRefine((_,$)=>{if(_.class==="initiative"){if(!_.owner)$.addIssue({code:g.ZodIssueCode.custom,message:"Initiative channels require an owner",path:["owner"]});if(!_.until)$.addIssue({code:g.ZodIssueCode.custom,message:"Initiative channels require an until horizon (date or gate id)",path:["until"]})}}),x9={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}},pv=S_(u.commsMessageMetadata).extend({tag:dv,envelope:G8}).strict().superRefine((_,$)=>{let D=x9[_.tag];if(!D.allowedSeverities.includes(_.envelope.severity))$.addIssue({code:g.ZodIssueCode.custom,message:`[${_.tag}] posts allow severities ${D.allowedSeverities.join(", ")}`,path:["envelope","severity"]});if(D.requiredEventType&&_.envelope.type!==D.requiredEventType)$.addIssue({code:g.ZodIssueCode.custom,message:`[${_.tag}] posts require event type ${D.requiredEventType}`,path:["envelope","type"]});for(let[I,U]of Object.entries(x9))if(U.requiredEventType===_.envelope.type&&_.tag!==I)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.envelope.type} events must use the [${I}] tag`,path:["tag"]})});var ev={[u.actorRef]:Kq,[u.resourceRef]:Tq,[u.evidenceRef]:Vq,[u.workRun]:wC,[u.taskToPrProjection]:Lv,[u.decisionEnvelope]:s9,[u.costEstimate]:b1,[u.capabilityCard]:Mq,[u.providerLiveModeStandard]:Cq,[u.contextPack]:_8,[u.integrationRef]:$8,[u.projectManifest]:xq,[u.projectPanel]:D8,[u.projectSnapshot]:tq,[u.renderManifest]:cq,[u.agentTrajectory]:Jv,[u.validationPlan]:oq,[u.proofBundle]:vC,[u.scaffoldManifest]:DC,[u.scaffoldInstallRecord]:IC,[u.appCloudManifest]:E8,[u.noCloudEvidencePack]:qC,[u.secureLocalStorePolicy]:X8,[u.serviceContract]:yv,[u.commsEventEnvelope]:G8,[u.commsChannelMetadata]:ov,[u.commsMessageMetadata]:pv,[u.app]:SC,[u.release]:WC,[u.rolloutRecord]:XC,[u.announcement]:QC,[u.audience]:MC};class R8 extends Error{schemaId;issues;constructor(_,$){super(`Contract validation failed for ${_}`);this.name="ContractValidationError",this.schemaId=_,this.issues=$}}function Y8(_,$){let I=ev[_].safeParse($);if(!I.success)throw new R8(_,I.error.issues);return I.data}var Pm=String.raw`(?:^|[^\w$])(?:_*(?:import|require)|createRequire|Module\s*\.\s*_load)`;var SP=[{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"}],zm=SP.filter((_)=>("checkKind"in _)),av=SP.filter((_)=>_.kind==="module"),Xm=[...new Set([...XN,...av.map((_)=>_.pattern)])],Gm=SP.filter((_)=>_.kind==="config");var u9="^[^\\u0000-\\u001f\\u007f]*$",Rm={$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:u.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:$P.length,items:{type:"object",additionalProperties:!1,required:["engine","reason"],properties:{engine:{enum:[...$P]},reason:{type:"string",minLength:1,maxLength:OP,allOf:[{pattern:"\\S"},{pattern:u9}]},reviewedBy:{type:"string",minLength:1,maxLength:LP,allOf:[{pattern:"\\S"},{pattern:u9}]},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 sv="2026-07-06";function t$(_,$,D,I,U,E=[],j){return{id:_,description:$,ttlDays:D,artifactClasses:I,allowlistGlobs:U,activeRecordExclusions:E.map((N)=>({...N,required:N.required??!0})),sqliteMaintenance:j}}var Ym=X8.parse({schema:u.secureLocalStorePolicy,id:"hasna-secure-local-store-defaults",createdAt:"2026-07-06T00:00:00.000Z",version:sv,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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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 _w=64,Qm=new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${_w-1}}$`),AD="[0-9a-fA-F]",Km=new RegExp(`^\\{?(?:${AD}{8}-${AD}{4}-${AD}{4}-${AD}{4}-${AD}{12}|${AD}{32})\\}?$`);var $w=/^hasna_([a-z][a-z0-9-]*)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;var Tm=new RegExp($w.source.replace(/^\^/,"\\b").replace(/\$$/,"\\b"));var Q8="@hasna/knowledge";function Dw(_){if(!Number.isFinite(_??0))return 20;return Math.max(1,Math.min(100,Math.trunc(_??20)))}function Uw(_){return _.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")||"project"}function Z1(_,$=180){let D=String(_??"").replace(/\s+/g," ").trim();if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-3))}...`}function w_(_,$=""){return typeof _==="string"&&_.length>0?_:$}function H1(_){return typeof _==="number"&&Number.isFinite(_)?_:0}function HD(_){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 VN(_){return r$.safeParse(_).success}function f$(_,$,D,I,U=[]){return{kind:_,id:$,name:D,uri:I&&VN(I)?I:void 0,externalId:$,sourcePackage:Q8,tags:U}}function Iw(_){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(HD).filter(Boolean).sort((D,I)=>I.localeCompare(D))[0]}function Ew(_){if(!_)return"unknown";let $=Date.now()-new Date(_).valueOf();if(!Number.isFinite($))return"unknown";return $>2592000000?"stale":"fresh"}function jw(_){let $=(D)=>{let I=String(D??"").toLowerCase();return I!==""&&!["done","complete","completed","resolved","succeeded","skipped"].includes(I)};return _.reindex_queue.filter((D)=>$(D.status)).length+_.sync_conflicts.filter((D)=>$(D.status)).length+_.approval_gates.filter((D)=>$(D.status)).length}function Nw(_,$){let D=[];for(let I of _.items.slice(0,$))D.push({id:`item_${I.id}`,title:I.title,summary:Z1(I.content_preview),status:I.archived?"archived":"active",priority:"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("knowledge",I.id,I.title,`knowledge://item/${encodeURIComponent(I.id)}`,I.tags)],evidenceRefs:I.url&&VN(I.url)?[{id:`url_${I.id}`,kind:"url",uri:I.url,summary:"Source URL for this knowledge item."}]:[],metadata:{source:"legacy_store",archived:I.archived,tags:I.tags,url:I.url||void 0}});for(let I of _.sources.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,w_(I.uri,"source")),E=w_(I.title,w_(I.uri,U)),j=w_(I.uri,`knowledge://source/${encodeURIComponent(U)}`);D.push({id:`source_${U}`,title:E,summary:Z1(`${H1(I.chunks)} chunk(s), ${H1(I.revisions)} revision(s)`),status:H1(I.chunks)>0?"indexed":"source",priority:"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("document",U,E,j)],evidenceRefs:VN(j)?[{id:`source_${U}`,kind:"url",uri:j,summary:"Source reference."}]:[],metadata:{source:"knowledge_db.sources",kind:I.kind,chunks:H1(I.chunks),revisions:H1(I.revisions)}})}for(let I of _.chunks.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"chunk"),E=w_(I.source_uri);D.push({id:`chunk_${U}`,title:w_(I.wiki_title,E?`Chunk from ${E}`:`Knowledge chunk ${U}`),summary:Z1(I.text_preview),status:"chunk",priority:"low",timestamp:HD(I.created_at),resourceRefs:[f$("context_pack",U,w_(I.wiki_title,U),`knowledge://chunk/${encodeURIComponent(U)}`)],evidenceRefs:E&&VN(E)?[{id:`chunk_source_${U}`,kind:"url",uri:E,summary:"Chunk source reference."}]:[],metadata:{source:"knowledge_db.chunks",source_uri:E||void 0,token_count:I.token_count,ordinal:I.ordinal}})}for(let I of _.sync_conflicts.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"sync_conflict");D.push({id:`sync_conflict_${U}`,title:`Sync conflict: ${w_(I.entity_kind,"entity")}/${w_(I.entity_id,U)}`,summary:Z1(`Status ${w_(I.status,"unknown")}; strategy ${w_(I.resolution_strategy,"none")}.`),status:w_(I.status,"unknown"),priority:"critical",timestamp:HD(I.created_at),resourceRefs:[f$("finding",U,"Knowledge sync conflict",`knowledge://sync-conflict/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.sync_conflicts",local_machine_id:I.local_machine_id,remote_machine_id:I.remote_machine_id}})}for(let I of _.reindex_queue.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"reindex");D.push({id:`reindex_${U}`,title:`Reindex ${w_(I.kind,"item")}: ${w_(I.target_id,U)}`,summary:Z1(I.reason),status:w_(I.status,"unknown"),priority:w_(I.status).toLowerCase()==="failed"?"high":"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("action",U,"Knowledge reindex work item",`knowledge://reindex/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.reindex_queue",attempts:I.attempts,source_uri:I.source_uri}})}return D.slice(0,$)}async function K8(_,$={}){let D=Dw($.limit),I=new Date().toISOString(),U=Uw(_),j=await($.service??zN({scope:$.scope??"project",cwd:$.cwd})).resolveInventory({limit:D,storePath:$.storePath,includeArchived:$.includeArchived}),N=Iw(j),A=Ew(N),O=j.summary.active_items+j.summary.sources+j.summary.chunks+j.summary.wiki_pages+j.summary.storage_objects,L=jw(j),J=O===0?"empty":A==="stale"?"stale":"ready",P=Nw(j,D),z={schema:u.projectPanel,id:`knowledge_panel_${U}`,createdAt:I,projectId:U,provider:{kind:"knowledge",id:`knowledge_${U}`,name:"Knowledge",sourcePackage:Q8,externalId:j.home},kind:"knowledge",title:"Knowledge",summary:J==="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:J,stateReason:J==="stale"?"Latest indexed knowledge activity is older than 30 days.":void 0,generatedAt:I,freshness:A,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:P,actions:[f$("action","knowledge:inventory","Inspect knowledge inventory"),f$("action","knowledge:context-pack","Build cited context pack"),f$("action","knowledge:ingest","Ingest project source")],resourceRefs:[f$("project",U,_,`project://${U}`),f$("knowledge",`home_${U}`,"Knowledge workspace",`knowledge://workspace/${encodeURIComponent(U)}`),f$("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 Y8(u.projectPanel,z)}function T8(_){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 B8=["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 M8="HASNA_KNOWLEDGE_STORAGE_MODE",b8="KNOWLEDGE_STORAGE_MODE";function F8(_){return process.env[_]?.trim()||void 0}function V8(_){let $=_?.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return"sqlite";if($==="postgres"||$==="postgresql")return"postgres";return}function gw(_={}){let $=g0(f1(_.scope,_.cwd).home);return h($.knowledgeDbPath),{db:w($.knowledgeDbPath),path:$.knowledgeDbPath,scope:_.scope??"global"}}function Z8(){let _=V8(F8(M8))??V8(F8(b8));if(_)return _;return"sqlite"}function JP(_={}){let $=gw(_);try{Aw($.db);let D=$.db.query("SELECT table_name, last_synced_at, direction FROM _knowledge_sync_meta ORDER BY table_name, direction").all();return{mode:Z8(),service:"knowledge",scope:$.scope,databasePath:$.path,tables:B8,sync:D}}finally{$.db.close()}}function Aw(_){_.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 B8=AY(q8(),1),{program:Fm,createCommand:rm,createArgument:bm,createOption:Mm,CommanderError:Zm,InvalidArgumentError:Hm,InvalidOptionArgumentError:km,Command:V8,Argument:Cm,Option:vm,Help:wm}=B8.default;import{chmod as AJ,mkdir as wv,readFile as uv,rename as fv,writeFile as M8}from"fs/promises";import{Buffer as f8}from"buffer";import{existsSync as x8}from"fs";import{homedir as xv}from"os";import{join as FU}from"path";import{createHmac as mv,timingSafeEqual as dm}from"crypto";import{randomUUID as tv}from"crypto";import{spawn as ov}from"child_process";import{randomUUID as $w}from"crypto";function rv(_,$){return $.split(".").reduce((g,U)=>{if(g&&typeof g==="object"&&U in g)return g[U];return},_)}function bv(_,$){let g=[],U=(I)=>{if(!g.some((j)=>Object.is(j,I)))g.push(I)};if($.includes(".")&&$ in _)U(_[$]);let D=rv(_,$);if(D!==void 0||!$.includes("."))U(D);return g}function Mv(_,$={}){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 BU(_,$,g={}){if($===void 0)return!0;if(_===void 0)return!1;return(Array.isArray($)?$:[$]).some((D)=>Mv(D,g).test(_))}function F8(_,$){if(!$)return!0;return Object.entries($).every(([g,U])=>{let D=bv(_,g);return Zv(D,U,g)})}function Zv(_,$,g){if(Cv($))return!_.some((U)=>r8(U,$.not,g));return _.some((U)=>r8(U,$,g))}function r8(_,$,g){if(typeof $==="string"||Array.isArray($))return Hv(_).some((U)=>BU(U,$,{segmentSafe:g.endsWith("_path")||g.endsWith(".path")}));if(Array.isArray(_))return _.some((U)=>U===$);return _===$}function Hv(_){if(_===void 0)return[];if(Array.isArray(_))return _.flatMap(($)=>kv($)?[String($)]:[]);return[String(_)]}function kv(_){return _===null||typeof _==="string"||typeof _==="number"||typeof _==="boolean"}function Cv(_){return Boolean(_&&typeof _==="object"&&!Array.isArray(_)&&"not"in _)}function vv(_,$){return BU(_.source,$.source)&&BU(_.type,$.type)&&BU(_.subject,$.subject)&&BU(_.severity,$.severity)&&F8(_.data,$.data)&&F8(_.metadata,$.metadata)}function b8(_,$){if(!_.enabled)return!1;if(!_.filters||_.filters.length===0)return!0;return _.filters.some((g)=>vv($,g))}var GE="HASNA_EVENTS_DIR",XE="HASNA_EVENTS_HOME",LJ="local-json-v1:",yv=100,cv=1000;function y8(_){return _||process.env[GE]||process.env[XE]||FU(xv(),".hasna","events")}function hv(){if(process.env[GE])return GE;if(process.env[XE])return XE;return null}class YE{dataDir;runtime;channelsPath;eventsPath;deliveriesPath;constructor(_=y8()){this.dataDir=_,this.runtime=nv(_),this.channelsPath=FU(_,"channels.json"),this.eventsPath=FU(_,"events.json"),this.deliveriesPath=FU(_,"deliveries.json")}async init(){await wv(this.dataDir,{recursive:!0,mode:448}),await AJ(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=H8(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 Z8($,_)}async listEventsPage(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]),g=Z8($,{eventId:_.eventId,source:_.source,type:_.type}),U=QE(_.cursor,_),D=TE(_.limit),I=g.slice(U,U+D),j=U+I.length,E=j{return})}async readJson(_,$){try{let g=await uv(_,"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 M8(g,`${JSON.stringify($,null,2)} -`,{encoding:"utf-8",mode:384}),await fv(g,_),await AJ(_,384).catch(()=>{return})}}function nv(_=y8()){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`${LJ}${f8.from(JSON.stringify(g),"utf-8").toString("base64url")}`}function QE(_,$={}){if(!_)return 0;if(!_.startsWith(LJ))throw Error(`Invalid local JSON event cursor: ${_}`);let g=_.slice(LJ.length),U;try{U=JSON.parse(f8.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 OJ("eventId",U.eventId,$.eventId),OJ("source",U.source,$.source),OJ("type",U.type,$.type),D}function TE(_){if(_===void 0)return yv;if(!Number.isInteger(_)||_<1)throw Error(`Event page limit must be a positive integer, got ${_}`);return Math.min(_,cv)}function Z8(_,$){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=QE($.cursor,$);g=g.slice(U)}if($.limit!==void 0)g=g.slice(0,TE($.limit));return g}function OJ(_,$,g){if($!==g)throw Error(`Local JSON event cursor ${_} filter mismatch`)}function H8(_,$){return _.find((g)=>$.id!==void 0&&g.id===$.id||$.dedupeKey!==void 0&&g.dedupeKey===$.dedupeKey)}async function dv(_){let $=new YE(_);await $.init();let[g,U,D]=await Promise.all([$.listChannels(),$.listEvents(),$.listDeliveries()]),I=g.reduce((j,E)=>{return j[E.transport]=(j[E.transport]??0)+1,j},{});return{service:"events",schemaVersion:"1.0",dataDir:$.dataDir,storage:$.runtime,env:{primary:GE,fallback:XE,active:hv()},files:{channels:PJ($.dataDir,"channels.json",g.length),events:PJ($.dataDir,"events.json",U.length),deliveries:PJ($.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 PJ(_,$,g){let U=FU(_,$);return{path:U,exists:x8(U),records:g}}function iv(_,$){return`${_}.${$}`}function lv(_,$,g){return`sha256=${mv("sha256",_).update(iv($,g)).digest("hex")}`}function m$(){return new Date().toISOString()}function VU(_,$=4096){return _.length>$?`${_.slice(0,$)}...`:_}function pv(_,$){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"]=lv($.webhook.secret,U,g);return{body:g,headers:D}}async function ev(_,$,g={}){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let U=m$(),{body:D,headers:I}=pv(_,$),j=new AbortController,E=setTimeout(()=>j.abort(),$.webhook.timeoutMs??15000);try{let A=await(g.fetchImpl??fetch)($.webhook.url,{method:"POST",headers:I,body:D,signal:j.signal}),O=VU(await A.text());return{attempt:1,status:A.ok?"success":"failed",startedAt:U,completedAt:m$(),responseStatus:A.status,responseBody:O,error:A.ok?void 0:`Webhook returned HTTP ${A.status}`}}catch(A){return{attempt:1,status:"failed",startedAt:U,completedAt:m$(),error:A instanceof Error?A.message:String(A)}}finally{clearTimeout(E)}}async function av(_,$){if(!$.command)throw Error(`Channel ${$.id} has no command config`);let g=m$(),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=ov($.command.command,$.command.args??[],{cwd:$.command.cwd,env:D,stdio:["pipe","pipe","pipe"]}),E="",A="",O=setTimeout(()=>j.kill("SIGTERM"),$.command.timeoutMs??15000);j.stdin.end(U),j.stdout.on("data",(P)=>{E+=P.toString()}),j.stderr.on("data",(P)=>{A+=P.toString()}),j.on("error",(P)=>{clearTimeout(O),I({attempt:1,status:"failed",startedAt:g,completedAt:m$(),stdout:VU(E),stderr:VU(A),error:P.message})}),j.on("close",(P,W)=>{clearTimeout(O);let z=P===0;I({attempt:1,status:z?"success":"failed",startedAt:g,completedAt:m$(),stdout:VU(E),stderr:VU(A),error:z?void 0:`Command exited with ${W?`signal ${W}`:`code ${P}`}`})})})}async function sv(_,$,g={}){if($.transport==="webhook")return ev(_,$,g);if($.transport==="command")return av(_,$);return{attempt:1,status:"skipped",startedAt:m$(),completedAt:m$(),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:tv(),eventId:_.id,channelId:$.id,transport:$.transport,status:U,attempts:g,createdAt:g[0]?.startedAt??m$(),completedAt:g.at(-1)?.completedAt??m$()}}class h8 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 n8{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 h8(_.type,$.issues)}}var _w=new n8;function SJ(_){return{id:_.id??$w(),source:_.source,type:_.type,time:jw(_.time),subject:_.subject,severity:_.severity??"info",data:_.data??{},message:_.message,dedupeKey:_.dedupeKey,schemaVersion:_.schemaVersion??"1.0",metadata:_.metadata??{}}}class d8{store;redactors;transportOptions;catalog;validateCatalogTypes;constructor(_={}){this.store=_.store??new YE(_.dataDir),this.redactors=_.redactors??[],this.transportOptions={fetchImpl:_.fetchImpl},this.catalog=_.catalog??_w,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?SJ(_):Uw(SJ(_));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 C8(await this.store.listEvents(),_)}async listEventsPage(_={}){if(this.store.listEventsPage)return this.store.listEventsPage(_);let $=C8(await this.store.listEvents(),{eventId:_.eventId,source:_.source,type:_.type}),g=QE(_.cursor,_),U=TE(_.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)=>b8(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=SJ({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=b8(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 A=new Date().toISOString(),O=k8(I,U,[{attempt:1,status:"skipped",startedAt:A,completedAt:A,error:D.reason}]);return O.metadata={reason:"filter_mismatch"},await this.store.appendDelivery(O),O}let j=await this.applyRedaction(I,U),E=await this.deliverWithRetry(j,U);return await this.store.appendDelivery(E),E}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=gw(_,$.redact?.paths??[],$.redact?.replacement??"[REDACTED]");for(let U of this.redactors)g=await U(g,$);return g}async deliverWithRetry(_,$){let g=Ew($.retry),U=[];for(let D=0;D[g,i8(g)?"[REDACTED]":U]));return $}function Dw(_){return _.map(m8)}function Uw(_,$="[REDACTED]"){return WJ(_,$)}function i8(_){return/secret|token|password|api[_-]?key|authorization/i.test(_)}function WJ(_,$){if(Array.isArray(_))return _.map((g)=>WJ(g,$));if(!_||typeof _!=="object")return _;return Object.fromEntries(Object.entries(_).map(([g,U])=>[g,i8(g)?$:WJ(U,$)]))}function Iw(_,$,g){let U=$.split("."),D=_;for(let j of U.slice(0,-1)){let E=D[j];if(!E||typeof E!=="object")return;D=E}let I=U.at(-1);if(I&&I in D)D[I]=g}function C8(_,$){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(QE($.cursor,$));if($.limit!==void 0)g=g.slice(0,TE($.limit));return g}function jw(_){if(!_)return new Date().toISOString();return _ instanceof Date?_.toISOString():_}function Ew(_){return{maxAttempts:Math.max(1,_?.maxAttempts??1),backoffMs:Math.max(0,_?.backoffMs??250),multiplier:Math.max(1,_?.multiplier??2)}}function RE(_,$,g=!1){if(!_?.length)return;let U={};for(let D of _){let I=Ow(D,$),j=I.path;if(j in U)throw Error(`Duplicate ${$} filter path: ${j}`);let E=g?Aw(I.rawValue,$):I.rawValue;U[j]=I.negated?{not:E}:E}return U}function Nw(_){let $={};if(_.source)$.source=_.source;if(_.type)$.type=_.type;if(_.subject)$.subject=_.subject;if(_.severity)$.severity=_.severity;let g=v8(RE(_.data,"data"),RE(_.dataJson,"data-json",!0)),U=v8(RE(_.metadata,"metadata"),RE(_.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 v8(..._){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 Aw(_,$){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 Ow(_,$){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 Pw=100;function q0(_,$){if(!_)return $;let g=JSON.parse(_);if(!g||typeof g!=="object"||Array.isArray(g))throw Error("Expected a JSON object");return g}function Sw(_){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 e6(_){if(_.createClient)return _.createClient();return new d8({store:new YE(_.dataDir)})}function _4(_,$,g){if($)console.log(JSON.stringify(_,null,2));else console.log(g)}function w8(_,$){let g=_ instanceof Error?_.message:String(_);if($)console.log(JSON.stringify({error:g},null,2));else console.error(g);process.exitCode=1}function u8(_){return Boolean(_?.json||_?.opts?.().json||_?.optsWithGlobals?.().json||_?.parent?.opts?.().json||_?.parent?.optsWithGlobals?.().json)}function G6(_,$){return u8(_)||u8($)}function Lw(_,$){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",sg,[]).option("--metadata ","Event metadata field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",sg,[]).option("--data-json ","Event data field filter with typed JSON value; path!=json negatives supported",sg,[]).option("--metadata-json ","Event metadata field filter with typed JSON value; path!=json negatives supported",sg,[]).option("--secret ","Webhook HMAC secret").option("--header ","Webhook header",sg,[]).option("--arg ","Command argument",sg,[]).option("--timeout-ms ","Transport timeout in milliseconds",rU).option("--retry-attempts ","Maximum delivery attempts",rU).option("--retry-backoff-ms ","Initial retry backoff in milliseconds",rU).option("--redact ","Event field path to redact before delivery",sg,[]).option("--disabled","Create channel disabled",!1).option("-j, --json","Print JSON output",!1).action(async(U,D,I)=>{let j=new Date().toISOString(),E={id:D.id,name:D.name,enabled:!D.disabled,transport:D.transport,filters:Nw(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")E.webhook={url:U,secret:D.secret,headers:Sw(D.header),timeoutMs:D.timeoutMs};else if(D.transport==="command")E.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 A=await e6($).addChannel(E);_4(m8(A),G6(D,I),`Added ${A.transport} channel ${A.id}`)}),g.command("list").description("List configured channels").option("-j, --json","Print JSON output",!1).action(async(U,D)=>{let I=await e6($).listChannels();if(G6(U,D)){console.log(JSON.stringify(Dw(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 dv($.dataDir);_4(I,G6(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 e6($).removeChannel(U);_4({removed:j},G6(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=G6(D,I);try{let E=await e6($).testChannel(U,{source:D.source??$.source,type:D.type,subject:D.subject??U,message:D.message,data:q0(D.data,{test:!0}),metadata:q0(D.metadata,{})},{honorFilters:D.honorFilters});_4(E,j,`${E.status}: ${E.channelId}`)}catch(E){w8(E,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=G6(D,I);try{let E=await e6($).matchChannel(U,{source:D.source??$.source,type:D.type,subject:D.subject??U,message:D.message,data:q0(D.data,{test:!0}),metadata:q0(D.metadata,{})});_4(E,j,`${E.matched?"matched":"skipped"}: ${E.channelId}`)}catch(E){w8(E,j)}}),g}function Ww(_,$){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 E=await e6($).emit({source:I.source??$.source,type:D,subject:I.subject,severity:I.severity,message:I.message,dedupeKey:I.dedupeKey,data:q0(I.data,{}),metadata:q0(I.metadata,{})},{deliver:I.deliver,dedupe:I.dedupe});_4(E,G6(I,j),`${E.deduped?"Deduped":"Emitted"} ${E.event.id} to ${E.deliveries.length} channel(s)`)});let U=$.defaultEventListLimit??Pw;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)`,rU,U).option("-j, --json","Print JSON output",!1).action(async(D,I)=>{let j=await e6($).listEvents();if(D.source)j=j.filter((E)=>E.source===D.source);if(D.type)j=j.filter((E)=>E.type===D.type);if(D.limit)j=j.slice(-D.limit);if(G6(D,I)){console.log(JSON.stringify(j,null,2));return}if(!j.length){console.log("No events recorded.");return}for(let E of j)console.log(`${E.time} ${E.id} ${E.source} ${E.type} ${E.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",rU).option("--dry-run","Preview without delivery",!1).option("-j, --json","Print JSON output",!1).action(async(D,I)=>{let j=await e6($).replay({eventId:D.id,source:D.source,type:D.type,cursor:D.cursor,limit:D.limit,dryRun:D.dryRun});_4(j,G6(D,I),Jw(j.events.length,j.deliveries.length,j.nextCursor))}),g}function l8(_,$){Lw(_,$),Ww(_,$)}function rU(_){let $=Number(_);if(!Number.isFinite($))throw Error(`Expected a number, got ${_}`);return $}function sg(_,$){return $.push(_),$}function Jw(_,$,g){let U=g?`, next cursor: ${g}`:"";return`Replayed ${_} event(s), ${$} delivery result(s)${U}`}import{basename as Rw}from"path";var H$={name:"@hasna/knowledge",version:"0.2.102",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/live-private-query.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","live:private-query":"bun scripts/live-private-query.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 t8={debug:0,info:1,warn:2,error:3},Gw=()=>{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 g4(_,$,g){if(t8[_]U.toLowerCase()));return $.filter((U)=>!g.has(U.toLowerCase()))}function JJ(_,$,g){if(g===void 0)return{..._,message:$};return{..._,added:g.length,message:`${$} (added ${g.length} tag${g.length===1?"":"s"})`}}function Tw(_,$){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 Qw([..._??[],...g])}function Kw(_){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=Tw(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 qw(_){if(!_)return"";return $Y[_]??_}function Bw(_,$){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 Vw(_){if(!_)return"";let $=[..._Y,...Object.keys($Y)],g="",U=Number.POSITIVE_INFINITY;for(let D of $){let I=Bw(_,D);if(I<U)U=I,g=D}return U<=3?g:""}function Fw(){return Rw(process.argv[1]??"").replace(/\.(?:js|ts|mjs|cjs)$/,"")==="knowledge"}async function rw(_){if(!s8.includes(_[0]??""))return!1;let $=new V8;return $.name("knowledge").description("Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions"),l8($,{source:"knowledge"}),await $.parseAsync(_,{from:"user"}),!0}function bw(){console.log(`knowledge - local agent knowledge store + `)}var Ow=[`CREATE TABLE IF NOT EXISTS sources ( + id TEXT PRIMARY KEY, + uri TEXT NOT NULL UNIQUE, + kind TEXT NOT NULL, + title TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + acl_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS wiki_pages ( + id TEXT PRIMARY KEY, + path TEXT NOT NULL UNIQUE, + title TEXT NOT NULL, + artifact_uri TEXT, + content_hash TEXT, + status TEXT NOT NULL DEFAULT 'active', + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS source_revisions ( + id TEXT PRIMARY KEY, + source_id TEXT NOT NULL REFERENCES sources(id) ON DELETE CASCADE, + revision TEXT NOT NULL, + hash TEXT, + extracted_text_uri TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(source_id, revision) + )`,`CREATE TABLE IF NOT EXISTS chunks ( + id TEXT PRIMARY KEY, + source_revision_id TEXT REFERENCES source_revisions(id) ON DELETE CASCADE, + wiki_page_id TEXT REFERENCES wiki_pages(id) ON DELETE CASCADE, + kind TEXT NOT NULL, + ordinal INTEGER NOT NULL, + text TEXT NOT NULL, + token_count INTEGER, + start_offset INTEGER, + end_offset INTEGER, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS chunk_embeddings ( + id TEXT PRIMARY KEY, + chunk_id TEXT NOT NULL REFERENCES chunks(id) ON DELETE CASCADE, + provider TEXT NOT NULL, + model TEXT NOT NULL, + dimensions INTEGER NOT NULL, + vector_json TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(chunk_id, provider, model) + )`,`CREATE TABLE IF NOT EXISTS wiki_backlinks ( + from_page_id TEXT NOT NULL REFERENCES wiki_pages(id) ON DELETE CASCADE, + to_page_id TEXT NOT NULL REFERENCES wiki_pages(id) ON DELETE CASCADE, + label TEXT, + created_at TEXT NOT NULL DEFAULT NOW()::text, + PRIMARY KEY(from_page_id, to_page_id) + )`,`CREATE TABLE IF NOT EXISTS citations ( + id TEXT PRIMARY KEY, + wiki_page_id TEXT REFERENCES wiki_pages(id) ON DELETE CASCADE, + chunk_id TEXT REFERENCES chunks(id) ON DELETE SET NULL, + source_uri TEXT NOT NULL, + quote TEXT, + start_offset INTEGER, + end_offset INTEGER, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS knowledge_indexes ( + id TEXT PRIMARY KEY, + kind TEXT NOT NULL, + name TEXT NOT NULL, + artifact_uri TEXT, + shard_key TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(kind, name, shard_key) + )`,`CREATE TABLE IF NOT EXISTS runs ( + id TEXT PRIMARY KEY, + type TEXT NOT NULL, + prompt TEXT, + status TEXT NOT NULL, + provider TEXT, + model TEXT, + cost_tokens INTEGER NOT NULL DEFAULT 0, + cost_usd DOUBLE PRECISION NOT NULL DEFAULT 0, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS run_events ( + id TEXT PRIMARY KEY, + run_id TEXT NOT NULL REFERENCES runs(id) ON DELETE CASCADE, + level TEXT NOT NULL, + event TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS provider_usage ( + id TEXT PRIMARY KEY, + run_id TEXT REFERENCES runs(id) ON DELETE SET NULL, + provider TEXT NOT NULL, + model TEXT NOT NULL, + input_tokens INTEGER NOT NULL DEFAULT 0, + output_tokens INTEGER NOT NULL DEFAULT 0, + cost_usd DOUBLE PRECISION NOT NULL DEFAULT 0, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS redaction_findings ( + id TEXT PRIMARY KEY, + source_uri TEXT, + run_id TEXT REFERENCES runs(id) ON DELETE SET NULL, + severity TEXT NOT NULL, + finding_type TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS storage_objects ( + id TEXT PRIMARY KEY, + artifact_uri TEXT NOT NULL UNIQUE, + kind TEXT NOT NULL, + content_type TEXT, + hash TEXT, + size_bytes INTEGER, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS audit_events ( + id TEXT PRIMARY KEY, + event_type TEXT NOT NULL, + action TEXT NOT NULL, + target_uri TEXT, + decision TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS approval_gates ( + id TEXT PRIMARY KEY, + action TEXT NOT NULL, + target_uri TEXT, + status TEXT NOT NULL, + reason TEXT, + approved_by TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS vector_index_entries ( + id TEXT PRIMARY KEY, + chunk_id TEXT NOT NULL REFERENCES chunks(id) ON DELETE CASCADE, + source_revision_id TEXT REFERENCES source_revisions(id) ON DELETE CASCADE, + provider TEXT NOT NULL, + model TEXT NOT NULL, + dimensions INTEGER NOT NULL, + vector_json TEXT NOT NULL, + vector_norm DOUBLE PRECISION NOT NULL, + source_uri TEXT, + source_ref TEXT, + revision TEXT, + hash TEXT, + start_offset INTEGER, + end_offset INTEGER, + token_count INTEGER, + status TEXT NOT NULL DEFAULT 'active', + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(chunk_id, provider, model) + )`,`CREATE TABLE IF NOT EXISTS reindex_queue ( + id TEXT PRIMARY KEY, + kind TEXT NOT NULL, + target_id TEXT NOT NULL, + source_uri TEXT, + reason TEXT NOT NULL, + status TEXT NOT NULL DEFAULT 'pending', + attempts INTEGER NOT NULL DEFAULT 0, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + UNIQUE(kind, target_id, reason) + )`,`CREATE TABLE IF NOT EXISTS knowledge_machines ( + machine_id TEXT PRIMARY KEY, + hostname TEXT, + platform TEXT, + user_label TEXT, + workspace_home TEXT, + tailscale_dns TEXT, + tailscale_ips_json TEXT NOT NULL DEFAULT '[]', + ssh_target TEXT, + last_seen_at TEXT, + capabilities_json TEXT NOT NULL DEFAULT '{}', + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS knowledge_sync_snapshots ( + id TEXT PRIMARY KEY, + machine_id TEXT NOT NULL, + scope TEXT NOT NULL, + workspace_home TEXT NOT NULL, + sqlite_schema_version INTEGER NOT NULL, + artifact_root_uri TEXT NOT NULL, + content_hash TEXT NOT NULL, + tables_json TEXT NOT NULL, + artifact_hashes_json TEXT NOT NULL, + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS knowledge_sync_changes ( + id TEXT PRIMARY KEY, + origin_machine_id TEXT NOT NULL, + updated_by_machine_id TEXT NOT NULL, + entity_kind TEXT NOT NULL, + entity_id TEXT NOT NULL, + operation TEXT NOT NULL, + base_hash TEXT, + next_hash TEXT, + source_ref TEXT, + source_revision_id TEXT, + artifact_uri TEXT, + logical_clock INTEGER NOT NULL DEFAULT 0, + bundle_id TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,"ALTER TABLE knowledge_sync_changes ADD COLUMN IF NOT EXISTS logical_clock INTEGER NOT NULL DEFAULT 0","ALTER TABLE knowledge_sync_changes ADD COLUMN IF NOT EXISTS bundle_id TEXT",`CREATE TABLE IF NOT EXISTS knowledge_sync_conflicts ( + id TEXT PRIMARY KEY, + entity_kind TEXT NOT NULL, + entity_id TEXT NOT NULL, + local_machine_id TEXT NOT NULL, + remote_machine_id TEXT NOT NULL, + local_hash TEXT, + remote_hash TEXT, + base_hash TEXT, + status TEXT NOT NULL, + resolution_strategy TEXT, + proposed_patch_uri TEXT, + approved_by TEXT, + resolved_at TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text + )`,`CREATE TABLE IF NOT EXISTS knowledge_sync_table_clocks ( + table_name TEXT NOT NULL, + machine_id TEXT NOT NULL, + logical_clock INTEGER NOT NULL DEFAULT 0, + high_water_hash TEXT, + high_water_bundle_id TEXT, + origin_machine_id TEXT, + updated_by_machine_id TEXT, + last_applied_at TEXT, + metadata_json TEXT NOT NULL DEFAULT '{}', + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text, + PRIMARY KEY(table_name, machine_id) + )`,`CREATE TABLE IF NOT EXISTS knowledge_sync_imports ( + bundle_id TEXT PRIMARY KEY, + source_machine_id TEXT NOT NULL, + target_machine_id TEXT NOT NULL, + direction TEXT NOT NULL, + status TEXT NOT NULL, + content_hash TEXT NOT NULL, + table_clocks_json TEXT NOT NULL, + tables_json TEXT NOT NULL, + generated_at TEXT NOT NULL, + applied_at TEXT NOT NULL, + metadata_json TEXT NOT NULL DEFAULT '{}' + )`,"CREATE INDEX IF NOT EXISTS idx_source_revisions_source ON source_revisions(source_id)","CREATE INDEX IF NOT EXISTS idx_chunks_source_revision ON chunks(source_revision_id)","CREATE INDEX IF NOT EXISTS idx_chunks_wiki_page ON chunks(wiki_page_id)","CREATE INDEX IF NOT EXISTS idx_citations_wiki_page ON citations(wiki_page_id)","CREATE INDEX IF NOT EXISTS idx_citations_chunk ON citations(chunk_id)","CREATE INDEX IF NOT EXISTS idx_run_events_run ON run_events(run_id)","CREATE INDEX IF NOT EXISTS idx_provider_usage_run ON provider_usage(run_id)","CREATE INDEX IF NOT EXISTS idx_audit_events_action ON audit_events(action)","CREATE INDEX IF NOT EXISTS idx_audit_events_target ON audit_events(target_uri)","CREATE INDEX IF NOT EXISTS idx_audit_events_created ON audit_events(created_at)","CREATE INDEX IF NOT EXISTS idx_approval_gates_action ON approval_gates(action)","CREATE INDEX IF NOT EXISTS idx_approval_gates_status ON approval_gates(status)","CREATE INDEX IF NOT EXISTS idx_vector_index_provider_model ON vector_index_entries(provider, model)","CREATE INDEX IF NOT EXISTS idx_vector_index_source_revision ON vector_index_entries(source_revision_id)","CREATE INDEX IF NOT EXISTS idx_vector_index_source_uri ON vector_index_entries(source_uri)","CREATE INDEX IF NOT EXISTS idx_vector_index_status ON vector_index_entries(status)","CREATE INDEX IF NOT EXISTS idx_reindex_queue_status ON reindex_queue(status)","CREATE INDEX IF NOT EXISTS idx_reindex_queue_kind_target ON reindex_queue(kind, target_id)","CREATE INDEX IF NOT EXISTS idx_reindex_queue_source_uri ON reindex_queue(source_uri)","CREATE INDEX IF NOT EXISTS idx_knowledge_machines_last_seen ON knowledge_machines(last_seen_at)","CREATE INDEX IF NOT EXISTS idx_sync_snapshots_machine_created ON knowledge_sync_snapshots(machine_id, created_at)","CREATE INDEX IF NOT EXISTS idx_sync_snapshots_hash ON knowledge_sync_snapshots(content_hash)","CREATE INDEX IF NOT EXISTS idx_sync_changes_entity ON knowledge_sync_changes(entity_kind, entity_id)","CREATE INDEX IF NOT EXISTS idx_sync_changes_origin ON knowledge_sync_changes(origin_machine_id)","CREATE INDEX IF NOT EXISTS idx_sync_changes_created ON knowledge_sync_changes(created_at)","CREATE INDEX IF NOT EXISTS idx_sync_changes_bundle ON knowledge_sync_changes(bundle_id)","CREATE INDEX IF NOT EXISTS idx_sync_changes_clock ON knowledge_sync_changes(entity_kind, logical_clock)","CREATE INDEX IF NOT EXISTS idx_sync_conflicts_status ON knowledge_sync_conflicts(status)","CREATE INDEX IF NOT EXISTS idx_sync_conflicts_entity ON knowledge_sync_conflicts(entity_kind, entity_id)","CREATE INDEX IF NOT EXISTS idx_sync_table_clocks_machine ON knowledge_sync_table_clocks(machine_id)","CREATE INDEX IF NOT EXISTS idx_sync_table_clocks_updated ON knowledge_sync_table_clocks(updated_at)","CREATE INDEX IF NOT EXISTS idx_sync_imports_source ON knowledge_sync_imports(source_machine_id, applied_at)","CREATE INDEX IF NOT EXISTS idx_sync_imports_target ON knowledge_sync_imports(target_machine_id, applied_at)","CREATE INDEX IF NOT EXISTS idx_sync_imports_status ON knowledge_sync_imports(status)",`CREATE TABLE IF NOT EXISTS knowledge_items ( + id TEXT PRIMARY KEY, + short_id TEXT, + title TEXT NOT NULL, + content TEXT NOT NULL DEFAULT '', + url TEXT, + tags JSONB NOT NULL DEFAULT '[]'::jsonb, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + archived BOOLEAN NOT NULL DEFAULT FALSE, + created_at TEXT NOT NULL DEFAULT NOW()::text, + updated_at TEXT NOT NULL DEFAULT NOW()::text + )`,"CREATE INDEX IF NOT EXISTS idx_knowledge_items_short_id ON knowledge_items(short_id)","CREATE INDEX IF NOT EXISTS idx_knowledge_items_archived ON knowledge_items(archived)","CREATE INDEX IF NOT EXISTS idx_knowledge_items_created ON knowledge_items(created_at)",`ALTER TABLE knowledge_items + ADD COLUMN IF NOT EXISTS search_vector tsvector + GENERATED ALWAYS AS ( + setweight(to_tsvector('english', coalesce(title, '')), 'A') || + setweight(to_tsvector('english', coalesce(content, '')), 'B') + ) STORED`,`CREATE INDEX IF NOT EXISTS idx_knowledge_items_search_vector + ON knowledge_items USING GIN (search_vector)`,"ALTER TABLE knowledge_items ADD COLUMN IF NOT EXISTS version INTEGER NOT NULL DEFAULT 1",`CREATE TABLE IF NOT EXISTS knowledge_item_versions ( + id TEXT PRIMARY KEY, + item_id TEXT NOT NULL REFERENCES knowledge_items(id) ON DELETE CASCADE, + tenant_id TEXT, + version INTEGER NOT NULL, + title TEXT NOT NULL, + content TEXT, + body_uri TEXT, + content_hash TEXT NOT NULL, + content_bytes INTEGER NOT NULL, + url TEXT, + tags JSONB NOT NULL DEFAULT '[]'::jsonb, + metadata JSONB NOT NULL DEFAULT '{}'::jsonb, + archived BOOLEAN NOT NULL DEFAULT FALSE, + actor TEXT, + reason TEXT, + valid_from TEXT, + valid_to TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + UNIQUE(item_id, version) + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_item_versions_item + ON knowledge_item_versions(item_id, version DESC)`,`CREATE INDEX IF NOT EXISTS idx_knowledge_item_versions_hash + ON knowledge_item_versions(content_hash)`,`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) + IS NOT DISTINCT FROM + (NEW.title, NEW.content, NEW.url, NEW.tags, NEW.metadata, NEW.archived) THEN + -- No content-bearing change: no version, no snapshot. Pin the counter so + -- a caller cannot move it on a write the trigger otherwise ignores. + 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"')); + + -- The bump and the snapshot are ONE write. The counter advances by exactly + -- one and only here, so a caller can neither skip it nor forge it. + NEW.version := OLD.version + 1; + + -- updated_at is TEXT and the application fills it with toISOString(), so + -- the trigger must write the SAME shape. NOW()::text renders as + -- '2026-07-28 21:29:56.01+00'; space (0x20) sorts below 'T' (0x54), so a + -- column carrying both formats orders every trigger-written row before + -- every application-written one regardless of actual time, and valid_from + -- (copied verbatim from the row below) would stop being comparable with + -- valid_to. One format, no casts needed at read time. + -- + -- Only stamped when the caller did NOT set it. Import, sync replay, and + -- backfill carry a SOURCE timestamp and kept it before this trigger + -- existed; silently replacing it would be a regression. A writer that says + -- nothing still gets a truthful advance. + 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`,`DO $knowledge_item_version_trigger$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_trigger + WHERE tgname = 'trg_knowledge_items_version' + AND tgrelid = 'knowledge_items'::regclass + ) THEN + CREATE TRIGGER trg_knowledge_items_version + BEFORE UPDATE ON knowledge_items + FOR EACH ROW EXECUTE FUNCTION knowledge_items_version_snapshot(); + END IF; + END + $knowledge_item_version_trigger$`,"ALTER TABLE knowledge_items ENABLE ALWAYS TRIGGER trg_knowledge_items_version",`CREATE OR REPLACE FUNCTION knowledge_item_versions_append_only() + RETURNS TRIGGER AS $knowledge_item_versions_append_only$ + BEGIN + RAISE EXCEPTION 'knowledge_item_versions is append-only: version % of item % cannot be rewritten', + OLD.version, OLD.item_id + USING ERRCODE = 'restrict_violation'; + END + $knowledge_item_versions_append_only$ LANGUAGE plpgsql`,`DO $knowledge_item_versions_guard$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM pg_trigger + WHERE tgname = 'trg_knowledge_item_versions_append_only' + AND tgrelid = 'knowledge_item_versions'::regclass + ) THEN + CREATE TRIGGER trg_knowledge_item_versions_append_only + BEFORE UPDATE ON knowledge_item_versions + FOR EACH ROW EXECUTE FUNCTION knowledge_item_versions_append_only(); + END IF; + END + $knowledge_item_versions_guard$`,"ALTER TABLE knowledge_item_versions ENABLE ALWAYS TRIGGER trg_knowledge_item_versions_append_only",`ALTER TABLE knowledge_items + ADD COLUMN IF NOT EXISTS authority_classification TEXT, + ADD COLUMN IF NOT EXISTS authority_id TEXT, + ADD COLUMN IF NOT EXISTS tenant_id TEXT, + ADD COLUMN IF NOT EXISTS scope TEXT, + ADD COLUMN IF NOT EXISTS parent_id TEXT`,`CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_binding + ON knowledge_items(authority_classification, authority_id, tenant_id, scope, parent_id, id)`,`CREATE TABLE IF NOT EXISTS knowledge_guarded_write_manifests ( + manifest_id TEXT PRIMARY KEY, + manifest_receipt_id TEXT NOT NULL UNIQUE, + deterministic_key TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + manifest_digest TEXT NOT NULL, + maintainer_authority_classification TEXT NOT NULL, + maintainer_authority_id TEXT NOT NULL, + maintainer_tenant_id TEXT NOT NULL, + maintainer_scope TEXT NOT NULL, + maintainer_parent_id TEXT NOT NULL, + step_count INTEGER NOT NULL, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + CHECK (maintainer_authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (step_count BETWEEN 2 AND 64) + )`,`CREATE TABLE IF NOT EXISTS knowledge_guarded_write_manifest_steps ( + manifest_id TEXT NOT NULL REFERENCES knowledge_guarded_write_manifests(manifest_id), + ordinal INTEGER NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + deterministic_key TEXT NOT NULL, + verb TEXT NOT NULL, + target_id TEXT NOT NULL, + semantic_digest TEXT NOT NULL, + precondition_kind TEXT NOT NULL, + expected_version INTEGER, + dependencies JSONB NOT NULL, + limits JSONB NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + recovery_strategy TEXT NOT NULL, + recovery_operation_id TEXT NOT NULL, + recovery_step_id TEXT NOT NULL, + recovery_deterministic_key TEXT NOT NULL, + recovery_verb TEXT NOT NULL, + recovery_target_id TEXT NOT NULL, + recovery_semantic_digest TEXT NOT NULL, + recovery_precondition_kind TEXT NOT NULL, + recovery_expected_version INTEGER, + recovery_authority_classification TEXT NOT NULL, + recovery_authority_id TEXT NOT NULL, + recovery_tenant_id TEXT NOT NULL, + recovery_scope TEXT NOT NULL, + recovery_parent_id TEXT NOT NULL, + recovery_limits JSONB NOT NULL, + recovery_receipt_scope TEXT, + recovery_compensates_receipt_id TEXT, + PRIMARY KEY (manifest_id, ordinal), + UNIQUE (manifest_id, deterministic_key), + CHECK (ordinal >= 0), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (recovery_authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (verb IN ('create', 'update')), + CHECK (recovery_verb IN ('create', 'update')), + CHECK ( + (verb = 'create' AND precondition_kind = 'absent' AND expected_version IS NULL) + OR + (verb = 'update' AND precondition_kind = 'version' AND expected_version >= 1) + ), + CHECK ( + ( + recovery_verb = 'create' + AND recovery_precondition_kind = 'absent' + AND recovery_expected_version IS NULL + ) + OR + ( + recovery_verb = 'update' + AND recovery_precondition_kind = 'version' + AND recovery_expected_version >= 1 + ) + ), + CHECK (recovery_strategy IN ('forward_repair', 'receipt_scoped_compensation')), + CHECK ( + (recovery_strategy = 'forward_repair' AND recovery_receipt_scope IS NULL) + OR + ( + recovery_strategy = 'receipt_scoped_compensation' + AND recovery_receipt_scope = 'accepted_step_receipt' + AND recovery_compensates_receipt_id IS NOT NULL + ) + ), + CHECK ( + recovery_strategy = 'receipt_scoped_compensation' + OR recovery_compensates_receipt_id IS NULL + ) + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_guarded_manifest_step_operation + ON knowledge_guarded_write_manifest_steps( + authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id + )`,`CREATE OR REPLACE FUNCTION knowledge_guarded_manifest_immutable() + RETURNS TRIGGER AS $knowledge_guarded_manifest_immutable$ + BEGIN + RAISE EXCEPTION 'knowledge guarded workflow manifests are immutable' + USING ERRCODE = 'restrict_violation'; + END + $knowledge_guarded_manifest_immutable$ LANGUAGE plpgsql`,"DROP TRIGGER IF EXISTS trg_knowledge_guarded_manifest_immutable ON knowledge_guarded_write_manifests",`CREATE TRIGGER trg_knowledge_guarded_manifest_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_manifests + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_manifest_immutable()`,"ALTER TABLE knowledge_guarded_write_manifests ENABLE ALWAYS TRIGGER trg_knowledge_guarded_manifest_immutable",`DROP TRIGGER IF EXISTS trg_knowledge_guarded_manifest_steps_immutable + ON knowledge_guarded_write_manifest_steps`,`CREATE TRIGGER trg_knowledge_guarded_manifest_steps_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_manifest_steps + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_manifest_immutable()`,`ALTER TABLE knowledge_guarded_write_manifest_steps + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_manifest_steps_immutable`,`CREATE TABLE IF NOT EXISTS knowledge_guarded_write_claims ( + deterministic_key TEXT PRIMARY KEY, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + verb TEXT NOT NULL, + target_id TEXT NOT NULL, + payload_digest TEXT NOT NULL, + precondition_kind TEXT NOT NULL, + expected_version INTEGER, + manifest_id TEXT, + manifest_ordinal INTEGER, + manifest_phase TEXT, + compensates_receipt_id TEXT, + receipt_id TEXT, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + FOREIGN KEY (manifest_id, manifest_ordinal) + REFERENCES knowledge_guarded_write_manifest_steps(manifest_id, ordinal), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (verb IN ('create', 'update')), + CHECK ( + (verb = 'create' AND precondition_kind = 'absent' AND expected_version IS NULL) + OR + (verb = 'update' AND precondition_kind = 'version' AND expected_version >= 1) + ), + CHECK ( + ( + manifest_id IS NULL AND manifest_ordinal IS NULL + AND manifest_phase IS NULL AND compensates_receipt_id IS NULL + ) + OR ( + manifest_id IS NOT NULL AND manifest_ordinal IS NOT NULL + AND manifest_phase IN ('primary', 'recovery') + AND ( + (manifest_phase = 'primary' AND compensates_receipt_id IS NULL) + OR manifest_phase = 'recovery' + ) + ) + ), + UNIQUE(authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id) + )`,`CREATE UNIQUE INDEX IF NOT EXISTS idx_knowledge_guarded_claim_receipt + ON knowledge_guarded_write_claims(receipt_id) WHERE receipt_id IS NOT NULL`,`CREATE TABLE IF NOT EXISTS knowledge_guarded_write_receipts ( + receipt_id TEXT PRIMARY KEY, + deterministic_key TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + verb TEXT NOT NULL, + target_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + payload_digest TEXT NOT NULL, + precondition_kind TEXT NOT NULL, + expected_version INTEGER, + manifest_id TEXT, + manifest_ordinal INTEGER, + manifest_phase TEXT, + compensates_receipt_id TEXT, + status TEXT NOT NULL, + code TEXT NOT NULL, + effect_count INTEGER NOT NULL, + result_id TEXT, + result_version INTEGER, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + FOREIGN KEY (manifest_id, manifest_ordinal) + REFERENCES knowledge_guarded_write_manifest_steps(manifest_id, ordinal), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (verb IN ('create', 'update')), + CHECK ( + (verb = 'create' AND precondition_kind = 'absent' AND expected_version IS NULL) + OR + (verb = 'update' AND precondition_kind = 'version' AND expected_version >= 1) + ), + CHECK ( + ( + manifest_id IS NULL AND manifest_ordinal IS NULL + AND manifest_phase IS NULL AND compensates_receipt_id IS NULL + ) + OR ( + manifest_id IS NOT NULL AND manifest_ordinal IS NOT NULL + AND manifest_phase IN ('primary', 'recovery') + AND ( + (manifest_phase = 'primary' AND compensates_receipt_id IS NULL) + OR manifest_phase = 'recovery' + ) + ) + ), + CHECK (status IN ('accepted', 'rejected')), + CHECK (effect_count IN (0, 1)), + CHECK ( + (status = 'accepted' AND effect_count = 1 AND result_id IS NOT NULL AND result_version IS NOT NULL) + OR + (status = 'rejected' AND effect_count = 0 AND result_id IS NULL AND result_version IS NULL) + ) + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_guarded_receipt_operation + ON knowledge_guarded_write_receipts( + authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id + )`,`CREATE OR REPLACE FUNCTION knowledge_guarded_claim_once() + RETURNS TRIGGER AS $knowledge_guarded_claim_once$ + BEGIN + IF TG_OP = 'DELETE' THEN + RAISE EXCEPTION 'knowledge guarded write claims are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + IF (OLD.deterministic_key, OLD.operation_id, OLD.step_id, + OLD.authority_classification, OLD.authority_id, OLD.tenant_id, + OLD.scope, OLD.parent_id, OLD.verb, OLD.target_id, + OLD.payload_digest, OLD.precondition_kind, OLD.expected_version, + OLD.manifest_id, OLD.manifest_ordinal, OLD.manifest_phase, + OLD.compensates_receipt_id, OLD.created_at) + IS DISTINCT FROM + (NEW.deterministic_key, NEW.operation_id, NEW.step_id, + NEW.authority_classification, NEW.authority_id, NEW.tenant_id, + NEW.scope, NEW.parent_id, NEW.verb, NEW.target_id, + NEW.payload_digest, NEW.precondition_kind, NEW.expected_version, + NEW.manifest_id, NEW.manifest_ordinal, NEW.manifest_phase, + NEW.compensates_receipt_id, NEW.created_at) + OR OLD.receipt_id IS NOT NULL + OR NEW.receipt_id IS NULL THEN + RAISE EXCEPTION 'knowledge guarded write claim may only bind one terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_claim_once$ LANGUAGE plpgsql`,"DROP TRIGGER IF EXISTS trg_knowledge_guarded_claim_once ON knowledge_guarded_write_claims",`CREATE TRIGGER trg_knowledge_guarded_claim_once + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_claims + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_claim_once()`,"ALTER TABLE knowledge_guarded_write_claims ENABLE ALWAYS TRIGGER trg_knowledge_guarded_claim_once",`CREATE OR REPLACE FUNCTION knowledge_guarded_receipts_immutable() + RETURNS TRIGGER AS $knowledge_guarded_receipts_immutable$ + BEGIN + RAISE EXCEPTION 'knowledge guarded write receipts are immutable' + USING ERRCODE = 'restrict_violation'; + END + $knowledge_guarded_receipts_immutable$ LANGUAGE plpgsql`,"DROP TRIGGER IF EXISTS trg_knowledge_guarded_receipts_immutable ON knowledge_guarded_write_receipts",`CREATE TRIGGER trg_knowledge_guarded_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_write_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_receipts_immutable()`,"ALTER TABLE knowledge_guarded_write_receipts ENABLE ALWAYS TRIGGER trg_knowledge_guarded_receipts_immutable",`CREATE OR REPLACE FUNCTION knowledge_guarded_item_authority() + RETURNS TRIGGER AS $knowledge_guarded_item_authority$ + DECLARE + claim_key TEXT; + claim_matches BOOLEAN; + BEGIN + IF TG_OP = 'DELETE' THEN + IF OLD.authority_classification IS NULL THEN + RETURN OLD; + END IF; + RAISE EXCEPTION 'guarded knowledge items cannot be deleted outside a declared FCAME-1 action' + USING ERRCODE = 'restrict_violation'; + END IF; + + IF TG_OP = 'INSERT' AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF TG_OP = 'UPDATE' + AND OLD.authority_classification IS NULL + AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF NEW.authority_classification IS NULL OR NEW.authority_id IS NULL + OR NEW.tenant_id IS NULL OR NEW.scope IS NULL OR NEW.parent_id IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item binding must be complete' + USING ERRCODE = 'check_violation'; + END IF; + + IF TG_OP = 'UPDATE' AND ( + OLD.id IS DISTINCT FROM NEW.id + OR OLD.authority_classification IS DISTINCT FROM NEW.authority_classification + OR OLD.authority_id IS DISTINCT FROM NEW.authority_id + OR OLD.tenant_id IS DISTINCT FROM NEW.tenant_id + OR OLD.scope IS DISTINCT FROM NEW.scope + OR OLD.parent_id IS DISTINCT FROM NEW.parent_id + ) THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + + claim_key := NULLIF( + current_setting('hasna.knowledge_guarded_deterministic_key', true), + '' + ); + IF claim_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item mutation requires an FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_write_claims AS claim + WHERE claim.deterministic_key = claim_key + AND claim.receipt_id IS NULL + AND claim.target_id = NEW.id + AND claim.authority_classification = NEW.authority_classification + AND claim.authority_id = NEW.authority_id + AND claim.tenant_id = NEW.tenant_id + AND claim.scope = NEW.scope + AND claim.parent_id = NEW.parent_id + AND ( + ( + TG_OP = 'INSERT' + AND claim.verb = 'create' + AND claim.precondition_kind = 'absent' + ) + OR ( + TG_OP = 'UPDATE' + AND claim.verb = 'update' + AND claim.precondition_kind = 'version' + AND claim.expected_version = OLD.version + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item mutation does not match its live FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_authority$ LANGUAGE plpgsql`,"DROP TRIGGER IF EXISTS trg_knowledge_items_00_guarded_authority ON knowledge_items",`CREATE TRIGGER trg_knowledge_items_00_guarded_authority + BEFORE INSERT OR UPDATE OR DELETE ON knowledge_items + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_item_authority()`,"ALTER TABLE knowledge_items ENABLE ALWAYS TRIGGER trg_knowledge_items_00_guarded_authority",`CREATE OR REPLACE FUNCTION knowledge_guarded_item_authority() + RETURNS TRIGGER AS $knowledge_guarded_item_authority$ + DECLARE + claim_key TEXT; + claim_matches BOOLEAN; + BEGIN + IF TG_OP = 'DELETE' THEN + IF OLD.authority_classification IS NULL THEN + RETURN OLD; + END IF; + RAISE EXCEPTION 'guarded knowledge items cannot be deleted outside a declared FCAME-1 action' + USING ERRCODE = 'restrict_violation'; + END IF; + + IF TG_OP = 'INSERT' AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF TG_OP = 'UPDATE' + AND OLD.authority_classification IS NULL + AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF NEW.authority_classification IS NULL OR NEW.authority_id IS NULL + OR NEW.tenant_id IS NULL OR NEW.scope IS NULL OR NEW.parent_id IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item binding must be complete' + USING ERRCODE = 'check_violation'; + END IF; + + IF TG_OP = 'UPDATE' AND ( + OLD.id IS DISTINCT FROM NEW.id + OR OLD.authority_classification IS DISTINCT FROM NEW.authority_classification + OR OLD.authority_id IS DISTINCT FROM NEW.authority_id + OR OLD.tenant_id IS DISTINCT FROM NEW.tenant_id + OR OLD.scope IS DISTINCT FROM NEW.scope + OR OLD.parent_id IS DISTINCT FROM NEW.parent_id + ) THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + + claim_key := NULLIF( + current_setting('hasna.knowledge_guarded_deterministic_key', true), + '' + ); + IF claim_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item mutation requires an FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_write_claims AS claim + WHERE claim.deterministic_key = claim_key + AND claim.receipt_id IS NULL + AND claim.target_id = NEW.id + AND claim.authority_classification = NEW.authority_classification + AND claim.authority_id = NEW.authority_id + AND claim.tenant_id = NEW.tenant_id::text + AND claim.scope = NEW.scope + AND claim.parent_id = NEW.parent_id + AND ( + ( + TG_OP = 'INSERT' + AND claim.verb = 'create' + AND claim.precondition_kind = 'absent' + ) + OR ( + TG_OP = 'UPDATE' + AND claim.verb = 'update' + AND claim.precondition_kind = 'version' + AND claim.expected_version = OLD.version + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item mutation does not match its live FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_authority$ LANGUAGE plpgsql`,`ALTER TABLE knowledge_items + ADD COLUMN IF NOT EXISTS guarded_adoption_receipt_id TEXT`,`CREATE TABLE IF NOT EXISTS knowledge_guarded_adoption_claims ( + deterministic_key TEXT PRIMARY KEY, + planned_receipt_id TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL, + target_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + expected_version INTEGER NOT NULL, + expected_content_sha256 TEXT NOT NULL, + adoption_receipt_id TEXT, + receipt_id TEXT, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + CHECK (action IN ('adopt', 'rollback')), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (expected_version >= 1), + CHECK (expected_content_sha256 ~ '^[0-9a-f]{64}$'), + CHECK ( + (action = 'adopt' AND adoption_receipt_id IS NULL) + OR (action = 'rollback' AND adoption_receipt_id IS NOT NULL) + ), + UNIQUE(authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id) + )`,`CREATE UNIQUE INDEX IF NOT EXISTS idx_knowledge_guarded_adoption_claim_receipt + ON knowledge_guarded_adoption_claims(receipt_id) WHERE receipt_id IS NOT NULL`,`CREATE TABLE IF NOT EXISTS knowledge_guarded_adoption_receipts ( + receipt_id TEXT PRIMARY KEY, + deterministic_key TEXT NOT NULL UNIQUE, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL, + target_id TEXT NOT NULL, + authority_classification TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + scope TEXT NOT NULL, + parent_id TEXT NOT NULL, + expected_version INTEGER NOT NULL, + expected_content_sha256 TEXT NOT NULL, + adoption_receipt_id TEXT, + prior_tenant_id TEXT, + status TEXT NOT NULL, + code TEXT NOT NULL, + effect_count INTEGER NOT NULL, + result_version INTEGER, + result_content_sha256 TEXT, + created_at TEXT NOT NULL DEFAULT to_char(now() AT TIME ZONE 'utc', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"'), + CHECK (action IN ('adopt', 'rollback')), + CHECK (authority_classification IN ('user_hosted', 'hasna_saas')), + CHECK (expected_version >= 1), + CHECK (expected_content_sha256 ~ '^[0-9a-f]{64}$'), + CHECK ( + (action = 'adopt' AND adoption_receipt_id IS NULL) + OR (action = 'rollback' AND adoption_receipt_id IS NOT NULL) + ), + CHECK (status IN ('accepted', 'rejected')), + CHECK (effect_count IN (0, 1)), + CHECK ( + ( + status = 'accepted' AND effect_count = 1 + AND result_version IS NOT NULL AND result_content_sha256 IS NOT NULL + ) + OR ( + status = 'rejected' AND effect_count = 0 + AND result_version IS NULL AND result_content_sha256 IS NULL + ) + ) + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_guarded_adoption_receipt_operation + ON knowledge_guarded_adoption_receipts( + authority_classification, authority_id, tenant_id, scope, parent_id, operation_id, step_id + )`,`CREATE OR REPLACE FUNCTION knowledge_guarded_adoption_claim_once() + RETURNS TRIGGER AS $knowledge_guarded_adoption_claim_once$ + BEGIN + IF TG_OP = 'DELETE' THEN + RAISE EXCEPTION 'knowledge guarded adoption claims are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + IF (OLD.deterministic_key, OLD.planned_receipt_id, + OLD.operation_id, OLD.step_id, OLD.action, + OLD.target_id, OLD.authority_classification, OLD.authority_id, + OLD.tenant_id, OLD.scope, OLD.parent_id, OLD.expected_version, + OLD.expected_content_sha256, OLD.adoption_receipt_id, OLD.created_at) + IS DISTINCT FROM + (NEW.deterministic_key, NEW.planned_receipt_id, + NEW.operation_id, NEW.step_id, NEW.action, + NEW.target_id, NEW.authority_classification, NEW.authority_id, + NEW.tenant_id, NEW.scope, NEW.parent_id, NEW.expected_version, + NEW.expected_content_sha256, NEW.adoption_receipt_id, NEW.created_at) + OR OLD.receipt_id IS NOT NULL + OR NEW.receipt_id IS NULL THEN + RAISE EXCEPTION 'knowledge guarded adoption claim may only bind one terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_adoption_claim_once$ LANGUAGE plpgsql`,`DROP TRIGGER IF EXISTS trg_knowledge_guarded_adoption_claim_once + ON knowledge_guarded_adoption_claims`,`CREATE TRIGGER trg_knowledge_guarded_adoption_claim_once + BEFORE UPDATE OR DELETE ON knowledge_guarded_adoption_claims + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_adoption_claim_once()`,`ALTER TABLE knowledge_guarded_adoption_claims + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_adoption_claim_once`,`CREATE OR REPLACE FUNCTION knowledge_guarded_adoption_receipts_immutable() + RETURNS TRIGGER AS $knowledge_guarded_adoption_receipts_immutable$ + BEGIN + RAISE EXCEPTION 'knowledge guarded adoption receipts are immutable' + USING ERRCODE = 'restrict_violation'; + END + $knowledge_guarded_adoption_receipts_immutable$ LANGUAGE plpgsql`,`DROP TRIGGER IF EXISTS trg_knowledge_guarded_adoption_receipts_immutable + ON knowledge_guarded_adoption_receipts`,`CREATE TRIGGER trg_knowledge_guarded_adoption_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_guarded_adoption_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_adoption_receipts_immutable()`,`ALTER TABLE knowledge_guarded_adoption_receipts + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_adoption_receipts_immutable`,`CREATE OR REPLACE FUNCTION knowledge_guarded_item_authority() + RETURNS TRIGGER AS $knowledge_guarded_item_authority$ + DECLARE + claim_key TEXT; + adoption_key TEXT; + claim_matches BOOLEAN; + binding_changed BOOLEAN; + BEGIN + IF TG_OP = 'DELETE' THEN + IF OLD.authority_classification IS NULL THEN + RETURN OLD; + END IF; + RAISE EXCEPTION 'guarded knowledge items cannot be deleted outside a declared FCAME-1 action' + USING ERRCODE = 'restrict_violation'; + END IF; + + IF TG_OP = 'INSERT' AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + IF TG_OP = 'UPDATE' + AND OLD.authority_classification IS NULL + AND NEW.authority_classification IS NULL THEN + RETURN NEW; + END IF; + + binding_changed := TG_OP = 'UPDATE' AND ( + OLD.id IS DISTINCT FROM NEW.id + OR OLD.authority_classification IS DISTINCT FROM NEW.authority_classification + OR OLD.authority_id IS DISTINCT FROM NEW.authority_id + OR OLD.tenant_id IS DISTINCT FROM NEW.tenant_id + OR OLD.scope IS DISTINCT FROM NEW.scope + OR OLD.parent_id IS DISTINCT FROM NEW.parent_id + ); + + IF binding_changed THEN + adoption_key := NULLIF( + current_setting('hasna.knowledge_guarded_adoption_key', true), + '' + ); + IF adoption_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_adoption_claims AS claim + WHERE claim.deterministic_key = adoption_key + AND claim.receipt_id IS NULL + AND claim.target_id = OLD.id + AND claim.expected_version = OLD.version + AND claim.expected_content_sha256 = + encode(sha256(convert_to(coalesce(OLD.content, ''), 'UTF8')), 'hex') + AND ( + OLD.short_id, OLD.title, OLD.content, OLD.url, OLD.tags, + OLD.metadata, OLD.archived, OLD.created_at, OLD.updated_at, OLD.version + ) IS NOT DISTINCT FROM ( + NEW.short_id, NEW.title, NEW.content, NEW.url, NEW.tags, + NEW.metadata, NEW.archived, NEW.created_at, NEW.updated_at, NEW.version + ) + AND ( + ( + claim.action = 'adopt' + AND OLD.authority_classification IS NULL + AND OLD.authority_id IS NULL + AND OLD.scope IS NULL + AND OLD.parent_id IS NULL + AND ( + OLD.tenant_id IS NULL + OR OLD.tenant_id::text = claim.tenant_id + ) + AND NEW.authority_classification = claim.authority_classification + AND NEW.authority_id = claim.authority_id + AND NEW.tenant_id::text = claim.tenant_id + AND NEW.scope = claim.scope + AND NEW.parent_id = claim.parent_id + AND NEW.guarded_adoption_receipt_id = claim.planned_receipt_id + ) + OR ( + claim.action = 'rollback' + AND claim.adoption_receipt_id IS NOT NULL + AND OLD.authority_classification = claim.authority_classification + AND OLD.authority_id = claim.authority_id + AND OLD.tenant_id::text = claim.tenant_id + AND OLD.scope = claim.scope + AND OLD.parent_id = claim.parent_id + AND OLD.guarded_adoption_receipt_id = claim.adoption_receipt_id + AND NEW.authority_classification IS NULL + AND NEW.authority_id IS NULL + AND NEW.scope IS NULL + AND NEW.parent_id IS NULL + AND NEW.guarded_adoption_receipt_id IS NULL + AND NEW.tenant_id::text IS NOT DISTINCT FROM ( + SELECT receipt.prior_tenant_id + FROM knowledge_guarded_adoption_receipts AS receipt + WHERE receipt.receipt_id = claim.adoption_receipt_id + AND receipt.action = 'adopt' + AND receipt.status = 'accepted' + AND receipt.effect_count = 1 + ) + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item binding transition does not match its live adoption claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END IF; + + IF NEW.authority_classification IS NULL OR NEW.authority_id IS NULL + OR NEW.tenant_id IS NULL OR NEW.scope IS NULL OR NEW.parent_id IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item binding must be complete' + USING ERRCODE = 'check_violation'; + END IF; + + claim_key := NULLIF( + current_setting('hasna.knowledge_guarded_deterministic_key', true), + '' + ); + IF claim_key IS NULL THEN + RAISE EXCEPTION 'guarded knowledge item mutation requires an FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + + SELECT EXISTS ( + SELECT 1 + FROM knowledge_guarded_write_claims AS claim + WHERE claim.deterministic_key = claim_key + AND claim.receipt_id IS NULL + AND claim.target_id = NEW.id + AND claim.authority_classification = NEW.authority_classification + AND claim.authority_id = NEW.authority_id + AND claim.tenant_id = NEW.tenant_id::text + AND claim.scope = NEW.scope + AND claim.parent_id = NEW.parent_id + AND ( + ( + TG_OP = 'INSERT' + AND claim.verb = 'create' + AND claim.precondition_kind = 'absent' + ) + OR ( + TG_OP = 'UPDATE' + AND claim.verb = 'update' + AND claim.precondition_kind = 'version' + AND claim.expected_version = OLD.version + ) + ) + ) INTO claim_matches; + IF NOT claim_matches THEN + RAISE EXCEPTION 'guarded knowledge item mutation does not match its live FCAME-1 operation claim' + USING ERRCODE = 'insufficient_privilege'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_authority$ LANGUAGE plpgsql`,`CREATE OR REPLACE FUNCTION knowledge_guarded_adoption_claim_once() + RETURNS TRIGGER AS $knowledge_guarded_adoption_claim_once$ + BEGIN + IF TG_OP = 'DELETE' THEN + RAISE EXCEPTION 'knowledge guarded adoption claims are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + IF (OLD.deterministic_key, OLD.planned_receipt_id, + OLD.operation_id, OLD.step_id, OLD.action, + OLD.target_id, OLD.authority_classification, OLD.authority_id, + OLD.tenant_id, OLD.scope, OLD.parent_id, OLD.expected_version, + OLD.expected_content_sha256, OLD.adoption_receipt_id, OLD.created_at) + IS DISTINCT FROM + (NEW.deterministic_key, NEW.planned_receipt_id, + NEW.operation_id, NEW.step_id, NEW.action, + NEW.target_id, NEW.authority_classification, NEW.authority_id, + NEW.tenant_id, NEW.scope, NEW.parent_id, NEW.expected_version, + NEW.expected_content_sha256, NEW.adoption_receipt_id, NEW.created_at) + OR OLD.receipt_id IS NOT NULL + OR NEW.receipt_id IS NULL THEN + RAISE EXCEPTION 'knowledge guarded adoption claim may only bind one terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + IF NEW.receipt_id IS DISTINCT FROM OLD.planned_receipt_id THEN + RAISE EXCEPTION 'knowledge guarded adoption claim receipt must match its planned terminal receipt' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_adoption_claim_once$ LANGUAGE plpgsql`,`CREATE OR REPLACE FUNCTION knowledge_guarded_item_id_immutable() + RETURNS TRIGGER AS $knowledge_guarded_item_id_immutable$ + BEGIN + IF OLD.id IS DISTINCT FROM NEW.id + AND NULLIF( + current_setting('hasna.knowledge_guarded_adoption_key', true), + '' + ) IS NOT NULL THEN + RAISE EXCEPTION 'guarded knowledge item identity and binding are immutable' + USING ERRCODE = 'restrict_violation'; + END IF; + RETURN NEW; + END + $knowledge_guarded_item_id_immutable$ LANGUAGE plpgsql`,`DROP TRIGGER IF EXISTS trg_knowledge_guarded_00_item_id_immutable + ON knowledge_items`,`CREATE TRIGGER trg_knowledge_guarded_00_item_id_immutable + BEFORE UPDATE OF id ON knowledge_items + FOR EACH ROW EXECUTE FUNCTION knowledge_guarded_item_id_immutable()`,`ALTER TABLE knowledge_items + ENABLE ALWAYS TRIGGER trg_knowledge_guarded_00_item_id_immutable`,`ALTER TABLE knowledge_items + DROP CONSTRAINT IF EXISTS knowledge_items_relation_metadata_contract`,`ALTER TABLE knowledge_items + ADD CONSTRAINT knowledge_items_relation_metadata_contract CHECK ( + metadata -> 'hasna_knowledge_relations' IS NULL + OR ( + jsonb_typeof(metadata -> 'hasna_knowledge_relations') = 'object' + AND metadata #>> '{hasna_knowledge_relations,schema}' = 'hasna.knowledge.relations.v1' + AND ( + metadata #>> '{hasna_knowledge_relations,supersedes_item_id}' IS NOT NULL + OR metadata #>> '{hasna_knowledge_relations,canonical_item_id}' IS NOT NULL + ) + AND ( + (metadata -> 'hasna_knowledge_relations') + - ARRAY['schema', 'supersedes_item_id', 'canonical_item_id'] + ) = '{}'::jsonb + AND ( + metadata #>> '{hasna_knowledge_relations,supersedes_item_id}' IS NULL + OR ( + btrim(metadata #>> '{hasna_knowledge_relations,supersedes_item_id}') <> '' + AND metadata #>> '{hasna_knowledge_relations,supersedes_item_id}' <> id + ) + ) + AND ( + metadata #>> '{hasna_knowledge_relations,canonical_item_id}' IS NULL + OR ( + btrim(metadata #>> '{hasna_knowledge_relations,canonical_item_id}') <> '' + AND metadata #>> '{hasna_knowledge_relations,canonical_item_id}' <> id + ) + ) + ) + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_title + ON knowledge_items ( + authority_classification, authority_id, tenant_id, scope, parent_id, + title, archived, id + )`,`CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_supersedes + ON knowledge_items ( + authority_classification, authority_id, tenant_id, scope, parent_id, + (metadata #>> '{hasna_knowledge_relations,supersedes_item_id}'), + archived, id + ) + WHERE metadata #>> '{hasna_knowledge_relations,schema}' + = 'hasna.knowledge.relations.v1'`,`CREATE INDEX IF NOT EXISTS idx_knowledge_items_guarded_canonical + ON knowledge_items ( + authority_classification, authority_id, tenant_id, scope, parent_id, + (metadata #>> '{hasna_knowledge_relations,canonical_item_id}'), + archived, id + ) + WHERE metadata #>> '{hasna_knowledge_relations,schema}' + = 'hasna.knowledge.relations.v1'`,...I9()];var l8=HY(m8(),1),{program:Al,createCommand:Ol,createArgument:Ll,createOption:Sl,CommanderError:Jl,InvalidArgumentError:Wl,InvalidOptionArgumentError:Pl,Command:i8,Argument:zl,Option:Xl,Help:Gl}=l8.default;import{chmod as KP,mkdir as Ar,readFile as Or,rename as Lr,writeFile as e8}from"fs/promises";import{Buffer as EY}from"buffer";import{existsSync as jY}from"fs";import{homedir as Sr}from"os";import{join as v1}from"path";import{createHmac as Gr,timingSafeEqual as Bl}from"crypto";import{randomUUID as Qr}from"crypto";import{spawn as Kr}from"child_process";import{randomUUID as br}from"crypto";function $r(_,$){return $.split(".").reduce((D,I)=>{if(D&&typeof D==="object"&&I in D)return D[I];return},_)}function Dr(_,$){let D=[],I=(E)=>{if(!D.some((j)=>Object.is(j,E)))D.push(E)};if($.includes(".")&&$ in _)I(_[$]);let U=$r(_,$);if(U!==void 0||!$.includes("."))I(U);return D}function Ur(_,$={}){let D="";for(let I=0;I<_.length;I+=1){let U=_[I];if(U==="*")if(_[I+1]==="*")D+=".*",I+=1;else D+=$.segmentSafe?"[^/]*":".*";else D+=U.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return new RegExp(`^${D}$`)}function q1(_,$,D={}){if($===void 0)return!0;if(_===void 0)return!1;return(Array.isArray($)?$:[$]).some((U)=>Ur(U,D).test(_))}function t8(_,$){if(!$)return!0;return Object.entries($).every(([D,I])=>{let U=Dr(_,D);return Ir(U,I,D)})}function Ir(_,$,D){if(Nr($))return!_.some((I)=>o8(I,$.not,D));return _.some((I)=>o8(I,$,D))}function o8(_,$,D){if(typeof $==="string"||Array.isArray($))return Er(_).some((I)=>q1(I,$,{segmentSafe:D.endsWith("_path")||D.endsWith(".path")}));if(Array.isArray(_))return _.some((I)=>I===$);return _===$}function Er(_){if(_===void 0)return[];if(Array.isArray(_))return _.flatMap(($)=>jr($)?[String($)]:[]);return[String(_)]}function jr(_){return _===null||typeof _==="string"||typeof _==="number"||typeof _==="boolean"}function Nr(_){return Boolean(_&&typeof _==="object"&&!Array.isArray(_)&&"not"in _)}function gr(_,$){return q1(_.source,$.source)&&q1(_.type,$.type)&&q1(_.subject,$.subject)&&q1(_.severity,$.severity)&&t8(_.data,$.data)&&t8(_.metadata,$.metadata)}function p8(_,$){if(!_.enabled)return!1;if(!_.filters||_.filters.length===0)return!0;return _.filters.some((D)=>gr($,D))}var ZN="HASNA_EVENTS_DIR",HN="HASNA_EVENTS_HOME",BP="local-json-v1:",Jr=100,Wr=1000;function NY(_){return _||process.env[ZN]||process.env[HN]||v1(Sr(),".hasna","events")}function Pr(){if(process.env[ZN])return ZN;if(process.env[HN])return HN;return null}class kN{dataDir;runtime;channelsPath;eventsPath;deliveriesPath;constructor(_=NY()){this.dataDir=_,this.runtime=zr(_),this.channelsPath=v1(_,"channels.json"),this.eventsPath=v1(_,"events.json"),this.deliveriesPath=v1(_,"deliveries.json")}async init(){await Ar(this.dataDir,{recursive:!0,mode:448}),await KP(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((I)=>I.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((I)=>I.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=s8(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 a8($,_)}async listEventsPage(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]),D=a8($,{eventId:_.eventId,source:_.source,type:_.type}),I=qN(_.cursor,_),U=CN(_.limit),E=D.slice(I,I+U),j=I+E.length,N=j<D.length;return{events:E,cursor:_.cursor,nextCursor:N?gY(j,_):void 0,hasMore:N}}async findEventByIdentity(_){let $=await this.listEvents();return s8($,_)}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(!jY(_))await e8(_,`[] +`,{encoding:"utf-8",mode:384});await KP(_,384).catch(()=>{return})}async readJson(_,$){try{let D=await Or(_,"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 e8(D,`${JSON.stringify($,null,2)} +`,{encoding:"utf-8",mode:384}),await Lr(D,_),await KP(_,384).catch(()=>{return})}}function zr(_=NY()){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 gY(_,$={}){if(!Number.isInteger(_)||_<0)throw Error(`Invalid event cursor offset: ${_}`);let D={offset:_,eventId:$.eventId,source:$.source,type:$.type};return`${BP}${EY.from(JSON.stringify(D),"utf-8").toString("base64url")}`}function qN(_,$={}){if(!_)return 0;if(!_.startsWith(BP))throw Error(`Invalid local JSON event cursor: ${_}`);let D=_.slice(BP.length),I;try{I=JSON.parse(EY.from(D,"base64url").toString("utf-8"))}catch{throw Error(`Invalid local JSON event cursor: ${_}`)}let U=I.offset;if(!Number.isInteger(U)||U<0)throw Error(`Invalid local JSON event cursor: ${_}`);return TP("eventId",I.eventId,$.eventId),TP("source",I.source,$.source),TP("type",I.type,$.type),U}function CN(_){if(_===void 0)return Jr;if(!Number.isInteger(_)||_<1)throw Error(`Event page limit must be a positive integer, got ${_}`);return Math.min(_,Wr)}function a8(_,$){let D=_;if($.eventId)D=D.filter((I)=>I.id===$.eventId);if($.source)D=D.filter((I)=>I.source===$.source);if($.type)D=D.filter((I)=>I.type===$.type);if($.cursor){let I=qN($.cursor,$);D=D.slice(I)}if($.limit!==void 0)D=D.slice(0,CN($.limit));return D}function TP(_,$,D){if($!==D)throw Error(`Local JSON event cursor ${_} filter mismatch`)}function s8(_,$){return _.find((D)=>$.id!==void 0&&D.id===$.id||$.dedupeKey!==void 0&&D.dedupeKey===$.dedupeKey)}async function Xr(_){let $=new kN(_);await $.init();let[D,I,U]=await Promise.all([$.listChannels(),$.listEvents(),$.listDeliveries()]),E=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:ZN,fallback:HN,active:Pr()},files:{channels:FP($.dataDir,"channels.json",D.length),events:FP($.dataDir,"events.json",I.length),deliveries:FP($.dataDir,"deliveries.json",U.length)},counts:{channels:D.length,enabledChannels:D.filter((j)=>j.enabled).length,disabledChannels:D.filter((j)=>!j.enabled).length,events:I.length,deliveries:U.length},transports:E,safety:{includesEventPayloads:!1,includesWebhookSecrets:!1,listOutputsRedactSecrets:!0,statusOutputIsMetadataOnly:!0}}}function FP(_,$,D){let I=v1(_,$);return{path:I,exists:jY(I),records:D}}function Rr(_,$){return`${_}.${$}`}function Yr(_,$,D){return`sha256=${Gr("sha256",_).update(Rr($,D)).digest("hex")}`}function a$(){return new Date().toISOString()}function C1(_,$=4096){return _.length>$?`${_.slice(0,$)}...`:_}function Tr(_,$){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let D=JSON.stringify(_),I=_.time,U={"Content-Type":"application/json","User-Agent":"@hasna/events","X-Hasna-Event-Id":_.id,"X-Hasna-Event-Type":_.type,"X-Hasna-Timestamp":I,...$.webhook.headers};if($.webhook.secret)U["X-Hasna-Signature"]=Yr($.webhook.secret,I,D);return{body:D,headers:U}}async function Fr(_,$,D={}){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let I=a$(),{body:U,headers:E}=Tr(_,$),j=new AbortController,N=setTimeout(()=>j.abort(),$.webhook.timeoutMs??15000);try{let A=await(D.fetchImpl??fetch)($.webhook.url,{method:"POST",headers:E,body:U,signal:j.signal}),O=C1(await A.text());return{attempt:1,status:A.ok?"success":"failed",startedAt:I,completedAt:a$(),responseStatus:A.status,responseBody:O,error:A.ok?void 0:`Webhook returned HTTP ${A.status}`}}catch(A){return{attempt:1,status:"failed",startedAt:I,completedAt:a$(),error:A instanceof Error?A.message:String(A)}}finally{clearTimeout(N)}}async function Vr(_,$){if(!$.command)throw Error(`Channel ${$.id} has no command config`);let D=a$(),I=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:I};return new Promise((E)=>{let j=Kr($.command.command,$.command.args??[],{cwd:$.command.cwd,env:U,stdio:["pipe","pipe","pipe"]}),N="",A="",O=setTimeout(()=>j.kill("SIGTERM"),$.command.timeoutMs??15000);j.stdin.end(I),j.stdout.on("data",(L)=>{N+=L.toString()}),j.stderr.on("data",(L)=>{A+=L.toString()}),j.on("error",(L)=>{clearTimeout(O),E({attempt:1,status:"failed",startedAt:D,completedAt:a$(),stdout:C1(N),stderr:C1(A),error:L.message})}),j.on("close",(L,J)=>{clearTimeout(O);let P=L===0;E({attempt:1,status:P?"success":"failed",startedAt:D,completedAt:a$(),stdout:C1(N),stderr:C1(A),error:P?void 0:`Command exited with ${J?`signal ${J}`:`code ${L}`}`})})})}async function Br(_,$,D={}){if($.transport==="webhook")return Fr(_,$,D);if($.transport==="command")return Vr(_,$);return{attempt:1,status:"skipped",startedAt:a$(),completedAt:a$(),error:`Unsupported transport: ${$.transport}`}}function _Y(_,$,D){let I=D.some((U)=>U.status==="success")?"success":D.every((U)=>U.status==="skipped")?"skipped":"failed";return{id:Qr(),eventId:_.id,channelId:$.id,transport:$.transport,status:I,attempts:D,createdAt:D[0]?.startedAt??a$(),completedAt:D.at(-1)?.completedAt??a$()}}class AY extends Error{eventType;issues;constructor(_,$){let D=$.map((I)=>`${I.path||"<root>"}: ${I.message}`).join("; ");super(`Event validation failed for type "${_}": ${D}`);this.name="EventValidationError",this.eventType=_,this.issues=$}}class OY{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 AY(_.type,$.issues)}}var Mr=new OY;function VP(_){return{id:_.id??br(),source:_.source,type:_.type,time:Cr(_.time),subject:_.subject,severity:_.severity??"info",data:_.data??{},message:_.message,dedupeKey:_.dedupeKey,schemaVersion:_.schemaVersion??"1.0",metadata:_.metadata??{}}}class LY{store;redactors;transportOptions;catalog;validateCatalogTypes;constructor(_={}){this.store=_.store??new kN(_.dataDir),this.redactors=_.redactors??[],this.transportOptions={fetchImpl:_.fetchImpl},this.catalog=_.catalog??Mr,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?VP(_):kr(VP(_));if($.validate??this.validateCatalogTypes)this.catalog.assertEventValid(D);let I=await this.appendEvent(D,{dedupe:$.dedupe!==!1});if(I.deduped)return{event:I.event,deliveries:[],deduped:!0};let U=$.deliver===!1?[]:await this.deliver(I.event);return{event:I.event,deliveries:U,deduped:!1}}async listEvents(_={}){if(Object.keys(_).length===0)return this.store.listEvents();return $Y(await this.store.listEvents(),_)}async listEventsPage(_={}){if(this.store.listEventsPage)return this.store.listEventsPage(_);let $=$Y(await this.store.listEvents(),{eventId:_.eventId,source:_.source,type:_.type}),D=qN(_.cursor,_),I=CN(_.limit),U=$.slice(D,D+I),E=D+U.length,j=E<$.length;return{events:U,cursor:_.cursor,nextCursor:j?gY(E,_):void 0,hasMore:j}}async listDeliveries(){return this.store.listDeliveries()}async deliver(_){let D=(await this.store.listChannels()).filter((U)=>p8(U,_)),I=[];for(let U of D){let E=await this.applyRedaction(_,U),j=await this.deliverWithRetry(E,U);await this.store.appendDelivery(j),I.push(j)}return I}async matchChannel(_,$={}){let D=await this.store.getChannel(_);if(!D)throw Error(`Channel not found: ${_}`);let I=VP({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=p8(D,I);return{channelId:D.id,matched:U,event:I,filters:D.filters,reason:U?void 0:D.enabled?"event did not match channel filters":"channel is disabled"}}async testChannel(_,$={},D={}){let I=await this.store.getChannel(_);if(!I)throw Error(`Channel not found: ${_}`);let U=await this.matchChannel(_,$),E=U.event;if(D.honorFilters&&!U.matched){let A=new Date().toISOString(),O=_Y(E,I,[{attempt:1,status:"skipped",startedAt:A,completedAt:A,error:U.reason}]);return O.metadata={reason:"filter_mismatch"},await this.store.appendDelivery(O),O}let j=await this.applyRedaction(E,I),N=await this.deliverWithRetry(j,I);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 I of $.events)D.push(...await this.deliver(I));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 I=await this.store.findEventByIdentity({id:_.id,dedupeKey:_.dedupeKey});if(I)return{event:I,stored:!1,deduped:!0,identity:{id:I.id,dedupeKey:I.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=Zr(_,$.redact?.paths??[],$.redact?.replacement??"[REDACTED]");for(let I of this.redactors)D=await I(D,$);return D}async deliverWithRetry(_,$){let D=vr($.retry),I=[];for(let U=0;U<D.maxAttempts;U+=1){let E=await Br(_,$,this.transportOptions);if(E.attempt=U+1,E.status==="failed"&&U+1<D.maxAttempts)E.nextBackoffMs=Math.round(D.backoffMs*D.multiplier**U);if(I.push(E),E.status!=="failed")break;if(E.nextBackoffMs)await Bun.sleep(E.nextBackoffMs)}return _Y(_,$,I)}}function Zr(_,$,D="[REDACTED]"){if($.length===0)return _;let I=structuredClone(_);for(let U of $)qr(I,U,D);return I}function SY(_){let $=structuredClone(_);if($.webhook?.secret)$.webhook.secret="[REDACTED]";if($.command?.env)$.command.env=Object.fromEntries(Object.entries($.command.env).map(([D,I])=>[D,JY(D)?"[REDACTED]":I]));return $}function Hr(_){return _.map(SY)}function kr(_,$="[REDACTED]"){return MP(_,$)}function JY(_){return/secret|token|password|api[_-]?key|authorization/i.test(_)}function MP(_,$){if(Array.isArray(_))return _.map((D)=>MP(D,$));if(!_||typeof _!=="object")return _;return Object.fromEntries(Object.entries(_).map(([D,I])=>[D,JY(D)?$:MP(I,$)]))}function qr(_,$,D){let I=$.split("."),U=_;for(let j of I.slice(0,-1)){let N=U[j];if(!N||typeof N!=="object")return;U=N}let E=I.at(-1);if(E&&E in U)U[E]=D}function $Y(_,$){let D=_;if($.eventId)D=D.filter((I)=>I.id===$.eventId);if($.source)D=D.filter((I)=>I.source===$.source);if($.type)D=D.filter((I)=>I.type===$.type);if($.cursor)D=D.slice(qN($.cursor,$));if($.limit!==void 0)D=D.slice(0,CN($.limit));return D}function Cr(_){if(!_)return new Date().toISOString();return _ instanceof Date?_.toISOString():_}function vr(_){return{maxAttempts:Math.max(1,_?.maxAttempts??1),backoffMs:Math.max(0,_?.backoffMs??250),multiplier:Math.max(1,_?.multiplier??2)}}function bN(_,$,D=!1){if(!_?.length)return;let I={};for(let U of _){let E=fr(U,$),j=E.path;if(j in I)throw Error(`Duplicate ${$} filter path: ${j}`);let N=D?rr(E.rawValue,$):E.rawValue;I[j]=E.negated?{not:N}:N}return I}function wr(_){let $={};if(_.source)$.source=_.source;if(_.type)$.type=_.type;if(_.subject)$.subject=_.subject;if(_.severity)$.severity=_.severity;let D=DY(bN(_.data,"data"),bN(_.dataJson,"data-json",!0)),I=DY(bN(_.metadata,"metadata"),bN(_.metadataJson,"metadata-json",!0));if(Object.keys(D).length>0)$.data=D;if(Object.keys(I).length>0)$.metadata=I;return Object.keys($).length>0?[$]:void 0}function DY(..._){let $={};for(let D of _){if(!D)continue;for(let[I,U]of Object.entries(D)){if(I in $)throw Error(`Duplicate filter path: ${I}`);$[I]=U}}return $}function rr(_,$){let D=JSON.parse(_);if(D===null||typeof D==="string"||typeof D==="number"||typeof D==="boolean"||Array.isArray(D)&&D.every((I)=>typeof I==="string"))return D;throw Error(`${$} filter JSON values must be string, string[], number, boolean, or null`)}function fr(_,$){let D=_.indexOf("!=");if(D>0)return{path:_.slice(0,D),rawValue:_.slice(D+2),negated:!0};let I=_.indexOf("=");if(I<=0)throw Error(`Invalid ${$} filter, expected path=value or path!=value: ${_}`);return{path:_.slice(0,I),rawValue:_.slice(I+1),negated:!1}}var xr=100;function kD(_,$){if(!_)return $;let D=JSON.parse(_);if(!D||typeof D!=="object"||Array.isArray(D))throw Error("Expected a JSON object");return D}function ur(_){if(!_?.length)return;let $={};for(let D of _){let I=D.indexOf("=");if(I===-1)throw Error(`Invalid header, expected name=value: ${D}`);$[D.slice(0,I)]=D.slice(I+1)}return $}function $4(_){if(_.createClient)return _.createClient();return new LY({store:new kN(_.dataDir)})}function I0(_,$,D){if($)console.log(JSON.stringify(_,null,2));else console.log(D)}function UY(_,$){let D=_ instanceof Error?_.message:String(_);if($)console.log(JSON.stringify({error:D},null,2));else console.error(D);process.exitCode=1}function IY(_){return Boolean(_?.json||_?.opts?.().json||_?.optsWithGlobals?.().json||_?.parent?.opts?.().json||_?.parent?.optsWithGlobals?.().json)}function F6(_,$){return IY(_)||IY($)}function yr(_,$){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",U0,[]).option("--metadata <path=value...>","Event metadata field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",U0,[]).option("--data-json <path=json...>","Event data field filter with typed JSON value; path!=json negatives supported",U0,[]).option("--metadata-json <path=json...>","Event metadata field filter with typed JSON value; path!=json negatives supported",U0,[]).option("--secret <secret>","Webhook HMAC secret").option("--header <name=value...>","Webhook header",U0,[]).option("--arg <arg...>","Command argument",U0,[]).option("--timeout-ms <ms>","Transport timeout in milliseconds",w1).option("--retry-attempts <n>","Maximum delivery attempts",w1).option("--retry-backoff-ms <ms>","Initial retry backoff in milliseconds",w1).option("--redact <path...>","Event field path to redact before delivery",U0,[]).option("--disabled","Create channel disabled",!1).option("-j, --json","Print JSON output",!1).action(async(I,U,E)=>{let j=new Date().toISOString(),N={id:U.id,name:U.name,enabled:!U.disabled,transport:U.transport,filters:wr(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:I,secret:U.secret,headers:ur(U.header),timeoutMs:U.timeoutMs};else if(U.transport==="command")N.command={command:I,args:U.arg??[],timeoutMs:U.timeoutMs};else throw Error(`Transport ${U.transport} is reserved for future use and cannot be added yet`);let A=await $4($).addChannel(N);I0(SY(A),F6(U,E),`Added ${A.transport} channel ${A.id}`)}),D.command("list").description("List configured channels").option("-j, --json","Print JSON output",!1).action(async(I,U)=>{let E=await $4($).listChannels();if(F6(I,U)){console.log(JSON.stringify(Hr(E),null,2));return}if(!E.length){console.log("No channels configured.");return}for(let j of E)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(I,U)=>{let E=await Xr($.dataDir);I0(E,F6(I,U),`events dataDir: ${E.dataDir}`)}),D.command("remove").description("Remove a channel").argument("<id>","Channel identifier").option("-j, --json","Print JSON output",!1).action(async(I,U,E)=>{let j=await $4($).removeChannel(I);I0({removed:j},F6(U,E),j?`Removed ${I}`:`Channel not found: ${I}`)}),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(I,U,E)=>{let j=F6(U,E);try{let N=await $4($).testChannel(I,{source:U.source??$.source,type:U.type,subject:U.subject??I,message:U.message,data:kD(U.data,{test:!0}),metadata:kD(U.metadata,{})},{honorFilters:U.honorFilters});I0(N,j,`${N.status}: ${N.channelId}`)}catch(N){UY(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(I,U,E)=>{let j=F6(U,E);try{let N=await $4($).matchChannel(I,{source:U.source??$.source,type:U.type,subject:U.subject??I,message:U.message,data:kD(U.data,{test:!0}),metadata:kD(U.metadata,{})});I0(N,j,`${N.matched?"matched":"skipped"}: ${N.channelId}`)}catch(N){UY(N,j)}}),D}function hr(_,$){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,E,j)=>{let N=await $4($).emit({source:E.source??$.source,type:U,subject:E.subject,severity:E.severity,message:E.message,dedupeKey:E.dedupeKey,data:kD(E.data,{}),metadata:kD(E.metadata,{})},{deliver:E.deliver,dedupe:E.dedupe});I0(N,F6(E,j),`${N.deduped?"Deduped":"Emitted"} ${N.event.id} to ${N.deliveries.length} channel(s)`)});let I=$.defaultEventListLimit??xr;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 ${I}; use 0 for all)`,w1,I).option("-j, --json","Print JSON output",!1).action(async(U,E)=>{let j=await $4($).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(F6(U,E)){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",w1).option("--dry-run","Preview without delivery",!1).option("-j, --json","Print JSON output",!1).action(async(U,E)=>{let j=await $4($).replay({eventId:U.id,source:U.source,type:U.type,cursor:U.cursor,limit:U.limit,dryRun:U.dryRun});I0(j,F6(U,E),cr(j.events.length,j.deliveries.length,j.nextCursor))}),D}function WY(_,$){yr(_,$),hr(_,$)}function w1(_){let $=Number(_);if(!Number.isFinite($))throw Error(`Expected a number, got ${_}`);return $}function U0(_,$){return $.push(_),$}function cr(_,$,D){let I=D?`, next cursor: ${D}`:"";return`Replayed ${_} event(s), ${$} delivery result(s)${I}`}import{basename as nr,dirname as dr,join as mr}from"path";var PY={debug:0,info:1,warn:2,error:3},lr=()=>{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 j0(_,$,D){if(PY[_]<PY[lr()])return;let I={debug:"[DEBUG]",info:"[INFO]",warn:"[WARN]",error:"[ERROR]"}[_],U=D?`${I} ${$} ${JSON.stringify(D)}`:`${I} ${$}`;if(_==="error")console.error(U);else console.error(U)}var YY=["events","webhooks"],QY=["add","list","get","delete","update","archive","restore","upsert","untag","versions","diff","export","prune","dedupe","stats","inventory","project-panel","project-registration","project-membership","project-resources","project-resource","paths","mode","guarded","setup","auth","storage","machines","sync","db","wiki","app-wiki","source","ingest","reindex","search","context","proposals","web","ask","build","embeddings","providers","safety","help",...YY],KY={ls:"list",rm:"delete",edit:"update",unarchive:"restore"},ir=/^k_[A-Za-z0-9][A-Za-z0-9_-]*$/;async function tr(_,$,D){if(/\s/.test($))return!0;if(_.length<=1)return!1;let I=_[1]??"";if(ir.test(I))return!1;return await D.get(I)===null}function or(_){let $=new Set,D=[];for(let I of _){let U=I.toLowerCase();if($.has(U))continue;$.add(U),D.push(I)}return D}function zY(_,$){let D=new Set((_??[]).map((I)=>I.toLowerCase()));return $.filter((I)=>!D.has(I.toLowerCase()))}function bP(_,$,D){if(D===void 0)return{..._,message:$};return{..._,added:D.length,message:`${$} (added ${D.length} tag${D.length===1?"":"s"})`}}function pr(_,$){if($===void 0)throw Error("Missing value for --tag. Example: knowledge add <title> <content> -t <tag> -t <tag>");let D=$.split(",").map((I)=>I.trim()).filter((I)=>I.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 or([..._??[],...D])}function er(_){let $=[],D={},I=!1;for(let U=0;U<_.length;U+=1){let E=_[U];if(I){$.push(E);continue}if(E==="--"){I=!0;continue}if(!E.startsWith("-")||$[0]==="add"&&$.length===2&&E.startsWith("---")){$.push(E);continue}switch(E){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"--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=pr(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;case"--operation-id":D.operationId=_[U+1],U+=1;break;case"--step-id":D.stepId=_[U+1],U+=1;break;case"--idempotency-key":D.idempotencyKey=_[U+1],U+=1;break;case"--collection-id":D.collectionId=_[U+1],U+=1;break;case"--item-id":D.itemId=_[U+1],U+=1;break;case"--receipt-id":D.receiptId=_[U+1],U+=1;break;case"--cursor":D.cursor=_[U+1],U+=1;break;case"--kind":D.kind=[...D.kind??[],_[U+1]],U+=1;break;case"--all":D.all=!0;break;case"--slug":D.slug=_[U+1],U+=1;break;case"--name":D.name=_[U+1],U+=1;break;case"--collection-slug":D.collectionSlug=_[U+1],U+=1;break;case"--collection-name":D.collectionName=_[U+1],U+=1;break;default:throw Error(`Unknown flag: ${E}. Run 'knowledge --help' for valid options.`)}}return{positional:$,flags:D}}function ar(_){if(!_)return"";return KY[_]??_}function sr(_,$){let D=Array.from({length:_.length+1},()=>Array($.length+1).fill(0));for(let I=0;I<=_.length;I+=1)D[I][0]=I;for(let I=0;I<=$.length;I+=1)D[0][I]=I;for(let I=1;I<=_.length;I+=1)for(let U=1;U<=$.length;U+=1){let E=_[I-1]===$[U-1]?0:1;D[I][U]=Math.min(D[I-1][U]+1,D[I][U-1]+1,D[I-1][U-1]+E)}return D[_.length][$.length]}function _f(_){if(!_)return"";let $=[...QY,...Object.keys(KY)],D="",I=Number.POSITIVE_INFINITY;for(let U of $){let E=sr(_,U);if(E<I)I=E,D=U}return I<=3?D:""}function $f(){return nr(process.argv[1]??"").replace(/\.(?:js|ts|mjs|cjs)$/,"")==="knowledge"}async function Df(_){if(!YY.includes(_[0]??""))return!1;let $=new i8;return $.name("knowledge").description("Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions"),WY($,{source:"knowledge"}),await $.parseAsync(_,{from:"user"}),!0}function Uf(){console.log(`knowledge - local agent knowledge store Usage: knowledge <command> [options] @@ -1379,6 +2786,10 @@ Commands: stats Show knowledge base statistics inventory Show all local knowledge layers and previews project-panel Emit Projects dashboard project-panel contract + project-registration Register/read/compensate a project collection with immutable receipts + project-membership Bind/read/compensate exact item membership + project-resources Enumerate complete project/collection/item/taxonomy resources + project-resource Read one exact project resource paths Show resolved workspace/store paths mode Report the resolved backend (local or cloud) and why guarded capabilities Report FCAME-1 private transport capability @@ -1453,6 +2864,15 @@ Global Options: --tables <names> Comma-separated knowledge.db sync tables --peer-workspace <path> Peer repo root or .hasna/knowledge path for local sync or remote override --project <id> Project id/name/slug for project-panel output + --operation-id <id> Stable Projects registration operation id + --step-id <id> Stable Projects registration step id + --idempotency-key <key> Caller-owned idempotency key + --collection-id <uuid> Exact Knowledge collection id + --item-id <id> Exact existing Knowledge item id + --receipt-id <uuid> Exact accepted receipt id for compensation + --cursor <cursor> Revision-bound project-resource cursor + --kind <kind> Resource kind filter; repeatable + --all Read project resources to complete exhaustion --contract Emit contract JSON for project-panel output --source-ref <uri> Attach a source ref to an app-wiki note --allow-global Explicitly allow app-wiki writes to global scope @@ -1492,7 +2912,7 @@ Export Options: Prune Options: --older-than <days> Remove items older than N days - --empty Remove items with empty content`)}function Mw(_){if(_==="add"){console.log(`Usage: knowledge add <title> <content> [--url <url>] [-t <tag>]... [--json] + --empty Remove items with empty content`)}function If(_){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] -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 @@ -1528,35 +2948,35 @@ Prune Options: either side may be "current" to mean the live item. --rev is spelled out because -v is the global --version flag. Reports changed fields (title/url/tags/metadata/archived) as well as a line diff of the body, - so an edit that moved only the tags is not rendered as "no changes".`);return}if(_==="delete"||_==="rm"){console.log("Usage: knowledge delete|rm --id <id> -y [--json]");return}if(_==="export"){console.log("Usage: knowledge export [--verbose] [--json] [--format json|jsonl]");return}if(_==="prune"){console.log("Usage: knowledge prune --yes [--older-than <days>] [--empty] [--json]");return}if(_==="dedupe"){console.log("Usage: knowledge dedupe --yes [--json]");return}if(_==="stats"){console.log("Usage: knowledge stats [--json]");return}if(_==="inventory"){console.log("Usage: knowledge inventory [--scope local|global|project] [--limit <n>] [--include-archived] [--verbose] [--json]");return}if(_==="project-panel"){console.log("Usage: knowledge project-panel --project <id|name|slug> [--scope project|local|global] [--limit <n>] [--include-archived] [--json|--contract]");return}if(_==="paths"){console.log("Usage: knowledge paths [--scope local|global|project] [--verbose] [--json]");return}if(_==="mode"){console.log(`Usage: knowledge mode [--json] + so an edit that moved only the tags is not rendered as "no changes".`);return}if(_==="delete"||_==="rm"){console.log("Usage: knowledge delete|rm --id <id> -y [--json]");return}if(_==="export"){console.log("Usage: knowledge export [--verbose] [--json] [--format json|jsonl]");return}if(_==="prune"){console.log("Usage: knowledge prune --yes [--older-than <days>] [--empty] [--json]");return}if(_==="dedupe"){console.log("Usage: knowledge dedupe --yes [--json]");return}if(_==="stats"){console.log("Usage: knowledge stats [--json]");return}if(_==="inventory"){console.log("Usage: knowledge inventory [--scope local|global|project] [--limit <n>] [--include-archived] [--verbose] [--json]");return}if(_==="project-panel"){console.log("Usage: knowledge project-panel --project <id|name|slug> [--scope project|local|global] [--limit <n>] [--include-archived] [--json|--contract]");return}if(_==="project-registration"){console.log("Usage: knowledge project-registration capability|create|read-exact|receipt|compensate|verify-inverse [--operation-id <id>] [--step-id <id>] [--idempotency-key <key>] [--project <id>] [--slug <slug>] [--name <name>] [--collection-id <uuid>] [--collection-slug <slug>] [--collection-name <name>] [--receipt-id <uuid>] [--json]");return}if(_==="project-membership"){console.log("Usage: knowledge project-membership bind|read-exact|compensate|verify-inverse [--operation-id <id>] [--step-id <id>] [--idempotency-key <key>] [--collection-id <uuid>] [--item-id <id>] [--receipt-id <uuid>] [--json]");return}if(_==="project-resources"){console.log("Usage: knowledge project-resources <project-id> [--kind <project|collection|item|taxonomy>]... [--limit <n>] [--cursor <cursor>] [--all] [--json]");return}if(_==="project-resource"){console.log("Usage: knowledge project-resource <project-id> <project|collection|item|taxonomy> <resource-id> [--json]");return}if(_==="paths"){console.log("Usage: knowledge paths [--scope local|global|project] [--verbose] [--json]");return}if(_==="mode"){console.log(`Usage: knowledge mode [--json] Reports which backend this process would use \u2014 sqlite (on-box store) or postgres (HTTP /v1) \u2014 and 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 - ${fU[0]} / ${xU[0]} does NOT switch backends; + Selection is EXPLICIT-ONLY: set ${$6[0]}=sqlite|postgres. Setting only + ${d1[0]} / ${m1[0]} does NOT switch backends; those are reported as present-but-ignored pointers. Env var NAMES are printed, never values.`);return}if(_==="guarded"){console.log(`Usage: knowledge guarded capabilities [--json] Reports metadata-only FCAME-1 private input, private result, and exact-title lookup support.`);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}bw()}function Zw(_){if(_.noColor||process.env.NO_COLOR)return!1;if(process.env.FORCE_COLOR)return!0;return process.stdout.isTTY===!0}function C(_,$,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} -${d_()}`:Hw(_))}function d_(_="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 Hw(_){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(d_()),g.join(` -`)}function kw(_){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 Cw(_){return[`Knowledge paths (${_.scope})`,`Home: ${_.home}`,`SQLite: ${_.knowledge_db_path}`,`JSON store: ${_.json_store_path}`,`Wiki: ${_.wiki_dir}`,d_("config and all paths")].join(` -`)}function p8(_){console.log(JSON.stringify(_))}function vw(_){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 E of I.slice(0,_.limit))g.push(`- ${j(E)}`)};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 ww(_){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(d_("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 uw(_){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((A)=>A.id===D.citation_id||A.result_id===D.result_id),j=I?.source_uri??I?.artifact_path??D.result_id,E=typeof D.score==="number"?` score=${D.score.toFixed(3)}`:"";if(U.push(`- ${D.kind??"excerpt"} ${g_(D.id,44)}${E}`),j)U.push(` source: ${g_(j,120)}`);U.push(` text: ${g_(D.text,220)}`)}return U.push(`Citations: ${g.length}`),U.push(d_("citations, graph, notes, and full excerpts")),U.join(` -`)}function fw(_){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(d_("provenance and full vector result objects")),g.join(` -`)}function xw(_){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(d_("provider payloads and filed source refs")),g.join(` -`)}function yw(_){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(d_("full topology, route hints, and adapter evidence")),g.join(` -`)}function cw(_){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(d_("all checks and repair hints")),D.join(` -`)}function hw(_){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"}`,d_("registry rows, clocks, snapshots, imports, and conflicts")].join(` -`)}function nw(_){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(d_("diagnostics, route evidence, and all recommended commands")),U.join(` -`)}function dw(_){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"}`,d_("snapshot payload and topology evidence")].join(` -`)}function mw(_){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(d_("full conflict objects")),g.join(` -`)}function iw(_){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(d_("machine registry rows")),g.join(` -`)}function e8(_,$){let g=[`Sync ${$} ${_.ok===!1?"needs attention":"completed"}${_.dry_run?" (dry run)":""}`],U=(D,I)=>{if(!I)return;let E=(Array.isArray(I.tables)?I.tables:[]).reduce((P,W)=>P+(W.inserted??0)+(W.updated??0)+(W.deleted??0),0),A=I.artifacts?.copied??0,O=Array.isArray(I.errors)?I.errors.length:0;g.push(`${D}: ${E} table row change(s), ${A} artifact(s), ${O} 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(d_("per-table rows, artifacts, clocks, and errors")),g.join(` -`)}function lw(_){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(d_("full answer payload, context, citations, and run ledger")),U.join(` -`)}function tw(_,$){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 a8(_){return!_||_==="local"||_==="localhost"}function $4(_){if(!_.id)throw Error("Missing required --id. Example: knowledge get --id <id>")}function ow(_,$){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 pw(_){if(await rw(_))return;let{positional:$,flags:g}=Kw(_);if(g4("debug","CLI invoked",{command:$[0],flags:{json:g.json,store:g.store}}),g.version){console.log(g.json?JSON.stringify({name:H$.name,version:H$.version},null,2):`${H$.name} ${H$.version}`);return}if(g.completions){let S=g.completions;if(S==="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 guarded 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(S==="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 guarded 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(S==="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 guarded 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=qw($[0]),D=1,I=Fw()&&U&&!_Y.includes(U);if(!U||g.help||U==="help"){let S=U==="help"?$[1]:U||$[1];Mw(S);return}if(U==="mode"){let S=Sz(process.env);C(g.json||g.verbose?{ok:!0,...S}:kw(S),g.json,g);return}if(U==="guarded"){if(($[1]??"capabilities")!=="capabilities")throw Error("Usage: knowledge guarded capabilities [--json]");C({ok:!0,contract:"FCAME-1",private_input:!0,private_result:!0,exact_title_lookup:!0,private_transport_body_output:!1},g.json,g);return}Pz(process.env,{storePathOverridden:Boolean(g.store)});let j=U==="project-panel"||U==="app-wiki"?g.scope??"project":g.scope,E=IE({scope:j});if(U==="storage"){let S=$[1]??"status";if(S==="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 L=fE({dryRun:g.dryRun});if(C(L,g.json),!L.ok)process.exitCode=1;return}if(S==="migrate-legacy-path"||S==="migrate-legacy"||S==="migrate-path"){let L=E.migrateLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(C(L,g.json),!L.ok&&!g.json)process.exitCode=1;return}if(S==="merge-legacy-path"||S==="merge-legacy"||S==="merge-path"){let L=E.mergeLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(C(L,g.json),!L.ok&&!g.json)process.exitCode=1;return}}let A=Boolean(g.store),O=g.store;if(!O)if(j==="project"||j==="local")O=E.workspace.jsonStorePath;else O=HU();let P=hU({storePath:O,storePathOverridden:A});if(I&&await Yw($,U,P))U="ask",D=0;if(!A&&(U==="ask"||U==="build")&&!Q6())Z0(O);if(U==="inventory"){let S=await E.resolveInventory({limit:g.limit,includeArchived:g.includeArchived||g.archived,storePath:Q6()?void 0:O});C(g.json||g.verbose?S:vw(S),g.json,g);return}if(U==="project-panel"){let S=g.project??$[1];if(!S)throw Error("Usage: knowledge project-panel --project <id|name|slug> [--json|--contract]");let L=await $8(S,{service:E,limit:g.limit,storePath:Q6()?void 0:O,includeArchived:g.includeArchived||g.archived});C(g.json||g.contract?L:g8(L),g.json||g.contract);return}if(U==="paths"){let S=E.paths();C(g.json||g.verbose?S:Cw(S),g.json,g);return}if(U==="setup"){let S=E.setup({mode:g.mode,apiUrl:g.apiUrl,canonicalExample:g.canonicalExample});C(S,g.json,g);return}if(U==="auth"){let S=$[1]??"whoami";if(S==="whoami"||S==="status"){let L=E.authStatus(process.env);C({ok:!0,...L,message:L.authenticated?`Authenticated via ${L.source}`:"Not authenticated"},g.json,g);return}if(S==="login"){let L=g.apiKey??process.env.KNOWLEDGE_API_KEY??process.env.HASNA_KNOWLEDGE_API_KEY;if(!L)throw Error("Usage: knowledge auth login --api-key <key> [--email <email>]");let J=E.saveAuth({apiKey:L,email:g.email,orgSlug:g.org,orgId:g.orgId,userId:g.userId,apiUrl:g.apiUrl},process.env);C({ok:!0,authenticated:!0,email:J.email??null,org_slug:J.org_slug??null,api_url:J.api_url??E.authStatus(process.env).api_url,auth_path:E.authStatus(process.env).auth_path,message:`Saved hosted credentials for ${J.email??"API key"}`},g.json,g);return}if(S==="logout"){let L=E.clearAuth(process.env);C({ok:!0,removed:L,message:L?"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 S=$[1]??"status";if(S==="status"){let L=E.storageContract(),J=E.validateStorage();C({ok:J.ok,...L,validation:J,message:`${L.storage_type} artifact storage at ${L.artifact_store.uri_prefix}`},g.json,g);return}if(S==="validate"){let L=E.validateStorage();if(C({ok:L.ok,validation:L,message:L.ok?"Storage contract valid":`Storage contract invalid: ${L.errors.join("; ")}`},g.json,g),!L.ok)process.exitCode=1;return}if(S==="repair-artifact-keys"||S==="repair-keys"){let L=E.repairArtifactManifestKeys({approveWrite:g.approveWrite,approvedBy:g.approvedBy,dryRun:g.dryRun});C(L,g.json,g);return}if(S==="migrate-legacy-path"||S==="migrate-legacy"||S==="migrate-path"){let L=E.migrateLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(C(L,g.json),!L.ok&&!g.json)process.exitCode=1;return}if(S==="merge-legacy-path"||S==="merge-legacy"||S==="merge-path"){let L=E.mergeLegacyPath({approveWrite:g.approveWrite,approvedBy:g.approvedBy});if(C(L,g.json),!L.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 S=$[1]??"topology";if(S==="topology"||S==="status"){let L=await E.machineTopology({includeTailscale:g.tailscale!==!1});C(g.json||g.verbose?L:yw(L),g.json,g);return}if(S==="preflight"||S==="check"){let L=$[2]??g.machine??"local",J=g.workspace??process.cwd(),R=await E.machinePreflight({machineId:L,commands:[{command:"bun",required:!0},{command:"knowledge",required:!0}],packages:[{name:H$.name,command:"knowledge",expectedVersion:H$.version,required:!0},{name:"@hasna/machines",command:"machines",required:!1}],workspaces:[{label:"open-knowledge",path:J,expectedPackageName:H$.name,expectedVersion:H$.version,required:!0}]});if(C(g.json||g.verbose?R:cw(R),g.json,g),!R.ok&&!g.json)process.exitCode=1;return}throw Error("Invalid machines action. Use 'topology' or 'preflight'.")}if(U==="sync"){let S=$[1]??"status",L=g.tables?g.tables.split(",").map((J)=>J.trim()).filter(Boolean):void 0;if(S==="status"){let J=E.syncStatus();C(g.json||g.verbose?J:hw(J),g.json,g);return}if(S==="doctor"||S==="readiness"||S==="preflight"){let J=await E.syncDoctor({machine:g.machine??null,peerWorkspace:g.peerWorkspace??null,includeTailscale:g.tailscale!==!1,tables:L}),R={package:{name:H$.name,version:H$.version},...J};if(C(g.json||g.verbose?R:nw(R),g.json,g),!J.ok&&!g.json)process.exitCode=1;return}if(S==="snapshot"||S==="record"){let J=await E.createSyncSnapshot({includeTailscale:g.tailscale!==!1,machineId:g.machine});C(g.json||g.verbose?J:dw(J),g.json,g);return}if(S==="conflicts"||S==="conflict"){let J=$[2];if(J==="show"||J==="get"){let G=$[3]??g.id;if(!G)throw Error("Usage: knowledge sync conflicts show <id>");let B=E.syncConflict(G);C({ok:!0,conflict:B,message:`Sync conflict ${G}`},g.json,g);return}if(J==="propose"||J==="proposal"){let G=$[3]??g.id;if(!G)throw Error("Usage: knowledge sync conflicts propose <id>");C(g.mode==="ai"?await E.proposeSyncConflictResolutionWithAi({id:G,modelRef:g.model,fake:g.fake}):E.proposeSyncConflictResolution(G),g.json,g);return}if(J==="resolve"){let G=$[3]??g.id;if(!G)throw Error("Usage: knowledge sync conflicts resolve <id> --approve-write --approved-by <name> [--strategy <name>]");let B=E.resolveSyncConflict({id:G,strategy:g.strategy,approvedBy:g.approvedBy,approveWrite:g.approveWrite,proposedPatchUri:g.patchUri});if(C(B,g.json,g),!B.ok&&!g.json)process.exitCode=1;return}let R=E.syncConflicts({status:J,limit:g.limit}),X={ok:!0,conflicts:R,message:`${R.length} sync conflict(s)`};C(g.json||g.verbose?X:mw(X),g.json,g);return}if(S==="machines"||S==="registry"){let J=E.syncMachines(),R={ok:!0,machines:J,message:`${J.length} registered sync machine(s)`};C(g.json||g.verbose?R:iw(R),g.json,g);return}if(S==="export"){let J=E.exportSyncBundle({machineId:g.machine??null,tables:L,includeArtifactContent:g.artifactContent!==!1});C(J,!0);return}if(S==="import"){let J=await Bun.stdin.text();if(!J.trim())throw Error("Usage: knowledge sync import < bundle.json");let R=await E.importSyncBundle({bundle:JSON.parse(J),dryRun:g.dryRun,direction:"import",machineId:g.machine??null});C(g.json||g.verbose?R:e8(R,S),g.json,g);return}if(S==="dry-run"||S==="pull"||S==="push"||S==="sync"){if(!g.peerWorkspace&&a8(g.machine))throw Error(`Usage: knowledge sync ${S} --peer-workspace <repo-or-knowledge-home> [--scope project] -Remote machine sync can omit --peer-workspace when machines path mapping is configured.`);let J=S==="dry-run"?"both":S==="sync"?"both":S,R=!a8(g.machine)?await E.syncRemotePeer({direction:J,machine:g.machine,peerWorkspace:g.peerWorkspace,tables:L,dryRun:g.dryRun===!0||S==="dry-run",includeArtifactContent:g.artifactContent!==!1,includeTailscale:g.tailscale!==!1}):await E.syncPeer({peerWorkspace:g.peerWorkspace,direction:J,dryRun:g.dryRun===!0||S==="dry-run",tables:L,includeArtifactContent:g.artifactContent!==!1,machineId:g.machine??null});if(C(g.json||g.verbose?R:e8(R,S),g.json,g),!R.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 S=$[1]??"init";if(S==="init"){let L=E.initDb();C({ok:!0,...L,message:`Initialized ${L.path}`},g.json,g);return}if(S==="stats"){let L=E.dbStats();C({ok:!0,path:E.workspace.knowledgeDbPath,...L,message:`knowledge.db schema v${L.schema_version}`},g.json,g);return}if(S==="storage"){if(($[2]??"status")==="status"){let J=_J({scope:g.scope});C({ok:!0,...J,message:`knowledge.db storage mode ${J.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 S=$[1]??"init";if(S==="paths"||S==="status"){C({ok:!0,standard:"hasna-app-wiki.v1",default_scope:"project",global_writes_require:"--allow-global",...E.paths()},g.json);return}if(S==="init"||S==="open"){let L=await E.initAppWiki({allowGlobal:g.allowGlobal});C(L,g.json);return}if(S==="note"||S==="notes"){let L=$[2]??"list";if(L==="add"||L==="create"){let J=g.title??$[3],R=g.content??$.slice(4).join(" ");if(!J||!R)throw Error("Usage: knowledge app-wiki note add --title <title> --content <text> [--source-ref <uri>]");let X=await E.addAppWikiNote({title:J,content:R,tags:g.tag,sourceRefs:g.sourceRef,allowGlobal:g.allowGlobal});C(X,g.json);return}if(L==="list"||L==="ls"){let J=E.listAppWikiNotes({limit:g.limit});C({ok:!0,scope:E.scope,home:E.workspace.home,notes:J,message:`${J.length} app wiki note(s)`},g.json);return}if(L==="get"||L==="show"){let J=$[3]??g.id;if(!J)throw Error("Usage: knowledge app-wiki note get <id-or-path>");let R=await E.getAppWikiNote(J,{includeContent:!0});if(!R)throw Error(`App wiki note not found: ${J}`);C(R,g.json);return}throw Error("Invalid app-wiki note action. Use 'add', 'list', or 'get'.")}if(S==="source"||S==="sources"){let L=$[2]??"add";if(L!=="add"&&L!=="ingest")throw Error("Invalid app-wiki source action. Use 'add'.");let J=$[3]??g.sourceRef?.[0];if(!J)throw Error("Usage: knowledge app-wiki source add <source-ref>");let R=await E.addAppWikiSourceRef({sourceRef:J,purpose:g.purpose,allowGlobal:g.allowGlobal});C({ok:!0,...R,message:`Added app wiki source ${R.source_ref}`},g.json);return}if(S==="search"){let L=$.slice(2).join(" ");if(!L)throw Error("Usage: knowledge app-wiki search <query>");let J=await E.searchAppWiki({query:L,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...J,message:`${J.results.length} app wiki result(s)`},g.json);return}if(S==="query"||S==="context"){let L=$.slice(2).join(" ");if(!L)throw Error("Usage: knowledge app-wiki query <query>");let J=await E.queryAppWiki({query:L,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...J,message:`${J.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 S=$[1]??"init";if(S==="init"){let L=await E.initWiki();C({ok:!0,...L,message:`Initialized wiki layout in ${E.workspace.home}`},g.json,g);return}if(S==="compile"){let L=$.slice(2),J=L.filter((G)=>/^(open-files|file|s3|https?):\/\//.test(G)),R=L.filter((G)=>!/^(open-files|file|s3|https?):\/\//.test(G)).join(" "),X=await E.compileWiki({title:g.title,query:R||g.search,sourceRefs:J.length>0?J:void 0,limit:g.limit});C({ok:!0,...X,message:`Compiled wiki page ${X.path}`},g.json,g);return}if(S==="file-answer"||S==="answer"){let L=$.slice(2).join(" ");if(!L)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 J=await E.fileAnswer({prompt:L,answer:g.content,approveWrite:g.approveWrite,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...J},g.json,g);return}if(S==="lint"){let L=E.lintWiki();C({ok:L.ok,...L,message:L.ok?"Wiki lint passed":`Wiki lint found ${L.issue_count} issue(s)`},g.json,g);return}throw Error("Invalid wiki action. Use 'init', 'compile', 'file-answer', or 'lint'.")}if(U==="safety"){let S=$[1]??"status",L=E.ensureWorkspace(),J=E.safetyPolicy();E.initDb();let R=v(L.knowledgeDbPath);try{if(S==="status"){C({ok:!0,mode:J.mode,workspace:L.home,allow_write_roots:J.allowWriteRoots,read_only_source_access:J.readOnlySourceAccess,network:J.network,redaction:J.redaction,approvals:J.approvals,message:`Safety policy: ${J.mode}`},g.json,g);return}if(S==="check"){let X=$[2]??"generated_write",G=$[3]??null,B;try{if(X==="web_search")L4(J),B={action:X,target_uri:G,approval_required:!1,approved:!0,decision:"allow"};else if(X==="s3_read"){if(!G)throw Error("safety check s3_read requires an s3:// target.");q6(G,J),B={action:X,target_uri:G,approval_required:!1,approved:!0,decision:"allow"}}else B=lz(R,J,X,G);z_(R,{event_type:"safety_check",action:X,target_uri:G,decision:B.decision==="allow"?"allow":"requires_approval",metadata:B}),C({ok:!0,...B,message:`Safety check ${B.decision}`},g.json,g);return}catch(Q){throw z_(R,{event_type:"safety_check",action:X,target_uri:G,decision:"deny",metadata:{error:Q instanceof Error?Q.message:String(Q)}}),Q}}if(S==="approve"){let X=$[2]??"generated_write",G=$[3]??null,B=iU(R,{action:X,target_uri:G,reason:"local-cli approval",metadata:{scope:g.scope??"global"}});z_(R,{event_type:"approval",action:X,target_uri:G,decision:"allow",metadata:{approval_id:B.id}}),C({ok:!0,...B,action:X,target_uri:G,message:`Approved ${X}`},g.json,g);return}if(S==="audit"){let X=R.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}));C({ok:!0,events:X,message:`${X.length} audit event(s)`},g.json,g);return}if(S==="redact"){let X=$.slice(2).join(" ");if(!X)throw Error("Usage: knowledge safety redact <text>");let G=w_(X,J);if(G.findings.length>0)W4(R,{source_uri:"safety://redact",findings:G.findings,metadata:{command:"safety redact"}});z_(R,{event_type:"redaction",action:"safety_redact",target_uri:"safety://redact",decision:G.findings.length>0?"redacted":"allow",metadata:{findings:G.findings.length}}),C({ok:!0,text:G.text,findings:G.findings,message:`Redacted ${G.findings.length} finding(s)`},g.json,g);return}throw Error("Invalid safety action. Use 'status', 'check', 'approve', 'audit', or 'redact'.")}finally{R.close()}}if(U==="source"){if(($[1]??"")!=="resolve")throw Error("Invalid source action. Use 'resolve'.");let L=$[2];if(!L)throw Error("Usage: knowledge source resolve <source-ref>");let J=await E.resolveSource(L,{purpose:g.purpose,limit:g.limit});C({ok:!0,...J,message:J.resolved?`Resolved ${J.source_ref} (${J.content.chunks_returned}/${J.content.chunks_total} chunks)`:`Source not indexed: ${L}`},g.json,g);return}if(U==="ingest"){let S=$[1]??"";if(S==="rules"||S==="global-rules"||S==="agent-rules"){let L=await E.importRulesProvenance({root:g.workspace??process.cwd(),owner:g.owner,dryRun:g.dryRun===!0,maxItems:g.maxItems,limit:g.limit});C({ok:!0,...L},g.json);return}if(S==="manifest"){let L=$[2];if(!L)throw Error("Usage: knowledge ingest manifest <file|s3://bucket/key>");let J=await E.ingestManifest(L);C({ok:!0,...J,message:`Ingested ${J.items_seen} manifest item(s)`},g.json,g);return}if(S==="source"){let L=$[2];if(!L)throw Error("Usage: knowledge ingest source <source-ref>");let J=await E.ingestSource(L,g.purpose);C({ok:!0,...J,message:`Ingested source ${J.source_ref} (${J.chunks_inserted} chunks)`},g.json,g);return}throw Error("Invalid ingest action. Use 'manifest' or 'source'.")}if(U==="reindex"){let S=$[1]??"status";if(S==="status"){let L=E.reindexHealth({modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...L,message:`${L.missing_embeddings} chunk(s) missing embeddings`},g.json,g);return}if(S==="enqueue"){let L=E.enqueueReindex({modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...L,message:`Queued ${L.enqueued} embedding refresh item(s)`},g.json,g);return}if(S==="embeddings"){let L=await E.refreshEmbeddings({full:g.full,limit:g.limit,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...L,message:`Embedded ${L.indexed.chunks_embedded} chunk(s)`},g.json,g);return}if(S==="outbox"){let L=$[2];if(!L)throw Error("Usage: knowledge reindex outbox <file|s3://bucket/key>");let J=await E.consumeOutbox(L);C({ok:!0,...J,message:`Consumed ${J.events_seen} outbox event(s)`},g.json,g);return}throw Error("Invalid reindex action. Use 'status', 'enqueue', 'embeddings', or 'outbox'.")}if(U==="embeddings"){let S=$[1]??"status";if(S==="status"){let L=E.embeddingStatus();C({ok:!0,...L,message:`${L.total_vector_entries} vector index entries`},g.json,g);return}if(S==="index"){let L=await E.indexEmbeddings({limit:g.limit,modelRef:g.model,dimensions:g.dimensions,fake:g.fake});C({ok:!0,...L,message:`Embedded ${L.chunks_embedded} chunk(s)`},g.json,g);return}if(S==="search"){let L=$.slice(2).join(" ");if(!L)throw Error("Usage: knowledge embeddings search <query>");let J=await E.semanticSearch({query:L,limit:g.limit,modelRef:g.model,dimensions:g.dimensions,fake:g.fake}),R={ok:!0,...J,message:`${J.results.length} semantic result(s)`};C(g.json||g.verbose?R:fw(R),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 L=g.from??"search";if(!["search","loops","runs"].includes(L))throw Error("Invalid --from value. Use 'search', 'loops', or 'runs'.");let J=$.slice(2).join(" ")||g.topic||"",R=await E.contextPack({source:L,purpose:L==="loops"||L==="runs"?"proposal":"agent_context",query:J,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:O});p8({ok:!0,...R,message:R.message});return}if(U==="proposals"){if(($[1]??"context")!=="context")throw Error("Invalid proposals action. Use 'context'.");let L=g.from??"loops";if(!["loops","runs"].includes(L))throw Error("Invalid --from value for proposals. Use 'loops' or 'runs'.");let J=g.topic??$.slice(2).join(" ");if(!J.trim())throw Error("Usage: knowledge proposals context --from loops --topic <text>");let R=await E.contextPack({source:L,purpose:"proposal",query:J,topic:J,since:g.since,dedupe:g.dedupe??!0,maxTokens:g.maxTokens,maxItems:g.maxItems,limit:g.limit});p8({ok:!0,...R,message:R.message});return}if(U==="search"){let S=$.slice(1).join(" ");if(!S)throw Error("Usage: knowledge search <query>");if(g.context){let R=await E.retrieveContext({query:S,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,legacyStorePath:O}),X={ok:!0,...R,message:`${R.excerpts.length} context excerpt(s)`};C(g.json||g.verbose?X:uw(X),g.json,g);return}let L=await E.search({query:S,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,legacyStorePath:O}),J={ok:!0,...L,message:`${L.results.length} search result(s)`};C(g.json||g.verbose?J:ww(J),g.json,g);return}if(U==="web"){if(($[1]??"search")!=="search")throw Error("Invalid web action. Use 'search'.");let L=$.slice(2).join(" ");if(!L)throw Error("Usage: knowledge web search <query>");let J=await E.webSearch({query:L,limit:g.limit,modelRef:g.model,provider:g.provider,domains:g.domain,fake:g.fake,fileResults:g.fileResults}),R={ok:!0,...J,message:`${J.sources.length} web source(s)`};C(g.json||g.verbose?R:xw(R),g.json,g);return}if(U==="ask"||U==="build"){let S=$.slice(D).join(" ");if(!S)throw Error("Usage: knowledge ask <prompt>");let L=await E.runPrompt({prompt:S,limit:g.limit,semantic:g.semantic,modelRef:g.model,dimensions:g.dimensions,fake:g.fake,generate:g.generate,approveWrite:g.approveWrite,legacyStorePath:O}),J={ok:!0,...L,message:L.generated?"Generated answer with citations":"Prepared citation context draft"};C(g.json||g.verbose?J:lw(J),g.json,g);return}if(U==="providers"){let S=$[1]??"status";if(S==="status"){let L=E.providerStatus(),J=L.providers.filter((R)=>R.configured).length;C({ok:!0,...L,message:`${J}/${L.providers.length} provider credential(s) configured`},g.json,g);return}if(S==="models"){let L=E.modelRegistry();C({ok:!0,models:L,message:`${L.length} model alias(es)`},g.json,g);return}if(S==="check"){let L=$[2]??"default",J=G$(L,E.config()),R=C_(J),X=Ig(R.provider,E.config());C({ok:!0,target:L,model_ref:J,provider:R.provider,model:R.model,credential:X,message:`${R.provider} credentials configured`},g.json,g);return}throw Error("Invalid providers action. Use 'status', 'models', or 'check'.")}if(U==="add"){let S=$[1],L=$[2];if(!S||!L)throw Error("Usage: knowledge add <title> <content>");let J=await P.create({title:S,content:L,url:g.url??null,tags:g.tag??[]});g4("info","Item added",{id:J.id,title:J.title,tags:J.tags?.length??0,transport:P.kind}),C({ok:!0,item:J,message:`Added ${J.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'.");if(g.page!==void 0&&(!Number.isFinite(g.page)||!Number.isInteger(g.page)||g.page<1))throw Error("--page must be a positive integer.");if(g.limit!==void 0&&(!Number.isFinite(g.limit)||!Number.isInteger(g.limit)||g.limit<1||g.limit>200))throw Error("--limit must be an integer between 1 and 200.");let S=g.page??1,L=g.limit??20,J=g.search?String(g.search).toLowerCase():"",R=g.tagRaw??g.tag??[],X=g.tag?.length?g.tag.map((p)=>p.toLowerCase()).join(","):"none",G=g.format==="table"||!g.json&&!g.format&&Zw(g),B=g.json||g.format==="json",Q=g.archived?"archived":g.includeArchived?"all":"active",{sort:T,direction:K}=ow([],g),V=(S-1)*L;if(V>1e4)throw Error("The requested page exceeds the maximum bounded offset of 10000.");let F=await P.list({search:J,tags:R,archive:Q,sort:T,direction:K,limit:L,offset:V}),o=F.items,I_=Math.max(1,Math.ceil(F.total/L)),j_={ok:!0,page:S,limit:L,total:F.total,total_pages:I_,sort:T,direction:K,items:o,store_exists:F.exists};if(B){C(j_,!0);return}if(g.verbose){C(j_,!1,g);return}if(o.length===0){C(`No items found (search=${J||"none"}, tag=${X})`,!1);return}if(G){let p=(H_)=>H_,$$=`${p("ID")} ${p("TITLE")} ${p("CREATED")} ${p("URL")} ${p("TAGS")}`;console.log($$);for(let H_ of o)console.log(`${H_.id} ${p(g_(H_.title,80))} ${H_.created_at} ${H_.url?p(g_(H_.url,90)):""} ${H_.tags?.length?p(g_(`[${H_.tags.join(", ")}]`,80)):""}`);console.log(`Page ${S}/${I_} | showing ${o.length} of ${F.total} | sort=${T} ${K} | search=${J||"none"} | tag=${X}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}else{for(let p of o)console.log(`${p.id} ${g_(p.title,80)} ${p.created_at}${p.url?` ${g_(p.url,90)}`:""}${p.tags?.length?` ${g_(`[${p.tags.join(", ")}]`,80)}`:""}`);console.log(`Page ${S}/${I_} | showing ${o.length} of ${F.total} | sort=${T} ${K} | search=${J||"none"} | tag=${X}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}return}if(U==="get"){$4(g);let S=await P.get(g.id);if(!S)throw Error(`Item not found: ${g.id}`);C({ok:!0,item:S,store_exists:P.exists,message:`${S.id}: ${S.title}`},g.json,g);return}if(U==="versions"){$4(g);let S=Number.isFinite(g.page)&&g.page>0?g.page:1,L=Number.isFinite(g.limit)&&g.limit>0?g.limit:void 0,J=await P.listVersions(g.id,{limit:L,offset:(S-1)*(L??50)});if(!J)throw Error(`Item not found: ${g.id}`);let R={ok:!0,id:J.item_id,current_version:J.current_version,total:J.total,page:S,store:P.location,versions:J.items,message:J.total===0?`${J.item_id} is at version ${J.current_version} with no retained prior versions`:`${J.item_id} is at version ${J.current_version}; ${J.total} prior version(s) retained`};if(g.json||g.verbose){C(R,g.json,g);return}console.log(R.message);for(let X of J.items){let G=X.actor?` by ${X.actor}`:"",B=X.reason?` (${X.reason})`:"";console.log(`v${X.version} ${X.valid_to}${G}${B} ${X.content_bytes} bytes ${X.content_hash.slice(0,12)}`)}if(J.items.length>0)console.log("Hint: `knowledge diff --id <id> --rev <n>` shows what changed.");return}if(U==="diff"){$4(g);let S=await P.get(g.id);if(!S)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 L=()=>({title:S.title,content:S.content,url:S.url,tags:S.tags??[],metadata:S.metadata??{},archived:S.archived??!1}),J=`v${S.version??"?"} (current)`,R=async(K)=>{if(K==="current")return{label:J,snapshot:L()};let V=Number(K);if(!Number.isInteger(V)||V<1)throw Error(`Not a version number: ${K}`);if(S.version!==void 0&&V===S.version)return{label:J,snapshot:L()};let F=await P.getVersion(S.id,V);if(!F)throw Error(`No version ${V} retained for ${S.id} (it is at version ${S.version??"?"}). Run \`knowledge versions --id <id>\` to see what is retained.`);return{label:`v${F.version}`,snapshot:{title:F.title,content:F.content,url:F.url,tags:F.tags,metadata:F.metadata,archived:F.archived}}},X,G;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.");X=String(g.rev-1),G=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.");X=g.from,G=g.to}else{let K=await P.listVersions(S.id,{limit:1});if(!K)throw Error(`Item not found: ${g.id}`);if(K.items.length===0)throw Error(`${S.id} is at version ${K.current_version} with no retained prior versions to diff against.`);X=String(K.items[0].version),G="current"}let B=await R(X),Q=await R(G),T=Gz(B.snapshot,Q.snapshot);if(g.json||g.verbose){C({ok:!0,id:S.id,from:B.label,to:Q.label,...T},g.json,g);return}console.log(Xz(T,`${S.id} ${B.label}`,`${S.id} ${Q.label}`));return}if(U==="update"){$4(g);let S=await P.get(g.id);if(!S)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 L={};if(g.title!==void 0)L.title=g.title;if(g.content!==void 0)L.content=g.content;if(g.url!==void 0)L.url=g.url;let J;if(g.tag!==void 0){if(J=o8(S.tags,g.tag),J.length>0)L.tags=[...S.tags??[],...J]}let R=g.ifVersion!==void 0?g.ifVersion:S.version,X=await P.update(S.id,L,{expectedVersion:R});C(JJ({ok:!0,item:X},`Updated ${X?.id??S.id}`,J),g.json,g);return}if(U==="archive"||U==="restore"){$4(g);let S=await P.get(g.id);if(!S)throw Error(`Item not found: ${g.id}`);let L=await P.update(S.id,{archived:U==="archive"},{expectedVersion:S.version});C({ok:!0,item:L,message:`${U==="archive"?"Archived":"Restored"} ${L?.id??S.id}`},g.json,g);return}if(U==="untag"){if($4(g),!g.tag?.length)throw Error("Missing required --tag. Example: knowledge untag --id <id> -t <tag>");let S=await P.get(g.id);if(!S)throw Error(`Item not found: ${g.id}`);let L=S.tags??[],J=new Set(L.map((V)=>V.toLowerCase())),R=new Set;for(let V of g.tagRaw??g.tag){let F=V.trim().toLowerCase();if(F.length>0&&J.has(F)){R.add(F);continue}for(let o of V.split(",").map((I_)=>I_.trim().toLowerCase()).filter((I_)=>I_.length>0))R.add(o)}let X=L.filter((V)=>!R.has(V.toLowerCase())),G=L.length-X.length,B=[...R].filter((V)=>!J.has(V));if(G===0)throw Error(`No matching tag on ${S.id}: ${B.map((V)=>JSON.stringify(V)).join(", ")} not in [${L.map((V)=>JSON.stringify(V)).join(", ")}]`);let Q=await P.update(S.id,{tags:X},{expectedVersion:S.version}),T=B.length>0?` (not found: ${B.map((V)=>JSON.stringify(V)).join(", ")})`:"",K={ok:!0,item:Q,removed:G,message:`Removed ${G} tag${G===1?"":"s"} from ${Q?.id??S.id}${T}`};if(B.length>0)K.not_found=B;C(K,g.json,g);return}if(U==="upsert"){let S=g.title??$[1],L=g.content??$[2],J=g.id?await P.get(g.id):null;if(!J){if(!S||!L)throw Error("New item requires title and content. Example: knowledge upsert <title> <content> [--id <id>]");let B=await P.create({id:g.id,title:S,content:L,url:g.url??null,tags:g.tag??[]});C(JJ({ok:!0,created:!0,item:B},`Upserted ${B.id}`,g.tag),g.json,g);return}let R={};if(S!==void 0)R.title=S;if(L!==void 0)R.content=L;if(g.url!==void 0)R.url=g.url;let X;if(g.tag!==void 0){if(X=o8(J.tags,g.tag),X.length>0)R.tags=[...J.tags??[],...X]}let G=await P.update(J.id,R,{expectedVersion:J.version});C(JJ({ok:!0,created:!1,item:G},`Upserted ${G?.id??J.id}`,X),g.json,g);return}if(U==="delete"){if($4(g),!g.yes)throw Error("Refusing delete without --yes. Re-run with: knowledge delete --id <id> --yes");if(!await P.delete(g.id))throw Error(`Item not found: ${g.id}`);g4("info","Item deleted",{id:g.id,transport:P.kind}),C({ok:!0,deleted_id:g.id,message:`Deleted ${g.id}`},g.json,g);return}if(U==="export"){let S=g.format??"json";if(S!=="json"&&S!=="jsonl")throw Error("Invalid --format. Use 'json' or 'jsonl'.");let L=await P.listAll();if(S==="jsonl")for(let J of L.items)console.log(JSON.stringify(J));else if(g.json||g.format==="json"||g.verbose)C({ok:!0,items:L.items,store_exists:L.exists},g.json||g.format==="json",g);else C(tw(L.items,S),!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:S}=await P.listAll(),L=g.olderThan!==void 0?new Date(Date.now()-g.olderThan*86400000):null,J=S.filter((G)=>L!==null&&new Date(G.created_at)<L||g.empty&&G.content.trim().length===0),R=await P.deleteMany(J.map((G)=>G.id)),X=S.length-R;g4("info","Prune completed",{pruned:R,remaining:X,transport:P.kind}),C({ok:!0,pruned:R,remaining:X,message:`Pruned ${R} 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:S}=await P.listAll(),L=new Set,J=[];for(let G of S){let B=`${G.title}\x00${G.content}`;if(L.has(B))J.push(G);else L.add(B)}let R=await P.deleteMany(J.map((G)=>G.id)),X=S.length-R;g4("info","Dedupe completed",{removed:R,remaining:X,transport:P.kind}),C({ok:!0,removed:R,remaining:X,message:`Dedupe removed ${R} duplicate(s)`},g.json,g);return}if(U==="stats"){let S=await P.listAll(),L=S.items.filter((V)=>!V.archived),J=L.length,R=S.items.length-J,X=L.filter((V)=>V.url).length,G=L.filter((V)=>V.tags&&V.tags.length>0).length,B=J>0?L.map((V)=>V.created_at).sort()[0]:null,Q=J>0?L.map((V)=>V.created_at).sort()[J-1]:null,T={};for(let V of L)for(let F of V.tags||[])T[F]=(T[F]||0)+1;let K=Object.entries(T).sort((V,F)=>F[1]-V[1]).slice(0,5).map(([V,F])=>({tag:V,count:F}));C({ok:!0,total:J,archived:R,with_url:X,with_tags:G,oldest:B,newest:Q,top_tags:K,store_exists:S.exists,message:`${J} items | ${X} with URL | ${G} with tags`},g.json,g);return}let W=Vw($[0]),z=W?` Did you mean '${W}'?`:"";throw g4("warn","Unknown command",{input:$[0],suggestion:W}),Error(`Unknown command: ${$[0]}.${z} Run 'knowledge --help' for available commands.`)}function ew(_,$){let g=_ instanceof Error?_.message:String(_);g4("debug","CLI error",{message:g,stack:_ instanceof Error?_.stack:void 0}),console.error(`Error: ${g}`);let U=_ instanceof P4?_:null;if($.includes("--json"))C({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);pw(_).catch(($)=>ew($,_))}export{Vw as suggestCommand,ow as sortItems,pw as run,Kw as parseArgs,ew 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}Uf()}function Ef(_){if(_.noColor||process.env.NO_COLOR)return!1;if(process.env.FORCE_COLOR)return!0;return process.stdout.isTTY===!0}function q(_,$,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 I=_.message;console.log(I?`${I} +${t_()}`:jf(_))}function t_(_="full details"){return`Hint: use --verbose for ${_}, or --json for machine-readable output.`}function U_(_,$=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 jf(_){if(!_||typeof _!=="object")return String(_);let $=_,D=[$.ok===!1?"Result: not ok":"Result: ok"];for(let[I,U]of Object.entries($).slice(0,8)){if(I==="ok"||I==="message")continue;if(Array.isArray(U))D.push(`${I}: ${U.length} item(s)`);else if(U&&typeof U==="object")D.push(`${I}: ${Object.keys(U).length} field(s)`);else D.push(`${I}: ${U_(U,100)}`)}return D.push(t_()),D.join(` +`)}function Nf(_){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 ${$6[0]}=postgres to use the API)`,I=[`Knowledge mode: ${$}`,` ${D}`];if(_.pointer_env_present.length>0){let U=_.pointer_ignored?"present but IGNORED for mode selection":"present";I.push(` Pointer env ${U}: ${_.pointer_env_present.join(", ")}`)}if(_.network_guard_active)I.push(" Outbound guard: ACTIVE (NODE_ENV=test) \u2014 non-loopback requests are refused.");if(_.warning)I.push(` Note: ${_.warning}`);return I.join(` +`)}function gf(_){return[`Knowledge paths (${_.scope})`,`Home: ${_.home}`,`SQLite: ${_.knowledge_db_path}`,`JSON store: ${_.json_store_path}`,`Wiki: ${_.wiki_dir}`,t_("config and all paths")].join(` +`)}function XY(_){console.log(JSON.stringify(_))}function Af(_){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)`],I=(U,E,j)=>{if(E.length===0)return;D.push("",`${U}:`);for(let N of E.slice(0,_.limit))D.push(`- ${j(N)}`)};return I("Items",_.items,(U)=>`${U.id}: ${U.title}`),I("Sources",_.sources,(U)=>`${U.kind??"source"} ${U.uri} (${U.chunks??0} chunk(s))`),I("Chunks",_.chunks,(U)=>`${U.kind??"chunk"} ${U.id}: ${U.text_preview??""}`),I("Wiki pages",_.wiki_pages,(U)=>`${U.path}: ${U.title}`),I("Indexes",_.indexes,(U)=>`${U.kind??"index"} ${U.name}${U.shard_key?` (${U.shard_key})`:""}`),I("Artifacts",_.storage_objects,(U)=>`${U.kind??"artifact"} ${U.artifact_uri}`),I("Runs",_.runs,(U)=>`${U.type??"run"} ${U.id}: ${U.status??"unknown"}`),I("Machines",_.machines,(U)=>`${U.machine_id}${U.workspace_home?` ${U.workspace_home}`:""}`),I("Sync conflicts",_.sync_conflicts,(U)=>`${U.id}: ${U.entity_kind}/${U.entity_id} ${U.status}`),D.join(` +`)}function Of(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} search result(s) for "${U_(_.query,80)}"${_.mode?.semantic?" (semantic enabled)":""}`];for(let I of $.slice(0,_.limit??10)){let U=I.source?.uri??I.provenance?.source_uri??I.artifact?.path??I.artifact?.uri??I.id,E=typeof I.score==="number"?` score=${I.score.toFixed(3)}`:"";if(D.push(`- ${I.kind??"result"} ${U_(I.title??I.id,80)}${E}`),U)D.push(` source: ${U_(U,120)}`);if(I.text)D.push(` text: ${U_(I.text,180)}`)}if($.length===0)D.push("- No matches. Try a broader query or run `knowledge inventory --scope project`.");if(D.push(t_("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 Lf(_){let $=Array.isArray(_.excerpts)?_.excerpts:[],D=Array.isArray(_.citations)?_.citations:[],I=[`${$.length} context excerpt(s) for "${U_(_.query??_.normalized_query,80)}"`];for(let U of $.slice(0,10)){let E=D.find((A)=>A.id===U.citation_id||A.result_id===U.result_id),j=E?.source_uri??E?.artifact_path??U.result_id,N=typeof U.score==="number"?` score=${U.score.toFixed(3)}`:"";if(I.push(`- ${U.kind??"excerpt"} ${U_(U.id,44)}${N}`),j)I.push(` source: ${U_(j,120)}`);I.push(` text: ${U_(U.text,220)}`)}return I.push(`Citations: ${D.length}`),I.push(t_("citations, graph, notes, and full excerpts")),I.join(` +`)}function Sf(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} semantic result(s) for "${U_(_.query,80)}"`,`Index: ${_.provider??"unknown"}:${_.model??"unknown"} (${_.dimensions??"?"} dimensions)`];for(let I of $.slice(0,_.limit??10)){let U=typeof I.score==="number"?` score=${I.score.toFixed(3)}`:"";if(D.push(`- ${U_(I.chunk_id,44)}${U}`),I.source_uri)D.push(` source: ${U_(I.source_uri,120)}`);if(I.text)D.push(` text: ${U_(I.text,180)}`)}return D.push(t_("provenance and full vector result objects")),D.join(` +`)}function Jf(_){let $=Array.isArray(_.sources)?_.sources:[],D=[`${$.length} web source(s) for "${U_(_.query,80)}"`,`Provider: ${_.provider??"unknown"}${_.model?` (${_.model})`:""}`];for(let I of $.slice(0,_.limit??10)){D.push(`- ${U_(I.title??I.url??I.uri??"source",100)}`);let U=I.url??I.uri??I.source_ref;if(U)D.push(` url: ${U_(U,140)}`);if(I.snippet)D.push(` snippet: ${U_(I.snippet,180)}`)}return D.push(t_("provider payloads and filed source refs")),D.join(` +`)}function Wf(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} machine(s) discovered via ${_.source??"unknown"}`,`Adapter: ${_.adapter?.package??"@hasna/machines"} ${_.adapter?.available?"available":"unavailable"}`];for(let I of $.slice(0,10)){let U=I.local?" local":"",E=I.tailscale_dns??I.ssh_target??I.hostname??"";D.push(`- ${U_(I.machine_id??I.id??"unknown",48)}${U}${E?` -> ${U_(E,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(t_("full topology, route hints, and adapter evidence")),D.join(` +`)}function Pf(_){let $=Array.isArray(_.checks)?_.checks:[],D=$.filter((E)=>E.status==="fail"||E.severity==="fail"),I=$.filter((E)=>E.status==="warn"||E.severity==="warn"),U=[`Machine preflight ${_.ok?"passed":"needs attention"} for ${_.machine_id??_.requested_machine_id??"local"}`,`Checks: ${$.length} total, ${D.length} failed, ${I.length} warning(s)`];for(let E of[...D,...I].slice(0,8))U.push(`- ${E.status??E.severity??"check"} ${U_(E.id??E.kind??"check",72)}: ${U_(E.message??E.detail??"",140)}`);return U.push(t_("all checks and repair hints")),U.join(` +`)}function zf(_){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,I])=>`${D}=${I}`).join(", ")||"none"}`,t_("registry rows, clocks, snapshots, imports, and conflicts")].join(` +`)}function Xf(_){let $=Array.isArray(_.warnings)?_.warnings:[],D=Array.isArray(_.recommended_commands)?_.recommended_commands:[],I=[_.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)I.push(`Warnings: ${$.slice(0,5).join("; ")}`);for(let U of D.slice(0,5))I.push(`- next: ${U_(U.shell_command??U.command?.join(" ")??U.id,160)}`);return I.push(t_("diagnostics, route evidence, and all recommended commands")),I.join(` +`)}function Gf(_){let $=_.snapshot??{};return[`Sync snapshot ${_.ok?"recorded":"failed"}`,`Snapshot: ${U_($.id??$.snapshot_id??"unknown",80)} ${$.content_hash?`(${U_($.content_hash,80)})`:""}`,`Machines upserted: ${_.machines_upserted??0}; machine: ${_.machine_id??$.machine_id??"unknown"}`,t_("snapshot payload and topology evidence")].join(` +`)}function Rf(_){let $=Array.isArray(_.conflicts)?_.conflicts:[],D=[`${$.length} sync conflict(s)`];for(let I of $.slice(0,10))D.push(`- ${U_(I.id,48)} ${I.status??"unknown"} ${I.entity_kind??""}/${U_(I.entity_id,80)}`);return D.push("Next: use `knowledge sync conflicts show <id> --json` for one conflict."),D.push(t_("full conflict objects")),D.join(` +`)}function Yf(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} registered sync machine(s)`];for(let I of $.slice(0,10))D.push(`- ${U_(I.machine_id,48)} ${U_(I.hostname??I.workspace_home??"",100)}`);return D.push(t_("machine registry rows")),D.join(` +`)}function GY(_,$){let D=[`Sync ${$} ${_.ok===!1?"needs attention":"completed"}${_.dry_run?" (dry run)":""}`],I=(U,E)=>{if(!E)return;let N=(Array.isArray(E.tables)?E.tables:[]).reduce((L,J)=>L+(J.inserted??0)+(J.updated??0)+(J.deleted??0),0),A=E.artifacts?.copied??0,O=Array.isArray(E.errors)?E.errors.length:0;D.push(`${U}: ${N} table row change(s), ${A} artifact(s), ${O} error(s)`)};if(I("pull",_.pull),I("push",_.push),Array.isArray(_.errors)&&_.errors.length>0)D.push(`Errors: ${_.errors.slice(0,3).map((U)=>U_(U,120)).join("; ")}`);return D.push(t_("per-table rows, artifacts, clocks, and errors")),D.join(` +`)}function Qf(_){let $=Array.isArray(_.citations)?_.citations:[],D=Array.isArray(_.context?.excerpts)?_.context.excerpts:Array.isArray(_.excerpts)?_.excerpts:[],I=[_.generated?"Generated answer with citations":"Prepared citation context draft",`Citations: ${$.length}; excerpts: ${D.length}`];if(_.answer)I.push(`Answer: ${U_(_.answer,500)}`);for(let U of $.slice(0,5))I.push(`- ${U_(U.source_uri??U.ref??U.id,120)}`);return I.push(t_("full answer payload, context, citations, and run ledger")),I.join(` +`)}function Kf(_,$){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 RY(_){return!_||_==="local"||_==="localhost"}function E0(_){if(!_.id)throw Error("Missing required --id. Example: knowledge get --id <id>")}function Tf(_,$){let D=$.sort??"created";if(D!=="created"&&D!=="title")throw Error("Invalid --sort value. Use 'created' or 'title'.");let I=[..._].sort((U,E)=>{if(D==="title")return U.title.localeCompare(E.title);return U.created_at.localeCompare(E.created_at)});if($.desc)I.reverse();return{sorted:I,sort:D,direction:$.desc?"desc":"asc"}}async function Ff(_){if(await Df(_))return;let{positional:$,flags:D}=er(_);if(j0("debug","CLI invoked",{command:$[0],flags:{json:D.json,store:D.store}}),D.version){console.log(D.json?JSON.stringify({name:E$.name,version:E$.version},null,2):`${E$.name} ${E$.version}`);return}if(D.completions){let S=D.completions;if(S==="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 project-registration project-membership project-resources project-resource paths mode guarded 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 --operation-id --step-id --idempotency-key --slug --name --collection-id --collection-slug --collection-name --item-id --receipt-id --cursor --kind --all --contract --source-ref --allow-global" -- "$cur")); }; complete -F _knowledge knowledge');else if(S==="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 project-registration project-membership project-resources project-resource paths mode guarded 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" "(--all)--all" "(--contract)--contract" "(--allow-global)--allow-global" "(-p --page)"{-p,--page}"[page number]:number:" "(-l --limit)"{-l,--limit}"[items per page]:number:" "(--search)--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]:" "(--operation-id)--operation-id[registration operation id]:" "(--step-id)--step-id[registration step id]:" "(--idempotency-key)--idempotency-key[caller idempotency key]:" "(--slug)--slug[project slug]:" "(--name)--name[project name]:" "(--collection-id)--collection-id[exact collection id]:" "(--collection-slug)--collection-slug[collection slug]:" "(--collection-name)--collection-name[collection name]:" "(--item-id)--item-id[exact item id]:" "(--receipt-id)--receipt-id[exact receipt id]:" "(--cursor)--cursor[resource cursor]:" "(--kind)--kind[resource kind]:(project collection item taxonomy):" "(--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(S==="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 project-registration project-membership project-resources project-resource paths mode guarded 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 operation-id; complete -c knowledge -l step-id; complete -c knowledge -l idempotency-key; complete -c knowledge -l slug; complete -c knowledge -l name; complete -c knowledge -l collection-id; complete -c knowledge -l collection-slug; complete -c knowledge -l collection-name; complete -c knowledge -l item-id; complete -c knowledge -l receipt-id; complete -c knowledge -l cursor; complete -c knowledge -l kind -a "project collection item taxonomy"; complete -c knowledge -l all; 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 I=ar($[0]),U=1,E=$f()&&I&&!QY.includes(I);if(!I||D.help||I==="help"){let S=I==="help"?$[1]:I||$[1];If(S);return}if(I==="mode"){let S=Vz(process.env);q(D.json||D.verbose?{ok:!0,...S}:Nf(S),D.json,D);return}if(I==="guarded"){if(($[1]??"capabilities")!=="capabilities")throw Error("Usage: knowledge guarded capabilities [--json]");q({ok:!0,contract:"FCAME-1",private_input:!0,private_result:!0,exact_title_lookup:!0,private_transport_body_output:!1},D.json,D);return}Fz(process.env,{storePathOverridden:Boolean(D.store)});let j=I==="project-panel"||I==="app-wiki"?D.scope??"project":D.scope,N=zN({scope:j});if(I==="storage"){let S=$[1]??"status";if(S==="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 W=oN({dryRun:D.dryRun});if(q(W,D.json),!W.ok)process.exitCode=1;return}if(S==="migrate-legacy-path"||S==="migrate-legacy"||S==="migrate-path"){let W=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}if(S==="merge-legacy-path"||S==="merge-legacy"||S==="merge-path"){let W=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}}let A=Boolean(D.store),O=D.store;if(!O)if(j==="project"||j==="local")O=N.workspace.jsonStorePath;else O=u1();let L=t1({storePath:O,storePathOverridden:A});if(E&&await tr($,I,L))I="ask",U=0;if(!A&&(I==="ask"||I==="build")&&!h$())xD(O);let J=()=>{if(!A||h$())return N.projectLinksAuthority();return ON({databasePath:mr(dr(O),"knowledge.db"),itemStore:L,options:{packageVersion:E$.version,authorityId:process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID??"knowledge",tenantId:process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID??"local",corpusId:process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID??"knowledge"}})};if(I==="project-registration"){let S=$[1]??"capability",W=J();if(S==="capability"){q({ok:!0,capability:await W.capability()},D.json,D);return}if(S==="create"){let X=await W.capability(),G=D.project,R=D.slug,K=D.name;if(!D.operationId||!D.stepId||!D.idempotencyKey||!G||!R||!K)throw Error("Usage: knowledge project-registration create --operation-id <id> --step-id <id> --idempotency-key <key> --project <id> --slug <slug> --name <name> [--collection-slug <slug>] [--collection-name <name>] [--json]");let Y={collection_slug:D.collectionSlug??`${R}-knowledge`,collection_name:D.collectionName??`${K} Knowledge`},T=v_({action:"register_collection",source_project_id:G,project_slug:R,project_name:K,collection_slug:Y.collection_slug,collection_name:Y.collection_name,membership_rule:"explicit_collection_binding"}),F=await W.registerCollection({operation_id:D.operationId,step_id:D.stepId,resource_kind:"collection",direction:"forward",authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,target_selector:G,idempotency_key:D.idempotencyKey,request_digest:T,precondition_digest:v_({source_project_id:G,expected:"absent_or_exact_match"}),project_id:G,project_slug:R,project_name:K,desired:Y});q({ok:F.outcome==="accepted",receipt:F},D.json,D);return}if(S==="read-exact"){if(!D.collectionId)throw Error("Usage: knowledge project-registration read-exact --collection-id <uuid> [--json]");q({ok:!0,record:await W.readCollection(D.collectionId)},D.json,D);return}if(S==="receipt"){let X=$[2],G=$[3];if(!D.operationId||!D.stepId||!D.idempotencyKey||!X||!G)throw Error("Usage: knowledge project-registration receipt <register_collection|bind_item> <forward|inverse> --operation-id <id> --step-id <id> --idempotency-key <key> [--json]");let R=await W.capability(),K=await W.lookupReceipt({authority_id:R.authority_id,tenant_id:R.tenant_id,corpus_id:R.corpus_id,operation_id:D.operationId,step_id:D.stepId,action:X,direction:G,idempotency_key:D.idempotencyKey,max_items:1});q({ok:!0,receipt:K},D.json,D);return}if(S==="compensate"||S==="verify-inverse"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.receiptId)throw Error(`Usage: knowledge project-registration ${S} --operation-id <id> --step-id <id> --idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]`);let X=await W.capability(),G={operation_id:D.operationId,step_id:D.stepId,authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,accepted_receipt_id:D.receiptId},R=S==="compensate"?{receipt:await W.compensateRegistration(G)}:{verification:await W.verifyRegistrationInverse(G)};q({ok:!0,...R},D.json,D);return}throw Error("Invalid project-registration action. Use capability, create, read-exact, receipt, compensate, or verify-inverse.")}if(I==="project-membership"){let S=$[1]??"read-exact",W=J();if(S==="bind"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.collectionId||!D.itemId)throw Error("Usage: knowledge project-membership bind --operation-id <id> --step-id <id> --idempotency-key <key> --collection-id <uuid> --item-id <id> [--json]");let X=await W.capability(),G=await W.bindItem({operation_id:D.operationId,step_id:D.stepId,direction:"forward",authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,request_digest:v_({action:"bind_item",collection_id:D.collectionId,item_id:D.itemId}),precondition_digest:v_({collection_id:D.collectionId,item_id:D.itemId,expected:"unbound_or_exact_membership"}),collection_id:D.collectionId,item_id:D.itemId});q({ok:G.outcome==="accepted",receipt:G},D.json,D);return}if(S==="read-exact"){if(!D.collectionId||!D.itemId)throw Error("Usage: knowledge project-membership read-exact --collection-id <uuid> --item-id <id> [--json]");q({ok:!0,record:await W.readItemBinding(D.collectionId,D.itemId)},D.json,D);return}if(S==="compensate"||S==="verify-inverse"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.receiptId)throw Error(`Usage: knowledge project-membership ${S} --operation-id <id> --step-id <id> --idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]`);let X=await W.capability(),G={operation_id:D.operationId,step_id:D.stepId,authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,accepted_receipt_id:D.receiptId},R=S==="compensate"?{receipt:await W.compensateItemBinding(G)}:{verification:await W.verifyItemBindingInverse(G)};q({ok:!0,...R},D.json,D);return}throw Error("Invalid project-membership action. Use bind, read-exact, compensate, or verify-inverse.")}if(I==="project-resources"){let S=D.project??$[1];if(!S)throw Error("Usage: knowledge project-resources <project-id> [--kind <kind>]... [--limit <n>] [--cursor <cursor>] [--all] [--json]");let W=J(),X=D.kind,G=D.all?{resources:await W.readAllProjectResources(S,{limit:D.limit,kinds:X})}:await W.listProjectResources(S,{limit:D.limit,cursor:D.cursor,kinds:X});q({ok:!0,...G},D.json,D);return}if(I==="project-resource"){let S=D.project??$[1],W=$[2],X=$[3];if(!S||!W||!X)throw Error("Usage: knowledge project-resource <project-id> <project|collection|item|taxonomy> <resource-id> [--json]");q({ok:!0,resource:await J().readProjectResource(S,W,X)},D.json,D);return}if(I==="inventory"){let S=await N.resolveInventory({limit:D.limit,includeArchived:D.includeArchived||D.archived,storePath:h$()?void 0:O});q(D.json||D.verbose?S:Af(S),D.json,D);return}if(I==="project-panel"){let S=D.project??$[1];if(!S)throw Error("Usage: knowledge project-panel --project <id|name|slug> [--json|--contract]");let W=await K8(S,{service:N,limit:D.limit,storePath:h$()?void 0:O,includeArchived:D.includeArchived||D.archived});q(D.json||D.contract?W:T8(W),D.json||D.contract);return}if(I==="paths"){let S=N.paths();q(D.json||D.verbose?S:gf(S),D.json,D);return}if(I==="setup"){let S=N.setup({mode:D.mode,apiUrl:D.apiUrl,canonicalExample:D.canonicalExample});q(S,D.json,D);return}if(I==="auth"){let S=$[1]??"whoami";if(S==="whoami"||S==="status"){let W=N.authStatus(process.env);q({ok:!0,...W,message:W.authenticated?`Authenticated via ${W.source}`:"Not authenticated"},D.json,D);return}if(S==="login"){let W=D.apiKey??process.env.KNOWLEDGE_API_KEY??process.env.HASNA_KNOWLEDGE_API_KEY;if(!W)throw Error("Usage: knowledge auth login --api-key <key> [--email <email>]");let X=N.saveAuth({apiKey:W,email:D.email,orgSlug:D.org,orgId:D.orgId,userId:D.userId,apiUrl:D.apiUrl},process.env);q({ok:!0,authenticated:!0,email:X.email??null,org_slug:X.org_slug??null,api_url:X.api_url??N.authStatus(process.env).api_url,auth_path:N.authStatus(process.env).auth_path,message:`Saved hosted credentials for ${X.email??"API key"}`},D.json,D);return}if(S==="logout"){let W=N.clearAuth(process.env);q({ok:!0,removed:W,message:W?"Removed hosted credentials":"No hosted credentials found"},D.json,D);return}throw Error("Invalid auth action. Use 'login', 'whoami', or 'logout'.")}if(I==="storage"){let S=$[1]??"status";if(S==="status"){let W=N.storageContract(),X=N.validateStorage();q({ok:X.ok,...W,validation:X,message:`${W.storage_type} artifact storage at ${W.artifact_store.uri_prefix}`},D.json,D);return}if(S==="validate"){let W=N.validateStorage();if(q({ok:W.ok,validation:W,message:W.ok?"Storage contract valid":`Storage contract invalid: ${W.errors.join("; ")}`},D.json,D),!W.ok)process.exitCode=1;return}if(S==="repair-artifact-keys"||S==="repair-keys"){let W=N.repairArtifactManifestKeys({approveWrite:D.approveWrite,approvedBy:D.approvedBy,dryRun:D.dryRun});q(W,D.json,D);return}if(S==="migrate-legacy-path"||S==="migrate-legacy"||S==="migrate-path"){let W=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}if(S==="merge-legacy-path"||S==="merge-legacy"||S==="merge-path"){let W=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.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(I==="machines"){let S=$[1]??"topology";if(S==="topology"||S==="status"){let W=await N.machineTopology({includeTailscale:D.tailscale!==!1});q(D.json||D.verbose?W:Wf(W),D.json,D);return}if(S==="preflight"||S==="check"){let W=$[2]??D.machine??"local",X=D.workspace??process.cwd(),G=await N.machinePreflight({machineId:W,commands:[{command:"bun",required:!0},{command:"knowledge",required:!0}],packages:[{name:E$.name,command:"knowledge",expectedVersion:E$.version,required:!0},{name:"@hasna/machines",command:"machines",required:!1}],workspaces:[{label:"open-knowledge",path:X,expectedPackageName:E$.name,expectedVersion:E$.version,required:!0}]});if(q(D.json||D.verbose?G:Pf(G),D.json,D),!G.ok&&!D.json)process.exitCode=1;return}throw Error("Invalid machines action. Use 'topology' or 'preflight'.")}if(I==="sync"){let S=$[1]??"status",W=D.tables?D.tables.split(",").map((X)=>X.trim()).filter(Boolean):void 0;if(S==="status"){let X=N.syncStatus();q(D.json||D.verbose?X:zf(X),D.json,D);return}if(S==="doctor"||S==="readiness"||S==="preflight"){let X=await N.syncDoctor({machine:D.machine??null,peerWorkspace:D.peerWorkspace??null,includeTailscale:D.tailscale!==!1,tables:W}),G={package:{name:E$.name,version:E$.version},...X};if(q(D.json||D.verbose?G:Xf(G),D.json,D),!X.ok&&!D.json)process.exitCode=1;return}if(S==="snapshot"||S==="record"){let X=await N.createSyncSnapshot({includeTailscale:D.tailscale!==!1,machineId:D.machine});q(D.json||D.verbose?X:Gf(X),D.json,D);return}if(S==="conflicts"||S==="conflict"){let X=$[2];if(X==="show"||X==="get"){let K=$[3]??D.id;if(!K)throw Error("Usage: knowledge sync conflicts show <id>");let Y=N.syncConflict(K);q({ok:!0,conflict:Y,message:`Sync conflict ${K}`},D.json,D);return}if(X==="propose"||X==="proposal"){let K=$[3]??D.id;if(!K)throw Error("Usage: knowledge sync conflicts propose <id>");q(D.mode==="ai"?await N.proposeSyncConflictResolutionWithAi({id:K,modelRef:D.model,fake:D.fake}):N.proposeSyncConflictResolution(K),D.json,D);return}if(X==="resolve"){let K=$[3]??D.id;if(!K)throw Error("Usage: knowledge sync conflicts resolve <id> --approve-write --approved-by <name> [--strategy <name>]");let Y=N.resolveSyncConflict({id:K,strategy:D.strategy,approvedBy:D.approvedBy,approveWrite:D.approveWrite,proposedPatchUri:D.patchUri});if(q(Y,D.json,D),!Y.ok&&!D.json)process.exitCode=1;return}let G=N.syncConflicts({status:X,limit:D.limit}),R={ok:!0,conflicts:G,message:`${G.length} sync conflict(s)`};q(D.json||D.verbose?R:Rf(R),D.json,D);return}if(S==="machines"||S==="registry"){let X=N.syncMachines(),G={ok:!0,machines:X,message:`${X.length} registered sync machine(s)`};q(D.json||D.verbose?G:Yf(G),D.json,D);return}if(S==="export"){let X=N.exportSyncBundle({machineId:D.machine??null,tables:W,includeArtifactContent:D.artifactContent!==!1});q(X,!0);return}if(S==="import"){let X=await Bun.stdin.text();if(!X.trim())throw Error("Usage: knowledge sync import < bundle.json");let G=await N.importSyncBundle({bundle:JSON.parse(X),dryRun:D.dryRun,direction:"import",machineId:D.machine??null});q(D.json||D.verbose?G:GY(G,S),D.json,D);return}if(S==="dry-run"||S==="pull"||S==="push"||S==="sync"){if(!D.peerWorkspace&&RY(D.machine))throw Error(`Usage: knowledge sync ${S} --peer-workspace <repo-or-knowledge-home> [--scope project] +Remote machine sync can omit --peer-workspace when machines path mapping is configured.`);let X=S==="dry-run"?"both":S==="sync"?"both":S,G=!RY(D.machine)?await N.syncRemotePeer({direction:X,machine:D.machine,peerWorkspace:D.peerWorkspace,tables:W,dryRun:D.dryRun===!0||S==="dry-run",includeArtifactContent:D.artifactContent!==!1,includeTailscale:D.tailscale!==!1}):await N.syncPeer({peerWorkspace:D.peerWorkspace,direction:X,dryRun:D.dryRun===!0||S==="dry-run",tables:W,includeArtifactContent:D.artifactContent!==!1,machineId:D.machine??null});if(q(D.json||D.verbose?G:GY(G,S),D.json,D),!G.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(I==="db"){let S=$[1]??"init";if(S==="init"){let W=N.initDb();q({ok:!0,...W,message:`Initialized ${W.path}`},D.json,D);return}if(S==="stats"){let W=N.dbStats();q({ok:!0,path:N.workspace.knowledgeDbPath,...W,message:`knowledge.db schema v${W.schema_version}`},D.json,D);return}if(S==="storage"){if(($[2]??"status")==="status"){let X=JP({scope:D.scope});q({ok:!0,...X,message:`knowledge.db storage mode ${X.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(I==="app-wiki"){let S=$[1]??"init";if(S==="paths"||S==="status"){q({ok:!0,standard:"hasna-app-wiki.v1",default_scope:"project",global_writes_require:"--allow-global",...N.paths()},D.json);return}if(S==="init"||S==="open"){let W=await N.initAppWiki({allowGlobal:D.allowGlobal});q(W,D.json);return}if(S==="note"||S==="notes"){let W=$[2]??"list";if(W==="add"||W==="create"){let X=D.title??$[3],G=D.content??$.slice(4).join(" ");if(!X||!G)throw Error("Usage: knowledge app-wiki note add --title <title> --content <text> [--source-ref <uri>]");let R=await N.addAppWikiNote({title:X,content:G,tags:D.tag,sourceRefs:D.sourceRef,allowGlobal:D.allowGlobal});q(R,D.json);return}if(W==="list"||W==="ls"){let X=N.listAppWikiNotes({limit:D.limit});q({ok:!0,scope:N.scope,home:N.workspace.home,notes:X,message:`${X.length} app wiki note(s)`},D.json);return}if(W==="get"||W==="show"){let X=$[3]??D.id;if(!X)throw Error("Usage: knowledge app-wiki note get <id-or-path>");let G=await N.getAppWikiNote(X,{includeContent:!0});if(!G)throw Error(`App wiki note not found: ${X}`);q(G,D.json);return}throw Error("Invalid app-wiki note action. Use 'add', 'list', or 'get'.")}if(S==="source"||S==="sources"){let W=$[2]??"add";if(W!=="add"&&W!=="ingest")throw Error("Invalid app-wiki source action. Use 'add'.");let X=$[3]??D.sourceRef?.[0];if(!X)throw Error("Usage: knowledge app-wiki source add <source-ref>");let G=await N.addAppWikiSourceRef({sourceRef:X,purpose:D.purpose,allowGlobal:D.allowGlobal});q({ok:!0,...G,message:`Added app wiki source ${G.source_ref}`},D.json);return}if(S==="search"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge app-wiki search <query>");let X=await N.searchAppWiki({query:W,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...X,message:`${X.results.length} app wiki result(s)`},D.json);return}if(S==="query"||S==="context"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge app-wiki query <query>");let X=await N.queryAppWiki({query:W,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...X,message:`${X.excerpts.length} app wiki excerpt(s)`},D.json);return}throw Error("Invalid app-wiki action. Use 'init', 'paths', 'note', 'source', 'search', or 'query'.")}if(I==="wiki"){let S=$[1]??"init";if(S==="init"){let W=await N.initWiki();q({ok:!0,...W,message:`Initialized wiki layout in ${N.workspace.home}`},D.json,D);return}if(S==="compile"){let W=$.slice(2),X=W.filter((K)=>/^(open-files|file|s3|https?):\/\//.test(K)),G=W.filter((K)=>!/^(open-files|file|s3|https?):\/\//.test(K)).join(" "),R=await N.compileWiki({title:D.title,query:G||D.search,sourceRefs:X.length>0?X:void 0,limit:D.limit});q({ok:!0,...R,message:`Compiled wiki page ${R.path}`},D.json,D);return}if(S==="file-answer"||S==="answer"){let W=$.slice(2).join(" ");if(!W)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 X=await N.fileAnswer({prompt:W,answer:D.content,approveWrite:D.approveWrite,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...X},D.json,D);return}if(S==="lint"){let W=N.lintWiki();q({ok:W.ok,...W,message:W.ok?"Wiki lint passed":`Wiki lint found ${W.issue_count} issue(s)`},D.json,D);return}throw Error("Invalid wiki action. Use 'init', 'compile', 'file-answer', or 'lint'.")}if(I==="safety"){let S=$[1]??"status",W=N.ensureWorkspace(),X=N.safetyPolicy();N.initDb();let G=w(W.knowledgeDbPath);try{if(S==="status"){q({ok:!0,mode:X.mode,workspace:W.home,allow_write_roots:X.allowWriteRoots,read_only_source_access:X.readOnlySourceAccess,network:X.network,redaction:X.redaction,approvals:X.approvals,message:`Safety policy: ${X.mode}`},D.json,D);return}if(S==="check"){let R=$[2]??"generated_write",K=$[3]??null,Y;try{if(R==="web_search")G0(X),Y={action:R,target_uri:K,approval_required:!1,approved:!0,decision:"allow"};else if(R==="s3_read"){if(!K)throw Error("safety check s3_read requires an s3:// target.");b6(K,X),Y={action:R,target_uri:K,approval_required:!1,approved:!0,decision:"allow"}}else Y=E3(G,X,R,K);G_(G,{event_type:"safety_check",action:R,target_uri:K,decision:Y.decision==="allow"?"allow":"requires_approval",metadata:Y}),q({ok:!0,...Y,message:`Safety check ${Y.decision}`},D.json,D);return}catch(T){throw G_(G,{event_type:"safety_check",action:R,target_uri:K,decision:"deny",metadata:{error:T instanceof Error?T.message:String(T)}}),T}}if(S==="approve"){let R=$[2]??"generated_write",K=$[3]??null,Y=s1(G,{action:R,target_uri:K,reason:"local-cli approval",metadata:{scope:D.scope??"global"}});G_(G,{event_type:"approval",action:R,target_uri:K,decision:"allow",metadata:{approval_id:Y.id}}),q({ok:!0,...Y,action:R,target_uri:K,message:`Approved ${R}`},D.json,D);return}if(S==="audit"){let R=G.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((K)=>({id:K.id,event_type:K.event_type,action:K.action,target_uri:K.target_uri,decision:K.decision,metadata:JSON.parse(K.metadata_json),created_at:K.created_at}));q({ok:!0,events:R,message:`${R.length} audit event(s)`},D.json,D);return}if(S==="redact"){let R=$.slice(2).join(" ");if(!R)throw Error("Usage: knowledge safety redact <text>");let K=y_(R,X);if(K.findings.length>0)R0(G,{source_uri:"safety://redact",findings:K.findings,metadata:{command:"safety redact"}});G_(G,{event_type:"redaction",action:"safety_redact",target_uri:"safety://redact",decision:K.findings.length>0?"redacted":"allow",metadata:{findings:K.findings.length}}),q({ok:!0,text:K.text,findings:K.findings,message:`Redacted ${K.findings.length} finding(s)`},D.json,D);return}throw Error("Invalid safety action. Use 'status', 'check', 'approve', 'audit', or 'redact'.")}finally{G.close()}}if(I==="source"){if(($[1]??"")!=="resolve")throw Error("Invalid source action. Use 'resolve'.");let W=$[2];if(!W)throw Error("Usage: knowledge source resolve <source-ref>");let X=await N.resolveSource(W,{purpose:D.purpose,limit:D.limit});q({ok:!0,...X,message:X.resolved?`Resolved ${X.source_ref} (${X.content.chunks_returned}/${X.content.chunks_total} chunks)`:`Source not indexed: ${W}`},D.json,D);return}if(I==="ingest"){let S=$[1]??"";if(S==="rules"||S==="global-rules"||S==="agent-rules"){let W=await N.importRulesProvenance({root:D.workspace??process.cwd(),owner:D.owner,dryRun:D.dryRun===!0,maxItems:D.maxItems,limit:D.limit});q({ok:!0,...W},D.json);return}if(S==="manifest"){let W=$[2];if(!W)throw Error("Usage: knowledge ingest manifest <file|s3://bucket/key>");let X=await N.ingestManifest(W);q({ok:!0,...X,message:`Ingested ${X.items_seen} manifest item(s)`},D.json,D);return}if(S==="source"){let W=$[2];if(!W)throw Error("Usage: knowledge ingest source <source-ref>");let X=await N.ingestSource(W,D.purpose);q({ok:!0,...X,message:`Ingested source ${X.source_ref} (${X.chunks_inserted} chunks)`},D.json,D);return}throw Error("Invalid ingest action. Use 'manifest' or 'source'.")}if(I==="reindex"){let S=$[1]??"status";if(S==="status"){let W=N.reindexHealth({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`${W.missing_embeddings} chunk(s) missing embeddings`},D.json,D);return}if(S==="enqueue"){let W=N.enqueueReindex({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`Queued ${W.enqueued} embedding refresh item(s)`},D.json,D);return}if(S==="embeddings"){let W=await N.refreshEmbeddings({full:D.full,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`Embedded ${W.indexed.chunks_embedded} chunk(s)`},D.json,D);return}if(S==="outbox"){let W=$[2];if(!W)throw Error("Usage: knowledge reindex outbox <file|s3://bucket/key>");let X=await N.consumeOutbox(W);q({ok:!0,...X,message:`Consumed ${X.events_seen} outbox event(s)`},D.json,D);return}throw Error("Invalid reindex action. Use 'status', 'enqueue', 'embeddings', or 'outbox'.")}if(I==="embeddings"){let S=$[1]??"status";if(S==="status"){let W=N.embeddingStatus();q({ok:!0,...W,message:`${W.total_vector_entries} vector index entries`},D.json,D);return}if(S==="index"){let W=await N.indexEmbeddings({limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`Embedded ${W.chunks_embedded} chunk(s)`},D.json,D);return}if(S==="search"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge embeddings search <query>");let X=await N.semanticSearch({query:W,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake}),G={ok:!0,...X,message:`${X.results.length} semantic result(s)`};q(D.json||D.verbose?G:Sf(G),D.json,D);return}throw Error("Invalid embeddings action. Use 'status', 'index', or 'search'.")}if(I==="context"){if(($[1]??"pack")!=="pack")throw Error("Invalid context action. Use 'pack'.");let W=D.from??"search";if(!["search","loops","runs"].includes(W))throw Error("Invalid --from value. Use 'search', 'loops', or 'runs'.");let X=$.slice(2).join(" ")||D.topic||"",G=await N.contextPack({source:W,purpose:W==="loops"||W==="runs"?"proposal":"agent_context",query:X,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:O});XY({ok:!0,...G,message:G.message});return}if(I==="proposals"){if(($[1]??"context")!=="context")throw Error("Invalid proposals action. Use 'context'.");let W=D.from??"loops";if(!["loops","runs"].includes(W))throw Error("Invalid --from value for proposals. Use 'loops' or 'runs'.");let X=D.topic??$.slice(2).join(" ");if(!X.trim())throw Error("Usage: knowledge proposals context --from loops --topic <text>");let G=await N.contextPack({source:W,purpose:"proposal",query:X,topic:X,since:D.since,dedupe:D.dedupe??!0,maxTokens:D.maxTokens,maxItems:D.maxItems,limit:D.limit});XY({ok:!0,...G,message:G.message});return}if(I==="search"){let S=$.slice(1).join(" ");if(!S)throw Error("Usage: knowledge search <query>");if(D.context){let G=await N.retrieveContext({query:S,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:O}),R={ok:!0,...G,message:`${G.excerpts.length} context excerpt(s)`};q(D.json||D.verbose?R:Lf(R),D.json,D);return}let W=await N.search({query:S,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:O}),X={ok:!0,...W,message:`${W.results.length} search result(s)`};q(D.json||D.verbose?X:Of(X),D.json,D);return}if(I==="web"){if(($[1]??"search")!=="search")throw Error("Invalid web action. Use 'search'.");let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge web search <query>");let X=await N.webSearch({query:W,limit:D.limit,modelRef:D.model,provider:D.provider,domains:D.domain,fake:D.fake,fileResults:D.fileResults}),G={ok:!0,...X,message:`${X.sources.length} web source(s)`};q(D.json||D.verbose?G:Jf(G),D.json,D);return}if(I==="ask"||I==="build"){let S=$.slice(U).join(" ");if(!S)throw Error("Usage: knowledge ask <prompt>");let W=await N.runPrompt({prompt:S,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,generate:D.generate,approveWrite:D.approveWrite,legacyStorePath:O}),X={ok:!0,...W,message:W.generated?"Generated answer with citations":"Prepared citation context draft"};q(D.json||D.verbose?X:Qf(X),D.json,D);return}if(I==="providers"){let S=$[1]??"status";if(S==="status"){let W=N.providerStatus(),X=W.providers.filter((G)=>G.configured).length;q({ok:!0,...W,message:`${X}/${W.providers.length} provider credential(s) configured`},D.json,D);return}if(S==="models"){let W=N.modelRegistry();q({ok:!0,models:W,message:`${W.length} model alias(es)`},D.json,D);return}if(S==="check"){let W=$[2]??"default",X=T$(W,N.config()),G=x_(X),R=A4(G.provider,N.config());q({ok:!0,target:W,model_ref:X,provider:G.provider,model:G.model,credential:R,message:`${G.provider} credentials configured`},D.json,D);return}throw Error("Invalid providers action. Use 'status', 'models', or 'check'.")}if(I==="add"){let S=$[1],W=$[2];if(!S||!W)throw Error("Usage: knowledge add <title> <content>");let X=await L.create({title:S,content:W,url:D.url??null,tags:D.tag??[]});j0("info","Item added",{id:X.id,title:X.title,tags:X.tags?.length??0,transport:L.kind}),q({ok:!0,item:X,message:`Added ${X.id}`},D.json,D);return}if(I==="list"){if(D.format!==void 0&&D.format!=="table"&&D.format!=="json")throw Error("Invalid --format value for list. Use 'table' or 'json'.");if(D.page!==void 0&&(!Number.isFinite(D.page)||!Number.isInteger(D.page)||D.page<1))throw Error("--page must be a positive integer.");if(D.limit!==void 0&&(!Number.isFinite(D.limit)||!Number.isInteger(D.limit)||D.limit<1||D.limit>200))throw Error("--limit must be an integer between 1 and 200.");let S=D.page??1,W=D.limit??20,X=D.search?String(D.search).toLowerCase():"",G=D.tagRaw??D.tag??[],R=D.tag?.length?D.tag.map((A_)=>A_.toLowerCase()).join(","):"none",K=D.format==="table"||!D.json&&!D.format&&Ef(D),Y=D.json||D.format==="json",T=D.archived?"archived":D.includeArchived?"all":"active",{sort:F,direction:k}=Tf([],D),B=(S-1)*W;if(B>1e4)throw Error("The requested page exceeds the maximum bounded offset of 10000.");let c=await L.list({search:X,tags:G,archive:T,sort:F,direction:k,limit:W,offset:B}),E_=c.items,D_=Math.max(1,Math.ceil(c.total/W)),J_={ok:!0,page:S,limit:W,total:c.total,total_pages:D_,sort:F,direction:k,items:E_,store_exists:c.exists};if(Y){q(J_,!0);return}if(D.verbose){q(J_,!1,D);return}if(E_.length===0){q(`No items found (search=${X||"none"}, tag=${R})`,!1);return}if(K){let A_=(r_)=>r_,K$=`${A_("ID")} ${A_("TITLE")} ${A_("CREATED")} ${A_("URL")} ${A_("TAGS")}`;console.log(K$);for(let r_ of E_)console.log(`${r_.id} ${A_(U_(r_.title,80))} ${r_.created_at} ${r_.url?A_(U_(r_.url,90)):""} ${r_.tags?.length?A_(U_(`[${r_.tags.join(", ")}]`,80)):""}`);console.log(`Page ${S}/${D_} | showing ${E_.length} of ${c.total} | sort=${F} ${k} | search=${X||"none"} | tag=${R}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}else{for(let A_ of E_)console.log(`${A_.id} ${U_(A_.title,80)} ${A_.created_at}${A_.url?` ${U_(A_.url,90)}`:""}${A_.tags?.length?` ${U_(`[${A_.tags.join(", ")}]`,80)}`:""}`);console.log(`Page ${S}/${D_} | showing ${E_.length} of ${c.total} | sort=${F} ${k} | search=${X||"none"} | tag=${R}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}return}if(I==="get"){E0(D);let S=await L.get(D.id);if(!S)throw Error(`Item not found: ${D.id}`);q({ok:!0,item:S,store_exists:L.exists,message:`${S.id}: ${S.title}`},D.json,D);return}if(I==="versions"){E0(D);let S=Number.isFinite(D.page)&&D.page>0?D.page:1,W=Number.isFinite(D.limit)&&D.limit>0?D.limit:void 0,X=await L.listVersions(D.id,{limit:W,offset:(S-1)*(W??50)});if(!X)throw Error(`Item not found: ${D.id}`);let G={ok:!0,id:X.item_id,current_version:X.current_version,total:X.total,page:S,store:L.location,versions:X.items,message:X.total===0?`${X.item_id} is at version ${X.current_version} with no retained prior versions`:`${X.item_id} is at version ${X.current_version}; ${X.total} prior version(s) retained`};if(D.json||D.verbose){q(G,D.json,D);return}console.log(G.message);for(let R of X.items){let K=R.actor?` by ${R.actor}`:"",Y=R.reason?` (${R.reason})`:"";console.log(`v${R.version} ${R.valid_to}${K}${Y} ${R.content_bytes} bytes ${R.content_hash.slice(0,12)}`)}if(X.items.length>0)console.log("Hint: `knowledge diff --id <id> --rev <n>` shows what changed.");return}if(I==="diff"){E0(D);let S=await L.get(D.id);if(!S)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 W=()=>({title:S.title,content:S.content,url:S.url,tags:S.tags??[],metadata:S.metadata??{},archived:S.archived??!1}),X=`v${S.version??"?"} (current)`,G=async(k)=>{if(k==="current")return{label:X,snapshot:W()};let B=Number(k);if(!Number.isInteger(B)||B<1)throw Error(`Not a version number: ${k}`);if(S.version!==void 0&&B===S.version)return{label:X,snapshot:W()};let c=await L.getVersion(S.id,B);if(!c)throw Error(`No version ${B} retained for ${S.id} (it is at version ${S.version??"?"}). Run \`knowledge versions --id <id>\` to see what is retained.`);return{label:`v${c.version}`,snapshot:{title:c.title,content:c.content,url:c.url,tags:c.tags,metadata:c.metadata,archived:c.archived}}},R,K;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),K=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,K=D.to}else{let k=await L.listVersions(S.id,{limit:1});if(!k)throw Error(`Item not found: ${D.id}`);if(k.items.length===0)throw Error(`${S.id} is at version ${k.current_version} with no retained prior versions to diff against.`);R=String(k.items[0].version),K="current"}let Y=await G(R),T=await G(K),F=kz(Y.snapshot,T.snapshot);if(D.json||D.verbose){q({ok:!0,id:S.id,from:Y.label,to:T.label,...F},D.json,D);return}console.log(qz(F,`${S.id} ${Y.label}`,`${S.id} ${T.label}`));return}if(I==="update"){E0(D);let S=await L.get(D.id);if(!S)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 W={};if(D.title!==void 0)W.title=D.title;if(D.content!==void 0)W.content=D.content;if(D.url!==void 0)W.url=D.url;let X;if(D.tag!==void 0){if(X=zY(S.tags,D.tag),X.length>0)W.tags=[...S.tags??[],...X]}let G=D.ifVersion!==void 0?D.ifVersion:S.version,R=await L.update(S.id,W,{expectedVersion:G});q(bP({ok:!0,item:R},`Updated ${R?.id??S.id}`,X),D.json,D);return}if(I==="archive"||I==="restore"){E0(D);let S=await L.get(D.id);if(!S)throw Error(`Item not found: ${D.id}`);let W=await L.update(S.id,{archived:I==="archive"},{expectedVersion:S.version});q({ok:!0,item:W,message:`${I==="archive"?"Archived":"Restored"} ${W?.id??S.id}`},D.json,D);return}if(I==="untag"){if(E0(D),!D.tag?.length)throw Error("Missing required --tag. Example: knowledge untag --id <id> -t <tag>");let S=await L.get(D.id);if(!S)throw Error(`Item not found: ${D.id}`);let W=S.tags??[],X=new Set(W.map((B)=>B.toLowerCase())),G=new Set;for(let B of D.tagRaw??D.tag){let c=B.trim().toLowerCase();if(c.length>0&&X.has(c)){G.add(c);continue}for(let E_ of B.split(",").map((D_)=>D_.trim().toLowerCase()).filter((D_)=>D_.length>0))G.add(E_)}let R=W.filter((B)=>!G.has(B.toLowerCase())),K=W.length-R.length,Y=[...G].filter((B)=>!X.has(B));if(K===0)throw Error(`No matching tag on ${S.id}: ${Y.map((B)=>JSON.stringify(B)).join(", ")} not in [${W.map((B)=>JSON.stringify(B)).join(", ")}]`);let T=await L.update(S.id,{tags:R},{expectedVersion:S.version}),F=Y.length>0?` (not found: ${Y.map((B)=>JSON.stringify(B)).join(", ")})`:"",k={ok:!0,item:T,removed:K,message:`Removed ${K} tag${K===1?"":"s"} from ${T?.id??S.id}${F}`};if(Y.length>0)k.not_found=Y;q(k,D.json,D);return}if(I==="upsert"){let S=D.title??$[1],W=D.content??$[2],X=D.id?await L.get(D.id):null;if(!X){if(!S||!W)throw Error("New item requires title and content. Example: knowledge upsert <title> <content> [--id <id>]");let Y=await L.create({id:D.id,title:S,content:W,url:D.url??null,tags:D.tag??[]});q(bP({ok:!0,created:!0,item:Y},`Upserted ${Y.id}`,D.tag),D.json,D);return}let G={};if(S!==void 0)G.title=S;if(W!==void 0)G.content=W;if(D.url!==void 0)G.url=D.url;let R;if(D.tag!==void 0){if(R=zY(X.tags,D.tag),R.length>0)G.tags=[...X.tags??[],...R]}let K=await L.update(X.id,G,{expectedVersion:X.version});q(bP({ok:!0,created:!1,item:K},`Upserted ${K?.id??X.id}`,R),D.json,D);return}if(I==="delete"){if(E0(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}`);j0("info","Item deleted",{id:D.id,transport:L.kind}),q({ok:!0,deleted_id:D.id,message:`Deleted ${D.id}`},D.json,D);return}if(I==="export"){let S=D.format??"json";if(S!=="json"&&S!=="jsonl")throw Error("Invalid --format. Use 'json' or 'jsonl'.");let W=await L.listAll();if(S==="jsonl")for(let X of W.items)console.log(JSON.stringify(X));else if(D.json||D.format==="json"||D.verbose)q({ok:!0,items:W.items,store_exists:W.exists},D.json||D.format==="json",D);else q(Kf(W.items,S),!1);return}if(I==="prune"){if(!D.yes)throw Error("Refusing prune without --yes. Re-run with: knowledge prune --yes [--older-than <days>] [--empty]");let{items:S}=await L.listAll(),W=D.olderThan!==void 0?new Date(Date.now()-D.olderThan*86400000):null,X=S.filter((K)=>W!==null&&new Date(K.created_at)<W||D.empty&&K.content.trim().length===0),G=await L.deleteMany(X.map((K)=>K.id)),R=S.length-G;j0("info","Prune completed",{pruned:G,remaining:R,transport:L.kind}),q({ok:!0,pruned:G,remaining:R,message:`Pruned ${G} item(s)`},D.json,D);return}if(I==="dedupe"){if(!D.yes)throw Error("Refusing dedupe without --yes. Re-run with: knowledge dedupe --yes [--json]");let{items:S}=await L.listAll(),W=new Set,X=[];for(let K of S){let Y=`${K.title}\x00${K.content}`;if(W.has(Y))X.push(K);else W.add(Y)}let G=await L.deleteMany(X.map((K)=>K.id)),R=S.length-G;j0("info","Dedupe completed",{removed:G,remaining:R,transport:L.kind}),q({ok:!0,removed:G,remaining:R,message:`Dedupe removed ${G} duplicate(s)`},D.json,D);return}if(I==="stats"){let S=await L.listAll(),W=S.items.filter((B)=>!B.archived),X=W.length,G=S.items.length-X,R=W.filter((B)=>B.url).length,K=W.filter((B)=>B.tags&&B.tags.length>0).length,Y=X>0?W.map((B)=>B.created_at).sort()[0]:null,T=X>0?W.map((B)=>B.created_at).sort()[X-1]:null,F={};for(let B of W)for(let c of B.tags||[])F[c]=(F[c]||0)+1;let k=Object.entries(F).sort((B,c)=>c[1]-B[1]).slice(0,5).map(([B,c])=>({tag:B,count:c}));q({ok:!0,total:X,archived:G,with_url:R,with_tags:K,oldest:Y,newest:T,top_tags:k,store_exists:S.exists,message:`${X} items | ${R} with URL | ${K} with tags`},D.json,D);return}let P=_f($[0]),z=P?` Did you mean '${P}'?`:"";throw j0("warn","Unknown command",{input:$[0],suggestion:P}),Error(`Unknown command: ${$[0]}.${z} Run 'knowledge --help' for available commands.`)}function Vf(_,$){let D=_ instanceof Error?_.message:String(_);j0("debug","CLI error",{message:D,stack:_ instanceof Error?_.stack:void 0}),console.error(`Error: ${D}`);let I=_ instanceof z0?_:null;if($.includes("--json"))q({ok:!1,error:D,message:D,...I?{code:"version_conflict",expected:I.expected,current:I.current}:{}},!0);process.exitCode=I?2:1}if(import.meta.main){let _=process.argv.slice(2);Ff(_).catch(($)=>Vf($,_))}export{_f as suggestCommand,Tf as sortItems,Ff as run,er as parseArgs,Vf as emitCliError}; diff --git a/dist/index.d.ts b/dist/index.d.ts index a80da73..0cb8ae4 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,4 +1,5 @@ -export { createAppWikiScope, createKnowledgeClient, createKnowledgeSdk, openGlobalWiki, openProjectWiki, type KnowledgeAgentContextPackOptions, type KnowledgeAppWikiInitOptions, type KnowledgeAppWikiNoteInput, type KnowledgeAppWikiQueryOptions, type KnowledgeAppWikiScopeOptions, type KnowledgeAppWikiSdk, type KnowledgeAppWikiSearchOptions, type KnowledgeAppWikiSourceInput, type KnowledgeAskOptions, type KnowledgeAuthInput, type KnowledgeClient, type KnowledgeClientOptions, type KnowledgeContextOptions, type KnowledgeInventoryOptions, type KnowledgeItemsSdk, type KnowledgeRulesProvenanceOptions, type KnowledgeSearchOptions, type KnowledgeSetupOptions, type KnowledgeSyncDoctorOptions, type KnowledgeWebSearchOptions, } from './sdk.js'; +export { createAppWikiScope, createKnowledgeClient, createKnowledgeSdk, openGlobalWiki, openProjectWiki, type KnowledgeAgentContextPackOptions, type KnowledgeAppWikiInitOptions, type KnowledgeAppWikiNoteInput, type KnowledgeAppWikiQueryOptions, type KnowledgeAppWikiScopeOptions, type KnowledgeAppWikiSdk, type KnowledgeAppWikiSearchOptions, type KnowledgeAppWikiSourceInput, type KnowledgeAskOptions, type KnowledgeAuthInput, type KnowledgeClient, type KnowledgeClientOptions, type KnowledgeContextOptions, type KnowledgeInventoryOptions, type KnowledgeItemsSdk, type KnowledgeProjectLinksSdk, type KnowledgeRulesProvenanceOptions, type KnowledgeSearchOptions, type KnowledgeSetupOptions, type KnowledgeSyncDoctorOptions, type KnowledgeWebSearchOptions, } from './sdk.js'; +export { KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, KNOWLEDGE_PROJECT_RESOURCES_ROUTE, KnowledgeProjectLinksError, KnowledgeProjectLinksHttpClient, canonicalKnowledgeProjectLinksJson, createKnowledgeProjectLinksHttpClient, createLocalKnowledgeProjectLinksAuthority, createPostgresKnowledgeProjectLinksAuthority, digestKnowledgeProjectLinksValue, postgresKnowledgeProjectLinksSchemaStatements, sqliteKnowledgeProjectLinksSchemaSql, type KnowledgeProjectAuthorityIdentity, type KnowledgeProjectCollectionRecord, type KnowledgeProjectInverseRequest, type KnowledgeProjectInverseVerification, type KnowledgeProjectItemBindingRecord, type KnowledgeProjectItemBindingRequest, type KnowledgeProjectLinksAuthority, type KnowledgeProjectLinksAuthorityOptions, type KnowledgeProjectLinksErrorCode, type KnowledgeProjectLinksHttpClientOptions, type KnowledgeProjectReceiptAction, type KnowledgeProjectReceiptLookupRequest, type KnowledgeProjectReceiptOutcome, type KnowledgeProjectRegistrationCapability, type KnowledgeProjectRegistrationDirection, type KnowledgeProjectRegistrationReceipt, type KnowledgeProjectRegistrationRequest, type KnowledgeProjectResource, type KnowledgeProjectResourceKind, type KnowledgeProjectResourceListOptions, type KnowledgeProjectResourcePage, } from './project-links.js'; export { resolveItemStore, type ItemStore, type ItemCreateInput, type ItemPatch, type ItemArchiveFilter, type ItemListDirection, type ItemListOptions, type ItemListResult, type ItemListSort, type ResolveItemStoreOptions, } from './item-store.js'; export { type KnowledgeItem, type Store as KnowledgeItemStoreFile, } from './store.js'; export { KNOWLEDGE_APP_SLUG, KNOWLEDGE_BOUNDED_QUERY_CAPABILITY, KNOWLEDGE_RESOURCE, KnowledgeBoundedQueryCapabilityError, isKnowledgeApiMode, resolveKnowledgeCloudStore, type KnowledgeCloudStore, type KnowledgeCloudCreateInput, type KnowledgeCloudListOptions, type KnowledgeCloudPatch, type KnowledgeCloudSearchHit, type KnowledgeCloudSearchOptions, } from './cloud-store.js'; diff --git a/dist/index.js b/dist/index.js index d8680e0..68b1b45 100644 --- a/dist/index.js +++ b/dist/index.js @@ -17522,6 +17522,1433 @@ var KNOWLEDGE_APP_NAME = "knowledge"; function createKnowledgeCloudClient() { return createServerPoolFromEnv(KNOWLEDGE_APP_NAME, { applicationName: "@hasna/knowledge" }).client; } +// src/project-links.ts +import { createHash as createHash2 } from "crypto"; +import { Database as Database2 } from "bun:sqlite"; +var KNOWLEDGE_PROJECT_REGISTRATION_ROUTE = "knowledge.project-registration.v1"; +var KNOWLEDGE_PROJECT_RESOURCES_ROUTE = "knowledge.project-resources.v1"; +var KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION = 1; +var KNOWLEDGE_PROJECT_MEMBERSHIP_RULE = "explicit_collection_binding"; + +class KnowledgeProjectLinksError extends Error { + code; + details; + constructor(code, message, details = {}) { + super(message); + this.code = code; + this.details = details; + this.name = "KnowledgeProjectLinksError"; + } +} +function postgresSql(sql) { + let index = 0; + return sql.replace(/\?/g, () => `$${++index}`); +} + +class PostgresProjectLinksSql { + client; + transactionClient; + constructor(client, transactionClient) { + this.client = client; + this.transactionClient = transactionClient; + } + async get(sql, params = []) { + return this.client.get(postgresSql(sql), params); + } + async many(sql, params = []) { + return this.client.many(postgresSql(sql), params); + } + async run(sql, params = []) { + const result = await this.client.query(postgresSql(sql), params); + return { changes: result.rowCount }; + } + async transaction(fn) { + if (!this.transactionClient) + return fn(this); + return this.transactionClient.transaction((tx) => fn(new PostgresProjectLinksSql(tx))); + } +} + +class SqliteProjectLinksSql { + db; + tail = Promise.resolve(); + constructor(db) { + this.db = db; + } + async get(sql, params = []) { + return this.db.query(sql).get(...params) ?? null; + } + async many(sql, params = []) { + return this.db.query(sql).all(...params); + } + async run(sql, params = []) { + const result = this.db.query(sql).run(...params); + return { changes: Number(result.changes) }; + } + transaction(fn) { + const run = this.tail.then(async () => { + this.db.exec("BEGIN IMMEDIATE"); + try { + const result = await fn(this); + this.db.exec("COMMIT"); + return result; + } catch (error) { + this.db.exec("ROLLBACK"); + throw error; + } + }); + this.tail = run.then(() => { + return; + }, () => { + return; + }); + return run; + } +} +function sqliteKnowledgeProjectLinksSchemaSql() { + return ` + PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + ); + CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + ); + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_update + BEFORE UPDATE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_delete + BEFORE DELETE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + `; +} +function postgresKnowledgeProjectLinksSchemaStatements() { + return [ + `CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + )`, + `CREATE OR REPLACE FUNCTION knowledge_project_link_receipts_immutable() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + RAISE EXCEPTION 'knowledge project link receipts are immutable'; + END; + $$`, + `DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable + ON knowledge_project_link_receipts`, + `CREATE TRIGGER knowledge_project_link_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()` + ]; +} +function canonicalize(value) { + if (Array.isArray(value)) + return value.map(canonicalize); + if (value && typeof value === "object") { + return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined).sort(([left], [right]) => left.localeCompare(right)).map(([key, item]) => [key, canonicalize(item)])); + } + return value; +} +function canonicalKnowledgeProjectLinksJson(value) { + return JSON.stringify(canonicalize(value)); +} +function digestKnowledgeProjectLinksValue(value) { + return createHash2("sha256").update(canonicalKnowledgeProjectLinksJson(value)).digest("hex"); +} +function stableUuid(namespace) { + const hex = createHash2("sha256").update(namespace).digest("hex").slice(0, 32).split(""); + hex[12] = "5"; + hex[16] = (Number.parseInt(hex[16], 16) & 3 | 8).toString(16); + const value = hex.join(""); + return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; +} +function requiredString(value, field) { + if (typeof value !== "string" || value.trim().length === 0) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `${field} must be a non-empty string.`); + } + return value.trim(); +} +function boundedLimit(value) { + const resolved = value ?? 100; + if (!Number.isInteger(resolved) || resolved < 1 || resolved > 200) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "limit must be an integer between 1 and 200."); + } + return resolved; +} +function normalizeKinds(kinds) { + const supported = ["project", "collection", "item", "taxonomy"]; + if (!kinds || kinds.length === 0) + return supported; + const unique = [...new Set(kinds)]; + for (const kind of unique) { + if (!supported.includes(kind)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `unsupported project resource kind: ${kind}`); + } + } + return unique.sort((left, right) => supported.indexOf(left) - supported.indexOf(right)); +} +function toReceipt(row) { + return { + receipt_id: row.receipt_id, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: row.package_version, + authority_id: row.authority_id, + tenant_id: row.tenant_id, + corpus_id: row.corpus_id, + operation_id: row.operation_id, + step_id: row.step_id, + action: row.action, + resource_kind: row.resource_kind, + direction: row.direction, + idempotency_key: row.idempotency_key, + request_digest: row.request_digest, + precondition_digest: row.precondition_digest, + outcome: row.outcome, + reason: row.reason, + source_project_id: row.source_project_id, + project_id: row.project_id, + collection_id: row.collection_id, + item_id: row.item_id, + result_revision: row.result_revision, + result_digest: row.result_digest, + accepted_receipt_id: row.accepted_receipt_id, + created_by_operation: Number(row.created_by_operation) === 1, + created_at: row.created_at + }; +} +function aggregateRecord(row) { + const record = { + source_project_id: row.source_project_id, + project_id: row.project_id, + project_slug: row.project_slug, + project_name: row.project_name, + collection_id: row.collection_id, + collection_slug: row.collection_slug, + collection_name: row.collection_name, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + revision: `r${Number(row.revision)}`, + created_at: row.created_at, + updated_at: row.updated_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; +} +function receiptInsertParams(receipt) { + return [ + receipt.receipt_id, + receipt.authority, + receipt.route, + receipt.package_version, + receipt.authority_id, + receipt.tenant_id, + receipt.corpus_id, + receipt.operation_id, + receipt.step_id, + receipt.action, + receipt.resource_kind, + receipt.direction, + receipt.idempotency_key, + receipt.request_digest, + receipt.precondition_digest, + receipt.outcome, + receipt.reason, + receipt.source_project_id, + receipt.project_id, + receipt.collection_id, + receipt.item_id, + receipt.result_revision, + receipt.result_digest, + receipt.accepted_receipt_id, + receipt.created_by_operation ? 1 : 0, + receipt.created_at + ]; +} +var RECEIPT_INSERT_SQL = `INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`; + +class PackageOwnedKnowledgeProjectLinksAuthority { + sql; + itemResolver; + options; + identity; + now; + constructor(sql, itemResolver, options) { + this.sql = sql; + this.itemResolver = itemResolver; + this.options = options; + this.identity = { + authority_id: requiredString(options.authorityId, "authority_id"), + tenant_id: requiredString(options.tenantId, "tenant_id"), + corpus_id: requiredString(options.corpusId, "corpus_id") + }; + this.now = options.now ?? (() => new Date().toISOString()); + } + capabilityValue() { + return { + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + resource_route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + package_version: this.options.packageVersion, + schema_version: KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + ...this.identity, + registration_resource: "collection", + supported_resources: ["project", "collection", "item", "taxonomy"], + stable_project_ids: true, + stable_collection_ids: true, + explicit_membership: true, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + later_child_binding_required: true, + bind_existing_items: true, + immutable_receipts: true, + exact_terminal_lookup: true, + exact_readback: true, + conditional_inverse: true, + complete_keyset_pagination: true, + revision_bound_cursors: true + }; + } + async capability() { + return this.capabilityValue(); + } + assertIdentity(request) { + const capability = this.capabilityValue(); + if (request.authority_route !== capability.route || request.package_version !== capability.package_version || request.authority_id !== capability.authority_id || request.tenant_id !== capability.tenant_id || request.corpus_id !== capability.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "request does not match the current Knowledge project-registration capability identity."); + } + } + stableProjectId(sourceProjectId) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${sourceProjectId}`); + } + stableCollectionId(sourceProjectId, collectionSlug) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${sourceProjectId}\x00${collectionSlug}`); + } + stableReceiptId(operationId, stepId, action, direction) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${operationId}\x00${stepId}\x00${action}\x00${direction}`); + } + async getAggregateBySource(sql, sourceProjectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, sourceProjectId]); + } + async getAggregateByCollection(sql, collectionId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, collectionId]); + } + async getAggregateByProject(sql, projectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + projectId, + projectId + ]); + } + async getReceiptByAttempt(sql, input) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + input.operation_id, + input.step_id, + input.action, + input.direction + ]); + return row ? toReceipt(row) : null; + } + assertIdempotent(existing, input) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); + } + } + async registerCollection(request) { + this.assertIdentity(request); + if (request.resource_kind !== "collection" || request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "collection registration requires resource_kind=collection and direction=forward."); + } + const sourceProjectId = requiredString(request.project_id, "project_id"); + const projectSlug = requiredString(request.project_slug, "project_slug"); + const projectName = requiredString(request.project_name, "project_name"); + const targetSelector = requiredString(request.target_selector, "target_selector"); + if (targetSelector !== sourceProjectId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "target_selector must equal the exact source project id."); + } + const collectionSlug = requiredString(request.desired.collection_slug ?? `${projectSlug}-knowledge`, "desired.collection_slug"); + const collectionName = requiredString(request.desired.collection_name ?? `${projectName} Knowledge`, "desired.collection_name"); + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "register_collection", + source_project_id: sourceProjectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized collection-registration request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + let aggregate = await this.getAggregateBySource(tx, sourceProjectId); + const createdByOperation = aggregate === null; + if (!aggregate) { + const now = this.now(); + const projectId = this.stableProjectId(sourceProjectId); + const collectionId = this.stableCollectionId(sourceProjectId, collectionSlug); + await tx.run(`INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + sourceProjectId, + projectId, + projectSlug, + projectName, + now, + now + ]); + await tx.run(`INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + projectId, + collectionSlug, + collectionName, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + 1, + now, + now + ]); + aggregate = await this.getAggregateByCollection(tx, collectionId); + } else if (aggregate.project_slug !== projectSlug || aggregate.project_name !== projectName || aggregate.collection_slug !== collectionSlug || aggregate.collection_name !== collectionName || aggregate.membership_rule !== KNOWLEDGE_PROJECT_MEMBERSHIP_RULE) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "the source project is already bound to a different Knowledge collection aggregate.", { + source_project_id: sourceProjectId, + collection_id: aggregate.collection_id + }); + } + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection registration committed but exact aggregate readback was unavailable."); + } + const record = aggregateRecord(aggregate); + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "forward"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_collection", + source_project_id: record.source_project_id, + project_id: record.project_id, + collection_id: record.collection_id, + item_id: null, + result_revision: record.revision, + result_digest: record.digest, + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readCollection(collectionId) { + const aggregate = await this.getAggregateByCollection(this.sql, requiredString(collectionId, "collection_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + return aggregateRecord(aggregate); + } + async lookupReceipt(request) { + if (request.max_items !== 1) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "exact terminal receipt lookup requires max_items=1."); + } + if (request.authority_id !== this.identity.authority_id || request.tenant_id !== this.identity.tenant_id || request.corpus_id !== this.identity.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "receipt lookup does not match this authority identity."); + } + const receipt = await this.getReceiptByAttempt(this.sql, request); + if (!receipt || receipt.idempotency_key !== request.idempotency_key) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "exact Knowledge project-link receipt was not found."); + } + return receipt; + } + async receiptById(sql, receiptId) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`, [ + receiptId, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id + ]); + return row ? toReceipt(row) : null; + } + assertInverseIdentity(request) { + this.assertIdentity(request); + requiredString(request.accepted_receipt_id, "accepted_receipt_id"); + requiredString(request.idempotency_key, "idempotency_key"); + } + async compensateRegistration(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "register_collection" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection-registration receipt was not found."); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + let outcome = "accepted"; + let reason = null; + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_collection_is_not_inverse_owned"; + } else if (!aggregate) { + outcome = "terminal_nonacceptance"; + reason = "accepted_collection_is_already_absent"; + } else { + const membership = await tx.get(`SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + if (Number(membership?.count ?? 0) > 0) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_bound_items"; + } else { + await tx.run(`DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + await tx.run(`DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.project_id + ]); + } + } + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: null, + result_revision: outcome === "accepted" ? "absent" : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyRegistrationInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection inverse receipt was not found."); + } + const aggregate = inverse.collection_id ? await this.getAggregateByCollection(this.sql, inverse.collection_id) : null; + if (aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "collection inverse verification found the target still present."); + } + const verification = { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.collection_id, + absent: true, + digest: inverse.result_digest + }; + return verification; + } + async bindItem(request) { + this.assertIdentity(request); + if (request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "item binding requires direction=forward."); + } + const collectionId = requiredString(request.collection_id, "collection_id"); + const itemId = requiredString(request.item_id, "item_id"); + const item = await this.itemResolver(itemId); + if (!item || item.id !== itemId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "bind-existing requires an exact existing Knowledge item id.", { item_id: itemId }); + } + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "bind_item", + collection_id: collectionId, + item_id: itemId + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized item-membership request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const aggregate = await this.getAggregateByCollection(tx, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + const existing = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId + ]); + const createdByOperation = existing === null; + const now = this.now(); + const receiptId = this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "forward"); + if (!existing) { + await tx.run(`INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + receiptId, + 1, + now + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + now, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId + ]); + } + const current = await this.getAggregateByCollection(tx, collectionId); + if (!current) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "item binding committed but collection readback was unavailable."); + } + const binding = { + collection_id: collectionId, + item_id: itemId, + collection_revision: `r${Number(current.revision)}`, + item_revision: `v${item.version ?? 1}` + }; + const receipt = { + receipt_id: receiptId, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_membership", + source_project_id: current.source_project_id, + project_id: current.project_id, + collection_id: collectionId, + item_id: itemId, + result_revision: binding.collection_revision, + result_digest: digestKnowledgeProjectLinksValue(binding), + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: now + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readItemBinding(collectionId, itemId) { + const membership = await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + requiredString(collectionId, "collection_id"), + requiredString(itemId, "item_id") + ]); + if (!membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection membership was not found by exact ids."); + } + const aggregate = await this.getAggregateByCollection(this.sql, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "membership exists without its collection aggregate."); + } + const record = { + collection_id: collectionId, + item_id: itemId, + revision: `r${Number(aggregate.revision)}`, + bound_at: membership.bound_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; + } + async compensateItemBinding(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "bind_item" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding receipt was not found."); + } + let outcome = "accepted"; + let reason = null; + const membership = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id + ]); + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_membership_is_not_inverse_owned"; + } else if (!membership) { + outcome = "terminal_nonacceptance"; + reason = "accepted_membership_is_already_absent"; + } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { + outcome = "terminal_nonacceptance"; + reason = "membership_is_owned_by_a_different_receipt"; + } else { + await tx.run(`DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + accepted.receipt_id + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.now(), + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id + ]); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + result_revision: outcome === "accepted" && aggregate ? `r${Number(aggregate.revision)}` : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyItemBindingInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding inverse receipt was not found."); + } + const membership = await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + inverse.collection_id, + inverse.item_id + ]); + if (membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "item-binding inverse verification found the membership still present."); + } + return { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.item_id, + absent: true, + digest: inverse.result_digest + }; + } + async buildResources(projectId) { + const aggregate = await this.getAggregateByProject(this.sql, requiredString(projectId, "project_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project aggregate was not found by source or stable project id."); + } + const memberships = await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + const items = await Promise.all(memberships.map(async (membership) => { + const item = await this.itemResolver(membership.item_id); + if (!item || item.id !== membership.item_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection membership points at a missing Knowledge item; refusing a partial resource population.", { collection_id: aggregate.collection_id, item_id: membership.item_id }); + } + return item; + })); + const revision = `r${Number(aggregate.revision)}`; + const base = { + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + revision + }; + const resources = []; + const projectBody = { + ...base, + kind: "project", + id: aggregate.project_id, + title: aggregate.project_name, + locator: { kind: "canonical_uri", value: `knowledge:project:${aggregate.project_id}` }, + metadata: { + source_project_id: aggregate.source_project_id, + slug: aggregate.project_slug, + collection_count: 1 + } + }; + resources.push({ + ...projectBody, + key: `project:${aggregate.project_id}`, + digest: digestKnowledgeProjectLinksValue(projectBody) + }); + const collectionBody = { + ...base, + kind: "collection", + id: aggregate.collection_id, + title: aggregate.collection_name, + locator: { kind: "external_uuid", value: aggregate.collection_id }, + metadata: { + slug: aggregate.collection_slug, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + member_count: items.length + } + }; + resources.push({ + ...collectionBody, + key: `collection:${aggregate.collection_id}`, + digest: digestKnowledgeProjectLinksValue(collectionBody) + }); + for (const item of items) { + const itemBody = { + ...base, + kind: "item", + id: item.id, + revision: `v${item.version ?? 1}`, + title: item.title, + locator: { kind: "canonical_uri", value: `knowledge:item:${encodeURIComponent(item.id)}` }, + metadata: { + tags: [...item.tags ?? []], + archived: item.archived === true, + updated_at: item.updated_at + } + }; + resources.push({ + ...itemBody, + key: `item:${item.id}`, + digest: digestKnowledgeProjectLinksValue(itemBody) + }); + } + const taxonomy = new Map; + for (const item of items) { + for (const rawTag of item.tags ?? []) { + const normalized = rawTag.trim().toLowerCase(); + if (!normalized) + continue; + const entry = taxonomy.get(normalized) ?? { label: rawTag.trim(), itemIds: [] }; + entry.itemIds.push(item.id); + taxonomy.set(normalized, entry); + } + } + for (const [normalized, entry] of [...taxonomy.entries()].sort(([left], [right]) => left.localeCompare(right))) { + const taxonomyId = stableUuid(`${aggregate.collection_id}\x00taxonomy\x00${normalized}`); + const taxonomyBody = { + ...base, + kind: "taxonomy", + id: taxonomyId, + title: entry.label, + locator: { kind: "external_uuid", value: taxonomyId }, + metadata: { + tag: entry.label, + normalized_tag: normalized, + item_count: entry.itemIds.length, + member_digest: digestKnowledgeProjectLinksValue([...entry.itemIds].sort()) + } + }; + resources.push({ + ...taxonomyBody, + key: `taxonomy:${taxonomyId}`, + digest: digestKnowledgeProjectLinksValue(taxonomyBody) + }); + } + resources.sort((left, right) => left.key.localeCompare(right.key)); + return { aggregate, resources }; + } + async listProjectResources(projectId, options = {}) { + const limit = boundedLimit(options.limit); + const kinds = normalizeKinds(options.kinds); + const { aggregate, resources } = await this.buildResources(projectId); + const revision = `r${Number(aggregate.revision)}`; + const population = resources.filter((resource) => kinds.includes(resource.kind)); + const populationDigest = digestKnowledgeProjectLinksValue(population.map((resource) => ({ key: resource.key, digest: resource.digest }))); + let after = ""; + if (options.cursor) { + let decoded; + try { + decoded = JSON.parse(Buffer.from(options.cursor, "base64url").toString("utf8")); + } catch { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "cursor is not a valid Knowledge project-resources cursor."); + } + if (decoded.version !== 1 || decoded.project_id !== aggregate.project_id || decoded.collection_id !== aggregate.collection_id || decoded.collection_revision !== revision || decoded.population_digest !== populationDigest || canonicalKnowledgeProjectLinksJson(decoded.kinds) !== canonicalKnowledgeProjectLinksJson(kinds) || typeof decoded.after !== "string") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed or the cursor belongs to a different project/kind selection; restart from the first page."); + } + after = decoded.after; + } + const remaining = after ? population.filter((resource) => resource.key > after) : population; + const pageResources = remaining.slice(0, limit); + const hasMore = remaining.length > pageResources.length; + const nextCursor = hasMore && pageResources.length > 0 ? Buffer.from(JSON.stringify({ + version: 1, + project_id: aggregate.project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + kinds, + after: pageResources.at(-1).key + })).toString("base64url") : null; + return { + schema: "knowledge.project-resources.page.v1", + authority: "knowledge", + route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + ...this.identity, + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + resource_kinds: kinds, + resources: pageResources, + count: pageResources.length, + total: population.length, + limit, + cursor: options.cursor ?? null, + next_cursor: nextCursor, + has_more: hasMore, + complete: !hasMore, + truncated: false + }; + } + async readProjectResource(projectId, kind, resourceId) { + const { resources } = await this.buildResources(projectId); + const resource = resources.find((candidate) => candidate.kind === kind && candidate.id === resourceId); + if (!resource) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project resource was not found by exact kind and id."); + } + return resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expected = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + const identity = { + project_id: page.project_id, + collection_id: page.collection_id, + collection_revision: page.collection_revision, + population_digest: page.population_digest, + total: page.total, + kinds: canonicalKnowledgeProjectLinksJson(page.resource_kinds) + }; + if (expected && canonicalKnowledgeProjectLinksJson(expected) !== canonicalKnowledgeProjectLinksJson(identity)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete population was being read."); + } + expected ??= identity; + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource pagination returned a duplicate stable resource key.", { key: resource.key }); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource page claims more data without a continuation cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (!expected || resources.length !== expected.total) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete project resource enumeration did not match the producer total.", { expected_total: expected?.total ?? null, received: resources.length }); + } + return resources; + } +} +function createLocalKnowledgeProjectLinksAuthority(input) { + if (input.databasePath !== ":memory:") { + ensureParentDir(input.databasePath); + } + const db = new Database2(input.databasePath, { create: true }); + db.exec(sqliteKnowledgeProjectLinksSchemaSql()); + return new PackageOwnedKnowledgeProjectLinksAuthority(new SqliteProjectLinksSql(db), (id) => input.itemStore.get(id), input.options); +} +function createPostgresKnowledgeProjectLinksAuthority(input) { + return new PackageOwnedKnowledgeProjectLinksAuthority(new PostgresProjectLinksSql(input.client, input.client), input.itemResolver, input.options); +} +function wireErrorStatus(error) { + if (error.code === "KNOWLEDGE_PROJECT_LINKS_NOT_FOUND") + return 404; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_CONFLICT" || error.code === "KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE" || error.code === "KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH") + return 409; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION") + return 503; + return 400; +} +function knowledgeProjectLinksErrorResponse(error) { + if (error instanceof KnowledgeProjectLinksError) { + return Response.json({ error: error.code, message: error.message, details: error.details }, { status: wireErrorStatus(error) }); + } + throw error; +} + +class KnowledgeProjectLinksHttpClient { + options; + fetchImpl; + root; + constructor(options) { + this.options = options; + this.fetchImpl = options.fetch ?? guardedFetch; + this.root = options.baseUrl.replace(/\/+$/, ""); + } + headers(extra = {}) { + const headers = new Headers(this.options.headers); + headers.set("accept", "application/json"); + if (this.options.apiKey) + headers.set("x-api-key", this.options.apiKey); + for (const [key, value] of Object.entries(extra)) + headers.set(key, value); + return headers; + } + async request(path, init = {}) { + const response = await this.fetchImpl(`${this.root}${path}`, { + ...init, + headers: this.headers(init.body ? { "content-type": "application/json" } : {}) + }); + const body = await response.json().catch(() => ({})); + if (!response.ok) { + throw new KnowledgeProjectLinksError(typeof body.error === "string" ? body.error : "KNOWLEDGE_PROJECT_LINKS_CONFLICT", typeof body.message === "string" ? body.message : `Knowledge project-links HTTP ${response.status}`, body.details && typeof body.details === "object" ? body.details : {}); + } + return body; + } + async capability() { + const body = await this.request("/v1/project-registration/capability"); + return body.capability; + } + async registerCollection(request) { + const body = await this.request("/v1/project-registration/create", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readCollection(collectionId) { + const body = await this.request("/v1/project-registration/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId }) }); + return body.record; + } + async lookupReceipt(request) { + const body = await this.request("/v1/project-registration/receipts/lookup", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async compensateRegistration(request) { + const body = await this.request("/v1/project-registration/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyRegistrationInverse(request) { + const body = await this.request("/v1/project-registration/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async bindItem(request) { + const body = await this.request("/v1/project-registration/items/bind", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readItemBinding(collectionId, itemId) { + const body = await this.request("/v1/project-registration/items/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId, item_id: itemId }) }); + return body.record; + } + async compensateItemBinding(request) { + const body = await this.request("/v1/project-registration/items/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyItemBindingInverse(request) { + const body = await this.request("/v1/project-registration/items/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async listProjectResources(projectId, options = {}) { + const query2 = new URLSearchParams; + if (options.limit !== undefined) + query2.set("limit", String(options.limit)); + if (options.cursor) + query2.set("cursor", options.cursor); + for (const kind of options.kinds ?? []) + query2.append("kind", kind); + const suffix = query2.size > 0 ? `?${query2.toString()}` : ""; + return this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources${suffix}`); + } + async readProjectResource(projectId, kind, resourceId) { + const body = await this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources/${kind}/${encodeURIComponent(resourceId)}`); + return body.resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expectedTotal = null; + let expectedRevision = null; + let expectedPopulationDigest = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + expectedTotal ??= page.total; + expectedRevision ??= page.collection_revision; + expectedPopulationDigest ??= page.population_digest; + if (page.total !== expectedTotal || page.collection_revision !== expectedRevision || page.population_digest !== expectedPopulationDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete HTTP population was being read."); + } + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP pagination returned a duplicate stable key."); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP page claims more data without a cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (expectedTotal === null || resources.length !== expectedTotal) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete HTTP resource enumeration did not match the producer total."); + } + return resources; + } +} +function createKnowledgeProjectLinksHttpClient(options) { + return new KnowledgeProjectLinksHttpClient(options); +} + // src/db/pg-migrations.ts var PG_MIGRATIONS = [ `CREATE TABLE IF NOT EXISTS sources ( @@ -18807,13 +20234,14 @@ var PG_MIGRATIONS = [ archived, id ) WHERE metadata #>> '{hasna_knowledge_relations,schema}' - = 'hasna.knowledge.relations.v1'` + = 'hasna.knowledge.relations.v1'`, + ...postgresKnowledgeProjectLinksSchemaStatements() ]; // src/serve.ts import { readFileSync as readFileSync5 } from "fs"; // node_modules/@hasna/contracts/dist/auth/index.js -import { createHash as createHash2, createHmac, randomBytes, timingSafeEqual } from "crypto"; +import { createHash as createHash3, createHmac, randomBytes, timingSafeEqual } from "crypto"; var MAX_TENANT_ID_LENGTH = 64; var TENANT_ID_PATTERN = new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${MAX_TENANT_ID_LENGTH - 1}}$`); var UUID_HEX = "[0-9a-fA-F]"; @@ -19674,7 +21102,7 @@ function makeShortId(id) { } // src/guarded-write-contract.ts -import { createHash as createHash3, randomUUID as randomUUID2 } from "crypto"; +import { createHash as createHash4, randomUUID as randomUUID2 } from "crypto"; var KNOWLEDGE_GUARDED_WRITE_CONTRACT = "FCAME-1"; var KNOWLEDGE_PRIVATE_INPUT_SCHEMA = "hasna.knowledge.private-input.v1"; var KNOWLEDGE_PRIVATE_TITLE_LOOKUP_SCHEMA = "hasna.knowledge.private-title-lookup.v1"; @@ -19931,12 +21359,12 @@ function canonicalKnowledgeGuardedJson(value) { return JSON.stringify(canonicalValue(value, "value")); } function knowledgeGuardedDigest(value) { - return createHash3("sha256").update(canonicalKnowledgeGuardedJson(value), "utf8").digest("hex"); + return createHash4("sha256").update(canonicalKnowledgeGuardedJson(value), "utf8").digest("hex"); } function knowledgeGuardedContentSha256(content) { if (typeof content !== "string") throw new Error("content must be a string."); - return createHash3("sha256").update(content, "utf8").digest("hex"); + return createHash4("sha256").update(content, "utf8").digest("hex"); } function computeKnowledgeGuardedAdoptionDeterministicKey(input) { if (!["adopt", "rollback"].includes(input.action)) { @@ -22547,6 +23975,121 @@ function knowledgeOpenApi(version) { ], additionalProperties: true }, + ProjectRegistrationCapability: { + type: "object", + required: [ + "authority", + "route", + "resource_route", + "package_version", + "authority_id", + "tenant_id", + "corpus_id", + "supported_resources", + "membership_rule" + ], + additionalProperties: true + }, + ProjectRegistrationReceipt: { + type: "object", + required: [ + "receipt_id", + "authority", + "route", + "package_version", + "authority_id", + "tenant_id", + "corpus_id", + "operation_id", + "step_id", + "action", + "resource_kind", + "direction", + "idempotency_key", + "request_digest", + "precondition_digest", + "outcome", + "created_by_operation", + "created_at" + ], + additionalProperties: true + }, + ProjectCollectionRecord: { + type: "object", + required: [ + "source_project_id", + "project_id", + "project_slug", + "project_name", + "collection_id", + "collection_slug", + "collection_name", + "membership_rule", + "revision", + "digest", + "created_at", + "updated_at" + ], + additionalProperties: false + }, + ProjectResource: { + type: "object", + required: [ + "key", + "kind", + "id", + "project_id", + "source_project_id", + "collection_id", + "revision", + "digest", + "title", + "locator", + "metadata" + ], + additionalProperties: false + }, + ProjectResourcePage: { + type: "object", + required: [ + "schema", + "authority", + "route", + "authority_id", + "tenant_id", + "corpus_id", + "project_id", + "source_project_id", + "collection_id", + "collection_revision", + "population_digest", + "resource_kinds", + "resources", + "count", + "total", + "limit", + "cursor", + "next_cursor", + "has_more", + "complete", + "truncated" + ], + properties: { + collection_revision: { type: "string" }, + population_digest: { type: "string" }, + resources: { + type: "array", + items: { $ref: "#/components/schemas/ProjectResource" } + }, + count: { type: "integer" }, + total: { type: "integer" }, + limit: { type: "integer", minimum: 1, maximum: 200 }, + has_more: { type: "boolean" }, + complete: { type: "boolean" }, + truncated: { type: "boolean", enum: [false] } + }, + additionalProperties: true + }, NoteList: { type: "object", properties: { @@ -22595,6 +24138,230 @@ function knowledgeOpenApi(version) { }, security: [{ apiKey: [] }], paths: { + "/v1/project-registration/capability": { + get: { + operationId: "getKnowledgeProjectRegistrationCapability", + summary: "Read the exact Knowledge project-registration capability identity", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + capability: { $ref: "#/components/schemas/ProjectRegistrationCapability" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/create": { + post: { + operationId: "registerKnowledgeProjectCollection", + summary: "Create or exactly adopt one project-owned Knowledge collection", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/read-exact": { + post: { + operationId: "readKnowledgeProjectCollection", + summary: "Read one project collection by exact stable collection id", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + record: { $ref: "#/components/schemas/ProjectCollectionRecord" } + } + } + } + } + }, + "404": { description: "No exact collection id." } + } + } + }, + "/v1/project-registration/receipts/lookup": { + post: { + operationId: "lookupKnowledgeProjectRegistrationReceipt", + summary: "Look up exactly one immutable registration or membership receipt", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + }, + "404": { description: "No exact terminal receipt." } + } + } + }, + "/v1/project-registration/compensate": { + post: { + operationId: "compensateKnowledgeProjectCollection", + summary: "Conditionally remove an operation-created empty collection aggregate", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/verify-inverse": { + post: { + operationId: "verifyKnowledgeProjectCollectionInverse", + summary: "Verify an accepted collection inverse by exact receipt and absence", + responses: { "200": { description: "Exact absence verification." } } + } + }, + "/v1/project-registration/items/bind": { + post: { + operationId: "bindKnowledgeItemToProjectCollection", + summary: "Explicitly bind one exact existing item to a project collection", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/items/read-exact": { + post: { + operationId: "readKnowledgeProjectItemBinding", + summary: "Read one exact collection/item membership", + responses: { + "200": { description: "Exact membership readback." }, + "404": { description: "No exact membership." } + } + } + }, + "/v1/project-registration/items/compensate": { + post: { + operationId: "compensateKnowledgeProjectItemBinding", + summary: "Conditionally remove a membership owned by the accepted binding receipt", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/items/verify-inverse": { + post: { + operationId: "verifyKnowledgeProjectItemBindingInverse", + summary: "Verify an accepted membership inverse by exact receipt and absence", + responses: { "200": { description: "Exact membership absence verification." } } + } + }, + "/v1/projects/{projectId}/resources": { + get: { + operationId: "listKnowledgeProjectResources", + summary: "Enumerate the complete stable project/collection/item/taxonomy population", + parameters: [ + { name: "projectId", in: "path", required: true, schema: { type: "string" } }, + { name: "limit", in: "query", schema: { type: "integer", minimum: 1, maximum: 200 } }, + { name: "cursor", in: "query", schema: { type: "string" } }, + { + name: "kind", + in: "query", + style: "form", + explode: true, + schema: { + type: "array", + items: { type: "string", enum: ["project", "collection", "item", "taxonomy"] } + } + } + ], + responses: { + "200": { + content: { + "application/json": { schema: { $ref: "#/components/schemas/ProjectResourcePage" } } + } + }, + "409": { description: "Cursor is stale or belongs to another population." } + } + } + }, + "/v1/projects/{projectId}/resources/{kind}/{resourceId}": { + get: { + operationId: "getKnowledgeProjectResource", + summary: "Read one project resource by exact stable kind and id", + parameters: [ + { name: "projectId", in: "path", required: true, schema: { type: "string" } }, + { + name: "kind", + in: "path", + required: true, + schema: { type: "string", enum: ["project", "collection", "item", "taxonomy"] } + }, + { name: "resourceId", in: "path", required: true, schema: { type: "string" } } + ], + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { resource: { $ref: "#/components/schemas/ProjectResource" } } + } + } + } + }, + "404": { description: "No exact resource kind and id." } + } + } + }, "/v1/notes": { get: { operationId: "listNotes", @@ -23401,6 +25168,16 @@ function parseExpectedVersion(req, body) { function createServeHandler(deps) { const repo = new NoteRepo(deps.client); const guardedRepo = deps.guardedAuthority ? new GuardedWriteRepo(deps.client, deps.guardedAuthority) : null; + const projectLinksForTenant = (tenantId) => deps.projectLinksAuthority?.(tenantId) ?? createPostgresKnowledgeProjectLinksAuthority({ + client: deps.client, + itemResolver: (id) => repo.get(id, tenantId), + options: { + packageVersion: deps.version, + authorityId: process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? KNOWLEDGE_SERVE_APP, + tenantId, + corpusId: process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? "knowledge" + } + }); const mode2 = "postgres"; const authOrThrow = async (req, requiredScopes, expectedTid) => { const url = new URL(req.url); @@ -23663,6 +25440,103 @@ function createServeHandler(deps) { const readback = await guardedRepo.readback(decodeURIComponent(guardedItemMatch[1]), binding, bounds); return readback ? boundedJson(readback, 200, bounds, startedAt) : boundedJson({ error: "not_found" }, 404, bounds, startedAt); } + if (path === "/v1/project-registration/capability") { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + return json({ capability: await projectLinksForTenant(principal.tid).capability() }); + } + if (path === "/v1/project-registration/create") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).registerCollection(body) }, 201); + } + if (path === "/v1/project-registration/read-exact") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + record: await projectLinksForTenant(principal.tid).readCollection(String(body.collection_id ?? "")) + }); + } + if (path === "/v1/project-registration/receipts/lookup") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).lookupReceipt(body) }); + } + if (path === "/v1/project-registration/compensate") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).compensateRegistration(body) }, 201); + } + if (path === "/v1/project-registration/verify-inverse") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + verification: await projectLinksForTenant(principal.tid).verifyRegistrationInverse(body) + }); + } + if (path === "/v1/project-registration/items/bind") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).bindItem(body) }, 201); + } + if (path === "/v1/project-registration/items/read-exact") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + record: await projectLinksForTenant(principal.tid).readItemBinding(String(body.collection_id ?? ""), String(body.item_id ?? "")) + }); + } + if (path === "/v1/project-registration/items/compensate") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).compensateItemBinding(body) }, 201); + } + if (path === "/v1/project-registration/items/verify-inverse") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + verification: await projectLinksForTenant(principal.tid).verifyItemBindingInverse(body) + }); + } + const exactProjectResourceMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources\/(project|collection|item|taxonomy)\/([^/]+)$/); + if (exactProjectResourceMatch) { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const resource = await projectLinksForTenant(principal.tid).readProjectResource(decodeURIComponent(exactProjectResourceMatch[1]), exactProjectResourceMatch[2], decodeURIComponent(exactProjectResourceMatch[3])); + return json({ resource }); + } + const projectResourcesMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources$/); + if (projectResourcesMatch) { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const page = await projectLinksForTenant(principal.tid).listProjectResources(decodeURIComponent(projectResourcesMatch[1]), { + limit: url.searchParams.has("limit") ? Number(url.searchParams.get("limit")) : undefined, + cursor: url.searchParams.get("cursor"), + kinds: url.searchParams.getAll("kind") + }); + return json(page); + } if (path === "/v1/notes/search") { if (method !== "GET") return json({ error: "method_not_allowed" }, 405); @@ -23770,6 +25644,9 @@ function createServeHandler(deps) { } return json({ error: "not_found", path }, 404); } catch (error) { + if (error instanceof KnowledgeProjectLinksError) { + return knowledgeProjectLinksErrorResponse(error); + } if (error instanceof HttpError) { const reason = error.status === 401 || error.status === 403 ? "unauthorized" : "error"; return json({ error: reason, message: error.message }, error.status); @@ -24005,17 +25882,17 @@ function createArtifactStore(config, workspace) { } // src/service.ts -import { createHash as createHash22 } from "crypto"; +import { createHash as createHash23 } from "crypto"; import { spawnSync as spawnSync2 } from "child_process"; import { existsSync as existsSync14, readFileSync as readFileSync15 } from "fs"; import { hostname as hostname5 } from "os"; import { join as join9, resolve as resolve5 } from "path"; // src/app-wiki.ts -import { createHash as createHash9, randomUUID as randomUUID5 } from "crypto"; +import { createHash as createHash10, randomUUID as randomUUID5 } from "crypto"; // src/storage-contract.ts -import { createHash as createHash4, randomUUID as randomUUID3 } from "crypto"; +import { createHash as createHash5, randomUUID as randomUUID3 } from "crypto"; import { existsSync as existsSync5, readdirSync } from "fs"; import { join as join6 } from "path"; import { pathToFileURL as pathToFileURL2 } from "url"; @@ -24161,7 +26038,7 @@ function forbiddenWorkspaceFilesPresent(workspace) { function hashArtifactBody(body) { const bytes = typeof body === "string" ? Buffer.from(body) : Buffer.from(body); return { - hash: `sha256:${createHash4("sha256").update(bytes).digest("hex")}`, + hash: `sha256:${createHash5("sha256").update(bytes).digest("hex")}`, size_bytes: bytes.byteLength }; } @@ -24435,12 +26312,12 @@ function withProvenance(metadata, provenance) { } // src/source-ingest.ts -import { createHash as createHash8 } from "crypto"; +import { createHash as createHash9 } from "crypto"; import { existsSync as existsSync7, readFileSync as readFileSync9 } from "fs"; import { basename as basename3 } from "path"; // src/manifest-ingest.ts -import { createHash as createHash7 } from "crypto"; +import { createHash as createHash8 } from "crypto"; import { existsSync as existsSync6, readFileSync as readFileSync8 } from "fs"; import { basename as basename2 } from "path"; @@ -24517,7 +26394,7 @@ function isSupportedSourceRef(uri) { } // src/safety.ts -import { createHash as createHash5, randomUUID as randomUUID4 } from "crypto"; +import { createHash as createHash6, randomUUID as randomUUID4 } from "crypto"; import { relative as relative2, resolve as resolve2, sep as sep2 } from "path"; function envEnabled(name) { const value = process.env[name]; @@ -24612,7 +26489,7 @@ function redactSecrets(text, policy) { return { text: output, findings }; } function auditId(input) { - return `audit_${createHash5("sha256").update(`${input.event_type}\x00${input.action}\x00${input.target_uri ?? ""}\x00${input.created_at ?? ""}\x00${JSON.stringify(input.metadata ?? {})}\x00${randomUUID4()}`).digest("hex").slice(0, 24)}`; + return `audit_${createHash6("sha256").update(`${input.event_type}\x00${input.action}\x00${input.target_uri ?? ""}\x00${input.created_at ?? ""}\x00${JSON.stringify(input.metadata ?? {})}\x00${randomUUID4()}`).digest("hex").slice(0, 24)}`; } function truncateAuditMetadata(value, depth = 0) { if (depth > 6) @@ -24700,7 +26577,7 @@ var COMMON_BARE_TOKEN_PATTERNS = [ REDACTION_PATTERNS.push(...COMMON_BARE_TOKEN_PATTERNS); // src/private-ref.ts -import { createHash as createHash6 } from "crypto"; +import { createHash as createHash7 } from "crypto"; import { realpathSync } from "fs"; import { homedir as homedir3, tmpdir } from "os"; var PATH_TAIL = String.raw`[^\s"'<>),\]}]`; @@ -24745,7 +26622,7 @@ function hostRootPatterns() { return hostRootCache; } function fingerprint(value) { - return createHash6("sha256").update(value).digest("hex").slice(0, 12); + return createHash7("sha256").update(value).digest("hex").slice(0, 12); } function preview(value) { return value.length <= 80 ? value : `${value.slice(0, 77)}...`; @@ -24856,7 +26733,7 @@ var DEFAULT_MAX_MANIFEST_INPUT_BYTES = 20 * 1024 * 1024; var DEFAULT_MAX_MANIFEST_ITEMS = 1e4; var DEFAULT_MANIFEST_PREVIEW_ITEMS = 10; function stableId(prefix, value) { - return `${prefix}_${createHash7("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash8("sha256").update(value).digest("hex").slice(0, 20)}`; } function asObject(value) { return value && typeof value === "object" && !Array.isArray(value) ? value : undefined; @@ -25636,7 +27513,7 @@ async function resolveOpenFilesSource(options) { // src/source-ingest.ts function sha256Text(text) { - return `sha256:${createHash8("sha256").update(text).digest("hex")}`; + return `sha256:${createHash9("sha256").update(text).digest("hex")}`; } function stripHtml(html) { return html.replace(/<script[\s\S]*?<\/script>/gi, " ").replace(/<style[\s\S]*?<\/style>/gi, " ").replace(/<[^>]+>/g, " ").replace(/ /g, " ").replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/\s+\n/g, ` @@ -25864,7 +27741,7 @@ async function ingestSourceRef(options) { // src/app-wiki.ts function stableId2(prefix, value) { - return `${prefix}_${createHash9("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash10("sha256").update(value).digest("hex").slice(0, 20)}`; } function slugify(value) { const slug = value.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80); @@ -26527,20 +28404,20 @@ function recordProviderUsage(db, input) { } // src/retrieval.ts -import { createHash as createHash11 } from "crypto"; +import { createHash as createHash12 } from "crypto"; // src/search.ts import { existsSync as existsSync8, readFileSync as readFileSync10 } from "fs"; // src/embeddings.ts -import { createHash as createHash10 } from "crypto"; +import { createHash as createHash11 } from "crypto"; var DEFAULT_EMBEDDING_MODEL_REF = "openai:text-embedding-3-small"; var DEFAULT_EMBEDDING_DIMENSIONS = 1536; function embeddingConfig(config) { return config?.embeddings ?? {}; } function stableId3(prefix, value) { - return `${prefix}_${createHash10("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash11("sha256").update(value).digest("hex").slice(0, 20)}`; } function parseJsonObject3(value) { if (!value) @@ -26582,7 +28459,7 @@ function cosineSimilarity(a, b, bNorm = vectorNorm(b)) { return dot / (aNorm * bNorm); } function deterministicVector(text, dimensions) { - const bytes = createHash10("sha256").update(text).digest(); + const bytes = createHash11("sha256").update(text).digest(); return Array.from({ length: dimensions }, (_, index) => { const value = bytes[index % bytes.length] / 255; return Number((value * 2 - 1).toFixed(6)); @@ -27471,7 +29348,7 @@ function hybridSearchFromProducerPage(hits, options, warnings = [], producerTota // src/retrieval.ts function stableId4(prefix, value) { - return `${prefix}_${createHash11("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash12("sha256").update(value).digest("hex").slice(0, 20)}`; } function normalizeQuery(query2) { return query2.normalize("NFKC").trim().replace(/\s+/g, " ").toLowerCase(); @@ -28066,14 +29943,14 @@ ${answer}`; } // src/context-pack.ts -import { createHash as createHash12 } from "crypto"; +import { createHash as createHash13 } from "crypto"; var DEFAULT_MAX_TOKENS = 1200; var DEFAULT_MAX_ITEMS = 6; var MAX_MAX_TOKENS = 12000; var MAX_MAX_ITEMS = 50; var MIN_MAX_TOKENS = 800; function stableId5(prefix, value, size = 16) { - return `${prefix}_${createHash12("sha256").update(value).digest("hex").slice(0, size)}`; + return `${prefix}_${createHash13("sha256").update(value).digest("hex").slice(0, size)}`; } function normalizeText(value) { return value.normalize("NFKC").trim().replace(/\s+/g, " "); @@ -28646,7 +30523,7 @@ async function buildKnowledgeAgentContextPack(options) { import { randomUUID as randomUUID9 } from "crypto"; // src/sync.ts -import { createHash as createHash13, randomUUID as randomUUID8 } from "crypto"; +import { createHash as createHash14, randomUUID as randomUUID8 } from "crypto"; import { existsSync as existsSync9, readFileSync as readFileSync11 } from "fs"; import { hostname } from "os"; import { fileURLToPath as fileURLToPath2 } from "url"; @@ -28731,7 +30608,7 @@ function stableJson(value) { return JSON.stringify(value); } function sha256(value) { - return `sha256:${createHash13("sha256").update(value).digest("hex")}`; + return `sha256:${createHash14("sha256").update(value).digest("hex")}`; } function count2(db, table) { const row = db.query(`SELECT COUNT(*) AS n FROM ${table}`).get(); @@ -30785,11 +32662,11 @@ async function proposeKnowledgeSyncConflictResolutionWithAi(options) { } // src/outbox-consume.ts -import { createHash as createHash14, randomUUID as randomUUID10 } from "crypto"; +import { createHash as createHash15, randomUUID as randomUUID10 } from "crypto"; import { existsSync as existsSync10, readFileSync as readFileSync12 } from "fs"; import { basename as basename4 } from "path"; function stableId6(prefix, value) { - return `${prefix}_${createHash14("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash15("sha256").update(value).digest("hex").slice(0, 20)}`; } function asObject2(value) { return value && typeof value === "object" && !Array.isArray(value) ? value : undefined; @@ -32385,9 +34262,9 @@ function createKnowledgeMachinesAdapter(defaults = {}) { } // src/promotion-inbox.ts -import { createHash as createHash15 } from "crypto"; +import { createHash as createHash16 } from "crypto"; function stableId7(prefix, value, length = 24) { - return `${prefix}_${createHash15("sha256").update(value).digest("hex").slice(0, length)}`; + return `${prefix}_${createHash16("sha256").update(value).digest("hex").slice(0, length)}`; } function normalizedText(value) { return value.normalize("NFKC").trim().replace(/\s+/g, " "); @@ -32603,7 +34480,7 @@ function enqueueKnowledgePromotion(dbPath, input) { const canonicalKey = normalizedKey(input.canonicalKey ?? titleResult.text); if (!canonicalKey) throw new Error("Promotion canonical key is empty after normalization."); - const contentHash = `sha256:${createHash15("sha256").update(`${input.kind}\x00${normalizedText(contentResult.text).toLowerCase()}`).digest("hex")}`; + const contentHash = `sha256:${createHash16("sha256").update(`${input.kind}\x00${normalizedText(contentResult.text).toLowerCase()}`).digest("hex")}`; const idempotencyKey = stableId7("promote", [ input.sourceKind, input.kind, @@ -32878,9 +34755,9 @@ function listDurableKnowledgeRecords(dbPath, options = {}) { } // src/reindex.ts -import { createHash as createHash16, randomUUID as randomUUID11 } from "crypto"; +import { createHash as createHash17, randomUUID as randomUUID11 } from "crypto"; function stableId8(prefix, value) { - return `${prefix}_${createHash16("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash17("sha256").update(value).digest("hex").slice(0, 20)}`; } function queueCounts(dbPath) { const db = openKnowledgeDb(dbPath); @@ -33065,7 +34942,7 @@ async function refreshEmbeddingIndex(options) { } // src/rules-provenance.ts -import { createHash as createHash17 } from "crypto"; +import { createHash as createHash18 } from "crypto"; import { existsSync as existsSync11, lstatSync as lstatSync2, readdirSync as readdirSync2, readFileSync as readFileSync13, statSync as statSync3 } from "fs"; import { basename as basename5, extname as extname2, join as join7, relative as relative4, resolve as resolve4, sep as sep4 } from "path"; import { pathToFileURL as pathToFileURL3 } from "url"; @@ -33097,10 +34974,10 @@ var SKIP_DIRECTORIES = new Set([ var SENSITIVE_PATH_RE = /(^|[._-])(secret|secrets|token|tokens|credential|credentials|password|passwd|private[_-]?key|id_rsa)([._-]|$)/i; var SELECTED_PROMPT_OR_PLAN_RE = /(agent|rule|rules|instruction|instructions|global|operating|standard|knowledge)/i; function sha256Text2(text) { - return `sha256:${createHash17("sha256").update(text).digest("hex")}`; + return `sha256:${createHash18("sha256").update(text).digest("hex")}`; } function sha256Bytes(bytes) { - return `sha256:${createHash17("sha256").update(bytes).digest("hex")}`; + return `sha256:${createHash18("sha256").update(bytes).digest("hex")}`; } function normalizePath(value) { return value.split(sep4).join("/"); @@ -33617,9 +35494,9 @@ async function importRulesProvenance(options = {}) { } // src/web-search.ts -import { createHash as createHash18, randomUUID as randomUUID12 } from "crypto"; +import { createHash as createHash19, randomUUID as randomUUID12 } from "crypto"; function stableHash(value) { - return `sha256:${createHash18("sha256").update(value).digest("hex")}`; + return `sha256:${createHash19("sha256").update(value).digest("hex")}`; } function estimateTokens3(text) { const words = text.trim().split(/\s+/).filter(Boolean).length; @@ -33868,9 +35745,9 @@ async function runProviderWebSearch(options) { } // src/wiki-compiler.ts -import { createHash as createHash19, randomUUID as randomUUID13 } from "crypto"; +import { createHash as createHash20, randomUUID as randomUUID13 } from "crypto"; function stableId9(prefix, value) { - return `${prefix}_${createHash19("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash20("sha256").update(value).digest("hex").slice(0, 20)}`; } function slugify3(value) { const slug = value.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80); @@ -34660,7 +36537,7 @@ function resolveItemStore(options) { } // src/wiki-layout.ts -import { createHash as createHash20 } from "crypto"; +import { createHash as createHash21 } from "crypto"; function todayParts2(now) { const year = String(now.getUTCFullYear()); const month = String(now.getUTCMonth() + 1).padStart(2, "0"); @@ -34668,7 +36545,7 @@ function todayParts2(now) { return { year, month, day }; } function stableId10(prefix, value) { - return `${prefix}_${createHash20("sha256").update(value).digest("hex").slice(0, 20)}`; + return `${prefix}_${createHash21("sha256").update(value).digest("hex").slice(0, 20)}`; } function estimateTokenCount4(text) { const words = text.trim().split(/\s+/).filter(Boolean).length; @@ -34866,7 +36743,7 @@ function recordWikiLayoutCatalog(db, artifacts, now = new Date) { } // src/workspace-migration.ts -import { createHash as createHash21 } from "crypto"; +import { createHash as createHash22 } from "crypto"; import { cpSync, chmodSync as chmodSync4, @@ -34893,12 +36770,12 @@ function walkFiles(root, base = root) { function hashFiles(root, files) { if (files.length === 0) return { sha256: null, bytes: 0 }; - const tree = createHash21("sha256"); + const tree = createHash22("sha256"); let bytes = 0; for (const file2 of files) { const path = join8(root, file2); const body = readFileSync14(path); - const fileHash = createHash21("sha256").update(body).digest("hex"); + const fileHash = createHash22("sha256").update(body).digest("hex"); bytes += body.byteLength; tree.update(file2); tree.update("\x00"); @@ -35503,6 +37380,118 @@ function migrateLegacyKnowledgeWorkspace(options) { message: ok ? `Migrated legacy knowledge workspace to ${options.current.home}` : `Migrated legacy knowledge workspace, but verification failed for ${options.current.home}` }; } +// package.json +var package_default = { + name: "@hasna/knowledge", + version: "0.2.102", + 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/live-private-query.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", + "live:private-query": "bun scripts/live-private-query.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" + } +}; // src/service.ts function resolvePeerWorkspace(input) { @@ -35513,7 +37502,7 @@ function resolvePeerWorkspace(input) { return ensureKnowledgeWorkspace(workspaceForHome(projectKnowledgeHome(target)).home); } function workspaceMachineId(workspace) { - return `${hostname5()}:${createHash22("sha256").update(workspace.home).digest("hex").slice(0, 12)}`; + return `${hostname5()}:${createHash23("sha256").update(workspace.home).digest("hex").slice(0, 12)}`; } function shellQuote2(value) { return `'${value.replace(/'/g, "'\\''")}'`; @@ -35989,7 +37978,7 @@ function legacyAgentContextPack(options, context, policy) { redactions += quote.redactions; const ref = citation.source_ref ?? citation.source_uri ?? citation.artifact_path ?? citation.artifact_uri ?? citation.id; return { - id: `cite_${createHash22("sha256").update(`${citation.id}\x00${ref}`).digest("hex").slice(0, 12)}`, + id: `cite_${createHash23("sha256").update(`${citation.id}\x00${ref}`).digest("hex").slice(0, 12)}`, kind: citation.artifact_uri || citation.artifact_path ? "artifact" : "source", ref, source_ref: citation.source_ref, @@ -36015,7 +38004,7 @@ function legacyAgentContextPack(options, context, policy) { const preview2 = redactPreviewForPack(excerpt2.text, policy, 520); redactions += preview2.redactions; return { - id: `ev_${createHash22("sha256").update(`${excerpt2.kind}\x00${excerpt2.result_id}\x00${excerpt2.citation_id ?? ""}`).digest("hex").slice(0, 14)}`, + id: `ev_${createHash23("sha256").update(`${excerpt2.kind}\x00${excerpt2.result_id}\x00${excerpt2.citation_id ?? ""}`).digest("hex").slice(0, 14)}`, kind: excerpt2.kind, title: compactText(result?.title ?? citation?.ref ?? excerpt2.kind, 100), text_preview: preview2.text, @@ -36033,7 +38022,7 @@ function legacyAgentContextPack(options, context, policy) { const usedCitationIds = new Set(evidence.flatMap((entry) => entry.citation_ids)); const usedCitations = citations.filter((citation) => usedCitationIds.has(citation.id)); const warnings = Array.from(new Set(context.warnings)); - const idempotencyKey = `ctx_${createHash22("sha256").update([source, purpose, query2, warnings.join(","), evidence.map((entry) => entry.id).join(",")].join("\x00")).digest("hex").slice(0, 20)}`; + const idempotencyKey = `ctx_${createHash23("sha256").update([source, purpose, query2, warnings.join(","), evidence.map((entry) => entry.id).join(",")].join("\x00")).digest("hex").slice(0, 20)}`; const pack = { ok: true, format: "knowledge-agent-context-pack", @@ -36146,7 +38135,7 @@ function emptyAgentContextPack(options) { const query2 = (options.query ?? options.topic ?? "").normalize("NFKC").trim().replace(/\s+/g, " "); const maxItems = Math.max(1, Math.min(options.maxItems ?? options.limit ?? 8, 50)); const maxTokens = Math.max(500, Math.min(options.maxTokens ?? 6000, 1e5)); - const idempotencyKey = `ctx_${createHash22("sha256").update(["empty", source, purpose, query2, options.topic ?? "", options.since ?? ""].join("\x00")).digest("hex").slice(0, 20)}`; + const idempotencyKey = `ctx_${createHash23("sha256").update(["empty", source, purpose, query2, options.topic ?? "", options.since ?? ""].join("\x00")).digest("hex").slice(0, 20)}`; return { ok: true, format: "knowledge-agent-context-pack", @@ -36514,6 +38503,7 @@ class KnowledgeService { options; ensuredWorkspace; cachedConfig; + cachedProjectLinksAuthority; constructor(options = {}) { this.options = options; } @@ -36538,6 +38528,35 @@ class KnowledgeService { storePathOverridden: false }); } + projectLinksAuthority() { + if (this.options.projectLinksAuthority) + return this.options.projectLinksAuthority; + if (this.cachedProjectLinksAuthority) + return this.cachedProjectLinksAuthority; + if (isKnowledgeApiMode()) { + const { apiKey } = getKnowledgeApiKey(process.env); + if (!apiKey) { + throw new Error("Knowledge project links require the configured API credential in postgres mode."); + } + this.cachedProjectLinksAuthority = createKnowledgeProjectLinksHttpClient({ + baseUrl: resolveKnowledgeApiUrl(this.config(), process.env), + apiKey + }); + return this.cachedProjectLinksAuthority; + } + const workspace = this.ensureWorkspace(); + this.cachedProjectLinksAuthority = createLocalKnowledgeProjectLinksAuthority({ + databasePath: workspace.knowledgeDbPath, + itemStore: this.itemStore(), + options: { + packageVersion: package_default.version, + authorityId: this.options.projectLinksIdentity?.authorityId ?? process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? "knowledge", + tenantId: this.options.projectLinksIdentity?.tenantId ?? process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID ?? "local", + corpusId: this.options.projectLinksIdentity?.corpusId ?? process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? "knowledge" + } + }); + return this.cachedProjectLinksAuthority; + } async listItems(options = {}) { return this.itemStore().list(options); } @@ -38083,6 +40102,21 @@ function createKnowledgeClient(options = {}) { delete: (idOrShort) => service.deleteItem(idOrShort), deleteMany: (idsOrShorts) => service.deleteItems(idsOrShorts) }, + projectLinks: { + capability: () => service.projectLinksAuthority().capability(), + registerCollection: (request) => service.projectLinksAuthority().registerCollection(request), + readCollection: (collectionId) => service.projectLinksAuthority().readCollection(collectionId), + lookupReceipt: (request) => service.projectLinksAuthority().lookupReceipt(request), + compensateRegistration: (request) => service.projectLinksAuthority().compensateRegistration(request), + verifyRegistrationInverse: (request) => service.projectLinksAuthority().verifyRegistrationInverse(request), + bindItem: (request) => service.projectLinksAuthority().bindItem(request), + readItemBinding: (collectionId, itemId) => service.projectLinksAuthority().readItemBinding(collectionId, itemId), + compensateItemBinding: (request) => service.projectLinksAuthority().compensateItemBinding(request), + verifyItemBindingInverse: (request) => service.projectLinksAuthority().verifyItemBindingInverse(request), + listResources: (projectId, input = {}) => service.projectLinksAuthority().listProjectResources(projectId, input), + readResource: (projectId, kind, resourceId) => service.projectLinksAuthority().readProjectResource(projectId, kind, resourceId), + readAllResources: (projectId, input = {}) => service.projectLinksAuthority().readAllProjectResources(projectId, input) + }, inventory: (input = {}) => service.resolveInventory(input), db: { init: () => service.initDb(), @@ -38923,7 +40957,7 @@ function createKnowledgeGuardedWriter(options) { return new GuardedWriter(transport, options.binding, normalizeKnowledgeGuardedLimits(options.limits), options.require_manifest === true); } // node_modules/@hasna/contracts/dist/index.js -import { createHash as createHash23 } from "crypto"; +import { createHash as createHash24 } from "crypto"; var __defProp2 = Object.defineProperty; var __returnValue2 = (v) => v; function __exportSetter2(name, newValue) { @@ -44754,7 +46788,7 @@ function deriveTaskToPrIdentityDigest(input) { input.baseHead.value, input.frozenScopeDigest ]); - return createHash23("sha256").update(legacyCanonicalBinding, "utf8").digest("hex"); + return createHash24("sha256").update(legacyCanonicalBinding, "utf8").digest("hex"); } const canonicalBinding = JSON.stringify([ "hasna.task_to_pr_projection.binding.v2", @@ -44764,7 +46798,7 @@ function deriveTaskToPrIdentityDigest(input) { input.baseHead.value, input.frozenScopeDigest ]); - return createHash23("sha256").update(canonicalBinding, "utf8").digest("hex"); + return createHash24("sha256").update(canonicalBinding, "utf8").digest("hex"); } var TaskToPrAttemptSchema = exports_external2.object({ ref: taskToPrRefFor("attempt"), @@ -47900,6 +49934,7 @@ export { syncTablesFromSnapshot, syncArtifactsFromSnapshot, startKnowledgeServe, + sqliteKnowledgeProjectLinksSchemaSql, serverStorageMode, searchVectorIndex, saveKnowledgeAuth, @@ -47935,6 +49970,7 @@ export { proposeKnowledgeSyncConflictResolutionWithAi, projectKnowledgeHome, preflightKnowledgeMachine, + postgresKnowledgeProjectLinksSchemaStatements, pinnedTransportEnv, parseStorageTables, parseSourceRef, @@ -47992,13 +50028,17 @@ export { embeddingIndexStatus, embedTexts, discoverKnowledgeMachineTopology, + digestKnowledgeProjectLinksValue, defaultKnowledgeConfig, createServeHandler, + createPostgresKnowledgeProjectLinksAuthority, + createLocalKnowledgeProjectLinksAuthority, createKnowledgeSyncSnapshot, createKnowledgeSyncBundle, createKnowledgeService, createKnowledgeSdk, createKnowledgeProjectPanel, + createKnowledgeProjectLinksHttpClient, createKnowledgePrivateTitleLookupDescriptor, createKnowledgePrivateQueryDescriptor, createKnowledgePrivateInputDescriptor, @@ -48021,6 +50061,7 @@ export { compileWikiPage, clearKnowledgeAuth, catalogSourceUriForRef, + canonicalKnowledgeProjectLinksJson, canonicalKnowledgeGuardedJson, canonicalExampleKnowledgeStorage, buildKnowledgeAgentContextPack, @@ -48050,6 +50091,8 @@ export { LOCAL_MODE_CANDIDATES, LEGACY_HASNA_KNOWLEDGE_APP_PATH, KnowledgeService, + KnowledgeProjectLinksHttpClient, + KnowledgeProjectLinksError, KnowledgePrivateTitleLookupAmbiguousError, KnowledgePrivateQueryResponseError, KnowledgeNetworkGuardError, @@ -48075,6 +50118,10 @@ export { KNOWLEDGE_RESOURCE, KNOWLEDGE_RELATIONS_SCHEMA, KNOWLEDGE_RELATIONS_METADATA_KEY, + KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, KNOWLEDGE_PRIVATE_TITLE_LOOKUP_SCHEMA, KNOWLEDGE_PRIVATE_RESULT_SCHEMA, KNOWLEDGE_PRIVATE_QUERY_SCHEMA, diff --git a/dist/project-links.d.ts b/dist/project-links.d.ts new file mode 100644 index 0000000..9cab92d --- /dev/null +++ b/dist/project-links.d.ts @@ -0,0 +1,251 @@ +import type { ItemStore } from './item-store.js'; +import type { KnowledgeItem } from './store.js'; +import type { PoolQueryClient } from './generated/storage-kit/index.js'; +export declare const KNOWLEDGE_PROJECT_REGISTRATION_ROUTE: 'knowledge.project-registration.v1'; +export declare const KNOWLEDGE_PROJECT_RESOURCES_ROUTE: 'knowledge.project-resources.v1'; +export declare const KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION: 1; +export declare const KNOWLEDGE_PROJECT_MEMBERSHIP_RULE: 'explicit_collection_binding'; +export type KnowledgeProjectResourceKind = 'project' | 'collection' | 'item' | 'taxonomy'; +export type KnowledgeProjectRegistrationDirection = 'forward' | 'inverse'; +export type KnowledgeProjectReceiptAction = 'register_collection' | 'bind_item'; +export type KnowledgeProjectReceiptOutcome = 'accepted' | 'terminal_nonacceptance'; +export interface KnowledgeProjectAuthorityIdentity { + authority_id: string; + tenant_id: string; + corpus_id: string; +} +export interface KnowledgeProjectRegistrationCapability extends KnowledgeProjectAuthorityIdentity { + authority: 'knowledge'; + route: typeof KNOWLEDGE_PROJECT_REGISTRATION_ROUTE; + resource_route: typeof KNOWLEDGE_PROJECT_RESOURCES_ROUTE; + package_version: string; + schema_version: typeof KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION; + registration_resource: 'collection'; + supported_resources: ['project', 'collection', 'item', 'taxonomy']; + stable_project_ids: true; + stable_collection_ids: true; + explicit_membership: true; + membership_rule: typeof KNOWLEDGE_PROJECT_MEMBERSHIP_RULE; + later_child_binding_required: true; + bind_existing_items: true; + immutable_receipts: true; + exact_terminal_lookup: true; + exact_readback: true; + conditional_inverse: true; + complete_keyset_pagination: true; + revision_bound_cursors: true; +} +export interface KnowledgeProjectRegistrationRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + resource_kind: 'collection'; + direction: KnowledgeProjectRegistrationDirection; + authority_route: string; + package_version: string; + target_selector: string; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + project_id: string; + project_slug: string; + project_name: string; + desired: { + collection_slug?: string; + collection_name?: string; + }; +} +export interface KnowledgeProjectItemBindingRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + direction: KnowledgeProjectRegistrationDirection; + authority_route: string; + package_version: string; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + collection_id: string; + item_id: string; +} +export interface KnowledgeProjectInverseRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + authority_route: string; + package_version: string; + idempotency_key: string; + accepted_receipt_id: string; +} +export interface KnowledgeProjectReceiptLookupRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + action: KnowledgeProjectReceiptAction; + direction: KnowledgeProjectRegistrationDirection; + idempotency_key: string; + max_items: 1; +} +export interface KnowledgeProjectRegistrationReceipt extends KnowledgeProjectAuthorityIdentity { + receipt_id: string; + authority: 'knowledge'; + route: typeof KNOWLEDGE_PROJECT_REGISTRATION_ROUTE; + package_version: string; + operation_id: string; + step_id: string; + action: KnowledgeProjectReceiptAction; + resource_kind: 'collection' | 'item'; + direction: KnowledgeProjectRegistrationDirection; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + outcome: KnowledgeProjectReceiptOutcome; + reason: string | null; + source_project_id: string | null; + project_id: string | null; + collection_id: string | null; + item_id: string | null; + result_revision: string | null; + result_digest: string | null; + accepted_receipt_id: string | null; + created_by_operation: boolean; + created_at: string; +} +export interface KnowledgeProjectCollectionRecord { + source_project_id: string; + project_id: string; + project_slug: string; + project_name: string; + collection_id: string; + collection_slug: string; + collection_name: string; + membership_rule: typeof KNOWLEDGE_PROJECT_MEMBERSHIP_RULE; + revision: string; + digest: string; + created_at: string; + updated_at: string; +} +export interface KnowledgeProjectItemBindingRecord { + collection_id: string; + item_id: string; + revision: string; + digest: string; + bound_at: string; +} +export interface KnowledgeProjectInverseVerification { + accepted_receipt_id: string; + target_id: string; + absent: true; + digest: string; +} +export interface KnowledgeProjectResource { + key: string; + kind: KnowledgeProjectResourceKind; + id: string; + project_id: string; + source_project_id: string; + collection_id: string; + revision: string; + digest: string; + title: string; + locator: { + kind: 'external_uuid' | 'canonical_uri'; + value: string; + }; + metadata: Record<string, unknown>; +} +export interface KnowledgeProjectResourcePage { + schema: 'knowledge.project-resources.page.v1'; + authority: 'knowledge'; + route: typeof KNOWLEDGE_PROJECT_RESOURCES_ROUTE; + authority_id: string; + tenant_id: string; + corpus_id: string; + project_id: string; + source_project_id: string; + collection_id: string; + collection_revision: string; + population_digest: string; + resource_kinds: KnowledgeProjectResourceKind[]; + resources: KnowledgeProjectResource[]; + count: number; + total: number; + limit: number; + cursor: string | null; + next_cursor: string | null; + has_more: boolean; + complete: boolean; + truncated: false; +} +export interface KnowledgeProjectResourceListOptions { + limit?: number; + cursor?: string | null; + kinds?: KnowledgeProjectResourceKind[]; +} +export interface KnowledgeProjectLinksAuthority { + capability(): Promise<KnowledgeProjectRegistrationCapability>; + registerCollection(request: KnowledgeProjectRegistrationRequest): Promise<KnowledgeProjectRegistrationReceipt>; + readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord>; + lookupReceipt(request: KnowledgeProjectReceiptLookupRequest): Promise<KnowledgeProjectRegistrationReceipt>; + compensateRegistration(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt>; + verifyRegistrationInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification>; + bindItem(request: KnowledgeProjectItemBindingRequest): Promise<KnowledgeProjectRegistrationReceipt>; + readItemBinding(collectionId: string, itemId: string): Promise<KnowledgeProjectItemBindingRecord>; + compensateItemBinding(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt>; + verifyItemBindingInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification>; + listProjectResources(projectId: string, options?: KnowledgeProjectResourceListOptions): Promise<KnowledgeProjectResourcePage>; + readProjectResource(projectId: string, kind: KnowledgeProjectResourceKind, resourceId: string): Promise<KnowledgeProjectResource>; + readAllProjectResources(projectId: string, options?: Omit<KnowledgeProjectResourceListOptions, 'cursor'>): Promise<KnowledgeProjectResource[]>; +} +export type KnowledgeProjectLinksErrorCode = 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT' | 'KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH' | 'KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH' | 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH' | 'KNOWLEDGE_PROJECT_LINKS_CONFLICT' | 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND' | 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE' | 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION'; +export declare class KnowledgeProjectLinksError extends Error { + readonly code: KnowledgeProjectLinksErrorCode; + readonly details: Record<string, unknown>; + constructor(code: KnowledgeProjectLinksErrorCode, message: string, details?: Record<string, unknown>); +} +export interface KnowledgeProjectLinksAuthorityOptions { + authorityId: string; + tenantId: string; + corpusId: string; + packageVersion: string; + now?: () => string; +} +export declare function sqliteKnowledgeProjectLinksSchemaSql(): string; +export declare function postgresKnowledgeProjectLinksSchemaStatements(): string[]; +export declare function canonicalKnowledgeProjectLinksJson(value: unknown): string; +export declare function digestKnowledgeProjectLinksValue(value: unknown): string; +export declare function createLocalKnowledgeProjectLinksAuthority(input: { + databasePath: string; + itemStore: ItemStore; + options: KnowledgeProjectLinksAuthorityOptions; +}): KnowledgeProjectLinksAuthority; +export declare function createPostgresKnowledgeProjectLinksAuthority(input: { + client: PoolQueryClient; + itemResolver: (id: string) => Promise<KnowledgeItem | null>; + options: KnowledgeProjectLinksAuthorityOptions; +}): KnowledgeProjectLinksAuthority; +export declare function knowledgeProjectLinksErrorResponse(error: unknown): Response; +export interface KnowledgeProjectLinksHttpClientOptions { + baseUrl: string; + apiKey?: string; + fetch?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>; + headers?: Record<string, string>; +} +export declare class KnowledgeProjectLinksHttpClient implements KnowledgeProjectLinksAuthority { + private readonly options; + private readonly fetchImpl; + private readonly root; + constructor(options: KnowledgeProjectLinksHttpClientOptions); + private headers; + private request; + capability(): Promise<KnowledgeProjectRegistrationCapability>; + registerCollection(request: KnowledgeProjectRegistrationRequest): Promise<KnowledgeProjectRegistrationReceipt>; + readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord>; + lookupReceipt(request: KnowledgeProjectReceiptLookupRequest): Promise<KnowledgeProjectRegistrationReceipt>; + compensateRegistration(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt>; + verifyRegistrationInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification>; + bindItem(request: KnowledgeProjectItemBindingRequest): Promise<KnowledgeProjectRegistrationReceipt>; + readItemBinding(collectionId: string, itemId: string): Promise<KnowledgeProjectItemBindingRecord>; + compensateItemBinding(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt>; + verifyItemBindingInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification>; + listProjectResources(projectId: string, options?: KnowledgeProjectResourceListOptions): Promise<KnowledgeProjectResourcePage>; + readProjectResource(projectId: string, kind: KnowledgeProjectResourceKind, resourceId: string): Promise<KnowledgeProjectResource>; + readAllProjectResources(projectId: string, options?: Omit<KnowledgeProjectResourceListOptions, 'cursor'>): Promise<KnowledgeProjectResource[]>; +} +export declare function createKnowledgeProjectLinksHttpClient(options: KnowledgeProjectLinksHttpClientOptions): KnowledgeProjectLinksAuthority; diff --git a/dist/sdk.d.ts b/dist/sdk.d.ts index 104a833..31deccc 100644 --- a/dist/sdk.d.ts +++ b/dist/sdk.d.ts @@ -1,6 +1,7 @@ import { KnowledgeService, type KnowledgeServiceOptions } from './service.js'; import type { KnowledgeItem } from './store.js'; import type { ItemStore, ItemCreateInput, ItemPatch, ItemListOptions, ItemListResult } from './item-store.js'; +import type { KnowledgeProjectInverseRequest, KnowledgeProjectItemBindingRequest, KnowledgeProjectReceiptLookupRequest, KnowledgeProjectRegistrationRequest, KnowledgeProjectResourceKind, KnowledgeProjectResourceListOptions } from './project-links.js'; /** * The unified knowledge-item Store surface, mirrored on the SDK so app code * routes item CRUD through the SAME Store as the CLI and MCP: sqlite uses the @@ -18,6 +19,21 @@ export interface KnowledgeItemsSdk { readonly delete: (idOrShort: string) => Promise<boolean>; readonly deleteMany: (idsOrShorts: string[]) => Promise<number>; } +export interface KnowledgeProjectLinksSdk { + readonly capability: () => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['capability']>; + readonly registerCollection: (request: KnowledgeProjectRegistrationRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['registerCollection']>; + readonly readCollection: (collectionId: string) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readCollection']>; + readonly lookupReceipt: (request: KnowledgeProjectReceiptLookupRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['lookupReceipt']>; + readonly compensateRegistration: (request: KnowledgeProjectInverseRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['compensateRegistration']>; + readonly verifyRegistrationInverse: (request: KnowledgeProjectInverseRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['verifyRegistrationInverse']>; + readonly bindItem: (request: KnowledgeProjectItemBindingRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['bindItem']>; + readonly readItemBinding: (collectionId: string, itemId: string) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readItemBinding']>; + readonly compensateItemBinding: (request: KnowledgeProjectInverseRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['compensateItemBinding']>; + readonly verifyItemBindingInverse: (request: KnowledgeProjectInverseRequest) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['verifyItemBindingInverse']>; + readonly listResources: (projectId: string, options?: KnowledgeProjectResourceListOptions) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['listProjectResources']>; + readonly readResource: (projectId: string, kind: KnowledgeProjectResourceKind, resourceId: string) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readProjectResource']>; + readonly readAllResources: (projectId: string, options?: Omit<KnowledgeProjectResourceListOptions, 'cursor'>) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readAllProjectResources']>; +} export type KnowledgeClientOptions = KnowledgeServiceOptions; export type KnowledgeSetupOptions = Parameters<KnowledgeService['setup']>[0]; export type KnowledgeAuthInput = Parameters<KnowledgeService['saveAuth']>[0]; @@ -96,6 +112,8 @@ export interface KnowledgeClient { * the `knowledge add/list/get/update/delete` CLI commands in every mode. */ readonly items: KnowledgeItemsSdk; + /** Project collection registration, explicit membership, receipts, and complete resource enumeration. */ + readonly projectLinks: KnowledgeProjectLinksSdk; /** * Inventory of the knowledge corpus. Routes to the shared API item corpus in * postgres mode and the local sqlite/JSON catalog otherwise, so the SDK never diff --git a/dist/serve.d.ts b/dist/serve.d.ts index 4ccc66d..43ebce8 100644 --- a/dist/serve.d.ts +++ b/dist/serve.d.ts @@ -2,6 +2,7 @@ import { ApiKeyStore, type ApiKeyVerifier } from '@hasna/contracts/auth'; import { type KnowledgeItem, type KnowledgeItemVersion, type KnowledgeItemVersionList } from './store.js'; import { type KnowledgeAuthorityBinding } from './guarded-write-contract.js'; import type { PoolQueryClient } from './generated/storage-kit/index.js'; +import { type KnowledgeProjectLinksAuthority } from './project-links.js'; export declare const KNOWLEDGE_SERVE_APP = "knowledge"; /** * Restore the vendored storage kit's intended `sslmode=require` semantics @@ -144,6 +145,12 @@ export interface ServeDeps { * routes keep working and guarded routes fail closed with 503. */ guardedAuthority?: KnowledgeServeGuardedAuthority; + /** + * Optional test/host override for the package-owned project-link authority. + * Production uses the same Postgres client as notes and scopes every + * authority instance to the authenticated tenant. + */ + projectLinksAuthority?: (tenantId: string) => KnowledgeProjectLinksAuthority; } export declare function createServeHandler(deps: ServeDeps): (req: Request) => Promise<Response>; export interface StartServeOptions { diff --git a/dist/serve.js b/dist/serve.js index 0218946..c547c49 100644 --- a/dist/serve.js +++ b/dist/serve.js @@ -2369,6 +2369,1541 @@ function hasKnowledgeBoundedQueryCapability(value) { return Boolean(value && typeof value === "object" && value.query_capability === KNOWLEDGE_BOUNDED_QUERY_CAPABILITY); } +// src/project-links.ts +import { createHash as createHash4 } from "crypto"; +import { Database } from "bun:sqlite"; + +// src/net-guard.ts +var NETWORK_GUARD_ENV = "NODE_ENV"; + +class KnowledgeNetworkGuardError extends Error { + scheme; + port; + constructor(message, details) { + super(message); + this.name = "KnowledgeNetworkGuardError"; + this.scheme = details.scheme; + this.port = details.port; + } +} +function isNetworkGuardActive(env = process.env) { + return (env[NETWORK_GUARD_ENV] ?? "").trim().toLowerCase() === "test"; +} +function isIpv4Loopback(hostname) { + const parts = hostname.split("."); + if (parts.length !== 4) + return false; + if (!parts.every((part) => /^\d{1,3}$/.test(part) && Number(part) <= 255)) + return false; + return parts[0] === "127"; +} +function isLoopbackHostname(hostname) { + const host = hostname.trim().toLowerCase(); + if (host.length === 0) + return false; + if (host === "localhost" || host.endsWith(".localhost")) + return true; + if (isIpv4Loopback(host)) + return true; + if (!host.startsWith("[") || !host.endsWith("]")) + return false; + const v6 = host.slice(1, -1); + if (v6 === "::1" || /^(0:){7}1$/.test(v6)) + return true; + const tail = v6.split(":").pop() ?? ""; + if (/^(::ffff:|::)/.test(v6) && isIpv4Loopback(tail)) + return true; + return /^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(v6); +} +function targetUrl(input) { + if (typeof input === "string") + return input; + if (input instanceof URL) + return input.href; + return input.url; +} +function assertOutboundRequestAllowed(input, env = process.env) { + if (!isNetworkGuardActive(env)) + return; + const raw = targetUrl(input); + let url; + try { + url = new URL(raw); + } catch { + throw new KnowledgeNetworkGuardError(`knowledge: refused an outbound request with an unparseable target while ${NETWORK_GUARD_ENV}=test. ` + "Under test, only loopback requests are permitted.", { scheme: "unknown", port: "" }); + } + if (isLoopbackHostname(url.hostname)) + return; + throw new KnowledgeNetworkGuardError(`knowledge: refused a non-loopback ${url.protocol.replace(":", "")} request while ${NETWORK_GUARD_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: url.protocol.replace(":", ""), port: url.port }); +} +var REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]); +var MAX_GUARDED_REDIRECTS = 5; +function requestMethod(input, init) { + if (init?.method) + return init.method.toUpperCase(); + if (typeof input !== "string" && !(input instanceof URL)) + return input.method.toUpperCase(); + return "GET"; +} +async function guardedFetch(input, init) { + assertOutboundRequestAllowed(input); + if (!isNetworkGuardActive() || init?.redirect !== undefined) { + return fetch(input, init); + } + let from = targetUrl(input); + let method = requestMethod(input, init); + let body = init?.body; + let response = await fetch(input, { ...init ?? {}, redirect: "manual" }); + for (let hop = 0;REDIRECT_STATUSES.has(response.status); hop++) { + const location = response.headers.get("location"); + if (!location) + return response; + const next = new URL(location, from).href; + assertOutboundRequestAllowed(next); + if (hop >= MAX_GUARDED_REDIRECTS) { + const url = new URL(next); + throw new KnowledgeNetworkGuardError(`knowledge: refused to follow more than ${MAX_GUARDED_REDIRECTS} redirects while ${NETWORK_GUARD_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: url.protocol.replace(":", ""), port: url.port }); + } + if (response.status === 303 || (response.status === 301 || response.status === 302) && method !== "GET" && method !== "HEAD") { + method = "GET"; + body = undefined; + } + const hopInit = { ...init ?? {}, method, redirect: "manual" }; + if (body === undefined) + delete hopInit.body; + else + hopInit.body = body; + response = await fetch(next, hopInit); + from = next; + } + return response; +} + +// src/project-links.ts +var KNOWLEDGE_PROJECT_REGISTRATION_ROUTE = "knowledge.project-registration.v1"; +var KNOWLEDGE_PROJECT_RESOURCES_ROUTE = "knowledge.project-resources.v1"; +var KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION = 1; +var KNOWLEDGE_PROJECT_MEMBERSHIP_RULE = "explicit_collection_binding"; + +class KnowledgeProjectLinksError extends Error { + code; + details; + constructor(code, message, details = {}) { + super(message); + this.code = code; + this.details = details; + this.name = "KnowledgeProjectLinksError"; + } +} +function postgresSql(sql) { + let index = 0; + return sql.replace(/\?/g, () => `$${++index}`); +} + +class PostgresProjectLinksSql { + client; + transactionClient; + constructor(client, transactionClient) { + this.client = client; + this.transactionClient = transactionClient; + } + async get(sql, params = []) { + return this.client.get(postgresSql(sql), params); + } + async many(sql, params = []) { + return this.client.many(postgresSql(sql), params); + } + async run(sql, params = []) { + const result = await this.client.query(postgresSql(sql), params); + return { changes: result.rowCount }; + } + async transaction(fn) { + if (!this.transactionClient) + return fn(this); + return this.transactionClient.transaction((tx) => fn(new PostgresProjectLinksSql(tx))); + } +} + +class SqliteProjectLinksSql { + db; + tail = Promise.resolve(); + constructor(db) { + this.db = db; + } + async get(sql, params = []) { + return this.db.query(sql).get(...params) ?? null; + } + async many(sql, params = []) { + return this.db.query(sql).all(...params); + } + async run(sql, params = []) { + const result = this.db.query(sql).run(...params); + return { changes: Number(result.changes) }; + } + transaction(fn) { + const run = this.tail.then(async () => { + this.db.exec("BEGIN IMMEDIATE"); + try { + const result = await fn(this); + this.db.exec("COMMIT"); + return result; + } catch (error) { + this.db.exec("ROLLBACK"); + throw error; + } + }); + this.tail = run.then(() => { + return; + }, () => { + return; + }); + return run; + } +} +function sqliteKnowledgeProjectLinksSchemaSql() { + return ` + PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + ); + CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + ); + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_update + BEFORE UPDATE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_delete + BEFORE DELETE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + `; +} +function postgresKnowledgeProjectLinksSchemaStatements() { + return [ + `CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + )`, + `CREATE OR REPLACE FUNCTION knowledge_project_link_receipts_immutable() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + RAISE EXCEPTION 'knowledge project link receipts are immutable'; + END; + $$`, + `DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable + ON knowledge_project_link_receipts`, + `CREATE TRIGGER knowledge_project_link_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()` + ]; +} +function canonicalize(value) { + if (Array.isArray(value)) + return value.map(canonicalize); + if (value && typeof value === "object") { + return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined).sort(([left], [right]) => left.localeCompare(right)).map(([key, item]) => [key, canonicalize(item)])); + } + return value; +} +function canonicalKnowledgeProjectLinksJson(value) { + return JSON.stringify(canonicalize(value)); +} +function digestKnowledgeProjectLinksValue(value) { + return createHash4("sha256").update(canonicalKnowledgeProjectLinksJson(value)).digest("hex"); +} +function stableUuid(namespace) { + const hex = createHash4("sha256").update(namespace).digest("hex").slice(0, 32).split(""); + hex[12] = "5"; + hex[16] = (Number.parseInt(hex[16], 16) & 3 | 8).toString(16); + const value = hex.join(""); + return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; +} +function requiredString(value, field) { + if (typeof value !== "string" || value.trim().length === 0) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `${field} must be a non-empty string.`); + } + return value.trim(); +} +function boundedLimit(value) { + const resolved = value ?? 100; + if (!Number.isInteger(resolved) || resolved < 1 || resolved > 200) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "limit must be an integer between 1 and 200."); + } + return resolved; +} +function normalizeKinds(kinds) { + const supported = ["project", "collection", "item", "taxonomy"]; + if (!kinds || kinds.length === 0) + return supported; + const unique = [...new Set(kinds)]; + for (const kind of unique) { + if (!supported.includes(kind)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `unsupported project resource kind: ${kind}`); + } + } + return unique.sort((left, right) => supported.indexOf(left) - supported.indexOf(right)); +} +function toReceipt(row) { + return { + receipt_id: row.receipt_id, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: row.package_version, + authority_id: row.authority_id, + tenant_id: row.tenant_id, + corpus_id: row.corpus_id, + operation_id: row.operation_id, + step_id: row.step_id, + action: row.action, + resource_kind: row.resource_kind, + direction: row.direction, + idempotency_key: row.idempotency_key, + request_digest: row.request_digest, + precondition_digest: row.precondition_digest, + outcome: row.outcome, + reason: row.reason, + source_project_id: row.source_project_id, + project_id: row.project_id, + collection_id: row.collection_id, + item_id: row.item_id, + result_revision: row.result_revision, + result_digest: row.result_digest, + accepted_receipt_id: row.accepted_receipt_id, + created_by_operation: Number(row.created_by_operation) === 1, + created_at: row.created_at + }; +} +function aggregateRecord(row) { + const record = { + source_project_id: row.source_project_id, + project_id: row.project_id, + project_slug: row.project_slug, + project_name: row.project_name, + collection_id: row.collection_id, + collection_slug: row.collection_slug, + collection_name: row.collection_name, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + revision: `r${Number(row.revision)}`, + created_at: row.created_at, + updated_at: row.updated_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; +} +function receiptInsertParams(receipt) { + return [ + receipt.receipt_id, + receipt.authority, + receipt.route, + receipt.package_version, + receipt.authority_id, + receipt.tenant_id, + receipt.corpus_id, + receipt.operation_id, + receipt.step_id, + receipt.action, + receipt.resource_kind, + receipt.direction, + receipt.idempotency_key, + receipt.request_digest, + receipt.precondition_digest, + receipt.outcome, + receipt.reason, + receipt.source_project_id, + receipt.project_id, + receipt.collection_id, + receipt.item_id, + receipt.result_revision, + receipt.result_digest, + receipt.accepted_receipt_id, + receipt.created_by_operation ? 1 : 0, + receipt.created_at + ]; +} +var RECEIPT_INSERT_SQL = `INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`; + +class PackageOwnedKnowledgeProjectLinksAuthority { + sql; + itemResolver; + options; + identity; + now; + constructor(sql, itemResolver, options) { + this.sql = sql; + this.itemResolver = itemResolver; + this.options = options; + this.identity = { + authority_id: requiredString(options.authorityId, "authority_id"), + tenant_id: requiredString(options.tenantId, "tenant_id"), + corpus_id: requiredString(options.corpusId, "corpus_id") + }; + this.now = options.now ?? (() => new Date().toISOString()); + } + capabilityValue() { + return { + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + resource_route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + package_version: this.options.packageVersion, + schema_version: KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + ...this.identity, + registration_resource: "collection", + supported_resources: ["project", "collection", "item", "taxonomy"], + stable_project_ids: true, + stable_collection_ids: true, + explicit_membership: true, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + later_child_binding_required: true, + bind_existing_items: true, + immutable_receipts: true, + exact_terminal_lookup: true, + exact_readback: true, + conditional_inverse: true, + complete_keyset_pagination: true, + revision_bound_cursors: true + }; + } + async capability() { + return this.capabilityValue(); + } + assertIdentity(request) { + const capability = this.capabilityValue(); + if (request.authority_route !== capability.route || request.package_version !== capability.package_version || request.authority_id !== capability.authority_id || request.tenant_id !== capability.tenant_id || request.corpus_id !== capability.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "request does not match the current Knowledge project-registration capability identity."); + } + } + stableProjectId(sourceProjectId) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${sourceProjectId}`); + } + stableCollectionId(sourceProjectId, collectionSlug) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${sourceProjectId}\x00${collectionSlug}`); + } + stableReceiptId(operationId, stepId, action, direction) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${operationId}\x00${stepId}\x00${action}\x00${direction}`); + } + async getAggregateBySource(sql, sourceProjectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, sourceProjectId]); + } + async getAggregateByCollection(sql, collectionId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, collectionId]); + } + async getAggregateByProject(sql, projectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + projectId, + projectId + ]); + } + async getReceiptByAttempt(sql, input) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + input.operation_id, + input.step_id, + input.action, + input.direction + ]); + return row ? toReceipt(row) : null; + } + assertIdempotent(existing, input) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); + } + } + async registerCollection(request) { + this.assertIdentity(request); + if (request.resource_kind !== "collection" || request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "collection registration requires resource_kind=collection and direction=forward."); + } + const sourceProjectId = requiredString(request.project_id, "project_id"); + const projectSlug = requiredString(request.project_slug, "project_slug"); + const projectName = requiredString(request.project_name, "project_name"); + const targetSelector = requiredString(request.target_selector, "target_selector"); + if (targetSelector !== sourceProjectId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "target_selector must equal the exact source project id."); + } + const collectionSlug = requiredString(request.desired.collection_slug ?? `${projectSlug}-knowledge`, "desired.collection_slug"); + const collectionName = requiredString(request.desired.collection_name ?? `${projectName} Knowledge`, "desired.collection_name"); + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "register_collection", + source_project_id: sourceProjectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized collection-registration request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + let aggregate = await this.getAggregateBySource(tx, sourceProjectId); + const createdByOperation = aggregate === null; + if (!aggregate) { + const now = this.now(); + const projectId = this.stableProjectId(sourceProjectId); + const collectionId = this.stableCollectionId(sourceProjectId, collectionSlug); + await tx.run(`INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + sourceProjectId, + projectId, + projectSlug, + projectName, + now, + now + ]); + await tx.run(`INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + projectId, + collectionSlug, + collectionName, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + 1, + now, + now + ]); + aggregate = await this.getAggregateByCollection(tx, collectionId); + } else if (aggregate.project_slug !== projectSlug || aggregate.project_name !== projectName || aggregate.collection_slug !== collectionSlug || aggregate.collection_name !== collectionName || aggregate.membership_rule !== KNOWLEDGE_PROJECT_MEMBERSHIP_RULE) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "the source project is already bound to a different Knowledge collection aggregate.", { + source_project_id: sourceProjectId, + collection_id: aggregate.collection_id + }); + } + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection registration committed but exact aggregate readback was unavailable."); + } + const record = aggregateRecord(aggregate); + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "forward"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_collection", + source_project_id: record.source_project_id, + project_id: record.project_id, + collection_id: record.collection_id, + item_id: null, + result_revision: record.revision, + result_digest: record.digest, + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readCollection(collectionId) { + const aggregate = await this.getAggregateByCollection(this.sql, requiredString(collectionId, "collection_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + return aggregateRecord(aggregate); + } + async lookupReceipt(request) { + if (request.max_items !== 1) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "exact terminal receipt lookup requires max_items=1."); + } + if (request.authority_id !== this.identity.authority_id || request.tenant_id !== this.identity.tenant_id || request.corpus_id !== this.identity.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "receipt lookup does not match this authority identity."); + } + const receipt = await this.getReceiptByAttempt(this.sql, request); + if (!receipt || receipt.idempotency_key !== request.idempotency_key) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "exact Knowledge project-link receipt was not found."); + } + return receipt; + } + async receiptById(sql, receiptId) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`, [ + receiptId, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id + ]); + return row ? toReceipt(row) : null; + } + assertInverseIdentity(request) { + this.assertIdentity(request); + requiredString(request.accepted_receipt_id, "accepted_receipt_id"); + requiredString(request.idempotency_key, "idempotency_key"); + } + async compensateRegistration(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "register_collection" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection-registration receipt was not found."); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + let outcome = "accepted"; + let reason = null; + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_collection_is_not_inverse_owned"; + } else if (!aggregate) { + outcome = "terminal_nonacceptance"; + reason = "accepted_collection_is_already_absent"; + } else { + const membership = await tx.get(`SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + if (Number(membership?.count ?? 0) > 0) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_bound_items"; + } else { + await tx.run(`DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + await tx.run(`DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.project_id + ]); + } + } + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: null, + result_revision: outcome === "accepted" ? "absent" : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyRegistrationInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection inverse receipt was not found."); + } + const aggregate = inverse.collection_id ? await this.getAggregateByCollection(this.sql, inverse.collection_id) : null; + if (aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "collection inverse verification found the target still present."); + } + const verification = { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.collection_id, + absent: true, + digest: inverse.result_digest + }; + return verification; + } + async bindItem(request) { + this.assertIdentity(request); + if (request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "item binding requires direction=forward."); + } + const collectionId = requiredString(request.collection_id, "collection_id"); + const itemId = requiredString(request.item_id, "item_id"); + const item = await this.itemResolver(itemId); + if (!item || item.id !== itemId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "bind-existing requires an exact existing Knowledge item id.", { item_id: itemId }); + } + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "bind_item", + collection_id: collectionId, + item_id: itemId + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized item-membership request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const aggregate = await this.getAggregateByCollection(tx, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + const existing = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId + ]); + const createdByOperation = existing === null; + const now = this.now(); + const receiptId = this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "forward"); + if (!existing) { + await tx.run(`INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + receiptId, + 1, + now + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + now, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId + ]); + } + const current = await this.getAggregateByCollection(tx, collectionId); + if (!current) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "item binding committed but collection readback was unavailable."); + } + const binding = { + collection_id: collectionId, + item_id: itemId, + collection_revision: `r${Number(current.revision)}`, + item_revision: `v${item.version ?? 1}` + }; + const receipt = { + receipt_id: receiptId, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_membership", + source_project_id: current.source_project_id, + project_id: current.project_id, + collection_id: collectionId, + item_id: itemId, + result_revision: binding.collection_revision, + result_digest: digestKnowledgeProjectLinksValue(binding), + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: now + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readItemBinding(collectionId, itemId) { + const membership = await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + requiredString(collectionId, "collection_id"), + requiredString(itemId, "item_id") + ]); + if (!membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection membership was not found by exact ids."); + } + const aggregate = await this.getAggregateByCollection(this.sql, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "membership exists without its collection aggregate."); + } + const record = { + collection_id: collectionId, + item_id: itemId, + revision: `r${Number(aggregate.revision)}`, + bound_at: membership.bound_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; + } + async compensateItemBinding(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "bind_item" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding receipt was not found."); + } + let outcome = "accepted"; + let reason = null; + const membership = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id + ]); + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_membership_is_not_inverse_owned"; + } else if (!membership) { + outcome = "terminal_nonacceptance"; + reason = "accepted_membership_is_already_absent"; + } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { + outcome = "terminal_nonacceptance"; + reason = "membership_is_owned_by_a_different_receipt"; + } else { + await tx.run(`DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + accepted.receipt_id + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.now(), + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id + ]); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + result_revision: outcome === "accepted" && aggregate ? `r${Number(aggregate.revision)}` : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyItemBindingInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding inverse receipt was not found."); + } + const membership = await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + inverse.collection_id, + inverse.item_id + ]); + if (membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "item-binding inverse verification found the membership still present."); + } + return { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.item_id, + absent: true, + digest: inverse.result_digest + }; + } + async buildResources(projectId) { + const aggregate = await this.getAggregateByProject(this.sql, requiredString(projectId, "project_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project aggregate was not found by source or stable project id."); + } + const memberships = await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + const items = await Promise.all(memberships.map(async (membership) => { + const item = await this.itemResolver(membership.item_id); + if (!item || item.id !== membership.item_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection membership points at a missing Knowledge item; refusing a partial resource population.", { collection_id: aggregate.collection_id, item_id: membership.item_id }); + } + return item; + })); + const revision = `r${Number(aggregate.revision)}`; + const base = { + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + revision + }; + const resources = []; + const projectBody = { + ...base, + kind: "project", + id: aggregate.project_id, + title: aggregate.project_name, + locator: { kind: "canonical_uri", value: `knowledge:project:${aggregate.project_id}` }, + metadata: { + source_project_id: aggregate.source_project_id, + slug: aggregate.project_slug, + collection_count: 1 + } + }; + resources.push({ + ...projectBody, + key: `project:${aggregate.project_id}`, + digest: digestKnowledgeProjectLinksValue(projectBody) + }); + const collectionBody = { + ...base, + kind: "collection", + id: aggregate.collection_id, + title: aggregate.collection_name, + locator: { kind: "external_uuid", value: aggregate.collection_id }, + metadata: { + slug: aggregate.collection_slug, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + member_count: items.length + } + }; + resources.push({ + ...collectionBody, + key: `collection:${aggregate.collection_id}`, + digest: digestKnowledgeProjectLinksValue(collectionBody) + }); + for (const item of items) { + const itemBody = { + ...base, + kind: "item", + id: item.id, + revision: `v${item.version ?? 1}`, + title: item.title, + locator: { kind: "canonical_uri", value: `knowledge:item:${encodeURIComponent(item.id)}` }, + metadata: { + tags: [...item.tags ?? []], + archived: item.archived === true, + updated_at: item.updated_at + } + }; + resources.push({ + ...itemBody, + key: `item:${item.id}`, + digest: digestKnowledgeProjectLinksValue(itemBody) + }); + } + const taxonomy = new Map; + for (const item of items) { + for (const rawTag of item.tags ?? []) { + const normalized = rawTag.trim().toLowerCase(); + if (!normalized) + continue; + const entry = taxonomy.get(normalized) ?? { label: rawTag.trim(), itemIds: [] }; + entry.itemIds.push(item.id); + taxonomy.set(normalized, entry); + } + } + for (const [normalized, entry] of [...taxonomy.entries()].sort(([left], [right]) => left.localeCompare(right))) { + const taxonomyId = stableUuid(`${aggregate.collection_id}\x00taxonomy\x00${normalized}`); + const taxonomyBody = { + ...base, + kind: "taxonomy", + id: taxonomyId, + title: entry.label, + locator: { kind: "external_uuid", value: taxonomyId }, + metadata: { + tag: entry.label, + normalized_tag: normalized, + item_count: entry.itemIds.length, + member_digest: digestKnowledgeProjectLinksValue([...entry.itemIds].sort()) + } + }; + resources.push({ + ...taxonomyBody, + key: `taxonomy:${taxonomyId}`, + digest: digestKnowledgeProjectLinksValue(taxonomyBody) + }); + } + resources.sort((left, right) => left.key.localeCompare(right.key)); + return { aggregate, resources }; + } + async listProjectResources(projectId, options = {}) { + const limit = boundedLimit(options.limit); + const kinds = normalizeKinds(options.kinds); + const { aggregate, resources } = await this.buildResources(projectId); + const revision = `r${Number(aggregate.revision)}`; + const population = resources.filter((resource) => kinds.includes(resource.kind)); + const populationDigest = digestKnowledgeProjectLinksValue(population.map((resource) => ({ key: resource.key, digest: resource.digest }))); + let after = ""; + if (options.cursor) { + let decoded; + try { + decoded = JSON.parse(Buffer.from(options.cursor, "base64url").toString("utf8")); + } catch { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "cursor is not a valid Knowledge project-resources cursor."); + } + if (decoded.version !== 1 || decoded.project_id !== aggregate.project_id || decoded.collection_id !== aggregate.collection_id || decoded.collection_revision !== revision || decoded.population_digest !== populationDigest || canonicalKnowledgeProjectLinksJson(decoded.kinds) !== canonicalKnowledgeProjectLinksJson(kinds) || typeof decoded.after !== "string") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed or the cursor belongs to a different project/kind selection; restart from the first page."); + } + after = decoded.after; + } + const remaining = after ? population.filter((resource) => resource.key > after) : population; + const pageResources = remaining.slice(0, limit); + const hasMore = remaining.length > pageResources.length; + const nextCursor = hasMore && pageResources.length > 0 ? Buffer.from(JSON.stringify({ + version: 1, + project_id: aggregate.project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + kinds, + after: pageResources.at(-1).key + })).toString("base64url") : null; + return { + schema: "knowledge.project-resources.page.v1", + authority: "knowledge", + route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + ...this.identity, + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + resource_kinds: kinds, + resources: pageResources, + count: pageResources.length, + total: population.length, + limit, + cursor: options.cursor ?? null, + next_cursor: nextCursor, + has_more: hasMore, + complete: !hasMore, + truncated: false + }; + } + async readProjectResource(projectId, kind, resourceId) { + const { resources } = await this.buildResources(projectId); + const resource = resources.find((candidate) => candidate.kind === kind && candidate.id === resourceId); + if (!resource) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project resource was not found by exact kind and id."); + } + return resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expected = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + const identity = { + project_id: page.project_id, + collection_id: page.collection_id, + collection_revision: page.collection_revision, + population_digest: page.population_digest, + total: page.total, + kinds: canonicalKnowledgeProjectLinksJson(page.resource_kinds) + }; + if (expected && canonicalKnowledgeProjectLinksJson(expected) !== canonicalKnowledgeProjectLinksJson(identity)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete population was being read."); + } + expected ??= identity; + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource pagination returned a duplicate stable resource key.", { key: resource.key }); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource page claims more data without a continuation cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (!expected || resources.length !== expected.total) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete project resource enumeration did not match the producer total.", { expected_total: expected?.total ?? null, received: resources.length }); + } + return resources; + } +} +function createLocalKnowledgeProjectLinksAuthority(input) { + if (input.databasePath !== ":memory:") { + ensureParentDir(input.databasePath); + } + const db = new Database(input.databasePath, { create: true }); + db.exec(sqliteKnowledgeProjectLinksSchemaSql()); + return new PackageOwnedKnowledgeProjectLinksAuthority(new SqliteProjectLinksSql(db), (id) => input.itemStore.get(id), input.options); +} +function createPostgresKnowledgeProjectLinksAuthority(input) { + return new PackageOwnedKnowledgeProjectLinksAuthority(new PostgresProjectLinksSql(input.client, input.client), input.itemResolver, input.options); +} +function wireErrorStatus(error) { + if (error.code === "KNOWLEDGE_PROJECT_LINKS_NOT_FOUND") + return 404; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_CONFLICT" || error.code === "KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE" || error.code === "KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH") + return 409; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION") + return 503; + return 400; +} +function knowledgeProjectLinksErrorResponse(error) { + if (error instanceof KnowledgeProjectLinksError) { + return Response.json({ error: error.code, message: error.message, details: error.details }, { status: wireErrorStatus(error) }); + } + throw error; +} + +class KnowledgeProjectLinksHttpClient { + options; + fetchImpl; + root; + constructor(options) { + this.options = options; + this.fetchImpl = options.fetch ?? guardedFetch; + this.root = options.baseUrl.replace(/\/+$/, ""); + } + headers(extra = {}) { + const headers = new Headers(this.options.headers); + headers.set("accept", "application/json"); + if (this.options.apiKey) + headers.set("x-api-key", this.options.apiKey); + for (const [key, value] of Object.entries(extra)) + headers.set(key, value); + return headers; + } + async request(path, init = {}) { + const response = await this.fetchImpl(`${this.root}${path}`, { + ...init, + headers: this.headers(init.body ? { "content-type": "application/json" } : {}) + }); + const body = await response.json().catch(() => ({})); + if (!response.ok) { + throw new KnowledgeProjectLinksError(typeof body.error === "string" ? body.error : "KNOWLEDGE_PROJECT_LINKS_CONFLICT", typeof body.message === "string" ? body.message : `Knowledge project-links HTTP ${response.status}`, body.details && typeof body.details === "object" ? body.details : {}); + } + return body; + } + async capability() { + const body = await this.request("/v1/project-registration/capability"); + return body.capability; + } + async registerCollection(request) { + const body = await this.request("/v1/project-registration/create", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readCollection(collectionId) { + const body = await this.request("/v1/project-registration/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId }) }); + return body.record; + } + async lookupReceipt(request) { + const body = await this.request("/v1/project-registration/receipts/lookup", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async compensateRegistration(request) { + const body = await this.request("/v1/project-registration/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyRegistrationInverse(request) { + const body = await this.request("/v1/project-registration/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async bindItem(request) { + const body = await this.request("/v1/project-registration/items/bind", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readItemBinding(collectionId, itemId) { + const body = await this.request("/v1/project-registration/items/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId, item_id: itemId }) }); + return body.record; + } + async compensateItemBinding(request) { + const body = await this.request("/v1/project-registration/items/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyItemBindingInverse(request) { + const body = await this.request("/v1/project-registration/items/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async listProjectResources(projectId, options = {}) { + const query2 = new URLSearchParams; + if (options.limit !== undefined) + query2.set("limit", String(options.limit)); + if (options.cursor) + query2.set("cursor", options.cursor); + for (const kind of options.kinds ?? []) + query2.append("kind", kind); + const suffix = query2.size > 0 ? `?${query2.toString()}` : ""; + return this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources${suffix}`); + } + async readProjectResource(projectId, kind, resourceId) { + const body = await this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources/${kind}/${encodeURIComponent(resourceId)}`); + return body.resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expectedTotal = null; + let expectedRevision = null; + let expectedPopulationDigest = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + expectedTotal ??= page.total; + expectedRevision ??= page.collection_revision; + expectedPopulationDigest ??= page.population_digest; + if (page.total !== expectedTotal || page.collection_revision !== expectedRevision || page.population_digest !== expectedPopulationDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete HTTP population was being read."); + } + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP pagination returned a duplicate stable key."); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP page claims more data without a cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (expectedTotal === null || resources.length !== expectedTotal) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete HTTP resource enumeration did not match the producer total."); + } + return resources; + } +} +function createKnowledgeProjectLinksHttpClient(options) { + return new KnowledgeProjectLinksHttpClient(options); +} + // src/serve.ts var KNOWLEDGE_SERVE_APP = "knowledge"; function normalizeCloudDatabaseUrl(env = process.env) { @@ -4275,6 +5810,121 @@ function knowledgeOpenApi(version) { ], additionalProperties: true }, + ProjectRegistrationCapability: { + type: "object", + required: [ + "authority", + "route", + "resource_route", + "package_version", + "authority_id", + "tenant_id", + "corpus_id", + "supported_resources", + "membership_rule" + ], + additionalProperties: true + }, + ProjectRegistrationReceipt: { + type: "object", + required: [ + "receipt_id", + "authority", + "route", + "package_version", + "authority_id", + "tenant_id", + "corpus_id", + "operation_id", + "step_id", + "action", + "resource_kind", + "direction", + "idempotency_key", + "request_digest", + "precondition_digest", + "outcome", + "created_by_operation", + "created_at" + ], + additionalProperties: true + }, + ProjectCollectionRecord: { + type: "object", + required: [ + "source_project_id", + "project_id", + "project_slug", + "project_name", + "collection_id", + "collection_slug", + "collection_name", + "membership_rule", + "revision", + "digest", + "created_at", + "updated_at" + ], + additionalProperties: false + }, + ProjectResource: { + type: "object", + required: [ + "key", + "kind", + "id", + "project_id", + "source_project_id", + "collection_id", + "revision", + "digest", + "title", + "locator", + "metadata" + ], + additionalProperties: false + }, + ProjectResourcePage: { + type: "object", + required: [ + "schema", + "authority", + "route", + "authority_id", + "tenant_id", + "corpus_id", + "project_id", + "source_project_id", + "collection_id", + "collection_revision", + "population_digest", + "resource_kinds", + "resources", + "count", + "total", + "limit", + "cursor", + "next_cursor", + "has_more", + "complete", + "truncated" + ], + properties: { + collection_revision: { type: "string" }, + population_digest: { type: "string" }, + resources: { + type: "array", + items: { $ref: "#/components/schemas/ProjectResource" } + }, + count: { type: "integer" }, + total: { type: "integer" }, + limit: { type: "integer", minimum: 1, maximum: 200 }, + has_more: { type: "boolean" }, + complete: { type: "boolean" }, + truncated: { type: "boolean", enum: [false] } + }, + additionalProperties: true + }, NoteList: { type: "object", properties: { @@ -4323,6 +5973,230 @@ function knowledgeOpenApi(version) { }, security: [{ apiKey: [] }], paths: { + "/v1/project-registration/capability": { + get: { + operationId: "getKnowledgeProjectRegistrationCapability", + summary: "Read the exact Knowledge project-registration capability identity", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + capability: { $ref: "#/components/schemas/ProjectRegistrationCapability" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/create": { + post: { + operationId: "registerKnowledgeProjectCollection", + summary: "Create or exactly adopt one project-owned Knowledge collection", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/read-exact": { + post: { + operationId: "readKnowledgeProjectCollection", + summary: "Read one project collection by exact stable collection id", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + record: { $ref: "#/components/schemas/ProjectCollectionRecord" } + } + } + } + } + }, + "404": { description: "No exact collection id." } + } + } + }, + "/v1/project-registration/receipts/lookup": { + post: { + operationId: "lookupKnowledgeProjectRegistrationReceipt", + summary: "Look up exactly one immutable registration or membership receipt", + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + }, + "404": { description: "No exact terminal receipt." } + } + } + }, + "/v1/project-registration/compensate": { + post: { + operationId: "compensateKnowledgeProjectCollection", + summary: "Conditionally remove an operation-created empty collection aggregate", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/verify-inverse": { + post: { + operationId: "verifyKnowledgeProjectCollectionInverse", + summary: "Verify an accepted collection inverse by exact receipt and absence", + responses: { "200": { description: "Exact absence verification." } } + } + }, + "/v1/project-registration/items/bind": { + post: { + operationId: "bindKnowledgeItemToProjectCollection", + summary: "Explicitly bind one exact existing item to a project collection", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/items/read-exact": { + post: { + operationId: "readKnowledgeProjectItemBinding", + summary: "Read one exact collection/item membership", + responses: { + "200": { description: "Exact membership readback." }, + "404": { description: "No exact membership." } + } + } + }, + "/v1/project-registration/items/compensate": { + post: { + operationId: "compensateKnowledgeProjectItemBinding", + summary: "Conditionally remove a membership owned by the accepted binding receipt", + responses: { + "201": { + content: { + "application/json": { + schema: { + type: "object", + properties: { + receipt: { $ref: "#/components/schemas/ProjectRegistrationReceipt" } + } + } + } + } + } + } + } + }, + "/v1/project-registration/items/verify-inverse": { + post: { + operationId: "verifyKnowledgeProjectItemBindingInverse", + summary: "Verify an accepted membership inverse by exact receipt and absence", + responses: { "200": { description: "Exact membership absence verification." } } + } + }, + "/v1/projects/{projectId}/resources": { + get: { + operationId: "listKnowledgeProjectResources", + summary: "Enumerate the complete stable project/collection/item/taxonomy population", + parameters: [ + { name: "projectId", in: "path", required: true, schema: { type: "string" } }, + { name: "limit", in: "query", schema: { type: "integer", minimum: 1, maximum: 200 } }, + { name: "cursor", in: "query", schema: { type: "string" } }, + { + name: "kind", + in: "query", + style: "form", + explode: true, + schema: { + type: "array", + items: { type: "string", enum: ["project", "collection", "item", "taxonomy"] } + } + } + ], + responses: { + "200": { + content: { + "application/json": { schema: { $ref: "#/components/schemas/ProjectResourcePage" } } + } + }, + "409": { description: "Cursor is stale or belongs to another population." } + } + } + }, + "/v1/projects/{projectId}/resources/{kind}/{resourceId}": { + get: { + operationId: "getKnowledgeProjectResource", + summary: "Read one project resource by exact stable kind and id", + parameters: [ + { name: "projectId", in: "path", required: true, schema: { type: "string" } }, + { + name: "kind", + in: "path", + required: true, + schema: { type: "string", enum: ["project", "collection", "item", "taxonomy"] } + }, + { name: "resourceId", in: "path", required: true, schema: { type: "string" } } + ], + responses: { + "200": { + content: { + "application/json": { + schema: { + type: "object", + properties: { resource: { $ref: "#/components/schemas/ProjectResource" } } + } + } + } + }, + "404": { description: "No exact resource kind and id." } + } + } + }, "/v1/notes": { get: { operationId: "listNotes", @@ -5129,6 +7003,16 @@ function parseExpectedVersion(req, body) { function createServeHandler(deps) { const repo = new NoteRepo(deps.client); const guardedRepo = deps.guardedAuthority ? new GuardedWriteRepo(deps.client, deps.guardedAuthority) : null; + const projectLinksForTenant = (tenantId) => deps.projectLinksAuthority?.(tenantId) ?? createPostgresKnowledgeProjectLinksAuthority({ + client: deps.client, + itemResolver: (id) => repo.get(id, tenantId), + options: { + packageVersion: deps.version, + authorityId: process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? KNOWLEDGE_SERVE_APP, + tenantId, + corpusId: process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? "knowledge" + } + }); const mode2 = "postgres"; const authOrThrow = async (req, requiredScopes, expectedTid) => { const url = new URL(req.url); @@ -5391,6 +7275,103 @@ function createServeHandler(deps) { const readback = await guardedRepo.readback(decodeURIComponent(guardedItemMatch[1]), binding, bounds); return readback ? boundedJson(readback, 200, bounds, startedAt) : boundedJson({ error: "not_found" }, 404, bounds, startedAt); } + if (path === "/v1/project-registration/capability") { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + return json({ capability: await projectLinksForTenant(principal.tid).capability() }); + } + if (path === "/v1/project-registration/create") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).registerCollection(body) }, 201); + } + if (path === "/v1/project-registration/read-exact") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + record: await projectLinksForTenant(principal.tid).readCollection(String(body.collection_id ?? "")) + }); + } + if (path === "/v1/project-registration/receipts/lookup") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).lookupReceipt(body) }); + } + if (path === "/v1/project-registration/compensate") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).compensateRegistration(body) }, 201); + } + if (path === "/v1/project-registration/verify-inverse") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + verification: await projectLinksForTenant(principal.tid).verifyRegistrationInverse(body) + }); + } + if (path === "/v1/project-registration/items/bind") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).bindItem(body) }, 201); + } + if (path === "/v1/project-registration/items/read-exact") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + record: await projectLinksForTenant(principal.tid).readItemBinding(String(body.collection_id ?? ""), String(body.item_id ?? "")) + }); + } + if (path === "/v1/project-registration/items/compensate") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:write"]); + const body = await req.json().catch(() => ({})); + return json({ receipt: await projectLinksForTenant(principal.tid).compensateItemBinding(body) }, 201); + } + if (path === "/v1/project-registration/items/verify-inverse") { + if (method !== "POST") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const body = await req.json().catch(() => ({})); + return json({ + verification: await projectLinksForTenant(principal.tid).verifyItemBindingInverse(body) + }); + } + const exactProjectResourceMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources\/(project|collection|item|taxonomy)\/([^/]+)$/); + if (exactProjectResourceMatch) { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const resource = await projectLinksForTenant(principal.tid).readProjectResource(decodeURIComponent(exactProjectResourceMatch[1]), exactProjectResourceMatch[2], decodeURIComponent(exactProjectResourceMatch[3])); + return json({ resource }); + } + const projectResourcesMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources$/); + if (projectResourcesMatch) { + if (method !== "GET") + return json({ error: "method_not_allowed" }, 405); + const principal = await authOrThrow(req, ["knowledge:read"]); + const page = await projectLinksForTenant(principal.tid).listProjectResources(decodeURIComponent(projectResourcesMatch[1]), { + limit: url.searchParams.has("limit") ? Number(url.searchParams.get("limit")) : undefined, + cursor: url.searchParams.get("cursor"), + kinds: url.searchParams.getAll("kind") + }); + return json(page); + } if (path === "/v1/notes/search") { if (method !== "GET") return json({ error: "method_not_allowed" }, 405); @@ -5498,6 +7479,9 @@ function createServeHandler(deps) { } return json({ error: "not_found", path }, 404); } catch (error) { + if (error instanceof KnowledgeProjectLinksError) { + return knowledgeProjectLinksErrorResponse(error); + } if (error instanceof HttpError) { const reason = error.status === 401 || error.status === 403 ? "unauthorized" : "error"; return json({ error: reason, message: error.message }, error.status); diff --git a/dist/service.d.ts b/dist/service.d.ts index 5b983d1..4d07e35 100644 --- a/dist/service.d.ts +++ b/dist/service.d.ts @@ -20,9 +20,16 @@ import { type KnowledgeItem } from './store'; import { type ItemStore, type ItemCreateInput, type ItemPatch, type ItemListOptions, type ItemListResult } from './item-store'; import { type KnowledgeConfig, type KnowledgeWorkspace } from './workspace'; import { type KnowledgeLegacyWorkspaceMergeResult, type KnowledgeLegacyWorkspaceMigrationResult } from './workspace-migration'; +import { type KnowledgeProjectLinksAuthority } from './project-links'; export interface KnowledgeServiceOptions { scope?: string; cwd?: string; + projectLinksAuthority?: KnowledgeProjectLinksAuthority; + projectLinksIdentity?: { + authorityId?: string; + tenantId?: string; + corpusId?: string; + }; } export interface KnowledgePathsResult { ok: true; @@ -362,6 +369,7 @@ export declare class KnowledgeService { private readonly options; private ensuredWorkspace?; private cachedConfig?; + private cachedProjectLinksAuthority?; constructor(options?: KnowledgeServiceOptions); get scope(): string; get workspace(): KnowledgeWorkspace; @@ -375,6 +383,15 @@ export declare class KnowledgeService { * surface, so no path touches sqlite or the raw HTTP client directly. */ itemStore(): ItemStore; + /** + * Package-owned Projects resource-link producer. + * + * Local mode keeps aggregate membership and immutable receipts in the + * existing knowledge.db SQLite catalog while resolving item bodies through + * the same JSON ItemStore used by CLI/MCP/SDK. Postgres mode routes through + * the authenticated HTTP producer, never a local mirror. + */ + projectLinksAuthority(): KnowledgeProjectLinksAuthority; /** Bounded list query via the unified Store. */ listItems(options?: ItemListOptions): Promise<ItemListResult>; /** Fetch one knowledge item by id or short id via the unified Store. */ diff --git a/dist/storage.js b/dist/storage.js index d4617b7..949886b 100644 --- a/dist/storage.js +++ b/dist/storage.js @@ -2652,6 +2652,1433 @@ var KNOWLEDGE_APP_NAME = "knowledge"; function createKnowledgeCloudClient() { return createServerPoolFromEnv(KNOWLEDGE_APP_NAME, { applicationName: "@hasna/knowledge" }).client; } +// src/project-links.ts +import { createHash as createHash2 } from "crypto"; +import { Database as Database2 } from "bun:sqlite"; +var KNOWLEDGE_PROJECT_REGISTRATION_ROUTE = "knowledge.project-registration.v1"; +var KNOWLEDGE_PROJECT_RESOURCES_ROUTE = "knowledge.project-resources.v1"; +var KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION = 1; +var KNOWLEDGE_PROJECT_MEMBERSHIP_RULE = "explicit_collection_binding"; + +class KnowledgeProjectLinksError extends Error { + code; + details; + constructor(code, message, details = {}) { + super(message); + this.code = code; + this.details = details; + this.name = "KnowledgeProjectLinksError"; + } +} +function postgresSql(sql) { + let index = 0; + return sql.replace(/\?/g, () => `$${++index}`); +} + +class PostgresProjectLinksSql { + client; + transactionClient; + constructor(client, transactionClient) { + this.client = client; + this.transactionClient = transactionClient; + } + async get(sql, params = []) { + return this.client.get(postgresSql(sql), params); + } + async many(sql, params = []) { + return this.client.many(postgresSql(sql), params); + } + async run(sql, params = []) { + const result = await this.client.query(postgresSql(sql), params); + return { changes: result.rowCount }; + } + async transaction(fn) { + if (!this.transactionClient) + return fn(this); + return this.transactionClient.transaction((tx) => fn(new PostgresProjectLinksSql(tx))); + } +} + +class SqliteProjectLinksSql { + db; + tail = Promise.resolve(); + constructor(db) { + this.db = db; + } + async get(sql, params = []) { + return this.db.query(sql).get(...params) ?? null; + } + async many(sql, params = []) { + return this.db.query(sql).all(...params); + } + async run(sql, params = []) { + const result = this.db.query(sql).run(...params); + return { changes: Number(result.changes) }; + } + transaction(fn) { + const run = this.tail.then(async () => { + this.db.exec("BEGIN IMMEDIATE"); + try { + const result = await fn(this); + this.db.exec("COMMIT"); + return result; + } catch (error) { + this.db.exec("ROLLBACK"); + throw error; + } + }); + this.tail = run.then(() => { + return; + }, () => { + return; + }); + return run; + } +} +function sqliteKnowledgeProjectLinksSchemaSql() { + return ` + PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + ); + CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + ); + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_update + BEFORE UPDATE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_delete + BEFORE DELETE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + `; +} +function postgresKnowledgeProjectLinksSchemaStatements() { + return [ + `CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + )`, + `CREATE OR REPLACE FUNCTION knowledge_project_link_receipts_immutable() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + RAISE EXCEPTION 'knowledge project link receipts are immutable'; + END; + $$`, + `DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable + ON knowledge_project_link_receipts`, + `CREATE TRIGGER knowledge_project_link_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()` + ]; +} +function canonicalize(value) { + if (Array.isArray(value)) + return value.map(canonicalize); + if (value && typeof value === "object") { + return Object.fromEntries(Object.entries(value).filter(([, item]) => item !== undefined).sort(([left], [right]) => left.localeCompare(right)).map(([key, item]) => [key, canonicalize(item)])); + } + return value; +} +function canonicalKnowledgeProjectLinksJson(value) { + return JSON.stringify(canonicalize(value)); +} +function digestKnowledgeProjectLinksValue(value) { + return createHash2("sha256").update(canonicalKnowledgeProjectLinksJson(value)).digest("hex"); +} +function stableUuid(namespace) { + const hex = createHash2("sha256").update(namespace).digest("hex").slice(0, 32).split(""); + hex[12] = "5"; + hex[16] = (Number.parseInt(hex[16], 16) & 3 | 8).toString(16); + const value = hex.join(""); + return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; +} +function requiredString(value, field) { + if (typeof value !== "string" || value.trim().length === 0) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `${field} must be a non-empty string.`); + } + return value.trim(); +} +function boundedLimit(value) { + const resolved = value ?? 100; + if (!Number.isInteger(resolved) || resolved < 1 || resolved > 200) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "limit must be an integer between 1 and 200."); + } + return resolved; +} +function normalizeKinds(kinds) { + const supported = ["project", "collection", "item", "taxonomy"]; + if (!kinds || kinds.length === 0) + return supported; + const unique = [...new Set(kinds)]; + for (const kind of unique) { + if (!supported.includes(kind)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", `unsupported project resource kind: ${kind}`); + } + } + return unique.sort((left, right) => supported.indexOf(left) - supported.indexOf(right)); +} +function toReceipt(row) { + return { + receipt_id: row.receipt_id, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: row.package_version, + authority_id: row.authority_id, + tenant_id: row.tenant_id, + corpus_id: row.corpus_id, + operation_id: row.operation_id, + step_id: row.step_id, + action: row.action, + resource_kind: row.resource_kind, + direction: row.direction, + idempotency_key: row.idempotency_key, + request_digest: row.request_digest, + precondition_digest: row.precondition_digest, + outcome: row.outcome, + reason: row.reason, + source_project_id: row.source_project_id, + project_id: row.project_id, + collection_id: row.collection_id, + item_id: row.item_id, + result_revision: row.result_revision, + result_digest: row.result_digest, + accepted_receipt_id: row.accepted_receipt_id, + created_by_operation: Number(row.created_by_operation) === 1, + created_at: row.created_at + }; +} +function aggregateRecord(row) { + const record = { + source_project_id: row.source_project_id, + project_id: row.project_id, + project_slug: row.project_slug, + project_name: row.project_name, + collection_id: row.collection_id, + collection_slug: row.collection_slug, + collection_name: row.collection_name, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + revision: `r${Number(row.revision)}`, + created_at: row.created_at, + updated_at: row.updated_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; +} +function receiptInsertParams(receipt) { + return [ + receipt.receipt_id, + receipt.authority, + receipt.route, + receipt.package_version, + receipt.authority_id, + receipt.tenant_id, + receipt.corpus_id, + receipt.operation_id, + receipt.step_id, + receipt.action, + receipt.resource_kind, + receipt.direction, + receipt.idempotency_key, + receipt.request_digest, + receipt.precondition_digest, + receipt.outcome, + receipt.reason, + receipt.source_project_id, + receipt.project_id, + receipt.collection_id, + receipt.item_id, + receipt.result_revision, + receipt.result_digest, + receipt.accepted_receipt_id, + receipt.created_by_operation ? 1 : 0, + receipt.created_at + ]; +} +var RECEIPT_INSERT_SQL = `INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`; + +class PackageOwnedKnowledgeProjectLinksAuthority { + sql; + itemResolver; + options; + identity; + now; + constructor(sql, itemResolver, options) { + this.sql = sql; + this.itemResolver = itemResolver; + this.options = options; + this.identity = { + authority_id: requiredString(options.authorityId, "authority_id"), + tenant_id: requiredString(options.tenantId, "tenant_id"), + corpus_id: requiredString(options.corpusId, "corpus_id") + }; + this.now = options.now ?? (() => new Date().toISOString()); + } + capabilityValue() { + return { + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + resource_route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + package_version: this.options.packageVersion, + schema_version: KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + ...this.identity, + registration_resource: "collection", + supported_resources: ["project", "collection", "item", "taxonomy"], + stable_project_ids: true, + stable_collection_ids: true, + explicit_membership: true, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + later_child_binding_required: true, + bind_existing_items: true, + immutable_receipts: true, + exact_terminal_lookup: true, + exact_readback: true, + conditional_inverse: true, + complete_keyset_pagination: true, + revision_bound_cursors: true + }; + } + async capability() { + return this.capabilityValue(); + } + assertIdentity(request) { + const capability = this.capabilityValue(); + if (request.authority_route !== capability.route || request.package_version !== capability.package_version || request.authority_id !== capability.authority_id || request.tenant_id !== capability.tenant_id || request.corpus_id !== capability.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "request does not match the current Knowledge project-registration capability identity."); + } + } + stableProjectId(sourceProjectId) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${sourceProjectId}`); + } + stableCollectionId(sourceProjectId, collectionSlug) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${sourceProjectId}\x00${collectionSlug}`); + } + stableReceiptId(operationId, stepId, action, direction) { + return stableUuid(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${operationId}\x00${stepId}\x00${action}\x00${direction}`); + } + async getAggregateBySource(sql, sourceProjectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, sourceProjectId]); + } + async getAggregateByCollection(sql, collectionId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`, [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, collectionId]); + } + async getAggregateByProject(sql, projectId) { + return sql.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + projectId, + projectId + ]); + } + async getReceiptByAttempt(sql, input) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + input.operation_id, + input.step_id, + input.action, + input.direction + ]); + return row ? toReceipt(row) : null; + } + assertIdempotent(existing, input) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); + } + } + async registerCollection(request) { + this.assertIdentity(request); + if (request.resource_kind !== "collection" || request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "collection registration requires resource_kind=collection and direction=forward."); + } + const sourceProjectId = requiredString(request.project_id, "project_id"); + const projectSlug = requiredString(request.project_slug, "project_slug"); + const projectName = requiredString(request.project_name, "project_name"); + const targetSelector = requiredString(request.target_selector, "target_selector"); + if (targetSelector !== sourceProjectId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "target_selector must equal the exact source project id."); + } + const collectionSlug = requiredString(request.desired.collection_slug ?? `${projectSlug}-knowledge`, "desired.collection_slug"); + const collectionName = requiredString(request.desired.collection_name ?? `${projectName} Knowledge`, "desired.collection_name"); + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "register_collection", + source_project_id: sourceProjectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized collection-registration request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + let aggregate = await this.getAggregateBySource(tx, sourceProjectId); + const createdByOperation = aggregate === null; + if (!aggregate) { + const now = this.now(); + const projectId = this.stableProjectId(sourceProjectId); + const collectionId = this.stableCollectionId(sourceProjectId, collectionSlug); + await tx.run(`INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + sourceProjectId, + projectId, + projectSlug, + projectName, + now, + now + ]); + await tx.run(`INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + projectId, + collectionSlug, + collectionName, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + 1, + now, + now + ]); + aggregate = await this.getAggregateByCollection(tx, collectionId); + } else if (aggregate.project_slug !== projectSlug || aggregate.project_name !== projectName || aggregate.collection_slug !== collectionSlug || aggregate.collection_name !== collectionName || aggregate.membership_rule !== KNOWLEDGE_PROJECT_MEMBERSHIP_RULE) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "the source project is already bound to a different Knowledge collection aggregate.", { + source_project_id: sourceProjectId, + collection_id: aggregate.collection_id + }); + } + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection registration committed but exact aggregate readback was unavailable."); + } + const record = aggregateRecord(aggregate); + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "forward"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_collection", + source_project_id: record.source_project_id, + project_id: record.project_id, + collection_id: record.collection_id, + item_id: null, + result_revision: record.revision, + result_digest: record.digest, + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readCollection(collectionId) { + const aggregate = await this.getAggregateByCollection(this.sql, requiredString(collectionId, "collection_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + return aggregateRecord(aggregate); + } + async lookupReceipt(request) { + if (request.max_items !== 1) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "exact terminal receipt lookup requires max_items=1."); + } + if (request.authority_id !== this.identity.authority_id || request.tenant_id !== this.identity.tenant_id || request.corpus_id !== this.identity.corpus_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH", "receipt lookup does not match this authority identity."); + } + const receipt = await this.getReceiptByAttempt(this.sql, request); + if (!receipt || receipt.idempotency_key !== request.idempotency_key) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "exact Knowledge project-link receipt was not found."); + } + return receipt; + } + async receiptById(sql, receiptId) { + const row = await sql.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`, [ + receiptId, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id + ]); + return row ? toReceipt(row) : null; + } + assertInverseIdentity(request) { + this.assertIdentity(request); + requiredString(request.accepted_receipt_id, "accepted_receipt_id"); + requiredString(request.idempotency_key, "idempotency_key"); + } + async compensateRegistration(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "register_collection" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection-registration receipt was not found."); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + let outcome = "accepted"; + let reason = null; + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_collection_is_not_inverse_owned"; + } else if (!aggregate) { + outcome = "terminal_nonacceptance"; + reason = "accepted_collection_is_already_absent"; + } else { + const membership = await tx.get(`SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + if (Number(membership?.count ?? 0) > 0) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_bound_items"; + } else { + await tx.run(`DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + await tx.run(`DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.project_id + ]); + } + } + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "register_collection", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + resource_kind: "collection", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: null, + result_revision: outcome === "accepted" ? "absent" : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyRegistrationInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "register_collection", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted collection inverse receipt was not found."); + } + const aggregate = inverse.collection_id ? await this.getAggregateByCollection(this.sql, inverse.collection_id) : null; + if (aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "collection inverse verification found the target still present."); + } + const verification = { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.collection_id, + absent: true, + digest: inverse.result_digest + }; + return verification; + } + async bindItem(request) { + this.assertIdentity(request); + if (request.direction !== "forward") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "item binding requires direction=forward."); + } + const collectionId = requiredString(request.collection_id, "collection_id"); + const itemId = requiredString(request.item_id, "item_id"); + const item = await this.itemResolver(itemId); + if (!item || item.id !== itemId) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "bind-existing requires an exact existing Knowledge item id.", { item_id: itemId }); + } + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: "bind_item", + collection_id: collectionId, + item_id: itemId + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH", "request_digest does not bind the normalized item-membership request.", { expected_request_digest: expectedRequestDigest }); + } + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "forward" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const aggregate = await this.getAggregateByCollection(tx, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection was not found by exact id."); + } + const existing = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId + ]); + const createdByOperation = existing === null; + const now = this.now(); + const receiptId = this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "forward"); + if (!existing) { + await tx.run(`INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + receiptId, + 1, + now + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + now, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId + ]); + } + const current = await this.getAggregateByCollection(tx, collectionId); + if (!current) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "item binding committed but collection readback was unavailable."); + } + const binding = { + collection_id: collectionId, + item_id: itemId, + collection_revision: `r${Number(current.revision)}`, + item_revision: `v${item.version ?? 1}` + }; + const receipt = { + receipt_id: receiptId, + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "forward", + idempotency_key: requiredString(request.idempotency_key, "idempotency_key"), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, "precondition_digest"), + outcome: "accepted", + reason: createdByOperation ? null : "adopted_existing_membership", + source_project_id: current.source_project_id, + project_id: current.project_id, + collection_id: collectionId, + item_id: itemId, + result_revision: binding.collection_revision, + result_digest: digestKnowledgeProjectLinksValue(binding), + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: now + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async readItemBinding(collectionId, itemId) { + const membership = await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + requiredString(collectionId, "collection_id"), + requiredString(itemId, "item_id") + ]); + if (!membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge collection membership was not found by exact ids."); + } + const aggregate = await this.getAggregateByCollection(this.sql, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "membership exists without its collection aggregate."); + } + const record = { + collection_id: collectionId, + item_id: itemId, + revision: `r${Number(aggregate.revision)}`, + bound_at: membership.bound_at + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; + } + async compensateItemBinding(request) { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== "bind_item" || accepted.direction !== "forward" || accepted.outcome !== "accepted") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding receipt was not found."); + } + let outcome = "accepted"; + let reason = null; + const membership = await tx.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id + ]); + if (!accepted.created_by_operation) { + outcome = "terminal_nonacceptance"; + reason = "adopted_membership_is_not_inverse_owned"; + } else if (!membership) { + outcome = "terminal_nonacceptance"; + reason = "accepted_membership_is_already_absent"; + } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { + outcome = "terminal_nonacceptance"; + reason = "membership_is_owned_by_a_different_receipt"; + } else { + await tx.run(`DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + accepted.receipt_id + ]); + await tx.run(`UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, [ + this.now(), + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id + ]); + } + const aggregate = accepted.collection_id ? await this.getAggregateByCollection(tx, accepted.collection_id) : null; + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + absent: outcome === "accepted" + }; + const receipt = { + receipt_id: this.stableReceiptId(request.operation_id, request.step_id, "bind_item", "inverse"), + authority: "knowledge", + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + resource_kind: "item", + direction: "inverse", + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id + }), + precondition_digest: accepted.result_digest ?? "", + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + result_revision: outcome === "accepted" && aggregate ? `r${Number(aggregate.revision)}` : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now() + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + async verifyItemBindingInverse(request) { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: "bind_item", + direction: "inverse" + }); + if (!inverse || inverse.outcome !== "accepted" || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "accepted item-binding inverse receipt was not found."); + } + const membership = await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + inverse.collection_id, + inverse.item_id + ]); + if (membership) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CONFLICT", "item-binding inverse verification found the membership still present."); + } + return { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.item_id, + absent: true, + digest: inverse.result_digest + }; + } + async buildResources(projectId) { + const aggregate = await this.getAggregateByProject(this.sql, requiredString(projectId, "project_id")); + if (!aggregate) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project aggregate was not found by source or stable project id."); + } + const memberships = await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id + ]); + const items = await Promise.all(memberships.map(async (membership) => { + const item = await this.itemResolver(membership.item_id); + if (!item || item.id !== membership.item_id) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "collection membership points at a missing Knowledge item; refusing a partial resource population.", { collection_id: aggregate.collection_id, item_id: membership.item_id }); + } + return item; + })); + const revision = `r${Number(aggregate.revision)}`; + const base = { + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + revision + }; + const resources = []; + const projectBody = { + ...base, + kind: "project", + id: aggregate.project_id, + title: aggregate.project_name, + locator: { kind: "canonical_uri", value: `knowledge:project:${aggregate.project_id}` }, + metadata: { + source_project_id: aggregate.source_project_id, + slug: aggregate.project_slug, + collection_count: 1 + } + }; + resources.push({ + ...projectBody, + key: `project:${aggregate.project_id}`, + digest: digestKnowledgeProjectLinksValue(projectBody) + }); + const collectionBody = { + ...base, + kind: "collection", + id: aggregate.collection_id, + title: aggregate.collection_name, + locator: { kind: "external_uuid", value: aggregate.collection_id }, + metadata: { + slug: aggregate.collection_slug, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + member_count: items.length + } + }; + resources.push({ + ...collectionBody, + key: `collection:${aggregate.collection_id}`, + digest: digestKnowledgeProjectLinksValue(collectionBody) + }); + for (const item of items) { + const itemBody = { + ...base, + kind: "item", + id: item.id, + revision: `v${item.version ?? 1}`, + title: item.title, + locator: { kind: "canonical_uri", value: `knowledge:item:${encodeURIComponent(item.id)}` }, + metadata: { + tags: [...item.tags ?? []], + archived: item.archived === true, + updated_at: item.updated_at + } + }; + resources.push({ + ...itemBody, + key: `item:${item.id}`, + digest: digestKnowledgeProjectLinksValue(itemBody) + }); + } + const taxonomy = new Map; + for (const item of items) { + for (const rawTag of item.tags ?? []) { + const normalized = rawTag.trim().toLowerCase(); + if (!normalized) + continue; + const entry = taxonomy.get(normalized) ?? { label: rawTag.trim(), itemIds: [] }; + entry.itemIds.push(item.id); + taxonomy.set(normalized, entry); + } + } + for (const [normalized, entry] of [...taxonomy.entries()].sort(([left], [right]) => left.localeCompare(right))) { + const taxonomyId = stableUuid(`${aggregate.collection_id}\x00taxonomy\x00${normalized}`); + const taxonomyBody = { + ...base, + kind: "taxonomy", + id: taxonomyId, + title: entry.label, + locator: { kind: "external_uuid", value: taxonomyId }, + metadata: { + tag: entry.label, + normalized_tag: normalized, + item_count: entry.itemIds.length, + member_digest: digestKnowledgeProjectLinksValue([...entry.itemIds].sort()) + } + }; + resources.push({ + ...taxonomyBody, + key: `taxonomy:${taxonomyId}`, + digest: digestKnowledgeProjectLinksValue(taxonomyBody) + }); + } + resources.sort((left, right) => left.key.localeCompare(right.key)); + return { aggregate, resources }; + } + async listProjectResources(projectId, options = {}) { + const limit = boundedLimit(options.limit); + const kinds = normalizeKinds(options.kinds); + const { aggregate, resources } = await this.buildResources(projectId); + const revision = `r${Number(aggregate.revision)}`; + const population = resources.filter((resource) => kinds.includes(resource.kind)); + const populationDigest = digestKnowledgeProjectLinksValue(population.map((resource) => ({ key: resource.key, digest: resource.digest }))); + let after = ""; + if (options.cursor) { + let decoded; + try { + decoded = JSON.parse(Buffer.from(options.cursor, "base64url").toString("utf8")); + } catch { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT", "cursor is not a valid Knowledge project-resources cursor."); + } + if (decoded.version !== 1 || decoded.project_id !== aggregate.project_id || decoded.collection_id !== aggregate.collection_id || decoded.collection_revision !== revision || decoded.population_digest !== populationDigest || canonicalKnowledgeProjectLinksJson(decoded.kinds) !== canonicalKnowledgeProjectLinksJson(kinds) || typeof decoded.after !== "string") { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed or the cursor belongs to a different project/kind selection; restart from the first page."); + } + after = decoded.after; + } + const remaining = after ? population.filter((resource) => resource.key > after) : population; + const pageResources = remaining.slice(0, limit); + const hasMore = remaining.length > pageResources.length; + const nextCursor = hasMore && pageResources.length > 0 ? Buffer.from(JSON.stringify({ + version: 1, + project_id: aggregate.project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + kinds, + after: pageResources.at(-1).key + })).toString("base64url") : null; + return { + schema: "knowledge.project-resources.page.v1", + authority: "knowledge", + route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + ...this.identity, + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + resource_kinds: kinds, + resources: pageResources, + count: pageResources.length, + total: population.length, + limit, + cursor: options.cursor ?? null, + next_cursor: nextCursor, + has_more: hasMore, + complete: !hasMore, + truncated: false + }; + } + async readProjectResource(projectId, kind, resourceId) { + const { resources } = await this.buildResources(projectId); + const resource = resources.find((candidate) => candidate.kind === kind && candidate.id === resourceId); + if (!resource) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND", "Knowledge project resource was not found by exact kind and id."); + } + return resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expected = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + const identity = { + project_id: page.project_id, + collection_id: page.collection_id, + collection_revision: page.collection_revision, + population_digest: page.population_digest, + total: page.total, + kinds: canonicalKnowledgeProjectLinksJson(page.resource_kinds) + }; + if (expected && canonicalKnowledgeProjectLinksJson(expected) !== canonicalKnowledgeProjectLinksJson(identity)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete population was being read."); + } + expected ??= identity; + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource pagination returned a duplicate stable resource key.", { key: resource.key }); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resource page claims more data without a continuation cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (!expected || resources.length !== expected.total) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete project resource enumeration did not match the producer total.", { expected_total: expected?.total ?? null, received: resources.length }); + } + return resources; + } +} +function createLocalKnowledgeProjectLinksAuthority(input) { + if (input.databasePath !== ":memory:") { + ensureParentDir(input.databasePath); + } + const db = new Database2(input.databasePath, { create: true }); + db.exec(sqliteKnowledgeProjectLinksSchemaSql()); + return new PackageOwnedKnowledgeProjectLinksAuthority(new SqliteProjectLinksSql(db), (id) => input.itemStore.get(id), input.options); +} +function createPostgresKnowledgeProjectLinksAuthority(input) { + return new PackageOwnedKnowledgeProjectLinksAuthority(new PostgresProjectLinksSql(input.client, input.client), input.itemResolver, input.options); +} +function wireErrorStatus(error) { + if (error.code === "KNOWLEDGE_PROJECT_LINKS_NOT_FOUND") + return 404; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_CONFLICT" || error.code === "KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE" || error.code === "KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH") + return 409; + if (error.code === "KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION") + return 503; + return 400; +} +function knowledgeProjectLinksErrorResponse(error) { + if (error instanceof KnowledgeProjectLinksError) { + return Response.json({ error: error.code, message: error.message, details: error.details }, { status: wireErrorStatus(error) }); + } + throw error; +} + +class KnowledgeProjectLinksHttpClient { + options; + fetchImpl; + root; + constructor(options) { + this.options = options; + this.fetchImpl = options.fetch ?? guardedFetch; + this.root = options.baseUrl.replace(/\/+$/, ""); + } + headers(extra = {}) { + const headers = new Headers(this.options.headers); + headers.set("accept", "application/json"); + if (this.options.apiKey) + headers.set("x-api-key", this.options.apiKey); + for (const [key, value] of Object.entries(extra)) + headers.set(key, value); + return headers; + } + async request(path, init = {}) { + const response = await this.fetchImpl(`${this.root}${path}`, { + ...init, + headers: this.headers(init.body ? { "content-type": "application/json" } : {}) + }); + const body = await response.json().catch(() => ({})); + if (!response.ok) { + throw new KnowledgeProjectLinksError(typeof body.error === "string" ? body.error : "KNOWLEDGE_PROJECT_LINKS_CONFLICT", typeof body.message === "string" ? body.message : `Knowledge project-links HTTP ${response.status}`, body.details && typeof body.details === "object" ? body.details : {}); + } + return body; + } + async capability() { + const body = await this.request("/v1/project-registration/capability"); + return body.capability; + } + async registerCollection(request) { + const body = await this.request("/v1/project-registration/create", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readCollection(collectionId) { + const body = await this.request("/v1/project-registration/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId }) }); + return body.record; + } + async lookupReceipt(request) { + const body = await this.request("/v1/project-registration/receipts/lookup", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async compensateRegistration(request) { + const body = await this.request("/v1/project-registration/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyRegistrationInverse(request) { + const body = await this.request("/v1/project-registration/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async bindItem(request) { + const body = await this.request("/v1/project-registration/items/bind", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async readItemBinding(collectionId, itemId) { + const body = await this.request("/v1/project-registration/items/read-exact", { method: "POST", body: JSON.stringify({ collection_id: collectionId, item_id: itemId }) }); + return body.record; + } + async compensateItemBinding(request) { + const body = await this.request("/v1/project-registration/items/compensate", { method: "POST", body: JSON.stringify(request) }); + return body.receipt; + } + async verifyItemBindingInverse(request) { + const body = await this.request("/v1/project-registration/items/verify-inverse", { method: "POST", body: JSON.stringify(request) }); + return body.verification; + } + async listProjectResources(projectId, options = {}) { + const query2 = new URLSearchParams; + if (options.limit !== undefined) + query2.set("limit", String(options.limit)); + if (options.cursor) + query2.set("cursor", options.cursor); + for (const kind of options.kinds ?? []) + query2.append("kind", kind); + const suffix = query2.size > 0 ? `?${query2.toString()}` : ""; + return this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources${suffix}`); + } + async readProjectResource(projectId, kind, resourceId) { + const body = await this.request(`/v1/projects/${encodeURIComponent(projectId)}/resources/${kind}/${encodeURIComponent(resourceId)}`); + return body.resource; + } + async readAllProjectResources(projectId, options = {}) { + const resources = []; + const seen = new Set; + let cursor = null; + let expectedTotal = null; + let expectedRevision = null; + let expectedPopulationDigest = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + expectedTotal ??= page.total; + expectedRevision ??= page.collection_revision; + expectedPopulationDigest ??= page.population_digest; + if (page.total !== expectedTotal || page.collection_revision !== expectedRevision || page.population_digest !== expectedPopulationDigest) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE", "project resources changed while the complete HTTP population was being read."); + } + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP pagination returned a duplicate stable key."); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "project resources HTTP page claims more data without a cursor."); + } + cursor = page.next_cursor; + } while (cursor); + if (expectedTotal === null || resources.length !== expectedTotal) { + throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION", "complete HTTP resource enumeration did not match the producer total."); + } + return resources; + } +} +function createKnowledgeProjectLinksHttpClient(options) { + return new KnowledgeProjectLinksHttpClient(options); +} + // src/db/pg-migrations.ts var PG_MIGRATIONS = [ `CREATE TABLE IF NOT EXISTS sources ( @@ -3937,7 +5364,8 @@ var PG_MIGRATIONS = [ archived, id ) WHERE metadata #>> '{hasna_knowledge_relations,schema}' - = 'hasna.knowledge.relations.v1'` + = 'hasna.knowledge.relations.v1'`, + ...postgresKnowledgeProjectLinksSchemaStatements() ]; export { wrapExecutor, diff --git a/src/cli.ts b/src/cli.ts index 4a3bcdf..8d74b3b 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -19,12 +19,20 @@ import { import { openKnowledgeDb } from './knowledge-db'; import { createKnowledgeService } from './service'; import { createKnowledgeProjectPanel, formatKnowledgeProjectPanel } from './project-panel'; +import { + KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + createLocalKnowledgeProjectLinksAuthority, + digestKnowledgeProjectLinksValue, + type KnowledgeProjectReceiptAction, + type KnowledgeProjectRegistrationDirection, + type KnowledgeProjectResourceKind, +} from './project-links'; import { getStorageStatus as getDatabaseStorageStatus } from './storage'; import { assertProviderCredentials, parseModelRef, resolveModelRef, type AiProviderId } from './providers'; import { approvalStatus, assertS3ReadAllowed, assertWebSearchAllowed, createApprovalGate, recordAuditEvent, recordRedactionFindings, redactSecrets } from './safety'; import { Command } from 'commander'; import { registerEventsCommands } from '@hasna/events/commander'; -import { basename } from 'node:path'; +import { basename, dirname, join } from 'node:path'; import pkg from '../package.json' with { type: 'json' }; type LogLevel = 'debug' | 'info' | 'warn' | 'error'; @@ -132,6 +140,19 @@ interface Flags { contract?: boolean; sourceRef?: string[]; allowGlobal?: boolean; + operationId?: string; + stepId?: string; + idempotencyKey?: string; + collectionId?: string; + itemId?: string; + receiptId?: string; + cursor?: string; + kind?: string[]; + all?: boolean; + slug?: string; + name?: string; + collectionSlug?: string; + collectionName?: string; } interface ParseResult { @@ -140,7 +161,7 @@ interface ParseResult { } const EVENTS_COMMANDS = ['events', 'webhooks']; -const COMMANDS = ['add', 'list', 'get', 'delete', 'update', 'archive', 'restore', 'upsert', 'untag', 'versions', 'diff', 'export', 'prune', 'dedupe', 'stats', 'inventory', 'project-panel', 'paths', 'mode', 'guarded', 'setup', 'auth', 'storage', 'machines', 'sync', 'db', 'wiki', 'app-wiki', 'source', 'ingest', 'reindex', 'search', 'context', 'proposals', 'web', 'ask', 'build', 'embeddings', 'providers', 'safety', 'help', ...EVENTS_COMMANDS]; +const COMMANDS = ['add', 'list', 'get', 'delete', 'update', 'archive', 'restore', 'upsert', 'untag', 'versions', 'diff', 'export', 'prune', 'dedupe', 'stats', 'inventory', 'project-panel', 'project-registration', 'project-membership', 'project-resources', 'project-resource', 'paths', 'mode', 'guarded', 'setup', 'auth', 'storage', 'machines', 'sync', 'db', 'wiki', 'app-wiki', 'source', 'ingest', 'reindex', 'search', 'context', 'proposals', 'web', 'ask', 'build', 'embeddings', 'providers', 'safety', 'help', ...EVENTS_COMMANDS]; const COMMAND_ALIASES: Record<string, string> = { ls: 'list', rm: 'delete', @@ -317,6 +338,19 @@ function parseArgs(argv: string[]): ParseResult { case '--contract': flags.contract = true; break; case '--source-ref': flags.sourceRef = [...(flags.sourceRef ?? []), argv[i + 1]]; i += 1; break; case '--allow-global': flags.allowGlobal = true; break; + case '--operation-id': flags.operationId = argv[i + 1]; i += 1; break; + case '--step-id': flags.stepId = argv[i + 1]; i += 1; break; + case '--idempotency-key': flags.idempotencyKey = argv[i + 1]; i += 1; break; + case '--collection-id': flags.collectionId = argv[i + 1]; i += 1; break; + case '--item-id': flags.itemId = argv[i + 1]; i += 1; break; + case '--receipt-id': flags.receiptId = argv[i + 1]; i += 1; break; + case '--cursor': flags.cursor = argv[i + 1]; i += 1; break; + case '--kind': flags.kind = [...(flags.kind ?? []), argv[i + 1] as string]; i += 1; break; + case '--all': flags.all = true; break; + case '--slug': flags.slug = argv[i + 1]; i += 1; break; + case '--name': flags.name = argv[i + 1]; i += 1; break; + case '--collection-slug': flags.collectionSlug = argv[i + 1]; i += 1; break; + case '--collection-name': flags.collectionName = argv[i + 1]; i += 1; break; default: throw new Error(`Unknown flag: ${token}. Run 'knowledge --help' for valid options.`); } } @@ -395,6 +429,10 @@ Commands: stats Show knowledge base statistics inventory Show all local knowledge layers and previews project-panel Emit Projects dashboard project-panel contract + project-registration Register/read/compensate a project collection with immutable receipts + project-membership Bind/read/compensate exact item membership + project-resources Enumerate complete project/collection/item/taxonomy resources + project-resource Read one exact project resource paths Show resolved workspace/store paths mode Report the resolved backend (local or cloud) and why guarded capabilities Report FCAME-1 private transport capability @@ -469,6 +507,15 @@ Global Options: --tables <names> Comma-separated knowledge.db sync tables --peer-workspace <path> Peer repo root or .hasna/knowledge path for local sync or remote override --project <id> Project id/name/slug for project-panel output + --operation-id <id> Stable Projects registration operation id + --step-id <id> Stable Projects registration step id + --idempotency-key <key> Caller-owned idempotency key + --collection-id <uuid> Exact Knowledge collection id + --item-id <id> Exact existing Knowledge item id + --receipt-id <uuid> Exact accepted receipt id for compensation + --cursor <cursor> Revision-bound project-resource cursor + --kind <kind> Resource kind filter; repeatable + --all Read project resources to complete exhaustion --contract Emit contract JSON for project-panel output --source-ref <uri> Attach a source ref to an app-wiki note --allow-global Explicitly allow app-wiki writes to global scope @@ -529,6 +576,10 @@ function printCommandHelp(command: string): void { if (command === 'stats') { console.log('Usage: knowledge stats [--json]'); return; } if (command === 'inventory') { console.log('Usage: knowledge inventory [--scope local|global|project] [--limit <n>] [--include-archived] [--verbose] [--json]'); return; } if (command === 'project-panel') { console.log('Usage: knowledge project-panel --project <id|name|slug> [--scope project|local|global] [--limit <n>] [--include-archived] [--json|--contract]'); return; } + if (command === 'project-registration') { console.log('Usage: knowledge project-registration capability|create|read-exact|receipt|compensate|verify-inverse [--operation-id <id>] [--step-id <id>] [--idempotency-key <key>] [--project <id>] [--slug <slug>] [--name <name>] [--collection-id <uuid>] [--collection-slug <slug>] [--collection-name <name>] [--receipt-id <uuid>] [--json]'); return; } + if (command === 'project-membership') { console.log('Usage: knowledge project-membership bind|read-exact|compensate|verify-inverse [--operation-id <id>] [--step-id <id>] [--idempotency-key <key>] [--collection-id <uuid>] [--item-id <id>] [--receipt-id <uuid>] [--json]'); return; } + if (command === 'project-resources') { console.log('Usage: knowledge project-resources <project-id> [--kind <project|collection|item|taxonomy>]... [--limit <n>] [--cursor <cursor>] [--all] [--json]'); return; } + if (command === 'project-resource') { console.log('Usage: knowledge project-resource <project-id> <project|collection|item|taxonomy> <resource-id> [--json]'); return; } if (command === 'paths') { console.log('Usage: knowledge paths [--scope local|global|project] [--verbose] [--json]'); return; } if (command === 'mode') { console.log(`Usage: knowledge mode [--json]\n Reports which backend this process would use — sqlite (on-box store) or postgres (HTTP /v1) — and\n which env var selected it. Reads the environment only: no store is opened, no config file is read,\n and no request is made, so it is safe on a machine with no config and no network.\n Selection is EXPLICIT-ONLY: set ${KNOWLEDGE_MODE_ENV_KEYS[0]}=sqlite|postgres. Setting only\n ${KNOWLEDGE_API_URL_ENV_KEYS[0]} / ${KNOWLEDGE_API_KEY_ENV_KEYS[0]} does NOT switch backends;\n those are reported as present-but-ignored pointers. Env var NAMES are printed, never values.`); return; } if (command === 'guarded') { console.log('Usage: knowledge guarded capabilities [--json]\n Reports metadata-only FCAME-1 private input, private result, and exact-title lookup support.'); return; } @@ -903,11 +954,11 @@ async function run(argv: string[]): Promise<void> { if (flags.completions) { const shell = flags.completions; if (shell === '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 guarded 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`); + 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 project-registration project-membership project-resources project-resource paths mode guarded 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 --operation-id --step-id --idempotency-key --slug --name --collection-id --collection-slug --collection-name --item-id --receipt-id --cursor --kind --all --contract --source-ref --allow-global" -- "$cur")); }; complete -F _knowledge knowledge`); } else if (shell === 'zsh') { - console.log(`#compdef knowledge\n_knowledge() { _arguments -C "1: :(add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel paths mode guarded 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`); + console.log(`#compdef knowledge\n_knowledge() { _arguments -C "1: :(add list get update archive restore upsert untag versions diff delete export prune dedupe stats inventory project-panel project-registration project-membership project-resources project-resource paths mode guarded 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" "(--all)--all" "(--contract)--contract" "(--allow-global)--allow-global" "(-p --page)"{-p,--page}"[page number]:number:" "(-l --limit)"{-l,--limit}"[items per page]:number:" "(--search)--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]:" "(--operation-id)--operation-id[registration operation id]:" "(--step-id)--step-id[registration step id]:" "(--idempotency-key)--idempotency-key[caller idempotency key]:" "(--slug)--slug[project slug]:" "(--name)--name[project name]:" "(--collection-id)--collection-id[exact collection id]:" "(--collection-slug)--collection-slug[collection slug]:" "(--collection-name)--collection-name[collection name]:" "(--item-id)--item-id[exact item id]:" "(--receipt-id)--receipt-id[exact receipt id]:" "(--cursor)--cursor[resource cursor]:" "(--kind)--kind[resource kind]:(project collection item taxonomy):" "(--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 (shell === '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 guarded 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`); + 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 project-registration project-membership project-resources project-resource paths mode guarded 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 operation-id; complete -c knowledge -l step-id; complete -c knowledge -l idempotency-key; complete -c knowledge -l slug; complete -c knowledge -l name; complete -c knowledge -l collection-id; complete -c knowledge -l collection-slug; complete -c knowledge -l collection-name; complete -c knowledge -l item-id; complete -c knowledge -l receipt-id; complete -c knowledge -l cursor; complete -c knowledge -l kind -a "project collection item taxonomy"; complete -c knowledge -l all; 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 new Error("Invalid --completions value. Use 'bash', 'zsh', or 'fish'."); } @@ -1038,6 +1089,264 @@ async function run(argv: string[]): Promise<void> { ensureStore(storePath); } + const projectLinksAuthority = () => { + if (!storePathOverridden || isKnowledgeApiMode()) return service.projectLinksAuthority(); + return createLocalKnowledgeProjectLinksAuthority({ + databasePath: join(dirname(storePath), 'knowledge.db'), + itemStore, + options: { + packageVersion: pkg.version, + authorityId: process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? 'knowledge', + tenantId: process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID ?? 'local', + corpusId: process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? 'knowledge', + }, + }); + }; + + if (command === 'project-registration') { + const action = positional[1] ?? 'capability'; + const authority = projectLinksAuthority(); + if (action === 'capability') { + output({ ok: true, capability: await authority.capability() }, flags.json, flags); + return; + } + if (action === 'create') { + const capability = await authority.capability(); + const projectId = flags.project; + const projectSlug = flags.slug; + const projectName = flags.name; + if (!flags.operationId || !flags.stepId || !flags.idempotencyKey || !projectId || !projectSlug || !projectName) { + throw new Error( + 'Usage: knowledge project-registration create --operation-id <id> --step-id <id> ' + + '--idempotency-key <key> --project <id> --slug <slug> --name <name> ' + + '[--collection-slug <slug>] [--collection-name <name>] [--json]', + ); + } + const desired = { + collection_slug: flags.collectionSlug ?? `${projectSlug}-knowledge`, + collection_name: flags.collectionName ?? `${projectName} Knowledge`, + }; + const requestDigest = digestKnowledgeProjectLinksValue({ + action: 'register_collection', + source_project_id: projectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: desired.collection_slug, + collection_name: desired.collection_name, + membership_rule: 'explicit_collection_binding', + }); + const receipt = await authority.registerCollection({ + operation_id: flags.operationId, + step_id: flags.stepId, + resource_kind: 'collection', + direction: 'forward', + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + target_selector: projectId, + idempotency_key: flags.idempotencyKey, + request_digest: requestDigest, + precondition_digest: digestKnowledgeProjectLinksValue({ + source_project_id: projectId, + expected: 'absent_or_exact_match', + }), + project_id: projectId, + project_slug: projectSlug, + project_name: projectName, + desired, + }); + output({ ok: receipt.outcome === 'accepted', receipt }, flags.json, flags); + return; + } + if (action === 'read-exact') { + if (!flags.collectionId) { + throw new Error('Usage: knowledge project-registration read-exact --collection-id <uuid> [--json]'); + } + output({ ok: true, record: await authority.readCollection(flags.collectionId) }, flags.json, flags); + return; + } + if (action === 'receipt') { + const receiptAction = positional[2] as KnowledgeProjectReceiptAction | undefined; + const direction = positional[3] as KnowledgeProjectRegistrationDirection | undefined; + if ( + !flags.operationId + || !flags.stepId + || !flags.idempotencyKey + || !receiptAction + || !direction + ) { + throw new Error( + 'Usage: knowledge project-registration receipt <register_collection|bind_item> <forward|inverse> ' + + '--operation-id <id> --step-id <id> --idempotency-key <key> [--json]', + ); + } + const capability = await authority.capability(); + const receipt = await authority.lookupReceipt({ + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + operation_id: flags.operationId, + step_id: flags.stepId, + action: receiptAction, + direction, + idempotency_key: flags.idempotencyKey, + max_items: 1, + }); + output({ ok: true, receipt }, flags.json, flags); + return; + } + if (action === 'compensate' || action === 'verify-inverse') { + if (!flags.operationId || !flags.stepId || !flags.idempotencyKey || !flags.receiptId) { + throw new Error( + `Usage: knowledge project-registration ${action} --operation-id <id> --step-id <id> ` + + '--idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]', + ); + } + const capability = await authority.capability(); + const request = { + operation_id: flags.operationId, + step_id: flags.stepId, + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + idempotency_key: flags.idempotencyKey, + accepted_receipt_id: flags.receiptId, + }; + const result = action === 'compensate' + ? { receipt: await authority.compensateRegistration(request) } + : { verification: await authority.verifyRegistrationInverse(request) }; + output({ ok: true, ...result }, flags.json, flags); + return; + } + throw new Error( + 'Invalid project-registration action. Use capability, create, read-exact, receipt, compensate, or verify-inverse.', + ); + } + + if (command === 'project-membership') { + const action = positional[1] ?? 'read-exact'; + const authority = projectLinksAuthority(); + if (action === 'bind') { + if (!flags.operationId || !flags.stepId || !flags.idempotencyKey || !flags.collectionId || !flags.itemId) { + throw new Error( + 'Usage: knowledge project-membership bind --operation-id <id> --step-id <id> ' + + '--idempotency-key <key> --collection-id <uuid> --item-id <id> [--json]', + ); + } + const capability = await authority.capability(); + const receipt = await authority.bindItem({ + operation_id: flags.operationId, + step_id: flags.stepId, + direction: 'forward', + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + idempotency_key: flags.idempotencyKey, + request_digest: digestKnowledgeProjectLinksValue({ + action: 'bind_item', + collection_id: flags.collectionId, + item_id: flags.itemId, + }), + precondition_digest: digestKnowledgeProjectLinksValue({ + collection_id: flags.collectionId, + item_id: flags.itemId, + expected: 'unbound_or_exact_membership', + }), + collection_id: flags.collectionId, + item_id: flags.itemId, + }); + output({ ok: receipt.outcome === 'accepted', receipt }, flags.json, flags); + return; + } + if (action === 'read-exact') { + if (!flags.collectionId || !flags.itemId) { + throw new Error( + 'Usage: knowledge project-membership read-exact --collection-id <uuid> --item-id <id> [--json]', + ); + } + output({ + ok: true, + record: await authority.readItemBinding(flags.collectionId, flags.itemId), + }, flags.json, flags); + return; + } + if (action === 'compensate' || action === 'verify-inverse') { + if (!flags.operationId || !flags.stepId || !flags.idempotencyKey || !flags.receiptId) { + throw new Error( + `Usage: knowledge project-membership ${action} --operation-id <id> --step-id <id> ` + + '--idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]', + ); + } + const capability = await authority.capability(); + const request = { + operation_id: flags.operationId, + step_id: flags.stepId, + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + idempotency_key: flags.idempotencyKey, + accepted_receipt_id: flags.receiptId, + }; + const result = action === 'compensate' + ? { receipt: await authority.compensateItemBinding(request) } + : { verification: await authority.verifyItemBindingInverse(request) }; + output({ ok: true, ...result }, flags.json, flags); + return; + } + throw new Error( + 'Invalid project-membership action. Use bind, read-exact, compensate, or verify-inverse.', + ); + } + + if (command === 'project-resources') { + const projectId = flags.project ?? positional[1]; + if (!projectId) { + throw new Error( + 'Usage: knowledge project-resources <project-id> [--kind <kind>]... [--limit <n>] [--cursor <cursor>] [--all] [--json]', + ); + } + const authority = projectLinksAuthority(); + const kinds = flags.kind as KnowledgeProjectResourceKind[] | undefined; + const result = flags.all + ? { + resources: await authority.readAllProjectResources(projectId, { + limit: flags.limit, + kinds, + }), + } + : await authority.listProjectResources(projectId, { + limit: flags.limit, + cursor: flags.cursor, + kinds, + }); + output({ ok: true, ...result }, flags.json, flags); + return; + } + + if (command === 'project-resource') { + const projectId = flags.project ?? positional[1]; + const kind = positional[2] as KnowledgeProjectResourceKind | undefined; + const resourceId = positional[3]; + if (!projectId || !kind || !resourceId) { + throw new Error( + 'Usage: knowledge project-resource <project-id> <project|collection|item|taxonomy> <resource-id> [--json]', + ); + } + output({ + ok: true, + resource: await projectLinksAuthority().readProjectResource(projectId, kind, resourceId), + }, flags.json, flags); + return; + } + if (command === 'inventory') { // Single dispatch shared with the MCP + SDK: the shared cloud item corpus in // api mode (routes through the cloud transport), otherwise the full local diff --git a/src/db/pg-migrations.ts b/src/db/pg-migrations.ts index 8469bb6..6a01a24 100644 --- a/src/db/pg-migrations.ts +++ b/src/db/pg-migrations.ts @@ -1,3 +1,5 @@ +import { postgresKnowledgeProjectLinksSchemaStatements } from '../project-links.js'; + export const PG_MIGRATIONS: string[] = [ `CREATE TABLE IF NOT EXISTS sources ( id TEXT PRIMARY KEY, @@ -1480,4 +1482,5 @@ export const PG_MIGRATIONS: string[] = [ ) WHERE metadata #>> '{hasna_knowledge_relations,schema}' = 'hasna.knowledge.relations.v1'`, + ...postgresKnowledgeProjectLinksSchemaStatements(), ]; diff --git a/src/index.ts b/src/index.ts index 13860f2..ed42354 100644 --- a/src/index.ts +++ b/src/index.ts @@ -19,12 +19,49 @@ export { type KnowledgeContextOptions, type KnowledgeInventoryOptions, type KnowledgeItemsSdk, + type KnowledgeProjectLinksSdk, type KnowledgeRulesProvenanceOptions, type KnowledgeSearchOptions, type KnowledgeSetupOptions, type KnowledgeSyncDoctorOptions, type KnowledgeWebSearchOptions, } from './sdk.js'; +export { + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + KnowledgeProjectLinksError, + KnowledgeProjectLinksHttpClient, + canonicalKnowledgeProjectLinksJson, + createKnowledgeProjectLinksHttpClient, + createLocalKnowledgeProjectLinksAuthority, + createPostgresKnowledgeProjectLinksAuthority, + digestKnowledgeProjectLinksValue, + postgresKnowledgeProjectLinksSchemaStatements, + sqliteKnowledgeProjectLinksSchemaSql, + type KnowledgeProjectAuthorityIdentity, + type KnowledgeProjectCollectionRecord, + type KnowledgeProjectInverseRequest, + type KnowledgeProjectInverseVerification, + type KnowledgeProjectItemBindingRecord, + type KnowledgeProjectItemBindingRequest, + type KnowledgeProjectLinksAuthority, + type KnowledgeProjectLinksAuthorityOptions, + type KnowledgeProjectLinksErrorCode, + type KnowledgeProjectLinksHttpClientOptions, + type KnowledgeProjectReceiptAction, + type KnowledgeProjectReceiptLookupRequest, + type KnowledgeProjectReceiptOutcome, + type KnowledgeProjectRegistrationCapability, + type KnowledgeProjectRegistrationDirection, + type KnowledgeProjectRegistrationReceipt, + type KnowledgeProjectRegistrationRequest, + type KnowledgeProjectResource, + type KnowledgeProjectResourceKind, + type KnowledgeProjectResourceListOptions, + type KnowledgeProjectResourcePage, +} from './project-links.js'; export { resolveItemStore, type ItemStore, diff --git a/src/project-links.ts b/src/project-links.ts new file mode 100644 index 0000000..27ca0c0 --- /dev/null +++ b/src/project-links.ts @@ -0,0 +1,2183 @@ +import { createHash } from 'node:crypto'; +import { Database, type SQLQueryBindings } from 'bun:sqlite'; +import { ensureParentDir } from './workspace.js'; +import type { ItemStore } from './item-store.js'; +import type { KnowledgeItem } from './store.js'; +import type { PoolQueryClient, TypedQueryClient } from './generated/storage-kit/index.js'; +import { guardedFetch } from './net-guard.js'; + +export const KNOWLEDGE_PROJECT_REGISTRATION_ROUTE = 'knowledge.project-registration.v1' as const; +export const KNOWLEDGE_PROJECT_RESOURCES_ROUTE = 'knowledge.project-resources.v1' as const; +export const KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION = 1 as const; +export const KNOWLEDGE_PROJECT_MEMBERSHIP_RULE = 'explicit_collection_binding' as const; + +export type KnowledgeProjectResourceKind = 'project' | 'collection' | 'item' | 'taxonomy'; +export type KnowledgeProjectRegistrationDirection = 'forward' | 'inverse'; +export type KnowledgeProjectReceiptAction = 'register_collection' | 'bind_item'; +export type KnowledgeProjectReceiptOutcome = 'accepted' | 'terminal_nonacceptance'; + +export interface KnowledgeProjectAuthorityIdentity { + authority_id: string; + tenant_id: string; + corpus_id: string; +} + +export interface KnowledgeProjectRegistrationCapability extends KnowledgeProjectAuthorityIdentity { + authority: 'knowledge'; + route: typeof KNOWLEDGE_PROJECT_REGISTRATION_ROUTE; + resource_route: typeof KNOWLEDGE_PROJECT_RESOURCES_ROUTE; + package_version: string; + schema_version: typeof KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION; + registration_resource: 'collection'; + supported_resources: ['project', 'collection', 'item', 'taxonomy']; + stable_project_ids: true; + stable_collection_ids: true; + explicit_membership: true; + membership_rule: typeof KNOWLEDGE_PROJECT_MEMBERSHIP_RULE; + later_child_binding_required: true; + bind_existing_items: true; + immutable_receipts: true; + exact_terminal_lookup: true; + exact_readback: true; + conditional_inverse: true; + complete_keyset_pagination: true; + revision_bound_cursors: true; +} + +export interface KnowledgeProjectRegistrationRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + resource_kind: 'collection'; + direction: KnowledgeProjectRegistrationDirection; + authority_route: string; + package_version: string; + target_selector: string; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + project_id: string; + project_slug: string; + project_name: string; + desired: { + collection_slug?: string; + collection_name?: string; + }; +} + +export interface KnowledgeProjectItemBindingRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + direction: KnowledgeProjectRegistrationDirection; + authority_route: string; + package_version: string; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + collection_id: string; + item_id: string; +} + +export interface KnowledgeProjectInverseRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + authority_route: string; + package_version: string; + idempotency_key: string; + accepted_receipt_id: string; +} + +export interface KnowledgeProjectReceiptLookupRequest extends KnowledgeProjectAuthorityIdentity { + operation_id: string; + step_id: string; + action: KnowledgeProjectReceiptAction; + direction: KnowledgeProjectRegistrationDirection; + idempotency_key: string; + max_items: 1; +} + +export interface KnowledgeProjectRegistrationReceipt extends KnowledgeProjectAuthorityIdentity { + receipt_id: string; + authority: 'knowledge'; + route: typeof KNOWLEDGE_PROJECT_REGISTRATION_ROUTE; + package_version: string; + operation_id: string; + step_id: string; + action: KnowledgeProjectReceiptAction; + resource_kind: 'collection' | 'item'; + direction: KnowledgeProjectRegistrationDirection; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + outcome: KnowledgeProjectReceiptOutcome; + reason: string | null; + source_project_id: string | null; + project_id: string | null; + collection_id: string | null; + item_id: string | null; + result_revision: string | null; + result_digest: string | null; + accepted_receipt_id: string | null; + created_by_operation: boolean; + created_at: string; +} + +export interface KnowledgeProjectCollectionRecord { + source_project_id: string; + project_id: string; + project_slug: string; + project_name: string; + collection_id: string; + collection_slug: string; + collection_name: string; + membership_rule: typeof KNOWLEDGE_PROJECT_MEMBERSHIP_RULE; + revision: string; + digest: string; + created_at: string; + updated_at: string; +} + +export interface KnowledgeProjectItemBindingRecord { + collection_id: string; + item_id: string; + revision: string; + digest: string; + bound_at: string; +} + +export interface KnowledgeProjectInverseVerification { + accepted_receipt_id: string; + target_id: string; + absent: true; + digest: string; +} + +export interface KnowledgeProjectResource { + key: string; + kind: KnowledgeProjectResourceKind; + id: string; + project_id: string; + source_project_id: string; + collection_id: string; + revision: string; + digest: string; + title: string; + locator: { + kind: 'external_uuid' | 'canonical_uri'; + value: string; + }; + metadata: Record<string, unknown>; +} + +export interface KnowledgeProjectResourcePage { + schema: 'knowledge.project-resources.page.v1'; + authority: 'knowledge'; + route: typeof KNOWLEDGE_PROJECT_RESOURCES_ROUTE; + authority_id: string; + tenant_id: string; + corpus_id: string; + project_id: string; + source_project_id: string; + collection_id: string; + collection_revision: string; + population_digest: string; + resource_kinds: KnowledgeProjectResourceKind[]; + resources: KnowledgeProjectResource[]; + count: number; + total: number; + limit: number; + cursor: string | null; + next_cursor: string | null; + has_more: boolean; + complete: boolean; + truncated: false; +} + +export interface KnowledgeProjectResourceListOptions { + limit?: number; + cursor?: string | null; + kinds?: KnowledgeProjectResourceKind[]; +} + +export interface KnowledgeProjectLinksAuthority { + capability(): Promise<KnowledgeProjectRegistrationCapability>; + registerCollection(request: KnowledgeProjectRegistrationRequest): Promise<KnowledgeProjectRegistrationReceipt>; + readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord>; + lookupReceipt(request: KnowledgeProjectReceiptLookupRequest): Promise<KnowledgeProjectRegistrationReceipt>; + compensateRegistration(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt>; + verifyRegistrationInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification>; + bindItem(request: KnowledgeProjectItemBindingRequest): Promise<KnowledgeProjectRegistrationReceipt>; + readItemBinding(collectionId: string, itemId: string): Promise<KnowledgeProjectItemBindingRecord>; + compensateItemBinding(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt>; + verifyItemBindingInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification>; + listProjectResources( + projectId: string, + options?: KnowledgeProjectResourceListOptions, + ): Promise<KnowledgeProjectResourcePage>; + readProjectResource( + projectId: string, + kind: KnowledgeProjectResourceKind, + resourceId: string, + ): Promise<KnowledgeProjectResource>; + readAllProjectResources( + projectId: string, + options?: Omit<KnowledgeProjectResourceListOptions, 'cursor'>, + ): Promise<KnowledgeProjectResource[]>; +} + +export type KnowledgeProjectLinksErrorCode = + | 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT' + | 'KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH' + | 'KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH' + | 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH' + | 'KNOWLEDGE_PROJECT_LINKS_CONFLICT' + | 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND' + | 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE' + | 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION'; + +export class KnowledgeProjectLinksError extends Error { + constructor( + readonly code: KnowledgeProjectLinksErrorCode, + message: string, + readonly details: Record<string, unknown> = {}, + ) { + super(message); + this.name = 'KnowledgeProjectLinksError'; + } +} + +export interface KnowledgeProjectLinksAuthorityOptions { + authorityId: string; + tenantId: string; + corpusId: string; + packageVersion: string; + now?: () => string; +} + +interface AggregateRow { + source_project_id: string; + project_id: string; + project_slug: string; + project_name: string; + collection_id: string; + collection_slug: string; + collection_name: string; + membership_rule: string; + revision: number | string; + created_at: string; + updated_at: string; +} + +interface MembershipRow { + collection_id: string; + item_id: string; + bound_receipt_id: string; + created_by_operation: number | string; + bound_at: string; +} + +interface ReceiptRow { + receipt_id: string; + authority_id: string; + tenant_id: string; + corpus_id: string; + package_version: string; + operation_id: string; + step_id: string; + action: KnowledgeProjectReceiptAction; + resource_kind: 'collection' | 'item'; + direction: KnowledgeProjectRegistrationDirection; + idempotency_key: string; + request_digest: string; + precondition_digest: string; + outcome: KnowledgeProjectReceiptOutcome; + reason: string | null; + source_project_id: string | null; + project_id: string | null; + collection_id: string | null; + item_id: string | null; + result_revision: string | null; + result_digest: string | null; + accepted_receipt_id: string | null; + created_by_operation: number | string; + created_at: string; +} + +interface SqlRunResult { + changes: number; +} + +interface ProjectLinksSql { + get<T extends Record<string, unknown>>(sql: string, params?: readonly unknown[]): Promise<T | null>; + many<T extends Record<string, unknown>>(sql: string, params?: readonly unknown[]): Promise<T[]>; + run(sql: string, params?: readonly unknown[]): Promise<SqlRunResult>; + transaction<T>(fn: (tx: ProjectLinksSql) => Promise<T>): Promise<T>; +} + +function postgresSql(sql: string): string { + let index = 0; + return sql.replace(/\?/g, () => `$${++index}`); +} + +class PostgresProjectLinksSql implements ProjectLinksSql { + constructor( + private readonly client: TypedQueryClient, + private readonly transactionClient?: PoolQueryClient, + ) {} + + async get<T extends Record<string, unknown>>(sql: string, params: readonly unknown[] = []): Promise<T | null> { + return this.client.get<T>(postgresSql(sql), params); + } + + async many<T extends Record<string, unknown>>(sql: string, params: readonly unknown[] = []): Promise<T[]> { + return this.client.many<T>(postgresSql(sql), params); + } + + async run(sql: string, params: readonly unknown[] = []): Promise<SqlRunResult> { + const result = await this.client.query<Record<string, unknown>>(postgresSql(sql), params); + return { changes: result.rowCount }; + } + + async transaction<T>(fn: (tx: ProjectLinksSql) => Promise<T>): Promise<T> { + if (!this.transactionClient) return fn(this); + return this.transactionClient.transaction( + (tx) => fn(new PostgresProjectLinksSql(tx)), + ); + } +} + +class SqliteProjectLinksSql implements ProjectLinksSql { + private tail: Promise<void> = Promise.resolve(); + + constructor(readonly db: Database) {} + + async get<T extends Record<string, unknown>>(sql: string, params: readonly unknown[] = []): Promise<T | null> { + return (this.db.query(sql).get(...params as SQLQueryBindings[]) as T | null) ?? null; + } + + async many<T extends Record<string, unknown>>(sql: string, params: readonly unknown[] = []): Promise<T[]> { + return this.db.query(sql).all(...params as SQLQueryBindings[]) as T[]; + } + + async run(sql: string, params: readonly unknown[] = []): Promise<SqlRunResult> { + const result = this.db.query(sql).run(...params as SQLQueryBindings[]); + return { changes: Number(result.changes) }; + } + + transaction<T>(fn: (tx: ProjectLinksSql) => Promise<T>): Promise<T> { + const run = this.tail.then(async () => { + this.db.exec('BEGIN IMMEDIATE'); + try { + const result = await fn(this); + this.db.exec('COMMIT'); + return result; + } catch (error) { + this.db.exec('ROLLBACK'); + throw error; + } + }); + this.tail = run.then(() => undefined, () => undefined); + return run; + } +} + +export function sqliteKnowledgeProjectLinksSchemaSql(): string { + return ` + PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + ); + CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + ); + CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + ); + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_update + BEFORE UPDATE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + CREATE TRIGGER IF NOT EXISTS knowledge_project_link_receipts_immutable_delete + BEFORE DELETE ON knowledge_project_link_receipts + BEGIN + SELECT RAISE(ABORT, 'knowledge project link receipts are immutable'); + END; + `; +} + +export function postgresKnowledgeProjectLinksSchemaStatements(): string[] { + return [ + `CREATE TABLE IF NOT EXISTS knowledge_projects ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + source_project_id TEXT NOT NULL, + project_id TEXT NOT NULL, + project_slug TEXT NOT NULL, + project_name TEXT NOT NULL, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, project_id), + UNIQUE(authority_id, tenant_id, corpus_id, source_project_id) + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collections ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + project_id TEXT NOT NULL, + collection_slug TEXT NOT NULL, + collection_name TEXT NOT NULL, + membership_rule TEXT NOT NULL CHECK(membership_rule = 'explicit_collection_binding'), + revision INTEGER NOT NULL DEFAULT 1 CHECK(revision > 0), + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id), + UNIQUE(authority_id, tenant_id, corpus_id, project_id, collection_slug), + FOREIGN KEY(authority_id, tenant_id, corpus_id, project_id) + REFERENCES knowledge_projects(authority_id, tenant_id, corpus_id, project_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_collection_memberships ( + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + collection_id TEXT NOT NULL, + item_id TEXT NOT NULL, + bound_receipt_id TEXT NOT NULL, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + bound_at TEXT NOT NULL, + PRIMARY KEY(authority_id, tenant_id, corpus_id, collection_id, item_id), + FOREIGN KEY(authority_id, tenant_id, corpus_id, collection_id) + REFERENCES knowledge_project_collections(authority_id, tenant_id, corpus_id, collection_id) + ON DELETE CASCADE + )`, + `CREATE TABLE IF NOT EXISTS knowledge_project_link_receipts ( + receipt_id TEXT PRIMARY KEY, + authority TEXT NOT NULL CHECK(authority = 'knowledge'), + route TEXT NOT NULL CHECK(route = 'knowledge.project-registration.v1'), + package_version TEXT NOT NULL, + authority_id TEXT NOT NULL, + tenant_id TEXT NOT NULL, + corpus_id TEXT NOT NULL, + operation_id TEXT NOT NULL, + step_id TEXT NOT NULL, + action TEXT NOT NULL CHECK(action IN ('register_collection', 'bind_item')), + resource_kind TEXT NOT NULL CHECK(resource_kind IN ('collection', 'item')), + direction TEXT NOT NULL CHECK(direction IN ('forward', 'inverse')), + idempotency_key TEXT NOT NULL, + request_digest TEXT NOT NULL, + precondition_digest TEXT NOT NULL, + outcome TEXT NOT NULL CHECK(outcome IN ('accepted', 'terminal_nonacceptance')), + reason TEXT, + source_project_id TEXT, + project_id TEXT, + collection_id TEXT, + item_id TEXT, + result_revision TEXT, + result_digest TEXT, + accepted_receipt_id TEXT, + created_by_operation INTEGER NOT NULL CHECK(created_by_operation IN (0, 1)), + created_at TEXT NOT NULL, + UNIQUE(authority_id, tenant_id, corpus_id, operation_id, step_id, action, direction) + )`, + `CREATE INDEX IF NOT EXISTS idx_knowledge_project_link_receipts_lookup + ON knowledge_project_link_receipts ( + authority_id, tenant_id, corpus_id, operation_id, step_id, + action, direction, idempotency_key + )`, + `CREATE OR REPLACE FUNCTION knowledge_project_link_receipts_immutable() + RETURNS trigger + LANGUAGE plpgsql + AS $$ + BEGIN + RAISE EXCEPTION 'knowledge project link receipts are immutable'; + END; + $$`, + `DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable + ON knowledge_project_link_receipts`, + `CREATE TRIGGER knowledge_project_link_receipts_immutable + BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()`, + ]; +} + +function canonicalize(value: unknown): unknown { + if (Array.isArray(value)) return value.map(canonicalize); + if (value && typeof value === 'object') { + return Object.fromEntries( + Object.entries(value as Record<string, unknown>) + .filter(([, item]) => item !== undefined) + .sort(([left], [right]) => left.localeCompare(right)) + .map(([key, item]) => [key, canonicalize(item)]), + ); + } + return value; +} + +export function canonicalKnowledgeProjectLinksJson(value: unknown): string { + return JSON.stringify(canonicalize(value)); +} + +export function digestKnowledgeProjectLinksValue(value: unknown): string { + return createHash('sha256').update(canonicalKnowledgeProjectLinksJson(value)).digest('hex'); +} + +function stableUuid(namespace: string): string { + const hex = createHash('sha256').update(namespace).digest('hex').slice(0, 32).split(''); + hex[12] = '5'; + hex[16] = ((Number.parseInt(hex[16]!, 16) & 0x3) | 0x8).toString(16); + const value = hex.join(''); + return `${value.slice(0, 8)}-${value.slice(8, 12)}-${value.slice(12, 16)}-${value.slice(16, 20)}-${value.slice(20)}`; +} + +function requiredString(value: unknown, field: string): string { + if (typeof value !== 'string' || value.trim().length === 0) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + `${field} must be a non-empty string.`, + ); + } + return value.trim(); +} + +function boundedLimit(value: number | undefined): number { + const resolved = value ?? 100; + if (!Number.isInteger(resolved) || resolved < 1 || resolved > 200) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + 'limit must be an integer between 1 and 200.', + ); + } + return resolved; +} + +function normalizeKinds(kinds?: KnowledgeProjectResourceKind[]): KnowledgeProjectResourceKind[] { + const supported: KnowledgeProjectResourceKind[] = ['project', 'collection', 'item', 'taxonomy']; + if (!kinds || kinds.length === 0) return supported; + const unique = [...new Set(kinds)]; + for (const kind of unique) { + if (!supported.includes(kind)) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + `unsupported project resource kind: ${kind}`, + ); + } + } + return unique.sort((left, right) => supported.indexOf(left) - supported.indexOf(right)); +} + +function toReceipt(row: ReceiptRow): KnowledgeProjectRegistrationReceipt { + return { + receipt_id: row.receipt_id, + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: row.package_version, + authority_id: row.authority_id, + tenant_id: row.tenant_id, + corpus_id: row.corpus_id, + operation_id: row.operation_id, + step_id: row.step_id, + action: row.action, + resource_kind: row.resource_kind, + direction: row.direction, + idempotency_key: row.idempotency_key, + request_digest: row.request_digest, + precondition_digest: row.precondition_digest, + outcome: row.outcome, + reason: row.reason, + source_project_id: row.source_project_id, + project_id: row.project_id, + collection_id: row.collection_id, + item_id: row.item_id, + result_revision: row.result_revision, + result_digest: row.result_digest, + accepted_receipt_id: row.accepted_receipt_id, + created_by_operation: Number(row.created_by_operation) === 1, + created_at: row.created_at, + }; +} + +function aggregateRecord(row: AggregateRow): KnowledgeProjectCollectionRecord { + const record = { + source_project_id: row.source_project_id, + project_id: row.project_id, + project_slug: row.project_slug, + project_name: row.project_name, + collection_id: row.collection_id, + collection_slug: row.collection_slug, + collection_name: row.collection_name, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + revision: `r${Number(row.revision)}`, + created_at: row.created_at, + updated_at: row.updated_at, + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; +} + +function receiptInsertParams(receipt: KnowledgeProjectRegistrationReceipt): unknown[] { + return [ + receipt.receipt_id, + receipt.authority, + receipt.route, + receipt.package_version, + receipt.authority_id, + receipt.tenant_id, + receipt.corpus_id, + receipt.operation_id, + receipt.step_id, + receipt.action, + receipt.resource_kind, + receipt.direction, + receipt.idempotency_key, + receipt.request_digest, + receipt.precondition_digest, + receipt.outcome, + receipt.reason, + receipt.source_project_id, + receipt.project_id, + receipt.collection_id, + receipt.item_id, + receipt.result_revision, + receipt.result_digest, + receipt.accepted_receipt_id, + receipt.created_by_operation ? 1 : 0, + receipt.created_at, + ]; +} + +const RECEIPT_INSERT_SQL = `INSERT INTO knowledge_project_link_receipts ( + receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, + operation_id, step_id, action, resource_kind, direction, idempotency_key, + request_digest, precondition_digest, outcome, reason, source_project_id, + project_id, collection_id, item_id, result_revision, result_digest, + accepted_receipt_id, created_by_operation, created_at +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`; + +class PackageOwnedKnowledgeProjectLinksAuthority implements KnowledgeProjectLinksAuthority { + private readonly identity: KnowledgeProjectAuthorityIdentity; + private readonly now: () => string; + + constructor( + private readonly sql: ProjectLinksSql, + private readonly itemResolver: (id: string) => Promise<KnowledgeItem | null>, + private readonly options: KnowledgeProjectLinksAuthorityOptions, + ) { + this.identity = { + authority_id: requiredString(options.authorityId, 'authority_id'), + tenant_id: requiredString(options.tenantId, 'tenant_id'), + corpus_id: requiredString(options.corpusId, 'corpus_id'), + }; + this.now = options.now ?? (() => new Date().toISOString()); + } + + private capabilityValue(): KnowledgeProjectRegistrationCapability { + return { + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + resource_route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + package_version: this.options.packageVersion, + schema_version: KNOWLEDGE_PROJECT_REGISTRATION_SCHEMA_VERSION, + ...this.identity, + registration_resource: 'collection', + supported_resources: ['project', 'collection', 'item', 'taxonomy'], + stable_project_ids: true, + stable_collection_ids: true, + explicit_membership: true, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + later_child_binding_required: true, + bind_existing_items: true, + immutable_receipts: true, + exact_terminal_lookup: true, + exact_readback: true, + conditional_inverse: true, + complete_keyset_pagination: true, + revision_bound_cursors: true, + }; + } + + async capability(): Promise<KnowledgeProjectRegistrationCapability> { + return this.capabilityValue(); + } + + private assertIdentity(request: KnowledgeProjectAuthorityIdentity & { + authority_route: string; + package_version: string; + }): void { + const capability = this.capabilityValue(); + if ( + request.authority_route !== capability.route + || request.package_version !== capability.package_version + || request.authority_id !== capability.authority_id + || request.tenant_id !== capability.tenant_id + || request.corpus_id !== capability.corpus_id + ) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH', + 'request does not match the current Knowledge project-registration capability identity.', + ); + } + } + + private stableProjectId(sourceProjectId: string): string { + return stableUuid( + `${this.identity.authority_id}\0${this.identity.tenant_id}\0${this.identity.corpus_id}\0project\0${sourceProjectId}`, + ); + } + + private stableCollectionId(sourceProjectId: string, collectionSlug: string): string { + return stableUuid( + `${this.identity.authority_id}\0${this.identity.tenant_id}\0${this.identity.corpus_id}\0collection\0${sourceProjectId}\0${collectionSlug}`, + ); + } + + private stableReceiptId( + operationId: string, + stepId: string, + action: KnowledgeProjectReceiptAction, + direction: KnowledgeProjectRegistrationDirection, + ): string { + return stableUuid( + `${this.identity.authority_id}\0${this.identity.tenant_id}\0${this.identity.corpus_id}\0receipt\0${operationId}\0${stepId}\0${action}\0${direction}`, + ); + } + + private async getAggregateBySource(sql: ProjectLinksSql, sourceProjectId: string): Promise<AggregateRow | null> { + return sql.get<AggregateRow & Record<string, unknown>>( + `SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND p.source_project_id = ?`, + [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, sourceProjectId], + ) as Promise<AggregateRow | null>; + } + + private async getAggregateByCollection(sql: ProjectLinksSql, collectionId: string): Promise<AggregateRow | null> { + return sql.get<AggregateRow & Record<string, unknown>>( + `SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE c.authority_id = ? AND c.tenant_id = ? AND c.corpus_id = ? + AND c.collection_id = ?`, + [this.identity.authority_id, this.identity.tenant_id, this.identity.corpus_id, collectionId], + ) as Promise<AggregateRow | null>; + } + + private async getAggregateByProject(sql: ProjectLinksSql, projectId: string): Promise<AggregateRow | null> { + return sql.get<AggregateRow & Record<string, unknown>>( + `SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, + c.collection_id, c.collection_slug, c.collection_name, + c.membership_rule, c.revision, c.created_at, c.updated_at + FROM knowledge_projects p + JOIN knowledge_project_collections c + ON c.authority_id = p.authority_id + AND c.tenant_id = p.tenant_id + AND c.corpus_id = p.corpus_id + AND c.project_id = p.project_id + WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? + AND (p.source_project_id = ? OR p.project_id = ?)`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + projectId, + projectId, + ], + ) as Promise<AggregateRow | null>; + } + + private async getReceiptByAttempt( + sql: ProjectLinksSql, + input: { + operation_id: string; + step_id: string; + action: KnowledgeProjectReceiptAction; + direction: KnowledgeProjectRegistrationDirection; + }, + ): Promise<KnowledgeProjectRegistrationReceipt | null> { + const row = await sql.get<ReceiptRow & Record<string, unknown>>( + `SELECT * FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + input.operation_id, + input.step_id, + input.action, + input.direction, + ], + ); + return row ? toReceipt(row) : null; + } + + private assertIdempotent(existing: KnowledgeProjectRegistrationReceipt, input: { + idempotency_key: string; + request_digest?: string; + precondition_digest?: string; + }): void { + if ( + existing.idempotency_key !== input.idempotency_key + || (input.request_digest !== undefined && existing.request_digest !== input.request_digest) + || (input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) + ) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH', + 'operation and step identity are already bound to a different Knowledge project-link request.', + { receipt_id: existing.receipt_id }, + ); + } + } + + async registerCollection( + request: KnowledgeProjectRegistrationRequest, + ): Promise<KnowledgeProjectRegistrationReceipt> { + this.assertIdentity(request); + if (request.resource_kind !== 'collection' || request.direction !== 'forward') { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + 'collection registration requires resource_kind=collection and direction=forward.', + ); + } + const sourceProjectId = requiredString(request.project_id, 'project_id'); + const projectSlug = requiredString(request.project_slug, 'project_slug'); + const projectName = requiredString(request.project_name, 'project_name'); + const targetSelector = requiredString(request.target_selector, 'target_selector'); + if (targetSelector !== sourceProjectId) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + 'target_selector must equal the exact source project id.', + ); + } + const collectionSlug = requiredString( + request.desired.collection_slug ?? `${projectSlug}-knowledge`, + 'desired.collection_slug', + ); + const collectionName = requiredString( + request.desired.collection_name ?? `${projectName} Knowledge`, + 'desired.collection_name', + ); + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: 'register_collection', + source_project_id: sourceProjectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH', + 'request_digest does not bind the normalized collection-registration request.', + { expected_request_digest: expectedRequestDigest }, + ); + } + + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: 'register_collection', + direction: 'forward', + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + + let aggregate = await this.getAggregateBySource(tx, sourceProjectId); + const createdByOperation = aggregate === null; + if (!aggregate) { + const now = this.now(); + const projectId = this.stableProjectId(sourceProjectId); + const collectionId = this.stableCollectionId(sourceProjectId, collectionSlug); + await tx.run( + `INSERT INTO knowledge_projects ( + authority_id, tenant_id, corpus_id, source_project_id, project_id, + project_slug, project_name, created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?)`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + sourceProjectId, + projectId, + projectSlug, + projectName, + now, + now, + ], + ); + await tx.run( + `INSERT INTO knowledge_project_collections ( + authority_id, tenant_id, corpus_id, collection_id, project_id, + collection_slug, collection_name, membership_rule, revision, + created_at, updated_at + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + projectId, + collectionSlug, + collectionName, + KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + 1, + now, + now, + ], + ); + aggregate = await this.getAggregateByCollection(tx, collectionId); + } else if ( + aggregate.project_slug !== projectSlug + || aggregate.project_name !== projectName + || aggregate.collection_slug !== collectionSlug + || aggregate.collection_name !== collectionName + || aggregate.membership_rule !== KNOWLEDGE_PROJECT_MEMBERSHIP_RULE + ) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CONFLICT', + 'the source project is already bound to a different Knowledge collection aggregate.', + { + source_project_id: sourceProjectId, + collection_id: aggregate.collection_id, + }, + ); + } + if (!aggregate) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'collection registration committed but exact aggregate readback was unavailable.', + ); + } + const record = aggregateRecord(aggregate); + const receipt: KnowledgeProjectRegistrationReceipt = { + receipt_id: this.stableReceiptId( + request.operation_id, + request.step_id, + 'register_collection', + 'forward', + ), + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: 'register_collection', + resource_kind: 'collection', + direction: 'forward', + idempotency_key: requiredString(request.idempotency_key, 'idempotency_key'), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, 'precondition_digest'), + outcome: 'accepted', + reason: createdByOperation ? null : 'adopted_existing_collection', + source_project_id: record.source_project_id, + project_id: record.project_id, + collection_id: record.collection_id, + item_id: null, + result_revision: record.revision, + result_digest: record.digest, + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: this.now(), + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + + async readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord> { + const aggregate = await this.getAggregateByCollection(this.sql, requiredString(collectionId, 'collection_id')); + if (!aggregate) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'Knowledge collection was not found by exact id.', + ); + } + return aggregateRecord(aggregate); + } + + async lookupReceipt( + request: KnowledgeProjectReceiptLookupRequest, + ): Promise<KnowledgeProjectRegistrationReceipt> { + if (request.max_items !== 1) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + 'exact terminal receipt lookup requires max_items=1.', + ); + } + if ( + request.authority_id !== this.identity.authority_id + || request.tenant_id !== this.identity.tenant_id + || request.corpus_id !== this.identity.corpus_id + ) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH', + 'receipt lookup does not match this authority identity.', + ); + } + const receipt = await this.getReceiptByAttempt(this.sql, request); + if (!receipt || receipt.idempotency_key !== request.idempotency_key) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'exact Knowledge project-link receipt was not found.', + ); + } + return receipt; + } + + private async receiptById(sql: ProjectLinksSql, receiptId: string): Promise<KnowledgeProjectRegistrationReceipt | null> { + const row = await sql.get<ReceiptRow & Record<string, unknown>>( + `SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`, + [ + receiptId, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + ], + ); + return row ? toReceipt(row) : null; + } + + private assertInverseIdentity(request: KnowledgeProjectInverseRequest): void { + this.assertIdentity(request); + requiredString(request.accepted_receipt_id, 'accepted_receipt_id'); + requiredString(request.idempotency_key, 'idempotency_key'); + } + + async compensateRegistration( + request: KnowledgeProjectInverseRequest, + ): Promise<KnowledgeProjectRegistrationReceipt> { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: 'register_collection', + direction: 'inverse', + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== 'register_collection' || accepted.direction !== 'forward' || accepted.outcome !== 'accepted') { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'accepted collection-registration receipt was not found.', + ); + } + const aggregate = accepted.collection_id + ? await this.getAggregateByCollection(tx, accepted.collection_id) + : null; + let outcome: KnowledgeProjectReceiptOutcome = 'accepted'; + let reason: string | null = null; + if (!accepted.created_by_operation) { + outcome = 'terminal_nonacceptance'; + reason = 'adopted_collection_is_not_inverse_owned'; + } else if (!aggregate) { + outcome = 'terminal_nonacceptance'; + reason = 'accepted_collection_is_already_absent'; + } else { + const membership = await tx.get<{ count: number | string }>( + `SELECT COUNT(*) AS count + FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id, + ], + ); + if (Number(membership?.count ?? 0) > 0) { + outcome = 'terminal_nonacceptance'; + reason = 'collection_has_bound_items'; + } else { + await tx.run( + `DELETE FROM knowledge_project_collections + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id, + ], + ); + await tx.run( + `DELETE FROM knowledge_projects + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND project_id = ? + AND NOT EXISTS ( + SELECT 1 FROM knowledge_project_collections c + WHERE c.authority_id = knowledge_projects.authority_id + AND c.tenant_id = knowledge_projects.tenant_id + AND c.corpus_id = knowledge_projects.corpus_id + AND c.project_id = knowledge_projects.project_id + )`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.project_id, + ], + ); + } + } + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + absent: outcome === 'accepted', + }; + const receipt: KnowledgeProjectRegistrationReceipt = { + receipt_id: this.stableReceiptId( + request.operation_id, + request.step_id, + 'register_collection', + 'inverse', + ), + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: 'register_collection', + resource_kind: 'collection', + direction: 'inverse', + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + }), + precondition_digest: accepted.result_digest ?? '', + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: null, + result_revision: outcome === 'accepted' ? 'absent' : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now(), + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + + async verifyRegistrationInverse( + request: KnowledgeProjectInverseRequest, + ): Promise<KnowledgeProjectInverseVerification> { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: 'register_collection', + direction: 'inverse', + }); + if (!inverse || inverse.outcome !== 'accepted' || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'accepted collection inverse receipt was not found.', + ); + } + const aggregate = inverse.collection_id + ? await this.getAggregateByCollection(this.sql, inverse.collection_id) + : null; + if (aggregate) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CONFLICT', + 'collection inverse verification found the target still present.', + ); + } + const verification = { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.collection_id!, + absent: true as const, + digest: inverse.result_digest!, + }; + return verification; + } + + async bindItem( + request: KnowledgeProjectItemBindingRequest, + ): Promise<KnowledgeProjectRegistrationReceipt> { + this.assertIdentity(request); + if (request.direction !== 'forward') { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + 'item binding requires direction=forward.', + ); + } + const collectionId = requiredString(request.collection_id, 'collection_id'); + const itemId = requiredString(request.item_id, 'item_id'); + const item = await this.itemResolver(itemId); + if (!item || item.id !== itemId) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'bind-existing requires an exact existing Knowledge item id.', + { item_id: itemId }, + ); + } + const expectedRequestDigest = digestKnowledgeProjectLinksValue({ + action: 'bind_item', + collection_id: collectionId, + item_id: itemId, + }); + if (request.request_digest !== expectedRequestDigest) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH', + 'request_digest does not bind the normalized item-membership request.', + { expected_request_digest: expectedRequestDigest }, + ); + } + + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: 'bind_item', + direction: 'forward', + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const aggregate = await this.getAggregateByCollection(tx, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'Knowledge collection was not found by exact id.', + ); + } + const existing = await tx.get<MembershipRow & Record<string, unknown>>( + `SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + ], + ); + const createdByOperation = existing === null; + const now = this.now(); + const receiptId = this.stableReceiptId( + request.operation_id, + request.step_id, + 'bind_item', + 'forward', + ); + if (!existing) { + await tx.run( + `INSERT INTO knowledge_project_collection_memberships ( + authority_id, tenant_id, corpus_id, collection_id, item_id, + bound_receipt_id, created_by_operation, bound_at + ) VALUES (?,?,?,?,?,?,?,?)`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + itemId, + receiptId, + 1, + now, + ], + ); + await tx.run( + `UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, + [ + now, + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + collectionId, + ], + ); + } + const current = await this.getAggregateByCollection(tx, collectionId); + if (!current) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'item binding committed but collection readback was unavailable.', + ); + } + const binding = { + collection_id: collectionId, + item_id: itemId, + collection_revision: `r${Number(current.revision)}`, + item_revision: `v${item.version ?? 1}`, + }; + const receipt: KnowledgeProjectRegistrationReceipt = { + receipt_id: receiptId, + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: 'bind_item', + resource_kind: 'item', + direction: 'forward', + idempotency_key: requiredString(request.idempotency_key, 'idempotency_key'), + request_digest: request.request_digest, + precondition_digest: requiredString(request.precondition_digest, 'precondition_digest'), + outcome: 'accepted', + reason: createdByOperation ? null : 'adopted_existing_membership', + source_project_id: current.source_project_id, + project_id: current.project_id, + collection_id: collectionId, + item_id: itemId, + result_revision: binding.collection_revision, + result_digest: digestKnowledgeProjectLinksValue(binding), + accepted_receipt_id: null, + created_by_operation: createdByOperation, + created_at: now, + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + + async readItemBinding(collectionId: string, itemId: string): Promise<KnowledgeProjectItemBindingRecord> { + const membership = await this.sql.get<MembershipRow & Record<string, unknown>>( + `SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + requiredString(collectionId, 'collection_id'), + requiredString(itemId, 'item_id'), + ], + ); + if (!membership) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'Knowledge collection membership was not found by exact ids.', + ); + } + const aggregate = await this.getAggregateByCollection(this.sql, collectionId); + if (!aggregate) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'membership exists without its collection aggregate.', + ); + } + const record = { + collection_id: collectionId, + item_id: itemId, + revision: `r${Number(aggregate.revision)}`, + bound_at: membership.bound_at, + }; + return { ...record, digest: digestKnowledgeProjectLinksValue(record) }; + } + + async compensateItemBinding( + request: KnowledgeProjectInverseRequest, + ): Promise<KnowledgeProjectRegistrationReceipt> { + this.assertInverseIdentity(request); + return this.sql.transaction(async (tx) => { + const duplicate = await this.getReceiptByAttempt(tx, { + operation_id: request.operation_id, + step_id: request.step_id, + action: 'bind_item', + direction: 'inverse', + }); + if (duplicate) { + this.assertIdempotent(duplicate, request); + return duplicate; + } + const accepted = await this.receiptById(tx, request.accepted_receipt_id); + if (!accepted || accepted.action !== 'bind_item' || accepted.direction !== 'forward' || accepted.outcome !== 'accepted') { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'accepted item-binding receipt was not found.', + ); + } + let outcome: KnowledgeProjectReceiptOutcome = 'accepted'; + let reason: string | null = null; + const membership = await tx.get<MembershipRow & Record<string, unknown>>( + `SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + ], + ); + if (!accepted.created_by_operation) { + outcome = 'terminal_nonacceptance'; + reason = 'adopted_membership_is_not_inverse_owned'; + } else if (!membership) { + outcome = 'terminal_nonacceptance'; + reason = 'accepted_membership_is_already_absent'; + } else if ( + membership.bound_receipt_id !== accepted.receipt_id + || Number(membership.created_by_operation) !== 1 + ) { + outcome = 'terminal_nonacceptance'; + reason = 'membership_is_owned_by_a_different_receipt'; + } else { + await tx.run( + `DELETE FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + accepted.item_id, + accepted.receipt_id, + ], + ); + await tx.run( + `UPDATE knowledge_project_collections + SET revision = revision + 1, updated_at = ? + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`, + [ + this.now(), + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.collection_id, + ], + ); + } + const aggregate = accepted.collection_id + ? await this.getAggregateByCollection(tx, accepted.collection_id) + : null; + const absent = { + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + absent: outcome === 'accepted', + }; + const receipt: KnowledgeProjectRegistrationReceipt = { + receipt_id: this.stableReceiptId( + request.operation_id, + request.step_id, + 'bind_item', + 'inverse', + ), + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: this.options.packageVersion, + ...this.identity, + operation_id: request.operation_id, + step_id: request.step_id, + action: 'bind_item', + resource_kind: 'item', + direction: 'inverse', + idempotency_key: request.idempotency_key, + request_digest: digestKnowledgeProjectLinksValue({ + accepted_receipt_id: accepted.receipt_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + }), + precondition_digest: accepted.result_digest ?? '', + outcome, + reason, + source_project_id: accepted.source_project_id, + project_id: accepted.project_id, + collection_id: accepted.collection_id, + item_id: accepted.item_id, + result_revision: outcome === 'accepted' && aggregate ? `r${Number(aggregate.revision)}` : accepted.result_revision, + result_digest: digestKnowledgeProjectLinksValue(absent), + accepted_receipt_id: accepted.receipt_id, + created_by_operation: false, + created_at: this.now(), + }; + await tx.run(RECEIPT_INSERT_SQL, receiptInsertParams(receipt)); + return receipt; + }); + } + + async verifyItemBindingInverse( + request: KnowledgeProjectInverseRequest, + ): Promise<KnowledgeProjectInverseVerification> { + this.assertInverseIdentity(request); + const inverse = await this.getReceiptByAttempt(this.sql, { + operation_id: request.operation_id, + step_id: request.step_id, + action: 'bind_item', + direction: 'inverse', + }); + if (!inverse || inverse.outcome !== 'accepted' || inverse.accepted_receipt_id !== request.accepted_receipt_id) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'accepted item-binding inverse receipt was not found.', + ); + } + const membership = await this.sql.get<{ item_id: string }>( + `SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND collection_id = ? AND item_id = ?`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + inverse.collection_id, + inverse.item_id, + ], + ); + if (membership) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CONFLICT', + 'item-binding inverse verification found the membership still present.', + ); + } + return { + accepted_receipt_id: request.accepted_receipt_id, + target_id: inverse.item_id!, + absent: true, + digest: inverse.result_digest!, + }; + } + + private async buildResources(projectId: string): Promise<{ + aggregate: AggregateRow; + resources: KnowledgeProjectResource[]; + }> { + const aggregate = await this.getAggregateByProject(this.sql, requiredString(projectId, 'project_id')); + if (!aggregate) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'Knowledge project aggregate was not found by source or stable project id.', + ); + } + const memberships = await this.sql.many<MembershipRow & Record<string, unknown>>( + `SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? + ORDER BY item_id ASC`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + aggregate.collection_id, + ], + ); + const items = await Promise.all(memberships.map(async (membership) => { + const item = await this.itemResolver(membership.item_id); + if (!item || item.id !== membership.item_id) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'collection membership points at a missing Knowledge item; refusing a partial resource population.', + { collection_id: aggregate.collection_id, item_id: membership.item_id }, + ); + } + return item; + })); + const revision = `r${Number(aggregate.revision)}`; + const base = { + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + revision, + }; + const resources: KnowledgeProjectResource[] = []; + const projectBody = { + ...base, + kind: 'project' as const, + id: aggregate.project_id, + title: aggregate.project_name, + locator: { kind: 'canonical_uri' as const, value: `knowledge:project:${aggregate.project_id}` }, + metadata: { + source_project_id: aggregate.source_project_id, + slug: aggregate.project_slug, + collection_count: 1, + }, + }; + resources.push({ + ...projectBody, + key: `project:${aggregate.project_id}`, + digest: digestKnowledgeProjectLinksValue(projectBody), + }); + const collectionBody = { + ...base, + kind: 'collection' as const, + id: aggregate.collection_id, + title: aggregate.collection_name, + locator: { kind: 'external_uuid' as const, value: aggregate.collection_id }, + metadata: { + slug: aggregate.collection_slug, + membership_rule: KNOWLEDGE_PROJECT_MEMBERSHIP_RULE, + member_count: items.length, + }, + }; + resources.push({ + ...collectionBody, + key: `collection:${aggregate.collection_id}`, + digest: digestKnowledgeProjectLinksValue(collectionBody), + }); + for (const item of items) { + const itemBody = { + ...base, + kind: 'item' as const, + id: item.id, + revision: `v${item.version ?? 1}`, + title: item.title, + locator: { kind: 'canonical_uri' as const, value: `knowledge:item:${encodeURIComponent(item.id)}` }, + metadata: { + tags: [...(item.tags ?? [])], + archived: item.archived === true, + updated_at: item.updated_at, + }, + }; + resources.push({ + ...itemBody, + key: `item:${item.id}`, + digest: digestKnowledgeProjectLinksValue(itemBody), + }); + } + const taxonomy = new Map<string, { label: string; itemIds: string[] }>(); + for (const item of items) { + for (const rawTag of item.tags ?? []) { + const normalized = rawTag.trim().toLowerCase(); + if (!normalized) continue; + const entry = taxonomy.get(normalized) ?? { label: rawTag.trim(), itemIds: [] }; + entry.itemIds.push(item.id); + taxonomy.set(normalized, entry); + } + } + for (const [normalized, entry] of [...taxonomy.entries()].sort(([left], [right]) => left.localeCompare(right))) { + const taxonomyId = stableUuid(`${aggregate.collection_id}\0taxonomy\0${normalized}`); + const taxonomyBody = { + ...base, + kind: 'taxonomy' as const, + id: taxonomyId, + title: entry.label, + locator: { kind: 'external_uuid' as const, value: taxonomyId }, + metadata: { + tag: entry.label, + normalized_tag: normalized, + item_count: entry.itemIds.length, + member_digest: digestKnowledgeProjectLinksValue([...entry.itemIds].sort()), + }, + }; + resources.push({ + ...taxonomyBody, + key: `taxonomy:${taxonomyId}`, + digest: digestKnowledgeProjectLinksValue(taxonomyBody), + }); + } + resources.sort((left, right) => left.key.localeCompare(right.key)); + return { aggregate, resources }; + } + + async listProjectResources( + projectId: string, + options: KnowledgeProjectResourceListOptions = {}, + ): Promise<KnowledgeProjectResourcePage> { + const limit = boundedLimit(options.limit); + const kinds = normalizeKinds(options.kinds); + const { aggregate, resources } = await this.buildResources(projectId); + const revision = `r${Number(aggregate.revision)}`; + const population = resources.filter((resource) => kinds.includes(resource.kind)); + const populationDigest = digestKnowledgeProjectLinksValue( + population.map((resource) => ({ key: resource.key, digest: resource.digest })), + ); + let after = ''; + if (options.cursor) { + let decoded: { + version?: number; + project_id?: string; + collection_id?: string; + collection_revision?: string; + population_digest?: string; + kinds?: KnowledgeProjectResourceKind[]; + after?: string; + }; + try { + decoded = JSON.parse(Buffer.from(options.cursor, 'base64url').toString('utf8')) as typeof decoded; + } catch { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT', + 'cursor is not a valid Knowledge project-resources cursor.', + ); + } + if ( + decoded.version !== 1 + || decoded.project_id !== aggregate.project_id + || decoded.collection_id !== aggregate.collection_id + || decoded.collection_revision !== revision + || decoded.population_digest !== populationDigest + || canonicalKnowledgeProjectLinksJson(decoded.kinds) !== canonicalKnowledgeProjectLinksJson(kinds) + || typeof decoded.after !== 'string' + ) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE', + 'project resources changed or the cursor belongs to a different project/kind selection; restart from the first page.', + ); + } + after = decoded.after; + } + const remaining = after ? population.filter((resource) => resource.key > after) : population; + const pageResources = remaining.slice(0, limit); + const hasMore = remaining.length > pageResources.length; + const nextCursor = hasMore && pageResources.length > 0 + ? Buffer.from(JSON.stringify({ + version: 1, + project_id: aggregate.project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + kinds, + after: pageResources.at(-1)!.key, + })).toString('base64url') + : null; + return { + schema: 'knowledge.project-resources.page.v1', + authority: 'knowledge', + route: KNOWLEDGE_PROJECT_RESOURCES_ROUTE, + ...this.identity, + project_id: aggregate.project_id, + source_project_id: aggregate.source_project_id, + collection_id: aggregate.collection_id, + collection_revision: revision, + population_digest: populationDigest, + resource_kinds: kinds, + resources: pageResources, + count: pageResources.length, + total: population.length, + limit, + cursor: options.cursor ?? null, + next_cursor: nextCursor, + has_more: hasMore, + complete: !hasMore, + truncated: false, + }; + } + + async readProjectResource( + projectId: string, + kind: KnowledgeProjectResourceKind, + resourceId: string, + ): Promise<KnowledgeProjectResource> { + const { resources } = await this.buildResources(projectId); + const resource = resources.find((candidate) => candidate.kind === kind && candidate.id === resourceId); + if (!resource) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND', + 'Knowledge project resource was not found by exact kind and id.', + ); + } + return resource; + } + + async readAllProjectResources( + projectId: string, + options: Omit<KnowledgeProjectResourceListOptions, 'cursor'> = {}, + ): Promise<KnowledgeProjectResource[]> { + const resources: KnowledgeProjectResource[] = []; + const seen = new Set<string>(); + let cursor: string | null = null; + let expected: { + project_id: string; + collection_id: string; + collection_revision: string; + population_digest: string; + total: number; + kinds: string; + } | null = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + const identity = { + project_id: page.project_id, + collection_id: page.collection_id, + collection_revision: page.collection_revision, + population_digest: page.population_digest, + total: page.total, + kinds: canonicalKnowledgeProjectLinksJson(page.resource_kinds), + }; + if (expected && canonicalKnowledgeProjectLinksJson(expected) !== canonicalKnowledgeProjectLinksJson(identity)) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE', + 'project resources changed while the complete population was being read.', + ); + } + expected ??= identity; + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'project resource pagination returned a duplicate stable resource key.', + { key: resource.key }, + ); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'project resource page claims more data without a continuation cursor.', + ); + } + cursor = page.next_cursor; + } while (cursor); + if (!expected || resources.length !== expected.total) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'complete project resource enumeration did not match the producer total.', + { expected_total: expected?.total ?? null, received: resources.length }, + ); + } + return resources; + } +} + +export function createLocalKnowledgeProjectLinksAuthority(input: { + databasePath: string; + itemStore: ItemStore; + options: KnowledgeProjectLinksAuthorityOptions; +}): KnowledgeProjectLinksAuthority { + if (input.databasePath !== ':memory:') { + ensureParentDir(input.databasePath); + } + const db = new Database(input.databasePath, { create: true }); + db.exec(sqliteKnowledgeProjectLinksSchemaSql()); + return new PackageOwnedKnowledgeProjectLinksAuthority( + new SqliteProjectLinksSql(db), + (id) => input.itemStore.get(id), + input.options, + ); +} + +export function createPostgresKnowledgeProjectLinksAuthority(input: { + client: PoolQueryClient; + itemResolver: (id: string) => Promise<KnowledgeItem | null>; + options: KnowledgeProjectLinksAuthorityOptions; +}): KnowledgeProjectLinksAuthority { + return new PackageOwnedKnowledgeProjectLinksAuthority( + new PostgresProjectLinksSql(input.client, input.client), + input.itemResolver, + input.options, + ); +} + +function wireErrorStatus(error: KnowledgeProjectLinksError): number { + if (error.code === 'KNOWLEDGE_PROJECT_LINKS_NOT_FOUND') return 404; + if ( + error.code === 'KNOWLEDGE_PROJECT_LINKS_CONFLICT' + || error.code === 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE' + || error.code === 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH' + ) return 409; + if (error.code === 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION') return 503; + return 400; +} + +export function knowledgeProjectLinksErrorResponse(error: unknown): Response { + if (error instanceof KnowledgeProjectLinksError) { + return Response.json( + { error: error.code, message: error.message, details: error.details }, + { status: wireErrorStatus(error) }, + ); + } + throw error; +} + +export interface KnowledgeProjectLinksHttpClientOptions { + baseUrl: string; + apiKey?: string; + fetch?: (input: string | URL | Request, init?: RequestInit) => Promise<Response>; + headers?: Record<string, string>; +} + +export class KnowledgeProjectLinksHttpClient implements KnowledgeProjectLinksAuthority { + private readonly fetchImpl: (input: string | URL | Request, init?: RequestInit) => Promise<Response>; + private readonly root: string; + + constructor(private readonly options: KnowledgeProjectLinksHttpClientOptions) { + this.fetchImpl = options.fetch ?? guardedFetch; + this.root = options.baseUrl.replace(/\/+$/, ''); + } + + private headers(extra: Record<string, string> = {}): Headers { + const headers = new Headers(this.options.headers); + headers.set('accept', 'application/json'); + if (this.options.apiKey) headers.set('x-api-key', this.options.apiKey); + for (const [key, value] of Object.entries(extra)) headers.set(key, value); + return headers; + } + + private async request<T>(path: string, init: RequestInit = {}): Promise<T> { + const response = await this.fetchImpl(`${this.root}${path}`, { + ...init, + headers: this.headers(init.body ? { 'content-type': 'application/json' } : {}), + }); + const body = await response.json().catch(() => ({})) as Record<string, unknown>; + if (!response.ok) { + throw new KnowledgeProjectLinksError( + typeof body.error === 'string' + ? body.error as KnowledgeProjectLinksErrorCode + : 'KNOWLEDGE_PROJECT_LINKS_CONFLICT', + typeof body.message === 'string' ? body.message : `Knowledge project-links HTTP ${response.status}`, + body.details && typeof body.details === 'object' ? body.details as Record<string, unknown> : {}, + ); + } + return body as T; + } + + async capability(): Promise<KnowledgeProjectRegistrationCapability> { + const body = await this.request<{ capability: KnowledgeProjectRegistrationCapability }>( + '/v1/project-registration/capability', + ); + return body.capability; + } + + async registerCollection(request: KnowledgeProjectRegistrationRequest): Promise<KnowledgeProjectRegistrationReceipt> { + const body = await this.request<{ receipt: KnowledgeProjectRegistrationReceipt }>( + '/v1/project-registration/create', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.receipt; + } + + async readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord> { + const body = await this.request<{ record: KnowledgeProjectCollectionRecord }>( + '/v1/project-registration/read-exact', + { method: 'POST', body: JSON.stringify({ collection_id: collectionId }) }, + ); + return body.record; + } + + async lookupReceipt(request: KnowledgeProjectReceiptLookupRequest): Promise<KnowledgeProjectRegistrationReceipt> { + const body = await this.request<{ receipt: KnowledgeProjectRegistrationReceipt }>( + '/v1/project-registration/receipts/lookup', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.receipt; + } + + async compensateRegistration(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt> { + const body = await this.request<{ receipt: KnowledgeProjectRegistrationReceipt }>( + '/v1/project-registration/compensate', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.receipt; + } + + async verifyRegistrationInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification> { + const body = await this.request<{ verification: KnowledgeProjectInverseVerification }>( + '/v1/project-registration/verify-inverse', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.verification; + } + + async bindItem(request: KnowledgeProjectItemBindingRequest): Promise<KnowledgeProjectRegistrationReceipt> { + const body = await this.request<{ receipt: KnowledgeProjectRegistrationReceipt }>( + '/v1/project-registration/items/bind', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.receipt; + } + + async readItemBinding(collectionId: string, itemId: string): Promise<KnowledgeProjectItemBindingRecord> { + const body = await this.request<{ record: KnowledgeProjectItemBindingRecord }>( + '/v1/project-registration/items/read-exact', + { method: 'POST', body: JSON.stringify({ collection_id: collectionId, item_id: itemId }) }, + ); + return body.record; + } + + async compensateItemBinding(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectRegistrationReceipt> { + const body = await this.request<{ receipt: KnowledgeProjectRegistrationReceipt }>( + '/v1/project-registration/items/compensate', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.receipt; + } + + async verifyItemBindingInverse(request: KnowledgeProjectInverseRequest): Promise<KnowledgeProjectInverseVerification> { + const body = await this.request<{ verification: KnowledgeProjectInverseVerification }>( + '/v1/project-registration/items/verify-inverse', + { method: 'POST', body: JSON.stringify(request) }, + ); + return body.verification; + } + + async listProjectResources( + projectId: string, + options: KnowledgeProjectResourceListOptions = {}, + ): Promise<KnowledgeProjectResourcePage> { + const query = new URLSearchParams(); + if (options.limit !== undefined) query.set('limit', String(options.limit)); + if (options.cursor) query.set('cursor', options.cursor); + for (const kind of options.kinds ?? []) query.append('kind', kind); + const suffix = query.size > 0 ? `?${query.toString()}` : ''; + return this.request<KnowledgeProjectResourcePage>( + `/v1/projects/${encodeURIComponent(projectId)}/resources${suffix}`, + ); + } + + async readProjectResource( + projectId: string, + kind: KnowledgeProjectResourceKind, + resourceId: string, + ): Promise<KnowledgeProjectResource> { + const body = await this.request<{ resource: KnowledgeProjectResource }>( + `/v1/projects/${encodeURIComponent(projectId)}/resources/${kind}/${encodeURIComponent(resourceId)}`, + ); + return body.resource; + } + + async readAllProjectResources( + projectId: string, + options: Omit<KnowledgeProjectResourceListOptions, 'cursor'> = {}, + ): Promise<KnowledgeProjectResource[]> { + const resources: KnowledgeProjectResource[] = []; + const seen = new Set<string>(); + let cursor: string | null = null; + let expectedTotal: number | null = null; + let expectedRevision: string | null = null; + let expectedPopulationDigest: string | null = null; + do { + const page = await this.listProjectResources(projectId, { ...options, cursor }); + expectedTotal ??= page.total; + expectedRevision ??= page.collection_revision; + expectedPopulationDigest ??= page.population_digest; + if ( + page.total !== expectedTotal + || page.collection_revision !== expectedRevision + || page.population_digest !== expectedPopulationDigest + ) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE', + 'project resources changed while the complete HTTP population was being read.', + ); + } + for (const resource of page.resources) { + if (seen.has(resource.key)) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'project resources HTTP pagination returned a duplicate stable key.', + ); + } + seen.add(resource.key); + resources.push(resource); + } + if (page.has_more && !page.next_cursor) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'project resources HTTP page claims more data without a cursor.', + ); + } + cursor = page.next_cursor; + } while (cursor); + if (expectedTotal === null || resources.length !== expectedTotal) { + throw new KnowledgeProjectLinksError( + 'KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION', + 'complete HTTP resource enumeration did not match the producer total.', + ); + } + return resources; + } +} + +export function createKnowledgeProjectLinksHttpClient( + options: KnowledgeProjectLinksHttpClientOptions, +): KnowledgeProjectLinksAuthority { + return new KnowledgeProjectLinksHttpClient(options); +} diff --git a/src/sdk.ts b/src/sdk.ts index 93d868e..e432218 100644 --- a/src/sdk.ts +++ b/src/sdk.ts @@ -11,6 +11,14 @@ import type { ItemListOptions, ItemListResult, } from './item-store.js'; +import type { + KnowledgeProjectInverseRequest, + KnowledgeProjectItemBindingRequest, + KnowledgeProjectReceiptLookupRequest, + KnowledgeProjectRegistrationRequest, + KnowledgeProjectResourceKind, + KnowledgeProjectResourceListOptions, +} from './project-links.js'; /** * The unified knowledge-item Store surface, mirrored on the SDK so app code @@ -30,6 +38,51 @@ export interface KnowledgeItemsSdk { readonly deleteMany: (idsOrShorts: string[]) => Promise<number>; } +export interface KnowledgeProjectLinksSdk { + readonly capability: () => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['capability']>; + readonly registerCollection: ( + request: KnowledgeProjectRegistrationRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['registerCollection']>; + readonly readCollection: ( + collectionId: string, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readCollection']>; + readonly lookupReceipt: ( + request: KnowledgeProjectReceiptLookupRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['lookupReceipt']>; + readonly compensateRegistration: ( + request: KnowledgeProjectInverseRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['compensateRegistration']>; + readonly verifyRegistrationInverse: ( + request: KnowledgeProjectInverseRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['verifyRegistrationInverse']>; + readonly bindItem: ( + request: KnowledgeProjectItemBindingRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['bindItem']>; + readonly readItemBinding: ( + collectionId: string, + itemId: string, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readItemBinding']>; + readonly compensateItemBinding: ( + request: KnowledgeProjectInverseRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['compensateItemBinding']>; + readonly verifyItemBindingInverse: ( + request: KnowledgeProjectInverseRequest, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['verifyItemBindingInverse']>; + readonly listResources: ( + projectId: string, + options?: KnowledgeProjectResourceListOptions, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['listProjectResources']>; + readonly readResource: ( + projectId: string, + kind: KnowledgeProjectResourceKind, + resourceId: string, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readProjectResource']>; + readonly readAllResources: ( + projectId: string, + options?: Omit<KnowledgeProjectResourceListOptions, 'cursor'>, + ) => ReturnType<ReturnType<KnowledgeService['projectLinksAuthority']>['readAllProjectResources']>; +} + export type KnowledgeClientOptions = KnowledgeServiceOptions; export type KnowledgeSetupOptions = Parameters<KnowledgeService['setup']>[0]; export type KnowledgeAuthInput = Parameters<KnowledgeService['saveAuth']>[0]; @@ -117,6 +170,8 @@ export interface KnowledgeClient { * the `knowledge add/list/get/update/delete` CLI commands in every mode. */ readonly items: KnowledgeItemsSdk; + /** Project collection registration, explicit membership, receipts, and complete resource enumeration. */ + readonly projectLinks: KnowledgeProjectLinksSdk; /** * Inventory of the knowledge corpus. Routes to the shared API item corpus in * postgres mode and the local sqlite/JSON catalog otherwise, so the SDK never @@ -218,6 +273,28 @@ export function createKnowledgeClient(options: KnowledgeClientOptions = {}): Kno delete: (idOrShort) => service.deleteItem(idOrShort), deleteMany: (idsOrShorts) => service.deleteItems(idsOrShorts), }, + projectLinks: { + capability: () => service.projectLinksAuthority().capability(), + registerCollection: (request) => service.projectLinksAuthority().registerCollection(request), + readCollection: (collectionId) => service.projectLinksAuthority().readCollection(collectionId), + lookupReceipt: (request) => service.projectLinksAuthority().lookupReceipt(request), + compensateRegistration: (request) => service.projectLinksAuthority().compensateRegistration(request), + verifyRegistrationInverse: (request) => service.projectLinksAuthority().verifyRegistrationInverse(request), + bindItem: (request) => service.projectLinksAuthority().bindItem(request), + readItemBinding: (collectionId, itemId) => service.projectLinksAuthority().readItemBinding(collectionId, itemId), + compensateItemBinding: (request) => service.projectLinksAuthority().compensateItemBinding(request), + verifyItemBindingInverse: (request) => service.projectLinksAuthority().verifyItemBindingInverse(request), + listResources: (projectId, input = {}) => service.projectLinksAuthority().listProjectResources(projectId, input), + readResource: (projectId, kind, resourceId) => service.projectLinksAuthority().readProjectResource( + projectId, + kind, + resourceId, + ), + readAllResources: (projectId, input = {}) => service.projectLinksAuthority().readAllProjectResources( + projectId, + input, + ), + }, inventory: (input = {}) => service.resolveInventory(input), db: { init: () => service.initDb(), diff --git a/src/serve.ts b/src/serve.ts index 2ad1008..34c9851 100644 --- a/src/serve.ts +++ b/src/serve.ts @@ -92,6 +92,17 @@ import { } from './guarded-write-contract.js'; import type { PoolQueryClient, TypedQueryClient } from './generated/storage-kit/index.js'; import { KNOWLEDGE_BOUNDED_QUERY_CAPABILITY } from './query-contract.js'; +import { + KnowledgeProjectLinksError, + createPostgresKnowledgeProjectLinksAuthority, + knowledgeProjectLinksErrorResponse, + type KnowledgeProjectItemBindingRequest, + type KnowledgeProjectInverseRequest, + type KnowledgeProjectLinksAuthority, + type KnowledgeProjectReceiptLookupRequest, + type KnowledgeProjectRegistrationRequest, + type KnowledgeProjectResourceKind, +} from './project-links.js'; export const KNOWLEDGE_SERVE_APP = 'knowledge'; @@ -2613,6 +2624,121 @@ export function knowledgeOpenApi(version: string): Record<string, unknown> { ], additionalProperties: true, }, + ProjectRegistrationCapability: { + type: 'object', + required: [ + 'authority', + 'route', + 'resource_route', + 'package_version', + 'authority_id', + 'tenant_id', + 'corpus_id', + 'supported_resources', + 'membership_rule', + ], + additionalProperties: true, + }, + ProjectRegistrationReceipt: { + type: 'object', + required: [ + 'receipt_id', + 'authority', + 'route', + 'package_version', + 'authority_id', + 'tenant_id', + 'corpus_id', + 'operation_id', + 'step_id', + 'action', + 'resource_kind', + 'direction', + 'idempotency_key', + 'request_digest', + 'precondition_digest', + 'outcome', + 'created_by_operation', + 'created_at', + ], + additionalProperties: true, + }, + ProjectCollectionRecord: { + type: 'object', + required: [ + 'source_project_id', + 'project_id', + 'project_slug', + 'project_name', + 'collection_id', + 'collection_slug', + 'collection_name', + 'membership_rule', + 'revision', + 'digest', + 'created_at', + 'updated_at', + ], + additionalProperties: false, + }, + ProjectResource: { + type: 'object', + required: [ + 'key', + 'kind', + 'id', + 'project_id', + 'source_project_id', + 'collection_id', + 'revision', + 'digest', + 'title', + 'locator', + 'metadata', + ], + additionalProperties: false, + }, + ProjectResourcePage: { + type: 'object', + required: [ + 'schema', + 'authority', + 'route', + 'authority_id', + 'tenant_id', + 'corpus_id', + 'project_id', + 'source_project_id', + 'collection_id', + 'collection_revision', + 'population_digest', + 'resource_kinds', + 'resources', + 'count', + 'total', + 'limit', + 'cursor', + 'next_cursor', + 'has_more', + 'complete', + 'truncated', + ], + properties: { + collection_revision: { type: 'string' }, + population_digest: { type: 'string' }, + resources: { + type: 'array', + items: { $ref: '#/components/schemas/ProjectResource' }, + }, + count: { type: 'integer' }, + total: { type: 'integer' }, + limit: { type: 'integer', minimum: 1, maximum: 200 }, + has_more: { type: 'boolean' }, + complete: { type: 'boolean' }, + truncated: { type: 'boolean', enum: [false] }, + }, + additionalProperties: true, + }, NoteList: { type: 'object', properties: { @@ -2661,6 +2787,230 @@ export function knowledgeOpenApi(version: string): Record<string, unknown> { }, security: [{ apiKey: [] }], paths: { + '/v1/project-registration/capability': { + get: { + operationId: 'getKnowledgeProjectRegistrationCapability', + summary: 'Read the exact Knowledge project-registration capability identity', + responses: { + '200': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + capability: { $ref: '#/components/schemas/ProjectRegistrationCapability' }, + }, + }, + }, + }, + }, + }, + }, + }, + '/v1/project-registration/create': { + post: { + operationId: 'registerKnowledgeProjectCollection', + summary: 'Create or exactly adopt one project-owned Knowledge collection', + responses: { + '201': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + receipt: { $ref: '#/components/schemas/ProjectRegistrationReceipt' }, + }, + }, + }, + }, + }, + }, + }, + }, + '/v1/project-registration/read-exact': { + post: { + operationId: 'readKnowledgeProjectCollection', + summary: 'Read one project collection by exact stable collection id', + responses: { + '200': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + record: { $ref: '#/components/schemas/ProjectCollectionRecord' }, + }, + }, + }, + }, + }, + '404': { description: 'No exact collection id.' }, + }, + }, + }, + '/v1/project-registration/receipts/lookup': { + post: { + operationId: 'lookupKnowledgeProjectRegistrationReceipt', + summary: 'Look up exactly one immutable registration or membership receipt', + responses: { + '200': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + receipt: { $ref: '#/components/schemas/ProjectRegistrationReceipt' }, + }, + }, + }, + }, + }, + '404': { description: 'No exact terminal receipt.' }, + }, + }, + }, + '/v1/project-registration/compensate': { + post: { + operationId: 'compensateKnowledgeProjectCollection', + summary: 'Conditionally remove an operation-created empty collection aggregate', + responses: { + '201': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + receipt: { $ref: '#/components/schemas/ProjectRegistrationReceipt' }, + }, + }, + }, + }, + }, + }, + }, + }, + '/v1/project-registration/verify-inverse': { + post: { + operationId: 'verifyKnowledgeProjectCollectionInverse', + summary: 'Verify an accepted collection inverse by exact receipt and absence', + responses: { '200': { description: 'Exact absence verification.' } }, + }, + }, + '/v1/project-registration/items/bind': { + post: { + operationId: 'bindKnowledgeItemToProjectCollection', + summary: 'Explicitly bind one exact existing item to a project collection', + responses: { + '201': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + receipt: { $ref: '#/components/schemas/ProjectRegistrationReceipt' }, + }, + }, + }, + }, + }, + }, + }, + }, + '/v1/project-registration/items/read-exact': { + post: { + operationId: 'readKnowledgeProjectItemBinding', + summary: 'Read one exact collection/item membership', + responses: { + '200': { description: 'Exact membership readback.' }, + '404': { description: 'No exact membership.' }, + }, + }, + }, + '/v1/project-registration/items/compensate': { + post: { + operationId: 'compensateKnowledgeProjectItemBinding', + summary: 'Conditionally remove a membership owned by the accepted binding receipt', + responses: { + '201': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { + receipt: { $ref: '#/components/schemas/ProjectRegistrationReceipt' }, + }, + }, + }, + }, + }, + }, + }, + }, + '/v1/project-registration/items/verify-inverse': { + post: { + operationId: 'verifyKnowledgeProjectItemBindingInverse', + summary: 'Verify an accepted membership inverse by exact receipt and absence', + responses: { '200': { description: 'Exact membership absence verification.' } }, + }, + }, + '/v1/projects/{projectId}/resources': { + get: { + operationId: 'listKnowledgeProjectResources', + summary: 'Enumerate the complete stable project/collection/item/taxonomy population', + parameters: [ + { name: 'projectId', in: 'path', required: true, schema: { type: 'string' } }, + { name: 'limit', in: 'query', schema: { type: 'integer', minimum: 1, maximum: 200 } }, + { name: 'cursor', in: 'query', schema: { type: 'string' } }, + { + name: 'kind', + in: 'query', + style: 'form', + explode: true, + schema: { + type: 'array', + items: { type: 'string', enum: ['project', 'collection', 'item', 'taxonomy'] }, + }, + }, + ], + responses: { + '200': { + content: { + 'application/json': { schema: { $ref: '#/components/schemas/ProjectResourcePage' } }, + }, + }, + '409': { description: 'Cursor is stale or belongs to another population.' }, + }, + }, + }, + '/v1/projects/{projectId}/resources/{kind}/{resourceId}': { + get: { + operationId: 'getKnowledgeProjectResource', + summary: 'Read one project resource by exact stable kind and id', + parameters: [ + { name: 'projectId', in: 'path', required: true, schema: { type: 'string' } }, + { + name: 'kind', + in: 'path', + required: true, + schema: { type: 'string', enum: ['project', 'collection', 'item', 'taxonomy'] }, + }, + { name: 'resourceId', in: 'path', required: true, schema: { type: 'string' } }, + ], + responses: { + '200': { + content: { + 'application/json': { + schema: { + type: 'object', + properties: { resource: { $ref: '#/components/schemas/ProjectResource' } }, + }, + }, + }, + }, + '404': { description: 'No exact resource kind and id.' }, + }, + }, + }, '/v1/notes': { get: { operationId: 'listNotes', @@ -3639,6 +3989,12 @@ export interface ServeDeps { * routes keep working and guarded routes fail closed with 503. */ guardedAuthority?: KnowledgeServeGuardedAuthority; + /** + * Optional test/host override for the package-owned project-link authority. + * Production uses the same Postgres client as notes and scopes every + * authority instance to the authenticated tenant. + */ + projectLinksAuthority?: (tenantId: string) => KnowledgeProjectLinksAuthority; } export function createServeHandler(deps: ServeDeps): (req: Request) => Promise<Response> { @@ -3646,6 +4002,19 @@ export function createServeHandler(deps: ServeDeps): (req: Request) => Promise<R const guardedRepo = deps.guardedAuthority ? new GuardedWriteRepo(deps.client, deps.guardedAuthority) : null; + const projectLinksForTenant = (tenantId: string): KnowledgeProjectLinksAuthority => ( + deps.projectLinksAuthority?.(tenantId) + ?? createPostgresKnowledgeProjectLinksAuthority({ + client: deps.client, + itemResolver: (id) => repo.get(id, tenantId), + options: { + packageVersion: deps.version, + authorityId: process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID ?? KNOWLEDGE_SERVE_APP, + tenantId, + corpusId: process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? 'knowledge', + }, + }) + ); const mode = 'postgres'; const authOrThrow = async ( @@ -4017,6 +4386,121 @@ export function createServeHandler(deps: ServeDeps): (req: Request) => Promise<R : boundedJson({ error: 'not_found' }, 404, bounds, startedAt); } + // ---- Projects resource-link producer ---- + if (path === '/v1/project-registration/capability') { + if (method !== 'GET') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + return json({ capability: await projectLinksForTenant(principal.tid).capability() }); + } + + if (path === '/v1/project-registration/create') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:write']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectRegistrationRequest; + return json({ receipt: await projectLinksForTenant(principal.tid).registerCollection(body) }, 201); + } + + if (path === '/v1/project-registration/read-exact') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const body = await req.json().catch(() => ({})) as { collection_id?: string }; + return json({ + record: await projectLinksForTenant(principal.tid).readCollection( + String(body.collection_id ?? ''), + ), + }); + } + + if (path === '/v1/project-registration/receipts/lookup') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectReceiptLookupRequest; + return json({ receipt: await projectLinksForTenant(principal.tid).lookupReceipt(body) }); + } + + if (path === '/v1/project-registration/compensate') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:write']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectInverseRequest; + return json({ receipt: await projectLinksForTenant(principal.tid).compensateRegistration(body) }, 201); + } + + if (path === '/v1/project-registration/verify-inverse') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectInverseRequest; + return json({ + verification: await projectLinksForTenant(principal.tid).verifyRegistrationInverse(body), + }); + } + + if (path === '/v1/project-registration/items/bind') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:write']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectItemBindingRequest; + return json({ receipt: await projectLinksForTenant(principal.tid).bindItem(body) }, 201); + } + + if (path === '/v1/project-registration/items/read-exact') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const body = await req.json().catch(() => ({})) as { + collection_id?: string; + item_id?: string; + }; + return json({ + record: await projectLinksForTenant(principal.tid).readItemBinding( + String(body.collection_id ?? ''), + String(body.item_id ?? ''), + ), + }); + } + + if (path === '/v1/project-registration/items/compensate') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:write']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectInverseRequest; + return json({ receipt: await projectLinksForTenant(principal.tid).compensateItemBinding(body) }, 201); + } + + if (path === '/v1/project-registration/items/verify-inverse') { + if (method !== 'POST') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const body = await req.json().catch(() => ({})) as KnowledgeProjectInverseRequest; + return json({ + verification: await projectLinksForTenant(principal.tid).verifyItemBindingInverse(body), + }); + } + + const exactProjectResourceMatch = path.match( + /^\/v1\/projects\/([^/]+)\/resources\/(project|collection|item|taxonomy)\/([^/]+)$/, + ); + if (exactProjectResourceMatch) { + if (method !== 'GET') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const resource = await projectLinksForTenant(principal.tid).readProjectResource( + decodeURIComponent(exactProjectResourceMatch[1]!), + exactProjectResourceMatch[2] as KnowledgeProjectResourceKind, + decodeURIComponent(exactProjectResourceMatch[3]!), + ); + return json({ resource }); + } + + const projectResourcesMatch = path.match(/^\/v1\/projects\/([^/]+)\/resources$/); + if (projectResourcesMatch) { + if (method !== 'GET') return json({ error: 'method_not_allowed' }, 405); + const principal = await authOrThrow(req, ['knowledge:read']); + const page = await projectLinksForTenant(principal.tid).listProjectResources( + decodeURIComponent(projectResourcesMatch[1]!), + { + limit: url.searchParams.has('limit') ? Number(url.searchParams.get('limit')) : undefined, + cursor: url.searchParams.get('cursor'), + kinds: url.searchParams.getAll('kind') as KnowledgeProjectResourceKind[], + }, + ); + return json(page); + } + // ---- Notes bounded queries and CRUD ---- if (path === '/v1/notes/search') { if (method !== 'GET') return json({ error: 'method_not_allowed' }, 405); @@ -4139,6 +4623,9 @@ export function createServeHandler(deps: ServeDeps): (req: Request) => Promise<R return json({ error: 'not_found', path }, 404); } catch (error) { + if (error instanceof KnowledgeProjectLinksError) { + return knowledgeProjectLinksErrorResponse(error); + } if (error instanceof HttpError) { const reason = error.status === 401 || error.status === 403 ? 'unauthorized' : 'error'; return json({ error: reason, message: error.message }, error.status); diff --git a/src/service.ts b/src/service.ts index 02a46a3..1c0a8f3 100644 --- a/src/service.ts +++ b/src/service.ts @@ -18,8 +18,10 @@ import { } from './app-wiki'; import { clearKnowledgeAuth, + getKnowledgeApiKey, knowledgeAuthStatus, normalizeKnowledgeApiOrigin, + resolveKnowledgeApiUrl, saveKnowledgeAuth, type KnowledgeAuthStatus, } from './auth'; @@ -148,10 +150,22 @@ import { type KnowledgeLegacyWorkspaceMergeResult, type KnowledgeLegacyWorkspaceMigrationResult, } from './workspace-migration'; +import { + createKnowledgeProjectLinksHttpClient, + createLocalKnowledgeProjectLinksAuthority, + type KnowledgeProjectLinksAuthority, +} from './project-links'; +import pkg from '../package.json' with { type: 'json' }; export interface KnowledgeServiceOptions { scope?: string; cwd?: string; + projectLinksAuthority?: KnowledgeProjectLinksAuthority; + projectLinksIdentity?: { + authorityId?: string; + tenantId?: string; + corpusId?: string; + }; } export interface KnowledgePathsResult { @@ -1650,6 +1664,7 @@ export class KnowledgeSemanticSearchUnavailableError extends Error { export class KnowledgeService { private ensuredWorkspace?: KnowledgeWorkspace; private cachedConfig?: KnowledgeConfig; + private cachedProjectLinksAuthority?: KnowledgeProjectLinksAuthority; constructor(private readonly options: KnowledgeServiceOptions = {}) {} @@ -1685,6 +1700,50 @@ export class KnowledgeService { }); } + /** + * Package-owned Projects resource-link producer. + * + * Local mode keeps aggregate membership and immutable receipts in the + * existing knowledge.db SQLite catalog while resolving item bodies through + * the same JSON ItemStore used by CLI/MCP/SDK. Postgres mode routes through + * the authenticated HTTP producer, never a local mirror. + */ + projectLinksAuthority(): KnowledgeProjectLinksAuthority { + if (this.options.projectLinksAuthority) return this.options.projectLinksAuthority; + if (this.cachedProjectLinksAuthority) return this.cachedProjectLinksAuthority; + if (isKnowledgeApiMode()) { + const { apiKey } = getKnowledgeApiKey(process.env); + if (!apiKey) { + throw new Error( + 'Knowledge project links require the configured API credential in postgres mode.', + ); + } + this.cachedProjectLinksAuthority = createKnowledgeProjectLinksHttpClient({ + baseUrl: resolveKnowledgeApiUrl(this.config(), process.env), + apiKey, + }); + return this.cachedProjectLinksAuthority; + } + const workspace = this.ensureWorkspace(); + this.cachedProjectLinksAuthority = createLocalKnowledgeProjectLinksAuthority({ + databasePath: workspace.knowledgeDbPath, + itemStore: this.itemStore(), + options: { + packageVersion: pkg.version, + authorityId: this.options.projectLinksIdentity?.authorityId + ?? process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID + ?? 'knowledge', + tenantId: this.options.projectLinksIdentity?.tenantId + ?? process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID + ?? 'local', + corpusId: this.options.projectLinksIdentity?.corpusId + ?? process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID + ?? 'knowledge', + }, + }); + return this.cachedProjectLinksAuthority; + } + /** Bounded list query via the unified Store. */ async listItems(options: ItemListOptions = {}): Promise<ItemListResult> { return this.itemStore().list(options); diff --git a/tests/project-links.test.ts b/tests/project-links.test.ts new file mode 100644 index 0000000..090d807 --- /dev/null +++ b/tests/project-links.test.ts @@ -0,0 +1,639 @@ +import { afterAll, describe, expect, test } from 'bun:test'; +import { mkdtempSync, rmSync } from 'node:fs'; +import { tmpdir } from 'node:os'; +import { join } from 'node:path'; +import { fileURLToPath } from 'node:url'; +import type { ItemStore } from '../src/item-store'; +import { + KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + KnowledgeProjectLinksError, + createKnowledgeProjectLinksHttpClient, + createLocalKnowledgeProjectLinksAuthority, + createPostgresKnowledgeProjectLinksAuthority, + digestKnowledgeProjectLinksValue, + type KnowledgeProjectLinksAuthority, + type KnowledgeProjectRegistrationCapability, + type KnowledgeProjectRegistrationReceipt, +} from '../src/project-links'; +import type { KnowledgeItem } from '../src/store'; +import { createKnowledgeClient } from '../src/sdk'; +import { createServeHandler, knowledgeOpenApi } from '../src/serve'; +import { createMigratedPglite } from './fixtures/pglite-client'; + +const tempRoots: string[] = []; +const fixedNow = () => '2026-08-10T12:00:00.000Z'; +const repoRoot = join(fileURLToPath(new URL('.', import.meta.url)), '..'); + +afterAll(() => { + for (const root of tempRoots) rmSync(root, { recursive: true, force: true }); +}); + +function tempRoot(): string { + const root = mkdtempSync(join(tmpdir(), 'knowledge-project-links-')); + tempRoots.push(root); + return root; +} + +function item(id: string, title: string, tags: string[] = []): KnowledgeItem { + return { + id, + short_id: id.slice(0, 8), + title, + content: `${title} body`, + url: null, + tags, + metadata: {}, + archived: false, + created_at: fixedNow(), + updated_at: fixedNow(), + version: 1, + }; +} + +function mapItemStore(items: Map<string, KnowledgeItem>): ItemStore { + return { + kind: 'local', + location: 'test-map', + exists: true, + supportsVersions: false, + async list() { + return { items: [...items.values()], total: items.size, exists: true }; + }, + async listAll() { + return { items: [...items.values()], total: items.size, exists: true }; + }, + async get(id) { + return items.get(id) ?? null; + }, + async create(input) { + const created = item(input.id ?? `k_${items.size + 1}`, input.title, input.tags); + items.set(created.id, created); + return created; + }, + async update() { + throw new Error('not used'); + }, + async delete() { + throw new Error('not used'); + }, + async deleteMany() { + throw new Error('not used'); + }, + async listVersions() { + throw new Error('not used'); + }, + async getVersion() { + throw new Error('not used'); + }, + }; +} + +async function registrationRequest( + authority: KnowledgeProjectLinksAuthority, + input: { + operationId?: string; + stepId?: string; + idempotencyKey?: string; + projectId?: string; + projectSlug?: string; + projectName?: string; + } = {}, +) { + const capability = await authority.capability(); + const projectId = input.projectId ?? 'wks_project_alpha'; + const projectSlug = input.projectSlug ?? 'alpha'; + const projectName = input.projectName ?? 'Alpha'; + const collectionSlug = `${projectSlug}-knowledge`; + const collectionName = `${projectName} Knowledge`; + return { + operation_id: input.operationId ?? 'op-register-alpha', + step_id: input.stepId ?? 'step-register-alpha', + resource_kind: 'collection' as const, + direction: 'forward' as const, + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + target_selector: projectId, + idempotency_key: input.idempotencyKey ?? 'idem-register-alpha', + request_digest: digestKnowledgeProjectLinksValue({ + action: 'register_collection', + source_project_id: projectId, + project_slug: projectSlug, + project_name: projectName, + collection_slug: collectionSlug, + collection_name: collectionName, + membership_rule: 'explicit_collection_binding', + }), + precondition_digest: digestKnowledgeProjectLinksValue({ + source_project_id: projectId, + expected: 'absent_or_exact_match', + }), + project_id: projectId, + project_slug: projectSlug, + project_name: projectName, + desired: { + collection_slug: collectionSlug, + collection_name: collectionName, + }, + }; +} + +async function bindingRequest( + authority: KnowledgeProjectLinksAuthority, + collectionId: string, + itemId: string, + input: { + operationId?: string; + stepId?: string; + idempotencyKey?: string; + } = {}, +) { + const capability = await authority.capability(); + return { + operation_id: input.operationId ?? `op-bind-${itemId}`, + step_id: input.stepId ?? `step-bind-${itemId}`, + direction: 'forward' as const, + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + idempotency_key: input.idempotencyKey ?? `idem-bind-${itemId}`, + request_digest: digestKnowledgeProjectLinksValue({ + action: 'bind_item', + collection_id: collectionId, + item_id: itemId, + }), + precondition_digest: digestKnowledgeProjectLinksValue({ + collection_id: collectionId, + item_id: itemId, + expected: 'unbound_or_exact_membership', + }), + collection_id: collectionId, + item_id: itemId, + }; +} + +async function inverseRequest( + capability: KnowledgeProjectRegistrationCapability, + receipt: KnowledgeProjectRegistrationReceipt, + input: { + operationId: string; + stepId: string; + idempotencyKey: string; + }, +) { + return { + operation_id: input.operationId, + step_id: input.stepId, + authority_route: KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, + package_version: capability.package_version, + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + idempotency_key: input.idempotencyKey, + accepted_receipt_id: receipt.receipt_id, + }; +} + +function localHarness(items = new Map<string, KnowledgeItem>()) { + const root = tempRoot(); + const store = mapItemStore(items); + const authority = createLocalKnowledgeProjectLinksAuthority({ + databasePath: join(root, 'knowledge.db'), + itemStore: store, + options: { + packageVersion: '9.9.9', + authorityId: 'knowledge-test', + tenantId: 'tenant-test', + corpusId: 'corpus-test', + now: fixedNow, + }, + }); + return { root, store, items, authority }; +} + +describe('Knowledge Projects resource-link producer', () => { + test('SQLite owns a real aggregate, explicit later-child membership, stable taxonomy, and complete paging', async () => { + const first = item('k_first', 'First', ['Policy', 'Shared']); + const later = item('k_later', 'Later', ['shared', 'Runbook']); + const unbound = item('k_unbound', 'Unbound', ['Invisible']); + const harness = localHarness(new Map([ + [first.id, first], + [unbound.id, unbound], + ])); + + const registration = await harness.authority.registerCollection( + await registrationRequest(harness.authority), + ); + expect(registration.outcome).toBe('accepted'); + expect(registration.created_by_operation).toBe(true); + expect(registration.collection_id).toMatch( + /^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, + ); + + const initial = await harness.authority.readAllProjectResources('wks_project_alpha'); + expect(initial.map((resource) => resource.kind)).toEqual(['collection', 'project']); + + const firstBinding = await harness.authority.bindItem( + await bindingRequest(harness.authority, registration.collection_id!, first.id), + ); + expect(firstBinding.created_by_operation).toBe(true); + + const firstPage = await harness.authority.listProjectResources('wks_project_alpha', { limit: 2 }); + expect(firstPage.count).toBe(2); + expect(firstPage.total).toBe(5); + expect(firstPage.has_more).toBe(true); + expect(firstPage.complete).toBe(false); + expect(firstPage.next_cursor).not.toBeNull(); + + const exactFirst = await harness.authority.readProjectResource( + 'wks_project_alpha', + 'item', + first.id, + ); + expect(exactFirst.locator.value).toBe('knowledge:item:k_first'); + expect(exactFirst.metadata.tags).toEqual(['Policy', 'Shared']); + expect((await harness.authority.readAllProjectResources('wks_project_alpha'))) + .not.toContainEqual(expect.objectContaining({ id: unbound.id })); + + harness.items.set(later.id, later); + const beforeLaterBinding = await harness.authority.readAllProjectResources('wks_project_alpha'); + expect(beforeLaterBinding).not.toContainEqual(expect.objectContaining({ id: later.id })); + + const laterBinding = await harness.authority.bindItem( + await bindingRequest(harness.authority, registration.collection_id!, later.id), + ); + expect(laterBinding.result_revision).toBe('r3'); + const afterLaterBinding = await harness.authority.readAllProjectResources('wks_project_alpha', { + limit: 2, + }); + expect(afterLaterBinding).toContainEqual(expect.objectContaining({ kind: 'item', id: later.id })); + expect(afterLaterBinding).not.toContainEqual(expect.objectContaining({ id: unbound.id })); + + const sharedTaxonomy = afterLaterBinding.find( + (resource) => resource.kind === 'taxonomy' && resource.metadata.normalized_tag === 'shared', + ); + expect(sharedTaxonomy?.metadata.item_count).toBe(2); + expect(sharedTaxonomy?.locator.kind).toBe('external_uuid'); + + await expect( + harness.authority.listProjectResources('wks_project_alpha', { + limit: 2, + cursor: firstPage.next_cursor, + }), + ).rejects.toMatchObject({ + code: 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE', + }); + + const preMutationPage = await harness.authority.listProjectResources( + 'wks_project_alpha', + { limit: 2 }, + ); + harness.items.set(first.id, { + ...first, + title: 'First revised', + tags: ['Policy', 'Changed'], + version: 2, + }); + await expect( + harness.authority.listProjectResources('wks_project_alpha', { + limit: 2, + cursor: preMutationPage.next_cursor, + }), + ).rejects.toMatchObject({ + code: 'KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE', + }); + const postMutationResources = await harness.authority.readAllProjectResources( + 'wks_project_alpha', + ); + + const reopened = createLocalKnowledgeProjectLinksAuthority({ + databasePath: join(harness.root, 'knowledge.db'), + itemStore: harness.store, + options: { + packageVersion: '9.9.9', + authorityId: 'knowledge-test', + tenantId: 'tenant-test', + corpusId: 'corpus-test', + now: fixedNow, + }, + }); + expect((await reopened.readCollection(registration.collection_id!)).digest) + .toBe((await harness.authority.readCollection(registration.collection_id!)).digest); + expect((await reopened.readAllProjectResources('wks_project_alpha')).length) + .toBe(postMutationResources.length); + }); + + test('registration and bind-existing are idempotent/adoptable, while inverse only removes owned effects', async () => { + const existing = item('k_existing', 'Existing', ['Convention']); + const { authority } = localHarness(new Map([[existing.id, existing]])); + const request = await registrationRequest(authority); + const accepted = await authority.registerCollection(request); + expect(await authority.registerCollection(request)).toEqual(accepted); + + const adoptedRegistration = await authority.registerCollection( + await registrationRequest(authority, { + operationId: 'op-adopt-collection', + stepId: 'step-adopt-collection', + idempotencyKey: 'idem-adopt-collection', + }), + ); + expect(adoptedRegistration.reason).toBe('adopted_existing_collection'); + expect(adoptedRegistration.created_by_operation).toBe(false); + + const binding = await authority.bindItem( + await bindingRequest(authority, accepted.collection_id!, existing.id), + ); + const adoptedBinding = await authority.bindItem( + await bindingRequest(authority, accepted.collection_id!, existing.id, { + operationId: 'op-adopt-membership', + stepId: 'step-adopt-membership', + idempotencyKey: 'idem-adopt-membership', + }), + ); + expect(adoptedBinding.reason).toBe('adopted_existing_membership'); + expect(adoptedBinding.created_by_operation).toBe(false); + + const capability = await authority.capability(); + const adoptedInverseRequest = await inverseRequest(capability, adoptedBinding, { + operationId: 'op-inverse-adopted-membership', + stepId: 'step-inverse-adopted-membership', + idempotencyKey: 'idem-inverse-adopted-membership', + }); + const adoptedInverse = await authority.compensateItemBinding(adoptedInverseRequest); + expect(adoptedInverse.outcome).toBe('terminal_nonacceptance'); + expect(adoptedInverse.reason).toBe('adopted_membership_is_not_inverse_owned'); + expect(await authority.readItemBinding(accepted.collection_id!, existing.id)) + .toMatchObject({ item_id: existing.id }); + + const bindingInverseRequest = await inverseRequest(capability, binding, { + operationId: 'op-inverse-owned-membership', + stepId: 'step-inverse-owned-membership', + idempotencyKey: 'idem-inverse-owned-membership', + }); + const bindingInverse = await authority.compensateItemBinding(bindingInverseRequest); + expect(bindingInverse.outcome).toBe('accepted'); + expect(await authority.verifyItemBindingInverse(bindingInverseRequest)) + .toMatchObject({ target_id: existing.id, absent: true }); + + const registrationInverseRequest = await inverseRequest(capability, accepted, { + operationId: 'op-inverse-owned-collection', + stepId: 'step-inverse-owned-collection', + idempotencyKey: 'idem-inverse-owned-collection', + }); + const registrationInverse = await authority.compensateRegistration(registrationInverseRequest); + expect(registrationInverse.outcome).toBe('accepted'); + expect(await authority.verifyRegistrationInverse(registrationInverseRequest)) + .toMatchObject({ target_id: accepted.collection_id, absent: true }); + await expect(authority.readCollection(accepted.collection_id!)).rejects.toBeInstanceOf( + KnowledgeProjectLinksError, + ); + }); + + test('Postgres executes the same aggregate, membership, receipt, and resource semantics', async () => { + const { db, client } = await createMigratedPglite(); + const pgItem = item('k_pg', 'Postgres Item', ['Postgres']); + const authority = createPostgresKnowledgeProjectLinksAuthority({ + client, + itemResolver: async (id) => id === pgItem.id ? pgItem : null, + options: { + packageVersion: '9.9.9', + authorityId: 'knowledge-test', + tenantId: 'tenant-test', + corpusId: 'corpus-test', + now: fixedNow, + }, + }); + const registration = await authority.registerCollection(await registrationRequest(authority)); + const binding = await authority.bindItem( + await bindingRequest(authority, registration.collection_id!, pgItem.id), + ); + expect(binding.outcome).toBe('accepted'); + expect((await authority.readAllProjectResources('wks_project_alpha')).map( + (resource) => `${resource.kind}:${resource.id}`, + )).toEqual([ + `collection:${registration.collection_id}`, + `item:${pgItem.id}`, + `project:${registration.project_id}`, + expect.stringMatching(/^taxonomy:/), + ]); + + const receiptMutation = await db.query( + `UPDATE knowledge_project_link_receipts SET reason = 'mutated' WHERE receipt_id = $1`, + [binding.receipt_id], + ).then( + () => 'unexpected-success', + (error) => String(error), + ); + expect(receiptMutation).toContain('immutable'); + await db.close(); + }); + + test('HTTP routes, SDK group, and OpenAPI expose the same producer contract', async () => { + const apiItem = item('k_http', 'HTTP Item', ['API']); + const { authority } = localHarness(new Map([[apiItem.id, apiItem]])); + const handler = createServeHandler({ + client: { + async query() { + return { rows: [], rowCount: 0 }; + }, + async many() { + return []; + }, + async get() { + return null; + }, + async one() { + throw new Error('not used'); + }, + async execute() {}, + async transaction(fn) { + return fn(this); + }, + async close() {}, + get pool() { + return {} as never; + }, + }, + verifier: { + async authenticate() { + return { + ok: true, + principal: { + app: 'knowledge', + tid: 'tenant-test', + kid: 'kid-test', + scopes: ['knowledge:read', 'knowledge:write'], + agent: null, + }, + }; + }, + } as never, + store: { + async touchLastUsed() {}, + } as never, + version: '9.9.9', + projectLinksAuthority: () => authority, + }); + const server = Bun.serve({ hostname: '127.0.0.1', port: 0, fetch: handler }); + const client = createKnowledgeProjectLinksHttpClient({ + baseUrl: `http://127.0.0.1:${server.port}`, + fetch, + }); + const registration = await client.registerCollection(await registrationRequest(client)); + await client.bindItem(await bindingRequest(client, registration.collection_id!, apiItem.id)); + expect((await client.readAllProjectResources('wks_project_alpha')).map((entry) => entry.kind)) + .toEqual(['collection', 'item', 'project', 'taxonomy']); + server.stop(true); + + const sdk = createKnowledgeClient({ projectLinksAuthority: authority }); + expect((await sdk.projectLinks.capability()).route).toBe(KNOWLEDGE_PROJECT_REGISTRATION_ROUTE); + expect((await sdk.projectLinks.readCollection(registration.collection_id!)).collection_id) + .toBe(registration.collection_id); + + const openapi = knowledgeOpenApi('9.9.9'); + expect(openapi.paths).toHaveProperty('/v1/project-registration/capability'); + expect(openapi.paths).toHaveProperty('/v1/project-registration/items/bind'); + expect(openapi.paths).toHaveProperty('/v1/projects/{projectId}/resources'); + expect(openapi.paths).toHaveProperty('/v1/projects/{projectId}/resources/{kind}/{resourceId}'); + expect(openapi.components.schemas).toHaveProperty('ProjectResourcePage'); + }); + + test('CLI registers, binds, exhausts, and exactly reads the same local producer', () => { + const root = tempRoot(); + const storePath = join(root, 'db.json'); + const run = (args: string[]) => { + const result = Bun.spawnSync({ + cmd: ['bun', 'src/cli.ts', ...args], + cwd: repoRoot, + env: { + ...process.env, + HASNA_KNOWLEDGE_STORAGE_MODE: 'sqlite', + HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID: 'knowledge-cli-test', + HASNA_KNOWLEDGE_PROJECT_TENANT_ID: 'tenant-cli-test', + HASNA_KNOWLEDGE_PROJECT_CORPUS_ID: 'corpus-cli-test', + }, + stdout: 'pipe', + stderr: 'pipe', + }); + const stdout = result.stdout.toString(); + const stderr = result.stderr.toString(); + expect( + result.exitCode, + `command failed: ${args.join(' ')}\nstdout=${stdout}\nstderr=${stderr}`, + ).toBe(0); + return JSON.parse(stdout) as Record<string, unknown>; + }; + + run([ + 'upsert', + 'CLI Item', + 'CLI body', + '--id', + 'k_cli', + '--tag', + 'CLI', + '--store', + storePath, + '--json', + ]); + const registered = run([ + 'project-registration', + 'create', + '--operation-id', + 'op-cli-register', + '--step-id', + 'step-cli-register', + '--idempotency-key', + 'idem-cli-register', + '--project', + 'wks_cli', + '--slug', + 'cli', + '--name', + 'CLI', + '--store', + storePath, + '--json', + ]); + const collectionId = ( + registered.receipt as KnowledgeProjectRegistrationReceipt + ).collection_id!; + run([ + 'project-membership', + 'bind', + '--operation-id', + 'op-cli-bind', + '--step-id', + 'step-cli-bind', + '--idempotency-key', + 'idem-cli-bind', + '--collection-id', + collectionId, + '--item-id', + 'k_cli', + '--store', + storePath, + '--json', + ]); + const exhausted = run([ + 'project-resources', + 'wks_cli', + '--all', + '--limit', + '1', + '--store', + storePath, + '--json', + ]); + expect(exhausted.resources).toEqual(expect.arrayContaining([ + expect.objectContaining({ kind: 'project' }), + expect.objectContaining({ kind: 'collection', id: collectionId }), + expect.objectContaining({ kind: 'item', id: 'k_cli' }), + expect.objectContaining({ kind: 'taxonomy' }), + ])); + const exact = run([ + 'project-resource', + 'wks_cli', + 'item', + 'k_cli', + '--store', + storePath, + '--json', + ]); + expect(exact.resource).toMatchObject({ kind: 'item', id: 'k_cli' }); + + const completions = Bun.spawnSync({ + cmd: ['bun', 'src/cli.ts', '--completions', 'bash'], + cwd: repoRoot, + env: process.env, + stdout: 'pipe', + stderr: 'pipe', + }); + expect(completions.exitCode).toBe(0); + expect(completions.stdout.toString()).toContain('project-registration'); + expect(completions.stdout.toString()).toContain('--collection-id'); + expect(completions.stdout.toString()).toContain('--kind'); + + for (const command of [ + 'project-registration', + 'project-membership', + 'project-resources', + 'project-resource', + ]) { + const help = Bun.spawnSync({ + cmd: ['bun', 'src/cli.ts', command, '--help'], + cwd: repoRoot, + env: process.env, + stdout: 'pipe', + stderr: 'pipe', + }); + expect(help.exitCode).toBe(0); + expect(help.stdout.toString()).toStartWith(`Usage: knowledge ${command}`); + expect(help.stdout.toString()).not.toContain('Commands:'); + } + }); +}); From 4d48f7e6f8a6bd0e7a3c2b4076fc9c1b3d006bb8 Mon Sep 17 00:00:00 2001 From: Andrei Hasna <andrei@hasna.com> Date: Mon, 10 Aug 2026 19:34:57 +0300 Subject: [PATCH 2/4] fix: harden project-link lifecycle and receipts Agent: Theophrastus --- bin/knowledge-mcp.js | 44 ++++- bin/knowledge-serve.js | 86 +++++++++- bin/knowledge.js | 332 ++++++++++++++++++------------------ dist/index.js | 92 +++++++++- dist/project-links.d.ts | 2 + dist/serve.js | 87 +++++++++- dist/service.d.ts | 1 + dist/storage.js | 40 ++++- src/cli.ts | 10 +- src/project-links.ts | 57 +++++++ src/serve.ts | 47 +++++ src/service.ts | 6 + tests/project-links.test.ts | 229 ++++++++++++++++++++++--- 13 files changed, 845 insertions(+), 188 deletions(-) diff --git a/bin/knowledge-mcp.js b/bin/knowledge-mcp.js index 26924c1..9688f17 100755 --- a/bin/knowledge-mcp.js +++ b/bin/knowledge-mcp.js @@ -29252,9 +29252,17 @@ class KnowledgeProjectLinksError extends Error { class SqliteProjectLinksSql { db; tail = Promise.resolve(); + closed = false; constructor(db) { this.db = db; } + async close() { + await this.tail; + if (this.closed) + return; + this.closed = true; + this.db.close(); + } async get(sql, params = []) { return this.db.query(sql).get(...params) ?? null; } @@ -29622,6 +29630,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { }; this.now = options.now ?? (() => new Date().toISOString()); } + async close() { + await this.sql.close(); + } capabilityValue() { return { authority: "knowledge", @@ -29724,7 +29735,7 @@ class PackageOwnedKnowledgeProjectLinksAuthority { return row ? toReceipt(row) : null; } assertIdempotent(existing, input) { - if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest || input.accepted_receipt_id !== undefined && existing.accepted_receipt_id !== input.accepted_receipt_id) { throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); } } @@ -29873,6 +29884,25 @@ class PackageOwnedKnowledgeProjectLinksAuthority { ]); return row ? toReceipt(row) : null; } + async hasOtherAcceptedForwardReceipt(sql, accepted) { + const itemPredicate = accepted.action === "bind_item" ? "AND item_id = ?" : "AND item_id IS NULL"; + const row = await sql.get(`SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${itemPredicate} + LIMIT 1`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.action, + accepted.collection_id, + accepted.receipt_id, + ...accepted.action === "bind_item" ? [accepted.item_id] : [] + ]); + return row !== null; + } assertInverseIdentity(request) { this.assertIdentity(request); requiredString(request.accepted_receipt_id, "accepted_receipt_id"); @@ -29904,6 +29934,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!aggregate) { outcome = "terminal_nonacceptance"; reason = "accepted_collection_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_later_accepted_adopter"; } else { const membership = await tx.get(`SELECT COUNT(*) AS count FROM knowledge_project_collection_memberships @@ -30170,6 +30203,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!membership) { outcome = "terminal_nonacceptance"; reason = "accepted_membership_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "membership_has_later_accepted_adopter"; } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { outcome = "terminal_nonacceptance"; reason = "membership_is_owned_by_a_different_receipt"; @@ -30498,6 +30534,7 @@ class KnowledgeProjectLinksHttpClient { this.fetchImpl = options.fetch ?? guardedFetch; this.root = options.baseUrl.replace(/\/+$/, ""); } + async close() {} headers(extra = {}) { const headers = new Headers(this.options.headers); headers.set("accept", "application/json"); @@ -31674,6 +31711,11 @@ class KnowledgeService { }); return this.cachedProjectLinksAuthority; } + async close() { + const authority = this.cachedProjectLinksAuthority; + this.cachedProjectLinksAuthority = undefined; + await authority?.close(); + } async listItems(options = {}) { return this.itemStore().list(options); } diff --git a/bin/knowledge-serve.js b/bin/knowledge-serve.js index ee71aad..8df3bcc 100755 --- a/bin/knowledge-serve.js +++ b/bin/knowledge-serve.js @@ -1394,6 +1394,7 @@ class PostgresProjectLinksSql { this.client = client; this.transactionClient = transactionClient; } + async close() {} async get(sql, params = []) { return this.client.get(postgresSql(sql), params); } @@ -1414,9 +1415,17 @@ class PostgresProjectLinksSql { class SqliteProjectLinksSql { db; tail = Promise.resolve(); + closed = false; constructor(db) { this.db = db; } + async close() { + await this.tail; + if (this.closed) + return; + this.closed = true; + this.db.close(); + } async get(sql, params = []) { return this.db.query(sql).get(...params) ?? null; } @@ -1594,6 +1603,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { }; this.now = options.now ?? (() => new Date().toISOString()); } + async close() { + await this.sql.close(); + } capabilityValue() { return { authority: "knowledge", @@ -1696,7 +1708,7 @@ class PackageOwnedKnowledgeProjectLinksAuthority { return row ? toReceipt(row) : null; } assertIdempotent(existing, input) { - if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest || input.accepted_receipt_id !== undefined && existing.accepted_receipt_id !== input.accepted_receipt_id) { throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); } } @@ -1845,6 +1857,25 @@ class PackageOwnedKnowledgeProjectLinksAuthority { ]); return row ? toReceipt(row) : null; } + async hasOtherAcceptedForwardReceipt(sql, accepted) { + const itemPredicate = accepted.action === "bind_item" ? "AND item_id = ?" : "AND item_id IS NULL"; + const row = await sql.get(`SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${itemPredicate} + LIMIT 1`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.action, + accepted.collection_id, + accepted.receipt_id, + ...accepted.action === "bind_item" ? [accepted.item_id] : [] + ]); + return row !== null; + } assertInverseIdentity(request) { this.assertIdentity(request); requiredString(request.accepted_receipt_id, "accepted_receipt_id"); @@ -1876,6 +1907,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!aggregate) { outcome = "terminal_nonacceptance"; reason = "accepted_collection_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_later_accepted_adopter"; } else { const membership = await tx.get(`SELECT COUNT(*) AS count FROM knowledge_project_collection_memberships @@ -2142,6 +2176,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!membership) { outcome = "terminal_nonacceptance"; reason = "accepted_membership_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "membership_has_later_accepted_adopter"; } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { outcome = "terminal_nonacceptance"; reason = "membership_is_owned_by_a_different_receipt"; @@ -4433,6 +4470,23 @@ function knowledgeOpenApi(version) { "created_at", "updated_at" ], + properties: { + source_project_id: { type: "string" }, + project_id: { type: "string" }, + project_slug: { type: "string" }, + project_name: { type: "string" }, + collection_id: { type: "string" }, + collection_slug: { type: "string" }, + collection_name: { type: "string" }, + membership_rule: { + type: "string", + enum: ["explicit_collection_binding"] + }, + revision: { type: "string" }, + digest: { type: "string" }, + created_at: { type: "string", format: "date-time" }, + updated_at: { type: "string", format: "date-time" } + }, additionalProperties: false }, ProjectResource: { @@ -4450,6 +4504,36 @@ function knowledgeOpenApi(version) { "locator", "metadata" ], + properties: { + key: { type: "string" }, + kind: { + type: "string", + enum: ["project", "collection", "item", "taxonomy"] + }, + id: { type: "string" }, + project_id: { type: "string" }, + source_project_id: { type: "string" }, + collection_id: { type: "string" }, + revision: { type: "string" }, + digest: { type: "string" }, + title: { type: "string" }, + locator: { + type: "object", + required: ["kind", "value"], + properties: { + kind: { + type: "string", + enum: ["external_uuid", "canonical_uri"] + }, + value: { type: "string" } + }, + additionalProperties: false + }, + metadata: { + type: "object", + additionalProperties: true + } + }, additionalProperties: false }, ProjectResourcePage: { diff --git a/bin/knowledge.js b/bin/knowledge.js index 5747c8e..1200ffb 100755 --- a/bin/knowledge.js +++ b/bin/knowledge.js @@ -1,32 +1,32 @@ #!/usr/bin/env bun // @bun -var TY=Object.create;var{getPrototypeOf:FY,defineProperty:wN,getOwnPropertyNames:VY}=Object;var BY=Object.prototype.hasOwnProperty;function MY(_){return this[_]}var bY,ZY,HY=(_,$,D)=>{var I=_!=null&&typeof _==="object";if(I){var U=$?bY??=new WeakMap:ZY??=new WeakMap,E=U.get(_);if(E)return E}D=_!=null?TY(FY(_)):{};let j=$||!_||!_.__esModule?wN(D,"default",{value:_,enumerable:!0}):D;for(let N of VY(_))if(!BY.call(j,N))wN(j,N,{get:MY.bind(_,N),enumerable:!0});if(I)U.set(_,j);return j};var D4=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var kY=(_)=>_;function qY(_,$){this[_]=kY.bind(null,$)}var x$=(_,$)=>{for(var D in $)wN(_,D,{get:$[D],enumerable:!0,configurable:!0,set:qY.bind($,D)})};var r=(_,$)=>()=>(_&&($=_(_=0)),$);var O_=import.meta.require;function Q(_,$,D){function I(N,A){if(!N._zod)Object.defineProperty(N,"_zod",{value:{def:A,constr:j,traits:new Set},enumerable:!1});if(N._zod.traits.has(_))return;N._zod.traits.add(_),$(N,A);let O=j.prototype,L=Object.keys(O);for(let J=0;J<L.length;J++){let P=L[J];if(!(P in N))N[P]=O[P].bind(N)}}let U=D?.Parent??Object;class E extends U{}Object.defineProperty(E,"name",{value:_});function j(N){var A;let O=D?.Parent?new E:this;I(O,N),(A=O._zod).deferred??(A.deferred=[]);for(let L of O._zod.deferred)L();return O}return Object.defineProperty(j,"init",{value:I}),Object.defineProperty(j,Symbol.hasInstance,{value:(N)=>{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(P4,_);return P4}var yX,FI,VI,m$,z4,P4;var X4=r(()=>{FI=Object.freeze({status:"aborted"});VI=Symbol("zod_brand");m$=class m$ extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};z4=class z4 extends Error{constructor(_){super(`Encountered unidirectional transform during encode: ${_}`);this.name="ZodEncodeError"}};(yX=globalThis).__zod_globalConfig??(yX.__zod_globalConfig={});P4=globalThis.__zod_globalConfig});var H={};x$(H,{unwrapMessage:()=>DU,uint8ArrayToHex:()=>pV,uint8ArrayToBase64url:()=>tV,uint8ArrayToBase64:()=>nX,stringifyPrimitive:()=>M,slugify:()=>I2,shallowClone:()=>j2,safeExtend:()=>cV,required:()=>mV,randomString:()=>wV,propertyKeyTypes:()=>EU,promiseAllObject:()=>vV,primitiveTypes:()=>N2,prefixIssues:()=>$$,pick:()=>uV,partial:()=>dV,parsedType:()=>b,optionalKeys:()=>g2,omit:()=>yV,objectClone:()=>kV,numKeys:()=>rV,nullish:()=>C6,normalizeParams:()=>v,mergeDefs:()=>L6,merge:()=>nV,jsonStringifyReplacer:()=>H0,joinValues:()=>V,issue:()=>q0,isPlainObject:()=>w6,isObject:()=>G4,hexToUint8Array:()=>oV,getSizableOrigin:()=>jU,getParsedType:()=>fV,getLengthableOrigin:()=>NU,getEnumValues:()=>UU,getElementAtPath:()=>CV,floatSafeRemainder:()=>U2,finalizeIssue:()=>o_,extend:()=>hV,explicitlyAborted:()=>L2,escapeRegex:()=>z$,esc:()=>BI,defineLazy:()=>$_,createTransparentProxy:()=>xV,cloneDef:()=>qV,clone:()=>c_,cleanRegex:()=>IU,cleanEnum:()=>lV,captureStackTrace:()=>MI,cached:()=>k0,base64urlToUint8Array:()=>iV,base64ToUint8Array:()=>cX,assignProp:()=>v6,assertNotEqual:()=>MV,assertNever:()=>ZV,assertIs:()=>bV,assertEqual:()=>BV,assert:()=>HV,allowsEval:()=>E2,aborted:()=>r6,NUMBER_FORMAT_RANGES:()=>A2,Class:()=>dX,BIGINT_FORMAT_RANGES:()=>O2});function BV(_){return _}function MV(_){return _}function bV(_){}function ZV(_){throw Error("Unexpected value in exhaustive check")}function HV(_){}function UU(_){let $=Object.values(_).filter((I)=>typeof I==="number");return Object.entries(_).filter(([I,U])=>$.indexOf(+I)===-1).map(([I,U])=>U)}function V(_,$="|"){return _.map((D)=>M(D)).join($)}function H0(_,$){if(typeof $==="bigint")return $.toString();return $}function k0(_){return{get value(){{let D=_();return Object.defineProperty(this,"value",{value:D}),D}throw Error("cached value already set")}}}function C6(_){return _===null||_===void 0}function IU(_){let $=_.startsWith("^")?1:0,D=_.endsWith("$")?_.length-1:_.length;return _.slice($,D)}function U2(_,$){let D=_/$,I=Math.round(D),U=Number.EPSILON*Math.max(Math.abs(D),1);if(Math.abs(D-I)<U)return 0;return D-I}function $_(_,$,D){let I=void 0;Object.defineProperty(_,$,{get(){if(I===hX)return;if(I===void 0)I=hX,I=D();return I},set(U){Object.defineProperty(_,$,{value:U})},configurable:!0})}function kV(_){return Object.create(Object.getPrototypeOf(_),Object.getOwnPropertyDescriptors(_))}function v6(_,$,D){Object.defineProperty(_,$,{value:D,writable:!0,enumerable:!0,configurable:!0})}function L6(..._){let $={};for(let D of _){let I=Object.getOwnPropertyDescriptors(D);Object.assign($,I)}return Object.defineProperties({},$)}function qV(_){return L6(_._zod.def)}function CV(_,$){if(!$)return _;return $.reduce((D,I)=>D?.[I],_)}function vV(_){let $=Object.keys(_),D=$.map((I)=>_[I]);return Promise.all(D).then((I)=>{let U={};for(let E=0;E<$.length;E++)U[$[E]]=I[E];return U})}function wV(_=10){let D="";for(let I=0;I<_;I++)D+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return D}function BI(_){return JSON.stringify(_)}function I2(_){return _.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function G4(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)}function w6(_){if(G4(_)===!1)return!1;let $=_.constructor;if($===void 0)return!0;if(typeof $!=="function")return!0;let D=$.prototype;if(G4(D)===!1)return!1;if(Object.prototype.hasOwnProperty.call(D,"isPrototypeOf")===!1)return!1;return!0}function j2(_){if(w6(_))return{..._};if(Array.isArray(_))return[..._];if(_ instanceof Map)return new Map(_);if(_ instanceof Set)return new Set(_);return _}function rV(_){let $=0;for(let D in _)if(Object.prototype.hasOwnProperty.call(_,D))$++;return $}function z$(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function c_(_,$,D){let I=new _._zod.constr($??_._zod.def);if(!$||D?.parent)I._zod.parent=_;return I}function v(_){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 xV(_){let $;return new Proxy({},{get(D,I,U){return $??($=_()),Reflect.get($,I,U)},set(D,I,U,E){return $??($=_()),Reflect.set($,I,U,E)},has(D,I){return $??($=_()),Reflect.has($,I)},deleteProperty(D,I){return $??($=_()),Reflect.deleteProperty($,I)},ownKeys(D){return $??($=_()),Reflect.ownKeys($)},getOwnPropertyDescriptor(D,I){return $??($=_()),Reflect.getOwnPropertyDescriptor($,I)},defineProperty(D,I,U){return $??($=_()),Reflect.defineProperty($,I,U)}})}function M(_){if(typeof _==="bigint")return _.toString()+"n";if(typeof _==="string")return`"${_}"`;return`${_}`}function g2(_){return Object.keys(_).filter(($)=>{return _[$]._zod.optin==="optional"&&_[$]._zod.optout==="optional"})}function uV(_,$){let D=_._zod.def,I=D.checks;if(I&&I.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let E=L6(_._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 v6(this,"shape",j),j},checks:[]});return c_(_,E)}function yV(_,$){let D=_._zod.def,I=D.checks;if(I&&I.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let E=L6(_._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 v6(this,"shape",j),j},checks:[]});return c_(_,E)}function hV(_,$){if(!w6($))throw Error("Invalid input to extend: expected a plain object");let D=_._zod.def.checks;if(D&&D.length>0){let E=_._zod.def.shape;for(let j in $)if(Object.getOwnPropertyDescriptor(E,j)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let U=L6(_._zod.def,{get shape(){let E={..._._zod.def.shape,...$};return v6(this,"shape",E),E}});return c_(_,U)}function cV(_,$){if(!w6($))throw Error("Invalid input to safeExtend: expected a plain object");let D=L6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$};return v6(this,"shape",I),I}});return c_(_,D)}function nV(_,$){if(_._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let D=L6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$._zod.def.shape};return v6(this,"shape",I),I},get catchall(){return $._zod.def.catchall},checks:$._zod.def.checks??[]});return c_(_,D)}function dV(_,$,D){let U=$._zod.def.checks;if(U&&U.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let j=L6($._zod.def,{get shape(){let N=$._zod.def.shape,A={...N};if(D)for(let O in D){if(!(O in N))throw Error(`Unrecognized key: "${O}"`);if(!D[O])continue;A[O]=_?new _({type:"optional",innerType:N[O]}):N[O]}else for(let O in N)A[O]=_?new _({type:"optional",innerType:N[O]}):N[O];return v6(this,"shape",A),A},checks:[]});return c_($,j)}function mV(_,$,D){let I=L6($._zod.def,{get shape(){let U=$._zod.def.shape,E={...U};if(D)for(let j in D){if(!(j in E))throw Error(`Unrecognized key: "${j}"`);if(!D[j])continue;E[j]=new _({type:"nonoptional",innerType:U[j]})}else for(let j in U)E[j]=new _({type:"nonoptional",innerType:U[j]});return v6(this,"shape",E),E}});return c_($,I)}function r6(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue!==!0)return!0;return!1}function L2(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue===!1)return!0;return!1}function $$(_,$){return $.map((D)=>{var I;return(I=D).path??(I.path=[]),D.path.unshift(_),D})}function DU(_){return typeof _==="string"?_:_?.message}function o_(_,$,D){let I=_.message?_.message:DU(_.inst?._zod.def?.error?.(_))??DU($?.error?.(_))??DU(D.customError?.(_))??DU(D.localeError?.(_))??"Invalid input",{inst:U,continue:E,input:j,...N}=_;if(N.path??(N.path=[]),N.message=I,$?.reportInput)N.input=j;return N}function jU(_){if(_ instanceof Set)return"set";if(_ instanceof Map)return"map";if(_ instanceof File)return"file";return"unknown"}function NU(_){if(Array.isArray(_))return"array";if(typeof _==="string")return"string";return"unknown"}function b(_){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 q0(..._){let[$,D,I]=_;if(typeof $==="string")return{message:$,code:"custom",input:D,inst:I};return{...$}}function lV(_){return Object.entries(_).filter(([$,D])=>{return Number.isNaN(Number.parseInt($,10))}).map(($)=>$[1])}function cX(_){let $=atob(_),D=new Uint8Array($.length);for(let I=0;I<$.length;I++)D[I]=$.charCodeAt(I);return D}function nX(_){let $="";for(let D=0;D<_.length;D++)$+=String.fromCharCode(_[D]);return btoa($)}function iV(_){let $=_.replace(/-/g,"+").replace(/_/g,"/"),D="=".repeat((4-$.length%4)%4);return cX($+D)}function tV(_){return nX(_).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function oV(_){let $=_.replace(/^0x/,"");if($.length%2!==0)throw Error("Invalid hex string length");let D=new Uint8Array($.length/2);for(let I=0;I<$.length;I+=2)D[I/2]=Number.parseInt($.slice(I,I+2),16);return D}function pV(_){return Array.from(_).map(($)=>$.toString(16).padStart(2,"0")).join("")}class dX{constructor(..._){}}var hX,MI,E2,fV=(_)=>{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: ${$}`)}},EU,N2,A2,O2;var n=r(()=>{X4();hX=Symbol("evaluating");MI="captureStackTrace"in Error?Error.captureStackTrace:(..._)=>{};E2=k0(()=>{if(P4.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(_){return!1}});EU=new Set(["string","number","symbol"]),N2=new Set(["string","number","bigint","boolean","symbol","undefined"]);A2={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]},O2={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]}});function C0(_,$=(D)=>D.message){let D={},I=[];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 I.push($(U));return{formErrors:I,fieldErrors:D}}function v0(_,$=(D)=>D.message){let D={_errors:[]},I=(U,E=[])=>{for(let j of U.issues)if(j.code==="invalid_union"&&j.errors.length)j.errors.map((N)=>I({issues:N},[...E,...j.path]));else if(j.code==="invalid_key")I({issues:j.issues},[...E,...j.path]);else if(j.code==="invalid_element")I({issues:j.issues},[...E,...j.path]);else{let N=[...E,...j.path];if(N.length===0)D._errors.push($(j));else{let A=D,O=0;while(O<N.length){let L=N[O];if(O!==N.length-1)A[L]=A[L]||{_errors:[]};else A[L]=A[L]||{_errors:[]},A[L]._errors.push($(j));A=A[L],O++}}}};return I(_),D}function bI(_,$=(D)=>D.message){let D={errors:[]},I=(U,E=[])=>{var j,N;for(let A of U.issues)if(A.code==="invalid_union"&&A.errors.length)A.errors.map((O)=>I({issues:O},[...E,...A.path]));else if(A.code==="invalid_key")I({issues:A.issues},[...E,...A.path]);else if(A.code==="invalid_element")I({issues:A.issues},[...E,...A.path]);else{let O=[...E,...A.path];if(O.length===0){D.errors.push($(A));continue}let L=D,J=0;while(J<O.length){let P=O[J],z=J===O.length-1;if(typeof P==="string")L.properties??(L.properties={}),(j=L.properties)[P]??(j[P]={errors:[]}),L=L.properties[P];else L.items??(L.items=[]),(N=L.items)[P]??(N[P]={errors:[]}),L=L.items[P];if(z)L.errors.push($(A));J++}}};return I(_),D}function lX(_){let $=[],D=_.map((I)=>typeof I==="object"?I.key:I);for(let I of D)if(typeof I==="number")$.push(`[${I}]`);else if(typeof I==="symbol")$.push(`[${JSON.stringify(String(I))}]`);else if(/[^\w$]/.test(I))$.push(`[${JSON.stringify(I)}]`);else{if($.length)$.push(".");$.push(I)}return $.join("")}function ZI(_){let $=[],D=[..._.issues].sort((I,U)=>(I.path??[]).length-(U.path??[]).length);for(let I of D)if($.push(`\u2716 ${I.message}`),I.path?.length)$.push(` \u2192 at ${lX(I.path)}`);return $.join(` -`)}var mX=(_,$)=>{_.name="$ZodError",Object.defineProperty(_,"_zod",{value:_._zod,enumerable:!1}),Object.defineProperty(_,"issues",{value:$,enumerable:!1}),_.message=JSON.stringify($,H0,2),Object.defineProperty(_,"toString",{value:()=>_.message,enumerable:!1})},gU,D$;var S2=r(()=>{X4();n();gU=Q("$ZodError",mX),D$=Q("$ZodError",mX,{Parent:Error})});var w0=(_)=>($,D,I,U)=>{let E=I?{...I,async:!1}:{async:!1},j=$._zod.run({value:D,issues:[]},E);if(j instanceof Promise)throw new m$;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((A)=>o_(A,E,Z_())));throw MI(N,U?.callee),N}return j.value},HI,r0=(_)=>async($,D,I,U)=>{let E=I?{...I,async:!0}:{async:!0},j=$._zod.run({value:D,issues:[]},E);if(j instanceof Promise)j=await j;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((A)=>o_(A,E,Z_())));throw MI(N,U?.callee),N}return j.value},kI,f0=(_)=>($,D,I)=>{let U=I?{...I,async:!1}:{async:!1},E=$._zod.run({value:D,issues:[]},U);if(E instanceof Promise)throw new m$;return E.issues.length?{success:!1,error:new(_??gU)(E.issues.map((j)=>o_(j,U,Z_())))}:{success:!0,data:E.value}},J2,x0=(_)=>async($,D,I)=>{let U=I?{...I,async:!0}:{async:!0},E=$._zod.run({value:D,issues:[]},U);if(E instanceof Promise)E=await E;return E.issues.length?{success:!1,error:new _(E.issues.map((j)=>o_(j,U,Z_())))}:{success:!0,data:E.value}},W2,qI=(_)=>($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return w0(_)($,D,U)},aV,CI=(_)=>($,D,I)=>{return w0(_)($,D,I)},sV,vI=(_)=>async($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return r0(_)($,D,U)},_B,wI=(_)=>async($,D,I)=>{return r0(_)($,D,I)},$B,rI=(_)=>($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return f0(_)($,D,U)},DB,fI=(_)=>($,D,I)=>{return f0(_)($,D,I)},UB,xI=(_)=>async($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return x0(_)($,D,U)},IB,uI=(_)=>async($,D,I)=>{return x0(_)($,D,I)},EB;var P2=r(()=>{X4();S2();n();HI=w0(D$),kI=r0(D$),J2=f0(D$),W2=x0(D$),aV=qI(D$),sV=CI(D$),_B=vI(D$),$B=wI(D$),DB=rI(D$),UB=fI(D$),IB=xI(D$),EB=uI(D$)});var U$={};x$(U$,{xid:()=>R2,uuid7:()=>AB,uuid6:()=>gB,uuid4:()=>NB,uuid:()=>R4,uppercase:()=>d2,unicodeEmail:()=>iX,undefined:()=>c2,ulid:()=>G2,time:()=>w2,string:()=>f2,sha512_hex:()=>HB,sha512_base64url:()=>qB,sha512_base64:()=>kB,sha384_hex:()=>MB,sha384_base64url:()=>ZB,sha384_base64:()=>bB,sha256_hex:()=>FB,sha256_base64url:()=>BB,sha256_base64:()=>VB,sha1_hex:()=>QB,sha1_base64url:()=>TB,sha1_base64:()=>KB,rfc5322Email:()=>LB,number:()=>AU,null:()=>h2,nanoid:()=>Q2,md5_hex:()=>GB,md5_base64url:()=>YB,md5_base64:()=>RB,mac:()=>b2,lowercase:()=>n2,ksuid:()=>Y2,ipv6:()=>M2,ipv4:()=>B2,integer:()=>u2,idnEmail:()=>SB,httpProtocol:()=>q2,html5Email:()=>OB,hostname:()=>PB,hex:()=>XB,guid:()=>T2,extendedDuration:()=>jB,emoji:()=>V2,email:()=>F2,e164:()=>C2,duration:()=>K2,domain:()=>zB,datetime:()=>r2,date:()=>v2,cuid2:()=>X2,cuid:()=>z2,cidrv6:()=>H2,cidrv4:()=>Z2,browserEmail:()=>JB,boolean:()=>y2,bigint:()=>x2,base64url:()=>yI,base64:()=>k2});function V2(){return new RegExp(WB,"u")}function oX(_){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 w2(_){return new RegExp(`^${oX(_)}$`)}function r2(_){let $=oX({precision:_.precision}),D=["Z"];if(_.local)D.push("");if(_.offset)D.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let I=`${$}(?:${D.join("|")})`;return new RegExp(`^${tX}T(?:${I})$`)}function OU(_,$){return new RegExp(`^[A-Za-z0-9+/]{${_}}${$}$`)}function LU(_){return new RegExp(`^[A-Za-z0-9_-]{${_}}$`)}var z2,X2,G2,R2,Y2,Q2,K2,jB,T2,R4=(_)=>{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})$`)},NB,gB,AB,F2,OB,LB,iX,SB,JB,WB="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",B2,M2,b2=(_)=>{let $=z$(_??":");return new RegExp(`^(?:[0-9A-F]{2}${$}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${$}){5}[0-9a-f]{2}$`)},Z2,H2,k2,yI,PB,zB,q2,C2,tX="(?:(?:\\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])))",v2,f2=(_)=>{let $=_?`[\\s\\S]{${_?.minimum??0},${_?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${$}$`)},x2,u2,AU,y2,h2,c2,n2,d2,XB,GB,RB,YB,QB,KB,TB,FB,VB,BB,MB,bB,ZB,HB,kB,qB;var hI=r(()=>{n();z2=/^[cC][0-9a-z]{6,}$/,X2=/^[0-9a-z]+$/,G2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,R2=/^[0-9a-vA-V]{20}$/,Y2=/^[A-Za-z0-9]{27}$/,Q2=/^[a-zA-Z0-9_-]{21}$/,K2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,jB=/^[-+]?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)?)??$/,T2=/^([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})$/,NB=R4(4),gB=R4(6),AB=R4(7),F2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,OB=/^[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])?)*$/,LB=/^(([^<>()\[\]\\.,;:\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,}))$/,iX=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,SB=iX,JB=/^[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])?)*$/;B2=/^(?:(?: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])$/,M2=/^(([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}|:))$/,Z2=/^((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])$/,H2=/^(([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])$/,k2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,yI=/^[A-Za-z0-9_-]*$/,PB=/^(?=.{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])?)*\.?$/,zB=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,q2=/^https?$/,C2=/^\+[1-9]\d{6,14}$/,v2=new RegExp(`^${tX}$`);x2=/^-?\d+n?$/,u2=/^-?\d+$/,AU=/^-?\d+(?:\.\d+)?$/,y2=/^(?:true|false)$/i,h2=/^null$/i,c2=/^undefined$/i,n2=/^[^A-Z]*$/,d2=/^[^a-z]*$/,XB=/^[0-9a-fA-F]*$/;GB=/^[0-9a-fA-F]{32}$/,RB=OU(22,"=="),YB=LU(22),QB=/^[0-9a-fA-F]{40}$/,KB=OU(27,"="),TB=LU(27),FB=/^[0-9a-fA-F]{64}$/,VB=OU(43,"="),BB=LU(43),MB=/^[0-9a-fA-F]{96}$/,bB=OU(64,""),ZB=LU(64),HB=/^[0-9a-fA-F]{128}$/,kB=OU(86,"=="),qB=LU(86)});function pX(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues))}var Y_,eX,cI,nI,m2,l2,i2,t2,o2,p2,e2,a2,s2,u0,_A,$A,DA,UA,IA,EA,jA,NA,gA;var dI=r(()=>{X4();hI();n();Y_=Q("$ZodCheck",(_,$)=>{var D;_._zod??(_._zod={}),_._zod.def=$,(D=_._zod).onattach??(D.onattach=[])}),eX={number:"number",bigint:"bigint",object:"date"},cI=Q("$ZodCheckLessThan",(_,$)=>{Y_.init(_,$);let D=eX[typeof $.value];_._zod.onattach.push((I)=>{let U=I._zod.bag,E=($.inclusive?U.maximum:U.exclusiveMaximum)??Number.POSITIVE_INFINITY;if($.value<E)if($.inclusive)U.maximum=$.value;else U.exclusiveMaximum=$.value}),_._zod.check=(I)=>{if($.inclusive?I.value<=$.value:I.value<$.value)return;I.issues.push({origin:D,code:"too_big",maximum:typeof $.value==="object"?$.value.getTime():$.value,input:I.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),nI=Q("$ZodCheckGreaterThan",(_,$)=>{Y_.init(_,$);let D=eX[typeof $.value];_._zod.onattach.push((I)=>{let U=I._zod.bag,E=($.inclusive?U.minimum:U.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if($.value>E)if($.inclusive)U.minimum=$.value;else U.exclusiveMinimum=$.value}),_._zod.check=(I)=>{if($.inclusive?I.value>=$.value:I.value>$.value)return;I.issues.push({origin:D,code:"too_small",minimum:typeof $.value==="object"?$.value.getTime():$.value,input:I.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),m2=Q("$ZodCheckMultipleOf",(_,$)=>{Y_.init(_,$),_._zod.onattach.push((D)=>{var I;(I=D._zod.bag).multipleOf??(I.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):U2(D.value,$.value)===0)return;D.issues.push({origin:typeof D.value,code:"not_multiple_of",divisor:$.value,input:D.value,inst:_,continue:!$.abort})}}),l2=Q("$ZodCheckNumberFormat",(_,$)=>{Y_.init(_,$),$.format=$.format||"float64";let D=$.format?.includes("int"),I=D?"int":"number",[U,E]=A2[$.format];_._zod.onattach.push((j)=>{let N=j._zod.bag;if(N.format=$.format,N.minimum=U,N.maximum=E,D)N.pattern=u2}),_._zod.check=(j)=>{let N=j.value;if(D){if(!Number.isInteger(N)){j.issues.push({expected:I,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:I,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:I,inclusive:!0,continue:!$.abort});return}}if(N<U)j.issues.push({origin:"number",input:N,code:"too_small",minimum:U,inclusive:!0,inst:_,continue:!$.abort});if(N>E)j.issues.push({origin:"number",input:N,code:"too_big",maximum:E,inclusive:!0,inst:_,continue:!$.abort})}}),i2=Q("$ZodCheckBigIntFormat",(_,$)=>{Y_.init(_,$);let[D,I]=O2[$.format];_._zod.onattach.push((U)=>{let E=U._zod.bag;E.format=$.format,E.minimum=D,E.maximum=I}),_._zod.check=(U)=>{let E=U.value;if(E<D)U.issues.push({origin:"bigint",input:E,code:"too_small",minimum:D,inclusive:!0,inst:_,continue:!$.abort});if(E>I)U.issues.push({origin:"bigint",input:E,code:"too_big",maximum:I,inclusive:!0,inst:_,continue:!$.abort})}}),t2=Q("$ZodCheckMaxSize",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum<U)I._zod.bag.maximum=$.maximum}),_._zod.check=(I)=>{let U=I.value;if(U.size<=$.maximum)return;I.issues.push({origin:jU(U),code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),o2=Q("$ZodCheckMinSize",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)I._zod.bag.minimum=$.minimum}),_._zod.check=(I)=>{let U=I.value;if(U.size>=$.minimum)return;I.issues.push({origin:jU(U),code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),p2=Q("$ZodCheckSizeEquals",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.minimum=$.size,U.maximum=$.size,U.size=$.size}),_._zod.check=(I)=>{let U=I.value,E=U.size;if(E===$.size)return;let j=E>$.size;I.issues.push({origin:jU(U),...j?{code:"too_big",maximum:$.size}:{code:"too_small",minimum:$.size},inclusive:!0,exact:!0,input:I.value,inst:_,continue:!$.abort})}}),e2=Q("$ZodCheckMaxLength",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum<U)I._zod.bag.maximum=$.maximum}),_._zod.check=(I)=>{let U=I.value;if(U.length<=$.maximum)return;let j=NU(U);I.issues.push({origin:j,code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),a2=Q("$ZodCheckMinLength",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)I._zod.bag.minimum=$.minimum}),_._zod.check=(I)=>{let U=I.value;if(U.length>=$.minimum)return;let j=NU(U);I.issues.push({origin:j,code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),s2=Q("$ZodCheckLengthEquals",(_,$)=>{var D;Y_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.minimum=$.length,U.maximum=$.length,U.length=$.length}),_._zod.check=(I)=>{let U=I.value,E=U.length;if(E===$.length)return;let j=NU(U),N=E>$.length;I.issues.push({origin:j,...N?{code:"too_big",maximum:$.length}:{code:"too_small",minimum:$.length},inclusive:!0,exact:!0,input:I.value,inst:_,continue:!$.abort})}}),u0=Q("$ZodCheckStringFormat",(_,$)=>{var D,I;if(Y_.init(_,$),_._zod.onattach.push((U)=>{let E=U._zod.bag;if(E.format=$.format,$.pattern)E.patterns??(E.patterns=new Set),E.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(I=_._zod).check??(I.check=()=>{})}),_A=Q("$ZodCheckRegex",(_,$)=>{u0.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})}}),$A=Q("$ZodCheckLowerCase",(_,$)=>{$.pattern??($.pattern=n2),u0.init(_,$)}),DA=Q("$ZodCheckUpperCase",(_,$)=>{$.pattern??($.pattern=d2),u0.init(_,$)}),UA=Q("$ZodCheckIncludes",(_,$)=>{Y_.init(_,$);let D=z$($.includes),I=new RegExp(typeof $.position==="number"?`^.{${$.position}}${D}`:D);$.pattern=I,_._zod.onattach.push((U)=>{let E=U._zod.bag;E.patterns??(E.patterns=new Set),E.patterns.add(I)}),_._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})}}),IA=Q("$ZodCheckStartsWith",(_,$)=>{Y_.init(_,$);let D=new RegExp(`^${z$($.prefix)}.*`);$.pattern??($.pattern=D),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(I)=>{if(I.value.startsWith($.prefix))return;I.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:$.prefix,input:I.value,inst:_,continue:!$.abort})}}),EA=Q("$ZodCheckEndsWith",(_,$)=>{Y_.init(_,$);let D=new RegExp(`.*${z$($.suffix)}$`);$.pattern??($.pattern=D),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(I)=>{if(I.value.endsWith($.suffix))return;I.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:$.suffix,input:I.value,inst:_,continue:!$.abort})}});jA=Q("$ZodCheckProperty",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{let I=$.schema._zod.run({value:D.value[$.property],issues:[]},{});if(I instanceof Promise)return I.then((U)=>pX(U,D,$.property));pX(I,D,$.property);return}}),NA=Q("$ZodCheckMimeType",(_,$)=>{Y_.init(_,$);let D=new Set($.mime);_._zod.onattach.push((I)=>{I._zod.bag.mime=$.mime}),_._zod.check=(I)=>{if(D.has(I.value.type))return;I.issues.push({code:"invalid_value",values:$.mime,input:I.value.type,inst:_,continue:!$.abort})}}),gA=Q("$ZodCheckOverwrite",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{D.value=$.tx(D.value)}})});class mI{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(` +var TY=Object.create;var{getPrototypeOf:FY,defineProperty:wN,getOwnPropertyNames:VY}=Object;var BY=Object.prototype.hasOwnProperty;function MY(_){return this[_]}var bY,ZY,HY=(_,$,D)=>{var I=_!=null&&typeof _==="object";if(I){var U=$?bY??=new WeakMap:ZY??=new WeakMap,E=U.get(_);if(E)return E}D=_!=null?TY(FY(_)):{};let j=$||!_||!_.__esModule?wN(D,"default",{value:_,enumerable:!0}):D;for(let N of VY(_))if(!BY.call(j,N))wN(j,N,{get:MY.bind(_,N),enumerable:!0});if(I)U.set(_,j);return j};var D4=(_,$)=>()=>($||_(($={exports:{}}).exports,$),$.exports);var kY=(_)=>_;function qY(_,$){this[_]=kY.bind(null,$)}var x$=(_,$)=>{for(var D in $)wN(_,D,{get:$[D],enumerable:!0,configurable:!0,set:qY.bind($,D)})};var r=(_,$)=>()=>(_&&($=_(_=0)),$);var S_=import.meta.require;function K(_,$,D){function I(N,A){if(!N._zod)Object.defineProperty(N,"_zod",{value:{def:A,constr:j,traits:new Set},enumerable:!1});if(N._zod.traits.has(_))return;N._zod.traits.add(_),$(N,A);let O=j.prototype,S=Object.keys(O);for(let L=0;L<S.length;L++){let P=S[L];if(!(P in N))N[P]=O[P].bind(N)}}let U=D?.Parent??Object;class E extends U{}Object.defineProperty(E,"name",{value:_});function j(N){var A;let O=D?.Parent?new E:this;I(O,N),(A=O._zod).deferred??(A.deferred=[]);for(let S of O._zod.deferred)S();return O}return Object.defineProperty(j,"init",{value:I}),Object.defineProperty(j,Symbol.hasInstance,{value:(N)=>{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(P4,_);return P4}var yX,FI,VI,m$,z4,P4;var X4=r(()=>{FI=Object.freeze({status:"aborted"});VI=Symbol("zod_brand");m$=class m$ extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}};z4=class z4 extends Error{constructor(_){super(`Encountered unidirectional transform during encode: ${_}`);this.name="ZodEncodeError"}};(yX=globalThis).__zod_globalConfig??(yX.__zod_globalConfig={});P4=globalThis.__zod_globalConfig});var H={};x$(H,{unwrapMessage:()=>DU,uint8ArrayToHex:()=>pV,uint8ArrayToBase64url:()=>tV,uint8ArrayToBase64:()=>nX,stringifyPrimitive:()=>B,slugify:()=>I2,shallowClone:()=>j2,safeExtend:()=>cV,required:()=>mV,randomString:()=>wV,propertyKeyTypes:()=>EU,promiseAllObject:()=>vV,primitiveTypes:()=>N2,prefixIssues:()=>$$,pick:()=>uV,partial:()=>dV,parsedType:()=>M,optionalKeys:()=>g2,omit:()=>yV,objectClone:()=>kV,numKeys:()=>rV,nullish:()=>C6,normalizeParams:()=>v,mergeDefs:()=>S6,merge:()=>nV,jsonStringifyReplacer:()=>H0,joinValues:()=>V,issue:()=>q0,isPlainObject:()=>w6,isObject:()=>G4,hexToUint8Array:()=>oV,getSizableOrigin:()=>jU,getParsedType:()=>fV,getLengthableOrigin:()=>NU,getEnumValues:()=>UU,getElementAtPath:()=>CV,floatSafeRemainder:()=>U2,finalizeIssue:()=>t_,extend:()=>hV,explicitlyAborted:()=>S2,escapeRegex:()=>z$,esc:()=>BI,defineLazy:()=>D_,createTransparentProxy:()=>xV,cloneDef:()=>qV,clone:()=>h_,cleanRegex:()=>IU,cleanEnum:()=>lV,captureStackTrace:()=>MI,cached:()=>k0,base64urlToUint8Array:()=>iV,base64ToUint8Array:()=>cX,assignProp:()=>v6,assertNotEqual:()=>MV,assertNever:()=>ZV,assertIs:()=>bV,assertEqual:()=>BV,assert:()=>HV,allowsEval:()=>E2,aborted:()=>r6,NUMBER_FORMAT_RANGES:()=>A2,Class:()=>dX,BIGINT_FORMAT_RANGES:()=>O2});function BV(_){return _}function MV(_){return _}function bV(_){}function ZV(_){throw Error("Unexpected value in exhaustive check")}function HV(_){}function UU(_){let $=Object.values(_).filter((I)=>typeof I==="number");return Object.entries(_).filter(([I,U])=>$.indexOf(+I)===-1).map(([I,U])=>U)}function V(_,$="|"){return _.map((D)=>B(D)).join($)}function H0(_,$){if(typeof $==="bigint")return $.toString();return $}function k0(_){return{get value(){{let D=_();return Object.defineProperty(this,"value",{value:D}),D}throw Error("cached value already set")}}}function C6(_){return _===null||_===void 0}function IU(_){let $=_.startsWith("^")?1:0,D=_.endsWith("$")?_.length-1:_.length;return _.slice($,D)}function U2(_,$){let D=_/$,I=Math.round(D),U=Number.EPSILON*Math.max(Math.abs(D),1);if(Math.abs(D-I)<U)return 0;return D-I}function D_(_,$,D){let I=void 0;Object.defineProperty(_,$,{get(){if(I===hX)return;if(I===void 0)I=hX,I=D();return I},set(U){Object.defineProperty(_,$,{value:U})},configurable:!0})}function kV(_){return Object.create(Object.getPrototypeOf(_),Object.getOwnPropertyDescriptors(_))}function v6(_,$,D){Object.defineProperty(_,$,{value:D,writable:!0,enumerable:!0,configurable:!0})}function S6(..._){let $={};for(let D of _){let I=Object.getOwnPropertyDescriptors(D);Object.assign($,I)}return Object.defineProperties({},$)}function qV(_){return S6(_._zod.def)}function CV(_,$){if(!$)return _;return $.reduce((D,I)=>D?.[I],_)}function vV(_){let $=Object.keys(_),D=$.map((I)=>_[I]);return Promise.all(D).then((I)=>{let U={};for(let E=0;E<$.length;E++)U[$[E]]=I[E];return U})}function wV(_=10){let D="";for(let I=0;I<_;I++)D+="abcdefghijklmnopqrstuvwxyz"[Math.floor(Math.random()*26)];return D}function BI(_){return JSON.stringify(_)}function I2(_){return _.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function G4(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)}function w6(_){if(G4(_)===!1)return!1;let $=_.constructor;if($===void 0)return!0;if(typeof $!=="function")return!0;let D=$.prototype;if(G4(D)===!1)return!1;if(Object.prototype.hasOwnProperty.call(D,"isPrototypeOf")===!1)return!1;return!0}function j2(_){if(w6(_))return{..._};if(Array.isArray(_))return[..._];if(_ instanceof Map)return new Map(_);if(_ instanceof Set)return new Set(_);return _}function rV(_){let $=0;for(let D in _)if(Object.prototype.hasOwnProperty.call(_,D))$++;return $}function z$(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function h_(_,$,D){let I=new _._zod.constr($??_._zod.def);if(!$||D?.parent)I._zod.parent=_;return I}function v(_){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 xV(_){let $;return new Proxy({},{get(D,I,U){return $??($=_()),Reflect.get($,I,U)},set(D,I,U,E){return $??($=_()),Reflect.set($,I,U,E)},has(D,I){return $??($=_()),Reflect.has($,I)},deleteProperty(D,I){return $??($=_()),Reflect.deleteProperty($,I)},ownKeys(D){return $??($=_()),Reflect.ownKeys($)},getOwnPropertyDescriptor(D,I){return $??($=_()),Reflect.getOwnPropertyDescriptor($,I)},defineProperty(D,I,U){return $??($=_()),Reflect.defineProperty($,I,U)}})}function B(_){if(typeof _==="bigint")return _.toString()+"n";if(typeof _==="string")return`"${_}"`;return`${_}`}function g2(_){return Object.keys(_).filter(($)=>{return _[$]._zod.optin==="optional"&&_[$]._zod.optout==="optional"})}function uV(_,$){let D=_._zod.def,I=D.checks;if(I&&I.length>0)throw Error(".pick() cannot be used on object schemas containing refinements");let E=S6(_._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 v6(this,"shape",j),j},checks:[]});return h_(_,E)}function yV(_,$){let D=_._zod.def,I=D.checks;if(I&&I.length>0)throw Error(".omit() cannot be used on object schemas containing refinements");let E=S6(_._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 v6(this,"shape",j),j},checks:[]});return h_(_,E)}function hV(_,$){if(!w6($))throw Error("Invalid input to extend: expected a plain object");let D=_._zod.def.checks;if(D&&D.length>0){let E=_._zod.def.shape;for(let j in $)if(Object.getOwnPropertyDescriptor(E,j)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}let U=S6(_._zod.def,{get shape(){let E={..._._zod.def.shape,...$};return v6(this,"shape",E),E}});return h_(_,U)}function cV(_,$){if(!w6($))throw Error("Invalid input to safeExtend: expected a plain object");let D=S6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$};return v6(this,"shape",I),I}});return h_(_,D)}function nV(_,$){if(_._zod.def.checks?.length)throw Error(".merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.");let D=S6(_._zod.def,{get shape(){let I={..._._zod.def.shape,...$._zod.def.shape};return v6(this,"shape",I),I},get catchall(){return $._zod.def.catchall},checks:$._zod.def.checks??[]});return h_(_,D)}function dV(_,$,D){let U=$._zod.def.checks;if(U&&U.length>0)throw Error(".partial() cannot be used on object schemas containing refinements");let j=S6($._zod.def,{get shape(){let N=$._zod.def.shape,A={...N};if(D)for(let O in D){if(!(O in N))throw Error(`Unrecognized key: "${O}"`);if(!D[O])continue;A[O]=_?new _({type:"optional",innerType:N[O]}):N[O]}else for(let O in N)A[O]=_?new _({type:"optional",innerType:N[O]}):N[O];return v6(this,"shape",A),A},checks:[]});return h_($,j)}function mV(_,$,D){let I=S6($._zod.def,{get shape(){let U=$._zod.def.shape,E={...U};if(D)for(let j in D){if(!(j in E))throw Error(`Unrecognized key: "${j}"`);if(!D[j])continue;E[j]=new _({type:"nonoptional",innerType:U[j]})}else for(let j in U)E[j]=new _({type:"nonoptional",innerType:U[j]});return v6(this,"shape",E),E}});return h_($,I)}function r6(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue!==!0)return!0;return!1}function S2(_,$=0){if(_.aborted===!0)return!0;for(let D=$;D<_.issues.length;D++)if(_.issues[D]?.continue===!1)return!0;return!1}function $$(_,$){return $.map((D)=>{var I;return(I=D).path??(I.path=[]),D.path.unshift(_),D})}function DU(_){return typeof _==="string"?_:_?.message}function t_(_,$,D){let I=_.message?_.message:DU(_.inst?._zod.def?.error?.(_))??DU($?.error?.(_))??DU(D.customError?.(_))??DU(D.localeError?.(_))??"Invalid input",{inst:U,continue:E,input:j,...N}=_;if(N.path??(N.path=[]),N.message=I,$?.reportInput)N.input=j;return N}function jU(_){if(_ instanceof Set)return"set";if(_ instanceof Map)return"map";if(_ instanceof File)return"file";return"unknown"}function NU(_){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 q0(..._){let[$,D,I]=_;if(typeof $==="string")return{message:$,code:"custom",input:D,inst:I};return{...$}}function lV(_){return Object.entries(_).filter(([$,D])=>{return Number.isNaN(Number.parseInt($,10))}).map(($)=>$[1])}function cX(_){let $=atob(_),D=new Uint8Array($.length);for(let I=0;I<$.length;I++)D[I]=$.charCodeAt(I);return D}function nX(_){let $="";for(let D=0;D<_.length;D++)$+=String.fromCharCode(_[D]);return btoa($)}function iV(_){let $=_.replace(/-/g,"+").replace(/_/g,"/"),D="=".repeat((4-$.length%4)%4);return cX($+D)}function tV(_){return nX(_).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function oV(_){let $=_.replace(/^0x/,"");if($.length%2!==0)throw Error("Invalid hex string length");let D=new Uint8Array($.length/2);for(let I=0;I<$.length;I+=2)D[I/2]=Number.parseInt($.slice(I,I+2),16);return D}function pV(_){return Array.from(_).map(($)=>$.toString(16).padStart(2,"0")).join("")}class dX{constructor(..._){}}var hX,MI,E2,fV=(_)=>{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: ${$}`)}},EU,N2,A2,O2;var n=r(()=>{X4();hX=Symbol("evaluating");MI="captureStackTrace"in Error?Error.captureStackTrace:(..._)=>{};E2=k0(()=>{if(P4.jitless)return!1;if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{return new Function(""),!0}catch(_){return!1}});EU=new Set(["string","number","symbol"]),N2=new Set(["string","number","bigint","boolean","symbol","undefined"]);A2={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]},O2={int64:[BigInt("-9223372036854775808"),BigInt("9223372036854775807")],uint64:[BigInt(0),BigInt("18446744073709551615")]}});function C0(_,$=(D)=>D.message){let D={},I=[];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 I.push($(U));return{formErrors:I,fieldErrors:D}}function v0(_,$=(D)=>D.message){let D={_errors:[]},I=(U,E=[])=>{for(let j of U.issues)if(j.code==="invalid_union"&&j.errors.length)j.errors.map((N)=>I({issues:N},[...E,...j.path]));else if(j.code==="invalid_key")I({issues:j.issues},[...E,...j.path]);else if(j.code==="invalid_element")I({issues:j.issues},[...E,...j.path]);else{let N=[...E,...j.path];if(N.length===0)D._errors.push($(j));else{let A=D,O=0;while(O<N.length){let S=N[O];if(O!==N.length-1)A[S]=A[S]||{_errors:[]};else A[S]=A[S]||{_errors:[]},A[S]._errors.push($(j));A=A[S],O++}}}};return I(_),D}function bI(_,$=(D)=>D.message){let D={errors:[]},I=(U,E=[])=>{var j,N;for(let A of U.issues)if(A.code==="invalid_union"&&A.errors.length)A.errors.map((O)=>I({issues:O},[...E,...A.path]));else if(A.code==="invalid_key")I({issues:A.issues},[...E,...A.path]);else if(A.code==="invalid_element")I({issues:A.issues},[...E,...A.path]);else{let O=[...E,...A.path];if(O.length===0){D.errors.push($(A));continue}let S=D,L=0;while(L<O.length){let P=O[L],z=L===O.length-1;if(typeof P==="string")S.properties??(S.properties={}),(j=S.properties)[P]??(j[P]={errors:[]}),S=S.properties[P];else S.items??(S.items=[]),(N=S.items)[P]??(N[P]={errors:[]}),S=S.items[P];if(z)S.errors.push($(A));L++}}};return I(_),D}function lX(_){let $=[],D=_.map((I)=>typeof I==="object"?I.key:I);for(let I of D)if(typeof I==="number")$.push(`[${I}]`);else if(typeof I==="symbol")$.push(`[${JSON.stringify(String(I))}]`);else if(/[^\w$]/.test(I))$.push(`[${JSON.stringify(I)}]`);else{if($.length)$.push(".");$.push(I)}return $.join("")}function ZI(_){let $=[],D=[..._.issues].sort((I,U)=>(I.path??[]).length-(U.path??[]).length);for(let I of D)if($.push(`\u2716 ${I.message}`),I.path?.length)$.push(` \u2192 at ${lX(I.path)}`);return $.join(` +`)}var mX=(_,$)=>{_.name="$ZodError",Object.defineProperty(_,"_zod",{value:_._zod,enumerable:!1}),Object.defineProperty(_,"issues",{value:$,enumerable:!1}),_.message=JSON.stringify($,H0,2),Object.defineProperty(_,"toString",{value:()=>_.message,enumerable:!1})},gU,D$;var L2=r(()=>{X4();n();gU=K("$ZodError",mX),D$=K("$ZodError",mX,{Parent:Error})});var w0=(_)=>($,D,I,U)=>{let E=I?{...I,async:!1}:{async:!1},j=$._zod.run({value:D,issues:[]},E);if(j instanceof Promise)throw new m$;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((A)=>t_(A,E,Z_())));throw MI(N,U?.callee),N}return j.value},HI,r0=(_)=>async($,D,I,U)=>{let E=I?{...I,async:!0}:{async:!0},j=$._zod.run({value:D,issues:[]},E);if(j instanceof Promise)j=await j;if(j.issues.length){let N=new(U?.Err??_)(j.issues.map((A)=>t_(A,E,Z_())));throw MI(N,U?.callee),N}return j.value},kI,f0=(_)=>($,D,I)=>{let U=I?{...I,async:!1}:{async:!1},E=$._zod.run({value:D,issues:[]},U);if(E instanceof Promise)throw new m$;return E.issues.length?{success:!1,error:new(_??gU)(E.issues.map((j)=>t_(j,U,Z_())))}:{success:!0,data:E.value}},J2,x0=(_)=>async($,D,I)=>{let U=I?{...I,async:!0}:{async:!0},E=$._zod.run({value:D,issues:[]},U);if(E instanceof Promise)E=await E;return E.issues.length?{success:!1,error:new _(E.issues.map((j)=>t_(j,U,Z_())))}:{success:!0,data:E.value}},W2,qI=(_)=>($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return w0(_)($,D,U)},aV,CI=(_)=>($,D,I)=>{return w0(_)($,D,I)},sV,vI=(_)=>async($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return r0(_)($,D,U)},_B,wI=(_)=>async($,D,I)=>{return r0(_)($,D,I)},$B,rI=(_)=>($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return f0(_)($,D,U)},DB,fI=(_)=>($,D,I)=>{return f0(_)($,D,I)},UB,xI=(_)=>async($,D,I)=>{let U=I?{...I,direction:"backward"}:{direction:"backward"};return x0(_)($,D,U)},IB,uI=(_)=>async($,D,I)=>{return x0(_)($,D,I)},EB;var P2=r(()=>{X4();L2();n();HI=w0(D$),kI=r0(D$),J2=f0(D$),W2=x0(D$),aV=qI(D$),sV=CI(D$),_B=vI(D$),$B=wI(D$),DB=rI(D$),UB=fI(D$),IB=xI(D$),EB=uI(D$)});var U$={};x$(U$,{xid:()=>R2,uuid7:()=>AB,uuid6:()=>gB,uuid4:()=>NB,uuid:()=>R4,uppercase:()=>d2,unicodeEmail:()=>iX,undefined:()=>c2,ulid:()=>G2,time:()=>w2,string:()=>f2,sha512_hex:()=>HB,sha512_base64url:()=>qB,sha512_base64:()=>kB,sha384_hex:()=>MB,sha384_base64url:()=>ZB,sha384_base64:()=>bB,sha256_hex:()=>FB,sha256_base64url:()=>BB,sha256_base64:()=>VB,sha1_hex:()=>QB,sha1_base64url:()=>TB,sha1_base64:()=>KB,rfc5322Email:()=>SB,number:()=>AU,null:()=>h2,nanoid:()=>Q2,md5_hex:()=>GB,md5_base64url:()=>YB,md5_base64:()=>RB,mac:()=>b2,lowercase:()=>n2,ksuid:()=>Y2,ipv6:()=>M2,ipv4:()=>B2,integer:()=>u2,idnEmail:()=>LB,httpProtocol:()=>q2,html5Email:()=>OB,hostname:()=>PB,hex:()=>XB,guid:()=>T2,extendedDuration:()=>jB,emoji:()=>V2,email:()=>F2,e164:()=>C2,duration:()=>K2,domain:()=>zB,datetime:()=>r2,date:()=>v2,cuid2:()=>X2,cuid:()=>z2,cidrv6:()=>H2,cidrv4:()=>Z2,browserEmail:()=>JB,boolean:()=>y2,bigint:()=>x2,base64url:()=>yI,base64:()=>k2});function V2(){return new RegExp(WB,"u")}function oX(_){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 w2(_){return new RegExp(`^${oX(_)}$`)}function r2(_){let $=oX({precision:_.precision}),D=["Z"];if(_.local)D.push("");if(_.offset)D.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");let I=`${$}(?:${D.join("|")})`;return new RegExp(`^${tX}T(?:${I})$`)}function OU(_,$){return new RegExp(`^[A-Za-z0-9+/]{${_}}${$}$`)}function SU(_){return new RegExp(`^[A-Za-z0-9_-]{${_}}$`)}var z2,X2,G2,R2,Y2,Q2,K2,jB,T2,R4=(_)=>{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})$`)},NB,gB,AB,F2,OB,SB,iX,LB,JB,WB="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",B2,M2,b2=(_)=>{let $=z$(_??":");return new RegExp(`^(?:[0-9A-F]{2}${$}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${$}){5}[0-9a-f]{2}$`)},Z2,H2,k2,yI,PB,zB,q2,C2,tX="(?:(?:\\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])))",v2,f2=(_)=>{let $=_?`[\\s\\S]{${_?.minimum??0},${_?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${$}$`)},x2,u2,AU,y2,h2,c2,n2,d2,XB,GB,RB,YB,QB,KB,TB,FB,VB,BB,MB,bB,ZB,HB,kB,qB;var hI=r(()=>{n();z2=/^[cC][0-9a-z]{6,}$/,X2=/^[0-9a-z]+$/,G2=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,R2=/^[0-9a-vA-V]{20}$/,Y2=/^[A-Za-z0-9]{27}$/,Q2=/^[a-zA-Z0-9_-]{21}$/,K2=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,jB=/^[-+]?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)?)??$/,T2=/^([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})$/,NB=R4(4),gB=R4(6),AB=R4(7),F2=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,OB=/^[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])?)*$/,SB=/^(([^<>()\[\]\\.,;:\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,}))$/,iX=/^[^\s@"]{1,64}@[^\s@]{1,255}$/u,LB=iX,JB=/^[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])?)*$/;B2=/^(?:(?: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])$/,M2=/^(([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}|:))$/,Z2=/^((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])$/,H2=/^(([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])$/,k2=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,yI=/^[A-Za-z0-9_-]*$/,PB=/^(?=.{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])?)*\.?$/,zB=/^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/,q2=/^https?$/,C2=/^\+[1-9]\d{6,14}$/,v2=new RegExp(`^${tX}$`);x2=/^-?\d+n?$/,u2=/^-?\d+$/,AU=/^-?\d+(?:\.\d+)?$/,y2=/^(?:true|false)$/i,h2=/^null$/i,c2=/^undefined$/i,n2=/^[^A-Z]*$/,d2=/^[^a-z]*$/,XB=/^[0-9a-fA-F]*$/;GB=/^[0-9a-fA-F]{32}$/,RB=OU(22,"=="),YB=SU(22),QB=/^[0-9a-fA-F]{40}$/,KB=OU(27,"="),TB=SU(27),FB=/^[0-9a-fA-F]{64}$/,VB=OU(43,"="),BB=SU(43),MB=/^[0-9a-fA-F]{96}$/,bB=OU(64,""),ZB=SU(64),HB=/^[0-9a-fA-F]{128}$/,kB=OU(86,"=="),qB=SU(86)});function pX(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues))}var Q_,eX,cI,nI,m2,l2,i2,t2,o2,p2,e2,a2,s2,u0,_A,$A,DA,UA,IA,EA,jA,NA,gA;var dI=r(()=>{X4();hI();n();Q_=K("$ZodCheck",(_,$)=>{var D;_._zod??(_._zod={}),_._zod.def=$,(D=_._zod).onattach??(D.onattach=[])}),eX={number:"number",bigint:"bigint",object:"date"},cI=K("$ZodCheckLessThan",(_,$)=>{Q_.init(_,$);let D=eX[typeof $.value];_._zod.onattach.push((I)=>{let U=I._zod.bag,E=($.inclusive?U.maximum:U.exclusiveMaximum)??Number.POSITIVE_INFINITY;if($.value<E)if($.inclusive)U.maximum=$.value;else U.exclusiveMaximum=$.value}),_._zod.check=(I)=>{if($.inclusive?I.value<=$.value:I.value<$.value)return;I.issues.push({origin:D,code:"too_big",maximum:typeof $.value==="object"?$.value.getTime():$.value,input:I.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),nI=K("$ZodCheckGreaterThan",(_,$)=>{Q_.init(_,$);let D=eX[typeof $.value];_._zod.onattach.push((I)=>{let U=I._zod.bag,E=($.inclusive?U.minimum:U.exclusiveMinimum)??Number.NEGATIVE_INFINITY;if($.value>E)if($.inclusive)U.minimum=$.value;else U.exclusiveMinimum=$.value}),_._zod.check=(I)=>{if($.inclusive?I.value>=$.value:I.value>$.value)return;I.issues.push({origin:D,code:"too_small",minimum:typeof $.value==="object"?$.value.getTime():$.value,input:I.value,inclusive:$.inclusive,inst:_,continue:!$.abort})}}),m2=K("$ZodCheckMultipleOf",(_,$)=>{Q_.init(_,$),_._zod.onattach.push((D)=>{var I;(I=D._zod.bag).multipleOf??(I.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):U2(D.value,$.value)===0)return;D.issues.push({origin:typeof D.value,code:"not_multiple_of",divisor:$.value,input:D.value,inst:_,continue:!$.abort})}}),l2=K("$ZodCheckNumberFormat",(_,$)=>{Q_.init(_,$),$.format=$.format||"float64";let D=$.format?.includes("int"),I=D?"int":"number",[U,E]=A2[$.format];_._zod.onattach.push((j)=>{let N=j._zod.bag;if(N.format=$.format,N.minimum=U,N.maximum=E,D)N.pattern=u2}),_._zod.check=(j)=>{let N=j.value;if(D){if(!Number.isInteger(N)){j.issues.push({expected:I,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:I,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:I,inclusive:!0,continue:!$.abort});return}}if(N<U)j.issues.push({origin:"number",input:N,code:"too_small",minimum:U,inclusive:!0,inst:_,continue:!$.abort});if(N>E)j.issues.push({origin:"number",input:N,code:"too_big",maximum:E,inclusive:!0,inst:_,continue:!$.abort})}}),i2=K("$ZodCheckBigIntFormat",(_,$)=>{Q_.init(_,$);let[D,I]=O2[$.format];_._zod.onattach.push((U)=>{let E=U._zod.bag;E.format=$.format,E.minimum=D,E.maximum=I}),_._zod.check=(U)=>{let E=U.value;if(E<D)U.issues.push({origin:"bigint",input:E,code:"too_small",minimum:D,inclusive:!0,inst:_,continue:!$.abort});if(E>I)U.issues.push({origin:"bigint",input:E,code:"too_big",maximum:I,inclusive:!0,inst:_,continue:!$.abort})}}),t2=K("$ZodCheckMaxSize",(_,$)=>{var D;Q_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum<U)I._zod.bag.maximum=$.maximum}),_._zod.check=(I)=>{let U=I.value;if(U.size<=$.maximum)return;I.issues.push({origin:jU(U),code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),o2=K("$ZodCheckMinSize",(_,$)=>{var D;Q_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)I._zod.bag.minimum=$.minimum}),_._zod.check=(I)=>{let U=I.value;if(U.size>=$.minimum)return;I.issues.push({origin:jU(U),code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),p2=K("$ZodCheckSizeEquals",(_,$)=>{var D;Q_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.size!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.minimum=$.size,U.maximum=$.size,U.size=$.size}),_._zod.check=(I)=>{let U=I.value,E=U.size;if(E===$.size)return;let j=E>$.size;I.issues.push({origin:jU(U),...j?{code:"too_big",maximum:$.size}:{code:"too_small",minimum:$.size},inclusive:!0,exact:!0,input:I.value,inst:_,continue:!$.abort})}}),e2=K("$ZodCheckMaxLength",(_,$)=>{var D;Q_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.maximum??Number.POSITIVE_INFINITY;if($.maximum<U)I._zod.bag.maximum=$.maximum}),_._zod.check=(I)=>{let U=I.value;if(U.length<=$.maximum)return;let j=NU(U);I.issues.push({origin:j,code:"too_big",maximum:$.maximum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),a2=K("$ZodCheckMinLength",(_,$)=>{var D;Q_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag.minimum??Number.NEGATIVE_INFINITY;if($.minimum>U)I._zod.bag.minimum=$.minimum}),_._zod.check=(I)=>{let U=I.value;if(U.length>=$.minimum)return;let j=NU(U);I.issues.push({origin:j,code:"too_small",minimum:$.minimum,inclusive:!0,input:U,inst:_,continue:!$.abort})}}),s2=K("$ZodCheckLengthEquals",(_,$)=>{var D;Q_.init(_,$),(D=_._zod.def).when??(D.when=(I)=>{let U=I.value;return!C6(U)&&U.length!==void 0}),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.minimum=$.length,U.maximum=$.length,U.length=$.length}),_._zod.check=(I)=>{let U=I.value,E=U.length;if(E===$.length)return;let j=NU(U),N=E>$.length;I.issues.push({origin:j,...N?{code:"too_big",maximum:$.length}:{code:"too_small",minimum:$.length},inclusive:!0,exact:!0,input:I.value,inst:_,continue:!$.abort})}}),u0=K("$ZodCheckStringFormat",(_,$)=>{var D,I;if(Q_.init(_,$),_._zod.onattach.push((U)=>{let E=U._zod.bag;if(E.format=$.format,$.pattern)E.patterns??(E.patterns=new Set),E.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(I=_._zod).check??(I.check=()=>{})}),_A=K("$ZodCheckRegex",(_,$)=>{u0.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})}}),$A=K("$ZodCheckLowerCase",(_,$)=>{$.pattern??($.pattern=n2),u0.init(_,$)}),DA=K("$ZodCheckUpperCase",(_,$)=>{$.pattern??($.pattern=d2),u0.init(_,$)}),UA=K("$ZodCheckIncludes",(_,$)=>{Q_.init(_,$);let D=z$($.includes),I=new RegExp(typeof $.position==="number"?`^.{${$.position}}${D}`:D);$.pattern=I,_._zod.onattach.push((U)=>{let E=U._zod.bag;E.patterns??(E.patterns=new Set),E.patterns.add(I)}),_._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})}}),IA=K("$ZodCheckStartsWith",(_,$)=>{Q_.init(_,$);let D=new RegExp(`^${z$($.prefix)}.*`);$.pattern??($.pattern=D),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(I)=>{if(I.value.startsWith($.prefix))return;I.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:$.prefix,input:I.value,inst:_,continue:!$.abort})}}),EA=K("$ZodCheckEndsWith",(_,$)=>{Q_.init(_,$);let D=new RegExp(`.*${z$($.suffix)}$`);$.pattern??($.pattern=D),_._zod.onattach.push((I)=>{let U=I._zod.bag;U.patterns??(U.patterns=new Set),U.patterns.add(D)}),_._zod.check=(I)=>{if(I.value.endsWith($.suffix))return;I.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:$.suffix,input:I.value,inst:_,continue:!$.abort})}});jA=K("$ZodCheckProperty",(_,$)=>{Q_.init(_,$),_._zod.check=(D)=>{let I=$.schema._zod.run({value:D.value[$.property],issues:[]},{});if(I instanceof Promise)return I.then((U)=>pX(U,D,$.property));pX(I,D,$.property);return}}),NA=K("$ZodCheckMimeType",(_,$)=>{Q_.init(_,$);let D=new Set($.mime);_._zod.onattach.push((I)=>{I._zod.bag.mime=$.mime}),_._zod.check=(I)=>{if(D.has(I.value.type))return;I.issues.push({code:"invalid_value",values:$.mime,input:I.value.type,inst:_,continue:!$.abort})}}),gA=K("$ZodCheckOverwrite",(_,$)=>{Q_.init(_,$),_._zod.check=(D)=>{D.value=$.tx(D.value)}})});class mI{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((E)=>E),I=Math.min(...D.map((E)=>E.length-E.trimStart().length)),U=D.map((E)=>E.slice(I)).map((E)=>" ".repeat(this.indent*2)+E);for(let E of U)this.content.push(E)}compile(){let _=Function,$=this?.args,I=[...(this?.content??[""]).map((U)=>` ${U}`)];return new _(...$,I.join(` -`))}}var AA;var OA=r(()=>{AA={major:4,minor:4,patch:3}});function qA(_){if(_==="")return!0;if(/\s/.test(_))return!1;if(_.length%4!==0)return!1;try{return atob(_),!0}catch{return!1}}function J5(_){if(!yI.test(_))return!1;let $=_.replace(/[-_]/g,(I)=>I==="-"?"+":"/"),D=$.padEnd(Math.ceil($.length/4)*4,"=");return qA(D)}function W5(_,$=null){try{let D=_.split(".");if(D.length!==3)return!1;let[I]=D;if(!I)return!1;let U=JSON.parse(atob(I));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 sX(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues));$.value[D]=_.value}function oI(_,$,D,I,U,E){let j=D in I;if(_.issues.length){if(U&&E&&!j)return;$.issues.push(...$$(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 P5(_){let $=Object.keys(_.shape);for(let I of $)if(!_.shape?.[I]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${I}": expected a Zod schema`);let D=g2(_.shape);return{..._,keys:$,keySet:new Set($),numKeys:$.length,optionalKeys:new Set(D)}}function z5(_,$,D,I,U,E){let j=[],N=U.keySet,A=U.catchall._zod,O=A.def.type,L=A.optin==="optional",J=A.optout==="optional";for(let P in $){if(P==="__proto__")continue;if(N.has(P))continue;if(O==="never"){j.push(P);continue}let z=A.run({value:$[P],issues:[]},I);if(z instanceof Promise)_.push(z.then((S)=>oI(S,D,P,$,L,J)));else oI(z,D,P,$,L,J)}if(j.length)D.issues.push({code:"unrecognized_keys",keys:j,input:$,inst:E});if(!_.length)return D;return Promise.all(_).then(()=>{return D})}function _5(_,$,D,I){for(let E of _)if(E.issues.length===0)return $.value=E.value,$;let U=_.filter((E)=>!r6(E));if(U.length===1)return $.value=U[0].value,U[0];return $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:_.map((E)=>E.issues.map((j)=>o_(j,I,Z_())))}),$}function $5(_,$,D,I){let U=_.filter((E)=>E.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((E)=>E.issues.map((j)=>o_(j,I,Z_())))});else $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:[],inclusive:!1});return $}function LA(_,$){if(_===$)return{valid:!0,data:_};if(_ instanceof Date&&$ instanceof Date&&+_===+$)return{valid:!0,data:_};if(w6(_)&&w6($)){let D=Object.keys($),I=Object.keys(_).filter((E)=>D.indexOf(E)!==-1),U={..._,...$};for(let E of I){let j=LA(_[E],$[E]);if(!j.valid)return{valid:!1,mergeErrorPath:[E,...j.mergeErrorPath]};U[E]=j.data}return{valid:!0,data:U}}if(Array.isArray(_)&&Array.isArray($)){if(_.length!==$.length)return{valid:!1,mergeErrorPath:[]};let D=[];for(let I=0;I<_.length;I++){let U=_[I],E=$[I],j=LA(U,E);if(!j.valid)return{valid:!1,mergeErrorPath:[I,...j.mergeErrorPath]};D.push(j.data)}return{valid:!0,data:D}}return{valid:!1,mergeErrorPath:[]}}function D5(_,$,D){let I=new Map,U;for(let N of $.issues)if(N.code==="unrecognized_keys"){U??(U=N);for(let A of N.keys){if(!I.has(A))I.set(A,{});I.get(A).l=!0}}else _.issues.push(N);for(let N of D.issues)if(N.code==="unrecognized_keys")for(let A of N.keys){if(!I.has(A))I.set(A,{});I.get(A).r=!0}else _.issues.push(N);let E=[...I].filter(([,N])=>N.l&&N.r).map(([N])=>N);if(E.length&&U)_.issues.push({...U,keys:E});if(r6(_))return _;let j=LA($.value,D.value);if(!j.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(j.mergeErrorPath)}`);return _.value=j.data,_}function U5(_,$){for(let D=_.length-1;D>=0;D--)if(_[D]._zod[$]!=="optional")return D+1;return 0}function I5(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues));$.value[D]=_.value}function E5(_,$,D,I,U){for(let E=0;E<D.length;E++){let j=_[E],N=E<I.length;if(j.issues.length){if(!N&&E>=U){$.value.length=E;break}$.issues.push(...$$(E,j.issues))}$.value[E]=j.value}for(let E=$.value.length-1;E>=I.length;E--)if(D[E]._zod.optout==="optional"&&$.value[E]===void 0)$.value.length=E;else break;return $}function j5(_,$,D,I,U,E,j){if(_.issues.length)if(EU.has(typeof I))D.issues.push(...$$(I,_.issues));else D.issues.push({code:"invalid_key",origin:"map",input:U,inst:E,issues:_.issues.map((N)=>o_(N,j,Z_()))});if($.issues.length)if(EU.has(typeof I))D.issues.push(...$$(I,$.issues));else D.issues.push({origin:"map",code:"invalid_element",input:U,inst:E,key:I,issues:$.issues.map((N)=>o_(N,j,Z_()))});D.value.set(_.value,$.value)}function N5(_,$){if(_.issues.length)$.issues.push(..._.issues);$.value.add(_.value)}function g5(_,$){if($===void 0&&(_.issues.length||_.fallback))return{issues:[],value:void 0};return _}function A5(_,$){if(_.value===void 0)_.value=$.defaultValue;return _}function O5(_,$){if(!_.issues.length&&_.value===void 0)_.issues.push({code:"invalid_type",expected:"nonoptional",input:_.value,inst:$});return _}function lI(_,$,D){if(_.issues.length)return _.aborted=!0,_;return $._zod.run({value:_.value,issues:_.issues,fallback:_.fallback},D)}function iI(_,$,D){if(_.issues.length)return _.aborted=!0,_;if((D.direction||"forward")==="forward"){let U=$.transform(_.value,_);if(U instanceof Promise)return U.then((E)=>tI(_,E,$.out,D));return tI(_,U,$.out,D)}else{let U=$.reverseTransform(_.value,_);if(U instanceof Promise)return U.then((E)=>tI(_,E,$.in,D));return tI(_,U,$.in,D)}}function tI(_,$,D,I){if(_.issues.length)return _.aborted=!0,_;return D._zod.run({value:$,issues:_.issues},I)}function L5(_){return _.value=Object.freeze(_.value),_}function S5(_,$,D,I){if(!_){let U={code:"custom",input:D,inst:I,path:[...I._zod.def.path??[]],continue:!I._zod.def.abort};if(I._zod.def.params)U.params=I._zod.def.params;$.issues.push(q0(U))}}var t,Y4,R_,SA,JA,WA,PA,zA,XA,GA,RA,YA,QA,KA,TA,FA,VA,BA,MA,bA,ZA,HA,kA,CA,vA,wA,rA,fA,pI,xA,SU,eI,uA,yA,hA,cA,nA,dA,mA,lA,iA,tA,X5,oA,JU,pA,eA,aA,aI,sA,_O,$O,DO,UO,IO,EO,sI,jO,NO,gO,AO,OO,LO,SO,JO,_E,WU,WO,PO,zO,XO,GO,RO,YO;var QO=r(()=>{dI();X4();P2();hI();n();OA();n();t=Q("$ZodType",(_,$)=>{var D;_??(_={}),_._zod.def=$,_._zod.bag=_._zod.bag||{},_._zod.version=AA;let I=[..._._zod.def.checks??[]];if(_._zod.traits.has("$ZodCheck"))I.unshift(_);for(let U of I)for(let E of U._zod.onattach)E(_);if(I.length===0)(D=_._zod).deferred??(D.deferred=[]),_._zod.deferred?.push(()=>{_._zod.run=_._zod.parse});else{let U=(j,N,A)=>{let O=r6(j),L;for(let J of N){if(J._zod.def.when){if(L2(j))continue;if(!J._zod.def.when(j))continue}else if(O)continue;let P=j.issues.length,z=J._zod.check(j);if(z instanceof Promise&&A?.async===!1)throw new m$;if(L||z instanceof Promise)L=(L??Promise.resolve()).then(async()=>{if(await z,j.issues.length===P)return;if(!O)O=r6(j,P)});else{if(j.issues.length===P)continue;if(!O)O=r6(j,P)}}if(L)return L.then(()=>{return j});return j},E=(j,N,A)=>{if(r6(j))return j.aborted=!0,j;let O=U(N,I,A);if(O instanceof Promise){if(A.async===!1)throw new m$;return O.then((L)=>_._zod.parse(L,A))}return _._zod.parse(O,A)};_._zod.run=(j,N)=>{if(N.skipChecks)return _._zod.parse(j,N);if(N.direction==="backward"){let O=_._zod.parse({value:j.value,issues:[]},{...N,skipChecks:!0});if(O instanceof Promise)return O.then((L)=>{return E(L,j,N)});return E(O,j,N)}let A=_._zod.parse(j,N);if(A instanceof Promise){if(N.async===!1)throw new m$;return A.then((O)=>U(O,I,N))}return U(A,I,N)}}$_(_,"~standard",()=>({validate:(U)=>{try{let E=J2(_,U);return E.success?{value:E.data}:{issues:E.error?.issues}}catch(E){return W2(_,U).then((j)=>j.success?{value:j.data}:{issues:j.error?.issues})}},vendor:"zod",version:1}))}),Y4=Q("$ZodString",(_,$)=>{t.init(_,$),_._zod.pattern=[..._?._zod.bag?.patterns??[]].pop()??f2(_._zod.bag),_._zod.parse=(D,I)=>{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}}),R_=Q("$ZodStringFormat",(_,$)=>{u0.init(_,$),Y4.init(_,$)}),SA=Q("$ZodGUID",(_,$)=>{$.pattern??($.pattern=T2),R_.init(_,$)}),JA=Q("$ZodUUID",(_,$)=>{if($.version){let I={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[$.version];if(I===void 0)throw Error(`Invalid UUID version: "${$.version}"`);$.pattern??($.pattern=R4(I))}else $.pattern??($.pattern=R4());R_.init(_,$)}),WA=Q("$ZodEmail",(_,$)=>{$.pattern??($.pattern=F2),R_.init(_,$)}),PA=Q("$ZodURL",(_,$)=>{R_.init(_,$),_._zod.check=(D)=>{try{let I=D.value.trim();if(!$.normalize&&$.protocol?.source===q2.source){if(!/^https?:\/\//i.test(I)){D.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:D.value,inst:_,continue:!$.abort});return}}let U=new URL(I);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=I;return}catch(I){D.issues.push({code:"invalid_format",format:"url",input:D.value,inst:_,continue:!$.abort})}}}),zA=Q("$ZodEmoji",(_,$)=>{$.pattern??($.pattern=V2()),R_.init(_,$)}),XA=Q("$ZodNanoID",(_,$)=>{$.pattern??($.pattern=Q2),R_.init(_,$)}),GA=Q("$ZodCUID",(_,$)=>{$.pattern??($.pattern=z2),R_.init(_,$)}),RA=Q("$ZodCUID2",(_,$)=>{$.pattern??($.pattern=X2),R_.init(_,$)}),YA=Q("$ZodULID",(_,$)=>{$.pattern??($.pattern=G2),R_.init(_,$)}),QA=Q("$ZodXID",(_,$)=>{$.pattern??($.pattern=R2),R_.init(_,$)}),KA=Q("$ZodKSUID",(_,$)=>{$.pattern??($.pattern=Y2),R_.init(_,$)}),TA=Q("$ZodISODateTime",(_,$)=>{$.pattern??($.pattern=r2($)),R_.init(_,$)}),FA=Q("$ZodISODate",(_,$)=>{$.pattern??($.pattern=v2),R_.init(_,$)}),VA=Q("$ZodISOTime",(_,$)=>{$.pattern??($.pattern=w2($)),R_.init(_,$)}),BA=Q("$ZodISODuration",(_,$)=>{$.pattern??($.pattern=K2),R_.init(_,$)}),MA=Q("$ZodIPv4",(_,$)=>{$.pattern??($.pattern=B2),R_.init(_,$),_._zod.bag.format="ipv4"}),bA=Q("$ZodIPv6",(_,$)=>{$.pattern??($.pattern=M2),R_.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})}}}),ZA=Q("$ZodMAC",(_,$)=>{$.pattern??($.pattern=b2($.delimiter)),R_.init(_,$),_._zod.bag.format="mac"}),HA=Q("$ZodCIDRv4",(_,$)=>{$.pattern??($.pattern=Z2),R_.init(_,$)}),kA=Q("$ZodCIDRv6",(_,$)=>{$.pattern??($.pattern=H2),R_.init(_,$),_._zod.check=(D)=>{let I=D.value.split("/");try{if(I.length!==2)throw Error();let[U,E]=I;if(!E)throw Error();let j=Number(E);if(`${j}`!==E)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})}}});CA=Q("$ZodBase64",(_,$)=>{$.pattern??($.pattern=k2),R_.init(_,$),_._zod.bag.contentEncoding="base64",_._zod.check=(D)=>{if(qA(D.value))return;D.issues.push({code:"invalid_format",format:"base64",input:D.value,inst:_,continue:!$.abort})}});vA=Q("$ZodBase64URL",(_,$)=>{$.pattern??($.pattern=yI),R_.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})}}),wA=Q("$ZodE164",(_,$)=>{$.pattern??($.pattern=C2),R_.init(_,$)});rA=Q("$ZodJWT",(_,$)=>{R_.init(_,$),_._zod.check=(D)=>{if(W5(D.value,$.alg))return;D.issues.push({code:"invalid_format",format:"jwt",input:D.value,inst:_,continue:!$.abort})}}),fA=Q("$ZodCustomStringFormat",(_,$)=>{R_.init(_,$),_._zod.check=(D)=>{if($.fn(D.value))return;D.issues.push({code:"invalid_format",format:$.format,input:D.value,inst:_,continue:!$.abort})}}),pI=Q("$ZodNumber",(_,$)=>{t.init(_,$),_._zod.pattern=_._zod.bag.pattern??AU,_._zod.parse=(D,I)=>{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 E=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:_,...E?{received:E}:{}}),D}}),xA=Q("$ZodNumberFormat",(_,$)=>{l2.init(_,$),pI.init(_,$)}),SU=Q("$ZodBoolean",(_,$)=>{t.init(_,$),_._zod.pattern=y2,_._zod.parse=(D,I)=>{if($.coerce)try{D.value=Boolean(D.value)}catch(E){}let U=D.value;if(typeof U==="boolean")return D;return D.issues.push({expected:"boolean",code:"invalid_type",input:U,inst:_}),D}}),eI=Q("$ZodBigInt",(_,$)=>{t.init(_,$),_._zod.pattern=x2,_._zod.parse=(D,I)=>{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}}),uA=Q("$ZodBigIntFormat",(_,$)=>{i2.init(_,$),eI.init(_,$)}),yA=Q("$ZodSymbol",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U==="symbol")return D;return D.issues.push({expected:"symbol",code:"invalid_type",input:U,inst:_}),D}}),hA=Q("$ZodUndefined",(_,$)=>{t.init(_,$),_._zod.pattern=c2,_._zod.values=new Set([void 0]),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"undefined",code:"invalid_type",input:U,inst:_}),D}}),cA=Q("$ZodNull",(_,$)=>{t.init(_,$),_._zod.pattern=h2,_._zod.values=new Set([null]),_._zod.parse=(D,I)=>{let U=D.value;if(U===null)return D;return D.issues.push({expected:"null",code:"invalid_type",input:U,inst:_}),D}}),nA=Q("$ZodAny",(_,$)=>{t.init(_,$),_._zod.parse=(D)=>D}),dA=Q("$ZodUnknown",(_,$)=>{t.init(_,$),_._zod.parse=(D)=>D}),mA=Q("$ZodNever",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{return D.issues.push({expected:"never",code:"invalid_type",input:D.value,inst:_}),D}}),lA=Q("$ZodVoid",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"void",code:"invalid_type",input:U,inst:_}),D}}),iA=Q("$ZodDate",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{if($.coerce)try{D.value=new Date(D.value)}catch(N){}let U=D.value,E=U instanceof Date;if(E&&!Number.isNaN(U.getTime()))return D;return D.issues.push({expected:"date",code:"invalid_type",input:U,...E?{received:"Invalid Date"}:{},inst:_}),D}});tA=Q("$ZodArray",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{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 E=[];for(let j=0;j<U.length;j++){let N=U[j],A=$.element._zod.run({value:N,issues:[]},I);if(A instanceof Promise)E.push(A.then((O)=>sX(O,D,j)));else sX(A,D,j)}if(E.length)return Promise.all(E).then(()=>D);return D}});X5=Q("$ZodObject",(_,$)=>{if(t.init(_,$),!Object.getOwnPropertyDescriptor($,"shape")?.get){let N=$.shape;Object.defineProperty($,"shape",{get:()=>{let A={...N};return Object.defineProperty($,"shape",{value:A}),A}})}let I=k0(()=>P5($));$_(_._zod,"propValues",()=>{let N=$.shape,A={};for(let O in N){let L=N[O]._zod;if(L.values){A[O]??(A[O]=new Set);for(let J of L.values)A[O].add(J)}}return A});let U=G4,E=$.catchall,j;_._zod.parse=(N,A)=>{j??(j=I.value);let O=N.value;if(!U(O))return N.issues.push({expected:"object",code:"invalid_type",input:O,inst:_}),N;N.value={};let L=[],J=j.shape;for(let P of j.keys){let z=J[P],S=z._zod.optin==="optional",W=z._zod.optout==="optional",X=z._zod.run({value:O[P],issues:[]},A);if(X instanceof Promise)L.push(X.then((G)=>oI(G,N,P,O,S,W)));else oI(X,N,P,O,S,W)}if(!E)return L.length?Promise.all(L).then(()=>N):N;return z5(L,O,N,A,I.value,_)}}),oA=Q("$ZodObjectJIT",(_,$)=>{X5.init(_,$);let D=_._zod.parse,I=k0(()=>P5($)),U=(P)=>{let z=new mI(["shape","payload","ctx"]),S=I.value,W=(K)=>{let Y=BI(K);return`shape[${Y}]._zod.run({ value: input[${Y}], issues: [] }, ctx)`};z.write("const input = payload.value;");let X=Object.create(null),G=0;for(let K of S.keys)X[K]=`key_${G++}`;z.write("const newResult = {};");for(let K of S.keys){let Y=X[K],T=BI(K),F=P[K],k=F?._zod?.optin==="optional",B=F?._zod?.optout==="optional";if(z.write(`const ${Y} = ${W(K)};`),k&&B)z.write(` +`))}}var AA;var OA=r(()=>{AA={major:4,minor:4,patch:3}});function qA(_){if(_==="")return!0;if(/\s/.test(_))return!1;if(_.length%4!==0)return!1;try{return atob(_),!0}catch{return!1}}function J5(_){if(!yI.test(_))return!1;let $=_.replace(/[-_]/g,(I)=>I==="-"?"+":"/"),D=$.padEnd(Math.ceil($.length/4)*4,"=");return qA(D)}function W5(_,$=null){try{let D=_.split(".");if(D.length!==3)return!1;let[I]=D;if(!I)return!1;let U=JSON.parse(atob(I));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 sX(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues));$.value[D]=_.value}function oI(_,$,D,I,U,E){let j=D in I;if(_.issues.length){if(U&&E&&!j)return;$.issues.push(...$$(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 P5(_){let $=Object.keys(_.shape);for(let I of $)if(!_.shape?.[I]?._zod?.traits?.has("$ZodType"))throw Error(`Invalid element at key "${I}": expected a Zod schema`);let D=g2(_.shape);return{..._,keys:$,keySet:new Set($),numKeys:$.length,optionalKeys:new Set(D)}}function z5(_,$,D,I,U,E){let j=[],N=U.keySet,A=U.catchall._zod,O=A.def.type,S=A.optin==="optional",L=A.optout==="optional";for(let P in $){if(P==="__proto__")continue;if(N.has(P))continue;if(O==="never"){j.push(P);continue}let z=A.run({value:$[P],issues:[]},I);if(z instanceof Promise)_.push(z.then((G)=>oI(G,D,P,$,S,L)));else oI(z,D,P,$,S,L)}if(j.length)D.issues.push({code:"unrecognized_keys",keys:j,input:$,inst:E});if(!_.length)return D;return Promise.all(_).then(()=>{return D})}function _5(_,$,D,I){for(let E of _)if(E.issues.length===0)return $.value=E.value,$;let U=_.filter((E)=>!r6(E));if(U.length===1)return $.value=U[0].value,U[0];return $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:_.map((E)=>E.issues.map((j)=>t_(j,I,Z_())))}),$}function $5(_,$,D,I){let U=_.filter((E)=>E.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((E)=>E.issues.map((j)=>t_(j,I,Z_())))});else $.issues.push({code:"invalid_union",input:$.value,inst:D,errors:[],inclusive:!1});return $}function SA(_,$){if(_===$)return{valid:!0,data:_};if(_ instanceof Date&&$ instanceof Date&&+_===+$)return{valid:!0,data:_};if(w6(_)&&w6($)){let D=Object.keys($),I=Object.keys(_).filter((E)=>D.indexOf(E)!==-1),U={..._,...$};for(let E of I){let j=SA(_[E],$[E]);if(!j.valid)return{valid:!1,mergeErrorPath:[E,...j.mergeErrorPath]};U[E]=j.data}return{valid:!0,data:U}}if(Array.isArray(_)&&Array.isArray($)){if(_.length!==$.length)return{valid:!1,mergeErrorPath:[]};let D=[];for(let I=0;I<_.length;I++){let U=_[I],E=$[I],j=SA(U,E);if(!j.valid)return{valid:!1,mergeErrorPath:[I,...j.mergeErrorPath]};D.push(j.data)}return{valid:!0,data:D}}return{valid:!1,mergeErrorPath:[]}}function D5(_,$,D){let I=new Map,U;for(let N of $.issues)if(N.code==="unrecognized_keys"){U??(U=N);for(let A of N.keys){if(!I.has(A))I.set(A,{});I.get(A).l=!0}}else _.issues.push(N);for(let N of D.issues)if(N.code==="unrecognized_keys")for(let A of N.keys){if(!I.has(A))I.set(A,{});I.get(A).r=!0}else _.issues.push(N);let E=[...I].filter(([,N])=>N.l&&N.r).map(([N])=>N);if(E.length&&U)_.issues.push({...U,keys:E});if(r6(_))return _;let j=SA($.value,D.value);if(!j.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(j.mergeErrorPath)}`);return _.value=j.data,_}function U5(_,$){for(let D=_.length-1;D>=0;D--)if(_[D]._zod[$]!=="optional")return D+1;return 0}function I5(_,$,D){if(_.issues.length)$.issues.push(...$$(D,_.issues));$.value[D]=_.value}function E5(_,$,D,I,U){for(let E=0;E<D.length;E++){let j=_[E],N=E<I.length;if(j.issues.length){if(!N&&E>=U){$.value.length=E;break}$.issues.push(...$$(E,j.issues))}$.value[E]=j.value}for(let E=$.value.length-1;E>=I.length;E--)if(D[E]._zod.optout==="optional"&&$.value[E]===void 0)$.value.length=E;else break;return $}function j5(_,$,D,I,U,E,j){if(_.issues.length)if(EU.has(typeof I))D.issues.push(...$$(I,_.issues));else D.issues.push({code:"invalid_key",origin:"map",input:U,inst:E,issues:_.issues.map((N)=>t_(N,j,Z_()))});if($.issues.length)if(EU.has(typeof I))D.issues.push(...$$(I,$.issues));else D.issues.push({origin:"map",code:"invalid_element",input:U,inst:E,key:I,issues:$.issues.map((N)=>t_(N,j,Z_()))});D.value.set(_.value,$.value)}function N5(_,$){if(_.issues.length)$.issues.push(..._.issues);$.value.add(_.value)}function g5(_,$){if($===void 0&&(_.issues.length||_.fallback))return{issues:[],value:void 0};return _}function A5(_,$){if(_.value===void 0)_.value=$.defaultValue;return _}function O5(_,$){if(!_.issues.length&&_.value===void 0)_.issues.push({code:"invalid_type",expected:"nonoptional",input:_.value,inst:$});return _}function lI(_,$,D){if(_.issues.length)return _.aborted=!0,_;return $._zod.run({value:_.value,issues:_.issues,fallback:_.fallback},D)}function iI(_,$,D){if(_.issues.length)return _.aborted=!0,_;if((D.direction||"forward")==="forward"){let U=$.transform(_.value,_);if(U instanceof Promise)return U.then((E)=>tI(_,E,$.out,D));return tI(_,U,$.out,D)}else{let U=$.reverseTransform(_.value,_);if(U instanceof Promise)return U.then((E)=>tI(_,E,$.in,D));return tI(_,U,$.in,D)}}function tI(_,$,D,I){if(_.issues.length)return _.aborted=!0,_;return D._zod.run({value:$,issues:_.issues},I)}function S5(_){return _.value=Object.freeze(_.value),_}function L5(_,$,D,I){if(!_){let U={code:"custom",input:D,inst:I,path:[...I._zod.def.path??[]],continue:!I._zod.def.abort};if(I._zod.def.params)U.params=I._zod.def.params;$.issues.push(q0(U))}}var o,Y4,Y_,LA,JA,WA,PA,zA,XA,GA,RA,YA,QA,KA,TA,FA,VA,BA,MA,bA,ZA,HA,kA,CA,vA,wA,rA,fA,pI,xA,LU,eI,uA,yA,hA,cA,nA,dA,mA,lA,iA,tA,X5,oA,JU,pA,eA,aA,aI,sA,_O,$O,DO,UO,IO,EO,sI,jO,NO,gO,AO,OO,SO,LO,JO,_E,WU,WO,PO,zO,XO,GO,RO,YO;var QO=r(()=>{dI();X4();P2();hI();n();OA();n();o=K("$ZodType",(_,$)=>{var D;_??(_={}),_._zod.def=$,_._zod.bag=_._zod.bag||{},_._zod.version=AA;let I=[..._._zod.def.checks??[]];if(_._zod.traits.has("$ZodCheck"))I.unshift(_);for(let U of I)for(let E of U._zod.onattach)E(_);if(I.length===0)(D=_._zod).deferred??(D.deferred=[]),_._zod.deferred?.push(()=>{_._zod.run=_._zod.parse});else{let U=(j,N,A)=>{let O=r6(j),S;for(let L of N){if(L._zod.def.when){if(S2(j))continue;if(!L._zod.def.when(j))continue}else if(O)continue;let P=j.issues.length,z=L._zod.check(j);if(z instanceof Promise&&A?.async===!1)throw new m$;if(S||z instanceof Promise)S=(S??Promise.resolve()).then(async()=>{if(await z,j.issues.length===P)return;if(!O)O=r6(j,P)});else{if(j.issues.length===P)continue;if(!O)O=r6(j,P)}}if(S)return S.then(()=>{return j});return j},E=(j,N,A)=>{if(r6(j))return j.aborted=!0,j;let O=U(N,I,A);if(O instanceof Promise){if(A.async===!1)throw new m$;return O.then((S)=>_._zod.parse(S,A))}return _._zod.parse(O,A)};_._zod.run=(j,N)=>{if(N.skipChecks)return _._zod.parse(j,N);if(N.direction==="backward"){let O=_._zod.parse({value:j.value,issues:[]},{...N,skipChecks:!0});if(O instanceof Promise)return O.then((S)=>{return E(S,j,N)});return E(O,j,N)}let A=_._zod.parse(j,N);if(A instanceof Promise){if(N.async===!1)throw new m$;return A.then((O)=>U(O,I,N))}return U(A,I,N)}}D_(_,"~standard",()=>({validate:(U)=>{try{let E=J2(_,U);return E.success?{value:E.data}:{issues:E.error?.issues}}catch(E){return W2(_,U).then((j)=>j.success?{value:j.data}:{issues:j.error?.issues})}},vendor:"zod",version:1}))}),Y4=K("$ZodString",(_,$)=>{o.init(_,$),_._zod.pattern=[..._?._zod.bag?.patterns??[]].pop()??f2(_._zod.bag),_._zod.parse=(D,I)=>{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}}),Y_=K("$ZodStringFormat",(_,$)=>{u0.init(_,$),Y4.init(_,$)}),LA=K("$ZodGUID",(_,$)=>{$.pattern??($.pattern=T2),Y_.init(_,$)}),JA=K("$ZodUUID",(_,$)=>{if($.version){let I={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[$.version];if(I===void 0)throw Error(`Invalid UUID version: "${$.version}"`);$.pattern??($.pattern=R4(I))}else $.pattern??($.pattern=R4());Y_.init(_,$)}),WA=K("$ZodEmail",(_,$)=>{$.pattern??($.pattern=F2),Y_.init(_,$)}),PA=K("$ZodURL",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{try{let I=D.value.trim();if(!$.normalize&&$.protocol?.source===q2.source){if(!/^https?:\/\//i.test(I)){D.issues.push({code:"invalid_format",format:"url",note:"Invalid URL format",input:D.value,inst:_,continue:!$.abort});return}}let U=new URL(I);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=I;return}catch(I){D.issues.push({code:"invalid_format",format:"url",input:D.value,inst:_,continue:!$.abort})}}}),zA=K("$ZodEmoji",(_,$)=>{$.pattern??($.pattern=V2()),Y_.init(_,$)}),XA=K("$ZodNanoID",(_,$)=>{$.pattern??($.pattern=Q2),Y_.init(_,$)}),GA=K("$ZodCUID",(_,$)=>{$.pattern??($.pattern=z2),Y_.init(_,$)}),RA=K("$ZodCUID2",(_,$)=>{$.pattern??($.pattern=X2),Y_.init(_,$)}),YA=K("$ZodULID",(_,$)=>{$.pattern??($.pattern=G2),Y_.init(_,$)}),QA=K("$ZodXID",(_,$)=>{$.pattern??($.pattern=R2),Y_.init(_,$)}),KA=K("$ZodKSUID",(_,$)=>{$.pattern??($.pattern=Y2),Y_.init(_,$)}),TA=K("$ZodISODateTime",(_,$)=>{$.pattern??($.pattern=r2($)),Y_.init(_,$)}),FA=K("$ZodISODate",(_,$)=>{$.pattern??($.pattern=v2),Y_.init(_,$)}),VA=K("$ZodISOTime",(_,$)=>{$.pattern??($.pattern=w2($)),Y_.init(_,$)}),BA=K("$ZodISODuration",(_,$)=>{$.pattern??($.pattern=K2),Y_.init(_,$)}),MA=K("$ZodIPv4",(_,$)=>{$.pattern??($.pattern=B2),Y_.init(_,$),_._zod.bag.format="ipv4"}),bA=K("$ZodIPv6",(_,$)=>{$.pattern??($.pattern=M2),Y_.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})}}}),ZA=K("$ZodMAC",(_,$)=>{$.pattern??($.pattern=b2($.delimiter)),Y_.init(_,$),_._zod.bag.format="mac"}),HA=K("$ZodCIDRv4",(_,$)=>{$.pattern??($.pattern=Z2),Y_.init(_,$)}),kA=K("$ZodCIDRv6",(_,$)=>{$.pattern??($.pattern=H2),Y_.init(_,$),_._zod.check=(D)=>{let I=D.value.split("/");try{if(I.length!==2)throw Error();let[U,E]=I;if(!E)throw Error();let j=Number(E);if(`${j}`!==E)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})}}});CA=K("$ZodBase64",(_,$)=>{$.pattern??($.pattern=k2),Y_.init(_,$),_._zod.bag.contentEncoding="base64",_._zod.check=(D)=>{if(qA(D.value))return;D.issues.push({code:"invalid_format",format:"base64",input:D.value,inst:_,continue:!$.abort})}});vA=K("$ZodBase64URL",(_,$)=>{$.pattern??($.pattern=yI),Y_.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})}}),wA=K("$ZodE164",(_,$)=>{$.pattern??($.pattern=C2),Y_.init(_,$)});rA=K("$ZodJWT",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{if(W5(D.value,$.alg))return;D.issues.push({code:"invalid_format",format:"jwt",input:D.value,inst:_,continue:!$.abort})}}),fA=K("$ZodCustomStringFormat",(_,$)=>{Y_.init(_,$),_._zod.check=(D)=>{if($.fn(D.value))return;D.issues.push({code:"invalid_format",format:$.format,input:D.value,inst:_,continue:!$.abort})}}),pI=K("$ZodNumber",(_,$)=>{o.init(_,$),_._zod.pattern=_._zod.bag.pattern??AU,_._zod.parse=(D,I)=>{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 E=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:_,...E?{received:E}:{}}),D}}),xA=K("$ZodNumberFormat",(_,$)=>{l2.init(_,$),pI.init(_,$)}),LU=K("$ZodBoolean",(_,$)=>{o.init(_,$),_._zod.pattern=y2,_._zod.parse=(D,I)=>{if($.coerce)try{D.value=Boolean(D.value)}catch(E){}let U=D.value;if(typeof U==="boolean")return D;return D.issues.push({expected:"boolean",code:"invalid_type",input:U,inst:_}),D}}),eI=K("$ZodBigInt",(_,$)=>{o.init(_,$),_._zod.pattern=x2,_._zod.parse=(D,I)=>{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}}),uA=K("$ZodBigIntFormat",(_,$)=>{i2.init(_,$),eI.init(_,$)}),yA=K("$ZodSymbol",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U==="symbol")return D;return D.issues.push({expected:"symbol",code:"invalid_type",input:U,inst:_}),D}}),hA=K("$ZodUndefined",(_,$)=>{o.init(_,$),_._zod.pattern=c2,_._zod.values=new Set([void 0]),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"undefined",code:"invalid_type",input:U,inst:_}),D}}),cA=K("$ZodNull",(_,$)=>{o.init(_,$),_._zod.pattern=h2,_._zod.values=new Set([null]),_._zod.parse=(D,I)=>{let U=D.value;if(U===null)return D;return D.issues.push({expected:"null",code:"invalid_type",input:U,inst:_}),D}}),nA=K("$ZodAny",(_,$)=>{o.init(_,$),_._zod.parse=(D)=>D}),dA=K("$ZodUnknown",(_,$)=>{o.init(_,$),_._zod.parse=(D)=>D}),mA=K("$ZodNever",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{return D.issues.push({expected:"never",code:"invalid_type",input:D.value,inst:_}),D}}),lA=K("$ZodVoid",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(typeof U>"u")return D;return D.issues.push({expected:"void",code:"invalid_type",input:U,inst:_}),D}}),iA=K("$ZodDate",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{if($.coerce)try{D.value=new Date(D.value)}catch(N){}let U=D.value,E=U instanceof Date;if(E&&!Number.isNaN(U.getTime()))return D;return D.issues.push({expected:"date",code:"invalid_type",input:U,...E?{received:"Invalid Date"}:{},inst:_}),D}});tA=K("$ZodArray",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{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 E=[];for(let j=0;j<U.length;j++){let N=U[j],A=$.element._zod.run({value:N,issues:[]},I);if(A instanceof Promise)E.push(A.then((O)=>sX(O,D,j)));else sX(A,D,j)}if(E.length)return Promise.all(E).then(()=>D);return D}});X5=K("$ZodObject",(_,$)=>{if(o.init(_,$),!Object.getOwnPropertyDescriptor($,"shape")?.get){let N=$.shape;Object.defineProperty($,"shape",{get:()=>{let A={...N};return Object.defineProperty($,"shape",{value:A}),A}})}let I=k0(()=>P5($));D_(_._zod,"propValues",()=>{let N=$.shape,A={};for(let O in N){let S=N[O]._zod;if(S.values){A[O]??(A[O]=new Set);for(let L of S.values)A[O].add(L)}}return A});let U=G4,E=$.catchall,j;_._zod.parse=(N,A)=>{j??(j=I.value);let O=N.value;if(!U(O))return N.issues.push({expected:"object",code:"invalid_type",input:O,inst:_}),N;N.value={};let S=[],L=j.shape;for(let P of j.keys){let z=L[P],G=z._zod.optin==="optional",J=z._zod.optout==="optional",W=z._zod.run({value:O[P],issues:[]},A);if(W instanceof Promise)S.push(W.then((X)=>oI(X,N,P,O,G,J)));else oI(W,N,P,O,G,J)}if(!E)return S.length?Promise.all(S).then(()=>N):N;return z5(S,O,N,A,I.value,_)}}),oA=K("$ZodObjectJIT",(_,$)=>{X5.init(_,$);let D=_._zod.parse,I=k0(()=>P5($)),U=(P)=>{let z=new mI(["shape","payload","ctx"]),G=I.value,J=(T)=>{let Y=BI(T);return`shape[${Y}]._zod.run({ value: input[${Y}], issues: [] }, ctx)`};z.write("const input = payload.value;");let W=Object.create(null),X=0;for(let T of G.keys)W[T]=`key_${X++}`;z.write("const newResult = {};");for(let T of G.keys){let Y=W[T],Q=BI(T),F=P[T],q=F?._zod?.optin==="optional",Z=F?._zod?.optout==="optional";if(z.write(`const ${Y} = ${J(T)};`),q&&Z)z.write(` if (${Y}.issues.length) { - if (${T} in input) { + if (${Q} in input) { payload.issues = payload.issues.concat(${Y}.issues.map(iss => ({ ...iss, - path: iss.path ? [${T}, ...iss.path] : [${T}] + path: iss.path ? [${Q}, ...iss.path] : [${Q}] }))); } } if (${Y}.value === undefined) { - if (${T} in input) { - newResult[${T}] = undefined; + if (${Q} in input) { + newResult[${Q}] = undefined; } } else { - newResult[${T}] = ${Y}.value; + newResult[${Q}] = ${Y}.value; } - `);else if(!k)z.write(` - const ${Y}_present = ${T} in input; + `);else if(!q)z.write(` + const ${Y}_present = ${Q} in input; if (${Y}.issues.length) { payload.issues = payload.issues.concat(${Y}.issues.map(iss => ({ ...iss, - path: iss.path ? [${T}, ...iss.path] : [${T}] + path: iss.path ? [${Q}, ...iss.path] : [${Q}] }))); } if (!${Y}_present && !${Y}.issues.length) { @@ -34,15 +34,15 @@ var TY=Object.create;var{getPrototypeOf:FY,defineProperty:wN,getOwnPropertyNames code: "invalid_type", expected: "nonoptional", input: undefined, - path: [${T}] + path: [${Q}] }); } if (${Y}_present) { if (${Y}.value === undefined) { - newResult[${T}] = undefined; + newResult[${Q}] = undefined; } else { - newResult[${T}] = ${Y}.value; + newResult[${Q}] = ${Y}.value; } } @@ -50,24 +50,24 @@ var TY=Object.create;var{getPrototypeOf:FY,defineProperty:wN,getOwnPropertyNames if (${Y}.issues.length) { payload.issues = payload.issues.concat(${Y}.issues.map(iss => ({ ...iss, - path: iss.path ? [${T}, ...iss.path] : [${T}] + path: iss.path ? [${Q}, ...iss.path] : [${Q}] }))); } if (${Y}.value === undefined) { - if (${T} in input) { - newResult[${T}] = undefined; + if (${Q} in input) { + newResult[${Q}] = undefined; } } else { - newResult[${T}] = ${Y}.value; + newResult[${Q}] = ${Y}.value; } - `)}z.write("payload.value = newResult;"),z.write("return payload;");let R=z.compile();return(K,Y)=>R(P,K,Y)},E,j=G4,N=!P4.jitless,O=N&&E2.value,L=$.catchall,J;_._zod.parse=(P,z)=>{J??(J=I.value);let S=P.value;if(!j(S))return P.issues.push({expected:"object",code:"invalid_type",input:S,inst:_}),P;if(N&&O&&z?.async===!1&&z.jitless!==!0){if(!E)E=U($.shape);if(P=E(P,z),!L)return P;return z5([],S,P,z,J,_)}return D(P,z)}});JU=Q("$ZodUnion",(_,$)=>{t.init(_,$),$_(_._zod,"optin",()=>$.options.some((I)=>I._zod.optin==="optional")?"optional":void 0),$_(_._zod,"optout",()=>$.options.some((I)=>I._zod.optout==="optional")?"optional":void 0),$_(_._zod,"values",()=>{if($.options.every((I)=>I._zod.values))return new Set($.options.flatMap((I)=>Array.from(I._zod.values)));return}),$_(_._zod,"pattern",()=>{if($.options.every((I)=>I._zod.pattern)){let I=$.options.map((U)=>U._zod.pattern);return new RegExp(`^(${I.map((U)=>IU(U.source)).join("|")})$`)}return});let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(I,U)=>{if(D)return D(I,U);let E=!1,j=[];for(let N of $.options){let A=N._zod.run({value:I.value,issues:[]},U);if(A instanceof Promise)j.push(A),E=!0;else{if(A.issues.length===0)return A;j.push(A)}}if(!E)return _5(j,I,_,U);return Promise.all(j).then((N)=>{return _5(N,I,_,U)})}});pA=Q("$ZodXor",(_,$)=>{JU.init(_,$),$.inclusive=!1;let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(I,U)=>{if(D)return D(I,U);let E=!1,j=[];for(let N of $.options){let A=N._zod.run({value:I.value,issues:[]},U);if(A instanceof Promise)j.push(A),E=!0;else j.push(A)}if(!E)return $5(j,I,_,U);return Promise.all(j).then((N)=>{return $5(N,I,_,U)})}}),eA=Q("$ZodDiscriminatedUnion",(_,$)=>{$.inclusive=!1,JU.init(_,$);let D=_._zod.parse;$_(_._zod,"propValues",()=>{let U={};for(let E of $.options){let j=E._zod.propValues;if(!j||Object.keys(j).length===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(E)}"`);for(let[N,A]of Object.entries(j)){if(!U[N])U[N]=new Set;for(let O of A)U[N].add(O)}}return U});let I=k0(()=>{let U=$.options,E=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 A of N){if(E.has(A))throw Error(`Duplicate discriminator value "${String(A)}"`);E.set(A,j)}}return E});_._zod.parse=(U,E)=>{let j=U.value;if(!G4(j))return U.issues.push({code:"invalid_type",expected:"object",input:j,inst:_}),U;let N=I.value.get(j?.[$.discriminator]);if(N)return N._zod.run(U,E);if($.unionFallback||E.direction==="backward")return D(U,E);return U.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:$.discriminator,options:Array.from(I.value.keys()),input:j,path:[$.discriminator],inst:_}),U}}),aA=Q("$ZodIntersection",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value,E=$.left._zod.run({value:U,issues:[]},I),j=$.right._zod.run({value:U,issues:[]},I);if(E instanceof Promise||j instanceof Promise)return Promise.all([E,j]).then(([A,O])=>{return D5(D,A,O)});return D5(D,E,j)}});aI=Q("$ZodTuple",(_,$)=>{t.init(_,$);let D=$.items;_._zod.parse=(I,U)=>{let E=I.value;if(!Array.isArray(E))return I.issues.push({input:E,inst:_,expected:"tuple",code:"invalid_type"}),I;I.value=[];let j=[],N=U5(D,"optin"),A=U5(D,"optout");if(!$.rest){if(E.length<N)return I.issues.push({code:"too_small",minimum:N,inclusive:!0,input:E,inst:_,origin:"array"}),I;if(E.length>D.length)I.issues.push({code:"too_big",maximum:D.length,inclusive:!0,input:E,inst:_,origin:"array"})}let O=Array(D.length);for(let L=0;L<D.length;L++){let J=D[L]._zod.run({value:E[L],issues:[]},U);if(J instanceof Promise)j.push(J.then((P)=>{O[L]=P}));else O[L]=J}if($.rest){let L=D.length-1,J=E.slice(D.length);for(let P of J){L++;let z=$.rest._zod.run({value:P,issues:[]},U);if(z instanceof Promise)j.push(z.then((S)=>I5(S,I,L)));else I5(z,I,L)}}if(j.length)return Promise.all(j).then(()=>E5(O,I,D,E,A));return E5(O,I,D,E,A)}});sA=Q("$ZodRecord",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!w6(U))return D.issues.push({expected:"record",code:"invalid_type",input:U,inst:_}),D;let E=[],j=$.keyType._zod.values;if(j){D.value={};let N=new Set;for(let O of j)if(typeof O==="string"||typeof O==="number"||typeof O==="symbol"){N.add(typeof O==="number"?O.toString():O);let L=$.keyType._zod.run({value:O,issues:[]},I);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((z)=>o_(z,I,Z_())),input:O,path:[O],inst:_});continue}let J=L.value,P=$.valueType._zod.run({value:U[O],issues:[]},I);if(P instanceof Promise)E.push(P.then((z)=>{if(z.issues.length)D.issues.push(...$$(O,z.issues));D.value[J]=z.value}));else{if(P.issues.length)D.issues.push(...$$(O,P.issues));D.value[J]=P.value}}let A;for(let O in U)if(!N.has(O))A=A??[],A.push(O);if(A&&A.length>0)D.issues.push({code:"unrecognized_keys",input:U,inst:_,keys:A})}else{D.value={};for(let N of Reflect.ownKeys(U)){if(N==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(U,N))continue;let A=$.keyType._zod.run({value:N,issues:[]},I);if(A instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof N==="string"&&AU.test(N)&&A.issues.length){let J=$.keyType._zod.run({value:Number(N),issues:[]},I);if(J instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(J.issues.length===0)A=J}if(A.issues.length){if($.mode==="loose")D.value[N]=U[N];else D.issues.push({code:"invalid_key",origin:"record",issues:A.issues.map((J)=>o_(J,I,Z_())),input:N,path:[N],inst:_});continue}let L=$.valueType._zod.run({value:U[N],issues:[]},I);if(L instanceof Promise)E.push(L.then((J)=>{if(J.issues.length)D.issues.push(...$$(N,J.issues));D.value[A.value]=J.value}));else{if(L.issues.length)D.issues.push(...$$(N,L.issues));D.value[A.value]=L.value}}}if(E.length)return Promise.all(E).then(()=>D);return D}}),_O=Q("$ZodMap",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!(U instanceof Map))return D.issues.push({expected:"map",code:"invalid_type",input:U,inst:_}),D;let E=[];D.value=new Map;for(let[j,N]of U){let A=$.keyType._zod.run({value:j,issues:[]},I),O=$.valueType._zod.run({value:N,issues:[]},I);if(A instanceof Promise||O instanceof Promise)E.push(Promise.all([A,O]).then(([L,J])=>{j5(L,J,D,j,U,_,I)}));else j5(A,O,D,j,U,_,I)}if(E.length)return Promise.all(E).then(()=>D);return D}});$O=Q("$ZodSet",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!(U instanceof Set))return D.issues.push({input:U,inst:_,expected:"set",code:"invalid_type"}),D;let E=[];D.value=new Set;for(let j of U){let N=$.valueType._zod.run({value:j,issues:[]},I);if(N instanceof Promise)E.push(N.then((A)=>N5(A,D)));else N5(N,D)}if(E.length)return Promise.all(E).then(()=>D);return D}});DO=Q("$ZodEnum",(_,$)=>{t.init(_,$);let D=UU($.entries),I=new Set(D);_._zod.values=I,_._zod.pattern=new RegExp(`^(${D.filter((U)=>EU.has(typeof U)).map((U)=>typeof U==="string"?z$(U):U.toString()).join("|")})$`),_._zod.parse=(U,E)=>{let j=U.value;if(I.has(j))return U;return U.issues.push({code:"invalid_value",values:D,input:j,inst:_}),U}}),UO=Q("$ZodLiteral",(_,$)=>{if(t.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((I)=>typeof I==="string"?z$(I):I?z$(I.toString()):String(I)).join("|")})$`),_._zod.parse=(I,U)=>{let E=I.value;if(D.has(E))return I;return I.issues.push({code:"invalid_value",values:$.values,input:E,inst:_}),I}}),IO=Q("$ZodFile",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(U instanceof File)return D;return D.issues.push({expected:"file",code:"invalid_type",input:U,inst:_}),D}}),EO=Q("$ZodTransform",(_,$)=>{t.init(_,$),_._zod.optin="optional",_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4(_.constructor.name);let U=$.transform(D.value,D);if(I.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 m$;return D.value=U,D.fallback=!0,D}});sI=Q("$ZodOptional",(_,$)=>{t.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(`^(${IU(D.source)})?$`):void 0}),_._zod.parse=(D,I)=>{if($.innerType._zod.optin==="optional"){let U=D.value,E=$.innerType._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>g5(j,U));return g5(E,U)}if(D.value===void 0)return D;return $.innerType._zod.run(D,I)}}),jO=Q("$ZodExactOptional",(_,$)=>{sI.init(_,$),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"pattern",()=>$.innerType._zod.pattern),_._zod.parse=(D,I)=>{return $.innerType._zod.run(D,I)}}),NO=Q("$ZodNullable",(_,$)=>{t.init(_,$),$_(_._zod,"optin",()=>$.innerType._zod.optin),$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"pattern",()=>{let D=$.innerType._zod.pattern;return D?new RegExp(`^(${IU(D.source)}|null)$`):void 0}),$_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,null]):void 0}),_._zod.parse=(D,I)=>{if(D.value===null)return D;return $.innerType._zod.run(D,I)}}),gO=Q("$ZodDefault",(_,$)=>{t.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);if(D.value===void 0)return D.value=$.defaultValue,D;let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>A5(E,$));return A5(U,$)}});AO=Q("$ZodPrefault",(_,$)=>{t.init(_,$),_._zod.optin="optional",$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);if(D.value===void 0)D.value=$.defaultValue;return $.innerType._zod.run(D,I)}}),OO=Q("$ZodNonOptional",(_,$)=>{t.init(_,$),$_(_._zod,"values",()=>{let D=$.innerType._zod.values;return D?new Set([...D].filter((I)=>I!==void 0)):void 0}),_._zod.parse=(D,I)=>{let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>O5(E,_));return O5(U,_)}});LO=Q("$ZodSuccess",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4("ZodSuccess");let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>{return D.value=E.issues.length===0,D});return D.value=U.issues.length===0,D}}),SO=Q("$ZodCatch",(_,$)=>{t.init(_,$),_._zod.optin="optional",$_(_._zod,"optout",()=>$.innerType._zod.optout),$_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>{if(D.value=E.value,E.issues.length)D.value=$.catchValue({...D,error:{issues:E.issues.map((j)=>o_(j,I,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((E)=>o_(E,I,Z_()))},input:D.value}),D.issues=[],D.fallback=!0;return D}}),JO=Q("$ZodNaN",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{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}}),_E=Q("$ZodPipe",(_,$)=>{t.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,I)=>{if(I.direction==="backward"){let E=$.out._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>lI(j,$.in,I));return lI(E,$.in,I)}let U=$.in._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>lI(E,$.out,I));return lI(U,$.out,I)}});WU=Q("$ZodCodec",(_,$)=>{t.init(_,$),$_(_._zod,"values",()=>$.in._zod.values),$_(_._zod,"optin",()=>$.in._zod.optin),$_(_._zod,"optout",()=>$.out._zod.optout),$_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,I)=>{if((I.direction||"forward")==="forward"){let E=$.in._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>iI(j,$,I));return iI(E,$,I)}else{let E=$.out._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>iI(j,$,I));return iI(E,$,I)}}});WO=Q("$ZodPreprocess",(_,$)=>{_E.init(_,$)}),PO=Q("$ZodReadonly",(_,$)=>{t.init(_,$),$_(_._zod,"propValues",()=>$.innerType._zod.propValues),$_(_._zod,"values",()=>$.innerType._zod.values),$_(_._zod,"optin",()=>$.innerType?._zod?.optin),$_(_._zod,"optout",()=>$.innerType?._zod?.optout),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then(L5);return L5(U)}});zO=Q("$ZodTemplateLiteral",(_,$)=>{t.init(_,$);let D=[];for(let I of $.parts)if(typeof I==="object"&&I!==null){if(!I._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...I._zod.traits].shift()}`);let U=I._zod.pattern instanceof RegExp?I._zod.pattern.source:I._zod.pattern;if(!U)throw Error(`Invalid template literal part: ${I._zod.traits}`);let E=U.startsWith("^")?1:0,j=U.endsWith("$")?U.length-1:U.length;D.push(U.slice(E,j))}else if(I===null||N2.has(typeof I))D.push(z$(`${I}`));else throw Error(`Invalid template literal part: ${I}`);_._zod.pattern=new RegExp(`^${D.join("")}$`),_._zod.parse=(I,U)=>{if(typeof I.value!=="string")return I.issues.push({input:I.value,inst:_,expected:"string",code:"invalid_type"}),I;if(_._zod.pattern.lastIndex=0,!_._zod.pattern.test(I.value))return I.issues.push({input:I.value,inst:_,code:"invalid_format",format:$.format??"template_literal",pattern:_._zod.pattern.source}),I;return I}}),XO=Q("$ZodFunction",(_,$)=>{return t.init(_,$),_._def=$,_._zod.def=$,_.implement=(D)=>{if(typeof D!=="function")throw Error("implement() must be called with a function");return function(...I){let U=_._def.input?HI(_._def.input,I):I,E=Reflect.apply(D,this,U);if(_._def.output)return HI(_._def.output,E);return E}},_.implementAsync=(D)=>{if(typeof D!=="function")throw Error("implementAsync() must be called with a function");return async function(...I){let U=_._def.input?await kI(_._def.input,I):I,E=await Reflect.apply(D,this,U);if(_._def.output)return await kI(_._def.output,E);return E}},_._zod.parse=(D,I)=>{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 I=_.constructor;if(Array.isArray(D[0]))return new I({type:"function",input:new aI({type:"tuple",items:D[0],rest:D[1]}),output:_._def.output});return new I({type:"function",input:D[0],output:_._def.output})},_.output=(D)=>{return new _.constructor({type:"function",input:_._def.input,output:D})},_}),GO=Q("$ZodPromise",(_,$)=>{t.init(_,$),_._zod.parse=(D,I)=>{return Promise.resolve(D.value).then((U)=>$.innerType._zod.run({value:U,issues:[]},I))}}),RO=Q("$ZodLazy",(_,$)=>{t.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,I)=>{return _._zod.innerType._zod.run(D,I)}}),YO=Q("$ZodCustom",(_,$)=>{Y_.init(_,$),t.init(_,$),_._zod.parse=(D,I)=>{return D},_._zod.check=(D)=>{let I=D.value,U=$.fn(I);if(U instanceof Promise)return U.then((E)=>S5(E,D,I,_));S5(U,D,I,_);return}})});function KO(){return{localeError:wB()}}var wB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}\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 ${M(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: ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E} ${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"} ${E} ${U.maximum.toString()}`}case"too_small":{let E=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 ${E} ${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 ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`${D[E.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":""}: ${V(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 G5=r(()=>{n()});function TO(){return{localeError:rB()}}var rB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, daxil olan ${N}`}case"invalid_value":if(U.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${M(U.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${E}${U.maximum.toString()} ${j.unit??"element"}`;return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Yanl\u0131\u015F m\u0259tn: "${E.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`;if(E.format==="ends_with")return`Yanl\u0131\u015F m\u0259tn: "${E.suffix}" il\u0259 bitm\u0259lidir`;if(E.format==="includes")return`Yanl\u0131\u015F m\u0259tn: "${E.includes}" daxil olmal\u0131d\u0131r`;if(E.format==="regex")return`Yanl\u0131\u015F m\u0259tn: ${E.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;return`Yanl\u0131\u015F ${D[E.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":""}: ${V(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 R5=r(()=>{n()});function Y5(_,$,D,I){let U=Math.abs(_),E=U%10,j=U%100;if(j>=11&&j<=19)return I;if(E===1)return $;if(E>=2&&E<=4)return D;return I}function FO(){return{localeError:fB()}}var fB=()=>{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"},I={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=Y5(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} ${E}${U.maximum.toString()} ${A}`}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 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=Y5(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} ${E}${U.minimum.toString()} ${A}`}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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${D[E.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"}: ${V(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 Q5=r(()=>{n()});function VO(){return{localeError:xB()}}var xB=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;let j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";if(E.format==="emoji")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="datetime")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="date")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";if(E.format==="time")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="duration")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";return`${j} ${D[E.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":""}: ${V(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 K5=r(()=>{n()});function BO(){return{localeError:uB()}}var uB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, s'ha rebut ${N}`}case"invalid_value":if(U.values.length===1)return`Valor inv\xE0lid: s'esperava ${M(U.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${V(U.values," o ")}`;case"too_big":{let E=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 ${E} ${U.maximum.toString()} ${j.unit??"elements"}`;return`Massa gran: s'esperava que ${U.origin??"el valor"} fos ${E} ${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?"com a m\xEDnim":"m\xE9s de",j=$(U.origin);if(j)return`Massa petit: s'esperava que ${U.origin} contingu\xE9s ${E} ${U.minimum.toString()} ${j.unit}`;return`Massa petit: s'esperava que ${U.origin} fos ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Format inv\xE0lid: ha de comen\xE7ar amb "${E.prefix}"`;if(E.format==="ends_with")return`Format inv\xE0lid: ha d'acabar amb "${E.suffix}"`;if(E.format==="includes")return`Format inv\xE0lid: ha d'incloure "${E.includes}"`;if(E.format==="regex")return`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${E.pattern}`;return`Format inv\xE0lid per a ${D[E.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":""}: ${V(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 T5=r(()=>{n()});function MO(){return{localeError:yB()}}var yB=()=>{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"},I={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, obdr\u017Eeno ${N}`}case"invalid_value":if(U.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${M(U.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${E}${U.maximum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${E}${U.minimum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${E.prefix}"`;if(E.format==="ends_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${E.suffix}"`;if(E.format==="includes")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${E.includes}"`;if(E.format==="regex")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${E.pattern}`;return`Neplatn\xFD form\xE1t ${D[E.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: ${V(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 F5=r(()=>{n()});function bO(){return{localeError:hB()}}var hB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldigt input: forventede instanceof ${U.expected}, fik ${N}`;return`Ugyldigt input: forventede ${E}, fik ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig v\xE6rdi: forventede ${M(U.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`For stor: forventede ${N??"value"} ${j.verb} ${E} ${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor: forventede ${N??"value"} havde ${E} ${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`For lille: forventede ${N} ${j.verb} ${E} ${U.minimum.toString()} ${j.unit}`;return`For lille: forventede ${N} havde ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ugyldig streng: skal starte med "${E.prefix}"`;if(E.format==="ends_with")return`Ugyldig streng: skal ende med "${E.suffix}"`;if(E.format==="includes")return`Ugyldig streng: skal indeholde "${E.includes}"`;if(E.format==="regex")return`Ugyldig streng: skal matche m\xF8nsteret ${E.pattern}`;return`Ugyldig ${D[E.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"}: ${V(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 V5=r(()=>{n()});function ZO(){return{localeError:cB()}}var cB=()=>{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"},I={nan:"NaN",number:"Zahl",array:"Array"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ung\xFCltige Eingabe: erwartet instanceof ${U.expected}, erhalten ${N}`;return`Ung\xFCltige Eingabe: erwartet ${E}, erhalten ${N}`}case"invalid_value":if(U.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${M(U.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${E}${U.maximum.toString()} ${j.unit??"Elemente"} hat`;return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${E}${U.maximum.toString()} ist`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Zu klein: erwartet, dass ${U.origin} ${E}${U.minimum.toString()} ${j.unit} hat`;return`Zu klein: erwartet, dass ${U.origin} ${E}${U.minimum.toString()} ist`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ung\xFCltiger String: muss mit "${E.prefix}" beginnen`;if(E.format==="ends_with")return`Ung\xFCltiger String: muss mit "${E.suffix}" enden`;if(E.format==="includes")return`Ung\xFCltiger String: muss "${E.includes}" enthalten`;if(E.format==="regex")return`Ung\xFCltiger String: muss dem Muster ${E.pattern} entsprechen`;return`Ung\xFCltig: ${D[E.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"}: ${V(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 B5=r(()=>{n()});function HO(){return{localeError:nB()}}var nB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${D[E.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"}: ${V(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 M5=r(()=>{n()});function PU(){return{localeError:dB()}}var dB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;return`Invalid input: expected ${E}, received ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${M(U.values[0])}`;return`Invalid option: expected one of ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Too big: expected ${U.origin??"value"} to have ${E}${U.maximum.toString()} ${j.unit??"elements"}`;return`Too big: expected ${U.origin??"value"} to be ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Too small: expected ${U.origin} to have ${E}${U.minimum.toString()} ${j.unit}`;return`Too small: expected ${U.origin} to be ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Invalid string: must start with "${E.prefix}"`;if(E.format==="ends_with")return`Invalid string: must end with "${E.suffix}"`;if(E.format==="includes")return`Invalid string: must include "${E.includes}"`;if(E.format==="regex")return`Invalid string: must match pattern ${E.pattern}`;return`Invalid ${D[E.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":""}: ${V(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 kO=r(()=>{n()});function qO(){return{localeError:mB()}}var mB=()=>{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"},I={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Nevalida enigo: atendi\u011Dis instanceof ${U.expected}, ricevi\u011Dis ${N}`;return`Nevalida enigo: atendi\u011Dis ${E}, ricevi\u011Dis ${N}`}case"invalid_value":if(U.values.length===1)return`Nevalida enigo: atendi\u011Dis ${M(U.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${E}${U.maximum.toString()} ${j.unit??"elementojn"}`;return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Tro malgranda: atendi\u011Dis ke ${U.origin} havu ${E}${U.minimum.toString()} ${j.unit}`;return`Tro malgranda: atendi\u011Dis ke ${U.origin} estu ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Nevalida karaktraro: devas komenci\u011Di per "${E.prefix}"`;if(E.format==="ends_with")return`Nevalida karaktraro: devas fini\u011Di per "${E.suffix}"`;if(E.format==="includes")return`Nevalida karaktraro: devas inkluzivi "${E.includes}"`;if(E.format==="regex")return`Nevalida karaktraro: devas kongrui kun la modelo ${E.pattern}`;return`Nevalida ${D[E.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":""}: ${V(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 b5=r(()=>{n()});function CO(){return{localeError:lB()}}var lB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, recibido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: se esperaba ${M(U.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Demasiado grande: se esperaba que ${N??"valor"} tuviera ${E}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${N??"valor"} fuera ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Demasiado peque\xF1o: se esperaba que ${N} tuviera ${E}${U.minimum.toString()} ${j.unit}`;return`Demasiado peque\xF1o: se esperaba que ${N} fuera ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cadena inv\xE1lida: debe comenzar con "${E.prefix}"`;if(E.format==="ends_with")return`Cadena inv\xE1lida: debe terminar en "${E.suffix}"`;if(E.format==="includes")return`Cadena inv\xE1lida: debe incluir "${E.includes}"`;if(E.format==="regex")return`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${E.pattern}`;return`Inv\xE1lido ${D[E.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":""}: ${V(U.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${I[U.origin]??U.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${I[U.origin]??U.origin}`;default:return"Entrada inv\xE1lida"}}};var Z5=r(()=>{n()});function vO(){return{localeError:iB()}}var iB=()=>{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"},I={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} ${j.unit} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${E.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;if(E.format==="ends_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${E.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;if(E.format==="includes")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${E.includes}" \u0628\u0627\u0634\u062F`;if(E.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 ${E.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;return`${D[E.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: ${V(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 H5=r(()=>{n()});function wO(){return{localeError:tB()}}var tB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Virheellinen tyyppi: odotettiin instanceof ${U.expected}, oli ${N}`;return`Virheellinen tyyppi: odotettiin ${E}, oli ${N}`}case"invalid_value":if(U.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${M(U.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Liian suuri: ${j.subject} t\xE4ytyy olla ${E}${U.maximum.toString()} ${j.unit}`.trim();return`Liian suuri: arvon t\xE4ytyy olla ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Liian pieni: ${j.subject} t\xE4ytyy olla ${E}${U.minimum.toString()} ${j.unit}`.trim();return`Liian pieni: arvon t\xE4ytyy olla ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${E.prefix}"`;if(E.format==="ends_with")return`Virheellinen sy\xF6te: t\xE4ytyy loppua "${E.suffix}"`;if(E.format==="includes")return`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${E.includes}"`;if(E.format==="regex")return`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${E.pattern}`;return`Virheellinen ${D[E.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"}: ${V(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 k5=r(()=>{n()});function rO(){return{localeError:oB()}}var oB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : instanceof ${U.expected} attendu, ${N} re\xE7u`;return`Entr\xE9e invalide : ${E} attendu, ${N} re\xE7u`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : ${M(U.values[0])} attendu`;return`Option invalide : une valeur parmi ${V(U.values,"|")} attendue`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Trop grand : ${I[U.origin]??"valeur"} doit ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"\xE9l\xE9ment(s)"}`;return`Trop grand : ${I[U.origin]??"valeur"} doit \xEAtre ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Trop petit : ${I[U.origin]??"valeur"} doit ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Trop petit : ${I[U.origin]??"valeur"} doit \xEAtre ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${E.prefix}"`;if(E.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${E.suffix}"`;if(E.format==="includes")return`Cha\xEEne invalide : doit inclure "${E.includes}"`;if(E.format==="regex")return`Cha\xEEne invalide : doit correspondre au mod\xE8le ${E.pattern}`;return`${D[E.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":""} : ${V(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 q5=r(()=>{n()});function fO(){return{localeError:pB()}}var pB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : attendu instanceof ${U.expected}, re\xE7u ${N}`;return`Entr\xE9e invalide : attendu ${E}, re\xE7u ${N}`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : attendu ${M(U.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"\u2264":"<",j=$(U.origin);if(j)return`Trop grand : attendu que ${U.origin??"la valeur"} ait ${E}${U.maximum.toString()} ${j.unit}`;return`Trop grand : attendu que ${U.origin??"la valeur"} soit ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?"\u2265":">",j=$(U.origin);if(j)return`Trop petit : attendu que ${U.origin} ait ${E}${U.minimum.toString()} ${j.unit}`;return`Trop petit : attendu que ${U.origin} soit ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${E.prefix}"`;if(E.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${E.suffix}"`;if(E.format==="includes")return`Cha\xEEne invalide : doit inclure "${E.includes}"`;if(E.format==="regex")return`Cha\xEEne invalide : doit correspondre au motif ${E.pattern}`;return`${D[E.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":""} : ${V(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 C5=r(()=>{n()});function xO(){return{localeError:eB()}}var eB=()=>{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=(O)=>O?_[O]:void 0,I=(O)=>{let L=D(O);if(L)return L.label;return O??_.unknown.label},U=(O)=>`\u05D4${I(O)}`,E=(O)=>{return(D(O)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"},j=(O)=>{if(!O)return null;return $[O]??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"}},A={nan:"NaN"};return(O)=>{switch(O.code){case"invalid_type":{let L=O.expected,J=A[L??""]??I(L),P=b(O.input),z=A[P]??_[P]?.label??P;if(/^[A-Z]/.test(O.expected))return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${O.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${z}`;return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${J}, \u05D4\u05EA\u05E7\u05D1\u05DC ${z}`}case"invalid_value":{if(O.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 ${M(O.values[0])}`;let L=O.values.map((z)=>M(z));if(O.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 J=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 ${J}`}case"too_big":{let L=j(O.origin),J=U(O.origin??"value");if(O.origin==="string")return`${L?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.maximum.toString()} ${L?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(O.origin==="number"){let S=O.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${O.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${S}`}if(O.origin==="array"||O.origin==="set"){let S=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",W=O.inclusive?`${O.maximum} ${L?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${O.maximum} ${L?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${J} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${W}`.trim()}let P=O.inclusive?"<=":"<",z=E(O.origin??"value");if(L?.unit)return`${L.longLabel} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.maximum.toString()} ${L.unit}`;return`${L?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.maximum.toString()}`}case"too_small":{let L=j(O.origin),J=U(O.origin??"value");if(O.origin==="string")return`${L?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.minimum.toString()} ${L?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(O.origin==="number"){let S=O.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${O.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${J} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${S}`}if(O.origin==="array"||O.origin==="set"){let S=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(O.minimum===1&&O.inclusive){let X=O.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: ${J} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${X}`}let W=O.inclusive?`${O.minimum} ${L?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${O.minimum} ${L?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${J} ${S} \u05DC\u05D4\u05DB\u05D9\u05DC ${W}`.trim()}let P=O.inclusive?">=":">",z=E(O.origin??"value");if(L?.unit)return`${L.shortLabel} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.minimum.toString()} ${L.unit}`;return`${L?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${J} ${z} ${P}${O.minimum.toString()}`}case"invalid_format":{let L=O;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 J=N[L.format],P=J?.label??L.format,S=(J?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${P} \u05DC\u05D0 ${S}`}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 ${O.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${O.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${O.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${V(O.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(O.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};var v5=r(()=>{n()});function uO(){return{localeError:aB()}}var aB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, a primljeno je ${N}`}case"invalid_value":if(U.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${M(U.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} ima ${E}${U.maximum.toString()} ${j.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} bude ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Premalo: o\u010Dekivano da ${N} ima ${E}${U.minimum.toString()} ${j.unit}`;return`Premalo: o\u010Dekivano da ${N} bude ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neispravan tekst: mora zapo\u010Dinjati s "${E.prefix}"`;if(E.format==="ends_with")return`Neispravan tekst: mora zavr\u0161avati s "${E.suffix}"`;if(E.format==="includes")return`Neispravan tekst: mora sadr\u017Eavati "${E.includes}"`;if(E.format==="regex")return`Neispravan tekst: mora odgovarati uzorku ${E.pattern}`;return`Neispravna ${D[E.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"}: ${V(U.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${I[U.origin]??U.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${I[U.origin]??U.origin}`;default:return"Neispravan unos"}}};var w5=r(()=>{n()});function yO(){return{localeError:sB()}}var sB=()=>{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"},I={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, a kapott \xE9rt\xE9k ${N}`}case"invalid_value":if(U.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${M(U.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`T\xFAl nagy: ${U.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${E}${U.maximum.toString()} ${j.unit??"elem"}`;return`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${U.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} m\xE9rete t\xFAl kicsi ${E}${U.minimum.toString()} ${j.unit}`;return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} t\xFAl kicsi ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\xC9rv\xE9nytelen string: "${E.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`;if(E.format==="ends_with")return`\xC9rv\xE9nytelen string: "${E.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`;if(E.format==="includes")return`\xC9rv\xE9nytelen string: "${E.includes}" \xE9rt\xE9ket kell tartalmaznia`;if(E.format==="regex")return`\xC9rv\xE9nytelen string: ${E.pattern} mint\xE1nak kell megfelelnie`;return`\xC9rv\xE9nytelen ${D[E.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":""}: ${V(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 r5=r(()=>{n()});function f5(_,$,D){return Math.abs(_)===1?$:D}function y0(_){if(!_)return"";let $=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],D=_[_.length-1];return _+($.includes(D)?"\u0576":"\u0568")}function hO(){return{localeError:_M()}}var _M=()=>{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"},I={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=f5(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 ${y0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${E}${U.maximum.toString()} ${A}`}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 ${y0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=f5(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 ${y0(U.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${E}${U.minimum.toString()} ${A}`}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 ${y0(U.origin)} \u056C\u056B\u0576\u056B ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${E.prefix}"-\u0578\u057E`;if(E.format==="ends_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${E.suffix}"-\u0578\u057E`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;return`\u054D\u056D\u0561\u056C ${D[E.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":""}. ${V(U.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${y0(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 ${y0(U.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};var x5=r(()=>{n()});function cO(){return{localeError:$M()}}var $M=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak valid: diharapkan instanceof ${U.expected}, diterima ${N}`;return`Input tidak valid: diharapkan ${E}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak valid: diharapkan ${M(U.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: diharapkan ${U.origin??"value"} memiliki ${E}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: diharapkan ${U.origin??"value"} menjadi ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: diharapkan ${U.origin} memiliki ${E}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: diharapkan ${U.origin} menjadi ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`String tidak valid: harus dimulai dengan "${E.prefix}"`;if(E.format==="ends_with")return`String tidak valid: harus berakhir dengan "${E.suffix}"`;if(E.format==="includes")return`String tidak valid: harus menyertakan "${E.includes}"`;if(E.format==="regex")return`String tidak valid: harus sesuai pola ${E.pattern}`;return`${D[E.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":""}: ${V(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 u5=r(()=>{n()});function nO(){return{localeError:DM()}}var DM=()=>{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"},I={nan:"NaN",number:"n\xFAmer",array:"fylki"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}`}case"invalid_value":if(U.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${M(U.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} hafi ${E}${U.maximum.toString()} ${j.unit??"hluti"}`;return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} s\xE9 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} hafi ${E}${U.minimum.toString()} ${j.unit}`;return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} s\xE9 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${E.prefix}"`;if(E.format==="ends_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${E.suffix}"`;if(E.format==="includes")return`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${E.includes}"`;if(E.format==="regex")return`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${E.pattern}`;return`Rangt ${D[E.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"}: ${V(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 y5=r(()=>{n()});function dO(){return{localeError:UM()}}var UM=()=>{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"},I={nan:"NaN",number:"numero",array:"vettore"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input non valido: atteso instanceof ${U.expected}, ricevuto ${N}`;return`Input non valido: atteso ${E}, ricevuto ${N}`}case"invalid_value":if(U.values.length===1)return`Input non valido: atteso ${M(U.values[0])}`;return`Opzione non valida: atteso uno tra ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Troppo grande: ${U.origin??"valore"} deve avere ${E}${U.maximum.toString()} ${j.unit??"elementi"}`;return`Troppo grande: ${U.origin??"valore"} deve essere ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Troppo piccolo: ${U.origin} deve avere ${E}${U.minimum.toString()} ${j.unit}`;return`Troppo piccolo: ${U.origin} deve essere ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Stringa non valida: deve iniziare con "${E.prefix}"`;if(E.format==="ends_with")return`Stringa non valida: deve terminare con "${E.suffix}"`;if(E.format==="includes")return`Stringa non valida: deve includere "${E.includes}"`;if(E.format==="regex")return`Stringa non valida: deve corrispondere al pattern ${E.pattern}`;return`Input non valido: ${D[E.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"}: ${V(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 h5=r(()=>{n()});function mO(){return{localeError:IM()}}var IM=()=>{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"},I={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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: ${E}\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: ${M(U.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${V(U.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let E=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"}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5927\u304D\u3059\u304E\u308B\u5024: ${U.origin??"\u5024"}\u306F${U.maximum.toString()}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let E=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}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${U.origin}\u306F${U.minimum.toString()}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="ends_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="includes")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="regex")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${E.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u7121\u52B9\u306A${D[E.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":""}: ${V(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 c5=r(()=>{n()});function lO(){return{localeError:EM()}}var EM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let E=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} ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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} ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"-\u10D8\u10D7`;if(E.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 "${E.suffix}"-\u10D8\u10D7`;if(E.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 "${E.includes}"-\u10E1`;if(E.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 ${E.pattern}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${D[E.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"}: ${V(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 n5=r(()=>{n()});function zU(){return{localeError:jM()}}var jM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E} ${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"} ${E} ${U.maximum.toString()}`}case"too_small":{let E=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} ${E} ${U.minimum.toString()} ${j.unit}`;return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin} ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${D[E.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 ${V(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 iO=r(()=>{n()});function tO(){return zU()}var d5=r(()=>{iO()});function oO(){return{localeError:NM()}}var NM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(U.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${V(U.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let E=U.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",j=E==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),A=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()}${A} ${E}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()} ${E}${j}`}case"too_small":{let E=U.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",j=E==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),A=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()}${A} ${E}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()} ${E}${j}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="ends_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="includes")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="regex")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${E.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C ${D[E.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: ${V(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 m5=r(()=>{n()});function l5(_){let $=Math.abs(_),D=$%10,I=$%100;if(I>=11&&I<=19||D===0)return"many";if(D===1)return"one";return"few"}function pO(){return{localeError:gM()}}var XU=(_)=>{return _.charAt(0).toUpperCase()+_.slice(1)},gM=()=>{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,E,j,N){let A=_[U]??null;if(A===null)return A;return{unit:A.unit[E],verb:A.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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 - ${E}`}case"invalid_value":if(U.values.length===1)return`Privalo b\u016Bti ${M(U.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${V(U.values,"|")} pasirinkim\u0173`;case"too_big":{let E=I[U.origin]??U.origin,j=$(U.origin,l5(Number(U.maximum)),U.inclusive??!1,"smaller");if(j?.verb)return`${XU(E??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`${XU(E??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.maximum.toString()} ${j?.unit}`}case"too_small":{let E=I[U.origin]??U.origin,j=$(U.origin,l5(Number(U.minimum)),U.inclusive??!1,"bigger");if(j?.verb)return`${XU(E??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`${XU(E??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.minimum.toString()} ${j?.unit}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Eilut\u0117 privalo prasid\u0117ti "${E.prefix}"`;if(E.format==="ends_with")return`Eilut\u0117 privalo pasibaigti "${E.suffix}"`;if(E.format==="includes")return`Eilut\u0117 privalo \u012Ftraukti "${E.includes}"`;if(E.format==="regex")return`Eilut\u0117 privalo atitikti ${E.pattern}`;return`Neteisingas ${D[E.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"}: ${V(U.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let E=I[U.origin]??U.origin;return`${XU(E??U.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};var i5=r(()=>{n()});function eO(){return{localeError:AM()}}var AM=()=>{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"},I={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`Invalid ${D[E.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"}: ${V(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 t5=r(()=>{n()});function aO(){return{localeError:OM()}}var OM=()=>{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"},I={nan:"NaN",number:"nombor"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak sah: dijangka instanceof ${U.expected}, diterima ${N}`;return`Input tidak sah: dijangka ${E}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak sah: dijangka ${M(U.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: dijangka ${U.origin??"nilai"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: dijangka ${U.origin??"nilai"} adalah ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: dijangka ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: dijangka ${U.origin} adalah ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`String tidak sah: mesti bermula dengan "${E.prefix}"`;if(E.format==="ends_with")return`String tidak sah: mesti berakhir dengan "${E.suffix}"`;if(E.format==="includes")return`String tidak sah: mesti mengandungi "${E.includes}"`;if(E.format==="regex")return`String tidak sah: mesti sepadan dengan corak ${E.pattern}`;return`${D[E.format]??U.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${U.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${V(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 o5=r(()=>{n()});function sO(){return{localeError:LM()}}var LM=()=>{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"},I={nan:"NaN",number:"getal"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ongeldige invoer: verwacht instanceof ${U.expected}, ontving ${N}`;return`Ongeldige invoer: verwacht ${E}, ontving ${N}`}case"invalid_value":if(U.values.length===1)return`Ongeldige invoer: verwacht ${M(U.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E}${U.maximum.toString()} ${j.unit??"elementen"} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin??"waarde"} ${E}${U.maximum.toString()} is`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=U.origin==="date"?"vroeg":U.origin==="string"?"kort":"klein";if(j)return`Te ${N}: verwacht dat ${U.origin} ${E}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin} ${E}${U.minimum.toString()} is`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ongeldige tekst: moet met "${E.prefix}" beginnen`;if(E.format==="ends_with")return`Ongeldige tekst: moet op "${E.suffix}" eindigen`;if(E.format==="includes")return`Ongeldige tekst: moet "${E.includes}" bevatten`;if(E.format==="regex")return`Ongeldige tekst: moet overeenkomen met patroon ${E.pattern}`;return`Ongeldig: ${D[E.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":""}: ${V(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 p5=r(()=>{n()});function _L(){return{localeError:SM()}}var SM=()=>{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"},I={nan:"NaN",number:"tall",array:"liste"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldig input: forventet instanceof ${U.expected}, fikk ${N}`;return`Ugyldig input: forventet ${E}, fikk ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig verdi: forventet ${M(U.values[0])}`;return`Ugyldig valg: forventet en av ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${E}${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`For lite(n): forventet ${U.origin} til \xE5 ha ${E}${U.minimum.toString()} ${j.unit}`;return`For lite(n): forventet ${U.origin} til \xE5 ha ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ugyldig streng: m\xE5 starte med "${E.prefix}"`;if(E.format==="ends_with")return`Ugyldig streng: m\xE5 ende med "${E.suffix}"`;if(E.format==="includes")return`Ugyldig streng: m\xE5 inneholde "${E.includes}"`;if(E.format==="regex")return`Ugyldig streng: m\xE5 matche m\xF8nsteret ${E.pattern}`;return`Ugyldig ${D[E.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"}: ${V(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 e5=r(()=>{n()});function $L(){return{localeError:JM()}}var JM=()=>{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"},I={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`F\xE2sit giren: umulan instanceof ${U.expected}, al\u0131nan ${N}`;return`F\xE2sit giren: umulan ${E}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`F\xE2sit giren: umulan ${M(U.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${E}${U.maximum.toString()} ${j.unit??"elements"} sahip olmal\u0131yd\u0131.`;return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${E}${U.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${E}${U.minimum.toString()} ${j.unit} sahip olmal\u0131yd\u0131.`;return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${E}${U.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`F\xE2sit metin: "${E.prefix}" ile ba\u015Flamal\u0131.`;if(E.format==="ends_with")return`F\xE2sit metin: "${E.suffix}" ile bitmeli.`;if(E.format==="includes")return`F\xE2sit metin: "${E.includes}" ihtiv\xE2 etmeli.`;if(E.format==="regex")return`F\xE2sit metin: ${E.pattern} nak\u015F\u0131na uymal\u0131.`;return`F\xE2sit ${D[E.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":""}: ${V(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 a5=r(()=>{n()});function DL(){return{localeError:WM()}}var WM=()=>{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"},I={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()} \u0648\u064A`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} ${j.unit} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} \u0648\u064A`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${E.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;if(E.format==="ends_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${E.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;if(E.format==="includes")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${E.includes}" \u0648\u0644\u0631\u064A`;if(E.format==="regex")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${E.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;return`${D[E.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"}: ${V(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 s5=r(()=>{n()});function UL(){return{localeError:PM()}}var PM=()=>{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"},I={nan:"NaN",number:"liczba",array:"tablica"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, otrzymano ${N}`}case"invalid_value":if(U.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${M(U.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${E.prefix}"`;if(E.format==="ends_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${E.suffix}"`;if(E.format==="includes")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${E.includes}"`;if(E.format==="regex")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${E.pattern}`;return`Nieprawid\u0142ow(y/a/e) ${D[E.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":""}: ${V(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 _G=r(()=>{n()});function IL(){return{localeError:zM()}}var zM=()=>{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"},I={nan:"NaN",number:"n\xFAmero",null:"nulo"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Tipo inv\xE1lido: esperado instanceof ${U.expected}, recebido ${N}`;return`Tipo inv\xE1lido: esperado ${E}, recebido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: esperado ${M(U.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Muito grande: esperado que ${U.origin??"valor"} tivesse ${E}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Muito grande: esperado que ${U.origin??"valor"} fosse ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Muito pequeno: esperado que ${U.origin} tivesse ${E}${U.minimum.toString()} ${j.unit}`;return`Muito pequeno: esperado que ${U.origin} fosse ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Texto inv\xE1lido: deve come\xE7ar com "${E.prefix}"`;if(E.format==="ends_with")return`Texto inv\xE1lido: deve terminar com "${E.suffix}"`;if(E.format==="includes")return`Texto inv\xE1lido: deve incluir "${E.includes}"`;if(E.format==="regex")return`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${E.pattern}`;return`${D[E.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":""}: ${V(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 $G=r(()=>{n()});function EL(){return{localeError:XM()}}var XM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;return`Intrare invalid\u0103: a\u0219teptat ${E}, primit ${N}`}case"invalid_value":if(U.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${M(U.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"elemente"}`;return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} s\u0103 fie ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Prea mic: a\u0219teptat ca ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Prea mic: a\u0219teptat ca ${U.origin} s\u0103 fie ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${E.prefix}"`;if(E.format==="ends_with")return`\u0218ir invalid: trebuie s\u0103 se termine cu "${E.suffix}"`;if(E.format==="includes")return`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${E.includes}"`;if(E.format==="regex")return`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${E.pattern}`;return`Format invalid: ${D[E.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: ${V(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 DG=r(()=>{n()});function UG(_,$,D,I){let U=Math.abs(_),E=U%10,j=U%100;if(j>=11&&j<=19)return I;if(E===1)return $;if(E>=2&&E<=4)return D;return I}function jL(){return{localeError:GM()}}var GM=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=UG(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 ${E}${U.maximum.toString()} ${A}`}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 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=UG(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 ${E}${U.minimum.toString()} ${A}`}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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${D[E.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":""}: ${V(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 IG=r(()=>{n()});function NL(){return{localeError:RM()}}var RM=()=>{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"},I={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Neveljaven vnos: pri\u010Dakovano instanceof ${U.expected}, prejeto ${N}`;return`Neveljaven vnos: pri\u010Dakovano ${E}, prejeto ${N}`}case"invalid_value":if(U.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${M(U.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} imelo ${E}${U.maximum.toString()} ${j.unit??"elementov"}`;return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Premajhno: pri\u010Dakovano, da bo ${U.origin} imelo ${E}${U.minimum.toString()} ${j.unit}`;return`Premajhno: pri\u010Dakovano, da bo ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neveljaven niz: mora se za\u010Deti z "${E.prefix}"`;if(E.format==="ends_with")return`Neveljaven niz: mora se kon\u010Dati z "${E.suffix}"`;if(E.format==="includes")return`Neveljaven niz: mora vsebovati "${E.includes}"`;if(E.format==="regex")return`Neveljaven niz: mora ustrezati vzorcu ${E.pattern}`;return`Neveljaven ${D[E.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"}: ${V(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 EG=r(()=>{n()});function gL(){return{localeError:YM()}}var YM=()=>{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"},I={nan:"NaN",number:"antal",array:"lista"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, fick ${N}`}case"invalid_value":if(U.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${M(U.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`F\xF6r stor(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.maximum.toString()} ${j.unit??"element"}`;return`F\xF6r stor(t): f\xF6rv\xE4ntat ${U.origin??"v\xE4rdet"} att ha ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.minimum.toString()} ${j.unit}`;return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${E.prefix}"`;if(E.format==="ends_with")return`Ogiltig str\xE4ng: m\xE5ste sluta med "${E.suffix}"`;if(E.format==="includes")return`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${E.includes}"`;if(E.format==="regex")return`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${E.pattern}"`;return`Ogiltig(t) ${D[E.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"}: ${V(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 jG=r(()=>{n()});function AL(){return{localeError:QM()}}var QM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let E=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"} ${E}${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"} ${E}${U.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let E=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} ${E}${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} ${E}${U.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="ends_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="includes")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="regex")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${E.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[E.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":""}: ${V(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 NG=r(()=>{n()});function OL(){return{localeError:KM()}}var KM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E} \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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${E} ${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${E} ${U.maximum.toString()}`}case"too_small":{let E=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${E} ${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${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;if(E.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 ${E.pattern}`;return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${D[E.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: ${V(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 gG=r(()=>{n()});function LL(){return{localeError:TM()}}var TM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${M(U.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${E}${U.maximum.toString()} ${j.unit??"\xF6\u011Fe"}`;return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ge\xE7ersiz metin: "${E.prefix}" ile ba\u015Flamal\u0131`;if(E.format==="ends_with")return`Ge\xE7ersiz metin: "${E.suffix}" ile bitmeli`;if(E.format==="includes")return`Ge\xE7ersiz metin: "${E.includes}" i\xE7ermeli`;if(E.format==="regex")return`Ge\xE7ersiz metin: ${E.pattern} desenine uymal\u0131`;return`Ge\xE7ersiz ${D[E.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":""}: ${V(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 AG=r(()=>{n()});function GU(){return{localeError:FM()}}var FM=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=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} ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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} ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${D[E.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":""}: ${V(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 SL=r(()=>{n()});function JL(){return GU()}var OG=r(()=>{SL()});function WL(){return{localeError:VM()}}var VM=()=>{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"},I={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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: ${E} \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: ${M(U.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${V(U.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${U.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${E}${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 ${E}${U.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${U.origin} \u06A9\u06D2 ${E}${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 ${E}${U.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="ends_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="includes")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="regex")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${E.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;return`\u063A\u0644\u0637 ${D[E.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":""}: ${V(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 LG=r(()=>{n()});function PL(){return{localeError:BM()}}var BM=()=>{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"},I={nan:"NaN",number:"raqam",array:"massiv"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, qabul qilingan ${N}`}case"invalid_value":if(U.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${M(U.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Juda katta: kutilgan ${U.origin??"qiymat"} ${E}${U.maximum.toString()} ${j.unit} ${j.verb}`;return`Juda katta: kutilgan ${U.origin??"qiymat"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Juda kichik: kutilgan ${U.origin} ${E}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Juda kichik: kutilgan ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Noto\u2018g\u2018ri satr: "${E.prefix}" bilan boshlanishi kerak`;if(E.format==="ends_with")return`Noto\u2018g\u2018ri satr: "${E.suffix}" bilan tugashi kerak`;if(E.format==="includes")return`Noto\u2018g\u2018ri satr: "${E.includes}" ni o\u2018z ichiga olishi kerak`;if(E.format==="regex")return`Noto\u2018g\u2018ri satr: ${E.pattern} shabloniga mos kelishi kerak`;return`Noto\u2018g\u2018ri ${D[E.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":""}: ${V(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 SG=r(()=>{n()});function zL(){return{localeError:MM()}}var MM=()=>{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"},I={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, 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 ${M(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"ph\u1EA7n t\u1EED"}`;return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${E.prefix}"`;if(E.format==="ends_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${E.suffix}"`;if(E.format==="includes")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${E.includes}"`;if(E.format==="regex")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${E.pattern}`;return`${D[E.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: ${V(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 JG=r(()=>{n()});function XL(){return{localeError:bM()}}var bM=()=>{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"},I={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`}case"invalid_value":if(U.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${M(U.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${E}${U.maximum.toString()} ${j.unit??"\u4E2A\u5143\u7D20"}`;return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${E.prefix}" \u5F00\u5934`;if(E.format==="ends_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${E.suffix}" \u7ED3\u5C3E`;if(E.format==="includes")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${E.includes}"`;if(E.format==="regex")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${E.pattern}`;return`\u65E0\u6548${D[E.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): ${V(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 WG=r(()=>{n()});function GL(){return{localeError:ZM()}}var ZM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}\uFF0C\u4F46\u6536\u5230 ${N}`}case"invalid_value":if(U.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${M(U.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${E}${U.maximum.toString()} ${j.unit??"\u500B\u5143\u7D20"}`;return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${E}${U.minimum.toString()} ${j.unit}`;return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${E.prefix}" \u958B\u982D`;if(E.format==="ends_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${E.suffix}" \u7D50\u5C3E`;if(E.format==="includes")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${E.includes}"`;if(E.format==="regex")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${E.pattern}`;return`\u7121\u6548\u7684 ${D[E.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${V(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 PG=r(()=>{n()});function RL(){return{localeError:HM()}}var HM=()=>{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"},I={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=b(U.input),N=I[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 ${E}, \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 ${M(U.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${V(U.values,"|")}`;case"too_big":{let E=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} ${E}${U.maximum} ${j.unit}`;return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${E}${U.maximum}`}case"too_small":{let E=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} ${E}${U.minimum} ${j.unit}`;return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${E}${U.minimum}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.format==="ends_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${E.suffix}"`;if(E.format==="includes")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${E.includes}"`;if(E.format==="regex")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${E.pattern}`;return`A\u1E63\xEC\u1E63e: ${D[E.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: ${V(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 zG=r(()=>{n()});var h0={};x$(h0,{zhTW:()=>GL,zhCN:()=>XL,yo:()=>RL,vi:()=>zL,uz:()=>PL,ur:()=>WL,uk:()=>GU,ua:()=>JL,tr:()=>LL,th:()=>OL,ta:()=>AL,sv:()=>gL,sl:()=>NL,ru:()=>jL,ro:()=>EL,pt:()=>IL,ps:()=>DL,pl:()=>UL,ota:()=>$L,no:()=>_L,nl:()=>sO,ms:()=>aO,mk:()=>eO,lt:()=>pO,ko:()=>oO,km:()=>zU,kh:()=>tO,ka:()=>lO,ja:()=>mO,it:()=>dO,is:()=>nO,id:()=>cO,hy:()=>hO,hu:()=>yO,hr:()=>uO,he:()=>xO,frCA:()=>fO,fr:()=>rO,fi:()=>wO,fa:()=>vO,es:()=>CO,eo:()=>qO,en:()=>PU,el:()=>HO,de:()=>ZO,da:()=>bO,cs:()=>MO,ca:()=>BO,bg:()=>VO,be:()=>FO,az:()=>TO,ar:()=>KO});var YL=r(()=>{G5();R5();Q5();K5();T5();F5();V5();B5();M5();kO();b5();Z5();H5();k5();q5();C5();v5();w5();r5();x5();u5();y5();h5();c5();n5();d5();iO();m5();i5();t5();o5();p5();e5();a5();s5();_G();$G();DG();IG();EG();jG();NG();gG();AG();OG();SL();LG();SG();JG();WG();PG();zG()});class QL{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 I={...D,...this._map.get(_)};return Object.keys(I).length?I:void 0}return this._map.get(_)}has(_){return this._map.has(_)}}function RU(){return new QL}var XG,$E,DE,u_;var YU=r(()=>{$E=Symbol("ZodOutput"),DE=Symbol("ZodInput");(XG=globalThis).__zod_globalRegistry??(XG.__zod_globalRegistry=RU());u_=globalThis.__zod_globalRegistry});function KL(_,$){return new _({type:"string",...v($)})}function TL(_,$){return new _({type:"string",coerce:!0,...v($)})}function UE(_,$){return new _({type:"string",format:"email",check:"string_format",abort:!1,...v($)})}function QU(_,$){return new _({type:"string",format:"guid",check:"string_format",abort:!1,...v($)})}function IE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,...v($)})}function EE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...v($)})}function jE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...v($)})}function NE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...v($)})}function KU(_,$){return new _({type:"string",format:"url",check:"string_format",abort:!1,...v($)})}function gE(_,$){return new _({type:"string",format:"emoji",check:"string_format",abort:!1,...v($)})}function AE(_,$){return new _({type:"string",format:"nanoid",check:"string_format",abort:!1,...v($)})}function OE(_,$){return new _({type:"string",format:"cuid",check:"string_format",abort:!1,...v($)})}function LE(_,$){return new _({type:"string",format:"cuid2",check:"string_format",abort:!1,...v($)})}function SE(_,$){return new _({type:"string",format:"ulid",check:"string_format",abort:!1,...v($)})}function JE(_,$){return new _({type:"string",format:"xid",check:"string_format",abort:!1,...v($)})}function WE(_,$){return new _({type:"string",format:"ksuid",check:"string_format",abort:!1,...v($)})}function PE(_,$){return new _({type:"string",format:"ipv4",check:"string_format",abort:!1,...v($)})}function zE(_,$){return new _({type:"string",format:"ipv6",check:"string_format",abort:!1,...v($)})}function FL(_,$){return new _({type:"string",format:"mac",check:"string_format",abort:!1,...v($)})}function XE(_,$){return new _({type:"string",format:"cidrv4",check:"string_format",abort:!1,...v($)})}function GE(_,$){return new _({type:"string",format:"cidrv6",check:"string_format",abort:!1,...v($)})}function RE(_,$){return new _({type:"string",format:"base64",check:"string_format",abort:!1,...v($)})}function YE(_,$){return new _({type:"string",format:"base64url",check:"string_format",abort:!1,...v($)})}function QE(_,$){return new _({type:"string",format:"e164",check:"string_format",abort:!1,...v($)})}function KE(_,$){return new _({type:"string",format:"jwt",check:"string_format",abort:!1,...v($)})}function VL(_,$){return new _({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...v($)})}function BL(_,$){return new _({type:"string",format:"date",check:"string_format",...v($)})}function ML(_,$){return new _({type:"string",format:"time",check:"string_format",precision:null,...v($)})}function bL(_,$){return new _({type:"string",format:"duration",check:"string_format",...v($)})}function ZL(_,$){return new _({type:"number",checks:[],...v($)})}function HL(_,$){return new _({type:"number",coerce:!0,checks:[],...v($)})}function kL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"safeint",...v($)})}function qL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float32",...v($)})}function CL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float64",...v($)})}function vL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"int32",...v($)})}function wL(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"uint32",...v($)})}function rL(_,$){return new _({type:"boolean",...v($)})}function fL(_,$){return new _({type:"boolean",coerce:!0,...v($)})}function xL(_,$){return new _({type:"bigint",...v($)})}function uL(_,$){return new _({type:"bigint",coerce:!0,...v($)})}function yL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...v($)})}function hL(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...v($)})}function cL(_,$){return new _({type:"symbol",...v($)})}function nL(_,$){return new _({type:"undefined",...v($)})}function dL(_,$){return new _({type:"null",...v($)})}function mL(_){return new _({type:"any"})}function lL(_){return new _({type:"unknown"})}function iL(_,$){return new _({type:"never",...v($)})}function tL(_,$){return new _({type:"void",...v($)})}function oL(_,$){return new _({type:"date",...v($)})}function pL(_,$){return new _({type:"date",coerce:!0,...v($)})}function eL(_,$){return new _({type:"nan",...v($)})}function V$(_,$){return new cI({check:"less_than",...v($),value:_,inclusive:!1})}function I$(_,$){return new cI({check:"less_than",...v($),value:_,inclusive:!0})}function B$(_,$){return new nI({check:"greater_than",...v($),value:_,inclusive:!1})}function n_(_,$){return new nI({check:"greater_than",...v($),value:_,inclusive:!0})}function TU(_){return B$(0,_)}function FU(_){return V$(0,_)}function VU(_){return I$(0,_)}function BU(_){return n_(0,_)}function S6(_,$){return new m2({check:"multiple_of",...v($),value:_})}function J6(_,$){return new t2({check:"max_size",...v($),maximum:_})}function M$(_,$){return new o2({check:"min_size",...v($),minimum:_})}function f6(_,$){return new p2({check:"size_equals",...v($),size:_})}function x6(_,$){return new e2({check:"max_length",...v($),maximum:_})}function l$(_,$){return new a2({check:"min_length",...v($),minimum:_})}function u6(_,$){return new s2({check:"length_equals",...v($),length:_})}function Q4(_,$){return new _A({check:"string_format",format:"regex",...v($),pattern:_})}function K4(_){return new $A({check:"string_format",format:"lowercase",...v(_)})}function T4(_){return new DA({check:"string_format",format:"uppercase",...v(_)})}function F4(_,$){return new UA({check:"string_format",format:"includes",...v($),includes:_})}function V4(_,$){return new IA({check:"string_format",format:"starts_with",...v($),prefix:_})}function B4(_,$){return new EA({check:"string_format",format:"ends_with",...v($),suffix:_})}function MU(_,$,D){return new jA({check:"property",property:_,schema:$,...v(D)})}function M4(_,$){return new NA({check:"mime_type",mime:_,...v($)})}function X$(_){return new gA({check:"overwrite",tx:_})}function b4(_){return X$(($)=>$.normalize(_))}function Z4(){return X$((_)=>_.trim())}function H4(){return X$((_)=>_.toLowerCase())}function k4(){return X$((_)=>_.toUpperCase())}function q4(){return X$((_)=>I2(_))}function aL(_,$,D){return new _({type:"array",element:$,...v(D)})}function qM(_,$,D){return new _({type:"union",options:$,...v(D)})}function CM(_,$,D){return new _({type:"union",options:$,inclusive:!1,...v(D)})}function vM(_,$,D,I){return new _({type:"union",options:D,discriminator:$,...v(I)})}function wM(_,$,D){return new _({type:"intersection",left:$,right:D})}function rM(_,$,D,I){let U=D instanceof t;return new _({type:"tuple",items:$,rest:U?D:null,...v(U?I:D)})}function fM(_,$,D,I){return new _({type:"record",keyType:$,valueType:D,...v(I)})}function xM(_,$,D,I){return new _({type:"map",keyType:$,valueType:D,...v(I)})}function uM(_,$,D){return new _({type:"set",valueType:$,...v(D)})}function yM(_,$,D){let I=Array.isArray($)?Object.fromEntries($.map((U)=>[U,U])):$;return new _({type:"enum",entries:I,...v(D)})}function hM(_,$,D){return new _({type:"enum",entries:$,...v(D)})}function cM(_,$,D){return new _({type:"literal",values:Array.isArray($)?$:[$],...v(D)})}function sL(_,$){return new _({type:"file",...v($)})}function nM(_,$){return new _({type:"transform",transform:$})}function dM(_,$){return new _({type:"optional",innerType:$})}function mM(_,$){return new _({type:"nullable",innerType:$})}function lM(_,$,D){return new _({type:"default",innerType:$,get defaultValue(){return typeof D==="function"?D():j2(D)}})}function iM(_,$,D){return new _({type:"nonoptional",innerType:$,...v(D)})}function tM(_,$){return new _({type:"success",innerType:$})}function oM(_,$,D){return new _({type:"catch",innerType:$,catchValue:typeof D==="function"?D:()=>D})}function pM(_,$,D){return new _({type:"pipe",in:$,out:D})}function eM(_,$){return new _({type:"readonly",innerType:$})}function aM(_,$,D){return new _({type:"template_literal",parts:$,...v(D)})}function sM(_,$){return new _({type:"lazy",getter:$})}function _b(_,$){return new _({type:"promise",innerType:$})}function _S(_,$,D){let I=v(D);return I.abort??(I.abort=!0),new _({type:"custom",check:"custom",fn:$,...I})}function $S(_,$,D){return new _({type:"custom",check:"custom",fn:$,...v(D)})}function DS(_,$){let D=GG((I)=>{return I.addIssue=(U)=>{if(typeof U==="string")I.issues.push(q0(U,I.value,D._zod.def));else{let E=U;if(E.fatal)E.continue=!1;E.code??(E.code="custom"),E.input??(E.input=I.value),E.inst??(E.inst=D),E.continue??(E.continue=!D._zod.def.abort),I.issues.push(q0(E))}},_(I.value,I)},$);return D}function GG(_,$){let D=new Y_({check:"custom",...v($)});return D._zod.check=_,D}function US(_){let $=new Y_({check:"describe"});return $._zod.onattach=[(D)=>{let I=u_.get(D)??{};u_.add(D,{...I,description:_})}],$._zod.check=()=>{},$}function IS(_){let $=new Y_({check:"meta"});return $._zod.onattach=[(D)=>{let I=u_.get(D)??{};u_.add(D,{...I,..._})}],$._zod.check=()=>{},$}function ES(_,$){let D=v($),I=D.truthy??["true","1","yes","on","y","enabled"],U=D.falsy??["false","0","no","off","n","disabled"];if(D.case!=="sensitive")I=I.map((z)=>typeof z==="string"?z.toLowerCase():z),U=U.map((z)=>typeof z==="string"?z.toLowerCase():z);let E=new Set(I),j=new Set(U),N=_.Codec??WU,A=_.Boolean??SU,L=new(_.String??Y4)({type:"string",error:D.error}),J=new A({type:"boolean",error:D.error}),P=new N({type:"pipe",in:L,out:J,transform:(z,S)=>{let W=z;if(D.case!=="sensitive")W=W.toLowerCase();if(E.has(W))return!0;else if(j.has(W))return!1;else return S.issues.push({code:"invalid_value",expected:"stringbool",values:[...E,...j],input:S.value,inst:P,continue:!1}),{}},reverseTransform:(z,S)=>{if(z===!0)return I[0]||"true";else return U[0]||"false"},error:D.error});return P}function c0(_,$,D,I={}){let U=v(I),E={...v(I),check:"string_format",type:"string",format:$,fn:typeof D==="function"?D:(N)=>D.test(N),...U};if(D instanceof RegExp)E.pattern=D;return new _(E)}var TE;var RG=r(()=>{dI();YU();QO();n();TE={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function y6(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";return{processors:_.processors??{},metadataRegistry:_?.metadata??u_,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 L_(_,$,D={path:[],schemaPath:[]}){var I;let U=_._zod.def,E=$.seen.get(_);if(E){if(E.count++,D.schemaPath.includes(_))E.cycle=D.path;return E.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 P=j.schema,z=$.processors[U.type];if(!z)throw Error(`[toJSONSchema]: Non-representable type encountered: ${U.type}`);z(_,$,P,L)}let J=_._zod.parent;if(J){if(!j.ref)j.ref=J;L_(J,$,L),$.seen.get(J).isParent=!0}}let A=$.metadataRegistry.get(_);if(A)Object.assign(j.schema,A);if($.io==="input"&&p_(_))delete j.schema.examples,delete j.schema.default;if($.io==="input"&&"_prefault"in j.schema)(I=j.schema).default??(I.default=j.schema._prefault);return delete j.schema._prefault,$.seen.get(_).schema}function h6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let I=new Map;for(let j of _.seen.entries()){let N=_.metadataRegistry.get(j[0])?.id;if(N){let A=I.get(N);if(A&&A!==j[0])throw Error(`Duplicate schema id "${N}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);I.set(N,j[0])}}let U=(j)=>{let N=_.target==="draft-2020-12"?"$defs":"definitions";if(_.external){let J=_.external.registry.get(j[0])?.id,P=_.external.uri??((S)=>S);if(J)return{ref:P(J)};let z=j[1].defId??j[1].schema.id??`schema${_.counter++}`;return j[1].defId=z,{defId:z,ref:`${P("__shared")}#/${N}/${z}`}}if(j[1]===D)return{ref:"#"};let O=`${"#"}/${N}/`,L=j[1].schema.id??`__schema${_.counter++}`;return{defId:L,ref:O+L}},E=(j)=>{if(j[1].schema.$ref)return;let N=j[1],{ref:A,defId:O}=U(j);if(N.def={...N.schema},O)N.defId=O;let L=N.schema;for(let J in L)delete L[J];L.$ref=A};if(_.cycles==="throw")for(let j of _.seen.entries()){let N=j[1];if(N.cycle)throw Error(`Cycle detected: #/${N.cycle?.join("/")}/<root> + `)}z.write("payload.value = newResult;"),z.write("return payload;");let R=z.compile();return(T,Y)=>R(P,T,Y)},E,j=G4,N=!P4.jitless,O=N&&E2.value,S=$.catchall,L;_._zod.parse=(P,z)=>{L??(L=I.value);let G=P.value;if(!j(G))return P.issues.push({expected:"object",code:"invalid_type",input:G,inst:_}),P;if(N&&O&&z?.async===!1&&z.jitless!==!0){if(!E)E=U($.shape);if(P=E(P,z),!S)return P;return z5([],G,P,z,L,_)}return D(P,z)}});JU=K("$ZodUnion",(_,$)=>{o.init(_,$),D_(_._zod,"optin",()=>$.options.some((I)=>I._zod.optin==="optional")?"optional":void 0),D_(_._zod,"optout",()=>$.options.some((I)=>I._zod.optout==="optional")?"optional":void 0),D_(_._zod,"values",()=>{if($.options.every((I)=>I._zod.values))return new Set($.options.flatMap((I)=>Array.from(I._zod.values)));return}),D_(_._zod,"pattern",()=>{if($.options.every((I)=>I._zod.pattern)){let I=$.options.map((U)=>U._zod.pattern);return new RegExp(`^(${I.map((U)=>IU(U.source)).join("|")})$`)}return});let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(I,U)=>{if(D)return D(I,U);let E=!1,j=[];for(let N of $.options){let A=N._zod.run({value:I.value,issues:[]},U);if(A instanceof Promise)j.push(A),E=!0;else{if(A.issues.length===0)return A;j.push(A)}}if(!E)return _5(j,I,_,U);return Promise.all(j).then((N)=>{return _5(N,I,_,U)})}});pA=K("$ZodXor",(_,$)=>{JU.init(_,$),$.inclusive=!1;let D=$.options.length===1?$.options[0]._zod.run:null;_._zod.parse=(I,U)=>{if(D)return D(I,U);let E=!1,j=[];for(let N of $.options){let A=N._zod.run({value:I.value,issues:[]},U);if(A instanceof Promise)j.push(A),E=!0;else j.push(A)}if(!E)return $5(j,I,_,U);return Promise.all(j).then((N)=>{return $5(N,I,_,U)})}}),eA=K("$ZodDiscriminatedUnion",(_,$)=>{$.inclusive=!1,JU.init(_,$);let D=_._zod.parse;D_(_._zod,"propValues",()=>{let U={};for(let E of $.options){let j=E._zod.propValues;if(!j||Object.keys(j).length===0)throw Error(`Invalid discriminated union option at index "${$.options.indexOf(E)}"`);for(let[N,A]of Object.entries(j)){if(!U[N])U[N]=new Set;for(let O of A)U[N].add(O)}}return U});let I=k0(()=>{let U=$.options,E=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 A of N){if(E.has(A))throw Error(`Duplicate discriminator value "${String(A)}"`);E.set(A,j)}}return E});_._zod.parse=(U,E)=>{let j=U.value;if(!G4(j))return U.issues.push({code:"invalid_type",expected:"object",input:j,inst:_}),U;let N=I.value.get(j?.[$.discriminator]);if(N)return N._zod.run(U,E);if($.unionFallback||E.direction==="backward")return D(U,E);return U.issues.push({code:"invalid_union",errors:[],note:"No matching discriminator",discriminator:$.discriminator,options:Array.from(I.value.keys()),input:j,path:[$.discriminator],inst:_}),U}}),aA=K("$ZodIntersection",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value,E=$.left._zod.run({value:U,issues:[]},I),j=$.right._zod.run({value:U,issues:[]},I);if(E instanceof Promise||j instanceof Promise)return Promise.all([E,j]).then(([A,O])=>{return D5(D,A,O)});return D5(D,E,j)}});aI=K("$ZodTuple",(_,$)=>{o.init(_,$);let D=$.items;_._zod.parse=(I,U)=>{let E=I.value;if(!Array.isArray(E))return I.issues.push({input:E,inst:_,expected:"tuple",code:"invalid_type"}),I;I.value=[];let j=[],N=U5(D,"optin"),A=U5(D,"optout");if(!$.rest){if(E.length<N)return I.issues.push({code:"too_small",minimum:N,inclusive:!0,input:E,inst:_,origin:"array"}),I;if(E.length>D.length)I.issues.push({code:"too_big",maximum:D.length,inclusive:!0,input:E,inst:_,origin:"array"})}let O=Array(D.length);for(let S=0;S<D.length;S++){let L=D[S]._zod.run({value:E[S],issues:[]},U);if(L instanceof Promise)j.push(L.then((P)=>{O[S]=P}));else O[S]=L}if($.rest){let S=D.length-1,L=E.slice(D.length);for(let P of L){S++;let z=$.rest._zod.run({value:P,issues:[]},U);if(z instanceof Promise)j.push(z.then((G)=>I5(G,I,S)));else I5(z,I,S)}}if(j.length)return Promise.all(j).then(()=>E5(O,I,D,E,A));return E5(O,I,D,E,A)}});sA=K("$ZodRecord",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!w6(U))return D.issues.push({expected:"record",code:"invalid_type",input:U,inst:_}),D;let E=[],j=$.keyType._zod.values;if(j){D.value={};let N=new Set;for(let O of j)if(typeof O==="string"||typeof O==="number"||typeof O==="symbol"){N.add(typeof O==="number"?O.toString():O);let S=$.keyType._zod.run({value:O,issues:[]},I);if(S instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(S.issues.length){D.issues.push({code:"invalid_key",origin:"record",issues:S.issues.map((z)=>t_(z,I,Z_())),input:O,path:[O],inst:_});continue}let L=S.value,P=$.valueType._zod.run({value:U[O],issues:[]},I);if(P instanceof Promise)E.push(P.then((z)=>{if(z.issues.length)D.issues.push(...$$(O,z.issues));D.value[L]=z.value}));else{if(P.issues.length)D.issues.push(...$$(O,P.issues));D.value[L]=P.value}}let A;for(let O in U)if(!N.has(O))A=A??[],A.push(O);if(A&&A.length>0)D.issues.push({code:"unrecognized_keys",input:U,inst:_,keys:A})}else{D.value={};for(let N of Reflect.ownKeys(U)){if(N==="__proto__")continue;if(!Object.prototype.propertyIsEnumerable.call(U,N))continue;let A=$.keyType._zod.run({value:N,issues:[]},I);if(A instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(typeof N==="string"&&AU.test(N)&&A.issues.length){let L=$.keyType._zod.run({value:Number(N),issues:[]},I);if(L instanceof Promise)throw Error("Async schemas not supported in object keys currently");if(L.issues.length===0)A=L}if(A.issues.length){if($.mode==="loose")D.value[N]=U[N];else D.issues.push({code:"invalid_key",origin:"record",issues:A.issues.map((L)=>t_(L,I,Z_())),input:N,path:[N],inst:_});continue}let S=$.valueType._zod.run({value:U[N],issues:[]},I);if(S instanceof Promise)E.push(S.then((L)=>{if(L.issues.length)D.issues.push(...$$(N,L.issues));D.value[A.value]=L.value}));else{if(S.issues.length)D.issues.push(...$$(N,S.issues));D.value[A.value]=S.value}}}if(E.length)return Promise.all(E).then(()=>D);return D}}),_O=K("$ZodMap",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!(U instanceof Map))return D.issues.push({expected:"map",code:"invalid_type",input:U,inst:_}),D;let E=[];D.value=new Map;for(let[j,N]of U){let A=$.keyType._zod.run({value:j,issues:[]},I),O=$.valueType._zod.run({value:N,issues:[]},I);if(A instanceof Promise||O instanceof Promise)E.push(Promise.all([A,O]).then(([S,L])=>{j5(S,L,D,j,U,_,I)}));else j5(A,O,D,j,U,_,I)}if(E.length)return Promise.all(E).then(()=>D);return D}});$O=K("$ZodSet",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(!(U instanceof Set))return D.issues.push({input:U,inst:_,expected:"set",code:"invalid_type"}),D;let E=[];D.value=new Set;for(let j of U){let N=$.valueType._zod.run({value:j,issues:[]},I);if(N instanceof Promise)E.push(N.then((A)=>N5(A,D)));else N5(N,D)}if(E.length)return Promise.all(E).then(()=>D);return D}});DO=K("$ZodEnum",(_,$)=>{o.init(_,$);let D=UU($.entries),I=new Set(D);_._zod.values=I,_._zod.pattern=new RegExp(`^(${D.filter((U)=>EU.has(typeof U)).map((U)=>typeof U==="string"?z$(U):U.toString()).join("|")})$`),_._zod.parse=(U,E)=>{let j=U.value;if(I.has(j))return U;return U.issues.push({code:"invalid_value",values:D,input:j,inst:_}),U}}),UO=K("$ZodLiteral",(_,$)=>{if(o.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((I)=>typeof I==="string"?z$(I):I?z$(I.toString()):String(I)).join("|")})$`),_._zod.parse=(I,U)=>{let E=I.value;if(D.has(E))return I;return I.issues.push({code:"invalid_value",values:$.values,input:E,inst:_}),I}}),IO=K("$ZodFile",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{let U=D.value;if(U instanceof File)return D;return D.issues.push({expected:"file",code:"invalid_type",input:U,inst:_}),D}}),EO=K("$ZodTransform",(_,$)=>{o.init(_,$),_._zod.optin="optional",_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4(_.constructor.name);let U=$.transform(D.value,D);if(I.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 m$;return D.value=U,D.fallback=!0,D}});sI=K("$ZodOptional",(_,$)=>{o.init(_,$),_._zod.optin="optional",_._zod.optout="optional",D_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,void 0]):void 0}),D_(_._zod,"pattern",()=>{let D=$.innerType._zod.pattern;return D?new RegExp(`^(${IU(D.source)})?$`):void 0}),_._zod.parse=(D,I)=>{if($.innerType._zod.optin==="optional"){let U=D.value,E=$.innerType._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>g5(j,U));return g5(E,U)}if(D.value===void 0)return D;return $.innerType._zod.run(D,I)}}),jO=K("$ZodExactOptional",(_,$)=>{sI.init(_,$),D_(_._zod,"values",()=>$.innerType._zod.values),D_(_._zod,"pattern",()=>$.innerType._zod.pattern),_._zod.parse=(D,I)=>{return $.innerType._zod.run(D,I)}}),NO=K("$ZodNullable",(_,$)=>{o.init(_,$),D_(_._zod,"optin",()=>$.innerType._zod.optin),D_(_._zod,"optout",()=>$.innerType._zod.optout),D_(_._zod,"pattern",()=>{let D=$.innerType._zod.pattern;return D?new RegExp(`^(${IU(D.source)}|null)$`):void 0}),D_(_._zod,"values",()=>{return $.innerType._zod.values?new Set([...$.innerType._zod.values,null]):void 0}),_._zod.parse=(D,I)=>{if(D.value===null)return D;return $.innerType._zod.run(D,I)}}),gO=K("$ZodDefault",(_,$)=>{o.init(_,$),_._zod.optin="optional",D_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);if(D.value===void 0)return D.value=$.defaultValue,D;let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>A5(E,$));return A5(U,$)}});AO=K("$ZodPrefault",(_,$)=>{o.init(_,$),_._zod.optin="optional",D_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);if(D.value===void 0)D.value=$.defaultValue;return $.innerType._zod.run(D,I)}}),OO=K("$ZodNonOptional",(_,$)=>{o.init(_,$),D_(_._zod,"values",()=>{let D=$.innerType._zod.values;return D?new Set([...D].filter((I)=>I!==void 0)):void 0}),_._zod.parse=(D,I)=>{let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>O5(E,_));return O5(U,_)}});SO=K("$ZodSuccess",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4("ZodSuccess");let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>{return D.value=E.issues.length===0,D});return D.value=U.issues.length===0,D}}),LO=K("$ZodCatch",(_,$)=>{o.init(_,$),_._zod.optin="optional",D_(_._zod,"optout",()=>$.innerType._zod.optout),D_(_._zod,"values",()=>$.innerType._zod.values),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>{if(D.value=E.value,E.issues.length)D.value=$.catchValue({...D,error:{issues:E.issues.map((j)=>t_(j,I,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((E)=>t_(E,I,Z_()))},input:D.value}),D.issues=[],D.fallback=!0;return D}}),JO=K("$ZodNaN",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{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}}),_E=K("$ZodPipe",(_,$)=>{o.init(_,$),D_(_._zod,"values",()=>$.in._zod.values),D_(_._zod,"optin",()=>$.in._zod.optin),D_(_._zod,"optout",()=>$.out._zod.optout),D_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,I)=>{if(I.direction==="backward"){let E=$.out._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>lI(j,$.in,I));return lI(E,$.in,I)}let U=$.in._zod.run(D,I);if(U instanceof Promise)return U.then((E)=>lI(E,$.out,I));return lI(U,$.out,I)}});WU=K("$ZodCodec",(_,$)=>{o.init(_,$),D_(_._zod,"values",()=>$.in._zod.values),D_(_._zod,"optin",()=>$.in._zod.optin),D_(_._zod,"optout",()=>$.out._zod.optout),D_(_._zod,"propValues",()=>$.in._zod.propValues),_._zod.parse=(D,I)=>{if((I.direction||"forward")==="forward"){let E=$.in._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>iI(j,$,I));return iI(E,$,I)}else{let E=$.out._zod.run(D,I);if(E instanceof Promise)return E.then((j)=>iI(j,$,I));return iI(E,$,I)}}});WO=K("$ZodPreprocess",(_,$)=>{_E.init(_,$)}),PO=K("$ZodReadonly",(_,$)=>{o.init(_,$),D_(_._zod,"propValues",()=>$.innerType._zod.propValues),D_(_._zod,"values",()=>$.innerType._zod.values),D_(_._zod,"optin",()=>$.innerType?._zod?.optin),D_(_._zod,"optout",()=>$.innerType?._zod?.optout),_._zod.parse=(D,I)=>{if(I.direction==="backward")return $.innerType._zod.run(D,I);let U=$.innerType._zod.run(D,I);if(U instanceof Promise)return U.then(S5);return S5(U)}});zO=K("$ZodTemplateLiteral",(_,$)=>{o.init(_,$);let D=[];for(let I of $.parts)if(typeof I==="object"&&I!==null){if(!I._zod.pattern)throw Error(`Invalid template literal part, no pattern found: ${[...I._zod.traits].shift()}`);let U=I._zod.pattern instanceof RegExp?I._zod.pattern.source:I._zod.pattern;if(!U)throw Error(`Invalid template literal part: ${I._zod.traits}`);let E=U.startsWith("^")?1:0,j=U.endsWith("$")?U.length-1:U.length;D.push(U.slice(E,j))}else if(I===null||N2.has(typeof I))D.push(z$(`${I}`));else throw Error(`Invalid template literal part: ${I}`);_._zod.pattern=new RegExp(`^${D.join("")}$`),_._zod.parse=(I,U)=>{if(typeof I.value!=="string")return I.issues.push({input:I.value,inst:_,expected:"string",code:"invalid_type"}),I;if(_._zod.pattern.lastIndex=0,!_._zod.pattern.test(I.value))return I.issues.push({input:I.value,inst:_,code:"invalid_format",format:$.format??"template_literal",pattern:_._zod.pattern.source}),I;return I}}),XO=K("$ZodFunction",(_,$)=>{return o.init(_,$),_._def=$,_._zod.def=$,_.implement=(D)=>{if(typeof D!=="function")throw Error("implement() must be called with a function");return function(...I){let U=_._def.input?HI(_._def.input,I):I,E=Reflect.apply(D,this,U);if(_._def.output)return HI(_._def.output,E);return E}},_.implementAsync=(D)=>{if(typeof D!=="function")throw Error("implementAsync() must be called with a function");return async function(...I){let U=_._def.input?await kI(_._def.input,I):I,E=await Reflect.apply(D,this,U);if(_._def.output)return await kI(_._def.output,E);return E}},_._zod.parse=(D,I)=>{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 I=_.constructor;if(Array.isArray(D[0]))return new I({type:"function",input:new aI({type:"tuple",items:D[0],rest:D[1]}),output:_._def.output});return new I({type:"function",input:D[0],output:_._def.output})},_.output=(D)=>{return new _.constructor({type:"function",input:_._def.input,output:D})},_}),GO=K("$ZodPromise",(_,$)=>{o.init(_,$),_._zod.parse=(D,I)=>{return Promise.resolve(D.value).then((U)=>$.innerType._zod.run({value:U,issues:[]},I))}}),RO=K("$ZodLazy",(_,$)=>{o.init(_,$),D_(_._zod,"innerType",()=>{let D=$;if(!D._cachedInner)D._cachedInner=$.getter();return D._cachedInner}),D_(_._zod,"pattern",()=>_._zod.innerType?._zod?.pattern),D_(_._zod,"propValues",()=>_._zod.innerType?._zod?.propValues),D_(_._zod,"optin",()=>_._zod.innerType?._zod?.optin??void 0),D_(_._zod,"optout",()=>_._zod.innerType?._zod?.optout??void 0),_._zod.parse=(D,I)=>{return _._zod.innerType._zod.run(D,I)}}),YO=K("$ZodCustom",(_,$)=>{Q_.init(_,$),o.init(_,$),_._zod.parse=(D,I)=>{return D},_._zod.check=(D)=>{let I=D.value,U=$.fn(I);if(U instanceof Promise)return U.then((E)=>L5(E,D,I,_));L5(U,D,I,_);return}})});function KO(){return{localeError:wB()}}var wB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}\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 ${B(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: ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E} ${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"} ${E} ${U.maximum.toString()}`}case"too_small":{let E=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 ${E} ${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 ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`${D[E.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":""}: ${V(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 G5=r(()=>{n()});function TO(){return{localeError:rB()}}var rB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, daxil olan ${N}`}case"invalid_value":if(U.values.length===1)return`Yanl\u0131\u015F d\u0259y\u0259r: g\xF6zl\u0259nil\u0259n ${B(U.values[0])}`;return`Yanl\u0131\u015F se\xE7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${E}${U.maximum.toString()} ${j.unit??"element"}`;return`\xC7ox b\xF6y\xFCk: g\xF6zl\u0259nil\u0259n ${U.origin??"d\u0259y\u0259r"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\xC7ox ki\xE7ik: g\xF6zl\u0259nil\u0259n ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Yanl\u0131\u015F m\u0259tn: "${E.prefix}" il\u0259 ba\u015Flamal\u0131d\u0131r`;if(E.format==="ends_with")return`Yanl\u0131\u015F m\u0259tn: "${E.suffix}" il\u0259 bitm\u0259lidir`;if(E.format==="includes")return`Yanl\u0131\u015F m\u0259tn: "${E.includes}" daxil olmal\u0131d\u0131r`;if(E.format==="regex")return`Yanl\u0131\u015F m\u0259tn: ${E.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;return`Yanl\u0131\u015F ${D[E.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":""}: ${V(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 R5=r(()=>{n()});function Y5(_,$,D,I){let U=Math.abs(_),E=U%10,j=U%100;if(j>=11&&j<=19)return I;if(E===1)return $;if(E>=2&&E<=4)return D;return I}function FO(){return{localeError:fB()}}var fB=()=>{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"},I={nan:"NaN",number:"\u043B\u0456\u043A",array:"\u043C\u0430\u0441\u0456\u045E"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=Y5(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} ${E}${U.maximum.toString()} ${A}`}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 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=Y5(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} ${E}${U.minimum.toString()} ${A}`}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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${D[E.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"}: ${V(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 Q5=r(()=>{n()});function VO(){return{localeError:xB()}}var xB=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;let j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D";if(E.format==="emoji")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="datetime")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="date")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";if(E.format==="time")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E";if(E.format==="duration")j="\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430";return`${j} ${D[E.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":""}: ${V(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 K5=r(()=>{n()});function BO(){return{localeError:uB()}}var uB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, s'ha rebut ${N}`}case"invalid_value":if(U.values.length===1)return`Valor inv\xE0lid: s'esperava ${B(U.values[0])}`;return`Opci\xF3 inv\xE0lida: s'esperava una de ${V(U.values," o ")}`;case"too_big":{let E=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 ${E} ${U.maximum.toString()} ${j.unit??"elements"}`;return`Massa gran: s'esperava que ${U.origin??"el valor"} fos ${E} ${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?"com a m\xEDnim":"m\xE9s de",j=$(U.origin);if(j)return`Massa petit: s'esperava que ${U.origin} contingu\xE9s ${E} ${U.minimum.toString()} ${j.unit}`;return`Massa petit: s'esperava que ${U.origin} fos ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Format inv\xE0lid: ha de comen\xE7ar amb "${E.prefix}"`;if(E.format==="ends_with")return`Format inv\xE0lid: ha d'acabar amb "${E.suffix}"`;if(E.format==="includes")return`Format inv\xE0lid: ha d'incloure "${E.includes}"`;if(E.format==="regex")return`Format inv\xE0lid: ha de coincidir amb el patr\xF3 ${E.pattern}`;return`Format inv\xE0lid per a ${D[E.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":""}: ${V(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 T5=r(()=>{n()});function MO(){return{localeError:yB()}}var yB=()=>{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"},I={nan:"NaN",number:"\u010D\xEDslo",string:"\u0159et\u011Bzec",function:"funkce",array:"pole"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, obdr\u017Eeno ${N}`}case"invalid_value":if(U.values.length===1)return`Neplatn\xFD vstup: o\u010Dek\xE1v\xE1no ${B(U.values[0])}`;return`Neplatn\xE1 mo\u017Enost: o\u010Dek\xE1v\xE1na jedna z hodnot ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${E}${U.maximum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 velk\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED m\xEDt ${E}${U.minimum.toString()} ${j.unit??"prvk\u016F"}`;return`Hodnota je p\u0159\xEDli\u0161 mal\xE1: ${U.origin??"hodnota"} mus\xED b\xFDt ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED za\u010D\xEDnat na "${E.prefix}"`;if(E.format==="ends_with")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED kon\u010Dit na "${E.suffix}"`;if(E.format==="includes")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED obsahovat "${E.includes}"`;if(E.format==="regex")return`Neplatn\xFD \u0159et\u011Bzec: mus\xED odpov\xEDdat vzoru ${E.pattern}`;return`Neplatn\xFD form\xE1t ${D[E.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: ${V(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 F5=r(()=>{n()});function bO(){return{localeError:hB()}}var hB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldigt input: forventede instanceof ${U.expected}, fik ${N}`;return`Ugyldigt input: forventede ${E}, fik ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig v\xE6rdi: forventede ${B(U.values[0])}`;return`Ugyldigt valg: forventede en af f\xF8lgende ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`For stor: forventede ${N??"value"} ${j.verb} ${E} ${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor: forventede ${N??"value"} havde ${E} ${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`For lille: forventede ${N} ${j.verb} ${E} ${U.minimum.toString()} ${j.unit}`;return`For lille: forventede ${N} havde ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ugyldig streng: skal starte med "${E.prefix}"`;if(E.format==="ends_with")return`Ugyldig streng: skal ende med "${E.suffix}"`;if(E.format==="includes")return`Ugyldig streng: skal indeholde "${E.includes}"`;if(E.format==="regex")return`Ugyldig streng: skal matche m\xF8nsteret ${E.pattern}`;return`Ugyldig ${D[E.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"}: ${V(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 V5=r(()=>{n()});function ZO(){return{localeError:cB()}}var cB=()=>{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"},I={nan:"NaN",number:"Zahl",array:"Array"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ung\xFCltige Eingabe: erwartet instanceof ${U.expected}, erhalten ${N}`;return`Ung\xFCltige Eingabe: erwartet ${E}, erhalten ${N}`}case"invalid_value":if(U.values.length===1)return`Ung\xFCltige Eingabe: erwartet ${B(U.values[0])}`;return`Ung\xFCltige Option: erwartet eine von ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${E}${U.maximum.toString()} ${j.unit??"Elemente"} hat`;return`Zu gro\xDF: erwartet, dass ${U.origin??"Wert"} ${E}${U.maximum.toString()} ist`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Zu klein: erwartet, dass ${U.origin} ${E}${U.minimum.toString()} ${j.unit} hat`;return`Zu klein: erwartet, dass ${U.origin} ${E}${U.minimum.toString()} ist`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ung\xFCltiger String: muss mit "${E.prefix}" beginnen`;if(E.format==="ends_with")return`Ung\xFCltiger String: muss mit "${E.suffix}" enden`;if(E.format==="includes")return`Ung\xFCltiger String: muss "${E.includes}" enthalten`;if(E.format==="regex")return`Ung\xFCltiger String: muss dem Muster ${E.pattern} entsprechen`;return`Ung\xFCltig: ${D[E.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"}: ${V(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 B5=r(()=>{n()});function HO(){return{localeError:nB()}}var nB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF: ${D[E.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"}: ${V(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 M5=r(()=>{n()});function PU(){return{localeError:dB()}}var dB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;return`Invalid input: expected ${E}, received ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${B(U.values[0])}`;return`Invalid option: expected one of ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Too big: expected ${U.origin??"value"} to have ${E}${U.maximum.toString()} ${j.unit??"elements"}`;return`Too big: expected ${U.origin??"value"} to be ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Too small: expected ${U.origin} to have ${E}${U.minimum.toString()} ${j.unit}`;return`Too small: expected ${U.origin} to be ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Invalid string: must start with "${E.prefix}"`;if(E.format==="ends_with")return`Invalid string: must end with "${E.suffix}"`;if(E.format==="includes")return`Invalid string: must include "${E.includes}"`;if(E.format==="regex")return`Invalid string: must match pattern ${E.pattern}`;return`Invalid ${D[E.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":""}: ${V(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 kO=r(()=>{n()});function qO(){return{localeError:mB()}}var mB=()=>{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"},I={nan:"NaN",number:"nombro",array:"tabelo",null:"senvalora"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Nevalida enigo: atendi\u011Dis instanceof ${U.expected}, ricevi\u011Dis ${N}`;return`Nevalida enigo: atendi\u011Dis ${E}, ricevi\u011Dis ${N}`}case"invalid_value":if(U.values.length===1)return`Nevalida enigo: atendi\u011Dis ${B(U.values[0])}`;return`Nevalida opcio: atendi\u011Dis unu el ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${E}${U.maximum.toString()} ${j.unit??"elementojn"}`;return`Tro granda: atendi\u011Dis ke ${U.origin??"valoro"} havu ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Tro malgranda: atendi\u011Dis ke ${U.origin} havu ${E}${U.minimum.toString()} ${j.unit}`;return`Tro malgranda: atendi\u011Dis ke ${U.origin} estu ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Nevalida karaktraro: devas komenci\u011Di per "${E.prefix}"`;if(E.format==="ends_with")return`Nevalida karaktraro: devas fini\u011Di per "${E.suffix}"`;if(E.format==="includes")return`Nevalida karaktraro: devas inkluzivi "${E.includes}"`;if(E.format==="regex")return`Nevalida karaktraro: devas kongrui kun la modelo ${E.pattern}`;return`Nevalida ${D[E.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":""}: ${V(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 b5=r(()=>{n()});function CO(){return{localeError:lB()}}var lB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, recibido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: se esperaba ${B(U.values[0])}`;return`Opci\xF3n inv\xE1lida: se esperaba una de ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Demasiado grande: se esperaba que ${N??"valor"} tuviera ${E}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Demasiado grande: se esperaba que ${N??"valor"} fuera ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Demasiado peque\xF1o: se esperaba que ${N} tuviera ${E}${U.minimum.toString()} ${j.unit}`;return`Demasiado peque\xF1o: se esperaba que ${N} fuera ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cadena inv\xE1lida: debe comenzar con "${E.prefix}"`;if(E.format==="ends_with")return`Cadena inv\xE1lida: debe terminar en "${E.suffix}"`;if(E.format==="includes")return`Cadena inv\xE1lida: debe incluir "${E.includes}"`;if(E.format==="regex")return`Cadena inv\xE1lida: debe coincidir con el patr\xF3n ${E.pattern}`;return`Inv\xE1lido ${D[E.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":""}: ${V(U.keys,", ")}`;case"invalid_key":return`Llave inv\xE1lida en ${I[U.origin]??U.origin}`;case"invalid_union":return"Entrada inv\xE1lida";case"invalid_element":return`Valor inv\xE1lido en ${I[U.origin]??U.origin}`;default:return"Entrada inv\xE1lida"}}};var Z5=r(()=>{n()});function vO(){return{localeError:iB()}}var iB=()=>{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"},I={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0622\u0631\u0627\u06CC\u0647"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E} \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 ${B(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 ${V(U.values,"|")} \u0645\u06CC\u200C\u0628\u0648\u062F`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()} \u0628\u0627\u0634\u062F`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} ${j.unit} \u0628\u0627\u0634\u062F`;return`\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} \u0628\u0627\u0634\u062F`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${E.prefix}" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;if(E.format==="ends_with")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 "${E.suffix}" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;if(E.format==="includes")return`\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 "${E.includes}" \u0628\u0627\u0634\u062F`;if(E.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 ${E.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;return`${D[E.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: ${V(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 H5=r(()=>{n()});function wO(){return{localeError:tB()}}var tB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Virheellinen tyyppi: odotettiin instanceof ${U.expected}, oli ${N}`;return`Virheellinen tyyppi: odotettiin ${E}, oli ${N}`}case"invalid_value":if(U.values.length===1)return`Virheellinen sy\xF6te: t\xE4ytyy olla ${B(U.values[0])}`;return`Virheellinen valinta: t\xE4ytyy olla yksi seuraavista: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Liian suuri: ${j.subject} t\xE4ytyy olla ${E}${U.maximum.toString()} ${j.unit}`.trim();return`Liian suuri: arvon t\xE4ytyy olla ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Liian pieni: ${j.subject} t\xE4ytyy olla ${E}${U.minimum.toString()} ${j.unit}`.trim();return`Liian pieni: arvon t\xE4ytyy olla ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Virheellinen sy\xF6te: t\xE4ytyy alkaa "${E.prefix}"`;if(E.format==="ends_with")return`Virheellinen sy\xF6te: t\xE4ytyy loppua "${E.suffix}"`;if(E.format==="includes")return`Virheellinen sy\xF6te: t\xE4ytyy sis\xE4lt\xE4\xE4 "${E.includes}"`;if(E.format==="regex")return`Virheellinen sy\xF6te: t\xE4ytyy vastata s\xE4\xE4nn\xF6llist\xE4 lauseketta ${E.pattern}`;return`Virheellinen ${D[E.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"}: ${V(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 k5=r(()=>{n()});function rO(){return{localeError:oB()}}var oB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : instanceof ${U.expected} attendu, ${N} re\xE7u`;return`Entr\xE9e invalide : ${E} attendu, ${N} re\xE7u`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : ${B(U.values[0])} attendu`;return`Option invalide : une valeur parmi ${V(U.values,"|")} attendue`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Trop grand : ${I[U.origin]??"valeur"} doit ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"\xE9l\xE9ment(s)"}`;return`Trop grand : ${I[U.origin]??"valeur"} doit \xEAtre ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Trop petit : ${I[U.origin]??"valeur"} doit ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Trop petit : ${I[U.origin]??"valeur"} doit \xEAtre ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${E.prefix}"`;if(E.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${E.suffix}"`;if(E.format==="includes")return`Cha\xEEne invalide : doit inclure "${E.includes}"`;if(E.format==="regex")return`Cha\xEEne invalide : doit correspondre au mod\xE8le ${E.pattern}`;return`${D[E.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":""} : ${V(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 q5=r(()=>{n()});function fO(){return{localeError:pB()}}var pB=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Entr\xE9e invalide : attendu instanceof ${U.expected}, re\xE7u ${N}`;return`Entr\xE9e invalide : attendu ${E}, re\xE7u ${N}`}case"invalid_value":if(U.values.length===1)return`Entr\xE9e invalide : attendu ${B(U.values[0])}`;return`Option invalide : attendu l'une des valeurs suivantes ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"\u2264":"<",j=$(U.origin);if(j)return`Trop grand : attendu que ${U.origin??"la valeur"} ait ${E}${U.maximum.toString()} ${j.unit}`;return`Trop grand : attendu que ${U.origin??"la valeur"} soit ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?"\u2265":">",j=$(U.origin);if(j)return`Trop petit : attendu que ${U.origin} ait ${E}${U.minimum.toString()} ${j.unit}`;return`Trop petit : attendu que ${U.origin} soit ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Cha\xEEne invalide : doit commencer par "${E.prefix}"`;if(E.format==="ends_with")return`Cha\xEEne invalide : doit se terminer par "${E.suffix}"`;if(E.format==="includes")return`Cha\xEEne invalide : doit inclure "${E.includes}"`;if(E.format==="regex")return`Cha\xEEne invalide : doit correspondre au motif ${E.pattern}`;return`${D[E.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":""} : ${V(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 C5=r(()=>{n()});function xO(){return{localeError:eB()}}var eB=()=>{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=(O)=>O?_[O]:void 0,I=(O)=>{let S=D(O);if(S)return S.label;return O??_.unknown.label},U=(O)=>`\u05D4${I(O)}`,E=(O)=>{return(D(O)?.gender??"m")==="f"?"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA":"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA"},j=(O)=>{if(!O)return null;return $[O]??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"}},A={nan:"NaN"};return(O)=>{switch(O.code){case"invalid_type":{let S=O.expected,L=A[S??""]??I(S),P=M(O.input),z=A[P]??_[P]?.label??P;if(/^[A-Z]/.test(O.expected))return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${O.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${z}`;return`\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${L}, \u05D4\u05EA\u05E7\u05D1\u05DC ${z}`}case"invalid_value":{if(O.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 ${B(O.values[0])}`;let S=O.values.map((z)=>B(z));if(O.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 ${S[0]} \u05D0\u05D5 ${S[1]}`;let L=S[S.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 ${S.slice(0,-1).join(", ")} \u05D0\u05D5 ${L}`}case"too_big":{let S=j(O.origin),L=U(O.origin??"value");if(O.origin==="string")return`${S?.longLabel??"\u05D0\u05E8\u05D5\u05DA"} \u05DE\u05D3\u05D9: ${L} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.maximum.toString()} ${S?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA":"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8"}`.trim();if(O.origin==="number"){let G=O.inclusive?`\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.maximum}`:`\u05E7\u05D8\u05DF \u05DE-${O.maximum}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${L} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${G}`}if(O.origin==="array"||O.origin==="set"){let G=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA",J=O.inclusive?`${O.maximum} ${S?.unit??""} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`:`\u05E4\u05D7\u05D5\u05EA \u05DE-${O.maximum} ${S?.unit??""}`;return`\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${L} ${G} \u05DC\u05D4\u05DB\u05D9\u05DC ${J}`.trim()}let P=O.inclusive?"<=":"<",z=E(O.origin??"value");if(S?.unit)return`${S.longLabel} \u05DE\u05D3\u05D9: ${L} ${z} ${P}${O.maximum.toString()} ${S.unit}`;return`${S?.longLabel??"\u05D2\u05D3\u05D5\u05DC"} \u05DE\u05D3\u05D9: ${L} ${z} ${P}${O.maximum.toString()}`}case"too_small":{let S=j(O.origin),L=U(O.origin??"value");if(O.origin==="string")return`${S?.shortLabel??"\u05E7\u05E6\u05E8"} \u05DE\u05D3\u05D9: ${L} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${O.minimum.toString()} ${S?.unit??""} ${O.inclusive?"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8":"\u05DC\u05E4\u05D7\u05D5\u05EA"}`.trim();if(O.origin==="number"){let G=O.inclusive?`\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${O.minimum}`:`\u05D2\u05D3\u05D5\u05DC \u05DE-${O.minimum}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${L} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${G}`}if(O.origin==="array"||O.origin==="set"){let G=O.origin==="set"?"\u05E6\u05E8\u05D9\u05DB\u05D4":"\u05E6\u05E8\u05D9\u05DA";if(O.minimum===1&&O.inclusive){let W=O.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: ${L} ${G} \u05DC\u05D4\u05DB\u05D9\u05DC ${W}`}let J=O.inclusive?`${O.minimum} ${S?.unit??""} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`:`\u05D9\u05D5\u05EA\u05E8 \u05DE-${O.minimum} ${S?.unit??""}`;return`\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${L} ${G} \u05DC\u05D4\u05DB\u05D9\u05DC ${J}`.trim()}let P=O.inclusive?">=":">",z=E(O.origin??"value");if(S?.unit)return`${S.shortLabel} \u05DE\u05D3\u05D9: ${L} ${z} ${P}${O.minimum.toString()} ${S.unit}`;return`${S?.shortLabel??"\u05E7\u05D8\u05DF"} \u05DE\u05D3\u05D9: ${L} ${z} ${P}${O.minimum.toString()}`}case"invalid_format":{let S=O;if(S.format==="starts_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 "${S.prefix}"`;if(S.format==="ends_with")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 "${S.suffix}"`;if(S.format==="includes")return`\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC "${S.includes}"`;if(S.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 ${S.pattern}`;let L=N[S.format],P=L?.label??S.format,G=(L?.gender??"m")==="f"?"\u05EA\u05E7\u05D9\u05E0\u05D4":"\u05EA\u05E7\u05D9\u05DF";return`${P} \u05DC\u05D0 ${G}`}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 ${O.divisor}`;case"unrecognized_keys":return`\u05DE\u05E4\u05EA\u05D7${O.keys.length>1?"\u05D5\u05EA":""} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${O.keys.length>1?"\u05D9\u05DD":"\u05D4"}: ${V(O.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(O.origin??"array")}`;default:return"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF"}}};var v5=r(()=>{n()});function uO(){return{localeError:aB()}}var aB=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, a primljeno je ${N}`}case"invalid_value":if(U.values.length===1)return`Neispravna vrijednost: o\u010Dekivano ${B(U.values[0])}`;return`Neispravna opcija: o\u010Dekivano jedno od ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} ima ${E}${U.maximum.toString()} ${j.unit??"elemenata"}`;return`Preveliko: o\u010Dekivano da ${N??"vrijednost"} bude ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=I[U.origin]??U.origin;if(j)return`Premalo: o\u010Dekivano da ${N} ima ${E}${U.minimum.toString()} ${j.unit}`;return`Premalo: o\u010Dekivano da ${N} bude ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neispravan tekst: mora zapo\u010Dinjati s "${E.prefix}"`;if(E.format==="ends_with")return`Neispravan tekst: mora zavr\u0161avati s "${E.suffix}"`;if(E.format==="includes")return`Neispravan tekst: mora sadr\u017Eavati "${E.includes}"`;if(E.format==="regex")return`Neispravan tekst: mora odgovarati uzorku ${E.pattern}`;return`Neispravna ${D[E.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"}: ${V(U.keys,", ")}`;case"invalid_key":return`Neispravan klju\u010D u ${I[U.origin]??U.origin}`;case"invalid_union":return"Neispravan unos";case"invalid_element":return`Neispravna vrijednost u ${I[U.origin]??U.origin}`;default:return"Neispravan unos"}}};var w5=r(()=>{n()});function yO(){return{localeError:sB()}}var sB=()=>{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"},I={nan:"NaN",number:"sz\xE1m",array:"t\xF6mb"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, a kapott \xE9rt\xE9k ${N}`}case"invalid_value":if(U.values.length===1)return`\xC9rv\xE9nytelen bemenet: a v\xE1rt \xE9rt\xE9k ${B(U.values[0])}`;return`\xC9rv\xE9nytelen opci\xF3: valamelyik \xE9rt\xE9k v\xE1rt ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`T\xFAl nagy: ${U.origin??"\xE9rt\xE9k"} m\xE9rete t\xFAl nagy ${E}${U.maximum.toString()} ${j.unit??"elem"}`;return`T\xFAl nagy: a bemeneti \xE9rt\xE9k ${U.origin??"\xE9rt\xE9k"} t\xFAl nagy: ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} m\xE9rete t\xFAl kicsi ${E}${U.minimum.toString()} ${j.unit}`;return`T\xFAl kicsi: a bemeneti \xE9rt\xE9k ${U.origin} t\xFAl kicsi ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\xC9rv\xE9nytelen string: "${E.prefix}" \xE9rt\xE9kkel kell kezd\u0151dnie`;if(E.format==="ends_with")return`\xC9rv\xE9nytelen string: "${E.suffix}" \xE9rt\xE9kkel kell v\xE9gz\u0151dnie`;if(E.format==="includes")return`\xC9rv\xE9nytelen string: "${E.includes}" \xE9rt\xE9ket kell tartalmaznia`;if(E.format==="regex")return`\xC9rv\xE9nytelen string: ${E.pattern} mint\xE1nak kell megfelelnie`;return`\xC9rv\xE9nytelen ${D[E.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":""}: ${V(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 r5=r(()=>{n()});function f5(_,$,D){return Math.abs(_)===1?$:D}function y0(_){if(!_)return"";let $=["\u0561","\u0565","\u0568","\u056B","\u0578","\u0578\u0582","\u0585"],D=_[_.length-1];return _+($.includes(D)?"\u0576":"\u0568")}function hO(){return{localeError:_M()}}var _M=()=>{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"},I={nan:"NaN",number:"\u0569\u056B\u057E",array:"\u0566\u0561\u0576\u0563\u057E\u0561\u056E"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=f5(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 ${y0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${E}${U.maximum.toString()} ${A}`}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 ${y0(U.origin??"\u0561\u0580\u056A\u0565\u0584")} \u056C\u056B\u0576\u056B ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=f5(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 ${y0(U.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${E}${U.minimum.toString()} ${A}`}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 ${y0(U.origin)} \u056C\u056B\u0576\u056B ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B "${E.prefix}"-\u0578\u057E`;if(E.format==="ends_with")return`\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B "${E.suffix}"-\u0578\u057E`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;return`\u054D\u056D\u0561\u056C ${D[E.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":""}. ${V(U.keys,", ")}`;case"invalid_key":return`\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${y0(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 ${y0(U.origin)}-\u0578\u0582\u0574`;default:return"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574"}}};var x5=r(()=>{n()});function cO(){return{localeError:$M()}}var $M=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak valid: diharapkan instanceof ${U.expected}, diterima ${N}`;return`Input tidak valid: diharapkan ${E}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak valid: diharapkan ${B(U.values[0])}`;return`Pilihan tidak valid: diharapkan salah satu dari ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: diharapkan ${U.origin??"value"} memiliki ${E}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: diharapkan ${U.origin??"value"} menjadi ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: diharapkan ${U.origin} memiliki ${E}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: diharapkan ${U.origin} menjadi ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`String tidak valid: harus dimulai dengan "${E.prefix}"`;if(E.format==="ends_with")return`String tidak valid: harus berakhir dengan "${E.suffix}"`;if(E.format==="includes")return`String tidak valid: harus menyertakan "${E.includes}"`;if(E.format==="regex")return`String tidak valid: harus sesuai pola ${E.pattern}`;return`${D[E.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":""}: ${V(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 u5=r(()=>{n()});function nO(){return{localeError:DM()}}var DM=()=>{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"},I={nan:"NaN",number:"n\xFAmer",array:"fylki"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}`}case"invalid_value":if(U.values.length===1)return`Rangt gildi: gert r\xE1\xF0 fyrir ${B(U.values[0])}`;return`\xD3gilt val: m\xE1 vera eitt af eftirfarandi ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} hafi ${E}${U.maximum.toString()} ${j.unit??"hluti"}`;return`Of st\xF3rt: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin??"gildi"} s\xE9 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} hafi ${E}${U.minimum.toString()} ${j.unit}`;return`Of l\xEDti\xF0: gert er r\xE1\xF0 fyrir a\xF0 ${U.origin} s\xE9 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 byrja \xE1 "${E.prefix}"`;if(E.format==="ends_with")return`\xD3gildur strengur: ver\xF0ur a\xF0 enda \xE1 "${E.suffix}"`;if(E.format==="includes")return`\xD3gildur strengur: ver\xF0ur a\xF0 innihalda "${E.includes}"`;if(E.format==="regex")return`\xD3gildur strengur: ver\xF0ur a\xF0 fylgja mynstri ${E.pattern}`;return`Rangt ${D[E.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"}: ${V(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 y5=r(()=>{n()});function dO(){return{localeError:UM()}}var UM=()=>{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"},I={nan:"NaN",number:"numero",array:"vettore"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input non valido: atteso instanceof ${U.expected}, ricevuto ${N}`;return`Input non valido: atteso ${E}, ricevuto ${N}`}case"invalid_value":if(U.values.length===1)return`Input non valido: atteso ${B(U.values[0])}`;return`Opzione non valida: atteso uno tra ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Troppo grande: ${U.origin??"valore"} deve avere ${E}${U.maximum.toString()} ${j.unit??"elementi"}`;return`Troppo grande: ${U.origin??"valore"} deve essere ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Troppo piccolo: ${U.origin} deve avere ${E}${U.minimum.toString()} ${j.unit}`;return`Troppo piccolo: ${U.origin} deve essere ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Stringa non valida: deve iniziare con "${E.prefix}"`;if(E.format==="ends_with")return`Stringa non valida: deve terminare con "${E.suffix}"`;if(E.format==="includes")return`Stringa non valida: deve includere "${E.includes}"`;if(E.format==="regex")return`Stringa non valida: deve corrispondere al pattern ${E.pattern}`;return`Input non valido: ${D[E.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"}: ${V(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 h5=r(()=>{n()});function mO(){return{localeError:IM()}}var IM=()=>{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"},I={nan:"NaN",number:"\u6570\u5024",array:"\u914D\u5217"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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: ${E}\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: ${B(U.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;return`\u7121\u52B9\u306A\u9078\u629E: ${V(U.values,"\u3001")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;case"too_big":{let E=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"}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5927\u304D\u3059\u304E\u308B\u5024: ${U.origin??"\u5024"}\u306F${U.maximum.toString()}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"too_small":{let E=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}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u5C0F\u3055\u3059\u304E\u308B\u5024: ${U.origin}\u306F${U.minimum.toString()}${E}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.prefix}"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="ends_with")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.suffix}"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="includes")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: "${E.includes}"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;if(E.format==="regex")return`\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${E.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;return`\u7121\u52B9\u306A${D[E.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":""}: ${V(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 c5=r(()=>{n()});function lO(){return{localeError:EM()}}var EM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}-\u10D3\u10D0\u10DC`;case"too_big":{let E=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} ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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} ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"-\u10D8\u10D7`;if(E.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 "${E.suffix}"-\u10D8\u10D7`;if(E.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 "${E.includes}"-\u10E1`;if(E.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 ${E.pattern}`;return`\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${D[E.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"}: ${V(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 n5=r(()=>{n()});function zU(){return{localeError:jM()}}var jM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E} \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E} ${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"} ${E} ${U.maximum.toString()}`}case"too_small":{let E=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} ${E} ${U.minimum.toString()} ${j.unit}`;return`\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${U.origin} ${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${D[E.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 ${V(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 iO=r(()=>{n()});function tO(){return zU()}var d5=r(()=>{iO()});function oO(){return{localeError:NM()}}var NM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(U.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C \uC635\uC158: ${V(U.values,"\uB610\uB294 ")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;case"too_big":{let E=U.inclusive?"\uC774\uD558":"\uBBF8\uB9CC",j=E==="\uBBF8\uB9CC"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),A=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()}${A} ${E}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${U.maximum.toString()} ${E}${j}`}case"too_small":{let E=U.inclusive?"\uC774\uC0C1":"\uCD08\uACFC",j=E==="\uC774\uC0C1"?"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4":"\uC5EC\uC57C \uD569\uB2C8\uB2E4",N=$(U.origin),A=N?.unit??"\uC694\uC18C";if(N)return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()}${A} ${E}${j}`;return`${U.origin??"\uAC12"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${U.minimum.toString()} ${E}${j}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.prefix}"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="ends_with")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.suffix}"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="includes")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: "${E.includes}"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;if(E.format==="regex")return`\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${E.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;return`\uC798\uBABB\uB41C ${D[E.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: ${V(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 m5=r(()=>{n()});function l5(_){let $=Math.abs(_),D=$%10,I=$%100;if(I>=11&&I<=19||D===0)return"many";if(D===1)return"one";return"few"}function pO(){return{localeError:gM()}}var XU=(_)=>{return _.charAt(0).toUpperCase()+_.slice(1)},gM=()=>{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,E,j,N){let A=_[U]??null;if(A===null)return A;return{unit:A.unit[E],verb:A.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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 - ${E}`}case"invalid_value":if(U.values.length===1)return`Privalo b\u016Bti ${B(U.values[0])}`;return`Privalo b\u016Bti vienas i\u0161 ${V(U.values,"|")} pasirinkim\u0173`;case"too_big":{let E=I[U.origin]??U.origin,j=$(U.origin,l5(Number(U.maximum)),U.inclusive??!1,"smaller");if(j?.verb)return`${XU(E??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`${XU(E??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.maximum.toString()} ${j?.unit}`}case"too_small":{let E=I[U.origin]??U.origin,j=$(U.origin,l5(Number(U.minimum)),U.inclusive??!1,"bigger");if(j?.verb)return`${XU(E??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`${XU(E??U.origin??"reik\u0161m\u0117")} turi b\u016Bti ${N} ${U.minimum.toString()} ${j?.unit}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Eilut\u0117 privalo prasid\u0117ti "${E.prefix}"`;if(E.format==="ends_with")return`Eilut\u0117 privalo pasibaigti "${E.suffix}"`;if(E.format==="includes")return`Eilut\u0117 privalo \u012Ftraukti "${E.includes}"`;if(E.format==="regex")return`Eilut\u0117 privalo atitikti ${E.pattern}`;return`Neteisingas ${D[E.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"}: ${V(U.keys,", ")}`;case"invalid_key":return"Rastas klaidingas raktas";case"invalid_union":return"Klaidinga \u012Fvestis";case"invalid_element":{let E=I[U.origin]??U.origin;return`${XU(E??U.origin??"reik\u0161m\u0117")} turi klaiding\u0105 \u012Fvest\u012F`}default:return"Klaidinga \u012Fvestis"}}};var i5=r(()=>{n()});function eO(){return{localeError:AM()}}var AM=()=>{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"},I={nan:"NaN",number:"\u0431\u0440\u043E\u0458",array:"\u043D\u0438\u0437\u0430"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${N}`}case"invalid_value":if(U.values.length===1)return`Invalid input: expected ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`Invalid ${D[E.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"}: ${V(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 t5=r(()=>{n()});function aO(){return{localeError:OM()}}var OM=()=>{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"},I={nan:"NaN",number:"nombor"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Input tidak sah: dijangka instanceof ${U.expected}, diterima ${N}`;return`Input tidak sah: dijangka ${E}, diterima ${N}`}case"invalid_value":if(U.values.length===1)return`Input tidak sah: dijangka ${B(U.values[0])}`;return`Pilihan tidak sah: dijangka salah satu daripada ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Terlalu besar: dijangka ${U.origin??"nilai"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"elemen"}`;return`Terlalu besar: dijangka ${U.origin??"nilai"} adalah ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Terlalu kecil: dijangka ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Terlalu kecil: dijangka ${U.origin} adalah ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`String tidak sah: mesti bermula dengan "${E.prefix}"`;if(E.format==="ends_with")return`String tidak sah: mesti berakhir dengan "${E.suffix}"`;if(E.format==="includes")return`String tidak sah: mesti mengandungi "${E.includes}"`;if(E.format==="regex")return`String tidak sah: mesti sepadan dengan corak ${E.pattern}`;return`${D[E.format]??U.format} tidak sah`}case"not_multiple_of":return`Nombor tidak sah: perlu gandaan ${U.divisor}`;case"unrecognized_keys":return`Kunci tidak dikenali: ${V(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 o5=r(()=>{n()});function sO(){return{localeError:SM()}}var SM=()=>{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"},I={nan:"NaN",number:"getal"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ongeldige invoer: verwacht instanceof ${U.expected}, ontving ${N}`;return`Ongeldige invoer: verwacht ${E}, ontving ${N}`}case"invalid_value":if(U.values.length===1)return`Ongeldige invoer: verwacht ${B(U.values[0])}`;return`Ongeldige optie: verwacht \xE9\xE9n van ${V(U.values,"|")}`;case"too_big":{let E=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"} ${E}${U.maximum.toString()} ${j.unit??"elementen"} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin??"waarde"} ${E}${U.maximum.toString()} is`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin),N=U.origin==="date"?"vroeg":U.origin==="string"?"kort":"klein";if(j)return`Te ${N}: verwacht dat ${U.origin} ${E}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Te ${N}: verwacht dat ${U.origin} ${E}${U.minimum.toString()} is`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ongeldige tekst: moet met "${E.prefix}" beginnen`;if(E.format==="ends_with")return`Ongeldige tekst: moet op "${E.suffix}" eindigen`;if(E.format==="includes")return`Ongeldige tekst: moet "${E.includes}" bevatten`;if(E.format==="regex")return`Ongeldige tekst: moet overeenkomen met patroon ${E.pattern}`;return`Ongeldig: ${D[E.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":""}: ${V(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 p5=r(()=>{n()});function _S(){return{localeError:LM()}}var LM=()=>{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"},I={nan:"NaN",number:"tall",array:"liste"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Ugyldig input: forventet instanceof ${U.expected}, fikk ${N}`;return`Ugyldig input: forventet ${E}, fikk ${N}`}case"invalid_value":if(U.values.length===1)return`Ugyldig verdi: forventet ${B(U.values[0])}`;return`Ugyldig valg: forventet en av ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${E}${U.maximum.toString()} ${j.unit??"elementer"}`;return`For stor(t): forventet ${U.origin??"value"} til \xE5 ha ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`For lite(n): forventet ${U.origin} til \xE5 ha ${E}${U.minimum.toString()} ${j.unit}`;return`For lite(n): forventet ${U.origin} til \xE5 ha ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ugyldig streng: m\xE5 starte med "${E.prefix}"`;if(E.format==="ends_with")return`Ugyldig streng: m\xE5 ende med "${E.suffix}"`;if(E.format==="includes")return`Ugyldig streng: m\xE5 inneholde "${E.includes}"`;if(E.format==="regex")return`Ugyldig streng: m\xE5 matche m\xF8nsteret ${E.pattern}`;return`Ugyldig ${D[E.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"}: ${V(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 e5=r(()=>{n()});function $S(){return{localeError:JM()}}var JM=()=>{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"},I={nan:"NaN",number:"numara",array:"saf",null:"gayb"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`F\xE2sit giren: umulan instanceof ${U.expected}, al\u0131nan ${N}`;return`F\xE2sit giren: umulan ${E}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`F\xE2sit giren: umulan ${B(U.values[0])}`;return`F\xE2sit tercih: m\xFBteberler ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${E}${U.maximum.toString()} ${j.unit??"elements"} sahip olmal\u0131yd\u0131.`;return`Fazla b\xFCy\xFCk: ${U.origin??"value"}, ${E}${U.maximum.toString()} olmal\u0131yd\u0131.`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${E}${U.minimum.toString()} ${j.unit} sahip olmal\u0131yd\u0131.`;return`Fazla k\xFC\xE7\xFCk: ${U.origin}, ${E}${U.minimum.toString()} olmal\u0131yd\u0131.`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`F\xE2sit metin: "${E.prefix}" ile ba\u015Flamal\u0131.`;if(E.format==="ends_with")return`F\xE2sit metin: "${E.suffix}" ile bitmeli.`;if(E.format==="includes")return`F\xE2sit metin: "${E.includes}" ihtiv\xE2 etmeli.`;if(E.format==="regex")return`F\xE2sit metin: ${E.pattern} nak\u015F\u0131na uymal\u0131.`;return`F\xE2sit ${D[E.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":""}: ${V(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 a5=r(()=>{n()});function DS(){return{localeError:WM()}}var WM=()=>{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"},I={nan:"NaN",number:"\u0639\u062F\u062F",array:"\u0627\u0631\u06D0"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E} \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 ${B(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 ${V(U.values,"|")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()} \u0648\u064A`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} ${j.unit} \u0648\u0644\u0631\u064A`;return`\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${U.origin} \u0628\u0627\u06CC\u062F ${E}${U.minimum.toString()} \u0648\u064A`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${E.prefix}" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;if(E.format==="ends_with")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F "${E.suffix}" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;if(E.format==="includes")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F "${E.includes}" \u0648\u0644\u0631\u064A`;if(E.format==="regex")return`\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${E.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;return`${D[E.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"}: ${V(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 s5=r(()=>{n()});function US(){return{localeError:PM()}}var PM=()=>{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"},I={nan:"NaN",number:"liczba",array:"tablica"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, otrzymano ${N}`}case"invalid_value":if(U.values.length===1)return`Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${B(U.values[0])}`;return`Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${V(U.values,"|")}`;case"too_big":{let E=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 ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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 ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zaczyna\u0107 si\u0119 od "${E.prefix}"`;if(E.format==="ends_with")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi ko\u0144czy\u0107 si\u0119 na "${E.suffix}"`;if(E.format==="includes")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi zawiera\u0107 "${E.includes}"`;if(E.format==="regex")return`Nieprawid\u0142owy ci\u0105g znak\xF3w: musi odpowiada\u0107 wzorcowi ${E.pattern}`;return`Nieprawid\u0142ow(y/a/e) ${D[E.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":""}: ${V(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 _G=r(()=>{n()});function IS(){return{localeError:zM()}}var zM=()=>{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"},I={nan:"NaN",number:"n\xFAmero",null:"nulo"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Tipo inv\xE1lido: esperado instanceof ${U.expected}, recebido ${N}`;return`Tipo inv\xE1lido: esperado ${E}, recebido ${N}`}case"invalid_value":if(U.values.length===1)return`Entrada inv\xE1lida: esperado ${B(U.values[0])}`;return`Op\xE7\xE3o inv\xE1lida: esperada uma das ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Muito grande: esperado que ${U.origin??"valor"} tivesse ${E}${U.maximum.toString()} ${j.unit??"elementos"}`;return`Muito grande: esperado que ${U.origin??"valor"} fosse ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Muito pequeno: esperado que ${U.origin} tivesse ${E}${U.minimum.toString()} ${j.unit}`;return`Muito pequeno: esperado que ${U.origin} fosse ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Texto inv\xE1lido: deve come\xE7ar com "${E.prefix}"`;if(E.format==="ends_with")return`Texto inv\xE1lido: deve terminar com "${E.suffix}"`;if(E.format==="includes")return`Texto inv\xE1lido: deve incluir "${E.includes}"`;if(E.format==="regex")return`Texto inv\xE1lido: deve corresponder ao padr\xE3o ${E.pattern}`;return`${D[E.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":""}: ${V(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 $G=r(()=>{n()});function ES(){return{localeError:XM()}}var XM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;return`Intrare invalid\u0103: a\u0219teptat ${E}, primit ${N}`}case"invalid_value":if(U.values.length===1)return`Intrare invalid\u0103: a\u0219teptat ${B(U.values[0])}`;return`Op\u021Biune invalid\u0103: a\u0219teptat una dintre ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"elemente"}`;return`Prea mare: a\u0219teptat ca ${U.origin??"valoarea"} s\u0103 fie ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Prea mic: a\u0219teptat ca ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Prea mic: a\u0219teptat ca ${U.origin} s\u0103 fie ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0218ir invalid: trebuie s\u0103 \xEEnceap\u0103 cu "${E.prefix}"`;if(E.format==="ends_with")return`\u0218ir invalid: trebuie s\u0103 se termine cu "${E.suffix}"`;if(E.format==="includes")return`\u0218ir invalid: trebuie s\u0103 includ\u0103 "${E.includes}"`;if(E.format==="regex")return`\u0218ir invalid: trebuie s\u0103 se potriveasc\u0103 cu modelul ${E.pattern}`;return`Format invalid: ${D[E.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: ${V(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 DG=r(()=>{n()});function UG(_,$,D,I){let U=Math.abs(_),E=U%10,j=U%100;if(j>=11&&j<=19)return I;if(E===1)return $;if(E>=2&&E<=4)return D;return I}function jS(){return{localeError:GM()}}var GM=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j){let N=Number(U.maximum),A=UG(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 ${E}${U.maximum.toString()} ${A}`}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 ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j){let N=Number(U.minimum),A=UG(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 ${E}${U.minimum.toString()} ${A}`}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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${D[E.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":""}: ${V(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 IG=r(()=>{n()});function NS(){return{localeError:RM()}}var RM=()=>{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"},I={nan:"NaN",number:"\u0161tevilo",array:"tabela"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[j]??j;if(/^[A-Z]/.test(U.expected))return`Neveljaven vnos: pri\u010Dakovano instanceof ${U.expected}, prejeto ${N}`;return`Neveljaven vnos: pri\u010Dakovano ${E}, prejeto ${N}`}case"invalid_value":if(U.values.length===1)return`Neveljaven vnos: pri\u010Dakovano ${B(U.values[0])}`;return`Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} imelo ${E}${U.maximum.toString()} ${j.unit??"elementov"}`;return`Preveliko: pri\u010Dakovano, da bo ${U.origin??"vrednost"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Premajhno: pri\u010Dakovano, da bo ${U.origin} imelo ${E}${U.minimum.toString()} ${j.unit}`;return`Premajhno: pri\u010Dakovano, da bo ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Neveljaven niz: mora se za\u010Deti z "${E.prefix}"`;if(E.format==="ends_with")return`Neveljaven niz: mora se kon\u010Dati z "${E.suffix}"`;if(E.format==="includes")return`Neveljaven niz: mora vsebovati "${E.includes}"`;if(E.format==="regex")return`Neveljaven niz: mora ustrezati vzorcu ${E.pattern}`;return`Neveljaven ${D[E.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"}: ${V(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 EG=r(()=>{n()});function gS(){return{localeError:YM()}}var YM=()=>{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"},I={nan:"NaN",number:"antal",array:"lista"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, fick ${N}`}case"invalid_value":if(U.values.length===1)return`Ogiltig inmatning: f\xF6rv\xE4ntat ${B(U.values[0])}`;return`Ogiltigt val: f\xF6rv\xE4ntade en av ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`F\xF6r stor(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.maximum.toString()} ${j.unit??"element"}`;return`F\xF6r stor(t): f\xF6rv\xE4ntat ${U.origin??"v\xE4rdet"} att ha ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.minimum.toString()} ${j.unit}`;return`F\xF6r lite(t): f\xF6rv\xE4ntade ${U.origin??"v\xE4rdet"} att ha ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ogiltig str\xE4ng: m\xE5ste b\xF6rja med "${E.prefix}"`;if(E.format==="ends_with")return`Ogiltig str\xE4ng: m\xE5ste sluta med "${E.suffix}"`;if(E.format==="includes")return`Ogiltig str\xE4ng: m\xE5ste inneh\xE5lla "${E.includes}"`;if(E.format==="regex")return`Ogiltig str\xE4ng: m\xE5ste matcha m\xF6nstret "${E.pattern}"`;return`Ogiltig(t) ${D[E.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"}: ${V(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 jG=r(()=>{n()});function AS(){return{localeError:QM()}}var QM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;case"too_big":{let E=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"} ${E}${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"} ${E}${U.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"too_small":{let E=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} ${E}${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} ${E}${U.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.prefix}" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="ends_with")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.suffix}" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="includes")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: "${E.includes}" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;if(E.format==="regex")return`\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${E.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[E.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":""}: ${V(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 NG=r(()=>{n()});function OS(){return{localeError:KM()}}var KM=()=>{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"},I={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 E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E} \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=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${E} ${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${E} ${U.maximum.toString()}`}case"too_small":{let E=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${E} ${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${E} ${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;if(E.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 ${E.pattern}`;return`\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${D[E.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: ${V(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 gG=r(()=>{n()});function SS(){return{localeError:TM()}}var TM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, al\u0131nan ${N}`}case"invalid_value":if(U.values.length===1)return`Ge\xE7ersiz de\u011Fer: beklenen ${B(U.values[0])}`;return`Ge\xE7ersiz se\xE7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${E}${U.maximum.toString()} ${j.unit??"\xF6\u011Fe"}`;return`\xC7ok b\xFCy\xFCk: beklenen ${U.origin??"de\u011Fer"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\xC7ok k\xFC\xE7\xFCk: beklenen ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Ge\xE7ersiz metin: "${E.prefix}" ile ba\u015Flamal\u0131`;if(E.format==="ends_with")return`Ge\xE7ersiz metin: "${E.suffix}" ile bitmeli`;if(E.format==="includes")return`Ge\xE7ersiz metin: "${E.includes}" i\xE7ermeli`;if(E.format==="regex")return`Ge\xE7ersiz metin: ${E.pattern} desenine uymal\u0131`;return`Ge\xE7ersiz ${D[E.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":""}: ${V(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 AG=r(()=>{n()});function GU(){return{localeError:FM()}}var FM=()=>{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"},I={nan:"NaN",number:"\u0447\u0438\u0441\u043B\u043E",array:"\u043C\u0430\u0441\u0438\u0432"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=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} ${E}${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 ${E}${U.maximum.toString()}`}case"too_small":{let E=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} ${E}${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 ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.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 "${E.suffix}"`;if(E.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 "${E.includes}"`;if(E.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 ${E.pattern}`;return`\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${D[E.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":""}: ${V(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 LS=r(()=>{n()});function JS(){return GU()}var OG=r(()=>{LS()});function WS(){return{localeError:VM()}}var VM=()=>{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"},I={nan:"NaN",number:"\u0646\u0645\u0628\u0631",array:"\u0622\u0631\u06D2",null:"\u0646\u0644"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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: ${E} \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: ${B(U.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;return`\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${V(U.values,"|")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0628\u0691\u0627: ${U.origin??"\u0648\u06CC\u0644\u06CC\u0648"} \u06A9\u06D2 ${E}${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 ${E}${U.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${U.origin} \u06A9\u06D2 ${E}${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 ${E}${U.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.prefix}" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="ends_with")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.suffix}" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="includes")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: "${E.includes}" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;if(E.format==="regex")return`\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${E.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;return`\u063A\u0644\u0637 ${D[E.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":""}: ${V(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 SG=r(()=>{n()});function PS(){return{localeError:BM()}}var BM=()=>{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"},I={nan:"NaN",number:"raqam",array:"massiv"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, qabul qilingan ${N}`}case"invalid_value":if(U.values.length===1)return`Noto\u2018g\u2018ri kirish: kutilgan ${B(U.values[0])}`;return`Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Juda katta: kutilgan ${U.origin??"qiymat"} ${E}${U.maximum.toString()} ${j.unit} ${j.verb}`;return`Juda katta: kutilgan ${U.origin??"qiymat"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Juda kichik: kutilgan ${U.origin} ${E}${U.minimum.toString()} ${j.unit} ${j.verb}`;return`Juda kichik: kutilgan ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Noto\u2018g\u2018ri satr: "${E.prefix}" bilan boshlanishi kerak`;if(E.format==="ends_with")return`Noto\u2018g\u2018ri satr: "${E.suffix}" bilan tugashi kerak`;if(E.format==="includes")return`Noto\u2018g\u2018ri satr: "${E.includes}" ni o\u2018z ichiga olishi kerak`;if(E.format==="regex")return`Noto\u2018g\u2018ri satr: ${E.pattern} shabloniga mos kelishi kerak`;return`Noto\u2018g\u2018ri ${D[E.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":""}: ${V(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 LG=r(()=>{n()});function zS(){return{localeError:MM()}}var MM=()=>{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"},I={nan:"NaN",number:"s\u1ED1",array:"m\u1EA3ng"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, 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 ${B(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 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${j.verb} ${E}${U.maximum.toString()} ${j.unit??"ph\u1EA7n t\u1EED"}`;return`Qu\xE1 l\u1EDBn: mong \u0111\u1EE3i ${U.origin??"gi\xE1 tr\u1ECB"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${j.verb} ${E}${U.minimum.toString()} ${j.unit}`;return`Qu\xE1 nh\u1ECF: mong \u0111\u1EE3i ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng "${E.prefix}"`;if(E.format==="ends_with")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\xFAc b\u1EB1ng "${E.suffix}"`;if(E.format==="includes")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m "${E.includes}"`;if(E.format==="regex")return`Chu\u1ED7i kh\xF4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${E.pattern}`;return`${D[E.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: ${V(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 JG=r(()=>{n()});function XS(){return{localeError:bM()}}var bM=()=>{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"},I={nan:"NaN",number:"\u6570\u5B57",array:"\u6570\u7EC4",null:"\u7A7A\u503C(null)"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}\uFF0C\u5B9E\u9645\u63A5\u6536 ${N}`}case"invalid_value":if(U.values.length===1)return`\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${B(U.values[0])}`;return`\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${E}${U.maximum.toString()} ${j.unit??"\u4E2A\u5143\u7D20"}`;return`\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${U.origin??"\u503C"} ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${E}${U.minimum.toString()} ${j.unit}`;return`\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${U.origin} ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${E.prefix}" \u5F00\u5934`;if(E.format==="ends_with")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 "${E.suffix}" \u7ED3\u5C3E`;if(E.format==="includes")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B "${E.includes}"`;if(E.format==="regex")return`\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${E.pattern}`;return`\u65E0\u6548${D[E.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): ${V(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 WG=r(()=>{n()});function GS(){return{localeError:ZM()}}var ZM=()=>{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"},I={nan:"NaN"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}\uFF0C\u4F46\u6536\u5230 ${N}`}case"invalid_value":if(U.values.length===1)return`\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${B(U.values[0])}`;return`\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${V(U.values,"|")}`;case"too_big":{let E=U.inclusive?"<=":"<",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${E}${U.maximum.toString()} ${j.unit??"\u500B\u5143\u7D20"}`;return`\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${U.origin??"\u503C"} \u61C9\u70BA ${E}${U.maximum.toString()}`}case"too_small":{let E=U.inclusive?">=":">",j=$(U.origin);if(j)return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${E}${U.minimum.toString()} ${j.unit}`;return`\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${U.origin} \u61C9\u70BA ${E}${U.minimum.toString()}`}case"invalid_format":{let E=U;if(E.format==="starts_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${E.prefix}" \u958B\u982D`;if(E.format==="ends_with")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 "${E.suffix}" \u7D50\u5C3E`;if(E.format==="includes")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B "${E.includes}"`;if(E.format==="regex")return`\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${E.pattern}`;return`\u7121\u6548\u7684 ${D[E.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${V(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 PG=r(()=>{n()});function RS(){return{localeError:HM()}}var HM=()=>{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"},I={nan:"NaN",number:"n\u1ECD\u0301mb\xE0",array:"akop\u1ECD"};return(U)=>{switch(U.code){case"invalid_type":{let E=I[U.expected]??U.expected,j=M(U.input),N=I[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 ${E}, \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 ${B(U.values[0])}`;return`\xC0\u1E63\xE0y\xE0n a\u1E63\xEC\u1E63e: yan \u1ECD\u0300kan l\xE1ra ${V(U.values,"|")}`;case"too_big":{let E=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} ${E}${U.maximum} ${j.unit}`;return`T\xF3 p\u1ECD\u0300 j\xF9: a n\xED l\xE1ti j\u1EB9\u0301 ${E}${U.maximum}`}case"too_small":{let E=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} ${E}${U.minimum} ${j.unit}`;return`K\xE9r\xE9 ju: a n\xED l\xE1ti j\u1EB9\u0301 ${E}${U.minimum}`}case"invalid_format":{let E=U;if(E.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 "${E.prefix}"`;if(E.format==="ends_with")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\xED p\u1EB9\u0300l\xFA "${E.suffix}"`;if(E.format==="includes")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\xED "${E.includes}"`;if(E.format==="regex")return`\u1ECC\u0300r\u1ECD\u0300 a\u1E63\xEC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\xE1 \xE0p\u1EB9\u1EB9r\u1EB9 mu ${E.pattern}`;return`A\u1E63\xEC\u1E63e: ${D[E.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: ${V(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 zG=r(()=>{n()});var h0={};x$(h0,{zhTW:()=>GS,zhCN:()=>XS,yo:()=>RS,vi:()=>zS,uz:()=>PS,ur:()=>WS,uk:()=>GU,ua:()=>JS,tr:()=>SS,th:()=>OS,ta:()=>AS,sv:()=>gS,sl:()=>NS,ru:()=>jS,ro:()=>ES,pt:()=>IS,ps:()=>DS,pl:()=>US,ota:()=>$S,no:()=>_S,nl:()=>sO,ms:()=>aO,mk:()=>eO,lt:()=>pO,ko:()=>oO,km:()=>zU,kh:()=>tO,ka:()=>lO,ja:()=>mO,it:()=>dO,is:()=>nO,id:()=>cO,hy:()=>hO,hu:()=>yO,hr:()=>uO,he:()=>xO,frCA:()=>fO,fr:()=>rO,fi:()=>wO,fa:()=>vO,es:()=>CO,eo:()=>qO,en:()=>PU,el:()=>HO,de:()=>ZO,da:()=>bO,cs:()=>MO,ca:()=>BO,bg:()=>VO,be:()=>FO,az:()=>TO,ar:()=>KO});var YS=r(()=>{G5();R5();Q5();K5();T5();F5();V5();B5();M5();kO();b5();Z5();H5();k5();q5();C5();v5();w5();r5();x5();u5();y5();h5();c5();n5();d5();iO();m5();i5();t5();o5();p5();e5();a5();s5();_G();$G();DG();IG();EG();jG();NG();gG();AG();OG();LS();SG();LG();JG();WG();PG();zG()});class QS{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 I={...D,...this._map.get(_)};return Object.keys(I).length?I:void 0}return this._map.get(_)}has(_){return this._map.has(_)}}function RU(){return new QS}var XG,$E,DE,x_;var YU=r(()=>{$E=Symbol("ZodOutput"),DE=Symbol("ZodInput");(XG=globalThis).__zod_globalRegistry??(XG.__zod_globalRegistry=RU());x_=globalThis.__zod_globalRegistry});function KS(_,$){return new _({type:"string",...v($)})}function TS(_,$){return new _({type:"string",coerce:!0,...v($)})}function UE(_,$){return new _({type:"string",format:"email",check:"string_format",abort:!1,...v($)})}function QU(_,$){return new _({type:"string",format:"guid",check:"string_format",abort:!1,...v($)})}function IE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,...v($)})}function EE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v4",...v($)})}function jE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v6",...v($)})}function NE(_,$){return new _({type:"string",format:"uuid",check:"string_format",abort:!1,version:"v7",...v($)})}function KU(_,$){return new _({type:"string",format:"url",check:"string_format",abort:!1,...v($)})}function gE(_,$){return new _({type:"string",format:"emoji",check:"string_format",abort:!1,...v($)})}function AE(_,$){return new _({type:"string",format:"nanoid",check:"string_format",abort:!1,...v($)})}function OE(_,$){return new _({type:"string",format:"cuid",check:"string_format",abort:!1,...v($)})}function SE(_,$){return new _({type:"string",format:"cuid2",check:"string_format",abort:!1,...v($)})}function LE(_,$){return new _({type:"string",format:"ulid",check:"string_format",abort:!1,...v($)})}function JE(_,$){return new _({type:"string",format:"xid",check:"string_format",abort:!1,...v($)})}function WE(_,$){return new _({type:"string",format:"ksuid",check:"string_format",abort:!1,...v($)})}function PE(_,$){return new _({type:"string",format:"ipv4",check:"string_format",abort:!1,...v($)})}function zE(_,$){return new _({type:"string",format:"ipv6",check:"string_format",abort:!1,...v($)})}function FS(_,$){return new _({type:"string",format:"mac",check:"string_format",abort:!1,...v($)})}function XE(_,$){return new _({type:"string",format:"cidrv4",check:"string_format",abort:!1,...v($)})}function GE(_,$){return new _({type:"string",format:"cidrv6",check:"string_format",abort:!1,...v($)})}function RE(_,$){return new _({type:"string",format:"base64",check:"string_format",abort:!1,...v($)})}function YE(_,$){return new _({type:"string",format:"base64url",check:"string_format",abort:!1,...v($)})}function QE(_,$){return new _({type:"string",format:"e164",check:"string_format",abort:!1,...v($)})}function KE(_,$){return new _({type:"string",format:"jwt",check:"string_format",abort:!1,...v($)})}function VS(_,$){return new _({type:"string",format:"datetime",check:"string_format",offset:!1,local:!1,precision:null,...v($)})}function BS(_,$){return new _({type:"string",format:"date",check:"string_format",...v($)})}function MS(_,$){return new _({type:"string",format:"time",check:"string_format",precision:null,...v($)})}function bS(_,$){return new _({type:"string",format:"duration",check:"string_format",...v($)})}function ZS(_,$){return new _({type:"number",checks:[],...v($)})}function HS(_,$){return new _({type:"number",coerce:!0,checks:[],...v($)})}function kS(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"safeint",...v($)})}function qS(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float32",...v($)})}function CS(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"float64",...v($)})}function vS(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"int32",...v($)})}function wS(_,$){return new _({type:"number",check:"number_format",abort:!1,format:"uint32",...v($)})}function rS(_,$){return new _({type:"boolean",...v($)})}function fS(_,$){return new _({type:"boolean",coerce:!0,...v($)})}function xS(_,$){return new _({type:"bigint",...v($)})}function uS(_,$){return new _({type:"bigint",coerce:!0,...v($)})}function yS(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"int64",...v($)})}function hS(_,$){return new _({type:"bigint",check:"bigint_format",abort:!1,format:"uint64",...v($)})}function cS(_,$){return new _({type:"symbol",...v($)})}function nS(_,$){return new _({type:"undefined",...v($)})}function dS(_,$){return new _({type:"null",...v($)})}function mS(_){return new _({type:"any"})}function lS(_){return new _({type:"unknown"})}function iS(_,$){return new _({type:"never",...v($)})}function tS(_,$){return new _({type:"void",...v($)})}function oS(_,$){return new _({type:"date",...v($)})}function pS(_,$){return new _({type:"date",coerce:!0,...v($)})}function eS(_,$){return new _({type:"nan",...v($)})}function V$(_,$){return new cI({check:"less_than",...v($),value:_,inclusive:!1})}function I$(_,$){return new cI({check:"less_than",...v($),value:_,inclusive:!0})}function B$(_,$){return new nI({check:"greater_than",...v($),value:_,inclusive:!1})}function c_(_,$){return new nI({check:"greater_than",...v($),value:_,inclusive:!0})}function TU(_){return B$(0,_)}function FU(_){return V$(0,_)}function VU(_){return I$(0,_)}function BU(_){return c_(0,_)}function L6(_,$){return new m2({check:"multiple_of",...v($),value:_})}function J6(_,$){return new t2({check:"max_size",...v($),maximum:_})}function M$(_,$){return new o2({check:"min_size",...v($),minimum:_})}function f6(_,$){return new p2({check:"size_equals",...v($),size:_})}function x6(_,$){return new e2({check:"max_length",...v($),maximum:_})}function l$(_,$){return new a2({check:"min_length",...v($),minimum:_})}function u6(_,$){return new s2({check:"length_equals",...v($),length:_})}function Q4(_,$){return new _A({check:"string_format",format:"regex",...v($),pattern:_})}function K4(_){return new $A({check:"string_format",format:"lowercase",...v(_)})}function T4(_){return new DA({check:"string_format",format:"uppercase",...v(_)})}function F4(_,$){return new UA({check:"string_format",format:"includes",...v($),includes:_})}function V4(_,$){return new IA({check:"string_format",format:"starts_with",...v($),prefix:_})}function B4(_,$){return new EA({check:"string_format",format:"ends_with",...v($),suffix:_})}function MU(_,$,D){return new jA({check:"property",property:_,schema:$,...v(D)})}function M4(_,$){return new NA({check:"mime_type",mime:_,...v($)})}function X$(_){return new gA({check:"overwrite",tx:_})}function b4(_){return X$(($)=>$.normalize(_))}function Z4(){return X$((_)=>_.trim())}function H4(){return X$((_)=>_.toLowerCase())}function k4(){return X$((_)=>_.toUpperCase())}function q4(){return X$((_)=>I2(_))}function aS(_,$,D){return new _({type:"array",element:$,...v(D)})}function qM(_,$,D){return new _({type:"union",options:$,...v(D)})}function CM(_,$,D){return new _({type:"union",options:$,inclusive:!1,...v(D)})}function vM(_,$,D,I){return new _({type:"union",options:D,discriminator:$,...v(I)})}function wM(_,$,D){return new _({type:"intersection",left:$,right:D})}function rM(_,$,D,I){let U=D instanceof o;return new _({type:"tuple",items:$,rest:U?D:null,...v(U?I:D)})}function fM(_,$,D,I){return new _({type:"record",keyType:$,valueType:D,...v(I)})}function xM(_,$,D,I){return new _({type:"map",keyType:$,valueType:D,...v(I)})}function uM(_,$,D){return new _({type:"set",valueType:$,...v(D)})}function yM(_,$,D){let I=Array.isArray($)?Object.fromEntries($.map((U)=>[U,U])):$;return new _({type:"enum",entries:I,...v(D)})}function hM(_,$,D){return new _({type:"enum",entries:$,...v(D)})}function cM(_,$,D){return new _({type:"literal",values:Array.isArray($)?$:[$],...v(D)})}function sS(_,$){return new _({type:"file",...v($)})}function nM(_,$){return new _({type:"transform",transform:$})}function dM(_,$){return new _({type:"optional",innerType:$})}function mM(_,$){return new _({type:"nullable",innerType:$})}function lM(_,$,D){return new _({type:"default",innerType:$,get defaultValue(){return typeof D==="function"?D():j2(D)}})}function iM(_,$,D){return new _({type:"nonoptional",innerType:$,...v(D)})}function tM(_,$){return new _({type:"success",innerType:$})}function oM(_,$,D){return new _({type:"catch",innerType:$,catchValue:typeof D==="function"?D:()=>D})}function pM(_,$,D){return new _({type:"pipe",in:$,out:D})}function eM(_,$){return new _({type:"readonly",innerType:$})}function aM(_,$,D){return new _({type:"template_literal",parts:$,...v(D)})}function sM(_,$){return new _({type:"lazy",getter:$})}function _b(_,$){return new _({type:"promise",innerType:$})}function _L(_,$,D){let I=v(D);return I.abort??(I.abort=!0),new _({type:"custom",check:"custom",fn:$,...I})}function $L(_,$,D){return new _({type:"custom",check:"custom",fn:$,...v(D)})}function DL(_,$){let D=GG((I)=>{return I.addIssue=(U)=>{if(typeof U==="string")I.issues.push(q0(U,I.value,D._zod.def));else{let E=U;if(E.fatal)E.continue=!1;E.code??(E.code="custom"),E.input??(E.input=I.value),E.inst??(E.inst=D),E.continue??(E.continue=!D._zod.def.abort),I.issues.push(q0(E))}},_(I.value,I)},$);return D}function GG(_,$){let D=new Q_({check:"custom",...v($)});return D._zod.check=_,D}function UL(_){let $=new Q_({check:"describe"});return $._zod.onattach=[(D)=>{let I=x_.get(D)??{};x_.add(D,{...I,description:_})}],$._zod.check=()=>{},$}function IL(_){let $=new Q_({check:"meta"});return $._zod.onattach=[(D)=>{let I=x_.get(D)??{};x_.add(D,{...I,..._})}],$._zod.check=()=>{},$}function EL(_,$){let D=v($),I=D.truthy??["true","1","yes","on","y","enabled"],U=D.falsy??["false","0","no","off","n","disabled"];if(D.case!=="sensitive")I=I.map((z)=>typeof z==="string"?z.toLowerCase():z),U=U.map((z)=>typeof z==="string"?z.toLowerCase():z);let E=new Set(I),j=new Set(U),N=_.Codec??WU,A=_.Boolean??LU,S=new(_.String??Y4)({type:"string",error:D.error}),L=new A({type:"boolean",error:D.error}),P=new N({type:"pipe",in:S,out:L,transform:(z,G)=>{let J=z;if(D.case!=="sensitive")J=J.toLowerCase();if(E.has(J))return!0;else if(j.has(J))return!1;else return G.issues.push({code:"invalid_value",expected:"stringbool",values:[...E,...j],input:G.value,inst:P,continue:!1}),{}},reverseTransform:(z,G)=>{if(z===!0)return I[0]||"true";else return U[0]||"false"},error:D.error});return P}function c0(_,$,D,I={}){let U=v(I),E={...v(I),check:"string_format",type:"string",format:$,fn:typeof D==="function"?D:(N)=>D.test(N),...U};if(D instanceof RegExp)E.pattern=D;return new _(E)}var TE;var RG=r(()=>{dI();YU();QO();n();TE={Any:null,Minute:-1,Second:0,Millisecond:3,Microsecond:6}});function y6(_){let $=_?.target??"draft-2020-12";if($==="draft-4")$="draft-04";if($==="draft-7")$="draft-07";return{processors:_.processors??{},metadataRegistry:_?.metadata??x_,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 L_(_,$,D={path:[],schemaPath:[]}){var I;let U=_._zod.def,E=$.seen.get(_);if(E){if(E.count++,D.schemaPath.includes(_))E.cycle=D.path;return E.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 S={...D,schemaPath:[...D.schemaPath,_],path:D.path};if(_._zod.processJSONSchema)_._zod.processJSONSchema($,j.schema,S);else{let P=j.schema,z=$.processors[U.type];if(!z)throw Error(`[toJSONSchema]: Non-representable type encountered: ${U.type}`);z(_,$,P,S)}let L=_._zod.parent;if(L){if(!j.ref)j.ref=L;L_(L,$,S),$.seen.get(L).isParent=!0}}let A=$.metadataRegistry.get(_);if(A)Object.assign(j.schema,A);if($.io==="input"&&o_(_))delete j.schema.examples,delete j.schema.default;if($.io==="input"&&"_prefault"in j.schema)(I=j.schema).default??(I.default=j.schema._prefault);return delete j.schema._prefault,$.seen.get(_).schema}function h6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let I=new Map;for(let j of _.seen.entries()){let N=_.metadataRegistry.get(j[0])?.id;if(N){let A=I.get(N);if(A&&A!==j[0])throw Error(`Duplicate schema id "${N}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);I.set(N,j[0])}}let U=(j)=>{let N=_.target==="draft-2020-12"?"$defs":"definitions";if(_.external){let L=_.external.registry.get(j[0])?.id,P=_.external.uri??((G)=>G);if(L)return{ref:P(L)};let z=j[1].defId??j[1].schema.id??`schema${_.counter++}`;return j[1].defId=z,{defId:z,ref:`${P("__shared")}#/${N}/${z}`}}if(j[1]===D)return{ref:"#"};let O=`${"#"}/${N}/`,S=j[1].schema.id??`__schema${_.counter++}`;return{defId:S,ref:O+S}},E=(j)=>{if(j[1].schema.$ref)return;let N=j[1],{ref:A,defId:O}=U(j);if(N.def={...N.schema},O)N.defId=O;let S=N.schema;for(let L in S)delete S[L];S.$ref=A};if(_.cycles==="throw")for(let j of _.seen.entries()){let N=j[1];if(N.cycle)throw Error(`Cycle detected: #/${N.cycle?.join("/")}/<root> -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]){E(j);continue}if(_.external){let O=_.external.registry.get(j[0])?.id;if($!==j[0]&&O){E(j);continue}}if(_.metadataRegistry.get(j[0])?.id){E(j);continue}if(N.cycle){E(j);continue}if(N.count>1){if(_.reused==="ref"){E(j);continue}}}}function c6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let I=(N)=>{let A=_.seen.get(N);if(A.ref===null)return;let O=A.def??A.schema,L={...O},J=A.ref;if(A.ref=null,J){I(J);let z=_.seen.get(J),S=z.schema;if(S.$ref&&(_.target==="draft-07"||_.target==="draft-04"||_.target==="openapi-3.0"))O.allOf=O.allOf??[],O.allOf.push(S);else Object.assign(O,S);if(Object.assign(O,L),N._zod.parent===J)for(let X in O){if(X==="$ref"||X==="allOf")continue;if(!(X in L))delete O[X]}if(S.$ref&&z.def)for(let X in O){if(X==="$ref"||X==="allOf")continue;if(X in z.def&&JSON.stringify(O[X])===JSON.stringify(z.def[X]))delete O[X]}}let P=N._zod.parent;if(P&&P!==J){I(P);let z=_.seen.get(P);if(z?.schema.$ref){if(O.$ref=z.schema.$ref,z.def)for(let S in O){if(S==="$ref"||S==="allOf")continue;if(S in z.def&&JSON.stringify(O[S])===JSON.stringify(z.def[S]))delete O[S]}}}_.override({zodSchema:N,jsonSchema:O,path:A.path??[]})};for(let N of[..._.seen.entries()].reverse())I(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 E=_.metadataRegistry.get($)?.id;if(E!==void 0&&U.id===E)delete U.id;let j=_.external?.defs??{};for(let N of _.seen.entries()){let A=N[1];if(A.def&&A.defId){if(A.def.id===A.defId)delete A.def.id;j[A.defId]=A.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:n0($,"input",_.processors),output:n0($,"output",_.processors)}},enumerable:!1,writable:!1}),N}catch(N){throw Error("Error converting schema to JSON.")}}function p_(_,$){let D=$??{seen:new Set};if(D.seen.has(_))return!1;D.seen.add(_);let I=_._zod.def;if(I.type==="transform")return!0;if(I.type==="array")return p_(I.element,D);if(I.type==="set")return p_(I.valueType,D);if(I.type==="lazy")return p_(I.getter(),D);if(I.type==="promise"||I.type==="optional"||I.type==="nonoptional"||I.type==="nullable"||I.type==="readonly"||I.type==="default"||I.type==="prefault")return p_(I.innerType,D);if(I.type==="intersection")return p_(I.left,D)||p_(I.right,D);if(I.type==="record"||I.type==="map")return p_(I.keyType,D)||p_(I.valueType,D);if(I.type==="pipe"){if(_._zod.traits.has("$ZodCodec"))return!0;return p_(I.in,D)||p_(I.out,D)}if(I.type==="object"){for(let U in I.shape)if(p_(I.shape[U],D))return!0;return!1}if(I.type==="union"){for(let U of I.options)if(p_(U,D))return!0;return!1}if(I.type==="tuple"){for(let U of I.items)if(p_(U,D))return!0;if(I.rest&&p_(I.rest,D))return!0;return!1}return!1}var jS=(_,$={})=>(D)=>{let I=y6({...D,processors:$});return L_(_,I),h6(I,_),c6(I,_)},n0=(_,$,D={})=>(I)=>{let{libraryOptions:U,target:E}=I??{},j=y6({...U??{},target:E,io:$,processors:D});return L_(_,j),h6(j,_),c6(j,_)};var bU=r(()=>{YU()});function ZU(_,$){if("_idmap"in _){let I=_,U=y6({...$,processors:FE}),E={};for(let A of I._idmap.entries()){let[O,L]=A;L_(L,U)}let j={},N={registry:I,uri:$?.uri,defs:E};U.external=N;for(let A of I._idmap.entries()){let[O,L]=A;h6(U,L),j[O]=c6(U,L)}if(Object.keys(E).length>0){let A=U.target==="draft-2020-12"?"$defs":"definitions";j.__shared={[A]:E}}return{schemas:j}}let D=y6({...$,processors:FE});return L_(_,D),h6(D,_),c6(D,_)}var $b,NS=(_,$,D,I)=>{let U=D;U.type="string";let{minimum:E,maximum:j,format:N,patterns:A,contentEncoding:O}=_._zod.bag;if(typeof E==="number")U.minLength=E;if(typeof j==="number")U.maxLength=j;if(N){if(U.format=$b[N]??N,U.format==="")delete U.format;if(N==="time")delete U.format}if(O)U.contentEncoding=O;if(A&&A.size>0){let L=[...A];if(L.length===1)U.pattern=L[0].source;else if(L.length>1)U.allOf=[...L.map((J)=>({...$.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"?{type:"string"}:{},pattern:J.source}))]}},gS=(_,$,D,I)=>{let U=D,{minimum:E,maximum:j,format:N,multipleOf:A,exclusiveMaximum:O,exclusiveMinimum:L}=_._zod.bag;if(typeof N==="string"&&N.includes("int"))U.type="integer";else U.type="number";let J=typeof L==="number"&&L>=(E??Number.NEGATIVE_INFINITY),P=typeof O==="number"&&O<=(j??Number.POSITIVE_INFINITY),z=$.target==="draft-04"||$.target==="openapi-3.0";if(J)if(z)U.minimum=L,U.exclusiveMinimum=!0;else U.exclusiveMinimum=L;else if(typeof E==="number")U.minimum=E;if(P)if(z)U.maximum=O,U.exclusiveMaximum=!0;else U.exclusiveMaximum=O;else if(typeof j==="number")U.maximum=j;if(typeof A==="number")U.multipleOf=A},AS=(_,$,D,I)=>{D.type="boolean"},OS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},LS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},SS=(_,$,D,I)=>{if($.target==="openapi-3.0")D.type="string",D.nullable=!0,D.enum=[null];else D.type="null"},JS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},WS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},PS=(_,$,D,I)=>{D.not={}},zS=(_,$,D,I)=>{},XS=(_,$,D,I)=>{},GS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},RS=(_,$,D,I)=>{let U=_._zod.def,E=UU(U.entries);if(E.every((j)=>typeof j==="number"))D.type="number";if(E.every((j)=>typeof j==="string"))D.type="string";D.enum=E},YS=(_,$,D,I)=>{let U=_._zod.def,E=[];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 E.push(Number(j));else E.push(j);if(E.length===0);else if(E.length===1){let j=E[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(E.every((j)=>typeof j==="number"))D.type="number";if(E.every((j)=>typeof j==="string"))D.type="string";if(E.every((j)=>typeof j==="boolean"))D.type="boolean";if(E.every((j)=>j===null))D.type="null";D.enum=E}},QS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},KS=(_,$,D,I)=>{let U=D,E=_._zod.pattern;if(!E)throw Error("Pattern not found in template literal");U.type="string",U.pattern=E.source},TS=(_,$,D,I)=>{let U=D,E={type:"string",format:"binary",contentEncoding:"binary"},{minimum:j,maximum:N,mime:A}=_._zod.bag;if(j!==void 0)E.minLength=j;if(N!==void 0)E.maxLength=N;if(A)if(A.length===1)E.contentMediaType=A[0],Object.assign(U,E);else Object.assign(U,E),U.anyOf=A.map((O)=>({contentMediaType:O}));else Object.assign(U,E)},FS=(_,$,D,I)=>{D.type="boolean"},VS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},BS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},MS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},bS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},ZS=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},HS=(_,$,D,I)=>{let U=D,E=_._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=L_(E.element,$,{...I,path:[...I.path,"items"]})},kS=(_,$,D,I)=>{let U=D,E=_._zod.def;U.type="object",U.properties={};let j=E.shape;for(let O in j)U.properties[O]=L_(j[O],$,{...I,path:[...I.path,"properties",O]});let N=new Set(Object.keys(j)),A=new Set([...N].filter((O)=>{let L=E.shape[O]._zod;if($.io==="input")return L.optin===void 0;else return L.optout===void 0}));if(A.size>0)U.required=Array.from(A);if(E.catchall?._zod.def.type==="never")U.additionalProperties=!1;else if(!E.catchall){if($.io==="output")U.additionalProperties=!1}else if(E.catchall)U.additionalProperties=L_(E.catchall,$,{...I,path:[...I.path,"additionalProperties"]})},VE=(_,$,D,I)=>{let U=_._zod.def,E=U.inclusive===!1,j=U.options.map((N,A)=>L_(N,$,{...I,path:[...I.path,E?"oneOf":"anyOf",A]}));if(E)D.oneOf=j;else D.anyOf=j},qS=(_,$,D,I)=>{let U=_._zod.def,E=L_(U.left,$,{...I,path:[...I.path,"allOf",0]}),j=L_(U.right,$,{...I,path:[...I.path,"allOf",1]}),N=(O)=>("allOf"in O)&&Object.keys(O).length===1,A=[...N(E)?E.allOf:[E],...N(j)?j.allOf:[j]];D.allOf=A},CS=(_,$,D,I)=>{let U=D,E=_._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",A=E.items.map((P,z)=>L_(P,$,{...I,path:[...I.path,j,z]})),O=E.rest?L_(E.rest,$,{...I,path:[...I.path,N,...$.target==="openapi-3.0"?[E.items.length]:[]]}):null;if($.target==="draft-2020-12"){if(U.prefixItems=A,O)U.items=O}else if($.target==="openapi-3.0"){if(U.items={anyOf:A},O)U.items.anyOf.push(O);if(U.minItems=A.length,!O)U.maxItems=A.length}else if(U.items=A,O)U.additionalItems=O;let{minimum:L,maximum:J}=_._zod.bag;if(typeof L==="number")U.minItems=L;if(typeof J==="number")U.maxItems=J},vS=(_,$,D,I)=>{let U=D,E=_._zod.def;U.type="object";let j=E.keyType,A=j._zod.bag?.patterns;if(E.mode==="loose"&&A&&A.size>0){let L=L_(E.valueType,$,{...I,path:[...I.path,"patternProperties","*"]});U.patternProperties={};for(let J of A)U.patternProperties[J.source]=L}else{if($.target==="draft-07"||$.target==="draft-2020-12")U.propertyNames=L_(E.keyType,$,{...I,path:[...I.path,"propertyNames"]});U.additionalProperties=L_(E.valueType,$,{...I,path:[...I.path,"additionalProperties"]})}let O=j._zod.values;if(O){let L=[...O].filter((J)=>typeof J==="string"||typeof J==="number");if(L.length>0)U.required=L}},wS=(_,$,D,I)=>{let U=_._zod.def,E=L_(U.innerType,$,I),j=$.seen.get(_);if($.target==="openapi-3.0")j.ref=U.innerType,D.nullable=!0;else D.anyOf=[E,{type:"null"}]},rS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},fS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType,D.default=JSON.parse(JSON.stringify(U.defaultValue))},xS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);if(E.ref=U.innerType,$.io==="input")D._prefault=JSON.parse(JSON.stringify(U.defaultValue))},uS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.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},yS=(_,$,D,I)=>{let U=_._zod.def,E=U.in._zod.traits.has("$ZodTransform"),j=$.io==="input"?E?U.out:U.in:U.out;L_(j,$,I);let N=$.seen.get(_);N.ref=j},hS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType,D.readOnly=!0},cS=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},BE=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},nS=(_,$,D,I)=>{let U=_._zod.innerType;L_(U,$,I);let E=$.seen.get(_);E.ref=U},FE;var HU=r(()=>{bU();n();$b={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},FE={string:NS,number:gS,boolean:AS,bigint:OS,symbol:LS,null:SS,undefined:JS,void:WS,never:PS,any:zS,unknown:XS,date:GS,enum:RS,literal:YS,nan:QS,template_literal:KS,file:TS,success:FS,custom:VS,function:BS,transform:MS,map:bS,set:ZS,array:HS,object:kS,union:VE,intersection:qS,tuple:CS,record:vS,nullable:wS,nonoptional:rS,default:fS,prefault:xS,catch:uS,pipe:yS,readonly:hS,promise:cS,optional:BE,lazy:nS}});class dS{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=y6({processors:FE,target:$,..._?.metadata&&{metadata:_.metadata},..._?.unrepresentable&&{unrepresentable:_.unrepresentable},..._?.override&&{override:_.override},..._?.io&&{io:_.io}})}process(_,$={path:[],schemaPath:[]}){return L_(_,this.ctx,$)}emit(_,$){if($){if($.cycles)this.ctx.cycles=$.cycles;if($.reused)this.ctx.reused=$.reused;if($.external)this.ctx.external=$.external}h6(this.ctx,_);let D=c6(this.ctx,_),{"~standard":I,...U}=D;return U}}var YG=r(()=>{HU();bU()});var QG={};var KG=()=>{};var i$={};x$(i$,{version:()=>AA,util:()=>H,treeifyError:()=>bI,toJSONSchema:()=>ZU,toDotPath:()=>lX,safeParseAsync:()=>W2,safeParse:()=>J2,safeEncodeAsync:()=>IB,safeEncode:()=>DB,safeDecodeAsync:()=>EB,safeDecode:()=>UB,registry:()=>RU,regexes:()=>U$,process:()=>L_,prettifyError:()=>ZI,parseAsync:()=>kI,parse:()=>HI,meta:()=>IS,locales:()=>h0,isValidJWT:()=>W5,isValidBase64URL:()=>J5,isValidBase64:()=>qA,initializeContext:()=>y6,globalRegistry:()=>u_,globalConfig:()=>P4,formatError:()=>v0,flattenError:()=>C0,finalize:()=>c6,extractDefs:()=>h6,encodeAsync:()=>_B,encode:()=>aV,describe:()=>US,decodeAsync:()=>$B,decode:()=>sV,createToJSONSchemaMethod:()=>jS,createStandardJSONSchemaMethod:()=>n0,config:()=>Z_,clone:()=>c_,_xor:()=>CM,_xid:()=>JE,_void:()=>tL,_uuidv7:()=>NE,_uuidv6:()=>jE,_uuidv4:()=>EE,_uuid:()=>IE,_url:()=>KU,_uppercase:()=>T4,_unknown:()=>lL,_union:()=>qM,_undefined:()=>nL,_ulid:()=>SE,_uint64:()=>hL,_uint32:()=>wL,_tuple:()=>rM,_trim:()=>Z4,_transform:()=>nM,_toUpperCase:()=>k4,_toLowerCase:()=>H4,_templateLiteral:()=>aM,_symbol:()=>cL,_superRefine:()=>DS,_success:()=>tM,_stringbool:()=>ES,_stringFormat:()=>c0,_string:()=>KL,_startsWith:()=>V4,_slugify:()=>q4,_size:()=>f6,_set:()=>uM,_safeParseAsync:()=>x0,_safeParse:()=>f0,_safeEncodeAsync:()=>xI,_safeEncode:()=>rI,_safeDecodeAsync:()=>uI,_safeDecode:()=>fI,_regex:()=>Q4,_refine:()=>$S,_record:()=>fM,_readonly:()=>eM,_property:()=>MU,_promise:()=>_b,_positive:()=>TU,_pipe:()=>pM,_parseAsync:()=>r0,_parse:()=>w0,_overwrite:()=>X$,_optional:()=>dM,_number:()=>ZL,_nullable:()=>mM,_null:()=>dL,_normalize:()=>b4,_nonpositive:()=>VU,_nonoptional:()=>iM,_nonnegative:()=>BU,_never:()=>iL,_negative:()=>FU,_nativeEnum:()=>hM,_nanoid:()=>AE,_nan:()=>eL,_multipleOf:()=>S6,_minSize:()=>M$,_minLength:()=>l$,_min:()=>n_,_mime:()=>M4,_maxSize:()=>J6,_maxLength:()=>x6,_max:()=>I$,_map:()=>xM,_mac:()=>FL,_lte:()=>I$,_lt:()=>V$,_lowercase:()=>K4,_literal:()=>cM,_length:()=>u6,_lazy:()=>sM,_ksuid:()=>WE,_jwt:()=>KE,_isoTime:()=>ML,_isoDuration:()=>bL,_isoDateTime:()=>VL,_isoDate:()=>BL,_ipv6:()=>zE,_ipv4:()=>PE,_intersection:()=>wM,_int64:()=>yL,_int32:()=>vL,_int:()=>kL,_includes:()=>F4,_guid:()=>QU,_gte:()=>n_,_gt:()=>B$,_float64:()=>CL,_float32:()=>qL,_file:()=>sL,_enum:()=>yM,_endsWith:()=>B4,_encodeAsync:()=>vI,_encode:()=>qI,_emoji:()=>gE,_email:()=>UE,_e164:()=>QE,_discriminatedUnion:()=>vM,_default:()=>lM,_decodeAsync:()=>wI,_decode:()=>CI,_date:()=>oL,_custom:()=>_S,_cuid2:()=>LE,_cuid:()=>OE,_coercedString:()=>TL,_coercedNumber:()=>HL,_coercedDate:()=>pL,_coercedBoolean:()=>fL,_coercedBigint:()=>uL,_cidrv6:()=>GE,_cidrv4:()=>XE,_check:()=>GG,_catch:()=>oM,_boolean:()=>rL,_bigint:()=>xL,_base64url:()=>YE,_base64:()=>RE,_array:()=>aL,_any:()=>mL,TimePrecision:()=>TE,NEVER:()=>FI,JSONSchemaGenerator:()=>dS,JSONSchema:()=>QG,Doc:()=>mI,$output:()=>$E,$input:()=>DE,$constructor:()=>Q,$brand:()=>VI,$ZodXor:()=>pA,$ZodXID:()=>QA,$ZodVoid:()=>lA,$ZodUnknown:()=>dA,$ZodUnion:()=>JU,$ZodUndefined:()=>hA,$ZodUUID:()=>JA,$ZodURL:()=>PA,$ZodULID:()=>YA,$ZodType:()=>t,$ZodTuple:()=>aI,$ZodTransform:()=>EO,$ZodTemplateLiteral:()=>zO,$ZodSymbol:()=>yA,$ZodSuccess:()=>LO,$ZodStringFormat:()=>R_,$ZodString:()=>Y4,$ZodSet:()=>$O,$ZodRegistry:()=>QL,$ZodRecord:()=>sA,$ZodRealError:()=>D$,$ZodReadonly:()=>PO,$ZodPromise:()=>GO,$ZodPreprocess:()=>WO,$ZodPrefault:()=>AO,$ZodPipe:()=>_E,$ZodOptional:()=>sI,$ZodObjectJIT:()=>oA,$ZodObject:()=>X5,$ZodNumberFormat:()=>xA,$ZodNumber:()=>pI,$ZodNullable:()=>NO,$ZodNull:()=>cA,$ZodNonOptional:()=>OO,$ZodNever:()=>mA,$ZodNanoID:()=>XA,$ZodNaN:()=>JO,$ZodMap:()=>_O,$ZodMAC:()=>ZA,$ZodLiteral:()=>UO,$ZodLazy:()=>RO,$ZodKSUID:()=>KA,$ZodJWT:()=>rA,$ZodIntersection:()=>aA,$ZodISOTime:()=>VA,$ZodISODuration:()=>BA,$ZodISODateTime:()=>TA,$ZodISODate:()=>FA,$ZodIPv6:()=>bA,$ZodIPv4:()=>MA,$ZodGUID:()=>SA,$ZodFunction:()=>XO,$ZodFile:()=>IO,$ZodExactOptional:()=>jO,$ZodError:()=>gU,$ZodEnum:()=>DO,$ZodEncodeError:()=>z4,$ZodEmoji:()=>zA,$ZodEmail:()=>WA,$ZodE164:()=>wA,$ZodDiscriminatedUnion:()=>eA,$ZodDefault:()=>gO,$ZodDate:()=>iA,$ZodCustomStringFormat:()=>fA,$ZodCustom:()=>YO,$ZodCodec:()=>WU,$ZodCheckUpperCase:()=>DA,$ZodCheckStringFormat:()=>u0,$ZodCheckStartsWith:()=>IA,$ZodCheckSizeEquals:()=>p2,$ZodCheckRegex:()=>_A,$ZodCheckProperty:()=>jA,$ZodCheckOverwrite:()=>gA,$ZodCheckNumberFormat:()=>l2,$ZodCheckMultipleOf:()=>m2,$ZodCheckMinSize:()=>o2,$ZodCheckMinLength:()=>a2,$ZodCheckMimeType:()=>NA,$ZodCheckMaxSize:()=>t2,$ZodCheckMaxLength:()=>e2,$ZodCheckLowerCase:()=>$A,$ZodCheckLessThan:()=>cI,$ZodCheckLengthEquals:()=>s2,$ZodCheckIncludes:()=>UA,$ZodCheckGreaterThan:()=>nI,$ZodCheckEndsWith:()=>EA,$ZodCheckBigIntFormat:()=>i2,$ZodCheck:()=>Y_,$ZodCatch:()=>SO,$ZodCUID2:()=>RA,$ZodCUID:()=>GA,$ZodCIDRv6:()=>kA,$ZodCIDRv4:()=>HA,$ZodBoolean:()=>SU,$ZodBigIntFormat:()=>uA,$ZodBigInt:()=>eI,$ZodBase64URL:()=>vA,$ZodBase64:()=>CA,$ZodAsyncError:()=>m$,$ZodArray:()=>tA,$ZodAny:()=>nA});var O$=r(()=>{n();hI();YL();HU();YG();KG();X4();P2();S2();QO();dI();OA();YU();RG();bU()});var ME={};x$(ME,{uppercase:()=>T4,trim:()=>Z4,toUpperCase:()=>k4,toLowerCase:()=>H4,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,regex:()=>Q4,property:()=>MU,positive:()=>TU,overwrite:()=>X$,normalize:()=>b4,nonpositive:()=>VU,nonnegative:()=>BU,negative:()=>FU,multipleOf:()=>S6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,maxSize:()=>J6,maxLength:()=>x6,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,length:()=>u6,includes:()=>F4,gte:()=>n_,gt:()=>B$,endsWith:()=>B4});var bE=r(()=>{O$()});var C4={};x$(C4,{time:()=>iS,duration:()=>tS,datetime:()=>mS,date:()=>lS,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU});function mS(_){return VL(kU,_)}function lS(_){return BL(qU,_)}function iS(_){return ML(CU,_)}function tS(_){return bL(vU,_)}var kU,qU,CU,vU;var wU=r(()=>{O$();fU();kU=Q("ZodISODateTime",(_,$)=>{TA.init(_,$),P_.init(_,$)});qU=Q("ZodISODate",(_,$)=>{FA.init(_,$),P_.init(_,$)});CU=Q("ZodISOTime",(_,$)=>{VA.init(_,$),P_.init(_,$)});vU=Q("ZodISODuration",(_,$)=>{BA.init(_,$),P_.init(_,$)})});var TG=(_,$)=>{gU.init(_,$),_.name="ZodError",Object.defineProperties(_,{format:{value:(D)=>v0(_,D)},flatten:{value:(D)=>C0(_,D)},addIssue:{value:(D)=>{_.issues.push(D),_.message=JSON.stringify(_.issues,H0,2)}},addIssues:{value:(D)=>{_.issues.push(...D),_.message=JSON.stringify(_.issues,H0,2)}},isEmpty:{get(){return _.issues.length===0}}})},FG,e_;var oS=r(()=>{O$();O$();n();FG=Q("ZodError",TG),e_=Q("ZodError",TG,{Parent:Error})});var ZE,HE,kE,qE,CE,vE,wE,rE,fE,xE,uE,yE;var pS=r(()=>{O$();oS();ZE=w0(e_),HE=r0(e_),kE=f0(e_),qE=x0(e_),CE=qI(e_),vE=CI(e_),wE=vI(e_),rE=wI(e_),fE=rI(e_),xE=fI(e_),uE=xI(e_),yE=uI(e_)});var rU={};x$(rU,{xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sS,url:()=>UJ,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,transform:()=>g1,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,set:()=>lJ,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,promise:()=>DW,preprocess:()=>LW,prefault:()=>Xj,pipe:()=>uU,partialRecord:()=>nJ,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,nonoptional:()=>Gj,never:()=>E1,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,meta:()=>NW,map:()=>mJ,mac:()=>JJ,looseRecord:()=>dJ,looseObject:()=>yJ,literal:()=>tJ,lazy:()=>bj,ksuid:()=>LJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,ipv6:()=>WJ,ipv4:()=>SJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aS,function:()=>UW,float64:()=>BJ,float32:()=>VJ,file:()=>oJ,exactOptional:()=>Sj,enum:()=>N1,emoji:()=>EJ,email:()=>eS,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,codec:()=>sJ,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>p,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIntersection:()=>$j,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFile:()=>Aj,ZodExactOptional:()=>Lj,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE});function yU(_,$,D){let I=Object.getPrototypeOf(_),U=VG.get(I);if(!U)U=new Set,VG.set(I,U);if(U.has($))return;U.add($);for(let E in D){let j=D[E];Object.defineProperty(I,E,{configurable:!0,enumerable:!1,get(){let N=j.bind(this);return Object.defineProperty(this,E,{configurable:!0,writable:!0,enumerable:!0,value:N}),N},set(N){Object.defineProperty(this,E,{configurable:!0,writable:!0,enumerable:!0,value:N})}})}}function d0(_){return KL(r4,_)}function eS(_){return UE(cU,_)}function aS(_){return QU(m0,_)}function sS(_){return IE(b$,_)}function _J(_){return EE(b$,_)}function $J(_){return jE(b$,_)}function DJ(_){return NE(b$,_)}function UJ(_){return KU(t0,_)}function IJ(_){return KU(t0,{protocol:U$.httpProtocol,hostname:U$.domain,...H.normalizeParams(_)})}function EJ(_){return gE(nU,_)}function jJ(_){return AE(dU,_)}function NJ(_){return OE(mU,_)}function gJ(_){return LE(lU,_)}function AJ(_){return SE(iU,_)}function OJ(_){return JE(tU,_)}function LJ(_){return WE(oU,_)}function SJ(_){return PE(pU,_)}function JJ(_){return FL(hE,_)}function WJ(_){return zE(eU,_)}function PJ(_){return XE(aU,_)}function zJ(_){return GE(sU,_)}function XJ(_){return RE(_1,_)}function GJ(_){return YE($1,_)}function RJ(_){return QE(D1,_)}function YJ(_){return KE(U1,_)}function QJ(_,$,D={}){return c0(f4,_,$,D)}function KJ(_){return c0(f4,"hostname",U$.hostname,_)}function TJ(_){return c0(f4,"hex",U$.hex,_)}function FJ(_,$){let D=$?.enc??"hex",I=`${_}_${D}`,U=U$[I];if(!U)throw Error(`Unrecognized hash format: ${I}`);return c0(f4,I,U,$)}function cE(_){return ZL(x4,_)}function xU(_){return kL(d6,_)}function VJ(_){return qL(d6,_)}function BJ(_){return CL(d6,_)}function MJ(_){return vL(d6,_)}function bJ(_){return wL(d6,_)}function nE(_){return rL(u4,_)}function ZJ(_){return xL(y4,_)}function HJ(_){return yL(I1,_)}function kJ(_){return hL(I1,_)}function qJ(_){return cL(dE,_)}function CJ(_){return nL(mE,_)}function iE(_){return dL(lE,_)}function vJ(){return mL(tE)}function n6(){return lL(oE)}function E1(_){return iL(pE,_)}function wJ(_){return tL(eE,_)}function rJ(_){return oL(o0,_)}function p0(_,$){return aL(aE,_,$)}function fJ(_){let $=_._zod.def.shape;return N1(Object.keys($))}function xJ(_,$){let D={type:"object",shape:_??{},...H.normalizeParams($)};return new e0(D)}function uJ(_,$){return new e0({type:"object",shape:_,catchall:E1(),...H.normalizeParams($)})}function yJ(_,$){return new e0({type:"object",shape:_,catchall:n6(),...H.normalizeParams($)})}function j1(_,$){return new a0({type:"union",options:_,...H.normalizeParams($)})}function hJ(_,$){return new sE({type:"union",options:_,inclusive:!1,...H.normalizeParams($)})}function cJ(_,$,D){return new _j({type:"union",options:$,discriminator:_,...H.normalizeParams(D)})}function Dj(_,$){return new $j({type:"intersection",left:_,right:$})}function Ij(_,$,D){let I=$ instanceof t,U=I?D:$;return new Uj({type:"tuple",items:_,rest:I?$:null,...H.normalizeParams(U)})}function Ej(_,$,D){if(!$||!$._zod)return new v4({type:"record",keyType:d0(),valueType:_,...H.normalizeParams($)});return new v4({type:"record",keyType:_,valueType:$,...H.normalizeParams(D)})}function nJ(_,$,D){let I=c_(_);return I._zod.values=void 0,new v4({type:"record",keyType:I,valueType:$,...H.normalizeParams(D)})}function dJ(_,$,D){return new v4({type:"record",keyType:_,valueType:$,mode:"loose",...H.normalizeParams(D)})}function mJ(_,$,D){return new jj({type:"map",keyType:_,valueType:$,...H.normalizeParams(D)})}function lJ(_,$){return new Nj({type:"set",valueType:_,...H.normalizeParams($)})}function N1(_,$){let D=Array.isArray(_)?Object.fromEntries(_.map((I)=>[I,I])):_;return new w4({type:"enum",entries:D,...H.normalizeParams($)})}function iJ(_,$){return new w4({type:"enum",entries:_,...H.normalizeParams($)})}function tJ(_,$){return new gj({type:"literal",values:Array.isArray(_)?_:[_],...H.normalizeParams($)})}function oJ(_){return sL(Aj,_)}function g1(_){return new Oj({type:"transform",transform:_})}function l0(_){return new A1({type:"optional",innerType:_})}function Sj(_){return new Lj({type:"optional",innerType:_})}function i0(_){return new Jj({type:"nullable",innerType:_})}function pJ(_){return l0(i0(_))}function Pj(_,$){return new Wj({type:"default",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Xj(_,$){return new zj({type:"prefault",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Gj(_,$){return new O1({type:"nonoptional",innerType:_,...H.normalizeParams($)})}function eJ(_){return new Rj({type:"success",innerType:_})}function Qj(_,$){return new Yj({type:"catch",innerType:_,catchValue:typeof $==="function"?$:()=>$})}function aJ(_){return eL(Kj,_)}function uU(_,$){return new s0({type:"pipe",in:_,out:$})}function sJ(_,$,D){return new _D({type:"pipe",in:_,out:$,transform:D.decode,reverseTransform:D.encode})}function _W(_){let $=_._zod.def;return new _D({type:"pipe",in:$.out,out:$.in,transform:$.reverseTransform,reverseTransform:$.transform})}function Vj(_){return new Fj({type:"readonly",innerType:_})}function $W(_,$){return new Bj({type:"template_literal",parts:_,...H.normalizeParams($)})}function bj(_){return new Mj({type:"lazy",getter:_})}function DW(_){return new Zj({type:"promise",innerType:_})}function UW(_){return new Hj({type:"function",input:Array.isArray(_?.input)?Ij(_?.input):_?.input??p0(n6()),output:_?.output??n6()})}function IW(_){let $=new Y_({check:"custom"});return $._zod.check=_,$}function EW(_,$){return _S($D,_??(()=>!0),$)}function kj(_,$={}){return $S($D,_,$)}function qj(_,$){return DS(_,$)}function gW(_,$={}){let D=new $D({type:"custom",check:"custom",fn:(I)=>I instanceof _,abort:!0,...H.normalizeParams($)});return D._zod.bag.Class=_,D._zod.check=(I)=>{if(!(I.value instanceof _))I.issues.push({code:"invalid_type",expected:_.name,input:I.value,inst:D,path:[...D._zod.def.path??[]]})},D}function OW(_){let $=bj(()=>{return j1([d0(_),cE(),nE(),iE(),p0($),Ej(d0(),$)])});return $}function LW(_,$){return new Tj({type:"pipe",in:g1(_),out:$})}var VG,p,hU,r4,P_,cU,m0,b$,t0,nU,dU,mU,lU,iU,tU,oU,pU,hE,eU,aU,sU,_1,$1,D1,U1,f4,x4,d6,u4,y4,I1,dE,mE,lE,tE,oE,pE,eE,o0,aE,e0,a0,sE,_j,$j,Uj,v4,jj,Nj,w4,gj,Aj,Oj,A1,Lj,Jj,Wj,zj,O1,Rj,Yj,Kj,s0,_D,Tj,Fj,Bj,Mj,Zj,Hj,$D,jW,NW,AW=(..._)=>ES({Codec:_D,Boolean:u4,String:r4},..._);var fU=r(()=>{O$();O$();HU();bU();bE();wU();pS();VG=new WeakMap;p=Q("ZodType",(_,$)=>{return t.init(_,$),Object.assign(_["~standard"],{jsonSchema:{input:n0(_,"input"),output:n0(_,"output")}}),_.toJSONSchema=jS(_,{}),_.def=$,_.type=$.type,Object.defineProperty(_,"_def",{value:$}),_.parse=(D,I)=>ZE(_,D,I,{callee:_.parse}),_.safeParse=(D,I)=>kE(_,D,I),_.parseAsync=async(D,I)=>HE(_,D,I,{callee:_.parseAsync}),_.safeParseAsync=async(D,I)=>qE(_,D,I),_.spa=_.safeParseAsync,_.encode=(D,I)=>CE(_,D,I),_.decode=(D,I)=>vE(_,D,I),_.encodeAsync=async(D,I)=>wE(_,D,I),_.decodeAsync=async(D,I)=>rE(_,D,I),_.safeEncode=(D,I)=>fE(_,D,I),_.safeDecode=(D,I)=>xE(_,D,I),_.safeEncodeAsync=async(D,I)=>uE(_,D,I),_.safeDecodeAsync=async(D,I)=>yE(_,D,I),yU(_,"ZodType",{check(...D){let I=this.def;return this.clone(H.mergeDefs(I,{checks:[...I.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,I){return c_(this,D,I)},brand(){return this},register(D,I){return D.add(this,I),this},refine(D,I){return this.check(kj(D,I))},superRefine(D,I){return this.check(qj(D,I))},overwrite(D){return this.check(X$(D))},optional(){return l0(this)},exactOptional(){return Sj(this)},nullable(){return i0(this)},nullish(){return l0(i0(this))},nonoptional(D){return Gj(this,D)},array(){return p0(this)},or(D){return j1([this,D])},and(D){return Dj(this,D)},transform(D){return uU(this,g1(D))},default(D){return Pj(this,D)},prefault(D){return Xj(this,D)},catch(D){return Qj(this,D)},pipe(D){return uU(this,D)},readonly(){return Vj(this)},describe(D){let I=this.clone();return u_.add(I,{description:D}),I},meta(...D){if(D.length===0)return u_.get(this);let I=this.clone();return u_.add(I,D[0]),I},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(D){return D(this)}}),Object.defineProperty(_,"description",{get(){return u_.get(_)?.description},configurable:!0}),_}),hU=Q("_ZodString",(_,$)=>{Y4.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>NS(_,I,U,E);let D=_._zod.bag;_.format=D.format??null,_.minLength=D.minimum??null,_.maxLength=D.maximum??null,yU(_,"_ZodString",{regex(...I){return this.check(Q4(...I))},includes(...I){return this.check(F4(...I))},startsWith(...I){return this.check(V4(...I))},endsWith(...I){return this.check(B4(...I))},min(...I){return this.check(l$(...I))},max(...I){return this.check(x6(...I))},length(...I){return this.check(u6(...I))},nonempty(...I){return this.check(l$(1,...I))},lowercase(I){return this.check(K4(I))},uppercase(I){return this.check(T4(I))},trim(){return this.check(Z4())},normalize(...I){return this.check(b4(...I))},toLowerCase(){return this.check(H4())},toUpperCase(){return this.check(k4())},slugify(){return this.check(q4())}})}),r4=Q("ZodString",(_,$)=>{Y4.init(_,$),hU.init(_,$),_.email=(D)=>_.check(UE(cU,D)),_.url=(D)=>_.check(KU(t0,D)),_.jwt=(D)=>_.check(KE(U1,D)),_.emoji=(D)=>_.check(gE(nU,D)),_.guid=(D)=>_.check(QU(m0,D)),_.uuid=(D)=>_.check(IE(b$,D)),_.uuidv4=(D)=>_.check(EE(b$,D)),_.uuidv6=(D)=>_.check(jE(b$,D)),_.uuidv7=(D)=>_.check(NE(b$,D)),_.nanoid=(D)=>_.check(AE(dU,D)),_.guid=(D)=>_.check(QU(m0,D)),_.cuid=(D)=>_.check(OE(mU,D)),_.cuid2=(D)=>_.check(LE(lU,D)),_.ulid=(D)=>_.check(SE(iU,D)),_.base64=(D)=>_.check(RE(_1,D)),_.base64url=(D)=>_.check(YE($1,D)),_.xid=(D)=>_.check(JE(tU,D)),_.ksuid=(D)=>_.check(WE(oU,D)),_.ipv4=(D)=>_.check(PE(pU,D)),_.ipv6=(D)=>_.check(zE(eU,D)),_.cidrv4=(D)=>_.check(XE(aU,D)),_.cidrv6=(D)=>_.check(GE(sU,D)),_.e164=(D)=>_.check(QE(D1,D)),_.datetime=(D)=>_.check(mS(D)),_.date=(D)=>_.check(lS(D)),_.time=(D)=>_.check(iS(D)),_.duration=(D)=>_.check(tS(D))});P_=Q("ZodStringFormat",(_,$)=>{R_.init(_,$),hU.init(_,$)}),cU=Q("ZodEmail",(_,$)=>{WA.init(_,$),P_.init(_,$)});m0=Q("ZodGUID",(_,$)=>{SA.init(_,$),P_.init(_,$)});b$=Q("ZodUUID",(_,$)=>{JA.init(_,$),P_.init(_,$)});t0=Q("ZodURL",(_,$)=>{PA.init(_,$),P_.init(_,$)});nU=Q("ZodEmoji",(_,$)=>{zA.init(_,$),P_.init(_,$)});dU=Q("ZodNanoID",(_,$)=>{XA.init(_,$),P_.init(_,$)});mU=Q("ZodCUID",(_,$)=>{GA.init(_,$),P_.init(_,$)});lU=Q("ZodCUID2",(_,$)=>{RA.init(_,$),P_.init(_,$)});iU=Q("ZodULID",(_,$)=>{YA.init(_,$),P_.init(_,$)});tU=Q("ZodXID",(_,$)=>{QA.init(_,$),P_.init(_,$)});oU=Q("ZodKSUID",(_,$)=>{KA.init(_,$),P_.init(_,$)});pU=Q("ZodIPv4",(_,$)=>{MA.init(_,$),P_.init(_,$)});hE=Q("ZodMAC",(_,$)=>{ZA.init(_,$),P_.init(_,$)});eU=Q("ZodIPv6",(_,$)=>{bA.init(_,$),P_.init(_,$)});aU=Q("ZodCIDRv4",(_,$)=>{HA.init(_,$),P_.init(_,$)});sU=Q("ZodCIDRv6",(_,$)=>{kA.init(_,$),P_.init(_,$)});_1=Q("ZodBase64",(_,$)=>{CA.init(_,$),P_.init(_,$)});$1=Q("ZodBase64URL",(_,$)=>{vA.init(_,$),P_.init(_,$)});D1=Q("ZodE164",(_,$)=>{wA.init(_,$),P_.init(_,$)});U1=Q("ZodJWT",(_,$)=>{rA.init(_,$),P_.init(_,$)});f4=Q("ZodCustomStringFormat",(_,$)=>{fA.init(_,$),P_.init(_,$)});x4=Q("ZodNumber",(_,$)=>{pI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>gS(_,I,U,E),yU(_,"ZodNumber",{gt(I,U){return this.check(B$(I,U))},gte(I,U){return this.check(n_(I,U))},min(I,U){return this.check(n_(I,U))},lt(I,U){return this.check(V$(I,U))},lte(I,U){return this.check(I$(I,U))},max(I,U){return this.check(I$(I,U))},int(I){return this.check(xU(I))},safe(I){return this.check(xU(I))},positive(I){return this.check(B$(0,I))},nonnegative(I){return this.check(n_(0,I))},negative(I){return this.check(V$(0,I))},nonpositive(I){return this.check(I$(0,I))},multipleOf(I,U){return this.check(S6(I,U))},step(I,U){return this.check(S6(I,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});d6=Q("ZodNumberFormat",(_,$)=>{xA.init(_,$),x4.init(_,$)});u4=Q("ZodBoolean",(_,$)=>{SU.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>AS(_,D,I,U)});y4=Q("ZodBigInt",(_,$)=>{eI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>OS(_,I,U,E),_.gte=(I,U)=>_.check(n_(I,U)),_.min=(I,U)=>_.check(n_(I,U)),_.gt=(I,U)=>_.check(B$(I,U)),_.gte=(I,U)=>_.check(n_(I,U)),_.min=(I,U)=>_.check(n_(I,U)),_.lt=(I,U)=>_.check(V$(I,U)),_.lte=(I,U)=>_.check(I$(I,U)),_.max=(I,U)=>_.check(I$(I,U)),_.positive=(I)=>_.check(B$(BigInt(0),I)),_.negative=(I)=>_.check(V$(BigInt(0),I)),_.nonpositive=(I)=>_.check(I$(BigInt(0),I)),_.nonnegative=(I)=>_.check(n_(BigInt(0),I)),_.multipleOf=(I,U)=>_.check(S6(I,U));let D=_._zod.bag;_.minValue=D.minimum??null,_.maxValue=D.maximum??null,_.format=D.format??null});I1=Q("ZodBigIntFormat",(_,$)=>{uA.init(_,$),y4.init(_,$)});dE=Q("ZodSymbol",(_,$)=>{yA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>LS(_,D,I,U)});mE=Q("ZodUndefined",(_,$)=>{hA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>JS(_,D,I,U)});lE=Q("ZodNull",(_,$)=>{cA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>SS(_,D,I,U)});tE=Q("ZodAny",(_,$)=>{nA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>zS(_,D,I,U)});oE=Q("ZodUnknown",(_,$)=>{dA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>XS(_,D,I,U)});pE=Q("ZodNever",(_,$)=>{mA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>PS(_,D,I,U)});eE=Q("ZodVoid",(_,$)=>{lA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>WS(_,D,I,U)});o0=Q("ZodDate",(_,$)=>{iA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>GS(_,I,U,E),_.min=(I,U)=>_.check(n_(I,U)),_.max=(I,U)=>_.check(I$(I,U));let D=_._zod.bag;_.minDate=D.minimum?new Date(D.minimum):null,_.maxDate=D.maximum?new Date(D.maximum):null});aE=Q("ZodArray",(_,$)=>{tA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>HS(_,D,I,U),_.element=$.element,yU(_,"ZodArray",{min(D,I){return this.check(l$(D,I))},nonempty(D){return this.check(l$(1,D))},max(D,I){return this.check(x6(D,I))},length(D,I){return this.check(u6(D,I))},unwrap(){return this.element}})});e0=Q("ZodObject",(_,$)=>{oA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>kS(_,D,I,U),H.defineLazy(_,"shape",()=>{return $.shape}),yU(_,"ZodObject",{keyof(){return N1(Object.keys(this._zod.def.shape))},catchall(D){return this.clone({...this._zod.def,catchall:D})},passthrough(){return this.clone({...this._zod.def,catchall:n6()})},loose(){return this.clone({...this._zod.def,catchall:n6()})},strict(){return this.clone({...this._zod.def,catchall:E1()})},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(A1,this,D[0])},required(...D){return H.required(O1,this,D[0])}})});a0=Q("ZodUnion",(_,$)=>{JU.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VE(_,D,I,U),_.options=$.options});sE=Q("ZodXor",(_,$)=>{a0.init(_,$),pA.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VE(_,D,I,U),_.options=$.options});_j=Q("ZodDiscriminatedUnion",(_,$)=>{a0.init(_,$),eA.init(_,$)});$j=Q("ZodIntersection",(_,$)=>{aA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>qS(_,D,I,U)});Uj=Q("ZodTuple",(_,$)=>{aI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>CS(_,D,I,U),_.rest=(D)=>_.clone({..._._zod.def,rest:D})});v4=Q("ZodRecord",(_,$)=>{sA.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>vS(_,D,I,U),_.keyType=$.keyType,_.valueType=$.valueType});jj=Q("ZodMap",(_,$)=>{_O.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>bS(_,D,I,U),_.keyType=$.keyType,_.valueType=$.valueType,_.min=(...D)=>_.check(M$(...D)),_.nonempty=(D)=>_.check(M$(1,D)),_.max=(...D)=>_.check(J6(...D)),_.size=(...D)=>_.check(f6(...D))});Nj=Q("ZodSet",(_,$)=>{$O.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>ZS(_,D,I,U),_.min=(...D)=>_.check(M$(...D)),_.nonempty=(D)=>_.check(M$(1,D)),_.max=(...D)=>_.check(J6(...D)),_.size=(...D)=>_.check(f6(...D))});w4=Q("ZodEnum",(_,$)=>{DO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(I,U,E)=>RS(_,I,U,E),_.enum=$.entries,_.options=Object.values($.entries);let D=new Set(Object.keys($.entries));_.extract=(I,U)=>{let E={};for(let j of I)if(D.has(j))E[j]=$.entries[j];else throw Error(`Key ${j} not found in enum`);return new w4({...$,checks:[],...H.normalizeParams(U),entries:E})},_.exclude=(I,U)=>{let E={...$.entries};for(let j of I)if(D.has(j))delete E[j];else throw Error(`Key ${j} not found in enum`);return new w4({...$,checks:[],...H.normalizeParams(U),entries:E})}});gj=Q("ZodLiteral",(_,$)=>{UO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>YS(_,D,I,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]}})});Aj=Q("ZodFile",(_,$)=>{IO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>TS(_,D,I,U),_.min=(D,I)=>_.check(M$(D,I)),_.max=(D,I)=>_.check(J6(D,I)),_.mime=(D,I)=>_.check(M4(Array.isArray(D)?D:[D],I))});Oj=Q("ZodTransform",(_,$)=>{EO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>MS(_,D,I,U),_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4(_.constructor.name);D.addIssue=(E)=>{if(typeof E==="string")D.issues.push(H.issue(E,D.value,$));else{let j=E;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((E)=>{return D.value=E,D.fallback=!0,D});return D.value=U,D.fallback=!0,D}});A1=Q("ZodOptional",(_,$)=>{sI.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BE(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Lj=Q("ZodExactOptional",(_,$)=>{jO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BE(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Jj=Q("ZodNullable",(_,$)=>{NO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>wS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Wj=Q("ZodDefault",(_,$)=>{gO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>fS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType,_.removeDefault=_.unwrap});zj=Q("ZodPrefault",(_,$)=>{AO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>xS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});O1=Q("ZodNonOptional",(_,$)=>{OO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>rS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Rj=Q("ZodSuccess",(_,$)=>{LO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>FS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Yj=Q("ZodCatch",(_,$)=>{SO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>uS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType,_.removeCatch=_.unwrap});Kj=Q("ZodNaN",(_,$)=>{JO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>QS(_,D,I,U)});s0=Q("ZodPipe",(_,$)=>{_E.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>yS(_,D,I,U),_.in=$.in,_.out=$.out});_D=Q("ZodCodec",(_,$)=>{s0.init(_,$),WU.init(_,$)});Tj=Q("ZodPreprocess",(_,$)=>{s0.init(_,$),WO.init(_,$)}),Fj=Q("ZodReadonly",(_,$)=>{PO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>hS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Bj=Q("ZodTemplateLiteral",(_,$)=>{zO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>KS(_,D,I,U)});Mj=Q("ZodLazy",(_,$)=>{RO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>nS(_,D,I,U),_.unwrap=()=>_._zod.def.getter()});Zj=Q("ZodPromise",(_,$)=>{GO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>cS(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Hj=Q("ZodFunction",(_,$)=>{XO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BS(_,D,I,U)});$D=Q("ZodCustom",(_,$)=>{YO.init(_,$),p.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VS(_,D,I,U)});jW=US,NW=IS});function MG(_){Z_({customError:_})}function bG(){return Z_().customError}var BG,Cj;var ZG=r(()=>{O$();BG={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(_){})(Cj||(Cj={}))});function Eb(_,$){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 jb(_,$){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 I=$.version==="draft-2020-12"?"$defs":"definitions";if(D[0]===I){let U=D[1];if(!U||!$.defs[U])throw Error(`Reference not found: ${_}`);return $.defs[U]}throw Error(`Reference not found: ${_}`)}function HG(_,$){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 U=_.$ref;if($.refs.has(U))return $.refs.get(U);if($.processing.has(U))return f.lazy(()=>{if(!$.refs.has(U))throw Error(`Circular reference not resolved: ${U}`);return $.refs.get(U)});$.processing.add(U);let E=jb(U,$),j=d_(E,$);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 f.null();if(U.length===0)return f.never();if(U.length===1)return f.literal(U[0]);if(U.every((j)=>typeof j==="string"))return f.enum(U);let E=U.map((j)=>f.literal(j));if(E.length<2)return E[0];return f.union([E[0],E[1],...E.slice(2)])}if(_.const!==void 0)return f.literal(_.const);let D=_.type;if(Array.isArray(D)){let U=D.map((E)=>{let j={..._,type:E};return HG(j,$)});if(U.length===0)return f.never();if(U.length===1)return U[0];return f.union(U)}if(!D)return f.any();let I;switch(D){case"string":{let U=f.string();if(_.format){let E=_.format;if(E==="email")U=U.check(f.email());else if(E==="uri"||E==="uri-reference")U=U.check(f.url());else if(E==="uuid"||E==="guid")U=U.check(f.uuid());else if(E==="date-time")U=U.check(f.iso.datetime());else if(E==="date")U=U.check(f.iso.date());else if(E==="time")U=U.check(f.iso.time());else if(E==="duration")U=U.check(f.iso.duration());else if(E==="ipv4")U=U.check(f.ipv4());else if(E==="ipv6")U=U.check(f.ipv6());else if(E==="mac")U=U.check(f.mac());else if(E==="cidr")U=U.check(f.cidrv4());else if(E==="cidr-v6")U=U.check(f.cidrv6());else if(E==="base64")U=U.check(f.base64());else if(E==="base64url")U=U.check(f.base64url());else if(E==="e164")U=U.check(f.e164());else if(E==="jwt")U=U.check(f.jwt());else if(E==="emoji")U=U.check(f.emoji());else if(E==="nanoid")U=U.check(f.nanoid());else if(E==="cuid")U=U.check(f.cuid());else if(E==="cuid2")U=U.check(f.cuid2());else if(E==="ulid")U=U.check(f.ulid());else if(E==="xid")U=U.check(f.xid());else if(E==="ksuid")U=U.check(f.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));I=U;break}case"number":case"integer":{let U=D==="integer"?f.number().int():f.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);I=U;break}case"boolean":{I=f.boolean();break}case"null":{I=f.null();break}case"object":{let U={},E=_.properties||{},j=new Set(_.required||[]);for(let[A,O]of Object.entries(E)){let L=d_(O,$);U[A]=j.has(A)?L:L.optional()}if(_.propertyNames){let A=d_(_.propertyNames,$),O=_.additionalProperties&&typeof _.additionalProperties==="object"?d_(_.additionalProperties,$):f.any();if(Object.keys(U).length===0){I=f.record(A,O);break}let L=f.object(U).passthrough(),J=f.looseRecord(A,O);I=f.intersection(L,J);break}if(_.patternProperties){let A=_.patternProperties,O=Object.keys(A),L=[];for(let P of O){let z=d_(A[P],$),S=f.string().regex(new RegExp(P));L.push(f.looseRecord(S,z))}let J=[];if(Object.keys(U).length>0)J.push(f.object(U).passthrough());if(J.push(...L),J.length===0)I=f.object({}).passthrough();else if(J.length===1)I=J[0];else{let P=f.intersection(J[0],J[1]);for(let z=2;z<J.length;z++)P=f.intersection(P,J[z]);I=P}break}let N=f.object(U);if(_.additionalProperties===!1)I=N.strict();else if(typeof _.additionalProperties==="object")I=N.catchall(d_(_.additionalProperties,$));else I=N.passthrough();break}case"array":{let{prefixItems:U,items:E}=_;if(U&&Array.isArray(U)){let j=U.map((A)=>d_(A,$)),N=E&&typeof E==="object"&&!Array.isArray(E)?d_(E,$):void 0;if(N)I=f.tuple(j).rest(N);else I=f.tuple(j);if(typeof _.minItems==="number")I=I.check(f.minLength(_.minItems));if(typeof _.maxItems==="number")I=I.check(f.maxLength(_.maxItems))}else if(Array.isArray(E)){let j=E.map((A)=>d_(A,$)),N=_.additionalItems&&typeof _.additionalItems==="object"?d_(_.additionalItems,$):void 0;if(N)I=f.tuple(j).rest(N);else I=f.tuple(j);if(typeof _.minItems==="number")I=I.check(f.minLength(_.minItems));if(typeof _.maxItems==="number")I=I.check(f.maxLength(_.maxItems))}else if(E!==void 0){let j=d_(E,$),N=f.array(j);if(typeof _.minItems==="number")N=N.min(_.minItems);if(typeof _.maxItems==="number")N=N.max(_.maxItems);I=N}else I=f.array(f.any());break}default:throw Error(`Unsupported type: ${D}`)}return I}function d_(_,$){if(typeof _==="boolean")return _?f.any():f.never();let D=HG(_,$),I=_.type||_.enum!==void 0||_.const!==void 0;if(_.anyOf&&Array.isArray(_.anyOf)){let N=_.anyOf.map((O)=>d_(O,$)),A=f.union(N);D=I?f.intersection(D,A):A}if(_.oneOf&&Array.isArray(_.oneOf)){let N=_.oneOf.map((O)=>d_(O,$)),A=f.xor(N);D=I?f.intersection(D,A):A}if(_.allOf&&Array.isArray(_.allOf))if(_.allOf.length===0)D=I?D:f.any();else{let N=I?D:d_(_.allOf[0],$),A=I?0:1;for(let O=A;O<_.allOf.length;O++)N=f.intersection(N,d_(_.allOf[O],$));D=N}if(_.nullable===!0&&$.version==="openapi-3.0")D=f.nullable(D);if(_.readOnly===!0)D=f.readonly(D);if(_.default!==void 0)D=D.default(_.default);let U={},E=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let N of E)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(!Ib.has(N))U[N]=_[N];if(Object.keys(U).length>0)$.registry.add(D,U);if(_.description)D=D.describe(_.description);return D}function SW(_,$){if(typeof _==="boolean")return _?f.any():f.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 I=Eb(D,$?.defaultTarget),U=D.$defs||D.definitions||{},E={version:I,defs:U,refs:new Map,processing:new Set,rootSchema:D,registry:$?.registry??u_};return d_(D,E)}var f,Ib;var kG=r(()=>{YU();bE();wU();fU();f={...rU,...ME,iso:C4},Ib=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 vj={};x$(vj,{string:()=>Nb,number:()=>gb,date:()=>Lb,boolean:()=>Ab,bigint:()=>Ob});function Nb(_){return TL(r4,_)}function gb(_){return HL(x4,_)}function Ab(_){return fL(u4,_)}function Ob(_){return uL(y4,_)}function Lb(_){return pL(o0,_)}var qG=r(()=>{O$();fU()});var wj={};x$(wj,{xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sS,util:()=>H,url:()=>UJ,uppercase:()=>T4,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,trim:()=>Z4,treeifyError:()=>bI,transform:()=>g1,toUpperCase:()=>k4,toLowerCase:()=>H4,toJSONSchema:()=>ZU,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,setErrorMap:()=>MG,set:()=>lJ,safeParseAsync:()=>qE,safeParse:()=>kE,safeEncodeAsync:()=>uE,safeEncode:()=>fE,safeDecodeAsync:()=>yE,safeDecode:()=>xE,registry:()=>RU,regexes:()=>U$,regex:()=>Q4,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,property:()=>MU,promise:()=>DW,prettifyError:()=>ZI,preprocess:()=>LW,prefault:()=>Xj,positive:()=>TU,pipe:()=>uU,partialRecord:()=>nJ,parseAsync:()=>HE,parse:()=>ZE,overwrite:()=>X$,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,normalize:()=>b4,nonpositive:()=>VU,nonoptional:()=>Gj,nonnegative:()=>BU,never:()=>E1,negative:()=>FU,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,multipleOf:()=>S6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,meta:()=>NW,maxSize:()=>J6,maxLength:()=>x6,map:()=>mJ,mac:()=>JJ,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,looseRecord:()=>dJ,looseObject:()=>yJ,locales:()=>h0,literal:()=>tJ,length:()=>u6,lazy:()=>bj,ksuid:()=>LJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,iso:()=>C4,ipv6:()=>WJ,ipv4:()=>SJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,includes:()=>F4,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aS,gte:()=>n_,gt:()=>B$,globalRegistry:()=>u_,getErrorMap:()=>bG,function:()=>UW,fromJSONSchema:()=>SW,formatError:()=>v0,float64:()=>BJ,float32:()=>VJ,flattenError:()=>C0,file:()=>oJ,exactOptional:()=>Sj,enum:()=>N1,endsWith:()=>B4,encodeAsync:()=>wE,encode:()=>CE,emoji:()=>EJ,email:()=>eS,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,decodeAsync:()=>rE,decode:()=>vE,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,core:()=>i$,config:()=>Z_,coerce:()=>vj,codec:()=>sJ,clone:()=>c_,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>p,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodRealError:()=>e_,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIssueCode:()=>BG,ZodIntersection:()=>$j,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFirstPartyTypeKind:()=>Cj,ZodFile:()=>Aj,ZodExactOptional:()=>Lj,ZodError:()=>FG,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE,TimePrecision:()=>TE,NEVER:()=>FI,$output:()=>$E,$input:()=>DE,$brand:()=>VI});var JW=r(()=>{O$();O$();kO();O$();HU();kG();YL();wU();wU();qG();fU();bE();oS();pS();ZG();Z_(PU())});var CG={};x$(CG,{z:()=>wj,xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sS,util:()=>H,url:()=>UJ,uppercase:()=>T4,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,trim:()=>Z4,treeifyError:()=>bI,transform:()=>g1,toUpperCase:()=>k4,toLowerCase:()=>H4,toJSONSchema:()=>ZU,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,setErrorMap:()=>MG,set:()=>lJ,safeParseAsync:()=>qE,safeParse:()=>kE,safeEncodeAsync:()=>uE,safeEncode:()=>fE,safeDecodeAsync:()=>yE,safeDecode:()=>xE,registry:()=>RU,regexes:()=>U$,regex:()=>Q4,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,property:()=>MU,promise:()=>DW,prettifyError:()=>ZI,preprocess:()=>LW,prefault:()=>Xj,positive:()=>TU,pipe:()=>uU,partialRecord:()=>nJ,parseAsync:()=>HE,parse:()=>ZE,overwrite:()=>X$,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,normalize:()=>b4,nonpositive:()=>VU,nonoptional:()=>Gj,nonnegative:()=>BU,never:()=>E1,negative:()=>FU,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,multipleOf:()=>S6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,meta:()=>NW,maxSize:()=>J6,maxLength:()=>x6,map:()=>mJ,mac:()=>JJ,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,looseRecord:()=>dJ,looseObject:()=>yJ,locales:()=>h0,literal:()=>tJ,length:()=>u6,lazy:()=>bj,ksuid:()=>LJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,iso:()=>C4,ipv6:()=>WJ,ipv4:()=>SJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,includes:()=>F4,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aS,gte:()=>n_,gt:()=>B$,globalRegistry:()=>u_,getErrorMap:()=>bG,function:()=>UW,fromJSONSchema:()=>SW,formatError:()=>v0,float64:()=>BJ,float32:()=>VJ,flattenError:()=>C0,file:()=>oJ,exactOptional:()=>Sj,enum:()=>N1,endsWith:()=>B4,encodeAsync:()=>wE,encode:()=>CE,emoji:()=>EJ,email:()=>eS,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,default:()=>Sb,decodeAsync:()=>rE,decode:()=>vE,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,core:()=>i$,config:()=>Z_,coerce:()=>vj,codec:()=>sJ,clone:()=>c_,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>p,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodRealError:()=>e_,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIssueCode:()=>BG,ZodIntersection:()=>$j,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFirstPartyTypeKind:()=>Cj,ZodFile:()=>Aj,ZodExactOptional:()=>Lj,ZodError:()=>FG,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE,TimePrecision:()=>TE,NEVER:()=>FI,$output:()=>$E,$input:()=>DE,$brand:()=>VI});var Sb;var vG=r(()=>{JW();JW();Sb=wj});var k1=D4((Lw)=>{class WP 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 H8 extends WP{constructor(_){super(1,"commander.invalidArgument",_);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}Lw.CommanderError=WP;Lw.InvalidArgumentError=H8});var BN=D4((zw)=>{var{InvalidArgumentError:Ww}=k1();class k8{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 Ww(`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 Pw(_){let $=_.name()+(_.variadic===!0?"...":"");return _.required?"<"+$+">":"["+$+"]"}zw.Argument=k8;zw.humanReadableArgName=Pw});var PP=D4((Yw)=>{var{humanReadableArgName:Rw}=BN();class q8{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((I)=>!I._hidden),D=_._getHelpCommand();if(D&&!D._hidden)$.push(D);if(this.sortSubcommands)$.sort((I,U)=>{return I.name().localeCompare(U.name())});return $}compareOptions(_,$){let D=(I)=>{return I.short?I.short.replace(/^-/,""):I.long.replace(/^--/,"")};return D(_).localeCompare(D($))}visibleOptions(_){let $=_.options.filter((I)=>!I.hidden),D=_._getHelpOption();if(D&&!D.hidden){let I=D.short&&_._findOption(D.short),U=D.long&&_._findOption(D.long);if(!I&&!U)$.push(D);else if(D.long&&!U)$.push(_.createOption(D.long,D.description));else if(D.short&&!I)$.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 I=D.options.filter((U)=>!U.hidden);$.push(...I)}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)=>Rw(D)).join(" ");return _._name+(_._aliases[0]?"|"+_._aliases[0]:"")+(_.options.length?" [options]":"")+($?" "+$:"")}optionTerm(_){return _.flags}argumentTerm(_){return _.name()}longestSubcommandTermLength(_,$){return $.visibleCommands(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleSubcommandTerm($.subcommandTerm(I))))},0)}longestOptionTermLength(_,$){return $.visibleOptions(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(I))))},0)}longestGlobalOptionTermLength(_,$){return $.visibleGlobalOptions(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(I))))},0)}longestArgumentTermLength(_,$){return $.visibleArguments(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleArgumentTerm($.argumentTerm(I))))},0)}commandUsage(_){let $=_._name;if(_._aliases[0])$=$+"|"+_._aliases[0];let D="";for(let I=_.parent;I;I=I.parent)D=I.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(_,$),I=$.helpWidth??80;function U(L,J){return $.formatItem(L,D,J,$)}let E=[`${$.styleTitle("Usage:")} ${$.styleUsage($.commandUsage(_))}`,""],j=$.commandDescription(_);if(j.length>0)E=E.concat([$.boxWrap($.styleCommandDescription(j),I),""]);let N=$.visibleArguments(_).map((L)=>{return U($.styleArgumentTerm($.argumentTerm(L)),$.styleArgumentDescription($.argumentDescription(L)))});if(N.length>0)E=E.concat([$.styleTitle("Arguments:"),...N,""]);let A=$.visibleOptions(_).map((L)=>{return U($.styleOptionTerm($.optionTerm(L)),$.styleOptionDescription($.optionDescription(L)))});if(A.length>0)E=E.concat([$.styleTitle("Options:"),...A,""]);if($.showGlobalOptions){let L=$.visibleGlobalOptions(_).map((J)=>{return U($.styleOptionTerm($.optionTerm(J)),$.styleOptionDescription($.optionDescription(J)))});if(L.length>0)E=E.concat([$.styleTitle("Global Options:"),...L,""])}let O=$.visibleCommands(_).map((L)=>{return U($.styleSubcommandTerm($.subcommandTerm(L)),$.styleSubcommandDescription($.subcommandDescription(L)))});if(O.length>0)E=E.concat([$.styleTitle("Commands:"),...O,""]);return E.join(` -`)}displayWidth(_){return C8(_).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,I){let E=" ".repeat(2);if(!D)return E+_;let j=_.padEnd($+_.length-I.displayWidth(_)),N=2,O=(this.helpWidth??80)-$-N-2,L;if(O<this.minWidthToWrap||I.preformatted(D))L=D;else L=I.boxWrap(D,O).replace(/\n/g,` -`+" ".repeat($+N));return E+j+" ".repeat(N)+L.replace(/\n/g,` -${E}`)}boxWrap(_,$){if($<this.minWidthToWrap)return _;let D=_.split(/\r\n|\n/),I=/[\s]*[^\s]+/g,U=[];return D.forEach((E)=>{let j=E.match(I);if(j===null){U.push("");return}let N=[j.shift()],A=this.displayWidth(N[0]);j.forEach((O)=>{let L=this.displayWidth(O);if(A+L<=$){N.push(O),A+=L;return}U.push(N.join(""));let J=O.trimStart();N=[J],A=this.displayWidth(J)}),U.push(N.join(""))}),U.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]){E(j);continue}if(_.external){let O=_.external.registry.get(j[0])?.id;if($!==j[0]&&O){E(j);continue}}if(_.metadataRegistry.get(j[0])?.id){E(j);continue}if(N.cycle){E(j);continue}if(N.count>1){if(_.reused==="ref"){E(j);continue}}}}function c6(_,$){let D=_.seen.get($);if(!D)throw Error("Unprocessed schema. This is a bug in Zod.");let I=(N)=>{let A=_.seen.get(N);if(A.ref===null)return;let O=A.def??A.schema,S={...O},L=A.ref;if(A.ref=null,L){I(L);let z=_.seen.get(L),G=z.schema;if(G.$ref&&(_.target==="draft-07"||_.target==="draft-04"||_.target==="openapi-3.0"))O.allOf=O.allOf??[],O.allOf.push(G);else Object.assign(O,G);if(Object.assign(O,S),N._zod.parent===L)for(let W in O){if(W==="$ref"||W==="allOf")continue;if(!(W in S))delete O[W]}if(G.$ref&&z.def)for(let W in O){if(W==="$ref"||W==="allOf")continue;if(W in z.def&&JSON.stringify(O[W])===JSON.stringify(z.def[W]))delete O[W]}}let P=N._zod.parent;if(P&&P!==L){I(P);let z=_.seen.get(P);if(z?.schema.$ref){if(O.$ref=z.schema.$ref,z.def)for(let G in O){if(G==="$ref"||G==="allOf")continue;if(G in z.def&&JSON.stringify(O[G])===JSON.stringify(z.def[G]))delete O[G]}}}_.override({zodSchema:N,jsonSchema:O,path:A.path??[]})};for(let N of[..._.seen.entries()].reverse())I(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 E=_.metadataRegistry.get($)?.id;if(E!==void 0&&U.id===E)delete U.id;let j=_.external?.defs??{};for(let N of _.seen.entries()){let A=N[1];if(A.def&&A.defId){if(A.def.id===A.defId)delete A.def.id;j[A.defId]=A.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:n0($,"input",_.processors),output:n0($,"output",_.processors)}},enumerable:!1,writable:!1}),N}catch(N){throw Error("Error converting schema to JSON.")}}function o_(_,$){let D=$??{seen:new Set};if(D.seen.has(_))return!1;D.seen.add(_);let I=_._zod.def;if(I.type==="transform")return!0;if(I.type==="array")return o_(I.element,D);if(I.type==="set")return o_(I.valueType,D);if(I.type==="lazy")return o_(I.getter(),D);if(I.type==="promise"||I.type==="optional"||I.type==="nonoptional"||I.type==="nullable"||I.type==="readonly"||I.type==="default"||I.type==="prefault")return o_(I.innerType,D);if(I.type==="intersection")return o_(I.left,D)||o_(I.right,D);if(I.type==="record"||I.type==="map")return o_(I.keyType,D)||o_(I.valueType,D);if(I.type==="pipe"){if(_._zod.traits.has("$ZodCodec"))return!0;return o_(I.in,D)||o_(I.out,D)}if(I.type==="object"){for(let U in I.shape)if(o_(I.shape[U],D))return!0;return!1}if(I.type==="union"){for(let U of I.options)if(o_(U,D))return!0;return!1}if(I.type==="tuple"){for(let U of I.items)if(o_(U,D))return!0;if(I.rest&&o_(I.rest,D))return!0;return!1}return!1}var jL=(_,$={})=>(D)=>{let I=y6({...D,processors:$});return L_(_,I),h6(I,_),c6(I,_)},n0=(_,$,D={})=>(I)=>{let{libraryOptions:U,target:E}=I??{},j=y6({...U??{},target:E,io:$,processors:D});return L_(_,j),h6(j,_),c6(j,_)};var bU=r(()=>{YU()});function ZU(_,$){if("_idmap"in _){let I=_,U=y6({...$,processors:FE}),E={};for(let A of I._idmap.entries()){let[O,S]=A;L_(S,U)}let j={},N={registry:I,uri:$?.uri,defs:E};U.external=N;for(let A of I._idmap.entries()){let[O,S]=A;h6(U,S),j[O]=c6(U,S)}if(Object.keys(E).length>0){let A=U.target==="draft-2020-12"?"$defs":"definitions";j.__shared={[A]:E}}return{schemas:j}}let D=y6({...$,processors:FE});return L_(_,D),h6(D,_),c6(D,_)}var $b,NL=(_,$,D,I)=>{let U=D;U.type="string";let{minimum:E,maximum:j,format:N,patterns:A,contentEncoding:O}=_._zod.bag;if(typeof E==="number")U.minLength=E;if(typeof j==="number")U.maxLength=j;if(N){if(U.format=$b[N]??N,U.format==="")delete U.format;if(N==="time")delete U.format}if(O)U.contentEncoding=O;if(A&&A.size>0){let S=[...A];if(S.length===1)U.pattern=S[0].source;else if(S.length>1)U.allOf=[...S.map((L)=>({...$.target==="draft-07"||$.target==="draft-04"||$.target==="openapi-3.0"?{type:"string"}:{},pattern:L.source}))]}},gL=(_,$,D,I)=>{let U=D,{minimum:E,maximum:j,format:N,multipleOf:A,exclusiveMaximum:O,exclusiveMinimum:S}=_._zod.bag;if(typeof N==="string"&&N.includes("int"))U.type="integer";else U.type="number";let L=typeof S==="number"&&S>=(E??Number.NEGATIVE_INFINITY),P=typeof O==="number"&&O<=(j??Number.POSITIVE_INFINITY),z=$.target==="draft-04"||$.target==="openapi-3.0";if(L)if(z)U.minimum=S,U.exclusiveMinimum=!0;else U.exclusiveMinimum=S;else if(typeof E==="number")U.minimum=E;if(P)if(z)U.maximum=O,U.exclusiveMaximum=!0;else U.exclusiveMaximum=O;else if(typeof j==="number")U.maximum=j;if(typeof A==="number")U.multipleOf=A},AL=(_,$,D,I)=>{D.type="boolean"},OL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("BigInt cannot be represented in JSON Schema")},SL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Symbols cannot be represented in JSON Schema")},LL=(_,$,D,I)=>{if($.target==="openapi-3.0")D.type="string",D.nullable=!0,D.enum=[null];else D.type="null"},JL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Undefined cannot be represented in JSON Schema")},WL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Void cannot be represented in JSON Schema")},PL=(_,$,D,I)=>{D.not={}},zL=(_,$,D,I)=>{},XL=(_,$,D,I)=>{},GL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Date cannot be represented in JSON Schema")},RL=(_,$,D,I)=>{let U=_._zod.def,E=UU(U.entries);if(E.every((j)=>typeof j==="number"))D.type="number";if(E.every((j)=>typeof j==="string"))D.type="string";D.enum=E},YL=(_,$,D,I)=>{let U=_._zod.def,E=[];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 E.push(Number(j));else E.push(j);if(E.length===0);else if(E.length===1){let j=E[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(E.every((j)=>typeof j==="number"))D.type="number";if(E.every((j)=>typeof j==="string"))D.type="string";if(E.every((j)=>typeof j==="boolean"))D.type="boolean";if(E.every((j)=>j===null))D.type="null";D.enum=E}},QL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("NaN cannot be represented in JSON Schema")},KL=(_,$,D,I)=>{let U=D,E=_._zod.pattern;if(!E)throw Error("Pattern not found in template literal");U.type="string",U.pattern=E.source},TL=(_,$,D,I)=>{let U=D,E={type:"string",format:"binary",contentEncoding:"binary"},{minimum:j,maximum:N,mime:A}=_._zod.bag;if(j!==void 0)E.minLength=j;if(N!==void 0)E.maxLength=N;if(A)if(A.length===1)E.contentMediaType=A[0],Object.assign(U,E);else Object.assign(U,E),U.anyOf=A.map((O)=>({contentMediaType:O}));else Object.assign(U,E)},FL=(_,$,D,I)=>{D.type="boolean"},VL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Custom types cannot be represented in JSON Schema")},BL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Function types cannot be represented in JSON Schema")},ML=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Transforms cannot be represented in JSON Schema")},bL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Map cannot be represented in JSON Schema")},ZL=(_,$,D,I)=>{if($.unrepresentable==="throw")throw Error("Set cannot be represented in JSON Schema")},HL=(_,$,D,I)=>{let U=D,E=_._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=L_(E.element,$,{...I,path:[...I.path,"items"]})},kL=(_,$,D,I)=>{let U=D,E=_._zod.def;U.type="object",U.properties={};let j=E.shape;for(let O in j)U.properties[O]=L_(j[O],$,{...I,path:[...I.path,"properties",O]});let N=new Set(Object.keys(j)),A=new Set([...N].filter((O)=>{let S=E.shape[O]._zod;if($.io==="input")return S.optin===void 0;else return S.optout===void 0}));if(A.size>0)U.required=Array.from(A);if(E.catchall?._zod.def.type==="never")U.additionalProperties=!1;else if(!E.catchall){if($.io==="output")U.additionalProperties=!1}else if(E.catchall)U.additionalProperties=L_(E.catchall,$,{...I,path:[...I.path,"additionalProperties"]})},VE=(_,$,D,I)=>{let U=_._zod.def,E=U.inclusive===!1,j=U.options.map((N,A)=>L_(N,$,{...I,path:[...I.path,E?"oneOf":"anyOf",A]}));if(E)D.oneOf=j;else D.anyOf=j},qL=(_,$,D,I)=>{let U=_._zod.def,E=L_(U.left,$,{...I,path:[...I.path,"allOf",0]}),j=L_(U.right,$,{...I,path:[...I.path,"allOf",1]}),N=(O)=>("allOf"in O)&&Object.keys(O).length===1,A=[...N(E)?E.allOf:[E],...N(j)?j.allOf:[j]];D.allOf=A},CL=(_,$,D,I)=>{let U=D,E=_._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",A=E.items.map((P,z)=>L_(P,$,{...I,path:[...I.path,j,z]})),O=E.rest?L_(E.rest,$,{...I,path:[...I.path,N,...$.target==="openapi-3.0"?[E.items.length]:[]]}):null;if($.target==="draft-2020-12"){if(U.prefixItems=A,O)U.items=O}else if($.target==="openapi-3.0"){if(U.items={anyOf:A},O)U.items.anyOf.push(O);if(U.minItems=A.length,!O)U.maxItems=A.length}else if(U.items=A,O)U.additionalItems=O;let{minimum:S,maximum:L}=_._zod.bag;if(typeof S==="number")U.minItems=S;if(typeof L==="number")U.maxItems=L},vL=(_,$,D,I)=>{let U=D,E=_._zod.def;U.type="object";let j=E.keyType,A=j._zod.bag?.patterns;if(E.mode==="loose"&&A&&A.size>0){let S=L_(E.valueType,$,{...I,path:[...I.path,"patternProperties","*"]});U.patternProperties={};for(let L of A)U.patternProperties[L.source]=S}else{if($.target==="draft-07"||$.target==="draft-2020-12")U.propertyNames=L_(E.keyType,$,{...I,path:[...I.path,"propertyNames"]});U.additionalProperties=L_(E.valueType,$,{...I,path:[...I.path,"additionalProperties"]})}let O=j._zod.values;if(O){let S=[...O].filter((L)=>typeof L==="string"||typeof L==="number");if(S.length>0)U.required=S}},wL=(_,$,D,I)=>{let U=_._zod.def,E=L_(U.innerType,$,I),j=$.seen.get(_);if($.target==="openapi-3.0")j.ref=U.innerType,D.nullable=!0;else D.anyOf=[E,{type:"null"}]},rL=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},fL=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType,D.default=JSON.parse(JSON.stringify(U.defaultValue))},xL=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);if(E.ref=U.innerType,$.io==="input")D._prefault=JSON.parse(JSON.stringify(U.defaultValue))},uL=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.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},yL=(_,$,D,I)=>{let U=_._zod.def,E=U.in._zod.traits.has("$ZodTransform"),j=$.io==="input"?E?U.out:U.in:U.out;L_(j,$,I);let N=$.seen.get(_);N.ref=j},hL=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType,D.readOnly=!0},cL=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},BE=(_,$,D,I)=>{let U=_._zod.def;L_(U.innerType,$,I);let E=$.seen.get(_);E.ref=U.innerType},nL=(_,$,D,I)=>{let U=_._zod.innerType;L_(U,$,I);let E=$.seen.get(_);E.ref=U},FE;var HU=r(()=>{bU();n();$b={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""},FE={string:NL,number:gL,boolean:AL,bigint:OL,symbol:SL,null:LL,undefined:JL,void:WL,never:PL,any:zL,unknown:XL,date:GL,enum:RL,literal:YL,nan:QL,template_literal:KL,file:TL,success:FL,custom:VL,function:BL,transform:ML,map:bL,set:ZL,array:HL,object:kL,union:VE,intersection:qL,tuple:CL,record:vL,nullable:wL,nonoptional:rL,default:fL,prefault:xL,catch:uL,pipe:yL,readonly:hL,promise:cL,optional:BE,lazy:nL}});class dL{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=y6({processors:FE,target:$,..._?.metadata&&{metadata:_.metadata},..._?.unrepresentable&&{unrepresentable:_.unrepresentable},..._?.override&&{override:_.override},..._?.io&&{io:_.io}})}process(_,$={path:[],schemaPath:[]}){return L_(_,this.ctx,$)}emit(_,$){if($){if($.cycles)this.ctx.cycles=$.cycles;if($.reused)this.ctx.reused=$.reused;if($.external)this.ctx.external=$.external}h6(this.ctx,_);let D=c6(this.ctx,_),{"~standard":I,...U}=D;return U}}var YG=r(()=>{HU();bU()});var QG={};var KG=()=>{};var i$={};x$(i$,{version:()=>AA,util:()=>H,treeifyError:()=>bI,toJSONSchema:()=>ZU,toDotPath:()=>lX,safeParseAsync:()=>W2,safeParse:()=>J2,safeEncodeAsync:()=>IB,safeEncode:()=>DB,safeDecodeAsync:()=>EB,safeDecode:()=>UB,registry:()=>RU,regexes:()=>U$,process:()=>L_,prettifyError:()=>ZI,parseAsync:()=>kI,parse:()=>HI,meta:()=>IL,locales:()=>h0,isValidJWT:()=>W5,isValidBase64URL:()=>J5,isValidBase64:()=>qA,initializeContext:()=>y6,globalRegistry:()=>x_,globalConfig:()=>P4,formatError:()=>v0,flattenError:()=>C0,finalize:()=>c6,extractDefs:()=>h6,encodeAsync:()=>_B,encode:()=>aV,describe:()=>UL,decodeAsync:()=>$B,decode:()=>sV,createToJSONSchemaMethod:()=>jL,createStandardJSONSchemaMethod:()=>n0,config:()=>Z_,clone:()=>h_,_xor:()=>CM,_xid:()=>JE,_void:()=>tS,_uuidv7:()=>NE,_uuidv6:()=>jE,_uuidv4:()=>EE,_uuid:()=>IE,_url:()=>KU,_uppercase:()=>T4,_unknown:()=>lS,_union:()=>qM,_undefined:()=>nS,_ulid:()=>LE,_uint64:()=>hS,_uint32:()=>wS,_tuple:()=>rM,_trim:()=>Z4,_transform:()=>nM,_toUpperCase:()=>k4,_toLowerCase:()=>H4,_templateLiteral:()=>aM,_symbol:()=>cS,_superRefine:()=>DL,_success:()=>tM,_stringbool:()=>EL,_stringFormat:()=>c0,_string:()=>KS,_startsWith:()=>V4,_slugify:()=>q4,_size:()=>f6,_set:()=>uM,_safeParseAsync:()=>x0,_safeParse:()=>f0,_safeEncodeAsync:()=>xI,_safeEncode:()=>rI,_safeDecodeAsync:()=>uI,_safeDecode:()=>fI,_regex:()=>Q4,_refine:()=>$L,_record:()=>fM,_readonly:()=>eM,_property:()=>MU,_promise:()=>_b,_positive:()=>TU,_pipe:()=>pM,_parseAsync:()=>r0,_parse:()=>w0,_overwrite:()=>X$,_optional:()=>dM,_number:()=>ZS,_nullable:()=>mM,_null:()=>dS,_normalize:()=>b4,_nonpositive:()=>VU,_nonoptional:()=>iM,_nonnegative:()=>BU,_never:()=>iS,_negative:()=>FU,_nativeEnum:()=>hM,_nanoid:()=>AE,_nan:()=>eS,_multipleOf:()=>L6,_minSize:()=>M$,_minLength:()=>l$,_min:()=>c_,_mime:()=>M4,_maxSize:()=>J6,_maxLength:()=>x6,_max:()=>I$,_map:()=>xM,_mac:()=>FS,_lte:()=>I$,_lt:()=>V$,_lowercase:()=>K4,_literal:()=>cM,_length:()=>u6,_lazy:()=>sM,_ksuid:()=>WE,_jwt:()=>KE,_isoTime:()=>MS,_isoDuration:()=>bS,_isoDateTime:()=>VS,_isoDate:()=>BS,_ipv6:()=>zE,_ipv4:()=>PE,_intersection:()=>wM,_int64:()=>yS,_int32:()=>vS,_int:()=>kS,_includes:()=>F4,_guid:()=>QU,_gte:()=>c_,_gt:()=>B$,_float64:()=>CS,_float32:()=>qS,_file:()=>sS,_enum:()=>yM,_endsWith:()=>B4,_encodeAsync:()=>vI,_encode:()=>qI,_emoji:()=>gE,_email:()=>UE,_e164:()=>QE,_discriminatedUnion:()=>vM,_default:()=>lM,_decodeAsync:()=>wI,_decode:()=>CI,_date:()=>oS,_custom:()=>_L,_cuid2:()=>SE,_cuid:()=>OE,_coercedString:()=>TS,_coercedNumber:()=>HS,_coercedDate:()=>pS,_coercedBoolean:()=>fS,_coercedBigint:()=>uS,_cidrv6:()=>GE,_cidrv4:()=>XE,_check:()=>GG,_catch:()=>oM,_boolean:()=>rS,_bigint:()=>xS,_base64url:()=>YE,_base64:()=>RE,_array:()=>aS,_any:()=>mS,TimePrecision:()=>TE,NEVER:()=>FI,JSONSchemaGenerator:()=>dL,JSONSchema:()=>QG,Doc:()=>mI,$output:()=>$E,$input:()=>DE,$constructor:()=>K,$brand:()=>VI,$ZodXor:()=>pA,$ZodXID:()=>QA,$ZodVoid:()=>lA,$ZodUnknown:()=>dA,$ZodUnion:()=>JU,$ZodUndefined:()=>hA,$ZodUUID:()=>JA,$ZodURL:()=>PA,$ZodULID:()=>YA,$ZodType:()=>o,$ZodTuple:()=>aI,$ZodTransform:()=>EO,$ZodTemplateLiteral:()=>zO,$ZodSymbol:()=>yA,$ZodSuccess:()=>SO,$ZodStringFormat:()=>Y_,$ZodString:()=>Y4,$ZodSet:()=>$O,$ZodRegistry:()=>QS,$ZodRecord:()=>sA,$ZodRealError:()=>D$,$ZodReadonly:()=>PO,$ZodPromise:()=>GO,$ZodPreprocess:()=>WO,$ZodPrefault:()=>AO,$ZodPipe:()=>_E,$ZodOptional:()=>sI,$ZodObjectJIT:()=>oA,$ZodObject:()=>X5,$ZodNumberFormat:()=>xA,$ZodNumber:()=>pI,$ZodNullable:()=>NO,$ZodNull:()=>cA,$ZodNonOptional:()=>OO,$ZodNever:()=>mA,$ZodNanoID:()=>XA,$ZodNaN:()=>JO,$ZodMap:()=>_O,$ZodMAC:()=>ZA,$ZodLiteral:()=>UO,$ZodLazy:()=>RO,$ZodKSUID:()=>KA,$ZodJWT:()=>rA,$ZodIntersection:()=>aA,$ZodISOTime:()=>VA,$ZodISODuration:()=>BA,$ZodISODateTime:()=>TA,$ZodISODate:()=>FA,$ZodIPv6:()=>bA,$ZodIPv4:()=>MA,$ZodGUID:()=>LA,$ZodFunction:()=>XO,$ZodFile:()=>IO,$ZodExactOptional:()=>jO,$ZodError:()=>gU,$ZodEnum:()=>DO,$ZodEncodeError:()=>z4,$ZodEmoji:()=>zA,$ZodEmail:()=>WA,$ZodE164:()=>wA,$ZodDiscriminatedUnion:()=>eA,$ZodDefault:()=>gO,$ZodDate:()=>iA,$ZodCustomStringFormat:()=>fA,$ZodCustom:()=>YO,$ZodCodec:()=>WU,$ZodCheckUpperCase:()=>DA,$ZodCheckStringFormat:()=>u0,$ZodCheckStartsWith:()=>IA,$ZodCheckSizeEquals:()=>p2,$ZodCheckRegex:()=>_A,$ZodCheckProperty:()=>jA,$ZodCheckOverwrite:()=>gA,$ZodCheckNumberFormat:()=>l2,$ZodCheckMultipleOf:()=>m2,$ZodCheckMinSize:()=>o2,$ZodCheckMinLength:()=>a2,$ZodCheckMimeType:()=>NA,$ZodCheckMaxSize:()=>t2,$ZodCheckMaxLength:()=>e2,$ZodCheckLowerCase:()=>$A,$ZodCheckLessThan:()=>cI,$ZodCheckLengthEquals:()=>s2,$ZodCheckIncludes:()=>UA,$ZodCheckGreaterThan:()=>nI,$ZodCheckEndsWith:()=>EA,$ZodCheckBigIntFormat:()=>i2,$ZodCheck:()=>Q_,$ZodCatch:()=>LO,$ZodCUID2:()=>RA,$ZodCUID:()=>GA,$ZodCIDRv6:()=>kA,$ZodCIDRv4:()=>HA,$ZodBoolean:()=>LU,$ZodBigIntFormat:()=>uA,$ZodBigInt:()=>eI,$ZodBase64URL:()=>vA,$ZodBase64:()=>CA,$ZodAsyncError:()=>m$,$ZodArray:()=>tA,$ZodAny:()=>nA});var O$=r(()=>{n();hI();YS();HU();YG();KG();X4();P2();L2();QO();dI();OA();YU();RG();bU()});var ME={};x$(ME,{uppercase:()=>T4,trim:()=>Z4,toUpperCase:()=>k4,toLowerCase:()=>H4,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,regex:()=>Q4,property:()=>MU,positive:()=>TU,overwrite:()=>X$,normalize:()=>b4,nonpositive:()=>VU,nonnegative:()=>BU,negative:()=>FU,multipleOf:()=>L6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,maxSize:()=>J6,maxLength:()=>x6,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,length:()=>u6,includes:()=>F4,gte:()=>c_,gt:()=>B$,endsWith:()=>B4});var bE=r(()=>{O$()});var C4={};x$(C4,{time:()=>iL,duration:()=>tL,datetime:()=>mL,date:()=>lL,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU});function mL(_){return VS(kU,_)}function lL(_){return BS(qU,_)}function iL(_){return MS(CU,_)}function tL(_){return bS(vU,_)}var kU,qU,CU,vU;var wU=r(()=>{O$();fU();kU=K("ZodISODateTime",(_,$)=>{TA.init(_,$),P_.init(_,$)});qU=K("ZodISODate",(_,$)=>{FA.init(_,$),P_.init(_,$)});CU=K("ZodISOTime",(_,$)=>{VA.init(_,$),P_.init(_,$)});vU=K("ZodISODuration",(_,$)=>{BA.init(_,$),P_.init(_,$)})});var TG=(_,$)=>{gU.init(_,$),_.name="ZodError",Object.defineProperties(_,{format:{value:(D)=>v0(_,D)},flatten:{value:(D)=>C0(_,D)},addIssue:{value:(D)=>{_.issues.push(D),_.message=JSON.stringify(_.issues,H0,2)}},addIssues:{value:(D)=>{_.issues.push(...D),_.message=JSON.stringify(_.issues,H0,2)}},isEmpty:{get(){return _.issues.length===0}}})},FG,p_;var oL=r(()=>{O$();O$();n();FG=K("ZodError",TG),p_=K("ZodError",TG,{Parent:Error})});var ZE,HE,kE,qE,CE,vE,wE,rE,fE,xE,uE,yE;var pL=r(()=>{O$();oL();ZE=w0(p_),HE=r0(p_),kE=f0(p_),qE=x0(p_),CE=qI(p_),vE=CI(p_),wE=vI(p_),rE=wI(p_),fE=rI(p_),xE=fI(p_),uE=xI(p_),yE=uI(p_)});var rU={};x$(rU,{xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sL,url:()=>UJ,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,transform:()=>g1,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,set:()=>lJ,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,promise:()=>DW,preprocess:()=>SW,prefault:()=>Xj,pipe:()=>uU,partialRecord:()=>nJ,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,nonoptional:()=>Gj,never:()=>E1,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,meta:()=>NW,map:()=>mJ,mac:()=>JJ,looseRecord:()=>dJ,looseObject:()=>yJ,literal:()=>tJ,lazy:()=>bj,ksuid:()=>SJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,ipv6:()=>WJ,ipv4:()=>LJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aL,function:()=>UW,float64:()=>BJ,float32:()=>VJ,file:()=>oJ,exactOptional:()=>Lj,enum:()=>N1,emoji:()=>EJ,email:()=>eL,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,codec:()=>sJ,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>e,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIntersection:()=>$j,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFile:()=>Aj,ZodExactOptional:()=>Sj,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE});function yU(_,$,D){let I=Object.getPrototypeOf(_),U=VG.get(I);if(!U)U=new Set,VG.set(I,U);if(U.has($))return;U.add($);for(let E in D){let j=D[E];Object.defineProperty(I,E,{configurable:!0,enumerable:!1,get(){let N=j.bind(this);return Object.defineProperty(this,E,{configurable:!0,writable:!0,enumerable:!0,value:N}),N},set(N){Object.defineProperty(this,E,{configurable:!0,writable:!0,enumerable:!0,value:N})}})}}function d0(_){return KS(r4,_)}function eL(_){return UE(cU,_)}function aL(_){return QU(m0,_)}function sL(_){return IE(b$,_)}function _J(_){return EE(b$,_)}function $J(_){return jE(b$,_)}function DJ(_){return NE(b$,_)}function UJ(_){return KU(t0,_)}function IJ(_){return KU(t0,{protocol:U$.httpProtocol,hostname:U$.domain,...H.normalizeParams(_)})}function EJ(_){return gE(nU,_)}function jJ(_){return AE(dU,_)}function NJ(_){return OE(mU,_)}function gJ(_){return SE(lU,_)}function AJ(_){return LE(iU,_)}function OJ(_){return JE(tU,_)}function SJ(_){return WE(oU,_)}function LJ(_){return PE(pU,_)}function JJ(_){return FS(hE,_)}function WJ(_){return zE(eU,_)}function PJ(_){return XE(aU,_)}function zJ(_){return GE(sU,_)}function XJ(_){return RE(_1,_)}function GJ(_){return YE($1,_)}function RJ(_){return QE(D1,_)}function YJ(_){return KE(U1,_)}function QJ(_,$,D={}){return c0(f4,_,$,D)}function KJ(_){return c0(f4,"hostname",U$.hostname,_)}function TJ(_){return c0(f4,"hex",U$.hex,_)}function FJ(_,$){let D=$?.enc??"hex",I=`${_}_${D}`,U=U$[I];if(!U)throw Error(`Unrecognized hash format: ${I}`);return c0(f4,I,U,$)}function cE(_){return ZS(x4,_)}function xU(_){return kS(d6,_)}function VJ(_){return qS(d6,_)}function BJ(_){return CS(d6,_)}function MJ(_){return vS(d6,_)}function bJ(_){return wS(d6,_)}function nE(_){return rS(u4,_)}function ZJ(_){return xS(y4,_)}function HJ(_){return yS(I1,_)}function kJ(_){return hS(I1,_)}function qJ(_){return cS(dE,_)}function CJ(_){return nS(mE,_)}function iE(_){return dS(lE,_)}function vJ(){return mS(tE)}function n6(){return lS(oE)}function E1(_){return iS(pE,_)}function wJ(_){return tS(eE,_)}function rJ(_){return oS(o0,_)}function p0(_,$){return aS(aE,_,$)}function fJ(_){let $=_._zod.def.shape;return N1(Object.keys($))}function xJ(_,$){let D={type:"object",shape:_??{},...H.normalizeParams($)};return new e0(D)}function uJ(_,$){return new e0({type:"object",shape:_,catchall:E1(),...H.normalizeParams($)})}function yJ(_,$){return new e0({type:"object",shape:_,catchall:n6(),...H.normalizeParams($)})}function j1(_,$){return new a0({type:"union",options:_,...H.normalizeParams($)})}function hJ(_,$){return new sE({type:"union",options:_,inclusive:!1,...H.normalizeParams($)})}function cJ(_,$,D){return new _j({type:"union",options:$,discriminator:_,...H.normalizeParams(D)})}function Dj(_,$){return new $j({type:"intersection",left:_,right:$})}function Ij(_,$,D){let I=$ instanceof o,U=I?D:$;return new Uj({type:"tuple",items:_,rest:I?$:null,...H.normalizeParams(U)})}function Ej(_,$,D){if(!$||!$._zod)return new v4({type:"record",keyType:d0(),valueType:_,...H.normalizeParams($)});return new v4({type:"record",keyType:_,valueType:$,...H.normalizeParams(D)})}function nJ(_,$,D){let I=h_(_);return I._zod.values=void 0,new v4({type:"record",keyType:I,valueType:$,...H.normalizeParams(D)})}function dJ(_,$,D){return new v4({type:"record",keyType:_,valueType:$,mode:"loose",...H.normalizeParams(D)})}function mJ(_,$,D){return new jj({type:"map",keyType:_,valueType:$,...H.normalizeParams(D)})}function lJ(_,$){return new Nj({type:"set",valueType:_,...H.normalizeParams($)})}function N1(_,$){let D=Array.isArray(_)?Object.fromEntries(_.map((I)=>[I,I])):_;return new w4({type:"enum",entries:D,...H.normalizeParams($)})}function iJ(_,$){return new w4({type:"enum",entries:_,...H.normalizeParams($)})}function tJ(_,$){return new gj({type:"literal",values:Array.isArray(_)?_:[_],...H.normalizeParams($)})}function oJ(_){return sS(Aj,_)}function g1(_){return new Oj({type:"transform",transform:_})}function l0(_){return new A1({type:"optional",innerType:_})}function Lj(_){return new Sj({type:"optional",innerType:_})}function i0(_){return new Jj({type:"nullable",innerType:_})}function pJ(_){return l0(i0(_))}function Pj(_,$){return new Wj({type:"default",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Xj(_,$){return new zj({type:"prefault",innerType:_,get defaultValue(){return typeof $==="function"?$():H.shallowClone($)}})}function Gj(_,$){return new O1({type:"nonoptional",innerType:_,...H.normalizeParams($)})}function eJ(_){return new Rj({type:"success",innerType:_})}function Qj(_,$){return new Yj({type:"catch",innerType:_,catchValue:typeof $==="function"?$:()=>$})}function aJ(_){return eS(Kj,_)}function uU(_,$){return new s0({type:"pipe",in:_,out:$})}function sJ(_,$,D){return new _D({type:"pipe",in:_,out:$,transform:D.decode,reverseTransform:D.encode})}function _W(_){let $=_._zod.def;return new _D({type:"pipe",in:$.out,out:$.in,transform:$.reverseTransform,reverseTransform:$.transform})}function Vj(_){return new Fj({type:"readonly",innerType:_})}function $W(_,$){return new Bj({type:"template_literal",parts:_,...H.normalizeParams($)})}function bj(_){return new Mj({type:"lazy",getter:_})}function DW(_){return new Zj({type:"promise",innerType:_})}function UW(_){return new Hj({type:"function",input:Array.isArray(_?.input)?Ij(_?.input):_?.input??p0(n6()),output:_?.output??n6()})}function IW(_){let $=new Q_({check:"custom"});return $._zod.check=_,$}function EW(_,$){return _L($D,_??(()=>!0),$)}function kj(_,$={}){return $L($D,_,$)}function qj(_,$){return DL(_,$)}function gW(_,$={}){let D=new $D({type:"custom",check:"custom",fn:(I)=>I instanceof _,abort:!0,...H.normalizeParams($)});return D._zod.bag.Class=_,D._zod.check=(I)=>{if(!(I.value instanceof _))I.issues.push({code:"invalid_type",expected:_.name,input:I.value,inst:D,path:[...D._zod.def.path??[]]})},D}function OW(_){let $=bj(()=>{return j1([d0(_),cE(),nE(),iE(),p0($),Ej(d0(),$)])});return $}function SW(_,$){return new Tj({type:"pipe",in:g1(_),out:$})}var VG,e,hU,r4,P_,cU,m0,b$,t0,nU,dU,mU,lU,iU,tU,oU,pU,hE,eU,aU,sU,_1,$1,D1,U1,f4,x4,d6,u4,y4,I1,dE,mE,lE,tE,oE,pE,eE,o0,aE,e0,a0,sE,_j,$j,Uj,v4,jj,Nj,w4,gj,Aj,Oj,A1,Sj,Jj,Wj,zj,O1,Rj,Yj,Kj,s0,_D,Tj,Fj,Bj,Mj,Zj,Hj,$D,jW,NW,AW=(..._)=>EL({Codec:_D,Boolean:u4,String:r4},..._);var fU=r(()=>{O$();O$();HU();bU();bE();wU();pL();VG=new WeakMap;e=K("ZodType",(_,$)=>{return o.init(_,$),Object.assign(_["~standard"],{jsonSchema:{input:n0(_,"input"),output:n0(_,"output")}}),_.toJSONSchema=jL(_,{}),_.def=$,_.type=$.type,Object.defineProperty(_,"_def",{value:$}),_.parse=(D,I)=>ZE(_,D,I,{callee:_.parse}),_.safeParse=(D,I)=>kE(_,D,I),_.parseAsync=async(D,I)=>HE(_,D,I,{callee:_.parseAsync}),_.safeParseAsync=async(D,I)=>qE(_,D,I),_.spa=_.safeParseAsync,_.encode=(D,I)=>CE(_,D,I),_.decode=(D,I)=>vE(_,D,I),_.encodeAsync=async(D,I)=>wE(_,D,I),_.decodeAsync=async(D,I)=>rE(_,D,I),_.safeEncode=(D,I)=>fE(_,D,I),_.safeDecode=(D,I)=>xE(_,D,I),_.safeEncodeAsync=async(D,I)=>uE(_,D,I),_.safeDecodeAsync=async(D,I)=>yE(_,D,I),yU(_,"ZodType",{check(...D){let I=this.def;return this.clone(H.mergeDefs(I,{checks:[...I.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,I){return h_(this,D,I)},brand(){return this},register(D,I){return D.add(this,I),this},refine(D,I){return this.check(kj(D,I))},superRefine(D,I){return this.check(qj(D,I))},overwrite(D){return this.check(X$(D))},optional(){return l0(this)},exactOptional(){return Lj(this)},nullable(){return i0(this)},nullish(){return l0(i0(this))},nonoptional(D){return Gj(this,D)},array(){return p0(this)},or(D){return j1([this,D])},and(D){return Dj(this,D)},transform(D){return uU(this,g1(D))},default(D){return Pj(this,D)},prefault(D){return Xj(this,D)},catch(D){return Qj(this,D)},pipe(D){return uU(this,D)},readonly(){return Vj(this)},describe(D){let I=this.clone();return x_.add(I,{description:D}),I},meta(...D){if(D.length===0)return x_.get(this);let I=this.clone();return x_.add(I,D[0]),I},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(D){return D(this)}}),Object.defineProperty(_,"description",{get(){return x_.get(_)?.description},configurable:!0}),_}),hU=K("_ZodString",(_,$)=>{Y4.init(_,$),e.init(_,$),_._zod.processJSONSchema=(I,U,E)=>NL(_,I,U,E);let D=_._zod.bag;_.format=D.format??null,_.minLength=D.minimum??null,_.maxLength=D.maximum??null,yU(_,"_ZodString",{regex(...I){return this.check(Q4(...I))},includes(...I){return this.check(F4(...I))},startsWith(...I){return this.check(V4(...I))},endsWith(...I){return this.check(B4(...I))},min(...I){return this.check(l$(...I))},max(...I){return this.check(x6(...I))},length(...I){return this.check(u6(...I))},nonempty(...I){return this.check(l$(1,...I))},lowercase(I){return this.check(K4(I))},uppercase(I){return this.check(T4(I))},trim(){return this.check(Z4())},normalize(...I){return this.check(b4(...I))},toLowerCase(){return this.check(H4())},toUpperCase(){return this.check(k4())},slugify(){return this.check(q4())}})}),r4=K("ZodString",(_,$)=>{Y4.init(_,$),hU.init(_,$),_.email=(D)=>_.check(UE(cU,D)),_.url=(D)=>_.check(KU(t0,D)),_.jwt=(D)=>_.check(KE(U1,D)),_.emoji=(D)=>_.check(gE(nU,D)),_.guid=(D)=>_.check(QU(m0,D)),_.uuid=(D)=>_.check(IE(b$,D)),_.uuidv4=(D)=>_.check(EE(b$,D)),_.uuidv6=(D)=>_.check(jE(b$,D)),_.uuidv7=(D)=>_.check(NE(b$,D)),_.nanoid=(D)=>_.check(AE(dU,D)),_.guid=(D)=>_.check(QU(m0,D)),_.cuid=(D)=>_.check(OE(mU,D)),_.cuid2=(D)=>_.check(SE(lU,D)),_.ulid=(D)=>_.check(LE(iU,D)),_.base64=(D)=>_.check(RE(_1,D)),_.base64url=(D)=>_.check(YE($1,D)),_.xid=(D)=>_.check(JE(tU,D)),_.ksuid=(D)=>_.check(WE(oU,D)),_.ipv4=(D)=>_.check(PE(pU,D)),_.ipv6=(D)=>_.check(zE(eU,D)),_.cidrv4=(D)=>_.check(XE(aU,D)),_.cidrv6=(D)=>_.check(GE(sU,D)),_.e164=(D)=>_.check(QE(D1,D)),_.datetime=(D)=>_.check(mL(D)),_.date=(D)=>_.check(lL(D)),_.time=(D)=>_.check(iL(D)),_.duration=(D)=>_.check(tL(D))});P_=K("ZodStringFormat",(_,$)=>{Y_.init(_,$),hU.init(_,$)}),cU=K("ZodEmail",(_,$)=>{WA.init(_,$),P_.init(_,$)});m0=K("ZodGUID",(_,$)=>{LA.init(_,$),P_.init(_,$)});b$=K("ZodUUID",(_,$)=>{JA.init(_,$),P_.init(_,$)});t0=K("ZodURL",(_,$)=>{PA.init(_,$),P_.init(_,$)});nU=K("ZodEmoji",(_,$)=>{zA.init(_,$),P_.init(_,$)});dU=K("ZodNanoID",(_,$)=>{XA.init(_,$),P_.init(_,$)});mU=K("ZodCUID",(_,$)=>{GA.init(_,$),P_.init(_,$)});lU=K("ZodCUID2",(_,$)=>{RA.init(_,$),P_.init(_,$)});iU=K("ZodULID",(_,$)=>{YA.init(_,$),P_.init(_,$)});tU=K("ZodXID",(_,$)=>{QA.init(_,$),P_.init(_,$)});oU=K("ZodKSUID",(_,$)=>{KA.init(_,$),P_.init(_,$)});pU=K("ZodIPv4",(_,$)=>{MA.init(_,$),P_.init(_,$)});hE=K("ZodMAC",(_,$)=>{ZA.init(_,$),P_.init(_,$)});eU=K("ZodIPv6",(_,$)=>{bA.init(_,$),P_.init(_,$)});aU=K("ZodCIDRv4",(_,$)=>{HA.init(_,$),P_.init(_,$)});sU=K("ZodCIDRv6",(_,$)=>{kA.init(_,$),P_.init(_,$)});_1=K("ZodBase64",(_,$)=>{CA.init(_,$),P_.init(_,$)});$1=K("ZodBase64URL",(_,$)=>{vA.init(_,$),P_.init(_,$)});D1=K("ZodE164",(_,$)=>{wA.init(_,$),P_.init(_,$)});U1=K("ZodJWT",(_,$)=>{rA.init(_,$),P_.init(_,$)});f4=K("ZodCustomStringFormat",(_,$)=>{fA.init(_,$),P_.init(_,$)});x4=K("ZodNumber",(_,$)=>{pI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(I,U,E)=>gL(_,I,U,E),yU(_,"ZodNumber",{gt(I,U){return this.check(B$(I,U))},gte(I,U){return this.check(c_(I,U))},min(I,U){return this.check(c_(I,U))},lt(I,U){return this.check(V$(I,U))},lte(I,U){return this.check(I$(I,U))},max(I,U){return this.check(I$(I,U))},int(I){return this.check(xU(I))},safe(I){return this.check(xU(I))},positive(I){return this.check(B$(0,I))},nonnegative(I){return this.check(c_(0,I))},negative(I){return this.check(V$(0,I))},nonpositive(I){return this.check(I$(0,I))},multipleOf(I,U){return this.check(L6(I,U))},step(I,U){return this.check(L6(I,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});d6=K("ZodNumberFormat",(_,$)=>{xA.init(_,$),x4.init(_,$)});u4=K("ZodBoolean",(_,$)=>{LU.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>AL(_,D,I,U)});y4=K("ZodBigInt",(_,$)=>{eI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(I,U,E)=>OL(_,I,U,E),_.gte=(I,U)=>_.check(c_(I,U)),_.min=(I,U)=>_.check(c_(I,U)),_.gt=(I,U)=>_.check(B$(I,U)),_.gte=(I,U)=>_.check(c_(I,U)),_.min=(I,U)=>_.check(c_(I,U)),_.lt=(I,U)=>_.check(V$(I,U)),_.lte=(I,U)=>_.check(I$(I,U)),_.max=(I,U)=>_.check(I$(I,U)),_.positive=(I)=>_.check(B$(BigInt(0),I)),_.negative=(I)=>_.check(V$(BigInt(0),I)),_.nonpositive=(I)=>_.check(I$(BigInt(0),I)),_.nonnegative=(I)=>_.check(c_(BigInt(0),I)),_.multipleOf=(I,U)=>_.check(L6(I,U));let D=_._zod.bag;_.minValue=D.minimum??null,_.maxValue=D.maximum??null,_.format=D.format??null});I1=K("ZodBigIntFormat",(_,$)=>{uA.init(_,$),y4.init(_,$)});dE=K("ZodSymbol",(_,$)=>{yA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>SL(_,D,I,U)});mE=K("ZodUndefined",(_,$)=>{hA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>JL(_,D,I,U)});lE=K("ZodNull",(_,$)=>{cA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>LL(_,D,I,U)});tE=K("ZodAny",(_,$)=>{nA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>zL(_,D,I,U)});oE=K("ZodUnknown",(_,$)=>{dA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>XL(_,D,I,U)});pE=K("ZodNever",(_,$)=>{mA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>PL(_,D,I,U)});eE=K("ZodVoid",(_,$)=>{lA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>WL(_,D,I,U)});o0=K("ZodDate",(_,$)=>{iA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(I,U,E)=>GL(_,I,U,E),_.min=(I,U)=>_.check(c_(I,U)),_.max=(I,U)=>_.check(I$(I,U));let D=_._zod.bag;_.minDate=D.minimum?new Date(D.minimum):null,_.maxDate=D.maximum?new Date(D.maximum):null});aE=K("ZodArray",(_,$)=>{tA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>HL(_,D,I,U),_.element=$.element,yU(_,"ZodArray",{min(D,I){return this.check(l$(D,I))},nonempty(D){return this.check(l$(1,D))},max(D,I){return this.check(x6(D,I))},length(D,I){return this.check(u6(D,I))},unwrap(){return this.element}})});e0=K("ZodObject",(_,$)=>{oA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>kL(_,D,I,U),H.defineLazy(_,"shape",()=>{return $.shape}),yU(_,"ZodObject",{keyof(){return N1(Object.keys(this._zod.def.shape))},catchall(D){return this.clone({...this._zod.def,catchall:D})},passthrough(){return this.clone({...this._zod.def,catchall:n6()})},loose(){return this.clone({...this._zod.def,catchall:n6()})},strict(){return this.clone({...this._zod.def,catchall:E1()})},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(A1,this,D[0])},required(...D){return H.required(O1,this,D[0])}})});a0=K("ZodUnion",(_,$)=>{JU.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VE(_,D,I,U),_.options=$.options});sE=K("ZodXor",(_,$)=>{a0.init(_,$),pA.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VE(_,D,I,U),_.options=$.options});_j=K("ZodDiscriminatedUnion",(_,$)=>{a0.init(_,$),eA.init(_,$)});$j=K("ZodIntersection",(_,$)=>{aA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>qL(_,D,I,U)});Uj=K("ZodTuple",(_,$)=>{aI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>CL(_,D,I,U),_.rest=(D)=>_.clone({..._._zod.def,rest:D})});v4=K("ZodRecord",(_,$)=>{sA.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>vL(_,D,I,U),_.keyType=$.keyType,_.valueType=$.valueType});jj=K("ZodMap",(_,$)=>{_O.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>bL(_,D,I,U),_.keyType=$.keyType,_.valueType=$.valueType,_.min=(...D)=>_.check(M$(...D)),_.nonempty=(D)=>_.check(M$(1,D)),_.max=(...D)=>_.check(J6(...D)),_.size=(...D)=>_.check(f6(...D))});Nj=K("ZodSet",(_,$)=>{$O.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>ZL(_,D,I,U),_.min=(...D)=>_.check(M$(...D)),_.nonempty=(D)=>_.check(M$(1,D)),_.max=(...D)=>_.check(J6(...D)),_.size=(...D)=>_.check(f6(...D))});w4=K("ZodEnum",(_,$)=>{DO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(I,U,E)=>RL(_,I,U,E),_.enum=$.entries,_.options=Object.values($.entries);let D=new Set(Object.keys($.entries));_.extract=(I,U)=>{let E={};for(let j of I)if(D.has(j))E[j]=$.entries[j];else throw Error(`Key ${j} not found in enum`);return new w4({...$,checks:[],...H.normalizeParams(U),entries:E})},_.exclude=(I,U)=>{let E={...$.entries};for(let j of I)if(D.has(j))delete E[j];else throw Error(`Key ${j} not found in enum`);return new w4({...$,checks:[],...H.normalizeParams(U),entries:E})}});gj=K("ZodLiteral",(_,$)=>{UO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>YL(_,D,I,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]}})});Aj=K("ZodFile",(_,$)=>{IO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>TL(_,D,I,U),_.min=(D,I)=>_.check(M$(D,I)),_.max=(D,I)=>_.check(J6(D,I)),_.mime=(D,I)=>_.check(M4(Array.isArray(D)?D:[D],I))});Oj=K("ZodTransform",(_,$)=>{EO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>ML(_,D,I,U),_._zod.parse=(D,I)=>{if(I.direction==="backward")throw new z4(_.constructor.name);D.addIssue=(E)=>{if(typeof E==="string")D.issues.push(H.issue(E,D.value,$));else{let j=E;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((E)=>{return D.value=E,D.fallback=!0,D});return D.value=U,D.fallback=!0,D}});A1=K("ZodOptional",(_,$)=>{sI.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BE(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Sj=K("ZodExactOptional",(_,$)=>{jO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BE(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Jj=K("ZodNullable",(_,$)=>{NO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>wL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Wj=K("ZodDefault",(_,$)=>{gO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>fL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType,_.removeDefault=_.unwrap});zj=K("ZodPrefault",(_,$)=>{AO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>xL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});O1=K("ZodNonOptional",(_,$)=>{OO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>rL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Rj=K("ZodSuccess",(_,$)=>{SO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>FL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Yj=K("ZodCatch",(_,$)=>{LO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>uL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType,_.removeCatch=_.unwrap});Kj=K("ZodNaN",(_,$)=>{JO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>QL(_,D,I,U)});s0=K("ZodPipe",(_,$)=>{_E.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>yL(_,D,I,U),_.in=$.in,_.out=$.out});_D=K("ZodCodec",(_,$)=>{s0.init(_,$),WU.init(_,$)});Tj=K("ZodPreprocess",(_,$)=>{s0.init(_,$),WO.init(_,$)}),Fj=K("ZodReadonly",(_,$)=>{PO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>hL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Bj=K("ZodTemplateLiteral",(_,$)=>{zO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>KL(_,D,I,U)});Mj=K("ZodLazy",(_,$)=>{RO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>nL(_,D,I,U),_.unwrap=()=>_._zod.def.getter()});Zj=K("ZodPromise",(_,$)=>{GO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>cL(_,D,I,U),_.unwrap=()=>_._zod.def.innerType});Hj=K("ZodFunction",(_,$)=>{XO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>BL(_,D,I,U)});$D=K("ZodCustom",(_,$)=>{YO.init(_,$),e.init(_,$),_._zod.processJSONSchema=(D,I,U)=>VL(_,D,I,U)});jW=UL,NW=IL});function MG(_){Z_({customError:_})}function bG(){return Z_().customError}var BG,Cj;var ZG=r(()=>{O$();BG={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(_){})(Cj||(Cj={}))});function Eb(_,$){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 jb(_,$){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 I=$.version==="draft-2020-12"?"$defs":"definitions";if(D[0]===I){let U=D[1];if(!U||!$.defs[U])throw Error(`Reference not found: ${_}`);return $.defs[U]}throw Error(`Reference not found: ${_}`)}function HG(_,$){if(_.not!==void 0){if(typeof _.not==="object"&&Object.keys(_.not).length===0)return x.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 x.lazy(()=>{if(!$.refs.has(U))throw Error(`Circular reference not resolved: ${U}`);return $.refs.get(U)});$.processing.add(U);let E=jb(U,$),j=n_(E,$);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 x.null();if(U.length===0)return x.never();if(U.length===1)return x.literal(U[0]);if(U.every((j)=>typeof j==="string"))return x.enum(U);let E=U.map((j)=>x.literal(j));if(E.length<2)return E[0];return x.union([E[0],E[1],...E.slice(2)])}if(_.const!==void 0)return x.literal(_.const);let D=_.type;if(Array.isArray(D)){let U=D.map((E)=>{let j={..._,type:E};return HG(j,$)});if(U.length===0)return x.never();if(U.length===1)return U[0];return x.union(U)}if(!D)return x.any();let I;switch(D){case"string":{let U=x.string();if(_.format){let E=_.format;if(E==="email")U=U.check(x.email());else if(E==="uri"||E==="uri-reference")U=U.check(x.url());else if(E==="uuid"||E==="guid")U=U.check(x.uuid());else if(E==="date-time")U=U.check(x.iso.datetime());else if(E==="date")U=U.check(x.iso.date());else if(E==="time")U=U.check(x.iso.time());else if(E==="duration")U=U.check(x.iso.duration());else if(E==="ipv4")U=U.check(x.ipv4());else if(E==="ipv6")U=U.check(x.ipv6());else if(E==="mac")U=U.check(x.mac());else if(E==="cidr")U=U.check(x.cidrv4());else if(E==="cidr-v6")U=U.check(x.cidrv6());else if(E==="base64")U=U.check(x.base64());else if(E==="base64url")U=U.check(x.base64url());else if(E==="e164")U=U.check(x.e164());else if(E==="jwt")U=U.check(x.jwt());else if(E==="emoji")U=U.check(x.emoji());else if(E==="nanoid")U=U.check(x.nanoid());else if(E==="cuid")U=U.check(x.cuid());else if(E==="cuid2")U=U.check(x.cuid2());else if(E==="ulid")U=U.check(x.ulid());else if(E==="xid")U=U.check(x.xid());else if(E==="ksuid")U=U.check(x.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));I=U;break}case"number":case"integer":{let U=D==="integer"?x.number().int():x.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);I=U;break}case"boolean":{I=x.boolean();break}case"null":{I=x.null();break}case"object":{let U={},E=_.properties||{},j=new Set(_.required||[]);for(let[A,O]of Object.entries(E)){let S=n_(O,$);U[A]=j.has(A)?S:S.optional()}if(_.propertyNames){let A=n_(_.propertyNames,$),O=_.additionalProperties&&typeof _.additionalProperties==="object"?n_(_.additionalProperties,$):x.any();if(Object.keys(U).length===0){I=x.record(A,O);break}let S=x.object(U).passthrough(),L=x.looseRecord(A,O);I=x.intersection(S,L);break}if(_.patternProperties){let A=_.patternProperties,O=Object.keys(A),S=[];for(let P of O){let z=n_(A[P],$),G=x.string().regex(new RegExp(P));S.push(x.looseRecord(G,z))}let L=[];if(Object.keys(U).length>0)L.push(x.object(U).passthrough());if(L.push(...S),L.length===0)I=x.object({}).passthrough();else if(L.length===1)I=L[0];else{let P=x.intersection(L[0],L[1]);for(let z=2;z<L.length;z++)P=x.intersection(P,L[z]);I=P}break}let N=x.object(U);if(_.additionalProperties===!1)I=N.strict();else if(typeof _.additionalProperties==="object")I=N.catchall(n_(_.additionalProperties,$));else I=N.passthrough();break}case"array":{let{prefixItems:U,items:E}=_;if(U&&Array.isArray(U)){let j=U.map((A)=>n_(A,$)),N=E&&typeof E==="object"&&!Array.isArray(E)?n_(E,$):void 0;if(N)I=x.tuple(j).rest(N);else I=x.tuple(j);if(typeof _.minItems==="number")I=I.check(x.minLength(_.minItems));if(typeof _.maxItems==="number")I=I.check(x.maxLength(_.maxItems))}else if(Array.isArray(E)){let j=E.map((A)=>n_(A,$)),N=_.additionalItems&&typeof _.additionalItems==="object"?n_(_.additionalItems,$):void 0;if(N)I=x.tuple(j).rest(N);else I=x.tuple(j);if(typeof _.minItems==="number")I=I.check(x.minLength(_.minItems));if(typeof _.maxItems==="number")I=I.check(x.maxLength(_.maxItems))}else if(E!==void 0){let j=n_(E,$),N=x.array(j);if(typeof _.minItems==="number")N=N.min(_.minItems);if(typeof _.maxItems==="number")N=N.max(_.maxItems);I=N}else I=x.array(x.any());break}default:throw Error(`Unsupported type: ${D}`)}return I}function n_(_,$){if(typeof _==="boolean")return _?x.any():x.never();let D=HG(_,$),I=_.type||_.enum!==void 0||_.const!==void 0;if(_.anyOf&&Array.isArray(_.anyOf)){let N=_.anyOf.map((O)=>n_(O,$)),A=x.union(N);D=I?x.intersection(D,A):A}if(_.oneOf&&Array.isArray(_.oneOf)){let N=_.oneOf.map((O)=>n_(O,$)),A=x.xor(N);D=I?x.intersection(D,A):A}if(_.allOf&&Array.isArray(_.allOf))if(_.allOf.length===0)D=I?D:x.any();else{let N=I?D:n_(_.allOf[0],$),A=I?0:1;for(let O=A;O<_.allOf.length;O++)N=x.intersection(N,n_(_.allOf[O],$));D=N}if(_.nullable===!0&&$.version==="openapi-3.0")D=x.nullable(D);if(_.readOnly===!0)D=x.readonly(D);if(_.default!==void 0)D=D.default(_.default);let U={},E=["$id","id","$comment","$anchor","$vocabulary","$dynamicRef","$dynamicAnchor"];for(let N of E)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(!Ib.has(N))U[N]=_[N];if(Object.keys(U).length>0)$.registry.add(D,U);if(_.description)D=D.describe(_.description);return D}function LW(_,$){if(typeof _==="boolean")return _?x.any():x.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 I=Eb(D,$?.defaultTarget),U=D.$defs||D.definitions||{},E={version:I,defs:U,refs:new Map,processing:new Set,rootSchema:D,registry:$?.registry??x_};return n_(D,E)}var x,Ib;var kG=r(()=>{YU();bE();wU();fU();x={...rU,...ME,iso:C4},Ib=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 vj={};x$(vj,{string:()=>Nb,number:()=>gb,date:()=>Sb,boolean:()=>Ab,bigint:()=>Ob});function Nb(_){return TS(r4,_)}function gb(_){return HS(x4,_)}function Ab(_){return fS(u4,_)}function Ob(_){return uS(y4,_)}function Sb(_){return pS(o0,_)}var qG=r(()=>{O$();fU()});var wj={};x$(wj,{xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sL,util:()=>H,url:()=>UJ,uppercase:()=>T4,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,trim:()=>Z4,treeifyError:()=>bI,transform:()=>g1,toUpperCase:()=>k4,toLowerCase:()=>H4,toJSONSchema:()=>ZU,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,setErrorMap:()=>MG,set:()=>lJ,safeParseAsync:()=>qE,safeParse:()=>kE,safeEncodeAsync:()=>uE,safeEncode:()=>fE,safeDecodeAsync:()=>yE,safeDecode:()=>xE,registry:()=>RU,regexes:()=>U$,regex:()=>Q4,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,property:()=>MU,promise:()=>DW,prettifyError:()=>ZI,preprocess:()=>SW,prefault:()=>Xj,positive:()=>TU,pipe:()=>uU,partialRecord:()=>nJ,parseAsync:()=>HE,parse:()=>ZE,overwrite:()=>X$,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,normalize:()=>b4,nonpositive:()=>VU,nonoptional:()=>Gj,nonnegative:()=>BU,never:()=>E1,negative:()=>FU,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,multipleOf:()=>L6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,meta:()=>NW,maxSize:()=>J6,maxLength:()=>x6,map:()=>mJ,mac:()=>JJ,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,looseRecord:()=>dJ,looseObject:()=>yJ,locales:()=>h0,literal:()=>tJ,length:()=>u6,lazy:()=>bj,ksuid:()=>SJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,iso:()=>C4,ipv6:()=>WJ,ipv4:()=>LJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,includes:()=>F4,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aL,gte:()=>c_,gt:()=>B$,globalRegistry:()=>x_,getErrorMap:()=>bG,function:()=>UW,fromJSONSchema:()=>LW,formatError:()=>v0,float64:()=>BJ,float32:()=>VJ,flattenError:()=>C0,file:()=>oJ,exactOptional:()=>Lj,enum:()=>N1,endsWith:()=>B4,encodeAsync:()=>wE,encode:()=>CE,emoji:()=>EJ,email:()=>eL,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,decodeAsync:()=>rE,decode:()=>vE,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,core:()=>i$,config:()=>Z_,coerce:()=>vj,codec:()=>sJ,clone:()=>h_,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>e,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodRealError:()=>p_,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIssueCode:()=>BG,ZodIntersection:()=>$j,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFirstPartyTypeKind:()=>Cj,ZodFile:()=>Aj,ZodExactOptional:()=>Sj,ZodError:()=>FG,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE,TimePrecision:()=>TE,NEVER:()=>FI,$output:()=>$E,$input:()=>DE,$brand:()=>VI});var JW=r(()=>{O$();O$();kO();O$();HU();kG();YS();wU();wU();qG();fU();bE();oL();pL();ZG();Z_(PU())});var CG={};x$(CG,{z:()=>wj,xor:()=>hJ,xid:()=>OJ,void:()=>wJ,uuidv7:()=>DJ,uuidv6:()=>$J,uuidv4:()=>_J,uuid:()=>sL,util:()=>H,url:()=>UJ,uppercase:()=>T4,unknown:()=>n6,union:()=>j1,undefined:()=>CJ,ulid:()=>AJ,uint64:()=>kJ,uint32:()=>bJ,tuple:()=>Ij,trim:()=>Z4,treeifyError:()=>bI,transform:()=>g1,toUpperCase:()=>k4,toLowerCase:()=>H4,toJSONSchema:()=>ZU,templateLiteral:()=>$W,symbol:()=>qJ,superRefine:()=>qj,success:()=>eJ,stringbool:()=>AW,stringFormat:()=>QJ,string:()=>d0,strictObject:()=>uJ,startsWith:()=>V4,slugify:()=>q4,size:()=>f6,setErrorMap:()=>MG,set:()=>lJ,safeParseAsync:()=>qE,safeParse:()=>kE,safeEncodeAsync:()=>uE,safeEncode:()=>fE,safeDecodeAsync:()=>yE,safeDecode:()=>xE,registry:()=>RU,regexes:()=>U$,regex:()=>Q4,refine:()=>kj,record:()=>Ej,readonly:()=>Vj,property:()=>MU,promise:()=>DW,prettifyError:()=>ZI,preprocess:()=>SW,prefault:()=>Xj,positive:()=>TU,pipe:()=>uU,partialRecord:()=>nJ,parseAsync:()=>HE,parse:()=>ZE,overwrite:()=>X$,optional:()=>l0,object:()=>xJ,number:()=>cE,nullish:()=>pJ,nullable:()=>i0,null:()=>iE,normalize:()=>b4,nonpositive:()=>VU,nonoptional:()=>Gj,nonnegative:()=>BU,never:()=>E1,negative:()=>FU,nativeEnum:()=>iJ,nanoid:()=>jJ,nan:()=>aJ,multipleOf:()=>L6,minSize:()=>M$,minLength:()=>l$,mime:()=>M4,meta:()=>NW,maxSize:()=>J6,maxLength:()=>x6,map:()=>mJ,mac:()=>JJ,lte:()=>I$,lt:()=>V$,lowercase:()=>K4,looseRecord:()=>dJ,looseObject:()=>yJ,locales:()=>h0,literal:()=>tJ,length:()=>u6,lazy:()=>bj,ksuid:()=>SJ,keyof:()=>fJ,jwt:()=>YJ,json:()=>OW,iso:()=>C4,ipv6:()=>WJ,ipv4:()=>LJ,invertCodec:()=>_W,intersection:()=>Dj,int64:()=>HJ,int32:()=>MJ,int:()=>xU,instanceof:()=>gW,includes:()=>F4,httpUrl:()=>IJ,hostname:()=>KJ,hex:()=>TJ,hash:()=>FJ,guid:()=>aL,gte:()=>c_,gt:()=>B$,globalRegistry:()=>x_,getErrorMap:()=>bG,function:()=>UW,fromJSONSchema:()=>LW,formatError:()=>v0,float64:()=>BJ,float32:()=>VJ,flattenError:()=>C0,file:()=>oJ,exactOptional:()=>Lj,enum:()=>N1,endsWith:()=>B4,encodeAsync:()=>wE,encode:()=>CE,emoji:()=>EJ,email:()=>eL,e164:()=>RJ,discriminatedUnion:()=>cJ,describe:()=>jW,default:()=>Lb,decodeAsync:()=>rE,decode:()=>vE,date:()=>rJ,custom:()=>EW,cuid2:()=>gJ,cuid:()=>NJ,core:()=>i$,config:()=>Z_,coerce:()=>vj,codec:()=>sJ,clone:()=>h_,cidrv6:()=>zJ,cidrv4:()=>PJ,check:()=>IW,catch:()=>Qj,boolean:()=>nE,bigint:()=>ZJ,base64url:()=>GJ,base64:()=>XJ,array:()=>p0,any:()=>vJ,_function:()=>UW,_default:()=>Pj,_ZodString:()=>hU,ZodXor:()=>sE,ZodXID:()=>tU,ZodVoid:()=>eE,ZodUnknown:()=>oE,ZodUnion:()=>a0,ZodUndefined:()=>mE,ZodUUID:()=>b$,ZodURL:()=>t0,ZodULID:()=>iU,ZodType:()=>e,ZodTuple:()=>Uj,ZodTransform:()=>Oj,ZodTemplateLiteral:()=>Bj,ZodSymbol:()=>dE,ZodSuccess:()=>Rj,ZodStringFormat:()=>P_,ZodString:()=>r4,ZodSet:()=>Nj,ZodRecord:()=>v4,ZodRealError:()=>p_,ZodReadonly:()=>Fj,ZodPromise:()=>Zj,ZodPreprocess:()=>Tj,ZodPrefault:()=>zj,ZodPipe:()=>s0,ZodOptional:()=>A1,ZodObject:()=>e0,ZodNumberFormat:()=>d6,ZodNumber:()=>x4,ZodNullable:()=>Jj,ZodNull:()=>lE,ZodNonOptional:()=>O1,ZodNever:()=>pE,ZodNanoID:()=>dU,ZodNaN:()=>Kj,ZodMap:()=>jj,ZodMAC:()=>hE,ZodLiteral:()=>gj,ZodLazy:()=>Mj,ZodKSUID:()=>oU,ZodJWT:()=>U1,ZodIssueCode:()=>BG,ZodIntersection:()=>$j,ZodISOTime:()=>CU,ZodISODuration:()=>vU,ZodISODateTime:()=>kU,ZodISODate:()=>qU,ZodIPv6:()=>eU,ZodIPv4:()=>pU,ZodGUID:()=>m0,ZodFunction:()=>Hj,ZodFirstPartyTypeKind:()=>Cj,ZodFile:()=>Aj,ZodExactOptional:()=>Sj,ZodError:()=>FG,ZodEnum:()=>w4,ZodEmoji:()=>nU,ZodEmail:()=>cU,ZodE164:()=>D1,ZodDiscriminatedUnion:()=>_j,ZodDefault:()=>Wj,ZodDate:()=>o0,ZodCustomStringFormat:()=>f4,ZodCustom:()=>$D,ZodCodec:()=>_D,ZodCatch:()=>Yj,ZodCUID2:()=>lU,ZodCUID:()=>mU,ZodCIDRv6:()=>sU,ZodCIDRv4:()=>aU,ZodBoolean:()=>u4,ZodBigIntFormat:()=>I1,ZodBigInt:()=>y4,ZodBase64URL:()=>$1,ZodBase64:()=>_1,ZodArray:()=>aE,ZodAny:()=>tE,TimePrecision:()=>TE,NEVER:()=>FI,$output:()=>$E,$input:()=>DE,$brand:()=>VI});var Lb;var vG=r(()=>{JW();JW();Lb=wj});var k1=D4((Sw)=>{class WP 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 H8 extends WP{constructor(_){super(1,"commander.invalidArgument",_);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}Sw.CommanderError=WP;Sw.InvalidArgumentError=H8});var BN=D4((zw)=>{var{InvalidArgumentError:Ww}=k1();class k8{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 Ww(`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 Pw(_){let $=_.name()+(_.variadic===!0?"...":"");return _.required?"<"+$+">":"["+$+"]"}zw.Argument=k8;zw.humanReadableArgName=Pw});var PP=D4((Yw)=>{var{humanReadableArgName:Rw}=BN();class q8{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((I)=>!I._hidden),D=_._getHelpCommand();if(D&&!D._hidden)$.push(D);if(this.sortSubcommands)$.sort((I,U)=>{return I.name().localeCompare(U.name())});return $}compareOptions(_,$){let D=(I)=>{return I.short?I.short.replace(/^-/,""):I.long.replace(/^--/,"")};return D(_).localeCompare(D($))}visibleOptions(_){let $=_.options.filter((I)=>!I.hidden),D=_._getHelpOption();if(D&&!D.hidden){let I=D.short&&_._findOption(D.short),U=D.long&&_._findOption(D.long);if(!I&&!U)$.push(D);else if(D.long&&!U)$.push(_.createOption(D.long,D.description));else if(D.short&&!I)$.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 I=D.options.filter((U)=>!U.hidden);$.push(...I)}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)=>Rw(D)).join(" ");return _._name+(_._aliases[0]?"|"+_._aliases[0]:"")+(_.options.length?" [options]":"")+($?" "+$:"")}optionTerm(_){return _.flags}argumentTerm(_){return _.name()}longestSubcommandTermLength(_,$){return $.visibleCommands(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleSubcommandTerm($.subcommandTerm(I))))},0)}longestOptionTermLength(_,$){return $.visibleOptions(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(I))))},0)}longestGlobalOptionTermLength(_,$){return $.visibleGlobalOptions(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleOptionTerm($.optionTerm(I))))},0)}longestArgumentTermLength(_,$){return $.visibleArguments(_).reduce((D,I)=>{return Math.max(D,this.displayWidth($.styleArgumentTerm($.argumentTerm(I))))},0)}commandUsage(_){let $=_._name;if(_._aliases[0])$=$+"|"+_._aliases[0];let D="";for(let I=_.parent;I;I=I.parent)D=I.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(_,$),I=$.helpWidth??80;function U(S,L){return $.formatItem(S,D,L,$)}let E=[`${$.styleTitle("Usage:")} ${$.styleUsage($.commandUsage(_))}`,""],j=$.commandDescription(_);if(j.length>0)E=E.concat([$.boxWrap($.styleCommandDescription(j),I),""]);let N=$.visibleArguments(_).map((S)=>{return U($.styleArgumentTerm($.argumentTerm(S)),$.styleArgumentDescription($.argumentDescription(S)))});if(N.length>0)E=E.concat([$.styleTitle("Arguments:"),...N,""]);let A=$.visibleOptions(_).map((S)=>{return U($.styleOptionTerm($.optionTerm(S)),$.styleOptionDescription($.optionDescription(S)))});if(A.length>0)E=E.concat([$.styleTitle("Options:"),...A,""]);if($.showGlobalOptions){let S=$.visibleGlobalOptions(_).map((L)=>{return U($.styleOptionTerm($.optionTerm(L)),$.styleOptionDescription($.optionDescription(L)))});if(S.length>0)E=E.concat([$.styleTitle("Global Options:"),...S,""])}let O=$.visibleCommands(_).map((S)=>{return U($.styleSubcommandTerm($.subcommandTerm(S)),$.styleSubcommandDescription($.subcommandDescription(S)))});if(O.length>0)E=E.concat([$.styleTitle("Commands:"),...O,""]);return E.join(` +`)}displayWidth(_){return C8(_).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,I){let E=" ".repeat(2);if(!D)return E+_;let j=_.padEnd($+_.length-I.displayWidth(_)),N=2,O=(this.helpWidth??80)-$-N-2,S;if(O<this.minWidthToWrap||I.preformatted(D))S=D;else S=I.boxWrap(D,O).replace(/\n/g,` +`+" ".repeat($+N));return E+j+" ".repeat(N)+S.replace(/\n/g,` +${E}`)}boxWrap(_,$){if($<this.minWidthToWrap)return _;let D=_.split(/\r\n|\n/),I=/[\s]*[^\s]+/g,U=[];return D.forEach((E)=>{let j=E.match(I);if(j===null){U.push("");return}let N=[j.shift()],A=this.displayWidth(N[0]);j.forEach((O)=>{let S=this.displayWidth(O);if(A+S<=$){N.push(O),A+=S;return}U.push(N.join(""));let L=O.trimStart();N=[L],A=this.displayWidth(L)}),U.push(N.join(""))}),U.join(` `)}}function C8(_){let $=/\x1b\[\d*(;\d*)*m/g;return _.replace($,"")}Yw.Help=q8;Yw.stripColor=C8});var zP=D4((Vw)=>{var{InvalidArgumentError:Tw}=k1();class w8{constructor(_,$){this.flags=_,this.description=$||"",this.required=_.includes("<"),this.optional=_.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(_),this.mandatory=!1;let D=Fw(_);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 Tw(`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 v8(this.name().replace(/^no-/,""));return v8(this.name())}is(_){return this.short===_||this.long===_}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class r8{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 I=this.negativeOptions.get(D).presetArg,U=I!==void 0?I:!1;return $.negate===(U===_)}}function v8(_){return _.split("-").reduce(($,D)=>{return $+D[0].toUpperCase()+D.slice(1)})}function Fw(_){let $,D,I=/^-[^-]$/,U=/^--[^-]/,E=_.split(/[ |,]+/).concat("guard");if(I.test(E[0]))$=E.shift();if(U.test(E[0]))D=E.shift();if(!$&&I.test(E[0]))$=E.shift();if(!$&&U.test(E[0]))$=D,D=E.shift();if(E[0].startsWith("-")){let j=E[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) @@ -76,28 +76,28 @@ ${E}`)}boxWrap(_,$){if($<this.minWidthToWrap)return _;let D=_.split(/\r\n|\n/),I - too many long flags`);throw Error(`${N} - unrecognised flag format`)}if($===void 0&&D===void 0)throw Error(`option creation failed due to no flags found in '${_}'.`);return{shortFlag:$,longFlag:D}}Vw.Option=w8;Vw.DualOptions=r8});var f8=D4((Hw)=>{function bw(_,$){if(Math.abs(_.length-$.length)>3)return Math.max(_.length,$.length);let D=[];for(let I=0;I<=_.length;I++)D[I]=[I];for(let I=0;I<=$.length;I++)D[0][I]=I;for(let I=1;I<=$.length;I++)for(let U=1;U<=_.length;U++){let E=1;if(_[U-1]===$[I-1])E=0;else E=1;if(D[U][I]=Math.min(D[U-1][I]+1,D[U][I-1]+1,D[U-1][I-1]+E),U>1&&I>1&&_[U-1]===$[I-2]&&_[U-2]===$[I-1])D[U][I]=Math.min(D[U][I],D[U-2][I-2]+1)}return D[_.length][$.length]}function Zw(_,$){if(!$||$.length===0)return"";$=Array.from(new Set($));let D=_.startsWith("--");if(D)_=_.slice(2),$=$.map((j)=>j.slice(2));let I=[],U=3,E=0.4;if($.forEach((j)=>{if(j.length<=1)return;let N=bw(_,j),A=Math.max(_.length,j.length);if((A-N)/A>E){if(N<U)U=N,I=[j];else if(N===U)I.push(j)}}),I.sort((j,N)=>j.localeCompare(N)),D)I=I.map((j)=>`--${j}`);if(I.length>1)return` (Did you mean one of ${I.join(", ")}?)`;if(I.length===1)return` -(Did you mean ${I[0]}?)`;return""}Hw.suggestSimilar=Zw});var h8=D4((xw)=>{var qw=O_("events").EventEmitter,XP=O_("child_process"),T6=O_("path"),MN=O_("fs"),g_=O_("process"),{Argument:Cw,humanReadableArgName:vw}=BN(),{CommanderError:GP}=k1(),{Help:ww,stripColor:rw}=PP(),{Option:x8,DualOptions:fw}=zP(),{suggestSimilar:u8}=f8();class YP extends qw{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:($)=>g_.stdout.write($),writeErr:($)=>g_.stderr.write($),outputError:($,D)=>D($),getOutHelpWidth:()=>g_.stdout.isTTY?g_.stdout.columns:void 0,getErrHelpWidth:()=>g_.stderr.isTTY?g_.stderr.columns:void 0,getOutHasColors:()=>RP()??(g_.stdout.isTTY&&g_.stdout.hasColors?.()),getErrHasColors:()=>RP()??(g_.stderr.isTTY&&g_.stderr.hasColors?.()),stripColor:($)=>rw($)},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 I=$,U=D;if(typeof I==="object"&&I!==null)U=I,I=null;U=U||{};let[,E,j]=_.match(/([^ ]+) *(.*)/),N=this.createCommand(E);if(I)N.description(I),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),I)return this;return N}createCommand(_){return new YP(_)}createHelp(){return Object.assign(new ww,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 +(Did you mean ${I[0]}?)`;return""}Hw.suggestSimilar=Zw});var h8=D4((xw)=>{var qw=S_("events").EventEmitter,XP=S_("child_process"),T6=S_("path"),MN=S_("fs"),O_=S_("process"),{Argument:Cw,humanReadableArgName:vw}=BN(),{CommanderError:GP}=k1(),{Help:ww,stripColor:rw}=PP(),{Option:x8,DualOptions:fw}=zP(),{suggestSimilar:u8}=f8();class YP extends qw{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:($)=>O_.stdout.write($),writeErr:($)=>O_.stderr.write($),outputError:($,D)=>D($),getOutHelpWidth:()=>O_.stdout.isTTY?O_.stdout.columns:void 0,getErrHelpWidth:()=>O_.stderr.isTTY?O_.stderr.columns:void 0,getOutHasColors:()=>RP()??(O_.stdout.isTTY&&O_.stdout.hasColors?.()),getErrHasColors:()=>RP()??(O_.stderr.isTTY&&O_.stderr.hasColors?.()),stripColor:($)=>rw($)},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 I=$,U=D;if(typeof I==="object"&&I!==null)U=I,I=null;U=U||{};let[,E,j]=_.match(/([^ ]+) *(.*)/),N=this.createCommand(E);if(I)N.description(I),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),I)return this;return N}createCommand(_){return new YP(_)}createHelp(){return Object.assign(new ww,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 Cw(_,$)}argument(_,$,D,I){let U=this.createArgument(_,$);if(typeof D==="function")U.default(I).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,I]=_.match(/([^ ]+) *(.*)/),U=$??"display help for command",E=this.createCommand(D);if(E.helpOption(!1),I)E.arguments(I);if(U)E.description(U);return this._addImplicitHelpCommand=!0,this._helpCommand=E,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 GP(_,$,D));g_.exit(_)}action(_){let $=(D)=>{let I=this.registeredArguments.length,U=D.slice(0,I);if(this._storeOptionsAsProperties)U[I]=this;else U[I]=this.opts();return U.push(this),_.apply(this,U)};return this._actionHandler=$,this}createOption(_,$){return new x8(_,$)}_callParseArg(_,$,D,I){try{return _.parseArg($,D)}catch(U){if(U.code==="commander.invalidArgument"){let E=`${I} ${U.message}`;this.error(E,{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 $=(I)=>{return[I.name()].concat(I.aliases())},D=$(_).find((I)=>this._findCommand(I));if(D){let I=$(this._findCommand(D)).join("|"),U=$(_).join("|");throw Error(`cannot add command '${U}' as already have command '${I}'`)}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 I=(U,E,j)=>{if(U==null&&_.presetArg!==void 0)U=_.presetArg;let N=this.getOptionValue(D);if(U!==null&&_.parseArg)U=this._callParseArg(_,U,N,E);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 E=`error: option '${_.flags}' argument '${U}' is invalid.`;I(U,E,"cli")}),_.envVar)this.on("optionEnv:"+$,(U)=>{let E=`error: option '${_.flags}' value '${U}' from env '${_.envVar}' is invalid.`;I(U,E,"env")});return this}_optionEx(_,$,D,I,U){if(typeof $==="object"&&$ instanceof x8)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let E=this.createOption($,D);if(E.makeOptionMandatory(!!_.mandatory),typeof I==="function")E.default(U).argParser(I);else if(I instanceof RegExp){let j=I;I=(N,A)=>{let O=j.exec(N);return O?O[0]:A},E.default(U).argParser(I)}else E.default(I);return this.addOption(E)}option(_,$,D,I){return this._optionEx({},_,$,D,I)}requiredOption(_,$,D,I){return this._optionEx({mandatory:!0},_,$,D,I)}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(g_.versions?.electron)$.from="electron";let I=g_.execArgv??[];if(I.includes("-e")||I.includes("--eval")||I.includes("-p")||I.includes("--print"))$.from="eval"}if(_===void 0)_=g_.argv;this.rawArgs=_.slice();let D;switch($.from){case void 0:case"node":this._scriptPath=_[1],D=_.slice(2);break;case"electron":if(g_.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. +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 GP(_,$,D));O_.exit(_)}action(_){let $=(D)=>{let I=this.registeredArguments.length,U=D.slice(0,I);if(this._storeOptionsAsProperties)U[I]=this;else U[I]=this.opts();return U.push(this),_.apply(this,U)};return this._actionHandler=$,this}createOption(_,$){return new x8(_,$)}_callParseArg(_,$,D,I){try{return _.parseArg($,D)}catch(U){if(U.code==="commander.invalidArgument"){let E=`${I} ${U.message}`;this.error(E,{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 $=(I)=>{return[I.name()].concat(I.aliases())},D=$(_).find((I)=>this._findCommand(I));if(D){let I=$(this._findCommand(D)).join("|"),U=$(_).join("|");throw Error(`cannot add command '${U}' as already have command '${I}'`)}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 I=(U,E,j)=>{if(U==null&&_.presetArg!==void 0)U=_.presetArg;let N=this.getOptionValue(D);if(U!==null&&_.parseArg)U=this._callParseArg(_,U,N,E);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 E=`error: option '${_.flags}' argument '${U}' is invalid.`;I(U,E,"cli")}),_.envVar)this.on("optionEnv:"+$,(U)=>{let E=`error: option '${_.flags}' value '${U}' from env '${_.envVar}' is invalid.`;I(U,E,"env")});return this}_optionEx(_,$,D,I,U){if(typeof $==="object"&&$ instanceof x8)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let E=this.createOption($,D);if(E.makeOptionMandatory(!!_.mandatory),typeof I==="function")E.default(U).argParser(I);else if(I instanceof RegExp){let j=I;I=(N,A)=>{let O=j.exec(N);return O?O[0]:A},E.default(U).argParser(I)}else E.default(I);return this.addOption(E)}option(_,$,D,I){return this._optionEx({},_,$,D,I)}requiredOption(_,$,D,I){return this._optionEx({mandatory:!0},_,$,D,I)}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(O_.versions?.electron)$.from="electron";let I=O_.execArgv??[];if(I.includes("-e")||I.includes("--eval")||I.includes("-p")||I.includes("--print"))$.from="eval"}if(_===void 0)_=O_.argv;this.rawArgs=_.slice();let D;switch($.from){case void 0:case"node":this._scriptPath=_[1],D=_.slice(2);break;case"electron":if(O_.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(MN.existsSync(_))return;let I=$?`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 - - ${I}`;throw Error(U)}_executeSubCommand(_,$){$=$.slice();let D=!1,I=[".js",".ts",".tsx",".mjs",".cjs"];function U(O,L){let J=T6.resolve(O,L);if(MN.existsSync(J))return J;if(I.includes(T6.extname(L)))return;let P=I.find((z)=>MN.existsSync(`${J}${z}`));if(P)return`${J}${P}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let E=_._executableFile||`${this._name}-${_._name}`,j=this._executableDir||"";if(this._scriptPath){let O;try{O=MN.realpathSync(this._scriptPath)}catch{O=this._scriptPath}j=T6.resolve(T6.dirname(O),j)}if(j){let O=U(j,E);if(!O&&!_._executableFile&&this._scriptPath){let L=T6.basename(this._scriptPath,T6.extname(this._scriptPath));if(L!==this._name)O=U(j,`${L}-${_._name}`)}E=O||E}D=I.includes(T6.extname(E));let N;if(g_.platform!=="win32")if(D)$.unshift(E),$=y8(g_.execArgv).concat($),N=XP.spawn(g_.argv[0],$,{stdio:"inherit"});else N=XP.spawn(E,$,{stdio:"inherit"});else this._checkForMissingExecutable(E,j,_._name),$.unshift(E),$=y8(g_.execArgv).concat($),N=XP.spawn(g_.execPath,$,{stdio:"inherit"});if(!N.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((L)=>{g_.on(L,()=>{if(N.killed===!1&&N.exitCode===null)N.kill(L)})});let A=this._exitCallback;N.on("close",(O)=>{if(O=O??1,!A)g_.exit(O);else A(new GP(O,"commander.executeSubCommandAsync","(close)"))}),N.on("error",(O)=>{if(O.code==="ENOENT")this._checkForMissingExecutable(E,j,_._name);else if(O.code==="EACCES")throw Error(`'${E}' not executable`);if(!A)g_.exit(1);else{let L=new GP(1,"commander.executeSubCommandAsync","(error)");L.nestedError=O,A(L)}}),this.runningCommand=N}_dispatchSubcommand(_,$,D){let I=this._findCommand(_);if(!I)this.help({error:!0});I._prepareForParse();let U;return U=this._chainOrCallSubCommandHook(U,I,"preSubcommand"),U=this._chainOrCall(U,()=>{if(I._executableHandler)this._executeSubCommand(I,$.concat(D));else return I._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,I,U)=>{let E=I;if(I!==null&&D.parseArg){let j=`error: command-argument value '${I}' is invalid for argument '${D.name()}'.`;E=this._callParseArg(D,I,U,j)}return E};this._checkNumberOfArguments();let $=[];this.registeredArguments.forEach((D,I)=>{let U=D.defaultValue;if(D.variadic){if(I<this.args.length){if(U=this.args.slice(I),D.parseArg)U=U.reduce((E,j)=>{return _(D,j,E)},D.defaultValue)}else if(U===void 0)U=[]}else if(I<this.args.length){if(U=this.args[I],D.parseArg)U=_(D,U,D.defaultValue)}$[I]=U}),this.processedArgs=$}_chainOrCall(_,$){if(_&&_.then&&typeof _.then==="function")return _.then(()=>$());return $()}_chainOrCallHooks(_,$){let D=_,I=[];if(this._getCommandAndAncestors().reverse().filter((U)=>U._lifeCycleHooks[$]!==void 0).forEach((U)=>{U._lifeCycleHooks[$].forEach((E)=>{I.push({hookedCommand:U,callback:E})})}),$==="postAction")I.reverse();return I.forEach((U)=>{D=this._chainOrCall(D,()=>{return U.callback(U.hookedCommand,this)})}),D}_chainOrCallSubCommandHook(_,$,D){let I=_;if(this._lifeCycleHooks[D]!==void 0)this._lifeCycleHooks[D].forEach((U)=>{I=this._chainOrCall(I,()=>{return U(this,$)})});return I}_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 I=()=>{if(D.unknown.length>0)this.unknownOption(D.unknown[0])},U=`command:${this.name()}`;if(this._actionHandler){I(),this._processArguments();let E;if(E=this._chainOrCallHooks(E,"preAction"),E=this._chainOrCall(E,()=>this._actionHandler(this.processedArgs)),this.parent)E=this._chainOrCall(E,()=>{this.parent.emit(U,_,$)});return E=this._chainOrCallHooks(E,"postAction"),E}if(this.parent&&this.parent.listenerCount(U))I(),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 I(),this._processArguments()}else if(this.commands.length)I(),this.help({error:!0});else I(),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 I=D.attributeName();if(this.getOptionValue(I)===void 0)return!1;return this.getOptionValueSource(I)!=="default"});_.filter((D)=>D.conflictsWith.length>0).forEach((D)=>{let I=_.find((U)=>D.conflictsWith.includes(U.attributeName()));if(I)this._conflictingOption(D,I)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((_)=>{_._checkForConflictingLocalOptions()})}parseOptions(_){let $=[],D=[],I=$,U=_.slice();function E(N){return N.length>1&&N[0]==="-"}let j=null;while(U.length){let N=U.shift();if(N==="--"){if(I===D)I.push(N);I.push(...U);break}if(j&&!E(N)){this.emit(`option:${j.name()}`,N);continue}if(j=null,E(N)){let A=this._findOption(N);if(A){if(A.required){let O=U.shift();if(O===void 0)this.optionMissingArgument(A);this.emit(`option:${A.name()}`,O)}else if(A.optional){let O=null;if(U.length>0&&!E(U[0]))O=U.shift();this.emit(`option:${A.name()}`,O)}else this.emit(`option:${A.name()}`);j=A.variadic?A:null;continue}}if(N.length>2&&N[0]==="-"&&N[1]!=="-"){let A=this._findOption(`-${N[1]}`);if(A){if(A.required||A.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${A.name()}`,N.slice(2));else this.emit(`option:${A.name()}`),U.unshift(`-${N.slice(2)}`);continue}}if(/^--[^=]+=/.test(N)){let A=N.indexOf("="),O=this._findOption(N.slice(0,A));if(O&&(O.required||O.optional)){this.emit(`option:${O.name()}`,N.slice(A+1));continue}}if(E(N))I=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(I.push(N),U.length>0)I.push(...U);break}I.push(N)}return{operands:$,unknown:D}}opts(){if(this._storeOptionsAsProperties){let _={},$=this.options.length;for(let D=0;D<$;D++){let I=this.options[D].attributeName();_[I]=I===this._versionOptionName?this._version:this[I]}return _}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((_,$)=>Object.assign(_,$.opts()),{})}error(_,$){if(this._outputConfiguration.outputError(`${_} + - ${I}`;throw Error(U)}_executeSubCommand(_,$){$=$.slice();let D=!1,I=[".js",".ts",".tsx",".mjs",".cjs"];function U(O,S){let L=T6.resolve(O,S);if(MN.existsSync(L))return L;if(I.includes(T6.extname(S)))return;let P=I.find((z)=>MN.existsSync(`${L}${z}`));if(P)return`${L}${P}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let E=_._executableFile||`${this._name}-${_._name}`,j=this._executableDir||"";if(this._scriptPath){let O;try{O=MN.realpathSync(this._scriptPath)}catch{O=this._scriptPath}j=T6.resolve(T6.dirname(O),j)}if(j){let O=U(j,E);if(!O&&!_._executableFile&&this._scriptPath){let S=T6.basename(this._scriptPath,T6.extname(this._scriptPath));if(S!==this._name)O=U(j,`${S}-${_._name}`)}E=O||E}D=I.includes(T6.extname(E));let N;if(O_.platform!=="win32")if(D)$.unshift(E),$=y8(O_.execArgv).concat($),N=XP.spawn(O_.argv[0],$,{stdio:"inherit"});else N=XP.spawn(E,$,{stdio:"inherit"});else this._checkForMissingExecutable(E,j,_._name),$.unshift(E),$=y8(O_.execArgv).concat($),N=XP.spawn(O_.execPath,$,{stdio:"inherit"});if(!N.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((S)=>{O_.on(S,()=>{if(N.killed===!1&&N.exitCode===null)N.kill(S)})});let A=this._exitCallback;N.on("close",(O)=>{if(O=O??1,!A)O_.exit(O);else A(new GP(O,"commander.executeSubCommandAsync","(close)"))}),N.on("error",(O)=>{if(O.code==="ENOENT")this._checkForMissingExecutable(E,j,_._name);else if(O.code==="EACCES")throw Error(`'${E}' not executable`);if(!A)O_.exit(1);else{let S=new GP(1,"commander.executeSubCommandAsync","(error)");S.nestedError=O,A(S)}}),this.runningCommand=N}_dispatchSubcommand(_,$,D){let I=this._findCommand(_);if(!I)this.help({error:!0});I._prepareForParse();let U;return U=this._chainOrCallSubCommandHook(U,I,"preSubcommand"),U=this._chainOrCall(U,()=>{if(I._executableHandler)this._executeSubCommand(I,$.concat(D));else return I._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,I,U)=>{let E=I;if(I!==null&&D.parseArg){let j=`error: command-argument value '${I}' is invalid for argument '${D.name()}'.`;E=this._callParseArg(D,I,U,j)}return E};this._checkNumberOfArguments();let $=[];this.registeredArguments.forEach((D,I)=>{let U=D.defaultValue;if(D.variadic){if(I<this.args.length){if(U=this.args.slice(I),D.parseArg)U=U.reduce((E,j)=>{return _(D,j,E)},D.defaultValue)}else if(U===void 0)U=[]}else if(I<this.args.length){if(U=this.args[I],D.parseArg)U=_(D,U,D.defaultValue)}$[I]=U}),this.processedArgs=$}_chainOrCall(_,$){if(_&&_.then&&typeof _.then==="function")return _.then(()=>$());return $()}_chainOrCallHooks(_,$){let D=_,I=[];if(this._getCommandAndAncestors().reverse().filter((U)=>U._lifeCycleHooks[$]!==void 0).forEach((U)=>{U._lifeCycleHooks[$].forEach((E)=>{I.push({hookedCommand:U,callback:E})})}),$==="postAction")I.reverse();return I.forEach((U)=>{D=this._chainOrCall(D,()=>{return U.callback(U.hookedCommand,this)})}),D}_chainOrCallSubCommandHook(_,$,D){let I=_;if(this._lifeCycleHooks[D]!==void 0)this._lifeCycleHooks[D].forEach((U)=>{I=this._chainOrCall(I,()=>{return U(this,$)})});return I}_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 I=()=>{if(D.unknown.length>0)this.unknownOption(D.unknown[0])},U=`command:${this.name()}`;if(this._actionHandler){I(),this._processArguments();let E;if(E=this._chainOrCallHooks(E,"preAction"),E=this._chainOrCall(E,()=>this._actionHandler(this.processedArgs)),this.parent)E=this._chainOrCall(E,()=>{this.parent.emit(U,_,$)});return E=this._chainOrCallHooks(E,"postAction"),E}if(this.parent&&this.parent.listenerCount(U))I(),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 I(),this._processArguments()}else if(this.commands.length)I(),this.help({error:!0});else I(),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 I=D.attributeName();if(this.getOptionValue(I)===void 0)return!1;return this.getOptionValueSource(I)!=="default"});_.filter((D)=>D.conflictsWith.length>0).forEach((D)=>{let I=_.find((U)=>D.conflictsWith.includes(U.attributeName()));if(I)this._conflictingOption(D,I)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((_)=>{_._checkForConflictingLocalOptions()})}parseOptions(_){let $=[],D=[],I=$,U=_.slice();function E(N){return N.length>1&&N[0]==="-"}let j=null;while(U.length){let N=U.shift();if(N==="--"){if(I===D)I.push(N);I.push(...U);break}if(j&&!E(N)){this.emit(`option:${j.name()}`,N);continue}if(j=null,E(N)){let A=this._findOption(N);if(A){if(A.required){let O=U.shift();if(O===void 0)this.optionMissingArgument(A);this.emit(`option:${A.name()}`,O)}else if(A.optional){let O=null;if(U.length>0&&!E(U[0]))O=U.shift();this.emit(`option:${A.name()}`,O)}else this.emit(`option:${A.name()}`);j=A.variadic?A:null;continue}}if(N.length>2&&N[0]==="-"&&N[1]!=="-"){let A=this._findOption(`-${N[1]}`);if(A){if(A.required||A.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${A.name()}`,N.slice(2));else this.emit(`option:${A.name()}`),U.unshift(`-${N.slice(2)}`);continue}}if(/^--[^=]+=/.test(N)){let A=N.indexOf("="),O=this._findOption(N.slice(0,A));if(O&&(O.required||O.optional)){this.emit(`option:${O.name()}`,N.slice(A+1));continue}}if(E(N))I=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(I.push(N),U.length>0)I.push(...U);break}I.push(N)}return{operands:$,unknown:D}}opts(){if(this._storeOptionsAsProperties){let _={},$=this.options.length;for(let D=0;D<$;D++){let I=this.options[D].attributeName();_[I]=I===this._versionOptionName?this._version:this[I]}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 D=$||{},I=D.exitCode||1,U=D.code||"commander.error";this._exit(I,U,_)}_parseOptionsEnv(){this.options.forEach((_)=>{if(_.envVar&&_.envVar in g_.env){let $=_.attributeName();if(this.getOptionValue($)===void 0||["default","config","env"].includes(this.getOptionValueSource($)))if(_.required||_.optional)this.emit(`optionEnv:${_.name()}`,g_.env[_.envVar]);else this.emit(`optionEnv:${_.name()}`)}})}_parseOptionsImplied(){let _=new fw(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((I)=>!$(I)).forEach((I)=>{this.setOptionValueWithSource(I,D.implied[I],"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=(E)=>{let j=E.attributeName(),N=this.getOptionValue(j),A=this.options.find((L)=>L.negate&&j===L.attributeName()),O=this.options.find((L)=>!L.negate&&j===L.attributeName());if(A&&(A.presetArg===void 0&&N===!1||A.presetArg!==void 0&&N===A.presetArg))return A;return O||E},I=(E)=>{let j=D(E),N=j.attributeName();if(this.getOptionValueSource(N)==="env")return`environment variable '${j.envVar}'`;return`option '${j.flags}'`},U=`error: ${I(_)} cannot be used with ${I($)}`;this.error(U,{code:"commander.conflictingOption"})}unknownOption(_){if(this._allowUnknownOption)return;let $="";if(_.startsWith("--")&&this._showSuggestionAfterError){let I=[],U=this;do{let E=U.createHelp().visibleOptions(U).filter((j)=>j.long).map((j)=>j.long);I=I.concat(E),U=U.parent}while(U&&!U._enablePositionalOptions);$=u8(_,I)}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 I=[];this.createHelp().visibleCommands(this).forEach((U)=>{if(I.push(U.name()),U.alias())I.push(U.alias())}),$=u8(_,I)}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 I=this.createOption($,D);return this._versionOptionName=I.attributeName(),this._registerOption(I),this.on("option:"+I.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 I=[D.name()].concat(D.aliases()).join("|");throw Error(`cannot add alias '${_}' to command '${this.name()}' as already have command '${I}'`)}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 vw(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=T6.basename(_,T6.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 I=$.formatHelp(this,$);if(D.hasColors)return I;return this._outputConfiguration.stripColor(I)}_getOutputContext(_){_=_||{};let $=!!_.error,D,I,U;if($)D=(j)=>this._outputConfiguration.writeErr(j),I=this._outputConfiguration.getErrHasColors(),U=this._outputConfiguration.getErrHelpWidth();else D=(j)=>this._outputConfiguration.writeOut(j),I=this._outputConfiguration.getOutHasColors(),U=this._outputConfiguration.getOutHelpWidth();return{error:$,write:(j)=>{if(!I)j=this._outputConfiguration.stripColor(j);return D(j)},hasColors:I,helpWidth:U}}outputHelp(_){let $;if(typeof _==="function")$=_,_=void 0;let D=this._getOutputContext(_),I={error:D.error,write:D.write,command:this};this._getCommandAndAncestors().reverse().forEach((E)=>E.emit("beforeAllHelp",I)),this.emit("beforeHelp",I);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",I),this._getCommandAndAncestors().forEach((E)=>E.emit("afterAllHelp",I))}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(g_.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. +`),this.outputHelp({error:!0});let D=$||{},I=D.exitCode||1,U=D.code||"commander.error";this._exit(I,U,_)}_parseOptionsEnv(){this.options.forEach((_)=>{if(_.envVar&&_.envVar in O_.env){let $=_.attributeName();if(this.getOptionValue($)===void 0||["default","config","env"].includes(this.getOptionValueSource($)))if(_.required||_.optional)this.emit(`optionEnv:${_.name()}`,O_.env[_.envVar]);else this.emit(`optionEnv:${_.name()}`)}})}_parseOptionsImplied(){let _=new fw(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((I)=>!$(I)).forEach((I)=>{this.setOptionValueWithSource(I,D.implied[I],"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=(E)=>{let j=E.attributeName(),N=this.getOptionValue(j),A=this.options.find((S)=>S.negate&&j===S.attributeName()),O=this.options.find((S)=>!S.negate&&j===S.attributeName());if(A&&(A.presetArg===void 0&&N===!1||A.presetArg!==void 0&&N===A.presetArg))return A;return O||E},I=(E)=>{let j=D(E),N=j.attributeName();if(this.getOptionValueSource(N)==="env")return`environment variable '${j.envVar}'`;return`option '${j.flags}'`},U=`error: ${I(_)} cannot be used with ${I($)}`;this.error(U,{code:"commander.conflictingOption"})}unknownOption(_){if(this._allowUnknownOption)return;let $="";if(_.startsWith("--")&&this._showSuggestionAfterError){let I=[],U=this;do{let E=U.createHelp().visibleOptions(U).filter((j)=>j.long).map((j)=>j.long);I=I.concat(E),U=U.parent}while(U&&!U._enablePositionalOptions);$=u8(_,I)}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 I=[];this.createHelp().visibleCommands(this).forEach((U)=>{if(I.push(U.name()),U.alias())I.push(U.alias())}),$=u8(_,I)}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 I=this.createOption($,D);return this._versionOptionName=I.attributeName(),this._registerOption(I),this.on("option:"+I.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 I=[D.name()].concat(D.aliases()).join("|");throw Error(`cannot add alias '${_}' to command '${this.name()}' as already have command '${I}'`)}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 vw(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=T6.basename(_,T6.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 I=$.formatHelp(this,$);if(D.hasColors)return I;return this._outputConfiguration.stripColor(I)}_getOutputContext(_){_=_||{};let $=!!_.error,D,I,U;if($)D=(j)=>this._outputConfiguration.writeErr(j),I=this._outputConfiguration.getErrHasColors(),U=this._outputConfiguration.getErrHelpWidth();else D=(j)=>this._outputConfiguration.writeOut(j),I=this._outputConfiguration.getOutHasColors(),U=this._outputConfiguration.getOutHelpWidth();return{error:$,write:(j)=>{if(!I)j=this._outputConfiguration.stripColor(j);return D(j)},hasColors:I,helpWidth:U}}outputHelp(_){let $;if(typeof _==="function")$=_,_=void 0;let D=this._getOutputContext(_),I={error:D.error,write:D.write,command:this};this._getCommandAndAncestors().reverse().forEach((E)=>E.emit("beforeAllHelp",I)),this.emit("beforeHelp",I);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",I),this._getCommandAndAncestors().forEach((E)=>E.emit("afterAllHelp",I))}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(O_.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 I=`${_}Help`;return this.on(I,(U)=>{let E;if(typeof $==="function")E=$({error:U.error,command:U.command});else E=$;if(E)U.write(`${E} -`)}),this}_outputHelpIfRequested(_){let $=this._getHelpOption();if($&&_.find((I)=>$.is(I)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function y8(_){return _.map(($)=>{if(!$.startsWith("--inspect"))return $;let D,I="127.0.0.1",U="9229",E;if((E=$.match(/^(--inspect(-brk)?)$/))!==null)D=E[1];else if((E=$.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(D=E[1],/^\d+$/.test(E[3]))U=E[3];else I=E[3];else if((E=$.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)D=E[1],I=E[3],U=E[4];if(D&&U!=="0")return`${D}=${I}:${parseInt(U)+1}`;return $})}function RP(){if(g_.env.NO_COLOR||g_.env.FORCE_COLOR==="0"||g_.env.FORCE_COLOR==="false")return!1;if(g_.env.FORCE_COLOR||g_.env.CLICOLOR_FORCE!==void 0)return!0;return}xw.Command=YP;xw.useColor=RP});var m8=D4((nw)=>{var{Argument:c8}=BN(),{Command:QP}=h8(),{CommanderError:hw,InvalidArgumentError:n8}=k1(),{Help:cw}=PP(),{Option:d8}=zP();nw.program=new QP;nw.createCommand=(_)=>new QP(_);nw.createOption=(_,$)=>new d8(_,$);nw.createArgument=(_,$)=>new c8(_,$);nw.Command=QP;nw.Option=d8;nw.Argument=c8;nw.Help=cw;nw.CommanderError=hw;nw.InvalidArgumentError=n8;nw.InvalidOptionArgumentError=n8});import{chmodSync as yP,closeSync as wD,existsSync as A0,fsyncSync as dN,lstatSync as xY,openSync as mN,readFileSync as rD,renameSync as hP,unlinkSync as lN,writeFileSync as iN}from"fs";import{randomUUID as fD}from"crypto";import{basename as uY,dirname as cP,join as nN}from"path";import{chmodSync as kP,existsSync as CY,mkdirSync as rN,readFileSync as vY,writeFileSync as qP}from"fs";import{homedir as fN}from"os";import{dirname as wY,join as h_,resolve as CP}from"path";var s$=h_(".hasna","knowledge"),vP=h_(".hasna","apps","knowledge"),W_={division:"xyz",app_type:"opensource",app:"knowledge",env:"prod",local_path:s$,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 wP(){return{type:"s3",artifacts_root:"artifacts",s3:{bucket:W_.s3.bucket,prefix:W_.s3.prefix,region:W_.s3.region,profile:W_.s3.profile,server_side_encryption:W_.s3.server_side_encryption}}}function CD(){return h_(fN(),".open-knowledge","db.json")}function r1(){return h_(fN(),".hasna","knowledge")}function xN(_=process.cwd()){return CP(_,s$)}function rY(){return h_(fN(),vP)}function fY(_=process.cwd()){return CP(_,vP)}function uN(_,$=process.cwd()){if(_==="project"||_==="local")return j$(fY($));return j$(rY())}function j$(_){return{home:_,configPath:h_(_,"config.json"),jsonStorePath:h_(_,"db.json"),knowledgeDbPath:h_(_,"knowledge.db"),artifactsDir:h_(_,"artifacts"),cacheDir:h_(_,"cache"),exportsDir:h_(_,"exports"),indexesDir:h_(_,"indexes"),logsDir:h_(_,"logs"),runsDir:h_(_,"runs"),schemasDir:h_(_,"schemas"),wikiDir:h_(_,"wiki")}}function vD(){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 g0(_){let $=j$(_);rN($.home,{recursive:!0,mode:448});for(let D of[$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir])rN(D,{recursive:!0,mode:448});if(!CY($.configPath))qP($.configPath,`${JSON.stringify(vD(),null,2)} +`)}),this}_outputHelpIfRequested(_){let $=this._getHelpOption();if($&&_.find((I)=>$.is(I)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function y8(_){return _.map(($)=>{if(!$.startsWith("--inspect"))return $;let D,I="127.0.0.1",U="9229",E;if((E=$.match(/^(--inspect(-brk)?)$/))!==null)D=E[1];else if((E=$.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(D=E[1],/^\d+$/.test(E[3]))U=E[3];else I=E[3];else if((E=$.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)D=E[1],I=E[3],U=E[4];if(D&&U!=="0")return`${D}=${I}:${parseInt(U)+1}`;return $})}function RP(){if(O_.env.NO_COLOR||O_.env.FORCE_COLOR==="0"||O_.env.FORCE_COLOR==="false")return!1;if(O_.env.FORCE_COLOR||O_.env.CLICOLOR_FORCE!==void 0)return!0;return}xw.Command=YP;xw.useColor=RP});var m8=D4((nw)=>{var{Argument:c8}=BN(),{Command:QP}=h8(),{CommanderError:hw,InvalidArgumentError:n8}=k1(),{Help:cw}=PP(),{Option:d8}=zP();nw.program=new QP;nw.createCommand=(_)=>new QP(_);nw.createOption=(_,$)=>new d8(_,$);nw.createArgument=(_,$)=>new c8(_,$);nw.Command=QP;nw.Option=d8;nw.Argument=c8;nw.Help=cw;nw.CommanderError=hw;nw.InvalidArgumentError=n8;nw.InvalidOptionArgumentError=n8});import{chmodSync as yP,closeSync as wD,existsSync as A0,fsyncSync as dN,lstatSync as xY,openSync as mN,readFileSync as rD,renameSync as hP,unlinkSync as lN,writeFileSync as iN}from"fs";import{randomUUID as fD}from"crypto";import{basename as uY,dirname as cP,join as nN}from"path";import{chmodSync as kP,existsSync as CY,mkdirSync as rN,readFileSync as vY,writeFileSync as qP}from"fs";import{homedir as fN}from"os";import{dirname as wY,join as y_,resolve as CP}from"path";var s$=y_(".hasna","knowledge"),vP=y_(".hasna","apps","knowledge"),W_={division:"xyz",app_type:"opensource",app:"knowledge",env:"prod",local_path:s$,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 wP(){return{type:"s3",artifacts_root:"artifacts",s3:{bucket:W_.s3.bucket,prefix:W_.s3.prefix,region:W_.s3.region,profile:W_.s3.profile,server_side_encryption:W_.s3.server_side_encryption}}}function CD(){return y_(fN(),".open-knowledge","db.json")}function r1(){return y_(fN(),".hasna","knowledge")}function xN(_=process.cwd()){return CP(_,s$)}function rY(){return y_(fN(),vP)}function fY(_=process.cwd()){return CP(_,vP)}function uN(_,$=process.cwd()){if(_==="project"||_==="local")return j$(fY($));return j$(rY())}function j$(_){return{home:_,configPath:y_(_,"config.json"),jsonStorePath:y_(_,"db.json"),knowledgeDbPath:y_(_,"knowledge.db"),artifactsDir:y_(_,"artifacts"),cacheDir:y_(_,"cache"),exportsDir:y_(_,"exports"),indexesDir:y_(_,"indexes"),logsDir:y_(_,"logs"),runsDir:y_(_,"runs"),schemasDir:y_(_,"schemas"),wikiDir:y_(_,"wiki")}}function vD(){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 g0(_){let $=j$(_);rN($.home,{recursive:!0,mode:448});for(let D of[$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir])rN(D,{recursive:!0,mode:448});if(!CY($.configPath))qP($.configPath,`${JSON.stringify(vD(),null,2)} `,{mode:384}),kP($.configPath,384);return $}function f1(_,$=process.cwd()){if(_==="project"||_==="local")return j$(xN($));return j$(r1())}function u$(_){rN(wY(_),{recursive:!0})}function yN(_){let $=vY(_,"utf8");return JSON.parse($)}function rP(_,$){u$(_),qP(_,`${JSON.stringify($,null,2)} `,{mode:384}),kP(_,384)}function u1(){return j$(r1()).jsonStorePath}function xD(_){if(_===u1()&&A0(CD()))oN();if(!A0(_))u$(_),mP(_,`${JSON.stringify({items:[]},null,2)} `)}function yY(_){return _.toISOString().replace(/[:.]/g,"-")}function tN(_){let $=[`id:${_.id}`];if(typeof _.short_id==="string"&&_.short_id.length>0)$.push(`short_id:${_.short_id}`);return $}function hY(_){let $=new Set;for(let D of _)for(let I of tN(D))$.add(I);return $}function cY(_,$){return tN($).some((D)=>_.has(D))}function hN(_,$){u$(_),iN(_,`${JSON.stringify($,null,2)} -`,{mode:384}),yP(_,384)}function fP(_){let $=JSON.parse(rD(_,"utf8"));if(!$||typeof $!=="object"||!Array.isArray($.items))return{store:{items:[]},skippedInvalid:0};let D={items:[]},I=0;for(let U of $.items)if(U&&typeof U==="object"&&typeof U.id==="string"&&U.id.length>0)D.items.push(U);else I+=1;return{store:D,skippedInvalid:I}}function oN(_={}){if(_.dryRun===!0)return xP(_);return y$(u1(),()=>xP(_),{createParent:!0})}function xP(_={}){let $=_.dryRun===!0,D=_.now??new Date,I=j$(r1()),U=CD(),E=I.jsonStorePath,j=A0(U),N=A0(E),A={ok:!0,dry_run:$,legacy_path:U,canonical_path:E,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 A;let O;try{let S=fP(U);O=S.store,A.skipped_invalid=S.skippedInvalid}catch(S){return A.ok=!1,A.errors.push(`Could not read legacy store: ${S instanceof Error?S.message:String(S)}`),A.message="Legacy global store import failed",A}let L={items:[]};if(N)try{L=fP(E).store}catch(S){return A.ok=!1,A.errors.push(`Could not read canonical store: ${S instanceof Error?S.message:String(S)}`),A.message="Legacy global store import failed",A}let J=hY(L.items),P={items:[...L.items]};for(let S of O.items){if(!S?.id){A.skipped_invalid+=1;continue}if(cY(J,S)){A.skipped_existing+=1;continue}P.items.push(S);for(let W of tN(S))J.add(W);A.imported+=1}if(A.would_create_canonical=!N&&A.imported>0,A.canonical_created=!$&&A.would_create_canonical,A.message=A.imported>0?`Imported ${A.imported} legacy item(s) into canonical knowledge store`:"Legacy global store already imported",$||A.imported===0)return A;let z=`${yY(D)}-${fD().slice(0,8)}`;if(N)A.backup_path=nN(I.exportsDir,`legacy-open-knowledge-db-before-import-${z}.json`),hN(A.backup_path,L);return hN(E,P),A.report_path=nN(I.runsDir,`legacy-open-knowledge-import-${z}.json`),hN(A.report_path,A),A}function U4(_){if(!A0(_))return{exists:!1,items:[]};let $=rD(_,"utf8"),D=JSON.parse($);if(!D||!Array.isArray(D.items))return{exists:!0,items:[]};return{exists:!0,items:D.items}}function nY(_){return`${_}.lock`}var x1=1e4,nP=25,uP=120000,dY=new Int32Array(new SharedArrayBuffer(4));function pN(_){return typeof _==="object"&&_!==null&&"code"in _?String(_.code):void 0}function dP(_){let $=null;try{$=mN(cP(_),"r"),dN($)}catch{}finally{if($!==null)try{wD($)}catch{}}}var cN=new Set;function mP(_,$){u$(_);let D=nN(cP(_),`.${uY(_)}.tmp.${fD()}`),I=null;try{I=mN(D,"wx",384),iN(I,$),dN(I),wD(I),I=null,hP(D,_);try{yP(_,384)}catch{}dP(_)}catch(U){if(I!==null)try{wD(I)}catch{}try{lN(D)}catch{}throw U}}function lP(_){Atomics.wait(dY,0,0,_)}function mY(_){if(typeof _!=="number"||!Number.isInteger(_)||_<=0)return!1;try{return process.kill(_,0),!0}catch($){return pN($)!=="ESRCH"}}function iP(_,$){try{let D=rD(_,"utf8"),I=JSON.parse(D);if(typeof I.ts==="number")return $-I.ts>uP&&!mY(I.pid)}catch{}try{return $-xY(_).mtimeMs>uP}catch{return!1}}function lY(_){let $=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z"),D=`${_}.stale.${$}.${fD()}`;try{hP(_,D)}catch(I){if(pN(I)!=="ENOENT")throw I;return}}function iY(_){let $=fD(),D=`${_}.breaker`,I=Date.now();while(Date.now()-I<x1){if(tP(D,$)){try{if(iP(_,Date.now()))lY(_)}finally{oP(D,$)}return}lP(nP)}throw Error(`Could not acquire stale-lock breaker on ${D} after ${x1}ms`)}var tY=new Set(["EEXIST","EPERM","EBUSY"]);function oY(_){return _!==void 0&&tY.has(_)}function tP(_,$,D){let I=null,U=!1;try{return I=mN(_,"wx",384),U=!0,iN(I,`${JSON.stringify({owner:$,pid:process.pid,ts:Date.now()})} +`,{mode:384}),yP(_,384)}function fP(_){let $=JSON.parse(rD(_,"utf8"));if(!$||typeof $!=="object"||!Array.isArray($.items))return{store:{items:[]},skippedInvalid:0};let D={items:[]},I=0;for(let U of $.items)if(U&&typeof U==="object"&&typeof U.id==="string"&&U.id.length>0)D.items.push(U);else I+=1;return{store:D,skippedInvalid:I}}function oN(_={}){if(_.dryRun===!0)return xP(_);return y$(u1(),()=>xP(_),{createParent:!0})}function xP(_={}){let $=_.dryRun===!0,D=_.now??new Date,I=j$(r1()),U=CD(),E=I.jsonStorePath,j=A0(U),N=A0(E),A={ok:!0,dry_run:$,legacy_path:U,canonical_path:E,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 A;let O;try{let G=fP(U);O=G.store,A.skipped_invalid=G.skippedInvalid}catch(G){return A.ok=!1,A.errors.push(`Could not read legacy store: ${G instanceof Error?G.message:String(G)}`),A.message="Legacy global store import failed",A}let S={items:[]};if(N)try{S=fP(E).store}catch(G){return A.ok=!1,A.errors.push(`Could not read canonical store: ${G instanceof Error?G.message:String(G)}`),A.message="Legacy global store import failed",A}let L=hY(S.items),P={items:[...S.items]};for(let G of O.items){if(!G?.id){A.skipped_invalid+=1;continue}if(cY(L,G)){A.skipped_existing+=1;continue}P.items.push(G);for(let J of tN(G))L.add(J);A.imported+=1}if(A.would_create_canonical=!N&&A.imported>0,A.canonical_created=!$&&A.would_create_canonical,A.message=A.imported>0?`Imported ${A.imported} legacy item(s) into canonical knowledge store`:"Legacy global store already imported",$||A.imported===0)return A;let z=`${yY(D)}-${fD().slice(0,8)}`;if(N)A.backup_path=nN(I.exportsDir,`legacy-open-knowledge-db-before-import-${z}.json`),hN(A.backup_path,S);return hN(E,P),A.report_path=nN(I.runsDir,`legacy-open-knowledge-import-${z}.json`),hN(A.report_path,A),A}function U4(_){if(!A0(_))return{exists:!1,items:[]};let $=rD(_,"utf8"),D=JSON.parse($);if(!D||!Array.isArray(D.items))return{exists:!0,items:[]};return{exists:!0,items:D.items}}function nY(_){return`${_}.lock`}var x1=1e4,nP=25,uP=120000,dY=new Int32Array(new SharedArrayBuffer(4));function pN(_){return typeof _==="object"&&_!==null&&"code"in _?String(_.code):void 0}function dP(_){let $=null;try{$=mN(cP(_),"r"),dN($)}catch{}finally{if($!==null)try{wD($)}catch{}}}var cN=new Set;function mP(_,$){u$(_);let D=nN(cP(_),`.${uY(_)}.tmp.${fD()}`),I=null;try{I=mN(D,"wx",384),iN(I,$),dN(I),wD(I),I=null,hP(D,_);try{yP(_,384)}catch{}dP(_)}catch(U){if(I!==null)try{wD(I)}catch{}try{lN(D)}catch{}throw U}}function lP(_){Atomics.wait(dY,0,0,_)}function mY(_){if(typeof _!=="number"||!Number.isInteger(_)||_<=0)return!1;try{return process.kill(_,0),!0}catch($){return pN($)!=="ESRCH"}}function iP(_,$){try{let D=rD(_,"utf8"),I=JSON.parse(D);if(typeof I.ts==="number")return $-I.ts>uP&&!mY(I.pid)}catch{}try{return $-xY(_).mtimeMs>uP}catch{return!1}}function lY(_){let $=new Date().toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z"),D=`${_}.stale.${$}.${fD()}`;try{hP(_,D)}catch(I){if(pN(I)!=="ENOENT")throw I;return}}function iY(_){let $=fD(),D=`${_}.breaker`,I=Date.now();while(Date.now()-I<x1){if(tP(D,$)){try{if(iP(_,Date.now()))lY(_)}finally{oP(D,$)}return}lP(nP)}throw Error(`Could not acquire stale-lock breaker on ${D} after ${x1}ms`)}var tY=new Set(["EEXIST","EPERM","EBUSY"]);function oY(_){return _!==void 0&&tY.has(_)}function tP(_,$,D){let I=null,U=!1;try{return I=mN(_,"wx",384),U=!0,iN(I,`${JSON.stringify({owner:$,pid:process.pid,ts:Date.now()})} `),dN(I),wD(I),I=null,dP(_),!0}catch(E){if(I!==null)try{wD(I)}catch{}if(U)try{lN(_)}catch{}let j=pN(E);if(oY(j))return D?.(j),!1;throw E}}function pY(_,$){let D=Date.now(),I,U=(E)=>{I=E};while(Date.now()-D<x1){if(tP(_,$,U))return;if(iP(_,Date.now()))iY(_);lP(nP)}throw Error(`Could not acquire lock on ${_} after ${x1}ms`+(I?` (last contention: ${I})`:""))}function oP(_,$){try{if(A0(_)){if(JSON.parse(rD(_,"utf8")).owner===$)lN(_)}}catch{}}function uD(_){xD(_);let $=rD(_,"utf8"),D=JSON.parse($);if(!D||!Array.isArray(D.items))return{items:[]};return D}function _6(_,$){mP(_,`${JSON.stringify($,null,2)} -`)}function y$(_,$,D={}){let I=fD(),U=nY(_);if(cN.has(U))return $();if(D.createParent)u$(U);pY(U,I),cN.add(U);try{return $()}finally{cN.delete(U),oP(U,I)}}function pP(){return`k_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function eP(_){return _.replace(/^k_/,"").slice(0,12)}import{existsSync as $7}from"fs";import{isIP as aP}from"net";import{readFileSync as sY,statSync as _Q}from"fs";import{join as sP}from"path";function Ez(_){return _.toUpperCase().replace(/-/g,"_")}function eY(_){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 jz(_){let $=Ez(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function aY(_){return`HASNA_${Ez(_)}_API_KEY_OVERRIDE`}var eN="HASNA_PROFILE";class yD extends Error{appName;attempted;constructor(_,$,D){super($);this.name="CredentialResolutionError",this.appName=_,this.attempted=D}}var $Q=".hasna",DQ="cloud",UQ=".config",IQ="hasna",EQ=65536,jQ=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,NQ=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/,gQ=/[^\t\x20-\x7e]/;function AQ(_){let $=_.HOME?.trim();return $?$:null}function Nz(_,$){return gz(_,$,null)}function gz(_,$,D){let I=AQ($);if(!I||!jQ.test(_))return[];let U=D?`${_}.${D}`:_,E=D?`${_}-${D}`:_;return[sP(I,$Q,DQ,`${U}.env`),sP(I,UQ,IQ,`${E}-cloud.env`)]}function OQ(_){let $=new Map;for(let D of _.split(/\r?\n/)){let I=D.trim();if(I.length===0||I.startsWith("#"))continue;let U=I.startsWith("export ")?I.slice(7).trim():I,E=U.indexOf("=");if(E<=0)continue;let j=U.slice(0,E).trim();if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(j))continue;let N=U.slice(E+1).trim(),A=N[0];if(A==='"'||A==="'"){if(N.length<2||!N.endsWith(A))continue;N=N.slice(1,-1)}if(N.length===0)continue;$.set(j,N)}return $}function _z(_,$){let D;try{let U=_Q(_);if(!U.isFile()||U.size>EQ)return null;D=sY(_,"utf8")}catch{return null}let I=OQ(D);for(let U of $){let E=I.get(U)?.trim();if(E)return E}return null}function O0(_,$,D){if(!gQ.test(D))return;throw new yD(_,`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 LQ=Symbol.for("nodejs.util.inspect.custom");function L0(_){let{apiKey:$,...D}=_,I={...D};return Object.defineProperty(I,"apiKey",{value:$,enumerable:!1,writable:!1,configurable:!1}),Object.defineProperty(I,LQ,{value:()=>({...D,apiKey:"[redacted]"}),enumerable:!1,writable:!1,configurable:!1}),I}function SQ(_,$){return O0(_,"explicit apiKey option",$),L0({apiKey:$,tier:"argument",source:"explicit apiKey option",deliberate:!0,deprecated:!1,diskCandidates:[],warning:null})}function $z(_,$){for(let D of $){let I=_[D]?.trim();if(I)return{key:D,value:I}}return null}var Dz=Symbol.for("hasna:contracts:credentialDeprecationNotices");function JQ(){let _=globalThis,$=_[Dz];if($ instanceof Set)return $;let D=new Set;return _[Dz]=D,D}function WQ(_){if(typeof process<"u"&&process.stderr)process.stderr.write(`${_} -`)}function _g(_,$,D={}){let{apiKeyKeys:I}=jz(_),U=Nz(_,$),E=D.apiKey?.trim();if(E)return O0(_,"the explicit apiKey argument",E),L0({apiKey:E,tier:"argument",source:"explicit apiKey argument",deliberate:!0,deprecated:!1,diskCandidates:U,warning:null});let j=aY(_),N=$[j];if(N!==void 0){let J=N.trim();if(!J)throw new yD(_,`${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 O0(_,j,J),L0({apiKey:J,tier:"override",source:j,deliberate:!0,deprecated:!1,diskCandidates:U,warning:null})}let A=D.profile?.trim()||$[eN]?.trim();if(A){let J=D.profile?.trim()?"explicit profile argument":eN;if(!NQ.test(A))throw new yD(_,`Profile name from ${J} is not usable in a path. Use letters, digits, dot, dash, or underscore.`,[J]);let P=gz(_,$,A);for(let z of P){let S=_z(z,I);if(S)return O0(_,z,S),L0({apiKey:S,tier:"profile",source:z,deliberate:!0,deprecated:!1,diskCandidates:P,warning:null})}throw new yD(_,`Profile '${A}' (from ${J}) has no ${I[0]} for '${_}'. Looked in: ${P.join(", ")||"<no HOME in this environment>"}. `+"A profile names WHICH identity to use, so it is never resolved around \u2014 "+`create the profile's credential file or unset ${eN}.`,P)}let O=U.map((J)=>({path:J,value:_z(J,I)})).filter((J)=>J.value!==null);if(O.length>0){let J=O[0];O0(_,J.path,J.value);let P=[...O.slice(1).filter((S)=>S.value!==J.value).map((S)=>S.path),...(()=>{let S=$z($,I);return S&&S.value!==J.value?[S.key]:[]})()],z=P.length>0?`Credential sources disagree for '${_}': ${J.path} and ${P.join(", ")} hold different keys. ${J.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 L0({apiKey:J.value,tier:"disk",source:J.path,deliberate:!1,deprecated:!1,diskCandidates:U,warning:z})}let L=$z($,I);if(L){O0(_,L.key,L.value);let J=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.",P=`[${_}] 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. ${J}`,z=D.onDeprecation??WQ,S=JQ();if(!S.has(_))S.add(_),z(P);return L0({apiKey:L.value,tier:"legacy-env",source:L.key,deliberate:!1,deprecated:!0,diskCandidates:U,warning:P})}return null}var V6="HASNA_FLEET_API_DOMAIN",S0="your-deployment.example",Dg=/[\u0000-\u001f\u007f]/,Az=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;function y1(_){if(_.length===0||_.length>253||Dg.test(_)||/[^\x00-\x7f]/.test(_))return!1;return _.split(".").every(($)=>$.length<=63&&!$.startsWith("xn--")&&Az.test($))}function PQ(_){let $=_[V6];if($===void 0)return{domain:S0,source:"default",misconfigured:!0,warning:`${V6} is not set; using the non-resolving ${S0} fallback.`};let D=$.trim().toLowerCase();if(Dg.test($)||!y1(D))return{domain:S0,source:V6,misconfigured:!0,warning:`${V6} is blank or invalid; using the non-resolving ${S0} fallback.`};return{domain:D,source:V6,misconfigured:!1,warning:null}}function Oz(_){if(_.length>63||!Az.test(_))throw Error("App name must be one lowercase DNS label.");return _}function zQ(_,$){let D=`${Oz(_)}.${$}`;if(!y1(D))throw Error("Composed cloud hostname must be a valid DNS domain");return D}function XQ(_,$){let D=Oz(_),I=PQ($),U=`${D}.${I.domain}`;if(y1(U))return{baseUrl:`https://${U}`,source:I.source,misconfigured:I.misconfigured,warning:I.warning};return{baseUrl:`https://${zQ(D,S0)}`,source:I.source,misconfigured:!0,warning:`${V6} cannot form a valid composed cloud hostname for app '${D}'; using the non-resolving ${S0} fallback.`}}function aN(_,$,D={}){for(let I of $){let U=_[I],E=U?.trim();if(E)return{key:I,value:D.preserveRaw?U:E}}return null}function GQ(_){let $=/^[a-z][a-z0-9+.-]*:\/\//i.exec(_);if(!$)throw Error("API URL must be absolute.");let D=_.slice($[0].length),I=D.search(/[/?#]/),U=I===-1?D:D.slice(0,I);if(!U)throw Error("API URL must include a hostname.");return U}function Uz(_){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 RQ(_){let $;if(_.startsWith("[")){let D=_.indexOf("]");if(D===-1)throw Error("API URL authority must contain a canonical hostname.");$=_.slice(0,D+1);let I=_.slice(D+1);if(I){if(!I.startsWith(":"))throw Error("API URL authority must contain a canonical hostname and port.");Uz(I.slice(1))}if(aP($.slice(1,-1))!==6)throw Error("API URL authority must contain a canonical IPv6 literal.")}else{let D=_.indexOf(":"),I=_.lastIndexOf(":");if(D!==I)throw Error("IPv6 API URL authorities must use brackets.");if(I!==-1){let N=_.slice(I+1);Uz(N),$=_.slice(0,I)}else $=_;let U=aP($),j=$.split(".").every((N)=>/^(?:0x[0-9a-f]+|[0-9]+)$/i.test(N));if(U!==4&&j||U!==4&&!y1($.toLowerCase()))throw Error("API URL authority must contain a canonical ASCII hostname.")}return $.toLowerCase()}function YQ(_){return/^(?:localhost|127\.0\.0\.1|\[::1\])(?::[0-9]+)?$/i.test(_)}function Lz(_){if(Dg.test(_))throw Error("API URL must not contain ASCII control characters.");let $=_.trim(),D=GQ($);if(D.includes("@")||D.includes("\\")||D.includes("%")||/[^\x00-\x7f]/.test(D))throw Error("API URL authority must be canonical ASCII without credentials.");let I=RQ(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()!==I)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:"&&!YQ(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 E=U.pathname.replace(/\/+$/,"");if(E.endsWith("/v1"))E=E.slice(0,-3);return U.pathname=`${E}/v1`,U.toString().replace(/\/+$/,"")}function QQ(_,$=process.env,D={}){let I=jz(_),U=aN($,I.modeKeys),E=aN($,I.apiUrlKeys,{preserveRaw:!0}),j=aN($,I.apiKeyKeys),N="sqlite",A="default",O=[],L;if(U)N=eY(U.value).mode,A=U.key;else if(E){if(L=_g(_,$,D.credentials),L)N="postgres",A=`${E.key}+${L.source}`}if(N==="sqlite")return{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:Boolean(j),apiKeySource:j?j.key:null,apiKeyTier:null,misconfigured:!1,warning:O.length>0?O.join(" "):null};if(L===void 0)L=_g(_,$,D.credentials);if(!L){let S=Sz(_,$);return O.push(`${A}=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 ${S}, then for ${I.apiKeyKeys[0]} in the environment.`),{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!1,apiKeySource:null,apiKeyTier:null,misconfigured:!0,warning:O.join(" ")}}if(L.warning)O.push(L.warning);let J=null,P=E?.key??($[V6]===void 0?"default":V6),z;try{if(!E)J=XQ(_,$),P=J.source;let S=E?.value??J.baseUrl;z=Lz(S)}catch(S){let W=S instanceof Error?S.message:String(S);return O.push(`Invalid API URL from ${P}: ${W}. Using local store.`),{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:!0,warning:O.join(" ")}}if(J?.warning)O.push(J.warning);return{transport:"http",mode:N,modeSource:A,baseUrl:z,apiUrlSource:P,apiKeyPresent:!0,apiKeySource:L.source,apiKeyTier:L.tier,misconfigured:J?.misconfigured??!1,warning:O.length>0?O.join(" "):null}}function Sz(_,$){let D=Nz(_,$);return D.length>0?D.join(" or "):"<no HOME set in this environment, so no credential file was consulted>"}class J0 extends Error{status;method;path;body;credentialSource;credentialTier;constructor(_,$,D,I,U){let E=U?`. ${U.guidance}`:"";super(`Hasna cloud request failed: ${_} ${$} -> ${D}${E}`);this.name="HasnaHttpError",this.status=D,this.method=_,this.path=$,this.body=I,this.credentialSource=U?.source??null,this.credentialTier=U?.tier??null}}function KQ(_,$){if(typeof $==="function")return $();return SQ(_,$)}function TQ(_){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],I=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. ${I}`}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 FQ=[408,425,429,500,502,503,504],VQ=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),BQ=new Set(["host",":authority","forwarded","x-forwarded-host","x-original-host"]);function Iz(_,$){if(!_)return;let D=Object.keys(_).find((I)=>BQ.has(I.trim().toLowerCase()));if(D)throw Error(`Authenticated ${$} headers must not set authority header '${D}'.`)}function MQ(_,$){if(!$)return _;let D=$ instanceof URLSearchParams?$:new URLSearchParams;if(!($ instanceof URLSearchParams))for(let[U,E]of Object.entries($)){if(E===null||E===void 0)continue;if(Array.isArray(E))for(let j of E)D.append(U,String(j));else D.append(U,String(E))}let I=D.toString();if(!I)return _;return`${_}${_.includes("?")?"&":"?"}${I}`}var bQ=(_)=>new Promise(($)=>setTimeout($,_));function ZQ(_){let $=_.fetchImpl??((O,L)=>fetch(O,L)),D=Lz(_.baseUrl),I=_.timeoutMs??30000,U=_.sleepImpl??bQ,E=_.retry;function j(O){let L=O!==void 0?O:E;if(L===!1)return null;let J=L??{};return{retries:J.retries??2,baseDelayMs:J.baseDelayMs??200,maxDelayMs:J.maxDelayMs??2000,retryStatuses:J.retryStatuses??[...FQ]}}async function N(O,L,J,P,z,S){Iz(_.headers,"transport"),Iz(z.headers,"request");let W={"x-api-key":S.apiKey,Authorization:`Bearer ${S.apiKey}`,Accept:"application/json",..._.headers??{},...z.headers??{}};if(z.idempotencyKey)W["Idempotency-Key"]=z.idempotencyKey;let X={method:O,headers:W,redirect:"manual"};if(P!==void 0)W["Content-Type"]="application/json",X.body=JSON.stringify(P);let G=new AbortController,R=()=>G.abort();if(z.signal)if(z.signal.aborted)G.abort();else z.signal.addEventListener("abort",R,{once:!0});let K=setTimeout(()=>G.abort(),z.timeoutMs??I);X.signal=G.signal;let Y;try{Y=await $(J,X)}catch(k){let B=k instanceof Error?k:Error(String(k));if(z.signal?.aborted)return{ok:!1,retryable:!1,error:B};return{ok:!1,retryable:!0,error:B}}finally{if(clearTimeout(K),z.signal)z.signal.removeEventListener("abort",R)}let T=await Y.text(),F=void 0;if(T.length>0)try{F=JSON.parse(T)}catch{F=T}if(!Y.ok){if(Y.status>=300&&Y.status<400)return{ok:!1,retryable:!1,error:new J0(O,L,Y.status,F)};if(Y.status===401||Y.status===403)return{ok:!1,retryable:!1,error:new J0(O,L,Y.status,F,{source:S.source,tier:S.tier,guidance:TQ(S)})};let k=j(z.retry);return{ok:!1,retryable:k?k.retryStatuses.includes(Y.status):!1,error:new J0(O,L,Y.status,F)}}return{ok:!0,value:F}}async function A(O,L,J,P={}){let z=O.toUpperCase(),S=MQ(L.startsWith("/")?L:`/${L}`,P.query),W=`${D}${S}`,X=j(P.retry),G=VQ.has(z)||Boolean(P.idempotencyKey),R=X&&G?X.retries+1:1,K=KQ(_.name,_.apiKey),Y=null;for(let T=1;T<=R;T++){let F=await N(z,S,W,J,P,K);if(F.ok)return F.value;if(Y=F,!(X!==null&&G&&F.retryable&&T<R))break;let B=Math.min(X.maxDelayMs,X.baseDelayMs*2**(T-1)),c=Math.floor(Math.random()*(B/2+1));await U(B+c)}throw Y.error}return{baseUrl:D,request:A,get:(O,L)=>A("GET",O,void 0,L),post:(O,L,J)=>A("POST",O,L,J),put:(O,L,J)=>A("PUT",O,L,J),patch:(O,L,J)=>A("PATCH",O,L,J),del:(O,L,J)=>A("DELETE",O,L,J)}}function HQ(_,$=process.env,D){let I=D?.credentials,U=QQ(_,$,{...I?{credentials:I}:{}});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 E=()=>{let j=_g(_,$,I);if(!j)throw Error(`Client for '${_}' resolved to the http transport but no API key is available any more. Looked at ${Sz(_,$)}, 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:E,...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 $g(_){let $=_.replace(/^\/+|\/+$/g,"");if(!$)throw Error("resource must be a non-empty path segment");return`/${$}`}function sN(_,$){if($===void 0||$===null||`${$}`.length===0)throw Error("id must be a non-empty string");return`${$g(_)}/${encodeURIComponent(String($))}`}function kQ(){let _=globalThis;if(_.crypto?.randomUUID)return _.crypto.randomUUID();return`idmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function qQ(_){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 CQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["total","count","totalCount","total_count"])if(typeof $[D]==="number")return $[D]}return null}function vQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["cursor","nextCursor","next_cursor","next"])if(typeof $[D]==="string")return $[D]}return null}function wQ(_,$){return{name:_,baseUrl:$.baseUrl,transport:$,async list(D,I={}){let U=await $.get($g(D),I);return{items:qQ(U),total:CQ(U),cursor:vQ(U),raw:U}},async get(D,I,U={}){try{return await $.get(sN(D,I),U)}catch(E){if(E instanceof J0&&E.status===404)return null;throw E}},async create(D,I,U={}){let{idempotencyKey:E,...j}=U;return $.post($g(D),I,{...j,idempotencyKey:E??kQ()})},async update(D,I,U,E={}){let{method:j="PATCH",idempotencyKey:N,...A}=E;return(j==="PUT"?$.put:$.patch)(sN(D,I),U,{...A,...N?{idempotencyKey:N}:{}})},async delete(D,I,U={}){try{await $.del(sN(D,I),void 0,U)}catch(E){if(E instanceof J0&&E.status===404)return;throw E}}}}function Ug(_,$=process.env,D){let I=HQ(_,$,D);if(I.transport==="http")return{transport:"http",client:wQ(_,I.client)};return{transport:"sqlite",client:null}}function Jz(_){return _.toUpperCase().replace(/-/g,"_")}function Wz(_){let $=Jz(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function Pz(_){return`HASNA_${Jz(_)}_API_KEY_OVERRIDE`}var zz="HASNA_PROFILE";function hD(_){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 h1(_){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 tf from"pg";class c1 extends Error{scheme;port;constructor(_,$){super(_);this.name="KnowledgeNetworkGuardError",this.scheme=$.scheme,this.port=$.port}}function W0(_=process.env){return(_.NODE_ENV??"").trim().toLowerCase()==="test"}function Xz(_){let $=_.split(".");if($.length!==4)return!1;if(!$.every((D)=>/^\d{1,3}$/.test(D)&&Number(D)<=255))return!1;return $[0]==="127"}function yQ(_){let $=_.trim().toLowerCase();if($.length===0)return!1;if($==="localhost"||$.endsWith(".localhost"))return!0;if(Xz($))return!0;if(!$.startsWith("[")||!$.endsWith("]"))return!1;let D=$.slice(1,-1);if(D==="::1"||/^(0:){7}1$/.test(D))return!0;let I=D.split(":").pop()??"";if(/^(::ffff:|::)/.test(D)&&Xz(I))return!0;return/^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(D)}function Yz(_){if(typeof _==="string")return _;if(_ instanceof URL)return _.href;return _.url}function Gz(_,$=process.env){if(!W0($))return;let D=Yz(_),I;try{I=new URL(D)}catch{throw new c1("knowledge: refused an outbound request with an unparseable target while NODE_ENV=test. Under test, only loopback requests are permitted.",{scheme:"unknown",port:""})}if(yQ(I.hostname))return;throw new c1(`knowledge: refused a non-loopback ${I.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:I.protocol.replace(":",""),port:I.port})}var hQ=new Set([301,302,303,307,308]),Rz=5;function cQ(_,$){if($?.method)return $.method.toUpperCase();if(typeof _!=="string"&&!(_ instanceof URL))return _.method.toUpperCase();return"GET"}async function P0(_,$){if(Gz(_),!W0()||$?.redirect!==void 0)return fetch(_,$);let D=Yz(_),I=cQ(_,$),U=$?.body,E=await fetch(_,{...$??{},redirect:"manual"});for(let j=0;hQ.has(E.status);j++){let N=E.headers.get("location");if(!N)return E;let A=new URL(N,D).href;if(Gz(A),j>=Rz){let L=new URL(A);throw new c1(`knowledge: refused to follow more than ${Rz} 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(E.status===303||(E.status===301||E.status===302)&&I!=="GET"&&I!=="HEAD")I="GET",U=void 0;let O={...$??{},method:I,redirect:"manual"};if(U===void 0)delete O.body;else O.body=U;E=await fetch(A,O),D=A}return E}var cD="knowledge",Ig=Wz(cD),$6=Ig.modeKeys,d1=Ig.apiUrlKeys,m1=Ig.apiKeyKeys;function n1(_,$){return $.filter((D)=>(_[D]??"").trim().length>0)}function nD(_=process.env){let $=[...n1(_,d1),...n1(_,m1)],D=$6[0];for(let I of $6){let U=_[I]?.trim();if(!U)continue;let E;try{E=h1(U)}catch(N){let A=N instanceof Error?N.message:String(N);throw Error(`knowledge: ${I}=${U} is not a valid mode. ${A} Unset ${I} to use the default sqlite backend, or set ${I}=sqlite or ${I}=postgres.`)}let j=[];if(I!==D)j.push(`Using alias env ${I}; the canonical key is ${D}.`);if(E.mode==="sqlite"&&$.length>0)j.push(`${I}=sqlite pins the on-box store; ${$.join(", ")} are set but ignored.`);return{mode:E.mode,source:{kind:"env",name:I,value:U},pointer_env_present:$,pointer_ignored:E.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 nQ=["postgres"],dQ=["sqlite"],Qz=new Map;function Kz(_,$,D){let I=$===hD;if(I){let U=Qz.get(_);if(U!==void 0)return U}for(let U of _)try{if($(U),I)Qz.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 mQ(_=hD){return Kz(nQ,_,"SERVER_MODE_CANDIDATES")}function lQ(_=hD){return Kz(dQ,_,"LOCAL_MODE_CANDIDATES")}function iQ(_,$=hD){return _==="postgres"?mQ($):lQ($)}function Eg(_,$){return{..._,[$6[0]]:iQ($)}}class Tz extends Error{code="knowledge_mode_unset_with_api_url";constructor(_){let $=$6[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 Fz(_=process.env,$={}){let D=nD(_);if($.storePathOverridden)return D;if(D.source.kind!=="default")return D;let I=n1(_,d1);if(I.length===0)return D;throw new Tz(I)}function Vz(_=process.env){let $=nD(_);return{...$,store_transport:$.mode==="postgres"?"api":"local",api_key_present:n1(_,m1).length>0,network_guard_active:W0(_)}}function jg(_){return Boolean(_&&typeof _==="object"&&_.query_capability==="hasna.knowledge.bounded-query.v1")}function Bz(_){return{fetchImpl:P0,...W0(_)?{retry:!1}:{}}}var D6="notes";class z0 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"}}class gg extends Error{operation;fields;code="bounded_query_capability_required";constructor(_,$){super(`bounded_query_capability_required: the Knowledge server did not prove support for ${_} field(s): ${$.join(", ")}. Refusing to accept a possibly unfiltered response; update the server and retry.`);this.operation=_;this.fields=$;this.name="KnowledgeBoundedQueryCapabilityError"}}function tQ(_){let $={};if(_.search)$.filter=_.search,$.search=_.search;if(_.tags?.length)$.tags=_.tags;if(_.archive){if($.archive=_.archive,_.archive==="all")$.includeArchived=!0}if(_.sort)$.sort=_.sort;if(_.direction)$.direction=_.direction;if(_.limit!==void 0)$.limit=_.limit;if(_.offset!==void 0)$.offset=_.offset;return $}function oQ(_){let $=[];if(_.tags?.length)$.push("tags");if(_.sort!==void 0)$.push("sort");if(_.direction!==void 0)$.push("direction");if(_.archive==="archived")$.push("archive=archived");return $}function l1(_,$,D,I,U){let E=_??$;if(!Number.isFinite(E)||!Number.isInteger(E)||E<I||E>U)throw Error(`${D} must be an integer between ${I} and ${U}.`);return E}function pQ(_){return{baseUrl:_.baseUrl,async list($={}){let D=l1($.limit,200,"limit",1,200),I=l1($.offset,0,"offset",0,1e4),U=tQ({...$,limit:D,offset:I}),E=await _.list(D6,{query:U});if(!Number.isInteger(E.total)||Number(E.total)<0)throw Error("knowledge cloud list response is missing a valid producer total.");let j=oQ($);if(j.length>0&&!jg(E.raw))throw new gg("list",j);return{items:E.items,total:Number(E.total)}},async search($){let D=l1($.limit,20,"limit",1,200),I=l1($.offset,0,"offset",0,1e4),U=await _.transport.get(`/${D6}/search`,{query:{q:$.query,archive:$.archive??"active",limit:D,offset:I}});if(!Number.isInteger(U.total)||U.total<0||!Array.isArray(U.items)||U.items.some((E)=>!E||typeof E!=="object"||!E.item||typeof E.rank!=="number"||!Number.isFinite(E.rank)))throw Error("knowledge cloud search response is missing producer rank or total evidence.");if(!jg(U))throw new gg("search",["q","rank","total"]);return{items:U.items,total:U.total}},async get($){return _.get(D6,$)},async create($){return _.create(D6,{...$.id?{id:$.id}:{},title:$.title,content:$.content,url:$.url??null,tags:$.tags??[],...$.metadata?{metadata:$.metadata}:{}})},async update($,D,I={}){try{return await _.update(D6,$,D,{...I.expectedVersion!==void 0?{headers:{"if-match":String(I.expectedVersion)}}:{}})}catch(U){if(Ng(U))return null;let E=eQ(U);if(E)throw E;throw U}},async delete($){let D=await _.get(D6,$);if(!D)return!1;return await _.delete(D6,D.id),!0},async listVersions($,D={}){try{return await _.transport.get(`/${D6}/${encodeURIComponent($)}/versions`,{query:{limit:D.limit,offset:D.offset}})}catch(I){if(Ng(I))return null;throw I}},async getVersion($,D){try{return await _.transport.get(`/${D6}/${encodeURIComponent($)}/versions/${D}`)}catch(I){if(Ng(I))return null;throw I}}}}function eQ(_){if(!_||typeof _!=="object")return null;if(_.status!==409)return null;let $=_.body,I=(typeof $==="string"?aQ($):$)??{};if(I.error!=="version_conflict")return null;return new z0(Number(I.expected??0),Number(I.current??0))}function aQ(_){try{return JSON.parse(_)}catch{return null}}function Ng(_){return Boolean(_&&typeof _==="object"&&_.status===404)}function dD(_=process.env){let $=_7(_);return $?pQ($):null}function sQ(_){let $={..._};return delete $.HOME,delete $.USERPROFILE,delete $[zz],delete $[Pz(cD)],$}function _7(_,$={}){if(nD(_).mode!=="postgres")return null;let D=$.guarded?sQ(_):_,I=Ug(cD,Eg(D,"postgres"),Bz(D));if(I.transport!=="http")return null;return I.client}function h$(_=process.env){if(nD(_).mode!=="postgres")return!1;return Ug(cD,Eg(_,"postgres"),Bz(_)).transport==="http"}async function i1(_){let D=[];for(let I=0;;I+=200){let{items:U}=await _.list({archive:"all",limit:200,offset:I});if(D.push(...U),U.length<200)break;if(I>1e5)break}return D}class Og 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 Ag(_,$){return _.id===$||_.short_id===$}function D7(_,$){let D=$.trim().toLowerCase();if(!D)return!0;return _.id.toLowerCase().includes(D)||_.title.toLowerCase().includes(D)||_.content.toLowerCase().includes(D)}function U7(_,$){if($.length===0)return!0;let D=new Set((_.tags??[]).map((I)=>I.toLowerCase()));return $.every((I)=>{let U=I.trim().toLowerCase(),E=I.split(",").map((j)=>j.trim().toLowerCase()).filter(Boolean);return U.length>0&&D.has(U)||E.length>0&&E.every((j)=>D.has(j))})}function I7(_,$,D,I){let U=D==="title"?_.title.localeCompare($.title):_.created_at.localeCompare($.created_at),E=U===0?_.id.localeCompare($.id):U;return I==="desc"?-E:E}function Mz(_,$,D,I,U){let E=_??$;if(!Number.isFinite(E)||!Number.isInteger(E)||E<I||E>U)throw Error(`${D} must be an integer between ${I} and ${U}.`);return E}function E7(_,$){let D=$.archive??"active",I=$.sort??"created",U=$.direction??"asc",E=Mz($.limit,50,"limit",1,200),j=Mz($.offset,0,"offset",0,1e4),N=_.filter((A)=>D==="all"||(D==="archived"?A.archived===!0:A.archived!==!0));if($.search)N=N.filter((A)=>D7(A,$.search));if($.tags?.length)N=N.filter((A)=>U7(A,$.tags));return N.sort((A,O)=>I7(A,O,I,U)),{total:N.length,items:N.slice(j,j+E)}}class bz{storePath;kind="local";supportsVersions=!1;constructor(_){this.storePath=_}async listVersions(){throw new Og(this.storePath)}async getVersion(){throw new Og(this.storePath)}get location(){return this.storePath}get exists(){return $7(this.storePath)}async list(_={}){let $=U4(this.storePath);return{...E7($.items,_),exists:$.exists}}async listAll(){let _=U4(this.storePath);return{items:_.items,total:_.items.length,exists:_.exists}}async get(_){return U4(this.storePath).items.find((D)=>Ag(D,_))??null}async create(_){return y$(this.storePath,()=>{let $=uD(this.storePath),D=new Date().toISOString(),I=_.id??pP(),U={id:I,short_id:eP(I),title:_.title,content:_.content,url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:!1,created_at:D,updated_at:D,version:1};return $.items.push(U),_6(this.storePath,$),U},{createParent:!0})}async update(_,$,D={}){return y$(this.storePath,()=>{let I=uD(this.storePath),U=I.items.findIndex((N)=>Ag(N,_));if(U===-1)return null;let E=I.items[U],j=E.version??1;if(D.expectedVersion!==void 0&&D.expectedVersion!==j)throw new z0(D.expectedVersion,j);if($.title!==void 0)E.title=$.title;if($.content!==void 0)E.content=$.content;if($.url!==void 0)E.url=$.url;if($.tags!==void 0)E.tags=$.tags;if($.metadata!==void 0)E.metadata=$.metadata;if($.archived!==void 0)E.archived=$.archived;return E.updated_at=new Date().toISOString(),E.version=j+1,I.items[U]=E,_6(this.storePath,I),E},{createParent:!0})}async delete(_){return y$(this.storePath,()=>{let $=uD(this.storePath),D=$.items.length;$.items=$.items.filter((U)=>!Ag(U,_));let I=D!==$.items.length;if(I)_6(this.storePath,$);return I},{createParent:!0})}async deleteMany(_){if(_.length===0)return 0;let $=new Set(_);return y$(this.storePath,()=>{let D=uD(this.storePath),I=D.items.length;D.items=D.items.filter((E)=>!$.has(E.id)&&!(E.short_id!=null&&$.has(E.short_id)));let U=I-D.items.length;if(U>0)_6(this.storePath,D);return U},{createParent:!0})}}class Zz{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 list(_={}){let $=await this.cloud.list({search:_.search,tags:_.tags,archive:_.archive,sort:_.sort,direction:_.direction,limit:_.limit,offset:_.offset});return{items:$.items,total:$.total,exists:!0}}async listAll(){let _=await i1(this.cloud);return{items:_,total:_.length,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(_,$,D={}){return this.cloud.update(_,$,{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 t1(_){let $=_.storePathOverridden?null:dD(_.env??process.env);if($)return new Zz($);return new bz(_.storePath)}function Hz(_){let $=_??"";if($==="")return[];return $.replace(/\n$/,"").split(` -`)}var Lg=5000;function j7(_,$){let D=Hz(_),I=Hz($);if(D.length>Lg||I.length>Lg)throw Error(`Refusing to line-diff ${Math.max(D.length,I.length)} lines (limit ${Lg}). Fetch the two versions and diff them with a dedicated tool.`);let U=Array.from({length:D.length+1},()=>Array(I.length+1).fill(0));for(let A=D.length-1;A>=0;A-=1)for(let O=I.length-1;O>=0;O-=1)U[A][O]=D[A]===I[O]?U[A+1][O+1]+1:Math.max(U[A+1][O],U[A][O+1]);let E=[],j=0,N=0;while(j<D.length&&N<I.length)if(D[j]===I[N])E.push({op:"context",from_line:j+1,to_line:N+1,text:D[j]}),j+=1,N+=1;else if(U[j+1][N]>=U[j][N+1])E.push({op:"remove",from_line:j+1,to_line:null,text:D[j]}),j+=1;else E.push({op:"add",from_line:null,to_line:N+1,text:I[N]}),N+=1;while(j<D.length)E.push({op:"remove",from_line:j+1,to_line:null,text:D[j]}),j+=1;while(N<I.length)E.push({op:"add",from_line:null,to_line:N+1,text:I[N]}),N+=1;return E}function N7(_,$){return JSON.stringify(_??null)===JSON.stringify($??null)}function kz(_,$){let D=[],I=(N)=>{if(!N7(_[N],$[N]))D.push({field:N,from:_[N]??null,to:$[N]??null})};I("title"),I("url"),I("tags"),I("metadata"),I("archived");let U=j7(_.content,$.content),E=U.filter((N)=>N.op==="add").length,j=U.filter((N)=>N.op==="remove").length;return{identical:D.length===0&&E===0&&j===0,fields:D,content:U,added:E,removed:j}}function qz(_,$,D){let I=[`--- ${$}`,`+++ ${D}`];if(_.identical)return I.push("(no changes)"),I.join(` +`)}function y$(_,$,D={}){let I=fD(),U=nY(_);if(cN.has(U))return $();if(D.createParent)u$(U);pY(U,I),cN.add(U);try{return $()}finally{cN.delete(U),oP(U,I)}}function pP(){return`k_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function eP(_){return _.replace(/^k_/,"").slice(0,12)}import{existsSync as $7}from"fs";import{isIP as aP}from"net";import{readFileSync as sY,statSync as _Q}from"fs";import{join as sP}from"path";function Ez(_){return _.toUpperCase().replace(/-/g,"_")}function eY(_){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 jz(_){let $=Ez(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function aY(_){return`HASNA_${Ez(_)}_API_KEY_OVERRIDE`}var eN="HASNA_PROFILE";class yD extends Error{appName;attempted;constructor(_,$,D){super($);this.name="CredentialResolutionError",this.appName=_,this.attempted=D}}var $Q=".hasna",DQ="cloud",UQ=".config",IQ="hasna",EQ=65536,jQ=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/,NQ=/^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$/,gQ=/[^\t\x20-\x7e]/;function AQ(_){let $=_.HOME?.trim();return $?$:null}function Nz(_,$){return gz(_,$,null)}function gz(_,$,D){let I=AQ($);if(!I||!jQ.test(_))return[];let U=D?`${_}.${D}`:_,E=D?`${_}-${D}`:_;return[sP(I,$Q,DQ,`${U}.env`),sP(I,UQ,IQ,`${E}-cloud.env`)]}function OQ(_){let $=new Map;for(let D of _.split(/\r?\n/)){let I=D.trim();if(I.length===0||I.startsWith("#"))continue;let U=I.startsWith("export ")?I.slice(7).trim():I,E=U.indexOf("=");if(E<=0)continue;let j=U.slice(0,E).trim();if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(j))continue;let N=U.slice(E+1).trim(),A=N[0];if(A==='"'||A==="'"){if(N.length<2||!N.endsWith(A))continue;N=N.slice(1,-1)}if(N.length===0)continue;$.set(j,N)}return $}function _z(_,$){let D;try{let U=_Q(_);if(!U.isFile()||U.size>EQ)return null;D=sY(_,"utf8")}catch{return null}let I=OQ(D);for(let U of $){let E=I.get(U)?.trim();if(E)return E}return null}function O0(_,$,D){if(!gQ.test(D))return;throw new yD(_,`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 SQ=Symbol.for("nodejs.util.inspect.custom");function S0(_){let{apiKey:$,...D}=_,I={...D};return Object.defineProperty(I,"apiKey",{value:$,enumerable:!1,writable:!1,configurable:!1}),Object.defineProperty(I,SQ,{value:()=>({...D,apiKey:"[redacted]"}),enumerable:!1,writable:!1,configurable:!1}),I}function LQ(_,$){return O0(_,"explicit apiKey option",$),S0({apiKey:$,tier:"argument",source:"explicit apiKey option",deliberate:!0,deprecated:!1,diskCandidates:[],warning:null})}function $z(_,$){for(let D of $){let I=_[D]?.trim();if(I)return{key:D,value:I}}return null}var Dz=Symbol.for("hasna:contracts:credentialDeprecationNotices");function JQ(){let _=globalThis,$=_[Dz];if($ instanceof Set)return $;let D=new Set;return _[Dz]=D,D}function WQ(_){if(typeof process<"u"&&process.stderr)process.stderr.write(`${_} +`)}function _g(_,$,D={}){let{apiKeyKeys:I}=jz(_),U=Nz(_,$),E=D.apiKey?.trim();if(E)return O0(_,"the explicit apiKey argument",E),S0({apiKey:E,tier:"argument",source:"explicit apiKey argument",deliberate:!0,deprecated:!1,diskCandidates:U,warning:null});let j=aY(_),N=$[j];if(N!==void 0){let L=N.trim();if(!L)throw new yD(_,`${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 O0(_,j,L),S0({apiKey:L,tier:"override",source:j,deliberate:!0,deprecated:!1,diskCandidates:U,warning:null})}let A=D.profile?.trim()||$[eN]?.trim();if(A){let L=D.profile?.trim()?"explicit profile argument":eN;if(!NQ.test(A))throw new yD(_,`Profile name from ${L} is not usable in a path. Use letters, digits, dot, dash, or underscore.`,[L]);let P=gz(_,$,A);for(let z of P){let G=_z(z,I);if(G)return O0(_,z,G),S0({apiKey:G,tier:"profile",source:z,deliberate:!0,deprecated:!1,diskCandidates:P,warning:null})}throw new yD(_,`Profile '${A}' (from ${L}) has no ${I[0]} for '${_}'. Looked in: ${P.join(", ")||"<no HOME in this environment>"}. `+"A profile names WHICH identity to use, so it is never resolved around \u2014 "+`create the profile's credential file or unset ${eN}.`,P)}let O=U.map((L)=>({path:L,value:_z(L,I)})).filter((L)=>L.value!==null);if(O.length>0){let L=O[0];O0(_,L.path,L.value);let P=[...O.slice(1).filter((G)=>G.value!==L.value).map((G)=>G.path),...(()=>{let G=$z($,I);return G&&G.value!==L.value?[G.key]:[]})()],z=P.length>0?`Credential sources disagree for '${_}': ${L.path} and ${P.join(", ")} hold different keys. ${L.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 S0({apiKey:L.value,tier:"disk",source:L.path,deliberate:!1,deprecated:!1,diskCandidates:U,warning:z})}let S=$z($,I);if(S){O0(_,S.key,S.value);let L=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.",P=`[${_}] DEPRECATED: the API key came from ${S.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. ${L}`,z=D.onDeprecation??WQ,G=JQ();if(!G.has(_))G.add(_),z(P);return S0({apiKey:S.value,tier:"legacy-env",source:S.key,deliberate:!1,deprecated:!0,diskCandidates:U,warning:P})}return null}var V6="HASNA_FLEET_API_DOMAIN",L0="your-deployment.example",Dg=/[\u0000-\u001f\u007f]/,Az=/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;function y1(_){if(_.length===0||_.length>253||Dg.test(_)||/[^\x00-\x7f]/.test(_))return!1;return _.split(".").every(($)=>$.length<=63&&!$.startsWith("xn--")&&Az.test($))}function PQ(_){let $=_[V6];if($===void 0)return{domain:L0,source:"default",misconfigured:!0,warning:`${V6} is not set; using the non-resolving ${L0} fallback.`};let D=$.trim().toLowerCase();if(Dg.test($)||!y1(D))return{domain:L0,source:V6,misconfigured:!0,warning:`${V6} is blank or invalid; using the non-resolving ${L0} fallback.`};return{domain:D,source:V6,misconfigured:!1,warning:null}}function Oz(_){if(_.length>63||!Az.test(_))throw Error("App name must be one lowercase DNS label.");return _}function zQ(_,$){let D=`${Oz(_)}.${$}`;if(!y1(D))throw Error("Composed cloud hostname must be a valid DNS domain");return D}function XQ(_,$){let D=Oz(_),I=PQ($),U=`${D}.${I.domain}`;if(y1(U))return{baseUrl:`https://${U}`,source:I.source,misconfigured:I.misconfigured,warning:I.warning};return{baseUrl:`https://${zQ(D,L0)}`,source:I.source,misconfigured:!0,warning:`${V6} cannot form a valid composed cloud hostname for app '${D}'; using the non-resolving ${L0} fallback.`}}function aN(_,$,D={}){for(let I of $){let U=_[I],E=U?.trim();if(E)return{key:I,value:D.preserveRaw?U:E}}return null}function GQ(_){let $=/^[a-z][a-z0-9+.-]*:\/\//i.exec(_);if(!$)throw Error("API URL must be absolute.");let D=_.slice($[0].length),I=D.search(/[/?#]/),U=I===-1?D:D.slice(0,I);if(!U)throw Error("API URL must include a hostname.");return U}function Uz(_){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 RQ(_){let $;if(_.startsWith("[")){let D=_.indexOf("]");if(D===-1)throw Error("API URL authority must contain a canonical hostname.");$=_.slice(0,D+1);let I=_.slice(D+1);if(I){if(!I.startsWith(":"))throw Error("API URL authority must contain a canonical hostname and port.");Uz(I.slice(1))}if(aP($.slice(1,-1))!==6)throw Error("API URL authority must contain a canonical IPv6 literal.")}else{let D=_.indexOf(":"),I=_.lastIndexOf(":");if(D!==I)throw Error("IPv6 API URL authorities must use brackets.");if(I!==-1){let N=_.slice(I+1);Uz(N),$=_.slice(0,I)}else $=_;let U=aP($),j=$.split(".").every((N)=>/^(?:0x[0-9a-f]+|[0-9]+)$/i.test(N));if(U!==4&&j||U!==4&&!y1($.toLowerCase()))throw Error("API URL authority must contain a canonical ASCII hostname.")}return $.toLowerCase()}function YQ(_){return/^(?:localhost|127\.0\.0\.1|\[::1\])(?::[0-9]+)?$/i.test(_)}function Sz(_){if(Dg.test(_))throw Error("API URL must not contain ASCII control characters.");let $=_.trim(),D=GQ($);if(D.includes("@")||D.includes("\\")||D.includes("%")||/[^\x00-\x7f]/.test(D))throw Error("API URL authority must be canonical ASCII without credentials.");let I=RQ(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()!==I)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:"&&!YQ(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 E=U.pathname.replace(/\/+$/,"");if(E.endsWith("/v1"))E=E.slice(0,-3);return U.pathname=`${E}/v1`,U.toString().replace(/\/+$/,"")}function QQ(_,$=process.env,D={}){let I=jz(_),U=aN($,I.modeKeys),E=aN($,I.apiUrlKeys,{preserveRaw:!0}),j=aN($,I.apiKeyKeys),N="sqlite",A="default",O=[],S;if(U)N=eY(U.value).mode,A=U.key;else if(E){if(S=_g(_,$,D.credentials),S)N="postgres",A=`${E.key}+${S.source}`}if(N==="sqlite")return{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:Boolean(j),apiKeySource:j?j.key:null,apiKeyTier:null,misconfigured:!1,warning:O.length>0?O.join(" "):null};if(S===void 0)S=_g(_,$,D.credentials);if(!S){let G=Lz(_,$);return O.push(`${A}=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 ${G}, then for ${I.apiKeyKeys[0]} in the environment.`),{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!1,apiKeySource:null,apiKeyTier:null,misconfigured:!0,warning:O.join(" ")}}if(S.warning)O.push(S.warning);let L=null,P=E?.key??($[V6]===void 0?"default":V6),z;try{if(!E)L=XQ(_,$),P=L.source;let G=E?.value??L.baseUrl;z=Sz(G)}catch(G){let J=G instanceof Error?G.message:String(G);return O.push(`Invalid API URL from ${P}: ${J}. Using local store.`),{transport:"sqlite",mode:N,modeSource:A,baseUrl:null,apiUrlSource:null,apiKeyPresent:!0,apiKeySource:S.source,apiKeyTier:S.tier,misconfigured:!0,warning:O.join(" ")}}if(L?.warning)O.push(L.warning);return{transport:"http",mode:N,modeSource:A,baseUrl:z,apiUrlSource:P,apiKeyPresent:!0,apiKeySource:S.source,apiKeyTier:S.tier,misconfigured:L?.misconfigured??!1,warning:O.length>0?O.join(" "):null}}function Lz(_,$){let D=Nz(_,$);return D.length>0?D.join(" or "):"<no HOME set in this environment, so no credential file was consulted>"}class J0 extends Error{status;method;path;body;credentialSource;credentialTier;constructor(_,$,D,I,U){let E=U?`. ${U.guidance}`:"";super(`Hasna cloud request failed: ${_} ${$} -> ${D}${E}`);this.name="HasnaHttpError",this.status=D,this.method=_,this.path=$,this.body=I,this.credentialSource=U?.source??null,this.credentialTier=U?.tier??null}}function KQ(_,$){if(typeof $==="function")return $();return LQ(_,$)}function TQ(_){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],I=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. ${I}`}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 FQ=[408,425,429,500,502,503,504],VQ=new Set(["GET","HEAD","PUT","DELETE","OPTIONS"]),BQ=new Set(["host",":authority","forwarded","x-forwarded-host","x-original-host"]);function Iz(_,$){if(!_)return;let D=Object.keys(_).find((I)=>BQ.has(I.trim().toLowerCase()));if(D)throw Error(`Authenticated ${$} headers must not set authority header '${D}'.`)}function MQ(_,$){if(!$)return _;let D=$ instanceof URLSearchParams?$:new URLSearchParams;if(!($ instanceof URLSearchParams))for(let[U,E]of Object.entries($)){if(E===null||E===void 0)continue;if(Array.isArray(E))for(let j of E)D.append(U,String(j));else D.append(U,String(E))}let I=D.toString();if(!I)return _;return`${_}${_.includes("?")?"&":"?"}${I}`}var bQ=(_)=>new Promise(($)=>setTimeout($,_));function ZQ(_){let $=_.fetchImpl??((O,S)=>fetch(O,S)),D=Sz(_.baseUrl),I=_.timeoutMs??30000,U=_.sleepImpl??bQ,E=_.retry;function j(O){let S=O!==void 0?O:E;if(S===!1)return null;let L=S??{};return{retries:L.retries??2,baseDelayMs:L.baseDelayMs??200,maxDelayMs:L.maxDelayMs??2000,retryStatuses:L.retryStatuses??[...FQ]}}async function N(O,S,L,P,z,G){Iz(_.headers,"transport"),Iz(z.headers,"request");let J={"x-api-key":G.apiKey,Authorization:`Bearer ${G.apiKey}`,Accept:"application/json",..._.headers??{},...z.headers??{}};if(z.idempotencyKey)J["Idempotency-Key"]=z.idempotencyKey;let W={method:O,headers:J,redirect:"manual"};if(P!==void 0)J["Content-Type"]="application/json",W.body=JSON.stringify(P);let X=new AbortController,R=()=>X.abort();if(z.signal)if(z.signal.aborted)X.abort();else z.signal.addEventListener("abort",R,{once:!0});let T=setTimeout(()=>X.abort(),z.timeoutMs??I);W.signal=X.signal;let Y;try{Y=await $(L,W)}catch(q){let Z=q instanceof Error?q:Error(String(q));if(z.signal?.aborted)return{ok:!1,retryable:!1,error:Z};return{ok:!1,retryable:!0,error:Z}}finally{if(clearTimeout(T),z.signal)z.signal.removeEventListener("abort",R)}let Q=await Y.text(),F=void 0;if(Q.length>0)try{F=JSON.parse(Q)}catch{F=Q}if(!Y.ok){if(Y.status>=300&&Y.status<400)return{ok:!1,retryable:!1,error:new J0(O,S,Y.status,F)};if(Y.status===401||Y.status===403)return{ok:!1,retryable:!1,error:new J0(O,S,Y.status,F,{source:G.source,tier:G.tier,guidance:TQ(G)})};let q=j(z.retry);return{ok:!1,retryable:q?q.retryStatuses.includes(Y.status):!1,error:new J0(O,S,Y.status,F)}}return{ok:!0,value:F}}async function A(O,S,L,P={}){let z=O.toUpperCase(),G=MQ(S.startsWith("/")?S:`/${S}`,P.query),J=`${D}${G}`,W=j(P.retry),X=VQ.has(z)||Boolean(P.idempotencyKey),R=W&&X?W.retries+1:1,T=KQ(_.name,_.apiKey),Y=null;for(let Q=1;Q<=R;Q++){let F=await N(z,G,J,L,P,T);if(F.ok)return F.value;if(Y=F,!(W!==null&&X&&F.retryable&&Q<R))break;let Z=Math.min(W.maxDelayMs,W.baseDelayMs*2**(Q-1)),f=Math.floor(Math.random()*(Z/2+1));await U(Z+f)}throw Y.error}return{baseUrl:D,request:A,get:(O,S)=>A("GET",O,void 0,S),post:(O,S,L)=>A("POST",O,S,L),put:(O,S,L)=>A("PUT",O,S,L),patch:(O,S,L)=>A("PATCH",O,S,L),del:(O,S,L)=>A("DELETE",O,S,L)}}function HQ(_,$=process.env,D){let I=D?.credentials,U=QQ(_,$,{...I?{credentials:I}:{}});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 E=()=>{let j=_g(_,$,I);if(!j)throw Error(`Client for '${_}' resolved to the http transport but no API key is available any more. Looked at ${Lz(_,$)}, 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:E,...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 $g(_){let $=_.replace(/^\/+|\/+$/g,"");if(!$)throw Error("resource must be a non-empty path segment");return`/${$}`}function sN(_,$){if($===void 0||$===null||`${$}`.length===0)throw Error("id must be a non-empty string");return`${$g(_)}/${encodeURIComponent(String($))}`}function kQ(){let _=globalThis;if(_.crypto?.randomUUID)return _.crypto.randomUUID();return`idmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function qQ(_){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 CQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["total","count","totalCount","total_count"])if(typeof $[D]==="number")return $[D]}return null}function vQ(_){if(_&&typeof _==="object"){let $=_;for(let D of["cursor","nextCursor","next_cursor","next"])if(typeof $[D]==="string")return $[D]}return null}function wQ(_,$){return{name:_,baseUrl:$.baseUrl,transport:$,async list(D,I={}){let U=await $.get($g(D),I);return{items:qQ(U),total:CQ(U),cursor:vQ(U),raw:U}},async get(D,I,U={}){try{return await $.get(sN(D,I),U)}catch(E){if(E instanceof J0&&E.status===404)return null;throw E}},async create(D,I,U={}){let{idempotencyKey:E,...j}=U;return $.post($g(D),I,{...j,idempotencyKey:E??kQ()})},async update(D,I,U,E={}){let{method:j="PATCH",idempotencyKey:N,...A}=E;return(j==="PUT"?$.put:$.patch)(sN(D,I),U,{...A,...N?{idempotencyKey:N}:{}})},async delete(D,I,U={}){try{await $.del(sN(D,I),void 0,U)}catch(E){if(E instanceof J0&&E.status===404)return;throw E}}}}function Ug(_,$=process.env,D){let I=HQ(_,$,D);if(I.transport==="http")return{transport:"http",client:wQ(_,I.client)};return{transport:"sqlite",client:null}}function Jz(_){return _.toUpperCase().replace(/-/g,"_")}function Wz(_){let $=Jz(_);return{modeKeys:[`HASNA_${$}_STORAGE_MODE`,`HASNA_${$}_MODE`,`${$}_STORAGE_MODE`,`${$}_MODE`],apiUrlKeys:[`HASNA_${$}_API_URL`,`${$}_API_URL`],apiKeyKeys:[`HASNA_${$}_API_KEY`,`${$}_API_KEY`]}}function Pz(_){return`HASNA_${Jz(_)}_API_KEY_OVERRIDE`}var zz="HASNA_PROFILE";function hD(_){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 h1(_){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 tf from"pg";class c1 extends Error{scheme;port;constructor(_,$){super(_);this.name="KnowledgeNetworkGuardError",this.scheme=$.scheme,this.port=$.port}}function W0(_=process.env){return(_.NODE_ENV??"").trim().toLowerCase()==="test"}function Xz(_){let $=_.split(".");if($.length!==4)return!1;if(!$.every((D)=>/^\d{1,3}$/.test(D)&&Number(D)<=255))return!1;return $[0]==="127"}function yQ(_){let $=_.trim().toLowerCase();if($.length===0)return!1;if($==="localhost"||$.endsWith(".localhost"))return!0;if(Xz($))return!0;if(!$.startsWith("[")||!$.endsWith("]"))return!1;let D=$.slice(1,-1);if(D==="::1"||/^(0:){7}1$/.test(D))return!0;let I=D.split(":").pop()??"";if(/^(::ffff:|::)/.test(D)&&Xz(I))return!0;return/^::(ffff:)?7f[0-9a-f]{2}:[0-9a-f]{1,4}$/.test(D)}function Yz(_){if(typeof _==="string")return _;if(_ instanceof URL)return _.href;return _.url}function Gz(_,$=process.env){if(!W0($))return;let D=Yz(_),I;try{I=new URL(D)}catch{throw new c1("knowledge: refused an outbound request with an unparseable target while NODE_ENV=test. Under test, only loopback requests are permitted.",{scheme:"unknown",port:""})}if(yQ(I.hostname))return;throw new c1(`knowledge: refused a non-loopback ${I.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:I.protocol.replace(":",""),port:I.port})}var hQ=new Set([301,302,303,307,308]),Rz=5;function cQ(_,$){if($?.method)return $.method.toUpperCase();if(typeof _!=="string"&&!(_ instanceof URL))return _.method.toUpperCase();return"GET"}async function P0(_,$){if(Gz(_),!W0()||$?.redirect!==void 0)return fetch(_,$);let D=Yz(_),I=cQ(_,$),U=$?.body,E=await fetch(_,{...$??{},redirect:"manual"});for(let j=0;hQ.has(E.status);j++){let N=E.headers.get("location");if(!N)return E;let A=new URL(N,D).href;if(Gz(A),j>=Rz){let S=new URL(A);throw new c1(`knowledge: refused to follow more than ${Rz} 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:S.protocol.replace(":",""),port:S.port})}if(E.status===303||(E.status===301||E.status===302)&&I!=="GET"&&I!=="HEAD")I="GET",U=void 0;let O={...$??{},method:I,redirect:"manual"};if(U===void 0)delete O.body;else O.body=U;E=await fetch(A,O),D=A}return E}var cD="knowledge",Ig=Wz(cD),$6=Ig.modeKeys,d1=Ig.apiUrlKeys,m1=Ig.apiKeyKeys;function n1(_,$){return $.filter((D)=>(_[D]??"").trim().length>0)}function nD(_=process.env){let $=[...n1(_,d1),...n1(_,m1)],D=$6[0];for(let I of $6){let U=_[I]?.trim();if(!U)continue;let E;try{E=h1(U)}catch(N){let A=N instanceof Error?N.message:String(N);throw Error(`knowledge: ${I}=${U} is not a valid mode. ${A} Unset ${I} to use the default sqlite backend, or set ${I}=sqlite or ${I}=postgres.`)}let j=[];if(I!==D)j.push(`Using alias env ${I}; the canonical key is ${D}.`);if(E.mode==="sqlite"&&$.length>0)j.push(`${I}=sqlite pins the on-box store; ${$.join(", ")} are set but ignored.`);return{mode:E.mode,source:{kind:"env",name:I,value:U},pointer_env_present:$,pointer_ignored:E.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 nQ=["postgres"],dQ=["sqlite"],Qz=new Map;function Kz(_,$,D){let I=$===hD;if(I){let U=Qz.get(_);if(U!==void 0)return U}for(let U of _)try{if($(U),I)Qz.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 mQ(_=hD){return Kz(nQ,_,"SERVER_MODE_CANDIDATES")}function lQ(_=hD){return Kz(dQ,_,"LOCAL_MODE_CANDIDATES")}function iQ(_,$=hD){return _==="postgres"?mQ($):lQ($)}function Eg(_,$){return{..._,[$6[0]]:iQ($)}}class Tz extends Error{code="knowledge_mode_unset_with_api_url";constructor(_){let $=$6[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 Fz(_=process.env,$={}){let D=nD(_);if($.storePathOverridden)return D;if(D.source.kind!=="default")return D;let I=n1(_,d1);if(I.length===0)return D;throw new Tz(I)}function Vz(_=process.env){let $=nD(_);return{...$,store_transport:$.mode==="postgres"?"api":"local",api_key_present:n1(_,m1).length>0,network_guard_active:W0(_)}}function jg(_){return Boolean(_&&typeof _==="object"&&_.query_capability==="hasna.knowledge.bounded-query.v1")}function Bz(_){return{fetchImpl:P0,...W0(_)?{retry:!1}:{}}}var D6="notes";class z0 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"}}class gg extends Error{operation;fields;code="bounded_query_capability_required";constructor(_,$){super(`bounded_query_capability_required: the Knowledge server did not prove support for ${_} field(s): ${$.join(", ")}. Refusing to accept a possibly unfiltered response; update the server and retry.`);this.operation=_;this.fields=$;this.name="KnowledgeBoundedQueryCapabilityError"}}function tQ(_){let $={};if(_.search)$.filter=_.search,$.search=_.search;if(_.tags?.length)$.tags=_.tags;if(_.archive){if($.archive=_.archive,_.archive==="all")$.includeArchived=!0}if(_.sort)$.sort=_.sort;if(_.direction)$.direction=_.direction;if(_.limit!==void 0)$.limit=_.limit;if(_.offset!==void 0)$.offset=_.offset;return $}function oQ(_){let $=[];if(_.tags?.length)$.push("tags");if(_.sort!==void 0)$.push("sort");if(_.direction!==void 0)$.push("direction");if(_.archive==="archived")$.push("archive=archived");return $}function l1(_,$,D,I,U){let E=_??$;if(!Number.isFinite(E)||!Number.isInteger(E)||E<I||E>U)throw Error(`${D} must be an integer between ${I} and ${U}.`);return E}function pQ(_){return{baseUrl:_.baseUrl,async list($={}){let D=l1($.limit,200,"limit",1,200),I=l1($.offset,0,"offset",0,1e4),U=tQ({...$,limit:D,offset:I}),E=await _.list(D6,{query:U});if(!Number.isInteger(E.total)||Number(E.total)<0)throw Error("knowledge cloud list response is missing a valid producer total.");let j=oQ($);if(j.length>0&&!jg(E.raw))throw new gg("list",j);return{items:E.items,total:Number(E.total)}},async search($){let D=l1($.limit,20,"limit",1,200),I=l1($.offset,0,"offset",0,1e4),U=await _.transport.get(`/${D6}/search`,{query:{q:$.query,archive:$.archive??"active",limit:D,offset:I}});if(!Number.isInteger(U.total)||U.total<0||!Array.isArray(U.items)||U.items.some((E)=>!E||typeof E!=="object"||!E.item||typeof E.rank!=="number"||!Number.isFinite(E.rank)))throw Error("knowledge cloud search response is missing producer rank or total evidence.");if(!jg(U))throw new gg("search",["q","rank","total"]);return{items:U.items,total:U.total}},async get($){return _.get(D6,$)},async create($){return _.create(D6,{...$.id?{id:$.id}:{},title:$.title,content:$.content,url:$.url??null,tags:$.tags??[],...$.metadata?{metadata:$.metadata}:{}})},async update($,D,I={}){try{return await _.update(D6,$,D,{...I.expectedVersion!==void 0?{headers:{"if-match":String(I.expectedVersion)}}:{}})}catch(U){if(Ng(U))return null;let E=eQ(U);if(E)throw E;throw U}},async delete($){let D=await _.get(D6,$);if(!D)return!1;return await _.delete(D6,D.id),!0},async listVersions($,D={}){try{return await _.transport.get(`/${D6}/${encodeURIComponent($)}/versions`,{query:{limit:D.limit,offset:D.offset}})}catch(I){if(Ng(I))return null;throw I}},async getVersion($,D){try{return await _.transport.get(`/${D6}/${encodeURIComponent($)}/versions/${D}`)}catch(I){if(Ng(I))return null;throw I}}}}function eQ(_){if(!_||typeof _!=="object")return null;if(_.status!==409)return null;let $=_.body,I=(typeof $==="string"?aQ($):$)??{};if(I.error!=="version_conflict")return null;return new z0(Number(I.expected??0),Number(I.current??0))}function aQ(_){try{return JSON.parse(_)}catch{return null}}function Ng(_){return Boolean(_&&typeof _==="object"&&_.status===404)}function dD(_=process.env){let $=_7(_);return $?pQ($):null}function sQ(_){let $={..._};return delete $.HOME,delete $.USERPROFILE,delete $[zz],delete $[Pz(cD)],$}function _7(_,$={}){if(nD(_).mode!=="postgres")return null;let D=$.guarded?sQ(_):_,I=Ug(cD,Eg(D,"postgres"),Bz(D));if(I.transport!=="http")return null;return I.client}function h$(_=process.env){if(nD(_).mode!=="postgres")return!1;return Ug(cD,Eg(_,"postgres"),Bz(_)).transport==="http"}async function i1(_){let D=[];for(let I=0;;I+=200){let{items:U}=await _.list({archive:"all",limit:200,offset:I});if(D.push(...U),U.length<200)break;if(I>1e5)break}return D}class Og 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 Ag(_,$){return _.id===$||_.short_id===$}function D7(_,$){let D=$.trim().toLowerCase();if(!D)return!0;return _.id.toLowerCase().includes(D)||_.title.toLowerCase().includes(D)||_.content.toLowerCase().includes(D)}function U7(_,$){if($.length===0)return!0;let D=new Set((_.tags??[]).map((I)=>I.toLowerCase()));return $.every((I)=>{let U=I.trim().toLowerCase(),E=I.split(",").map((j)=>j.trim().toLowerCase()).filter(Boolean);return U.length>0&&D.has(U)||E.length>0&&E.every((j)=>D.has(j))})}function I7(_,$,D,I){let U=D==="title"?_.title.localeCompare($.title):_.created_at.localeCompare($.created_at),E=U===0?_.id.localeCompare($.id):U;return I==="desc"?-E:E}function Mz(_,$,D,I,U){let E=_??$;if(!Number.isFinite(E)||!Number.isInteger(E)||E<I||E>U)throw Error(`${D} must be an integer between ${I} and ${U}.`);return E}function E7(_,$){let D=$.archive??"active",I=$.sort??"created",U=$.direction??"asc",E=Mz($.limit,50,"limit",1,200),j=Mz($.offset,0,"offset",0,1e4),N=_.filter((A)=>D==="all"||(D==="archived"?A.archived===!0:A.archived!==!0));if($.search)N=N.filter((A)=>D7(A,$.search));if($.tags?.length)N=N.filter((A)=>U7(A,$.tags));return N.sort((A,O)=>I7(A,O,I,U)),{total:N.length,items:N.slice(j,j+E)}}class bz{storePath;kind="local";supportsVersions=!1;constructor(_){this.storePath=_}async listVersions(){throw new Og(this.storePath)}async getVersion(){throw new Og(this.storePath)}get location(){return this.storePath}get exists(){return $7(this.storePath)}async list(_={}){let $=U4(this.storePath);return{...E7($.items,_),exists:$.exists}}async listAll(){let _=U4(this.storePath);return{items:_.items,total:_.items.length,exists:_.exists}}async get(_){return U4(this.storePath).items.find((D)=>Ag(D,_))??null}async create(_){return y$(this.storePath,()=>{let $=uD(this.storePath),D=new Date().toISOString(),I=_.id??pP(),U={id:I,short_id:eP(I),title:_.title,content:_.content,url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:!1,created_at:D,updated_at:D,version:1};return $.items.push(U),_6(this.storePath,$),U},{createParent:!0})}async update(_,$,D={}){return y$(this.storePath,()=>{let I=uD(this.storePath),U=I.items.findIndex((N)=>Ag(N,_));if(U===-1)return null;let E=I.items[U],j=E.version??1;if(D.expectedVersion!==void 0&&D.expectedVersion!==j)throw new z0(D.expectedVersion,j);if($.title!==void 0)E.title=$.title;if($.content!==void 0)E.content=$.content;if($.url!==void 0)E.url=$.url;if($.tags!==void 0)E.tags=$.tags;if($.metadata!==void 0)E.metadata=$.metadata;if($.archived!==void 0)E.archived=$.archived;return E.updated_at=new Date().toISOString(),E.version=j+1,I.items[U]=E,_6(this.storePath,I),E},{createParent:!0})}async delete(_){return y$(this.storePath,()=>{let $=uD(this.storePath),D=$.items.length;$.items=$.items.filter((U)=>!Ag(U,_));let I=D!==$.items.length;if(I)_6(this.storePath,$);return I},{createParent:!0})}async deleteMany(_){if(_.length===0)return 0;let $=new Set(_);return y$(this.storePath,()=>{let D=uD(this.storePath),I=D.items.length;D.items=D.items.filter((E)=>!$.has(E.id)&&!(E.short_id!=null&&$.has(E.short_id)));let U=I-D.items.length;if(U>0)_6(this.storePath,D);return U},{createParent:!0})}}class Zz{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 list(_={}){let $=await this.cloud.list({search:_.search,tags:_.tags,archive:_.archive,sort:_.sort,direction:_.direction,limit:_.limit,offset:_.offset});return{items:$.items,total:$.total,exists:!0}}async listAll(){let _=await i1(this.cloud);return{items:_,total:_.length,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(_,$,D={}){return this.cloud.update(_,$,{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 t1(_){let $=_.storePathOverridden?null:dD(_.env??process.env);if($)return new Zz($);return new bz(_.storePath)}function Hz(_){let $=_??"";if($==="")return[];return $.replace(/\n$/,"").split(` +`)}var Sg=5000;function j7(_,$){let D=Hz(_),I=Hz($);if(D.length>Sg||I.length>Sg)throw Error(`Refusing to line-diff ${Math.max(D.length,I.length)} lines (limit ${Sg}). Fetch the two versions and diff them with a dedicated tool.`);let U=Array.from({length:D.length+1},()=>Array(I.length+1).fill(0));for(let A=D.length-1;A>=0;A-=1)for(let O=I.length-1;O>=0;O-=1)U[A][O]=D[A]===I[O]?U[A+1][O+1]+1:Math.max(U[A+1][O],U[A][O+1]);let E=[],j=0,N=0;while(j<D.length&&N<I.length)if(D[j]===I[N])E.push({op:"context",from_line:j+1,to_line:N+1,text:D[j]}),j+=1,N+=1;else if(U[j+1][N]>=U[j][N+1])E.push({op:"remove",from_line:j+1,to_line:null,text:D[j]}),j+=1;else E.push({op:"add",from_line:null,to_line:N+1,text:I[N]}),N+=1;while(j<D.length)E.push({op:"remove",from_line:j+1,to_line:null,text:D[j]}),j+=1;while(N<I.length)E.push({op:"add",from_line:null,to_line:N+1,text:I[N]}),N+=1;return E}function N7(_,$){return JSON.stringify(_??null)===JSON.stringify($??null)}function kz(_,$){let D=[],I=(N)=>{if(!N7(_[N],$[N]))D.push({field:N,from:_[N]??null,to:$[N]??null})};I("title"),I("url"),I("tags"),I("metadata"),I("archived");let U=j7(_.content,$.content),E=U.filter((N)=>N.op==="add").length,j=U.filter((N)=>N.op==="remove").length;return{identical:D.length===0&&E===0&&j===0,fields:D,content:U,added:E,removed:j}}function qz(_,$,D){let I=[`--- ${$}`,`+++ ${D}`];if(_.identical)return I.push("(no changes)"),I.join(` `);for(let U of _.fields)I.push(`~ ${U.field}: ${JSON.stringify(U.from)} -> ${JSON.stringify(U.to)}`);if(_.added===0&&_.removed===0){if(_.fields.length>0)I.push("(content unchanged)")}else{I.push(`@@ content +${_.added} -${_.removed} @@`);for(let U of _.content){let E=U.op==="add"?"+":U.op==="remove"?"-":" ";I.push(`${E}${U.text}`)}}return I.join(` `)}import{Database as Cz}from"bun:sqlite";function o1(_="catalog"){if(h$()){let $=$6[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 g7="porter unicode61 remove_diacritics 2",vz=` PRAGMA journal_mode = WAL; @@ -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')); -`,L7=` +`,S7=` 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')); -`,S7=` +`,L7=` CREATE TABLE IF NOT EXISTS reindex_queue ( id TEXT PRIMARY KEY, 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 w(_){o1("opening the local knowledge.db catalog"),u$(_);let $=new Cz(_);return $.exec("PRAGMA foreign_keys = ON;"),$.exec("PRAGMA busy_timeout = 5000;"),$}function rz(_){return o1("reading the local knowledge.db catalog"),new Cz(_,{readonly:!0})}function h(_){let $=w(_);try{if($.exec(vz),f_($)<2)$.exec(A7);if(f_($)<3)$.exec(O7);if(f_($)<4)$.exec(L7);if(f_($)<5)$.exec(S7);if(f_($)<6)$.exec(wz);if(X7($))G7($);if(R7($))Y7($);if(Q7($))K7($);if(T7($))F7($);return{path:_,schema_version:f_($)}}finally{$.close()}}function f_(_){return _.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0}function M_(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function Sg(_){return`"${_.replaceAll('"','""')}"`}function I6(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type IN ('table', 'virtual') AND name = ?").get($);return Boolean(D)}function U6(_,$,D){if(!I6(_,$))return!1;return _.query(`PRAGMA table_info(${Sg($)})`).all().some((U)=>U.name===D)}function B6(_,$,D,I){if(!U6(_,$,D))_.exec(`ALTER TABLE ${Sg($)} ADD COLUMN ${Sg(D)} ${I};`)}function X7(_){return f_(_)<7||!U6(_,"knowledge_sync_changes","logical_clock")||!U6(_,"knowledge_sync_changes","bundle_id")||!I6(_,"knowledge_sync_table_clocks")||!I6(_,"knowledge_sync_imports")}function G7(_){if(!I6(_,"knowledge_sync_changes"))_.exec(wz);B6(_,"knowledge_sync_changes","logical_clock","INTEGER NOT NULL DEFAULT 0"),B6(_,"knowledge_sync_changes","bundle_id","TEXT"),_.exec(J7)}function R7(_){return f_(_)<8||!U6(_,"wiki_pages","valid_from")||!U6(_,"wiki_pages","valid_to")||!U6(_,"wiki_pages","supersedes")||!U6(_,"wiki_pages","superseded_by")||!U6(_,"wiki_pages","confidence")||!U6(_,"wiki_pages","last_verified_at")}function Y7(_){if(!I6(_,"wiki_pages"))_.exec(vz);B6(_,"wiki_pages","valid_from","TEXT"),B6(_,"wiki_pages","valid_to","TEXT"),B6(_,"wiki_pages","supersedes","TEXT"),B6(_,"wiki_pages","superseded_by","TEXT"),B6(_,"wiki_pages","confidence","REAL"),B6(_,"wiki_pages","last_verified_at","TEXT"),_.exec(` +`;function w(_){o1("opening the local knowledge.db catalog"),u$(_);let $=new Cz(_);return $.exec("PRAGMA foreign_keys = ON;"),$.exec("PRAGMA busy_timeout = 5000;"),$}function rz(_){return o1("reading the local knowledge.db catalog"),new Cz(_,{readonly:!0})}function c(_){let $=w(_);try{if($.exec(vz),r_($)<2)$.exec(A7);if(r_($)<3)$.exec(O7);if(r_($)<4)$.exec(S7);if(r_($)<5)$.exec(L7);if(r_($)<6)$.exec(wz);if(X7($))G7($);if(R7($))Y7($);if(Q7($))K7($);if(T7($))F7($);return{path:_,schema_version:r_($)}}finally{$.close()}}function r_(_){return _.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0}function M_(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function Lg(_){return`"${_.replaceAll('"','""')}"`}function I6(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type IN ('table', 'virtual') AND name = ?").get($);return Boolean(D)}function U6(_,$,D){if(!I6(_,$))return!1;return _.query(`PRAGMA table_info(${Lg($)})`).all().some((U)=>U.name===D)}function B6(_,$,D,I){if(!U6(_,$,D))_.exec(`ALTER TABLE ${Lg($)} ADD COLUMN ${Lg(D)} ${I};`)}function X7(_){return r_(_)<7||!U6(_,"knowledge_sync_changes","logical_clock")||!U6(_,"knowledge_sync_changes","bundle_id")||!I6(_,"knowledge_sync_table_clocks")||!I6(_,"knowledge_sync_imports")}function G7(_){if(!I6(_,"knowledge_sync_changes"))_.exec(wz);B6(_,"knowledge_sync_changes","logical_clock","INTEGER NOT NULL DEFAULT 0"),B6(_,"knowledge_sync_changes","bundle_id","TEXT"),_.exec(J7)}function R7(_){return r_(_)<8||!U6(_,"wiki_pages","valid_from")||!U6(_,"wiki_pages","valid_to")||!U6(_,"wiki_pages","supersedes")||!U6(_,"wiki_pages","superseded_by")||!U6(_,"wiki_pages","confidence")||!U6(_,"wiki_pages","last_verified_at")}function Y7(_){if(!I6(_,"wiki_pages"))_.exec(vz);B6(_,"wiki_pages","valid_from","TEXT"),B6(_,"wiki_pages","valid_to","TEXT"),B6(_,"wiki_pages","supersedes","TEXT"),B6(_,"wiki_pages","superseded_by","TEXT"),B6(_,"wiki_pages","confidence","REAL"),B6(_,"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(W7)}function fz(_){let $=_.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?").get("chunks_fts");return Boolean($?.sql&&$.sql.includes("remove_diacritics"))}function Q7(_){if(!I6(_,"chunks_fts"))return!1;return f_(_)<9||!fz(_)}function K7(_){if(!I6(_,"chunks_fts"))return;if(fz(_)){_.exec("INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now'));");return}_.exec(P7)}function T7(_){return f_(_)<10||!I6(_,"knowledge_promotion_candidates")||!I6(_,"durable_knowledge_records")}function F7(_){_.exec(z7)}function Jg(_){let $=w(_);try{return{schema_version:f_($),sources:M_($,"sources"),source_revisions:M_($,"source_revisions"),chunks:M_($,"chunks"),wiki_pages:M_($,"wiki_pages"),citations:M_($,"citations"),indexes:M_($,"knowledge_indexes"),runs:M_($,"runs"),run_events:M_($,"run_events"),redaction_findings:M_($,"redaction_findings"),audit_events:M_($,"audit_events"),approval_gates:M_($,"approval_gates"),storage_objects:M_($,"storage_objects"),embeddings:M_($,"chunk_embeddings"),vector_entries:M_($,"vector_index_entries"),reindex_queue:M_($,"reindex_queue"),knowledge_machines:M_($,"knowledge_machines"),sync_snapshots:M_($,"knowledge_sync_snapshots"),sync_changes:M_($,"knowledge_sync_changes"),sync_conflicts:M_($,"knowledge_sync_conflicts"),sync_table_clocks:M_($,"knowledge_sync_table_clocks"),sync_imports:M_($,"knowledge_sync_imports"),promotion_candidates:M_($,"knowledge_promotion_candidates"),durable_records:M_($,"durable_knowledge_records")}}finally{$.close()}}import{chmodSync as V7,existsSync as B7,mkdirSync as xz,readFileSync as M7,statSync as b7,writeFileSync as Z7}from"fs";import{dirname as H7,join as Wg,relative as k7,sep as q7}from"path";import{pathToFileURL as C7}from"url";function c$(_){let $=_.replace(/\\/g,"/").trim();if(!$||$.startsWith("/"))throw Error(`Invalid artifact key: ${_}`);let D=$.split("/").filter(Boolean);if(D.length===0||D.some((I)=>I==="."||I===".."))throw Error(`Invalid artifact key: ${_}`);return D.join("/")}function Pg(_,$){let D=k7(_,$);if(D.startsWith("..")||D===".."||D.startsWith(`..${q7}`))throw Error(`Artifact path escapes root: ${$}`)}function v7(_){if(!_)return;let $={};for(let[D,I]of Object.entries(_))if(typeof I==="string")$[D]=I;else if(typeof I==="number"||typeof I==="boolean")$[D]=String(I);return Object.keys($).length>0?$:void 0}class uz{root;type="local";canRead=!0;canWrite=!0;constructor(_){this.root=_;xz(_,{recursive:!0,mode:448})}async put(_){let $=c$(_.key),D=Wg(this.root,$);return Pg(this.root,D),xz(H7(D),{recursive:!0,mode:448}),Z7(D,_.body,{mode:384}),V7(D,384),{key:$,uri:C7(D).href,modified_at:b7(D).mtime.toISOString()}}async getText(_){let $=c$(_),D=Wg(this.root,$);return Pg(this.root,D),M7(D,"utf8")}async exists(_){let $=c$(_),D=Wg(this.root,$);return Pg(this.root,D),B7(D)}}class yz{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 $=c$(_),D=this.options.prefix?c$(this.options.prefix):"";return D?`${D}/${$}`:$}async put(_){let[{PutObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),I=c$(_.key),U=this.objectKey(I);return await D.send(new $({Bucket:this.options.bucket,Key:U,Body:_.body,ContentType:_.content_type,Metadata:v7(_.metadata),ServerSideEncryption:this.options.server_side_encryption,SSEKMSKeyId:this.options.kms_key_id})),{key:I,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()]),I=this.objectKey(_),U=await D.send(new $({Bucket:this.options.bucket,Key:I}));if(!U.Body)return"";return await U.Body.transformToString()}async exists(_){let[{HeadObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),I=this.objectKey(_);try{return await D.send(new $({Bucket:this.options.bucket,Key:I})),!0}catch(U){let E=U instanceof Error?U.name:"";if(E==="NotFound"||E==="NoSuchKey"||E==="NotFoundError")return!1;throw U}}}function zg(_,$){if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)throw Error("S3 artifact storage requires storage.s3.bucket");return new yz({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 uz($.artifactsDir)}import{createHash as G1}from"crypto";import{spawnSync as qH}from"child_process";import{existsSync as X_,readFileSync as CH}from"fs";import{hostname as vH}from"os";import{join as g9,resolve as K9}from"path";import{createHash as ET,randomUUID as jT}from"crypto";import{createHash as c7,randomUUID as n7}from"crypto";import{existsSync as Rg,readdirSync as d7}from"fs";import{join as iz}from"path";import{pathToFileURL as m7}from"url";import{existsSync as w7,mkdirSync as r7,readFileSync as f7,unlinkSync as x7,writeFileSync as u7}from"fs";import{homedir as y7}from"os";import{dirname as h7,join as hz}from"path";var Xg="https://knowledge.md";function E6(_){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 e1(_=process.env){if(_.HASNA_KNOWLEDGE_AUTH_PATH)return _.HASNA_KNOWLEDGE_AUTH_PATH;let $=_.HASNA_KNOWLEDGE_AUTH_DIR??hz(y7(),".hasna","knowledge");return hz($,"auth.json")}function p1(_,$=process.env){return E6($.KNOWLEDGE_API_URL??_?.hosted?.api_url??Xg)}function cz(_=process.env){try{let $=e1(_);if(!w7($))return null;let D=JSON.parse(f7($,"utf8"));return typeof D.api_key==="string"&&D.api_key.length>0?D:null}catch{return null}}function nz(_,$=process.env){let D=e1($),I={..._,api_url:_.api_url?E6(_.api_url):void 0,created_at:_.created_at??new Date().toISOString()};return r7(h7(D),{recursive:!0,mode:448}),u7(D,`${JSON.stringify(I,null,2)} -`,{mode:384}),I}function dz(_=process.env){try{return x7(e1(_)),!0}catch{return!1}}function Gg(_=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 $=cz(_);return $?.api_key?{apiKey:$.api_key,source:"file"}:{apiKey:null,source:"none"}}function mz(_,$=process.env){let D=cz($),I=Gg($),U=$.KNOWLEDGE_API_URL?p1(_,$):D?.api_url?E6(D.api_url):p1(_,$);return{authenticated:Boolean(I.apiKey),source:I.source,api_url:U,auth_path:e1($),email:I.source==="file"?D?.email??null:null,org_id:I.source==="file"?D?.org_id??null:null,org_slug:I.source==="file"?D?.org_slug??null:null,user_id:I.source==="file"?D?.user_id??null:null,api_key_present:Boolean(I.apiKey)}}var lz=2;var tz=[{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."}],l7=["cloud.env","knowledge.db.pre-cloud-*.bak","db.json.pre-cloud-*.bak","migration-exports"];function oz(_){let $=[];if(Rg(iz(_.home,"cloud.env")))$.push("cloud.env");if(Rg(iz(_.home,"migration-exports")))$.push("migration-exports");if(Rg(_.home)){for(let D of d7(_.home))if(/^(?:knowledge\.db|db\.json)\.pre-cloud-.+\.bak$/i.test(D))$.push(D)}return $}function X0(_){let $=typeof _==="string"?Buffer.from(_):Buffer.from(_);return{hash:`sha256:${c7("sha256").update($).digest("hex")}`,size_bytes:$.byteLength}}function pz(_){return tz.find((D)=>_.startsWith(D.prefix))?.kind??"artifact"}function a1(_,$,D="global"){let I=Yg(_,$),U=_.storage.s3??null,E=U?.prefix?.replace(/^\/+|\/+$/g,"")??"",j=U?`s3://${U.bucket}/${E?`${E}/`:""}`:"",N=W_.s3.prefix.replace(/^\/+|\/+$/g,""),A=`s3://${W_.s3.bucket}/${N}/`,O=_.storage.type==="s3"&&U?.bucket===W_.s3.bucket&&(U.region??null)===W_.s3.region;return{scope:D,mode:_.mode,storage_type:_.storage.type,workspace_home:$.home,local_layout:{app_path:s$,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:m7(`${$.artifactsDir}/`).href,s3:U?{bucket:U.bucket,prefix:E,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:W_.division,app_type:W_.app_type,app:W_.app,env:W_.env,active:O,local_path:W_.local_path,s3:{bucket:W_.s3.bucket,region:W_.s3.region,profile:W_.s3.profile,prefix:N,uri_prefix:A,server_side_encryption:W_.s3.server_side_encryption},secrets:{env:W_.secrets.env,aws:W_.secrets.aws,s3:W_.secrets.s3,rds:W_.secrets.rds,future_rds:W_.secrets.future_rds},evidence_doc:W_.evidence_doc},hosted:{enabled:_.mode==="hosted",api_url:E6(_.hosted?.api_url??Xg),api_url_env:"KNOWLEDGE_API_URL",api_key_env:"KNOWLEDGE_API_KEY",auth_storage:"~/.hasna/knowledge/auth.json",registry_contract_version:lz,requires_hosted_account_for_local_use:!1},secret_handling:{workspace_env_files_supported:!1,forbidden_workspace_files:l7,forbidden_workspace_files_present:oz($),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:W_.secrets.env,aws:W_.secrets.aws,s3:W_.secrets.s3,rds:W_.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:tz,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:I.warnings}}function Yg(_,$){let D=[],I=[],U=oz($);for(let E of U)D.push(`Forbidden Knowledge workspace file present: ${E}. Move secrets to open-secrets/runtime env and remove or replace legacy backups/exports with redacted owner-only artifacts.`);if(!$.home.endsWith(s$))I.push(`Workspace home does not end with ${s$}: ${$.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)I.push("storage.s3.prefix is empty; generated knowledge artifacts will be written at the bucket root.");if(_.mode==="local")I.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)I.push("storage.s3 is configured but ignored while storage.type is local.");if(_.sources.preferred_ref!=="open-files")I.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{E6(_.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:I}}function j6(_,$,D=new Date){let I=D.toISOString(),U=_.prepare(` + `),_.exec(W7)}function fz(_){let $=_.query("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?").get("chunks_fts");return Boolean($?.sql&&$.sql.includes("remove_diacritics"))}function Q7(_){if(!I6(_,"chunks_fts"))return!1;return r_(_)<9||!fz(_)}function K7(_){if(!I6(_,"chunks_fts"))return;if(fz(_)){_.exec("INSERT OR IGNORE INTO schema_versions(version, applied_at) VALUES (9, datetime('now'));");return}_.exec(P7)}function T7(_){return r_(_)<10||!I6(_,"knowledge_promotion_candidates")||!I6(_,"durable_knowledge_records")}function F7(_){_.exec(z7)}function Jg(_){let $=w(_);try{return{schema_version:r_($),sources:M_($,"sources"),source_revisions:M_($,"source_revisions"),chunks:M_($,"chunks"),wiki_pages:M_($,"wiki_pages"),citations:M_($,"citations"),indexes:M_($,"knowledge_indexes"),runs:M_($,"runs"),run_events:M_($,"run_events"),redaction_findings:M_($,"redaction_findings"),audit_events:M_($,"audit_events"),approval_gates:M_($,"approval_gates"),storage_objects:M_($,"storage_objects"),embeddings:M_($,"chunk_embeddings"),vector_entries:M_($,"vector_index_entries"),reindex_queue:M_($,"reindex_queue"),knowledge_machines:M_($,"knowledge_machines"),sync_snapshots:M_($,"knowledge_sync_snapshots"),sync_changes:M_($,"knowledge_sync_changes"),sync_conflicts:M_($,"knowledge_sync_conflicts"),sync_table_clocks:M_($,"knowledge_sync_table_clocks"),sync_imports:M_($,"knowledge_sync_imports"),promotion_candidates:M_($,"knowledge_promotion_candidates"),durable_records:M_($,"durable_knowledge_records")}}finally{$.close()}}import{chmodSync as V7,existsSync as B7,mkdirSync as xz,readFileSync as M7,statSync as b7,writeFileSync as Z7}from"fs";import{dirname as H7,join as Wg,relative as k7,sep as q7}from"path";import{pathToFileURL as C7}from"url";function c$(_){let $=_.replace(/\\/g,"/").trim();if(!$||$.startsWith("/"))throw Error(`Invalid artifact key: ${_}`);let D=$.split("/").filter(Boolean);if(D.length===0||D.some((I)=>I==="."||I===".."))throw Error(`Invalid artifact key: ${_}`);return D.join("/")}function Pg(_,$){let D=k7(_,$);if(D.startsWith("..")||D===".."||D.startsWith(`..${q7}`))throw Error(`Artifact path escapes root: ${$}`)}function v7(_){if(!_)return;let $={};for(let[D,I]of Object.entries(_))if(typeof I==="string")$[D]=I;else if(typeof I==="number"||typeof I==="boolean")$[D]=String(I);return Object.keys($).length>0?$:void 0}class uz{root;type="local";canRead=!0;canWrite=!0;constructor(_){this.root=_;xz(_,{recursive:!0,mode:448})}async put(_){let $=c$(_.key),D=Wg(this.root,$);return Pg(this.root,D),xz(H7(D),{recursive:!0,mode:448}),Z7(D,_.body,{mode:384}),V7(D,384),{key:$,uri:C7(D).href,modified_at:b7(D).mtime.toISOString()}}async getText(_){let $=c$(_),D=Wg(this.root,$);return Pg(this.root,D),M7(D,"utf8")}async exists(_){let $=c$(_),D=Wg(this.root,$);return Pg(this.root,D),B7(D)}}class yz{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 $=c$(_),D=this.options.prefix?c$(this.options.prefix):"";return D?`${D}/${$}`:$}async put(_){let[{PutObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),I=c$(_.key),U=this.objectKey(I);return await D.send(new $({Bucket:this.options.bucket,Key:U,Body:_.body,ContentType:_.content_type,Metadata:v7(_.metadata),ServerSideEncryption:this.options.server_side_encryption,SSEKMSKeyId:this.options.kms_key_id})),{key:I,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()]),I=this.objectKey(_),U=await D.send(new $({Bucket:this.options.bucket,Key:I}));if(!U.Body)return"";return await U.Body.transformToString()}async exists(_){let[{HeadObjectCommand:$},D]=await Promise.all([import("@aws-sdk/client-s3"),this.getClient()]),I=this.objectKey(_);try{return await D.send(new $({Bucket:this.options.bucket,Key:I})),!0}catch(U){let E=U instanceof Error?U.name:"";if(E==="NotFound"||E==="NoSuchKey"||E==="NotFoundError")return!1;throw U}}}function zg(_,$){if(_.storage.type==="s3"){if(!_.storage.s3?.bucket)throw Error("S3 artifact storage requires storage.s3.bucket");return new yz({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 uz($.artifactsDir)}import{createHash as G1}from"crypto";import{spawnSync as qH}from"child_process";import{existsSync as X_,readFileSync as CH}from"fs";import{hostname as vH}from"os";import{join as g9,resolve as K9}from"path";import{createHash as ET,randomUUID as jT}from"crypto";import{createHash as c7,randomUUID as n7}from"crypto";import{existsSync as Rg,readdirSync as d7}from"fs";import{join as iz}from"path";import{pathToFileURL as m7}from"url";import{existsSync as w7,mkdirSync as r7,readFileSync as f7,unlinkSync as x7,writeFileSync as u7}from"fs";import{homedir as y7}from"os";import{dirname as h7,join as hz}from"path";var Xg="https://knowledge.md";function E6(_){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 e1(_=process.env){if(_.HASNA_KNOWLEDGE_AUTH_PATH)return _.HASNA_KNOWLEDGE_AUTH_PATH;let $=_.HASNA_KNOWLEDGE_AUTH_DIR??hz(y7(),".hasna","knowledge");return hz($,"auth.json")}function p1(_,$=process.env){return E6($.KNOWLEDGE_API_URL??_?.hosted?.api_url??Xg)}function cz(_=process.env){try{let $=e1(_);if(!w7($))return null;let D=JSON.parse(f7($,"utf8"));return typeof D.api_key==="string"&&D.api_key.length>0?D:null}catch{return null}}function nz(_,$=process.env){let D=e1($),I={..._,api_url:_.api_url?E6(_.api_url):void 0,created_at:_.created_at??new Date().toISOString()};return r7(h7(D),{recursive:!0,mode:448}),u7(D,`${JSON.stringify(I,null,2)} +`,{mode:384}),I}function dz(_=process.env){try{return x7(e1(_)),!0}catch{return!1}}function Gg(_=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 $=cz(_);return $?.api_key?{apiKey:$.api_key,source:"file"}:{apiKey:null,source:"none"}}function mz(_,$=process.env){let D=cz($),I=Gg($),U=$.KNOWLEDGE_API_URL?p1(_,$):D?.api_url?E6(D.api_url):p1(_,$);return{authenticated:Boolean(I.apiKey),source:I.source,api_url:U,auth_path:e1($),email:I.source==="file"?D?.email??null:null,org_id:I.source==="file"?D?.org_id??null:null,org_slug:I.source==="file"?D?.org_slug??null:null,user_id:I.source==="file"?D?.user_id??null:null,api_key_present:Boolean(I.apiKey)}}var lz=2;var tz=[{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."}],l7=["cloud.env","knowledge.db.pre-cloud-*.bak","db.json.pre-cloud-*.bak","migration-exports"];function oz(_){let $=[];if(Rg(iz(_.home,"cloud.env")))$.push("cloud.env");if(Rg(iz(_.home,"migration-exports")))$.push("migration-exports");if(Rg(_.home)){for(let D of d7(_.home))if(/^(?:knowledge\.db|db\.json)\.pre-cloud-.+\.bak$/i.test(D))$.push(D)}return $}function X0(_){let $=typeof _==="string"?Buffer.from(_):Buffer.from(_);return{hash:`sha256:${c7("sha256").update($).digest("hex")}`,size_bytes:$.byteLength}}function pz(_){return tz.find((D)=>_.startsWith(D.prefix))?.kind??"artifact"}function a1(_,$,D="global"){let I=Yg(_,$),U=_.storage.s3??null,E=U?.prefix?.replace(/^\/+|\/+$/g,"")??"",j=U?`s3://${U.bucket}/${E?`${E}/`:""}`:"",N=W_.s3.prefix.replace(/^\/+|\/+$/g,""),A=`s3://${W_.s3.bucket}/${N}/`,O=_.storage.type==="s3"&&U?.bucket===W_.s3.bucket&&(U.region??null)===W_.s3.region;return{scope:D,mode:_.mode,storage_type:_.storage.type,workspace_home:$.home,local_layout:{app_path:s$,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:m7(`${$.artifactsDir}/`).href,s3:U?{bucket:U.bucket,prefix:E,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:W_.division,app_type:W_.app_type,app:W_.app,env:W_.env,active:O,local_path:W_.local_path,s3:{bucket:W_.s3.bucket,region:W_.s3.region,profile:W_.s3.profile,prefix:N,uri_prefix:A,server_side_encryption:W_.s3.server_side_encryption},secrets:{env:W_.secrets.env,aws:W_.secrets.aws,s3:W_.secrets.s3,rds:W_.secrets.rds,future_rds:W_.secrets.future_rds},evidence_doc:W_.evidence_doc},hosted:{enabled:_.mode==="hosted",api_url:E6(_.hosted?.api_url??Xg),api_url_env:"KNOWLEDGE_API_URL",api_key_env:"KNOWLEDGE_API_KEY",auth_storage:"~/.hasna/knowledge/auth.json",registry_contract_version:lz,requires_hosted_account_for_local_use:!1},secret_handling:{workspace_env_files_supported:!1,forbidden_workspace_files:l7,forbidden_workspace_files_present:oz($),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:W_.secrets.env,aws:W_.secrets.aws,s3:W_.secrets.s3,rds:W_.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((S)=>["open-files","s3","file"].includes(S)),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:tz,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:I.warnings}}function Yg(_,$){let D=[],I=[],U=oz($);for(let E of U)D.push(`Forbidden Knowledge workspace file present: ${E}. Move secrets to open-secrets/runtime env and remove or replace legacy backups/exports with redacted owner-only artifacts.`);if(!$.home.endsWith(s$))I.push(`Workspace home does not end with ${s$}: ${$.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)I.push("storage.s3.prefix is empty; generated knowledge artifacts will be written at the bucket root.");if(_.mode==="local")I.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)I.push("storage.s3 is configured but ignored while storage.type is local.");if(_.sources.preferred_ref!=="open-files")I.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{E6(_.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:I}}function j6(_,$,D=new Date){let I=D.toISOString(),U=_.prepare(` INSERT INTO storage_objects ( id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json, created_at, updated_at ) @@ -590,15 +590,15 @@ 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 A={key:N.key,...N.modified_at?{artifact_modified_at:N.modified_at}:{},...N.metadata??{}};U.run(n7(),N.uri,N.kind,N.content_type??null,N.hash??null,N.size_bytes??null,JSON.stringify(A),I,I)}})($)}function Qg(_){return["deleted","stale","invalidated","reindex_required"].includes((_??"").toLowerCase())}function M6(_){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:Qg($)}}function N$(_){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 ez(_,$){return{..._,provenance:$}}import{createHash as pK}from"crypto";import{existsSync as eK,readFileSync as aK}from"fs";import{basename as DI}from"path";import{createHash as RK}from"crypto";import{existsSync as YK,readFileSync as QK}from"fs";import{basename as KK}from"path";import{fileURLToPath as i7}from"url";function az(_,$){if(!_)throw Error($);return _}function t7(_){let D=_.slice(13).split("/").filter(Boolean),I=D[0];if(I!=="file"&&I!=="source")throw Error("Invalid open-files ref. Expected open-files://file/<id>, open-files://file/<id>/revision/<revision_id>, or open-files://source/<id>/path/<path>.");let U=az(D[1],"Invalid open-files ref. Missing id.");if(I==="file"){if(D.length===2)return{kind:"open-files",uri:_,entity:I,id:U};if(D[2]==="revision"&&D[3]&&D.length===4)return{kind:"open-files",uri:_,entity:I,id:U,revision_id:decodeURIComponent(D[3])};throw Error("Invalid open-files file ref. Expected open-files://file/<id>/revision/<revision_id>.")}let E=D.indexOf("path"),j=E>=0?decodeURIComponent(D.slice(E+1).join("/")):void 0;return{kind:"open-files",uri:_,entity:I,id:U,path:j}}function o7(_){let $=new URL(_),D=az($.hostname,"Invalid s3 ref. Missing bucket."),I=decodeURIComponent($.pathname.replace(/^\/+/,""));if(!I)throw Error("Invalid s3 ref. Missing object key.");return{kind:"s3",uri:_,bucket:D,key:I}}function p7(_){return{kind:"file",uri:_,path:i7(_)}}function e7(_){let $=new URL(_);return{kind:"web",uri:_,url:$.toString()}}function J$(_){if(_.startsWith("open-files://"))return t7(_);if(_.startsWith("s3://"))return o7(_);if(_.startsWith("file://"))return p7(_);if(_.startsWith("https://")||_.startsWith("http://"))return e7(_);throw Error(`Unsupported source ref scheme: ${_}`)}function sz(_,$=J$(_)){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function _3(_){let $=J$(_);return $.kind==="open-files"&&$.entity==="file"?$.revision_id??null:null}import{createHash as a7,randomUUID as Tg}from"crypto";import{relative as s7,resolve as D3,sep as _K}from"path";function $3(_){let $=process.env[_];return $==="1"||$==="true"||$==="yes"}function U3(_,$){let D=_,I=new Set(D.safety?.network?.allowed_s3_buckets??[]);if(_.storage.type==="s3"&&_.storage.s3?.bucket)I.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((E)=>E.trim()).filter(Boolean))I.add(U);return{mode:_.mode,allowWriteRoots:[$.home,$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir].map((U)=>D3(U)),readOnlySourceAccess:!0,network:{webSearchEnabled:D.safety?.network?.web_search_enabled??$3("HASNA_KNOWLEDGE_WEB_SEARCH"),s3ReadsEnabled:D.safety?.network?.s3_reads_enabled??$3("HASNA_KNOWLEDGE_ALLOW_S3_READS"),allowedS3Buckets:[...I].sort()},redaction:{enabled:D.safety?.redaction?.enabled??!0},approvals:{generatedWritesRequireApproval:D.safety?.approvals?.generated_writes_require_approval??!0}}}function $K(_,$){let D=s7(_,$);return D===""||!D.startsWith("..")&&D!==".."&&!D.startsWith(`..${_K}`)}function N6(_,$){let D=D3(_);if(!$.allowWriteRoots.some((I)=>$K(I,D)))throw Error(`Safety policy denied write outside .hasna/knowledge: ${_}`)}function b6(_,$){let I=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(I))throw Error(`Safety policy denied S3 bucket "${I}". Add it to safety.network.allowed_s3_buckets or HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.`)}function G0(_){if(!_.network.webSearchEnabled)throw Error("Safety policy denied web search. Set safety.network.web_search_enabled=true or HASNA_KNOWLEDGE_WEB_SEARCH=1.")}var I3=[{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 y_(_,$){if($&&!$.redaction.enabled)return{text:_,findings:[]};let D=_,I=[];for(let U of I3)D=D.replace(U.regex,(E,...j)=>{let N=typeof j.at(-2)==="number"?j.at(-2):D.indexOf(E);return I.push({type:U.type,severity:U.severity,start:Math.max(0,N),end:Math.max(0,N+E.length)}),U.replacement});return{text:D,findings:I}}function DK(_){return`audit_${a7("sha256").update(`${_.event_type}\x00${_.action}\x00${_.target_uri??""}\x00${_.created_at??""}\x00${JSON.stringify(_.metadata??{})}\x00${Tg()}`).digest("hex").slice(0,24)}`}function Kg(_,$=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((I)=>Kg(I,$+1));if(_.length>25)D.push(`[Truncated:${_.length-25} items]`);return D}if(typeof _==="object"){let D={},I=Object.entries(_).slice(0,50);for(let[E,j]of I)D[E]=Kg(j,$+1);let U=Object.keys(_).length;if(U>I.length)D.__truncated_keys=U-I.length;return D}return String(_)}function G_(_,$){let D=$.created_at??new Date().toISOString(),I=Kg($.metadata??{}),U=DK({...$,metadata:I,created_at:D});return _.run(`INSERT INTO audit_events (id, event_type, action, target_uri, decision, metadata_json, created_at) + `);_.transaction((j)=>{for(let N of j){let A={key:N.key,...N.modified_at?{artifact_modified_at:N.modified_at}:{},...N.metadata??{}};U.run(n7(),N.uri,N.kind,N.content_type??null,N.hash??null,N.size_bytes??null,JSON.stringify(A),I,I)}})($)}function Qg(_){return["deleted","stale","invalidated","reindex_required"].includes((_??"").toLowerCase())}function M6(_){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:Qg($)}}function N$(_){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 ez(_,$){return{..._,provenance:$}}import{createHash as pK}from"crypto";import{existsSync as eK,readFileSync as aK}from"fs";import{basename as DI}from"path";import{createHash as RK}from"crypto";import{existsSync as YK,readFileSync as QK}from"fs";import{basename as KK}from"path";import{fileURLToPath as i7}from"url";function az(_,$){if(!_)throw Error($);return _}function t7(_){let D=_.slice(13).split("/").filter(Boolean),I=D[0];if(I!=="file"&&I!=="source")throw Error("Invalid open-files ref. Expected open-files://file/<id>, open-files://file/<id>/revision/<revision_id>, or open-files://source/<id>/path/<path>.");let U=az(D[1],"Invalid open-files ref. Missing id.");if(I==="file"){if(D.length===2)return{kind:"open-files",uri:_,entity:I,id:U};if(D[2]==="revision"&&D[3]&&D.length===4)return{kind:"open-files",uri:_,entity:I,id:U,revision_id:decodeURIComponent(D[3])};throw Error("Invalid open-files file ref. Expected open-files://file/<id>/revision/<revision_id>.")}let E=D.indexOf("path"),j=E>=0?decodeURIComponent(D.slice(E+1).join("/")):void 0;return{kind:"open-files",uri:_,entity:I,id:U,path:j}}function o7(_){let $=new URL(_),D=az($.hostname,"Invalid s3 ref. Missing bucket."),I=decodeURIComponent($.pathname.replace(/^\/+/,""));if(!I)throw Error("Invalid s3 ref. Missing object key.");return{kind:"s3",uri:_,bucket:D,key:I}}function p7(_){return{kind:"file",uri:_,path:i7(_)}}function e7(_){let $=new URL(_);return{kind:"web",uri:_,url:$.toString()}}function J$(_){if(_.startsWith("open-files://"))return t7(_);if(_.startsWith("s3://"))return o7(_);if(_.startsWith("file://"))return p7(_);if(_.startsWith("https://")||_.startsWith("http://"))return e7(_);throw Error(`Unsupported source ref scheme: ${_}`)}function sz(_,$=J$(_)){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function _3(_){let $=J$(_);return $.kind==="open-files"&&$.entity==="file"?$.revision_id??null:null}import{createHash as a7,randomUUID as Tg}from"crypto";import{relative as s7,resolve as D3,sep as _K}from"path";function $3(_){let $=process.env[_];return $==="1"||$==="true"||$==="yes"}function U3(_,$){let D=_,I=new Set(D.safety?.network?.allowed_s3_buckets??[]);if(_.storage.type==="s3"&&_.storage.s3?.bucket)I.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((E)=>E.trim()).filter(Boolean))I.add(U);return{mode:_.mode,allowWriteRoots:[$.home,$.artifactsDir,$.cacheDir,$.exportsDir,$.indexesDir,$.logsDir,$.runsDir,$.schemasDir,$.wikiDir].map((U)=>D3(U)),readOnlySourceAccess:!0,network:{webSearchEnabled:D.safety?.network?.web_search_enabled??$3("HASNA_KNOWLEDGE_WEB_SEARCH"),s3ReadsEnabled:D.safety?.network?.s3_reads_enabled??$3("HASNA_KNOWLEDGE_ALLOW_S3_READS"),allowedS3Buckets:[...I].sort()},redaction:{enabled:D.safety?.redaction?.enabled??!0},approvals:{generatedWritesRequireApproval:D.safety?.approvals?.generated_writes_require_approval??!0}}}function $K(_,$){let D=s7(_,$);return D===""||!D.startsWith("..")&&D!==".."&&!D.startsWith(`..${_K}`)}function N6(_,$){let D=D3(_);if(!$.allowWriteRoots.some((I)=>$K(I,D)))throw Error(`Safety policy denied write outside .hasna/knowledge: ${_}`)}function b6(_,$){let I=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(I))throw Error(`Safety policy denied S3 bucket "${I}". Add it to safety.network.allowed_s3_buckets or HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS.`)}function G0(_){if(!_.network.webSearchEnabled)throw Error("Safety policy denied web search. Set safety.network.web_search_enabled=true or HASNA_KNOWLEDGE_WEB_SEARCH=1.")}var I3=[{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=_,I=[];for(let U of I3)D=D.replace(U.regex,(E,...j)=>{let N=typeof j.at(-2)==="number"?j.at(-2):D.indexOf(E);return I.push({type:U.type,severity:U.severity,start:Math.max(0,N),end:Math.max(0,N+E.length)}),U.replacement});return{text:D,findings:I}}function DK(_){return`audit_${a7("sha256").update(`${_.event_type}\x00${_.action}\x00${_.target_uri??""}\x00${_.created_at??""}\x00${JSON.stringify(_.metadata??{})}\x00${Tg()}`).digest("hex").slice(0,24)}`}function Kg(_,$=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((I)=>Kg(I,$+1));if(_.length>25)D.push(`[Truncated:${_.length-25} items]`);return D}if(typeof _==="object"){let D={},I=Object.entries(_).slice(0,50);for(let[E,j]of I)D[E]=Kg(j,$+1);let U=Object.keys(_).length;if(U>I.length)D.__truncated_keys=U-I.length;return D}return String(_)}function R_(_,$){let D=$.created_at??new Date().toISOString(),I=Kg($.metadata??{}),U=DK({...$,metadata:I,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(I),D]),U}function R0(_,$){let D=$.created_at??new Date().toISOString();for(let I of $.findings)_.run(`INSERT INTO redaction_findings (id, source_uri, run_id, severity, finding_type, metadata_json, created_at) VALUES (?, ?, ?, ?, ?, ?, ?)`,[`redact_${Tg()}`,$.source_uri??null,$.run_id??null,I.severity,I.type,JSON.stringify({...$.metadata??{},start:I.start,end:I.end}),D]);return $.findings.length}function s1(_,$){let D=$.created_at??new Date().toISOString(),I=`approval_${Tg()}`;return _.run(`INSERT INTO approval_gates (id, action, target_uri, status, reason, approved_by, metadata_json, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,$.action,$.target_uri??null,"approved",$.reason??null,$.approved_by??"local-cli",JSON.stringify($.metadata??{}),D,D]),{id:I,status:"approved"}}var UK=[{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]"}];I3.push(...UK);function IK(_,$,D){let I=_.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($,D??null,D??null);return Boolean(I)}function E3(_,$,D,I){let U=D==="generated_write"&&$.approvals.generatedWritesRequireApproval,E=!U||IK(_,D,I);return{action:D,target_uri:I??null,approval_required:U,approved:E,decision:E?"allow":"requires_approval"}}import{createHash as EK}from"crypto";import{realpathSync as jK}from"fs";import{homedir as NK,tmpdir as gK}from"os";var I4=String.raw`[^\s"'<>),\]}]`,Vg=String.raw`[^/\\\s"'<>]+`,g3=/file:\/\/[^\s"'<>),\]}]+/gi,AK=/\/[^\s"'<>),\]}]*\.hasna\/[^\s"'<>),\]}]*/g,A3=/(?:~|\/(?:home|Users)\/[^/\s"'<>]+)?\/?\.hasna(?:\/[^\s"'<>),\]}]*)?/gi,O3=new RegExp(String.raw`/(?:home|Users)/${Vg}/(?:workspace|Workspace)/${I4}*`,"g"),OK=[new RegExp(String.raw`/(?:home|Users)/${Vg}(?:/${I4}*)?`,"g"),new RegExp(String.raw`(?:/private)?/var/(?:folders|tmp)/${I4}+`,"g"),new RegExp(String.raw`(?:/private)?/tmp/${I4}+`,"g"),new RegExp(String.raw`(?<![A-Za-z0-9])[A-Za-z]:[\\/]${I4}+`,"g"),new RegExp(String.raw`\\\\${Vg}\\${I4}+`,"g")],L3=/\b(?:knowledge\.db(?:[-.][A-Za-z0-9_-]+)?|db\.json(?:[-.][A-Za-z0-9_-]+)?|cloud\.env|migration-exports\/[^\s"'<>),\]}]+)\b/gi,S3=/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s"'<>),\]}]+/gi,LK=new Set(["content_base64"]);function SK(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function JK(_){return _.length>=4&&_!=="/"&&!/^[A-Za-z]:[\\/]?$/.test(_)}var j3=null,Fg=[];function WK(){let _=new Set;for(let D of[NK(),gK()]){if(!D)continue;_.add(D);try{_.add(jK(D))}catch{}}let $=[..._].sort().join("\x00");if($===j3)return Fg;return j3=$,Fg=[..._].filter(JK).sort((D,I)=>I.length-D.length).map((D)=>new RegExp(`${SK(D)}(?:[/\\\\]${I4}*)?`,"g")),Fg}function W$(_){return EK("sha256").update(_).digest("hex").slice(0,12)}function PK(_){return _.length<=80?_:`${_.slice(0,77)}...`}function N3(_){return/(?:^|\/)\.hasna(?:\/|$)/i.test(_)||/\b(?:knowledge\.db|db\.json|cloud\.env)\b/i.test(_)||/\bmigration-exports\//i.test(_)}function zK(_,$,D,I){for(let U of _.matchAll(g3)){let E=U[0];if(!D.allowFileSourceRefs||N3(E))I.push({type:N3(E)?"private_file_uri":"local_file_uri",severity:"high",path:$,preview:PK(E.replace(/^file:\/\/.*/,`[redacted:file-uri:${W$(E)}]`))})}for(let U of _.matchAll(A3))I.push({type:"private_hasna_path",severity:"high",path:$,preview:`[redacted:.hasna:${W$(U[0])}]`});for(let U of _.matchAll(L3))I.push({type:U[0].toLowerCase()==="cloud.env"?"workspace_env_file":"raw_database_or_export_ref",severity:"high",path:$,preview:`[redacted:${W$(U[0])}]`});for(let U of _.matchAll(S3))I.push({type:"database_url",severity:"high",path:$,preview:`[redacted:database-url:${W$(U[0])}]`});if(!D.allowPrivateWorkspaceRefs)for(let U of _.matchAll(O3))I.push({type:"private_workspace_path",severity:"medium",path:$,preview:`[redacted:workspace:${W$(U[0])}]`})}function XK(_,$={},D="$"){let I=[],U=(E,j)=>{if(typeof E==="string"){zK(E,j,$,I);return}if(!E||typeof E!=="object")return;if(Array.isArray(E)){E.forEach((N,A)=>U(N,`${j}[${A}]`));return}for(let[N,A]of Object.entries(E))U(A,`${j}.${N}`)};return U(_,D),I}function E4(_,$={}){let D=XK(_,$);if(D.length===0)return;let I=new Map;for(let E of D)I.set(E.type,(I.get(E.type)??0)+1);let U=[...I.entries()].map(([E,j])=>`${E}:${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 GK(_){let $=y_(_).text.replace(S3,(D)=>`[REDACTED:database-url:${W$(D)}]`).replace(g3,(D)=>`[REDACTED:local-file-uri:${W$(D)}]`).replace(AK,(D)=>`[REDACTED:local-hasna-path:${W$(D)}]`).replace(O3,(D)=>`[REDACTED:private-workspace:${W$(D)}]`);for(let D of[...WK(),...OK])$=$.replace(D,(I)=>`[REDACTED:local-path:${W$(I)}]`);return $.replace(A3,(D)=>`[REDACTED:hasna-path:${W$(D)}]`).replace(L3,(D)=>`[REDACTED:private-artifact:${W$(D)}]`)}function F_(_){if(typeof _==="string")return GK(_);if(!_||typeof _!=="object")return _;if(Array.isArray(_))return _.map((D)=>F_(D));let $={};for(let[D,I]of Object.entries(_))$[D]=LK.has(D)?I:F_(I);return $}var TK=20971520,J3=1e4,FK=10;function Mg(_,$){return`${_}_${RK("sha256").update($).digest("hex").slice(0,20)}`}function j4(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function N_(_){return typeof _==="string"&&_.length>0?_:void 0}function VK(_){return typeof _==="number"&&Number.isFinite(_)?_:void 0}function BK(_){let $=N_(_.source_ref)??N_(_.source_uri)??N_(_.uri);if($)return $;let D=N_(_.file_id);if(D){let E=N_(_.revision_id)??N_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return E?`${j}/revision/${encodeURIComponent(E)}`:j}let I=N_(_.source_id),U=N_(_.path);if(I&&U)return`open-files://source/${encodeURIComponent(I)}/path/${encodeURIComponent(U)}`;throw Error("Manifest item is missing source_ref, file_id, or source_id/path.")}function MK(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function bK(_){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 ZK(_){let $=N_(_.extracted_text_ref)??N_(_.extracted_text_uri)??N_(_.text_ref);if($)return $;let D=j4(_.content);return N_(D?.extracted_text_ref)??N_(D?.extracted_text_uri)??null}function HK(_){let $=N_(_.path);return N_(_.title)??N_(_.name)??($?KK($):null)}function kK(_){return N_(_.hash)??N_(_.checksum)??N_(_.sha256)??null}var W3=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 P3(_){return _.toLowerCase().replace(/[\s-]+/g,"_")}function Bg(_){if(Array.isArray(_))return _.map((I)=>Bg(I));let $=j4(_);if(!$)return _;let D={};for(let[I,U]of Object.entries($)){if(W3.has(P3(I)))continue;D[I]=Bg(U)}return D}function qK(_,$,D){return N_(_.revision_id)??N_(_.revision)??N_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??N_(_.updated_at)??"current"}function CK(_,$){let D={};for(let[I,U]of Object.entries(_)){if(W3.has(P3(I)))continue;D[I]=F_(Bg(U))}return D.source_ref=$.sourceRef,D.source_uri=$.sourceUri,D.status=$.status,D}function vK(_,$,D={}){let I=BK(_);E4(I,{allowFileSourceRefs:D.allowFileSourceRefs===!0});let U=J$(I),E=MK(I,U),j=kK(_),N=N_(_.status)??"active";return{raw:_,sourceRef:I,sourceUri:E,kind:U.kind,title:HK(_),revision:qK(_,U,j),hash:j,extractedTextUri:ZK(_),text:bK(_),metadata:CK(_,{sourceRef:I,sourceUri:E,status:N}),acl:_.permissions??_.acl??{},status:N,updatedAt:N_(_.updated_at)??$}}function wK(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Manifest array parse failed.");return D.map((I)=>{let U=j4(I);if(!U)throw Error("Manifest array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),I=j4(D);if(!I)throw Error("Manifest object parse failed.");if(Array.isArray(I.items))return I.items.map((U)=>{let E=j4(U);if(!E)throw Error("Manifest items entries must be objects.");return E});if("source_ref"in I||"source_uri"in I||"file_id"in I)return[I]}catch(D){let I=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(I.length<=1)throw D;return I.map((U)=>{let E=j4(JSON.parse(U));if(!E)throw Error("Manifest JSONL entries must be objects.");return E})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let I=j4(JSON.parse(D));if(!I)throw Error("Manifest JSONL entries must be objects.");return I})}async function rK(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 manifest URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,J=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!J.Body)return"";return await J.Body.transformToString()}async function fK(_,$,D,I=TK){let U=_.startsWith("s3://")?await rK(_,$,D):(()=>{if(!YK(_))throw Error(`Manifest not found: ${_}`);return QK(_,"utf8")})(),E=Buffer.byteLength(U);if(E>I)throw Error(`Manifest input is too large: ${E} bytes exceeds ${I} byte limit.`);return U}function xK(_,$,D){let I=_.replace(/\r\n/g,` + ORDER BY updated_at DESC LIMIT 1`).get($,D??null,D??null);return Boolean(I)}function E3(_,$,D,I){let U=D==="generated_write"&&$.approvals.generatedWritesRequireApproval,E=!U||IK(_,D,I);return{action:D,target_uri:I??null,approval_required:U,approved:E,decision:E?"allow":"requires_approval"}}import{createHash as EK}from"crypto";import{realpathSync as jK}from"fs";import{homedir as NK,tmpdir as gK}from"os";var I4=String.raw`[^\s"'<>),\]}]`,Vg=String.raw`[^/\\\s"'<>]+`,g3=/file:\/\/[^\s"'<>),\]}]+/gi,AK=/\/[^\s"'<>),\]}]*\.hasna\/[^\s"'<>),\]}]*/g,A3=/(?:~|\/(?:home|Users)\/[^/\s"'<>]+)?\/?\.hasna(?:\/[^\s"'<>),\]}]*)?/gi,O3=new RegExp(String.raw`/(?:home|Users)/${Vg}/(?:workspace|Workspace)/${I4}*`,"g"),OK=[new RegExp(String.raw`/(?:home|Users)/${Vg}(?:/${I4}*)?`,"g"),new RegExp(String.raw`(?:/private)?/var/(?:folders|tmp)/${I4}+`,"g"),new RegExp(String.raw`(?:/private)?/tmp/${I4}+`,"g"),new RegExp(String.raw`(?<![A-Za-z0-9])[A-Za-z]:[\\/]${I4}+`,"g"),new RegExp(String.raw`\\\\${Vg}\\${I4}+`,"g")],S3=/\b(?:knowledge\.db(?:[-.][A-Za-z0-9_-]+)?|db\.json(?:[-.][A-Za-z0-9_-]+)?|cloud\.env|migration-exports\/[^\s"'<>),\]}]+)\b/gi,L3=/\b(?:postgres(?:ql)?|mysql|mariadb):\/\/[^\s"'<>),\]}]+/gi,SK=new Set(["content_base64"]);function LK(_){return _.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function JK(_){return _.length>=4&&_!=="/"&&!/^[A-Za-z]:[\\/]?$/.test(_)}var j3=null,Fg=[];function WK(){let _=new Set;for(let D of[NK(),gK()]){if(!D)continue;_.add(D);try{_.add(jK(D))}catch{}}let $=[..._].sort().join("\x00");if($===j3)return Fg;return j3=$,Fg=[..._].filter(JK).sort((D,I)=>I.length-D.length).map((D)=>new RegExp(`${LK(D)}(?:[/\\\\]${I4}*)?`,"g")),Fg}function W$(_){return EK("sha256").update(_).digest("hex").slice(0,12)}function PK(_){return _.length<=80?_:`${_.slice(0,77)}...`}function N3(_){return/(?:^|\/)\.hasna(?:\/|$)/i.test(_)||/\b(?:knowledge\.db|db\.json|cloud\.env)\b/i.test(_)||/\bmigration-exports\//i.test(_)}function zK(_,$,D,I){for(let U of _.matchAll(g3)){let E=U[0];if(!D.allowFileSourceRefs||N3(E))I.push({type:N3(E)?"private_file_uri":"local_file_uri",severity:"high",path:$,preview:PK(E.replace(/^file:\/\/.*/,`[redacted:file-uri:${W$(E)}]`))})}for(let U of _.matchAll(A3))I.push({type:"private_hasna_path",severity:"high",path:$,preview:`[redacted:.hasna:${W$(U[0])}]`});for(let U of _.matchAll(S3))I.push({type:U[0].toLowerCase()==="cloud.env"?"workspace_env_file":"raw_database_or_export_ref",severity:"high",path:$,preview:`[redacted:${W$(U[0])}]`});for(let U of _.matchAll(L3))I.push({type:"database_url",severity:"high",path:$,preview:`[redacted:database-url:${W$(U[0])}]`});if(!D.allowPrivateWorkspaceRefs)for(let U of _.matchAll(O3))I.push({type:"private_workspace_path",severity:"medium",path:$,preview:`[redacted:workspace:${W$(U[0])}]`})}function XK(_,$={},D="$"){let I=[],U=(E,j)=>{if(typeof E==="string"){zK(E,j,$,I);return}if(!E||typeof E!=="object")return;if(Array.isArray(E)){E.forEach((N,A)=>U(N,`${j}[${A}]`));return}for(let[N,A]of Object.entries(E))U(A,`${j}.${N}`)};return U(_,D),I}function E4(_,$={}){let D=XK(_,$);if(D.length===0)return;let I=new Map;for(let E of D)I.set(E.type,(I.get(E.type)??0)+1);let U=[...I.entries()].map(([E,j])=>`${E}:${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 GK(_){let $=u_(_).text.replace(L3,(D)=>`[REDACTED:database-url:${W$(D)}]`).replace(g3,(D)=>`[REDACTED:local-file-uri:${W$(D)}]`).replace(AK,(D)=>`[REDACTED:local-hasna-path:${W$(D)}]`).replace(O3,(D)=>`[REDACTED:private-workspace:${W$(D)}]`);for(let D of[...WK(),...OK])$=$.replace(D,(I)=>`[REDACTED:local-path:${W$(I)}]`);return $.replace(A3,(D)=>`[REDACTED:hasna-path:${W$(D)}]`).replace(S3,(D)=>`[REDACTED:private-artifact:${W$(D)}]`)}function F_(_){if(typeof _==="string")return GK(_);if(!_||typeof _!=="object")return _;if(Array.isArray(_))return _.map((D)=>F_(D));let $={};for(let[D,I]of Object.entries(_))$[D]=SK.has(D)?I:F_(I);return $}var TK=20971520,J3=1e4,FK=10;function Mg(_,$){return`${_}_${RK("sha256").update($).digest("hex").slice(0,20)}`}function j4(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function A_(_){return typeof _==="string"&&_.length>0?_:void 0}function VK(_){return typeof _==="number"&&Number.isFinite(_)?_:void 0}function BK(_){let $=A_(_.source_ref)??A_(_.source_uri)??A_(_.uri);if($)return $;let D=A_(_.file_id);if(D){let E=A_(_.revision_id)??A_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return E?`${j}/revision/${encodeURIComponent(E)}`:j}let I=A_(_.source_id),U=A_(_.path);if(I&&U)return`open-files://source/${encodeURIComponent(I)}/path/${encodeURIComponent(U)}`;throw Error("Manifest item is missing source_ref, file_id, or source_id/path.")}function MK(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function bK(_){let $=A_(_.extracted_text)??A_(_.text)??A_(_.content_text)??A_(_.markdown);if($!==void 0)return $;let D=_.content;return typeof D==="string"?D:null}function ZK(_){let $=A_(_.extracted_text_ref)??A_(_.extracted_text_uri)??A_(_.text_ref);if($)return $;let D=j4(_.content);return A_(D?.extracted_text_ref)??A_(D?.extracted_text_uri)??null}function HK(_){let $=A_(_.path);return A_(_.title)??A_(_.name)??($?KK($):null)}function kK(_){return A_(_.hash)??A_(_.checksum)??A_(_.sha256)??null}var W3=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 P3(_){return _.toLowerCase().replace(/[\s-]+/g,"_")}function Bg(_){if(Array.isArray(_))return _.map((I)=>Bg(I));let $=j4(_);if(!$)return _;let D={};for(let[I,U]of Object.entries($)){if(W3.has(P3(I)))continue;D[I]=Bg(U)}return D}function qK(_,$,D){return A_(_.revision_id)??A_(_.revision)??A_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??A_(_.updated_at)??"current"}function CK(_,$){let D={};for(let[I,U]of Object.entries(_)){if(W3.has(P3(I)))continue;D[I]=F_(Bg(U))}return D.source_ref=$.sourceRef,D.source_uri=$.sourceUri,D.status=$.status,D}function vK(_,$,D={}){let I=BK(_);E4(I,{allowFileSourceRefs:D.allowFileSourceRefs===!0});let U=J$(I),E=MK(I,U),j=kK(_),N=A_(_.status)??"active";return{raw:_,sourceRef:I,sourceUri:E,kind:U.kind,title:HK(_),revision:qK(_,U,j),hash:j,extractedTextUri:ZK(_),text:bK(_),metadata:CK(_,{sourceRef:I,sourceUri:E,status:N}),acl:_.permissions??_.acl??{},status:N,updatedAt:A_(_.updated_at)??$}}function wK(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Manifest array parse failed.");return D.map((I)=>{let U=j4(I);if(!U)throw Error("Manifest array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),I=j4(D);if(!I)throw Error("Manifest object parse failed.");if(Array.isArray(I.items))return I.items.map((U)=>{let E=j4(U);if(!E)throw Error("Manifest items entries must be objects.");return E});if("source_ref"in I||"source_uri"in I||"file_id"in I)return[I]}catch(D){let I=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(I.length<=1)throw D;return I.map((U)=>{let E=j4(JSON.parse(U));if(!E)throw Error("Manifest JSONL entries must be objects.");return E})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let I=j4(JSON.parse(D));if(!I)throw Error("Manifest JSONL entries must be objects.");return I})}async function rK(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 manifest URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,L=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!L.Body)return"";return await L.Body.transformToString()}async function fK(_,$,D,I=TK){let U=_.startsWith("s3://")?await rK(_,$,D):(()=>{if(!YK(_))throw Error(`Manifest not found: ${_}`);return QK(_,"utf8")})(),E=Buffer.byteLength(U);if(E>I)throw Error(`Manifest input is too large: ${E} bytes exceeds ${I} byte limit.`);return U}function xK(_,$,D){let I=_.replace(/\r\n/g,` `);if(!I.trim())return[];let U=[],E=0;while(E<I.length){let j=Math.min(I.length,E+$),N=j;if(j<I.length){let O=I.lastIndexOf(` -`,j),L=I.lastIndexOf(". ",j),J=Math.max(O,L);if(J>E+Math.floor($*0.5))N=J+(J===O?2:1)}let A=I.slice(E,N).trim();if(A)U.push({ordinal:U.length,text:A,startOffset:E,endOffset:N});if(N>=I.length)break;E=Math.max(0,N-D)}return U}function uK(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function yK(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($);for(let I of D)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[I.id]);return _.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]),D.length}function hK(_,$,D){let I=Mg("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) +`,j),S=I.lastIndexOf(". ",j),L=Math.max(O,S);if(L>E+Math.floor($*0.5))N=L+(L===O?2:1)}let A=I.slice(E,N).trim();if(A)U.push({ordinal:U.length,text:A,startOffset:E,endOffset:N});if(N>=I.length)break;E=Math.max(0,N-D)}return U}function uK(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function yK(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($);for(let I of D)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[I.id]);return _.run("DELETE FROM chunks WHERE source_revision_id = ?",[$]),D.length}function hK(_,$,D){let I=Mg("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, @@ -610,8 +610,8 @@ VALUES (10, datetime('now')); ON CONFLICT(source_id, revision) DO UPDATE SET hash = excluded.hash, extracted_text_uri = excluded.extracted_text_uri, - metadata_json = excluded.metadata_json`,[U,$,D.revision,D.hash,D.extractedTextUri,JSON.stringify(D.metadata),I]);let E=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision);if(!E)throw Error(`Failed to upsert source revision: ${D.sourceRef}`);return E.id}function nK(_,$,D,I,U,E,j){if(!D.text||D.status.toLowerCase()==="deleted")return{chunksInserted:0,redactions:0};let N=y_(D.text,j);if(N.findings.length>0)R0(_,{source_uri:D.sourceUri,findings:N.findings,metadata:{source_ref:D.sourceRef,revision:D.revision},created_at:I}),G_(_,{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:I});let A=xK(N.text,U,E);for(let O of A){let L=Mg("chk",`${$}\x00${O.ordinal}\x00${O.text}`),J=M6({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:O.startOffset,end_offset:O.endOffset,status:D.status,resolver:"open-files-read-only"}),P=ez({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:VK(D.raw.size)??null},J);_.run(`INSERT INTO chunks (id, source_revision_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[L,$,"source",O.ordinal,O.text,uK(O.text),O.startOffset,O.endOffset,JSON.stringify(P),I]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[L,O.text,D.title??"",D.sourceUri])}return{chunksInserted:A.length,redactions:N.findings.length}}async function z3(_){let $=_.now??new Date;if(_.safetyPolicy)N6(_.dbPath,_.safetyPolicy);h(_.dbPath);let D=await fK(_.input,_.config,_.safetyPolicy,_.maxInputBytes),I=wK(D),U=_.maxItems??J3;if(I.length>U)throw Error(`Manifest contains too many items: ${I.length} exceeds ${U} item limit.`);return N4({dbPath:_.dbPath,items:I,sourceLabel:_.input,allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")===!0,safetyPolicy:_.safetyPolicy,now:$,maxChunkChars:_.maxChunkChars,chunkOverlapChars:_.chunkOverlapChars,maxItems:_.maxItems})}async function N4(_){let $=(_.now??new Date).toISOString(),D=_.maxChunkChars??4000,I=_.chunkOverlapChars??200,U=_.maxItems??J3;if(D<500)throw Error("maxChunkChars must be at least 500.");if(I<0||I>=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)N6(_.dbPath,_.safetyPolicy);h(_.dbPath);let E=w(_.dbPath);try{return E.transaction(()=>{let N=new Set,A=new Set,O=0,L=0,J=0,P=0,z=[];G_(E,{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 S of _.items){let W=vK(S,$,{allowFileSourceRefs:_.allowFileSourceRefs});if(z.length<FK)z.push({source_ref:W.sourceRef,title:W.title,status:W.status,has_text:Boolean(W.text)});let X=hK(E,W,$),G=cK(E,X,W,$);if(N.add(X),A.add(G),W.text||W.status.toLowerCase()==="deleted")L+=yK(E,G);let R=nK(E,G,W,$,D,I,_.safetyPolicy);O+=R.chunksInserted,J+=R.redactions}return G_(E,{event_type:"write",action:"knowledge_manifest_ingest",target_uri:_.dbPath,decision:"allow",metadata:{items:_.items.length,sources:N.size,revisions:A.size,chunks_inserted:O,redactions:J},created_at:$}),{path:_.sourceLabel,db_path:_.dbPath,items_seen:_.items.length,sources_upserted:N.size,revisions_upserted:A.size,chunks_inserted:O,chunks_deleted:L,redactions:J,skipped:P,items_preview:z}})()}finally{E.close()}}function _I(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function g4(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function X3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function dK(_,$){let D=_.mode;if(typeof D==="string"&&D!=="read_only")throw Error(`Source resolver denied ${$}. Permission mode is ${D}, expected read_only.`);let I=_.denied_purposes;if(Array.isArray(I)&&I.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 mK(_,$,D){if(!$)return D;try{let I=J$(_);if(I.kind==="open-files"&&I.entity==="file")return`${_}/revision/${encodeURIComponent($.revision)}`}catch{return D}return D}function lK(_,$,D){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),I]);let E=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision);if(!E)throw Error(`Failed to upsert source revision: ${D.sourceRef}`);return E.id}function nK(_,$,D,I,U,E,j){if(!D.text||D.status.toLowerCase()==="deleted")return{chunksInserted:0,redactions:0};let N=u_(D.text,j);if(N.findings.length>0)R0(_,{source_uri:D.sourceUri,findings:N.findings,metadata:{source_ref:D.sourceRef,revision:D.revision},created_at:I}),R_(_,{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:I});let A=xK(N.text,U,E);for(let O of A){let S=Mg("chk",`${$}\x00${O.ordinal}\x00${O.text}`),L=M6({source_ref:D.sourceRef,source_uri:D.sourceUri,source_kind:D.kind,source_revision_id:$,revision:D.revision,hash:D.hash,chunk_id:S,start_offset:O.startOffset,end_offset:O.endOffset,status:D.status,resolver:"open-files-read-only"}),P=ez({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:A_(D.raw.path)??null,mime:A_(D.raw.mime)??A_(D.raw.content_type)??null,size:VK(D.raw.size)??null},L);_.run(`INSERT INTO chunks (id, source_revision_id, kind, ordinal, text, token_count, start_offset, end_offset, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[S,$,"source",O.ordinal,O.text,uK(O.text),O.startOffset,O.endOffset,JSON.stringify(P),I]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[S,O.text,D.title??"",D.sourceUri])}return{chunksInserted:A.length,redactions:N.findings.length}}async function z3(_){let $=_.now??new Date;if(_.safetyPolicy)N6(_.dbPath,_.safetyPolicy);c(_.dbPath);let D=await fK(_.input,_.config,_.safetyPolicy,_.maxInputBytes),I=wK(D),U=_.maxItems??J3;if(I.length>U)throw Error(`Manifest contains too many items: ${I.length} exceeds ${U} item limit.`);return N4({dbPath:_.dbPath,items:I,sourceLabel:_.input,allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")===!0,safetyPolicy:_.safetyPolicy,now:$,maxChunkChars:_.maxChunkChars,chunkOverlapChars:_.chunkOverlapChars,maxItems:_.maxItems})}async function N4(_){let $=(_.now??new Date).toISOString(),D=_.maxChunkChars??4000,I=_.chunkOverlapChars??200,U=_.maxItems??J3;if(D<500)throw Error("maxChunkChars must be at least 500.");if(I<0||I>=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)N6(_.dbPath,_.safetyPolicy);c(_.dbPath);let E=w(_.dbPath);try{return E.transaction(()=>{let N=new Set,A=new Set,O=0,S=0,L=0,P=0,z=[];R_(E,{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 G of _.items){let J=vK(G,$,{allowFileSourceRefs:_.allowFileSourceRefs});if(z.length<FK)z.push({source_ref:J.sourceRef,title:J.title,status:J.status,has_text:Boolean(J.text)});let W=hK(E,J,$),X=cK(E,W,J,$);if(N.add(W),A.add(X),J.text||J.status.toLowerCase()==="deleted")S+=yK(E,X);let R=nK(E,X,J,$,D,I,_.safetyPolicy);O+=R.chunksInserted,L+=R.redactions}return R_(E,{event_type:"write",action:"knowledge_manifest_ingest",target_uri:_.dbPath,decision:"allow",metadata:{items:_.items.length,sources:N.size,revisions:A.size,chunks_inserted:O,redactions:L},created_at:$}),{path:_.sourceLabel,db_path:_.dbPath,items_seen:_.items.length,sources_upserted:N.size,revisions_upserted:A.size,chunks_inserted:O,chunks_deleted:S,redactions:L,skipped:P,items_preview:z}})()}finally{E.close()}}function _I(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function g4(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function X3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function dK(_,$){let D=_.mode;if(typeof D==="string"&&D!=="read_only")throw Error(`Source resolver denied ${$}. Permission mode is ${D}, expected read_only.`);let I=_.denied_purposes;if(Array.isArray(I)&&I.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 mK(_,$,D){if(!$)return D;try{let I=J$(_);if(I.kind==="open-files"&&I.entity==="file")return`${_}/revision/${encodeURIComponent($.revision)}`}catch{return D}return D}function lK(_,$,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 @@ -626,13 +626,13 @@ VALUES (10, datetime('now')); FROM chunks WHERE source_revision_id = ? ORDER BY ordinal ASC - LIMIT ?`).all($,D)}async function $I(_){let $=_.purpose??"knowledge_answer",D=Math.max(0,Math.min(_.limit??10,100)),I=(_.now??new Date).toISOString(),U=J$(_.sourceRef),E=sz(_.sourceRef,U),j=_3(_.sourceRef);if(_.safetyPolicy){if(!_.safetyPolicy.readOnlySourceAccess)throw Error("Safety policy denied source resolution.");N6(_.dbPath,_.safetyPolicy)}h(_.dbPath);let N=w(_.dbPath);try{return N.transaction(()=>{let A=lK(N,E,_.sourceRef);if(!A)return G_(N,{event_type:"source_read",action:"open_files_resolve_missing",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:E},created_at:I}),{source_ref:_.sourceRef,source_uri:E,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 O=_I(A.metadata_json),L=_I(A.acl_json);try{dK(L,$)}catch(Y){throw G_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"deny",metadata:{purpose:$,read_only:!0,source_uri:A.uri,error:Y instanceof Error?Y.message:String(Y)},created_at:I}),Y}let J=iK(N,A.id,j),P=_I(J?.metadata_json),z=tK(N,J?.id??null),S=oK(N,J?.id??null,D),W=mK(A.uri,J,_.sourceRef),X=S.map((Y)=>{let T=_I(Y.metadata_json),F={resolver:"open-files-read-only",mode:"local_catalog",purpose:$,read_only:!0,source_ref:g4(T,["source_ref"])??W,source_uri:A.uri,source_revision_id:J?.id??null,revision:J?.revision??null,hash:J?.hash??g4(T,["hash"]),chunk_id:Y.id,start_offset:Y.start_offset,end_offset:Y.end_offset,resolved_at:I},k=M6({source_ref:F.source_ref,source_uri:F.source_uri,source_kind:A.kind,source_revision_id:F.source_revision_id,revision:F.revision,hash:F.hash,chunk_id:Y.id,start_offset:Y.start_offset,end_offset:Y.end_offset,status:g4(T,["status"]),resolver:F.resolver});return{id:Y.id,kind:Y.kind,ordinal:Y.ordinal,text:Y.text,token_count:Y.token_count,start_offset:Y.start_offset,end_offset:Y.end_offset,metadata:T,evidence:F,provenance:k}}),G=X.map((Y)=>({source_ref:Y.evidence.source_ref,source_uri:A.uri,chunk_id:Y.id,quote:Y.text.slice(0,500),start_offset:Y.start_offset,end_offset:Y.end_offset,evidence:Y.evidence,provenance:Y.provenance}));G_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:A.uri,revision:J?.revision??null,chunks_returned:X.length,chunks_total:z},created_at:I});let R=g4(O,["mime","content_type"])??g4(P,["mime","content_type"]),K=X3(O,["size","size_bytes"])??X3(P,["size","size_bytes"]);return{source_ref:W,source_uri:A.uri,purpose:$,read_only:!0,resolved:!0,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:{id:A.id,uri:A.uri,kind:A.kind,title:A.title,metadata:O,permissions:L,updated_at:A.updated_at},revision:J?{id:J.id,revision:J.revision,hash:J.hash,extracted_text_uri:J.extracted_text_uri,metadata:P,created_at:J.created_at,reindex_required:P.reindex_required===!0}:null,content:{mime:R,size:K,hash:J?.hash??g4(O,["hash","checksum","sha256"]),text_available:z>0,chunks_total:z,chunks_returned:X.length,char_count_returned:X.reduce((Y,T)=>Y+T.text.length,0),extracted_text_ref:J?.extracted_text_uri??g4(P,["extracted_text_ref","extracted_text_uri"]),bytes_available:!1,bytes_exposed:!1},chunks:X,citations:G}})()}finally{N.close()}}function Y0(_){return`sha256:${pK("sha256").update(_).digest("hex")}`}function sK(_){return _.replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<style[\s\S]*?<\/style>/gi," ").replace(/<[^>]+>/g," ").replace(/ /g," ").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/\s+\n/g,` + LIMIT ?`).all($,D)}async function $I(_){let $=_.purpose??"knowledge_answer",D=Math.max(0,Math.min(_.limit??10,100)),I=(_.now??new Date).toISOString(),U=J$(_.sourceRef),E=sz(_.sourceRef,U),j=_3(_.sourceRef);if(_.safetyPolicy){if(!_.safetyPolicy.readOnlySourceAccess)throw Error("Safety policy denied source resolution.");N6(_.dbPath,_.safetyPolicy)}c(_.dbPath);let N=w(_.dbPath);try{return N.transaction(()=>{let A=lK(N,E,_.sourceRef);if(!A)return R_(N,{event_type:"source_read",action:"open_files_resolve_missing",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:E},created_at:I}),{source_ref:_.sourceRef,source_uri:E,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 O=_I(A.metadata_json),S=_I(A.acl_json);try{dK(S,$)}catch(Y){throw R_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"deny",metadata:{purpose:$,read_only:!0,source_uri:A.uri,error:Y instanceof Error?Y.message:String(Y)},created_at:I}),Y}let L=iK(N,A.id,j),P=_I(L?.metadata_json),z=tK(N,L?.id??null),G=oK(N,L?.id??null,D),J=mK(A.uri,L,_.sourceRef),W=G.map((Y)=>{let Q=_I(Y.metadata_json),F={resolver:"open-files-read-only",mode:"local_catalog",purpose:$,read_only:!0,source_ref:g4(Q,["source_ref"])??J,source_uri:A.uri,source_revision_id:L?.id??null,revision:L?.revision??null,hash:L?.hash??g4(Q,["hash"]),chunk_id:Y.id,start_offset:Y.start_offset,end_offset:Y.end_offset,resolved_at:I},q=M6({source_ref:F.source_ref,source_uri:F.source_uri,source_kind:A.kind,source_revision_id:F.source_revision_id,revision:F.revision,hash:F.hash,chunk_id:Y.id,start_offset:Y.start_offset,end_offset:Y.end_offset,status:g4(Q,["status"]),resolver:F.resolver});return{id:Y.id,kind:Y.kind,ordinal:Y.ordinal,text:Y.text,token_count:Y.token_count,start_offset:Y.start_offset,end_offset:Y.end_offset,metadata:Q,evidence:F,provenance:q}}),X=W.map((Y)=>({source_ref:Y.evidence.source_ref,source_uri:A.uri,chunk_id:Y.id,quote:Y.text.slice(0,500),start_offset:Y.start_offset,end_offset:Y.end_offset,evidence:Y.evidence,provenance:Y.provenance}));R_(N,{event_type:"source_read",action:"open_files_resolve",target_uri:_.sourceRef,decision:"allow",metadata:{purpose:$,read_only:!0,source_uri:A.uri,revision:L?.revision??null,chunks_returned:W.length,chunks_total:z},created_at:I});let R=g4(O,["mime","content_type"])??g4(P,["mime","content_type"]),T=X3(O,["size","size_bytes"])??X3(P,["size","size_bytes"]);return{source_ref:J,source_uri:A.uri,purpose:$,read_only:!0,resolved:!0,resolver:{name:"open-files-read-only",mode:"local_catalog",contract:"open-files-knowledge-source-v1"},source:{id:A.id,uri:A.uri,kind:A.kind,title:A.title,metadata:O,permissions:S,updated_at:A.updated_at},revision:L?{id:L.id,revision:L.revision,hash:L.hash,extracted_text_uri:L.extracted_text_uri,metadata:P,created_at:L.created_at,reindex_required:P.reindex_required===!0}:null,content:{mime:R,size:T,hash:L?.hash??g4(O,["hash","checksum","sha256"]),text_available:z>0,chunks_total:z,chunks_returned:W.length,char_count_returned:W.reduce((Y,Q)=>Y+Q.text.length,0),extracted_text_ref:L?.extracted_text_uri??g4(P,["extracted_text_ref","extracted_text_uri"]),bytes_available:!1,bytes_exposed:!1},chunks:W,citations:X}})()}finally{N.close()}}function Y0(_){return`sha256:${pK("sha256").update(_).digest("hex")}`}function sK(_){return _.replace(/<script[\s\S]*?<\/script>/gi," ").replace(/<style[\s\S]*?<\/style>/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 _T(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 source URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,J=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!J.Body)return"";return await J.Body.transformToString()}async function $T(_,$){if($)G0($);let D=await P0(_,{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 I=D.headers.get("content-type"),U=await D.text();return{text:I?.includes("html")?sK(U):U,mime:I}}function UI(_){if(_.kind==="file")return DI(_.path);if(_.kind==="s3")return DI(_.key);if(_.kind==="web")return DI(new URL(_.url).pathname)||_.url;return _.path?DI(_.path):_.id}async function G3(_,$,D){if(_.kind==="file"){if(!eK(_.path))throw Error(`Source file not found: ${_.path}`);let I=aK(_.path,"utf8");return{text:I,contentSource:"file",title:UI(_),mime:"text/plain",size:I.length,hash:Y0(I),revision:null,extractedTextRef:null,metadata:{path:_.path},permissions:{mode:"read_only"}}}if(_.kind==="s3"){let I=await _T(_.uri,$,D);return{text:I,contentSource:"s3",title:UI(_),mime:"text/plain",size:I.length,hash:Y0(I),revision:null,extractedTextRef:null,metadata:{bucket:_.bucket,key:_.key},permissions:{mode:"read_only"}}}if(_.kind==="web"){let I=await $T(_.url,D);return{text:I.text,contentSource:"web",title:UI(_),mime:I.mime,size:I.text.length,hash:Y0(I.text),revision:null,extractedTextRef:null,metadata:{url:_.url},permissions:{mode:"read_only"}}}throw Error(`Direct source reading is not available for ${_.uri}`)}async function DT(_,$,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 I=J$(_);return{text:(await G3(I,$,D)).text,contentSource:"extracted_text_ref"}}async function UT(_){let $=await $I({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 I=await DT($.revision.extracted_text_uri,_.config,_.safetyPolicy);return{text:I.text,contentSource:I.contentSource,title:$.source?.title??null,mime:$.content.mime,size:I.text.length,hash:$.revision.hash??Y0(I.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((I)=>I.text).join(` +`).replace(/[ \t]{2,}/g," ").trim()}async function _T(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 source URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,L=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!L.Body)return"";return await L.Body.transformToString()}async function $T(_,$){if($)G0($);let D=await P0(_,{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 I=D.headers.get("content-type"),U=await D.text();return{text:I?.includes("html")?sK(U):U,mime:I}}function UI(_){if(_.kind==="file")return DI(_.path);if(_.kind==="s3")return DI(_.key);if(_.kind==="web")return DI(new URL(_.url).pathname)||_.url;return _.path?DI(_.path):_.id}async function G3(_,$,D){if(_.kind==="file"){if(!eK(_.path))throw Error(`Source file not found: ${_.path}`);let I=aK(_.path,"utf8");return{text:I,contentSource:"file",title:UI(_),mime:"text/plain",size:I.length,hash:Y0(I),revision:null,extractedTextRef:null,metadata:{path:_.path},permissions:{mode:"read_only"}}}if(_.kind==="s3"){let I=await _T(_.uri,$,D);return{text:I,contentSource:"s3",title:UI(_),mime:"text/plain",size:I.length,hash:Y0(I),revision:null,extractedTextRef:null,metadata:{bucket:_.bucket,key:_.key},permissions:{mode:"read_only"}}}if(_.kind==="web"){let I=await $T(_.url,D);return{text:I.text,contentSource:"web",title:UI(_),mime:I.mime,size:I.text.length,hash:Y0(I.text),revision:null,extractedTextRef:null,metadata:{url:_.url},permissions:{mode:"read_only"}}}throw Error(`Direct source reading is not available for ${_.uri}`)}async function DT(_,$,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 I=J$(_);return{text:(await G3(I,$,D)).text,contentSource:"extracted_text_ref"}}async function UT(_){let $=await $I({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 I=await DT($.revision.extracted_text_uri,_.config,_.safetyPolicy);return{text:I.text,contentSource:I.contentSource,title:$.source?.title??null,mime:$.content.mime,size:I.text.length,hash:$.revision.hash??Y0(I.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((I)=>I.text).join(` `);return{text:D,contentSource:"catalog_chunks",title:$.source?.title??null,mime:$.content.mime,size:D.length,hash:$.revision?.hash??Y0(D),revision:$.revision?.revision??null,extractedTextRef:$.revision?.extracted_text_uri??null,metadata:$.source?.metadata??{},permissions:$.source?.permissions??{mode:"read_only"}}}function IT(_,$,D,I){let U=D.hash??Y0(D.text),E={...F_(D.metadata),source_ref:_,content_source:D.contentSource,read_only:!0},j={source_ref:_,name:D.title??UI($),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:[I],...D.permissions},metadata:E,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 II(_){let $=_.purpose??"knowledge_index";E4(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1});let D=J$(_.sourceRef),I=D.kind==="open-files"?await UT(_):await G3(D,_.config,_.safetyPolicy),U=IT(_.sourceRef,D,I,$);return{...await N4({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:I.contentSource,read_only:!0,hash:String(U.hash)}}function EI(_,$){return`${_}_${ET("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 bg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function gT(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function R3(_){return Array.from(new Set((_??[]).map(($)=>$.trim()).filter(Boolean)))}function AT(_){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((I)=>I===".."||I==="."))throw Error(`Invalid app wiki note path: ${$}`);return D}function OT(_){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 Y3(_,$){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,...X0($.body),metadata:{...$.metadata??{}}}}async function LT(_,$,D){let I=String(D.getUTCFullYear()),U=String(D.getUTCMonth()+1).padStart(2,"0"),E=String(D.getUTCDate()).padStart(2,"0"),j=`logs/${I}/${U}/${E}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return Y3(_,{key:j,body:`${N}${JSON.stringify($)} -`,content_type:"application/x-ndjson",metadata:{provenance:N$({generated_from:String($.event??"app_wiki_log"),artifact_key:j})}})}function ST(_){return{...F_(_.metadata??{}),app_wiki:!0,note:!0,artifact_key:_.path,tags:_.tags,source_refs:_.sourceRefs,provenance:_.provenance}}function Zg(_){let $=bg(_.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 JT(_,$){return $.map((D)=>{let I=_.query(`SELECT +`)}async function Y3(_,$){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,...X0($.body),metadata:{...$.metadata??{}}}}async function ST(_,$,D){let I=String(D.getUTCFullYear()),U=String(D.getUTCMonth()+1).padStart(2,"0"),E=String(D.getUTCDate()).padStart(2,"0"),j=`logs/${I}/${U}/${E}.jsonl`,N="";try{N=await _.getText(j)}catch{N=""}return Y3(_,{key:j,body:`${N}${JSON.stringify($)} +`,content_type:"application/x-ndjson",metadata:{provenance:N$({generated_from:String($.event??"app_wiki_log"),artifact_key:j})}})}function LT(_){return{...F_(_.metadata??{}),app_wiki:!0,note:!0,artifact_key:_.path,tags:_.tags,source_refs:_.sourceRefs,provenance:_.provenance}}function Zg(_){let $=bg(_.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 JT(_,$){return $.map((D)=>{let I=_.query(`SELECT s.uri AS source_uri, c.id AS chunk_id, c.text, @@ -661,21 +661,21 @@ VALUES (10, datetime('now')); 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 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 I=EI("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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,$.pageId,"wiki",0,$.body,gT($.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 (?, ?, ?, ?)",[I,$.body,$.title,$.artifactUri])}function mD(_){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)N6(_.workspace.knowledgeDbPath,_.safetyPolicy)}async function Q3(_){mD(_);let $=h(_.workspace.knowledgeDbPath),D=w(_.workspace.knowledgeDbPath);try{G_(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 K3(_){mD(_);let $=_.now??new Date,D=$.toISOString(),I=R3(_.tags),U=R3(_.sourceRefs);for(let J of U)E4(J,{allowFileSourceRefs:_.safetyPolicy?.readOnlySourceAccess===!0});let E=AT(_),j=OT({title:_.title,content:_.content,tags:I,sourceRefs:U,now:D}),N=N$({generated_from:"app_wiki_note",artifact_key:E,source_refs:U}),A=await Y3(_.store,{key:E,body:j,content_type:"text/markdown",metadata:{generated_from:"app_wiki_note",provenance:N,scope:_.scope,tags:I.join(","),source_refs:U.join(",")}}),O=await LT(_.store,{ts:D,event:"app_wiki_note_written",page_key:E,source_refs:U,tags:I},$);h(_.workspace.knowledgeDbPath);let L=w(_.workspace.knowledgeDbPath);try{let J=EI("wiki",E),P=ST({path:E,tags:I,sourceRefs:U,provenance:N,metadata:_.metadata});j6(L,[A,O],$),zT(L,{pageId:J,path:E,title:_.title,artifactUri:A.uri,contentHash:A.hash??"",body:j,metadata:P,now:D});let z=WT(L,J,U,D);PT(L,{title:_.title,path:E,artifactUri:A.uri,contentHash:A.hash??"",tags:I,sourceRefs:U,now:D}),G_(L,{event_type:"write",action:"app_wiki_note_write",target_uri:A.uri,decision:"allow",metadata:{scope:_.scope,path:E,source_refs:U,tags:I},created_at:D});let S=L.query("SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE id = ?").get(J);if(!S)throw Error(`Failed to write app wiki note: ${E}`);return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,note:Zg(S),artifact_uri:A.uri,content_hash:A.hash??"",citations_written:z,chunks_written:1,storage_objects_written:2,message:`Wrote app wiki note ${E}`}}finally{L.close()}}function T3(_){let $=Math.max(1,Math.min(_.limit??50,200));if(!_.dbPath)return[];h(_.dbPath);let D=w(_.dbPath);try{return D.query(`SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[I,$.pageId,"wiki",0,$.body,gT($.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 (?, ?, ?, ?)",[I,$.body,$.title,$.artifactUri])}function mD(_){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)N6(_.workspace.knowledgeDbPath,_.safetyPolicy)}async function Q3(_){mD(_);let $=c(_.workspace.knowledgeDbPath),D=w(_.workspace.knowledgeDbPath);try{R_(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 K3(_){mD(_);let $=_.now??new Date,D=$.toISOString(),I=R3(_.tags),U=R3(_.sourceRefs);for(let L of U)E4(L,{allowFileSourceRefs:_.safetyPolicy?.readOnlySourceAccess===!0});let E=AT(_),j=OT({title:_.title,content:_.content,tags:I,sourceRefs:U,now:D}),N=N$({generated_from:"app_wiki_note",artifact_key:E,source_refs:U}),A=await Y3(_.store,{key:E,body:j,content_type:"text/markdown",metadata:{generated_from:"app_wiki_note",provenance:N,scope:_.scope,tags:I.join(","),source_refs:U.join(",")}}),O=await ST(_.store,{ts:D,event:"app_wiki_note_written",page_key:E,source_refs:U,tags:I},$);c(_.workspace.knowledgeDbPath);let S=w(_.workspace.knowledgeDbPath);try{let L=EI("wiki",E),P=LT({path:E,tags:I,sourceRefs:U,provenance:N,metadata:_.metadata});j6(S,[A,O],$),zT(S,{pageId:L,path:E,title:_.title,artifactUri:A.uri,contentHash:A.hash??"",body:j,metadata:P,now:D});let z=WT(S,L,U,D);PT(S,{title:_.title,path:E,artifactUri:A.uri,contentHash:A.hash??"",tags:I,sourceRefs:U,now:D}),R_(S,{event_type:"write",action:"app_wiki_note_write",target_uri:A.uri,decision:"allow",metadata:{scope:_.scope,path:E,source_refs:U,tags:I},created_at:D});let G=S.query("SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at FROM wiki_pages WHERE id = ?").get(L);if(!G)throw Error(`Failed to write app wiki note: ${E}`);return{ok:!0,scope:_.scope,workspace_home:_.workspace.home,note:Zg(G),artifact_uri:A.uri,content_hash:A.hash??"",citations_written:z,chunks_written:1,storage_objects_written:2,message:`Wrote app wiki note ${E}`}}finally{S.close()}}function T3(_){let $=Math.max(1,Math.min(_.limit??50,200));if(!_.dbPath)return[];c(_.dbPath);let D=w(_.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(Zg)}finally{D.close()}}async function F3(_){h(_.dbPath);let $=w(_.dbPath);try{let D=$.query(`SELECT id, path, title, artifact_uri, content_hash, metadata_json, created_at, updated_at + LIMIT ?`).all($).map(Zg)}finally{D.close()}}async function F3(_){c(_.dbPath);let $=w(_.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(!D)return null;let I=$.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(D.id).map((E)=>({...E,metadata:bg(E.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:Zg(D),citations:I,content:U}}finally{$.close()}}async function V3(_){return mD(_),E4(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1}),II({dbPath:_.workspace.knowledgeDbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",config:_.config,safetyPolicy:_.safetyPolicy})}import{randomUUID as hg}from"crypto";import{randomUUID as XT}from"crypto";var Hg={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"}},GT={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}},RT={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 M3(_){return _?.providers??{}}function g6(_,$){let D=M3(_)[$]??{};return{...Hg[$],...D}}function b3(_){let $=M3(_);return{...RT,...$.default_model?{default:$.default_model}:{},...$.aliases??{}}}function x_(_){let[$,...D]=_.split(":"),I=D.join(":");if($!=="openai"&&$!=="anthropic"&&$!=="deepseek")throw Error(`Unsupported AI provider: ${$}`);if(!I)throw Error(`Invalid model ref: ${_}. Expected provider:model.`);return{provider:$,model:I}}function T$(_,$){return b3($)[_]??_}function kg(_){let $=b3(_);return Object.entries($).map(([D,I])=>{let U=x_(I);return{alias:D,model_ref:I,provider:U.provider,model:U.model,default:D==="default",capabilities:GT[U.provider]}})}function Z3(_,$=process.env){return Object.keys(Hg).map((D)=>{let I=g6(_,D),U=Boolean($[I.api_key_env]);return{provider:D,api_key_env:I.api_key_env,configured:U,source:U?"env":"missing",base_url:I.base_url??null,default_model:I.default_model}})}function H3(_,$=process.env){return{default_model:T$("default",_),providers:Z3(_,$),models:kg(_)}}function A4(_,$,D=process.env){let I=Z3($,D).find((U)=>U.provider===_);if(!I)throw Error(`Unsupported AI provider: ${_}`);if(!I.configured)throw Error(`Missing ${I.api_key_env} for ${_}. Set the env var to use this provider.`);return I}async function YT(_){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 QT(_={}){let{createProviderRegistry:$}=await import("ai"),D=_.env??process.env,I={};for(let U of Object.keys(Hg)){let E=g6(_.config,U),j=D[E.api_key_env];if(!j)continue;let N=_.factories?.[U]??await YT(U);I[U]=N({apiKey:j,baseURL:E.base_url})}return $(I)}async function lD(_,$={}){let D=T$(_,$.config),I=x_(D);return A4(I.provider,$.config,$.env),(await QT($)).languageModel(D)}function B3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return 0}function O4(_){let $=_.usage??{};return{provider:_.provider,model:_.model,input_tokens:B3($,["inputTokens","promptTokens","input_tokens","prompt_tokens"]),output_tokens:B3($,["outputTokens","completionTokens","output_tokens","completion_tokens"]),cost_usd:_.costUsd??0,metadata:{usage:$,provider_metadata:_.providerMetadata??{}}}}function Q0(_,$){let D=`usage_${XT()}`;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 lT}from"crypto";import{existsSync as ZT,readFileSync as HT}from"fs";import{createHash as C3}from"crypto";var KT="openai:text-embedding-3-small",v3=1536;function jI(_){return _?.embeddings??{}}function k3(_,$){return`${_}_${C3("sha256").update($).digest("hex").slice(0,20)}`}function Cg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function F$(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function q3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function qg(_){return Math.sqrt(_.reduce(($,D)=>$+D*D,0))}function TT(_,$,D=qg($)){let I=qg(_);if(I===0||D===0)return 0;let U=Math.min(_.length,$.length),E=0;for(let j=0;j<U;j+=1)E+=_[j]*$[j];return E/(I*D)}function FT(_,$){let D=C3("sha256").update(_).digest();return Array.from({length:$},(I,U)=>{let E=D[U%D.length]/255;return Number((E*2-1).toFixed(6))})}async function VT(_,$,D=process.env){A4("openai",$,D);let I=g6($,"openai"),{createOpenAI:U}=await import("@ai-sdk/openai"),E=U({apiKey:D[I.api_key_env],baseURL:I.base_url});if(E.embeddingModel)return E.embeddingModel(_);if(E.textEmbedding)return E.textEmbedding(_);if(E.textEmbeddingModel)return E.textEmbeddingModel(_);throw Error("OpenAI provider does not expose an embedding model factory.")}function L4(_,$){if(!_||_==="default"||_==="embedding")return jI($).default_model??KT;return _}async function w3(_,$={}){let D=L4($.modelRef,$.config),I=x_(D);if(I.provider!=="openai")throw Error(`Embedding provider ${I.provider} is not supported yet. Use openai:text-embedding-3-small.`);let U=$.dimensions??jI($.config).dimensions??v3;if($.fake)return{provider:I.provider,model:I.model,dimensions:U,vectors:_.map((O)=>FT(O,U)),usage:{input_tokens:_.reduce((O,L)=>O+Math.max(1,Math.ceil(L.split(/\s+/).filter(Boolean).length*1.25)),0)}};let{embedMany:E}=await import("ai"),j=await VT(I.model,$.config,$.env),N=await E({model:j,values:_,maxParallelCalls:$.maxParallelCalls??jI($.config).max_parallel_calls,providerOptions:{openai:{dimensions:U}}}),A=N.embeddings;return{provider:I.provider,model:I.model,dimensions:A[0]?.length??U,vectors:A,usage:{input_tokens:N.usage?.tokens??0}}}function BT(_,$){if($.sourceRevisionId)return _.query(`SELECT + ORDER BY created_at ASC`).all(D.id).map((E)=>({...E,metadata:bg(E.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:Zg(D),citations:I,content:U}}finally{$.close()}}async function V3(_){return mD(_),E4(_.sourceRef,{allowFileSourceRefs:_.config?.sources.allowed_schemes.includes("file")!==!1}),II({dbPath:_.workspace.knowledgeDbPath,sourceRef:_.sourceRef,purpose:_.purpose??"knowledge_index",config:_.config,safetyPolicy:_.safetyPolicy})}import{randomUUID as hg}from"crypto";import{randomUUID as XT}from"crypto";var Hg={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"}},GT={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}},RT={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 M3(_){return _?.providers??{}}function g6(_,$){let D=M3(_)[$]??{};return{...Hg[$],...D}}function b3(_){let $=M3(_);return{...RT,...$.default_model?{default:$.default_model}:{},...$.aliases??{}}}function f_(_){let[$,...D]=_.split(":"),I=D.join(":");if($!=="openai"&&$!=="anthropic"&&$!=="deepseek")throw Error(`Unsupported AI provider: ${$}`);if(!I)throw Error(`Invalid model ref: ${_}. Expected provider:model.`);return{provider:$,model:I}}function T$(_,$){return b3($)[_]??_}function kg(_){let $=b3(_);return Object.entries($).map(([D,I])=>{let U=f_(I);return{alias:D,model_ref:I,provider:U.provider,model:U.model,default:D==="default",capabilities:GT[U.provider]}})}function Z3(_,$=process.env){return Object.keys(Hg).map((D)=>{let I=g6(_,D),U=Boolean($[I.api_key_env]);return{provider:D,api_key_env:I.api_key_env,configured:U,source:U?"env":"missing",base_url:I.base_url??null,default_model:I.default_model}})}function H3(_,$=process.env){return{default_model:T$("default",_),providers:Z3(_,$),models:kg(_)}}function A4(_,$,D=process.env){let I=Z3($,D).find((U)=>U.provider===_);if(!I)throw Error(`Unsupported AI provider: ${_}`);if(!I.configured)throw Error(`Missing ${I.api_key_env} for ${_}. Set the env var to use this provider.`);return I}async function YT(_){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 QT(_={}){let{createProviderRegistry:$}=await import("ai"),D=_.env??process.env,I={};for(let U of Object.keys(Hg)){let E=g6(_.config,U),j=D[E.api_key_env];if(!j)continue;let N=_.factories?.[U]??await YT(U);I[U]=N({apiKey:j,baseURL:E.base_url})}return $(I)}async function lD(_,$={}){let D=T$(_,$.config),I=f_(D);return A4(I.provider,$.config,$.env),(await QT($)).languageModel(D)}function B3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return 0}function O4(_){let $=_.usage??{};return{provider:_.provider,model:_.model,input_tokens:B3($,["inputTokens","promptTokens","input_tokens","prompt_tokens"]),output_tokens:B3($,["outputTokens","completionTokens","output_tokens","completion_tokens"]),cost_usd:_.costUsd??0,metadata:{usage:$,provider_metadata:_.providerMetadata??{}}}}function Q0(_,$){let D=`usage_${XT()}`;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 lT}from"crypto";import{existsSync as ZT,readFileSync as HT}from"fs";import{createHash as C3}from"crypto";var KT="openai:text-embedding-3-small",v3=1536;function jI(_){return _?.embeddings??{}}function k3(_,$){return`${_}_${C3("sha256").update($).digest("hex").slice(0,20)}`}function Cg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function F$(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function q3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function qg(_){return Math.sqrt(_.reduce(($,D)=>$+D*D,0))}function TT(_,$,D=qg($)){let I=qg(_);if(I===0||D===0)return 0;let U=Math.min(_.length,$.length),E=0;for(let j=0;j<U;j+=1)E+=_[j]*$[j];return E/(I*D)}function FT(_,$){let D=C3("sha256").update(_).digest();return Array.from({length:$},(I,U)=>{let E=D[U%D.length]/255;return Number((E*2-1).toFixed(6))})}async function VT(_,$,D=process.env){A4("openai",$,D);let I=g6($,"openai"),{createOpenAI:U}=await import("@ai-sdk/openai"),E=U({apiKey:D[I.api_key_env],baseURL:I.base_url});if(E.embeddingModel)return E.embeddingModel(_);if(E.textEmbedding)return E.textEmbedding(_);if(E.textEmbeddingModel)return E.textEmbeddingModel(_);throw Error("OpenAI provider does not expose an embedding model factory.")}function S4(_,$){if(!_||_==="default"||_==="embedding")return jI($).default_model??KT;return _}async function w3(_,$={}){let D=S4($.modelRef,$.config),I=f_(D);if(I.provider!=="openai")throw Error(`Embedding provider ${I.provider} is not supported yet. Use openai:text-embedding-3-small.`);let U=$.dimensions??jI($.config).dimensions??v3;if($.fake)return{provider:I.provider,model:I.model,dimensions:U,vectors:_.map((O)=>FT(O,U)),usage:{input_tokens:_.reduce((O,S)=>O+Math.max(1,Math.ceil(S.split(/\s+/).filter(Boolean).length*1.25)),0)}};let{embedMany:E}=await import("ai"),j=await VT(I.model,$.config,$.env),N=await E({model:j,values:_,maxParallelCalls:$.maxParallelCalls??jI($.config).max_parallel_calls,providerOptions:{openai:{dimensions:U}}}),A=N.embeddings;return{provider:I.provider,model:I.model,dimensions:A[0]?.length??U,vectors:A,usage:{input_tokens:N.usage?.tokens??0}}}function BT(_,$){if($.sourceRevisionId)return _.query(`SELECT c.id, c.text, c.token_count, @@ -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 A=$[N],O=D.vectors[N];if(!O)continue;let L=Cg(A.metadata_json),J=MT(A),P=J.source_ref??F$(L,["source_ref"]),z=J.source_uri??A.source_uri??F$(L,["source_uri"]),S=J.revision??A.revision??F$(L,["revision"]),W=J.hash??A.hash??F$(L,["hash"]),X=J.status??F$(L,["status"])??"active",G=JSON.stringify(O);U.run(k3("emb",`${A.id}\x00${D.provider}\x00${D.model}`),A.id,D.provider,D.model,D.dimensions,G,I),E.run(k3("vec",`${A.id}\x00${D.provider}\x00${D.model}`),A.id,A.source_revision_id,D.provider,D.model,D.dimensions,G,qg(O),z,P,S,W,J.start_offset,J.end_offset,A.token_count,X,JSON.stringify({...L,provenance:J,embedded_at:I}),I,I)}})(),$.length}async function NI(_){let $=L4(_.modelRef,_.config),D=x_($);if(D.provider!=="openai")throw Error(`Embedding provider ${D.provider} is not supported yet.`);let I=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??100,1000));h(_.dbPath);let E=w(_.dbPath),j;try{j=BT(E,{provider:D.provider,model:D.model,limit:U,sourceRevisionId:_.sourceRevisionId})}finally{E.close()}if(j.length===0)return{provider:D.provider,model:D.model,dimensions:_.dimensions??jI(_.config).dimensions??v3,chunks_seen:0,chunks_embedded:0,embeddings_upserted:0,vector_entries_upserted:0,usage:{input_tokens:0}};let N=await w3(j.map((O)=>O.text),_),A=w(_.dbPath);try{let O=bT(A,j,N,I);return{provider:N.provider,model:N.model,dimensions:N.dimensions,chunks_seen:j.length,chunks_embedded:j.length,embeddings_upserted:O,vector_entries_upserted:O,usage:N.usage}}finally{A.close()}}function r3(_){h(_);let $=w(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,I=$.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 + `);return _.transaction(()=>{for(let N=0;N<$.length;N+=1){let A=$[N],O=D.vectors[N];if(!O)continue;let S=Cg(A.metadata_json),L=MT(A),P=L.source_ref??F$(S,["source_ref"]),z=L.source_uri??A.source_uri??F$(S,["source_uri"]),G=L.revision??A.revision??F$(S,["revision"]),J=L.hash??A.hash??F$(S,["hash"]),W=L.status??F$(S,["status"])??"active",X=JSON.stringify(O);U.run(k3("emb",`${A.id}\x00${D.provider}\x00${D.model}`),A.id,D.provider,D.model,D.dimensions,X,I),E.run(k3("vec",`${A.id}\x00${D.provider}\x00${D.model}`),A.id,A.source_revision_id,D.provider,D.model,D.dimensions,X,qg(O),z,P,G,J,L.start_offset,L.end_offset,A.token_count,W,JSON.stringify({...S,provenance:L,embedded_at:I}),I,I)}})(),$.length}async function NI(_){let $=S4(_.modelRef,_.config),D=f_($);if(D.provider!=="openai")throw Error(`Embedding provider ${D.provider} is not supported yet.`);let I=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??100,1000));c(_.dbPath);let E=w(_.dbPath),j;try{j=BT(E,{provider:D.provider,model:D.model,limit:U,sourceRevisionId:_.sourceRevisionId})}finally{E.close()}if(j.length===0)return{provider:D.provider,model:D.model,dimensions:_.dimensions??jI(_.config).dimensions??v3,chunks_seen:0,chunks_embedded:0,embeddings_upserted:0,vector_entries_upserted:0,usage:{input_tokens:0}};let N=await w3(j.map((O)=>O.text),_),A=w(_.dbPath);try{let O=bT(A,j,N,I);return{provider:N.provider,model:N.model,dimensions:N.dimensions,chunks_seen:j.length,chunks_embedded:j.length,embeddings_upserted:O,vector_entries_upserted:O,usage:N.usage}}finally{A.close()}}function r3(_){c(_);let $=w(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,I=$.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:D,total_vector_entries:I,indexes:U}}finally{$.close()}}async function gI(_){let $=L4(_.modelRef,_.config),D=x_($),I=Math.max(1,Math.min(_.limit??10,100)),U=await w3([_.query],_),E=U.vectors[0]??[];h(_.dbPath);let j=w(_.dbPath);try{let A=j.query(`SELECT + ORDER BY provider, model`).all();return{total_embeddings:D,total_vector_entries:I,indexes:U}}finally{$.close()}}async function gI(_){let $=S4(_.modelRef,_.config),D=f_($),I=Math.max(1,Math.min(_.limit??10,100)),U=await w3([_.query],_),E=U.vectors[0]??[];c(_.dbPath);let j=w(_.dbPath);try{let A=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(D.provider,D.model).map((O)=>{let L=JSON.parse(O.vector_json),J=Cg(O.metadata_json),P=J.provenance&&typeof J.provenance==="object"&&!Array.isArray(J.provenance)?J.provenance:null;return{chunk_id:O.chunk_id,score:TT(E,L,O.vector_norm),text:O.text,source_uri:O.source_uri,source_ref:O.source_ref,revision:O.revision,hash:O.hash,provenance:P}}).sort((O,L)=>L.score-O.score).slice(0,I);return{provider:D.provider,model:D.model,dimensions:U.dimensions,query:_.query,results:A}}finally{j.close()}}function AI(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function g$(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function f3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function y3(_){return Array.from(new Set(_))}function h3(_){let $=_.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[];return y3($.filter((D)=>D.length>0)).slice(0,16)}function x3(_){return _.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[]}function kT(_){let $=[],D=/"([^"]*)"|(\S+)/g,I,U=!1;while((I=D.exec(_))!==null){if(I[1]!==void 0){let O=x3(I[1]);if(O.length>0)$.push({type:"phrase",value:O.join(" "),negate:U,prefix:!1});U=!1;continue}let E=I[2]??"";if(E==="OR"||E==="||"||E==="|"){$.push({type:"or",value:"",negate:!1,prefix:!1});continue}if(E==="AND"||E==="&&")continue;if(E==="NOT"){U=!0;continue}let j=U;if(U=!1,E.startsWith("-")&&E.length>1)j=!0,E=E.slice(1);let N=!1;if(E.endsWith("*"))N=!0,E=E.slice(0,-1);let A=x3(E);if(A.length===0)continue;$.push({type:A.length>1?"phrase":"term",value:A.join(" "),negate:j,prefix:N})}return $.slice(0,24)}function qT(_){if(_.type==="phrase")return`"${_.value}"`;return`"${_.value}"*`}function CT(_){let $=kT(_);if($.filter((j)=>j.type!=="or"&&!j.negate).length===0)return{and:null,or:null};let I=(j)=>{let N="",A=!1,O=[];for(let L of $){if(L.type==="or"){A=!0;continue}let J=qT(L);if(L.negate){O.push(J);continue}if(N.length===0)N=J;else N=A?`${N} OR ${J}`:`${N} ${j} ${J}`;A=!1}for(let L of O)N=`(${N}) NOT ${L}`;return N.length>0?N:null},U=I("AND"),E=I("OR");return{and:U,or:E!==U?E:null}}function vT(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function c3(_,$){return _.flatMap((D)=>Array.from({length:$},()=>`%${vT(D)}%`))}function wT(_,$){let D=Number.isFinite(_)?1/(1+Math.abs(_)):0,I=1/(1+$);return OI(Math.max(D,I))}function vg(_,$){if($.length===0)return 0;let D=$.filter((I)=>_.includes(I)).length;if(D===0)return 0;return OI(Math.min(0.85,0.35+D/$.length*0.5))}function rT(_){return OI(Math.max(0,Math.min(1,(_+1)/2)))}function OI(_){return Number(_.toFixed(6))}function T0(_,$){let D=_.keyword??0,I=_.semantic??0,U=_.catalog??0,E=$?.chunk_id?0.05:0;return OI(Math.min(1,D*0.55+I*0.4+U*0.35+E))}function wg(_){let $=_.provenance;return $&&typeof $==="object"&&!Array.isArray($)?$:null}function fT(_){let $=AI(_.chunk_metadata_json),D=wg($);if(D)return D;if(!_.source_revision_id&&!_.source_uri)return null;return M6({source_ref:g$($,["source_ref"]),source_uri:_.source_uri??g$($,["source_uri"]),source_kind:_.source_kind??g$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??g$($,["revision"]),hash:_.hash??g$($,["hash"]),chunk_id:_.chunk_id,start_offset:_.start_offset??f3($,["start_offset"]),end_offset:_.end_offset??f3($,["end_offset"]),status:g$($,["status"]),resolver:"open-files-read-only"})}function u3(_,$,D){if(!$)return[];try{return xT(_,$,D)}catch{return[]}}function xT(_,$,D){return _.query(`SELECT + WHERE v.provider = ? AND v.model = ? AND v.status = 'active'`).all(D.provider,D.model).map((O)=>{let S=JSON.parse(O.vector_json),L=Cg(O.metadata_json),P=L.provenance&&typeof L.provenance==="object"&&!Array.isArray(L.provenance)?L.provenance:null;return{chunk_id:O.chunk_id,score:TT(E,S,O.vector_norm),text:O.text,source_uri:O.source_uri,source_ref:O.source_ref,revision:O.revision,hash:O.hash,provenance:P}}).sort((O,S)=>S.score-O.score).slice(0,I);return{provider:D.provider,model:D.model,dimensions:U.dimensions,query:_.query,results:A}}finally{j.close()}}function AI(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function g$(_,$){for(let D of $){let I=_[D];if(typeof I==="string"&&I.length>0)return I}return null}function f3(_,$){for(let D of $){let I=_[D];if(typeof I==="number"&&Number.isFinite(I))return I}return null}function y3(_){return Array.from(new Set(_))}function h3(_){let $=_.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[];return y3($.filter((D)=>D.length>0)).slice(0,16)}function x3(_){return _.normalize("NFKC").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[]}function kT(_){let $=[],D=/"([^"]*)"|(\S+)/g,I,U=!1;while((I=D.exec(_))!==null){if(I[1]!==void 0){let O=x3(I[1]);if(O.length>0)$.push({type:"phrase",value:O.join(" "),negate:U,prefix:!1});U=!1;continue}let E=I[2]??"";if(E==="OR"||E==="||"||E==="|"){$.push({type:"or",value:"",negate:!1,prefix:!1});continue}if(E==="AND"||E==="&&")continue;if(E==="NOT"){U=!0;continue}let j=U;if(U=!1,E.startsWith("-")&&E.length>1)j=!0,E=E.slice(1);let N=!1;if(E.endsWith("*"))N=!0,E=E.slice(0,-1);let A=x3(E);if(A.length===0)continue;$.push({type:A.length>1?"phrase":"term",value:A.join(" "),negate:j,prefix:N})}return $.slice(0,24)}function qT(_){if(_.type==="phrase")return`"${_.value}"`;return`"${_.value}"*`}function CT(_){let $=kT(_);if($.filter((j)=>j.type!=="or"&&!j.negate).length===0)return{and:null,or:null};let I=(j)=>{let N="",A=!1,O=[];for(let S of $){if(S.type==="or"){A=!0;continue}let L=qT(S);if(S.negate){O.push(L);continue}if(N.length===0)N=L;else N=A?`${N} OR ${L}`:`${N} ${j} ${L}`;A=!1}for(let S of O)N=`(${N}) NOT ${S}`;return N.length>0?N:null},U=I("AND"),E=I("OR");return{and:U,or:E!==U?E:null}}function vT(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function c3(_,$){return _.flatMap((D)=>Array.from({length:$},()=>`%${vT(D)}%`))}function wT(_,$){let D=Number.isFinite(_)?1/(1+Math.abs(_)):0,I=1/(1+$);return OI(Math.max(D,I))}function vg(_,$){if($.length===0)return 0;let D=$.filter((I)=>_.includes(I)).length;if(D===0)return 0;return OI(Math.min(0.85,0.35+D/$.length*0.5))}function rT(_){return OI(Math.max(0,Math.min(1,(_+1)/2)))}function OI(_){return Number(_.toFixed(6))}function T0(_,$){let D=_.keyword??0,I=_.semantic??0,U=_.catalog??0,E=$?.chunk_id?0.05:0;return OI(Math.min(1,D*0.55+I*0.4+U*0.35+E))}function wg(_){let $=_.provenance;return $&&typeof $==="object"&&!Array.isArray($)?$:null}function fT(_){let $=AI(_.chunk_metadata_json),D=wg($);if(D)return D;if(!_.source_revision_id&&!_.source_uri)return null;return M6({source_ref:g$($,["source_ref"]),source_uri:_.source_uri??g$($,["source_uri"]),source_kind:_.source_kind??g$($,["source_kind"]),source_revision_id:_.source_revision_id,revision:_.revision??g$($,["revision"]),hash:_.hash??g$($,["hash"]),chunk_id:_.chunk_id,start_offset:_.start_offset??f3($,["start_offset"]),end_offset:_.end_offset??f3($,["end_offset"]),status:g$($,["status"]),resolver:"open-files-read-only"})}function u3(_,$,D){if(!$)return[];try{return xT(_,$,D)}catch{return[]}}function xT(_,$,D){return _.query(`SELECT chunks_fts.chunk_id, c.kind AS chunk_kind, c.wiki_page_id, @@ -794,7 +794,7 @@ VALUES (10, datetime('now')); FROM knowledge_indexes WHERE ${n3(I,$)} ORDER BY updated_at DESC - LIMIT ?`).all(...c3($,I.length),D)}function d3(_){if(!_||!ZT(_))return[];try{let $=JSON.parse(HT(_,"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 hT(_){return[_.id,_.short_id,_.title,_.content,_.url,..._.tags??[]].filter(($)=>typeof $==="string"&&$.length>0).join(" ").toLowerCase()}function m3(_,$,D){if($.length===0)return[];return _.filter((I)=>I.archived!==!0).map((I)=>({item:I,haystack:hT(I)})).filter(({haystack:I})=>$.some((U)=>I.includes(U))).map(({item:I,haystack:U})=>({item:I,score:vg(U,$)})).sort((I,U)=>U.score-I.score||I.item.id.localeCompare(U.item.id)).slice(0,D)}function cT(_,$,D){return m3(d3(_),$,D)}function nT(_,$){let D=AI(_.chunk_metadata_json),I=fT(_),U=g$(D,["source_ref"]),E=_.source_uri??g$(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:E||U?{uri:E,ref:U,kind:_.source_kind??g$(D,["source_kind"]),revision:_.revision??g$(D,["revision"]),hash:_.hash??g$(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:I,reasons:["keyword_match"]};return N.score=T0(N.scores,N.citation),N}function rg(_,$){let D=`knowledge://item/${encodeURIComponent(_.id)}`,I={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 I.score=T0(I.scores,I.citation),I}function dT(_,$){let D=AI(_.metadata_json),I=vg(`${_.path} ${_.title} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"wiki_page",id:_.id,title:_.title,text:null,score:0,scores:{catalog:I},source:null,citation:null,artifact:{uri:_.artifact_uri,path:_.path,hash:_.content_hash,shard_key:_.path},provenance:wg(D),reasons:["wiki_catalog_match"]};return U.score=T0(U.scores,U.citation),U}function mT(_,$){let D=AI(_.metadata_json),I=vg(`${_.kind} ${_.name} ${_.shard_key??""} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"knowledge_index",id:_.id,title:_.name,text:null,score:0,scores:{catalog:I},source:null,citation:null,artifact:{uri:_.artifact_uri,path:g$(D,["artifact_key"]),hash:g$(D,["content_hash"]),shard_key:_.shard_key},provenance:wg(D),reasons:["index_catalog_match"]};return U.score=T0(U.scores,U.citation),U}function K0(_,$){let D=`${$.kind}:${$.id}`,I=_.get(D);if(!I){_.set(D,$);return}I.scores={keyword:Math.max(I.scores.keyword??0,$.scores.keyword??0)||void 0,semantic:Math.max(I.scores.semantic??0,$.scores.semantic??0)||void 0,catalog:Math.max(I.scores.catalog??0,$.scores.catalog??0)||void 0},I.reasons=y3([...I.reasons,...$.reasons]),I.text=I.text??$.text,I.title=I.title??$.title,I.source=I.source??$.source,I.citation=I.citation??$.citation,I.artifact=I.artifact??$.artifact,I.provenance=I.provenance??$.provenance,I.score=T0(I.scores,I.citation)}function l3(_){let $={source_chunk:0,wiki_chunk:1,legacy_item:2,wiki_page:3,knowledge_index:4};return _.sort((D,I)=>{if(I.score!==D.score)return I.score-D.score;return $[D.kind]-$[I.kind]||D.id.localeCompare(I.id)})}async function LI(_){let $=_.query.trim();if(!$)throw Error("Search query is required.");let D=Math.max(1,Math.min(_.limit??10,100)),I=Math.max(0,Math.floor(_.offset??0)),U=I+D,E=h3($),j=CT($),N=_.semantic===!0||_.fake===!0||Boolean(_.modelRef),A=[],O=null,L=null,J=null,P=0,z=0,S=0,W=new Map;h(_.dbPath);let X=w(_.dbPath);try{let K=Math.max(U*3,20),Y=u3(X,j.and,K);if(Y.length===0&&j.or)Y=u3(X,j.or,K);P=Y.length,Y.forEach((B,c)=>K0(W,nT(B,wT(B.rank,c))));let T=uT(X,E,Math.max(U,10)),F=yT(X,E,Math.max(U,10)),k=cT(_.legacyStorePath,E,Math.max(U,10));z=T.length+F.length,P+=k.length,k.forEach(({item:B,score:c})=>K0(W,rg(B,c))),T.forEach((B)=>K0(W,dT(B,E))),F.forEach((B)=>K0(W,mT(B,E)))}finally{X.close()}if(N)try{let K=await gI({dbPath:_.dbPath,query:$,limit:Math.max(U*3,20),config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,batchSize:_.batchSize,maxParallelCalls:_.maxParallelCalls});O=K.provider,L=K.model,J=K.dimensions,S=K.results.length;for(let Y of K.results){let T={kind:"source_chunk",id:Y.chunk_id,title:null,text:Y.text,score:0,scores:{semantic:rT(Y.score)},source:{uri:Y.source_uri,ref:Y.source_ref,kind:Y.provenance?.source_kind??null,revision:Y.revision,hash:Y.hash},citation:{chunk_id:Y.chunk_id,start_offset:Y.provenance?.start_offset??null,end_offset:Y.provenance?.end_offset??null},artifact:null,provenance:Y.provenance,reasons:["semantic_match"]};T.score=T0(T.scores,T.citation),K0(W,T)}}catch(K){A.push(`semantic_search_failed: ${K instanceof Error?K.message:String(K)}`)}let R=l3(Array.from(W.values())).slice(I,I+D);return{query:$,limit:D,offset:I,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:O,semantic_model:L,semantic_dimensions:J,counts:{keyword_results:P,catalog_results:z,semantic_results:S,merged_results:R.length},warnings:A,results:R}}async function SI(_){return fg(d3(_.legacyStorePath),_,["knowledge_db_missing"])}async function fg(_,$,D=[]){let I=$.query.trim();if(!I)throw Error("Search query is required.");let U=Math.max(1,Math.min($.limit??10,100)),E=Math.max(0,Math.floor($.offset??0)),j=h3(I),N=$.semantic===!0||$.fake===!0||Boolean($.modelRef),A=new Map,O=m3(_,j,Math.max(E+U,10));O.forEach(({item:P,score:z})=>K0(A,rg(P,z)));let L=[...D];if(N)L.push("semantic_search_requires_local_catalog");let J=l3(Array.from(A.values())).slice(E,E+U);return{query:I,limit:U,offset:E,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:O.length,catalog_results:0,semantic_results:0,merged_results:J.length},warnings:L,results:J}}function xg(_,$,D=[],I=_.length){let U=$.query.trim();if(!U)throw Error("Search query is required.");let E=Math.max(1,Math.min($.limit??10,100)),j=Math.max(0,Math.floor($.offset??0)),N=_.map(({item:A,rank:O})=>rg(A,O));return{query:U,limit:E,offset:j,mode:{keyword:!0,catalog:!0,semantic:$.semantic===!0},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:I,catalog_results:0,semantic_results:0,merged_results:N.length},warnings:D,results:N}}function i3(_,$){return`${_}_${lT("sha256").update($).digest("hex").slice(0,20)}`}function t3(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function iT(_){return Array.from(new Set(t3(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,16)}function tT(_){return[_.title,_.text].filter(Boolean).join(" ").toLowerCase()}function oT(_,$){if($.length===0)return 0;let D=tT(_),I=$.filter((U)=>D.includes(U)).length;return Number((I/$.length).toFixed(6))}function pT(_){if(!_)return!0;if("read_only"in _)return _.read_only===!0;if("read_only_sources"in _)return _.read_only_sources===!0;return!0}function o3(_){if(!_)return!1;if("stale"in _&&_.stale)return!0;if("status"in _)return Qg(_.status);return!1}function eT(_){if(o3(_.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 aT(_){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 sT(_){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 _F(_,$){let D={base_score:_.score,exact_score:oT(_,$),citation_score:aT(_),freshness_score:eT(_),authority_score:sT(_)},I=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(I.toFixed(6)),reasons:Array.from(U),rerank:{...D,final_score:Number(I.toFixed(6))}}}function p3(_,$){let D=_.text??_.title;if(!D)return null;let I=D.replace(/\s+/g," ").trim();return I.length<=$?I:`${I.slice(0,Math.max(0,$-1)).trim()}...`}function $F(_){return{id:i3("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:p3(_,500),provenance:_.provenance}}function DF(_,$,D){let I=p3(_,D);if(!I)return null;return{id:i3("excerpt",`${_.kind}\x00${_.id}`),result_id:_.id,citation_id:$.id,kind:_.kind,text:I,score:_.score}}function JI(_){return _.map(()=>"?").join(", ")}function UF(_,$){let D=$.map((N)=>N.citation?.chunk_id).filter((N)=>Boolean(N)),I=$.filter((N)=>N.kind==="wiki_page").map((N)=>N.id),U=[],E=[];if(D.length===0&&I.length===0)return{citations:U,backlinks:E};let j=w(_);try{if(D.length>0)U.push(...j.query(`SELECT id, wiki_page_id, chunk_id, source_uri, quote, start_offset, end_offset + LIMIT ?`).all(...c3($,I.length),D)}function d3(_){if(!_||!ZT(_))return[];try{let $=JSON.parse(HT(_,"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 hT(_){return[_.id,_.short_id,_.title,_.content,_.url,..._.tags??[]].filter(($)=>typeof $==="string"&&$.length>0).join(" ").toLowerCase()}function m3(_,$,D){if($.length===0)return[];return _.filter((I)=>I.archived!==!0).map((I)=>({item:I,haystack:hT(I)})).filter(({haystack:I})=>$.some((U)=>I.includes(U))).map(({item:I,haystack:U})=>({item:I,score:vg(U,$)})).sort((I,U)=>U.score-I.score||I.item.id.localeCompare(U.item.id)).slice(0,D)}function cT(_,$,D){return m3(d3(_),$,D)}function nT(_,$){let D=AI(_.chunk_metadata_json),I=fT(_),U=g$(D,["source_ref"]),E=_.source_uri??g$(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:E||U?{uri:E,ref:U,kind:_.source_kind??g$(D,["source_kind"]),revision:_.revision??g$(D,["revision"]),hash:_.hash??g$(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:I,reasons:["keyword_match"]};return N.score=T0(N.scores,N.citation),N}function rg(_,$){let D=`knowledge://item/${encodeURIComponent(_.id)}`,I={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 I.score=T0(I.scores,I.citation),I}function dT(_,$){let D=AI(_.metadata_json),I=vg(`${_.path} ${_.title} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"wiki_page",id:_.id,title:_.title,text:null,score:0,scores:{catalog:I},source:null,citation:null,artifact:{uri:_.artifact_uri,path:_.path,hash:_.content_hash,shard_key:_.path},provenance:wg(D),reasons:["wiki_catalog_match"]};return U.score=T0(U.scores,U.citation),U}function mT(_,$){let D=AI(_.metadata_json),I=vg(`${_.kind} ${_.name} ${_.shard_key??""} ${_.artifact_uri??""} ${_.metadata_json}`.toLowerCase(),$),U={kind:"knowledge_index",id:_.id,title:_.name,text:null,score:0,scores:{catalog:I},source:null,citation:null,artifact:{uri:_.artifact_uri,path:g$(D,["artifact_key"]),hash:g$(D,["content_hash"]),shard_key:_.shard_key},provenance:wg(D),reasons:["index_catalog_match"]};return U.score=T0(U.scores,U.citation),U}function K0(_,$){let D=`${$.kind}:${$.id}`,I=_.get(D);if(!I){_.set(D,$);return}I.scores={keyword:Math.max(I.scores.keyword??0,$.scores.keyword??0)||void 0,semantic:Math.max(I.scores.semantic??0,$.scores.semantic??0)||void 0,catalog:Math.max(I.scores.catalog??0,$.scores.catalog??0)||void 0},I.reasons=y3([...I.reasons,...$.reasons]),I.text=I.text??$.text,I.title=I.title??$.title,I.source=I.source??$.source,I.citation=I.citation??$.citation,I.artifact=I.artifact??$.artifact,I.provenance=I.provenance??$.provenance,I.score=T0(I.scores,I.citation)}function l3(_){let $={source_chunk:0,wiki_chunk:1,legacy_item:2,wiki_page:3,knowledge_index:4};return _.sort((D,I)=>{if(I.score!==D.score)return I.score-D.score;return $[D.kind]-$[I.kind]||D.id.localeCompare(I.id)})}async function SI(_){let $=_.query.trim();if(!$)throw Error("Search query is required.");let D=Math.max(1,Math.min(_.limit??10,100)),I=Math.max(0,Math.floor(_.offset??0)),U=I+D,E=h3($),j=CT($),N=_.semantic===!0||_.fake===!0||Boolean(_.modelRef),A=[],O=null,S=null,L=null,P=0,z=0,G=0,J=new Map;c(_.dbPath);let W=w(_.dbPath);try{let T=Math.max(U*3,20),Y=u3(W,j.and,T);if(Y.length===0&&j.or)Y=u3(W,j.or,T);P=Y.length,Y.forEach((Z,f)=>K0(J,nT(Z,wT(Z.rank,f))));let Q=uT(W,E,Math.max(U,10)),F=yT(W,E,Math.max(U,10)),q=cT(_.legacyStorePath,E,Math.max(U,10));z=Q.length+F.length,P+=q.length,q.forEach(({item:Z,score:f})=>K0(J,rg(Z,f))),Q.forEach((Z)=>K0(J,dT(Z,E))),F.forEach((Z)=>K0(J,mT(Z,E)))}finally{W.close()}if(N)try{let T=await gI({dbPath:_.dbPath,query:$,limit:Math.max(U*3,20),config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,batchSize:_.batchSize,maxParallelCalls:_.maxParallelCalls});O=T.provider,S=T.model,L=T.dimensions,G=T.results.length;for(let Y of T.results){let Q={kind:"source_chunk",id:Y.chunk_id,title:null,text:Y.text,score:0,scores:{semantic:rT(Y.score)},source:{uri:Y.source_uri,ref:Y.source_ref,kind:Y.provenance?.source_kind??null,revision:Y.revision,hash:Y.hash},citation:{chunk_id:Y.chunk_id,start_offset:Y.provenance?.start_offset??null,end_offset:Y.provenance?.end_offset??null},artifact:null,provenance:Y.provenance,reasons:["semantic_match"]};Q.score=T0(Q.scores,Q.citation),K0(J,Q)}}catch(T){A.push(`semantic_search_failed: ${T instanceof Error?T.message:String(T)}`)}let R=l3(Array.from(J.values())).slice(I,I+D);return{query:$,limit:D,offset:I,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:O,semantic_model:S,semantic_dimensions:L,counts:{keyword_results:P,catalog_results:z,semantic_results:G,merged_results:R.length},warnings:A,results:R}}async function LI(_){return fg(d3(_.legacyStorePath),_,["knowledge_db_missing"])}async function fg(_,$,D=[]){let I=$.query.trim();if(!I)throw Error("Search query is required.");let U=Math.max(1,Math.min($.limit??10,100)),E=Math.max(0,Math.floor($.offset??0)),j=h3(I),N=$.semantic===!0||$.fake===!0||Boolean($.modelRef),A=new Map,O=m3(_,j,Math.max(E+U,10));O.forEach(({item:P,score:z})=>K0(A,rg(P,z)));let S=[...D];if(N)S.push("semantic_search_requires_local_catalog");let L=l3(Array.from(A.values())).slice(E,E+U);return{query:I,limit:U,offset:E,mode:{keyword:!0,catalog:!0,semantic:N},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:O.length,catalog_results:0,semantic_results:0,merged_results:L.length},warnings:S,results:L}}function xg(_,$,D=[],I=_.length){let U=$.query.trim();if(!U)throw Error("Search query is required.");let E=Math.max(1,Math.min($.limit??10,100)),j=Math.max(0,Math.floor($.offset??0)),N=_.map(({item:A,rank:O})=>rg(A,O));return{query:U,limit:E,offset:j,mode:{keyword:!0,catalog:!0,semantic:$.semantic===!0},semantic_provider:null,semantic_model:null,semantic_dimensions:null,counts:{keyword_results:I,catalog_results:0,semantic_results:0,merged_results:N.length},warnings:D,results:N}}function i3(_,$){return`${_}_${lT("sha256").update($).digest("hex").slice(0,20)}`}function t3(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function iT(_){return Array.from(new Set(t3(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,16)}function tT(_){return[_.title,_.text].filter(Boolean).join(" ").toLowerCase()}function oT(_,$){if($.length===0)return 0;let D=tT(_),I=$.filter((U)=>D.includes(U)).length;return Number((I/$.length).toFixed(6))}function pT(_){if(!_)return!0;if("read_only"in _)return _.read_only===!0;if("read_only_sources"in _)return _.read_only_sources===!0;return!0}function o3(_){if(!_)return!1;if("stale"in _&&_.stale)return!0;if("status"in _)return Qg(_.status);return!1}function eT(_){if(o3(_.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 aT(_){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 sT(_){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 _F(_,$){let D={base_score:_.score,exact_score:oT(_,$),citation_score:aT(_),freshness_score:eT(_),authority_score:sT(_)},I=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(I.toFixed(6)),reasons:Array.from(U),rerank:{...D,final_score:Number(I.toFixed(6))}}}function p3(_,$){let D=_.text??_.title;if(!D)return null;let I=D.replace(/\s+/g," ").trim();return I.length<=$?I:`${I.slice(0,Math.max(0,$-1)).trim()}...`}function $F(_){return{id:i3("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:p3(_,500),provenance:_.provenance}}function DF(_,$,D){let I=p3(_,D);if(!I)return null;return{id:i3("excerpt",`${_.kind}\x00${_.id}`),result_id:_.id,citation_id:$.id,kind:_.kind,text:I,score:_.score}}function JI(_){return _.map(()=>"?").join(", ")}function UF(_,$){let D=$.map((N)=>N.citation?.chunk_id).filter((N)=>Boolean(N)),I=$.filter((N)=>N.kind==="wiki_page").map((N)=>N.id),U=[],E=[];if(D.length===0&&I.length===0)return{citations:U,backlinks:E};let j=w(_);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(D)}) ORDER BY created_at DESC @@ -805,7 +805,7 @@ VALUES (10, datetime('now')); LIMIT 50`).all(...I)),E.push(...j.query(`SELECT from_page_id, to_page_id, label FROM wiki_backlinks WHERE from_page_id IN (${JI(I)}) OR to_page_id IN (${JI(I)}) - LIMIT 50`).all(...I,...I))}finally{j.close()}return{citations:U,backlinks:E}}function A6(_,$={}){let D=Math.max(200,Math.min($.contextChars??1200,4000)),I=iT(_.query),U=[..._.warnings],E=new Set,j=new Set,A=_.results.filter((J)=>{if(!pT(J.provenance))return U.push(`permission_filtered: ${J.kind}:${J.id}`),E.add("Dropped a result because provenance was not read-only."),!1;if(o3(J.provenance))return U.push(`stale_filtered: ${J.kind}:${J.id}`),j.add("Dropped a stale result whose source status requires reindexing."),!1;return!0}).map((J)=>_F(J,I)).sort((J,P)=>P.score-J.score||J.id.localeCompare(P.id)).slice(0,_.limit),O=A.map($F),L=A.map((J,P)=>DF(J,O[P],D)).filter((J)=>Boolean(J));for(let J of A){if(J.provenance&&"read_only"in J.provenance&&J.provenance.read_only)E.add("All source-backed excerpts are read-only and citation-required.");if(J.rerank.freshness_score>=0.85)j.add("Fresh source revision/hash or artifact hash is present for top context.")}return{query:_.query,normalized_query:t3(_.query),created_at:new Date().toISOString(),mode:_.mode,warnings:U,search_counts:_.counts,results:A,citations:O,excerpts:L,graph:$.dbPath?UF($.dbPath,A):{citations:[],backlinks:[]},notes:{permissions:Array.from(E),freshness:Array.from(j)}}}async function F0(_){let $=await LI(_);return A6($,{dbPath:_.dbPath,contextChars:_.contextChars})}async function e3(_,$){let D=await fg(_,$);return A6(D,{contextChars:$.contextChars})}function V0(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function yg(_){return`C${_+1}`}function s3(_,$){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((I,U)=>{let E=$.citations.find((N)=>N.id===I.citation_id),j=E?.source_ref??E?.source_uri??E?.artifact_path??E?.artifact_uri??"unknown source";return`[${yg(U)}] ${I.text} (${j})`})].join(` + LIMIT 50`).all(...I,...I))}finally{j.close()}return{citations:U,backlinks:E}}function A6(_,$={}){let D=Math.max(200,Math.min($.contextChars??1200,4000)),I=iT(_.query),U=[..._.warnings],E=new Set,j=new Set,A=_.results.filter((L)=>{if(!pT(L.provenance))return U.push(`permission_filtered: ${L.kind}:${L.id}`),E.add("Dropped a result because provenance was not read-only."),!1;if(o3(L.provenance))return U.push(`stale_filtered: ${L.kind}:${L.id}`),j.add("Dropped a stale result whose source status requires reindexing."),!1;return!0}).map((L)=>_F(L,I)).sort((L,P)=>P.score-L.score||L.id.localeCompare(P.id)).slice(0,_.limit),O=A.map($F),S=A.map((L,P)=>DF(L,O[P],D)).filter((L)=>Boolean(L));for(let L of A){if(L.provenance&&"read_only"in L.provenance&&L.provenance.read_only)E.add("All source-backed excerpts are read-only and citation-required.");if(L.rerank.freshness_score>=0.85)j.add("Fresh source revision/hash or artifact hash is present for top context.")}return{query:_.query,normalized_query:t3(_.query),created_at:new Date().toISOString(),mode:_.mode,warnings:U,search_counts:_.counts,results:A,citations:O,excerpts:S,graph:$.dbPath?UF($.dbPath,A):{citations:[],backlinks:[]},notes:{permissions:Array.from(E),freshness:Array.from(j)}}}async function F0(_){let $=await SI(_);return A6($,{dbPath:_.dbPath,contextChars:_.contextChars})}async function e3(_,$){let D=await fg(_,$);return A6(D,{contextChars:$.contextChars})}function V0(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function yg(_){return`C${_+1}`}function s3(_,$){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((I,U)=>{let E=$.citations.find((N)=>N.id===I.citation_id),j=E?.source_ref??E?.source_uri??E?.artifact_path??E?.artifact_uri??"unknown source";return`[${yg(U)}] ${I.text} (${j})`})].join(` `)}function _X(_,$){let D=$.citations.map((U,E)=>({id:yg(E),source_ref:U.source_ref,source_uri:U.source_uri,artifact_path:U.artifact_path,revision:U.revision,hash:U.hash,quote:U.quote})),I=$.excerpts.map((U,E)=>({id:yg(E),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(I,null,2)}`,"",`Citations: ${JSON.stringify(D,null,2)}`].join(` @@ -813,11 +813,11 @@ ${JSON.stringify(D,null,2)}`].join(` VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[$.runId,"knowledge-prompt",$.prompt,$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.now])}finally{D.close()}}function ug(_,$){let D=w(_);try{D.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${hg()}`,$.runId,$.level,$.event,JSON.stringify($.metadata),$.now])}finally{D.close()}}function a3(_,$){let D=w(_);try{D.run(`UPDATE runs SET status = ?, provider = ?, model = ?, metadata_json = ?, updated_at = ? - WHERE id = ?`,[$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.runId])}finally{D.close()}}function EF(_,$,D,I,U,E,j={}){let N=w(_);try{Q0(N,{run_id:$,provider:I,model:U,input_tokens:D.input_tokens,output_tokens:D.output_tokens,cost_usd:D.cost_usd,metadata:j,created_at:E})}finally{N.close()}}async function DX(_){let $=_.prompt.trim();if(!$)throw Error("Knowledge prompt is required.");let D=(_.now??new Date).toISOString(),I=`run_${hg()}`,U=T$(_.modelRef??"default",_.config),E=x_(U);h(_.dbPath),IF(_.dbPath,{runId:I,prompt:$,status:_.generate?"running":"dry_run",provider:_.generate?E.provider:"local",model:_.generate?E.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:A,now:O,...L}=_,J=await F0({...L,query:$});ug(_.dbPath,{runId:I,level:"info",event:"context_retrieved",metadata:{results:J.results.length,citations:J.citations.length,warnings:J.warnings},now:D});let P=s3($,J),z=!1,S="local",W="context-draft",X={input_tokens:V0($)+J.excerpts.reduce((Y,T)=>Y+V0(T.text),0),output_tokens:V0(P),cost_usd:0},G=[...J.warnings];if(_.generate)try{if(_.fake)z=!0,S=E.provider,W=E.model,P=`Fake generated answer for: ${$} + WHERE id = ?`,[$.status,$.provider,$.model,JSON.stringify($.metadata),$.now,$.runId])}finally{D.close()}}function EF(_,$,D,I,U,E,j={}){let N=w(_);try{Q0(N,{run_id:$,provider:I,model:U,input_tokens:D.input_tokens,output_tokens:D.output_tokens,cost_usd:D.cost_usd,metadata:j,created_at:E})}finally{N.close()}}async function DX(_){let $=_.prompt.trim();if(!$)throw Error("Knowledge prompt is required.");let D=(_.now??new Date).toISOString(),I=`run_${hg()}`,U=T$(_.modelRef??"default",_.config),E=f_(U);c(_.dbPath),IF(_.dbPath,{runId:I,prompt:$,status:_.generate?"running":"dry_run",provider:_.generate?E.provider:"local",model:_.generate?E.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:A,now:O,...S}=_,L=await F0({...S,query:$});ug(_.dbPath,{runId:I,level:"info",event:"context_retrieved",metadata:{results:L.results.length,citations:L.citations.length,warnings:L.warnings},now:D});let P=s3($,L),z=!1,G="local",J="context-draft",W={input_tokens:V0($)+L.excerpts.reduce((Y,Q)=>Y+V0(Q.text),0),output_tokens:V0(P),cost_usd:0},X=[...L.warnings];if(_.generate)try{if(_.fake)z=!0,G=E.provider,J=E.model,P=`Fake generated answer for: ${$} -${P}`;else{let{generateText:Y}=await import("ai"),T=await lD(U,{config:_.config,env:_.env}),F=await Y({model:T,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:_X($,J)});z=!0,S=E.provider,W=E.model,P=F.text;let k=O4({provider:S,model:W,usage:F.usage,providerMetadata:F.providerMetadata});X={input_tokens:k.input_tokens,output_tokens:k.output_tokens,cost_usd:k.cost_usd}}}catch(Y){throw ug(_.dbPath,{runId:I,level:"error",event:"answer_generation_failed",metadata:{message:Y instanceof Error?Y.message:String(Y)},now:D}),a3(_.dbPath,{runId:I,status:"failed",provider:E.provider,model:E.model,metadata:{generated:!1,error:Y instanceof Error?Y.message:String(Y)},now:D}),Y}let R=$X($,J),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 ug(_.dbPath,{runId:I,level:"info",event:z?"answer_generated":"answer_drafted",metadata:{provider:S,model:W,proposed_updates:R.length,durable_writes_performed:!1},now:D}),EF(_.dbPath,I,X,S,W,D,{generated:z,citations:J.citations.length}),a3(_.dbPath,{runId:I,status:z?"completed":"dry_run",provider:S,model:W,metadata:{generated:z,citations:J.citations.length,proposed_updates:R.length,approve_write:_.approveWrite===!0},now:D}),{run_id:I,prompt:$,generated:z,provider:S,model:W,answer:P,context:J,citations:J.citations,proposed_wiki_updates:R,write_policy:K,usage:X,warnings:G}}async function UX(_,$,D){let I=$.prompt.trim();if(!I)throw Error("Knowledge prompt is required.");let U=`run_${hg()}`,E=T$($.modelRef??"default",$.config),j=x_(E),{prompt:N,generate:A,approveWrite:O,now:L,...J}=$,P=D?A6(D,{contextChars:$.contextChars}):await e3(_,{...J,query:I}),z=s3(I,P),S=!1,W="local",X="context-draft",G={input_tokens:V0(I)+P.excerpts.reduce((T,F)=>T+V0(F.text),0),output_tokens:V0(z),cost_usd:0},R=[...P.warnings];if($.generate)if($.fake)S=!0,W=j.provider,X=j.model,z=`Fake generated answer for: ${I} +${P}`;else{let{generateText:Y}=await import("ai"),Q=await lD(U,{config:_.config,env:_.env}),F=await Y({model:Q,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:_X($,L)});z=!0,G=E.provider,J=E.model,P=F.text;let q=O4({provider:G,model:J,usage:F.usage,providerMetadata:F.providerMetadata});W={input_tokens:q.input_tokens,output_tokens:q.output_tokens,cost_usd:q.cost_usd}}}catch(Y){throw ug(_.dbPath,{runId:I,level:"error",event:"answer_generation_failed",metadata:{message:Y instanceof Error?Y.message:String(Y)},now:D}),a3(_.dbPath,{runId:I,status:"failed",provider:E.provider,model:E.model,metadata:{generated:!1,error:Y instanceof Error?Y.message:String(Y)},now:D}),Y}let R=$X($,L),T={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 ug(_.dbPath,{runId:I,level:"info",event:z?"answer_generated":"answer_drafted",metadata:{provider:G,model:J,proposed_updates:R.length,durable_writes_performed:!1},now:D}),EF(_.dbPath,I,W,G,J,D,{generated:z,citations:L.citations.length}),a3(_.dbPath,{runId:I,status:z?"completed":"dry_run",provider:G,model:J,metadata:{generated:z,citations:L.citations.length,proposed_updates:R.length,approve_write:_.approveWrite===!0},now:D}),{run_id:I,prompt:$,generated:z,provider:G,model:J,answer:P,context:L,citations:L.citations,proposed_wiki_updates:R,write_policy:T,usage:W,warnings:X}}async function UX(_,$,D){let I=$.prompt.trim();if(!I)throw Error("Knowledge prompt is required.");let U=`run_${hg()}`,E=T$($.modelRef??"default",$.config),j=f_(E),{prompt:N,generate:A,approveWrite:O,now:S,...L}=$,P=D?A6(D,{contextChars:$.contextChars}):await e3(_,{...L,query:I}),z=s3(I,P),G=!1,J="local",W="context-draft",X={input_tokens:V0(I)+P.excerpts.reduce((Q,F)=>Q+V0(F.text),0),output_tokens:V0(z),cost_usd:0},R=[...P.warnings];if($.generate)if($.fake)G=!0,J=j.provider,W=j.model,z=`Fake generated answer for: ${I} -${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{config:$.config,env:$.env}),k=await T({model:F,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:_X(I,P)});S=!0,W=j.provider,X=j.model,z=k.text;let B=O4({provider:W,model:X,usage:k.usage,providerMetadata:k.providerMetadata});G={input_tokens:B.input_tokens,output_tokens:B.output_tokens,cost_usd:B.cost_usd}}let K=$X(I,P),Y={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:I,generated:S,provider:W,model:X,answer:z,context:P,citations:P.citations,proposed_wiki_updates:K,write_policy:Y,usage:G,warnings:R}}import{createHash as jF}from"crypto";var NF=1200,gF=6,AF=12000,OF=50,IX=800;function M0(_,$,D=16){return`${_}_${jF("sha256").update($).digest("hex").slice(0,D)}`}function ng(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function dg(_){return ng(_).toLowerCase()}function LF(_){return Array.from(new Set(dg(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,24)}function O6(_,$){let D=ng(_);if(D.length<=$)return D;let I="...";if($<=I.length)return D.slice(0,Math.max(0,$));return`${D.slice(0,$-I.length).trim()}${I}`}function EX(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function mg(_){return/(?:api[_-]?key|secret|token|password|private[_-]?key|credential)/i.test(_)}function cg(_){return Object.keys(_).filter(($)=>!mg($)).sort().slice(0,12)}function SF(_,$){for(let D of $){if(mg(D))continue;let I=_[D];if(typeof I==="string"&&I.trim())return I.trim()}return null}function iD(_,$){if(!_)return null;let D=y_(_,$).text;try{let I=new URL(D),U=["token","access_token","api_key","apikey","key","secret","password","signature","sig"];for(let E of U)I.searchParams.delete(E);for(let[E]of I.searchParams)if(mg(E))I.searchParams.delete(E);return I.toString()}catch{return D}}function n$(_,$,D){return iD(SF(_,$),D)}function WI(_){let $=[];for(let D of cg(_).slice(0,6)){let I=_[D];if(typeof I==="string"&&I.trim())$.push(`${D}=${O6(I,80)}`);else if(typeof I==="number"||typeof I==="boolean")$.push(`${D}=${String(I)}`);else if(I&&typeof I==="object")$.push(`${D}={...}`)}return $.join("; ")}function JF(_){if(!_.trim())return 0;return Math.max(1,Math.ceil(_.length/4))}function jX(_){return JF(JSON.stringify(_))}function WF(_){if(!Number.isFinite(_??NaN))return NF;let $=Math.floor(_);if($<IX)throw Error(`--max-tokens must be at least ${IX} for the stable context-pack schema.`);return Math.min($,AF)}function PF(_,$){let D=Number.isFinite(_??NaN)?_:$;if(!Number.isFinite(D??NaN))return gF;return Math.max(1,Math.min(Math.floor(D),OF))}function AX(_,$){if(!_)return{cutoff:null,warning:null};let D=_.trim(),I=/^(\d+)\s*([mhdw])$/i.exec(D);if(I){let E=Number(I[1]),j=I[2].toLowerCase(),N=j==="m"?60000:j==="h"?3600000:j==="d"?86400000:604800000;return{cutoff:new Date($.getTime()-E*N).toISOString(),warning:null}}let U=new Date(D);if(!Number.isNaN(U.getTime()))return{cutoff:U.toISOString(),warning:null};return{cutoff:null,warning:`invalid_since_ignored: ${D}`}}function B0(_,$,D){let I=y_(_,$);return{text:O6(I.text,D),redactions:I.findings.length}}function NX(_,$){if($.length===0)return 0.5;let D=dg(_),I=$.filter((U)=>D.includes(U)).length;return Number((I/$.length).toFixed(6))}function zF(_){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 XF(_,$,D){let I=iD($.source_ref,D),U=iD($.source_uri,D),E=iD($.artifact_uri,D),j=iD($.artifact_path,D),N=I??U??j??E??$.id,A=$.quote?B0($.quote,D,_<3?220:140):null;return{citation:{id:M0("cite",`${$.id}\x00${N}`,12),kind:$.artifact_uri||$.artifact_path?"artifact":"source",ref:N,source_ref:I,source_uri:U,artifact_uri:E,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:A?.text??null},redactions:A?.redactions??0}}async function GF(_,$){let D=(_.query??_.topic??"").trim();if(!D)throw Error("Context pack query is required for search source.");let{config:I,dbPath:U,limit:E,semantic:j,modelRef:N,dimensions:A,fake:O,env:L,batchSize:J,maxParallelCalls:P,legacyStorePath:z}=_,S=await F0({dbPath:U,config:I,legacyStorePath:z,query:D,limit:Math.max($,E??$),semantic:j,modelRef:N,dimensions:A,fake:O,env:L,batchSize:J,maxParallelCalls:P,contextChars:Math.min(_.contextChars??700,1200)}),W=new Map,X=0;S.citations.forEach((Y,T)=>{let F=XF(T,Y,_.safetyPolicy);X+=F.redactions,W.set(Y.id,F.citation)});let G=S.excerpts.slice(0,Math.max($*2,$)).map((Y)=>{let T=S.results.find((c)=>c.id===Y.result_id),F=Y.citation_id?W.get(Y.citation_id):null,k=B0(Y.text,_.safetyPolicy,520);X+=k.redactions;let B=T?.title??F?.ref??Y.kind;return{id:M0("ev",`${Y.kind}\x00${Y.result_id}\x00${Y.citation_id??""}`,14),kind:Y.kind,title:O6(B,100),text_preview:k.text,score:Number(Y.score.toFixed(6)),citation_ids:F?[F.id]:[],provenance:{source:"search",record_ref:`${Y.kind}:${Y.result_id}`,created_at:S.created_at,updated_at:null,metadata_keys:[]}}}),R=new Set(G.flatMap((Y)=>Y.citation_ids));return{citations:Array.from(W.values()).filter((Y)=>R.has(Y.id)),evidence:G,duplicateCandidates:[],redactions:X,warnings:S.warnings,available:S.excerpts.length}}function RF(_,$,D){if($)return _.query(`SELECT id, type, prompt, status, provider, model, cost_tokens, cost_usd, metadata_json, created_at, updated_at +${z}`;else{let{generateText:Q}=await import("ai"),F=await lD(E,{config:$.config,env:$.env}),q=await Q({model:F,system:"You answer company knowledge-base prompts using only provided context and citation ids.",prompt:_X(I,P)});G=!0,J=j.provider,W=j.model,z=q.text;let Z=O4({provider:J,model:W,usage:q.usage,providerMetadata:q.providerMetadata});X={input_tokens:Z.input_tokens,output_tokens:Z.output_tokens,cost_usd:Z.cost_usd}}let T=$X(I,P),Y={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:I,generated:G,provider:J,model:W,answer:z,context:P,citations:P.citations,proposed_wiki_updates:T,write_policy:Y,usage:X,warnings:R}}import{createHash as jF}from"crypto";var NF=1200,gF=6,AF=12000,OF=50,IX=800;function M0(_,$,D=16){return`${_}_${jF("sha256").update($).digest("hex").slice(0,D)}`}function ng(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function dg(_){return ng(_).toLowerCase()}function SF(_){return Array.from(new Set(dg(_).match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,24)}function O6(_,$){let D=ng(_);if(D.length<=$)return D;let I="...";if($<=I.length)return D.slice(0,Math.max(0,$));return`${D.slice(0,$-I.length).trim()}${I}`}function EX(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function mg(_){return/(?:api[_-]?key|secret|token|password|private[_-]?key|credential)/i.test(_)}function cg(_){return Object.keys(_).filter(($)=>!mg($)).sort().slice(0,12)}function LF(_,$){for(let D of $){if(mg(D))continue;let I=_[D];if(typeof I==="string"&&I.trim())return I.trim()}return null}function iD(_,$){if(!_)return null;let D=u_(_,$).text;try{let I=new URL(D),U=["token","access_token","api_key","apikey","key","secret","password","signature","sig"];for(let E of U)I.searchParams.delete(E);for(let[E]of I.searchParams)if(mg(E))I.searchParams.delete(E);return I.toString()}catch{return D}}function n$(_,$,D){return iD(LF(_,$),D)}function WI(_){let $=[];for(let D of cg(_).slice(0,6)){let I=_[D];if(typeof I==="string"&&I.trim())$.push(`${D}=${O6(I,80)}`);else if(typeof I==="number"||typeof I==="boolean")$.push(`${D}=${String(I)}`);else if(I&&typeof I==="object")$.push(`${D}={...}`)}return $.join("; ")}function JF(_){if(!_.trim())return 0;return Math.max(1,Math.ceil(_.length/4))}function jX(_){return JF(JSON.stringify(_))}function WF(_){if(!Number.isFinite(_??NaN))return NF;let $=Math.floor(_);if($<IX)throw Error(`--max-tokens must be at least ${IX} for the stable context-pack schema.`);return Math.min($,AF)}function PF(_,$){let D=Number.isFinite(_??NaN)?_:$;if(!Number.isFinite(D??NaN))return gF;return Math.max(1,Math.min(Math.floor(D),OF))}function AX(_,$){if(!_)return{cutoff:null,warning:null};let D=_.trim(),I=/^(\d+)\s*([mhdw])$/i.exec(D);if(I){let E=Number(I[1]),j=I[2].toLowerCase(),N=j==="m"?60000:j==="h"?3600000:j==="d"?86400000:604800000;return{cutoff:new Date($.getTime()-E*N).toISOString(),warning:null}}let U=new Date(D);if(!Number.isNaN(U.getTime()))return{cutoff:U.toISOString(),warning:null};return{cutoff:null,warning:`invalid_since_ignored: ${D}`}}function B0(_,$,D){let I=u_(_,$);return{text:O6(I.text,D),redactions:I.findings.length}}function NX(_,$){if($.length===0)return 0.5;let D=dg(_),I=$.filter((U)=>D.includes(U)).length;return Number((I/$.length).toFixed(6))}function zF(_){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 XF(_,$,D){let I=iD($.source_ref,D),U=iD($.source_uri,D),E=iD($.artifact_uri,D),j=iD($.artifact_path,D),N=I??U??j??E??$.id,A=$.quote?B0($.quote,D,_<3?220:140):null;return{citation:{id:M0("cite",`${$.id}\x00${N}`,12),kind:$.artifact_uri||$.artifact_path?"artifact":"source",ref:N,source_ref:I,source_uri:U,artifact_uri:E,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:A?.text??null},redactions:A?.redactions??0}}async function GF(_,$){let D=(_.query??_.topic??"").trim();if(!D)throw Error("Context pack query is required for search source.");let{config:I,dbPath:U,limit:E,semantic:j,modelRef:N,dimensions:A,fake:O,env:S,batchSize:L,maxParallelCalls:P,legacyStorePath:z}=_,G=await F0({dbPath:U,config:I,legacyStorePath:z,query:D,limit:Math.max($,E??$),semantic:j,modelRef:N,dimensions:A,fake:O,env:S,batchSize:L,maxParallelCalls:P,contextChars:Math.min(_.contextChars??700,1200)}),J=new Map,W=0;G.citations.forEach((Y,Q)=>{let F=XF(Q,Y,_.safetyPolicy);W+=F.redactions,J.set(Y.id,F.citation)});let X=G.excerpts.slice(0,Math.max($*2,$)).map((Y)=>{let Q=G.results.find((f)=>f.id===Y.result_id),F=Y.citation_id?J.get(Y.citation_id):null,q=B0(Y.text,_.safetyPolicy,520);W+=q.redactions;let Z=Q?.title??F?.ref??Y.kind;return{id:M0("ev",`${Y.kind}\x00${Y.result_id}\x00${Y.citation_id??""}`,14),kind:Y.kind,title:O6(Z,100),text_preview:q.text,score:Number(Y.score.toFixed(6)),citation_ids:F?[F.id]:[],provenance:{source:"search",record_ref:`${Y.kind}:${Y.result_id}`,created_at:G.created_at,updated_at:null,metadata_keys:[]}}}),R=new Set(X.flatMap((Y)=>Y.citation_ids));return{citations:Array.from(J.values()).filter((Y)=>R.has(Y.id)),evidence:X,duplicateCandidates:[],redactions:W,warnings:G.warnings,available:G.excerpts.length}}function RF(_,$,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 @@ -828,7 +828,7 @@ ${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{config:$.config, FROM run_events WHERE run_id IN (${I}) ORDER BY created_at DESC - LIMIT ?`).all(...$,D)}function QF(_,$){return`${_.type} ${_.metadata_json} ${$.map((I)=>`${I.event} ${I.metadata_json}`).join(" ")}`.toLowerCase().includes("loop")}function KF(_,$,D){let I=n$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=n$($,["artifact_uri"],D),E=n$($,["artifact_path","artifact_key"],D),j=I??U??E??`knowledge://project/runs/${_.id}`,N=_.prompt?B0(_.prompt,D,180).text:null;return{id:M0("cite",`run\x00${_.id}\x00${j}`,12),kind:U||E?"artifact":"run",ref:j,source_ref:I?.startsWith("open-files://")?I:null,source_uri:I&&!I.startsWith("open-files://")?I:null,artifact_uri:U,artifact_path:E,run_id:_.id,run_event_id:null,revision:n$($,["revision"],D),hash:n$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function TF(_,$,D){let I=n$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=n$($,["artifact_uri"],D),E=n$($,["artifact_path","artifact_key"],D),j=I??U??E??`knowledge://project/runs/${_.run_id}`,N=B0(_.event,D,160).text;return{id:M0("cite",`event\x00${_.id}\x00${j}`,12),kind:U||E?"artifact":"run_event",ref:j,source_ref:I?.startsWith("open-files://")?I:null,source_uri:I&&!I.startsWith("open-files://")?I:null,artifact_uri:U,artifact_path:E,run_id:_.run_id,run_event_id:_.id,revision:n$($,["revision"],D),hash:n$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function OX(_){let $=new Map;for(let D of _){let I=dg(`${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(!I)continue;$.set(I,[...$.get(I)??[],D.id])}return Array.from($.entries()).filter(([,D])=>D.length>1).map(([D,I])=>({id:M0("dup",D,12),reason:"normalized_text_match",evidence_ids:I,confidence:I.length>2?"high":"medium"}))}async function FF(_,$,D){let I=_.source==="loops"?"loops":"runs",U=(_.topic??_.query??"").trim(),E=LF(U),j=AX(_.since,D),N=j.warning?[j.warning]:[];h(_.dbPath);let A=w(_.dbPath);try{let O=RF(A,j.cutoff,Math.max($*8,40)),L=YF(A,O.map((G)=>G.id),Math.max($*12,80)),J=new Map;for(let G of L)J.set(G.run_id,[...J.get(G.run_id)??[],G]);let z=(I==="loops"?O.filter((G)=>QF(G,J.get(G.id)??[])):O).map((G)=>{let R=EX(G.metadata_json),K=`${G.type} ${G.status} ${G.prompt??""} ${WI(R)} ${(J.get(G.id)??[]).map((Y)=>`${Y.event} ${Y.metadata_json}`).join(" ")}`;return{row:G,metadata:R,score:NX(K,E),text:K}}).filter((G)=>E.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)),S=[],W=[],X=0;for(let G of z.slice(0,Math.max($*2,$))){let R=KF(G.row,G.metadata,_.safetyPolicy);S.push(R);let K=WI(G.metadata),Y=[G.row.prompt,K].filter(Boolean).join(" | ")||`${G.row.type} ${G.row.status}`,T=B0(Y,_.safetyPolicy,420);X+=T.redactions,W.push({id:`run:${G.row.id}`,kind:G.row.type,title:O6(`${G.row.type}: ${G.row.status}`,100),text_preview:T.text,score:G.score,citation_ids:[R.id],provenance:{source:I,record_ref:`knowledge://project/runs/${G.row.id}`,created_at:G.row.created_at,updated_at:G.row.updated_at,metadata_keys:cg(G.metadata)}});let F=(J.get(G.row.id)??[]).map((k)=>{let B=EX(k.metadata_json),c=`${k.event} ${WI(B)} ${k.metadata_json}`;return{event:k,metadata:B,score:NX(c,E),text:c}}).filter((k)=>E.length===0||k.score>0).sort((k,B)=>B.score-k.score||B.event.created_at.localeCompare(k.event.created_at)||k.event.id.localeCompare(B.event.id)).slice(0,2);for(let k of F){let B=TF(k.event,k.metadata,_.safetyPolicy);S.push(B);let c=B0(`${k.event}: ${WI(k.metadata)}`,_.safetyPolicy,320);X+=c.redactions,W.push({id:`event:${k.event.id}`,kind:`run_event:${k.event.level}`,title:O6(k.event.event,100),text_preview:c.text,score:k.score,citation_ids:[B.id],provenance:{source:I,record_ref:`knowledge://project/runs/${k.event.run_id}`,created_at:k.event.created_at,updated_at:null,metadata_keys:cg(k.metadata)}})}}return{citations:S,evidence:W,duplicateCandidates:_.dedupe?OX(W):[],redactions:X,warnings:N,available:z.length}}finally{A.close()}}function VF(_){let $=_.purpose==="proposal"?`Proposal context: ${O6(_.query||"loop evidence",80)}`:`Knowledge context: ${O6(_.query,80)}`,D=_.evidence.slice(0,8).map((E)=>E.id),I=_.duplicates.slice(0,5).map((E)=>E.id),U=_.evidence.slice(0,5).map((E)=>`${E.id}: ${E.title}`);if(_.evidence.length===0)U.push("No matching bounded evidence was found.");return{title:$,bullets:U,evidence_ids:D,duplicate_candidate_ids:I,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 LX(_){let $=new Set(_.evidence.flatMap((D)=>D.citation_ids));_.citations=_.citations.filter((D)=>$.has(D.id))}function gX(_){_.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 BF(_){let $=_.budgets.max_tokens,D=new Set(_.warnings);while(jX(_)>$){let I=_.evidence.map((E,j)=>({entry:E,index:j})).filter(({entry:E})=>E.text_preview.length>180).sort((E,j)=>j.entry.text_preview.length-E.entry.text_preview.length)[0];if(I){I.entry.text_preview=O6(I.entry.text_preview,180),D.add("text_preview_truncated_for_token_budget");continue}let U=_.citations.filter((E)=>(E.quote_preview?.length??0)>120).sort((E,j)=>(j.quote_preview?.length??0)-(E.quote_preview?.length??0))[0];if(U?.quote_preview){U.quote_preview=O6(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((E)=>({...E,evidence_ids:E.evidence_ids.filter((j)=>_.evidence.some((N)=>N.id===j))})).filter((E)=>E.evidence_ids.length>1),gX(_),D.add("evidence_truncated_for_token_budget"),LX(_);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,gX(_),_.budgets.estimated_tokens=jX(_),_.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 SX(_){let $=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=WF(_.maxTokens),E=PF(_.maxItems,_.limit),j=ng(_.query??_.topic??"");if(I==="proposal"&&D!=="search"&&!j)throw Error("Proposal context requires --topic <text> or a positional topic.");if(D!=="search")h(_.dbPath);let N=AX(_.since,$).cutoff??_.since??"",A=D==="search"?await GF(_,E):await FF(_,E,$),O=A.evidence.sort((S,W)=>W.score-S.score||S.id.localeCompare(W.id)).slice(0,E),L=A.citations.filter((S,W,X)=>X.findIndex((G)=>G.id===S.id)===W).sort((S,W)=>S.id.localeCompare(W.id)),J=_.dedupe?OX(O):A.duplicateCandidates.filter((S)=>S.evidence_ids.every((W)=>O.some((X)=>X.id===W))),P=VF({source:D,purpose:I,query:j,evidence:O,duplicates:J}),z={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:D,purpose:I,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:M0("ctx",[D,I,j,N,_.dedupe===!0?"dedupe":"no-dedupe",_.semantic===!0?"semantic":"keyword",_.modelRef??"",_.limit??"",U,E,O.map((S)=>S.id).join(","),L.map((S)=>S.id).join(",")].join("\x00"),20),budgets:{max_tokens:U,estimated_tokens:0,max_items:E,items_included:O.length,items_available:A.available,items_truncated:Math.max(0,A.available-O.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:A.redactions,reminders:zF(D)},citations:L,evidence:O,duplicate_candidates:J,outline:P,warnings:A.warnings,message:`${O.length} bounded evidence item(s), estimated under ${U} token(s)`};return LX(z),BF(z)}import{randomUUID as rG}from"crypto";import{createHash as MF,randomUUID as bF}from"crypto";import{existsSync as ZF,readFileSync as HF}from"fs";import{hostname as GX}from"os";import{fileURLToPath as RX}from"url";import{extname as kF,relative as YX,resolve as JX,sep as qF}from"path";var XI=["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"],k6=2,q6=1,aD={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"]},sD=new Set(["storage_objects","knowledge_sync_changes","knowledge_sync_table_clocks","knowledge_sync_imports"]);function d$(_=new Date){return _.toISOString()}function eg(_){return`${_}_${Date.now().toString(36)}_${bF().slice(0,8)}`}function QX(_){let $=_?.trim();if($)return $;return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??GX()}function Z0(_){if(Array.isArray(_))return`[${_.map(Z0).join(",")}]`;if(_&&typeof _==="object"){let $=_;return`{${Object.keys($).sort().map((D)=>`${JSON.stringify(D)}:${Z0($[D])}`).join(",")}}`}return JSON.stringify(_)}function oD(_){return`sha256:${MF("sha256").update(_).digest("hex")}`}function PI(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function RI(_,$){try{return JSON.parse(_)}catch{return $}}function A$(_){return`"${_.replace(/"/g,'""')}"`}function CF(_){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 KX(_,$){return $.filter((D)=>P$(_,D))}function P$(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get($);return Boolean(D)}function vF(_,$){let D=_.query(`PRAGMA table_info(${A$($)})`).all();return new Set(D.map((I)=>I.name))}function wF(_,$,D){let I=vF(_,$);return D.filter((U)=>I.has(U))}function TX(_){if(!_||_.length===0)return[...XI];let $=new Set(XI),D=_.map((U)=>U.trim()).filter(Boolean),I=D.filter((U)=>!$.has(U));if(I.length>0)throw Error(`Unknown knowledge sync table(s): ${I.join(", ")}`);return D}function J4(_,$){return aD[_].map((I)=>`${I}=${JSON.stringify($[I]??null)}`).join("&")}var rF=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body_bytes"]);function pD(_,$=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((I)=>pD(I,$+1));let D={};for(let[I,U]of Object.entries(_)){if(rF.has(I.toLowerCase()))continue;D[I]=pD(U,$+1)}return D}function tD(_){if(!_)return null;return pD(_)}function ag(_){return oD(Z0(_))}function fF(_,$){let D={};for(let[I,U]of Object.entries(_))if(I==="artifact_uri"&&typeof U==="string"&&$.has(U))D[I]=`artifact:${$.get(U)}`;else D[I]=U;return D}function S4(_,$=new Map){return ag(fF(_,$))}function FX(_,$){if(!P$(_,$))return[];return _.query(`SELECT * FROM ${A$($)} ORDER BY rowid ASC`).all()}function GI(_,$,D=new Map){return ag($.map((I)=>({key:J4(_,I),hash:S4(I,D)})).sort((I,U)=>I.key.localeCompare(U.key)))}function eD(_,$,D){return _.query("SELECT * FROM knowledge_sync_table_clocks WHERE table_name = ? AND machine_id = ?").get($,D)??null}function xF(_){if(!P$(_,"knowledge_sync_table_clocks"))return[];return _.query("SELECT * FROM knowledge_sync_table_clocks ORDER BY table_name ASC, machine_id ASC").all()}function YI(_,$){let D=$.now??d$(),U=eD(_,$.table,$.machineId)?.created_at??D;_.query(` + LIMIT ?`).all(...$,D)}function QF(_,$){return`${_.type} ${_.metadata_json} ${$.map((I)=>`${I.event} ${I.metadata_json}`).join(" ")}`.toLowerCase().includes("loop")}function KF(_,$,D){let I=n$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=n$($,["artifact_uri"],D),E=n$($,["artifact_path","artifact_key"],D),j=I??U??E??`knowledge://project/runs/${_.id}`,N=_.prompt?B0(_.prompt,D,180).text:null;return{id:M0("cite",`run\x00${_.id}\x00${j}`,12),kind:U||E?"artifact":"run",ref:j,source_ref:I?.startsWith("open-files://")?I:null,source_uri:I&&!I.startsWith("open-files://")?I:null,artifact_uri:U,artifact_path:E,run_id:_.id,run_event_id:null,revision:n$($,["revision"],D),hash:n$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function TF(_,$,D){let I=n$($,["source_ref","source_uri","evidence_uri","receipt_uri"],D),U=n$($,["artifact_uri"],D),E=n$($,["artifact_path","artifact_key"],D),j=I??U??E??`knowledge://project/runs/${_.run_id}`,N=B0(_.event,D,160).text;return{id:M0("cite",`event\x00${_.id}\x00${j}`,12),kind:U||E?"artifact":"run_event",ref:j,source_ref:I?.startsWith("open-files://")?I:null,source_uri:I&&!I.startsWith("open-files://")?I:null,artifact_uri:U,artifact_path:E,run_id:_.run_id,run_event_id:_.id,revision:n$($,["revision"],D),hash:n$($,["hash","content_hash"],D),chunk_id:null,offsets:{start:null,end:null},quote_preview:N}}function OX(_){let $=new Map;for(let D of _){let I=dg(`${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(!I)continue;$.set(I,[...$.get(I)??[],D.id])}return Array.from($.entries()).filter(([,D])=>D.length>1).map(([D,I])=>({id:M0("dup",D,12),reason:"normalized_text_match",evidence_ids:I,confidence:I.length>2?"high":"medium"}))}async function FF(_,$,D){let I=_.source==="loops"?"loops":"runs",U=(_.topic??_.query??"").trim(),E=SF(U),j=AX(_.since,D),N=j.warning?[j.warning]:[];c(_.dbPath);let A=w(_.dbPath);try{let O=RF(A,j.cutoff,Math.max($*8,40)),S=YF(A,O.map((X)=>X.id),Math.max($*12,80)),L=new Map;for(let X of S)L.set(X.run_id,[...L.get(X.run_id)??[],X]);let z=(I==="loops"?O.filter((X)=>QF(X,L.get(X.id)??[])):O).map((X)=>{let R=EX(X.metadata_json),T=`${X.type} ${X.status} ${X.prompt??""} ${WI(R)} ${(L.get(X.id)??[]).map((Y)=>`${Y.event} ${Y.metadata_json}`).join(" ")}`;return{row:X,metadata:R,score:NX(T,E),text:T}}).filter((X)=>E.length===0||X.score>0).sort((X,R)=>R.score-X.score||R.row.updated_at.localeCompare(X.row.updated_at)||X.row.id.localeCompare(R.row.id)),G=[],J=[],W=0;for(let X of z.slice(0,Math.max($*2,$))){let R=KF(X.row,X.metadata,_.safetyPolicy);G.push(R);let T=WI(X.metadata),Y=[X.row.prompt,T].filter(Boolean).join(" | ")||`${X.row.type} ${X.row.status}`,Q=B0(Y,_.safetyPolicy,420);W+=Q.redactions,J.push({id:`run:${X.row.id}`,kind:X.row.type,title:O6(`${X.row.type}: ${X.row.status}`,100),text_preview:Q.text,score:X.score,citation_ids:[R.id],provenance:{source:I,record_ref:`knowledge://project/runs/${X.row.id}`,created_at:X.row.created_at,updated_at:X.row.updated_at,metadata_keys:cg(X.metadata)}});let F=(L.get(X.row.id)??[]).map((q)=>{let Z=EX(q.metadata_json),f=`${q.event} ${WI(Z)} ${q.metadata_json}`;return{event:q,metadata:Z,score:NX(f,E),text:f}}).filter((q)=>E.length===0||q.score>0).sort((q,Z)=>Z.score-q.score||Z.event.created_at.localeCompare(q.event.created_at)||q.event.id.localeCompare(Z.event.id)).slice(0,2);for(let q of F){let Z=TF(q.event,q.metadata,_.safetyPolicy);G.push(Z);let f=B0(`${q.event}: ${WI(q.metadata)}`,_.safetyPolicy,320);W+=f.redactions,J.push({id:`event:${q.event.id}`,kind:`run_event:${q.event.level}`,title:O6(q.event.event,100),text_preview:f.text,score:q.score,citation_ids:[Z.id],provenance:{source:I,record_ref:`knowledge://project/runs/${q.event.run_id}`,created_at:q.event.created_at,updated_at:null,metadata_keys:cg(q.metadata)}})}}return{citations:G,evidence:J,duplicateCandidates:_.dedupe?OX(J):[],redactions:W,warnings:N,available:z.length}}finally{A.close()}}function VF(_){let $=_.purpose==="proposal"?`Proposal context: ${O6(_.query||"loop evidence",80)}`:`Knowledge context: ${O6(_.query,80)}`,D=_.evidence.slice(0,8).map((E)=>E.id),I=_.duplicates.slice(0,5).map((E)=>E.id),U=_.evidence.slice(0,5).map((E)=>`${E.id}: ${E.title}`);if(_.evidence.length===0)U.push("No matching bounded evidence was found.");return{title:$,bullets:U,evidence_ids:D,duplicate_candidate_ids:I,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 SX(_){let $=new Set(_.evidence.flatMap((D)=>D.citation_ids));_.citations=_.citations.filter((D)=>$.has(D.id))}function gX(_){_.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 BF(_){let $=_.budgets.max_tokens,D=new Set(_.warnings);while(jX(_)>$){let I=_.evidence.map((E,j)=>({entry:E,index:j})).filter(({entry:E})=>E.text_preview.length>180).sort((E,j)=>j.entry.text_preview.length-E.entry.text_preview.length)[0];if(I){I.entry.text_preview=O6(I.entry.text_preview,180),D.add("text_preview_truncated_for_token_budget");continue}let U=_.citations.filter((E)=>(E.quote_preview?.length??0)>120).sort((E,j)=>(j.quote_preview?.length??0)-(E.quote_preview?.length??0))[0];if(U?.quote_preview){U.quote_preview=O6(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((E)=>({...E,evidence_ids:E.evidence_ids.filter((j)=>_.evidence.some((N)=>N.id===j))})).filter((E)=>E.evidence_ids.length>1),gX(_),D.add("evidence_truncated_for_token_budget"),SX(_);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,gX(_),_.budgets.estimated_tokens=jX(_),_.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 LX(_){let $=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=WF(_.maxTokens),E=PF(_.maxItems,_.limit),j=ng(_.query??_.topic??"");if(I==="proposal"&&D!=="search"&&!j)throw Error("Proposal context requires --topic <text> or a positional topic.");if(D!=="search")c(_.dbPath);let N=AX(_.since,$).cutoff??_.since??"",A=D==="search"?await GF(_,E):await FF(_,E,$),O=A.evidence.sort((G,J)=>J.score-G.score||G.id.localeCompare(J.id)).slice(0,E),S=A.citations.filter((G,J,W)=>W.findIndex((X)=>X.id===G.id)===J).sort((G,J)=>G.id.localeCompare(J.id)),L=_.dedupe?OX(O):A.duplicateCandidates.filter((G)=>G.evidence_ids.every((J)=>O.some((W)=>W.id===J))),P=VF({source:D,purpose:I,query:j,evidence:O,duplicates:L}),z={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:$.toISOString(),source:D,purpose:I,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:M0("ctx",[D,I,j,N,_.dedupe===!0?"dedupe":"no-dedupe",_.semantic===!0?"semantic":"keyword",_.modelRef??"",_.limit??"",U,E,O.map((G)=>G.id).join(","),S.map((G)=>G.id).join(",")].join("\x00"),20),budgets:{max_tokens:U,estimated_tokens:0,max_items:E,items_included:O.length,items_available:A.available,items_truncated:Math.max(0,A.available-O.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:A.redactions,reminders:zF(D)},citations:S,evidence:O,duplicate_candidates:L,outline:P,warnings:A.warnings,message:`${O.length} bounded evidence item(s), estimated under ${U} token(s)`};return SX(z),BF(z)}import{randomUUID as rG}from"crypto";import{createHash as MF,randomUUID as bF}from"crypto";import{existsSync as ZF,readFileSync as HF}from"fs";import{hostname as GX}from"os";import{fileURLToPath as RX}from"url";import{extname as kF,relative as YX,resolve as JX,sep as qF}from"path";var XI=["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"],k6=2,q6=1,aD={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"]},sD=new Set(["storage_objects","knowledge_sync_changes","knowledge_sync_table_clocks","knowledge_sync_imports"]);function d$(_=new Date){return _.toISOString()}function eg(_){return`${_}_${Date.now().toString(36)}_${bF().slice(0,8)}`}function QX(_){let $=_?.trim();if($)return $;return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??GX()}function Z0(_){if(Array.isArray(_))return`[${_.map(Z0).join(",")}]`;if(_&&typeof _==="object"){let $=_;return`{${Object.keys($).sort().map((D)=>`${JSON.stringify(D)}:${Z0($[D])}`).join(",")}}`}return JSON.stringify(_)}function oD(_){return`sha256:${MF("sha256").update(_).digest("hex")}`}function PI(_,$){return _.query(`SELECT COUNT(*) AS n FROM ${$}`).get()?.n??0}function RI(_,$){try{return JSON.parse(_)}catch{return $}}function A$(_){return`"${_.replace(/"/g,'""')}"`}function CF(_){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 KX(_,$){return $.filter((D)=>P$(_,D))}function P$(_,$){let D=_.query("SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?").get($);return Boolean(D)}function vF(_,$){let D=_.query(`PRAGMA table_info(${A$($)})`).all();return new Set(D.map((I)=>I.name))}function wF(_,$,D){let I=vF(_,$);return D.filter((U)=>I.has(U))}function TX(_){if(!_||_.length===0)return[...XI];let $=new Set(XI),D=_.map((U)=>U.trim()).filter(Boolean),I=D.filter((U)=>!$.has(U));if(I.length>0)throw Error(`Unknown knowledge sync table(s): ${I.join(", ")}`);return D}function J4(_,$){return aD[_].map((I)=>`${I}=${JSON.stringify($[I]??null)}`).join("&")}var rF=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body_bytes"]);function pD(_,$=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((I)=>pD(I,$+1));let D={};for(let[I,U]of Object.entries(_)){if(rF.has(I.toLowerCase()))continue;D[I]=pD(U,$+1)}return D}function tD(_){if(!_)return null;return pD(_)}function ag(_){return oD(Z0(_))}function fF(_,$){let D={};for(let[I,U]of Object.entries(_))if(I==="artifact_uri"&&typeof U==="string"&&$.has(U))D[I]=`artifact:${$.get(U)}`;else D[I]=U;return D}function L4(_,$=new Map){return ag(fF(_,$))}function FX(_,$){if(!P$(_,$))return[];return _.query(`SELECT * FROM ${A$($)} ORDER BY rowid ASC`).all()}function GI(_,$,D=new Map){return ag($.map((I)=>({key:J4(_,I),hash:L4(I,D)})).sort((I,U)=>I.key.localeCompare(U.key)))}function eD(_,$,D){return _.query("SELECT * FROM knowledge_sync_table_clocks WHERE table_name = ? AND machine_id = ?").get($,D)??null}function xF(_){if(!P$(_,"knowledge_sync_table_clocks"))return[];return _.query("SELECT * FROM knowledge_sync_table_clocks ORDER BY table_name ASC, machine_id ASC").all()}function YI(_,$){let D=$.now??d$(),U=eD(_,$.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,8 +843,8 @@ ${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{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??D,JSON.stringify($.metadata??{}),U,D);let E=eD(_,$.table,$.machineId);if(!E)throw Error(`Failed to record sync clock for ${$.table}:${$.machineId}`);return E}function uF(_,$){let D=eD(_,$.table,$.machineId),I=D?.high_water_hash===$.highWaterHash?D.logical_clock:(D?.logical_clock??0)+1,U=$.record?YI(_,{table:$.table,machineId:$.machineId,logicalClock:I,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:I,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 yF(_,$,D,I,U){if($.high_water_bundle_id=D,!I)return;YI(_,{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 VX(_,$){return _.table_clocks?.find((D)=>D.table===$)??null}function hF(_,$){if(!_||!$)return!1;return $.logical_clock<_.logical_clock}function cF(_,$,D){if(D.length===0)return 0;let I=wF(_,$,Object.keys(D[0]));if(I.length===0)return 0;let U=aD[$],E=I.map(A$).join(", "),j=I.map(()=>"?").join(", "),N=U.map(A$).join(", "),A=I.filter((z)=>!U.includes(z)),O=U[0],L=A.length>0?A.map((z)=>`${A$(z)} = excluded.${A$(z)}`).join(", "):`${A$(O)} = excluded.${A$(O)}`,J=_.query(`INSERT INTO ${A$($)} (${E}) VALUES (${j}) - ON CONFLICT (${N}) DO UPDATE SET ${L}`);return _.transaction((z)=>{for(let S of z)J.run(...I.map((W)=>CF(S[W])))})(D),D.length}function BX(_,$){let D=aD[_],I=[],U=$;for(let E=0;E<D.length;E+=1){let N=`${D[E]}=`;if(!U.startsWith(N))return null;let A=U.slice(N.length),O=D[E+1],L=O?`&${O}=`:null,J=L?A.indexOf(L):-1,P=J>=0?A.slice(0,J):A;try{I.push(JSON.parse(P))}catch{return null}U=J>=0&&L?A.slice(J+1):""}return U.length===0?I:null}function MX(_){return aD[_].map(($)=>`${A$($)} = ?`).join(" AND ")}function nF(_,$,D){if(!P$(_,"knowledge_sync_changes"))return new Map;let I=_.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 E=eD(_,$.table,$.machineId);if(!E)throw Error(`Failed to record sync clock for ${$.table}:${$.machineId}`);return E}function uF(_,$){let D=eD(_,$.table,$.machineId),I=D?.high_water_hash===$.highWaterHash?D.logical_clock:(D?.logical_clock??0)+1,U=$.record?YI(_,{table:$.table,machineId:$.machineId,logicalClock:I,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:I,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 yF(_,$,D,I,U){if($.high_water_bundle_id=D,!I)return;YI(_,{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 VX(_,$){return _.table_clocks?.find((D)=>D.table===$)??null}function hF(_,$){if(!_||!$)return!1;return $.logical_clock<_.logical_clock}function cF(_,$,D){if(D.length===0)return 0;let I=wF(_,$,Object.keys(D[0]));if(I.length===0)return 0;let U=aD[$],E=I.map(A$).join(", "),j=I.map(()=>"?").join(", "),N=U.map(A$).join(", "),A=I.filter((z)=>!U.includes(z)),O=U[0],S=A.length>0?A.map((z)=>`${A$(z)} = excluded.${A$(z)}`).join(", "):`${A$(O)} = excluded.${A$(O)}`,L=_.query(`INSERT INTO ${A$($)} (${E}) VALUES (${j}) + ON CONFLICT (${N}) DO UPDATE SET ${S}`);return _.transaction((z)=>{for(let G of z)L.run(...I.map((J)=>CF(G[J])))})(D),D.length}function BX(_,$){let D=aD[_],I=[],U=$;for(let E=0;E<D.length;E+=1){let N=`${D[E]}=`;if(!U.startsWith(N))return null;let A=U.slice(N.length),O=D[E+1],S=O?`&${O}=`:null,L=S?A.indexOf(S):-1,P=L>=0?A.slice(0,L):A;try{I.push(JSON.parse(P))}catch{return null}U=L>=0&&S?A.slice(L+1):""}return U.length===0?I:null}function MX(_){return aD[_].map(($)=>`${A$($)} = ?`).join(" AND ")}function nF(_,$,D){if(!P$(_,"knowledge_sync_changes"))return new Map;let I=_.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(D,$),U=new Map;for(let E of I)U.set(E.entity_id,E.next_hash);return U}function dF(_,$){if(P$(_,"chunks_fts"))_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run($);if(P$(_,"chunk_embeddings"))_.query("DELETE FROM chunk_embeddings WHERE chunk_id = ?").run($);if(P$(_,"vector_index_entries"))_.query("DELETE FROM vector_index_entries WHERE chunk_id = ?").run($);if(P$(_,"citations"))_.query("DELETE FROM citations WHERE chunk_id = ?").run($)}function mF(_,$,D){let I=BX($,D);if(!I)return!1;let U=MX($),E=_.query(`SELECT * FROM ${A$($)} WHERE ${U} LIMIT 1`).get(...I);if(!E)return!1;if($==="chunks"&&typeof E.id==="string")dF(_,E.id);return _.query(`DELETE FROM ${A$($)} WHERE ${U}`).run(...I),!0}function lF(_,$){if(!P$(_,"chunks_fts"))return;for(let D of $){let I=typeof D.id==="string"?D.id:null,U=typeof D.text==="string"?D.text:null;if(!I||U===null)continue;let E="",j="",N=typeof D.source_revision_id==="string"?D.source_revision_id:null;if(N){let A=_.query(`SELECT s.title, s.uri @@ -853,7 +853,7 @@ ${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{config:$.config, WHERE sr.id = ? LIMIT 1`).get(N);E=A?.title??"",j=A?.uri??""}if(!j&&typeof D.metadata_json==="string"){let A=RI(D.metadata_json,{});j=typeof A.source_uri==="string"?A.source_uri:""}_.query("DELETE FROM chunks_fts WHERE chunk_id = ?").run(I),_.query("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)").run(I,U,E,j)}}function iF(_,$,D){if($==="chunks")lF(_,D)}function tF(_,$){let D=YX(_,$);return D!==".."&&!D.startsWith("..")&&!D.startsWith(`..${qF}`)}function oF(_,$){let D=RI(_.metadata_json,{});if(typeof D.key==="string")return D.key;if(!_.artifact_uri.startsWith("file://"))return null;try{let I=RX(_.artifact_uri),U=JX($),E=JX(I);if(!tF(U,E))return null;let j=YX(U,E).replace(/\\/g,"/");return j?c$(j):null}catch{return null}}var pF=new Set([".csv",".html",".json",".jsonl",".log",".md",".txt",".xml",".yaml",".yml"]);function eF(_,$){let D=_?.toLowerCase()??"";if(D.startsWith("text/"))return!0;if(/(json|markdown|xml|yaml|csv)/.test(D))return!0;return $?pF.has(kF($).toLowerCase()):!1}function W4(_){let $=new Map;for(let D of _)if(D.key)$.set(D.artifact_uri,D.key);return $}function Z6(_){return ag({key:_.key,kind:_.kind,hash:_.hash,size_bytes:_.size_bytes})}function QI(_){return _.key??_.artifact_uri}function aF(_,$){return _.artifact_uri.startsWith("s3://")&&$.artifact_store.type==="s3"&&_.artifact_uri.startsWith($.artifact_store.uri_prefix)}function bX(_){return Object.fromEntries(XI.map(($)=>[$,P$(_,$)?PI(_,$):0]))}function sF(_){return _.query(`SELECT artifact_uri, kind, hash, size_bytes FROM storage_objects - ORDER BY artifact_uri ASC`).all()}function _V(_,$){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 lg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function $V(_){if(!_)return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function H6(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function zI(_){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(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${b0(D)}`).join(",")}}`;return JSON.stringify(_)}function WX(_){let{recorded_at:$,...D}=_;return D}function b_(_){return typeof _==="string"&&_.length>0?_:null}function DV(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function PX(_){return typeof _==="boolean"?_:null}function UV(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function ZX(_){let $=H6(_),D=b_($.observed_at),I=b_($.source_authority);if(!D||!I)return null;return{observed_at:D,verified_at:b_($.verified_at),expires_at:b_($.expires_at),ttl_ms:DV($.ttl_ms),source_authority:I,confidence:b_($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:UV($.reasons)}}function HX(_,$){if(!_||_.stale)return!1;if(!_.expires_at)return!0;let D=Date.parse(_.expires_at),I=Date.parse($);return Number.isNaN(D)||Number.isNaN(I)||D>I}function IV(_,$){return b_($.source)===_.source&&b_($.target)===_.target&&b_($.route)===_.route&&b_($.target_kind)===_.targetKind&&b_($.confidence)===_.confidence}function EV(_,$){return b_($.source)===_.source&&b_($.requested_machine_id)===_.requested_machine_id&&b_($.machine_id)===_.machine_id&&b_($.project_id)===_.project_id&&b_($.repo_name)===_.repo_name&&b_($.project_root)===_.project_root&&b_($.project_root_source)===_.project_root_source&&b_($.workspace_root)===_.workspace_root&&b_($.workspace_root_source)===_.workspace_root_source&&b_($.open_files_root)===_.open_files_root&&b_($.open_files_root_source)===_.open_files_root_source&&b_($.trust_status)===_.trust_status&&b_($.auth_status)===_.auth_status&&PX($.current)===_.current&&PX($.primary)===_.primary}function jV(_,$,D){if(!_)return null;let I=ZX($.cacheability);if(I&&HX(I,D)&&IV(_,$))return{..._,cacheability:I};return _}function NV(_,$,D){if(!_)return null;let I=ZX($.cacheability);if(I&&HX(I,D)&&EV(_,$))return{..._,cacheability:I};return _}function gV(_){return _.workspace?.machine_id??_.workspace?.requested_machine_id??_.machineId??_.route?.target??GX()}function AV(_,$){let D=new Set,I=Array.isArray($.sources)?$.sources:[];for(let U of I)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 zX(_,$){if($?.target&&($.route==="tailscale"||$.targetKind==="tailscale"))return $.target;return _?.tailscale_dns??null}function OV(_,$,D){let I=H6($.resolver_evidence),U=_.route?zI({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}):H6(I.route),E=_.workspace?zI({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}):H6(I.workspace);return zI({...I,recorded_at:D,route:U,workspace:E})}function kX(_,$){h(_);let D=w(_);try{let I=gV($),U=D.query("SELECT * FROM knowledge_machines WHERE machine_id = ?").get(I)??null,E=d$($.now),j=lg(U?.capabilities_json),N=lg(U?.metadata_json),A=H6(j.resolver),O=H6(N.resolver_evidence),L=H6(O.route),J=H6(O.workspace),P=jV($.route?.source==="registry"?null:$.route??null,L,E),z=NV($.workspace?.source==="registry"?null:$.workspace??null,J,E),S={...$,route:P,workspace:z},W={...j,resolver:zI({...A,route_source:P?.source??A.route_source,route_kind:P?.route??A.route_kind,route_target_kind:P?.targetKind??A.route_target_kind,route_confidence:P?.confidence??A.route_confidence,route_cacheable:P?.cacheability?.cacheable??A.route_cacheable,route_stale:P?.cacheability?.stale??A.route_stale,route_expires_at:P?.cacheability?.expires_at??A.route_expires_at,route_observed_at:P?.cacheability?.observed_at??A.route_observed_at,route_source_authority:P?.cacheability?.source_authority??A.route_source_authority,workspace_source:z?.source??A.workspace_source,project_root_source:z?.project_root_source??A.project_root_source,workspace_root_source:z?.workspace_root_source??A.workspace_root_source,open_files_root_source:z?.open_files_root_source??A.open_files_root_source,trust_status:z?.trust_status??A.trust_status,auth_status:z?.auth_status??A.auth_status,workspace_cacheable:z?.cacheability?.cacheable??A.workspace_cacheable,workspace_stale:z?.cacheability?.stale??A.workspace_stale,workspace_expires_at:z?.cacheability?.expires_at??A.workspace_expires_at,workspace_observed_at:z?.cacheability?.observed_at??A.workspace_observed_at,workspace_source_authority:z?.cacheability?.source_authority??A.workspace_source_authority}),route_fallback:Boolean(P?.target??U?.ssh_target),workspace_fallback:Boolean(z?.project_root??U?.workspace_home)},X=OV(S,N,E);if(U){let R=O;if(U.workspace_home===(z?.project_root??U.workspace_home??null)&&U.tailscale_dns===zX(U,P)&&U.ssh_target===(P?.target??U.ssh_target??null)&&b0(lg(U.capabilities_json))===b0(W)&&b0(WX(R))===b0(WX(X)))return U}let G={machine_id:I,hostname:U?.hostname??null,platform:U?.platform??null,user_label:U?.user_label??null,workspace_home:z?.project_root??U?.workspace_home??null,tailscale_dns:zX(U,P),tailscale_ips_json:JSON.stringify($V(U?.tailscale_ips_json)),ssh_target:P?.target??U?.ssh_target??null,last_seen_at:E,capabilities_json:JSON.stringify(W),metadata_json:JSON.stringify({...N,source:"knowledge",sources:AV(S,N),resolver_evidence:X}),created_at:U?.created_at??E,updated_at:E};return qX(D,G),G}finally{D.close()}}function qX(_,$){_.query(` + ORDER BY artifact_uri ASC`).all()}function _V(_,$){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 lg(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function $V(_){if(!_)return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function H6(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function zI(_){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(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${b0(D)}`).join(",")}}`;return JSON.stringify(_)}function WX(_){let{recorded_at:$,...D}=_;return D}function b_(_){return typeof _==="string"&&_.length>0?_:null}function DV(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function PX(_){return typeof _==="boolean"?_:null}function UV(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function ZX(_){let $=H6(_),D=b_($.observed_at),I=b_($.source_authority);if(!D||!I)return null;return{observed_at:D,verified_at:b_($.verified_at),expires_at:b_($.expires_at),ttl_ms:DV($.ttl_ms),source_authority:I,confidence:b_($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:UV($.reasons)}}function HX(_,$){if(!_||_.stale)return!1;if(!_.expires_at)return!0;let D=Date.parse(_.expires_at),I=Date.parse($);return Number.isNaN(D)||Number.isNaN(I)||D>I}function IV(_,$){return b_($.source)===_.source&&b_($.target)===_.target&&b_($.route)===_.route&&b_($.target_kind)===_.targetKind&&b_($.confidence)===_.confidence}function EV(_,$){return b_($.source)===_.source&&b_($.requested_machine_id)===_.requested_machine_id&&b_($.machine_id)===_.machine_id&&b_($.project_id)===_.project_id&&b_($.repo_name)===_.repo_name&&b_($.project_root)===_.project_root&&b_($.project_root_source)===_.project_root_source&&b_($.workspace_root)===_.workspace_root&&b_($.workspace_root_source)===_.workspace_root_source&&b_($.open_files_root)===_.open_files_root&&b_($.open_files_root_source)===_.open_files_root_source&&b_($.trust_status)===_.trust_status&&b_($.auth_status)===_.auth_status&&PX($.current)===_.current&&PX($.primary)===_.primary}function jV(_,$,D){if(!_)return null;let I=ZX($.cacheability);if(I&&HX(I,D)&&IV(_,$))return{..._,cacheability:I};return _}function NV(_,$,D){if(!_)return null;let I=ZX($.cacheability);if(I&&HX(I,D)&&EV(_,$))return{..._,cacheability:I};return _}function gV(_){return _.workspace?.machine_id??_.workspace?.requested_machine_id??_.machineId??_.route?.target??GX()}function AV(_,$){let D=new Set,I=Array.isArray($.sources)?$.sources:[];for(let U of I)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 zX(_,$){if($?.target&&($.route==="tailscale"||$.targetKind==="tailscale"))return $.target;return _?.tailscale_dns??null}function OV(_,$,D){let I=H6($.resolver_evidence),U=_.route?zI({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}):H6(I.route),E=_.workspace?zI({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}):H6(I.workspace);return zI({...I,recorded_at:D,route:U,workspace:E})}function kX(_,$){c(_);let D=w(_);try{let I=gV($),U=D.query("SELECT * FROM knowledge_machines WHERE machine_id = ?").get(I)??null,E=d$($.now),j=lg(U?.capabilities_json),N=lg(U?.metadata_json),A=H6(j.resolver),O=H6(N.resolver_evidence),S=H6(O.route),L=H6(O.workspace),P=jV($.route?.source==="registry"?null:$.route??null,S,E),z=NV($.workspace?.source==="registry"?null:$.workspace??null,L,E),G={...$,route:P,workspace:z},J={...j,resolver:zI({...A,route_source:P?.source??A.route_source,route_kind:P?.route??A.route_kind,route_target_kind:P?.targetKind??A.route_target_kind,route_confidence:P?.confidence??A.route_confidence,route_cacheable:P?.cacheability?.cacheable??A.route_cacheable,route_stale:P?.cacheability?.stale??A.route_stale,route_expires_at:P?.cacheability?.expires_at??A.route_expires_at,route_observed_at:P?.cacheability?.observed_at??A.route_observed_at,route_source_authority:P?.cacheability?.source_authority??A.route_source_authority,workspace_source:z?.source??A.workspace_source,project_root_source:z?.project_root_source??A.project_root_source,workspace_root_source:z?.workspace_root_source??A.workspace_root_source,open_files_root_source:z?.open_files_root_source??A.open_files_root_source,trust_status:z?.trust_status??A.trust_status,auth_status:z?.auth_status??A.auth_status,workspace_cacheable:z?.cacheability?.cacheable??A.workspace_cacheable,workspace_stale:z?.cacheability?.stale??A.workspace_stale,workspace_expires_at:z?.cacheability?.expires_at??A.workspace_expires_at,workspace_observed_at:z?.cacheability?.observed_at??A.workspace_observed_at,workspace_source_authority:z?.cacheability?.source_authority??A.workspace_source_authority}),route_fallback:Boolean(P?.target??U?.ssh_target),workspace_fallback:Boolean(z?.project_root??U?.workspace_home)},W=OV(G,N,E);if(U){let R=O;if(U.workspace_home===(z?.project_root??U.workspace_home??null)&&U.tailscale_dns===zX(U,P)&&U.ssh_target===(P?.target??U.ssh_target??null)&&b0(lg(U.capabilities_json))===b0(J)&&b0(WX(R))===b0(WX(W)))return U}let X={machine_id:I,hostname:U?.hostname??null,platform:U?.platform??null,user_label:U?.user_label??null,workspace_home:z?.project_root??U?.workspace_home??null,tailscale_dns:zX(U,P),tailscale_ips_json:JSON.stringify($V(U?.tailscale_ips_json)),ssh_target:P?.target??U?.ssh_target??null,last_seen_at:E,capabilities_json:JSON.stringify(J),metadata_json:JSON.stringify({...N,source:"knowledge",sources:AV(G,N),resolver_evidence:W}),created_at:U?.created_at??E,updated_at:E};return qX(D,X),X}finally{D.close()}}function qX(_,$){_.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,9 +871,9 @@ ${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{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 LV(_,$,D=d$()){for(let I of $.machines)qX(_,_V(I,D));return $.machines.length}function sg(_){h(_);let $=w(_);try{return $.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all()}finally{$.close()}}function _U(_){h(_.dbPath);let $=w(_.dbPath),D=[],I=d$(_.now),U=QX(_.machineId),E=_.recordClocks!==!1;try{let j=KX($,TX(_.tables)),A=$.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 SV(_,$,D=d$()){for(let I of $.machines)qX(_,_V(I,D));return $.machines.length}function sg(_){c(_);let $=w(_);try{return $.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all()}finally{$.close()}}function _U(_){c(_.dbPath);let $=w(_.dbPath),D=[],I=d$(_.now),U=QX(_.machineId),E=_.recordClocks!==!1;try{let j=KX($,TX(_.tables)),A=$.query(`SELECT id, artifact_uri, kind, content_type, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all().map((S)=>{let W=oF(S,_.storage.local_layout.directories.artifacts),X={...S,key:W};if(_.includeArtifactContent!==!1&&W&&S.artifact_uri.startsWith("file://"))try{let G=RX(S.artifact_uri);if(ZF(G))if(!eF(S.content_type,W))D.push(`artifact_content_not_embedded_binary:${S.id}`);else{let R=HF(G,"utf8"),K=F_(R);if(K!==R)D.push(`artifact_content_redacted:${S.id}`);X.content_base64=Buffer.from(K,"utf8").toString("base64"),X.hash=oD(K),X.size_bytes=Buffer.byteLength(K)}else D.push(`artifact_missing:${S.artifact_uri}`)}catch(G){D.push(`artifact_read_failed:${S.artifact_uri}:${G instanceof Error?G.message:String(G)}`)}else if(_.includeArtifactContent!==!1&&S.artifact_uri.startsWith("s3://"))D.push(`artifact_content_not_embedded:${S.artifact_uri}`);return X=F_(X),X}),O=W4(A),L=j.filter((S)=>!sD.has(S)).map((S)=>({table:S,primary_keys:aD[S],rows:FX($,S).map((W)=>F_(W))})),J=L.map((S)=>uF($,{table:S.table,machineId:U,highWaterHash:GI(S.table,S.rows,O),rowCount:S.rows.length,record:E,now:I})),P=oD(Z0({source:{scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:f_($),machine_id:U,artifact_root_uri:F_(_.storage.artifact_store.uri_prefix)},tables:L.map((S)=>({table:S.table,primary_keys:S.primary_keys,rows:S.rows.map((W)=>({key:J4(S.table,W),hash:S4(W,O)})).sort((W,X)=>W.key.localeCompare(X.key))})),table_clocks:J.map((S)=>({table:S.table,machine_id:S.machine_id,logical_clock:S.logical_clock,high_water_hash:S.high_water_hash,row_count:S.row_count})),artifacts:A.map((S)=>({identity:QI(S),fingerprint:Z6(S)})).sort((S,W)=>S.identity.localeCompare(W.identity))})),z=`syncbundle_${P.replace("sha256:","").slice(0,32)}`;for(let S of J)yF($,S,z,E,I);return{ok:!0,format:"knowledge-sync-bundle",version:1,protocol_version:k6,min_protocol_version:q6,bundle_id:z,content_hash:P,generated_at:I,source:{scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:f_($),machine_id:U,artifact_root_uri:F_(_.storage.artifact_store.uri_prefix)},table_clocks:J,tables:L,artifacts:A,warnings:F_(D),message:`${L.reduce((S,W)=>S+W.rows.length,0)} row(s), ${A.length} artifact(s) exported`}}finally{$.close()}}function SV(_,$){let D=typeof _.protocol_version==="number"?_.protocol_version:null,I=typeof _.min_protocol_version==="number"?_.min_protocol_version:null;if(D===null||I===null||D<q6||I>k6)throw Error(`Unsupported ${$} protocol. Expected knowledge sync protocol v${k6} with min v${q6}.`)}function JV(_){if(!_||_.format!=="knowledge-sync-bundle"||_.version!==1)throw Error("Invalid knowledge sync bundle.");SV(_,"knowledge sync bundle")}function _2(_,$){return _.tables.find((D)=>D.table===$)??null}function CX(_){if(typeof _.content_hash==="string"&&_.content_hash.length>0)return _.content_hash;return oD(Z0({source:_.source,tables:_.tables.map(($)=>({table:$.table,rows:$.rows.map((D)=>({key:J4($.table,D),hash:S4(D,W4(_.artifacts))})).sort((D,I)=>D.key.localeCompare(I.key))})),artifacts:_.artifacts.map(($)=>({identity:QI($),fingerprint:Z6($)})).sort(($,D)=>$.identity.localeCompare(D.identity))}))}function WV(_){if(typeof _.bundle_id==="string"&&_.bundle_id.length>0)return _.bundle_id;return`syncbundle_${CX(_).replace("sha256:","").slice(0,32)}`}function PV(_,$){return new Map($.map((D)=>[J4(_,D),D]))}function zV(_){return new Map(_.artifacts.map(($)=>[QI($),$]))}async function XV(_){let $=zV(_.targetBundle),D=new Map,I=[],U={source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:0,conflicts:0,missing_content:0};for(let E of _.bundle.artifacts){let j=QI(E),N=$.get(j);if(N&&Z6(N)===Z6(E)){if(N.artifact_uri)D.set(E.artifact_uri,N.artifact_uri);U.skipped+=1;continue}if(N&&Z6(N)!==Z6(E)){let S={entityKind:"storage_object",entityId:j,localMachineId:_.localMachineId,remoteMachineId:_.bundle.source.machine_id??"unknown",localHash:Z6(N),remoteHash:Z6(E),metadata:{direction:_.direction,target_artifact_uri:N.artifact_uri,source_artifact_uri:E.artifact_uri,local_artifact:pD(N),remote_artifact:pD(E)}};if(og(_.db,S)){U.skipped+=1;continue}U.conflicts+=1,I.push(S);continue}let A=Boolean(E.key&&E.content_base64),O=aF(E,_.targetStorage);if(!A&&!O){U.missing_content+=1,_.warnings.push(`artifact_content_missing:${E.artifact_uri}`);continue}if(_.dryRun){U.copied+=1;continue}let L=E.artifact_uri;if(A&&E.key&&E.content_base64)L=(await _.targetStore.put({key:E.key,body:Buffer.from(E.content_base64,"base64"),content_type:E.content_type??void 0})).uri,D.set(E.artifact_uri,L);else if(O)D.set(E.artifact_uri,L);let J=RI(E.metadata_json,{}),P=typeof J.artifact_modified_at==="string"?J.artifact_modified_at:void 0,z={uri:L,key:E.key??J.key??E.artifact_uri,kind:E.kind,content_type:E.content_type??void 0,hash:E.hash??void 0,size_bytes:E.size_bytes??void 0,modified_at:P,metadata:{...J,synced_from_artifact_uri:E.artifact_uri,synced_from_machine_id:_.bundle.source.machine_id??void 0}};j6(_.db,[z]),U.copied+=1}return{result:U,uriMap:D,conflicts:I}}function ig(_,$){let D={..._};if(typeof D.artifact_uri==="string"&&$.has(D.artifact_uri))D.artifact_uri=$.get(D.artifact_uri);return D}function GV(_,$){let D=d$();_.query(` + ORDER BY artifact_uri ASC`).all().map((G)=>{let J=oF(G,_.storage.local_layout.directories.artifacts),W={...G,key:J};if(_.includeArtifactContent!==!1&&J&&G.artifact_uri.startsWith("file://"))try{let X=RX(G.artifact_uri);if(ZF(X))if(!eF(G.content_type,J))D.push(`artifact_content_not_embedded_binary:${G.id}`);else{let R=HF(X,"utf8"),T=F_(R);if(T!==R)D.push(`artifact_content_redacted:${G.id}`);W.content_base64=Buffer.from(T,"utf8").toString("base64"),W.hash=oD(T),W.size_bytes=Buffer.byteLength(T)}else D.push(`artifact_missing:${G.artifact_uri}`)}catch(X){D.push(`artifact_read_failed:${G.artifact_uri}:${X instanceof Error?X.message:String(X)}`)}else if(_.includeArtifactContent!==!1&&G.artifact_uri.startsWith("s3://"))D.push(`artifact_content_not_embedded:${G.artifact_uri}`);return W=F_(W),W}),O=W4(A),S=j.filter((G)=>!sD.has(G)).map((G)=>({table:G,primary_keys:aD[G],rows:FX($,G).map((J)=>F_(J))})),L=S.map((G)=>uF($,{table:G.table,machineId:U,highWaterHash:GI(G.table,G.rows,O),rowCount:G.rows.length,record:E,now:I})),P=oD(Z0({source:{scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:r_($),machine_id:U,artifact_root_uri:F_(_.storage.artifact_store.uri_prefix)},tables:S.map((G)=>({table:G.table,primary_keys:G.primary_keys,rows:G.rows.map((J)=>({key:J4(G.table,J),hash:L4(J,O)})).sort((J,W)=>J.key.localeCompare(W.key))})),table_clocks:L.map((G)=>({table:G.table,machine_id:G.machine_id,logical_clock:G.logical_clock,high_water_hash:G.high_water_hash,row_count:G.row_count})),artifacts:A.map((G)=>({identity:QI(G),fingerprint:Z6(G)})).sort((G,J)=>G.identity.localeCompare(J.identity))})),z=`syncbundle_${P.replace("sha256:","").slice(0,32)}`;for(let G of L)yF($,G,z,E,I);return{ok:!0,format:"knowledge-sync-bundle",version:1,protocol_version:k6,min_protocol_version:q6,bundle_id:z,content_hash:P,generated_at:I,source:{scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:r_($),machine_id:U,artifact_root_uri:F_(_.storage.artifact_store.uri_prefix)},table_clocks:L,tables:S,artifacts:A,warnings:F_(D),message:`${S.reduce((G,J)=>G+J.rows.length,0)} row(s), ${A.length} artifact(s) exported`}}finally{$.close()}}function LV(_,$){let D=typeof _.protocol_version==="number"?_.protocol_version:null,I=typeof _.min_protocol_version==="number"?_.min_protocol_version:null;if(D===null||I===null||D<q6||I>k6)throw Error(`Unsupported ${$} protocol. Expected knowledge sync protocol v${k6} with min v${q6}.`)}function JV(_){if(!_||_.format!=="knowledge-sync-bundle"||_.version!==1)throw Error("Invalid knowledge sync bundle.");LV(_,"knowledge sync bundle")}function _2(_,$){return _.tables.find((D)=>D.table===$)??null}function CX(_){if(typeof _.content_hash==="string"&&_.content_hash.length>0)return _.content_hash;return oD(Z0({source:_.source,tables:_.tables.map(($)=>({table:$.table,rows:$.rows.map((D)=>({key:J4($.table,D),hash:L4(D,W4(_.artifacts))})).sort((D,I)=>D.key.localeCompare(I.key))})),artifacts:_.artifacts.map(($)=>({identity:QI($),fingerprint:Z6($)})).sort(($,D)=>$.identity.localeCompare(D.identity))}))}function WV(_){if(typeof _.bundle_id==="string"&&_.bundle_id.length>0)return _.bundle_id;return`syncbundle_${CX(_).replace("sha256:","").slice(0,32)}`}function PV(_,$){return new Map($.map((D)=>[J4(_,D),D]))}function zV(_){return new Map(_.artifacts.map(($)=>[QI($),$]))}async function XV(_){let $=zV(_.targetBundle),D=new Map,I=[],U={source_artifacts:_.bundle.artifacts.length,target_artifacts:_.targetBundle.artifacts.length,copied:0,skipped:0,conflicts:0,missing_content:0};for(let E of _.bundle.artifacts){let j=QI(E),N=$.get(j);if(N&&Z6(N)===Z6(E)){if(N.artifact_uri)D.set(E.artifact_uri,N.artifact_uri);U.skipped+=1;continue}if(N&&Z6(N)!==Z6(E)){let G={entityKind:"storage_object",entityId:j,localMachineId:_.localMachineId,remoteMachineId:_.bundle.source.machine_id??"unknown",localHash:Z6(N),remoteHash:Z6(E),metadata:{direction:_.direction,target_artifact_uri:N.artifact_uri,source_artifact_uri:E.artifact_uri,local_artifact:pD(N),remote_artifact:pD(E)}};if(og(_.db,G)){U.skipped+=1;continue}U.conflicts+=1,I.push(G);continue}let A=Boolean(E.key&&E.content_base64),O=aF(E,_.targetStorage);if(!A&&!O){U.missing_content+=1,_.warnings.push(`artifact_content_missing:${E.artifact_uri}`);continue}if(_.dryRun){U.copied+=1;continue}let S=E.artifact_uri;if(A&&E.key&&E.content_base64)S=(await _.targetStore.put({key:E.key,body:Buffer.from(E.content_base64,"base64"),content_type:E.content_type??void 0})).uri,D.set(E.artifact_uri,S);else if(O)D.set(E.artifact_uri,S);let L=RI(E.metadata_json,{}),P=typeof L.artifact_modified_at==="string"?L.artifact_modified_at:void 0,z={uri:S,key:E.key??L.key??E.artifact_uri,kind:E.kind,content_type:E.content_type??void 0,hash:E.hash??void 0,size_bytes:E.size_bytes??void 0,modified_at:P,metadata:{...L,synced_from_artifact_uri:E.artifact_uri,synced_from_machine_id:_.bundle.source.machine_id??void 0}};j6(_.db,[z]),U.copied+=1}return{result:U,uriMap:D,conflicts:I}}function ig(_,$){let D={..._};if(typeof D.artifact_uri==="string"&&$.has(D.artifact_uri))D.artifact_uri=$.get(D.artifact_uri);return D}function GV(_,$){let D=d$();_.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, @@ -928,13 +928,13 @@ ${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{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,D,JSON.stringify({conflicts:$.conflicts,artifacts:$.artifacts,source_workspace_home:$.bundle.source.workspace_home}))}function QV(_){return{ok:!0,protocol_version:k6,min_protocol_version:q6,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(($)=>!sD.has($.table)).map(($)=>({table:$.table,source_rows:$.rows.length,target_rows:_2(_.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 KV(_,$){let D=W4(_.artifacts),I=W4($.artifacts);for(let U of _.tables){if(sD.has(U.table))continue;let E=_2($,U.table),N=VX(_,U.table)?.high_water_hash??GI(U.table,U.rows,D);if(GI(U.table,E?.rows??[],I)!==N)return!1}return!0}async function KI(_){JV(_.bundle),h(_.targetDbPath);let $=[..._.bundle.warnings],D=_.dryRun===!0,I=QX(_.localMachineId),U=_.bundle.source.machine_id??"unknown",E=WV(_.bundle),j=CX(_.bundle),N=_.targetBundle??_U({dbPath:_.targetDbPath,scope:_.targetScope,workspaceHome:_.targetWorkspaceHome,storage:_.targetStorage,machineId:I,includeArtifactContent:!1,recordClocks:!D}),A=w(_.targetDbPath);try{if(!D&&RV(A,E)&&KV(_.bundle,N))return QV({bundle:_.bundle,targetBundle:N,targetScope:_.targetScope,targetWorkspaceHome:_.targetWorkspaceHome,targetStorage:_.targetStorage,direction:_.direction,warnings:$,bundleId:E});let O=await XV({db:A,bundle:_.bundle,targetBundle:N,targetStorage:_.targetStorage,targetStore:_.targetStore,dryRun:D,direction:_.direction,localMachineId:I,warnings:$}),L=W4(_.bundle.artifacts),J=W4(N.artifacts),P=[],z=0,S=0,W=0;for(let R of _.bundle.tables){if(R.table==="storage_objects"||sD.has(R.table))continue;if(!P$(A,R.table))continue;let K=VX(_.bundle,R.table),Y=eD(A,R.table,U),T=_2(N,R.table),F=PV(R.table,T?.rows??[]),k=new Set(R.rows.map((D_)=>J4(R.table,D_))),B=nF(A,R.table,U),c=[],E_={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(hF(Y,K)){W+=1,E_.skipped+=R.rows.length,E_.stale_skipped=R.rows.length,$.push(`stale_table_skipped:${R.table}:${U}:${K.logical_clock}`),P.push(E_);continue}for(let D_ of R.rows){let J_=J4(R.table,D_),A_=F.get(J_),K$=S4(D_,L);if(!A_){E_.inserted+=1,c.push(ig(D_,O.uriMap));continue}let r_=S4(A_,J);if(r_===K$){E_.skipped+=1;continue}let T_=B.get(J_);if(B.has(J_)&&T_===r_){E_.updated+=1,c.push(ig(D_,O.uriMap));continue}let C_={entityKind:R.table,entityId:J_,localMachineId:I,remoteMachineId:U,localHash:r_,remoteHash:K$,baseHash:Y?.high_water_hash??null,metadata:{direction:_.direction,bundle_id:E,incoming_logical_clock:K?.logical_clock??null,current_logical_clock:Y?.logical_clock??null,source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:tD(A_),remote_row:tD(D_)}};if(og(A,C_)){E_.skipped+=1;continue}if(E_.conflicts+=1,!D&&tg(A,C_))z+=1}if(!D&&c.length>0){let D_=c.map((J_)=>ig(J_,O.uriMap));cF(A,R.table,D_),iF(A,R.table,D_);for(let J_ of D_)GV(A,{direction:_.direction,sourceMachineId:_.bundle.source.machine_id??"unknown",localMachineId:I,entityKind:R.table,entityId:J4(R.table,J_),nextHash:S4(J_,W4(_.bundle.artifacts)),logicalClock:K?.logical_clock??0,bundleId:E,row:J_})}for(let[D_,J_]of B){if(k.has(D_))continue;let A_=F.get(D_);if(!A_)continue;let K$=S4(A_,J);if(J_&&K$!==J_){let r_={entityKind:R.table,entityId:D_,localMachineId:I,remoteMachineId:U,localHash:K$,remoteHash:null,baseHash:J_,metadata:{direction:_.direction,bundle_id:E,reason:"remote_owned_row_missing_from_incoming_bundle",source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:tD(A_),remote_row:null}};if(og(A,r_)){E_.skipped+=1;continue}if(E_.conflicts+=1,!D&&tg(A,r_))z+=1;continue}if(E_.deleted+=1,!D)mF(A,R.table,D_)}if(!D&&K)YI(A,{table:R.table,machineId:U,logicalClock:K.logical_clock,highWaterHash:K.high_water_hash,highWaterBundleId:E,originMachineId:U,updatedByMachineId:I,lastAppliedAt:d$(),metadata:{source:"import",direction:_.direction,row_count:R.rows.length,inserted:E_.inserted,updated:E_.updated,deleted:E_.deleted,skipped:E_.skipped,conflicts:E_.conflicts}}),S+=1;P.push(E_)}for(let R of O.conflicts)if(!D){if(tg(A,{...R,baseHash:R.baseHash??null,metadata:{...R.metadata,bundle_id:E}}))z+=1}let X=P.reduce((R,K)=>R+K.inserted,0),G=P.reduce((R,K)=>R+K.conflicts,0)+O.result.conflicts;if(!D)YV(A,{bundle:_.bundle,bundleId:E,contentHash:j,sourceMachineId:U,targetMachineId:I,direction:_.direction,status:G===0?"applied":"conflicted",tableResults:P,conflicts:G,artifacts:O.result});return{ok:G===0,protocol_version:k6,min_protocol_version:q6,dry_run:D,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:f_(A),artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:P,artifacts:O.result,conflicts_created:z,bundle_id:E,replayed:!1,clocks:{advanced:S,stale_tables:W},warnings:$,message:`${_.dryRun?"Would import":"Imported"} ${X} row(s), copied ${O.result.copied} artifact(s), ${G} conflict(s)`}}finally{A.close()}}function vX(_){h(_.dbPath);let $=w(_.dbPath),D=d$(_.now);try{let I=_.topology?LV($,_.topology,D):0,U=bX($),E=F_(sF($)),j=_.machineId??_.topology?.local_machine_id??"unknown",N=F_(_.storage.artifact_store.uri_prefix),A=F_(_.workspaceHome),O=oD(Z0({machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:f_($),artifact_root_uri:N,tables:U,artifacts:E})),L={id:eg("syncsnap"),machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:f_($),artifact_root_uri:N,content_hash:O,tables_json:JSON.stringify(U),artifact_hashes_json:JSON.stringify(E),created_at:D};$.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 QV(_){return{ok:!0,protocol_version:k6,min_protocol_version:q6,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(($)=>!sD.has($.table)).map(($)=>({table:$.table,source_rows:$.rows.length,target_rows:_2(_.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 KV(_,$){let D=W4(_.artifacts),I=W4($.artifacts);for(let U of _.tables){if(sD.has(U.table))continue;let E=_2($,U.table),N=VX(_,U.table)?.high_water_hash??GI(U.table,U.rows,D);if(GI(U.table,E?.rows??[],I)!==N)return!1}return!0}async function KI(_){JV(_.bundle),c(_.targetDbPath);let $=[..._.bundle.warnings],D=_.dryRun===!0,I=QX(_.localMachineId),U=_.bundle.source.machine_id??"unknown",E=WV(_.bundle),j=CX(_.bundle),N=_.targetBundle??_U({dbPath:_.targetDbPath,scope:_.targetScope,workspaceHome:_.targetWorkspaceHome,storage:_.targetStorage,machineId:I,includeArtifactContent:!1,recordClocks:!D}),A=w(_.targetDbPath);try{if(!D&&RV(A,E)&&KV(_.bundle,N))return QV({bundle:_.bundle,targetBundle:N,targetScope:_.targetScope,targetWorkspaceHome:_.targetWorkspaceHome,targetStorage:_.targetStorage,direction:_.direction,warnings:$,bundleId:E});let O=await XV({db:A,bundle:_.bundle,targetBundle:N,targetStorage:_.targetStorage,targetStore:_.targetStore,dryRun:D,direction:_.direction,localMachineId:I,warnings:$}),S=W4(_.bundle.artifacts),L=W4(N.artifacts),P=[],z=0,G=0,J=0;for(let R of _.bundle.tables){if(R.table==="storage_objects"||sD.has(R.table))continue;if(!P$(A,R.table))continue;let T=VX(_.bundle,R.table),Y=eD(A,R.table,U),Q=_2(N,R.table),F=PV(R.table,Q?.rows??[]),q=new Set(R.rows.map((U_)=>J4(R.table,U_))),Z=nF(A,R.table,U),f=[],l={table:R.table,source_rows:R.rows.length,target_rows:Q?.rows.length??0,inserted:0,updated:0,deleted:0,skipped:0,conflicts:0,stale_skipped:0};if(!T)$.push(`legacy_clock_missing:${R.table}`);else if(hF(Y,T)){J+=1,l.skipped+=R.rows.length,l.stale_skipped=R.rows.length,$.push(`stale_table_skipped:${R.table}:${U}:${T.logical_clock}`),P.push(l);continue}for(let U_ of R.rows){let j_=J4(R.table,U_),_$=F.get(j_),G_=L4(U_,S);if(!_$){l.inserted+=1,f.push(ig(U_,O.uriMap));continue}let K$=L4(_$,L);if(K$===G_){l.skipped+=1;continue}let E_=Z.get(j_);if(Z.has(j_)&&E_===K$){l.updated+=1,f.push(ig(U_,O.uriMap));continue}let C_={entityKind:R.table,entityId:j_,localMachineId:I,remoteMachineId:U,localHash:K$,remoteHash:G_,baseHash:Y?.high_water_hash??null,metadata:{direction:_.direction,bundle_id:E,incoming_logical_clock:T?.logical_clock??null,current_logical_clock:Y?.logical_clock??null,source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:tD(_$),remote_row:tD(U_)}};if(og(A,C_)){l.skipped+=1;continue}if(l.conflicts+=1,!D&&tg(A,C_))z+=1}if(!D&&f.length>0){let U_=f.map((j_)=>ig(j_,O.uriMap));cF(A,R.table,U_),iF(A,R.table,U_);for(let j_ of U_)GV(A,{direction:_.direction,sourceMachineId:_.bundle.source.machine_id??"unknown",localMachineId:I,entityKind:R.table,entityId:J4(R.table,j_),nextHash:L4(j_,W4(_.bundle.artifacts)),logicalClock:T?.logical_clock??0,bundleId:E,row:j_})}for(let[U_,j_]of Z){if(q.has(U_))continue;let _$=F.get(U_);if(!_$)continue;let G_=L4(_$,L);if(j_&&G_!==j_){let K$={entityKind:R.table,entityId:U_,localMachineId:I,remoteMachineId:U,localHash:G_,remoteHash:null,baseHash:j_,metadata:{direction:_.direction,bundle_id:E,reason:"remote_owned_row_missing_from_incoming_bundle",source_workspace_home:_.bundle.source.workspace_home,target_workspace_home:_.targetWorkspaceHome,local_row:tD(_$),remote_row:null}};if(og(A,K$)){l.skipped+=1;continue}if(l.conflicts+=1,!D&&tg(A,K$))z+=1;continue}if(l.deleted+=1,!D)mF(A,R.table,U_)}if(!D&&T)YI(A,{table:R.table,machineId:U,logicalClock:T.logical_clock,highWaterHash:T.high_water_hash,highWaterBundleId:E,originMachineId:U,updatedByMachineId:I,lastAppliedAt:d$(),metadata:{source:"import",direction:_.direction,row_count:R.rows.length,inserted:l.inserted,updated:l.updated,deleted:l.deleted,skipped:l.skipped,conflicts:l.conflicts}}),G+=1;P.push(l)}for(let R of O.conflicts)if(!D){if(tg(A,{...R,baseHash:R.baseHash??null,metadata:{...R.metadata,bundle_id:E}}))z+=1}let W=P.reduce((R,T)=>R+T.inserted,0),X=P.reduce((R,T)=>R+T.conflicts,0)+O.result.conflicts;if(!D)YV(A,{bundle:_.bundle,bundleId:E,contentHash:j,sourceMachineId:U,targetMachineId:I,direction:_.direction,status:X===0?"applied":"conflicted",tableResults:P,conflicts:X,artifacts:O.result});return{ok:X===0,protocol_version:k6,min_protocol_version:q6,dry_run:D,direction:_.direction,source:_.bundle.source,target:{scope:_.targetScope,workspace_home:_.targetWorkspaceHome,sqlite_schema_version:r_(A),artifact_root_uri:_.targetStorage.artifact_store.uri_prefix},tables:P,artifacts:O.result,conflicts_created:z,bundle_id:E,replayed:!1,clocks:{advanced:G,stale_tables:J},warnings:$,message:`${_.dryRun?"Would import":"Imported"} ${W} row(s), copied ${O.result.copied} artifact(s), ${X} conflict(s)`}}finally{A.close()}}function vX(_){c(_.dbPath);let $=w(_.dbPath),D=d$(_.now);try{let I=_.topology?SV($,_.topology,D):0,U=bX($),E=F_(sF($)),j=_.machineId??_.topology?.local_machine_id??"unknown",N=F_(_.storage.artifact_store.uri_prefix),A=F_(_.workspaceHome),O=oD(Z0({machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:r_($),artifact_root_uri:N,tables:U,artifacts:E})),S={id:eg("syncsnap"),machine_id:j,scope:_.scope,workspace_home:A,sqlite_schema_version:r_($),artifact_root_uri:N,content_hash:O,tables_json:JSON.stringify(U),artifact_hashes_json:JSON.stringify(E),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 J=new Map;for(let P of KX($,TX()).filter((z)=>!sD.has(z))){let z=FX($,P).map((G)=>F_(G)),S=GI(P,z,J),W=eD($,P,j),X=W?.high_water_hash===S?W.logical_clock:(W?.logical_clock??0)+1;YI($,{table:P,machineId:j,logicalClock:X,highWaterHash:S,highWaterBundleId:L.id,originMachineId:W?.origin_machine_id??j,updatedByMachineId:j,lastAppliedAt:D,metadata:{source:"snapshot",row_count:z.length},now:D})}return{ok:!0,snapshot:{...L,tables:U,artifact_hashes:E},machines_upserted:I,message:`Recorded sync snapshot ${L.id}`}}finally{$.close()}}function wX(_){h(_.dbPath);let $=w(_.dbPath);try{let D=$.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all(),I=$.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(),E=$.query("SELECT operation, COUNT(*) AS count FROM knowledge_sync_changes GROUP BY operation ORDER BY operation").all(),j=xF($),N=$.query("SELECT * FROM knowledge_sync_imports ORDER BY applied_at DESC LIMIT 1").get()??null,A=U.reduce((L,J)=>L+J.count,0),O=U.filter((L)=>L.status!=="resolved"&&L.status!=="ignored").reduce((L,J)=>L+J.count,0);return{ok:!0,scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:f_($),local_machine_id:_.localMachineId??null,machines:{total:D.length,rows:F_(D)},snapshots:{total:PI($,"knowledge_sync_snapshots"),latest:F_(I)},changes:{total:PI($,"knowledge_sync_changes"),by_operation:E},clocks:{total:j.length,rows:j},imports:{total:PI($,"knowledge_sync_imports"),latest:F_(N)},conflicts:{total:A,by_status:U,open:O},table_counts:bX($),message:`${D.length} machine(s), ${O} open sync conflict(s)`}}finally{$.close()}}function $2(_){return{..._,metadata:RI(_.metadata_json,{})}}function TI(_,$){h(_);let D=w(_);try{let I=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($);return I?$2(I):null}finally{D.close()}}function rX(_,$={}){h(_);let D=w(_),I=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,I):D.query("SELECT * FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ?").all(I)).map($2)}finally{D.close()}}function TV(_){return XI.includes(_)?_:null}function FV(_,$){let D=TV($.entity_kind);if(!D||!P$(_,D))return null;let I=BX(D,$.entity_id);if(!I)return null;let U=MX(D);return _.query(`SELECT * FROM ${A$(D)} WHERE ${U} LIMIT 1`).get(...I)}function VV(_,$){for(let D of $){let I=_[D];if(I&&typeof I==="object"&&!Array.isArray(I))return tD(I)}return null}function XX(_,$){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 pg(_,$=new Set,D=0){if(D>8||_===null||_===void 0)return $;if(typeof _==="string")return XX($,_),$;if(Array.isArray(_)){for(let I of _)pg(I,$,D+1);return $}if(typeof _==="object")for(let[I,U]of Object.entries(_)){if(I==="source_ref"||I==="source_uri"||I==="artifact_uri"||I.endsWith("_uri"))XX($,U);pg(U,$,D+1)}return $}function fX(_){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,I)=>{$.push({id:`source-${I+1}`,kind:D.startsWith("file://")||D.startsWith("s3://")?"artifact":"source_ref",ref:D,hash:null,quote:null})}),$}function xX(_,$){let D=TI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);h(_);let I=w(_);try{let U=tD(FV(I,D)),E=VV(D.metadata,["remote_row","source_row","incoming_row"]),N=[...pg({conflict:{entity_kind:D.entity_kind,entity_id:D.entity_id,metadata:D.metadata},local_row:U,remote_row:E})].slice(0,25),A=[{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:E,source_refs:N,citations:fX({conflict:D,localRow:U,remoteRow:E,sourceRefs:N}),read_only_tools:A}}finally{I.close()}}function $U(_,$){let D=TI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);let I=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(" "),E=["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:I,summary:U,merge_prompt:E,proposed_patch:null,citations:fX({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 uX(_,$){h(_);let D=w(_),I=d$();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(` + `).run(S.id,S.machine_id,S.scope,S.workspace_home,S.sqlite_schema_version,S.artifact_root_uri,S.content_hash,S.tables_json,S.artifact_hashes_json,S.created_at);let L=new Map;for(let P of KX($,TX()).filter((z)=>!sD.has(z))){let z=FX($,P).map((X)=>F_(X)),G=GI(P,z,L),J=eD($,P,j),W=J?.high_water_hash===G?J.logical_clock:(J?.logical_clock??0)+1;YI($,{table:P,machineId:j,logicalClock:W,highWaterHash:G,highWaterBundleId:S.id,originMachineId:J?.origin_machine_id??j,updatedByMachineId:j,lastAppliedAt:D,metadata:{source:"snapshot",row_count:z.length},now:D})}return{ok:!0,snapshot:{...S,tables:U,artifact_hashes:E},machines_upserted:I,message:`Recorded sync snapshot ${S.id}`}}finally{$.close()}}function wX(_){c(_.dbPath);let $=w(_.dbPath);try{let D=$.query("SELECT * FROM knowledge_machines ORDER BY machine_id ASC").all(),I=$.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(),E=$.query("SELECT operation, COUNT(*) AS count FROM knowledge_sync_changes GROUP BY operation ORDER BY operation").all(),j=xF($),N=$.query("SELECT * FROM knowledge_sync_imports ORDER BY applied_at DESC LIMIT 1").get()??null,A=U.reduce((S,L)=>S+L.count,0),O=U.filter((S)=>S.status!=="resolved"&&S.status!=="ignored").reduce((S,L)=>S+L.count,0);return{ok:!0,scope:_.scope,workspace_home:F_(_.workspaceHome),sqlite_schema_version:r_($),local_machine_id:_.localMachineId??null,machines:{total:D.length,rows:F_(D)},snapshots:{total:PI($,"knowledge_sync_snapshots"),latest:F_(I)},changes:{total:PI($,"knowledge_sync_changes"),by_operation:E},clocks:{total:j.length,rows:j},imports:{total:PI($,"knowledge_sync_imports"),latest:F_(N)},conflicts:{total:A,by_status:U,open:O},table_counts:bX($),message:`${D.length} machine(s), ${O} open sync conflict(s)`}}finally{$.close()}}function $2(_){return{..._,metadata:RI(_.metadata_json,{})}}function TI(_,$){c(_);let D=w(_);try{let I=D.query("SELECT * FROM knowledge_sync_conflicts WHERE id = ?").get($);return I?$2(I):null}finally{D.close()}}function rX(_,$={}){c(_);let D=w(_),I=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,I):D.query("SELECT * FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ?").all(I)).map($2)}finally{D.close()}}function TV(_){return XI.includes(_)?_:null}function FV(_,$){let D=TV($.entity_kind);if(!D||!P$(_,D))return null;let I=BX(D,$.entity_id);if(!I)return null;let U=MX(D);return _.query(`SELECT * FROM ${A$(D)} WHERE ${U} LIMIT 1`).get(...I)}function VV(_,$){for(let D of $){let I=_[D];if(I&&typeof I==="object"&&!Array.isArray(I))return tD(I)}return null}function XX(_,$){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 pg(_,$=new Set,D=0){if(D>8||_===null||_===void 0)return $;if(typeof _==="string")return XX($,_),$;if(Array.isArray(_)){for(let I of _)pg(I,$,D+1);return $}if(typeof _==="object")for(let[I,U]of Object.entries(_)){if(I==="source_ref"||I==="source_uri"||I==="artifact_uri"||I.endsWith("_uri"))XX($,U);pg(U,$,D+1)}return $}function fX(_){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,I)=>{$.push({id:`source-${I+1}`,kind:D.startsWith("file://")||D.startsWith("s3://")?"artifact":"source_ref",ref:D,hash:null,quote:null})}),$}function xX(_,$){let D=TI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);c(_);let I=w(_);try{let U=tD(FV(I,D)),E=VV(D.metadata,["remote_row","source_row","incoming_row"]),N=[...pg({conflict:{entity_kind:D.entity_kind,entity_id:D.entity_id,metadata:D.metadata},local_row:U,remote_row:E})].slice(0,25),A=[{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:E,source_refs:N,citations:fX({conflict:D,localRow:U,remoteRow:E,sourceRefs:N}),read_only_tools:A}}finally{I.close()}}function $U(_,$){let D=TI(_,$);if(!D)throw Error(`Sync conflict not found: ${$}`);let I=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(" "),E=["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:I,summary:U,merge_prompt:E,proposed_patch:null,citations:fX({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 uX(_,$){c(_);let D=w(_),I=d$();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 = ?, @@ -950,7 +950,7 @@ ${z}`;else{let{generateText:T}=await import("ai"),F=await lD(E,{config:$.config, ${JSON.stringify({proposed_strategy:_.deterministic.proposed_strategy,summary:_.deterministic.summary,warnings:_.deterministic.warnings},null,2)}`,"",`Conflict evidence: ${JSON.stringify(_.evidence,null,2)}`].join(` `)}function zb(_){let $=typeof _==="number"&&Number.isFinite(_)?_:0.5;return Math.max(0,Math.min(1,$))}function Xb(_,$){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 Gb(_){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 fG(_){let $=(_.now??new Date).toISOString();h(_.dbPath);let D=$U(_.dbPath,_.id),I=xX(_.dbPath,_.id),U=T$(_.modelRef??"default",_.config),E=x_(U),j=`run_${rG()}`,N=Pb({deterministic:D,evidence:I});Jb({dbPath:_.dbPath,runId:j,prompt:N,provider:E.provider,model:E.model,status:_.fake?"dry_run":"running",metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,read_only_tools:I.read_only_tools.map((P)=>P.name)},now:$}),PW({dbPath:_.dbPath,runId:j,level:"info",event:"conflict_evidence_retrieved",metadata:{citations:I.citations.length,source_refs:I.source_refs.length,read_only_tools:I.read_only_tools},now:$});let A,O,L=0.5,J={input_tokens:WW(N),output_tokens:0,cost_usd:0};if(_.fake)A=Gb(I),O=A.summary,J.output_tokens=WW(O)+WW(A.diff??"");else try{let{generateObject:P}=await import("ai"),{z}=await Promise.resolve().then(() => (vG(),CG)),S=await lD(U,{config:_.config,env:_.env}),W=z.object({summary:z.string(),confidence:z.number().min(0).max(1),proposed_patch:z.object({kind:z.enum(["manual_merge","choose_local","choose_remote","no_op","custom"]),target:z.string(),strategy:z.string(),summary:z.string(),diff:z.string().nullable(),metadata:z.record(z.string(),z.unknown()).default({})})}),X=await P({model:S,schema:W,system:"You are a read-only knowledge sync conflict proposal agent. You produce reviewable proposals only; never approve or apply writes.",prompt:N});O=X.object.summary,L=zb(X.object.confidence),A=Xb(X.object.proposed_patch,`${I.conflict.entity_kind}:${I.conflict.entity_id}`);let G=O4({provider:E.provider,model:E.model,usage:X.usage,providerMetadata:X.providerMetadata});J={input_tokens:G.input_tokens,output_tokens:G.output_tokens,cost_usd:G.cost_usd},Wb(_.dbPath,j,G,$)}catch(P){throw PW({dbPath:_.dbPath,runId:j,level:"error",event:"conflict_proposal_generation_failed",metadata:{message:P instanceof Error?P.message:String(P)},now:$}),wG({dbPath:_.dbPath,runId:j,status:"failed",provider:E.provider,model:E.model,usage:J,metadata:{conflict_id:_.id,mode:"ai",error:P instanceof Error?P.message:String(P)},now:$}),P}return wG({dbPath:_.dbPath,runId:j,status:_.fake?"dry_run":"completed",provider:E.provider,model:E.model,usage:J,metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,confidence:L,proposed_strategy:A.strategy,citation_count:I.citations.length},now:$}),PW({dbPath:_.dbPath,runId:j,level:"info",event:_.fake?"fake_conflict_proposal_generated":"conflict_proposal_generated",metadata:{strategy:A.strategy,confidence:L,patch_kind:A.kind},now:$}),{...D,mode:"ai",proposed_strategy:A.strategy,summary:O,proposed_patch:A,citations:I.citations,confidence:L,agent:{generated:!0,provider:E.provider,model:E.model,run_id:j,read_only_tools:I.read_only_tools,usage:J},warnings:[...D.warnings,...I.remote_row?[]:["remote_row_snapshot_unavailable"]],message:`Prepared AI SDK approval-gated merge proposal for ${_.id}`}}import{createHash as Rb,randomUUID as Yb}from"crypto";import{existsSync as Qb,readFileSync as Kb}from"fs";import{basename as Tb}from"path";function rj(_,$){return`${_}_${Rb("sha256").update($).digest("hex").slice(0,20)}`}function DD(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function z_(_){return typeof _==="string"&&_.length>0?_:void 0}function Fb(_){let $=z_(_.source_ref)??z_(_.source_uri)??z_(_.uri);if($)return $;let D=z_(_.file_id);if(D){let E=z_(_.revision_id)??z_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return E?`${j}/revision/${encodeURIComponent(E)}`:j}let I=z_(_.source_id),U=z_(_.path);if(I&&U)return`open-files://source/${encodeURIComponent(I)}/path/${encodeURIComponent(U)}`;throw Error("Outbox event is missing source_ref, file_id, or source_id/path.")}function Vb(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function Bb(_){return z_(_.hash)??z_(_.checksum)??z_(_.sha256)??null}function Mb(_,$,D){return z_(_.revision_id)??z_(_.revision)??z_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??null}function bb(_){return z_(_.previous_revision_id)??z_(_.previous_revision)??z_(_.previous_version_id)??null}function Zb(_){return(z_(_.event_type)??z_(_.event)??z_(_.type)??z_(_.action)??z_(_.change_type)??"changed").toLowerCase()}function Hb(_){let $=z_(_.path);return z_(_.title)??z_(_.name)??($?Tb($):null)}function kb(_,$){let D=Fb(_),I=J$(D),U=Bb(_);return{raw:_,eventType:Zb(_),sourceRef:D,sourceUri:Vb(D,I),kind:I.kind,title:Hb(_),revision:Mb(_,I,U),previousRevision:bb(_),hash:U,status:z_(_.status)?.toLowerCase()??null,updatedAt:z_(_.updated_at)??$,acl:_.permissions??_.acl??void 0}}function qb(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Outbox array parse failed.");return D.map((I)=>{let U=DD(I);if(!U)throw Error("Outbox array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),I=DD(D);if(!I)throw Error("Outbox object parse failed.");if(Array.isArray(I.events))return I.events.map((U)=>{let E=DD(U);if(!E)throw Error("Outbox events entries must be objects.");return E});if("source_ref"in I||"source_uri"in I||"file_id"in I)return[I]}catch(D){let I=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(I.length<=1)throw D;return I.map((U)=>{let E=DD(JSON.parse(U));if(!E)throw Error("Outbox JSONL entries must be objects.");return E})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let I=DD(JSON.parse(D));if(!I)throw Error("Outbox JSONL entries must be objects.");return I})}async function Cb(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 outbox URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,J=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!J.Body)return"";return await J.Body.transformToString()}async function vb(_,$,D){if(_.startsWith("s3://"))return Cb(_,$,D);if(!Qb(_))throw Error(`Outbox not found: ${_}`);return Kb(_,"utf8")}function xG(_,$){let D={};if(_)try{D=DD(JSON.parse(_))??{}}catch{D={}}return JSON.stringify({...D,...$})}function wb(_,$,D){let I=rj("src",$.sourceUri);_.run(`INSERT INTO sources (id, uri, kind, title, metadata_json, acl_json, created_at, updated_at) +`):null,metadata:{fake:!0,local_hash:_.conflict.local_hash,remote_hash:_.conflict.remote_hash,source_refs:_.source_refs}}}async function fG(_){let $=(_.now??new Date).toISOString();c(_.dbPath);let D=$U(_.dbPath,_.id),I=xX(_.dbPath,_.id),U=T$(_.modelRef??"default",_.config),E=f_(U),j=`run_${rG()}`,N=Pb({deterministic:D,evidence:I});Jb({dbPath:_.dbPath,runId:j,prompt:N,provider:E.provider,model:E.model,status:_.fake?"dry_run":"running",metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,read_only_tools:I.read_only_tools.map((P)=>P.name)},now:$}),PW({dbPath:_.dbPath,runId:j,level:"info",event:"conflict_evidence_retrieved",metadata:{citations:I.citations.length,source_refs:I.source_refs.length,read_only_tools:I.read_only_tools},now:$});let A,O,S=0.5,L={input_tokens:WW(N),output_tokens:0,cost_usd:0};if(_.fake)A=Gb(I),O=A.summary,L.output_tokens=WW(O)+WW(A.diff??"");else try{let{generateObject:P}=await import("ai"),{z}=await Promise.resolve().then(() => (vG(),CG)),G=await lD(U,{config:_.config,env:_.env}),J=z.object({summary:z.string(),confidence:z.number().min(0).max(1),proposed_patch:z.object({kind:z.enum(["manual_merge","choose_local","choose_remote","no_op","custom"]),target:z.string(),strategy:z.string(),summary:z.string(),diff:z.string().nullable(),metadata:z.record(z.string(),z.unknown()).default({})})}),W=await P({model:G,schema:J,system:"You are a read-only knowledge sync conflict proposal agent. You produce reviewable proposals only; never approve or apply writes.",prompt:N});O=W.object.summary,S=zb(W.object.confidence),A=Xb(W.object.proposed_patch,`${I.conflict.entity_kind}:${I.conflict.entity_id}`);let X=O4({provider:E.provider,model:E.model,usage:W.usage,providerMetadata:W.providerMetadata});L={input_tokens:X.input_tokens,output_tokens:X.output_tokens,cost_usd:X.cost_usd},Wb(_.dbPath,j,X,$)}catch(P){throw PW({dbPath:_.dbPath,runId:j,level:"error",event:"conflict_proposal_generation_failed",metadata:{message:P instanceof Error?P.message:String(P)},now:$}),wG({dbPath:_.dbPath,runId:j,status:"failed",provider:E.provider,model:E.model,usage:L,metadata:{conflict_id:_.id,mode:"ai",error:P instanceof Error?P.message:String(P)},now:$}),P}return wG({dbPath:_.dbPath,runId:j,status:_.fake?"dry_run":"completed",provider:E.provider,model:E.model,usage:L,metadata:{conflict_id:_.id,mode:"ai",fake:_.fake===!0,confidence:S,proposed_strategy:A.strategy,citation_count:I.citations.length},now:$}),PW({dbPath:_.dbPath,runId:j,level:"info",event:_.fake?"fake_conflict_proposal_generated":"conflict_proposal_generated",metadata:{strategy:A.strategy,confidence:S,patch_kind:A.kind},now:$}),{...D,mode:"ai",proposed_strategy:A.strategy,summary:O,proposed_patch:A,citations:I.citations,confidence:S,agent:{generated:!0,provider:E.provider,model:E.model,run_id:j,read_only_tools:I.read_only_tools,usage:L},warnings:[...D.warnings,...I.remote_row?[]:["remote_row_snapshot_unavailable"]],message:`Prepared AI SDK approval-gated merge proposal for ${_.id}`}}import{createHash as Rb,randomUUID as Yb}from"crypto";import{existsSync as Qb,readFileSync as Kb}from"fs";import{basename as Tb}from"path";function rj(_,$){return`${_}_${Rb("sha256").update($).digest("hex").slice(0,20)}`}function DD(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:void 0}function z_(_){return typeof _==="string"&&_.length>0?_:void 0}function Fb(_){let $=z_(_.source_ref)??z_(_.source_uri)??z_(_.uri);if($)return $;let D=z_(_.file_id);if(D){let E=z_(_.revision_id)??z_(_.revision),j=`open-files://file/${encodeURIComponent(D)}`;return E?`${j}/revision/${encodeURIComponent(E)}`:j}let I=z_(_.source_id),U=z_(_.path);if(I&&U)return`open-files://source/${encodeURIComponent(I)}/path/${encodeURIComponent(U)}`;throw Error("Outbox event is missing source_ref, file_id, or source_id/path.")}function Vb(_,$){if($.kind==="open-files"&&$.entity==="file"&&$.revision_id)return _.replace(/\/revision\/[^/]+$/,"");return _}function Bb(_){return z_(_.hash)??z_(_.checksum)??z_(_.sha256)??null}function Mb(_,$,D){return z_(_.revision_id)??z_(_.revision)??z_(_.version_id)??($.kind==="open-files"?$.revision_id:void 0)??D??null}function bb(_){return z_(_.previous_revision_id)??z_(_.previous_revision)??z_(_.previous_version_id)??null}function Zb(_){return(z_(_.event_type)??z_(_.event)??z_(_.type)??z_(_.action)??z_(_.change_type)??"changed").toLowerCase()}function Hb(_){let $=z_(_.path);return z_(_.title)??z_(_.name)??($?Tb($):null)}function kb(_,$){let D=Fb(_),I=J$(D),U=Bb(_);return{raw:_,eventType:Zb(_),sourceRef:D,sourceUri:Vb(D,I),kind:I.kind,title:Hb(_),revision:Mb(_,I,U),previousRevision:bb(_),hash:U,status:z_(_.status)?.toLowerCase()??null,updatedAt:z_(_.updated_at)??$,acl:_.permissions??_.acl??void 0}}function qb(_){let $=_.trim();if(!$)return[];if($.startsWith("[")){let D=JSON.parse($);if(!Array.isArray(D))throw Error("Outbox array parse failed.");return D.map((I)=>{let U=DD(I);if(!U)throw Error("Outbox array entries must be objects.");return U})}if($.startsWith("{"))try{let D=JSON.parse($),I=DD(D);if(!I)throw Error("Outbox object parse failed.");if(Array.isArray(I.events))return I.events.map((U)=>{let E=DD(U);if(!E)throw Error("Outbox events entries must be objects.");return E});if("source_ref"in I||"source_uri"in I||"file_id"in I)return[I]}catch(D){let I=$.split(/\r?\n/).filter((U)=>U.trim().length>0);if(I.length<=1)throw D;return I.map((U)=>{let E=DD(JSON.parse(U));if(!E)throw Error("Outbox JSONL entries must be objects.");return E})}return $.split(/\r?\n/).filter((D)=>D.trim().length>0).map((D)=>{let I=DD(JSON.parse(D));if(!I)throw Error("Outbox JSONL entries must be objects.");return I})}async function Cb(_,$,D){let I=new URL(_),U=I.hostname,E=decodeURIComponent(I.pathname.replace(/^\/+/,""));if(!U||!E)throw Error(`Invalid S3 outbox URI: ${_}`);if(D)b6(_,D);let[{S3Client:j,GetObjectCommand:N},{fromIni:A}]=await Promise.all([import("@aws-sdk/client-s3"),import("@aws-sdk/credential-providers")]),O=$?.storage.type==="s3"&&$.storage.s3?.bucket===U?$.storage.s3:void 0,L=await new j({region:O?.region,credentials:O?.profile?A({profile:O.profile}):void 0,maxAttempts:O?.max_attempts}).send(new N({Bucket:U,Key:E}));if(!L.Body)return"";return await L.Body.transformToString()}async function vb(_,$,D){if(_.startsWith("s3://"))return Cb(_,$,D);if(!Qb(_))throw Error(`Outbox not found: ${_}`);return Kb(_,"utf8")}function xG(_,$){let D={};if(_)try{D=DD(JSON.parse(_))??{}}catch{D={}}return JSON.stringify({...D,...$})}function wb(_,$,D){let I=rj("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, @@ -959,10 +959,10 @@ ${JSON.stringify(_.evidence,null,2)}`].join(` VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(source_id, revision) DO UPDATE SET hash = COALESCE(excluded.hash, source_revisions.hash), - metadata_json = excluded.metadata_json`,[U,$,D.revision,D.hash,z_(D.raw.extracted_text_ref)??null,JSON.stringify(E),I]),_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision)?.id??null}function fb(_,$,D){if(D.previousRevision){let I=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.previousRevision).map((U)=>U.id);if(I.length>0)return I}if(D.revision)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.revision).map((I)=>I.id);if(D.hash)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND hash = ?").all($,D.hash).map((I)=>I.id);return _.query("SELECT id FROM source_revisions WHERE source_id = ?").all($).map((I)=>I.id)}function xb(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($),I=0,U=0;for(let j of D){let N=_.query("SELECT COUNT(*) AS n FROM chunk_embeddings WHERE chunk_id = ?").get(j.id);I+=N?.n??0;let A=_.query("SELECT COUNT(*) AS n FROM vector_index_entries WHERE chunk_id = ?").get(j.id);U+=A?.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 E=_.query("SELECT metadata_json FROM source_revisions WHERE id = ?").get($);return _.run("UPDATE source_revisions SET metadata_json = ? WHERE id = ?",[xG(E?.metadata_json,{reindex_required:!0,invalidated_at:new Date().toISOString()}),$]),{chunksDeleted:D.length,embeddingsDeleted:I,vectorEntriesDeleted:U}}function ub(_,$){return $==="deleted"||["delete","deleted","remove","removed"].includes(_)}function yb(_){return["move","moved","rename","renamed","path_changed","canonical_key_changed"].includes(_)}function hb(_){return["permission","permissions","permission_changed","acl_changed","acl_revoked"].includes(_)}async function uG(_){let $=(_.now??new Date).toISOString();if(_.safetyPolicy)N6(_.dbPath,_.safetyPolicy);h(_.dbPath);let D=await vb(_.input,_.config,_.safetyPolicy),I=qb(D),U=w(_.dbPath),E=`run_${Yb()}`;try{return U.transaction(()=>{U.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[E,"open-files-outbox",_.input,"completed","local","open-files-outbox",JSON.stringify({path:_.input,events:I.length}),$,$]);let j=new Set,N=new Set,A=0,O=0,L=0,J=0,P=0,z=0,S=0;return G_(U,{event_type:"source_read",action:_.input.startsWith("s3://")?"s3_outbox_read":"local_outbox_read",target_uri:_.input,decision:"allow",metadata:{events:I.length,read_only:!0},created_at:$}),I.forEach((W,X)=>{let G=kb(W,$),R=wb(U,G,$);j.add(R);let K=rb(U,R,G,$);if(K)N.add(K);let Y=fb(U,R,G);for(let T of Y){N.add(T);let F=xb(U,T);A+=F.chunksDeleted,O+=F.embeddingsDeleted,L+=F.vectorEntriesDeleted,J+=1}if(ub(G.eventType,G.status))P+=1;if(yb(G.eventType))z+=1;if(hb(G.eventType)||G.acl!==void 0)S+=1;U.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[rj("evt",`${E}\x00${X}\x00${G.sourceRef}\x00${G.eventType}`),E,"info",G.eventType,JSON.stringify({source_ref:G.sourceRef,source_uri:G.sourceUri,revision:G.revision,hash:G.hash,status:G.status,affected_revisions:Y.length}),G.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, ?, ?)`,[rj("usage",E),E,"local","open-files-outbox",JSON.stringify({note:"No model provider used for outbox invalidation."}),$]),G_(U,{event_type:"write",action:"knowledge_outbox_invalidation",target_uri:_.dbPath,decision:"allow",metadata:{run_id:E,events:I.length,sources:j.size,revisions:N.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:L},created_at:$}),{path:_.input,db_path:_.dbPath,run_id:E,events_seen:I.length,sources_touched:j.size,revisions_touched:N.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:L,stale_revisions:J,deleted_sources:P,moved_sources:z,permission_updates:S}})()}finally{U.close()}}import{spawnSync as cG}from"child_process";import{hostname as n4,platform as nG,userInfo as cb}from"os";var nb=1,db="@hasna/machines",mb="@hasna/machines/consumer";function m(_){return typeof _==="string"&&_.length>0?_:null}function m6(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function m_(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function cj(_){return typeof _==="boolean"?_:null}function lb(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function nj(_=nG()){let $=_.toLowerCase();if($==="darwin"||$==="macos")return"macos";if($==="win32"||$==="windows")return"windows";if($==="linux")return"linux";return _}function L1(_){let $=cG("bash",["-c",_],{encoding:"utf8",env:process.env});return{stdout:$.stdout||"",stderr:$.stderr||"",exitCode:$.status??1}}async function UD(_,$){return await _($)}async function S1(_,$){return(await UD($,`command -v ${_} >/dev/null 2>&1`)).exitCode===0}function ib(_){try{let $=JSON.parse(_);if(!$||typeof $!=="object")return null;return $}catch{return null}}function yG(_){if(!_)return null;return _.HostName??_.DNSName?.split(".")[0]??null}async function tb(_,$){let D=new Map;if(!await S1("tailscale",_))return $.push("tailscale_not_available"),{peers:D,selfKey:null};let I=await UD(_,"tailscale status --json");if(I.exitCode!==0)return $.push(`tailscale_status_failed:${I.stderr.trim()||I.exitCode}`),{peers:D,selfKey:null};let U=ib(I.stdout);if(!U)return $.push("tailscale_status_invalid_json"),{peers:D,selfKey:null};let E=(j)=>{let N=yG(j);if(N&&j)D.set(N,j)};E(U.Self);for(let j of Object.values(U.Peer??{}))E(j);return{peers:D,selfKey:yG(U.Self)}}function ob(_){return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??_??n4()}function pb(_){let $=_.machineId===_.localMachineId||_.machineId===n4(),D=_.peer?.DNSName?.replace(/\.$/,"")??null,I=D??_.peer?.TailscaleIPs?.[0]??null,U=[];if($)U.push({kind:"local",target:"localhost",reachable:!0});if(I)U.push({kind:"tailscale",target:I,reachable:_.peer?.Online??null});let E=U.find((j)=>j.kind==="local")??U.find((j)=>j.kind==="tailscale")??null;return{machine_id:_.machineId,hostname:_.peer?.HostName??($?n4():_.machineId),local:$,platform:_.peer?.OS?nj(_.peer.OS):$?nj():null,os:_.peer?.OS??($?nG():null),user:$?cb().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:E?.kind==="local"?"local":E?.kind==="tailscale"?"tailscale":"unknown",command_target:E?.target??null},route_hints:U,tags:[],metadata:{},source:"local"}}function eb(_){if(!Array.isArray(_))return[];return _.map(($)=>{let D=m_($),I=m(D.kind)??"unknown";return{kind:I==="local"||I==="lan"||I==="tailscale"||I==="ssh"?I:"unknown",target:m(D.target)??"",reachable:cj(D.reachable)}}).filter(($)=>$.target.length>0)}function ab(_,$){let D=m(_.machine_id)??m(_.hostname)??"unknown",I=m_(_.tailscale),U=m_(_.ssh),E=m(_.heartbeat_status),j=m(U.route);return{machine_id:D,hostname:m(_.hostname),local:D===$,platform:m(_.platform),os:m(_.os),user:m(_.user),workspace_path:m(_.workspace_path),manifest_declared:_.manifest_declared===!0,heartbeat_status:E==="online"||E==="offline"?E:"unknown",last_heartbeat_at:m(_.last_heartbeat_at),tailscale:{dns_name:m(I.dns_name),ips:m6(I.ips),online:cj(I.online),active:cj(I.active),last_seen:m(I.last_seen)},ssh:{address:m(U.address),route:j==="local"||j==="lan"||j==="tailscale"?j:"unknown",command_target:m(U.command_target)},route_hints:eb(_.route_hints),tags:m6(_.tags),metadata:m_(_.metadata),source:"open-machines"}}function sb(_,$){return`${$} machine${$===1?"":"s"} discovered via ${_}`}function L$(_){let $=_ instanceof Error?_.message:String(_);return $.includes("Cannot find module '@hasna/machines'")||$.includes("Cannot find module '@hasna/machines/consumer'")?"module_not_found":$}function J1(_){return _.adapterMode??"auto"}function dG(_){let $=_?.MACHINES_CONSUMER_CONTRACT?.schema_version;if(typeof $==="number")return $;let D=_?.MACHINES_CONSUMER_CONTRACT_VERSION;return typeof D==="number"?D:null}function dj(_){return typeof _.schema_version==="number"?_.schema_version:null}function W1(_){return typeof _==="number"&&_>nb?_:null}function mj(_){return{package:db,entrypoint:mb,mode:_.mode,implementation:_.implementation,contract_version:_.contractVersion??null,available:_.available,error:_.error??null}}function j_(_,$="adapter_disabled"){return mj({mode:_,implementation:"disabled",available:!1,error:$})}function lj(_,$){let D=W1(dG($));if(!D)return null;return mj({mode:_,implementation:"disabled",available:!1,error:`unsupported_contract_version:${D}`,contractVersion:D})}function ij(_){return mj({mode:_,implementation:"cli",available:!0})}function tj(_,$){return mj({mode:_,implementation:"sdk",available:!0,contractVersion:dG($)})}function oj(_){try{return JSON.parse(_)}catch{return null}}function d4(_){return`'${_.replace(/'/g,"'\\''")}'`}function pj(_){return["machines",..._].map(d4).join(" ")}function ej(_){return _==="local"||_==="localhost"||_===n4()||_===process.env.HASNA_MACHINE_ID||_===process.env.OPEN_MACHINES_MACHINE_ID||_===process.env.MACHINE_ID}function _Z(_,$){let D=ej(_),I=D?$:`ssh ${d4(_)} ${d4($)}`,U=cG("bash",["-c",I],{encoding:"utf8",env:process.env});return{stdout:U.stdout||"",stderr:U.stderr||"",exitCode:U.status??1,source:D?"local":"ssh"}}async function mG(_,$,D){return await _($,D)}function h4(_,$){if($)return"ok";return _===!1?"warn":"fail"}function c4(_){return _.replace(/[^a-zA-Z0-9_.@/-]+/g,"-").replace(/^-+|-+$/g,"")}function $Z(_){if(_==="@hasna/knowledge")return"knowledge";if(_==="@hasna/machines")return"machines";return _.split("/").pop()??_}function DZ(_){return _.trim().split(/\r?\n/).find(Boolean)??""}function lG(_){return _.match(/\b\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?\b/)?.[0]??null}function iG(_){let $={};for(let D of _.split(/\r?\n/)){let I=D.indexOf("=");if(I<=0)continue;$[D.slice(0,I)]=D.slice(I+1)}return $}function G6(_){return{id:_.id,kind:_.kind,status:_.status,target:_.target,expected:_.expected??null,actual:_.actual??null,detail:_.detail,source:_.source}}async function tG(_,$,D){let I=[`cmd=${d4($.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 mG(D,_,I),E=iG(U.stdout);return{path:E.path||null,version:E.version?DZ(E.version):null,stderr:U.stderr,source:U.source??(ej(_)?"local":"ssh")}}function hG(_){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 UZ(_,$,D){let I=[`path=${d4($.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" "$(${hG("name")})"; printf "version=%s\\n" "$(${hG("version")})"; fi`].join("; "),U=await mG(D,_,I),E=iG(U.stdout);return{exists:E.exists==="yes",packageJson:E.package_json==="yes",packageName:E.package_name||null,version:E.version||null,stderr:U.stderr,source:U.source??(ej(_)?"local":"ssh")}}async function IZ(_,$,D){let I=await tG(_,$,D),U=Boolean(I.path),E=[G6({id:`command:${c4($.command)}:path`,kind:"command",status:h4($.required,U),target:$.command,expected:"available",actual:I.path??"missing",detail:U?`found at ${I.path}`:I.stderr||"command missing",source:I.source})];if($.expectedVersion){let j=lG(I.version??"");E.push(G6({id:`command:${c4($.command)}:version`,kind:"command",status:j===$.expectedVersion?"ok":h4($.required,!1),target:$.command,expected:$.expectedVersion,actual:j??I.version??"missing",detail:j?`version output: ${I.version}`:"version unavailable",source:I.source}))}return E}async function EZ(_,$,D){let I=$.command??$Z($.name),U=await tG(_,{command:I,expectedVersion:$.expectedVersion,required:$.required},D),E=Boolean(U.path),j=[G6({id:`package:${c4($.name)}:command`,kind:"package",status:h4($.required,E),target:$.name,expected:I,actual:U.path??"missing",detail:E?`${I} found at ${U.path}`:`${I} command missing`,source:U.source})];if($.expectedVersion){let N=lG(U.version??"");j.push(G6({id:`package:${c4($.name)}:version`,kind:"package",status:N===$.expectedVersion?"ok":h4($.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 jZ(_,$,D){let I=await UZ(_,$,D),U=$.label??$.path,E=[G6({id:`workspace:${c4(U)}:path`,kind:"workspace",status:h4($.required,I.exists),target:U,expected:$.path,actual:I.exists?"exists":"missing",detail:I.exists?`workspace exists at ${$.path}`:I.stderr||`workspace missing at ${$.path}`,source:I.source})];if($.expectedPackageName)E.push(G6({id:`workspace:${c4(U)}:package-name`,kind:"workspace",status:I.packageName===$.expectedPackageName?"ok":h4($.required,!1),target:U,expected:$.expectedPackageName,actual:I.packageName??(I.packageJson?"missing-name":"missing-package-json"),detail:I.packageJson?"package.json inspected":"package.json missing",source:I.source}));if($.expectedVersion)E.push(G6({id:`workspace:${c4(U)}:version`,kind:"workspace",status:I.version===$.expectedVersion?"ok":h4($.required,!1),target:U,expected:$.expectedVersion,actual:I.version??(I.packageJson?"missing-version":"missing-package-json"),detail:I.packageJson?"package.json inspected":"package.json missing",source:I.source}));return E}function oG(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:s$,workspace_home:$.knowledge?.workspace_home??null},message:sb(_.source,_.machines.length)}}async function aj(){try{return await import("@hasna/machines/consumer")}catch(_){if(L$(_)!=="module_not_found")throw _;return await import("@hasna/machines")}}function pG(_,$,D){let I=m_(_);if(W1(dj(I)))return null;let U=Array.isArray(I.machines)?I.machines:null,E=m(I.local_machine_id);if(!U||!E)return null;let j={ok:!0,source:"open-machines",generated_at:m(I.generated_at)??($.now??new Date).toISOString(),local_machine_id:E,local_hostname:m(I.local_hostname)??n4(),current_platform:m(I.current_platform)??nj(),machines:U.map((N)=>ab(N,E)),warnings:m6(I.warnings),adapter:D};return oG(j,$)}function fj(_){return _==="local"||_==="lan"||_==="tailscale"||_==="ssh"||_==="unknown"?_:null}function eG(_){let $=m_(_),D=m($.observed_at),I=m($.source_authority);if(!D||!I)return null;return{observed_at:D,verified_at:m($.verified_at),expires_at:m($.expires_at),ttl_ms:lb($.ttl_ms),source_authority:I,confidence:m($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:m6($.reasons)}}function aG(_,$){let D=m_(_);if(W1(dj(D)))return null;let I=m(D.target)??m(D.command_target);if(D.ok!==!0||!I)return null;let U=typeof D.evidence==="object"&&D.evidence!==null?D.evidence:null,E=typeof U?.selected_hint==="object"&&U.selected_hint!==null?U.selected_hint:null;return{target:I,route:fj(D.route),targetKind:fj(E?.kind)??fj(D.source)??fj(D.route),confidence:m(D.confidence),source:"open-machines",adapter:$,evidence:U,cacheability:eG(D.cacheability),warnings:m6(D.warnings)}}function zW(_){let $=m_(_);return{path:m($.path),source:m($.source)??"unresolved"}}function NZ(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=m_($),I=m(D.id),U=m(D.status),E=m(D.severity),j=m(D.message);if(!I||!U||!E||!j)return[];return[{id:I,status:U,severity:E,message:j,path:m(D.path),source:m(D.source)??"unknown",path_exists:cj(D.path_exists)}]})}function gZ(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=m_($),I=m(D.id),U=m(D.reason),E=m6(D.command),j=m(D.shell_command),N=m6(D.apply_command),A=m(D.apply_shell_command);if(!I||!U||!E.length||!j||!N.length||!A)return[];return[{id:I,reason:U,command:E,shell_command:j,apply_command:N,apply_shell_command:A}]})}function AZ(_){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"],I=[...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(d4).join(" "),apply_command:I,apply_shell_command:I.map(d4).join(" ")}]}function sG(_,$,D){let I=m_(_);if(W1(dj(I)))return null;let U=m_(I.paths),E=m_(I.project),j=m_(I.machine),N=zW(U.project_root),A=zW(U.workspace_root),O=zW(U.open_files_root);if(I.ok!==!0||!N.path)return null;let L=typeof I.evidence==="object"&&I.evidence!==null?I.evidence:null,J=m(I.requested_machine_id)??$.machineId,P=m(E.project_id)??$.projectId??"open-knowledge",z=m(E.repo_name)??$.repoName??$.projectId??"open-knowledge",S=m(j.trust_status)??"unknown",W=m(j.auth_status)??"unknown",X=m6(I.warnings),G=NZ(I.diagnostics),R=gZ(I.repair_hints);return{ok:!0,source:"open-machines",adapter:D,requested_machine_id:J,machine_id:m(I.machine_id),project_id:P,repo_name:z,project_root:N.path,project_root_source:N.source,workspace_root:A.path,workspace_root_source:A.source,open_files_root:O.path,open_files_root_source:O.source,trust_status:S,auth_status:W,current:j.current===!0,primary:j.primary===!0,diagnostics:G,repair_hints:R.length?R:AZ({requestedMachineId:J,projectId:P,repoName:z,openFilesRepoName:$.openFilesRepoName,warnings:X,projectRootSource:N.source,openFilesRootSource:O.source,trustStatus:S,authStatus:W}),evidence:L,cacheability:eG(I.cacheability),warnings:X}}async function xj(_,$){let D=_.runner??L1;if(!await S1("machines",D))return null;let I=["topology","--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return pG(oj(U.stdout),_,$)}async function W6(_,$){let D=[];if($.error)D.push(`open_machines_unavailable:${$.error}`);let I=_.runner??L1,U=_.includeTailscale===!1?{peers:new Map,selfKey:null}:await tb(I,D),E=ob(U.selfKey),N=[...new Set([E,...U.peers.keys()])].sort().map((A)=>pb({machineId:A,localMachineId:E,peer:U.peers.get(A)}));return oG({ok:!0,source:"local",generated_at:(_.now??new Date).toISOString(),local_machine_id:E,local_hostname:n4(),current_platform:nj(),machines:N,warnings:D,adapter:$},_)}async function _R(_={}){let $=J1(_);if($==="disabled")return await W6(_,j_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return await W6(_,E);let j=tj($,U);if(U?.discoverMachineTopology){let N=U.discoverMachineTopology({includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),A=pG(N,_,j);if(A)return A;if($==="sdk")return await W6(_,j_($,"invalid_topology_shape"));return await xj(_,D)??await W6(_,j_($,"invalid_topology_shape"))}if($==="sdk")return await W6(_,j_($,"missing_discoverMachineTopology"));return await xj(_,D)??await W6(_,j_($,"missing_discoverMachineTopology"))}return await xj(_,D)??await W6(_,j_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return await W6(_,j_($,L$(I)));return await xj(_,D)??await W6(_,j_($,L$(I)))}}async function uj(_,$){let D=_.runner??L1;if(!await S1("machines",D))return null;let I=["route","--machine",_.machineId,"--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return aG(oj(U.stdout),$)}function P6(_,$){return{target:_,route:null,targetKind:null,confidence:null,source:"raw",adapter:$,evidence:null,cacheability:null,warnings:[]}}async function XW(_){let $=J1(_);if($==="disabled")return P6(_.machineId,j_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return P6(_.machineId,E);let j=tj($,U);if(U?.resolveMachineRoute){let N=aG(U.resolveMachineRoute(_.machineId,{includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),j);if(N)return N;if($==="sdk")return P6(_.machineId,j_($,"invalid_route_shape"));return await uj(_,D)??P6(_.machineId,j_($,"invalid_route_shape"))}if($==="sdk")return P6(_.machineId,j_($,"missing_resolveMachineRoute"));return await uj(_,D)??P6(_.machineId,j_($,"missing_resolveMachineRoute"))}return await uj(_,D)??P6(_.machineId,j_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return{...P6(_.machineId,j_($,L$(I))),warnings:[L$(I)]};return await uj(_,D)??{...P6(_.machineId,j_($,L$(I))),warnings:[L$(I)]}}}async function yj(_,$){let D=_.runner??L1;if(!await S1("machines",D))return null;let I=_.projectId??"open-knowledge",U=_.repoName??"open-knowledge",E=["workspace","resolve","--machine",_.machineId,"--project",I,"--repo",U,"--open-files-repo",_.openFilesRepoName??"open-files","--json"];if(_.includeTailscale===!1)E.push("--no-tailscale");let j=await UD(D,pj(E));if(j.exitCode!==0)return null;return sG(oj(j.stdout),_,$)}function OZ(_){let $=_.peerWorkspace?.trim();if(!$)return null;return{ok:!0,source:"argument",adapter:j_(J1(_),"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 z6(_,$,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 sj(_){let $=OZ(_);if($)return $;let D=J1(_);if(D==="disabled")return z6(_,["adapter_disabled"],j_(D));let I=ij(D);try{if(D!=="cli"){let E=await(_.loadOpenMachines??aj)(),j=lj(D,E);if(j)return z6(_,[`unsupported_contract_version:${j.contract_version}`],j);let N=tj(D,E);if(E?.resolveMachineWorkspace){let A=sG(E.resolveMachineWorkspace({machineId:_.machineId,projectId:_.projectId??"open-knowledge",repoName:_.repoName??"open-knowledge",openFilesRepoName:_.openFilesRepoName??"open-files",includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),_,N);if(A)return A;if(D==="sdk")return z6(_,["invalid_workspace_shape"],j_(D,"invalid_workspace_shape"));return await yj(_,I)??z6(_,["invalid_workspace_shape"],j_(D,"invalid_workspace_shape"))}if(D==="sdk")return z6(_,["missing_resolveMachineWorkspace"],j_(D,"missing_resolveMachineWorkspace"));return await yj(_,I)??z6(_,["missing_resolveMachineWorkspace"],j_(D,"missing_resolveMachineWorkspace"))}return await yj(_,I)??z6(_,["machines_cli_unavailable"],j_(D,"machines_cli_unavailable"))}catch(U){if(D==="sdk")return z6(_,[L$(U)],j_(D,L$(U)));return await yj(_,I)??z6(_,[L$(U)],j_(D,L$(U)))}}function $R(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:s$,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 DR(_,$,D){let I=m_(_);if(W1(dj(I)))return null;let U=Array.isArray(I.checks)?I.checks:null,E=m(I.machine_id)??m(I.machineId);if(!U||!E)return null;let j=U.map((A)=>{let O=m_(A),L=m(O.status),J=m(O.kind),P=m(O.source);return G6({id:m(O.id)??"unknown",kind:J==="command"||J==="package"||J==="workspace"?J:"command",status:L==="ok"||L==="warn"||L==="fail"?L:"fail",target:m(O.target)??"unknown",expected:m(O.expected),actual:m(O.actual),detail:m(O.detail)??"",source:P==="local"||P==="ssh"||P==="open-machines"?P:"open-machines"})}),N={ok:j.filter((A)=>A.status==="ok").length,warn:j.filter((A)=>A.status==="warn").length,fail:j.filter((A)=>A.status==="fail").length};return $R({ok:N.fail===0,source:"open-machines",machine_id:E,generated_at:m(I.generated_at)??($.now??new Date).toISOString(),checks:j,summary:N,adapter:D},$)}function LZ(_){if(!_.runner)return L1;return async($)=>{let D=await _.runner?.("local",$);return{stdout:D?.stdout??"",stderr:D?.stderr??"",exitCode:D?.exitCode??1}}}function SZ(_){return[_.name,_.command,_.expectedVersion].filter(($)=>Boolean($)).join(":")}function JZ(_){let $=[_.expectedPackageName,_.expectedVersion].filter((I)=>Boolean(I)).join(":"),D=$?`${_.path}:${$}`:_.path;return _.label?`${_.label}=${D}`:D}async function hj(_,$){let D=LZ(_);if(!await S1("machines",D))return null;let I=["compatibility","--json","--machine",_.machineId??"local"];for(let E of _.commands??[])I.push("--command",E.expectedVersion?`${E.command}:${E.expectedVersion}`:E.command);for(let E of _.packages??[])I.push("--package",SZ(E));for(let E of _.workspaces??[])I.push("--workspace",JZ(E));let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return DR(oj(U.stdout),_,$)}async function X6(_,$){let D=_.machineId??n4(),I=_.runner??_Z,U=_.commands??[{command:"bun",required:!0},{command:"knowledge",required:!0}],E=_.packages??[{name:"@hasna/knowledge",command:"knowledge",required:!0}],j=_.workspaces??[],N=[];for(let O of U)N.push(...await IZ(D,O,I));for(let O of E)N.push(...await EZ(D,O,I));for(let O of j)N.push(...await jZ(D,O,I));if($.error)N.push(G6({id:"adapter:@hasna/machines",kind:"package",status:"warn",target:"@hasna/machines",expected:"optional",actual:$.error,detail:"Using knowledge local/ssh compatibility fallback",source:ej(D)?"local":"ssh"}));let A={ok:N.filter((O)=>O.status==="ok").length,warn:N.filter((O)=>O.status==="warn").length,fail:N.filter((O)=>O.status==="fail").length};return $R({ok:A.fail===0,source:"local",machine_id:D,generated_at:(_.now??new Date).toISOString(),checks:N,summary:A,adapter:$},_)}async function UR(_={}){let $=J1(_);if($==="disabled")return await X6(_,j_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return await X6(_,E);let j=tj($,U);if(U?.checkMachineCompatibility){let N=U.checkMachineCompatibility({machineId:_.machineId,commands:_.commands,packages:_.packages,workspaces:_.workspaces,runner:_.runner,now:_.now}),A=DR(N,_,j);if(A)return A;if($==="sdk")return await X6(_,j_($,"invalid_compatibility_shape"));return await hj(_,D)??await X6(_,j_($,"invalid_compatibility_shape"))}if($==="sdk")return await X6(_,j_($,"missing_checkMachineCompatibility"));return await hj(_,D)??await X6(_,j_($,"missing_checkMachineCompatibility"))}return await hj(_,D)??await X6(_,j_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return await X6(_,j_($,L$(I)));return await hj(_,D)??await X6(_,j_($,L$(I)))}}import{createHash as IR}from"crypto";function RW(_,$,D=24){return`${_}_${IR("sha256").update($).digest("hex").slice(0,D)}`}function ID(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function WZ(_){return ID(_).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")}function Z$(_,$){try{return JSON.parse(_)}catch{return $}}function l6(_){return{..._,record_kind:_.record_kind,source_kind:_.source_kind,status:_.status,source_refs:Z$(_.source_refs_json,[]),evidence_refs:Z$(_.evidence_refs_json,[]),requires_approval:_.requires_approval===1,checks:Z$(_.checks_json,ER()),metadata:Z$(_.metadata_json,{})}}function YW(_){return{..._,record_kind:_.record_kind,source_refs:Z$(_.source_refs_json,[]),evidence_refs:Z$(_.evidence_refs_json,[]),metadata:Z$(_.metadata_json,{})}}function ER(){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 PZ(_){let $=typeof _==="string"?{ref:_}:_;return{ref:ID($.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 jR(_){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 _N(_){return["deleted","stale","invalidated","reindex_required","expired","superseded"].includes((_??"").toLowerCase())}function GW(_){if(!_)return null;let $=Z$(_,{});if($.stale===!0)return"stale";return typeof $.status==="string"?$.status:null}function zZ(_){if(_.citation_id)return _.citation_id;return _.ref.match(/^(?:cite|citation):(.+)$/)?.[1]??null}function XZ(_){if(_.chunk_id)return _.chunk_id;return _.ref.match(/^chunk:(.+)$/)?.[1]??null}function GZ(_,$,D){let I=_N($.status)||Boolean($.expires_at&&$.expires_at<=D);if(!$.ref||!jR($.ref))return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"invalid_reference"};let U=zZ($),E=_.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,z_(D.raw.extracted_text_ref)??null,JSON.stringify(E),I]),_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").get($,D.revision)?.id??null}function fb(_,$,D){if(D.previousRevision){let I=_.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.previousRevision).map((U)=>U.id);if(I.length>0)return I}if(D.revision)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND revision = ?").all($,D.revision).map((I)=>I.id);if(D.hash)return _.query("SELECT id FROM source_revisions WHERE source_id = ? AND hash = ?").all($,D.hash).map((I)=>I.id);return _.query("SELECT id FROM source_revisions WHERE source_id = ?").all($).map((I)=>I.id)}function xb(_,$){let D=_.query("SELECT id FROM chunks WHERE source_revision_id = ?").all($),I=0,U=0;for(let j of D){let N=_.query("SELECT COUNT(*) AS n FROM chunk_embeddings WHERE chunk_id = ?").get(j.id);I+=N?.n??0;let A=_.query("SELECT COUNT(*) AS n FROM vector_index_entries WHERE chunk_id = ?").get(j.id);U+=A?.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 E=_.query("SELECT metadata_json FROM source_revisions WHERE id = ?").get($);return _.run("UPDATE source_revisions SET metadata_json = ? WHERE id = ?",[xG(E?.metadata_json,{reindex_required:!0,invalidated_at:new Date().toISOString()}),$]),{chunksDeleted:D.length,embeddingsDeleted:I,vectorEntriesDeleted:U}}function ub(_,$){return $==="deleted"||["delete","deleted","remove","removed"].includes(_)}function yb(_){return["move","moved","rename","renamed","path_changed","canonical_key_changed"].includes(_)}function hb(_){return["permission","permissions","permission_changed","acl_changed","acl_revoked"].includes(_)}async function uG(_){let $=(_.now??new Date).toISOString();if(_.safetyPolicy)N6(_.dbPath,_.safetyPolicy);c(_.dbPath);let D=await vb(_.input,_.config,_.safetyPolicy),I=qb(D),U=w(_.dbPath),E=`run_${Yb()}`;try{return U.transaction(()=>{U.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[E,"open-files-outbox",_.input,"completed","local","open-files-outbox",JSON.stringify({path:_.input,events:I.length}),$,$]);let j=new Set,N=new Set,A=0,O=0,S=0,L=0,P=0,z=0,G=0;return R_(U,{event_type:"source_read",action:_.input.startsWith("s3://")?"s3_outbox_read":"local_outbox_read",target_uri:_.input,decision:"allow",metadata:{events:I.length,read_only:!0},created_at:$}),I.forEach((J,W)=>{let X=kb(J,$),R=wb(U,X,$);j.add(R);let T=rb(U,R,X,$);if(T)N.add(T);let Y=fb(U,R,X);for(let Q of Y){N.add(Q);let F=xb(U,Q);A+=F.chunksDeleted,O+=F.embeddingsDeleted,S+=F.vectorEntriesDeleted,L+=1}if(ub(X.eventType,X.status))P+=1;if(yb(X.eventType))z+=1;if(hb(X.eventType)||X.acl!==void 0)G+=1;U.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[rj("evt",`${E}\x00${W}\x00${X.sourceRef}\x00${X.eventType}`),E,"info",X.eventType,JSON.stringify({source_ref:X.sourceRef,source_uri:X.sourceUri,revision:X.revision,hash:X.hash,status:X.status,affected_revisions:Y.length}),X.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, ?, ?)`,[rj("usage",E),E,"local","open-files-outbox",JSON.stringify({note:"No model provider used for outbox invalidation."}),$]),R_(U,{event_type:"write",action:"knowledge_outbox_invalidation",target_uri:_.dbPath,decision:"allow",metadata:{run_id:E,events:I.length,sources:j.size,revisions:N.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:S},created_at:$}),{path:_.input,db_path:_.dbPath,run_id:E,events_seen:I.length,sources_touched:j.size,revisions_touched:N.size,chunks_deleted:A,embeddings_deleted:O,vector_entries_deleted:S,stale_revisions:L,deleted_sources:P,moved_sources:z,permission_updates:G}})()}finally{U.close()}}import{spawnSync as cG}from"child_process";import{hostname as n4,platform as nG,userInfo as cb}from"os";var nb=1,db="@hasna/machines",mb="@hasna/machines/consumer";function m(_){return typeof _==="string"&&_.length>0?_:null}function m6(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function d_(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function cj(_){return typeof _==="boolean"?_:null}function lb(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function nj(_=nG()){let $=_.toLowerCase();if($==="darwin"||$==="macos")return"macos";if($==="win32"||$==="windows")return"windows";if($==="linux")return"linux";return _}function S1(_){let $=cG("bash",["-c",_],{encoding:"utf8",env:process.env});return{stdout:$.stdout||"",stderr:$.stderr||"",exitCode:$.status??1}}async function UD(_,$){return await _($)}async function L1(_,$){return(await UD($,`command -v ${_} >/dev/null 2>&1`)).exitCode===0}function ib(_){try{let $=JSON.parse(_);if(!$||typeof $!=="object")return null;return $}catch{return null}}function yG(_){if(!_)return null;return _.HostName??_.DNSName?.split(".")[0]??null}async function tb(_,$){let D=new Map;if(!await L1("tailscale",_))return $.push("tailscale_not_available"),{peers:D,selfKey:null};let I=await UD(_,"tailscale status --json");if(I.exitCode!==0)return $.push(`tailscale_status_failed:${I.stderr.trim()||I.exitCode}`),{peers:D,selfKey:null};let U=ib(I.stdout);if(!U)return $.push("tailscale_status_invalid_json"),{peers:D,selfKey:null};let E=(j)=>{let N=yG(j);if(N&&j)D.set(N,j)};E(U.Self);for(let j of Object.values(U.Peer??{}))E(j);return{peers:D,selfKey:yG(U.Self)}}function ob(_){return process.env.HASNA_MACHINE_ID??process.env.OPEN_MACHINES_MACHINE_ID??process.env.MACHINE_ID??_??n4()}function pb(_){let $=_.machineId===_.localMachineId||_.machineId===n4(),D=_.peer?.DNSName?.replace(/\.$/,"")??null,I=D??_.peer?.TailscaleIPs?.[0]??null,U=[];if($)U.push({kind:"local",target:"localhost",reachable:!0});if(I)U.push({kind:"tailscale",target:I,reachable:_.peer?.Online??null});let E=U.find((j)=>j.kind==="local")??U.find((j)=>j.kind==="tailscale")??null;return{machine_id:_.machineId,hostname:_.peer?.HostName??($?n4():_.machineId),local:$,platform:_.peer?.OS?nj(_.peer.OS):$?nj():null,os:_.peer?.OS??($?nG():null),user:$?cb().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:E?.kind==="local"?"local":E?.kind==="tailscale"?"tailscale":"unknown",command_target:E?.target??null},route_hints:U,tags:[],metadata:{},source:"local"}}function eb(_){if(!Array.isArray(_))return[];return _.map(($)=>{let D=d_($),I=m(D.kind)??"unknown";return{kind:I==="local"||I==="lan"||I==="tailscale"||I==="ssh"?I:"unknown",target:m(D.target)??"",reachable:cj(D.reachable)}}).filter(($)=>$.target.length>0)}function ab(_,$){let D=m(_.machine_id)??m(_.hostname)??"unknown",I=d_(_.tailscale),U=d_(_.ssh),E=m(_.heartbeat_status),j=m(U.route);return{machine_id:D,hostname:m(_.hostname),local:D===$,platform:m(_.platform),os:m(_.os),user:m(_.user),workspace_path:m(_.workspace_path),manifest_declared:_.manifest_declared===!0,heartbeat_status:E==="online"||E==="offline"?E:"unknown",last_heartbeat_at:m(_.last_heartbeat_at),tailscale:{dns_name:m(I.dns_name),ips:m6(I.ips),online:cj(I.online),active:cj(I.active),last_seen:m(I.last_seen)},ssh:{address:m(U.address),route:j==="local"||j==="lan"||j==="tailscale"?j:"unknown",command_target:m(U.command_target)},route_hints:eb(_.route_hints),tags:m6(_.tags),metadata:d_(_.metadata),source:"open-machines"}}function sb(_,$){return`${$} machine${$===1?"":"s"} discovered via ${_}`}function S$(_){let $=_ instanceof Error?_.message:String(_);return $.includes("Cannot find module '@hasna/machines'")||$.includes("Cannot find module '@hasna/machines/consumer'")?"module_not_found":$}function J1(_){return _.adapterMode??"auto"}function dG(_){let $=_?.MACHINES_CONSUMER_CONTRACT?.schema_version;if(typeof $==="number")return $;let D=_?.MACHINES_CONSUMER_CONTRACT_VERSION;return typeof D==="number"?D:null}function dj(_){return typeof _.schema_version==="number"?_.schema_version:null}function W1(_){return typeof _==="number"&&_>nb?_:null}function mj(_){return{package:db,entrypoint:mb,mode:_.mode,implementation:_.implementation,contract_version:_.contractVersion??null,available:_.available,error:_.error??null}}function g_(_,$="adapter_disabled"){return mj({mode:_,implementation:"disabled",available:!1,error:$})}function lj(_,$){let D=W1(dG($));if(!D)return null;return mj({mode:_,implementation:"disabled",available:!1,error:`unsupported_contract_version:${D}`,contractVersion:D})}function ij(_){return mj({mode:_,implementation:"cli",available:!0})}function tj(_,$){return mj({mode:_,implementation:"sdk",available:!0,contractVersion:dG($)})}function oj(_){try{return JSON.parse(_)}catch{return null}}function d4(_){return`'${_.replace(/'/g,"'\\''")}'`}function pj(_){return["machines",..._].map(d4).join(" ")}function ej(_){return _==="local"||_==="localhost"||_===n4()||_===process.env.HASNA_MACHINE_ID||_===process.env.OPEN_MACHINES_MACHINE_ID||_===process.env.MACHINE_ID}function _Z(_,$){let D=ej(_),I=D?$:`ssh ${d4(_)} ${d4($)}`,U=cG("bash",["-c",I],{encoding:"utf8",env:process.env});return{stdout:U.stdout||"",stderr:U.stderr||"",exitCode:U.status??1,source:D?"local":"ssh"}}async function mG(_,$,D){return await _($,D)}function h4(_,$){if($)return"ok";return _===!1?"warn":"fail"}function c4(_){return _.replace(/[^a-zA-Z0-9_.@/-]+/g,"-").replace(/^-+|-+$/g,"")}function $Z(_){if(_==="@hasna/knowledge")return"knowledge";if(_==="@hasna/machines")return"machines";return _.split("/").pop()??_}function DZ(_){return _.trim().split(/\r?\n/).find(Boolean)??""}function lG(_){return _.match(/\b\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?\b/)?.[0]??null}function iG(_){let $={};for(let D of _.split(/\r?\n/)){let I=D.indexOf("=");if(I<=0)continue;$[D.slice(0,I)]=D.slice(I+1)}return $}function G6(_){return{id:_.id,kind:_.kind,status:_.status,target:_.target,expected:_.expected??null,actual:_.actual??null,detail:_.detail,source:_.source}}async function tG(_,$,D){let I=[`cmd=${d4($.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 mG(D,_,I),E=iG(U.stdout);return{path:E.path||null,version:E.version?DZ(E.version):null,stderr:U.stderr,source:U.source??(ej(_)?"local":"ssh")}}function hG(_){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 UZ(_,$,D){let I=[`path=${d4($.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" "$(${hG("name")})"; printf "version=%s\\n" "$(${hG("version")})"; fi`].join("; "),U=await mG(D,_,I),E=iG(U.stdout);return{exists:E.exists==="yes",packageJson:E.package_json==="yes",packageName:E.package_name||null,version:E.version||null,stderr:U.stderr,source:U.source??(ej(_)?"local":"ssh")}}async function IZ(_,$,D){let I=await tG(_,$,D),U=Boolean(I.path),E=[G6({id:`command:${c4($.command)}:path`,kind:"command",status:h4($.required,U),target:$.command,expected:"available",actual:I.path??"missing",detail:U?`found at ${I.path}`:I.stderr||"command missing",source:I.source})];if($.expectedVersion){let j=lG(I.version??"");E.push(G6({id:`command:${c4($.command)}:version`,kind:"command",status:j===$.expectedVersion?"ok":h4($.required,!1),target:$.command,expected:$.expectedVersion,actual:j??I.version??"missing",detail:j?`version output: ${I.version}`:"version unavailable",source:I.source}))}return E}async function EZ(_,$,D){let I=$.command??$Z($.name),U=await tG(_,{command:I,expectedVersion:$.expectedVersion,required:$.required},D),E=Boolean(U.path),j=[G6({id:`package:${c4($.name)}:command`,kind:"package",status:h4($.required,E),target:$.name,expected:I,actual:U.path??"missing",detail:E?`${I} found at ${U.path}`:`${I} command missing`,source:U.source})];if($.expectedVersion){let N=lG(U.version??"");j.push(G6({id:`package:${c4($.name)}:version`,kind:"package",status:N===$.expectedVersion?"ok":h4($.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 jZ(_,$,D){let I=await UZ(_,$,D),U=$.label??$.path,E=[G6({id:`workspace:${c4(U)}:path`,kind:"workspace",status:h4($.required,I.exists),target:U,expected:$.path,actual:I.exists?"exists":"missing",detail:I.exists?`workspace exists at ${$.path}`:I.stderr||`workspace missing at ${$.path}`,source:I.source})];if($.expectedPackageName)E.push(G6({id:`workspace:${c4(U)}:package-name`,kind:"workspace",status:I.packageName===$.expectedPackageName?"ok":h4($.required,!1),target:U,expected:$.expectedPackageName,actual:I.packageName??(I.packageJson?"missing-name":"missing-package-json"),detail:I.packageJson?"package.json inspected":"package.json missing",source:I.source}));if($.expectedVersion)E.push(G6({id:`workspace:${c4(U)}:version`,kind:"workspace",status:I.version===$.expectedVersion?"ok":h4($.required,!1),target:U,expected:$.expectedVersion,actual:I.version??(I.packageJson?"missing-version":"missing-package-json"),detail:I.packageJson?"package.json inspected":"package.json missing",source:I.source}));return E}function oG(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:s$,workspace_home:$.knowledge?.workspace_home??null},message:sb(_.source,_.machines.length)}}async function aj(){try{return await import("@hasna/machines/consumer")}catch(_){if(S$(_)!=="module_not_found")throw _;return await import("@hasna/machines")}}function pG(_,$,D){let I=d_(_);if(W1(dj(I)))return null;let U=Array.isArray(I.machines)?I.machines:null,E=m(I.local_machine_id);if(!U||!E)return null;let j={ok:!0,source:"open-machines",generated_at:m(I.generated_at)??($.now??new Date).toISOString(),local_machine_id:E,local_hostname:m(I.local_hostname)??n4(),current_platform:m(I.current_platform)??nj(),machines:U.map((N)=>ab(N,E)),warnings:m6(I.warnings),adapter:D};return oG(j,$)}function fj(_){return _==="local"||_==="lan"||_==="tailscale"||_==="ssh"||_==="unknown"?_:null}function eG(_){let $=d_(_),D=m($.observed_at),I=m($.source_authority);if(!D||!I)return null;return{observed_at:D,verified_at:m($.verified_at),expires_at:m($.expires_at),ttl_ms:lb($.ttl_ms),source_authority:I,confidence:m($.confidence),cacheable:$.cacheable===!0,stale:$.stale===!0,reasons:m6($.reasons)}}function aG(_,$){let D=d_(_);if(W1(dj(D)))return null;let I=m(D.target)??m(D.command_target);if(D.ok!==!0||!I)return null;let U=typeof D.evidence==="object"&&D.evidence!==null?D.evidence:null,E=typeof U?.selected_hint==="object"&&U.selected_hint!==null?U.selected_hint:null;return{target:I,route:fj(D.route),targetKind:fj(E?.kind)??fj(D.source)??fj(D.route),confidence:m(D.confidence),source:"open-machines",adapter:$,evidence:U,cacheability:eG(D.cacheability),warnings:m6(D.warnings)}}function zW(_){let $=d_(_);return{path:m($.path),source:m($.source)??"unresolved"}}function NZ(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=d_($),I=m(D.id),U=m(D.status),E=m(D.severity),j=m(D.message);if(!I||!U||!E||!j)return[];return[{id:I,status:U,severity:E,message:j,path:m(D.path),source:m(D.source)??"unknown",path_exists:cj(D.path_exists)}]})}function gZ(_){if(!Array.isArray(_))return[];return _.flatMap(($)=>{let D=d_($),I=m(D.id),U=m(D.reason),E=m6(D.command),j=m(D.shell_command),N=m6(D.apply_command),A=m(D.apply_shell_command);if(!I||!U||!E.length||!j||!N.length||!A)return[];return[{id:I,reason:U,command:E,shell_command:j,apply_command:N,apply_shell_command:A}]})}function AZ(_){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"],I=[...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(d4).join(" "),apply_command:I,apply_shell_command:I.map(d4).join(" ")}]}function sG(_,$,D){let I=d_(_);if(W1(dj(I)))return null;let U=d_(I.paths),E=d_(I.project),j=d_(I.machine),N=zW(U.project_root),A=zW(U.workspace_root),O=zW(U.open_files_root);if(I.ok!==!0||!N.path)return null;let S=typeof I.evidence==="object"&&I.evidence!==null?I.evidence:null,L=m(I.requested_machine_id)??$.machineId,P=m(E.project_id)??$.projectId??"open-knowledge",z=m(E.repo_name)??$.repoName??$.projectId??"open-knowledge",G=m(j.trust_status)??"unknown",J=m(j.auth_status)??"unknown",W=m6(I.warnings),X=NZ(I.diagnostics),R=gZ(I.repair_hints);return{ok:!0,source:"open-machines",adapter:D,requested_machine_id:L,machine_id:m(I.machine_id),project_id:P,repo_name:z,project_root:N.path,project_root_source:N.source,workspace_root:A.path,workspace_root_source:A.source,open_files_root:O.path,open_files_root_source:O.source,trust_status:G,auth_status:J,current:j.current===!0,primary:j.primary===!0,diagnostics:X,repair_hints:R.length?R:AZ({requestedMachineId:L,projectId:P,repoName:z,openFilesRepoName:$.openFilesRepoName,warnings:W,projectRootSource:N.source,openFilesRootSource:O.source,trustStatus:G,authStatus:J}),evidence:S,cacheability:eG(I.cacheability),warnings:W}}async function xj(_,$){let D=_.runner??S1;if(!await L1("machines",D))return null;let I=["topology","--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return pG(oj(U.stdout),_,$)}async function W6(_,$){let D=[];if($.error)D.push(`open_machines_unavailable:${$.error}`);let I=_.runner??S1,U=_.includeTailscale===!1?{peers:new Map,selfKey:null}:await tb(I,D),E=ob(U.selfKey),N=[...new Set([E,...U.peers.keys()])].sort().map((A)=>pb({machineId:A,localMachineId:E,peer:U.peers.get(A)}));return oG({ok:!0,source:"local",generated_at:(_.now??new Date).toISOString(),local_machine_id:E,local_hostname:n4(),current_platform:nj(),machines:N,warnings:D,adapter:$},_)}async function _R(_={}){let $=J1(_);if($==="disabled")return await W6(_,g_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return await W6(_,E);let j=tj($,U);if(U?.discoverMachineTopology){let N=U.discoverMachineTopology({includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),A=pG(N,_,j);if(A)return A;if($==="sdk")return await W6(_,g_($,"invalid_topology_shape"));return await xj(_,D)??await W6(_,g_($,"invalid_topology_shape"))}if($==="sdk")return await W6(_,g_($,"missing_discoverMachineTopology"));return await xj(_,D)??await W6(_,g_($,"missing_discoverMachineTopology"))}return await xj(_,D)??await W6(_,g_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return await W6(_,g_($,S$(I)));return await xj(_,D)??await W6(_,g_($,S$(I)))}}async function uj(_,$){let D=_.runner??S1;if(!await L1("machines",D))return null;let I=["route","--machine",_.machineId,"--json"];if(_.includeTailscale===!1)I.push("--no-tailscale");let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return aG(oj(U.stdout),$)}function P6(_,$){return{target:_,route:null,targetKind:null,confidence:null,source:"raw",adapter:$,evidence:null,cacheability:null,warnings:[]}}async function XW(_){let $=J1(_);if($==="disabled")return P6(_.machineId,g_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return P6(_.machineId,E);let j=tj($,U);if(U?.resolveMachineRoute){let N=aG(U.resolveMachineRoute(_.machineId,{includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),j);if(N)return N;if($==="sdk")return P6(_.machineId,g_($,"invalid_route_shape"));return await uj(_,D)??P6(_.machineId,g_($,"invalid_route_shape"))}if($==="sdk")return P6(_.machineId,g_($,"missing_resolveMachineRoute"));return await uj(_,D)??P6(_.machineId,g_($,"missing_resolveMachineRoute"))}return await uj(_,D)??P6(_.machineId,g_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return{...P6(_.machineId,g_($,S$(I))),warnings:[S$(I)]};return await uj(_,D)??{...P6(_.machineId,g_($,S$(I))),warnings:[S$(I)]}}}async function yj(_,$){let D=_.runner??S1;if(!await L1("machines",D))return null;let I=_.projectId??"open-knowledge",U=_.repoName??"open-knowledge",E=["workspace","resolve","--machine",_.machineId,"--project",I,"--repo",U,"--open-files-repo",_.openFilesRepoName??"open-files","--json"];if(_.includeTailscale===!1)E.push("--no-tailscale");let j=await UD(D,pj(E));if(j.exitCode!==0)return null;return sG(oj(j.stdout),_,$)}function OZ(_){let $=_.peerWorkspace?.trim();if(!$)return null;return{ok:!0,source:"argument",adapter:g_(J1(_),"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 z6(_,$,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 sj(_){let $=OZ(_);if($)return $;let D=J1(_);if(D==="disabled")return z6(_,["adapter_disabled"],g_(D));let I=ij(D);try{if(D!=="cli"){let E=await(_.loadOpenMachines??aj)(),j=lj(D,E);if(j)return z6(_,[`unsupported_contract_version:${j.contract_version}`],j);let N=tj(D,E);if(E?.resolveMachineWorkspace){let A=sG(E.resolveMachineWorkspace({machineId:_.machineId,projectId:_.projectId??"open-knowledge",repoName:_.repoName??"open-knowledge",openFilesRepoName:_.openFilesRepoName??"open-files",includeTailscale:_.includeTailscale,runner:_.runner,now:_.now}),_,N);if(A)return A;if(D==="sdk")return z6(_,["invalid_workspace_shape"],g_(D,"invalid_workspace_shape"));return await yj(_,I)??z6(_,["invalid_workspace_shape"],g_(D,"invalid_workspace_shape"))}if(D==="sdk")return z6(_,["missing_resolveMachineWorkspace"],g_(D,"missing_resolveMachineWorkspace"));return await yj(_,I)??z6(_,["missing_resolveMachineWorkspace"],g_(D,"missing_resolveMachineWorkspace"))}return await yj(_,I)??z6(_,["machines_cli_unavailable"],g_(D,"machines_cli_unavailable"))}catch(U){if(D==="sdk")return z6(_,[S$(U)],g_(D,S$(U)));return await yj(_,I)??z6(_,[S$(U)],g_(D,S$(U)))}}function $R(_,$){return{..._,knowledge:{scope:$.knowledge?.scope??"global",app_path:s$,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 DR(_,$,D){let I=d_(_);if(W1(dj(I)))return null;let U=Array.isArray(I.checks)?I.checks:null,E=m(I.machine_id)??m(I.machineId);if(!U||!E)return null;let j=U.map((A)=>{let O=d_(A),S=m(O.status),L=m(O.kind),P=m(O.source);return G6({id:m(O.id)??"unknown",kind:L==="command"||L==="package"||L==="workspace"?L:"command",status:S==="ok"||S==="warn"||S==="fail"?S:"fail",target:m(O.target)??"unknown",expected:m(O.expected),actual:m(O.actual),detail:m(O.detail)??"",source:P==="local"||P==="ssh"||P==="open-machines"?P:"open-machines"})}),N={ok:j.filter((A)=>A.status==="ok").length,warn:j.filter((A)=>A.status==="warn").length,fail:j.filter((A)=>A.status==="fail").length};return $R({ok:N.fail===0,source:"open-machines",machine_id:E,generated_at:m(I.generated_at)??($.now??new Date).toISOString(),checks:j,summary:N,adapter:D},$)}function SZ(_){if(!_.runner)return S1;return async($)=>{let D=await _.runner?.("local",$);return{stdout:D?.stdout??"",stderr:D?.stderr??"",exitCode:D?.exitCode??1}}}function LZ(_){return[_.name,_.command,_.expectedVersion].filter(($)=>Boolean($)).join(":")}function JZ(_){let $=[_.expectedPackageName,_.expectedVersion].filter((I)=>Boolean(I)).join(":"),D=$?`${_.path}:${$}`:_.path;return _.label?`${_.label}=${D}`:D}async function hj(_,$){let D=SZ(_);if(!await L1("machines",D))return null;let I=["compatibility","--json","--machine",_.machineId??"local"];for(let E of _.commands??[])I.push("--command",E.expectedVersion?`${E.command}:${E.expectedVersion}`:E.command);for(let E of _.packages??[])I.push("--package",LZ(E));for(let E of _.workspaces??[])I.push("--workspace",JZ(E));let U=await UD(D,pj(I));if(U.exitCode!==0)return null;return DR(oj(U.stdout),_,$)}async function X6(_,$){let D=_.machineId??n4(),I=_.runner??_Z,U=_.commands??[{command:"bun",required:!0},{command:"knowledge",required:!0}],E=_.packages??[{name:"@hasna/knowledge",command:"knowledge",required:!0}],j=_.workspaces??[],N=[];for(let O of U)N.push(...await IZ(D,O,I));for(let O of E)N.push(...await EZ(D,O,I));for(let O of j)N.push(...await jZ(D,O,I));if($.error)N.push(G6({id:"adapter:@hasna/machines",kind:"package",status:"warn",target:"@hasna/machines",expected:"optional",actual:$.error,detail:"Using knowledge local/ssh compatibility fallback",source:ej(D)?"local":"ssh"}));let A={ok:N.filter((O)=>O.status==="ok").length,warn:N.filter((O)=>O.status==="warn").length,fail:N.filter((O)=>O.status==="fail").length};return $R({ok:A.fail===0,source:"local",machine_id:D,generated_at:(_.now??new Date).toISOString(),checks:N,summary:A,adapter:$},_)}async function UR(_={}){let $=J1(_);if($==="disabled")return await X6(_,g_($));let D=ij($);try{if($!=="cli"){let U=await(_.loadOpenMachines??aj)(),E=lj($,U);if(E)return await X6(_,E);let j=tj($,U);if(U?.checkMachineCompatibility){let N=U.checkMachineCompatibility({machineId:_.machineId,commands:_.commands,packages:_.packages,workspaces:_.workspaces,runner:_.runner,now:_.now}),A=DR(N,_,j);if(A)return A;if($==="sdk")return await X6(_,g_($,"invalid_compatibility_shape"));return await hj(_,D)??await X6(_,g_($,"invalid_compatibility_shape"))}if($==="sdk")return await X6(_,g_($,"missing_checkMachineCompatibility"));return await hj(_,D)??await X6(_,g_($,"missing_checkMachineCompatibility"))}return await hj(_,D)??await X6(_,g_($,"machines_cli_unavailable"))}catch(I){if($==="sdk")return await X6(_,g_($,S$(I)));return await hj(_,D)??await X6(_,g_($,S$(I)))}}import{createHash as IR}from"crypto";function RW(_,$,D=24){return`${_}_${IR("sha256").update($).digest("hex").slice(0,D)}`}function ID(_){return _.normalize("NFKC").trim().replace(/\s+/g," ")}function WZ(_){return ID(_).toLowerCase().replace(/[^\p{L}\p{N}]+/gu,"-").replace(/^-+|-+$/g,"")}function Z$(_,$){try{return JSON.parse(_)}catch{return $}}function l6(_){return{..._,record_kind:_.record_kind,source_kind:_.source_kind,status:_.status,source_refs:Z$(_.source_refs_json,[]),evidence_refs:Z$(_.evidence_refs_json,[]),requires_approval:_.requires_approval===1,checks:Z$(_.checks_json,ER()),metadata:Z$(_.metadata_json,{})}}function YW(_){return{..._,record_kind:_.record_kind,source_refs:Z$(_.source_refs_json,[]),evidence_refs:Z$(_.evidence_refs_json,[]),metadata:Z$(_.metadata_json,{})}}function ER(){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 PZ(_){let $=typeof _==="string"?{ref:_}:_;return{ref:ID($.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 jR(_){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 _N(_){return["deleted","stale","invalidated","reindex_required","expired","superseded"].includes((_??"").toLowerCase())}function GW(_){if(!_)return null;let $=Z$(_,{});if($.stale===!0)return"stale";return typeof $.status==="string"?$.status:null}function zZ(_){if(_.citation_id)return _.citation_id;return _.ref.match(/^(?:cite|citation):(.+)$/)?.[1]??null}function XZ(_){if(_.chunk_id)return _.chunk_id;return _.ref.match(/^chunk:(.+)$/)?.[1]??null}function GZ(_,$,D){let I=_N($.status)||Boolean($.expires_at&&$.expires_at<=D);if(!$.ref||!jR($.ref))return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"invalid_reference"};let U=zZ($),E=_.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,46 +971,46 @@ ${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(U,$.ref);if(E){let O=Boolean($.hash&&E.revision_hash&&$.hash!==E.revision_hash),L=Boolean($.revision&&E.revision&&$.revision!==E.revision),J=Boolean(E.revision_created_at&&E.latest_revision_at&&E.revision_created_at<E.latest_revision_at),P=I||_N(GW(E.chunk_metadata_json))||O||L||J;return{ref:$.ref,valid:!0,resolved_by:"citation",stale:P,reason:O?"hash_mismatch":L?"revision_mismatch":J?"newer_source_revision":P?"stale_citation":null}}let j=XZ($);if(j){let O=_.query(`SELECT ch.metadata_json, sr.hash, sr.revision + LIMIT 1`).get(U,$.ref);if(E){let O=Boolean($.hash&&E.revision_hash&&$.hash!==E.revision_hash),S=Boolean($.revision&&E.revision&&$.revision!==E.revision),L=Boolean(E.revision_created_at&&E.latest_revision_at&&E.revision_created_at<E.latest_revision_at),P=I||_N(GW(E.chunk_metadata_json))||O||S||L;return{ref:$.ref,valid:!0,resolved_by:"citation",stale:P,reason:O?"hash_mismatch":S?"revision_mismatch":L?"newer_source_revision":P?"stale_citation":null}}let j=XZ($);if(j){let O=_.query(`SELECT ch.metadata_json, sr.hash, sr.revision FROM chunks ch LEFT JOIN source_revisions sr ON sr.id = ch.source_revision_id - WHERE ch.id = ?`).get(j);if(!O)return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"chunk_not_found"};let L=Boolean($.hash&&O.hash&&$.hash!==O.hash||$.revision&&O.revision&&$.revision!==O.revision),J=I||_N(GW(O.metadata_json))||L;return{ref:$.ref,valid:!0,resolved_by:"chunk",stale:J,reason:L?"source_version_mismatch":J?"stale_chunk":null}}let N=_.query("SELECT metadata_json FROM sources WHERE uri = ? LIMIT 1").get($.ref);if(N){let O=I||_N(GW(N.metadata_json));return{ref:$.ref,valid:!0,resolved_by:"source",stale:O,reason:O?"stale_source":null}}let A=$.ref.match(/^knowledge:\/\/project\/runs\/([^/?#]+)/);if(A){if(!_.query("SELECT id FROM runs WHERE id = ?").get(decodeURIComponent(A[1])))return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"run_not_found"};return{ref:$.ref,valid:!0,resolved_by:"run",stale:I,reason:I?"expired_evidence":null}}return{ref:$.ref,valid:!0,resolved_by:"external_uri",stale:I,reason:I?"expired_evidence":null}}function i6(_,$){return _.query("SELECT * FROM knowledge_promotion_candidates WHERE id = ?").get($)??null}function QW(_,$,D){let I=Z$($.evidence_refs_json,[]),U=Z$($.source_refs_json,[]),E=Z$($.metadata_json,{}),j=ER();j.invalid_source_refs=U.filter((J)=>!jR(J)),j.citations.entries=I.map((J)=>GZ(_,J,D)),j.citations.provided=I.length,j.citations.valid=j.citations.entries.filter((J)=>J.valid).length,j.citations.invalid=j.citations.entries.length-j.citations.valid,j.stale_refs=j.citations.entries.filter((J)=>J.stale).map((J)=>J.ref),j.duplicate_record_ids=_.query(`SELECT id FROM durable_knowledge_records + WHERE ch.id = ?`).get(j);if(!O)return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"chunk_not_found"};let S=Boolean($.hash&&O.hash&&$.hash!==O.hash||$.revision&&O.revision&&$.revision!==O.revision),L=I||_N(GW(O.metadata_json))||S;return{ref:$.ref,valid:!0,resolved_by:"chunk",stale:L,reason:S?"source_version_mismatch":L?"stale_chunk":null}}let N=_.query("SELECT metadata_json FROM sources WHERE uri = ? LIMIT 1").get($.ref);if(N){let O=I||_N(GW(N.metadata_json));return{ref:$.ref,valid:!0,resolved_by:"source",stale:O,reason:O?"stale_source":null}}let A=$.ref.match(/^knowledge:\/\/project\/runs\/([^/?#]+)/);if(A){if(!_.query("SELECT id FROM runs WHERE id = ?").get(decodeURIComponent(A[1])))return{ref:$.ref,valid:!1,resolved_by:"none",stale:I,reason:"run_not_found"};return{ref:$.ref,valid:!0,resolved_by:"run",stale:I,reason:I?"expired_evidence":null}}return{ref:$.ref,valid:!0,resolved_by:"external_uri",stale:I,reason:I?"expired_evidence":null}}function i6(_,$){return _.query("SELECT * FROM knowledge_promotion_candidates WHERE id = ?").get($)??null}function QW(_,$,D){let I=Z$($.evidence_refs_json,[]),U=Z$($.source_refs_json,[]),E=Z$($.metadata_json,{}),j=ER();j.invalid_source_refs=U.filter((L)=>!jR(L)),j.citations.entries=I.map((L)=>GZ(_,L,D)),j.citations.provided=I.length,j.citations.valid=j.citations.entries.filter((L)=>L.valid).length,j.citations.invalid=j.citations.entries.length-j.citations.valid,j.stale_refs=j.citations.entries.filter((L)=>L.stale).map((L)=>L.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((J)=>J.id),j.duplicate_candidate_ids=_.query(`SELECT id FROM knowledge_promotion_candidates + ORDER BY created_at`).all($.record_kind,$.content_hash).map((L)=>L.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') - ORDER BY created_at`).all($.id,$.record_kind,$.content_hash).map((J)=>J.id),j.conflicting_record_ids=_.query(`SELECT id FROM durable_knowledge_records + ORDER BY created_at`).all($.id,$.record_kind,$.content_hash).map((L)=>L.id),j.conflicting_record_ids=_.query(`SELECT id FROM durable_knowledge_records WHERE record_kind = ? AND canonical_key = ? AND content_hash <> ? AND status IN ('active', 'conflicted') - ORDER BY created_at`).all($.record_kind,$.canonical_key,$.content_hash).map((J)=>J.id),j.conflicting_candidate_ids=_.query(`SELECT id FROM knowledge_promotion_candidates + ORDER BY created_at`).all($.record_kind,$.canonical_key,$.content_hash).map((L)=>L.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((J)=>J.id);let N=j.duplicate_record_ids[0]??j.duplicate_candidate_ids[0]??null,A=U.length===0||I.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(E.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 O=j.approval_reasons.length>0,L=N?"duplicate":A?"blocked":O?"needs_approval":"ready";return _.run(`UPDATE knowledge_promotion_candidates + ORDER BY created_at`).all($.id,$.record_kind,$.canonical_key,$.content_hash).map((L)=>L.id);let N=j.duplicate_record_ids[0]??j.duplicate_candidate_ids[0]??null,A=U.length===0||I.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(E.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 O=j.approval_reasons.length>0,S=N?"duplicate":A?"blocked":O?"needs_approval":"ready";return _.run(`UPDATE knowledge_promotion_candidates SET status = ?, requires_approval = ?, checks_json = ?, duplicate_of = ?, updated_at = ?, reviewed_at = ? - WHERE id = ?`,[L,O?1:0,JSON.stringify(j),N,D,D,$.id]),l6(i6(_,$.id))}function NR(_,$){let D=["lesson","decision","claim"],I=["memento","session","report"];if(!D.includes($.kind))throw Error("Promotion kind must be lesson, decision, or claim.");if(!I.includes($.sourceKind))throw Error("Promotion source kind must be memento, session, or report.");let U=y_(ID($.title)),E=y_(ID($.content));if(!U.text)throw Error("Promotion title is required.");if(!E.text)throw Error("Promotion content is required.");let j=Array.from(new Set($.sourceRefs.map(ID).filter(Boolean))).sort(),N=$.evidenceRefs.map(PZ).filter((W)=>W.ref.length>0).sort((W,X)=>W.ref.localeCompare(X.ref)),A=WZ($.canonicalKey??U.text);if(!A)throw Error("Promotion canonical key is empty after normalization.");let O=`sha256:${IR("sha256").update(`${$.kind}\x00${ID(E.text).toLowerCase()}`).digest("hex")}`,L=RW("promote",[$.sourceKind,$.kind,A,O,...j].join("\x00")),J=RW("promotion",L),P=($.now??new Date).toISOString(),z={...$.metadata??{},requested_approval:$.requiresApproval===!0,confidence:$.confidence??null,valid_from:$.validFrom??P,valid_to:$.validTo??null,redactions:U.findings.length+E.findings.length};h(_);let S=w(_);try{let W=S.query("SELECT * FROM knowledge_promotion_candidates WHERE idempotency_key = ?").get(L);if(W)return{created:!1,candidate:l6(W)};S.run(`INSERT INTO knowledge_promotion_candidates ( + WHERE id = ?`,[S,O?1:0,JSON.stringify(j),N,D,D,$.id]),l6(i6(_,$.id))}function NR(_,$){let D=["lesson","decision","claim"],I=["memento","session","report"];if(!D.includes($.kind))throw Error("Promotion kind must be lesson, decision, or claim.");if(!I.includes($.sourceKind))throw Error("Promotion source kind must be memento, session, or report.");let U=u_(ID($.title)),E=u_(ID($.content));if(!U.text)throw Error("Promotion title is required.");if(!E.text)throw Error("Promotion content is required.");let j=Array.from(new Set($.sourceRefs.map(ID).filter(Boolean))).sort(),N=$.evidenceRefs.map(PZ).filter((J)=>J.ref.length>0).sort((J,W)=>J.ref.localeCompare(W.ref)),A=WZ($.canonicalKey??U.text);if(!A)throw Error("Promotion canonical key is empty after normalization.");let O=`sha256:${IR("sha256").update(`${$.kind}\x00${ID(E.text).toLowerCase()}`).digest("hex")}`,S=RW("promote",[$.sourceKind,$.kind,A,O,...j].join("\x00")),L=RW("promotion",S),P=($.now??new Date).toISOString(),z={...$.metadata??{},requested_approval:$.requiresApproval===!0,confidence:$.confidence??null,valid_from:$.validFrom??P,valid_to:$.validTo??null,redactions:U.findings.length+E.findings.length};c(_);let G=w(_);try{let J=G.query("SELECT * FROM knowledge_promotion_candidates WHERE idempotency_key = ?").get(S);if(J)return{created:!1,candidate:l6(J)};G.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, '{}', ?, ?, ?, ?)`,[J,$.kind,U.text,E.text,A,O,$.sourceKind,JSON.stringify(j),JSON.stringify(N),L,JSON.stringify(z),P,P]);let X=[...U.findings,...E.findings];if(X.length>0)R0(S,{source_uri:j[0]??`knowledge://promotion/${J}`,findings:X,metadata:{promotion_candidate_id:J},created_at:P});return G_(S,{event_type:"knowledge_promotion",action:"enqueue_promotion",target_uri:`knowledge://promotion/${J}`,decision:"info",metadata:{record_kind:$.kind,source_kind:$.sourceKind,source_refs:j},created_at:P}),{created:!0,candidate:QW(S,i6(S,J),P)}}finally{S.close()}}function gR(_,$){h(_);let D=w(_);try{let I=i6(D,$);return I?l6(I):null}finally{D.close()}}function AR(_,$={}){h(_);let D=Math.max(1,Math.min($.limit??50,200)),I=[],U=[];if($.status==="inbox"||!$.status)I.push("status IN ('ready', 'needs_approval', 'blocked')");else I.push("status = ?"),U.push($.status);if($.kind)I.push("record_kind = ?"),U.push($.kind);let E=w(_);try{return E.query(`SELECT * FROM knowledge_promotion_candidates + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending', 0, '{}', ?, ?, ?, ?)`,[L,$.kind,U.text,E.text,A,O,$.sourceKind,JSON.stringify(j),JSON.stringify(N),S,JSON.stringify(z),P,P]);let W=[...U.findings,...E.findings];if(W.length>0)R0(G,{source_uri:j[0]??`knowledge://promotion/${L}`,findings:W,metadata:{promotion_candidate_id:L},created_at:P});return R_(G,{event_type:"knowledge_promotion",action:"enqueue_promotion",target_uri:`knowledge://promotion/${L}`,decision:"info",metadata:{record_kind:$.kind,source_kind:$.sourceKind,source_refs:j},created_at:P}),{created:!0,candidate:QW(G,i6(G,L),P)}}finally{G.close()}}function gR(_,$){c(_);let D=w(_);try{let I=i6(D,$);return I?l6(I):null}finally{D.close()}}function AR(_,$={}){c(_);let D=Math.max(1,Math.min($.limit??50,200)),I=[],U=[];if($.status==="inbox"||!$.status)I.push("status IN ('ready', 'needs_approval', 'blocked')");else I.push("status = ?"),U.push($.status);if($.kind)I.push("record_kind = ?"),U.push($.kind);let E=w(_);try{return E.query(`SELECT * FROM knowledge_promotion_candidates WHERE ${I.join(" AND ")} ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all(...U,D).map(l6)}finally{E.close()}}function OR(_,$,D=new Date){h(_);let I=w(_);try{let U=i6(I,$);if(!U)throw Error(`Promotion candidate not found: ${$}`);if(U.status==="promoted"||U.status==="rejected")return l6(U);return QW(I,U,D.toISOString())}finally{I.close()}}function LR(_,$,D={}){h(_);let I=w(_),U=(D.now??new Date).toISOString();try{let E=i6(I,$);if(!E)throw Error(`Promotion candidate not found: ${$}`);if(E.status==="promoted"&&E.promoted_record_id){let z=I.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(E.promoted_record_id);return{ok:!0,promoted:!1,requires_approval:E.requires_approval===1,candidate:l6(E),record:z?YW(z):null,approval_id:null,reason:"already_promoted"}}if(E.status==="rejected")throw Error(`Promotion candidate ${$} was rejected.`);let j=QW(I,E,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 <name>.");let N=j.requires_approval?D.approvedBy.trim():null,A=null;if(j.requires_approval)A=s1(I,{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 O=RW("durable",j.id),L={...j.metadata,promotion_candidate_id:j.id,source_kind:j.source_kind,checks:j.checks,approval_id:A,provenance:N$({generated_from:`knowledge://promotion/${j.id}`,artifact_key:`durable/${j.record_kind}/${j.canonical_key}`,source_refs:j.source_refs,citation_required:!0})};I.run(`INSERT INTO durable_knowledge_records ( + LIMIT ?`).all(...U,D).map(l6)}finally{E.close()}}function OR(_,$,D=new Date){c(_);let I=w(_);try{let U=i6(I,$);if(!U)throw Error(`Promotion candidate not found: ${$}`);if(U.status==="promoted"||U.status==="rejected")return l6(U);return QW(I,U,D.toISOString())}finally{I.close()}}function SR(_,$,D={}){c(_);let I=w(_),U=(D.now??new Date).toISOString();try{let E=i6(I,$);if(!E)throw Error(`Promotion candidate not found: ${$}`);if(E.status==="promoted"&&E.promoted_record_id){let z=I.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(E.promoted_record_id);return{ok:!0,promoted:!1,requires_approval:E.requires_approval===1,candidate:l6(E),record:z?YW(z):null,approval_id:null,reason:"already_promoted"}}if(E.status==="rejected")throw Error(`Promotion candidate ${$} was rejected.`);let j=QW(I,E,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 <name>.");let N=j.requires_approval?D.approvedBy.trim():null,A=null;if(j.requires_approval)A=s1(I,{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 O=RW("durable",j.id),S={...j.metadata,promotion_candidate_id:j.id,source_kind:j.source_kind,checks:j.checks,approval_id:A,provenance:N$({generated_from:`knowledge://promotion/${j.id}`,artifact_key:`durable/${j.record_kind}/${j.canonical_key}`,source_refs:j.source_refs,citation_required:!0})};I.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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,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]),I.run(`UPDATE knowledge_promotion_candidates + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,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(S),U,U]),I.run(`UPDATE knowledge_promotion_candidates SET status = 'promoted', approved_by = ?, promoted_record_id = ?, promoted_at = ?, updated_at = ? - WHERE id = ?`,[N,O,U,U,j.id]),G_(I,{event_type:"knowledge_promotion",action:"promote_durable_knowledge",target_uri:`knowledge://durable/${O}`,decision:"allow",metadata:{promotion_candidate_id:j.id,approval_id:A,source_refs:j.source_refs},created_at:U});let J=l6(i6(I,j.id)),P=I.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(O);return{ok:!0,promoted:!0,requires_approval:j.requires_approval,candidate:J,record:YW(P),approval_id:A,reason:null}}finally{I.close()}}function SR(_,$,D={}){h(_);let I=w(_),U=(D.now??new Date).toISOString();try{let E=i6(I,$);if(!E)throw Error(`Promotion candidate not found: ${$}`);if(E.status==="promoted")throw Error(`Promotion candidate ${$} is already promoted.`);return I.run(`UPDATE knowledge_promotion_candidates + WHERE id = ?`,[N,O,U,U,j.id]),R_(I,{event_type:"knowledge_promotion",action:"promote_durable_knowledge",target_uri:`knowledge://durable/${O}`,decision:"allow",metadata:{promotion_candidate_id:j.id,approval_id:A,source_refs:j.source_refs},created_at:U});let L=l6(i6(I,j.id)),P=I.query("SELECT * FROM durable_knowledge_records WHERE id = ?").get(O);return{ok:!0,promoted:!0,requires_approval:j.requires_approval,candidate:L,record:YW(P),approval_id:A,reason:null}}finally{I.close()}}function LR(_,$,D={}){c(_);let I=w(_),U=(D.now??new Date).toISOString();try{let E=i6(I,$);if(!E)throw Error(`Promotion candidate not found: ${$}`);if(E.status==="promoted")throw Error(`Promotion candidate ${$} is already promoted.`);return I.run(`UPDATE knowledge_promotion_candidates SET status = 'rejected', approved_by = ?, updated_at = ?, reviewed_at = ? - WHERE id = ?`,[D.rejectedBy?.trim()||null,U,U,$]),G_(I,{event_type:"knowledge_promotion",action:"reject_promotion",target_uri:`knowledge://promotion/${$}`,decision:"deny",metadata:{rejected_by:D.rejectedBy??null},created_at:U}),l6(i6(I,$))}finally{I.close()}}function JR(_,$={}){h(_);let D=[],I=[];if($.kind)D.push("record_kind = ?"),I.push($.kind);if($.status)D.push("status = ?"),I.push($.status);let U=Math.max(1,Math.min($.limit??50,200)),E=w(_);try{return E.query(`SELECT * FROM durable_knowledge_records + WHERE id = ?`,[D.rejectedBy?.trim()||null,U,U,$]),R_(I,{event_type:"knowledge_promotion",action:"reject_promotion",target_uri:`knowledge://promotion/${$}`,decision:"deny",metadata:{rejected_by:D.rejectedBy??null},created_at:U}),l6(i6(I,$))}finally{I.close()}}function JR(_,$={}){c(_);let D=[],I=[];if($.kind)D.push("record_kind = ?"),I.push($.kind);if($.status)D.push("status = ?"),I.push($.status);let U=Math.max(1,Math.min($.limit??50,200)),E=w(_);try{return E.query(`SELECT * FROM durable_knowledge_records ${D.length?`WHERE ${D.join(" AND ")}`:""} ORDER BY updated_at DESC, created_at DESC - LIMIT ?`).all(...I,U).map(YW)}finally{E.close()}}import{createHash as RZ,randomUUID as WR}from"crypto";function YZ(_,$){return`${_}_${RZ("sha256").update($).digest("hex").slice(0,20)}`}function QZ(_){let $=w(_);try{let D=$.query("SELECT status, COUNT(*) AS n FROM reindex_queue GROUP BY status ORDER BY status").all();return Object.fromEntries(D.map((I)=>[I.status,I.n]))}finally{$.close()}}function PR(_,$){let D=L4($.modelRef,$.config),I=x_(D),U=w(_);try{return U.query(`SELECT c.id AS chunk_id, c.source_revision_id, s.uri AS source_uri + LIMIT ?`).all(...I,U).map(YW)}finally{E.close()}}import{createHash as RZ,randomUUID as WR}from"crypto";function YZ(_,$){return`${_}_${RZ("sha256").update($).digest("hex").slice(0,20)}`}function QZ(_){let $=w(_);try{let D=$.query("SELECT status, COUNT(*) AS n FROM reindex_queue GROUP BY status ORDER BY status").all();return Object.fromEntries(D.map((I)=>[I.status,I.n]))}finally{$.close()}}function PR(_,$){let D=S4($.modelRef,$.config),I=f_(D),U=w(_);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(I.provider,I.model)}finally{U.close()}}function zR(_){h(_.dbPath);let $=w(_.dbPath);try{let D=$.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0,I=$.query("SELECT COUNT(*) AS n FROM chunks").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,E=PR(_.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:I,vector_entries:U,missing_embeddings:E,queued:QZ(_.dbPath),stale_revisions:j}}finally{$.close()}}function KW(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),D=_.reason??"missing_embedding",I=PR(_.dbPath,_),U=w(_.dbPath),E=0,j=0;try{U.transaction(()=>{for(let A of I){let O=YZ("rq",`embedding\x00${A.chunk_id}\x00${D}`);if(U.query("SELECT id FROM reindex_queue WHERE kind = ? AND target_id = ? AND reason = ?").get("embedding",A.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 (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,"embedding",A.chunk_id,A.source_uri,D,"pending",JSON.stringify({source_revision_id:A.source_revision_id}),$,$]),E+=1}})()}finally{U.close()}return{enqueued:E,already_queued:j,reason:D}}function KZ(_){let $=w(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,I=$.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:I}}finally{$.close()}}function TZ(_,$,D){let I=L4($.modelRef,$.config),U=x_(I),E=w(_);try{return E.run(`UPDATE reindex_queue + ORDER BY c.created_at ASC, c.ordinal ASC`).all(I.provider,I.model)}finally{U.close()}}function zR(_){c(_.dbPath);let $=w(_.dbPath);try{let D=$.query("SELECT MAX(version) AS version FROM schema_versions").get()?.version??0,I=$.query("SELECT COUNT(*) AS n FROM chunks").get()?.n??0,U=$.query("SELECT COUNT(*) AS n FROM vector_index_entries").get()?.n??0,E=PR(_.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:I,vector_entries:U,missing_embeddings:E,queued:QZ(_.dbPath),stale_revisions:j}}finally{$.close()}}function KW(_){c(_.dbPath);let $=(_.now??new Date).toISOString(),D=_.reason??"missing_embedding",I=PR(_.dbPath,_),U=w(_.dbPath),E=0,j=0;try{U.transaction(()=>{for(let A of I){let O=YZ("rq",`embedding\x00${A.chunk_id}\x00${D}`);if(U.query("SELECT id FROM reindex_queue WHERE kind = ? AND target_id = ? AND reason = ?").get("embedding",A.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 (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[O,"embedding",A.chunk_id,A.source_uri,D,"pending",JSON.stringify({source_revision_id:A.source_revision_id}),$,$]),E+=1}})()}finally{U.close()}return{enqueued:E,already_queued:j,reason:D}}function KZ(_){let $=w(_);try{let D=$.query("SELECT COUNT(*) AS n FROM chunk_embeddings").get()?.n??0,I=$.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:I}}finally{$.close()}}function TZ(_,$,D){let I=S4($.modelRef,$.config),U=f_(I),E=w(_);try{return E.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",D,"embedding","pending",U.provider,U.model]).changes}finally{E.close()}}async function XR(_){h(_.dbPath);let $=(_.now??new Date).toISOString(),D=`run_${WR()}`,I=_.full?KZ(_.dbPath):{embeddings:0,vectorEntries:0},U=KW({..._,reason:_.full?"full_embedding_rebuild":"missing_embedding"}),E=w(_.dbPath);try{E.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",L4(_.modelRef,_.config),JSON.stringify({full:_.full===!0,queued:U}),$,$])}finally{E.close()}let j=await NI({dbPath:_.dbPath,config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,limit:_.limit,now:_.now}),N=TZ(_.dbPath,_,$),A=w(_.dbPath);try{A.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]),A.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + )`,["completed",D,"embedding","pending",U.provider,U.model]).changes}finally{E.close()}}async function XR(_){c(_.dbPath);let $=(_.now??new Date).toISOString(),D=`run_${WR()}`,I=_.full?KZ(_.dbPath):{embeddings:0,vectorEntries:0},U=KW({..._,reason:_.full?"full_embedding_rebuild":"missing_embedding"}),E=w(_.dbPath);try{E.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",S4(_.modelRef,_.config),JSON.stringify({full:_.full===!0,queued:U}),$,$])}finally{E.close()}let j=await NI({dbPath:_.dbPath,config:_.config,env:_.env,modelRef:_.modelRef,dimensions:_.dimensions,fake:_.fake,limit:_.limit,now:_.now}),N=TZ(_.dbPath,_,$),A=w(_.dbPath);try{A.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]),A.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${WR()}`,D,"info","embedding_refresh_completed",JSON.stringify({queued:U,indexed:j,completed_queue_items:N}),$])}finally{A.close()}return{run_id:D,full:_.full===!0,deleted_embeddings:I.embeddings,deleted_vector_entries:I.vectorEntries,queued:U,indexed:j,completed_queue_items:N}}import{createHash as YR}from"crypto";import{existsSync as QR,lstatSync as FZ,readdirSync as VZ,readFileSync as BZ,statSync as MZ}from"fs";import{basename as ED,extname as bZ,join as ZZ,relative as HZ,resolve as BW,sep as kZ}from"path";import{pathToFileURL as GR}from"url";var qZ=100,CZ=25,vZ=262144,wZ=5,rZ=new Set([".md",".mdx",".txt",".json",".jsonc",".toml",".yaml",".yml"]),TW=new Set(["CODEWITH.md","AGENTS.md","CLAUDE.md","RULES.md","INSTRUCTIONS.md"]),fZ=new Set([".git","node_modules","dist","build",".codewith-worktrees",".connect",".secrets",".tmp","tmp","auth_profiles","profiles","preserved","backup","backups","cache","logs","runs"]),xZ=/(^|[._-])(secret|secrets|token|tokens|credential|credentials|password|passwd|private[_-]?key|id_rsa)([._-]|$)/i,$N=/(agent|rule|rules|instruction|instructions|global|operating|standard|knowledge)/i;function FW(_){return`sha256:${YR("sha256").update(_).digest("hex")}`}function uZ(_){return`sha256:${YR("sha256").update(_).digest("hex")}`}function P1(_){return _.split(kZ).join("/")}function VW(_,$){let D=HZ(_,$);return D?P1(D):ED($)}function t6(_){return rZ.has(bZ(_).toLowerCase())}function RR(_){return P1(_).split("/").some(($)=>xZ.test($))}function KR(_,$=220){let D=_.normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function TR(_){if(!_)return 0;return _.split(/\r\n|\n|\r/).length}function FR(_){return{source_ref:_.sourceRef,source_path:_.sourcePath,line_start:_.lineCount>0?1:0,line_end:_.lineCount,content_hash:_.contentHash}}function yZ(){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:(_)=>TW.has(_)}},{base:".codewith",spec:{family:"codewith",owner:"codewith",scope:"global",precedence:{rank:20,label:"codewith"},tags:["global-rules","codewith","agent-instructions"],include:(_)=>{let $=P1(_),D=ED($);if(TW.has(D)||$==="config.toml")return!0;if($.endsWith("/SKILL.md"))return!0;if(/^(rules|instructions|prompts|plans)\//.test($)&&t6($))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 $=P1(_);return $==="CLAUDE.md"||/^rules\//.test($)&&t6($)}}},{base:".codex",spec:{family:"codex",owner:"codex",scope:"global",precedence:{rank:40,label:"codex"},tags:["global-rules","codex","agent-instructions"],include:(_)=>{let $=P1(_),D=ED($);if(TW.has(D)||D==="config.toml")return!0;return/^(rules|instructions|prompts)\//.test($)&&t6($)}}},{base:".opencode",spec:{family:"opencode",owner:"opencode",scope:"global",precedence:{rank:50,label:"opencode"},tags:["global-rules","opencode","agent-instructions"],include:(_)=>$N.test(_)&&t6(_)}},{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:(_)=>$N.test(_)&&t6(_)}},{base:".hasna/plans",spec:{family:"plan",owner:"hasna",scope:"global",precedence:{rank:65,label:"selected-plans"},tags:["global-rules","plan"],include:(_)=>$N.test(_)&&t6(_)}},{base:"docs",spec:{family:"rule_doc",owner:"repository",scope:"global",precedence:{rank:70,label:"rule-docs"},tags:["global-rules","rule-doc"],include:(_)=>$N.test(_)&&t6(_)}}]}function hZ(_,$){let D=new Map;for(let I of yZ()){let U=BW(_,I.base);if(!QR(U))continue;if(MZ(U).isFile()){let j=ED(U);if(I.spec.include(j))D.set(U,{...I.spec,absPath:U});continue}VR({basePath:U,depth:0,maxDepth:I.maxDepth??wZ,spec:I.spec,candidates:D,skipped:$})}return[...D.values()].sort((I,U)=>{if(I.precedence.rank!==U.precedence.rank)return I.precedence.rank-U.precedence.rank;return I.absPath.localeCompare(U.absPath)})}function VR(_){let $=_.rootBasePath??_.basePath;if(_.depth>_.maxDepth)return;for(let D of VZ(_.basePath,{withFileTypes:!0})){let I=ZZ(_.basePath,D.name),U=VW($,I);if(D.isSymbolicLink())continue;if(D.isDirectory()){if(fZ.has(D.name))continue;if(RR(U)){_.skipped.push({source_family:_.spec.family,source_path:I,reason:"sensitive_path"});continue}VR({..._,rootBasePath:$,basePath:I,depth:_.depth+1});continue}if(!D.isFile())continue;let E=VW(BW($),I);if(RR(E)){_.skipped.push({source_family:_.spec.family,source_path:I,reason:"sensitive_path"});continue}if(!_.spec.include(E))continue;if(!t6(I))continue;_.candidates.set(I,{..._.spec,absPath:I})}}function cZ(_){if((_.tags??[]).map((I)=>I.toLowerCase()).some((I)=>["rule","rules","agent","instructions","global-rules","global-agent-rules"].includes(I)))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 BR(_,$){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 nZ(_){let $=FZ(_.candidate.absPath),D=_.candidate.absPath,I=VW(_.root,D);if($.size>_.maxBytesPerFile){let z=GR(D).href;return{evidence:{source_family:_.candidate.family,title:ED(D),source_path:D,source_path_ref:I,source_ref:z,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=BZ(D),E=U.toString("utf8"),j=y_(E,_.safetyPolicy),A=j.findings.some((z)=>z.severity==="high")?"refused":j.findings.length>0?"redacted":"clean",O=FW(j.text),L=GR(D).href,J=TR(j.text),P={source_family:_.candidate.family,title:ED(D),source_path:D,source_path_ref:I,source_ref:L,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:uZ(U),content_hash:O,discovered_at:_.discoveredAt,tags:[..._.candidate.tags],redaction_status:A,redactions:j.findings.map((z)=>({type:z.type,severity:z.severity})),citations:[FR({sourceRef:L,sourcePath:D,lineCount:J,contentHash:O})],bytes:U.byteLength,line_count:J,importable:A!=="refused",skipped_reason:A==="refused"?"secret_refused":null,preview:A==="refused"?null:KR(j.text)};return{evidence:P,text:j.text,manifest:P.importable?BR(P,j.text):null}}function dZ(_){let $=y_(_.item.content,_.safetyPolicy),I=$.findings.some((O)=>O.severity==="high")?"refused":$.findings.length>0?"redacted":"clean",U=`open-files://source/legacy-json/path/${encodeURIComponent(_.item.id)}`,E=FW($.text),j=FW(_.item.content),N=TR($.text),A={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:E,discovered_at:_.discoveredAt,tags:[...new Set(["global-rules","legacy-json",..._.item.tags??[]])],redaction_status:I,redactions:$.findings.map((O)=>({type:O.type,severity:O.severity})),citations:[FR({sourceRef:U,sourcePath:_.legacyStorePath,lineCount:N,contentHash:E})],bytes:Buffer.byteLength(_.item.content),line_count:N,importable:I!=="refused",skipped_reason:I==="refused"?"secret_refused":null,preview:I==="refused"?null:KR($.text),legacy_json_id:_.item.id};return{evidence:A,text:$.text,manifest:A.importable?BR(A,$.text):null}}function mZ(_){if(!_.legacyStorePath||!QR(_.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 y$(_.legacyStorePath,()=>{let D=U4(_.legacyStorePath);if(!D.exists)return 0;let I=0;for(let U of D.items){let E=$.get(U.id);if(!E)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:E.source_ref,source_hash:E.source_hash,content_hash:E.content_hash,data_loss:!1}},U.tags=[...new Set([...U.tags??[],"deprecated:knowledge-rules-import"])],U.updated_at=_.now,I+=1}if(I>0)_6(_.legacyStorePath,{items:D.items});return I})}async function MR(_={}){let $=BW(_.root??process.cwd()),D=_.scope??"global",I=_.owner??"global-agent-rules-standard",U=_.dryRun!==!1,E=(_.now??new Date).toISOString(),j=Math.max(1,Math.min(_.maxItems??qZ,1000)),N=Math.max(1,Math.min(_.limit??CZ,100)),A=Math.max(1024,Math.min(_.maxBytesPerFile??vZ,2097152)),O=[],J=hZ($,O).slice(0,j).map((B)=>nZ({root:$,candidate:{...B,owner:B.owner==="repository"?I:B.owner,scope:D},discoveredAt:E,maxBytesPerFile:A,safetyPolicy:_.safetyPolicy})),z=(_.includeLegacy===!1||!_.legacyStorePath?{exists:!1,items:[]}:U4(_.legacyStorePath)).items.filter((B)=>B.archived!==!0&&cZ(B)).slice(0,j),S=z.map((B)=>dZ({item:B,legacyStorePath:_.legacyStorePath,discoveredAt:E,scope:D,safetyPolicy:_.safetyPolicy})),W=[...J,...S].slice(0,j),X=W.map((B)=>B.evidence),R=W.filter((B)=>B.manifest).map((B)=>B.manifest),K=X.filter((B)=>B.redaction_status==="refused").length,Y=X.slice(0,N),T=O.slice(0,N),F=null,k=0;if(!U){if(!_.dbPath)throw Error("rules provenance apply mode requires dbPath.");if(R.length>0)F=await N4({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)k=mZ({legacyStorePath:_.legacyStorePath,records:X,now:E})}return{ok:K===0||R.length>0||U,workflow:"global-rules-provenance-import",dry_run:U,writes_performed:!U,root:$,scope:D,owner:I,discovered_at:E,max_items:j,evidence_limit:N,records_seen:X.length,records_importable:R.length,records_refused:K,records_skipped:O.length,evidence_truncated:X.length>Y.length,skipped_truncated:O.length>T.length,evidence:Y,skipped:T,import_result:F,legacy:{store_path:_.legacyStorePath??null,candidates:z.length,promoted:S.filter((B)=>B.manifest).length,deprecated:k,data_loss:!1},message:U?`Discovered ${X.length} rule source(s); ${R.length} importable, ${K} refused`:`Imported ${F?.items_seen??0} rule source(s); ${k} legacy note(s) deprecated`}}import{createHash as lZ,randomUUID as bR}from"crypto";function iZ(_){return`sha256:${lZ("sha256").update(_).digest("hex")}`}function ZR(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function HR(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function o6(_){return typeof _==="string"&&_.length>0?_:null}function tZ(_){let $=HR(_),D=o6($.url)??o6($.uri)??o6($.sourceUrl);if(!D)return null;return{url:D,title:o6($.title)??o6($.name),snippet:o6($.snippet)??o6($.text)??o6($.description),provider_metadata:$}}function DN(_,$){if(Array.isArray(_)){for(let U of _)DN(U,$);return}let D=tZ(_);if(D)$.set(D.url,D);let I=HR(_);for(let U of["sources","results","citations","annotations","output"])if(I[U])DN(I[U],$)}function oZ(_,$){return Array.from({length:Math.min($,3)},(D,I)=>({url:`https://example.com/knowledge-web-${I+1}`,title:`Fake web source ${I+1}`,snippet:`Deterministic web-search fixture for "${_}"`,provider_metadata:{fake:!0,rank:I+1}}))}async function pZ(_){let{generateText:$}=await import("ai"),{createOpenAI:D}=await import("@ai-sdk/openai"),I=g6(_.config,"openai"),U=D({apiKey:_.env[I.api_key_env],baseURL:I.base_url}),E=U.tools?.webSearch;if(!E)throw Error("OpenAI provider does not expose tools.webSearch.");return $({model:U(_.model),prompt:_.query,tools:{web_search:E({externalWebAccess:!0,searchContextSize:"medium",..._.domains.length>0?{allowedDomains:_.domains}:{}})},toolChoice:{type:"tool",toolName:"web_search"}})}async function eZ(_){let{generateText:$}=await import("ai"),{createAnthropic:D}=await import("@ai-sdk/anthropic"),I=g6(_.config,"anthropic"),U=D({apiKey:_.env[I.api_key_env],baseURL:I.base_url}),E=U.tools?.webSearch_20250305??U.tools?.webSearch;if(!E)throw Error("Anthropic provider does not expose a web search tool.");return $({model:U(_.model),prompt:_.query,tools:{web_search:E({maxUses:_.maxUses,..._.domains.length>0?{allowedDomains:_.domains}:{}})}})}async function aZ(_,$,D){if(!_.fileResults||$.length===0)return 0;let I=$.map((E)=>{let j=[E.title,E.snippet,E.url].filter(Boolean).join(` -`),N=iZ(j);return{source_ref:E.url,name:E.title??E.url,url:E.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:E.url,content_source:"provider_web_search",provider_metadata:E.provider_metadata},extracted_text:j}});return(await N4({dbPath:_.dbPath,items:I,sourceLabel:`web-search:${_.query}`,readAction:"provider_web_search_file_results",safetyPolicy:_.safetyPolicy,now:new Date(D)})).sources_upserted}async function kR(_){let $=_.query.trim();if(!$)throw Error("Web search query is required.");let D=_.env??process.env,I=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??5,20)),E=Math.max(1,Math.min(_.maxUses??3,10)),j=_.domains??[],N=T$(_.modelRef??(_.provider?`${_.provider}:${g6(_.config,_.provider).default_model}`:"default"),_.config),A=x_(N),O=_.provider??A.provider,L=A.provider===O?A.model:g6(_.config,O).default_model,J=`run_${bR()}`;if(!_.fake&&_.safetyPolicy)G0(_.safetyPolicy);if(!_.fake&&O!=="openai"&&O!=="anthropic")throw Error(`Provider ${O} does not expose native web search yet.`);if(!_.fake)A4(O,_.config,D);h(_.dbPath);let P=w(_.dbPath);try{P.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[J,"provider-web-search",$,"running",O,L,JSON.stringify({domains:j,max_uses:E,fake:_.fake===!0}),I,I]),G_(P,{event_type:"source_read",action:_.fake?"fake_provider_web_search":"provider_web_search",target_uri:$,decision:"allow",metadata:{provider:O,model:L,domains:j,max_uses:E},created_at:I})}finally{P.close()}let z="",S=[],W={input_tokens:ZR($),output_tokens:0,cost_usd:0},X=[];if(_.fake)S=oZ($,U),z=`Fake web search answer for: ${$}`,W.output_tokens=ZR(z);else{let K=O==="openai"?await pZ({query:$,model:L,config:_.config,env:D,maxUses:E,domains:j}):await eZ({query:$,model:L,config:_.config,env:D,maxUses:E,domains:j});z=K.text;let Y=new Map;DN(K.sources,Y),DN(K.toolResults,Y),S=Array.from(Y.values()).slice(0,U);let T=O4({provider:O,model:L,usage:K.usage,providerMetadata:K.providerMetadata});W={input_tokens:T.input_tokens,output_tokens:T.output_tokens,cost_usd:T.cost_usd}}let G=await aZ(_,S,I),R=w(_.dbPath);try{R.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({domains:j,max_uses:E,sources:S.length,filed_sources:G,fake:_.fake===!0}),I,J]),R.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) - VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${bR()}`,J,"info","provider_web_search_completed",JSON.stringify({sources:S.length,filed_sources:G}),I]),Q0(R,{run_id:J,provider:O,model:L,input_tokens:W.input_tokens,output_tokens:W.output_tokens,cost_usd:W.cost_usd,metadata:{web_search:!0,sources:S.length,filed_sources:G},created_at:I})}finally{R.close()}if(S.length===0)X.push("no_web_sources_returned");return{run_id:J,query:$,provider:O,model:L,answer:z,sources:S,filed_sources:G,usage:W,warnings:X}}import{createHash as sZ,randomUUID as _H}from"crypto";function jD(_,$){return`${_}_${sZ("sha256").update($).digest("hex").slice(0,20)}`}function MW(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"knowledge-page"}function $H(_){return{year:String(_.getUTCFullYear()),month:String(_.getUTCMonth()+1).padStart(2,"0"),day:String(_.getUTCDate()).padStart(2,"0")}}function DH(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function qR(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function UH(_){return Array.from(new Set((_??"").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,12)}function CR(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function IH(_,$){let D=Math.max(1,Math.min($.limit??10,50)),I=$.sourceRefs??[],U=UH($.query),E=["c.kind = 'source'"],j=[];if(I.length>0){E.push(`(${I.map(()=>"(s.uri = ? OR c.metadata_json LIKE ?)").join(" OR ")})`);for(let N of I)j.push(N,`%${CR(N)}%`)}if(U.length>0){E.push(`(${U.map(()=>"lower(c.text) LIKE ? ESCAPE '\\'").join(" OR ")})`);for(let N of U)j.push(`%${CR(N)}%`)}return j.push(D),_.query(`SELECT +${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction|instructions|codewith|claude|codex|opencode)\b/.test(D)}function BR(_,$){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 nZ(_){let $=FZ(_.candidate.absPath),D=_.candidate.absPath,I=VW(_.root,D);if($.size>_.maxBytesPerFile){let z=GR(D).href;return{evidence:{source_family:_.candidate.family,title:ED(D),source_path:D,source_path_ref:I,source_ref:z,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=BZ(D),E=U.toString("utf8"),j=u_(E,_.safetyPolicy),A=j.findings.some((z)=>z.severity==="high")?"refused":j.findings.length>0?"redacted":"clean",O=FW(j.text),S=GR(D).href,L=TR(j.text),P={source_family:_.candidate.family,title:ED(D),source_path:D,source_path_ref:I,source_ref:S,owner:_.candidate.owner,scope:_.candidate.scope,precedence:_.candidate.precedence,source_hash:uZ(U),content_hash:O,discovered_at:_.discoveredAt,tags:[..._.candidate.tags],redaction_status:A,redactions:j.findings.map((z)=>({type:z.type,severity:z.severity})),citations:[FR({sourceRef:S,sourcePath:D,lineCount:L,contentHash:O})],bytes:U.byteLength,line_count:L,importable:A!=="refused",skipped_reason:A==="refused"?"secret_refused":null,preview:A==="refused"?null:KR(j.text)};return{evidence:P,text:j.text,manifest:P.importable?BR(P,j.text):null}}function dZ(_){let $=u_(_.item.content,_.safetyPolicy),I=$.findings.some((O)=>O.severity==="high")?"refused":$.findings.length>0?"redacted":"clean",U=`open-files://source/legacy-json/path/${encodeURIComponent(_.item.id)}`,E=FW($.text),j=FW(_.item.content),N=TR($.text),A={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:E,discovered_at:_.discoveredAt,tags:[...new Set(["global-rules","legacy-json",..._.item.tags??[]])],redaction_status:I,redactions:$.findings.map((O)=>({type:O.type,severity:O.severity})),citations:[FR({sourceRef:U,sourcePath:_.legacyStorePath,lineCount:N,contentHash:E})],bytes:Buffer.byteLength(_.item.content),line_count:N,importable:I!=="refused",skipped_reason:I==="refused"?"secret_refused":null,preview:I==="refused"?null:KR($.text),legacy_json_id:_.item.id};return{evidence:A,text:$.text,manifest:A.importable?BR(A,$.text):null}}function mZ(_){if(!_.legacyStorePath||!QR(_.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 y$(_.legacyStorePath,()=>{let D=U4(_.legacyStorePath);if(!D.exists)return 0;let I=0;for(let U of D.items){let E=$.get(U.id);if(!E)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:E.source_ref,source_hash:E.source_hash,content_hash:E.content_hash,data_loss:!1}},U.tags=[...new Set([...U.tags??[],"deprecated:knowledge-rules-import"])],U.updated_at=_.now,I+=1}if(I>0)_6(_.legacyStorePath,{items:D.items});return I})}async function MR(_={}){let $=BW(_.root??process.cwd()),D=_.scope??"global",I=_.owner??"global-agent-rules-standard",U=_.dryRun!==!1,E=(_.now??new Date).toISOString(),j=Math.max(1,Math.min(_.maxItems??qZ,1000)),N=Math.max(1,Math.min(_.limit??CZ,100)),A=Math.max(1024,Math.min(_.maxBytesPerFile??vZ,2097152)),O=[],L=hZ($,O).slice(0,j).map((Z)=>nZ({root:$,candidate:{...Z,owner:Z.owner==="repository"?I:Z.owner,scope:D},discoveredAt:E,maxBytesPerFile:A,safetyPolicy:_.safetyPolicy})),z=(_.includeLegacy===!1||!_.legacyStorePath?{exists:!1,items:[]}:U4(_.legacyStorePath)).items.filter((Z)=>Z.archived!==!0&&cZ(Z)).slice(0,j),G=z.map((Z)=>dZ({item:Z,legacyStorePath:_.legacyStorePath,discoveredAt:E,scope:D,safetyPolicy:_.safetyPolicy})),J=[...L,...G].slice(0,j),W=J.map((Z)=>Z.evidence),R=J.filter((Z)=>Z.manifest).map((Z)=>Z.manifest),T=W.filter((Z)=>Z.redaction_status==="refused").length,Y=W.slice(0,N),Q=O.slice(0,N),F=null,q=0;if(!U){if(!_.dbPath)throw Error("rules provenance apply mode requires dbPath.");if(R.length>0)F=await N4({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)q=mZ({legacyStorePath:_.legacyStorePath,records:W,now:E})}return{ok:T===0||R.length>0||U,workflow:"global-rules-provenance-import",dry_run:U,writes_performed:!U,root:$,scope:D,owner:I,discovered_at:E,max_items:j,evidence_limit:N,records_seen:W.length,records_importable:R.length,records_refused:T,records_skipped:O.length,evidence_truncated:W.length>Y.length,skipped_truncated:O.length>Q.length,evidence:Y,skipped:Q,import_result:F,legacy:{store_path:_.legacyStorePath??null,candidates:z.length,promoted:G.filter((Z)=>Z.manifest).length,deprecated:q,data_loss:!1},message:U?`Discovered ${W.length} rule source(s); ${R.length} importable, ${T} refused`:`Imported ${F?.items_seen??0} rule source(s); ${q} legacy note(s) deprecated`}}import{createHash as lZ,randomUUID as bR}from"crypto";function iZ(_){return`sha256:${lZ("sha256").update(_).digest("hex")}`}function ZR(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function HR(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function o6(_){return typeof _==="string"&&_.length>0?_:null}function tZ(_){let $=HR(_),D=o6($.url)??o6($.uri)??o6($.sourceUrl);if(!D)return null;return{url:D,title:o6($.title)??o6($.name),snippet:o6($.snippet)??o6($.text)??o6($.description),provider_metadata:$}}function DN(_,$){if(Array.isArray(_)){for(let U of _)DN(U,$);return}let D=tZ(_);if(D)$.set(D.url,D);let I=HR(_);for(let U of["sources","results","citations","annotations","output"])if(I[U])DN(I[U],$)}function oZ(_,$){return Array.from({length:Math.min($,3)},(D,I)=>({url:`https://example.com/knowledge-web-${I+1}`,title:`Fake web source ${I+1}`,snippet:`Deterministic web-search fixture for "${_}"`,provider_metadata:{fake:!0,rank:I+1}}))}async function pZ(_){let{generateText:$}=await import("ai"),{createOpenAI:D}=await import("@ai-sdk/openai"),I=g6(_.config,"openai"),U=D({apiKey:_.env[I.api_key_env],baseURL:I.base_url}),E=U.tools?.webSearch;if(!E)throw Error("OpenAI provider does not expose tools.webSearch.");return $({model:U(_.model),prompt:_.query,tools:{web_search:E({externalWebAccess:!0,searchContextSize:"medium",..._.domains.length>0?{allowedDomains:_.domains}:{}})},toolChoice:{type:"tool",toolName:"web_search"}})}async function eZ(_){let{generateText:$}=await import("ai"),{createAnthropic:D}=await import("@ai-sdk/anthropic"),I=g6(_.config,"anthropic"),U=D({apiKey:_.env[I.api_key_env],baseURL:I.base_url}),E=U.tools?.webSearch_20250305??U.tools?.webSearch;if(!E)throw Error("Anthropic provider does not expose a web search tool.");return $({model:U(_.model),prompt:_.query,tools:{web_search:E({maxUses:_.maxUses,..._.domains.length>0?{allowedDomains:_.domains}:{}})}})}async function aZ(_,$,D){if(!_.fileResults||$.length===0)return 0;let I=$.map((E)=>{let j=[E.title,E.snippet,E.url].filter(Boolean).join(` +`),N=iZ(j);return{source_ref:E.url,name:E.title??E.url,url:E.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:E.url,content_source:"provider_web_search",provider_metadata:E.provider_metadata},extracted_text:j}});return(await N4({dbPath:_.dbPath,items:I,sourceLabel:`web-search:${_.query}`,readAction:"provider_web_search_file_results",safetyPolicy:_.safetyPolicy,now:new Date(D)})).sources_upserted}async function kR(_){let $=_.query.trim();if(!$)throw Error("Web search query is required.");let D=_.env??process.env,I=(_.now??new Date).toISOString(),U=Math.max(1,Math.min(_.limit??5,20)),E=Math.max(1,Math.min(_.maxUses??3,10)),j=_.domains??[],N=T$(_.modelRef??(_.provider?`${_.provider}:${g6(_.config,_.provider).default_model}`:"default"),_.config),A=f_(N),O=_.provider??A.provider,S=A.provider===O?A.model:g6(_.config,O).default_model,L=`run_${bR()}`;if(!_.fake&&_.safetyPolicy)G0(_.safetyPolicy);if(!_.fake&&O!=="openai"&&O!=="anthropic")throw Error(`Provider ${O} does not expose native web search yet.`);if(!_.fake)A4(O,_.config,D);c(_.dbPath);let P=w(_.dbPath);try{P.run(`INSERT INTO runs (id, type, prompt, status, provider, model, metadata_json, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`,[L,"provider-web-search",$,"running",O,S,JSON.stringify({domains:j,max_uses:E,fake:_.fake===!0}),I,I]),R_(P,{event_type:"source_read",action:_.fake?"fake_provider_web_search":"provider_web_search",target_uri:$,decision:"allow",metadata:{provider:O,model:S,domains:j,max_uses:E},created_at:I})}finally{P.close()}let z="",G=[],J={input_tokens:ZR($),output_tokens:0,cost_usd:0},W=[];if(_.fake)G=oZ($,U),z=`Fake web search answer for: ${$}`,J.output_tokens=ZR(z);else{let T=O==="openai"?await pZ({query:$,model:S,config:_.config,env:D,maxUses:E,domains:j}):await eZ({query:$,model:S,config:_.config,env:D,maxUses:E,domains:j});z=T.text;let Y=new Map;DN(T.sources,Y),DN(T.toolResults,Y),G=Array.from(Y.values()).slice(0,U);let Q=O4({provider:O,model:S,usage:T.usage,providerMetadata:T.providerMetadata});J={input_tokens:Q.input_tokens,output_tokens:Q.output_tokens,cost_usd:Q.cost_usd}}let X=await aZ(_,G,I),R=w(_.dbPath);try{R.run("UPDATE runs SET status = ?, metadata_json = ?, updated_at = ? WHERE id = ?",["completed",JSON.stringify({domains:j,max_uses:E,sources:G.length,filed_sources:X,fake:_.fake===!0}),I,L]),R.run(`INSERT INTO run_events (id, run_id, level, event, metadata_json, created_at) + VALUES (?, ?, ?, ?, ?, ?)`,[`evt_${bR()}`,L,"info","provider_web_search_completed",JSON.stringify({sources:G.length,filed_sources:X}),I]),Q0(R,{run_id:L,provider:O,model:S,input_tokens:J.input_tokens,output_tokens:J.output_tokens,cost_usd:J.cost_usd,metadata:{web_search:!0,sources:G.length,filed_sources:X},created_at:I})}finally{R.close()}if(G.length===0)W.push("no_web_sources_returned");return{run_id:L,query:$,provider:O,model:S,answer:z,sources:G,filed_sources:X,usage:J,warnings:W}}import{createHash as sZ,randomUUID as _H}from"crypto";function jD(_,$){return`${_}_${sZ("sha256").update($).digest("hex").slice(0,20)}`}function MW(_){return _.normalize("NFKC").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"knowledge-page"}function $H(_){return{year:String(_.getUTCFullYear()),month:String(_.getUTCMonth()+1).padStart(2,"0"),day:String(_.getUTCDate()).padStart(2,"0")}}function DH(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function qR(_){if(!_)return{};try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function UH(_){return Array.from(new Set((_??"").toLowerCase().match(/[\p{L}\p{N}_]+/gu)??[])).slice(0,12)}function CR(_){return _.replace(/[\\%_]/g,($)=>`\\${$}`)}function IH(_,$){let D=Math.max(1,Math.min($.limit??10,50)),I=$.sourceRefs??[],U=UH($.query),E=["c.kind = 'source'"],j=[];if(I.length>0){E.push(`(${I.map(()=>"(s.uri = ? OR c.metadata_json LIKE ?)").join(" OR ")})`);for(let N of I)j.push(N,`%${CR(N)}%`)}if(U.length>0){E.push(`(${U.map(()=>"lower(c.text) LIKE ? ESCAPE '\\'").join(" OR ")})`);for(let N of U)j.push(`%${CR(N)}%`)}return j.push(D),_.query(`SELECT c.id AS chunk_id, c.text, c.start_offset, @@ -1059,10 +1059,10 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| ON CONFLICT(kind, name, shard_key) DO UPDATE SET artifact_uri = excluded.artifact_uri, metadata_json = excluded.metadata_json, - updated_at = excluded.updated_at`,[jD("idx",`wiki-topic\x00${$.path}`),"wiki_topic",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash}),$.now,$.now]),1}function NH(_){return _.toLowerCase().match(/[a-z0-9][a-z0-9-]{2,}/)?.[0]??"knowledge"}async function xR(_){let $=_.now??new Date,D=$.toISOString();h(_.dbPath);let I=w(_.dbPath),U;try{U=IH(I,_)}finally{I.close()}if(U.length===0)throw Error("No source chunks matched wiki compile input.");let E=EH(_,U),N=`wiki/generated/${MW(E)}.md`,A=jH(E,U,D),O=U.map((F)=>{let k=qR(F.metadata_json);return typeof k.source_ref==="string"?k.source_ref:F.source_uri}).filter((F)=>Boolean(F)),L=N$({generated_from:"wiki_compile",artifact_key:N,source_refs:O}),J=await UN(_.store,{key:N,body:A,content_type:"text/markdown",metadata:{generated_from:"wiki_compile"}}),P=jD("wiki",N),z=U.map((F)=>({chunk_id:F.chunk_id,source_uri:F.source_uri??"unknown",quote:vR(F.text,240),start_offset:F.start_offset,end_offset:F.end_offset,metadata:{source_revision_id:F.source_revision_id,revision:F.revision,hash:F.hash,source_ref:qR(F.metadata_json).source_ref??F.source_uri}})),S=NH(E),W=`wiki/concepts/${MW(S)}.md`,X=[`# ${S}`,"",`Related page: [[${N}]]`,""].join(` -`),G=N$({generated_from:"wiki_compile_concept",artifact_key:W,source_refs:O}),R=await UN(_.store,{key:W,body:X,content_type:"text/markdown",metadata:{generated_from:"wiki_compile_concept"}}),K=jD("wiki",W),Y=await wR(_.store,{ts:D,event:"wiki_compile_completed",page_key:N,source_refs:O,chunks_seen:U.length},$),T=w(_.dbPath);try{j6(T,[J,R,Y],$),bW(T,{pageId:P,path:N,title:E,artifactUri:J.uri,contentHash:J.hash??"",body:A,provenance:L,now:D}),bW(T,{pageId:K,path:W,title:S,artifactUri:R.uri,contentHash:R.hash??"",body:X,provenance:G,now:D}),T.run(`INSERT OR REPLACE INTO wiki_backlinks (from_page_id, to_page_id, label, created_at) - VALUES (?, ?, ?, ?)`,[P,K,"concept",D]);let F=rR(T,P,z,D),k=fR(T,{title:E,path:N,artifactUri:J.uri,contentHash:J.hash??"",now:D});return{page_id:P,path:N,artifact_uri:J.uri,content_hash:J.hash??"",chunks_seen:U.length,citations_written:F,concept_page_id:K,indexes_updated:k,log_key:Y.key,warnings:[]}}finally{T.close()}}async function uR(_){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(),I=_.prompt.length>80?`${_.prompt.slice(0,77)}...`:_.prompt,E=`wiki/answers/${MW(I)}.md`,j=_.context.citations,N=[`# ${I}`,"",_.answer,"","## Citations","",...j.map((S,W)=>`- [C${W+1}] ${S.source_ref??S.source_uri??S.artifact_path??S.artifact_uri??"unknown"} ${S.hash?`(hash ${S.hash})`:""}`),""].join(` -`),A=j.map((S)=>S.source_ref??S.source_uri).filter((S)=>Boolean(S)),O=N$({generated_from:"knowledge_answer",artifact_key:E,source_refs:A}),L=await UN(_.store,{key:E,body:N,content_type:"text/markdown",metadata:{generated_from:"knowledge_answer"}}),J=await wR(_.store,{ts:D,event:"wiki_answer_filed",page_key:E,prompt:_.prompt,citations:j.length},$),P=jD("wiki",E),z=w(_.dbPath);try{j6(z,[L,J],$),bW(z,{pageId:P,path:E,title:I,artifactUri:L.uri,contentHash:L.hash??"",body:N,provenance:O,now:D});let S=rR(z,P,j.map((W)=>({chunk_id:W.chunk_id,source_uri:W.source_uri??W.artifact_uri??"unknown",quote:W.quote,start_offset:W.start_offset,end_offset:W.end_offset,metadata:{source_ref:W.source_ref,artifact_path:W.artifact_path,revision:W.revision,hash:W.hash}})),D);return fR(z,{title:I,path:E,artifactUri:L.uri,contentHash:L.hash??"",now:D}),{approved:!0,durable_writes_performed:!0,page_id:P,path:E,artifact_uri:L.uri,citations_written:S,log_key:J.key,message:`Filed answer to ${E}`}}finally{z.close()}}function m4(_,$){_.push($)}function yR(_){h(_.dbPath);let $=w(_.dbPath),D=[];try{let I=$.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,E=$.query("SELECT COUNT(*) AS n FROM wiki_backlinks").get()?.n??0,j=$.query(`SELECT wp.id, wp.path + updated_at = excluded.updated_at`,[jD("idx",`wiki-topic\x00${$.path}`),"wiki_topic",$.title,$.artifactUri,$.path,JSON.stringify({artifact_key:$.path,content_hash:$.contentHash}),$.now,$.now]),1}function NH(_){return _.toLowerCase().match(/[a-z0-9][a-z0-9-]{2,}/)?.[0]??"knowledge"}async function xR(_){let $=_.now??new Date,D=$.toISOString();c(_.dbPath);let I=w(_.dbPath),U;try{U=IH(I,_)}finally{I.close()}if(U.length===0)throw Error("No source chunks matched wiki compile input.");let E=EH(_,U),N=`wiki/generated/${MW(E)}.md`,A=jH(E,U,D),O=U.map((F)=>{let q=qR(F.metadata_json);return typeof q.source_ref==="string"?q.source_ref:F.source_uri}).filter((F)=>Boolean(F)),S=N$({generated_from:"wiki_compile",artifact_key:N,source_refs:O}),L=await UN(_.store,{key:N,body:A,content_type:"text/markdown",metadata:{generated_from:"wiki_compile"}}),P=jD("wiki",N),z=U.map((F)=>({chunk_id:F.chunk_id,source_uri:F.source_uri??"unknown",quote:vR(F.text,240),start_offset:F.start_offset,end_offset:F.end_offset,metadata:{source_revision_id:F.source_revision_id,revision:F.revision,hash:F.hash,source_ref:qR(F.metadata_json).source_ref??F.source_uri}})),G=NH(E),J=`wiki/concepts/${MW(G)}.md`,W=[`# ${G}`,"",`Related page: [[${N}]]`,""].join(` +`),X=N$({generated_from:"wiki_compile_concept",artifact_key:J,source_refs:O}),R=await UN(_.store,{key:J,body:W,content_type:"text/markdown",metadata:{generated_from:"wiki_compile_concept"}}),T=jD("wiki",J),Y=await wR(_.store,{ts:D,event:"wiki_compile_completed",page_key:N,source_refs:O,chunks_seen:U.length},$),Q=w(_.dbPath);try{j6(Q,[L,R,Y],$),bW(Q,{pageId:P,path:N,title:E,artifactUri:L.uri,contentHash:L.hash??"",body:A,provenance:S,now:D}),bW(Q,{pageId:T,path:J,title:G,artifactUri:R.uri,contentHash:R.hash??"",body:W,provenance:X,now:D}),Q.run(`INSERT OR REPLACE INTO wiki_backlinks (from_page_id, to_page_id, label, created_at) + VALUES (?, ?, ?, ?)`,[P,T,"concept",D]);let F=rR(Q,P,z,D),q=fR(Q,{title:E,path:N,artifactUri:L.uri,contentHash:L.hash??"",now:D});return{page_id:P,path:N,artifact_uri:L.uri,content_hash:L.hash??"",chunks_seen:U.length,citations_written:F,concept_page_id:T,indexes_updated:q,log_key:Y.key,warnings:[]}}finally{Q.close()}}async function uR(_){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(),I=_.prompt.length>80?`${_.prompt.slice(0,77)}...`:_.prompt,E=`wiki/answers/${MW(I)}.md`,j=_.context.citations,N=[`# ${I}`,"",_.answer,"","## Citations","",...j.map((G,J)=>`- [C${J+1}] ${G.source_ref??G.source_uri??G.artifact_path??G.artifact_uri??"unknown"} ${G.hash?`(hash ${G.hash})`:""}`),""].join(` +`),A=j.map((G)=>G.source_ref??G.source_uri).filter((G)=>Boolean(G)),O=N$({generated_from:"knowledge_answer",artifact_key:E,source_refs:A}),S=await UN(_.store,{key:E,body:N,content_type:"text/markdown",metadata:{generated_from:"knowledge_answer"}}),L=await wR(_.store,{ts:D,event:"wiki_answer_filed",page_key:E,prompt:_.prompt,citations:j.length},$),P=jD("wiki",E),z=w(_.dbPath);try{j6(z,[S,L],$),bW(z,{pageId:P,path:E,title:I,artifactUri:S.uri,contentHash:S.hash??"",body:N,provenance:O,now:D});let G=rR(z,P,j.map((J)=>({chunk_id:J.chunk_id,source_uri:J.source_uri??J.artifact_uri??"unknown",quote:J.quote,start_offset:J.start_offset,end_offset:J.end_offset,metadata:{source_ref:J.source_ref,artifact_path:J.artifact_path,revision:J.revision,hash:J.hash}})),D);return fR(z,{title:I,path:E,artifactUri:S.uri,contentHash:S.hash??"",now:D}),{approved:!0,durable_writes_performed:!0,page_id:P,path:E,artifact_uri:S.uri,citations_written:G,log_key:L.key,message:`Filed answer to ${E}`}}finally{z.close()}}function m4(_,$){_.push($)}function yR(_){c(_.dbPath);let $=w(_.dbPath),D=[];try{let I=$.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,E=$.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/%' @@ -1082,11 +1082,11 @@ ${_.content.slice(0,500)}`.toLowerCase();return/\b(agent|rule|rules|instruction| 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 z of O)m4(D,{type:"orphan_page",severity:"info",page_id:z.id,path:z.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 z of O)m4(D,{type:"orphan_page",severity:"info",page_id:z.id,path:z.path,message:"Wiki page has no backlinks."});let S=$.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 z of L)m4(D,{type:"unresolved_source_ref",severity:"error",page_id:z.page_id,path:z.path,source_uri:z.source_uri,message:"Citation source URI cannot be resolved to a known or allowed source ref."});let J=$.query("SELECT id, path FROM wiki_pages WHERE lower(metadata_json) LIKE '%contradiction%'").all();for(let z of J)m4(D,{type:"contradiction_marker",severity:"warn",page_id:z.id,path:z.path,message:"Page metadata contains a contradiction marker."});let P=$.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 z of S)m4(D,{type:"unresolved_source_ref",severity:"error",page_id:z.page_id,path:z.path,source_uri:z.source_uri,message:"Citation source URI cannot be resolved to a known or allowed source ref."});let L=$.query("SELECT id, path FROM wiki_pages WHERE lower(metadata_json) LIKE '%contradiction%'").all();for(let z of L)m4(D,{type:"contradiction_marker",severity:"warn",page_id:z.id,path:z.path,message:"Page metadata contains a contradiction marker."});let P=$.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 z of P)m4(D,{type:"new_article_candidate",severity:"info",chunk_id:z.chunk_id,source_uri:z.source_uri??void 0,message:"Source chunk is indexed but not cited by any wiki page yet."});return{ok:D.every((z)=>z.severity!=="error"),issue_count:D.length,issues:D,counts:{active_pages:I,citations:U,backlinks:E,new_article_candidates:P.length}}}finally{$.close()}}import{createHash as gH}from"crypto";function AH(_){let $=String(_.getUTCFullYear()),D=String(_.getUTCMonth()+1).padStart(2,"0"),I=String(_.getUTCDate()).padStart(2,"0");return{year:$,month:D,day:I}}function ZW(_,$){return`${_}_${gH("sha256").update($).digest("hex").slice(0,20)}`}function OH(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function LH(){return`# Knowledge Agent Schema v1 + LIMIT 25`).all();for(let z of P)m4(D,{type:"new_article_candidate",severity:"info",chunk_id:z.chunk_id,source_uri:z.source_uri??void 0,message:"Source chunk is indexed but not cited by any wiki page yet."});return{ok:D.every((z)=>z.severity!=="error"),issue_count:D.length,issues:D,counts:{active_pages:I,citations:U,backlinks:E,new_article_candidates:P.length}}}finally{$.close()}}import{createHash as gH}from"crypto";function AH(_){let $=String(_.getUTCFullYear()),D=String(_.getUTCMonth()+1).padStart(2,"0"),I=String(_.getUTCDate()).padStart(2,"0");return{year:$,month:D,day:I}}function ZW(_,$){return`${_}_${gH("sha256").update($).digest("hex").slice(0,20)}`}function OH(_){let $=_.trim().split(/\s+/).filter(Boolean).length;return Math.max(1,Math.ceil($*1.25))}function SH(){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 SH(){return`# Knowledge Index +`}function LH(){return`# Knowledge Index This is a compact orientation index for agents. It is not the full search index. @@ -1139,8 +1139,8 @@ citations, chunks, generated wiki artifacts, indexes, and run records. Generated durable knowledge pages live here. Pages should be concise, cited, and organized for both humans and agents. -`}async function cR(_,$=new Date){let{year:D,month:I,day:U}=AH($),E="schemas/v1.md",j="indexes/root.md",N="wiki/README.md",A=`logs/${D}/${I}/${U}.jsonl`,O={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:LH(),content_type:"text/markdown"},{key:"indexes/root.md",body:SH(),content_type:"text/markdown"},{key:"wiki/README.md",body:hR(),content_type:"text/markdown"},{key:A,body:`${JSON.stringify(O)} -`,content_type:"application/x-ndjson"}],J=await Promise.all(L.map(async(P)=>{let z=await _.put(P);return{key:z.key,uri:z.uri,kind:pz(P.key),content_type:P.content_type,modified_at:z.modified_at,metadata:{provenance:N$({generated_from:"wiki_layout_init",artifact_key:P.key,citation_required:P.key.startsWith("wiki/")||P.key.startsWith("indexes/")})},...X0(P.body)}}));return{schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md",log_key:A,artifacts:J,written:["schemas/v1.md","indexes/root.md","wiki/README.md",A]}}function HW(_){let $=_.metadata?.provenance;if($&&typeof $==="object"&&!Array.isArray($))return $;return N$({generated_from:"wiki_layout_init",artifact_key:_.key})}function JH(_,$,D,I,U,E){let j=HW(I),N=ZW("chk",`${$}\x00${I.hash??I.uri}`),A=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($);for(let O of A)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[O.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) +`}async function cR(_,$=new Date){let{year:D,month:I,day:U}=AH($),E="schemas/v1.md",j="indexes/root.md",N="wiki/README.md",A=`logs/${D}/${I}/${U}.jsonl`,O={ts:$.toISOString(),event:"wiki_layout_initialized",schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md"},S=[{key:"schemas/v1.md",body:SH(),content_type:"text/markdown"},{key:"indexes/root.md",body:LH(),content_type:"text/markdown"},{key:"wiki/README.md",body:hR(),content_type:"text/markdown"},{key:A,body:`${JSON.stringify(O)} +`,content_type:"application/x-ndjson"}],L=await Promise.all(S.map(async(P)=>{let z=await _.put(P);return{key:z.key,uri:z.uri,kind:pz(P.key),content_type:P.content_type,modified_at:z.modified_at,metadata:{provenance:N$({generated_from:"wiki_layout_init",artifact_key:P.key,citation_required:P.key.startsWith("wiki/")||P.key.startsWith("indexes/")})},...X0(P.body)}}));return{schema_key:"schemas/v1.md",root_index_key:"indexes/root.md",wiki_readme_key:"wiki/README.md",log_key:A,artifacts:L,written:["schemas/v1.md","indexes/root.md","wiki/README.md",A]}}function HW(_){let $=_.metadata?.provenance;if($&&typeof $==="object"&&!Array.isArray($))return $;return N$({generated_from:"wiki_layout_init",artifact_key:_.key})}function JH(_,$,D,I,U,E){let j=HW(I),N=ZW("chk",`${$}\x00${I.hash??I.uri}`),A=_.query("SELECT id FROM chunks WHERE wiki_page_id = ?").all($);for(let O of A)_.run("DELETE FROM chunks_fts WHERE chunk_id = ?",[O.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,OH(U),0,U.length,JSON.stringify({artifact_key:I.key,artifact_uri:I.uri,content_hash:I.hash??null,provenance:j}),E]),_.run("INSERT INTO chunks_fts (chunk_id, text, title, source_uri) VALUES (?, ?, ?, ?)",[N,U,D,I.uri])}function nR(_,$,D=new Date){let I=D.toISOString(),U=$.find((j)=>j.key.endsWith("indexes/root.md")),E=$.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 @@ -1154,9 +1154,9 @@ 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",E.uri,E.hash??null,"active",JSON.stringify({artifact_key:E.key,provenance:HW(E)}),I,I]),JH(_,j,"Wiki",E,hR(),I)}}import{createHash as dR}from"crypto";import{cpSync as fW,chmodSync as qW,existsSync as H$,lstatSync as oR,mkdirSync as IN,readdirSync as xW,readFileSync as z1,renameSync as WH,rmSync as jN,writeFileSync as mR}from"fs";import{dirname as CW,join as R6,relative as PH}from"path";function vW(_,$=_){if(!H$(_))return[];let D=oR(_);if(D.isFile())return[PH($,_)||"."];if(!D.isDirectory())return[];return xW(_).flatMap((I)=>vW(R6(_,I),$)).sort()}function lR(_,$){if($.length===0)return{sha256:null,bytes:0};let D=dR("sha256"),I=0;for(let U of $){let E=R6(_,U),j=z1(E),N=dR("sha256").update(j).digest("hex");I+=j.byteLength,D.update(U),D.update("\x00"),D.update(N),D.update("\x00")}return{sha256:D.digest("hex"),bytes:I}}function zH(_){if(!H$(_))return null;let $=JSON.parse(z1(_,"utf8"));return Array.isArray($.items)?$.items.length:null}function XH(_){if(!H$(_))return{exists:!1,integrity_check:null,table_counts:{}};let $=rz(_);try{let D=$.query("PRAGMA integrity_check").get(),I=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(),E={};for(let j of U){let N=`"${j.name.replaceAll('"','""')}"`,A=$.query(`SELECT COUNT(*) AS n FROM ${N}`).get();E[j.name]=A?.n??0}return{exists:!0,integrity_check:I,table_counts:E}}finally{$.close()}}function l_(_,$={}){let D=vW(_.home),I=lR(_.home,D),U=vW(_.artifactsDir),E=lR(_.artifactsDir,U),j=H$(_.knowledgeDbPath);return{path:_.home,exists:H$(_.home),file_count:D.length,total_bytes:I.bytes,tree_sha256:I.sha256,json_items:zH(_.jsonStorePath),sqlite:$.includeSqlite===!1?{exists:j,integrity_check:null,table_counts:{}}:XH(_.knowledgeDbPath),artifacts:{exists:H$(_.artifactsDir),file_count:U.length,total_bytes:E.bytes,tree_sha256:E.sha256},files:D}}function GH(_,$){if(!$.exists)return!0;if($.files.filter((I)=>I!=="config.json").length>0)return!1;if(!$.files.includes("config.json"))return!0;try{return JSON.stringify(JSON.parse(z1(_.configPath,"utf8")))===JSON.stringify(vD())}catch{return!1}}function wW(_,$){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 EN(_){return _.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z")}function rW(_){if(Array.isArray(_))return`[${_.map(rW).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${rW(D)}`).join(",")}}`;return JSON.stringify(_)}function iR(_){return rW(_)}function kW(_){return typeof _.short_id==="string"&&_.short_id.trim().length>0?_.short_id:null}function l4(_){if(!H$(_))return{items:[]};let $=JSON.parse(z1(_,"utf8"));if(!$||!Array.isArray($.items))throw Error(`Invalid knowledge JSON store shape at ${_}`);return{items:$.items}}function tR(_,$){let D=new Map(_.items.map((L)=>[L.id,L])),I=new Map;for(let L of _.items){let J=I.get(L.id);if(J&&J.item.id!==L.id);I.set(L.id,{item:L,keyKind:"id",source:"current"});let P=kW(L);if(P&&!I.has(P))I.set(P,{item:L,keyKind:"short_id",source:"current"})}let U=[],E=0,j=0,N=0,A=[];for(let L of $.items){let J=D.get(L.id);if(J){if(iR(J)===iR(L))E+=1;else j+=1,U.push({type:"id_conflict",id:L.id,legacy_title:L.title,current_title:J.title});continue}let P=[{key:L.id,keyKind:"id"},...kW(L)?[{key:kW(L),keyKind:"short_id"}]:[]],z=!1;for(let{key:S,keyKind:W}of P){let X=I.get(S);if(!X)continue;if(W==="id"&&X.keyKind==="id")j+=1,U.push({type:"id_conflict",id:S,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:S,legacy_id:L.id,current_id:X.item.id,legacy_title:L.title,current_title:X.item.title});z=!0}if(z)continue;A.push(L);for(let{key:S,keyKind:W}of P)I.set(S,{item:L,keyKind:W,source:"legacy"})}let O={items:[..._.items,...A]};return{stats:{current_items:_.items.length,legacy_items:$.items.length,duplicate_ids_identical:E,duplicate_ids_conflicting:j,short_id_conflicts:N,stranded_items:A.length,merged_items:U.length===0?A.length:0,expected_total_items:_.items.length+A.length,final_items:null},conflicts:U,mergedStore:O}}function RH(_,$){let D=[...new Set(_)].sort(),I=(U)=>{if(U>=D.length)return $();return y$(D[U],()=>I(U+1),{createParent:!0})};return I(0)}function pR(_){let $=_.now??new Date,D=_.approveWrite!==!0,I=l_(_.legacy),U=l_(_.current),E={legacy_exists:I.exists,legacy_store_exists:H$(_.legacy.jsonStorePath),current_store_exists:H$(_.current.jsonStorePath),approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_backup_written:!1,no_conflicts:!1,final_count_matches_expected:!1},j=[];if(!I.exists||!E.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:I,current_before:U,backup_after:null,current_after:U,merge:{current_items:l4(_.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:l4(_.current.jsonStorePath).items.length,final_items:U.json_items},conflicts:[],checks:{...E,no_conflicts:!0,final_count_matches_expected:!0},warnings:j,message:`No legacy knowledge JSON store found at ${_.legacy.jsonStorePath}`};let N=l4(_.current.jsonStorePath),A=l4(_.legacy.jsonStorePath),O=tR(N,A);if(E.no_conflicts=O.conflicts.length===0,O.conflicts.length>0)j.push("merge_conflicts_detected");if(!E.approval_present)j.push("write_approval_required");if(D||!E.approval_present||O.conflicts.length>0)return{ok:O.conflicts.length===0,dry_run:!0,approval_required:!E.approval_present,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.merge-backup-${EN($)}`,legacy_before:I,current_before:U,backup_after:null,current_after:null,merge:O.stats,conflicts:O.conflicts,checks:E,warnings:j,message:O.conflicts.length===0?`Dry run: would merge ${O.stats.stranded_items} legacy item(s) into ${_.current.jsonStorePath}`:`Refusing legacy merge with ${O.conflicts.length} conflict(s)`};return RH([_.current.jsonStorePath,_.legacy.jsonStorePath],()=>{let L=l4(_.current.jsonStorePath),J=l4(_.legacy.jsonStorePath),P=tR(L,J);if(E.no_conflicts=P.conflicts.length===0,P.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:l_(_.legacy),current_before:l_(_.current),backup_after:null,current_after:null,merge:P.stats,conflicts:P.conflicts,checks:E,warnings:[...j,"merge_conflicts_detected_after_lock"],message:`Refusing legacy merge with ${P.conflicts.length} conflict(s)`};if(P.stats.stranded_items===0)return P.stats.final_items=L.items.length,E.final_count_matches_expected=L.items.length===P.stats.expected_total_items,{ok:E.no_conflicts&&E.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:l_(_.legacy),current_before:l_(_.current),backup_after:null,current_after:l_(_.current),merge:P.stats,conflicts:[],checks:E,warnings:j,message:`Legacy merge already up to date for ${_.current.jsonStorePath}`};let z=`${_.legacy.home}.merge-backup-${EN($)}`;IN(CW(z),{recursive:!0}),fW(_.legacy.home,z,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});let S=j$(z),W=l_(S);if(E.legacy_backup_written=wW(l_(_.legacy),W),!E.legacy_backup_written)throw Error(`Legacy knowledge merge backup verification failed: ${z}`);_6(_.current.jsonStorePath,P.mergedStore);let X=l4(_.current.jsonStorePath);P.stats.final_items=X.items.length,E.final_count_matches_expected=X.items.length===P.stats.expected_total_items;let G=l_(_.current),R=E.legacy_backup_written&&E.no_conflicts&&E.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:z,legacy_before:I,current_before:U,backup_after:W,current_after:G,merge:P.stats,conflicts:[],checks:E,warnings:j,message:R?`Merged ${P.stats.merged_items} legacy item(s) into ${_.current.jsonStorePath}`:`Merged legacy knowledge store, but verification failed for ${_.current.jsonStorePath}`}})}function YH(_){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,_)}function uW(_){return _ instanceof Error&&/\b(EBUSY|EPERM)\b/.test(_.message)}function QH(_){let $;for(let D=0;D<8;D+=1)try{jN(_,{recursive:!0,force:!1});return}catch(I){if($=I,!uW(I))throw I;YH(50*(D+1))}throw $}function eR(_){if(!H$(_))return;let $=oR(_);if(qW(_,$.isDirectory()?448:384),!$.isDirectory())return;for(let D of xW(_))eR(R6(_,D))}function KH(_){return _==="TOMBSTONE.md"||_==="migration.json"||_==="knowledge.db"||_==="knowledge.db-shm"||_==="knowledge.db-wal"||_==="knowledge.db-journal"}function TH(_){for(let $ of xW(_)){if($==="TOMBSTONE.md"||$==="migration.json")continue;try{jN(R6(_,$),{recursive:!0,force:!1})}catch(D){if(!uW(D)||!$.startsWith("knowledge.db"))throw D}}}function FH(_,$){try{WH(_,$);return}catch(D){fW(_,$,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});try{QH(_)}catch(I){if(uW(I)){TH(_);return}throw jN($,{recursive:!0,force:!0}),I}if(D instanceof Error&&D.message.includes("EXDEV"))return}}function VH(_,$,D){if(!$.exists)return!1;if(!$.files.includes("TOMBSTONE.md")||!$.files.includes("migration.json"))return!1;if($.files.some((I)=>!KH(I)))return!1;try{let I=JSON.parse(z1(R6(_.home,"migration.json"),"utf8"));return I.new_path===D&&typeof I.backup_path==="string"}catch{return!1}}function aR(_){let $=_.now??new Date,D=_.approveWrite!==!0,I=l_(_.current),U=GH(_.current,I),E=_.approveWrite===!0&&Boolean(_.approvedBy)&&(!I.exists||U),j=l_(_.legacy,{includeSqlite:!E}),N={legacy_exists:j.exists,current_absent_or_default_scaffold:!I.exists||U,approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_is_tombstone:!1,backup_matches_legacy:!1,migrated_matches_backup:!1,tombstone_written:!1},A=[];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:I,backup_after:null,current_after:null,checks:N,warnings:A,message:`No legacy knowledge workspace found at ${_.legacy.home}`};if(N.legacy_is_tombstone=VH(_.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:R6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:I,backup_after:null,current_after:I,checks:{...N,tombstone_written:!0},warnings:A,message:`Legacy knowledge workspace already migrated to ${_.current.home}`};if(!N.current_absent_or_default_scaffold)A.push("current_workspace_contains_data");if(!N.approval_present)A.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-${EN($)}`,tombstone_path:R6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:I,backup_after:null,current_after:null,checks:N,warnings:A,message:N.current_absent_or_default_scaffold?`Dry run: would migrate ${_.legacy.home} to ${_.current.home}`:`Cannot migrate while ${_.current.home} contains data`};let O=`${_.legacy.home}.backup-${EN($)}`;IN(CW(_.current.home),{recursive:!0}),IN(CW(O),{recursive:!0}),fW(_.legacy.home,O,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0}),eR(O);let L=j$(O),J=l_(L,{includeSqlite:!1});if(N.backup_matches_legacy=wW(j,J),!N.backup_matches_legacy)throw Error(`Legacy knowledge backup verification failed: ${O}`);if(I.exists&&U)jN(_.current.home,{recursive:!0,force:!0});FH(_.legacy.home,_.current.home);let P=l_(_.current,{includeSqlite:!1});N.migrated_matches_backup=wW(J,P);let z=l_(L),S=l_(_.current),W={...z,path:_.legacy.home};IN(_.legacy.home,{recursive:!0});let X=R6(_.legacy.home,"TOMBSTONE.md");mR(X,["# Migrated OpenKnowledge Workspace","",`Migrated at: ${$.toISOString()}`,`Approved by: ${_.approvedBy}`,`New path: ${_.current.home}`,`Backup path: ${O}`,"","This directory is a diagnostic tombstone only. OpenKnowledge reads and writes the canonical .hasna/knowledge workspace.",""].join(` -`),{mode:384}),qW(X,384);let G=R6(_.legacy.home,"migration.json");mR(G,`${JSON.stringify({migrated_at:$.toISOString(),approved_by:_.approvedBy,new_path:_.current.home,backup_path:O,legacy_before:W,backup_after:z,current_after:S},null,2)} -`,{mode:384}),qW(G,384),N.tombstone_written=H$(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:O,tombstone_path:X,legacy_before:W,current_before:I,backup_after:z,current_after:S,checks:N,warnings:A,message:R?`Migrated legacy knowledge workspace to ${_.current.home}`:`Migrated legacy knowledge workspace, but verification failed for ${_.current.home}`}}import{createHash as D9}from"crypto";import{Database as BH}from"bun:sqlite";var k$="knowledge.project-registration.v1",sR="knowledge.project-resources.v1",MH=1,ND="explicit_collection_binding";class e extends Error{code;details;constructor(_,$,D={}){super($);this.code=_;this.details=D;this.name="KnowledgeProjectLinksError"}}class U9{db;tail=Promise.resolve();constructor(_){this.db=_}async get(_,$=[]){return this.db.query(_).get(...$)??null}async many(_,$=[]){return this.db.query(_).all(...$)}async run(_,$=[]){let D=this.db.query(_).run(...$);return{changes:Number(D.changes)}}transaction(_){let $=this.tail.then(async()=>{this.db.exec("BEGIN IMMEDIATE");try{let D=await _(this);return this.db.exec("COMMIT"),D}catch(D){throw this.db.exec("ROLLBACK"),D}});return this.tail=$.then(()=>{return},()=>{return}),$}}function bH(){return` + updated_at = excluded.updated_at`,[j,"wiki/README.md","Wiki",E.uri,E.hash??null,"active",JSON.stringify({artifact_key:E.key,provenance:HW(E)}),I,I]),JH(_,j,"Wiki",E,hR(),I)}}import{createHash as dR}from"crypto";import{cpSync as fW,chmodSync as qW,existsSync as H$,lstatSync as oR,mkdirSync as IN,readdirSync as xW,readFileSync as z1,renameSync as WH,rmSync as jN,writeFileSync as mR}from"fs";import{dirname as CW,join as R6,relative as PH}from"path";function vW(_,$=_){if(!H$(_))return[];let D=oR(_);if(D.isFile())return[PH($,_)||"."];if(!D.isDirectory())return[];return xW(_).flatMap((I)=>vW(R6(_,I),$)).sort()}function lR(_,$){if($.length===0)return{sha256:null,bytes:0};let D=dR("sha256"),I=0;for(let U of $){let E=R6(_,U),j=z1(E),N=dR("sha256").update(j).digest("hex");I+=j.byteLength,D.update(U),D.update("\x00"),D.update(N),D.update("\x00")}return{sha256:D.digest("hex"),bytes:I}}function zH(_){if(!H$(_))return null;let $=JSON.parse(z1(_,"utf8"));return Array.isArray($.items)?$.items.length:null}function XH(_){if(!H$(_))return{exists:!1,integrity_check:null,table_counts:{}};let $=rz(_);try{let D=$.query("PRAGMA integrity_check").get(),I=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(),E={};for(let j of U){let N=`"${j.name.replaceAll('"','""')}"`,A=$.query(`SELECT COUNT(*) AS n FROM ${N}`).get();E[j.name]=A?.n??0}return{exists:!0,integrity_check:I,table_counts:E}}finally{$.close()}}function m_(_,$={}){let D=vW(_.home),I=lR(_.home,D),U=vW(_.artifactsDir),E=lR(_.artifactsDir,U),j=H$(_.knowledgeDbPath);return{path:_.home,exists:H$(_.home),file_count:D.length,total_bytes:I.bytes,tree_sha256:I.sha256,json_items:zH(_.jsonStorePath),sqlite:$.includeSqlite===!1?{exists:j,integrity_check:null,table_counts:{}}:XH(_.knowledgeDbPath),artifacts:{exists:H$(_.artifactsDir),file_count:U.length,total_bytes:E.bytes,tree_sha256:E.sha256},files:D}}function GH(_,$){if(!$.exists)return!0;if($.files.filter((I)=>I!=="config.json").length>0)return!1;if(!$.files.includes("config.json"))return!0;try{return JSON.stringify(JSON.parse(z1(_.configPath,"utf8")))===JSON.stringify(vD())}catch{return!1}}function wW(_,$){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 EN(_){return _.toISOString().replace(/[-:]/g,"").replace(/\.\d{3}Z$/,"Z")}function rW(_){if(Array.isArray(_))return`[${_.map(rW).join(",")}]`;if(_&&typeof _==="object")return`{${Object.entries(_).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>`${JSON.stringify($)}:${rW(D)}`).join(",")}}`;return JSON.stringify(_)}function iR(_){return rW(_)}function kW(_){return typeof _.short_id==="string"&&_.short_id.trim().length>0?_.short_id:null}function l4(_){if(!H$(_))return{items:[]};let $=JSON.parse(z1(_,"utf8"));if(!$||!Array.isArray($.items))throw Error(`Invalid knowledge JSON store shape at ${_}`);return{items:$.items}}function tR(_,$){let D=new Map(_.items.map((S)=>[S.id,S])),I=new Map;for(let S of _.items){let L=I.get(S.id);if(L&&L.item.id!==S.id);I.set(S.id,{item:S,keyKind:"id",source:"current"});let P=kW(S);if(P&&!I.has(P))I.set(P,{item:S,keyKind:"short_id",source:"current"})}let U=[],E=0,j=0,N=0,A=[];for(let S of $.items){let L=D.get(S.id);if(L){if(iR(L)===iR(S))E+=1;else j+=1,U.push({type:"id_conflict",id:S.id,legacy_title:S.title,current_title:L.title});continue}let P=[{key:S.id,keyKind:"id"},...kW(S)?[{key:kW(S),keyKind:"short_id"}]:[]],z=!1;for(let{key:G,keyKind:J}of P){let W=I.get(G);if(!W)continue;if(J==="id"&&W.keyKind==="id")j+=1,U.push({type:"id_conflict",id:G,legacy_id:S.id,current_id:W.item.id,legacy_title:S.title,current_title:W.item.title});else N+=1,U.push({type:"short_id_conflict",id:G,legacy_id:S.id,current_id:W.item.id,legacy_title:S.title,current_title:W.item.title});z=!0}if(z)continue;A.push(S);for(let{key:G,keyKind:J}of P)I.set(G,{item:S,keyKind:J,source:"legacy"})}let O={items:[..._.items,...A]};return{stats:{current_items:_.items.length,legacy_items:$.items.length,duplicate_ids_identical:E,duplicate_ids_conflicting:j,short_id_conflicts:N,stranded_items:A.length,merged_items:U.length===0?A.length:0,expected_total_items:_.items.length+A.length,final_items:null},conflicts:U,mergedStore:O}}function RH(_,$){let D=[...new Set(_)].sort(),I=(U)=>{if(U>=D.length)return $();return y$(D[U],()=>I(U+1),{createParent:!0})};return I(0)}function pR(_){let $=_.now??new Date,D=_.approveWrite!==!0,I=m_(_.legacy),U=m_(_.current),E={legacy_exists:I.exists,legacy_store_exists:H$(_.legacy.jsonStorePath),current_store_exists:H$(_.current.jsonStorePath),approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_backup_written:!1,no_conflicts:!1,final_count_matches_expected:!1},j=[];if(!I.exists||!E.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:I,current_before:U,backup_after:null,current_after:U,merge:{current_items:l4(_.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:l4(_.current.jsonStorePath).items.length,final_items:U.json_items},conflicts:[],checks:{...E,no_conflicts:!0,final_count_matches_expected:!0},warnings:j,message:`No legacy knowledge JSON store found at ${_.legacy.jsonStorePath}`};let N=l4(_.current.jsonStorePath),A=l4(_.legacy.jsonStorePath),O=tR(N,A);if(E.no_conflicts=O.conflicts.length===0,O.conflicts.length>0)j.push("merge_conflicts_detected");if(!E.approval_present)j.push("write_approval_required");if(D||!E.approval_present||O.conflicts.length>0)return{ok:O.conflicts.length===0,dry_run:!0,approval_required:!E.approval_present,scope:_.scope,current_home:_.current.home,legacy_home:_.legacy.home,backup_home:`${_.legacy.home}.merge-backup-${EN($)}`,legacy_before:I,current_before:U,backup_after:null,current_after:null,merge:O.stats,conflicts:O.conflicts,checks:E,warnings:j,message:O.conflicts.length===0?`Dry run: would merge ${O.stats.stranded_items} legacy item(s) into ${_.current.jsonStorePath}`:`Refusing legacy merge with ${O.conflicts.length} conflict(s)`};return RH([_.current.jsonStorePath,_.legacy.jsonStorePath],()=>{let S=l4(_.current.jsonStorePath),L=l4(_.legacy.jsonStorePath),P=tR(S,L);if(E.no_conflicts=P.conflicts.length===0,P.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:m_(_.legacy),current_before:m_(_.current),backup_after:null,current_after:null,merge:P.stats,conflicts:P.conflicts,checks:E,warnings:[...j,"merge_conflicts_detected_after_lock"],message:`Refusing legacy merge with ${P.conflicts.length} conflict(s)`};if(P.stats.stranded_items===0)return P.stats.final_items=S.items.length,E.final_count_matches_expected=S.items.length===P.stats.expected_total_items,{ok:E.no_conflicts&&E.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:m_(_.legacy),current_before:m_(_.current),backup_after:null,current_after:m_(_.current),merge:P.stats,conflicts:[],checks:E,warnings:j,message:`Legacy merge already up to date for ${_.current.jsonStorePath}`};let z=`${_.legacy.home}.merge-backup-${EN($)}`;IN(CW(z),{recursive:!0}),fW(_.legacy.home,z,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});let G=j$(z),J=m_(G);if(E.legacy_backup_written=wW(m_(_.legacy),J),!E.legacy_backup_written)throw Error(`Legacy knowledge merge backup verification failed: ${z}`);_6(_.current.jsonStorePath,P.mergedStore);let W=l4(_.current.jsonStorePath);P.stats.final_items=W.items.length,E.final_count_matches_expected=W.items.length===P.stats.expected_total_items;let X=m_(_.current),R=E.legacy_backup_written&&E.no_conflicts&&E.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:z,legacy_before:I,current_before:U,backup_after:J,current_after:X,merge:P.stats,conflicts:[],checks:E,warnings:j,message:R?`Merged ${P.stats.merged_items} legacy item(s) into ${_.current.jsonStorePath}`:`Merged legacy knowledge store, but verification failed for ${_.current.jsonStorePath}`}})}function YH(_){Atomics.wait(new Int32Array(new SharedArrayBuffer(4)),0,0,_)}function uW(_){return _ instanceof Error&&/\b(EBUSY|EPERM)\b/.test(_.message)}function QH(_){let $;for(let D=0;D<8;D+=1)try{jN(_,{recursive:!0,force:!1});return}catch(I){if($=I,!uW(I))throw I;YH(50*(D+1))}throw $}function eR(_){if(!H$(_))return;let $=oR(_);if(qW(_,$.isDirectory()?448:384),!$.isDirectory())return;for(let D of xW(_))eR(R6(_,D))}function KH(_){return _==="TOMBSTONE.md"||_==="migration.json"||_==="knowledge.db"||_==="knowledge.db-shm"||_==="knowledge.db-wal"||_==="knowledge.db-journal"}function TH(_){for(let $ of xW(_)){if($==="TOMBSTONE.md"||$==="migration.json")continue;try{jN(R6(_,$),{recursive:!0,force:!1})}catch(D){if(!uW(D)||!$.startsWith("knowledge.db"))throw D}}}function FH(_,$){try{WH(_,$);return}catch(D){fW(_,$,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0});try{QH(_)}catch(I){if(uW(I)){TH(_);return}throw jN($,{recursive:!0,force:!0}),I}if(D instanceof Error&&D.message.includes("EXDEV"))return}}function VH(_,$,D){if(!$.exists)return!1;if(!$.files.includes("TOMBSTONE.md")||!$.files.includes("migration.json"))return!1;if($.files.some((I)=>!KH(I)))return!1;try{let I=JSON.parse(z1(R6(_.home,"migration.json"),"utf8"));return I.new_path===D&&typeof I.backup_path==="string"}catch{return!1}}function aR(_){let $=_.now??new Date,D=_.approveWrite!==!0,I=m_(_.current),U=GH(_.current,I),E=_.approveWrite===!0&&Boolean(_.approvedBy)&&(!I.exists||U),j=m_(_.legacy,{includeSqlite:!E}),N={legacy_exists:j.exists,current_absent_or_default_scaffold:!I.exists||U,approval_present:_.approveWrite===!0&&Boolean(_.approvedBy),legacy_is_tombstone:!1,backup_matches_legacy:!1,migrated_matches_backup:!1,tombstone_written:!1},A=[];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:I,backup_after:null,current_after:null,checks:N,warnings:A,message:`No legacy knowledge workspace found at ${_.legacy.home}`};if(N.legacy_is_tombstone=VH(_.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:R6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:I,backup_after:null,current_after:I,checks:{...N,tombstone_written:!0},warnings:A,message:`Legacy knowledge workspace already migrated to ${_.current.home}`};if(!N.current_absent_or_default_scaffold)A.push("current_workspace_contains_data");if(!N.approval_present)A.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-${EN($)}`,tombstone_path:R6(_.legacy.home,"TOMBSTONE.md"),legacy_before:j,current_before:I,backup_after:null,current_after:null,checks:N,warnings:A,message:N.current_absent_or_default_scaffold?`Dry run: would migrate ${_.legacy.home} to ${_.current.home}`:`Cannot migrate while ${_.current.home} contains data`};let O=`${_.legacy.home}.backup-${EN($)}`;IN(CW(_.current.home),{recursive:!0}),IN(CW(O),{recursive:!0}),fW(_.legacy.home,O,{recursive:!0,force:!1,errorOnExist:!0,preserveTimestamps:!0}),eR(O);let S=j$(O),L=m_(S,{includeSqlite:!1});if(N.backup_matches_legacy=wW(j,L),!N.backup_matches_legacy)throw Error(`Legacy knowledge backup verification failed: ${O}`);if(I.exists&&U)jN(_.current.home,{recursive:!0,force:!0});FH(_.legacy.home,_.current.home);let P=m_(_.current,{includeSqlite:!1});N.migrated_matches_backup=wW(L,P);let z=m_(S),G=m_(_.current),J={...z,path:_.legacy.home};IN(_.legacy.home,{recursive:!0});let W=R6(_.legacy.home,"TOMBSTONE.md");mR(W,["# Migrated OpenKnowledge Workspace","",`Migrated at: ${$.toISOString()}`,`Approved by: ${_.approvedBy}`,`New path: ${_.current.home}`,`Backup path: ${O}`,"","This directory is a diagnostic tombstone only. OpenKnowledge reads and writes the canonical .hasna/knowledge workspace.",""].join(` +`),{mode:384}),qW(W,384);let X=R6(_.legacy.home,"migration.json");mR(X,`${JSON.stringify({migrated_at:$.toISOString(),approved_by:_.approvedBy,new_path:_.current.home,backup_path:O,legacy_before:J,backup_after:z,current_after:G},null,2)} +`,{mode:384}),qW(X,384),N.tombstone_written=H$(W);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:O,tombstone_path:W,legacy_before:J,current_before:I,backup_after:z,current_after:G,checks:N,warnings:A,message:R?`Migrated legacy knowledge workspace to ${_.current.home}`:`Migrated legacy knowledge workspace, but verification failed for ${_.current.home}`}}import{createHash as D9}from"crypto";import{Database as BH}from"bun:sqlite";var k$="knowledge.project-registration.v1",sR="knowledge.project-resources.v1",MH=1,ND="explicit_collection_binding";class a extends Error{code;details;constructor(_,$,D={}){super($);this.code=_;this.details=D;this.name="KnowledgeProjectLinksError"}}class U9{db;tail=Promise.resolve();closed=!1;constructor(_){this.db=_}async close(){if(await this.tail,this.closed)return;this.closed=!0,this.db.close()}async get(_,$=[]){return this.db.query(_).get(...$)??null}async many(_,$=[]){return this.db.query(_).all(...$)}async run(_,$=[]){let D=this.db.query(_).run(...$);return{changes:Number(D.changes)}}transaction(_){let $=this.tail.then(async()=>{this.db.exec("BEGIN IMMEDIATE");try{let D=await _(this);return this.db.exec("COMMIT"),D}catch(D){throw this.db.exec("ROLLBACK"),D}});return this.tail=$.then(()=>{return},()=>{return}),$}}function bH(){return` PRAGMA foreign_keys = ON; CREATE TABLE IF NOT EXISTS knowledge_projects ( authority_id TEXT NOT NULL, @@ -1331,13 +1331,13 @@ Pages should be concise, cited, and organized for both humans and agents. $$`,`DROP TRIGGER IF EXISTS knowledge_project_link_receipts_immutable ON knowledge_project_link_receipts`,`CREATE TRIGGER knowledge_project_link_receipts_immutable BEFORE UPDATE OR DELETE ON knowledge_project_link_receipts - FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()`]}function yW(_){if(Array.isArray(_))return _.map(yW);if(_&&typeof _==="object")return Object.fromEntries(Object.entries(_).filter(([,$])=>$!==void 0).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>[$,yW(D)]));return _}function gD(_){return JSON.stringify(yW(_))}function v_(_){return D9("sha256").update(gD(_)).digest("hex")}function NN(_){let $=D9("sha256").update(_).digest("hex").slice(0,32).split("");$[12]="5",$[16]=(Number.parseInt($[16],16)&3|8).toString(16);let D=$.join("");return`${D.slice(0,8)}-${D.slice(8,12)}-${D.slice(12,16)}-${D.slice(16,20)}-${D.slice(20)}`}function k_(_,$){if(typeof _!=="string"||_.trim().length===0)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT",`${$} must be a non-empty string.`);return _.trim()}function ZH(_){let $=_??100;if(!Number.isInteger($)||$<1||$>200)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","limit must be an integer between 1 and 200.");return $}function HH(_){let $=["project","collection","item","taxonomy"];if(!_||_.length===0)return $;let D=[...new Set(_)];for(let I of D)if(!$.includes(I))throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT",`unsupported project resource kind: ${I}`);return D.sort((I,U)=>$.indexOf(I)-$.indexOf(U))}function _9(_){return{receipt_id:_.receipt_id,authority:"knowledge",route:k$,package_version:_.package_version,authority_id:_.authority_id,tenant_id:_.tenant_id,corpus_id:_.corpus_id,operation_id:_.operation_id,step_id:_.step_id,action:_.action,resource_kind:_.resource_kind,direction:_.direction,idempotency_key:_.idempotency_key,request_digest:_.request_digest,precondition_digest:_.precondition_digest,outcome:_.outcome,reason:_.reason,source_project_id:_.source_project_id,project_id:_.project_id,collection_id:_.collection_id,item_id:_.item_id,result_revision:_.result_revision,result_digest:_.result_digest,accepted_receipt_id:_.accepted_receipt_id,created_by_operation:Number(_.created_by_operation)===1,created_at:_.created_at}}function $9(_){let $={source_project_id:_.source_project_id,project_id:_.project_id,project_slug:_.project_slug,project_name:_.project_name,collection_id:_.collection_id,collection_slug:_.collection_slug,collection_name:_.collection_name,membership_rule:ND,revision:`r${Number(_.revision)}`,created_at:_.created_at,updated_at:_.updated_at};return{...$,digest:v_($)}}function gN(_){return[_.receipt_id,_.authority,_.route,_.package_version,_.authority_id,_.tenant_id,_.corpus_id,_.operation_id,_.step_id,_.action,_.resource_kind,_.direction,_.idempotency_key,_.request_digest,_.precondition_digest,_.outcome,_.reason,_.source_project_id,_.project_id,_.collection_id,_.item_id,_.result_revision,_.result_digest,_.accepted_receipt_id,_.created_by_operation?1:0,_.created_at]}var AN=`INSERT INTO knowledge_project_link_receipts ( + FOR EACH ROW EXECUTE FUNCTION knowledge_project_link_receipts_immutable()`]}function yW(_){if(Array.isArray(_))return _.map(yW);if(_&&typeof _==="object")return Object.fromEntries(Object.entries(_).filter(([,$])=>$!==void 0).sort(([$],[D])=>$.localeCompare(D)).map(([$,D])=>[$,yW(D)]));return _}function gD(_){return JSON.stringify(yW(_))}function v_(_){return D9("sha256").update(gD(_)).digest("hex")}function NN(_){let $=D9("sha256").update(_).digest("hex").slice(0,32).split("");$[12]="5",$[16]=(Number.parseInt($[16],16)&3|8).toString(16);let D=$.join("");return`${D.slice(0,8)}-${D.slice(8,12)}-${D.slice(12,16)}-${D.slice(16,20)}-${D.slice(20)}`}function k_(_,$){if(typeof _!=="string"||_.trim().length===0)throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT",`${$} must be a non-empty string.`);return _.trim()}function ZH(_){let $=_??100;if(!Number.isInteger($)||$<1||$>200)throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","limit must be an integer between 1 and 200.");return $}function HH(_){let $=["project","collection","item","taxonomy"];if(!_||_.length===0)return $;let D=[...new Set(_)];for(let I of D)if(!$.includes(I))throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT",`unsupported project resource kind: ${I}`);return D.sort((I,U)=>$.indexOf(I)-$.indexOf(U))}function _9(_){return{receipt_id:_.receipt_id,authority:"knowledge",route:k$,package_version:_.package_version,authority_id:_.authority_id,tenant_id:_.tenant_id,corpus_id:_.corpus_id,operation_id:_.operation_id,step_id:_.step_id,action:_.action,resource_kind:_.resource_kind,direction:_.direction,idempotency_key:_.idempotency_key,request_digest:_.request_digest,precondition_digest:_.precondition_digest,outcome:_.outcome,reason:_.reason,source_project_id:_.source_project_id,project_id:_.project_id,collection_id:_.collection_id,item_id:_.item_id,result_revision:_.result_revision,result_digest:_.result_digest,accepted_receipt_id:_.accepted_receipt_id,created_by_operation:Number(_.created_by_operation)===1,created_at:_.created_at}}function $9(_){let $={source_project_id:_.source_project_id,project_id:_.project_id,project_slug:_.project_slug,project_name:_.project_name,collection_id:_.collection_id,collection_slug:_.collection_slug,collection_name:_.collection_name,membership_rule:ND,revision:`r${Number(_.revision)}`,created_at:_.created_at,updated_at:_.updated_at};return{...$,digest:v_($)}}function gN(_){return[_.receipt_id,_.authority,_.route,_.package_version,_.authority_id,_.tenant_id,_.corpus_id,_.operation_id,_.step_id,_.action,_.resource_kind,_.direction,_.idempotency_key,_.request_digest,_.precondition_digest,_.outcome,_.reason,_.source_project_id,_.project_id,_.collection_id,_.item_id,_.result_revision,_.result_digest,_.accepted_receipt_id,_.created_by_operation?1:0,_.created_at]}var AN=`INSERT INTO knowledge_project_link_receipts ( receipt_id, authority, route, package_version, authority_id, tenant_id, corpus_id, operation_id, step_id, action, resource_kind, direction, idempotency_key, request_digest, precondition_digest, outcome, reason, source_project_id, project_id, collection_id, item_id, result_revision, result_digest, accepted_receipt_id, created_by_operation, created_at -) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;class E9{sql;itemResolver;options;identity;now;constructor(_,$,D){this.sql=_;this.itemResolver=$;this.options=D;this.identity={authority_id:k_(D.authorityId,"authority_id"),tenant_id:k_(D.tenantId,"tenant_id"),corpus_id:k_(D.corpusId,"corpus_id")},this.now=D.now??(()=>new Date().toISOString())}capabilityValue(){return{authority:"knowledge",route:k$,resource_route:sR,package_version:this.options.packageVersion,schema_version:MH,...this.identity,registration_resource:"collection",supported_resources:["project","collection","item","taxonomy"],stable_project_ids:!0,stable_collection_ids:!0,explicit_membership:!0,membership_rule:ND,later_child_binding_required:!0,bind_existing_items:!0,immutable_receipts:!0,exact_terminal_lookup:!0,exact_readback:!0,conditional_inverse:!0,complete_keyset_pagination:!0,revision_bound_cursors:!0}}async capability(){return this.capabilityValue()}assertIdentity(_){let $=this.capabilityValue();if(_.authority_route!==$.route||_.package_version!==$.package_version||_.authority_id!==$.authority_id||_.tenant_id!==$.tenant_id||_.corpus_id!==$.corpus_id)throw new e("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH","request does not match the current Knowledge project-registration capability identity.")}stableProjectId(_){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${_}`)}stableCollectionId(_,$){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${_}\x00${$}`)}stableReceiptId(_,$,D,I){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${_}\x00${$}\x00${D}\x00${I}`)}async getAggregateBySource(_,$){return _.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, +) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)`;class E9{sql;itemResolver;options;identity;now;constructor(_,$,D){this.sql=_;this.itemResolver=$;this.options=D;this.identity={authority_id:k_(D.authorityId,"authority_id"),tenant_id:k_(D.tenantId,"tenant_id"),corpus_id:k_(D.corpusId,"corpus_id")},this.now=D.now??(()=>new Date().toISOString())}async close(){await this.sql.close()}capabilityValue(){return{authority:"knowledge",route:k$,resource_route:sR,package_version:this.options.packageVersion,schema_version:MH,...this.identity,registration_resource:"collection",supported_resources:["project","collection","item","taxonomy"],stable_project_ids:!0,stable_collection_ids:!0,explicit_membership:!0,membership_rule:ND,later_child_binding_required:!0,bind_existing_items:!0,immutable_receipts:!0,exact_terminal_lookup:!0,exact_readback:!0,conditional_inverse:!0,complete_keyset_pagination:!0,revision_bound_cursors:!0}}async capability(){return this.capabilityValue()}assertIdentity(_){let $=this.capabilityValue();if(_.authority_route!==$.route||_.package_version!==$.package_version||_.authority_id!==$.authority_id||_.tenant_id!==$.tenant_id||_.corpus_id!==$.corpus_id)throw new a("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH","request does not match the current Knowledge project-registration capability identity.")}stableProjectId(_){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00project\x00${_}`)}stableCollectionId(_,$){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00collection\x00${_}\x00${$}`)}stableReceiptId(_,$,D,I){return NN(`${this.identity.authority_id}\x00${this.identity.tenant_id}\x00${this.identity.corpus_id}\x00receipt\x00${_}\x00${$}\x00${D}\x00${I}`)}async getAggregateBySource(_,$){return _.get(`SELECT p.source_project_id, p.project_id, p.project_slug, p.project_name, c.collection_id, c.collection_slug, c.collection_name, c.membership_rule, c.revision, c.created_at, c.updated_at FROM knowledge_projects p @@ -1369,15 +1369,21 @@ Pages should be concise, cited, and organized for both humans and agents. WHERE p.authority_id = ? AND p.tenant_id = ? AND p.corpus_id = ? AND (p.source_project_id = ? OR p.project_id = ?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,$])}async getReceiptByAttempt(_,$){let D=await _.get(`SELECT * FROM knowledge_project_link_receipts WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? - AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.operation_id,$.step_id,$.action,$.direction]);return D?_9(D):null}assertIdempotent(_,$){if(_.idempotency_key!==$.idempotency_key||$.request_digest!==void 0&&_.request_digest!==$.request_digest||$.precondition_digest!==void 0&&_.precondition_digest!==$.precondition_digest)throw new e("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH","operation and step identity are already bound to a different Knowledge project-link request.",{receipt_id:_.receipt_id})}async registerCollection(_){if(this.assertIdentity(_),_.resource_kind!=="collection"||_.direction!=="forward")throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","collection registration requires resource_kind=collection and direction=forward.");let $=k_(_.project_id,"project_id"),D=k_(_.project_slug,"project_slug"),I=k_(_.project_name,"project_name");if(k_(_.target_selector,"target_selector")!==$)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","target_selector must equal the exact source project id.");let E=k_(_.desired.collection_slug??`${D}-knowledge`,"desired.collection_slug"),j=k_(_.desired.collection_name??`${I} Knowledge`,"desired.collection_name"),N=v_({action:"register_collection",source_project_id:$,project_slug:D,project_name:I,collection_slug:E,collection_name:j,membership_rule:ND});if(_.request_digest!==N)throw new e("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH","request_digest does not bind the normalized collection-registration request.",{expected_request_digest:N});return this.sql.transaction(async(A)=>{let O=await this.getReceiptByAttempt(A,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"forward"});if(O)return this.assertIdempotent(O,_),O;let L=await this.getAggregateBySource(A,$),J=L===null;if(!L){let S=this.now(),W=this.stableProjectId($),X=this.stableCollectionId($,E);await A.run(`INSERT INTO knowledge_projects ( + AND operation_id = ? AND step_id = ? AND action = ? AND direction = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.operation_id,$.step_id,$.action,$.direction]);return D?_9(D):null}assertIdempotent(_,$){if(_.idempotency_key!==$.idempotency_key||$.request_digest!==void 0&&_.request_digest!==$.request_digest||$.precondition_digest!==void 0&&_.precondition_digest!==$.precondition_digest||$.accepted_receipt_id!==void 0&&_.accepted_receipt_id!==$.accepted_receipt_id)throw new a("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH","operation and step identity are already bound to a different Knowledge project-link request.",{receipt_id:_.receipt_id})}async registerCollection(_){if(this.assertIdentity(_),_.resource_kind!=="collection"||_.direction!=="forward")throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","collection registration requires resource_kind=collection and direction=forward.");let $=k_(_.project_id,"project_id"),D=k_(_.project_slug,"project_slug"),I=k_(_.project_name,"project_name");if(k_(_.target_selector,"target_selector")!==$)throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","target_selector must equal the exact source project id.");let E=k_(_.desired.collection_slug??`${D}-knowledge`,"desired.collection_slug"),j=k_(_.desired.collection_name??`${I} Knowledge`,"desired.collection_name"),N=v_({action:"register_collection",source_project_id:$,project_slug:D,project_name:I,collection_slug:E,collection_name:j,membership_rule:ND});if(_.request_digest!==N)throw new a("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH","request_digest does not bind the normalized collection-registration request.",{expected_request_digest:N});return this.sql.transaction(async(A)=>{let O=await this.getReceiptByAttempt(A,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"forward"});if(O)return this.assertIdempotent(O,_),O;let S=await this.getAggregateBySource(A,$),L=S===null;if(!S){let G=this.now(),J=this.stableProjectId($),W=this.stableCollectionId($,E);await A.run(`INSERT INTO knowledge_projects ( authority_id, tenant_id, corpus_id, source_project_id, project_id, project_slug, project_name, created_at, updated_at - ) VALUES (?,?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,W,D,I,S,S]),await A.run(`INSERT INTO knowledge_project_collections ( + ) VALUES (?,?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,J,D,I,G,G]),await A.run(`INSERT INTO knowledge_project_collections ( authority_id, tenant_id, corpus_id, collection_id, project_id, collection_slug, collection_name, membership_rule, revision, created_at, updated_at - ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,X,W,E,j,ND,1,S,S]),L=await this.getAggregateByCollection(A,X)}else if(L.project_slug!==D||L.project_name!==I||L.collection_slug!==E||L.collection_name!==j||L.membership_rule!==ND)throw new e("KNOWLEDGE_PROJECT_LINKS_CONFLICT","the source project is already bound to a different Knowledge collection aggregate.",{source_project_id:$,collection_id:L.collection_id});if(!L)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","collection registration committed but exact aggregate readback was unavailable.");let P=$9(L),z={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"register_collection","forward"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",resource_kind:"collection",direction:"forward",idempotency_key:k_(_.idempotency_key,"idempotency_key"),request_digest:_.request_digest,precondition_digest:k_(_.precondition_digest,"precondition_digest"),outcome:"accepted",reason:J?null:"adopted_existing_collection",source_project_id:P.source_project_id,project_id:P.project_id,collection_id:P.collection_id,item_id:null,result_revision:P.revision,result_digest:P.digest,accepted_receipt_id:null,created_by_operation:J,created_at:this.now()};return await A.run(AN,gN(z)),z})}async readCollection(_){let $=await this.getAggregateByCollection(this.sql,k_(_,"collection_id"));if(!$)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection was not found by exact id.");return $9($)}async lookupReceipt(_){if(_.max_items!==1)throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","exact terminal receipt lookup requires max_items=1.");if(_.authority_id!==this.identity.authority_id||_.tenant_id!==this.identity.tenant_id||_.corpus_id!==this.identity.corpus_id)throw new e("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH","receipt lookup does not match this authority identity.");let $=await this.getReceiptByAttempt(this.sql,_);if(!$||$.idempotency_key!==_.idempotency_key)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","exact Knowledge project-link receipt was not found.");return $}async receiptById(_,$){let D=await _.get(`SELECT * FROM knowledge_project_link_receipts - WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`,[$,this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id]);return D?_9(D):null}assertInverseIdentity(_){this.assertIdentity(_),k_(_.accepted_receipt_id,"accepted_receipt_id"),k_(_.idempotency_key,"idempotency_key")}async compensateRegistration(_){return this.assertInverseIdentity(_),this.sql.transaction(async($)=>{let D=await this.getReceiptByAttempt($,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"inverse"});if(D)return this.assertIdempotent(D,_),D;let I=await this.receiptById($,_.accepted_receipt_id);if(!I||I.action!=="register_collection"||I.direction!=="forward"||I.outcome!=="accepted")throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted collection-registration receipt was not found.");let U=I.collection_id?await this.getAggregateByCollection($,I.collection_id):null,E="accepted",j=null;if(!I.created_by_operation)E="terminal_nonacceptance",j="adopted_collection_is_not_inverse_owned";else if(!U)E="terminal_nonacceptance",j="accepted_collection_is_already_absent";else{let O=await $.get(`SELECT COUNT(*) AS count + ) VALUES (?,?,?,?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,W,J,E,j,ND,1,G,G]),S=await this.getAggregateByCollection(A,W)}else if(S.project_slug!==D||S.project_name!==I||S.collection_slug!==E||S.collection_name!==j||S.membership_rule!==ND)throw new a("KNOWLEDGE_PROJECT_LINKS_CONFLICT","the source project is already bound to a different Knowledge collection aggregate.",{source_project_id:$,collection_id:S.collection_id});if(!S)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","collection registration committed but exact aggregate readback was unavailable.");let P=$9(S),z={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"register_collection","forward"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",resource_kind:"collection",direction:"forward",idempotency_key:k_(_.idempotency_key,"idempotency_key"),request_digest:_.request_digest,precondition_digest:k_(_.precondition_digest,"precondition_digest"),outcome:"accepted",reason:L?null:"adopted_existing_collection",source_project_id:P.source_project_id,project_id:P.project_id,collection_id:P.collection_id,item_id:null,result_revision:P.revision,result_digest:P.digest,accepted_receipt_id:null,created_by_operation:L,created_at:this.now()};return await A.run(AN,gN(z)),z})}async readCollection(_){let $=await this.getAggregateByCollection(this.sql,k_(_,"collection_id"));if(!$)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection was not found by exact id.");return $9($)}async lookupReceipt(_){if(_.max_items!==1)throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","exact terminal receipt lookup requires max_items=1.");if(_.authority_id!==this.identity.authority_id||_.tenant_id!==this.identity.tenant_id||_.corpus_id!==this.identity.corpus_id)throw new a("KNOWLEDGE_PROJECT_LINKS_CAPABILITY_MISMATCH","receipt lookup does not match this authority identity.");let $=await this.getReceiptByAttempt(this.sql,_);if(!$||$.idempotency_key!==_.idempotency_key)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","exact Knowledge project-link receipt was not found.");return $}async receiptById(_,$){let D=await _.get(`SELECT * FROM knowledge_project_link_receipts + WHERE receipt_id = ? AND authority_id = ? AND tenant_id = ? AND corpus_id = ?`,[$,this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id]);return D?_9(D):null}async hasOtherAcceptedForwardReceipt(_,$){let D=$.action==="bind_item"?"AND item_id = ?":"AND item_id IS NULL";return await _.get(`SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${D} + LIMIT 1`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.action,$.collection_id,$.receipt_id,...$.action==="bind_item"?[$.item_id]:[]])!==null}assertInverseIdentity(_){this.assertIdentity(_),k_(_.accepted_receipt_id,"accepted_receipt_id"),k_(_.idempotency_key,"idempotency_key")}async compensateRegistration(_){return this.assertInverseIdentity(_),this.sql.transaction(async($)=>{let D=await this.getReceiptByAttempt($,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"inverse"});if(D)return this.assertIdempotent(D,_),D;let I=await this.receiptById($,_.accepted_receipt_id);if(!I||I.action!=="register_collection"||I.direction!=="forward"||I.outcome!=="accepted")throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted collection-registration receipt was not found.");let U=I.collection_id?await this.getAggregateByCollection($,I.collection_id):null,E="accepted",j=null;if(!I.created_by_operation)E="terminal_nonacceptance",j="adopted_collection_is_not_inverse_owned";else if(!U)E="terminal_nonacceptance",j="accepted_collection_is_already_absent";else if(await this.hasOtherAcceptedForwardReceipt($,I))E="terminal_nonacceptance",j="collection_has_later_accepted_adopter";else{let O=await $.get(`SELECT COUNT(*) AS count FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.collection_id]);if(Number(O?.count??0)>0)E="terminal_nonacceptance",j="collection_has_bound_items";else await $.run(`DELETE FROM knowledge_project_collections WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.collection_id]),await $.run(`DELETE FROM knowledge_projects @@ -1388,30 +1394,30 @@ Pages should be concise, cited, and organized for both humans and agents. AND c.tenant_id = knowledge_projects.tenant_id AND c.corpus_id = knowledge_projects.corpus_id AND c.project_id = knowledge_projects.project_id - )`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.project_id])}let N={accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,absent:E==="accepted"},A={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"register_collection","inverse"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",resource_kind:"collection",direction:"inverse",idempotency_key:_.idempotency_key,request_digest:v_({accepted_receipt_id:I.receipt_id,collection_id:I.collection_id}),precondition_digest:I.result_digest??"",outcome:E,reason:j,source_project_id:I.source_project_id,project_id:I.project_id,collection_id:I.collection_id,item_id:null,result_revision:E==="accepted"?"absent":I.result_revision,result_digest:v_(N),accepted_receipt_id:I.receipt_id,created_by_operation:!1,created_at:this.now()};return await $.run(AN,gN(A)),A})}async verifyRegistrationInverse(_){this.assertInverseIdentity(_);let $=await this.getReceiptByAttempt(this.sql,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"inverse"});if(!$||$.outcome!=="accepted"||$.accepted_receipt_id!==_.accepted_receipt_id)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted collection inverse receipt was not found.");if($.collection_id?await this.getAggregateByCollection(this.sql,$.collection_id):null)throw new e("KNOWLEDGE_PROJECT_LINKS_CONFLICT","collection inverse verification found the target still present.");return{accepted_receipt_id:_.accepted_receipt_id,target_id:$.collection_id,absent:!0,digest:$.result_digest}}async bindItem(_){if(this.assertIdentity(_),_.direction!=="forward")throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","item binding requires direction=forward.");let $=k_(_.collection_id,"collection_id"),D=k_(_.item_id,"item_id"),I=await this.itemResolver(D);if(!I||I.id!==D)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","bind-existing requires an exact existing Knowledge item id.",{item_id:D});let U=v_({action:"bind_item",collection_id:$,item_id:D});if(_.request_digest!==U)throw new e("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH","request_digest does not bind the normalized item-membership request.",{expected_request_digest:U});return this.sql.transaction(async(E)=>{let j=await this.getReceiptByAttempt(E,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"forward"});if(j)return this.assertIdempotent(j,_),j;if(!await this.getAggregateByCollection(E,$))throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection was not found by exact id.");let A=await E.get(`SELECT * FROM knowledge_project_collection_memberships + )`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,U.project_id])}let N={accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,absent:E==="accepted"},A={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"register_collection","inverse"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",resource_kind:"collection",direction:"inverse",idempotency_key:_.idempotency_key,request_digest:v_({accepted_receipt_id:I.receipt_id,collection_id:I.collection_id}),precondition_digest:I.result_digest??"",outcome:E,reason:j,source_project_id:I.source_project_id,project_id:I.project_id,collection_id:I.collection_id,item_id:null,result_revision:E==="accepted"?"absent":I.result_revision,result_digest:v_(N),accepted_receipt_id:I.receipt_id,created_by_operation:!1,created_at:this.now()};return await $.run(AN,gN(A)),A})}async verifyRegistrationInverse(_){this.assertInverseIdentity(_);let $=await this.getReceiptByAttempt(this.sql,{operation_id:_.operation_id,step_id:_.step_id,action:"register_collection",direction:"inverse"});if(!$||$.outcome!=="accepted"||$.accepted_receipt_id!==_.accepted_receipt_id)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted collection inverse receipt was not found.");if($.collection_id?await this.getAggregateByCollection(this.sql,$.collection_id):null)throw new a("KNOWLEDGE_PROJECT_LINKS_CONFLICT","collection inverse verification found the target still present.");return{accepted_receipt_id:_.accepted_receipt_id,target_id:$.collection_id,absent:!0,digest:$.result_digest}}async bindItem(_){if(this.assertIdentity(_),_.direction!=="forward")throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","item binding requires direction=forward.");let $=k_(_.collection_id,"collection_id"),D=k_(_.item_id,"item_id"),I=await this.itemResolver(D);if(!I||I.id!==D)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","bind-existing requires an exact existing Knowledge item id.",{item_id:D});let U=v_({action:"bind_item",collection_id:$,item_id:D});if(_.request_digest!==U)throw new a("KNOWLEDGE_PROJECT_LINKS_DIGEST_MISMATCH","request_digest does not bind the normalized item-membership request.",{expected_request_digest:U});return this.sql.transaction(async(E)=>{let j=await this.getReceiptByAttempt(E,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"forward"});if(j)return this.assertIdempotent(j,_),j;if(!await this.getAggregateByCollection(E,$))throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection was not found by exact id.");let A=await E.get(`SELECT * FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? - AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,D]),O=A===null,L=this.now(),J=this.stableReceiptId(_.operation_id,_.step_id,"bind_item","forward");if(!A)await E.run(`INSERT INTO knowledge_project_collection_memberships ( + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,D]),O=A===null,S=this.now(),L=this.stableReceiptId(_.operation_id,_.step_id,"bind_item","forward");if(!A)await E.run(`INSERT INTO knowledge_project_collection_memberships ( authority_id, tenant_id, corpus_id, collection_id, item_id, bound_receipt_id, created_by_operation, bound_at - ) VALUES (?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,D,J,1,L]),await E.run(`UPDATE knowledge_project_collections + ) VALUES (?,?,?,?,?,?,?,?)`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$,D,L,1,S]),await E.run(`UPDATE knowledge_project_collections SET revision = revision + 1, updated_at = ? - WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[L,this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$]);let P=await this.getAggregateByCollection(E,$);if(!P)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","item binding committed but collection readback was unavailable.");let z={collection_id:$,item_id:D,collection_revision:`r${Number(P.revision)}`,item_revision:`v${I.version??1}`},S={receipt_id:J,authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",resource_kind:"item",direction:"forward",idempotency_key:k_(_.idempotency_key,"idempotency_key"),request_digest:_.request_digest,precondition_digest:k_(_.precondition_digest,"precondition_digest"),outcome:"accepted",reason:O?null:"adopted_existing_membership",source_project_id:P.source_project_id,project_id:P.project_id,collection_id:$,item_id:D,result_revision:z.collection_revision,result_digest:v_(z),accepted_receipt_id:null,created_by_operation:O,created_at:L};return await E.run(AN,gN(S)),S})}async readItemBinding(_,$){let D=await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[S,this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$]);let P=await this.getAggregateByCollection(E,$);if(!P)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","item binding committed but collection readback was unavailable.");let z={collection_id:$,item_id:D,collection_revision:`r${Number(P.revision)}`,item_revision:`v${I.version??1}`},G={receipt_id:L,authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",resource_kind:"item",direction:"forward",idempotency_key:k_(_.idempotency_key,"idempotency_key"),request_digest:_.request_digest,precondition_digest:k_(_.precondition_digest,"precondition_digest"),outcome:"accepted",reason:O?null:"adopted_existing_membership",source_project_id:P.source_project_id,project_id:P.project_id,collection_id:$,item_id:D,result_revision:z.collection_revision,result_digest:v_(z),accepted_receipt_id:null,created_by_operation:O,created_at:S};return await E.run(AN,gN(G)),G})}async readItemBinding(_,$){let D=await this.sql.get(`SELECT * FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? - AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,k_(_,"collection_id"),k_($,"item_id")]);if(!D)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection membership was not found by exact ids.");let I=await this.getAggregateByCollection(this.sql,_);if(!I)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","membership exists without its collection aggregate.");let U={collection_id:_,item_id:$,revision:`r${Number(I.revision)}`,bound_at:D.bound_at};return{...U,digest:v_(U)}}async compensateItemBinding(_){return this.assertInverseIdentity(_),this.sql.transaction(async($)=>{let D=await this.getReceiptByAttempt($,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"inverse"});if(D)return this.assertIdempotent(D,_),D;let I=await this.receiptById($,_.accepted_receipt_id);if(!I||I.action!=="bind_item"||I.direction!=="forward"||I.outcome!=="accepted")throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted item-binding receipt was not found.");let U="accepted",E=null,j=await $.get(`SELECT * FROM knowledge_project_collection_memberships + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,k_(_,"collection_id"),k_($,"item_id")]);if(!D)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge collection membership was not found by exact ids.");let I=await this.getAggregateByCollection(this.sql,_);if(!I)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","membership exists without its collection aggregate.");let U={collection_id:_,item_id:$,revision:`r${Number(I.revision)}`,bound_at:D.bound_at};return{...U,digest:v_(U)}}async compensateItemBinding(_){return this.assertInverseIdentity(_),this.sql.transaction(async($)=>{let D=await this.getReceiptByAttempt($,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"inverse"});if(D)return this.assertIdempotent(D,_),D;let I=await this.receiptById($,_.accepted_receipt_id);if(!I||I.action!=="bind_item"||I.direction!=="forward"||I.outcome!=="accepted")throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted item-binding receipt was not found.");let U="accepted",E=null,j=await $.get(`SELECT * FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? - AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id,I.item_id]);if(!I.created_by_operation)U="terminal_nonacceptance",E="adopted_membership_is_not_inverse_owned";else if(!j)U="terminal_nonacceptance",E="accepted_membership_is_already_absent";else if(j.bound_receipt_id!==I.receipt_id||Number(j.created_by_operation)!==1)U="terminal_nonacceptance",E="membership_is_owned_by_a_different_receipt";else await $.run(`DELETE FROM knowledge_project_collection_memberships + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id,I.item_id]);if(!I.created_by_operation)U="terminal_nonacceptance",E="adopted_membership_is_not_inverse_owned";else if(!j)U="terminal_nonacceptance",E="accepted_membership_is_already_absent";else if(await this.hasOtherAcceptedForwardReceipt($,I))U="terminal_nonacceptance",E="membership_has_later_accepted_adopter";else if(j.bound_receipt_id!==I.receipt_id||Number(j.created_by_operation)!==1)U="terminal_nonacceptance",E="membership_is_owned_by_a_different_receipt";else await $.run(`DELETE FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? AND item_id = ? AND bound_receipt_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id,I.item_id,I.receipt_id]),await $.run(`UPDATE knowledge_project_collections SET revision = revision + 1, updated_at = ? - WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.now(),this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id]);let N=I.collection_id?await this.getAggregateByCollection($,I.collection_id):null,A={accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,item_id:I.item_id,absent:U==="accepted"},O={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"bind_item","inverse"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",resource_kind:"item",direction:"inverse",idempotency_key:_.idempotency_key,request_digest:v_({accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,item_id:I.item_id}),precondition_digest:I.result_digest??"",outcome:U,reason:E,source_project_id:I.source_project_id,project_id:I.project_id,collection_id:I.collection_id,item_id:I.item_id,result_revision:U==="accepted"&&N?`r${Number(N.revision)}`:I.result_revision,result_digest:v_(A),accepted_receipt_id:I.receipt_id,created_by_operation:!1,created_at:this.now()};return await $.run(AN,gN(O)),O})}async verifyItemBindingInverse(_){this.assertInverseIdentity(_);let $=await this.getReceiptByAttempt(this.sql,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"inverse"});if(!$||$.outcome!=="accepted"||$.accepted_receipt_id!==_.accepted_receipt_id)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted item-binding inverse receipt was not found.");if(await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ?`,[this.now(),this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,I.collection_id]);let N=I.collection_id?await this.getAggregateByCollection($,I.collection_id):null,A={accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,item_id:I.item_id,absent:U==="accepted"},O={receipt_id:this.stableReceiptId(_.operation_id,_.step_id,"bind_item","inverse"),authority:"knowledge",route:k$,package_version:this.options.packageVersion,...this.identity,operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",resource_kind:"item",direction:"inverse",idempotency_key:_.idempotency_key,request_digest:v_({accepted_receipt_id:I.receipt_id,collection_id:I.collection_id,item_id:I.item_id}),precondition_digest:I.result_digest??"",outcome:U,reason:E,source_project_id:I.source_project_id,project_id:I.project_id,collection_id:I.collection_id,item_id:I.item_id,result_revision:U==="accepted"&&N?`r${Number(N.revision)}`:I.result_revision,result_digest:v_(A),accepted_receipt_id:I.receipt_id,created_by_operation:!1,created_at:this.now()};return await $.run(AN,gN(O)),O})}async verifyItemBindingInverse(_){this.assertInverseIdentity(_);let $=await this.getReceiptByAttempt(this.sql,{operation_id:_.operation_id,step_id:_.step_id,action:"bind_item",direction:"inverse"});if(!$||$.outcome!=="accepted"||$.accepted_receipt_id!==_.accepted_receipt_id)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","accepted item-binding inverse receipt was not found.");if(await this.sql.get(`SELECT item_id FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? - AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.collection_id,$.item_id]))throw new e("KNOWLEDGE_PROJECT_LINKS_CONFLICT","item-binding inverse verification found the membership still present.");return{accepted_receipt_id:_.accepted_receipt_id,target_id:$.item_id,absent:!0,digest:$.result_digest}}async buildResources(_){let $=await this.getAggregateByProject(this.sql,k_(_,"project_id"));if(!$)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge project aggregate was not found by source or stable project id.");let D=await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships + AND collection_id = ? AND item_id = ?`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.collection_id,$.item_id]))throw new a("KNOWLEDGE_PROJECT_LINKS_CONFLICT","item-binding inverse verification found the membership still present.");return{accepted_receipt_id:_.accepted_receipt_id,target_id:$.item_id,absent:!0,digest:$.result_digest}}async buildResources(_){let $=await this.getAggregateByProject(this.sql,k_(_,"project_id"));if(!$)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge project aggregate was not found by source or stable project id.");let D=await this.sql.many(`SELECT * FROM knowledge_project_collection_memberships WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? AND collection_id = ? - ORDER BY item_id ASC`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.collection_id]),I=await Promise.all(D.map(async(L)=>{let J=await this.itemResolver(L.item_id);if(!J||J.id!==L.item_id)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","collection membership points at a missing Knowledge item; refusing a partial resource population.",{collection_id:$.collection_id,item_id:L.item_id});return J})),U=`r${Number($.revision)}`,E={project_id:$.project_id,source_project_id:$.source_project_id,collection_id:$.collection_id,revision:U},j=[],N={...E,kind:"project",id:$.project_id,title:$.project_name,locator:{kind:"canonical_uri",value:`knowledge:project:${$.project_id}`},metadata:{source_project_id:$.source_project_id,slug:$.project_slug,collection_count:1}};j.push({...N,key:`project:${$.project_id}`,digest:v_(N)});let A={...E,kind:"collection",id:$.collection_id,title:$.collection_name,locator:{kind:"external_uuid",value:$.collection_id},metadata:{slug:$.collection_slug,membership_rule:ND,member_count:I.length}};j.push({...A,key:`collection:${$.collection_id}`,digest:v_(A)});for(let L of I){let J={...E,kind:"item",id:L.id,revision:`v${L.version??1}`,title:L.title,locator:{kind:"canonical_uri",value:`knowledge:item:${encodeURIComponent(L.id)}`},metadata:{tags:[...L.tags??[]],archived:L.archived===!0,updated_at:L.updated_at}};j.push({...J,key:`item:${L.id}`,digest:v_(J)})}let O=new Map;for(let L of I)for(let J of L.tags??[]){let P=J.trim().toLowerCase();if(!P)continue;let z=O.get(P)??{label:J.trim(),itemIds:[]};z.itemIds.push(L.id),O.set(P,z)}for(let[L,J]of[...O.entries()].sort(([P],[z])=>P.localeCompare(z))){let P=NN(`${$.collection_id}\x00taxonomy\x00${L}`),z={...E,kind:"taxonomy",id:P,title:J.label,locator:{kind:"external_uuid",value:P},metadata:{tag:J.label,normalized_tag:L,item_count:J.itemIds.length,member_digest:v_([...J.itemIds].sort())}};j.push({...z,key:`taxonomy:${P}`,digest:v_(z)})}return j.sort((L,J)=>L.key.localeCompare(J.key)),{aggregate:$,resources:j}}async listProjectResources(_,$={}){let D=ZH($.limit),I=HH($.kinds),{aggregate:U,resources:E}=await this.buildResources(_),j=`r${Number(U.revision)}`,N=E.filter((S)=>I.includes(S.kind)),A=v_(N.map((S)=>({key:S.key,digest:S.digest}))),O="";if($.cursor){let S;try{S=JSON.parse(Buffer.from($.cursor,"base64url").toString("utf8"))}catch{throw new e("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","cursor is not a valid Knowledge project-resources cursor.")}if(S.version!==1||S.project_id!==U.project_id||S.collection_id!==U.collection_id||S.collection_revision!==j||S.population_digest!==A||gD(S.kinds)!==gD(I)||typeof S.after!=="string")throw new e("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed or the cursor belongs to a different project/kind selection; restart from the first page.");O=S.after}let L=O?N.filter((S)=>S.key>O):N,J=L.slice(0,D),P=L.length>J.length,z=P&&J.length>0?Buffer.from(JSON.stringify({version:1,project_id:U.project_id,collection_id:U.collection_id,collection_revision:j,population_digest:A,kinds:I,after:J.at(-1).key})).toString("base64url"):null;return{schema:"knowledge.project-resources.page.v1",authority:"knowledge",route:sR,...this.identity,project_id:U.project_id,source_project_id:U.source_project_id,collection_id:U.collection_id,collection_revision:j,population_digest:A,resource_kinds:I,resources:J,count:J.length,total:N.length,limit:D,cursor:$.cursor??null,next_cursor:z,has_more:P,complete:!P,truncated:!1}}async readProjectResource(_,$,D){let{resources:I}=await this.buildResources(_),U=I.find((E)=>E.kind===$&&E.id===D);if(!U)throw new e("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge project resource was not found by exact kind and id.");return U}async readAllProjectResources(_,$={}){let D=[],I=new Set,U=null,E=null;do{let j=await this.listProjectResources(_,{...$,cursor:U}),N={project_id:j.project_id,collection_id:j.collection_id,collection_revision:j.collection_revision,population_digest:j.population_digest,total:j.total,kinds:gD(j.resource_kinds)};if(E&&gD(E)!==gD(N))throw new e("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed while the complete population was being read.");E??=N;for(let A of j.resources){if(I.has(A.key))throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resource pagination returned a duplicate stable resource key.",{key:A.key});I.add(A.key),D.push(A)}if(j.has_more&&!j.next_cursor)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resource page claims more data without a continuation cursor.");U=j.next_cursor}while(U);if(!E||D.length!==E.total)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","complete project resource enumeration did not match the producer total.",{expected_total:E?.total??null,received:D.length});return D}}function ON(_){if(_.databasePath!==":memory:")u$(_.databasePath);let $=new BH(_.databasePath,{create:!0});return $.exec(bH()),new E9(new U9($),(D)=>_.itemStore.get(D),_.options)}class j9{options;fetchImpl;root;constructor(_){this.options=_;this.fetchImpl=_.fetch??P0,this.root=_.baseUrl.replace(/\/+$/,"")}headers(_={}){let $=new Headers(this.options.headers);if($.set("accept","application/json"),this.options.apiKey)$.set("x-api-key",this.options.apiKey);for(let[D,I]of Object.entries(_))$.set(D,I);return $}async request(_,$={}){let D=await this.fetchImpl(`${this.root}${_}`,{...$,headers:this.headers($.body?{"content-type":"application/json"}:{})}),I=await D.json().catch(()=>({}));if(!D.ok)throw new e(typeof I.error==="string"?I.error:"KNOWLEDGE_PROJECT_LINKS_CONFLICT",typeof I.message==="string"?I.message:`Knowledge project-links HTTP ${D.status}`,I.details&&typeof I.details==="object"?I.details:{});return I}async capability(){return(await this.request("/v1/project-registration/capability")).capability}async registerCollection(_){return(await this.request("/v1/project-registration/create",{method:"POST",body:JSON.stringify(_)})).receipt}async readCollection(_){return(await this.request("/v1/project-registration/read-exact",{method:"POST",body:JSON.stringify({collection_id:_})})).record}async lookupReceipt(_){return(await this.request("/v1/project-registration/receipts/lookup",{method:"POST",body:JSON.stringify(_)})).receipt}async compensateRegistration(_){return(await this.request("/v1/project-registration/compensate",{method:"POST",body:JSON.stringify(_)})).receipt}async verifyRegistrationInverse(_){return(await this.request("/v1/project-registration/verify-inverse",{method:"POST",body:JSON.stringify(_)})).verification}async bindItem(_){return(await this.request("/v1/project-registration/items/bind",{method:"POST",body:JSON.stringify(_)})).receipt}async readItemBinding(_,$){return(await this.request("/v1/project-registration/items/read-exact",{method:"POST",body:JSON.stringify({collection_id:_,item_id:$})})).record}async compensateItemBinding(_){return(await this.request("/v1/project-registration/items/compensate",{method:"POST",body:JSON.stringify(_)})).receipt}async verifyItemBindingInverse(_){return(await this.request("/v1/project-registration/items/verify-inverse",{method:"POST",body:JSON.stringify(_)})).verification}async listProjectResources(_,$={}){let D=new URLSearchParams;if($.limit!==void 0)D.set("limit",String($.limit));if($.cursor)D.set("cursor",$.cursor);for(let U of $.kinds??[])D.append("kind",U);let I=D.size>0?`?${D.toString()}`:"";return this.request(`/v1/projects/${encodeURIComponent(_)}/resources${I}`)}async readProjectResource(_,$,D){return(await this.request(`/v1/projects/${encodeURIComponent(_)}/resources/${$}/${encodeURIComponent(D)}`)).resource}async readAllProjectResources(_,$={}){let D=[],I=new Set,U=null,E=null,j=null,N=null;do{let A=await this.listProjectResources(_,{...$,cursor:U});if(E??=A.total,j??=A.collection_revision,N??=A.population_digest,A.total!==E||A.collection_revision!==j||A.population_digest!==N)throw new e("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed while the complete HTTP population was being read.");for(let O of A.resources){if(I.has(O.key))throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resources HTTP pagination returned a duplicate stable key.");I.add(O.key),D.push(O)}if(A.has_more&&!A.next_cursor)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resources HTTP page claims more data without a cursor.");U=A.next_cursor}while(U);if(E===null||D.length!==E)throw new e("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","complete HTTP resource enumeration did not match the producer total.");return D}}function N9(_){return new j9(_)}var E$={name:"@hasna/knowledge",version:"0.2.102",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/live-private-query.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","live:private-query":"bun scripts/live-private-query.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"}};function wH(_){let $=K9(_);if(X_(g9($,"knowledge.db"))||X_(g9($,"config.json")))return g0($);return g0(j$(xN($)).home)}function hW(_){return`${vH()}:${G1("sha256").update(_.home).digest("hex").slice(0,12)}`}function dW(_){return`'${_.replace(/'/g,"'\\''")}'`}function rH(_){return["knowledge",..._].map(dW).join(" ")}function A9(_,$){return`cd ${dW(_)} && knowledge ${$.map(dW).join(" ")}`}function T9(_){return!_||_==="local"||_==="localhost"}function X1(_,$){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 cW(_){return{source:_.source,adapter:_.adapter,target:_.target,route:_.route,target_kind:_.targetKind,confidence:_.confidence,evidence:_.evidence,cacheability:_.cacheability}}function fH(_){try{let $=JSON.parse(_);return Array.isArray($)?$.filter((D)=>typeof D==="string"):[]}catch{return[]}}function R1(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function q_(_){return typeof _==="string"&&_.length>0?_:null}function xH(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function LN(_){return typeof _==="boolean"?_:null}function uH(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function F9(_,$,D){let I=R1(_),U=q_(I.observed_at)??q_($[`${D}_observed_at`]),E=q_(I.source_authority)??q_($[`${D}_source_authority`]);if(!U||!E)return null;return{observed_at:U,verified_at:q_(I.verified_at),expires_at:q_(I.expires_at)??q_($[`${D}_expires_at`]),ttl_ms:xH(I.ttl_ms),source_authority:E,confidence:q_(I.confidence)??(D==="route"?q_($.route_confidence):null),cacheable:LN(I.cacheable)??LN($[`${D}_cacheable`])??!1,stale:LN(I.stale)??LN($[`${D}_stale`])??!1,reasons:uH(I.reasons)}}function yH(_,$){return _.machine_id===$||_.hostname===$||_.ssh_target===$||_.tailscale_dns===$||fH(_.tailscale_ips_json).includes($)}function O9(_,$){return sg(_).find((D)=>yH(D,$))??null}function V9(_){return R1(i4(_.metadata_json).resolver_evidence)}function Y1(_){return R1(i4(_.capabilities_json).resolver)}function B9(_){let $=Y1(_),D=q_($.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 hH(_){let $=Y1(_),D=q_($.route_target_kind);if(D==="local"||D==="lan"||D==="tailscale"||D==="ssh"||D==="unknown")return D;return B9(_)}function cH(_){return q_(Y1(_).route_confidence)??"medium"}function L9(_,$,D){let I=V9(_),U=R1(I.route),E=Y1(_);return{target:_.ssh_target??_.tailscale_dns??_.hostname??_.machine_id,route:B9(_),targetKind:hH(_),confidence:cH(_),source:"registry",adapter:D.adapter,evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,route:U},cacheability:F9(U.cacheability,E,"route")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_route_fallback"])]}}function S9(_,$,D){if(!_.workspace_home)return null;let I=V9(_),U=R1(I.workspace),E=Y1(_);return{ok:!0,source:"registry",adapter:D.adapter,requested_machine_id:$,machine_id:_.machine_id,project_id:q_(U.project_id)??D.project_id,repo_name:q_(U.repo_name)??D.repo_name,project_root:_.workspace_home,project_root_source:q_(E.project_root_source)??"registry",workspace_root:q_(U.workspace_root),workspace_root_source:q_(E.workspace_root_source)??"registry",open_files_root:q_(U.open_files_root),open_files_root_source:q_(E.open_files_root_source)??"registry",trust_status:q_(E.trust_status)??"unknown",auth_status:q_(E.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:F9(U.cacheability,E,"workspace")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_workspace_fallback"])]}}function J9(_){if(!_)return null;let $=_.diagnostics.filter((I)=>I.severity!=="ok"),D=_.repair_hints[0];if(!$.length&&!_.warnings.length&&!D)return null;return[$.length?`workspace diagnostics: ${$.map((I)=>`${I.id}=${I.status}`).join(", ")}`:null,_.warnings.length?`warnings: ${_.warnings.join(", ")}`:null,D?`repair: ${D.shell_command}`:null].filter(Boolean).join("; ")}function SN(_){return{id:_.id,reason:_.reason,command:["knowledge",..._.args],shell_command:rH(_.args)}}function JN(_,$){let D=w(_);try{return Number(D.query($).get()?.count??0)}finally{D.close()}}function nH(_,$){let D=JN(_,"SELECT COUNT(*) AS count FROM sources WHERE uri LIKE 'open-files://%'"),I=JN(_,"SELECT COUNT(*) AS count FROM sources WHERE metadata_json LIKE '%open-files://%' OR metadata_json LIKE '%source_ref%'"),U=JN(_,"SELECT COUNT(*) AS count FROM source_revisions WHERE extracted_text_uri IS NOT NULL"),E=JN(_,["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=E===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:I},extracted_text_artifacts:U,raw_source_bytes_owned_by:"open-files",raw_payload_sentinel_hits:E,message:j?`${D} open-files source ref(s); raw source bytes remain owned by open-files`:`${E} raw source payload metadata sentinel(s) found`}}var dH=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body","body_bytes"]);function mW(_,$=0){if($>8)return!1;if(!_||typeof _!=="object")return!1;if(Array.isArray(_))return _.some((D)=>mW(D,$+1));for(let[D,I]of Object.entries(_)){if(dH.has(D.toLowerCase()))return!0;if(mW(I,$+1))return!0}return!1}function i4(_){try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function W9(_,$=20,D=200){if(!Number.isFinite(_)||_<=0)return $;return Math.min(Math.floor(_),D)}function mH(_,$=220){let D=_??"";return D.length>$?`${D.slice(0,$)}...`:D}function G$(_,$=["metadata_json"]){return _.map((D)=>{let I={...D};for(let U of $){let E=I[U];if(typeof E==="string"){let j=U.endsWith("_json")?U.slice(0,-5):U;I[j]=i4(E),delete I[U]}}return I})}function PN(_){if(typeof _!=="string")return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function lW(_){if(typeof _!=="string")return{};return i4(_)}function lH(_){let $={..._};return $.source_refs=PN($.source_refs_json),$.evidence_refs=PN($.evidence_refs_json),$.requires_approval=$.requires_approval===1||$.requires_approval===!0,$.checks=lW($.checks_json),$.metadata=lW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.checks_json,delete $.metadata_json,$}function iH(_){let $={..._};return $.source_refs=PN($.source_refs_json),$.evidence_refs=PN($.evidence_refs_json),$.metadata=lW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.metadata_json,$}function a_(_,$,D=[]){return _.query($).all(...D)}function tH(_){if(!X_(_))return{exists:!1,read_error:null,items:[]};try{let $=JSON.parse(CH(_,"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 P9(_){return{id:_.id,short_id:_.short_id??null,title:_.title,content_preview:mH(_.content),url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:_.archived===!0,created_at:_.created_at,updated_at:_.updated_at}}function z9(){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 M9(_,$,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 oH(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function pH(_,$,D=!1){let I=M9(_,$,D);return{query:_,normalized_query:oH(_),created_at:new Date().toISOString(),mode:I.mode,warnings:I.warnings,search_counts:I.counts,results:[],citations:[],excerpts:[],graph:{citations:[],backlinks:[]},notes:{permissions:[],freshness:[]}}}function nW(_,$,D){let I=D??$.jsonStorePath;if(X_(I))return I;if(_==="global"){let U=CD();if(X_(U))return U}return I}function eH(_){let $=JSON.stringify(_);return Math.max(1,Math.ceil($.length/4))}function iW(_,$){let D=(_??"").normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function X9(_,$,D){let I=y_(iW(_,D),$);return{text:I.text,redactions:I.findings.length}}function G9(_,$,D){let I=_.now??new Date,U=_.source??"search",E=_.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)),A=Math.max(500,Math.min(_.maxTokens??6000,1e5)),O=0,L=$.citations.slice(0,Math.max(N*2,N)).map((R,K)=>{let Y=X9(R.quote,D,K<3?220:140);O+=Y.redactions;let T=R.source_ref??R.source_uri??R.artifact_path??R.artifact_uri??R.id;return{id:`cite_${G1("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:Y.text}}),J=new Map($.citations.map((R,K)=>[R.id,L[K]])),P=$.excerpts.slice(0,Math.max(N*2,N)).map((R)=>{let K=$.results.find((F)=>F.id===R.result_id),Y=R.citation_id?J.get(R.citation_id):void 0,T=X9(R.text,D,520);return O+=T.redactions,{id:`ev_${G1("sha256").update(`${R.kind}\x00${R.result_id}\x00${R.citation_id??""}`).digest("hex").slice(0,14)}`,kind:R.kind,title:iW(K?.title??Y?.ref??R.kind,100),text_preview:T.text,score:Number(R.score.toFixed(6)),citation_ids:Y?[Y.id]:[],provenance:{source:U,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),z=new Set(P.flatMap((R)=>R.citation_ids)),S=L.filter((R)=>z.has(R.id)),W=Array.from(new Set($.warnings)),X=`ctx_${G1("sha256").update([U,E,j,W.join(","),P.map((R)=>R.id).join(",")].join("\x00")).digest("hex").slice(0,20)}`,G={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:I.toISOString(),source:U,purpose:E,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:X,budgets:{max_tokens:A,estimated_tokens:0,max_items:N,items_included:P.length,items_available:$.excerpts.length,items_truncated:Math.max(0,$.excerpts.length-P.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:O,reminders:["This pack is read-only and performs no durable writes.","Legacy JSON note evidence is bounded and redacted before inclusion."]},citations:S,evidence:P,duplicate_candidates:[],outline:{title:j?`Knowledge context: ${iW(j,80)}`:"Knowledge context",bullets:P.length>0?P.slice(0,5).map((R)=>`${R.id}: ${R.title}`):["No matching bounded evidence was found."],evidence_ids:P.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:W,message:`${P.length} bounded evidence item(s), estimated under ${A} token(s)`};return G.budgets.estimated_tokens=eH(G),G.budgets.token_budget_exceeded=G.budgets.estimated_tokens>A,G.message=`${G.evidence.length} bounded evidence item(s), estimated ${G.budgets.estimated_tokens}/${A} token(s)`,G}function aH(){return{schema_version:0,chunks:0,vector_entries:0,missing_embeddings:0,queued:{},stale_revisions:0}}function sH(){return{total_embeddings:0,total_vector_entries:0,indexes:[]}}function _k(_){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 R9(_){let $=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=(_.query??_.topic??"").normalize("NFKC").trim().replace(/\s+/g," "),E=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),j=Math.max(500,Math.min(_.maxTokens??6000,1e5)),N=`ctx_${G1("sha256").update(["empty",D,I,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:I,query:U,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:N,budgets:{max_tokens:j,estimated_tokens:0,max_items:E,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 tW(_){let $=_.artifact_store.s3?.prefix?.replace(/^\/+|\/+$/g,"");return $?`${$}/`:null}function $k(_,$){let D=w(_);try{let I=D.query(`SELECT artifact_uri, kind, hash, size_bytes, metadata_json + ORDER BY item_id ASC`,[this.identity.authority_id,this.identity.tenant_id,this.identity.corpus_id,$.collection_id]),I=await Promise.all(D.map(async(S)=>{let L=await this.itemResolver(S.item_id);if(!L||L.id!==S.item_id)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","collection membership points at a missing Knowledge item; refusing a partial resource population.",{collection_id:$.collection_id,item_id:S.item_id});return L})),U=`r${Number($.revision)}`,E={project_id:$.project_id,source_project_id:$.source_project_id,collection_id:$.collection_id,revision:U},j=[],N={...E,kind:"project",id:$.project_id,title:$.project_name,locator:{kind:"canonical_uri",value:`knowledge:project:${$.project_id}`},metadata:{source_project_id:$.source_project_id,slug:$.project_slug,collection_count:1}};j.push({...N,key:`project:${$.project_id}`,digest:v_(N)});let A={...E,kind:"collection",id:$.collection_id,title:$.collection_name,locator:{kind:"external_uuid",value:$.collection_id},metadata:{slug:$.collection_slug,membership_rule:ND,member_count:I.length}};j.push({...A,key:`collection:${$.collection_id}`,digest:v_(A)});for(let S of I){let L={...E,kind:"item",id:S.id,revision:`v${S.version??1}`,title:S.title,locator:{kind:"canonical_uri",value:`knowledge:item:${encodeURIComponent(S.id)}`},metadata:{tags:[...S.tags??[]],archived:S.archived===!0,updated_at:S.updated_at}};j.push({...L,key:`item:${S.id}`,digest:v_(L)})}let O=new Map;for(let S of I)for(let L of S.tags??[]){let P=L.trim().toLowerCase();if(!P)continue;let z=O.get(P)??{label:L.trim(),itemIds:[]};z.itemIds.push(S.id),O.set(P,z)}for(let[S,L]of[...O.entries()].sort(([P],[z])=>P.localeCompare(z))){let P=NN(`${$.collection_id}\x00taxonomy\x00${S}`),z={...E,kind:"taxonomy",id:P,title:L.label,locator:{kind:"external_uuid",value:P},metadata:{tag:L.label,normalized_tag:S,item_count:L.itemIds.length,member_digest:v_([...L.itemIds].sort())}};j.push({...z,key:`taxonomy:${P}`,digest:v_(z)})}return j.sort((S,L)=>S.key.localeCompare(L.key)),{aggregate:$,resources:j}}async listProjectResources(_,$={}){let D=ZH($.limit),I=HH($.kinds),{aggregate:U,resources:E}=await this.buildResources(_),j=`r${Number(U.revision)}`,N=E.filter((G)=>I.includes(G.kind)),A=v_(N.map((G)=>({key:G.key,digest:G.digest}))),O="";if($.cursor){let G;try{G=JSON.parse(Buffer.from($.cursor,"base64url").toString("utf8"))}catch{throw new a("KNOWLEDGE_PROJECT_LINKS_INVALID_INPUT","cursor is not a valid Knowledge project-resources cursor.")}if(G.version!==1||G.project_id!==U.project_id||G.collection_id!==U.collection_id||G.collection_revision!==j||G.population_digest!==A||gD(G.kinds)!==gD(I)||typeof G.after!=="string")throw new a("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed or the cursor belongs to a different project/kind selection; restart from the first page.");O=G.after}let S=O?N.filter((G)=>G.key>O):N,L=S.slice(0,D),P=S.length>L.length,z=P&&L.length>0?Buffer.from(JSON.stringify({version:1,project_id:U.project_id,collection_id:U.collection_id,collection_revision:j,population_digest:A,kinds:I,after:L.at(-1).key})).toString("base64url"):null;return{schema:"knowledge.project-resources.page.v1",authority:"knowledge",route:sR,...this.identity,project_id:U.project_id,source_project_id:U.source_project_id,collection_id:U.collection_id,collection_revision:j,population_digest:A,resource_kinds:I,resources:L,count:L.length,total:N.length,limit:D,cursor:$.cursor??null,next_cursor:z,has_more:P,complete:!P,truncated:!1}}async readProjectResource(_,$,D){let{resources:I}=await this.buildResources(_),U=I.find((E)=>E.kind===$&&E.id===D);if(!U)throw new a("KNOWLEDGE_PROJECT_LINKS_NOT_FOUND","Knowledge project resource was not found by exact kind and id.");return U}async readAllProjectResources(_,$={}){let D=[],I=new Set,U=null,E=null;do{let j=await this.listProjectResources(_,{...$,cursor:U}),N={project_id:j.project_id,collection_id:j.collection_id,collection_revision:j.collection_revision,population_digest:j.population_digest,total:j.total,kinds:gD(j.resource_kinds)};if(E&&gD(E)!==gD(N))throw new a("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed while the complete population was being read.");E??=N;for(let A of j.resources){if(I.has(A.key))throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resource pagination returned a duplicate stable resource key.",{key:A.key});I.add(A.key),D.push(A)}if(j.has_more&&!j.next_cursor)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resource page claims more data without a continuation cursor.");U=j.next_cursor}while(U);if(!E||D.length!==E.total)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","complete project resource enumeration did not match the producer total.",{expected_total:E?.total??null,received:D.length});return D}}function ON(_){if(_.databasePath!==":memory:")u$(_.databasePath);let $=new BH(_.databasePath,{create:!0});return $.exec(bH()),new E9(new U9($),(D)=>_.itemStore.get(D),_.options)}class j9{options;fetchImpl;root;constructor(_){this.options=_;this.fetchImpl=_.fetch??P0,this.root=_.baseUrl.replace(/\/+$/,"")}async close(){}headers(_={}){let $=new Headers(this.options.headers);if($.set("accept","application/json"),this.options.apiKey)$.set("x-api-key",this.options.apiKey);for(let[D,I]of Object.entries(_))$.set(D,I);return $}async request(_,$={}){let D=await this.fetchImpl(`${this.root}${_}`,{...$,headers:this.headers($.body?{"content-type":"application/json"}:{})}),I=await D.json().catch(()=>({}));if(!D.ok)throw new a(typeof I.error==="string"?I.error:"KNOWLEDGE_PROJECT_LINKS_CONFLICT",typeof I.message==="string"?I.message:`Knowledge project-links HTTP ${D.status}`,I.details&&typeof I.details==="object"?I.details:{});return I}async capability(){return(await this.request("/v1/project-registration/capability")).capability}async registerCollection(_){return(await this.request("/v1/project-registration/create",{method:"POST",body:JSON.stringify(_)})).receipt}async readCollection(_){return(await this.request("/v1/project-registration/read-exact",{method:"POST",body:JSON.stringify({collection_id:_})})).record}async lookupReceipt(_){return(await this.request("/v1/project-registration/receipts/lookup",{method:"POST",body:JSON.stringify(_)})).receipt}async compensateRegistration(_){return(await this.request("/v1/project-registration/compensate",{method:"POST",body:JSON.stringify(_)})).receipt}async verifyRegistrationInverse(_){return(await this.request("/v1/project-registration/verify-inverse",{method:"POST",body:JSON.stringify(_)})).verification}async bindItem(_){return(await this.request("/v1/project-registration/items/bind",{method:"POST",body:JSON.stringify(_)})).receipt}async readItemBinding(_,$){return(await this.request("/v1/project-registration/items/read-exact",{method:"POST",body:JSON.stringify({collection_id:_,item_id:$})})).record}async compensateItemBinding(_){return(await this.request("/v1/project-registration/items/compensate",{method:"POST",body:JSON.stringify(_)})).receipt}async verifyItemBindingInverse(_){return(await this.request("/v1/project-registration/items/verify-inverse",{method:"POST",body:JSON.stringify(_)})).verification}async listProjectResources(_,$={}){let D=new URLSearchParams;if($.limit!==void 0)D.set("limit",String($.limit));if($.cursor)D.set("cursor",$.cursor);for(let U of $.kinds??[])D.append("kind",U);let I=D.size>0?`?${D.toString()}`:"";return this.request(`/v1/projects/${encodeURIComponent(_)}/resources${I}`)}async readProjectResource(_,$,D){return(await this.request(`/v1/projects/${encodeURIComponent(_)}/resources/${$}/${encodeURIComponent(D)}`)).resource}async readAllProjectResources(_,$={}){let D=[],I=new Set,U=null,E=null,j=null,N=null;do{let A=await this.listProjectResources(_,{...$,cursor:U});if(E??=A.total,j??=A.collection_revision,N??=A.population_digest,A.total!==E||A.collection_revision!==j||A.population_digest!==N)throw new a("KNOWLEDGE_PROJECT_LINKS_CURSOR_STALE","project resources changed while the complete HTTP population was being read.");for(let O of A.resources){if(I.has(O.key))throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resources HTTP pagination returned a duplicate stable key.");I.add(O.key),D.push(O)}if(A.has_more&&!A.next_cursor)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","project resources HTTP page claims more data without a cursor.");U=A.next_cursor}while(U);if(E===null||D.length!==E)throw new a("KNOWLEDGE_PROJECT_LINKS_INCOMPLETE_POPULATION","complete HTTP resource enumeration did not match the producer total.");return D}}function N9(_){return new j9(_)}var E$={name:"@hasna/knowledge",version:"0.2.102",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/live-private-query.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","live:private-query":"bun scripts/live-private-query.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"}};function wH(_){let $=K9(_);if(X_(g9($,"knowledge.db"))||X_(g9($,"config.json")))return g0($);return g0(j$(xN($)).home)}function hW(_){return`${vH()}:${G1("sha256").update(_.home).digest("hex").slice(0,12)}`}function dW(_){return`'${_.replace(/'/g,"'\\''")}'`}function rH(_){return["knowledge",..._].map(dW).join(" ")}function A9(_,$){return`cd ${dW(_)} && knowledge ${$.map(dW).join(" ")}`}function T9(_){return!_||_==="local"||_==="localhost"}function X1(_,$){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 cW(_){return{source:_.source,adapter:_.adapter,target:_.target,route:_.route,target_kind:_.targetKind,confidence:_.confidence,evidence:_.evidence,cacheability:_.cacheability}}function fH(_){try{let $=JSON.parse(_);return Array.isArray($)?$.filter((D)=>typeof D==="string"):[]}catch{return[]}}function R1(_){return _&&typeof _==="object"&&!Array.isArray(_)?_:{}}function q_(_){return typeof _==="string"&&_.length>0?_:null}function xH(_){return typeof _==="number"&&Number.isFinite(_)?_:null}function SN(_){return typeof _==="boolean"?_:null}function uH(_){return Array.isArray(_)?_.filter(($)=>typeof $==="string"):[]}function F9(_,$,D){let I=R1(_),U=q_(I.observed_at)??q_($[`${D}_observed_at`]),E=q_(I.source_authority)??q_($[`${D}_source_authority`]);if(!U||!E)return null;return{observed_at:U,verified_at:q_(I.verified_at),expires_at:q_(I.expires_at)??q_($[`${D}_expires_at`]),ttl_ms:xH(I.ttl_ms),source_authority:E,confidence:q_(I.confidence)??(D==="route"?q_($.route_confidence):null),cacheable:SN(I.cacheable)??SN($[`${D}_cacheable`])??!1,stale:SN(I.stale)??SN($[`${D}_stale`])??!1,reasons:uH(I.reasons)}}function yH(_,$){return _.machine_id===$||_.hostname===$||_.ssh_target===$||_.tailscale_dns===$||fH(_.tailscale_ips_json).includes($)}function O9(_,$){return sg(_).find((D)=>yH(D,$))??null}function V9(_){return R1(i4(_.metadata_json).resolver_evidence)}function Y1(_){return R1(i4(_.capabilities_json).resolver)}function B9(_){let $=Y1(_),D=q_($.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 hH(_){let $=Y1(_),D=q_($.route_target_kind);if(D==="local"||D==="lan"||D==="tailscale"||D==="ssh"||D==="unknown")return D;return B9(_)}function cH(_){return q_(Y1(_).route_confidence)??"medium"}function S9(_,$,D){let I=V9(_),U=R1(I.route),E=Y1(_);return{target:_.ssh_target??_.tailscale_dns??_.hostname??_.machine_id,route:B9(_),targetKind:hH(_),confidence:cH(_),source:"registry",adapter:D.adapter,evidence:{registry:!0,requested_machine_id:$,machine_id:_.machine_id,recorded_at:_.updated_at,route:U},cacheability:F9(U.cacheability,E,"route")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_route_fallback"])]}}function L9(_,$,D){if(!_.workspace_home)return null;let I=V9(_),U=R1(I.workspace),E=Y1(_);return{ok:!0,source:"registry",adapter:D.adapter,requested_machine_id:$,machine_id:_.machine_id,project_id:q_(U.project_id)??D.project_id,repo_name:q_(U.repo_name)??D.repo_name,project_root:_.workspace_home,project_root_source:q_(E.project_root_source)??"registry",workspace_root:q_(U.workspace_root),workspace_root_source:q_(E.workspace_root_source)??"registry",open_files_root:q_(U.open_files_root),open_files_root_source:q_(E.open_files_root_source)??"registry",trust_status:q_(E.trust_status)??"unknown",auth_status:q_(E.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:F9(U.cacheability,E,"workspace")??D.cacheability,warnings:[...new Set([...D.warnings,"registry_workspace_fallback"])]}}function J9(_){if(!_)return null;let $=_.diagnostics.filter((I)=>I.severity!=="ok"),D=_.repair_hints[0];if(!$.length&&!_.warnings.length&&!D)return null;return[$.length?`workspace diagnostics: ${$.map((I)=>`${I.id}=${I.status}`).join(", ")}`:null,_.warnings.length?`warnings: ${_.warnings.join(", ")}`:null,D?`repair: ${D.shell_command}`:null].filter(Boolean).join("; ")}function LN(_){return{id:_.id,reason:_.reason,command:["knowledge",..._.args],shell_command:rH(_.args)}}function JN(_,$){let D=w(_);try{return Number(D.query($).get()?.count??0)}finally{D.close()}}function nH(_,$){let D=JN(_,"SELECT COUNT(*) AS count FROM sources WHERE uri LIKE 'open-files://%'"),I=JN(_,"SELECT COUNT(*) AS count FROM sources WHERE metadata_json LIKE '%open-files://%' OR metadata_json LIKE '%source_ref%'"),U=JN(_,"SELECT COUNT(*) AS count FROM source_revisions WHERE extracted_text_uri IS NOT NULL"),E=JN(_,["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=E===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:I},extracted_text_artifacts:U,raw_source_bytes_owned_by:"open-files",raw_payload_sentinel_hits:E,message:j?`${D} open-files source ref(s); raw source bytes remain owned by open-files`:`${E} raw source payload metadata sentinel(s) found`}}var dH=new Set(["raw","raw_bytes","raw_content","content_base64","source_bytes","source_content","body","body_bytes"]);function mW(_,$=0){if($>8)return!1;if(!_||typeof _!=="object")return!1;if(Array.isArray(_))return _.some((D)=>mW(D,$+1));for(let[D,I]of Object.entries(_)){if(dH.has(D.toLowerCase()))return!0;if(mW(I,$+1))return!0}return!1}function i4(_){try{let $=JSON.parse(_);return $&&typeof $==="object"&&!Array.isArray($)?$:{}}catch{return{}}}function W9(_,$=20,D=200){if(!Number.isFinite(_)||_<=0)return $;return Math.min(Math.floor(_),D)}function mH(_,$=220){let D=_??"";return D.length>$?`${D.slice(0,$)}...`:D}function G$(_,$=["metadata_json"]){return _.map((D)=>{let I={...D};for(let U of $){let E=I[U];if(typeof E==="string"){let j=U.endsWith("_json")?U.slice(0,-5):U;I[j]=i4(E),delete I[U]}}return I})}function PN(_){if(typeof _!=="string")return[];try{let $=JSON.parse(_);return Array.isArray($)?$:[]}catch{return[]}}function lW(_){if(typeof _!=="string")return{};return i4(_)}function lH(_){let $={..._};return $.source_refs=PN($.source_refs_json),$.evidence_refs=PN($.evidence_refs_json),$.requires_approval=$.requires_approval===1||$.requires_approval===!0,$.checks=lW($.checks_json),$.metadata=lW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.checks_json,delete $.metadata_json,$}function iH(_){let $={..._};return $.source_refs=PN($.source_refs_json),$.evidence_refs=PN($.evidence_refs_json),$.metadata=lW($.metadata_json),delete $.source_refs_json,delete $.evidence_refs_json,delete $.metadata_json,$}function e_(_,$,D=[]){return _.query($).all(...D)}function tH(_){if(!X_(_))return{exists:!1,read_error:null,items:[]};try{let $=JSON.parse(CH(_,"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 P9(_){return{id:_.id,short_id:_.short_id??null,title:_.title,content_preview:mH(_.content),url:_.url??null,tags:_.tags??[],metadata:_.metadata??{},archived:_.archived===!0,created_at:_.created_at,updated_at:_.updated_at}}function z9(){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 M9(_,$,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 oH(_){return _.normalize("NFKC").trim().replace(/\s+/g," ").toLowerCase()}function pH(_,$,D=!1){let I=M9(_,$,D);return{query:_,normalized_query:oH(_),created_at:new Date().toISOString(),mode:I.mode,warnings:I.warnings,search_counts:I.counts,results:[],citations:[],excerpts:[],graph:{citations:[],backlinks:[]},notes:{permissions:[],freshness:[]}}}function nW(_,$,D){let I=D??$.jsonStorePath;if(X_(I))return I;if(_==="global"){let U=CD();if(X_(U))return U}return I}function eH(_){let $=JSON.stringify(_);return Math.max(1,Math.ceil($.length/4))}function iW(_,$){let D=(_??"").normalize("NFKC").trim().replace(/\s+/g," ");if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-1)).trim()}...`}function X9(_,$,D){let I=u_(iW(_,D),$);return{text:I.text,redactions:I.findings.length}}function G9(_,$,D){let I=_.now??new Date,U=_.source??"search",E=_.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)),A=Math.max(500,Math.min(_.maxTokens??6000,1e5)),O=0,S=$.citations.slice(0,Math.max(N*2,N)).map((R,T)=>{let Y=X9(R.quote,D,T<3?220:140);O+=Y.redactions;let Q=R.source_ref??R.source_uri??R.artifact_path??R.artifact_uri??R.id;return{id:`cite_${G1("sha256").update(`${R.id}\x00${Q}`).digest("hex").slice(0,12)}`,kind:R.artifact_uri||R.artifact_path?"artifact":"source",ref:Q,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:Y.text}}),L=new Map($.citations.map((R,T)=>[R.id,S[T]])),P=$.excerpts.slice(0,Math.max(N*2,N)).map((R)=>{let T=$.results.find((F)=>F.id===R.result_id),Y=R.citation_id?L.get(R.citation_id):void 0,Q=X9(R.text,D,520);return O+=Q.redactions,{id:`ev_${G1("sha256").update(`${R.kind}\x00${R.result_id}\x00${R.citation_id??""}`).digest("hex").slice(0,14)}`,kind:R.kind,title:iW(T?.title??Y?.ref??R.kind,100),text_preview:Q.text,score:Number(R.score.toFixed(6)),citation_ids:Y?[Y.id]:[],provenance:{source:U,record_ref:`${R.kind}:${R.result_id}`,created_at:$.created_at,updated_at:null,metadata_keys:[]}}}).sort((R,T)=>T.score-R.score||R.id.localeCompare(T.id)).slice(0,N),z=new Set(P.flatMap((R)=>R.citation_ids)),G=S.filter((R)=>z.has(R.id)),J=Array.from(new Set($.warnings)),W=`ctx_${G1("sha256").update([U,E,j,J.join(","),P.map((R)=>R.id).join(",")].join("\x00")).digest("hex").slice(0,20)}`,X={ok:!0,format:"knowledge-agent-context-pack",version:1,created_at:I.toISOString(),source:U,purpose:E,query:j,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:W,budgets:{max_tokens:A,estimated_tokens:0,max_items:N,items_included:P.length,items_available:$.excerpts.length,items_truncated:Math.max(0,$.excerpts.length-P.length),token_budget_exceeded:!1},safety:{raw_artifact_content_included:!1,durable_writes_performed:!1,redactions:O,reminders:["This pack is read-only and performs no durable writes.","Legacy JSON note evidence is bounded and redacted before inclusion."]},citations:G,evidence:P,duplicate_candidates:[],outline:{title:j?`Knowledge context: ${iW(j,80)}`:"Knowledge context",bullets:P.length>0?P.slice(0,5).map((R)=>`${R.id}: ${R.title}`):["No matching bounded evidence was found."],evidence_ids:P.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:J,message:`${P.length} bounded evidence item(s), estimated under ${A} token(s)`};return X.budgets.estimated_tokens=eH(X),X.budgets.token_budget_exceeded=X.budgets.estimated_tokens>A,X.message=`${X.evidence.length} bounded evidence item(s), estimated ${X.budgets.estimated_tokens}/${A} token(s)`,X}function aH(){return{schema_version:0,chunks:0,vector_entries:0,missing_embeddings:0,queued:{},stale_revisions:0}}function sH(){return{total_embeddings:0,total_vector_entries:0,indexes:[]}}function _k(_){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 R9(_){let $=_.now??new Date,D=_.source??"search",I=_.purpose??(D==="loops"||D==="runs"?"proposal":"agent_context"),U=(_.query??_.topic??"").normalize("NFKC").trim().replace(/\s+/g," "),E=Math.max(1,Math.min(_.maxItems??_.limit??8,50)),j=Math.max(500,Math.min(_.maxTokens??6000,1e5)),N=`ctx_${G1("sha256").update(["empty",D,I,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:I,query:U,topic:_.topic??null,since:_.since??null,dry_run:!0,idempotency_key:N,budgets:{max_tokens:j,estimated_tokens:0,max_items:E,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 tW(_){let $=_.artifact_store.s3?.prefix?.replace(/^\/+|\/+$/g,"");return $?`${$}/`:null}function $k(_,$){let D=w(_);try{let I=D.query(`SELECT artifact_uri, kind, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all(),U=new Map,E=0,j=0,N=0,A=0,O=0,L=0,J=0,P=0,z=0,S=0,W=0,X=0,G=new Map,R=[],K=[],Y=[],T=[],F=$.artifact_store.uri_prefix,k=tW($);for(let T_ of I){if(U.set(T_.kind,(U.get(T_.kind)??0)+1),T_.hash?.startsWith("sha256:"))E+=1;if(typeof T_.size_bytes==="number"&&T_.size_bytes>=0)j+=1,N+=T_.size_bytes;if(T_.artifact_uri.startsWith(F))A+=1;else if(R.length<5)R.push(T_.artifact_uri);let C_=i4(T_.metadata_json);if(mW(C_))J+=1;let N0=typeof C_.key==="string"?C_.key:null;if(!N0)O+=1;else if(k&&N0.startsWith(k)){if(L+=1,K.length<5)K.push(N0)}let ZP=typeof C_.artifact_modified_at==="string"?C_.artifact_modified_at:null;if(ZP)if(Number.isNaN(Date.parse(ZP))){if(z+=1,Y.length<5)Y.push(T_.artifact_uri)}else P+=1;let qD=C_.provenance&&typeof C_.provenance==="object"&&!Array.isArray(C_.provenance)?C_.provenance:null;if(qD){S+=1;let vN=typeof qD.artifact_key==="string"?qD.artifact_key:null,HP=typeof qD.generated_from==="string"?qD.generated_from:"unknown";if(G.set(HP,(G.get(HP)??0)+1),vN){if(W+=1,N0&&vN!==N0){if(X+=1,T.length<5)T.push(`${T_.artifact_uri}:provenance.artifact_key=${vN}:key=${N0}`)}}else if(T.length<5)T.push(`${T_.artifact_uri}:missing_provenance_artifact_key`)}else if(T.length<5)T.push(`${T_.artifact_uri}:missing_provenance`)}let B=I.length-E,c=I.length-j,E_=I.length-P-z,D_=I.length-S,J_=S-W,A_=I.length-A,K$=[B>0?`artifact_manifest_missing_hash:${B}`:null,c>0?`artifact_manifest_missing_size:${c}`:null,O>0?`artifact_manifest_missing_key:${O}`:null,A_>0?`artifact_manifest_uri_prefix_mismatch:${A_}`:null,L>0?`artifact_manifest_s3_key_contains_storage_prefix:${L}`:null,z>0?`artifact_manifest_invalid_modified_at:${z}`:null,D_>0?`artifact_manifest_missing_provenance:${D_}`:null,J_>0?`artifact_manifest_missing_provenance_artifact_key:${J_}`:null,X>0?`artifact_manifest_provenance_key_mismatch:${X}`:null,J>0?`artifact_manifest_raw_payload_sentinels:${J}`:null].filter((T_)=>Boolean(T_)),r_=K$.length===0;return{ok:r_,read_only:!0,storage_type:$.storage_type,artifact_uri_prefix:F,s3:$.artifact_store.s3,artifacts:{total:I.length,by_kind:[...U.entries()].map(([T_,C_])=>({kind:T_,count:C_})).sort((T_,C_)=>T_.kind.localeCompare(C_.kind)),with_hash:E,missing_hash:B,with_size:j,missing_size:c,total_size_bytes:N},modified_time:{with_modified_at:P,missing_modified_at:E_,invalid_modified_at:z,examples:Y},provenance:{with_provenance:S,missing_provenance:D_,with_artifact_key:W,missing_artifact_key:J_,artifact_key_mismatches:X,generated_from:[...G.entries()].map(([T_,C_])=>({value:T_,count:C_})).sort((T_,C_)=>T_.value.localeCompare(C_.value)),examples:T},uri_prefix:{matching:A,mismatched:A_,examples:R},keys:{with_key:I.length-O,missing_key:O,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&&O===0,tracks_modified_time:P>0&&z===0,preserves_provenance:D_===0&&J_===0&&X===0},raw_payload_sentinel_hits:J,warnings:K$,message:r_?`${I.length} generated artifact manifest row(s) ready for ${$.storage_type} sync`:`Generated artifact manifest needs attention: ${K$.join(", ")}`}}finally{D.close()}}function Dk(_,$){let D=tW($);if(!D)return[];let I=w(_);try{let U=I.query(`SELECT id, artifact_uri, kind, hash, size_bytes, metadata_json + ORDER BY artifact_uri ASC`).all(),U=new Map,E=0,j=0,N=0,A=0,O=0,S=0,L=0,P=0,z=0,G=0,J=0,W=0,X=new Map,R=[],T=[],Y=[],Q=[],F=$.artifact_store.uri_prefix,q=tW($);for(let E_ of I){if(U.set(E_.kind,(U.get(E_.kind)??0)+1),E_.hash?.startsWith("sha256:"))E+=1;if(typeof E_.size_bytes==="number"&&E_.size_bytes>=0)j+=1,N+=E_.size_bytes;if(E_.artifact_uri.startsWith(F))A+=1;else if(R.length<5)R.push(E_.artifact_uri);let C_=i4(E_.metadata_json);if(mW(C_))L+=1;let N0=typeof C_.key==="string"?C_.key:null;if(!N0)O+=1;else if(q&&N0.startsWith(q)){if(S+=1,T.length<5)T.push(N0)}let ZP=typeof C_.artifact_modified_at==="string"?C_.artifact_modified_at:null;if(ZP)if(Number.isNaN(Date.parse(ZP))){if(z+=1,Y.length<5)Y.push(E_.artifact_uri)}else P+=1;let qD=C_.provenance&&typeof C_.provenance==="object"&&!Array.isArray(C_.provenance)?C_.provenance:null;if(qD){G+=1;let vN=typeof qD.artifact_key==="string"?qD.artifact_key:null,HP=typeof qD.generated_from==="string"?qD.generated_from:"unknown";if(X.set(HP,(X.get(HP)??0)+1),vN){if(J+=1,N0&&vN!==N0){if(W+=1,Q.length<5)Q.push(`${E_.artifact_uri}:provenance.artifact_key=${vN}:key=${N0}`)}}else if(Q.length<5)Q.push(`${E_.artifact_uri}:missing_provenance_artifact_key`)}else if(Q.length<5)Q.push(`${E_.artifact_uri}:missing_provenance`)}let Z=I.length-E,f=I.length-j,l=I.length-P-z,U_=I.length-G,j_=G-J,_$=I.length-A,G_=[Z>0?`artifact_manifest_missing_hash:${Z}`:null,f>0?`artifact_manifest_missing_size:${f}`:null,O>0?`artifact_manifest_missing_key:${O}`:null,_$>0?`artifact_manifest_uri_prefix_mismatch:${_$}`:null,S>0?`artifact_manifest_s3_key_contains_storage_prefix:${S}`:null,z>0?`artifact_manifest_invalid_modified_at:${z}`:null,U_>0?`artifact_manifest_missing_provenance:${U_}`:null,j_>0?`artifact_manifest_missing_provenance_artifact_key:${j_}`:null,W>0?`artifact_manifest_provenance_key_mismatch:${W}`:null,L>0?`artifact_manifest_raw_payload_sentinels:${L}`:null].filter((E_)=>Boolean(E_)),K$=G_.length===0;return{ok:K$,read_only:!0,storage_type:$.storage_type,artifact_uri_prefix:F,s3:$.artifact_store.s3,artifacts:{total:I.length,by_kind:[...U.entries()].map(([E_,C_])=>({kind:E_,count:C_})).sort((E_,C_)=>E_.kind.localeCompare(C_.kind)),with_hash:E,missing_hash:Z,with_size:j,missing_size:f,total_size_bytes:N},modified_time:{with_modified_at:P,missing_modified_at:l,invalid_modified_at:z,examples:Y},provenance:{with_provenance:G,missing_provenance:U_,with_artifact_key:J,missing_artifact_key:j_,artifact_key_mismatches:W,generated_from:[...X.entries()].map(([E_,C_])=>({value:E_,count:C_})).sort((E_,C_)=>E_.value.localeCompare(C_.value)),examples:Q},uri_prefix:{matching:A,mismatched:_$,examples:R},keys:{with_key:I.length-O,missing_key:O,prefixed_with_storage_prefix:S,prefixed_examples:T},sync_manifest:{copied_by_sync:!0,generated_artifacts_only:!0,includes_raw_source_bytes:!1,hash_algorithm:"sha256",portable_keys:S===0&&O===0,tracks_modified_time:P>0&&z===0,preserves_provenance:U_===0&&j_===0&&W===0},raw_payload_sentinel_hits:L,warnings:G_,message:K$?`${I.length} generated artifact manifest row(s) ready for ${$.storage_type} sync`:`Generated artifact manifest needs attention: ${G_.join(", ")}`}}finally{D.close()}}function Dk(_,$){let D=tW($);if(!D)return[];let I=w(_);try{let U=I.query(`SELECT id, artifact_uri, kind, hash, size_bytes, metadata_json FROM storage_objects - ORDER BY artifact_uri ASC`).all(),E=[];for(let j of U){let N=i4(j.metadata_json),A=typeof N.key==="string"?N.key:null;if(!A?.startsWith(D))continue;let O=A.slice(D.length);if(!O)continue;E.push({id:j.id,artifact_uri:j.artifact_uri,kind:j.kind,current_key:A,repaired_key:c$(O),hash:j.hash,size_bytes:j.size_bytes})}return E}finally{I.close()}}function Uk(_){let $=["--scope",_.scope,"--json"],D=_.tables?.length?["--tables",_.tables.join(",")]:[],I=[SN({id:"sync_status",reason:"Inspect local sync registry, clocks, snapshots, and conflicts.",args:["sync","status",...$]})];if(_.machine&&!T9(_.machine))I.push(SN({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)I.push(SN({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??[])I.push({id:U.id,reason:U.reason,command:U.command,shell_command:U.shell_command});if(_.openConflicts>0)I.push(SN({id:"sync_conflicts",reason:"Review open conflicts before relying on bidirectional sync.",args:["sync","conflicts",...$]}));return I}function Ik(){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(I){throw Error(`KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array: ${I instanceof Error?I.message:String(I)}`)}if(!Array.isArray(D)||!D.every((I)=>typeof I==="string"))throw Error("KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array.");return{command:_,argsPrefix:D}}function Y9(_,$,D,I){let U=Ik(),E=qH(U.command,[...U.argsPrefix,I.target,$],{encoding:"utf8",env:process.env,input:D,maxBuffer:67108864});if((E.status??1)!==0){let j=I.source==="open-machines"?` via ${I.route??"resolved"}:${I.target}`:"";throw Error(`ssh ${_}${j} failed: ${(E.stderr||E.stdout||String(E.status)).trim()}`)}return E.stdout||""}function Q9(_,$,D){try{return JSON.parse(D)}catch(I){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(I)}`)}}function Ek(_,$){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:I}=$;if(typeof D!=="number"||typeof I!=="number"||D<q6||I>k6)throw Error(`Remote knowledge sync export on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function jk(_,$){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:I}=$;if(typeof D!=="number"||typeof I!=="number"||D<q6||I>k6)throw Error(`Remote knowledge sync import on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function Nk(_){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 WN extends Error{code="semantic_query_unavailable";constructor(){super("semantic_query_unavailable: the hosted Knowledge item store has no configured vector index.");this.name="KnowledgeSemanticSearchUnavailableError"}}class b9{options;ensuredWorkspace;cachedConfig;cachedProjectLinksAuthority;constructor(_={}){this.options=_}get scope(){return this.options.scope??"global"}get workspace(){return this.ensuredWorkspace??f1(this.options.scope,this.options.cwd)}ensureWorkspace(){if(!this.ensuredWorkspace)this.ensuredWorkspace=g0(this.workspace.home);return this.ensuredWorkspace}jsonStorePath(){return this.ensureWorkspace().jsonStorePath}itemStore(){let _=this.ensureWorkspace();return t1({storePath:_.jsonStorePath,storePathOverridden:!1})}projectLinksAuthority(){if(this.options.projectLinksAuthority)return this.options.projectLinksAuthority;if(this.cachedProjectLinksAuthority)return this.cachedProjectLinksAuthority;if(h$()){let{apiKey:$}=Gg(process.env);if(!$)throw Error("Knowledge project links require the configured API credential in postgres mode.");return this.cachedProjectLinksAuthority=N9({baseUrl:p1(this.config(),process.env),apiKey:$}),this.cachedProjectLinksAuthority}let _=this.ensureWorkspace();return this.cachedProjectLinksAuthority=ON({databasePath:_.knowledgeDbPath,itemStore:this.itemStore(),options:{packageVersion:E$.version,authorityId:this.options.projectLinksIdentity?.authorityId??process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID??"knowledge",tenantId:this.options.projectLinksIdentity?.tenantId??process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID??"local",corpusId:this.options.projectLinksIdentity?.corpusId??process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID??"knowledge"}}),this.cachedProjectLinksAuthority}async listItems(_={}){return this.itemStore().list(_)}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||X_($.configPath))this.cachedConfig=X_($.configPath)?yN($.configPath):vD();return this.cachedConfig}safetyPolicy(){return U3(this.config(),this.workspace)}artifactStore(){return zg(this.config(),this.ensureWorkspace())}storageContract(){return a1(this.config(),this.workspace,this.scope)}validateStorage(){return Yg(this.config(),this.workspace)}assertStorageValid(_){let $=this.validateStorage();if(!$.ok)throw Error(`Storage contract invalid before ${_}: ${$.errors.join("; ")}`)}migrateLegacyPath(_={}){let $=this.workspace,D=uN(this.options.scope,this.options.cwd),I=aR({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!I.dry_run&&I.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return I}mergeLegacyPath(_={}){let $=this.workspace,D=uN(this.options.scope,this.options.cwd),I=pR({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!I.dry_run&&I.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return I}setup(_={}){let $=this.ensureWorkspace(),D=this.config({ensure:!0}),I=Nk(_.mode)??D.mode,U=_.apiUrl?E6(_.apiUrl):D.hosted?.api_url?E6(D.hosted.api_url):null,E={...D,mode:I,hosted:{...D.hosted??{},...U?{api_url:U}:{}},storage:_.canonicalExample?wP():D.storage};rP($.configPath,E),this.cachedConfig=E;let j=a1(E,$,this.scope);return{ok:!0,mode:I,api_url:E.hosted?.api_url??null,storage_type:E.storage.type,artifact_uri_prefix:j.artifact_store.uri_prefix,canonical_example:j.canonical_example,config_path:$.configPath,next:I==="hosted"?["knowledge auth login --api-key <key>","knowledge storage status --json"]:["knowledge search <query>","knowledge <prompt>"],message:`Set knowledge mode to ${I}`}}authStatus(_=process.env){return mz(this.config(),_)}saveAuth(_,$=process.env){let D=_.apiUrl??this.config().hosted?.api_url;return nz({api_key:_.apiKey,email:_.email,org_id:_.orgId,org_slug:_.orgSlug,user_id:_.userId,api_url:D},$)}clearAuth(_=process.env){return dz(_)}paths(){let _=this.workspace;return{ok:!0,scope:this.scope,home:_.home,exists:X_(_.home),config_path:_.configPath,config_exists:X_(_.configPath),json_store_path:_.jsonStorePath,json_store_exists:X_(_.jsonStorePath),knowledge_db_path:_.knowledgeDbPath,knowledge_db_exists:X_(_.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(){o1("reading knowledge.db stats");let _=this.workspace;if(!X_(_.knowledgeDbPath))return z9();return Jg(_.knowledgeDbPath)}enqueuePromotion(_){return NR(this.ensureWorkspace().knowledgeDbPath,_)}promotionInbox(_={}){return AR(this.ensureWorkspace().knowledgeDbPath,_)}getPromotion(_){return gR(this.ensureWorkspace().knowledgeDbPath,_)}reviewPromotion(_,$){return OR(this.ensureWorkspace().knowledgeDbPath,_,$)}promoteCandidate(_,$={}){return LR(this.ensureWorkspace().knowledgeDbPath,_,$)}rejectPromotion(_,$={}){return SR(this.ensureWorkspace().knowledgeDbPath,_,$)}durableRecords(_={}){return JR(this.ensureWorkspace().knowledgeDbPath,_)}itemOnlyInventory(_){let $=this.workspace,{items:D,limit:I,includeArchived:U,storePath:E,storeExists:j,storeReadError:N}=_,A=D.filter((P)=>P.archived!==!0),O=U?D:A,L=z9(),J={legacy_items:D.length,active_items:A.length,archived_items:D.length-A.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:I,paths:{json_store_path:$.jsonStorePath,json_store_exists:X_($.jsonStorePath),knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:X_($.knowledgeDbPath),artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:J,legacy_store:{path:E,exists:j,read_error:N,total_items:D.length,active_items:A.length,archived_items:D.length-A.length,items_returned:Math.min(O.length,I)},items:O.slice(0,I).map(P9),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 $=W9(_.limit),D=await this.fetchCloudItems(),I=dD();return this.itemOnlyInventory({items:D,limit:$,includeArchived:_.includeArchived??!1,storePath:I?.baseUrl??"cloud",storeExists:!0,storeReadError:null})}inventory(_={}){let $=this.workspace,D=W9(_.limit),I=_.storePath??$.jsonStorePath,U=tH(I),E=U.items.filter((L)=>L.archived!==!0),j=_.includeArchived?U.items:E;if(!X_($.knowledgeDbPath))return this.itemOnlyInventory({items:U.items,limit:D,includeArchived:_.includeArchived??!1,storePath:I,storeExists:U.exists,storeReadError:U.read_error});h($.knowledgeDbPath);let A=Jg($.knowledgeDbPath),O=w($.knowledgeDbPath);try{let L=G$(a_(O,` + ORDER BY artifact_uri ASC`).all(),E=[];for(let j of U){let N=i4(j.metadata_json),A=typeof N.key==="string"?N.key:null;if(!A?.startsWith(D))continue;let O=A.slice(D.length);if(!O)continue;E.push({id:j.id,artifact_uri:j.artifact_uri,kind:j.kind,current_key:A,repaired_key:c$(O),hash:j.hash,size_bytes:j.size_bytes})}return E}finally{I.close()}}function Uk(_){let $=["--scope",_.scope,"--json"],D=_.tables?.length?["--tables",_.tables.join(",")]:[],I=[LN({id:"sync_status",reason:"Inspect local sync registry, clocks, snapshots, and conflicts.",args:["sync","status",...$]})];if(_.machine&&!T9(_.machine))I.push(LN({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)I.push(LN({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??[])I.push({id:U.id,reason:U.reason,command:U.command,shell_command:U.shell_command});if(_.openConflicts>0)I.push(LN({id:"sync_conflicts",reason:"Review open conflicts before relying on bidirectional sync.",args:["sync","conflicts",...$]}));return I}function Ik(){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(I){throw Error(`KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array: ${I instanceof Error?I.message:String(I)}`)}if(!Array.isArray(D)||!D.every((I)=>typeof I==="string"))throw Error("KNOWLEDGE_SSH_COMMAND_ARGS_JSON must be a JSON string array.");return{command:_,argsPrefix:D}}function Y9(_,$,D,I){let U=Ik(),E=qH(U.command,[...U.argsPrefix,I.target,$],{encoding:"utf8",env:process.env,input:D,maxBuffer:67108864});if((E.status??1)!==0){let j=I.source==="open-machines"?` via ${I.route??"resolved"}:${I.target}`:"";throw Error(`ssh ${_}${j} failed: ${(E.stderr||E.stdout||String(E.status)).trim()}`)}return E.stdout||""}function Q9(_,$,D){try{return JSON.parse(D)}catch(I){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(I)}`)}}function Ek(_,$){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:I}=$;if(typeof D!=="number"||typeof I!=="number"||D<q6||I>k6)throw Error(`Remote knowledge sync export on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function jk(_,$){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:I}=$;if(typeof D!=="number"||typeof I!=="number"||D<q6||I>k6)throw Error(`Remote knowledge sync import on ${_} uses an unsupported sync protocol. Install @hasna/knowledge 0.2.32 or newer on both machines.`)}function Nk(_){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 WN extends Error{code="semantic_query_unavailable";constructor(){super("semantic_query_unavailable: the hosted Knowledge item store has no configured vector index.");this.name="KnowledgeSemanticSearchUnavailableError"}}class b9{options;ensuredWorkspace;cachedConfig;cachedProjectLinksAuthority;constructor(_={}){this.options=_}get scope(){return this.options.scope??"global"}get workspace(){return this.ensuredWorkspace??f1(this.options.scope,this.options.cwd)}ensureWorkspace(){if(!this.ensuredWorkspace)this.ensuredWorkspace=g0(this.workspace.home);return this.ensuredWorkspace}jsonStorePath(){return this.ensureWorkspace().jsonStorePath}itemStore(){let _=this.ensureWorkspace();return t1({storePath:_.jsonStorePath,storePathOverridden:!1})}projectLinksAuthority(){if(this.options.projectLinksAuthority)return this.options.projectLinksAuthority;if(this.cachedProjectLinksAuthority)return this.cachedProjectLinksAuthority;if(h$()){let{apiKey:$}=Gg(process.env);if(!$)throw Error("Knowledge project links require the configured API credential in postgres mode.");return this.cachedProjectLinksAuthority=N9({baseUrl:p1(this.config(),process.env),apiKey:$}),this.cachedProjectLinksAuthority}let _=this.ensureWorkspace();return this.cachedProjectLinksAuthority=ON({databasePath:_.knowledgeDbPath,itemStore:this.itemStore(),options:{packageVersion:E$.version,authorityId:this.options.projectLinksIdentity?.authorityId??process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID??"knowledge",tenantId:this.options.projectLinksIdentity?.tenantId??process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID??"local",corpusId:this.options.projectLinksIdentity?.corpusId??process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID??"knowledge"}}),this.cachedProjectLinksAuthority}async close(){let _=this.cachedProjectLinksAuthority;this.cachedProjectLinksAuthority=void 0,await _?.close()}async listItems(_={}){return this.itemStore().list(_)}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||X_($.configPath))this.cachedConfig=X_($.configPath)?yN($.configPath):vD();return this.cachedConfig}safetyPolicy(){return U3(this.config(),this.workspace)}artifactStore(){return zg(this.config(),this.ensureWorkspace())}storageContract(){return a1(this.config(),this.workspace,this.scope)}validateStorage(){return Yg(this.config(),this.workspace)}assertStorageValid(_){let $=this.validateStorage();if(!$.ok)throw Error(`Storage contract invalid before ${_}: ${$.errors.join("; ")}`)}migrateLegacyPath(_={}){let $=this.workspace,D=uN(this.options.scope,this.options.cwd),I=aR({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!I.dry_run&&I.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return I}mergeLegacyPath(_={}){let $=this.workspace,D=uN(this.options.scope,this.options.cwd),I=pR({scope:this.scope,current:$,legacy:D,approveWrite:_.approveWrite,approvedBy:_.approvedBy});if(!I.dry_run&&I.ok)this.ensuredWorkspace=void 0,this.cachedConfig=void 0;return I}setup(_={}){let $=this.ensureWorkspace(),D=this.config({ensure:!0}),I=Nk(_.mode)??D.mode,U=_.apiUrl?E6(_.apiUrl):D.hosted?.api_url?E6(D.hosted.api_url):null,E={...D,mode:I,hosted:{...D.hosted??{},...U?{api_url:U}:{}},storage:_.canonicalExample?wP():D.storage};rP($.configPath,E),this.cachedConfig=E;let j=a1(E,$,this.scope);return{ok:!0,mode:I,api_url:E.hosted?.api_url??null,storage_type:E.storage.type,artifact_uri_prefix:j.artifact_store.uri_prefix,canonical_example:j.canonical_example,config_path:$.configPath,next:I==="hosted"?["knowledge auth login --api-key <key>","knowledge storage status --json"]:["knowledge search <query>","knowledge <prompt>"],message:`Set knowledge mode to ${I}`}}authStatus(_=process.env){return mz(this.config(),_)}saveAuth(_,$=process.env){let D=_.apiUrl??this.config().hosted?.api_url;return nz({api_key:_.apiKey,email:_.email,org_id:_.orgId,org_slug:_.orgSlug,user_id:_.userId,api_url:D},$)}clearAuth(_=process.env){return dz(_)}paths(){let _=this.workspace;return{ok:!0,scope:this.scope,home:_.home,exists:X_(_.home),config_path:_.configPath,config_exists:X_(_.configPath),json_store_path:_.jsonStorePath,json_store_exists:X_(_.jsonStorePath),knowledge_db_path:_.knowledgeDbPath,knowledge_db_exists:X_(_.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 c(this.ensureWorkspace().knowledgeDbPath)}dbStats(){o1("reading knowledge.db stats");let _=this.workspace;if(!X_(_.knowledgeDbPath))return z9();return Jg(_.knowledgeDbPath)}enqueuePromotion(_){return NR(this.ensureWorkspace().knowledgeDbPath,_)}promotionInbox(_={}){return AR(this.ensureWorkspace().knowledgeDbPath,_)}getPromotion(_){return gR(this.ensureWorkspace().knowledgeDbPath,_)}reviewPromotion(_,$){return OR(this.ensureWorkspace().knowledgeDbPath,_,$)}promoteCandidate(_,$={}){return SR(this.ensureWorkspace().knowledgeDbPath,_,$)}rejectPromotion(_,$={}){return LR(this.ensureWorkspace().knowledgeDbPath,_,$)}durableRecords(_={}){return JR(this.ensureWorkspace().knowledgeDbPath,_)}itemOnlyInventory(_){let $=this.workspace,{items:D,limit:I,includeArchived:U,storePath:E,storeExists:j,storeReadError:N}=_,A=D.filter((P)=>P.archived!==!0),O=U?D:A,S=z9(),L={legacy_items:D.length,active_items:A.length,archived_items:D.length-A.length,schema_version:S.schema_version,sources:S.sources,source_revisions:S.source_revisions,chunks:S.chunks,wiki_pages:S.wiki_pages,citations:S.citations,indexes:S.indexes,runs:S.runs,run_events:S.run_events,storage_objects:S.storage_objects,embeddings:S.embeddings,vector_entries:S.vector_entries,reindex_queue:S.reindex_queue,redaction_findings:S.redaction_findings,audit_events:S.audit_events,approval_gates:S.approval_gates,knowledge_machines:S.knowledge_machines,sync_snapshots:S.sync_snapshots,sync_changes:S.sync_changes,sync_conflicts:S.sync_conflicts,sync_table_clocks:S.sync_table_clocks,sync_imports:S.sync_imports,promotion_candidates:S.promotion_candidates,durable_records:S.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:I,paths:{json_store_path:$.jsonStorePath,json_store_exists:X_($.jsonStorePath),knowledge_db_path:$.knowledgeDbPath,knowledge_db_exists:X_($.knowledgeDbPath),artifacts_dir:$.artifactsDir,indexes_dir:$.indexesDir,logs_dir:$.logsDir,wiki_dir:$.wikiDir},summary:L,legacy_store:{path:E,exists:j,read_error:N,total_items:D.length,active_items:A.length,archived_items:D.length-A.length,items_returned:Math.min(O.length,I)},items:O.slice(0,I).map(P9),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 $=W9(_.limit),D=await this.fetchCloudItems(),I=dD();return this.itemOnlyInventory({items:D,limit:$,includeArchived:_.includeArchived??!1,storePath:I?.baseUrl??"cloud",storeExists:!0,storeReadError:null})}inventory(_={}){let $=this.workspace,D=W9(_.limit),I=_.storePath??$.jsonStorePath,U=tH(I),E=U.items.filter((S)=>S.archived!==!0),j=_.includeArchived?U.items:E;if(!X_($.knowledgeDbPath))return this.itemOnlyInventory({items:U.items,limit:D,includeArchived:_.includeArchived??!1,storePath:I,storeExists:U.exists,storeReadError:U.read_error});c($.knowledgeDbPath);let A=Jg($.knowledgeDbPath),O=w($.knowledgeDbPath);try{let S=G$(e_(O,` SELECT s.id, s.uri, @@ -1429,7 +1435,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 ? - `,[D]),["metadata_json","acl_json"]),J=G$(a_(O,` + `,[D]),["metadata_json","acl_json"]),L=G$(e_(O,` SELECT sr.id, s.uri AS source_uri, @@ -1442,7 +1448,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 ? - `,[D])),P=G$(a_(O,` + `,[D])),P=G$(e_(O,` SELECT c.id, c.kind, @@ -1463,22 +1469,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 ? - `,[D])),z=G$(a_(O,` + `,[D])),z=G$(e_(O,` 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 ? - `,[D])),S=G$(a_(O,` + `,[D])),G=G$(e_(O,` 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 ? - `,[D])),W=G$(a_(O,` + `,[D])),J=G$(e_(O,` 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 ? - `,[D])),X=G$(a_(O,` + `,[D])),W=G$(e_(O,` SELECT id, type, @@ -1494,18 +1500,18 @@ Pages should be concise, cited, and organized for both humans and agents. FROM runs ORDER BY updated_at DESC, created_at DESC LIMIT ? - `,[D])),G=a_(O,` + `,[D])),X=e_(O,` SELECT provider, model, dimensions, status, COUNT(*) AS entries FROM vector_index_entries GROUP BY provider, model, dimensions, status ORDER BY entries DESC LIMIT ? - `,[D]),R=G$(a_(O,` + `,[D]),R=G$(e_(O,` 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 ? - `,[D])),K=G$(a_(O,` + `,[D])),T=G$(e_(O,` SELECT machine_id, hostname, @@ -1523,7 +1529,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 ? - `,[D]),["tailscale_ips_json","capabilities_json","metadata_json"]),Y=G$(a_(O,` + `,[D]),["tailscale_ips_json","capabilities_json","metadata_json"]),Y=G$(e_(O,` SELECT id, entity_kind, @@ -1540,17 +1546,17 @@ Pages should be concise, cited, and organized for both humans and agents. FROM knowledge_sync_conflicts ORDER BY created_at DESC LIMIT ? - `,[D])),T=G$(a_(O,` + `,[D])),Q=G$(e_(O,` 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 ? - `,[D])),F=G$(a_(O,` + `,[D])),F=G$(e_(O,` SELECT id, event_type, action, target_uri, decision, metadata_json, created_at FROM audit_events ORDER BY created_at DESC LIMIT ? - `,[D])),k=a_(O,` + `,[D])),q=e_(O,` SELECT id, record_kind, @@ -1575,7 +1581,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 ? - `,[D]).map(lH),B=a_(O,` + `,[D]).map(lH),Z=e_(O,` SELECT id, record_kind, @@ -1597,8 +1603,8 @@ 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 ? - `,[D]).map(iH),c={legacy_items:U.items.length,active_items:E.length,archived_items:U.items.length-E.length,schema_version:A.schema_version,sources:A.sources,source_revisions:A.source_revisions,chunks:A.chunks,wiki_pages:A.wiki_pages,citations:A.citations,indexes:A.indexes,runs:A.runs,run_events:A.run_events,storage_objects:A.storage_objects,embeddings:A.embeddings,vector_entries:A.vector_entries,reindex_queue:A.reindex_queue,redaction_findings:A.redaction_findings,audit_events:A.audit_events,approval_gates:A.approval_gates,knowledge_machines:A.knowledge_machines,sync_snapshots:A.sync_snapshots,sync_changes:A.sync_changes,sync_conflicts:A.sync_conflicts,sync_table_clocks:A.sync_table_clocks,sync_imports:A.sync_imports,promotion_candidates:A.promotion_candidates,durable_records:A.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:D,paths:{json_store_path:I,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:c,legacy_store:{path:I,exists:U.exists,read_error:U.read_error,total_items:U.items.length,active_items:E.length,archived_items:U.items.length-E.length,items_returned:Math.min(j.length,D)},items:j.slice(0,D).map(P9),sources:L,source_revisions:J,chunks:P,wiki_pages:z,indexes:S,storage_objects:W,runs:X,vector_indexes:G,reindex_queue:R,machines:K,sync_conflicts:Y,approval_gates:T,audit_events:F,promotion_candidates:k,durable_records:B,message:`${U.items.length} item(s), ${A.sources} source(s), ${A.chunks} chunk(s), ${A.wiki_pages} wiki page(s), ${A.storage_objects} artifact(s)`}}finally{O.close()}}assertAppWikiWrite(_){mD({scope:this.scope,workspace:this.workspace,safetyPolicy:this.safetyPolicy(),allowGlobal:_})}async initAppWiki(_={}){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return Q3({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async addAppWikiNote(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return K3({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(!X_($.knowledgeDbPath))return[];return T3({dbPath:$.knowledgeDbPath,limit:_.limit})}async getAppWikiNote(_,$={}){let D=this.workspace;if(!X_(D.knowledgeDbPath))return null;return F3({dbPath:D.knowledgeDbPath,store:this.artifactStore(),id:_,includeContent:$.includeContent})}async addAppWikiSourceRef(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return V3({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 cR(this.artifactStore()),D=w(_.knowledgeDbPath);try{j6(D,$.artifacts),nR(D,$.artifacts)}finally{D.close()}return $}async compileWiki(_={}){let $=this.ensureWorkspace();return xR({..._,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 uR({dbPath:$.knowledgeDbPath,store:this.artifactStore(),prompt:_.prompt,answer:_.answer,context:D,approveWrite:_.approveWrite})}lintWiki(){let _=this.ensureWorkspace();return yR({dbPath:_.knowledgeDbPath})}async ingestManifest(_){let $=this.ensureWorkspace();return z3({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}async ingestSource(_,$){let D=this.ensureWorkspace();return II({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$,config:this.config(),safetyPolicy:this.safetyPolicy()})}async importRulesProvenance(_={}){let $=_.dryRun!==!1,D=$?this.workspace:this.ensureWorkspace();return MR({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 $I({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$.purpose,limit:$.limit,safetyPolicy:this.safetyPolicy()})}async consumeOutbox(_){let $=this.ensureWorkspace();return uG({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}reindexHealth(_={}){let $=this.workspace;if(!X_($.knowledgeDbPath))return aH();return zR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}enqueueReindex(_={}){let $=this.ensureWorkspace();return KW({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async refreshEmbeddings(_={}){let $=this.ensureWorkspace();return XR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}providerStatus(_=process.env){return H3(this.config(),_)}modelRegistry(){return kg(this.config())}embeddingStatus(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return sH();return r3(_.knowledgeDbPath)}async indexEmbeddings(_={}){let $=this.ensureWorkspace();return NI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}isApiMode(){return h$()}cloudStore(){let _=dD();if(!_)throw Error("knowledge: cloud store requested but not resolvable (check HASNA_KNOWLEDGE_API_URL + HASNA_KNOWLEDGE_API_KEY).");return _}async fetchCloudItems(){return i1(this.cloudStore())}async semanticSearch(_){let $=this.workspace;if(this.isApiMode())throw new WN;if(!X_($.knowledgeDbPath))return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:[]};return gI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async search(_){let $=this.workspace;if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new WN;let I=await this.cloudStore().search({query:_.query,archive:"active",limit:_.limit,offset:_.offset});return xg(I.items,_,[],I.total)}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){if(X_(D))return SI({..._,legacyStorePath:D,config:this.config()});return M9(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return LI({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async retrieveContext(_){let $=this.workspace;if(this.isApiMode()){let I=await this.search(_);return A6(I,{contextChars:_.contextChars})}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){if(X_(D)){let I=await SI({..._,legacyStorePath:D,config:this.config()});return A6(I,{contextChars:_.contextChars})}return pH(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return F0({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async contextPack(_){let $=this.workspace;if(this.isApiMode()){let I=(_.query??_.topic??"").trim();if(I&&_.source!=="loops"&&_.source!=="runs"){let U=await this.search({..._,query:I}),E=A6(U,{contextChars:_.contextChars});return G9(_,E,this.safetyPolicy())}return R9(_)}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){let I=(_.query??_.topic??"").trim();if(I&&_.source!=="loops"&&_.source!=="runs"&&X_(D)){let U=await SI({..._,query:I,legacyStorePath:D,config:this.config()}),E=A6(U,{contextChars:_.contextChars});return G9(_,E,this.safetyPolicy())}return R9(_)}return SX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config(),safetyPolicy:this.safetyPolicy()})}async runPrompt(_){if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new WN;let I=await this.cloudStore().search({query:_.prompt,archive:"active",limit:_.limit,offset:_.offset}),U=xg(I.items,{query:_.prompt,limit:_.limit,offset:_.offset,semantic:!1},[],I.total);return UX(I.items.map((E)=>E.item),{..._,config:this.config()},U)}let $=this.ensureWorkspace(),D=_.legacyStorePath??$.jsonStorePath;if(!_.legacyStorePath)xD(D);return DX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async webSearch(_){let $=this.ensureWorkspace();return kR({..._,dbPath:$.knowledgeDbPath,config:this.config(),safetyPolicy:this.safetyPolicy()})}async machineTopology(_={}){let $=this.workspace;return _R({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}async machinePreflight(_={}){let $=this.workspace;return UR({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}syncStatus(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return _k({scope:this.scope,workspaceHome:_.home});return wX({dbPath:_.knowledgeDbPath,scope:this.scope,workspaceHome:_.home})}async syncDoctor(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let D=this.syncStatus(),I=this.storageContract(),U=this.validateStorage(),E=$k($.knowledgeDbPath,I),j=_.machine?.trim()||null,N=_.peerWorkspace?.trim()||null,A=[],O=null,L=null;if(j&&!T9(j)){let W=await XW({machineId:j,includeTailscale:_.includeTailscale});O=cW(W),A.push(...W.warnings)}if(j||N){let W=await sj({machineId:j??hW($),peerWorkspace:N,includeTailscale:_.includeTailscale});if(j&&!N&&(O?.source==="raw"||!W.ok||!W.project_root)){let X=O9($.knowledgeDbPath,j);if(X){if(O?.source==="raw"&&X.ssh_target)O=cW(L9(X,j,{target:O.target,route:O.route,targetKind:O.target_kind,confidence:O.confidence,source:O.source,adapter:O.adapter,evidence:O.evidence,cacheability:O.cacheability,warnings:[]}));if(!W.ok||!W.project_root){let G=S9(X,j,W);if(G)L=X1(G,G.project_root),A.push(...G.warnings)}}}L=W.ok&&W.project_root?X1(W,W.project_root):L??{...X1(W,N??""),project_root:W.project_root??N??""},A.push(...W.warnings)}if(!U.ok)A.push(...U.errors.map((W)=>`storage:${W}`));let J=nH($.knowledgeDbPath,L);if(!J.ok)A.push("open_files_boundary_raw_payload_sentinels");if(!E.ok)A.push(...E.warnings);let P=L?.diagnostics.filter((W)=>W.severity==="fail")??[],z=U.ok&&E.ok&&J.ok&&P.length===0&&(L?.project_root!==""||!L),S=Uk({scope:this.scope,machine:j,peerWorkspace:N,tables:_.tables,resolvedWorkspace:L,openConflicts:D.conflicts.open});return{ok:z,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:I,validation:U,artifact_manifest:E},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:J,resolved_route:O,resolved_workspace:L,recommended_commands:S,warnings:[...new Set(A)],message:z?`Sync readiness ok: ${D.clocks.total} table clock(s), ${D.conflicts.open} open conflict(s)`:`Sync readiness needs attention: ${[...new Set(A)].join(", ")||"workspace diagnostics failed"}`}}repairArtifactManifestKeys(_={}){let $=this.ensureWorkspace();h($.knowledgeDbPath);let D=this.storageContract(),I=tW(D),U=Dk($.knowledgeDbPath,D),E=_.dryRun===!0||_.approveWrite!==!0;if(U.length===0)return{ok:!0,dry_run:E,approval_required:!1,storage_type:D.storage_type,storage_prefix:I,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:I,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:I,candidates:U,repaired:0,audit_event_id:null,message:"Artifact key repair requires --approve-write and --approved-by <name>"};let j=w($.knowledgeDbPath);try{let N=new Date().toISOString();j.transaction((L)=>{let J=j.query("UPDATE storage_objects SET metadata_json = ?, updated_at = ? WHERE id = ?"),P=j.query("SELECT id, metadata_json FROM storage_objects").all(),z=new Map(P.map((S)=>[S.id,i4(S.metadata_json)]));for(let S of L){let W=z.get(S.id)??{};W.key=S.repaired_key,J.run(JSON.stringify(W),N,S.id)}})(U);let O=G_(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:I,artifact_uris:U.map((L)=>L.artifact_uri)}});return{ok:!0,dry_run:!1,approval_required:!1,storage_type:D.storage_type,storage_prefix:I,candidates:U,repaired:U.length,audit_event_id:O,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 vX({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),topology:D,machineId:_.machineId})}syncConflicts(_={}){let $=this.workspace;if(!X_($.knowledgeDbPath))return[];return rX($.knowledgeDbPath,_)}syncConflict(_){let $=this.ensureWorkspace(),D=TI($.knowledgeDbPath,_);if(!D)throw Error(`Sync conflict not found: ${_}`);return D}proposeSyncConflictResolution(_){let $=this.ensureWorkspace();return $U($.knowledgeDbPath,_)}async proposeSyncConflictResolutionWithAi(_){let $=this.ensureWorkspace();return fG({dbPath:$.knowledgeDbPath,id:_.id,config:this.config(),modelRef:_.modelRef,fake:_.fake,env:_.env})}resolveSyncConflict(_){let $=this.ensureWorkspace(),D=$U($.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 <name>"};let I=uX($.knowledgeDbPath,{id:_.id,strategy:_.strategy??D.proposed_strategy,approvedBy:_.approvedBy,proposedPatchUri:_.proposedPatchUri}),U=w($.knowledgeDbPath);try{let E=G_(U,{event_type:"sync_conflict_resolution",action:"sync.conflict.resolve",target_uri:`knowledge-sync-conflict://${_.id}`,decision:"allow",metadata:{conflict_id:_.id,entity_kind:I.entity_kind,entity_id:I.entity_id,strategy:I.resolution_strategy,approved_by:I.approved_by,proposed_patch_uri:I.proposed_patch_uri}});return{ok:!0,approval_required:!1,conflict:I,audit_event_id:E,message:`Resolved sync conflict ${_.id}`}}finally{U.close()}}syncMachines(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return[];return sg(_.knowledgeDbPath)}exportSyncBundle(_={}){let $=this.ensureWorkspace();return this.assertStorageValid("sync export"),h($.knowledgeDbPath),_U({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),KI({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,I=this.ensureWorkspace();h(I.knowledgeDbPath);let U=_.tables?.length?["--tables",_.tables.join(",")]:[],E=_.includeArtifactContent===!1?["--no-artifact-content"]:[],j=["--scope",this.scope,"--json"],N=await XW({machineId:_.machine,includeTailscale:_.includeTailscale}),A=await sj({machineId:_.machine,peerWorkspace:_.peerWorkspace,includeTailscale:_.includeTailscale});if(!_.peerWorkspace&&N.source==="raw"||!A.ok||!A.project_root){let z=O9(I.knowledgeDbPath,_.machine);if(z){if(!_.peerWorkspace&&N.source==="raw"&&z.ssh_target)N=L9(z,_.machine,N);if(!A.ok||!A.project_root){let S=S9(z,_.machine,A);if(S)A=S}}}if(!A.ok||!A.project_root)throw Error([`Unable to resolve peer workspace for ${_.machine}.`,"Pass --peer-workspace <repo-or-knowledge-home> or configure workspace path mapping in machines.",A.warnings.length?`Warnings: ${A.warnings.join(", ")}`:null].filter(Boolean).join(" "));let O=A.project_root,L={ok:!0,dry_run:D,direction:$,transport:"ssh",machine:_.machine,resolved_machine:N.target,resolved_route:cW(N),resolved_workspace:X1(A,A.project_root),peer_workspace:O,message:""},J=!1,P=()=>{if(D||J)return;kX(I.knowledgeDbPath,{machineId:_.machine,route:N,workspace:A}),J=!0};if($==="pull"||$==="both"){let z=A9(O,["sync","export",...j,...U,...E]),S=Y9(_.machine,z,void 0,N),W=Q9(_.machine,"sync export",S);Ek(_.machine,W),L.pull=await this.importSyncBundle({bundle:W,dryRun:D,direction:"pull",machineId:_.machineId??null})}if($==="push"||$==="both"){P();let z=this.exportSyncBundle({machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:!D}),S=A9(O,["sync","import",...j,...D?["--dry-run"]:[]]),W=Q9(_.machine,"sync import",Y9(_.machine,S,JSON.stringify(z),N));jk(_.machine,W),L.push=W}return L.ok=(L.pull?.ok??!0)&&(L.push?.ok??!0),P(),L.message=[J9(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 I=K9(_.peerWorkspace),U=wH(I);h(U.knowledgeDbPath);let E=yN(U.configPath),j=a1(E,U,this.scope),N=zg(E,U),A=_.machineId??hW(D),O=hW(U),L=await sj({machineId:_.machineId??O,peerWorkspace:I,includeTailscale:!1}),J=()=>_U({dbPath:D.knowledgeDbPath,scope:this.scope,workspaceHome:D.home,storage:this.storageContract(),machineId:A,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),P=()=>_U({dbPath:U.knowledgeDbPath,scope:this.scope,workspaceHome:U.home,storage:j,machineId:O,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),z={ok:!0,dry_run:_.dryRun===!0,direction:$,resolved_workspace:X1(L,L.project_root??I),message:""};if($==="pull"||$==="both")z.pull=await KI({targetDbPath:D.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:D.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:P(),targetBundle:J(),direction:"pull",dryRun:_.dryRun,localMachineId:A});if($==="push"||$==="both")z.push=await KI({targetDbPath:U.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:U.home,targetStorage:j,targetStore:N,bundle:J(),targetBundle:P(),direction:"push",dryRun:_.dryRun,localMachineId:O});return z.ok=(z.pull?.ok??!0)&&(z.push?.ok??!0),z.message=[J9(z.resolved_workspace),z.pull?`pull: ${z.pull.message}`:null,z.push?`push: ${z.push.message}`:null].filter(Boolean).join("; "),z}}function zN(_={}){return new b9(_)}import{createHash as Z9}from"crypto";var gk=Object.defineProperty,Ak=(_)=>_;function Ok(_,$){this[_]=Ak.bind(null,$)}var Lk=(_,$)=>{for(var D in $)gk(_,D,{get:$[D],enumerable:!0,configurable:!0,set:Ok.bind($,D)})},g={};Lk(g,{void:()=>ok,util:()=>I_,unknown:()=>ik,union:()=>sk,undefined:()=>dk,tuple:()=>Dq,transformer:()=>q9,symbol:()=>nk,string:()=>l9,strictObject:()=>ak,setErrorMap:()=>Wk,set:()=>Eq,record:()=>Uq,quotelessJson:()=>Sk,promise:()=>Lq,preprocess:()=>Wq,pipeline:()=>Pq,ostring:()=>zq,optional:()=>Sq,onumber:()=>Xq,oboolean:()=>Gq,objectUtil:()=>eW,object:()=>ek,number:()=>i9,nullable:()=>Jq,null:()=>mk,never:()=>tk,nativeEnum:()=>Oq,nan:()=>yk,map:()=>Iq,makeIssue:()=>RN,literal:()=>gq,lazy:()=>Nq,late:()=>xk,isValid:()=>t4,isDirty:()=>sW,isAsync:()=>Q1,isAborted:()=>aW,intersection:()=>$q,instanceof:()=>uk,getParsedType:()=>Q6,getErrorMap:()=>GN,function:()=>jq,enum:()=>Aq,effect:()=>q9,discriminatedUnion:()=>_q,defaultErrorMap:()=>PD,datetimeRegex:()=>n9,date:()=>ck,custom:()=>m9,coerce:()=>Rq,boolean:()=>t9,bigint:()=>hk,array:()=>pk,any:()=>lk,addIssueToContext:()=>x,ZodVoid:()=>T1,ZodUnknown:()=>p6,ZodUnion:()=>RD,ZodUndefined:()=>XD,ZodType:()=>__,ZodTuple:()=>p$,ZodTransformer:()=>Q$,ZodSymbol:()=>K1,ZodString:()=>q$,ZodSet:()=>e4,ZodSchema:()=>__,ZodRecord:()=>F1,ZodReadonly:()=>BD,ZodPromise:()=>a4,ZodPipeline:()=>M1,ZodParsedType:()=>y,ZodOptional:()=>v$,ZodObject:()=>H_,ZodNumber:()=>e6,ZodNullable:()=>K6,ZodNull:()=>GD,ZodNever:()=>o$,ZodNativeEnum:()=>TD,ZodNaN:()=>B1,ZodMap:()=>V1,ZodLiteral:()=>KD,ZodLazy:()=>QD,ZodIssueCode:()=>C,ZodIntersection:()=>YD,ZodFunction:()=>JD,ZodFirstPartyTypeKind:()=>i,ZodError:()=>S$,ZodEnum:()=>s6,ZodEffects:()=>Q$,ZodDiscriminatedUnion:()=>KN,ZodDefault:()=>FD,ZodDate:()=>o4,ZodCatch:()=>VD,ZodBranded:()=>TN,ZodBoolean:()=>zD,ZodBigInt:()=>a6,ZodArray:()=>C$,ZodAny:()=>p4,Schema:()=>__,ParseStatus:()=>i_,OK:()=>_$,NEVER:()=>Yq,INVALID:()=>l,EMPTY_PATH:()=>Pk,DIRTY:()=>SD,BRAND:()=>fk});var I_;(function(_){_.assertEqual=(U)=>{};function $(U){}_.assertIs=$;function D(U){throw Error()}_.assertNever=D,_.arrayToEnum=(U)=>{let E={};for(let j of U)E[j]=j;return E},_.getValidEnumValues=(U)=>{let E=_.objectKeys(U).filter((N)=>typeof U[U[N]]!=="number"),j={};for(let N of E)j[N]=U[N];return _.objectValues(j)},_.objectValues=(U)=>{return _.objectKeys(U).map(function(E){return U[E]})},_.objectKeys=typeof Object.keys==="function"?(U)=>Object.keys(U):(U)=>{let E=[];for(let j in U)if(Object.prototype.hasOwnProperty.call(U,j))E.push(j);return E},_.find=(U,E)=>{for(let j of U)if(E(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 I(U,E=" | "){return U.map((j)=>typeof j==="string"?`'${j}'`:j).join(E)}_.joinValues=I,_.jsonStringifyReplacer=(U,E)=>{if(typeof E==="bigint")return E.toString();return E}})(I_||(I_={}));var eW;(function(_){_.mergeShapes=($,D)=>{return{...$,...D}}})(eW||(eW={}));var y=I_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Q6=(_)=>{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}},C=I_.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"]),Sk=(_)=>{return JSON.stringify(_,null,2).replace(/"([^"]+)":/g,"$1:")};class S$ 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:[]},I=(U)=>{for(let E of U.issues)if(E.code==="invalid_union")E.unionErrors.map(I);else if(E.code==="invalid_return_type")I(E.returnTypeError);else if(E.code==="invalid_arguments")I(E.argumentsError);else if(E.path.length===0)D._errors.push($(E));else{let j=D,N=0;while(N<E.path.length){let A=E.path[N];if(N!==E.path.length-1)j[A]=j[A]||{_errors:[]};else j[A]=j[A]||{_errors:[]},j[A]._errors.push($(E));j=j[A],N++}}};return I(this),D}static assert(_){if(!(_ instanceof S$))throw Error(`Not a ZodError: ${_}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,I_.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(_=($)=>$.message){let $={},D=[];for(let I of this.issues)if(I.path.length>0){let U=I.path[0];$[U]=$[U]||[],$[U].push(_(I))}else D.push(_(I));return{formErrors:D,fieldErrors:$}}get formErrors(){return this.flatten()}}S$.create=(_)=>{return new S$(_)};var Jk=(_,$)=>{let D;switch(_.code){case C.invalid_type:if(_.received===y.undefined)D="Required";else D=`Expected ${_.expected}, received ${_.received}`;break;case C.invalid_literal:D=`Invalid literal value, expected ${JSON.stringify(_.expected,I_.jsonStringifyReplacer)}`;break;case C.unrecognized_keys:D=`Unrecognized key(s) in object: ${I_.joinValues(_.keys,", ")}`;break;case C.invalid_union:D="Invalid input";break;case C.invalid_union_discriminator:D=`Invalid discriminator value. Expected ${I_.joinValues(_.options)}`;break;case C.invalid_enum_value:D=`Invalid enum value. Expected ${I_.joinValues(_.options)}, received '${_.received}'`;break;case C.invalid_arguments:D="Invalid function arguments";break;case C.invalid_return_type:D="Invalid function return type";break;case C.invalid_date:D="Invalid date";break;case C.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 I_.assertNever(_.validation);else if(_.validation!=="regex")D=`Invalid ${_.validation}`;else D="Invalid";break;case C.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 C.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 C.custom:D="Invalid input";break;case C.invalid_intersection_types:D="Intersection results could not be merged";break;case C.not_multiple_of:D=`Number must be a multiple of ${_.multipleOf}`;break;case C.not_finite:D="Number must be finite";break;default:D=$.defaultError,I_.assertNever(_)}return{message:D}},PD=Jk,y9=PD;function Wk(_){y9=_}function GN(){return y9}var RN=(_)=>{let{data:$,path:D,errorMaps:I,issueData:U}=_,E=[...D,...U.path||[]],j={...U,path:E};if(U.message!==void 0)return{...U,path:E,message:U.message};let N="",A=I.filter((O)=>!!O).slice().reverse();for(let O of A)N=O(j,{data:$,defaultError:N}).message;return{...U,path:E,message:N}},Pk=[];function x(_,$){let D=GN(),I=RN({issueData:$,data:_.data,path:_.path,errorMaps:[_.common.contextualErrorMap,_.schemaErrorMap,D,D===PD?void 0:PD].filter((U)=>!!U)});_.common.issues.push(I)}class i_{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 I of $){if(I.status==="aborted")return l;if(I.status==="dirty")_.dirty();D.push(I.value)}return{status:_.value,value:D}}static async mergeObjectAsync(_,$){let D=[];for(let I of $){let U=await I.key,E=await I.value;D.push({key:U,value:E})}return i_.mergeObjectSync(_,D)}static mergeObjectSync(_,$){let D={};for(let I of $){let{key:U,value:E}=I;if(U.status==="aborted")return l;if(E.status==="aborted")return l;if(U.status==="dirty")_.dirty();if(E.status==="dirty")_.dirty();if(U.value!=="__proto__"&&(typeof E.value<"u"||I.alwaysSet))D[U.value]=E.value}return{status:_.value,value:D}}}var l=Object.freeze({status:"aborted"}),SD=(_)=>({status:"dirty",value:_}),_$=(_)=>({status:"valid",value:_}),aW=(_)=>_.status==="aborted",sW=(_)=>_.status==="dirty",t4=(_)=>_.status==="valid",Q1=(_)=>typeof Promise<"u"&&_ instanceof Promise,d;(function(_){_.errToObj=($)=>typeof $==="string"?{message:$}:$||{},_.toString=($)=>typeof $==="string"?$:$?.message})(d||(d={}));class w${constructor(_,$,D,I){this._cachedPath=[],this.parent=_,this.data=$,this._path=D,this._key=I}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 H9=(_,$)=>{if(t4($))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 S$(_.common.issues);return this._error=D,this._error}}}};function a(_){if(!_)return{};let{errorMap:$,invalid_type_error:D,required_error:I,description:U}=_;if($&&(D||I))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:A}=_;if(j.code==="invalid_enum_value")return{message:A??N.defaultError};if(typeof N.data>"u")return{message:A??I??N.defaultError};if(j.code!=="invalid_type")return{message:N.defaultError};return{message:A??D??N.defaultError}},description:U}}class __{get description(){return this._def.description}_getType(_){return Q6(_.data)}_getOrReturnCtx(_,$){return $||{common:_.parent.common,data:_.data,parsedType:Q6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}_processInputParams(_){return{status:new i_,ctx:{common:_.parent.common,data:_.data,parsedType:Q6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}}_parseSync(_){let $=this._parse(_);if(Q1($))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:Q6(_)},I=this._parseSync({data:_,path:D.path,parent:D});return H9(D,I)}"~validate"(_){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:Q6(_)};if(!this["~standard"].async)try{let D=this._parseSync({data:_,path:[],parent:$});return t4(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)=>t4(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:Q6(_)},I=this._parse({data:_,path:D.path,parent:D}),U=await(Q1(I)?I:Promise.resolve(I));return H9(D,U)}refine(_,$){let D=(I)=>{if(typeof $==="string"||typeof $>"u")return{message:$};else if(typeof $==="function")return $(I);else return $};return this._refinement((I,U)=>{let E=_(I),j=()=>U.addIssue({code:C.custom,...D(I)});if(typeof Promise<"u"&&E instanceof Promise)return E.then((N)=>{if(!N)return j(),!1;else return!0});if(!E)return j(),!1;else return!0})}refinement(_,$){return this._refinement((D,I)=>{if(!_(D))return I.addIssue(typeof $==="function"?$(D,I):$),!1;else return!0})}_refinement(_){return new Q$({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 v$.create(this,this._def)}nullable(){return K6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return C$.create(this)}promise(){return a4.create(this,this._def)}or(_){return RD.create([this,_],this._def)}and(_){return YD.create(this,_,this._def)}transform(_){return new Q$({...a(this._def),schema:this,typeName:i.ZodEffects,effect:{type:"transform",transform:_}})}default(_){let $=typeof _==="function"?_:()=>_;return new FD({...a(this._def),innerType:this,defaultValue:$,typeName:i.ZodDefault})}brand(){return new TN({typeName:i.ZodBranded,type:this,...a(this._def)})}catch(_){let $=typeof _==="function"?_:()=>_;return new VD({...a(this._def),innerType:this,catchValue:$,typeName:i.ZodCatch})}describe(_){return new this.constructor({...this._def,description:_})}pipe(_){return M1.create(this,_)}readonly(){return BD.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var zk=/^c[^\s-]{8,}$/i,Xk=/^[0-9a-z]+$/,Gk=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Rk=/^[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,Yk=/^[a-z0-9_-]{21}$/i,Qk=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Kk=/^[-+]?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)?)??$/,Tk=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Fk="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",oW,Vk=/^(?:(?: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])$/,Bk=/^(?:(?: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])$/,Mk=/^(([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]))$/,bk=/^(([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])$/,Zk=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Hk=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,h9="((\\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])))",kk=new RegExp(`^${h9}$`);function c9(_){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 qk(_){return new RegExp(`^${c9(_)}$`)}function n9(_){let $=`${h9}T${c9(_)}`,D=[];if(D.push(_.local?"Z?":"Z"),_.offset)D.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${D.join("|")})`,new RegExp(`^${$}$`)}function Ck(_,$){if(($==="v4"||!$)&&Vk.test(_))return!0;if(($==="v6"||!$)&&Mk.test(_))return!0;return!1}function vk(_,$){if(!Qk.test(_))return!1;try{let[D]=_.split(".");if(!D)return!1;let I=D.replace(/-/g,"+").replace(/_/g,"/").padEnd(D.length+(4-D.length%4)%4,"="),U=JSON.parse(atob(I));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 wk(_,$){if(($==="v4"||!$)&&Bk.test(_))return!0;if(($==="v6"||!$)&&bk.test(_))return!0;return!1}class q$ extends __{_parse(_){if(this._def.coerce)_.data=String(_.data);if(this._getType(_)!==y.string){let U=this._getOrReturnCtx(_);return x(U,{code:C.invalid_type,expected:y.string,received:U.parsedType}),l}let D=new i_,I=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.length<U.value)I=this._getOrReturnCtx(_,I),x(I,{code:C.too_small,minimum:U.value,type:"string",inclusive:!0,exact:!1,message:U.message}),D.dirty()}else if(U.kind==="max"){if(_.data.length>U.value)I=this._getOrReturnCtx(_,I),x(I,{code:C.too_big,maximum:U.value,type:"string",inclusive:!0,exact:!1,message:U.message}),D.dirty()}else if(U.kind==="length"){let E=_.data.length>U.value,j=_.data.length<U.value;if(E||j){if(I=this._getOrReturnCtx(_,I),E)x(I,{code:C.too_big,maximum:U.value,type:"string",inclusive:!0,exact:!0,message:U.message});else if(j)x(I,{code:C.too_small,minimum:U.value,type:"string",inclusive:!0,exact:!0,message:U.message});D.dirty()}}else if(U.kind==="email"){if(!Tk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"email",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="emoji"){if(!oW)oW=new RegExp(Fk,"u");if(!oW.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"emoji",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="uuid"){if(!Rk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"uuid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="nanoid"){if(!Yk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"nanoid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="cuid"){if(!zk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"cuid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="cuid2"){if(!Xk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"cuid2",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="ulid"){if(!Gk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"ulid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="url")try{new URL(_.data)}catch{I=this._getOrReturnCtx(_,I),x(I,{validation:"url",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="regex"){if(U.regex.lastIndex=0,!U.regex.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"regex",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="trim")_.data=_.data.trim();else if(U.kind==="includes"){if(!_.data.includes(U.value,U.position))I=this._getOrReturnCtx(_,I),x(I,{code:C.invalid_string,validation:{includes:U.value,position:U.position},message:U.message}),D.dirty()}else if(U.kind==="toLowerCase")_.data=_.data.toLowerCase();else if(U.kind==="toUpperCase")_.data=_.data.toUpperCase();else if(U.kind==="startsWith"){if(!_.data.startsWith(U.value))I=this._getOrReturnCtx(_,I),x(I,{code:C.invalid_string,validation:{startsWith:U.value},message:U.message}),D.dirty()}else if(U.kind==="endsWith"){if(!_.data.endsWith(U.value))I=this._getOrReturnCtx(_,I),x(I,{code:C.invalid_string,validation:{endsWith:U.value},message:U.message}),D.dirty()}else if(U.kind==="datetime"){if(!n9(U).test(_.data))I=this._getOrReturnCtx(_,I),x(I,{code:C.invalid_string,validation:"datetime",message:U.message}),D.dirty()}else if(U.kind==="date"){if(!kk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{code:C.invalid_string,validation:"date",message:U.message}),D.dirty()}else if(U.kind==="time"){if(!qk(U).test(_.data))I=this._getOrReturnCtx(_,I),x(I,{code:C.invalid_string,validation:"time",message:U.message}),D.dirty()}else if(U.kind==="duration"){if(!Kk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"duration",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="ip"){if(!Ck(_.data,U.version))I=this._getOrReturnCtx(_,I),x(I,{validation:"ip",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="jwt"){if(!vk(_.data,U.alg))I=this._getOrReturnCtx(_,I),x(I,{validation:"jwt",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="cidr"){if(!wk(_.data,U.version))I=this._getOrReturnCtx(_,I),x(I,{validation:"cidr",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="base64"){if(!Zk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"base64",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="base64url"){if(!Hk.test(_.data))I=this._getOrReturnCtx(_,I),x(I,{validation:"base64url",code:C.invalid_string,message:U.message}),D.dirty()}else I_.assertNever(U);return{status:D.value,value:_.data}}_regex(_,$,D){return this.refinement((I)=>_.test(I),{validation:$,code:C.invalid_string,...d.errToObj(D)})}_addCheck(_){return new q$({...this._def,checks:[...this._def.checks,_]})}email(_){return this._addCheck({kind:"email",...d.errToObj(_)})}url(_){return this._addCheck({kind:"url",...d.errToObj(_)})}emoji(_){return this._addCheck({kind:"emoji",...d.errToObj(_)})}uuid(_){return this._addCheck({kind:"uuid",...d.errToObj(_)})}nanoid(_){return this._addCheck({kind:"nanoid",...d.errToObj(_)})}cuid(_){return this._addCheck({kind:"cuid",...d.errToObj(_)})}cuid2(_){return this._addCheck({kind:"cuid2",...d.errToObj(_)})}ulid(_){return this._addCheck({kind:"ulid",...d.errToObj(_)})}base64(_){return this._addCheck({kind:"base64",...d.errToObj(_)})}base64url(_){return this._addCheck({kind:"base64url",...d.errToObj(_)})}jwt(_){return this._addCheck({kind:"jwt",...d.errToObj(_)})}ip(_){return this._addCheck({kind:"ip",...d.errToObj(_)})}cidr(_){return this._addCheck({kind:"cidr",...d.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,...d.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,...d.errToObj(_?.message)})}duration(_){return this._addCheck({kind:"duration",...d.errToObj(_)})}regex(_,$){return this._addCheck({kind:"regex",regex:_,...d.errToObj($)})}includes(_,$){return this._addCheck({kind:"includes",value:_,position:$?.position,...d.errToObj($?.message)})}startsWith(_,$){return this._addCheck({kind:"startsWith",value:_,...d.errToObj($)})}endsWith(_,$){return this._addCheck({kind:"endsWith",value:_,...d.errToObj($)})}min(_,$){return this._addCheck({kind:"min",value:_,...d.errToObj($)})}max(_,$){return this._addCheck({kind:"max",value:_,...d.errToObj($)})}length(_,$){return this._addCheck({kind:"length",value:_,...d.errToObj($)})}nonempty(_){return this.min(1,d.errToObj(_))}trim(){return new q$({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new q$({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new q$({...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 _}}q$.create=(_)=>{return new q$({checks:[],typeName:i.ZodString,coerce:_?.coerce??!1,...a(_)})};function rk(_,$){let D=(_.toString().split(".")[1]||"").length,I=($.toString().split(".")[1]||"").length,U=D>I?D:I,E=Number.parseInt(_.toFixed(U).replace(".","")),j=Number.parseInt($.toFixed(U).replace(".",""));return E%j/10**U}class e6 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 x(U,{code:C.invalid_type,expected:y.number,received:U.parsedType}),l}let D=void 0,I=new i_;for(let U of this._def.checks)if(U.kind==="int"){if(!I_.isInteger(_.data))D=this._getOrReturnCtx(_,D),x(D,{code:C.invalid_type,expected:"integer",received:"float",message:U.message}),I.dirty()}else if(U.kind==="min"){if(U.inclusive?_.data<U.value:_.data<=U.value)D=this._getOrReturnCtx(_,D),x(D,{code:C.too_small,minimum:U.value,type:"number",inclusive:U.inclusive,exact:!1,message:U.message}),I.dirty()}else if(U.kind==="max"){if(U.inclusive?_.data>U.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),x(D,{code:C.too_big,maximum:U.value,type:"number",inclusive:U.inclusive,exact:!1,message:U.message}),I.dirty()}else if(U.kind==="multipleOf"){if(rk(_.data,U.value)!==0)D=this._getOrReturnCtx(_,D),x(D,{code:C.not_multiple_of,multipleOf:U.value,message:U.message}),I.dirty()}else if(U.kind==="finite"){if(!Number.isFinite(_.data))D=this._getOrReturnCtx(_,D),x(D,{code:C.not_finite,message:U.message}),I.dirty()}else I_.assertNever(U);return{status:I.value,value:_.data}}gte(_,$){return this.setLimit("min",_,!0,d.toString($))}gt(_,$){return this.setLimit("min",_,!1,d.toString($))}lte(_,$){return this.setLimit("max",_,!0,d.toString($))}lt(_,$){return this.setLimit("max",_,!1,d.toString($))}setLimit(_,$,D,I){return new e6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:d.toString(I)}]})}_addCheck(_){return new e6({...this._def,checks:[...this._def.checks,_]})}int(_){return this._addCheck({kind:"int",message:d.toString(_)})}positive(_){return this._addCheck({kind:"min",value:0,inclusive:!1,message:d.toString(_)})}negative(_){return this._addCheck({kind:"max",value:0,inclusive:!1,message:d.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:0,inclusive:!0,message:d.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:0,inclusive:!0,message:d.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:d.toString($)})}finite(_){return this._addCheck({kind:"finite",message:d.toString(_)})}safe(_){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:d.toString(_)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:d.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"&&I_.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(_)}}e6.create=(_)=>{return new e6({checks:[],typeName:i.ZodNumber,coerce:_?.coerce||!1,...a(_)})};class a6 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,I=new i_;for(let U of this._def.checks)if(U.kind==="min"){if(U.inclusive?_.data<U.value:_.data<=U.value)D=this._getOrReturnCtx(_,D),x(D,{code:C.too_small,type:"bigint",minimum:U.value,inclusive:U.inclusive,message:U.message}),I.dirty()}else if(U.kind==="max"){if(U.inclusive?_.data>U.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),x(D,{code:C.too_big,type:"bigint",maximum:U.value,inclusive:U.inclusive,message:U.message}),I.dirty()}else if(U.kind==="multipleOf"){if(_.data%U.value!==BigInt(0))D=this._getOrReturnCtx(_,D),x(D,{code:C.not_multiple_of,multipleOf:U.value,message:U.message}),I.dirty()}else I_.assertNever(U);return{status:I.value,value:_.data}}_getInvalidInput(_){let $=this._getOrReturnCtx(_);return x($,{code:C.invalid_type,expected:y.bigint,received:$.parsedType}),l}gte(_,$){return this.setLimit("min",_,!0,d.toString($))}gt(_,$){return this.setLimit("min",_,!1,d.toString($))}lte(_,$){return this.setLimit("max",_,!0,d.toString($))}lt(_,$){return this.setLimit("max",_,!1,d.toString($))}setLimit(_,$,D,I){return new a6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:d.toString(I)}]})}_addCheck(_){return new a6({...this._def,checks:[...this._def.checks,_]})}positive(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:d.toString(_)})}negative(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:d.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:d.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:d.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:d.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 _}}a6.create=(_)=>{return new a6({checks:[],typeName:i.ZodBigInt,coerce:_?.coerce??!1,...a(_)})};class zD extends __{_parse(_){if(this._def.coerce)_.data=Boolean(_.data);if(this._getType(_)!==y.boolean){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.boolean,received:D.parsedType}),l}return _$(_.data)}}zD.create=(_)=>{return new zD({typeName:i.ZodBoolean,coerce:_?.coerce||!1,...a(_)})};class o4 extends __{_parse(_){if(this._def.coerce)_.data=new Date(_.data);if(this._getType(_)!==y.date){let U=this._getOrReturnCtx(_);return x(U,{code:C.invalid_type,expected:y.date,received:U.parsedType}),l}if(Number.isNaN(_.data.getTime())){let U=this._getOrReturnCtx(_);return x(U,{code:C.invalid_date}),l}let D=new i_,I=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.getTime()<U.value)I=this._getOrReturnCtx(_,I),x(I,{code:C.too_small,message:U.message,inclusive:!0,exact:!1,minimum:U.value,type:"date"}),D.dirty()}else if(U.kind==="max"){if(_.data.getTime()>U.value)I=this._getOrReturnCtx(_,I),x(I,{code:C.too_big,message:U.message,inclusive:!0,exact:!1,maximum:U.value,type:"date"}),D.dirty()}else I_.assertNever(U);return{status:D.value,value:new Date(_.data.getTime())}}_addCheck(_){return new o4({...this._def,checks:[...this._def.checks,_]})}min(_,$){return this._addCheck({kind:"min",value:_.getTime(),message:d.toString($)})}max(_,$){return this._addCheck({kind:"max",value:_.getTime(),message:d.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}}o4.create=(_)=>{return new o4({checks:[],coerce:_?.coerce||!1,typeName:i.ZodDate,...a(_)})};class K1 extends __{_parse(_){if(this._getType(_)!==y.symbol){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.symbol,received:D.parsedType}),l}return _$(_.data)}}K1.create=(_)=>{return new K1({typeName:i.ZodSymbol,...a(_)})};class XD extends __{_parse(_){if(this._getType(_)!==y.undefined){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.undefined,received:D.parsedType}),l}return _$(_.data)}}XD.create=(_)=>{return new XD({typeName:i.ZodUndefined,...a(_)})};class GD extends __{_parse(_){if(this._getType(_)!==y.null){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.null,received:D.parsedType}),l}return _$(_.data)}}GD.create=(_)=>{return new GD({typeName:i.ZodNull,...a(_)})};class p4 extends __{constructor(){super(...arguments);this._any=!0}_parse(_){return _$(_.data)}}p4.create=(_)=>{return new p4({typeName:i.ZodAny,...a(_)})};class p6 extends __{constructor(){super(...arguments);this._unknown=!0}_parse(_){return _$(_.data)}}p6.create=(_)=>{return new p6({typeName:i.ZodUnknown,...a(_)})};class o$ extends __{_parse(_){let $=this._getOrReturnCtx(_);return x($,{code:C.invalid_type,expected:y.never,received:$.parsedType}),l}}o$.create=(_)=>{return new o$({typeName:i.ZodNever,...a(_)})};class T1 extends __{_parse(_){if(this._getType(_)!==y.undefined){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.void,received:D.parsedType}),l}return _$(_.data)}}T1.create=(_)=>{return new T1({typeName:i.ZodVoid,...a(_)})};class C$ extends __{_parse(_){let{ctx:$,status:D}=this._processInputParams(_),I=this._def;if($.parsedType!==y.array)return x($,{code:C.invalid_type,expected:y.array,received:$.parsedType}),l;if(I.exactLength!==null){let E=$.data.length>I.exactLength.value,j=$.data.length<I.exactLength.value;if(E||j)x($,{code:E?C.too_big:C.too_small,minimum:j?I.exactLength.value:void 0,maximum:E?I.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:I.exactLength.message}),D.dirty()}if(I.minLength!==null){if($.data.length<I.minLength.value)x($,{code:C.too_small,minimum:I.minLength.value,type:"array",inclusive:!0,exact:!1,message:I.minLength.message}),D.dirty()}if(I.maxLength!==null){if($.data.length>I.maxLength.value)x($,{code:C.too_big,maximum:I.maxLength.value,type:"array",inclusive:!0,exact:!1,message:I.maxLength.message}),D.dirty()}if($.common.async)return Promise.all([...$.data].map((E,j)=>{return I.type._parseAsync(new w$($,E,$.path,j))})).then((E)=>{return i_.mergeArray(D,E)});let U=[...$.data].map((E,j)=>{return I.type._parseSync(new w$($,E,$.path,j))});return i_.mergeArray(D,U)}get element(){return this._def.type}min(_,$){return new C$({...this._def,minLength:{value:_,message:d.toString($)}})}max(_,$){return new C$({...this._def,maxLength:{value:_,message:d.toString($)}})}length(_,$){return new C$({...this._def,exactLength:{value:_,message:d.toString($)}})}nonempty(_){return this.min(1,_)}}C$.create=(_,$)=>{return new C$({type:_,minLength:null,maxLength:null,exactLength:null,typeName:i.ZodArray,...a($)})};function OD(_){if(_ instanceof H_){let $={};for(let D in _.shape){let I=_.shape[D];$[D]=v$.create(OD(I))}return new H_({..._._def,shape:()=>$})}else if(_ instanceof C$)return new C$({..._._def,type:OD(_.element)});else if(_ instanceof v$)return v$.create(OD(_.unwrap()));else if(_ instanceof K6)return K6.create(OD(_.unwrap()));else if(_ instanceof p$)return p$.create(_.items.map(($)=>OD($)));else return _}class H_ 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(),$=I_.objectKeys(_);return this._cached={shape:_,keys:$},this._cached}_parse(_){if(this._getType(_)!==y.object){let A=this._getOrReturnCtx(_);return x(A,{code:C.invalid_type,expected:y.object,received:A.parsedType}),l}let{status:D,ctx:I}=this._processInputParams(_),{shape:U,keys:E}=this._getCached(),j=[];if(!(this._def.catchall instanceof o$&&this._def.unknownKeys==="strip")){for(let A in I.data)if(!E.includes(A))j.push(A)}let N=[];for(let A of E){let O=U[A],L=I.data[A];N.push({key:{status:"valid",value:A},value:O._parse(new w$(I,L,I.path,A)),alwaysSet:A in I.data})}if(this._def.catchall instanceof o$){let A=this._def.unknownKeys;if(A==="passthrough")for(let O of j)N.push({key:{status:"valid",value:O},value:{status:"valid",value:I.data[O]}});else if(A==="strict"){if(j.length>0)x(I,{code:C.unrecognized_keys,keys:j}),D.dirty()}else if(A==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let A=this._def.catchall;for(let O of j){let L=I.data[O];N.push({key:{status:"valid",value:O},value:A._parse(new w$(I,L,I.path,O)),alwaysSet:O in I.data})}}if(I.common.async)return Promise.resolve().then(async()=>{let A=[];for(let O of N){let L=await O.key,J=await O.value;A.push({key:L,value:J,alwaysSet:O.alwaysSet})}return A}).then((A)=>{return i_.mergeObjectSync(D,A)});else return i_.mergeObjectSync(D,N)}get shape(){return this._def.shape()}strict(_){return d.errToObj,new H_({...this._def,unknownKeys:"strict",..._!==void 0?{errorMap:($,D)=>{let I=this._def.errorMap?.($,D).message??D.defaultError;if($.code==="unrecognized_keys")return{message:d.errToObj(_).message??I};return{message:I}}}:{}})}strip(){return new H_({...this._def,unknownKeys:"strip"})}passthrough(){return new H_({...this._def,unknownKeys:"passthrough"})}extend(_){return new H_({...this._def,shape:()=>({...this._def.shape(),..._})})}merge(_){return new H_({unknownKeys:_._def.unknownKeys,catchall:_._def.catchall,shape:()=>({...this._def.shape(),..._._def.shape()}),typeName:i.ZodObject})}setKey(_,$){return this.augment({[_]:$})}catchall(_){return new H_({...this._def,catchall:_})}pick(_){let $={};for(let D of I_.objectKeys(_))if(_[D]&&this.shape[D])$[D]=this.shape[D];return new H_({...this._def,shape:()=>$})}omit(_){let $={};for(let D of I_.objectKeys(this.shape))if(!_[D])$[D]=this.shape[D];return new H_({...this._def,shape:()=>$})}deepPartial(){return OD(this)}partial(_){let $={};for(let D of I_.objectKeys(this.shape)){let I=this.shape[D];if(_&&!_[D])$[D]=I;else $[D]=I.optional()}return new H_({...this._def,shape:()=>$})}required(_){let $={};for(let D of I_.objectKeys(this.shape))if(_&&!_[D])$[D]=this.shape[D];else{let U=this.shape[D];while(U instanceof v$)U=U._def.innerType;$[D]=U}return new H_({...this._def,shape:()=>$})}keyof(){return d9(I_.objectKeys(this.shape))}}H_.create=(_,$)=>{return new H_({shape:()=>_,unknownKeys:"strip",catchall:o$.create(),typeName:i.ZodObject,...a($)})};H_.strictCreate=(_,$)=>{return new H_({shape:()=>_,unknownKeys:"strict",catchall:o$.create(),typeName:i.ZodObject,...a($)})};H_.lazycreate=(_,$)=>{return new H_({shape:_,unknownKeys:"strip",catchall:o$.create(),typeName:i.ZodObject,...a($)})};class RD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=this._def.options;function I(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 E=U.map((j)=>new S$(j.ctx.common.issues));return x($,{code:C.invalid_union,unionErrors:E}),l}if($.common.async)return Promise.all(D.map(async(U)=>{let E={...$,common:{...$.common,issues:[]},parent:null};return{result:await U._parseAsync({data:$.data,path:$.path,parent:E}),ctx:E}})).then(I);else{let U=void 0,E=[];for(let N of D){let A={...$,common:{...$.common,issues:[]},parent:null},O=N._parseSync({data:$.data,path:$.path,parent:A});if(O.status==="valid")return O;else if(O.status==="dirty"&&!U)U={result:O,ctx:A};if(A.common.issues.length)E.push(A.common.issues)}if(U)return $.common.issues.push(...U.ctx.common.issues),U.result;let j=E.map((N)=>new S$(N));return x($,{code:C.invalid_union,unionErrors:j}),l}}get options(){return this._def.options}}RD.create=(_,$)=>{return new RD({options:_,typeName:i.ZodUnion,...a($)})};var Y6=(_)=>{if(_ instanceof QD)return Y6(_.schema);else if(_ instanceof Q$)return Y6(_.innerType());else if(_ instanceof KD)return[_.value];else if(_ instanceof s6)return _.options;else if(_ instanceof TD)return I_.objectValues(_.enum);else if(_ instanceof FD)return Y6(_._def.innerType);else if(_ instanceof XD)return[void 0];else if(_ instanceof GD)return[null];else if(_ instanceof v$)return[void 0,...Y6(_.unwrap())];else if(_ instanceof K6)return[null,...Y6(_.unwrap())];else if(_ instanceof TN)return Y6(_.unwrap());else if(_ instanceof BD)return Y6(_.unwrap());else if(_ instanceof VD)return Y6(_._def.innerType);else return[]};class KN extends __{_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.object)return x($,{code:C.invalid_type,expected:y.object,received:$.parsedType}),l;let D=this.discriminator,I=$.data[D],U=this.optionsMap.get(I);if(!U)return x($,{code:C.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[D]}),l;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 I=new Map;for(let U of $){let E=Y6(U.shape[_]);if(!E.length)throw Error(`A discriminator value for key \`${_}\` could not be extracted from all schema options`);for(let j of E){if(I.has(j))throw Error(`Discriminator property ${String(_)} has duplicate value ${String(j)}`);I.set(j,U)}}return new KN({typeName:i.ZodDiscriminatedUnion,discriminator:_,options:$,optionsMap:I,...a(D)})}}function _P(_,$){let D=Q6(_),I=Q6($);if(_===$)return{valid:!0,data:_};else if(D===y.object&&I===y.object){let U=I_.objectKeys($),E=I_.objectKeys(_).filter((N)=>U.indexOf(N)!==-1),j={..._,...$};for(let N of E){let A=_P(_[N],$[N]);if(!A.valid)return{valid:!1};j[N]=A.data}return{valid:!0,data:j}}else if(D===y.array&&I===y.array){if(_.length!==$.length)return{valid:!1};let U=[];for(let E=0;E<_.length;E++){let j=_[E],N=$[E],A=_P(j,N);if(!A.valid)return{valid:!1};U.push(A.data)}return{valid:!0,data:U}}else if(D===y.date&&I===y.date&&+_===+$)return{valid:!0,data:_};else return{valid:!1}}class YD extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_),I=(U,E)=>{if(aW(U)||aW(E))return l;let j=_P(U.value,E.value);if(!j.valid)return x(D,{code:C.invalid_intersection_types}),l;if(sW(U)||sW(E))$.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,E])=>I(U,E));else return I(this._def.left._parseSync({data:D.data,path:D.path,parent:D}),this._def.right._parseSync({data:D.data,path:D.path,parent:D}))}}YD.create=(_,$,D)=>{return new YD({left:_,right:$,typeName:i.ZodIntersection,...a(D)})};class p$ extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.array)return x(D,{code:C.invalid_type,expected:y.array,received:D.parsedType}),l;if(D.data.length<this._def.items.length)return x(D,{code:C.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),l;if(!this._def.rest&&D.data.length>this._def.items.length)x(D,{code:C.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let U=[...D.data].map((E,j)=>{let N=this._def.items[j]||this._def.rest;if(!N)return null;return N._parse(new w$(D,E,D.path,j))}).filter((E)=>!!E);if(D.common.async)return Promise.all(U).then((E)=>{return i_.mergeArray($,E)});else return i_.mergeArray($,U)}get items(){return this._def.items}rest(_){return new p$({...this._def,rest:_})}}p$.create=(_,$)=>{if(!Array.isArray(_))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new p$({items:_,typeName:i.ZodTuple,rest:null,...a($)})};class F1 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 x(D,{code:C.invalid_type,expected:y.object,received:D.parsedType}),l;let I=[],U=this._def.keyType,E=this._def.valueType;for(let j in D.data)I.push({key:U._parse(new w$(D,j,D.path,j)),value:E._parse(new w$(D,D.data[j],D.path,j)),alwaysSet:j in D.data});if(D.common.async)return i_.mergeObjectAsync($,I);else return i_.mergeObjectSync($,I)}get element(){return this._def.valueType}static create(_,$,D){if($ instanceof __)return new F1({keyType:_,valueType:$,typeName:i.ZodRecord,...a(D)});return new F1({keyType:q$.create(),valueType:_,typeName:i.ZodRecord,...a($)})}}class V1 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 x(D,{code:C.invalid_type,expected:y.map,received:D.parsedType}),l;let I=this._def.keyType,U=this._def.valueType,E=[...D.data.entries()].map(([j,N],A)=>{return{key:I._parse(new w$(D,j,D.path,[A,"key"])),value:U._parse(new w$(D,N,D.path,[A,"value"]))}});if(D.common.async){let j=new Map;return Promise.resolve().then(async()=>{for(let N of E){let A=await N.key,O=await N.value;if(A.status==="aborted"||O.status==="aborted")return l;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}})}else{let j=new Map;for(let N of E){let{key:A,value:O}=N;if(A.status==="aborted"||O.status==="aborted")return l;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}}}}V1.create=(_,$,D)=>{return new V1({valueType:$,keyType:_,typeName:i.ZodMap,...a(D)})};class e4 extends __{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==y.set)return x(D,{code:C.invalid_type,expected:y.set,received:D.parsedType}),l;let I=this._def;if(I.minSize!==null){if(D.data.size<I.minSize.value)x(D,{code:C.too_small,minimum:I.minSize.value,type:"set",inclusive:!0,exact:!1,message:I.minSize.message}),$.dirty()}if(I.maxSize!==null){if(D.data.size>I.maxSize.value)x(D,{code:C.too_big,maximum:I.maxSize.value,type:"set",inclusive:!0,exact:!1,message:I.maxSize.message}),$.dirty()}let U=this._def.valueType;function E(N){let A=new Set;for(let O of N){if(O.status==="aborted")return l;if(O.status==="dirty")$.dirty();A.add(O.value)}return{status:$.value,value:A}}let j=[...D.data.values()].map((N,A)=>U._parse(new w$(D,N,D.path,A)));if(D.common.async)return Promise.all(j).then((N)=>E(N));else return E(j)}min(_,$){return new e4({...this._def,minSize:{value:_,message:d.toString($)}})}max(_,$){return new e4({...this._def,maxSize:{value:_,message:d.toString($)}})}size(_,$){return this.min(_,$).max(_,$)}nonempty(_){return this.min(1,_)}}e4.create=(_,$)=>{return new e4({valueType:_,minSize:null,maxSize:null,typeName:i.ZodSet,...a($)})};class JD extends __{constructor(){super(...arguments);this.validate=this.implement}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.function)return x($,{code:C.invalid_type,expected:y.function,received:$.parsedType}),l;function D(j,N){return RN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,GN(),PD].filter((A)=>!!A),issueData:{code:C.invalid_arguments,argumentsError:N}})}function I(j,N){return RN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,GN(),PD].filter((A)=>!!A),issueData:{code:C.invalid_return_type,returnTypeError:N}})}let U={errorMap:$.common.contextualErrorMap},E=$.data;if(this._def.returns instanceof a4){let j=this;return _$(async function(...N){let A=new S$([]),O=await j._def.args.parseAsync(N,U).catch((P)=>{throw A.addIssue(D(N,P)),A}),L=await Reflect.apply(E,this,O);return await j._def.returns._def.type.parseAsync(L,U).catch((P)=>{throw A.addIssue(I(L,P)),A})})}else{let j=this;return _$(function(...N){let A=j._def.args.safeParse(N,U);if(!A.success)throw new S$([D(N,A.error)]);let O=Reflect.apply(E,this,A.data),L=j._def.returns.safeParse(O,U);if(!L.success)throw new S$([I(O,L.error)]);return L.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(..._){return new JD({...this._def,args:p$.create(_).rest(p6.create())})}returns(_){return new JD({...this._def,returns:_})}implement(_){return this.parse(_)}strictImplement(_){return this.parse(_)}static create(_,$,D){return new JD({args:_?_:p$.create([]).rest(p6.create()),returns:$||p6.create(),typeName:i.ZodFunction,...a(D)})}}class QD extends __{get schema(){return this._def.getter()}_parse(_){let{ctx:$}=this._processInputParams(_);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}}QD.create=(_,$)=>{return new QD({getter:_,typeName:i.ZodLazy,...a($)})};class KD extends __{_parse(_){if(_.data!==this._def.value){let $=this._getOrReturnCtx(_);return x($,{received:$.data,code:C.invalid_literal,expected:this._def.value}),l}return{status:"valid",value:_.data}}get value(){return this._def.value}}KD.create=(_,$)=>{return new KD({value:_,typeName:i.ZodLiteral,...a($)})};function d9(_,$){return new s6({values:_,typeName:i.ZodEnum,...a($)})}class s6 extends __{_parse(_){if(typeof _.data!=="string"){let $=this._getOrReturnCtx(_),D=this._def.values;return x($,{expected:I_.joinValues(D),received:$.parsedType,code:C.invalid_type}),l}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has(_.data)){let $=this._getOrReturnCtx(_),D=this._def.values;return x($,{received:$.data,code:C.invalid_enum_value,options:D}),l}return _$(_.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 s6.create(_,{...this._def,...$})}exclude(_,$=this._def){return s6.create(this.options.filter((D)=>!_.includes(D)),{...this._def,...$})}}s6.create=d9;class TD extends __{_parse(_){let $=I_.getValidEnumValues(this._def.values),D=this._getOrReturnCtx(_);if(D.parsedType!==y.string&&D.parsedType!==y.number){let I=I_.objectValues($);return x(D,{expected:I_.joinValues(I),received:D.parsedType,code:C.invalid_type}),l}if(!this._cache)this._cache=new Set(I_.getValidEnumValues(this._def.values));if(!this._cache.has(_.data)){let I=I_.objectValues($);return x(D,{received:D.data,code:C.invalid_enum_value,options:I}),l}return _$(_.data)}get enum(){return this._def.values}}TD.create=(_,$)=>{return new TD({values:_,typeName:i.ZodNativeEnum,...a($)})};class a4 extends __{unwrap(){return this._def.type}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==y.promise&&$.common.async===!1)return x($,{code:C.invalid_type,expected:y.promise,received:$.parsedType}),l;let D=$.parsedType===y.promise?$.data:Promise.resolve($.data);return _$(D.then((I)=>{return this._def.type.parseAsync(I,{path:$.path,errorMap:$.common.contextualErrorMap})}))}}a4.create=(_,$)=>{return new a4({type:_,typeName:i.ZodPromise,...a($)})};class Q$ 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(_),I=this._def.effect||null,U={addIssue:(E)=>{if(x(D,E),E.fatal)$.abort();else $.dirty()},get path(){return D.path}};if(U.addIssue=U.addIssue.bind(U),I.type==="preprocess"){let E=I.transform(D.data,U);if(D.common.async)return Promise.resolve(E).then(async(j)=>{if($.value==="aborted")return l;let N=await this._def.schema._parseAsync({data:j,path:D.path,parent:D});if(N.status==="aborted")return l;if(N.status==="dirty")return SD(N.value);if($.value==="dirty")return SD(N.value);return N});else{if($.value==="aborted")return l;let j=this._def.schema._parseSync({data:E,path:D.path,parent:D});if(j.status==="aborted")return l;if(j.status==="dirty")return SD(j.value);if($.value==="dirty")return SD(j.value);return j}}if(I.type==="refinement"){let E=(j)=>{let N=I.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 l;if(j.status==="dirty")$.dirty();return E(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 l;if(j.status==="dirty")$.dirty();return E(j.value).then(()=>{return{status:$.value,value:j.value}})})}if(I.type==="transform")if(D.common.async===!1){let E=this._def.schema._parseSync({data:D.data,path:D.path,parent:D});if(!t4(E))return l;let j=I.transform(E.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((E)=>{if(!t4(E))return l;return Promise.resolve(I.transform(E.value,U)).then((j)=>({status:$.value,value:j}))});I_.assertNever(I)}}Q$.create=(_,$,D)=>{return new Q$({schema:_,typeName:i.ZodEffects,effect:$,...a(D)})};Q$.createWithPreprocess=(_,$,D)=>{return new Q$({schema:$,effect:{type:"preprocess",transform:_},typeName:i.ZodEffects,...a(D)})};class v$ extends __{_parse(_){if(this._getType(_)===y.undefined)return _$(void 0);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}v$.create=(_,$)=>{return new v$({innerType:_,typeName:i.ZodOptional,...a($)})};class K6 extends __{_parse(_){if(this._getType(_)===y.null)return _$(null);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}K6.create=(_,$)=>{return new K6({innerType:_,typeName:i.ZodNullable,...a($)})};class FD 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}}FD.create=(_,$)=>{return new FD({innerType:_,typeName:i.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...a($)})};class VD extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D={...$,common:{...$.common,issues:[]}},I=this._def.innerType._parse({data:D.data,path:D.path,parent:{...D}});if(Q1(I))return I.then((U)=>{return{status:"valid",value:U.status==="valid"?U.value:this._def.catchValue({get error(){return new S$(D.common.issues)},input:D.data})}});else return{status:"valid",value:I.status==="valid"?I.value:this._def.catchValue({get error(){return new S$(D.common.issues)},input:D.data})}}removeCatch(){return this._def.innerType}}VD.create=(_,$)=>{return new VD({innerType:_,typeName:i.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...a($)})};class B1 extends __{_parse(_){if(this._getType(_)!==y.nan){let D=this._getOrReturnCtx(_);return x(D,{code:C.invalid_type,expected:y.nan,received:D.parsedType}),l}return{status:"valid",value:_.data}}}B1.create=(_)=>{return new B1({typeName:i.ZodNaN,...a(_)})};var fk=Symbol("zod_brand");class TN extends __{_parse(_){let{ctx:$}=this._processInputParams(_),D=$.data;return this._def.type._parse({data:D,path:$.path,parent:$})}unwrap(){return this._def.type}}class M1 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 l;if(U.status==="dirty")return $.dirty(),SD(U.value);else return this._def.out._parseAsync({data:U.value,path:D.path,parent:D})})();else{let I=this._def.in._parseSync({data:D.data,path:D.path,parent:D});if(I.status==="aborted")return l;if(I.status==="dirty")return $.dirty(),{status:"dirty",value:I.value};else return this._def.out._parseSync({data:I.value,path:D.path,parent:D})}}static create(_,$){return new M1({in:_,out:$,typeName:i.ZodPipeline})}}class BD extends __{_parse(_){let $=this._def.innerType._parse(_),D=(I)=>{if(t4(I))I.value=Object.freeze(I.value);return I};return Q1($)?$.then((I)=>D(I)):D($)}unwrap(){return this._def.innerType}}BD.create=(_,$)=>{return new BD({innerType:_,typeName:i.ZodReadonly,...a($)})};function k9(_,$){let D=typeof _==="function"?_($):typeof _==="string"?{message:_}:_;return typeof D==="string"?{message:D}:D}function m9(_,$={},D){if(_)return p4.create().superRefine((I,U)=>{let E=_(I);if(E instanceof Promise)return E.then((j)=>{if(!j){let N=k9($,I),A=N.fatal??D??!0;U.addIssue({code:"custom",...N,fatal:A})}});if(!E){let j=k9($,I),N=j.fatal??D??!0;U.addIssue({code:"custom",...j,fatal:N})}return});return p4.create()}var xk={object:H_.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 uk=(_,$={message:`Input not instance of ${_.name}`})=>m9((D)=>D instanceof _,$),l9=q$.create,i9=e6.create,yk=B1.create,hk=a6.create,t9=zD.create,ck=o4.create,nk=K1.create,dk=XD.create,mk=GD.create,lk=p4.create,ik=p6.create,tk=o$.create,ok=T1.create,pk=C$.create,ek=H_.create,ak=H_.strictCreate,sk=RD.create,_q=KN.create,$q=YD.create,Dq=p$.create,Uq=F1.create,Iq=V1.create,Eq=e4.create,jq=JD.create,Nq=QD.create,gq=KD.create,Aq=s6.create,Oq=TD.create,Lq=a4.create,q9=Q$.create,Sq=v$.create,Jq=K6.create,Wq=Q$.createWithPreprocess,Pq=M1.create,zq=()=>l9().optional(),Xq=()=>i9().optional(),Gq=()=>t9().optional(),Rq={string:(_)=>q$.create({..._,coerce:!0}),number:(_)=>e6.create({..._,coerce:!0}),boolean:(_)=>zD.create({..._,coerce:!0}),bigint:(_)=>a6.create({..._,coerce:!0}),date:(_)=>o4.create({..._,coerce:!0})},Yq=l;var u={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"},DP=g.string().regex(/^hasna\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*\.v[0-9]+$/),B_=g.string().datetime(),o=g.string().trim().min(1),r$=o.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://"),o9=g.string().regex(/^[a-fA-F0-9]{64}$/),p9=g.string().regex(/^(sha256:)?[a-fA-F0-9]{64}$/),_4=g.record(g.unknown()),ZD=g.array(g.string().min(1)).default([]),s4=B_.nullable().optional(),Qq=new Set(["succeeded","failed","cancelled","blocked","skipped"]),D0=g.enum(["pending","running","succeeded","failed","cancelled","blocked","skipped","unknown"]);function S_(_){return g.object({schema:g.literal(_),id:g.string().min(1),createdAt:B_,updatedAt:s4,metadata:_4.optional()}).strict()}var Lm=g.object({schema:DP,id:g.string().min(1),createdAt:B_,updatedAt:s4,metadata:_4.optional()}).strict(),e9=g.enum(["agent","human","service","model","workflow","system"]),Kq=S_(u.actorRef).extend({kind:e9,name:g.string().min(1).optional(),provider:g.string().min(1).optional(),accountId:g.string().min(1).optional(),machineId:g.string().min(1).optional(),capabilities:g.array(g.string().min(1)).default([])}).strict(),e$=g.object({kind:e9,id:g.string().min(1),name:g.string().min(1).optional(),provider:g.string().min(1).optional(),accountId:g.string().min(1).optional(),machineId:g.string().min(1).optional()}).strict(),a9=g.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"]),Tq=S_(u.resourceRef).extend({kind:a9,name:g.string().min(1).optional(),uri:r$.optional(),externalId:o.optional(),sourcePackage:o.optional(),tags:ZD}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.externalId&&_.sourcePackage))$.addIssue({code:g.ZodIssueCode.custom,message:"Resource refs require uri or both sourcePackage and externalId",path:["uri"]})}),s=g.object({kind:a9,id:g.string().min(1),name:g.string().min(1).optional(),uri:r$.optional(),externalId:o.optional(),sourcePackage:o.optional(),tags:ZD}).strict().superRefine((_,$)=>{if(!_.uri&&Boolean(_.externalId)!==Boolean(_.sourcePackage))$.addIssue({code:g.ZodIssueCode.custom,message:"Resource pointers with external package locators require both sourcePackage and externalId",path:_.externalId?["sourcePackage"]:["externalId"]})}),UP=g.enum(["file","command_output","screenshot","log","diff","report","artifact","url","video","har","test_result","metric","trace","other"]),Fq=g.enum(["none","partial","full","unknown"]),Vq=S_(u.evidenceRef).extend({kind:UP,uri:r$,sha256:o9.optional(),summary:g.string().min(1).optional(),contentType:g.string().min(1).optional(),sizeBytes:g.number().int().nonnegative().optional(),redaction:Fq.default("unknown"),producer:e$.optional(),resourceRefs:g.array(s).default([]),tags:ZD}).strict(),K_=g.object({id:g.string().min(1),kind:UP.optional(),uri:r$.optional(),sha256:o9.optional(),summary:g.string().min(1).optional()}).strict(),b1=S_(u.costEstimate).extend({currency:g.string().regex(/^[A-Z]{3}$/).default("USD"),amountMicros:g.number().int().nonnegative(),provider:g.string().min(1).optional(),model:g.string().min(1).optional(),accountId:g.string().min(1).optional(),promptTokens:g.number().int().nonnegative().optional(),completionTokens:g.number().int().nonnegative().optional(),totalTokens:g.number().int().nonnegative().optional(),basis:g.enum(["actual","estimated","budget","limit"]).default("estimated"),resourceRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(_.promptTokens!==void 0&&_.completionTokens!==void 0&&_.totalTokens!==void 0&&_.totalTokens!==_.promptTokens+_.completionTokens)$.addIssue({code:g.ZodIssueCode.custom,message:"totalTokens must equal promptTokens plus completionTokens when all are present",path:["totalTokens"]})}),Bq=g.enum(["allowed","denied","warned","approval_required","selected","skipped","unknown"]),s9=S_(u.decisionEnvelope).extend({decisionType:g.enum(["guardrail","model_route","tool_select","budget","secret_access","approval","policy","other"]),status:Bq,actor:e$.optional(),traceId:g.string().min(1).optional(),inputHash:p9.optional(),policyBundleId:g.string().min(1).optional(),selected:g.array(s).default([]),skipped:g.array(s).default([]),reason:g.string().min(1),obligations:g.array(g.string().min(1)).default([]),redactions:g.array(g.string().min(1)).default([]),costEstimate:b1.optional(),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.status==="selected"&&_.selected.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Selected decisions require at least one selected resource",path:["selected"]});if(_.status==="skipped"&&_.skipped.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Skipped decisions require at least one skipped resource",path:["skipped"]});if(_.status==="denied"){if(_.selected.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Denied decisions cannot include selected resources",path:["selected"]});if(!_.policyBundleId&&_.evidenceRefs.length===0&&_.obligations.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Denied decisions require policy, evidence, or obligations",path:["policyBundleId"]})}if(_.status==="approval_required"&&_.obligations.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Approval-required decisions require actionable obligations",path:["obligations"]})}),Mq=S_(u.capabilityCard).extend({kind:g.enum(["model","tool","machine","agent","lane","connector","service"]),name:g.string().min(1),version:g.string().min(1).optional(),status:g.enum(["available","unavailable","degraded","unknown"]).default("unknown"),capabilities:g.array(g.string().min(1)).default([]),limitations:g.array(g.string().min(1)).default([]),riskLevel:g.enum(["low","medium","high","critical","unknown"]).default("unknown"),costEstimate:b1.optional(),evidenceRefs:g.array(K_).default([])}).strict(),MD=g.enum(["mock","fixture","sandbox","read_only_live","live_mutating"]),bq=g.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"]),Zq=g.object({refName:o,requiredForModes:g.array(MD).min(1),allowedSecretInputs:g.array(g.enum(["credential_ref","lease_ref"])).min(1).default(["credential_ref"]),failClosedDiagnostic:o,revocationCheck:g.boolean().default(!0)}).strict(),Hq=g.object({operation:o,supportedModes:g.array(MD).min(1),sideEffectClass:bq,requiresApproval:g.boolean().default(!1),requiresIdempotencyKey:g.boolean().default(!1),requiresSandboxEvidence:g.boolean().default(!1),requiresRollbackOrRevocation:g.boolean().default(!1),rollbackOrRevocation:o.optional(),noSideEffectSmoke:o.optional(),reconciliation:o.optional()}).strict().superRefine((_,$)=>{if(_.supportedModes.includes("live_mutating")){if(_.sideEffectClass==="none"||_.sideEffectClass==="read_only")$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations must declare a side-effecting class",path:["sideEffectClass"]});if(!_.requiresApproval)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require approval",path:["requiresApproval"]});if(!_.requiresIdempotencyKey)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require idempotency keys",path:["requiresIdempotencyKey"]});if(!_.requiresSandboxEvidence)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require sandbox evidence before live proof",path:["requiresSandboxEvidence"]});if(!_.requiresRollbackOrRevocation||!_.rollbackOrRevocation)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require rollback or revocation instructions",path:["rollbackOrRevocation"]});if(!_.reconciliation)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require reconciliation behavior",path:["reconciliation"]})}}),kq=g.object({providerId:o,appId:o,adapterId:o,ownerPackage:o,modes:g.array(MD).min(1),defaultMode:MD,credentialRequirements:g.array(Zq).default([]),operations:g.array(Hq).min(1),rateLimitPosture:o,costPosture:o.optional(),auditEvents:g.array(o).default([]),redactionRules:g.array(o).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(!_.modes.includes(_.defaultMode))$.addIssue({code:g.ZodIssueCode.custom,message:"defaultMode must be one of modes",path:["defaultMode"]});let D=new Set(_.operations.flatMap((I)=>I.supportedModes));for(let I of D)if(!_.modes.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`operation mode ${I} is not declared in provider modes`,path:["operations"]});if(D.has("live_mutating")){if(!_.credentialRequirements.some((U)=>U.requiredForModes.includes("live_mutating")))$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating providers require at least one live credential reference requirement",path:["credentialRequirements"]});if(_.auditEvents.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating providers require audit events",path:["auditEvents"]})}}),qq=g.object({appId:o,repo:o,priority:g.enum(["p0","p1","p2"]).default("p1"),requiredEvidence:g.array(o).min(1),firstOperations:g.array(o).min(1),blockedUntil:g.array(o).default([])}).strict(),Cq=S_(u.providerLiveModeStandard).extend({name:o,version:o,modes:g.array(MD).refine((_)=>["mock","fixture","sandbox","read_only_live","live_mutating"].every(($)=>_.includes($)),"provider live-mode standard must include every canonical provider mode"),requiredCapabilityFields:g.array(o).min(1),liveMutationGate:g.object({requiredMode:g.literal("live_mutating"),requiredChecks:g.array(o).min(1),forbiddenBypassSignals:g.array(o).min(1),disabledLiveSmoke:o}).strict(),noSideEffectSmoke:g.object({requiredForModes:g.array(MD).min(1),commandEvidence:g.array(o).min(1),secretOutputScan:g.boolean().default(!0)}).strict(),credentialPolicy:g.object({acceptedInputs:g.array(g.enum(["credential_ref","lease_ref"])).min(1),rawSecretInputsAllowed:g.literal(!1),missingCredentialBehavior:g.literal("fail_closed"),revocationCheckRequired:g.boolean().default(!0)}).strict(),operationCards:g.array(kq).min(1),firstAdoptionTargets:g.array(qq).min(1),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=new Set(_.firstAdoptionTargets.map((U)=>U.appId)),I=new Set(_.operationCards.map((U)=>U.appId));for(let U of D)if(!I.has(U))$.addIssue({code:g.ZodIssueCode.custom,message:`first adoption target ${U} requires a provider capability card`,path:["firstAdoptionTargets"]})}),vq=g.object({id:g.string().min(1),title:g.string().min(1).optional(),summary:g.string().min(1),text:g.string().optional(),tokens:g.number().int().nonnegative().optional(),source:K_,resourceRefs:g.array(s).default([])}).strict(),_8=S_(u.contextPack).extend({objective:g.string().min(1),budget:g.object({maxTokens:g.number().int().positive().optional(),maxBytes:g.number().int().positive().optional()}).strict().optional(),items:g.array(vq).default([]),citations:g.array(K_).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),permissions:g.array(g.string().min(1)).default([]),redactions:g.array(g.string().min(1)).default([]),conflicts:g.array(g.string().min(1)).default([]),uncertainty:g.string().min(1).optional()}).strict(),R$=o.refine((_)=>!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."),"Project paths must be relative and cannot contain parent-directory segments"),_0=g.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Project slugs must be lowercase dashed identifiers"),wq=g.enum(["public","internal","private","sensitive"]),rq=g.enum(["draft","active","paused","archived"]),IP=g.enum(["todos","files","mailery","conversations","knowledge","mementos","reports","actions","render","contracts","custom"]),$8=S_(u.integrationRef).extend({kind:IP,name:g.string().min(1),projectId:_0.optional(),sourcePackage:o.optional(),externalId:o.optional(),uri:r$.optional(),enabled:g.boolean().default(!0),readOnly:g.boolean().default(!0),capabilities:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),resourceRef:s.optional(),evidenceRefs:g.array(K_).default([]),config:_4.optional()}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.sourcePackage&&_.externalId)&&!_.resourceRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Integration refs require uri, resourceRef, or both sourcePackage and externalId",path:["uri"]})}),fq=g.object({schemaRoot:R$.default(".hasna/project"),dashboardManifest:R$.default(".hasna/project/dashboard.render.json"),snapshotsDir:R$.default(".hasna/project/snapshots"),documentsDir:R$.default("documents"),reportsDir:R$.default("reports"),evidenceDir:R$.default(".hasna/project/evidence"),privateDir:R$.default(".hasna/project/private")}).strict(),xq=S_(u.projectManifest).extend({projectId:_0,slug:_0,name:g.string().min(1),summary:g.string().min(1).optional(),status:rq.default("active"),classification:wq.default("private"),owner:e$.optional(),layout:fq.default({}),integrations:g.array($8).default([]),renderManifests:g.array(s).default([]),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),tags:ZD}).strict().superRefine((_,$)=>{let D=new Set,I=new Set;if(_.projectId!==_.slug)$.addIssue({code:g.ZodIssueCode.custom,message:"projectId and slug must match for canonical project manifests",path:["slug"]});for(let[U,E]of _.integrations.entries()){if(D.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project manifest integration ids must be unique",path:["integrations",U,"id"]});if(D.add(E.id),E.projectId&&E.projectId!==_.projectId)$.addIssue({code:g.ZodIssueCode.custom,message:"Integration projectId must match the manifest projectId",path:["integrations",U,"projectId"]})}for(let[U,E]of _.renderManifests.entries()){if(E.kind!=="render")$.addIssue({code:g.ZodIssueCode.custom,message:"Project renderManifests must use resource kind render",path:["renderManifests",U,"kind"]});if(I.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project renderManifest refs must be unique",path:["renderManifests",U,"id"]});I.add(E.id)}}),uq=g.enum(["local","package","provider","url"]),EP=g.object({id:g.string().min(1),kind:uq,specifier:g.string().min(1),path:R$.optional(),packageName:g.string().min(1).optional(),uri:r$.optional(),provider:IP.optional(),schemaId:DP.optional(),integrity:p9.optional(),resourceRef:s.optional(),optional:g.boolean().default(!1)}).strict().superRefine((_,$)=>{if(_.kind==="local"&&!_.path)$.addIssue({code:g.ZodIssueCode.custom,message:"Local render imports require path",path:["path"]});if(_.kind==="package"&&!_.packageName)$.addIssue({code:g.ZodIssueCode.custom,message:"Package render imports require packageName",path:["packageName"]});if(_.kind==="provider"&&!_.provider)$.addIssue({code:g.ZodIssueCode.custom,message:"Provider render imports require provider",path:["provider"]});if(_.kind==="url"&&!_.uri)$.addIssue({code:g.ZodIssueCode.custom,message:"URL render imports require uri",path:["uri"]})}),yq=g.enum(["dashboard","canvas","panel","report","document","custom"]),hq=g.object({id:g.string().min(1),title:g.string().min(1),kind:yq,default:g.boolean().default(!1),entry:R$.optional(),imports:g.array(EP).default([]),panelRefs:g.array(s).default([]),dataRefs:g.array(s).default([]),layout:_4.optional()}).strict(),cq=S_(u.renderManifest).extend({projectId:_0,name:g.string().min(1),version:g.string().min(1),manifestPath:R$.default(".hasna/project/dashboard.render.json"),renderer:g.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),views:g.array(hq).min(1),imports:g.array(EP).default([]),theme:_4.optional(),compatibility:g.object({minProjectsVersion:g.string().min(1).optional(),minContractsVersion:g.string().min(1).optional()}).strict().optional(),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=_.views.filter((E)=>E.default),I=new Set,U=new Set;if(D.length>1)$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifests can have at most one default view",path:["views"]});for(let[E,j]of _.imports.entries()){if(U.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifest import ids must be unique",path:["imports",E,"id"]});U.add(j.id)}for(let[E,j]of _.views.entries()){if(I.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifest view ids must be unique",path:["views",E,"id"]});I.add(j.id);let N=new Set;for(let[A,O]of j.imports.entries()){if(N.has(O.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render view import ids must be unique",path:["views",E,"imports",A,"id"]});N.add(O.id)}for(let[A,O]of j.panelRefs.entries())if(O.kind!=="panel")$.addIssue({code:g.ZodIssueCode.custom,message:"Render view panelRefs must use resource kind panel",path:["views",E,"panelRefs",A,"kind"]})}}),nq=g.enum(["ready","empty","loading","error","auth_required","unavailable","stale"]),dq=g.enum(["overview","tasks","files","mailery","conversations","knowledge","mementos","reports","actions","timeline","risks","documents","custom"]),mq=g.object({id:g.string().min(1),label:g.string().min(1),value:g.union([g.string(),g.number(),g.boolean()]),unit:g.string().min(1).optional(),status:g.enum(["good","warning","critical","unknown"]).default("unknown"),resourceRefs:g.array(s).default([])}).strict(),lq=g.object({id:g.string().min(1),title:g.string().min(1),summary:g.string().min(1).optional(),status:g.string().min(1).optional(),priority:g.enum(["low","medium","high","critical","unknown"]).default("unknown"),timestamp:B_.optional(),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),metadata:_4.optional()}).strict(),iq=g.object({renderer:g.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),title:g.string().min(1).optional(),entry:R$.optional(),imports:g.array(EP).default([]),spec:_4.default({})}).strict(),D8=S_(u.projectPanel).extend({projectId:_0,provider:g.object({kind:IP,id:g.string().min(1),name:g.string().min(1).optional(),sourcePackage:o.optional(),externalId:o.optional()}).strict(),kind:dq,title:g.string().min(1),summary:g.string().min(1).optional(),state:nq.default("ready"),stateReason:g.string().min(1).optional(),generatedAt:B_,freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),metrics:g.array(mq).default([]),items:g.array(lq).default([]),actions:g.array(s).default([]),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),renderFragment:iq.optional(),warnings:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set(["error","auth_required","unavailable","stale"]),I=new Set,U=new Set;if(D.has(_.state)&&!_.stateReason)$.addIssue({code:g.ZodIssueCode.custom,message:"Non-ready provider states require stateReason",path:["stateReason"]});if(_.state==="ready"&&_.metrics.length===0&&_.items.length===0&&!_.renderFragment)$.addIssue({code:g.ZodIssueCode.custom,message:"Ready panels require metrics, items, or a renderFragment; use state=empty for empty panels",path:["state"]});for(let[E,j]of _.metrics.entries()){if(I.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel metric ids must be unique",path:["metrics",E,"id"]});I.add(j.id)}for(let[E,j]of _.items.entries()){if(U.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel item ids must be unique",path:["items",E,"id"]});U.add(j.id)}for(let[E,j]of _.actions.entries())if(j.kind!=="action")$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel actions must use resource kind action",path:["actions",E,"kind"]})}),tq=S_(u.projectSnapshot).extend({projectId:_0,generatedAt:B_,status:D0.default("unknown"),manifestRef:s,renderManifestRef:s.optional(),panels:g.array(D8).default([]),contextPacks:g.array(_8).default([]),proofBundleRefs:g.array(s).default([]),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),warnings:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{let D=new Set,I=new Set;if(_.manifestRef.kind!=="project")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot manifestRef must use resource kind project",path:["manifestRef","kind"]});if(_.renderManifestRef&&_.renderManifestRef.kind!=="render")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot renderManifestRef must use resource kind render",path:["renderManifestRef","kind"]});for(let[U,E]of _.proofBundleRefs.entries())if(E.kind!=="proof_bundle")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot proofBundleRefs must use resource kind proof_bundle",path:["proofBundleRefs",U,"kind"]});for(let[U,E]of _.panels.entries()){if(E.projectId!==_.projectId)$.addIssue({code:g.ZodIssueCode.custom,message:"Panel projectId must match snapshot projectId",path:["panels",U,"projectId"]});if(D.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot panel ids must be unique",path:["panels",U,"id"]});D.add(E.id)}for(let[U,E]of _.contextPacks.entries()){if(I.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot context pack ids must be unique",path:["contextPacks",U,"id"]});I.add(E.id)}}),U8=g.object({id:g.string().min(1),kind:g.enum(["command","test","typecheck","lint","eval","security","review","deploy","smoke","manual","other"]),required:g.boolean().default(!0),command:g.string().min(1).optional(),expected:g.string().min(1).optional(),timeoutMs:g.number().int().positive().optional(),resourceRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(new Set(["command","test","typecheck","lint","smoke","eval"]).has(_.kind)&&!_.command&&!_.expected)$.addIssue({code:g.ZodIssueCode.custom,message:"Actionable validation checks require command or expected",path:["command"]})}),oq=S_(u.validationPlan).extend({objective:g.string().min(1),subject:s.optional(),checks:g.array(U8).min(1),verifier:e$.optional(),requiredEvidenceKinds:g.array(UP).default([])}).strict(),pq=g.enum(["open_source","internal_app","platform","app","agent","content","overlay","other"]),eq=g.enum(["draft","active","deprecated","archived"]),aq=g.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"]),sq=g.object({key:g.string().regex(/^[A-Z][A-Z0-9_]*$/),description:g.string().min(1),required:g.boolean().default(!1),["secret"]:g.boolean().default(!1),group:g.string().min(1).optional(),default:g.string().optional()}).strict().superRefine((_,$)=>{if(_.secret&&_.default!==void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"Secret scaffold env vars cannot include defaults",path:["default"]})}),_C=g.object({name:g.string().min(1),command:g.string().min(1),description:g.string().min(1).optional(),required:g.boolean().default(!1)}).strict(),$C=g.object({packageManager:g.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),languages:g.array(g.string().min(1)).default([]),requiredFiles:g.array(g.string().min(1)).default([]),requiredDirectories:g.array(g.string().min(1)).default([]),optionalDirectories:g.array(g.string().min(1)).default([])}).strict(),DC=S_(u.scaffoldManifest).extend({name:g.string().min(1),version:g.string().min(1),summary:g.string().min(1),type:pq,status:eq.default("draft"),capabilities:g.array(aq).default([]),techStack:g.array(g.string().min(1)).default([]),tags:ZD,source:s.optional(),output:$C,env:g.array(sq).default([]),scripts:g.array(_C).default([]),validationChecks:g.array(U8).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.source?.uri?.startsWith("file://"))$.addIssue({code:g.ZodIssueCode.custom,message:"Public scaffold manifest source refs cannot use local file:// URIs",path:["source","uri"]});if(_.status==="active"&&_.validationChecks.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Active scaffold manifests require validation checks",path:["validationChecks"]});if(_.status==="active"&&_.output.requiredFiles.length===0&&_.output.requiredDirectories.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Active scaffold manifests require at least one required file or directory",path:["output"]})}),UC=g.enum(["installed","failed","cancelled","partial","unknown"]),IC=S_(u.scaffoldInstallRecord).extend({scaffoldId:g.string().min(1),scaffoldVersion:g.string().min(1).optional(),manifestRef:s.optional(),target:s,status:UC,installedAt:B_.optional(),installer:e$.optional(),packageManager:g.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),options:_4.optional(),generatedFiles:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),proofBundleRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(_.status==="installed"&&!_.installedAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Installed scaffold records require installedAt",path:["installedAt"]});if(_.status==="installed"&&_.generatedFiles.length===0&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed or partial scaffold records require evidence or proof bundle refs",path:["evidenceRefs"]})}),bD=g.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"App ids must be lowercase dashed identifiers"),jP=g.string().regex(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,"Must be a valid npm package name"),I8=g.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"),EC=g.string().regex(/^[0-9a-f]{7,40}$/,"Must be a lowercase git sha (7-40 hex chars)"),jC=o.refine((_)=>_.startsWith("https://github.com/")||_.startsWith("git+https://github.com/"),"GitHub URLs must start with https://github.com/ or git+https://github.com/"),NC=g.enum(["active","stub","deprecated","archived"]),gC=g.enum(["stable","beta","canary","internal"]),AC=g.object({transport:g.enum(["http","stdio"]).default("http"),bin:g.string().min(1).optional(),url:r$.optional()}).strict(),OC=g.object({healthPath:g.string().min(1).default("/health"),port:g.number().int().positive().optional(),baseUrl:r$.optional()}).strict(),LC=g.object({bins:g.array(g.string().min(1)).default([]),mcp:AC.optional(),http:OC.optional()}).strict(),SC=S_(u.app).extend({appId:bD,npmName:jP,repoFolder:bD,githubUrl:jC,projectSlug:_0,surfaces:LC.default({}),lifecycle:NC,releaseChannel:gC.default("stable"),summary:g.string().min(1).optional(),tags:ZD}).strict().superRefine((_,$)=>{let D=new Set;for(let[I,U]of _.surfaces.bins.entries()){if(D.has(U))$.addIssue({code:g.ZodIssueCode.custom,message:"App surface bins must be unique",path:["surfaces","bins",I]});D.add(U)}}),JC=g.enum(["skill","ci","backfilled"]),WC=S_(u.release).extend({appId:bD,package:jP,version:I8,gitSha:EC,publishedAt:B_,publishPath:JC,changelogRef:s.optional(),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.publishPath!=="backfilled"&&_.evidenceRefs.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"skill and ci releases require publish evidence; only backfilled releases may omit it",path:["evidenceRefs"]})}),PC=g.enum(["install","update","rollback","freeze-blocked"]),zC=g.object({cliVersion:g.string().min(1).optional(),mcpHealth:g.enum(["ok","degraded","unavailable","not_checked"]).optional()}).strict().superRefine((_,$)=>{if(!_.cliVersion&&_.mcpHealth===void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"Rollout verification requires at least one concrete verifier field"})}),XC=S_(u.rolloutRecord).extend({appId:bD,package:jP,version:I8,machine:o,action:PC,result:D0,verifiedBy:zC.optional(),at:B_,evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.action==="freeze-blocked"&&_.result!=="blocked"&&_.result!=="skipped")$.addIssue({code:g.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",I=_.verifiedBy?Object.keys(_.verifiedBy).length>0:!1;if((_.action==="install"||_.action==="update")&&_.result==="succeeded"&&(!_.verifiedBy||I&&!D))$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded install/update rollout records require concrete verification",path:["verifiedBy"]})}),GC=g.enum(["email","telegram","slack","discord","x","blog","rss","webhook","github","other"]),RC=g.enum(["pending","queued","sent","failed","skipped","suppressed"]),YC=g.object({channel:GC,status:RC,deliveredAt:B_.optional(),detail:g.string().min(1).optional()}).strict().superRefine((_,$)=>{if(_.status==="sent"&&!_.deliveredAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Sent announcement channels require deliveredAt",path:["deliveredAt"]});if(_.status==="failed"&&!_.detail)$.addIssue({code:g.ZodIssueCode.custom,message:"Failed announcement channels require detail",path:["detail"]})}),QC=S_(u.announcement).extend({campaignId:o,appId:bD.optional(),releaseRef:s.optional(),channels:g.array(YC).min(1),audienceRef:s,sentAt:B_}).strict().superRefine((_,$)=>{if(_.releaseRef&&_.releaseRef.kind!=="release")$.addIssue({code:g.ZodIssueCode.custom,message:"Announcement releaseRef must use resource kind release",path:["releaseRef","kind"]});if(_.audienceRef.kind!=="audience")$.addIssue({code:g.ZodIssueCode.custom,message:"Announcement audienceRef must use resource kind audience",path:["audienceRef","kind"]})}),KC=g.enum(["tag","attribute","group"]),TC=g.enum(["eq","neq","in","not_in","exists","not_exists"]),C9=g.union([g.string(),g.number(),g.boolean()]),FC=g.object({kind:KC,key:g.string().min(1).optional(),op:TC.default("eq"),value:C9.optional(),values:g.array(C9).default([])}).strict().superRefine((_,$)=>{if(_.kind==="attribute"&&!_.key)$.addIssue({code:g.ZodIssueCode.custom,message:"Attribute predicates require key",path:["key"]});if((_.op==="eq"||_.op==="neq")&&_.value===void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"eq/neq predicates require value",path:["value"]});if((_.op==="in"||_.op==="not_in")&&_.values.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"in/not_in predicates require values",path:["values"]})}),VC=g.object({match:g.enum(["all","any"]).default("all"),predicates:g.array(FC).min(1)}).strict(),BC=g.enum(["opt_in","opt_out","transactional","none"]),MC=S_(u.audience).extend({audienceId:bD,name:o,definition:VC,consentPolicy:BC,suppressionSyncedAt:s4}).strict(),XN=["@hasna/cloud","open-cloud"],bC=g.enum(["aws","gcp","azure","cloudflare","vercel","neon","supabase","postgres","s3","rds","other"]),ZC=g.object({id:g.string().min(1),provider:bC,kind:g.enum(["database","bucket","queue","secret","function","worker","cache","topic","scheduler","object_store","other"]),ownerPackage:g.string().min(1),region:g.string().min(1).optional(),accountId:g.string().min(1).optional(),uri:r$.optional(),machineScoped:g.boolean().default(!1)}).strict(),E8=S_(u.appCloudManifest).extend({packageName:g.string().min(1),packageVersion:g.string().min(1).optional(),appId:g.string().min(1),repository:s.optional(),storageMode:g.enum(["local_only","app_owned_cloud","hybrid_local_cache","external_service"]),cloudBoundary:g.enum(["none","app_owned","external_service","local_cache"]),cloudResources:g.array(ZC).default([]),localCache:g.object({path:g.string().min(1).optional(),pullMode:g.enum(["manual","daemon","ci","none"]).default("manual"),conflictPolicy:g.enum(["cloud_wins","local_wins","merge","manual_review"]).default("manual_review")}).strict().optional(),forbiddenSharedRuntimes:g.array(g.string().min(1)).default([...XN]),dependencies:g.array(g.string().min(1)).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=new Set([...XN,..._.forbiddenSharedRuntimes]);if(D.has(_.packageName))$.addIssue({code:g.ZodIssueCode.custom,message:"App-owned cloud manifests cannot be for a forbidden runtime",path:["packageName"]});for(let I of XN)if(!_.forbiddenSharedRuntimes.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`forbiddenSharedRuntimes must include ${I}`,path:["forbiddenSharedRuntimes"]});for(let I of D)if(_.dependencies.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`App-owned cloud manifests cannot depend on ${I}`,path:["dependencies"]});if(_.storageMode==="local_only"&&_.cloudBoundary!=="none")$.addIssue({code:g.ZodIssueCode.custom,message:"local_only storage requires cloudBoundary none",path:["cloudBoundary"]});if(_.storageMode==="app_owned_cloud"&&_.cloudBoundary!=="app_owned")$.addIssue({code:g.ZodIssueCode.custom,message:"app_owned_cloud storage requires cloudBoundary app_owned",path:["cloudBoundary"]});if(_.storageMode==="hybrid_local_cache"){if(_.cloudBoundary!=="local_cache")$.addIssue({code:g.ZodIssueCode.custom,message:"hybrid_local_cache storage requires cloudBoundary local_cache",path:["cloudBoundary"]});if(!_.localCache)$.addIssue({code:g.ZodIssueCode.custom,message:"hybrid_local_cache storage requires localCache settings",path:["localCache"]})}if(_.storageMode==="external_service"){if(_.cloudBoundary!=="external_service")$.addIssue({code:g.ZodIssueCode.custom,message:"external_service storage requires cloudBoundary external_service",path:["cloudBoundary"]});if(_.cloudResources.length>0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Cloud-backed storage modes require explicit app-owned cloudResources",path:["cloudResources"]});if(_.cloudBoundary==="none"&&_.cloudResources.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"cloudBoundary none cannot declare cloudResources",path:["cloudResources"]});_.cloudResources.forEach((I,U)=>{if(I.ownerPackage!==_.packageName)$.addIssue({code:g.ZodIssueCode.custom,message:"Cloud resources must be owned by the app package that declares the manifest",path:["cloudResources",U,"ownerPackage"]})})}),j8=g.enum(["package_manifest","lockfile","source_import","runtime_config","packed_artifact","published_metadata","app_cloud_manifest","remote_config","boundary_doc","other"]),HC=g.enum(["low","medium","high","critical"]),N8=g.object({id:g.string().min(1),kind:j8,severity:HC,path:g.string().min(1).optional(),packageName:g.string().min(1).optional(),pattern:g.string().min(1),message:g.string().min(1),evidenceRefs:g.array(K_).default([])}).strict(),kC=g.object({id:g.string().min(1),kind:j8,status:D0,target:g.string().min(1),command:g.string().min(1).optional(),evidenceRefs:g.array(K_).default([]),findings:g.array(N8).default([])}).strict(),qC=S_(u.noCloudEvidencePack).extend({subject:s,packageName:g.string().min(1).optional(),packageVersion:g.string().min(1).optional(),generatedBy:e$.optional(),scanMode:g.enum(["source_tree","packed_artifact","published_metadata","runtime_config","workspace","ci"]),status:D0,verdict:g.enum(["passed","failed","warning","not_run"]),appCloudManifest:E8.optional(),checks:g.array(kC).min(1),findings:g.array(N8).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{let D=[..._.findings,..._.checks.flatMap((U)=>U.findings)],I=D.filter((U)=>U.severity==="high"||U.severity==="critical");if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence requires succeeded status",path:["status"]});if(I.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence cannot include high or critical findings",path:["findings"]});if(_.checks.some((U)=>U.status!=="succeeded"))$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence requires every check to be succeeded",path:["checks"]})}if(_.verdict==="failed"&&D.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Failed no-cloud evidence requires findings",path:["findings"]});if(_.status==="succeeded"&&_.checks.some((U)=>U.status==="failed"))$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded no-cloud evidence cannot contain failed checks",path:["checks"]});_.checks.forEach((U,E)=>{let j=U.findings.filter((N)=>N.severity==="high"||N.severity==="critical");if(U.status==="succeeded"&&j.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded no-cloud checks cannot contain high or critical findings",path:["checks",E,"findings"]})})}),CC=g.object({checkId:g.string().min(1),status:D0,summary:g.string().min(1).optional(),startedAt:s4,finishedAt:s4,evidenceRefs:g.array(K_).default([])}).strict(),vC=S_(u.proofBundle).extend({subject:s,validationPlanRef:s.optional(),status:D0,verdict:g.enum(["passed","failed","inconclusive","not_run"]).default("inconclusive"),checks:g.array(CC).default([]),verifier:e$.optional(),evidenceRefs:g.array(K_).default([]),residualRisks:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles must have status succeeded",path:["status"]});if(_.checks.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require at least one check result",path:["checks"]});if(_.checks.forEach((I,U)=>{if(I.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require all checks to have status succeeded",path:["checks",U,"status"]})}),!(_.evidenceRefs.length>0||_.checks.some((I)=>I.evidenceRefs.length>0)))$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require evidence",path:["evidenceRefs"]});if(!_.verifier)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require a verifier",path:["verifier"]})}if(_.verdict==="not_run"&&_.checks.length>0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed proof bundles require a failed check or evidence",path:["checks"]})}),wC=S_(u.workRun).extend({objective:g.string().min(1),status:D0,actor:e$,traceId:g.string().min(1).optional(),startedAt:s4,finishedAt:s4,constraints:g.array(g.string().min(1)).default([]),resourceRefs:g.array(s).default([]),decisions:g.array(s9).default([]),costEstimates:g.array(b1).default([]),evidenceRefs:g.array(K_).default([]),validationPlanRefs:g.array(s).default([]),proofBundleRefs:g.array(s).default([])}).strict().superRefine((_,$)=>{if(_.startedAt&&_.finishedAt&&Date.parse(_.finishedAt)<Date.parse(_.startedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"finishedAt must be after or equal to startedAt",path:["finishedAt"]});if(Qq.has(_.status)&&!_.finishedAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Terminal work runs require finishedAt",path:["finishedAt"]});let D=_.evidenceRefs.length>0||_.proofBundleRefs.length>0;if(_.status==="succeeded"&&!D)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed or blocked work runs require evidence, a proof bundle, or a decision record",path:["evidenceRefs"]})}),rC=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"])}),fC=g.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"]),xC=g.enum(["todos","codewith","repos","review","merge_provider","openloops","adapter"]),$0=g.string().regex(/^[a-f0-9]{64}$/),FN=g.string().trim().min(3).max(256),g8=/^[a-f0-9]{32}$/;function uC(_,$,D){return`${_}:${$}:opaque-${D.slice(0,32)}`}function yC(_){return`evidence:opaque-${_.slice(0,32)}`}var A8=FN.refine((_)=>{let D=_.startsWith("task_to_pr_projection:opaque-")?_.slice(29):"";return g8.test(D)},"Projection ids must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),NP=FN.refine((_)=>{let D=_.startsWith("attempt_nonce:opaque-")?_.slice(21):"";return g8.test(D)},"Attempt nonces must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),hC=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"]),gP=g.object({role:fC,authority:xC,id:FN,digest:$0,redaction:g.enum(["none","partial","full"])}).strict().superRefine((_,$)=>{let D=rC[_.role];if(!D.includes(_.authority))$.addIssue({code:g.ZodIssueCode.custom,message:`${_.role} refs must be owned by ${D.join(" or ")}`,path:["authority"]});if(hC.has(_.role)&&_.redaction==="none")$.addIssue({code:g.ZodIssueCode.custom,message:`${_.role} refs must be redacted and cannot carry a raw locator or credential`,path:["redaction"]});let I=uC(_.role,_.authority,_.digest);if(_.id!==I)$.addIssue({code:g.ZodIssueCode.custom,message:"Reference ids must be nonsemantic authority-bound surrogates derived from the canonical role, authority, and owner-record digest",path:["id"]})}),Y$=g.object({id:FN,digest:$0,redaction:g.enum(["partial","full"])}).strict().superRefine((_,$)=>{if(_.id!==yC(_.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Evidence ids must be nonsemantic owner-resolvable surrogates derived from their canonical digest",path:["id"]})});function O8(_,$,D,I){if(_.id===$.id||_.digest===$.digest)D.addIssue({code:g.ZodIssueCode.custom,message:"Stop and lease-revocation facts require distinct evidence identities and digests",path:I})}function Z(_){return gP.refine(($)=>$.role===_,{message:`Reference must use role ${_}`,path:["role"]})}function V_(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id&&_.digest===$.digest&&_.redaction===$.redaction}function AP(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id}function WD(_,$,D,I,U){if(AP(_,$))D.addIssue({code:g.ZodIssueCode.custom,message:`${U} requires a fresh canonical role/authority/id`,path:I});if(_.digest===$.digest)D.addIssue({code:g.ZodIssueCode.custom,message:`${U} requires a fresh canonical digest`,path:I})}function YN(_){return`${_.role}\x00${_.authority}\x00${_.id}`}function s_(_,$){return _.algorithm===$.algorithm&&_.value===$.value}var Q_=g.object({algorithm:g.enum(["sha1","sha256"]),value:g.string().regex(/^[a-f0-9]+$/)}).strict().superRefine((_,$)=>{let D=_.algorithm==="sha1"?40:64;if(_.value.length!==D)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.algorithm} object ids must contain exactly ${D} lowercase hex characters`,path:["value"]})});function v9(_){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 Z9("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 Z9("sha256").update($,"utf8").digest("hex")}var cC=g.object({ref:Z("attempt"),nonce:NP,admissionRef:Z("admission"),admissionWriterGenerationRef:Z("writer_generation"),workerActorRef:Z("worker_actor"),workerRef:Z("worker"),runtimeRef:Z("runtime"),writerGenerationRef:Z("writer_generation"),writerLeaseRef:Z("writer_lease"),writerFenceRef:Z("writer_fence"),providerProfileRef:Z("provider_profile"),providerRouteRef:Z("provider_route")}).strict(),nC=g.object({repoRef:Z("repo"),worktreeRef:Z("worktree"),branchRef:Z("branch"),baseHead:Q_,branchHead:Q_}).strict(),dC=g.object({streamRef:Z("event_stream"),replayCursorRef:Z("replay_cursor"),sequence:g.number().int().safe().nonnegative(),prefixDigest:$0}).strict(),mC=g.object({ref:Z("handoff"),previousAttemptRef:Z("attempt"),nextAttemptRef:Z("attempt"),previousWriterGenerationRef:Z("writer_generation"),nextWriterGenerationRef:Z("writer_generation"),stoppedWorkRunRef:Z("work_run"),stopEvidenceRef:Y$,leaseRevocationEvidenceRef:Y$}).strict().superRefine((_,$)=>{WD(_.previousAttemptRef,_.nextAttemptRef,$,["nextAttemptRef"],"Handoff attempt rotation"),WD(_.previousWriterGenerationRef,_.nextWriterGenerationRef,$,["nextWriterGenerationRef"],"Handoff writer-generation rotation"),O8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),lC=g.object({ref:Z("review"),pullRequestRef:Z("pull_request"),base:Q_,head:Q_,reviewerRef:Z("reviewer"),reviewRunRef:Z("review_run"),proofBundleRef:Z("proof_bundle"),verdict:g.enum(["approved","changes_requested","blocked"]),reviewedAt:B_}).strict(),iC=g.object({pullRequestRef:Z("pull_request"),remoteBranchRef:Z("branch"),expectedBase:Q_,providerPullRequestBase:Q_,localHead:Q_,remoteHead:Q_,providerPullRequestHead:Q_,equalityProofRef:Z("proof_bundle"),ciProofBundleRefs:g.array(Z("proof_bundle")).min(1),verifiedAt:B_}).strict().superRefine((_,$)=>{if(!s_(_.expectedBase,_.providerPullRequestBase))$.addIssue({code:g.ZodIssueCode.custom,message:"Expected and provider-observed pull-request bases must be exactly equal",path:["providerPullRequestBase"]});if(!s_(_.localHead,_.remoteHead)||!s_(_.localHead,_.providerPullRequestHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Local, remote, and provider pull-request heads must be exactly equal",path:["providerPullRequestHead"]});let D=_.ciProofBundleRefs.map(YN);if(new Set(D).size!==D.length)$.addIssue({code:g.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical identities",path:["ciProofBundleRefs"]});let I=_.ciProofBundleRefs.map((U)=>U.digest);if(new Set(I).size!==I.length)$.addIssue({code:g.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical digests",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((U)=>AP(U,_.equalityProofRef)))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical digests",path:["ciProofBundleRefs"]})}),tC=g.object({ref:Z("repair_cycle"),cycle:g.number().int().min(0).max(2),cap:g.literal(2),exhausted:g.boolean(),latestRepairRef:Z("repair_cycle").optional()}).strict().superRefine((_,$)=>{if(_.exhausted!==(_.cycle===_.cap))$.addIssue({code:g.ZodIssueCode.custom,message:"Repair exhaustion must equal the cumulative cycle cap",path:["exhausted"]});if(_.cycle===0&&_.latestRepairRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Cycle zero cannot reference a repair",path:["latestRepairRef"]});if(_.cycle>0&&!_.latestRepairRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Non-zero repair state requires the latest immutable repair ref",path:["latestRepairRef"]});if(_.latestRepairRef&&AP(_.ref,_.latestRepairRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must be distinct canonical records",path:["latestRepairRef"]});if(_.latestRepairRef&&_.ref.digest===_.latestRepairRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must have distinct canonical digests",path:["latestRepairRef"]})}),oC=g.object({ref:Z("merge_guard"),pullRequestRef:Z("pull_request"),expectedBase:Q_,expectedHead:Q_,reviewRefs:g.array(Z("review")).min(1),proofBundleRefs:g.array(Z("proof_bundle")).min(1),operatorRef:Z("merge_operator"),operatorRunRef:Z("merge_operator_run"),providerGuardReceiptRef:Z("merge_guard_receipt"),mechanism:g.enum(["compare_and_swap","queue_expected_head"]),decision:g.enum(["eligible","denied","consumed","revoked"]),evaluatedAt:B_}).strict().superRefine((_,$)=>{if(new Set(_.reviewRefs.map((E)=>E.id)).size!==_.reviewRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard review refs must be unique",path:["reviewRefs"]});if(new Set(_.proofBundleRefs.map(YN)).size!==_.proofBundleRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical identities",path:["proofBundleRefs"]});if(new Set(_.proofBundleRefs.map((E)=>E.digest)).size!==_.proofBundleRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical digests",path:["proofBundleRefs"]})}),pC=g.object({ref:Z("merge_outcome"),guardRef:Z("merge_guard"),pullRequestRef:Z("pull_request"),expectedBase:Q_,observedBase:Q_,expectedHead:Q_,observedHead:Q_,status:g.enum(["merged","closed_unmerged","refused","head_drift","base_drift"]),mergeCommitRef:Z("commit").optional(),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().superRefine((_,$)=>{let D=s_(_.expectedBase,_.observedBase),I=s_(_.expectedHead,_.observedHead);if(_.status==="merged"){if(!D||!I)$.addIssue({code:g.ZodIssueCode.custom,message:"Merged outcomes require observed base and head to equal the guarded values",path:[!D?"observedBase":"observedHead"]});if(!_.mergeCommitRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Merged outcomes require an immutable merge commit ref",path:["mergeCommitRef"]})}else if(_.mergeCommitRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Unmerged outcomes cannot claim a merge commit",path:["mergeCommitRef"]});if(_.status==="head_drift"&&I)$.addIssue({code:g.ZodIssueCode.custom,message:"Head-drift outcomes require distinct expected and observed heads",path:["observedHead"]});if(_.status==="head_drift"&&!D)$.addIssue({code:g.ZodIssueCode.custom,message:"Head-drift outcomes cannot also carry an unclassified base drift",path:["observedBase"]});if(_.status==="base_drift"&&D)$.addIssue({code:g.ZodIssueCode.custom,message:"Base-drift outcomes require distinct expected and observed bases",path:["observedBase"]});if(_.status==="base_drift"&&!I)$.addIssue({code:g.ZodIssueCode.custom,message:"Base-drift outcomes cannot also carry an unclassified head drift",path:["observedHead"]});if(!I&&_.status!=="head_drift")$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Only a base_drift outcome may record an observed base that differs from the expected base",path:["observedBase"]})}),eC=g.object({guard:oC,outcome:pC.optional()}).strict(),aC=g.object({ref:Z("recovery"),priorAttemptRef:Z("attempt"),priorWriterGenerationRef:Z("writer_generation"),priorWorkRunRef:Z("work_run"),successorAttemptNonce:NP,successorWriterGenerationRef:Z("writer_generation"),preservedStateRefs:g.array(gP).min(1),stopEvidenceRef:Y$,leaseRevocationEvidenceRef:Y$}).strict().superRefine((_,$)=>{WD(_.priorWriterGenerationRef,_.successorWriterGenerationRef,$,["successorWriterGenerationRef"],"Recovery writer-generation rotation"),O8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),sC=g.object({ref:Z("cancellation"),cancelledAttemptRef:Z("attempt"),preservedStateRefs:g.array(gP).min(1),evidenceRefs:g.array(Y$).min(1)}).strict(),_v=g.object({ref:Z("cleanup_eligibility"),status:g.enum(["not_ready","preserved","blocked","eligible"]),targetWorktreeRef:Z("worktree"),eventCursorRef:Z("replay_cursor"),terminalDispositionRef:Z("terminal_disposition"),writerLeaseRef:Z("writer_lease"),leaseRevocationEvidenceRef:Y$,consumedEventEvidenceRef:Y$,evaluatedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().superRefine((_,$)=>{if(_.leaseRevocationEvidenceRef.id===_.consumedEventEvidenceRef.id||_.leaseRevocationEvidenceRef.digest===_.consumedEventEvidenceRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup lease-revocation and consumed-event facts require distinct evidence identities and digests",path:["consumedEventEvidenceRef"]})}),$v=g.object({ref:Z("cleanup_outcome"),eligibilityRef:Z("cleanup_eligibility"),targetWorktreeRef:Z("worktree"),status:g.enum(["preserved","deleted","failed","skipped"]),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict(),Dv=g.object({eligibility:_v,outcome:$v.optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!V_(_.outcome.eligibilityRef,_.eligibility.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup outcomes must bind the exact eligibility decision",path:["outcome","eligibilityRef"]});if(_.outcome&&!V_(_.outcome.targetWorktreeRef,_.eligibility.targetWorktreeRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Deletion requires an eligible cleanup decision",path:["outcome","status"]})}),Uv=g.object({plan:g.object({ref:Z("rollback_plan"),targetRef:g.union([Z("commit"),Z("branch")]),createdAt:B_}).strict(),outcome:g.object({ref:Z("rollback_outcome"),planRef:Z("rollback_plan"),targetRef:g.union([Z("commit"),Z("branch")]),status:g.enum(["not_run","succeeded","failed","cancelled"]),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!V_(_.outcome.planRef,_.plan.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback plan",path:["outcome","planRef"]});if(_.outcome&&!V_(_.outcome.targetRef,_.plan.targetRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback target",path:["outcome","targetRef"]});if(_.outcome&&Date.parse(_.outcome.finishedAt)<Date.parse(_.plan.createdAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes cannot finish before their plan was created",path:["outcome","finishedAt"]})}),Iv=g.discriminatedUnion("category",[g.object({category:g.literal("projection_id"),projectionId:A8}).strict(),g.object({category:g.literal("work_run"),ref:Z("work_run")}).strict(),g.object({category:g.literal("attempt"),ref:Z("attempt")}).strict(),g.object({category:g.literal("admission"),ref:Z("admission")}).strict(),g.object({category:g.literal("worker_actor"),ref:Z("worker_actor")}).strict(),g.object({category:g.literal("worker_assignment"),ref:Z("worker")}).strict(),g.object({category:g.literal("attempt_nonce"),nonce:NP}).strict(),g.object({category:g.literal("runtime"),ref:Z("runtime")}).strict(),g.object({category:g.literal("writer_generation"),ref:Z("writer_generation")}).strict(),g.object({category:g.literal("writer_lease"),ref:Z("writer_lease")}).strict(),g.object({category:g.literal("writer_fence"),ref:Z("writer_fence")}).strict(),g.object({category:g.literal("provider_profile"),ref:Z("provider_profile")}).strict(),g.object({category:g.literal("provider_route"),ref:Z("provider_route")}).strict(),g.object({category:g.literal("replay_cursor"),ref:Z("replay_cursor")}).strict(),g.object({category:g.literal("replay_prefix"),sequence:g.number().int().safe().nonnegative(),prefixDigest:$0}).strict(),g.object({category:g.literal("repair_state"),ref:Z("repair_cycle")}).strict(),g.object({category:g.literal("latest_repair"),ref:Z("repair_cycle")}).strict(),g.object({category:g.literal("handoff"),ref:Z("handoff")}).strict(),g.object({category:g.literal("recovery"),ref:Z("recovery")}).strict(),g.object({category:g.literal("merge_guard"),ref:Z("merge_guard")}).strict(),g.object({category:g.literal("cleanup_eligibility"),ref:Z("cleanup_eligibility")}).strict(),g.object({category:g.literal("rollback_plan"),ref:Z("rollback_plan")}).strict(),g.object({category:g.literal("terminal_disposition"),ref:Z("terminal_disposition")}).strict(),g.object({category:g.literal("equality_proof"),ref:Z("proof_bundle"),base:Q_,head:Q_}).strict(),g.object({category:g.literal("ci_proof"),ref:Z("proof_bundle"),base:Q_,head:Q_}).strict(),g.object({category:g.literal("review_proof"),ref:Z("proof_bundle"),base:Q_,head:Q_}).strict(),g.object({category:g.literal("review_record"),ref:Z("review"),base:Q_,head:Q_}).strict(),g.object({category:g.literal("review_run"),ref:Z("review_run"),base:Q_,head:Q_}).strict(),g.object({category:g.literal("provider_guard_receipt"),ref:Z("merge_guard_receipt"),base:Q_,head:Q_}).strict()]);function Ev(_){return[{category:"projection_id",projectionId:_.id},{category:"work_run",ref:_.workRunRef},{category:"attempt",ref:_.attempt.ref},{category:"admission",ref:_.attempt.admissionRef},{category:"worker_actor",ref:_.attempt.workerActorRef},{category:"worker_assignment",ref:_.attempt.workerRef},{category:"attempt_nonce",nonce:_.attempt.nonce},{category:"runtime",ref:_.attempt.runtimeRef},{category:"writer_generation",ref:_.attempt.writerGenerationRef},{category:"writer_lease",ref:_.attempt.writerLeaseRef},{category:"writer_fence",ref:_.attempt.writerFenceRef},{category:"provider_profile",ref:_.attempt.providerProfileRef},{category:"provider_route",ref:_.attempt.providerRouteRef},{category:"replay_cursor",ref:_.events.replayCursorRef},{category:"replay_prefix",sequence:_.events.sequence,prefixDigest:_.events.prefixDigest},{category:"repair_state",ref:_.repair.ref},..._.repair.latestRepairRef?[{category:"latest_repair",ref:_.repair.latestRepairRef}]:[],..._.handoff?[{category:"handoff",ref:_.handoff.ref}]:[],..._.recovery?[{category:"recovery",ref:_.recovery.ref}]:[],..._.exactHead?[{category:"equality_proof",ref:_.exactHead.equalityProofRef,base:_.exactHead.expectedBase,head:_.exactHead.localHead},..._.exactHead.ciProofBundleRefs.map(($)=>({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 jv(_,$){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 V_(_.ref,$.ref)&&(("head"in _)&&("head"in $)&&("base"in _)&&("base"in $)&&s_(_.base,$.base)&&s_(_.head,$.head)||!("head"in _)&&!("head"in $)&&!("base"in _)&&!("base"in $))}var Nv="hasna.task_to_pr_adapter_extension.",gv=g.object({mode:g.enum(["local","cloud"]),schema:DP,ref:Z("adapter_extension"),digest:$0}).strict().superRefine((_,$)=>{if(!_.schema.startsWith(Nv))$.addIssue({code:g.ZodIssueCode.custom,message:"Adapter extension schema ids must use the permanently reserved task-to-PR adapter-extension namespace",path:["schema"]})}),Av=g.enum(["admitted","running","handed_off","reviewing","repairing","merge_ready","merged","closed_unmerged","failed","blocked","cancelled","recovering","cleanup_complete","rolled_back"]),w9=new Set(["admitted","running","handed_off"]),r9=new Set(["merged","closed_unmerged","failed","blocked","cancelled","cleanup_complete","rolled_back"]),Ov={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"])},Lv=g.object({schema:g.literal(u.taskToPrProjection),id:A8,createdAt:B_,canonicalizationVersion:g.union([g.literal(1),g.literal(2)]),identityDigest:$0,frozenScopeDigest:$0,state:Av,workRunRef:Z("work_run"),rootRequestRef:Z("root_request"),prGroupRef:Z("pr_group"),leafTaskRef:Z("leaf_task"),attempt:cC,repository:nC,events:dC,openLoopsInvocationRef:Z("openloops_invocation").optional(),pullRequestRef:Z("pull_request").optional(),exactHead:iC.optional(),handoff:mC.optional(),reviews:g.array(lC).default([]),repair:tC,merge:eC.optional(),recovery:aC.optional(),cancellation:sC.optional(),cleanup:Dv.optional(),rollback:Uv.optional(),terminalDispositionRef:Z("terminal_disposition").optional(),provenanceLedger:g.array(Iv),adapterExtensions:g.array(gv).default([]),evidenceRefs:g.array(Y$).default([])}).strict().superRefine((_,$)=>{let D=_.canonicalizationVersion===1?v9({canonicalizationVersion:1,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest}):v9({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:g.ZodIssueCode.custom,message:"identityDigest must equal the selected v1 compatibility or v2 branch/worktree-bound canonical identity digest",path:["identityDigest"]});let I=new Set,U=new Set,E=new Set,j=new Set,N=new Set,A=new Set;for(let[T,F]of _.provenanceLedger.entries()){if("ref"in F){if(I.has(F.ref.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical owner id across categories or generations",path:["provenanceLedger",T,"ref","id"]});if(I.add(F.ref.id),U.has(F.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical digest across categories or generations",path:["provenanceLedger",T,"ref","digest"]});U.add(F.ref.digest);continue}if(F.category==="projection_id"){if(E.has(F.projectionId))$.addIssue({code:g.ZodIssueCode.custom,message:"Projection identity provenance tombstones must be globally unique",path:["provenanceLedger",T,"projectionId"]});E.add(F.projectionId);continue}if(F.category==="attempt_nonce"){if(j.has(F.nonce))$.addIssue({code:g.ZodIssueCode.custom,message:"Attempt nonce provenance tombstones must be globally unique",path:["provenanceLedger",T,"nonce"]});j.add(F.nonce);continue}if(N.has(F.prefixDigest))$.addIssue({code:g.ZodIssueCode.custom,message:"Replay prefix provenance tombstones must be globally unique",path:["provenanceLedger",T,"prefixDigest"]});if(N.add(F.prefixDigest),A.has(F.sequence))$.addIssue({code:g.ZodIssueCode.custom,message:"Replay prefix provenance entries must bind globally unique replay sequences",path:["provenanceLedger",T,"sequence"]});A.add(F.sequence)}for(let T of Ev(_))if(!_.provenanceLedger.some((F)=>jv(F,T)))$.addIssue({code:g.ZodIssueCode.custom,message:`The active ${T.category} identity must be represented exactly in the monotonic provenance ledger`,path:["provenanceLedger"]});let O=[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repository.repoRef,_.repository.worktreeRef,_.repository.branchRef,_.events.streamRef,..._.pullRequestRef?[_.pullRequestRef]:[]],L=(T,F,k,B)=>{let c=new Set(F.map((D_)=>D_.role)),E_=new Set;for(let[D_,J_]of T.entries()){if(!c.has(J_.role))$.addIssue({code:g.ZodIssueCode.custom,message:`${B} cannot preserve an unrecognized ${J_.role} role`,path:[...k,D_]});if(E_.has(J_.role))$.addIssue({code:g.ZodIssueCode.custom,message:`${B} must preserve exactly one canonical ref per role`,path:[...k,D_]});E_.add(J_.role)}if(T.length!==F.length)$.addIssue({code:g.ZodIssueCode.custom,message:`${B} preservation refs must exactly equal the required canonical role set`,path:k});for(let D_ of F)if(!T.some((J_)=>V_(J_,D_)))$.addIssue({code:g.ZodIssueCode.custom,message:`${B} must preserve ${D_.role}`,path:k})};if(_.handoff&&!V_(_.handoff.nextWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Handoff next generation must be the current attempt writer generation",path:["handoff","nextWriterGenerationRef"]});if(_.handoff&&!V_(_.handoff.nextAttemptRef,_.attempt.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Handoff next attempt must be the current attempt",path:["handoff","nextAttemptRef"]});if(_.handoff)WD(_.handoff.stoppedWorkRunRef,_.workRunRef,$,["handoff","stoppedWorkRunRef"],"Handoff WorkRun rotation");if(_.recovery){if(_.recovery.successorAttemptNonce!==_.attempt.nonce)$.addIssue({code:g.ZodIssueCode.custom,message:"Recovery successor nonce must equal the current attempt nonce",path:["recovery","successorAttemptNonce"]});if(!V_(_.recovery.successorWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Recovery successor generation must equal the current writer generation",path:["recovery","successorWriterGenerationRef"]});WD(_.recovery.priorAttemptRef,_.attempt.ref,$,["recovery","priorAttemptRef"],"Recovery attempt rotation"),WD(_.recovery.priorWorkRunRef,_.workRunRef,$,["recovery","priorWorkRunRef"],"Recovery WorkRun rotation"),L(_.recovery.preservedStateRefs,[_.recovery.priorWorkRunRef,...O],["recovery","preservedStateRefs"],"Recovery")}if(_.cancellation&&!V_(_.cancellation.cancelledAttemptRef,_.attempt.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Cancellation must bind the current attempt",path:["cancellation","cancelledAttemptRef"]});if(_.cancellation)L(_.cancellation.preservedStateRefs,[_.workRunRef,_.attempt.ref,...O],["cancellation","preservedStateRefs"],"Cancellation");if(_.cancellation&&_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"A projection cannot be both the cancellation and recovery snapshot",path:["recovery"]});if(_.handoff&&_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"A projection cannot be both the handoff and recovery snapshot",path:["recovery"]});if(_.cleanup&&!V_(_.cleanup.eligibility.eventCursorRef,_.events.replayCursorRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the current canonical replay cursor",path:["cleanup","eligibility","eventCursorRef"]});if(_.cleanup&&(!_.terminalDispositionRef||!V_(_.cleanup.eligibility.terminalDispositionRef,_.terminalDispositionRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact durable terminal owner fact",path:["cleanup","eligibility","terminalDispositionRef"]});if(_.cleanup&&!V_(_.cleanup.eligibility.writerLeaseRef,_.attempt.writerLeaseRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact writer lease being revoked",path:["cleanup","eligibility","writerLeaseRef"]});if(_.cleanup&&!V_(_.cleanup.eligibility.targetWorktreeRef,_.repository.worktreeRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the canonical worktree",path:["cleanup","eligibility","targetWorktreeRef"]});if(_.pullRequestRef){if(_.exactHead&&!V_(_.exactHead.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head proof must bind the canonical pull request ref",path:["exactHead","pullRequestRef"]});for(let[T,F]of _.reviews.entries())if(!V_(F.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Every review must bind the canonical pull request ref",path:["reviews",T,"pullRequestRef"]});if(_.merge&&!V_(_.merge.guard.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard must bind the canonical pull request ref",path:["merge","guard","pullRequestRef"]});if(_.merge?.outcome&&!V_(_.merge.outcome.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Review and merge state require a canonical pull request ref",path:["pullRequestRef"]});if(_.exactHead&&!s_(_.exactHead.localHead,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact local head must equal the canonical branch head",path:["exactHead","localHead"]});if(_.exactHead&&!s_(_.exactHead.expectedBase,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head expected base must equal the canonical repository base",path:["exactHead","expectedBase"]});if(_.exactHead&&!V_(_.exactHead.remoteBranchRef,_.repository.branchRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head remote branch ref must equal the canonical repository branch ref",path:["exactHead","remoteBranchRef"]});if(_.exactHead&&Date.parse(_.exactHead.verifiedAt)<Date.parse(_.createdAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head verification cannot precede the projection timestamp",path:["exactHead","verifiedAt"]});if(_.reviews.length>0&&!_.exactHead)$.addIssue({code:g.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((B,c)=>({ref:B,path:["exactHead","ciProofBundleRefs",c]})),..._.reviews.map((B,c)=>({ref:B.proofBundleRef,path:["reviews",c,"proofBundleRef"]}))],F=new Set,k=new Set;for(let B of T){let c=YN(B.ref);if(F.has(c))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical identities",path:B.path});if(F.add(c),k.has(B.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical digests",path:B.path});k.add(B.ref.digest)}}let J=new Set,P=new Set,z=new Set,S=new Set,W=new Set,X=new Set,G=new Set,R=new Set;for(let[T,F]of _.reviews.entries()){if(!s_(F.base,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Review base must equal the exact canonical pull-request base",path:["reviews",T,"base"]});if(!s_(F.head,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Review head must equal the exact canonical branch head",path:["reviews",T,"head"]});for(let[B,c,E_]of[[F.ref.id,J,"ref"],[F.reviewerRef.id,z,"reviewerRef"],[F.reviewRunRef.id,W,"reviewRunRef"]]){if(c.has(B))$.addIssue({code:g.ZodIssueCode.custom,message:"Review, reviewer, and review-run refs must each be unique",path:["reviews",T,E_]});c.add(B)}if(P.has(F.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review refs must resolve to distinct canonical record digests",path:["reviews",T,"ref"]});if(P.add(F.ref.digest),S.has(F.reviewerRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewer refs must resolve to distinct canonical actor digests",path:["reviews",T,"reviewerRef"]});if(S.add(F.reviewerRef.digest),X.has(F.reviewRunRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review-run refs must resolve to distinct canonical run digests",path:["reviews",T,"reviewRunRef"]});X.add(F.reviewRunRef.digest);let k=YN(F.proofBundleRef);if(G.has(k))$.addIssue({code:g.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical identities",path:["reviews",T,"proofBundleRef"]});if(G.add(k),R.has(F.proofBundleRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical digests",path:["reviews",T,"proofBundleRef"]});if(R.add(F.proofBundleRef.digest),F.reviewerRef.digest===_.attempt.workerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker and reviewer identities must resolve to distinct canonical digests",path:["reviews",T,"reviewerRef"]});if(F.reviewRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker runtime and review run must resolve to distinct canonical digests",path:["reviews",T,"reviewRunRef"]});if(_.exactHead&&Date.parse(F.reviewedAt)<Date.parse(_.exactHead.verifiedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Reviews cannot precede exact-head verification",path:["reviews",T,"reviewedAt"]})}if(_.merge){if(!_.exactHead)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge state requires local/remote/provider exact-head proof",path:["exactHead"]});if(!s_(_.merge.guard.expectedBase,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard expected base must equal the exact canonical pull-request base",path:["merge","guard","expectedBase"]});if(!s_(_.merge.guard.expectedHead,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard expected head must equal the exact canonical branch head",path:["merge","guard","expectedHead"]});if(_.exactHead&&Date.parse(_.merge.guard.evaluatedAt)<Date.parse(_.exactHead.verifiedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guards cannot precede exact-head verification",path:["merge","guard","evaluatedAt"]});if(_.reviews.some((T)=>Date.parse(_.merge.guard.evaluatedAt)<Date.parse(T.reviewedAt)))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guards cannot precede their bound reviews",path:["merge","guard","evaluatedAt"]});if(_.merge.guard.operatorRef.digest===_.attempt.workerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker and merge operator identities must resolve to distinct canonical digests",path:["merge","guard","operatorRef"]});if(_.merge.guard.operatorRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker runtime and merge-operator run must resolve to distinct canonical digests",path:["merge","guard","operatorRunRef"]});for(let[T,F]of _.reviews.entries()){if(_.merge.guard.operatorRef.digest===F.reviewerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewer and merge operator identities must resolve to distinct canonical digests",path:["reviews",T,"reviewerRef"]});if(_.merge.guard.operatorRunRef.digest===F.reviewRunRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Review and merge-operator runs must resolve to distinct canonical digests",path:["reviews",T,"reviewRunRef"]})}if(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed"){if(_.reviews.length===0||_.reviews.some((T)=>T.verdict!=="approved"))$.addIssue({code:g.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((F)=>V_(T,F.ref))))$.addIssue({code:g.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((F)=>V_(F,T.proofBundleRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact review proof bundle",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&!_.merge.guard.proofBundleRefs.some((T)=>V_(T,_.exactHead.equalityProofRef)))$.addIssue({code:g.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((F)=>V_(F,T))))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact-head CI proof",path:["merge","guard","proofBundleRefs"]})}}if(_.merge?.outcome){if(!V_(_.merge.outcome.guardRef,_.merge.guard.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome must bind the exact immutable merge guard",path:["merge","outcome","guardRef"]});if(!s_(_.merge.outcome.expectedHead,_.merge.guard.expectedHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome expected head must equal the guarded expected head",path:["merge","outcome","expectedHead"]});if(!s_(_.merge.outcome.expectedBase,_.merge.guard.expectedBase))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome expected base must equal the guarded expected base",path:["merge","outcome","expectedBase"]});if(_.merge.guard.decision!=="consumed")$.addIssue({code:g.ZodIssueCode.custom,message:"Every merge outcome requires an explicitly consumed merge guard",path:["merge","guard","decision"]});if(Date.parse(_.merge.outcome.finishedAt)<Date.parse(_.merge.guard.evaluatedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcomes cannot precede guard evaluation",path:["merge","outcome","finishedAt"]})}if(_.cleanup){let T=_.merge?.outcome?.finishedAt??_.createdAt;if(Date.parse(_.cleanup.eligibility.evaluatedAt)<Date.parse(T))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility cannot precede the terminal merge outcome or projection",path:["cleanup","eligibility","evaluatedAt"]});if(_.cleanup.outcome&&Date.parse(_.cleanup.outcome.finishedAt)<Date.parse(_.cleanup.eligibility.evaluatedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup outcomes cannot precede cleanup eligibility",path:["cleanup","outcome","finishedAt"]})}if(_.rollback?.outcome&&_.merge?.outcome&&Date.parse(_.rollback.outcome.finishedAt)<Date.parse(_.merge.outcome.finishedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes cannot precede the merge outcome they remediate",path:["rollback","outcome","finishedAt"]});if(_.rollback){let T=_.merge?.outcome?.finishedAt??_.createdAt;if(Date.parse(_.rollback.plan.createdAt)<Date.parse(T))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback plans cannot precede the terminal merge outcome or projection",path:["rollback","plan","createdAt"]})}if(_.state==="handed_off"&&!_.handoff)$.addIssue({code:g.ZodIssueCode.custom,message:"Handed-off projections require a handoff ref",path:["handoff"]});if(w9.has(_.state)&&_.reviews.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections cannot carry review bindings before review authority is active`,path:["reviews"]});if((w9.has(_.state)||_.state==="recovering")&&(_.merge?.guard.reviewRefs.length??0)>0)$.addIssue({code:g.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(!Ov[_.state].has(K))$.addIssue({code:g.ZodIssueCode.custom,message:`State ${_.state} is incompatible with merge authority ${K}`,path:["merge"]});if(r9.has(_.state)&&!_.terminalDispositionRef)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections require a durable Todos terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(!r9.has(_.state)&&_.terminalDispositionRef)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections cannot carry a terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(_.state==="reviewing"&&_.reviews.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewing projections require review refs",path:["reviews"]});if(_.state==="cancelled"&&!_.cancellation)$.addIssue({code:g.ZodIssueCode.custom,message:"Cancelled projections require preservation state",path:["cancellation"]});if(_.cancellation&&_.merge?.outcome)$.addIssue({code:g.ZodIssueCode.custom,message:"Cancellation cannot coexist with a terminal merge outcome",path:["cancellation"]});if(_.state==="recovering"&&!_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"Recovering projections require recovery state",path:["recovery"]});if(_.state==="repairing"&&_.repair.cycle===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Repairing projections require a non-zero repair cycle",path:["repair","cycle"]});if(_.merge&&(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed")&&!V_(_.attempt.admissionWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Merge-ready projections require an eligible guard",path:["merge"]});if(_.state==="merged"&&_.merge?.outcome?.status!=="merged")$.addIssue({code:g.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:g.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:g.ZodIssueCode.custom,message:"Cleanup-complete projections require an immutable cleanup outcome",path:["cleanup"]});if(_.state==="rolled_back"&&_.rollback?.outcome?.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Rolled-back projections require a successful rollback outcome",path:["rollback"]});if((_.state==="failed"||_.state==="blocked")&&_.evidenceRefs.length===0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Non-terminal projections cannot carry terminal owner outcomes",path:["state"]});let Y=new Set;for(let[T,F]of _.adapterExtensions.entries()){let k=`${F.mode}:${F.schema}`;if(Y.has(k))$.addIssue({code:g.ZodIssueCode.custom,message:"Adapter extensions must be unique per local/cloud mode and schema",path:["adapterExtensions",T]});Y.add(k)}});var Sv=g.object({id:g.string().min(1),at:B_,kind:g.enum(["message","tool_call","command","file_change","error","test","decision","verification","status","other"]),summary:g.string().min(1),resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([]),costEstimate:b1.optional()}).strict(),Jv=S_(u.agentTrajectory).extend({actor:e$,workRunRef:s.optional(),events:g.array(Sv).default([]),outcome:g.enum(["succeeded","failed","cancelled","blocked","unknown"]).default("unknown"),proofBundleRef:s.optional()}).strict(),Wv="v1",Pv=g.enum(["library","cli-with-store","service","saas"]),zv=["user-hosted","hasna-saas"],Xv=g.enum(zv),Gv=["api","sdk","mcp","cli"],L8=g.enum(Gv),Rv=g.enum(["supported","deferred","unsupported"]),Yv=g.enum(["none","local-only","api-key","session","service-token","custom"]),pW=g.object({method:g.enum(["GET","POST","PUT","PATCH","DELETE"]),path:g.string().regex(/^\/[A-Za-z0-9_./:*-]*$/,"Endpoint paths must be absolute HTTP paths"),public:g.boolean().default(!1),description:g.string().min(1).optional()}).strict(),Qv=g.object({id:g.string().min(1),kind:g.enum(["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]),required:g.boolean().default(!0),command:g.string().min(1).optional(),evidenceRef:K_.optional(),status:g.enum(["pending","passed","failed","blocked","deferred"]).default("pending"),summary:g.string().min(1).optional()}).strict().superRefine((_,$)=>{if((_.status==="passed"||_.status==="failed"||_.status==="blocked")&&!_.command&&!_.evidenceRef&&!_.summary)$.addIssue({code:g.ZodIssueCode.custom,message:"Terminal readiness gates require command, evidenceRef, or summary",path:["status"]})}),Kv=g.object({name:g.string().min(1),kind:L8.optional(),status:Rv,bin:g.string().min(1).optional(),mcpBin:g.string().min(1).optional(),authMode:Yv,health:pW.optional(),readiness:pW.optional(),version:pW.optional(),apiBasePath:g.string().regex(/^\/v[0-9]+$/,"Stable API base path must be /vN").optional(),openApiPath:g.string().regex(/^\/[A-Za-z0-9_./:-]*$/).optional(),exportSubpath:g.string().regex(/^\.(?:\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*)?$/,"SDK export subpaths must be package export keys such as . or ./sdk").optional(),generatedFrom:g.string().regex(/^\/[A-Za-z0-9_./:-]*$/,"SDK generatedFrom must reference an absolute OpenAPI path").optional(),clientClassName:g.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/).optional(),deferReason:g.string().min(1).optional(),readinessGates:g.array(Qv).default([])}).strict().superRefine((_,$)=>{if(_.status==="supported"){if(!_.kind||_.kind==="api"){if(!_.bin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a serve bin",path:["bin"]});if(!_.health)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a health endpoint",path:["health"]});if(!_.readiness)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a readiness endpoint",path:["readiness"]});if(!_.version)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a version endpoint",path:["version"]})}if(_.kind==="cli"&&!_.bin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported CLI surfaces require a bin",path:["bin"]});if(_.kind==="mcp"&&!_.mcpBin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported MCP surfaces require an mcpBin",path:["mcpBin"]});if(_.kind==="sdk"&&!_.exportSubpath)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported SDK surfaces require an exportSubpath",path:["exportSubpath"]})}if((_.status==="deferred"||_.status==="unsupported")&&!_.deferReason)$.addIssue({code:g.ZodIssueCode.custom,message:"Deferred or unsupported service surfaces require a deferReason",path:["deferReason"]});if(_.health&&_.health.path!=="/health")$.addIssue({code:g.ZodIssueCode.custom,message:"Health endpoint must be /health",path:["health","path"]});if(_.health&&_.health.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Health endpoint must use GET",path:["health","method"]});if(_.readiness&&_.readiness.path!=="/ready")$.addIssue({code:g.ZodIssueCode.custom,message:"Readiness endpoint must be /ready",path:["readiness","path"]});if(_.readiness&&_.readiness.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Readiness endpoint must use GET",path:["readiness","method"]});if(_.version&&_.version.path!=="/version")$.addIssue({code:g.ZodIssueCode.custom,message:"Version endpoint must be /version",path:["version","path"]});if(_.version&&_.version.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Version endpoint must use GET",path:["version","method"]})}),Tv=["sqlite","postgres"],S8=g.enum(Tv),J8=["sqlite","postgres"],Fv=g.enum(J8),$P=["postgres"],Vv=g.object({kind:L8,reason:g.string().trim().min(1)}).strict(),OP=500,LP=200,QN=(_)=>g.string().trim().min(1).max(_).regex(/^[^\u0000-\u001f\u007f]+$/,"Waiver text must not contain control characters"),Bv=["domain","host","ip","email"],Mv=g.object({kind:g.enum(Bv),reason:QN(OP),reviewedBy:QN(LP),expiresAt:B_}).strict(),bv=g.object({engine:g.enum($P),reason:QN(OP),reviewedBy:QN(LP).optional(),expiresAt:B_.optional()}).strict();function Zv(_){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 Hv=g.object({conformance:g.object({waivedSurfaces:g.array(Vv).default([]),waiverProfile:g.literal("non-node-monorepo").optional(),waivedStorageEngines:g.array(bv).default([]),waivedAssetInventories:g.array(Mv).default([])}).catchall(g.unknown()).optional(),release:g.object({artifactScan:g.object({script:g.string().trim().min(1)}).strict().optional()}).catchall(g.unknown()).optional()}).catchall(g.unknown()),kv=g.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,"App names must be lowercase dashed identifiers"),qv=["","-cli","-mcp","-serve","-worker","-runner","-daemon","-migrate","-doctor"];function Cv(_){return qv.map(($)=>`${_}${$}`)}function f9(_){return`hasna/oss/${_}/database-url`}var vv=g.object({mode:S8,engines:g.array(Fv).min(1).optional(),envPrefix:g.string().regex(/^HASNA_[A-Z][A-Z0-9]*_$/).optional(),aliasEnvPrefix:g.string().regex(/^[A-Z][A-Z0-9]*_$/).optional(),databaseUrlSecretRef:g.string().regex(/^hasna\/oss\/[a-z0-9-]+\/database-url$/).optional(),sqlitePath:g.string().min(1).endsWith(".db","storage.sqlitePath must end in .db").optional(),pgTestGate:g.object({envVar:g.string().regex(/^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$/),command:g.string().trim().min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.engines&&new Set(_.engines).size!==_.engines.length)$.addIssue({code:g.ZodIssueCode.custom,message:"storage.engines must not contain duplicates",path:["engines"]});if(_.engines?.includes("postgres")&&!_.envPrefix)$.addIssue({code:g.ZodIssueCode.custom,message:"storage.engines containing postgres requires envPrefix for the HASNA_<NAME>_DATABASE_URL contract",path:["envPrefix"]})}),W8=g.enum(["0600"]),P8=g.enum(["0700"]),z8=g.enum([".hasna",".codewith"]),wv=g.enum(["directory","file","sqlite_db","sqlite_wal","sqlite_shm","backup","export","report","tmp","log","session","snapshot"]),LD=R$.refine((_)=>!_.startsWith("~"),"Local store path patterns must be relative to their declared root"),rv=g.object({id:g.string().min(1),source:g.enum(["sqlite","manifest","index","runtime","package_adapter"]),table:g.string().min(1).optional(),column:g.string().min(1).optional(),description:g.string().min(1),required:g.boolean().default(!0)}).strict(),fv=g.object({safeWhen:g.enum(["exclusive_access","offline_only","never"]),operations:g.array(g.enum(["wal_checkpoint_truncate","incremental_vacuum","optimize","vacuum"])).default([])}).strict().superRefine((_,$)=>{if(_.safeWhen==="never"&&_.operations.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"sqliteMaintenance.safeWhen=never cannot declare operations",path:["operations"]})}),xv=g.object({id:g.string().min(1),description:g.string().min(1),ttlDays:g.number().int().nonnegative().optional(),artifactClasses:g.array(wv).min(1),allowlistGlobs:g.array(LD).min(1),activeRecordExclusions:g.array(rv).default([]),sqliteMaintenance:fv.optional()}).strict(),uv=g.object({storeId:g.string().regex(/^[a-z][a-z0-9-]*$/),packageName:g.string().min(1),displayName:g.string().min(1),root:z8,relativePath:LD,directoryMode:P8.default("0700"),fileMode:W8.default("0600"),sqliteDatabaseGlobs:g.array(LD).default([]),sensitiveFileGlobs:g.array(LD).default([]),backupGlobs:g.array(LD).default([]),exportGlobs:g.array(LD).default([]),retentionAdapters:g.array(xv).default([]),notes:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{if(_.relativePath.includes("*"))$.addIssue({code:g.ZodIssueCode.custom,message:"store relativePath must be a concrete directory; use glob fields for files",path:["relativePath"]});let D=new Set;for(let[I,U]of _.retentionAdapters.entries()){if(D.has(U.id))$.addIssue({code:g.ZodIssueCode.custom,message:"retention adapter ids must be unique within a store",path:["retentionAdapters",I,"id"]});D.add(U.id)}}),X8=S_(u.secureLocalStorePolicy).extend({version:g.string().min(1),scope:g.array(z8).min(1),defaults:g.object({directoryMode:P8.default("0700"),fileMode:W8.default("0600"),dryRunDefault:g.literal(!0),requireExplicitApply:g.literal(!0),includeSqliteSidecars:g.literal(!0),redactedEvidenceOnly:g.literal(!0)}).strict(),stores:g.array(uv).min(1),lifecycle:g.object({retentionDryRunDefault:g.literal(!0),requireActiveRecordExclusionProof:g.literal(!0),requireArtifactAllowlist:g.literal(!0),sqliteMaintenanceRequiresExclusiveAccess:g.literal(!0)}).strict(),warnings:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set;for(let[I,U]of _.stores.entries()){if(D.has(U.storeId))$.addIssue({code:g.ZodIssueCode.custom,message:"store ids must be unique",path:["stores",I,"storeId"]});if(D.add(U.storeId),!_.scope.includes(U.root))$.addIssue({code:g.ZodIssueCode.custom,message:"store root must be listed in policy scope",path:["stores",I,"root"]})}}),yv=g.object({$schema:g.string().min(1).optional(),schema:g.literal(u.serviceContract),name:kv,class:Pv,contractVersion:g.literal(Wv),kitVersion:g.string().min(1),description:g.string().min(1).optional(),bins:g.array(g.string().min(1)).default([]),storage:vv.optional(),hosting:g.array(Xv).min(1).default(["user-hosted"]),serviceSurfaces:g.array(Kv).default([]),metadata:Hv.optional()}).strict().superRefine((_,$)=>{if(new Set(_.hosting).size!==_.hosting.length)$.addIssue({code:g.ZodIssueCode.custom,message:"hosting must not contain duplicates",path:["hosting"]});let D=new Set(Cv(_.name)),I=new Set;for(let[O,L]of _.bins.entries()){if(I.has(L))$.addIssue({code:g.ZodIssueCode.custom,message:"Duplicate bin declaration",path:["bins",O]});if(I.add(L),!D.has(L))$.addIssue({code:g.ZodIssueCode.custom,message:`Bin "${L}" is not allowlisted for app "${_.name}"; allowed: ${[...D].join(", ")}`,path:["bins",O]})}let U=(O)=>I.has(`${_.name}${O}`);if(_.storage){let O=_.name.toUpperCase().replace(/-/g,"_");if(_.storage.envPrefix&&_.storage.envPrefix!==`HASNA_${O}_`)$.addIssue({code:g.ZodIssueCode.custom,message:`storage.envPrefix must be HASNA_${O}_`,path:["storage","envPrefix"]});if(_.storage.databaseUrlSecretRef&&_.storage.databaseUrlSecretRef!==f9(_.name))$.addIssue({code:g.ZodIssueCode.custom,message:`storage.databaseUrlSecretRef must be ${f9(_.name)}`,path:["storage","databaseUrlSecretRef"]})}if(_.class==="library"){if(_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"library repos must not declare storage",path:["storage"]});if(U("-serve")||U("-mcp"))$.addIssue({code:g.ZodIssueCode.custom,message:"library repos must not ship a -serve or -mcp bin",path:["bins"]})}if(_.class==="cli-with-store"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"cli-with-store repos must declare storage",path:["storage"]});else{if(_.storage.mode==="sqlite"&&!_.storage.sqlitePath)$.addIssue({code:g.ZodIssueCode.custom,message:"sqlite cli-with-store storage requires sqlitePath (~/.hasna/<name>/<name>.db)",path:["storage","sqlitePath"]});if(_.storage.engines){let O=new Set(_.storage.engines),L=_.metadata?.conformance?.waivedStorageEngines??[],J=Zv({class:_.class,name:_.name,bins:_.bins,hosting:_.hosting,storageMode:_.storage.mode}),P=new Set(J?[]:L.map((S)=>S.engine)),z=J8.filter((S)=>!O.has(S)&&!P.has(S));if(z.length>0){let S=J&&L.length>0?`; declared waiver ignored: ${J}`:"";$.addIssue({code:g.ZodIssueCode.custom,message:`cli-with-store storage.engines must declare both sqlite and postgres unless the engine carries a metadata.conformance.waivedStorageEngines waiver; missing: ${z.join(", ")}${S}`,path:["storage","engines"]})}}}if(!I.has(_.name))$.addIssue({code:g.ZodIssueCode.custom,message:`cli-with-store repos must ship the "${_.name}" bin`,path:["bins"]})}if(_.class==="service"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"service repos must declare storage",path:["storage"]});else if(_.storage.engines&&(!_.storage.engines.includes("sqlite")||!_.storage.engines.includes("postgres")))$.addIssue({code:g.ZodIssueCode.custom,message:"service storage.engines must declare both sqlite and postgres",path:["storage","engines"]});if(!U("-serve"))$.addIssue({code:g.ZodIssueCode.custom,message:`service repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"service repos must declare at least one service surface",path:["serviceSurfaces"]})}if(_.class==="saas"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must declare storage",path:["storage"]});else{if(_.storage.mode!=="postgres")$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must use the postgres storage backend",path:["storage","mode"]});if(!_.storage.envPrefix)$.addIssue({code:g.ZodIssueCode.custom,message:"saas storage requires envPrefix for the public DATABASE_URL contract",path:["storage","envPrefix"]})}if(!U("-serve"))$.addIssue({code:g.ZodIssueCode.custom,message:`saas repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must declare at least one service surface",path:["serviceSurfaces"]})}for(let[O,L]of _.serviceSurfaces.entries()){if(L.bin&&!I.has(L.bin))$.addIssue({code:g.ZodIssueCode.custom,message:`Service surface bin "${L.bin}" must be declared in bins`,path:["serviceSurfaces",O,"bin"]});if(L.mcpBin&&!I.has(L.mcpBin))$.addIssue({code:g.ZodIssueCode.custom,message:`Service surface MCP bin "${L.mcpBin}" must be declared in bins`,path:["serviceSurfaces",O,"mcpBin"]})}let E=_.metadata?.conformance?.waivedSurfaces??[],j=new Set;for(let[O,L]of E.entries()){if(j.has(L.kind))$.addIssue({code:g.ZodIssueCode.custom,message:`Duplicate conformance waiver for ${L.kind}`,path:["metadata","conformance","waivedSurfaces",O,"kind"]});j.add(L.kind)}let N=_.metadata?.conformance?.waivedStorageEngines??[],A=new Set;for(let[O,L]of N.entries()){if(A.has(L.engine))$.addIssue({code:g.ZodIssueCode.custom,message:`Duplicate storage-engine waiver for ${L.engine}`,path:["metadata","conformance","waivedStorageEngines",O,"engine"]});A.add(L.engine)}}),Sm=g.object({status:g.enum(["ok","degraded","unavailable"]),version:g.string().min(1),mode:S8}).strict(),Jm=g.object({ready:g.boolean(),reason:g.string().min(1).optional()}).strict(),Wm=g.object({version:g.string().min(1)}).strict(),hv=g.enum(["info","notice","breaking","critical"]),cv=g.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 (<source>.<entity>.<action>)"),nv=["FREEZE","UNFREEZE","BREAKING","CUTOVER","POLICY","RELEASE"],dv=g.enum(nv);var mv=g.enum(["fleet","package","machine"]),G8=S_(u.commsEventEnvelope).extend({type:cv,severity:hv,scope:mv,summary:g.string().min(1).optional(),source:e$.optional(),affected_packages:g.array(o).default([]),affected_machines:g.array(o).default([]),action_required:g.boolean().default(!1),ack_by:B_.optional(),dedupe_key:o,resourceRefs:g.array(s).default([]),evidenceRefs:g.array(K_).default([])}).strict().superRefine((_,$)=>{if(_.scope==="package"&&_.affected_packages.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Package-scoped comms events require affected_packages",path:["affected_packages"]});if(_.scope==="machine"&&_.affected_machines.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Machine-scoped comms events require affected_machines",path:["affected_machines"]});if(_.ack_by&&!_.action_required)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:`${_.type} events are always critical`,path:["severity"]});if(_.scope!=="fleet")$.addIssue({code:g.ZodIssueCode.custom,message:`${_.type} events are always fleet-scoped`,path:["scope"]});if(!_.action_required)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.type} events require action_required`,path:["action_required"]})}}),lv=g.enum(["fleet","package","product","loop-lane","initiative","personal"]),iv=g.enum(["quiet","work","firehose"]),tv=o.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:<todos-id>)"),ov=S_(u.commsChannelMetadata).extend({class:lv,noise:iv.optional(),owner:o.optional(),until:tv.optional(),successor:o.optional()}).strict().superRefine((_,$)=>{if(_.class==="initiative"){if(!_.owner)$.addIssue({code:g.ZodIssueCode.custom,message:"Initiative channels require an owner",path:["owner"]});if(!_.until)$.addIssue({code:g.ZodIssueCode.custom,message:"Initiative channels require an until horizon (date or gate id)",path:["until"]})}}),x9={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}},pv=S_(u.commsMessageMetadata).extend({tag:dv,envelope:G8}).strict().superRefine((_,$)=>{let D=x9[_.tag];if(!D.allowedSeverities.includes(_.envelope.severity))$.addIssue({code:g.ZodIssueCode.custom,message:`[${_.tag}] posts allow severities ${D.allowedSeverities.join(", ")}`,path:["envelope","severity"]});if(D.requiredEventType&&_.envelope.type!==D.requiredEventType)$.addIssue({code:g.ZodIssueCode.custom,message:`[${_.tag}] posts require event type ${D.requiredEventType}`,path:["envelope","type"]});for(let[I,U]of Object.entries(x9))if(U.requiredEventType===_.envelope.type&&_.tag!==I)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.envelope.type} events must use the [${I}] tag`,path:["tag"]})});var ev={[u.actorRef]:Kq,[u.resourceRef]:Tq,[u.evidenceRef]:Vq,[u.workRun]:wC,[u.taskToPrProjection]:Lv,[u.decisionEnvelope]:s9,[u.costEstimate]:b1,[u.capabilityCard]:Mq,[u.providerLiveModeStandard]:Cq,[u.contextPack]:_8,[u.integrationRef]:$8,[u.projectManifest]:xq,[u.projectPanel]:D8,[u.projectSnapshot]:tq,[u.renderManifest]:cq,[u.agentTrajectory]:Jv,[u.validationPlan]:oq,[u.proofBundle]:vC,[u.scaffoldManifest]:DC,[u.scaffoldInstallRecord]:IC,[u.appCloudManifest]:E8,[u.noCloudEvidencePack]:qC,[u.secureLocalStorePolicy]:X8,[u.serviceContract]:yv,[u.commsEventEnvelope]:G8,[u.commsChannelMetadata]:ov,[u.commsMessageMetadata]:pv,[u.app]:SC,[u.release]:WC,[u.rolloutRecord]:XC,[u.announcement]:QC,[u.audience]:MC};class R8 extends Error{schemaId;issues;constructor(_,$){super(`Contract validation failed for ${_}`);this.name="ContractValidationError",this.schemaId=_,this.issues=$}}function Y8(_,$){let I=ev[_].safeParse($);if(!I.success)throw new R8(_,I.error.issues);return I.data}var Pm=String.raw`(?:^|[^\w$])(?:_*(?:import|require)|createRequire|Module\s*\.\s*_load)`;var SP=[{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"}],zm=SP.filter((_)=>("checkKind"in _)),av=SP.filter((_)=>_.kind==="module"),Xm=[...new Set([...XN,...av.map((_)=>_.pattern)])],Gm=SP.filter((_)=>_.kind==="config");var u9="^[^\\u0000-\\u001f\\u007f]*$",Rm={$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:u.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: <name>, <name>-cli, <name>-mcp, <name>-serve, <name>-worker, <name>-runner, <name>-daemon, <name>-migrate, <name>-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/<name>/<name>.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:$P.length,items:{type:"object",additionalProperties:!1,required:["engine","reason"],properties:{engine:{enum:[...$P]},reason:{type:"string",minLength:1,maxLength:OP,allOf:[{pattern:"\\S"},{pattern:u9}]},reviewedBy:{type:"string",minLength:1,maxLength:LP,allOf:[{pattern:"\\S"},{pattern:u9}]},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 <name>-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 sv="2026-07-06";function t$(_,$,D,I,U,E=[],j){return{id:_,description:$,ttlDays:D,artifactClasses:I,allowlistGlobs:U,activeRecordExclusions:E.map((N)=>({...N,required:N.required??!0})),sqliteMaintenance:j}}var Ym=X8.parse({schema:u.secureLocalStorePolicy,id:"hasna-secure-local-store-defaults",createdAt:"2026-07-06T00:00:00.000Z",version:sv,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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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 _w=64,Qm=new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${_w-1}}$`),AD="[0-9a-fA-F]",Km=new RegExp(`^\\{?(?:${AD}{8}-${AD}{4}-${AD}{4}-${AD}{4}-${AD}{12}|${AD}{32})\\}?$`);var $w=/^hasna_([a-z][a-z0-9-]*)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;var Tm=new RegExp($w.source.replace(/^\^/,"\\b").replace(/\$$/,"\\b"));var Q8="@hasna/knowledge";function Dw(_){if(!Number.isFinite(_??0))return 20;return Math.max(1,Math.min(100,Math.trunc(_??20)))}function Uw(_){return _.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")||"project"}function Z1(_,$=180){let D=String(_??"").replace(/\s+/g," ").trim();if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-3))}...`}function w_(_,$=""){return typeof _==="string"&&_.length>0?_:$}function H1(_){return typeof _==="number"&&Number.isFinite(_)?_:0}function HD(_){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 VN(_){return r$.safeParse(_).success}function f$(_,$,D,I,U=[]){return{kind:_,id:$,name:D,uri:I&&VN(I)?I:void 0,externalId:$,sourcePackage:Q8,tags:U}}function Iw(_){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(HD).filter(Boolean).sort((D,I)=>I.localeCompare(D))[0]}function Ew(_){if(!_)return"unknown";let $=Date.now()-new Date(_).valueOf();if(!Number.isFinite($))return"unknown";return $>2592000000?"stale":"fresh"}function jw(_){let $=(D)=>{let I=String(D??"").toLowerCase();return I!==""&&!["done","complete","completed","resolved","succeeded","skipped"].includes(I)};return _.reindex_queue.filter((D)=>$(D.status)).length+_.sync_conflicts.filter((D)=>$(D.status)).length+_.approval_gates.filter((D)=>$(D.status)).length}function Nw(_,$){let D=[];for(let I of _.items.slice(0,$))D.push({id:`item_${I.id}`,title:I.title,summary:Z1(I.content_preview),status:I.archived?"archived":"active",priority:"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("knowledge",I.id,I.title,`knowledge://item/${encodeURIComponent(I.id)}`,I.tags)],evidenceRefs:I.url&&VN(I.url)?[{id:`url_${I.id}`,kind:"url",uri:I.url,summary:"Source URL for this knowledge item."}]:[],metadata:{source:"legacy_store",archived:I.archived,tags:I.tags,url:I.url||void 0}});for(let I of _.sources.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,w_(I.uri,"source")),E=w_(I.title,w_(I.uri,U)),j=w_(I.uri,`knowledge://source/${encodeURIComponent(U)}`);D.push({id:`source_${U}`,title:E,summary:Z1(`${H1(I.chunks)} chunk(s), ${H1(I.revisions)} revision(s)`),status:H1(I.chunks)>0?"indexed":"source",priority:"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("document",U,E,j)],evidenceRefs:VN(j)?[{id:`source_${U}`,kind:"url",uri:j,summary:"Source reference."}]:[],metadata:{source:"knowledge_db.sources",kind:I.kind,chunks:H1(I.chunks),revisions:H1(I.revisions)}})}for(let I of _.chunks.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"chunk"),E=w_(I.source_uri);D.push({id:`chunk_${U}`,title:w_(I.wiki_title,E?`Chunk from ${E}`:`Knowledge chunk ${U}`),summary:Z1(I.text_preview),status:"chunk",priority:"low",timestamp:HD(I.created_at),resourceRefs:[f$("context_pack",U,w_(I.wiki_title,U),`knowledge://chunk/${encodeURIComponent(U)}`)],evidenceRefs:E&&VN(E)?[{id:`chunk_source_${U}`,kind:"url",uri:E,summary:"Chunk source reference."}]:[],metadata:{source:"knowledge_db.chunks",source_uri:E||void 0,token_count:I.token_count,ordinal:I.ordinal}})}for(let I of _.sync_conflicts.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"sync_conflict");D.push({id:`sync_conflict_${U}`,title:`Sync conflict: ${w_(I.entity_kind,"entity")}/${w_(I.entity_id,U)}`,summary:Z1(`Status ${w_(I.status,"unknown")}; strategy ${w_(I.resolution_strategy,"none")}.`),status:w_(I.status,"unknown"),priority:"critical",timestamp:HD(I.created_at),resourceRefs:[f$("finding",U,"Knowledge sync conflict",`knowledge://sync-conflict/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.sync_conflicts",local_machine_id:I.local_machine_id,remote_machine_id:I.remote_machine_id}})}for(let I of _.reindex_queue.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"reindex");D.push({id:`reindex_${U}`,title:`Reindex ${w_(I.kind,"item")}: ${w_(I.target_id,U)}`,summary:Z1(I.reason),status:w_(I.status,"unknown"),priority:w_(I.status).toLowerCase()==="failed"?"high":"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("action",U,"Knowledge reindex work item",`knowledge://reindex/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.reindex_queue",attempts:I.attempts,source_uri:I.source_uri}})}return D.slice(0,$)}async function K8(_,$={}){let D=Dw($.limit),I=new Date().toISOString(),U=Uw(_),j=await($.service??zN({scope:$.scope??"project",cwd:$.cwd})).resolveInventory({limit:D,storePath:$.storePath,includeArchived:$.includeArchived}),N=Iw(j),A=Ew(N),O=j.summary.active_items+j.summary.sources+j.summary.chunks+j.summary.wiki_pages+j.summary.storage_objects,L=jw(j),J=O===0?"empty":A==="stale"?"stale":"ready",P=Nw(j,D),z={schema:u.projectPanel,id:`knowledge_panel_${U}`,createdAt:I,projectId:U,provider:{kind:"knowledge",id:`knowledge_${U}`,name:"Knowledge",sourcePackage:Q8,externalId:j.home},kind:"knowledge",title:"Knowledge",summary:J==="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:J,stateReason:J==="stale"?"Latest indexed knowledge activity is older than 30 days.":void 0,generatedAt:I,freshness:A,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:P,actions:[f$("action","knowledge:inventory","Inspect knowledge inventory"),f$("action","knowledge:context-pack","Build cited context pack"),f$("action","knowledge:ingest","Ingest project source")],resourceRefs:[f$("project",U,_,`project://${U}`),f$("knowledge",`home_${U}`,"Knowledge workspace",`knowledge://workspace/${encodeURIComponent(U)}`),f$("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 Y8(u.projectPanel,z)}function T8(_){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 B8=["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 M8="HASNA_KNOWLEDGE_STORAGE_MODE",b8="KNOWLEDGE_STORAGE_MODE";function F8(_){return process.env[_]?.trim()||void 0}function V8(_){let $=_?.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return"sqlite";if($==="postgres"||$==="postgresql")return"postgres";return}function gw(_={}){let $=g0(f1(_.scope,_.cwd).home);return h($.knowledgeDbPath),{db:w($.knowledgeDbPath),path:$.knowledgeDbPath,scope:_.scope??"global"}}function Z8(){let _=V8(F8(M8))??V8(F8(b8));if(_)return _;return"sqlite"}function JP(_={}){let $=gw(_);try{Aw($.db);let D=$.db.query("SELECT table_name, last_synced_at, direction FROM _knowledge_sync_meta ORDER BY table_name, direction").all();return{mode:Z8(),service:"knowledge",scope:$.scope,databasePath:$.path,tables:B8,sync:D}}finally{$.db.close()}}function Aw(_){_.exec(` + `,[D]).map(iH),f={legacy_items:U.items.length,active_items:E.length,archived_items:U.items.length-E.length,schema_version:A.schema_version,sources:A.sources,source_revisions:A.source_revisions,chunks:A.chunks,wiki_pages:A.wiki_pages,citations:A.citations,indexes:A.indexes,runs:A.runs,run_events:A.run_events,storage_objects:A.storage_objects,embeddings:A.embeddings,vector_entries:A.vector_entries,reindex_queue:A.reindex_queue,redaction_findings:A.redaction_findings,audit_events:A.audit_events,approval_gates:A.approval_gates,knowledge_machines:A.knowledge_machines,sync_snapshots:A.sync_snapshots,sync_changes:A.sync_changes,sync_conflicts:A.sync_conflicts,sync_table_clocks:A.sync_table_clocks,sync_imports:A.sync_imports,promotion_candidates:A.promotion_candidates,durable_records:A.durable_records};return{ok:!0,scope:this.scope,home:$.home,limit:D,paths:{json_store_path:I,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:f,legacy_store:{path:I,exists:U.exists,read_error:U.read_error,total_items:U.items.length,active_items:E.length,archived_items:U.items.length-E.length,items_returned:Math.min(j.length,D)},items:j.slice(0,D).map(P9),sources:S,source_revisions:L,chunks:P,wiki_pages:z,indexes:G,storage_objects:J,runs:W,vector_indexes:X,reindex_queue:R,machines:T,sync_conflicts:Y,approval_gates:Q,audit_events:F,promotion_candidates:q,durable_records:Z,message:`${U.items.length} item(s), ${A.sources} source(s), ${A.chunks} chunk(s), ${A.wiki_pages} wiki page(s), ${A.storage_objects} artifact(s)`}}finally{O.close()}}assertAppWikiWrite(_){mD({scope:this.scope,workspace:this.workspace,safetyPolicy:this.safetyPolicy(),allowGlobal:_})}async initAppWiki(_={}){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return Q3({scope:this.scope,workspace:$,store:this.artifactStore(),safetyPolicy:this.safetyPolicy(),allowGlobal:_.allowGlobal})}async addAppWikiNote(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return K3({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(!X_($.knowledgeDbPath))return[];return T3({dbPath:$.knowledgeDbPath,limit:_.limit})}async getAppWikiNote(_,$={}){let D=this.workspace;if(!X_(D.knowledgeDbPath))return null;return F3({dbPath:D.knowledgeDbPath,store:this.artifactStore(),id:_,includeContent:$.includeContent})}async addAppWikiSourceRef(_){this.assertAppWikiWrite(_.allowGlobal);let $=this.ensureWorkspace();return V3({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();c(_.knowledgeDbPath);let $=await cR(this.artifactStore()),D=w(_.knowledgeDbPath);try{j6(D,$.artifacts),nR(D,$.artifacts)}finally{D.close()}return $}async compileWiki(_={}){let $=this.ensureWorkspace();return xR({..._,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 uR({dbPath:$.knowledgeDbPath,store:this.artifactStore(),prompt:_.prompt,answer:_.answer,context:D,approveWrite:_.approveWrite})}lintWiki(){let _=this.ensureWorkspace();return yR({dbPath:_.knowledgeDbPath})}async ingestManifest(_){let $=this.ensureWorkspace();return z3({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}async ingestSource(_,$){let D=this.ensureWorkspace();return II({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$,config:this.config(),safetyPolicy:this.safetyPolicy()})}async importRulesProvenance(_={}){let $=_.dryRun!==!1,D=$?this.workspace:this.ensureWorkspace();return MR({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 $I({dbPath:D.knowledgeDbPath,sourceRef:_,purpose:$.purpose,limit:$.limit,safetyPolicy:this.safetyPolicy()})}async consumeOutbox(_){let $=this.ensureWorkspace();return uG({dbPath:$.knowledgeDbPath,input:_,config:this.config(),safetyPolicy:this.safetyPolicy()})}reindexHealth(_={}){let $=this.workspace;if(!X_($.knowledgeDbPath))return aH();return zR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}enqueueReindex(_={}){let $=this.ensureWorkspace();return KW({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async refreshEmbeddings(_={}){let $=this.ensureWorkspace();return XR({..._,dbPath:$.knowledgeDbPath,config:this.config()})}providerStatus(_=process.env){return H3(this.config(),_)}modelRegistry(){return kg(this.config())}embeddingStatus(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return sH();return r3(_.knowledgeDbPath)}async indexEmbeddings(_={}){let $=this.ensureWorkspace();return NI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}isApiMode(){return h$()}cloudStore(){let _=dD();if(!_)throw Error("knowledge: cloud store requested but not resolvable (check HASNA_KNOWLEDGE_API_URL + HASNA_KNOWLEDGE_API_KEY).");return _}async fetchCloudItems(){return i1(this.cloudStore())}async semanticSearch(_){let $=this.workspace;if(this.isApiMode())throw new WN;if(!X_($.knowledgeDbPath))return{provider:"openai",model:"text-embedding-3-small",dimensions:_.dimensions??1536,query:_.query,results:[]};return gI({..._,dbPath:$.knowledgeDbPath,config:this.config()})}async search(_){let $=this.workspace;if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new WN;let I=await this.cloudStore().search({query:_.query,archive:"active",limit:_.limit,offset:_.offset});return xg(I.items,_,[],I.total)}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){if(X_(D))return LI({..._,legacyStorePath:D,config:this.config()});return M9(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return SI({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async retrieveContext(_){let $=this.workspace;if(this.isApiMode()){let I=await this.search(_);return A6(I,{contextChars:_.contextChars})}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){if(X_(D)){let I=await LI({..._,legacyStorePath:D,config:this.config()});return A6(I,{contextChars:_.contextChars})}return pH(_.query,Math.max(1,Math.min(_.limit??10,100)),_.semantic===!0||_.fake===!0||Boolean(_.modelRef))}return F0({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async contextPack(_){let $=this.workspace;if(this.isApiMode()){let I=(_.query??_.topic??"").trim();if(I&&_.source!=="loops"&&_.source!=="runs"){let U=await this.search({..._,query:I}),E=A6(U,{contextChars:_.contextChars});return G9(_,E,this.safetyPolicy())}return R9(_)}let D=nW(this.scope,$,_.legacyStorePath);if(!X_($.knowledgeDbPath)){let I=(_.query??_.topic??"").trim();if(I&&_.source!=="loops"&&_.source!=="runs"&&X_(D)){let U=await LI({..._,query:I,legacyStorePath:D,config:this.config()}),E=A6(U,{contextChars:_.contextChars});return G9(_,E,this.safetyPolicy())}return R9(_)}return LX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config(),safetyPolicy:this.safetyPolicy()})}async runPrompt(_){if(this.isApiMode()){if(_.semantic===!0||_.fake===!0||Boolean(_.modelRef))throw new WN;let I=await this.cloudStore().search({query:_.prompt,archive:"active",limit:_.limit,offset:_.offset}),U=xg(I.items,{query:_.prompt,limit:_.limit,offset:_.offset,semantic:!1},[],I.total);return UX(I.items.map((E)=>E.item),{..._,config:this.config()},U)}let $=this.ensureWorkspace(),D=_.legacyStorePath??$.jsonStorePath;if(!_.legacyStorePath)xD(D);return DX({..._,dbPath:$.knowledgeDbPath,legacyStorePath:D,config:this.config()})}async webSearch(_){let $=this.ensureWorkspace();return kR({..._,dbPath:$.knowledgeDbPath,config:this.config(),safetyPolicy:this.safetyPolicy()})}async machineTopology(_={}){let $=this.workspace;return _R({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}async machinePreflight(_={}){let $=this.workspace;return UR({..._,knowledge:{scope:this.scope,workspace_home:$.home}})}syncStatus(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return _k({scope:this.scope,workspaceHome:_.home});return wX({dbPath:_.knowledgeDbPath,scope:this.scope,workspaceHome:_.home})}async syncDoctor(_={}){let $=this.ensureWorkspace();c($.knowledgeDbPath);let D=this.syncStatus(),I=this.storageContract(),U=this.validateStorage(),E=$k($.knowledgeDbPath,I),j=_.machine?.trim()||null,N=_.peerWorkspace?.trim()||null,A=[],O=null,S=null;if(j&&!T9(j)){let J=await XW({machineId:j,includeTailscale:_.includeTailscale});O=cW(J),A.push(...J.warnings)}if(j||N){let J=await sj({machineId:j??hW($),peerWorkspace:N,includeTailscale:_.includeTailscale});if(j&&!N&&(O?.source==="raw"||!J.ok||!J.project_root)){let W=O9($.knowledgeDbPath,j);if(W){if(O?.source==="raw"&&W.ssh_target)O=cW(S9(W,j,{target:O.target,route:O.route,targetKind:O.target_kind,confidence:O.confidence,source:O.source,adapter:O.adapter,evidence:O.evidence,cacheability:O.cacheability,warnings:[]}));if(!J.ok||!J.project_root){let X=L9(W,j,J);if(X)S=X1(X,X.project_root),A.push(...X.warnings)}}}S=J.ok&&J.project_root?X1(J,J.project_root):S??{...X1(J,N??""),project_root:J.project_root??N??""},A.push(...J.warnings)}if(!U.ok)A.push(...U.errors.map((J)=>`storage:${J}`));let L=nH($.knowledgeDbPath,S);if(!L.ok)A.push("open_files_boundary_raw_payload_sentinels");if(!E.ok)A.push(...E.warnings);let P=S?.diagnostics.filter((J)=>J.severity==="fail")??[],z=U.ok&&E.ok&&L.ok&&P.length===0&&(S?.project_root!==""||!S),G=Uk({scope:this.scope,machine:j,peerWorkspace:N,tables:_.tables,resolvedWorkspace:S,openConflicts:D.conflicts.open});return{ok:z,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:I,validation:U,artifact_manifest:E},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:L,resolved_route:O,resolved_workspace:S,recommended_commands:G,warnings:[...new Set(A)],message:z?`Sync readiness ok: ${D.clocks.total} table clock(s), ${D.conflicts.open} open conflict(s)`:`Sync readiness needs attention: ${[...new Set(A)].join(", ")||"workspace diagnostics failed"}`}}repairArtifactManifestKeys(_={}){let $=this.ensureWorkspace();c($.knowledgeDbPath);let D=this.storageContract(),I=tW(D),U=Dk($.knowledgeDbPath,D),E=_.dryRun===!0||_.approveWrite!==!0;if(U.length===0)return{ok:!0,dry_run:E,approval_required:!1,storage_type:D.storage_type,storage_prefix:I,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:I,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:I,candidates:U,repaired:0,audit_event_id:null,message:"Artifact key repair requires --approve-write and --approved-by <name>"};let j=w($.knowledgeDbPath);try{let N=new Date().toISOString();j.transaction((S)=>{let L=j.query("UPDATE storage_objects SET metadata_json = ?, updated_at = ? WHERE id = ?"),P=j.query("SELECT id, metadata_json FROM storage_objects").all(),z=new Map(P.map((G)=>[G.id,i4(G.metadata_json)]));for(let G of S){let J=z.get(G.id)??{};J.key=G.repaired_key,L.run(JSON.stringify(J),N,G.id)}})(U);let O=R_(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:I,artifact_uris:U.map((S)=>S.artifact_uri)}});return{ok:!0,dry_run:!1,approval_required:!1,storage_type:D.storage_type,storage_prefix:I,candidates:U,repaired:U.length,audit_event_id:O,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 vX({dbPath:$.knowledgeDbPath,scope:this.scope,workspaceHome:$.home,storage:this.storageContract(),topology:D,machineId:_.machineId})}syncConflicts(_={}){let $=this.workspace;if(!X_($.knowledgeDbPath))return[];return rX($.knowledgeDbPath,_)}syncConflict(_){let $=this.ensureWorkspace(),D=TI($.knowledgeDbPath,_);if(!D)throw Error(`Sync conflict not found: ${_}`);return D}proposeSyncConflictResolution(_){let $=this.ensureWorkspace();return $U($.knowledgeDbPath,_)}async proposeSyncConflictResolutionWithAi(_){let $=this.ensureWorkspace();return fG({dbPath:$.knowledgeDbPath,id:_.id,config:this.config(),modelRef:_.modelRef,fake:_.fake,env:_.env})}resolveSyncConflict(_){let $=this.ensureWorkspace(),D=$U($.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 <name>"};let I=uX($.knowledgeDbPath,{id:_.id,strategy:_.strategy??D.proposed_strategy,approvedBy:_.approvedBy,proposedPatchUri:_.proposedPatchUri}),U=w($.knowledgeDbPath);try{let E=R_(U,{event_type:"sync_conflict_resolution",action:"sync.conflict.resolve",target_uri:`knowledge-sync-conflict://${_.id}`,decision:"allow",metadata:{conflict_id:_.id,entity_kind:I.entity_kind,entity_id:I.entity_id,strategy:I.resolution_strategy,approved_by:I.approved_by,proposed_patch_uri:I.proposed_patch_uri}});return{ok:!0,approval_required:!1,conflict:I,audit_event_id:E,message:`Resolved sync conflict ${_.id}`}}finally{U.close()}}syncMachines(){let _=this.workspace;if(!X_(_.knowledgeDbPath))return[];return sg(_.knowledgeDbPath)}exportSyncBundle(_={}){let $=this.ensureWorkspace();return this.assertStorageValid("sync export"),c($.knowledgeDbPath),_U({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"),c($.knowledgeDbPath),KI({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,I=this.ensureWorkspace();c(I.knowledgeDbPath);let U=_.tables?.length?["--tables",_.tables.join(",")]:[],E=_.includeArtifactContent===!1?["--no-artifact-content"]:[],j=["--scope",this.scope,"--json"],N=await XW({machineId:_.machine,includeTailscale:_.includeTailscale}),A=await sj({machineId:_.machine,peerWorkspace:_.peerWorkspace,includeTailscale:_.includeTailscale});if(!_.peerWorkspace&&N.source==="raw"||!A.ok||!A.project_root){let z=O9(I.knowledgeDbPath,_.machine);if(z){if(!_.peerWorkspace&&N.source==="raw"&&z.ssh_target)N=S9(z,_.machine,N);if(!A.ok||!A.project_root){let G=L9(z,_.machine,A);if(G)A=G}}}if(!A.ok||!A.project_root)throw Error([`Unable to resolve peer workspace for ${_.machine}.`,"Pass --peer-workspace <repo-or-knowledge-home> or configure workspace path mapping in machines.",A.warnings.length?`Warnings: ${A.warnings.join(", ")}`:null].filter(Boolean).join(" "));let O=A.project_root,S={ok:!0,dry_run:D,direction:$,transport:"ssh",machine:_.machine,resolved_machine:N.target,resolved_route:cW(N),resolved_workspace:X1(A,A.project_root),peer_workspace:O,message:""},L=!1,P=()=>{if(D||L)return;kX(I.knowledgeDbPath,{machineId:_.machine,route:N,workspace:A}),L=!0};if($==="pull"||$==="both"){let z=A9(O,["sync","export",...j,...U,...E]),G=Y9(_.machine,z,void 0,N),J=Q9(_.machine,"sync export",G);Ek(_.machine,J),S.pull=await this.importSyncBundle({bundle:J,dryRun:D,direction:"pull",machineId:_.machineId??null})}if($==="push"||$==="both"){P();let z=this.exportSyncBundle({machineId:_.machineId??null,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:!D}),G=A9(O,["sync","import",...j,...D?["--dry-run"]:[]]),J=Q9(_.machine,"sync import",Y9(_.machine,G,JSON.stringify(z),N));jk(_.machine,J),S.push=J}return S.ok=(S.pull?.ok??!0)&&(S.push?.ok??!0),P(),S.message=[J9(S.resolved_workspace),S.pull?`pull: ${S.pull.message}`:null,S.push?`push: ${S.push.message}`:null].filter(Boolean).join("; "),S}async syncPeer(_){let $=_.direction??"both",D=this.ensureWorkspace();c(D.knowledgeDbPath);let I=K9(_.peerWorkspace),U=wH(I);c(U.knowledgeDbPath);let E=yN(U.configPath),j=a1(E,U,this.scope),N=zg(E,U),A=_.machineId??hW(D),O=hW(U),S=await sj({machineId:_.machineId??O,peerWorkspace:I,includeTailscale:!1}),L=()=>_U({dbPath:D.knowledgeDbPath,scope:this.scope,workspaceHome:D.home,storage:this.storageContract(),machineId:A,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),P=()=>_U({dbPath:U.knowledgeDbPath,scope:this.scope,workspaceHome:U.home,storage:j,machineId:O,tables:_.tables,includeArtifactContent:_.includeArtifactContent,recordClocks:_.dryRun!==!0}),z={ok:!0,dry_run:_.dryRun===!0,direction:$,resolved_workspace:X1(S,S.project_root??I),message:""};if($==="pull"||$==="both")z.pull=await KI({targetDbPath:D.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:D.home,targetStorage:this.storageContract(),targetStore:this.artifactStore(),bundle:P(),targetBundle:L(),direction:"pull",dryRun:_.dryRun,localMachineId:A});if($==="push"||$==="both")z.push=await KI({targetDbPath:U.knowledgeDbPath,targetScope:this.scope,targetWorkspaceHome:U.home,targetStorage:j,targetStore:N,bundle:L(),targetBundle:P(),direction:"push",dryRun:_.dryRun,localMachineId:O});return z.ok=(z.pull?.ok??!0)&&(z.push?.ok??!0),z.message=[J9(z.resolved_workspace),z.pull?`pull: ${z.pull.message}`:null,z.push?`push: ${z.push.message}`:null].filter(Boolean).join("; "),z}}function zN(_={}){return new b9(_)}import{createHash as Z9}from"crypto";var gk=Object.defineProperty,Ak=(_)=>_;function Ok(_,$){this[_]=Ak.bind(null,$)}var Sk=(_,$)=>{for(var D in $)gk(_,D,{get:$[D],enumerable:!0,configurable:!0,set:Ok.bind($,D)})},g={};Sk(g,{void:()=>ok,util:()=>N_,unknown:()=>ik,union:()=>sk,undefined:()=>dk,tuple:()=>Dq,transformer:()=>q9,symbol:()=>nk,string:()=>l9,strictObject:()=>ak,setErrorMap:()=>Wk,set:()=>Eq,record:()=>Uq,quotelessJson:()=>Lk,promise:()=>Sq,preprocess:()=>Wq,pipeline:()=>Pq,ostring:()=>zq,optional:()=>Lq,onumber:()=>Xq,oboolean:()=>Gq,objectUtil:()=>eW,object:()=>ek,number:()=>i9,nullable:()=>Jq,null:()=>mk,never:()=>tk,nativeEnum:()=>Oq,nan:()=>yk,map:()=>Iq,makeIssue:()=>RN,literal:()=>gq,lazy:()=>Nq,late:()=>xk,isValid:()=>t4,isDirty:()=>sW,isAsync:()=>Q1,isAborted:()=>aW,intersection:()=>$q,instanceof:()=>uk,getParsedType:()=>Q6,getErrorMap:()=>GN,function:()=>jq,enum:()=>Aq,effect:()=>q9,discriminatedUnion:()=>_q,defaultErrorMap:()=>PD,datetimeRegex:()=>n9,date:()=>ck,custom:()=>m9,coerce:()=>Rq,boolean:()=>t9,bigint:()=>hk,array:()=>pk,any:()=>lk,addIssueToContext:()=>u,ZodVoid:()=>T1,ZodUnknown:()=>p6,ZodUnion:()=>RD,ZodUndefined:()=>XD,ZodType:()=>$_,ZodTuple:()=>p$,ZodTransformer:()=>Q$,ZodSymbol:()=>K1,ZodString:()=>q$,ZodSet:()=>e4,ZodSchema:()=>$_,ZodRecord:()=>F1,ZodReadonly:()=>BD,ZodPromise:()=>a4,ZodPipeline:()=>M1,ZodParsedType:()=>h,ZodOptional:()=>v$,ZodObject:()=>H_,ZodNumber:()=>e6,ZodNullable:()=>K6,ZodNull:()=>GD,ZodNever:()=>o$,ZodNativeEnum:()=>TD,ZodNaN:()=>B1,ZodMap:()=>V1,ZodLiteral:()=>KD,ZodLazy:()=>QD,ZodIssueCode:()=>C,ZodIntersection:()=>YD,ZodFunction:()=>JD,ZodFirstPartyTypeKind:()=>t,ZodError:()=>L$,ZodEnum:()=>s6,ZodEffects:()=>Q$,ZodDiscriminatedUnion:()=>KN,ZodDefault:()=>FD,ZodDate:()=>o4,ZodCatch:()=>VD,ZodBranded:()=>TN,ZodBoolean:()=>zD,ZodBigInt:()=>a6,ZodArray:()=>C$,ZodAny:()=>p4,Schema:()=>$_,ParseStatus:()=>l_,OK:()=>s_,NEVER:()=>Yq,INVALID:()=>i,EMPTY_PATH:()=>Pk,DIRTY:()=>LD,BRAND:()=>fk});var N_;(function(_){_.assertEqual=(U)=>{};function $(U){}_.assertIs=$;function D(U){throw Error()}_.assertNever=D,_.arrayToEnum=(U)=>{let E={};for(let j of U)E[j]=j;return E},_.getValidEnumValues=(U)=>{let E=_.objectKeys(U).filter((N)=>typeof U[U[N]]!=="number"),j={};for(let N of E)j[N]=U[N];return _.objectValues(j)},_.objectValues=(U)=>{return _.objectKeys(U).map(function(E){return U[E]})},_.objectKeys=typeof Object.keys==="function"?(U)=>Object.keys(U):(U)=>{let E=[];for(let j in U)if(Object.prototype.hasOwnProperty.call(U,j))E.push(j);return E},_.find=(U,E)=>{for(let j of U)if(E(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 I(U,E=" | "){return U.map((j)=>typeof j==="string"?`'${j}'`:j).join(E)}_.joinValues=I,_.jsonStringifyReplacer=(U,E)=>{if(typeof E==="bigint")return E.toString();return E}})(N_||(N_={}));var eW;(function(_){_.mergeShapes=($,D)=>{return{...$,...D}}})(eW||(eW={}));var h=N_.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),Q6=(_)=>{switch(typeof _){case"undefined":return h.undefined;case"string":return h.string;case"number":return Number.isNaN(_)?h.nan:h.number;case"boolean":return h.boolean;case"function":return h.function;case"bigint":return h.bigint;case"symbol":return h.symbol;case"object":if(Array.isArray(_))return h.array;if(_===null)return h.null;if(_.then&&typeof _.then==="function"&&_.catch&&typeof _.catch==="function")return h.promise;if(typeof Map<"u"&&_ instanceof Map)return h.map;if(typeof Set<"u"&&_ instanceof Set)return h.set;if(typeof Date<"u"&&_ instanceof Date)return h.date;return h.object;default:return h.unknown}},C=N_.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"]),Lk=(_)=>{return JSON.stringify(_,null,2).replace(/"([^"]+)":/g,"$1:")};class L$ 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:[]},I=(U)=>{for(let E of U.issues)if(E.code==="invalid_union")E.unionErrors.map(I);else if(E.code==="invalid_return_type")I(E.returnTypeError);else if(E.code==="invalid_arguments")I(E.argumentsError);else if(E.path.length===0)D._errors.push($(E));else{let j=D,N=0;while(N<E.path.length){let A=E.path[N];if(N!==E.path.length-1)j[A]=j[A]||{_errors:[]};else j[A]=j[A]||{_errors:[]},j[A]._errors.push($(E));j=j[A],N++}}};return I(this),D}static assert(_){if(!(_ instanceof L$))throw Error(`Not a ZodError: ${_}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,N_.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(_=($)=>$.message){let $={},D=[];for(let I of this.issues)if(I.path.length>0){let U=I.path[0];$[U]=$[U]||[],$[U].push(_(I))}else D.push(_(I));return{formErrors:D,fieldErrors:$}}get formErrors(){return this.flatten()}}L$.create=(_)=>{return new L$(_)};var Jk=(_,$)=>{let D;switch(_.code){case C.invalid_type:if(_.received===h.undefined)D="Required";else D=`Expected ${_.expected}, received ${_.received}`;break;case C.invalid_literal:D=`Invalid literal value, expected ${JSON.stringify(_.expected,N_.jsonStringifyReplacer)}`;break;case C.unrecognized_keys:D=`Unrecognized key(s) in object: ${N_.joinValues(_.keys,", ")}`;break;case C.invalid_union:D="Invalid input";break;case C.invalid_union_discriminator:D=`Invalid discriminator value. Expected ${N_.joinValues(_.options)}`;break;case C.invalid_enum_value:D=`Invalid enum value. Expected ${N_.joinValues(_.options)}, received '${_.received}'`;break;case C.invalid_arguments:D="Invalid function arguments";break;case C.invalid_return_type:D="Invalid function return type";break;case C.invalid_date:D="Invalid date";break;case C.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 N_.assertNever(_.validation);else if(_.validation!=="regex")D=`Invalid ${_.validation}`;else D="Invalid";break;case C.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 C.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 C.custom:D="Invalid input";break;case C.invalid_intersection_types:D="Intersection results could not be merged";break;case C.not_multiple_of:D=`Number must be a multiple of ${_.multipleOf}`;break;case C.not_finite:D="Number must be finite";break;default:D=$.defaultError,N_.assertNever(_)}return{message:D}},PD=Jk,y9=PD;function Wk(_){y9=_}function GN(){return y9}var RN=(_)=>{let{data:$,path:D,errorMaps:I,issueData:U}=_,E=[...D,...U.path||[]],j={...U,path:E};if(U.message!==void 0)return{...U,path:E,message:U.message};let N="",A=I.filter((O)=>!!O).slice().reverse();for(let O of A)N=O(j,{data:$,defaultError:N}).message;return{...U,path:E,message:N}},Pk=[];function u(_,$){let D=GN(),I=RN({issueData:$,data:_.data,path:_.path,errorMaps:[_.common.contextualErrorMap,_.schemaErrorMap,D,D===PD?void 0:PD].filter((U)=>!!U)});_.common.issues.push(I)}class l_{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 I of $){if(I.status==="aborted")return i;if(I.status==="dirty")_.dirty();D.push(I.value)}return{status:_.value,value:D}}static async mergeObjectAsync(_,$){let D=[];for(let I of $){let U=await I.key,E=await I.value;D.push({key:U,value:E})}return l_.mergeObjectSync(_,D)}static mergeObjectSync(_,$){let D={};for(let I of $){let{key:U,value:E}=I;if(U.status==="aborted")return i;if(E.status==="aborted")return i;if(U.status==="dirty")_.dirty();if(E.status==="dirty")_.dirty();if(U.value!=="__proto__"&&(typeof E.value<"u"||I.alwaysSet))D[U.value]=E.value}return{status:_.value,value:D}}}var i=Object.freeze({status:"aborted"}),LD=(_)=>({status:"dirty",value:_}),s_=(_)=>({status:"valid",value:_}),aW=(_)=>_.status==="aborted",sW=(_)=>_.status==="dirty",t4=(_)=>_.status==="valid",Q1=(_)=>typeof Promise<"u"&&_ instanceof Promise,d;(function(_){_.errToObj=($)=>typeof $==="string"?{message:$}:$||{},_.toString=($)=>typeof $==="string"?$:$?.message})(d||(d={}));class w${constructor(_,$,D,I){this._cachedPath=[],this.parent=_,this.data=$,this._path=D,this._key=I}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 H9=(_,$)=>{if(t4($))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 L$(_.common.issues);return this._error=D,this._error}}}};function s(_){if(!_)return{};let{errorMap:$,invalid_type_error:D,required_error:I,description:U}=_;if($&&(D||I))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:A}=_;if(j.code==="invalid_enum_value")return{message:A??N.defaultError};if(typeof N.data>"u")return{message:A??I??N.defaultError};if(j.code!=="invalid_type")return{message:N.defaultError};return{message:A??D??N.defaultError}},description:U}}class $_{get description(){return this._def.description}_getType(_){return Q6(_.data)}_getOrReturnCtx(_,$){return $||{common:_.parent.common,data:_.data,parsedType:Q6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}_processInputParams(_){return{status:new l_,ctx:{common:_.parent.common,data:_.data,parsedType:Q6(_.data),schemaErrorMap:this._def.errorMap,path:_.path,parent:_.parent}}}_parseSync(_){let $=this._parse(_);if(Q1($))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:Q6(_)},I=this._parseSync({data:_,path:D.path,parent:D});return H9(D,I)}"~validate"(_){let $={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:_,parsedType:Q6(_)};if(!this["~standard"].async)try{let D=this._parseSync({data:_,path:[],parent:$});return t4(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)=>t4(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:Q6(_)},I=this._parse({data:_,path:D.path,parent:D}),U=await(Q1(I)?I:Promise.resolve(I));return H9(D,U)}refine(_,$){let D=(I)=>{if(typeof $==="string"||typeof $>"u")return{message:$};else if(typeof $==="function")return $(I);else return $};return this._refinement((I,U)=>{let E=_(I),j=()=>U.addIssue({code:C.custom,...D(I)});if(typeof Promise<"u"&&E instanceof Promise)return E.then((N)=>{if(!N)return j(),!1;else return!0});if(!E)return j(),!1;else return!0})}refinement(_,$){return this._refinement((D,I)=>{if(!_(D))return I.addIssue(typeof $==="function"?$(D,I):$),!1;else return!0})}_refinement(_){return new Q$({schema:this,typeName:t.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 v$.create(this,this._def)}nullable(){return K6.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return C$.create(this)}promise(){return a4.create(this,this._def)}or(_){return RD.create([this,_],this._def)}and(_){return YD.create(this,_,this._def)}transform(_){return new Q$({...s(this._def),schema:this,typeName:t.ZodEffects,effect:{type:"transform",transform:_}})}default(_){let $=typeof _==="function"?_:()=>_;return new FD({...s(this._def),innerType:this,defaultValue:$,typeName:t.ZodDefault})}brand(){return new TN({typeName:t.ZodBranded,type:this,...s(this._def)})}catch(_){let $=typeof _==="function"?_:()=>_;return new VD({...s(this._def),innerType:this,catchValue:$,typeName:t.ZodCatch})}describe(_){return new this.constructor({...this._def,description:_})}pipe(_){return M1.create(this,_)}readonly(){return BD.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var zk=/^c[^\s-]{8,}$/i,Xk=/^[0-9a-z]+$/,Gk=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Rk=/^[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,Yk=/^[a-z0-9_-]{21}$/i,Qk=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Kk=/^[-+]?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)?)??$/,Tk=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Fk="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",oW,Vk=/^(?:(?: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])$/,Bk=/^(?:(?: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])$/,Mk=/^(([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]))$/,bk=/^(([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])$/,Zk=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Hk=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,h9="((\\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])))",kk=new RegExp(`^${h9}$`);function c9(_){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 qk(_){return new RegExp(`^${c9(_)}$`)}function n9(_){let $=`${h9}T${c9(_)}`,D=[];if(D.push(_.local?"Z?":"Z"),_.offset)D.push("([+-]\\d{2}:?\\d{2})");return $=`${$}(${D.join("|")})`,new RegExp(`^${$}$`)}function Ck(_,$){if(($==="v4"||!$)&&Vk.test(_))return!0;if(($==="v6"||!$)&&Mk.test(_))return!0;return!1}function vk(_,$){if(!Qk.test(_))return!1;try{let[D]=_.split(".");if(!D)return!1;let I=D.replace(/-/g,"+").replace(/_/g,"/").padEnd(D.length+(4-D.length%4)%4,"="),U=JSON.parse(atob(I));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 wk(_,$){if(($==="v4"||!$)&&Bk.test(_))return!0;if(($==="v6"||!$)&&bk.test(_))return!0;return!1}class q$ extends $_{_parse(_){if(this._def.coerce)_.data=String(_.data);if(this._getType(_)!==h.string){let U=this._getOrReturnCtx(_);return u(U,{code:C.invalid_type,expected:h.string,received:U.parsedType}),i}let D=new l_,I=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.length<U.value)I=this._getOrReturnCtx(_,I),u(I,{code:C.too_small,minimum:U.value,type:"string",inclusive:!0,exact:!1,message:U.message}),D.dirty()}else if(U.kind==="max"){if(_.data.length>U.value)I=this._getOrReturnCtx(_,I),u(I,{code:C.too_big,maximum:U.value,type:"string",inclusive:!0,exact:!1,message:U.message}),D.dirty()}else if(U.kind==="length"){let E=_.data.length>U.value,j=_.data.length<U.value;if(E||j){if(I=this._getOrReturnCtx(_,I),E)u(I,{code:C.too_big,maximum:U.value,type:"string",inclusive:!0,exact:!0,message:U.message});else if(j)u(I,{code:C.too_small,minimum:U.value,type:"string",inclusive:!0,exact:!0,message:U.message});D.dirty()}}else if(U.kind==="email"){if(!Tk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"email",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="emoji"){if(!oW)oW=new RegExp(Fk,"u");if(!oW.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"emoji",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="uuid"){if(!Rk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"uuid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="nanoid"){if(!Yk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"nanoid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="cuid"){if(!zk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"cuid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="cuid2"){if(!Xk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"cuid2",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="ulid"){if(!Gk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"ulid",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="url")try{new URL(_.data)}catch{I=this._getOrReturnCtx(_,I),u(I,{validation:"url",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="regex"){if(U.regex.lastIndex=0,!U.regex.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"regex",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="trim")_.data=_.data.trim();else if(U.kind==="includes"){if(!_.data.includes(U.value,U.position))I=this._getOrReturnCtx(_,I),u(I,{code:C.invalid_string,validation:{includes:U.value,position:U.position},message:U.message}),D.dirty()}else if(U.kind==="toLowerCase")_.data=_.data.toLowerCase();else if(U.kind==="toUpperCase")_.data=_.data.toUpperCase();else if(U.kind==="startsWith"){if(!_.data.startsWith(U.value))I=this._getOrReturnCtx(_,I),u(I,{code:C.invalid_string,validation:{startsWith:U.value},message:U.message}),D.dirty()}else if(U.kind==="endsWith"){if(!_.data.endsWith(U.value))I=this._getOrReturnCtx(_,I),u(I,{code:C.invalid_string,validation:{endsWith:U.value},message:U.message}),D.dirty()}else if(U.kind==="datetime"){if(!n9(U).test(_.data))I=this._getOrReturnCtx(_,I),u(I,{code:C.invalid_string,validation:"datetime",message:U.message}),D.dirty()}else if(U.kind==="date"){if(!kk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{code:C.invalid_string,validation:"date",message:U.message}),D.dirty()}else if(U.kind==="time"){if(!qk(U).test(_.data))I=this._getOrReturnCtx(_,I),u(I,{code:C.invalid_string,validation:"time",message:U.message}),D.dirty()}else if(U.kind==="duration"){if(!Kk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"duration",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="ip"){if(!Ck(_.data,U.version))I=this._getOrReturnCtx(_,I),u(I,{validation:"ip",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="jwt"){if(!vk(_.data,U.alg))I=this._getOrReturnCtx(_,I),u(I,{validation:"jwt",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="cidr"){if(!wk(_.data,U.version))I=this._getOrReturnCtx(_,I),u(I,{validation:"cidr",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="base64"){if(!Zk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"base64",code:C.invalid_string,message:U.message}),D.dirty()}else if(U.kind==="base64url"){if(!Hk.test(_.data))I=this._getOrReturnCtx(_,I),u(I,{validation:"base64url",code:C.invalid_string,message:U.message}),D.dirty()}else N_.assertNever(U);return{status:D.value,value:_.data}}_regex(_,$,D){return this.refinement((I)=>_.test(I),{validation:$,code:C.invalid_string,...d.errToObj(D)})}_addCheck(_){return new q$({...this._def,checks:[...this._def.checks,_]})}email(_){return this._addCheck({kind:"email",...d.errToObj(_)})}url(_){return this._addCheck({kind:"url",...d.errToObj(_)})}emoji(_){return this._addCheck({kind:"emoji",...d.errToObj(_)})}uuid(_){return this._addCheck({kind:"uuid",...d.errToObj(_)})}nanoid(_){return this._addCheck({kind:"nanoid",...d.errToObj(_)})}cuid(_){return this._addCheck({kind:"cuid",...d.errToObj(_)})}cuid2(_){return this._addCheck({kind:"cuid2",...d.errToObj(_)})}ulid(_){return this._addCheck({kind:"ulid",...d.errToObj(_)})}base64(_){return this._addCheck({kind:"base64",...d.errToObj(_)})}base64url(_){return this._addCheck({kind:"base64url",...d.errToObj(_)})}jwt(_){return this._addCheck({kind:"jwt",...d.errToObj(_)})}ip(_){return this._addCheck({kind:"ip",...d.errToObj(_)})}cidr(_){return this._addCheck({kind:"cidr",...d.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,...d.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,...d.errToObj(_?.message)})}duration(_){return this._addCheck({kind:"duration",...d.errToObj(_)})}regex(_,$){return this._addCheck({kind:"regex",regex:_,...d.errToObj($)})}includes(_,$){return this._addCheck({kind:"includes",value:_,position:$?.position,...d.errToObj($?.message)})}startsWith(_,$){return this._addCheck({kind:"startsWith",value:_,...d.errToObj($)})}endsWith(_,$){return this._addCheck({kind:"endsWith",value:_,...d.errToObj($)})}min(_,$){return this._addCheck({kind:"min",value:_,...d.errToObj($)})}max(_,$){return this._addCheck({kind:"max",value:_,...d.errToObj($)})}length(_,$){return this._addCheck({kind:"length",value:_,...d.errToObj($)})}nonempty(_){return this.min(1,d.errToObj(_))}trim(){return new q$({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new q$({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new q$({...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 _}}q$.create=(_)=>{return new q$({checks:[],typeName:t.ZodString,coerce:_?.coerce??!1,...s(_)})};function rk(_,$){let D=(_.toString().split(".")[1]||"").length,I=($.toString().split(".")[1]||"").length,U=D>I?D:I,E=Number.parseInt(_.toFixed(U).replace(".","")),j=Number.parseInt($.toFixed(U).replace(".",""));return E%j/10**U}class e6 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(_)!==h.number){let U=this._getOrReturnCtx(_);return u(U,{code:C.invalid_type,expected:h.number,received:U.parsedType}),i}let D=void 0,I=new l_;for(let U of this._def.checks)if(U.kind==="int"){if(!N_.isInteger(_.data))D=this._getOrReturnCtx(_,D),u(D,{code:C.invalid_type,expected:"integer",received:"float",message:U.message}),I.dirty()}else if(U.kind==="min"){if(U.inclusive?_.data<U.value:_.data<=U.value)D=this._getOrReturnCtx(_,D),u(D,{code:C.too_small,minimum:U.value,type:"number",inclusive:U.inclusive,exact:!1,message:U.message}),I.dirty()}else if(U.kind==="max"){if(U.inclusive?_.data>U.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),u(D,{code:C.too_big,maximum:U.value,type:"number",inclusive:U.inclusive,exact:!1,message:U.message}),I.dirty()}else if(U.kind==="multipleOf"){if(rk(_.data,U.value)!==0)D=this._getOrReturnCtx(_,D),u(D,{code:C.not_multiple_of,multipleOf:U.value,message:U.message}),I.dirty()}else if(U.kind==="finite"){if(!Number.isFinite(_.data))D=this._getOrReturnCtx(_,D),u(D,{code:C.not_finite,message:U.message}),I.dirty()}else N_.assertNever(U);return{status:I.value,value:_.data}}gte(_,$){return this.setLimit("min",_,!0,d.toString($))}gt(_,$){return this.setLimit("min",_,!1,d.toString($))}lte(_,$){return this.setLimit("max",_,!0,d.toString($))}lt(_,$){return this.setLimit("max",_,!1,d.toString($))}setLimit(_,$,D,I){return new e6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:d.toString(I)}]})}_addCheck(_){return new e6({...this._def,checks:[...this._def.checks,_]})}int(_){return this._addCheck({kind:"int",message:d.toString(_)})}positive(_){return this._addCheck({kind:"min",value:0,inclusive:!1,message:d.toString(_)})}negative(_){return this._addCheck({kind:"max",value:0,inclusive:!1,message:d.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:0,inclusive:!0,message:d.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:0,inclusive:!0,message:d.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:d.toString($)})}finite(_){return this._addCheck({kind:"finite",message:d.toString(_)})}safe(_){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:d.toString(_)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:d.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"&&N_.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(_)}}e6.create=(_)=>{return new e6({checks:[],typeName:t.ZodNumber,coerce:_?.coerce||!1,...s(_)})};class a6 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(_)!==h.bigint)return this._getInvalidInput(_);let D=void 0,I=new l_;for(let U of this._def.checks)if(U.kind==="min"){if(U.inclusive?_.data<U.value:_.data<=U.value)D=this._getOrReturnCtx(_,D),u(D,{code:C.too_small,type:"bigint",minimum:U.value,inclusive:U.inclusive,message:U.message}),I.dirty()}else if(U.kind==="max"){if(U.inclusive?_.data>U.value:_.data>=U.value)D=this._getOrReturnCtx(_,D),u(D,{code:C.too_big,type:"bigint",maximum:U.value,inclusive:U.inclusive,message:U.message}),I.dirty()}else if(U.kind==="multipleOf"){if(_.data%U.value!==BigInt(0))D=this._getOrReturnCtx(_,D),u(D,{code:C.not_multiple_of,multipleOf:U.value,message:U.message}),I.dirty()}else N_.assertNever(U);return{status:I.value,value:_.data}}_getInvalidInput(_){let $=this._getOrReturnCtx(_);return u($,{code:C.invalid_type,expected:h.bigint,received:$.parsedType}),i}gte(_,$){return this.setLimit("min",_,!0,d.toString($))}gt(_,$){return this.setLimit("min",_,!1,d.toString($))}lte(_,$){return this.setLimit("max",_,!0,d.toString($))}lt(_,$){return this.setLimit("max",_,!1,d.toString($))}setLimit(_,$,D,I){return new a6({...this._def,checks:[...this._def.checks,{kind:_,value:$,inclusive:D,message:d.toString(I)}]})}_addCheck(_){return new a6({...this._def,checks:[...this._def.checks,_]})}positive(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:d.toString(_)})}negative(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:d.toString(_)})}nonpositive(_){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:d.toString(_)})}nonnegative(_){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:d.toString(_)})}multipleOf(_,$){return this._addCheck({kind:"multipleOf",value:_,message:d.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 _}}a6.create=(_)=>{return new a6({checks:[],typeName:t.ZodBigInt,coerce:_?.coerce??!1,...s(_)})};class zD extends $_{_parse(_){if(this._def.coerce)_.data=Boolean(_.data);if(this._getType(_)!==h.boolean){let D=this._getOrReturnCtx(_);return u(D,{code:C.invalid_type,expected:h.boolean,received:D.parsedType}),i}return s_(_.data)}}zD.create=(_)=>{return new zD({typeName:t.ZodBoolean,coerce:_?.coerce||!1,...s(_)})};class o4 extends $_{_parse(_){if(this._def.coerce)_.data=new Date(_.data);if(this._getType(_)!==h.date){let U=this._getOrReturnCtx(_);return u(U,{code:C.invalid_type,expected:h.date,received:U.parsedType}),i}if(Number.isNaN(_.data.getTime())){let U=this._getOrReturnCtx(_);return u(U,{code:C.invalid_date}),i}let D=new l_,I=void 0;for(let U of this._def.checks)if(U.kind==="min"){if(_.data.getTime()<U.value)I=this._getOrReturnCtx(_,I),u(I,{code:C.too_small,message:U.message,inclusive:!0,exact:!1,minimum:U.value,type:"date"}),D.dirty()}else if(U.kind==="max"){if(_.data.getTime()>U.value)I=this._getOrReturnCtx(_,I),u(I,{code:C.too_big,message:U.message,inclusive:!0,exact:!1,maximum:U.value,type:"date"}),D.dirty()}else N_.assertNever(U);return{status:D.value,value:new Date(_.data.getTime())}}_addCheck(_){return new o4({...this._def,checks:[...this._def.checks,_]})}min(_,$){return this._addCheck({kind:"min",value:_.getTime(),message:d.toString($)})}max(_,$){return this._addCheck({kind:"max",value:_.getTime(),message:d.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}}o4.create=(_)=>{return new o4({checks:[],coerce:_?.coerce||!1,typeName:t.ZodDate,...s(_)})};class K1 extends $_{_parse(_){if(this._getType(_)!==h.symbol){let D=this._getOrReturnCtx(_);return u(D,{code:C.invalid_type,expected:h.symbol,received:D.parsedType}),i}return s_(_.data)}}K1.create=(_)=>{return new K1({typeName:t.ZodSymbol,...s(_)})};class XD extends $_{_parse(_){if(this._getType(_)!==h.undefined){let D=this._getOrReturnCtx(_);return u(D,{code:C.invalid_type,expected:h.undefined,received:D.parsedType}),i}return s_(_.data)}}XD.create=(_)=>{return new XD({typeName:t.ZodUndefined,...s(_)})};class GD extends $_{_parse(_){if(this._getType(_)!==h.null){let D=this._getOrReturnCtx(_);return u(D,{code:C.invalid_type,expected:h.null,received:D.parsedType}),i}return s_(_.data)}}GD.create=(_)=>{return new GD({typeName:t.ZodNull,...s(_)})};class p4 extends $_{constructor(){super(...arguments);this._any=!0}_parse(_){return s_(_.data)}}p4.create=(_)=>{return new p4({typeName:t.ZodAny,...s(_)})};class p6 extends $_{constructor(){super(...arguments);this._unknown=!0}_parse(_){return s_(_.data)}}p6.create=(_)=>{return new p6({typeName:t.ZodUnknown,...s(_)})};class o$ extends $_{_parse(_){let $=this._getOrReturnCtx(_);return u($,{code:C.invalid_type,expected:h.never,received:$.parsedType}),i}}o$.create=(_)=>{return new o$({typeName:t.ZodNever,...s(_)})};class T1 extends $_{_parse(_){if(this._getType(_)!==h.undefined){let D=this._getOrReturnCtx(_);return u(D,{code:C.invalid_type,expected:h.void,received:D.parsedType}),i}return s_(_.data)}}T1.create=(_)=>{return new T1({typeName:t.ZodVoid,...s(_)})};class C$ extends $_{_parse(_){let{ctx:$,status:D}=this._processInputParams(_),I=this._def;if($.parsedType!==h.array)return u($,{code:C.invalid_type,expected:h.array,received:$.parsedType}),i;if(I.exactLength!==null){let E=$.data.length>I.exactLength.value,j=$.data.length<I.exactLength.value;if(E||j)u($,{code:E?C.too_big:C.too_small,minimum:j?I.exactLength.value:void 0,maximum:E?I.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:I.exactLength.message}),D.dirty()}if(I.minLength!==null){if($.data.length<I.minLength.value)u($,{code:C.too_small,minimum:I.minLength.value,type:"array",inclusive:!0,exact:!1,message:I.minLength.message}),D.dirty()}if(I.maxLength!==null){if($.data.length>I.maxLength.value)u($,{code:C.too_big,maximum:I.maxLength.value,type:"array",inclusive:!0,exact:!1,message:I.maxLength.message}),D.dirty()}if($.common.async)return Promise.all([...$.data].map((E,j)=>{return I.type._parseAsync(new w$($,E,$.path,j))})).then((E)=>{return l_.mergeArray(D,E)});let U=[...$.data].map((E,j)=>{return I.type._parseSync(new w$($,E,$.path,j))});return l_.mergeArray(D,U)}get element(){return this._def.type}min(_,$){return new C$({...this._def,minLength:{value:_,message:d.toString($)}})}max(_,$){return new C$({...this._def,maxLength:{value:_,message:d.toString($)}})}length(_,$){return new C$({...this._def,exactLength:{value:_,message:d.toString($)}})}nonempty(_){return this.min(1,_)}}C$.create=(_,$)=>{return new C$({type:_,minLength:null,maxLength:null,exactLength:null,typeName:t.ZodArray,...s($)})};function OD(_){if(_ instanceof H_){let $={};for(let D in _.shape){let I=_.shape[D];$[D]=v$.create(OD(I))}return new H_({..._._def,shape:()=>$})}else if(_ instanceof C$)return new C$({..._._def,type:OD(_.element)});else if(_ instanceof v$)return v$.create(OD(_.unwrap()));else if(_ instanceof K6)return K6.create(OD(_.unwrap()));else if(_ instanceof p$)return p$.create(_.items.map(($)=>OD($)));else return _}class H_ 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(),$=N_.objectKeys(_);return this._cached={shape:_,keys:$},this._cached}_parse(_){if(this._getType(_)!==h.object){let A=this._getOrReturnCtx(_);return u(A,{code:C.invalid_type,expected:h.object,received:A.parsedType}),i}let{status:D,ctx:I}=this._processInputParams(_),{shape:U,keys:E}=this._getCached(),j=[];if(!(this._def.catchall instanceof o$&&this._def.unknownKeys==="strip")){for(let A in I.data)if(!E.includes(A))j.push(A)}let N=[];for(let A of E){let O=U[A],S=I.data[A];N.push({key:{status:"valid",value:A},value:O._parse(new w$(I,S,I.path,A)),alwaysSet:A in I.data})}if(this._def.catchall instanceof o$){let A=this._def.unknownKeys;if(A==="passthrough")for(let O of j)N.push({key:{status:"valid",value:O},value:{status:"valid",value:I.data[O]}});else if(A==="strict"){if(j.length>0)u(I,{code:C.unrecognized_keys,keys:j}),D.dirty()}else if(A==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let A=this._def.catchall;for(let O of j){let S=I.data[O];N.push({key:{status:"valid",value:O},value:A._parse(new w$(I,S,I.path,O)),alwaysSet:O in I.data})}}if(I.common.async)return Promise.resolve().then(async()=>{let A=[];for(let O of N){let S=await O.key,L=await O.value;A.push({key:S,value:L,alwaysSet:O.alwaysSet})}return A}).then((A)=>{return l_.mergeObjectSync(D,A)});else return l_.mergeObjectSync(D,N)}get shape(){return this._def.shape()}strict(_){return d.errToObj,new H_({...this._def,unknownKeys:"strict",..._!==void 0?{errorMap:($,D)=>{let I=this._def.errorMap?.($,D).message??D.defaultError;if($.code==="unrecognized_keys")return{message:d.errToObj(_).message??I};return{message:I}}}:{}})}strip(){return new H_({...this._def,unknownKeys:"strip"})}passthrough(){return new H_({...this._def,unknownKeys:"passthrough"})}extend(_){return new H_({...this._def,shape:()=>({...this._def.shape(),..._})})}merge(_){return new H_({unknownKeys:_._def.unknownKeys,catchall:_._def.catchall,shape:()=>({...this._def.shape(),..._._def.shape()}),typeName:t.ZodObject})}setKey(_,$){return this.augment({[_]:$})}catchall(_){return new H_({...this._def,catchall:_})}pick(_){let $={};for(let D of N_.objectKeys(_))if(_[D]&&this.shape[D])$[D]=this.shape[D];return new H_({...this._def,shape:()=>$})}omit(_){let $={};for(let D of N_.objectKeys(this.shape))if(!_[D])$[D]=this.shape[D];return new H_({...this._def,shape:()=>$})}deepPartial(){return OD(this)}partial(_){let $={};for(let D of N_.objectKeys(this.shape)){let I=this.shape[D];if(_&&!_[D])$[D]=I;else $[D]=I.optional()}return new H_({...this._def,shape:()=>$})}required(_){let $={};for(let D of N_.objectKeys(this.shape))if(_&&!_[D])$[D]=this.shape[D];else{let U=this.shape[D];while(U instanceof v$)U=U._def.innerType;$[D]=U}return new H_({...this._def,shape:()=>$})}keyof(){return d9(N_.objectKeys(this.shape))}}H_.create=(_,$)=>{return new H_({shape:()=>_,unknownKeys:"strip",catchall:o$.create(),typeName:t.ZodObject,...s($)})};H_.strictCreate=(_,$)=>{return new H_({shape:()=>_,unknownKeys:"strict",catchall:o$.create(),typeName:t.ZodObject,...s($)})};H_.lazycreate=(_,$)=>{return new H_({shape:_,unknownKeys:"strip",catchall:o$.create(),typeName:t.ZodObject,...s($)})};class RD extends $_{_parse(_){let{ctx:$}=this._processInputParams(_),D=this._def.options;function I(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 E=U.map((j)=>new L$(j.ctx.common.issues));return u($,{code:C.invalid_union,unionErrors:E}),i}if($.common.async)return Promise.all(D.map(async(U)=>{let E={...$,common:{...$.common,issues:[]},parent:null};return{result:await U._parseAsync({data:$.data,path:$.path,parent:E}),ctx:E}})).then(I);else{let U=void 0,E=[];for(let N of D){let A={...$,common:{...$.common,issues:[]},parent:null},O=N._parseSync({data:$.data,path:$.path,parent:A});if(O.status==="valid")return O;else if(O.status==="dirty"&&!U)U={result:O,ctx:A};if(A.common.issues.length)E.push(A.common.issues)}if(U)return $.common.issues.push(...U.ctx.common.issues),U.result;let j=E.map((N)=>new L$(N));return u($,{code:C.invalid_union,unionErrors:j}),i}}get options(){return this._def.options}}RD.create=(_,$)=>{return new RD({options:_,typeName:t.ZodUnion,...s($)})};var Y6=(_)=>{if(_ instanceof QD)return Y6(_.schema);else if(_ instanceof Q$)return Y6(_.innerType());else if(_ instanceof KD)return[_.value];else if(_ instanceof s6)return _.options;else if(_ instanceof TD)return N_.objectValues(_.enum);else if(_ instanceof FD)return Y6(_._def.innerType);else if(_ instanceof XD)return[void 0];else if(_ instanceof GD)return[null];else if(_ instanceof v$)return[void 0,...Y6(_.unwrap())];else if(_ instanceof K6)return[null,...Y6(_.unwrap())];else if(_ instanceof TN)return Y6(_.unwrap());else if(_ instanceof BD)return Y6(_.unwrap());else if(_ instanceof VD)return Y6(_._def.innerType);else return[]};class KN extends $_{_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==h.object)return u($,{code:C.invalid_type,expected:h.object,received:$.parsedType}),i;let D=this.discriminator,I=$.data[D],U=this.optionsMap.get(I);if(!U)return u($,{code:C.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[D]}),i;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 I=new Map;for(let U of $){let E=Y6(U.shape[_]);if(!E.length)throw Error(`A discriminator value for key \`${_}\` could not be extracted from all schema options`);for(let j of E){if(I.has(j))throw Error(`Discriminator property ${String(_)} has duplicate value ${String(j)}`);I.set(j,U)}}return new KN({typeName:t.ZodDiscriminatedUnion,discriminator:_,options:$,optionsMap:I,...s(D)})}}function _P(_,$){let D=Q6(_),I=Q6($);if(_===$)return{valid:!0,data:_};else if(D===h.object&&I===h.object){let U=N_.objectKeys($),E=N_.objectKeys(_).filter((N)=>U.indexOf(N)!==-1),j={..._,...$};for(let N of E){let A=_P(_[N],$[N]);if(!A.valid)return{valid:!1};j[N]=A.data}return{valid:!0,data:j}}else if(D===h.array&&I===h.array){if(_.length!==$.length)return{valid:!1};let U=[];for(let E=0;E<_.length;E++){let j=_[E],N=$[E],A=_P(j,N);if(!A.valid)return{valid:!1};U.push(A.data)}return{valid:!0,data:U}}else if(D===h.date&&I===h.date&&+_===+$)return{valid:!0,data:_};else return{valid:!1}}class YD extends $_{_parse(_){let{status:$,ctx:D}=this._processInputParams(_),I=(U,E)=>{if(aW(U)||aW(E))return i;let j=_P(U.value,E.value);if(!j.valid)return u(D,{code:C.invalid_intersection_types}),i;if(sW(U)||sW(E))$.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,E])=>I(U,E));else return I(this._def.left._parseSync({data:D.data,path:D.path,parent:D}),this._def.right._parseSync({data:D.data,path:D.path,parent:D}))}}YD.create=(_,$,D)=>{return new YD({left:_,right:$,typeName:t.ZodIntersection,...s(D)})};class p$ extends $_{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==h.array)return u(D,{code:C.invalid_type,expected:h.array,received:D.parsedType}),i;if(D.data.length<this._def.items.length)return u(D,{code:C.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),i;if(!this._def.rest&&D.data.length>this._def.items.length)u(D,{code:C.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),$.dirty();let U=[...D.data].map((E,j)=>{let N=this._def.items[j]||this._def.rest;if(!N)return null;return N._parse(new w$(D,E,D.path,j))}).filter((E)=>!!E);if(D.common.async)return Promise.all(U).then((E)=>{return l_.mergeArray($,E)});else return l_.mergeArray($,U)}get items(){return this._def.items}rest(_){return new p$({...this._def,rest:_})}}p$.create=(_,$)=>{if(!Array.isArray(_))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new p$({items:_,typeName:t.ZodTuple,rest:null,...s($)})};class F1 extends $_{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==h.object)return u(D,{code:C.invalid_type,expected:h.object,received:D.parsedType}),i;let I=[],U=this._def.keyType,E=this._def.valueType;for(let j in D.data)I.push({key:U._parse(new w$(D,j,D.path,j)),value:E._parse(new w$(D,D.data[j],D.path,j)),alwaysSet:j in D.data});if(D.common.async)return l_.mergeObjectAsync($,I);else return l_.mergeObjectSync($,I)}get element(){return this._def.valueType}static create(_,$,D){if($ instanceof $_)return new F1({keyType:_,valueType:$,typeName:t.ZodRecord,...s(D)});return new F1({keyType:q$.create(),valueType:_,typeName:t.ZodRecord,...s($)})}}class V1 extends $_{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==h.map)return u(D,{code:C.invalid_type,expected:h.map,received:D.parsedType}),i;let I=this._def.keyType,U=this._def.valueType,E=[...D.data.entries()].map(([j,N],A)=>{return{key:I._parse(new w$(D,j,D.path,[A,"key"])),value:U._parse(new w$(D,N,D.path,[A,"value"]))}});if(D.common.async){let j=new Map;return Promise.resolve().then(async()=>{for(let N of E){let A=await N.key,O=await N.value;if(A.status==="aborted"||O.status==="aborted")return i;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}})}else{let j=new Map;for(let N of E){let{key:A,value:O}=N;if(A.status==="aborted"||O.status==="aborted")return i;if(A.status==="dirty"||O.status==="dirty")$.dirty();j.set(A.value,O.value)}return{status:$.value,value:j}}}}V1.create=(_,$,D)=>{return new V1({valueType:$,keyType:_,typeName:t.ZodMap,...s(D)})};class e4 extends $_{_parse(_){let{status:$,ctx:D}=this._processInputParams(_);if(D.parsedType!==h.set)return u(D,{code:C.invalid_type,expected:h.set,received:D.parsedType}),i;let I=this._def;if(I.minSize!==null){if(D.data.size<I.minSize.value)u(D,{code:C.too_small,minimum:I.minSize.value,type:"set",inclusive:!0,exact:!1,message:I.minSize.message}),$.dirty()}if(I.maxSize!==null){if(D.data.size>I.maxSize.value)u(D,{code:C.too_big,maximum:I.maxSize.value,type:"set",inclusive:!0,exact:!1,message:I.maxSize.message}),$.dirty()}let U=this._def.valueType;function E(N){let A=new Set;for(let O of N){if(O.status==="aborted")return i;if(O.status==="dirty")$.dirty();A.add(O.value)}return{status:$.value,value:A}}let j=[...D.data.values()].map((N,A)=>U._parse(new w$(D,N,D.path,A)));if(D.common.async)return Promise.all(j).then((N)=>E(N));else return E(j)}min(_,$){return new e4({...this._def,minSize:{value:_,message:d.toString($)}})}max(_,$){return new e4({...this._def,maxSize:{value:_,message:d.toString($)}})}size(_,$){return this.min(_,$).max(_,$)}nonempty(_){return this.min(1,_)}}e4.create=(_,$)=>{return new e4({valueType:_,minSize:null,maxSize:null,typeName:t.ZodSet,...s($)})};class JD extends $_{constructor(){super(...arguments);this.validate=this.implement}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==h.function)return u($,{code:C.invalid_type,expected:h.function,received:$.parsedType}),i;function D(j,N){return RN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,GN(),PD].filter((A)=>!!A),issueData:{code:C.invalid_arguments,argumentsError:N}})}function I(j,N){return RN({data:j,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,GN(),PD].filter((A)=>!!A),issueData:{code:C.invalid_return_type,returnTypeError:N}})}let U={errorMap:$.common.contextualErrorMap},E=$.data;if(this._def.returns instanceof a4){let j=this;return s_(async function(...N){let A=new L$([]),O=await j._def.args.parseAsync(N,U).catch((P)=>{throw A.addIssue(D(N,P)),A}),S=await Reflect.apply(E,this,O);return await j._def.returns._def.type.parseAsync(S,U).catch((P)=>{throw A.addIssue(I(S,P)),A})})}else{let j=this;return s_(function(...N){let A=j._def.args.safeParse(N,U);if(!A.success)throw new L$([D(N,A.error)]);let O=Reflect.apply(E,this,A.data),S=j._def.returns.safeParse(O,U);if(!S.success)throw new L$([I(O,S.error)]);return S.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(..._){return new JD({...this._def,args:p$.create(_).rest(p6.create())})}returns(_){return new JD({...this._def,returns:_})}implement(_){return this.parse(_)}strictImplement(_){return this.parse(_)}static create(_,$,D){return new JD({args:_?_:p$.create([]).rest(p6.create()),returns:$||p6.create(),typeName:t.ZodFunction,...s(D)})}}class QD extends $_{get schema(){return this._def.getter()}_parse(_){let{ctx:$}=this._processInputParams(_);return this._def.getter()._parse({data:$.data,path:$.path,parent:$})}}QD.create=(_,$)=>{return new QD({getter:_,typeName:t.ZodLazy,...s($)})};class KD extends $_{_parse(_){if(_.data!==this._def.value){let $=this._getOrReturnCtx(_);return u($,{received:$.data,code:C.invalid_literal,expected:this._def.value}),i}return{status:"valid",value:_.data}}get value(){return this._def.value}}KD.create=(_,$)=>{return new KD({value:_,typeName:t.ZodLiteral,...s($)})};function d9(_,$){return new s6({values:_,typeName:t.ZodEnum,...s($)})}class s6 extends $_{_parse(_){if(typeof _.data!=="string"){let $=this._getOrReturnCtx(_),D=this._def.values;return u($,{expected:N_.joinValues(D),received:$.parsedType,code:C.invalid_type}),i}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:C.invalid_enum_value,options:D}),i}return s_(_.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 s6.create(_,{...this._def,...$})}exclude(_,$=this._def){return s6.create(this.options.filter((D)=>!_.includes(D)),{...this._def,...$})}}s6.create=d9;class TD extends $_{_parse(_){let $=N_.getValidEnumValues(this._def.values),D=this._getOrReturnCtx(_);if(D.parsedType!==h.string&&D.parsedType!==h.number){let I=N_.objectValues($);return u(D,{expected:N_.joinValues(I),received:D.parsedType,code:C.invalid_type}),i}if(!this._cache)this._cache=new Set(N_.getValidEnumValues(this._def.values));if(!this._cache.has(_.data)){let I=N_.objectValues($);return u(D,{received:D.data,code:C.invalid_enum_value,options:I}),i}return s_(_.data)}get enum(){return this._def.values}}TD.create=(_,$)=>{return new TD({values:_,typeName:t.ZodNativeEnum,...s($)})};class a4 extends $_{unwrap(){return this._def.type}_parse(_){let{ctx:$}=this._processInputParams(_);if($.parsedType!==h.promise&&$.common.async===!1)return u($,{code:C.invalid_type,expected:h.promise,received:$.parsedType}),i;let D=$.parsedType===h.promise?$.data:Promise.resolve($.data);return s_(D.then((I)=>{return this._def.type.parseAsync(I,{path:$.path,errorMap:$.common.contextualErrorMap})}))}}a4.create=(_,$)=>{return new a4({type:_,typeName:t.ZodPromise,...s($)})};class Q$ extends $_{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===t.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(_){let{status:$,ctx:D}=this._processInputParams(_),I=this._def.effect||null,U={addIssue:(E)=>{if(u(D,E),E.fatal)$.abort();else $.dirty()},get path(){return D.path}};if(U.addIssue=U.addIssue.bind(U),I.type==="preprocess"){let E=I.transform(D.data,U);if(D.common.async)return Promise.resolve(E).then(async(j)=>{if($.value==="aborted")return i;let N=await this._def.schema._parseAsync({data:j,path:D.path,parent:D});if(N.status==="aborted")return i;if(N.status==="dirty")return LD(N.value);if($.value==="dirty")return LD(N.value);return N});else{if($.value==="aborted")return i;let j=this._def.schema._parseSync({data:E,path:D.path,parent:D});if(j.status==="aborted")return i;if(j.status==="dirty")return LD(j.value);if($.value==="dirty")return LD(j.value);return j}}if(I.type==="refinement"){let E=(j)=>{let N=I.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 i;if(j.status==="dirty")$.dirty();return E(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 i;if(j.status==="dirty")$.dirty();return E(j.value).then(()=>{return{status:$.value,value:j.value}})})}if(I.type==="transform")if(D.common.async===!1){let E=this._def.schema._parseSync({data:D.data,path:D.path,parent:D});if(!t4(E))return i;let j=I.transform(E.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((E)=>{if(!t4(E))return i;return Promise.resolve(I.transform(E.value,U)).then((j)=>({status:$.value,value:j}))});N_.assertNever(I)}}Q$.create=(_,$,D)=>{return new Q$({schema:_,typeName:t.ZodEffects,effect:$,...s(D)})};Q$.createWithPreprocess=(_,$,D)=>{return new Q$({schema:$,effect:{type:"preprocess",transform:_},typeName:t.ZodEffects,...s(D)})};class v$ extends $_{_parse(_){if(this._getType(_)===h.undefined)return s_(void 0);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}v$.create=(_,$)=>{return new v$({innerType:_,typeName:t.ZodOptional,...s($)})};class K6 extends $_{_parse(_){if(this._getType(_)===h.null)return s_(null);return this._def.innerType._parse(_)}unwrap(){return this._def.innerType}}K6.create=(_,$)=>{return new K6({innerType:_,typeName:t.ZodNullable,...s($)})};class FD extends $_{_parse(_){let{ctx:$}=this._processInputParams(_),D=$.data;if($.parsedType===h.undefined)D=this._def.defaultValue();return this._def.innerType._parse({data:D,path:$.path,parent:$})}removeDefault(){return this._def.innerType}}FD.create=(_,$)=>{return new FD({innerType:_,typeName:t.ZodDefault,defaultValue:typeof $.default==="function"?$.default:()=>$.default,...s($)})};class VD extends $_{_parse(_){let{ctx:$}=this._processInputParams(_),D={...$,common:{...$.common,issues:[]}},I=this._def.innerType._parse({data:D.data,path:D.path,parent:{...D}});if(Q1(I))return I.then((U)=>{return{status:"valid",value:U.status==="valid"?U.value:this._def.catchValue({get error(){return new L$(D.common.issues)},input:D.data})}});else return{status:"valid",value:I.status==="valid"?I.value:this._def.catchValue({get error(){return new L$(D.common.issues)},input:D.data})}}removeCatch(){return this._def.innerType}}VD.create=(_,$)=>{return new VD({innerType:_,typeName:t.ZodCatch,catchValue:typeof $.catch==="function"?$.catch:()=>$.catch,...s($)})};class B1 extends $_{_parse(_){if(this._getType(_)!==h.nan){let D=this._getOrReturnCtx(_);return u(D,{code:C.invalid_type,expected:h.nan,received:D.parsedType}),i}return{status:"valid",value:_.data}}}B1.create=(_)=>{return new B1({typeName:t.ZodNaN,...s(_)})};var fk=Symbol("zod_brand");class TN extends $_{_parse(_){let{ctx:$}=this._processInputParams(_),D=$.data;return this._def.type._parse({data:D,path:$.path,parent:$})}unwrap(){return this._def.type}}class M1 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 i;if(U.status==="dirty")return $.dirty(),LD(U.value);else return this._def.out._parseAsync({data:U.value,path:D.path,parent:D})})();else{let I=this._def.in._parseSync({data:D.data,path:D.path,parent:D});if(I.status==="aborted")return i;if(I.status==="dirty")return $.dirty(),{status:"dirty",value:I.value};else return this._def.out._parseSync({data:I.value,path:D.path,parent:D})}}static create(_,$){return new M1({in:_,out:$,typeName:t.ZodPipeline})}}class BD extends $_{_parse(_){let $=this._def.innerType._parse(_),D=(I)=>{if(t4(I))I.value=Object.freeze(I.value);return I};return Q1($)?$.then((I)=>D(I)):D($)}unwrap(){return this._def.innerType}}BD.create=(_,$)=>{return new BD({innerType:_,typeName:t.ZodReadonly,...s($)})};function k9(_,$){let D=typeof _==="function"?_($):typeof _==="string"?{message:_}:_;return typeof D==="string"?{message:D}:D}function m9(_,$={},D){if(_)return p4.create().superRefine((I,U)=>{let E=_(I);if(E instanceof Promise)return E.then((j)=>{if(!j){let N=k9($,I),A=N.fatal??D??!0;U.addIssue({code:"custom",...N,fatal:A})}});if(!E){let j=k9($,I),N=j.fatal??D??!0;U.addIssue({code:"custom",...j,fatal:N})}return});return p4.create()}var xk={object:H_.lazycreate},t;(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"})(t||(t={}));var uk=(_,$={message:`Input not instance of ${_.name}`})=>m9((D)=>D instanceof _,$),l9=q$.create,i9=e6.create,yk=B1.create,hk=a6.create,t9=zD.create,ck=o4.create,nk=K1.create,dk=XD.create,mk=GD.create,lk=p4.create,ik=p6.create,tk=o$.create,ok=T1.create,pk=C$.create,ek=H_.create,ak=H_.strictCreate,sk=RD.create,_q=KN.create,$q=YD.create,Dq=p$.create,Uq=F1.create,Iq=V1.create,Eq=e4.create,jq=JD.create,Nq=QD.create,gq=KD.create,Aq=s6.create,Oq=TD.create,Sq=a4.create,q9=Q$.create,Lq=v$.create,Jq=K6.create,Wq=Q$.createWithPreprocess,Pq=M1.create,zq=()=>l9().optional(),Xq=()=>i9().optional(),Gq=()=>t9().optional(),Rq={string:(_)=>q$.create({..._,coerce:!0}),number:(_)=>e6.create({..._,coerce:!0}),boolean:(_)=>zD.create({..._,coerce:!0}),bigint:(_)=>a6.create({..._,coerce:!0}),date:(_)=>o4.create({..._,coerce:!0})},Yq=i;var y={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"},DP=g.string().regex(/^hasna\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*\.v[0-9]+$/),B_=g.string().datetime(),p=g.string().trim().min(1),r$=p.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://"),o9=g.string().regex(/^[a-fA-F0-9]{64}$/),p9=g.string().regex(/^(sha256:)?[a-fA-F0-9]{64}$/),_4=g.record(g.unknown()),ZD=g.array(g.string().min(1)).default([]),s4=B_.nullable().optional(),Qq=new Set(["succeeded","failed","cancelled","blocked","skipped"]),D0=g.enum(["pending","running","succeeded","failed","cancelled","blocked","skipped","unknown"]);function J_(_){return g.object({schema:g.literal(_),id:g.string().min(1),createdAt:B_,updatedAt:s4,metadata:_4.optional()}).strict()}var Sm=g.object({schema:DP,id:g.string().min(1),createdAt:B_,updatedAt:s4,metadata:_4.optional()}).strict(),e9=g.enum(["agent","human","service","model","workflow","system"]),Kq=J_(y.actorRef).extend({kind:e9,name:g.string().min(1).optional(),provider:g.string().min(1).optional(),accountId:g.string().min(1).optional(),machineId:g.string().min(1).optional(),capabilities:g.array(g.string().min(1)).default([])}).strict(),e$=g.object({kind:e9,id:g.string().min(1),name:g.string().min(1).optional(),provider:g.string().min(1).optional(),accountId:g.string().min(1).optional(),machineId:g.string().min(1).optional()}).strict(),a9=g.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"]),Tq=J_(y.resourceRef).extend({kind:a9,name:g.string().min(1).optional(),uri:r$.optional(),externalId:p.optional(),sourcePackage:p.optional(),tags:ZD}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.externalId&&_.sourcePackage))$.addIssue({code:g.ZodIssueCode.custom,message:"Resource refs require uri or both sourcePackage and externalId",path:["uri"]})}),__=g.object({kind:a9,id:g.string().min(1),name:g.string().min(1).optional(),uri:r$.optional(),externalId:p.optional(),sourcePackage:p.optional(),tags:ZD}).strict().superRefine((_,$)=>{if(!_.uri&&Boolean(_.externalId)!==Boolean(_.sourcePackage))$.addIssue({code:g.ZodIssueCode.custom,message:"Resource pointers with external package locators require both sourcePackage and externalId",path:_.externalId?["sourcePackage"]:["externalId"]})}),UP=g.enum(["file","command_output","screenshot","log","diff","report","artifact","url","video","har","test_result","metric","trace","other"]),Fq=g.enum(["none","partial","full","unknown"]),Vq=J_(y.evidenceRef).extend({kind:UP,uri:r$,sha256:o9.optional(),summary:g.string().min(1).optional(),contentType:g.string().min(1).optional(),sizeBytes:g.number().int().nonnegative().optional(),redaction:Fq.default("unknown"),producer:e$.optional(),resourceRefs:g.array(__).default([]),tags:ZD}).strict(),T_=g.object({id:g.string().min(1),kind:UP.optional(),uri:r$.optional(),sha256:o9.optional(),summary:g.string().min(1).optional()}).strict(),b1=J_(y.costEstimate).extend({currency:g.string().regex(/^[A-Z]{3}$/).default("USD"),amountMicros:g.number().int().nonnegative(),provider:g.string().min(1).optional(),model:g.string().min(1).optional(),accountId:g.string().min(1).optional(),promptTokens:g.number().int().nonnegative().optional(),completionTokens:g.number().int().nonnegative().optional(),totalTokens:g.number().int().nonnegative().optional(),basis:g.enum(["actual","estimated","budget","limit"]).default("estimated"),resourceRefs:g.array(__).default([])}).strict().superRefine((_,$)=>{if(_.promptTokens!==void 0&&_.completionTokens!==void 0&&_.totalTokens!==void 0&&_.totalTokens!==_.promptTokens+_.completionTokens)$.addIssue({code:g.ZodIssueCode.custom,message:"totalTokens must equal promptTokens plus completionTokens when all are present",path:["totalTokens"]})}),Bq=g.enum(["allowed","denied","warned","approval_required","selected","skipped","unknown"]),s9=J_(y.decisionEnvelope).extend({decisionType:g.enum(["guardrail","model_route","tool_select","budget","secret_access","approval","policy","other"]),status:Bq,actor:e$.optional(),traceId:g.string().min(1).optional(),inputHash:p9.optional(),policyBundleId:g.string().min(1).optional(),selected:g.array(__).default([]),skipped:g.array(__).default([]),reason:g.string().min(1),obligations:g.array(g.string().min(1)).default([]),redactions:g.array(g.string().min(1)).default([]),costEstimate:b1.optional(),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.status==="selected"&&_.selected.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Selected decisions require at least one selected resource",path:["selected"]});if(_.status==="skipped"&&_.skipped.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Skipped decisions require at least one skipped resource",path:["skipped"]});if(_.status==="denied"){if(_.selected.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Denied decisions cannot include selected resources",path:["selected"]});if(!_.policyBundleId&&_.evidenceRefs.length===0&&_.obligations.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Denied decisions require policy, evidence, or obligations",path:["policyBundleId"]})}if(_.status==="approval_required"&&_.obligations.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Approval-required decisions require actionable obligations",path:["obligations"]})}),Mq=J_(y.capabilityCard).extend({kind:g.enum(["model","tool","machine","agent","lane","connector","service"]),name:g.string().min(1),version:g.string().min(1).optional(),status:g.enum(["available","unavailable","degraded","unknown"]).default("unknown"),capabilities:g.array(g.string().min(1)).default([]),limitations:g.array(g.string().min(1)).default([]),riskLevel:g.enum(["low","medium","high","critical","unknown"]).default("unknown"),costEstimate:b1.optional(),evidenceRefs:g.array(T_).default([])}).strict(),MD=g.enum(["mock","fixture","sandbox","read_only_live","live_mutating"]),bq=g.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"]),Zq=g.object({refName:p,requiredForModes:g.array(MD).min(1),allowedSecretInputs:g.array(g.enum(["credential_ref","lease_ref"])).min(1).default(["credential_ref"]),failClosedDiagnostic:p,revocationCheck:g.boolean().default(!0)}).strict(),Hq=g.object({operation:p,supportedModes:g.array(MD).min(1),sideEffectClass:bq,requiresApproval:g.boolean().default(!1),requiresIdempotencyKey:g.boolean().default(!1),requiresSandboxEvidence:g.boolean().default(!1),requiresRollbackOrRevocation:g.boolean().default(!1),rollbackOrRevocation:p.optional(),noSideEffectSmoke:p.optional(),reconciliation:p.optional()}).strict().superRefine((_,$)=>{if(_.supportedModes.includes("live_mutating")){if(_.sideEffectClass==="none"||_.sideEffectClass==="read_only")$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations must declare a side-effecting class",path:["sideEffectClass"]});if(!_.requiresApproval)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require approval",path:["requiresApproval"]});if(!_.requiresIdempotencyKey)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require idempotency keys",path:["requiresIdempotencyKey"]});if(!_.requiresSandboxEvidence)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require sandbox evidence before live proof",path:["requiresSandboxEvidence"]});if(!_.requiresRollbackOrRevocation||!_.rollbackOrRevocation)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require rollback or revocation instructions",path:["rollbackOrRevocation"]});if(!_.reconciliation)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating operations require reconciliation behavior",path:["reconciliation"]})}}),kq=g.object({providerId:p,appId:p,adapterId:p,ownerPackage:p,modes:g.array(MD).min(1),defaultMode:MD,credentialRequirements:g.array(Zq).default([]),operations:g.array(Hq).min(1),rateLimitPosture:p,costPosture:p.optional(),auditEvents:g.array(p).default([]),redactionRules:g.array(p).default([]),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{if(!_.modes.includes(_.defaultMode))$.addIssue({code:g.ZodIssueCode.custom,message:"defaultMode must be one of modes",path:["defaultMode"]});let D=new Set(_.operations.flatMap((I)=>I.supportedModes));for(let I of D)if(!_.modes.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`operation mode ${I} is not declared in provider modes`,path:["operations"]});if(D.has("live_mutating")){if(!_.credentialRequirements.some((U)=>U.requiredForModes.includes("live_mutating")))$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating providers require at least one live credential reference requirement",path:["credentialRequirements"]});if(_.auditEvents.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"live_mutating providers require audit events",path:["auditEvents"]})}}),qq=g.object({appId:p,repo:p,priority:g.enum(["p0","p1","p2"]).default("p1"),requiredEvidence:g.array(p).min(1),firstOperations:g.array(p).min(1),blockedUntil:g.array(p).default([])}).strict(),Cq=J_(y.providerLiveModeStandard).extend({name:p,version:p,modes:g.array(MD).refine((_)=>["mock","fixture","sandbox","read_only_live","live_mutating"].every(($)=>_.includes($)),"provider live-mode standard must include every canonical provider mode"),requiredCapabilityFields:g.array(p).min(1),liveMutationGate:g.object({requiredMode:g.literal("live_mutating"),requiredChecks:g.array(p).min(1),forbiddenBypassSignals:g.array(p).min(1),disabledLiveSmoke:p}).strict(),noSideEffectSmoke:g.object({requiredForModes:g.array(MD).min(1),commandEvidence:g.array(p).min(1),secretOutputScan:g.boolean().default(!0)}).strict(),credentialPolicy:g.object({acceptedInputs:g.array(g.enum(["credential_ref","lease_ref"])).min(1),rawSecretInputsAllowed:g.literal(!1),missingCredentialBehavior:g.literal("fail_closed"),revocationCheckRequired:g.boolean().default(!0)}).strict(),operationCards:g.array(kq).min(1),firstAdoptionTargets:g.array(qq).min(1),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{let D=new Set(_.firstAdoptionTargets.map((U)=>U.appId)),I=new Set(_.operationCards.map((U)=>U.appId));for(let U of D)if(!I.has(U))$.addIssue({code:g.ZodIssueCode.custom,message:`first adoption target ${U} requires a provider capability card`,path:["firstAdoptionTargets"]})}),vq=g.object({id:g.string().min(1),title:g.string().min(1).optional(),summary:g.string().min(1),text:g.string().optional(),tokens:g.number().int().nonnegative().optional(),source:T_,resourceRefs:g.array(__).default([])}).strict(),_8=J_(y.contextPack).extend({objective:g.string().min(1),budget:g.object({maxTokens:g.number().int().positive().optional(),maxBytes:g.number().int().positive().optional()}).strict().optional(),items:g.array(vq).default([]),citations:g.array(T_).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),permissions:g.array(g.string().min(1)).default([]),redactions:g.array(g.string().min(1)).default([]),conflicts:g.array(g.string().min(1)).default([]),uncertainty:g.string().min(1).optional()}).strict(),R$=p.refine((_)=>!_.startsWith("/")&&!_.includes("\\")&&!_.split("/").includes(".."),"Project paths must be relative and cannot contain parent-directory segments"),_0=g.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"Project slugs must be lowercase dashed identifiers"),wq=g.enum(["public","internal","private","sensitive"]),rq=g.enum(["draft","active","paused","archived"]),IP=g.enum(["todos","files","mailery","conversations","knowledge","mementos","reports","actions","render","contracts","custom"]),$8=J_(y.integrationRef).extend({kind:IP,name:g.string().min(1),projectId:_0.optional(),sourcePackage:p.optional(),externalId:p.optional(),uri:r$.optional(),enabled:g.boolean().default(!0),readOnly:g.boolean().default(!0),capabilities:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),resourceRef:__.optional(),evidenceRefs:g.array(T_).default([]),config:_4.optional()}).strict().superRefine((_,$)=>{if(!_.uri&&!(_.sourcePackage&&_.externalId)&&!_.resourceRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Integration refs require uri, resourceRef, or both sourcePackage and externalId",path:["uri"]})}),fq=g.object({schemaRoot:R$.default(".hasna/project"),dashboardManifest:R$.default(".hasna/project/dashboard.render.json"),snapshotsDir:R$.default(".hasna/project/snapshots"),documentsDir:R$.default("documents"),reportsDir:R$.default("reports"),evidenceDir:R$.default(".hasna/project/evidence"),privateDir:R$.default(".hasna/project/private")}).strict(),xq=J_(y.projectManifest).extend({projectId:_0,slug:_0,name:g.string().min(1),summary:g.string().min(1).optional(),status:rq.default("active"),classification:wq.default("private"),owner:e$.optional(),layout:fq.default({}),integrations:g.array($8).default([]),renderManifests:g.array(__).default([]),resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([]),tags:ZD}).strict().superRefine((_,$)=>{let D=new Set,I=new Set;if(_.projectId!==_.slug)$.addIssue({code:g.ZodIssueCode.custom,message:"projectId and slug must match for canonical project manifests",path:["slug"]});for(let[U,E]of _.integrations.entries()){if(D.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project manifest integration ids must be unique",path:["integrations",U,"id"]});if(D.add(E.id),E.projectId&&E.projectId!==_.projectId)$.addIssue({code:g.ZodIssueCode.custom,message:"Integration projectId must match the manifest projectId",path:["integrations",U,"projectId"]})}for(let[U,E]of _.renderManifests.entries()){if(E.kind!=="render")$.addIssue({code:g.ZodIssueCode.custom,message:"Project renderManifests must use resource kind render",path:["renderManifests",U,"kind"]});if(I.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project renderManifest refs must be unique",path:["renderManifests",U,"id"]});I.add(E.id)}}),uq=g.enum(["local","package","provider","url"]),EP=g.object({id:g.string().min(1),kind:uq,specifier:g.string().min(1),path:R$.optional(),packageName:g.string().min(1).optional(),uri:r$.optional(),provider:IP.optional(),schemaId:DP.optional(),integrity:p9.optional(),resourceRef:__.optional(),optional:g.boolean().default(!1)}).strict().superRefine((_,$)=>{if(_.kind==="local"&&!_.path)$.addIssue({code:g.ZodIssueCode.custom,message:"Local render imports require path",path:["path"]});if(_.kind==="package"&&!_.packageName)$.addIssue({code:g.ZodIssueCode.custom,message:"Package render imports require packageName",path:["packageName"]});if(_.kind==="provider"&&!_.provider)$.addIssue({code:g.ZodIssueCode.custom,message:"Provider render imports require provider",path:["provider"]});if(_.kind==="url"&&!_.uri)$.addIssue({code:g.ZodIssueCode.custom,message:"URL render imports require uri",path:["uri"]})}),yq=g.enum(["dashboard","canvas","panel","report","document","custom"]),hq=g.object({id:g.string().min(1),title:g.string().min(1),kind:yq,default:g.boolean().default(!1),entry:R$.optional(),imports:g.array(EP).default([]),panelRefs:g.array(__).default([]),dataRefs:g.array(__).default([]),layout:_4.optional()}).strict(),cq=J_(y.renderManifest).extend({projectId:_0,name:g.string().min(1),version:g.string().min(1),manifestPath:R$.default(".hasna/project/dashboard.render.json"),renderer:g.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),views:g.array(hq).min(1),imports:g.array(EP).default([]),theme:_4.optional(),compatibility:g.object({minProjectsVersion:g.string().min(1).optional(),minContractsVersion:g.string().min(1).optional()}).strict().optional(),resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{let D=_.views.filter((E)=>E.default),I=new Set,U=new Set;if(D.length>1)$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifests can have at most one default view",path:["views"]});for(let[E,j]of _.imports.entries()){if(U.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifest import ids must be unique",path:["imports",E,"id"]});U.add(j.id)}for(let[E,j]of _.views.entries()){if(I.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render manifest view ids must be unique",path:["views",E,"id"]});I.add(j.id);let N=new Set;for(let[A,O]of j.imports.entries()){if(N.has(O.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Render view import ids must be unique",path:["views",E,"imports",A,"id"]});N.add(O.id)}for(let[A,O]of j.panelRefs.entries())if(O.kind!=="panel")$.addIssue({code:g.ZodIssueCode.custom,message:"Render view panelRefs must use resource kind panel",path:["views",E,"panelRefs",A,"kind"]})}}),nq=g.enum(["ready","empty","loading","error","auth_required","unavailable","stale"]),dq=g.enum(["overview","tasks","files","mailery","conversations","knowledge","mementos","reports","actions","timeline","risks","documents","custom"]),mq=g.object({id:g.string().min(1),label:g.string().min(1),value:g.union([g.string(),g.number(),g.boolean()]),unit:g.string().min(1).optional(),status:g.enum(["good","warning","critical","unknown"]).default("unknown"),resourceRefs:g.array(__).default([])}).strict(),lq=g.object({id:g.string().min(1),title:g.string().min(1),summary:g.string().min(1).optional(),status:g.string().min(1).optional(),priority:g.enum(["low","medium","high","critical","unknown"]).default("unknown"),timestamp:B_.optional(),resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([]),metadata:_4.optional()}).strict(),iq=g.object({renderer:g.enum(["json_render","react_flow","markdown","html","custom"]).default("json_render"),title:g.string().min(1).optional(),entry:R$.optional(),imports:g.array(EP).default([]),spec:_4.default({})}).strict(),D8=J_(y.projectPanel).extend({projectId:_0,provider:g.object({kind:IP,id:g.string().min(1),name:g.string().min(1).optional(),sourcePackage:p.optional(),externalId:p.optional()}).strict(),kind:dq,title:g.string().min(1),summary:g.string().min(1).optional(),state:nq.default("ready"),stateReason:g.string().min(1).optional(),generatedAt:B_,freshness:g.enum(["fresh","stale","unknown"]).default("unknown"),metrics:g.array(mq).default([]),items:g.array(lq).default([]),actions:g.array(__).default([]),resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([]),renderFragment:iq.optional(),warnings:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set(["error","auth_required","unavailable","stale"]),I=new Set,U=new Set;if(D.has(_.state)&&!_.stateReason)$.addIssue({code:g.ZodIssueCode.custom,message:"Non-ready provider states require stateReason",path:["stateReason"]});if(_.state==="ready"&&_.metrics.length===0&&_.items.length===0&&!_.renderFragment)$.addIssue({code:g.ZodIssueCode.custom,message:"Ready panels require metrics, items, or a renderFragment; use state=empty for empty panels",path:["state"]});for(let[E,j]of _.metrics.entries()){if(I.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel metric ids must be unique",path:["metrics",E,"id"]});I.add(j.id)}for(let[E,j]of _.items.entries()){if(U.has(j.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel item ids must be unique",path:["items",E,"id"]});U.add(j.id)}for(let[E,j]of _.actions.entries())if(j.kind!=="action")$.addIssue({code:g.ZodIssueCode.custom,message:"Project panel actions must use resource kind action",path:["actions",E,"kind"]})}),tq=J_(y.projectSnapshot).extend({projectId:_0,generatedAt:B_,status:D0.default("unknown"),manifestRef:__,renderManifestRef:__.optional(),panels:g.array(D8).default([]),contextPacks:g.array(_8).default([]),proofBundleRefs:g.array(__).default([]),resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([]),warnings:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{let D=new Set,I=new Set;if(_.manifestRef.kind!=="project")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot manifestRef must use resource kind project",path:["manifestRef","kind"]});if(_.renderManifestRef&&_.renderManifestRef.kind!=="render")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot renderManifestRef must use resource kind render",path:["renderManifestRef","kind"]});for(let[U,E]of _.proofBundleRefs.entries())if(E.kind!=="proof_bundle")$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot proofBundleRefs must use resource kind proof_bundle",path:["proofBundleRefs",U,"kind"]});for(let[U,E]of _.panels.entries()){if(E.projectId!==_.projectId)$.addIssue({code:g.ZodIssueCode.custom,message:"Panel projectId must match snapshot projectId",path:["panels",U,"projectId"]});if(D.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot panel ids must be unique",path:["panels",U,"id"]});D.add(E.id)}for(let[U,E]of _.contextPacks.entries()){if(I.has(E.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Project snapshot context pack ids must be unique",path:["contextPacks",U,"id"]});I.add(E.id)}}),U8=g.object({id:g.string().min(1),kind:g.enum(["command","test","typecheck","lint","eval","security","review","deploy","smoke","manual","other"]),required:g.boolean().default(!0),command:g.string().min(1).optional(),expected:g.string().min(1).optional(),timeoutMs:g.number().int().positive().optional(),resourceRefs:g.array(__).default([])}).strict().superRefine((_,$)=>{if(new Set(["command","test","typecheck","lint","smoke","eval"]).has(_.kind)&&!_.command&&!_.expected)$.addIssue({code:g.ZodIssueCode.custom,message:"Actionable validation checks require command or expected",path:["command"]})}),oq=J_(y.validationPlan).extend({objective:g.string().min(1),subject:__.optional(),checks:g.array(U8).min(1),verifier:e$.optional(),requiredEvidenceKinds:g.array(UP).default([])}).strict(),pq=g.enum(["open_source","internal_app","platform","app","agent","content","overlay","other"]),eq=g.enum(["draft","active","deprecated","archived"]),aq=g.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"]),sq=g.object({key:g.string().regex(/^[A-Z][A-Z0-9_]*$/),description:g.string().min(1),required:g.boolean().default(!1),["secret"]:g.boolean().default(!1),group:g.string().min(1).optional(),default:g.string().optional()}).strict().superRefine((_,$)=>{if(_.secret&&_.default!==void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"Secret scaffold env vars cannot include defaults",path:["default"]})}),_C=g.object({name:g.string().min(1),command:g.string().min(1),description:g.string().min(1).optional(),required:g.boolean().default(!1)}).strict(),$C=g.object({packageManager:g.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),languages:g.array(g.string().min(1)).default([]),requiredFiles:g.array(g.string().min(1)).default([]),requiredDirectories:g.array(g.string().min(1)).default([]),optionalDirectories:g.array(g.string().min(1)).default([])}).strict(),DC=J_(y.scaffoldManifest).extend({name:g.string().min(1),version:g.string().min(1),summary:g.string().min(1),type:pq,status:eq.default("draft"),capabilities:g.array(aq).default([]),techStack:g.array(g.string().min(1)).default([]),tags:ZD,source:__.optional(),output:$C,env:g.array(sq).default([]),scripts:g.array(_C).default([]),validationChecks:g.array(U8).default([]),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.source?.uri?.startsWith("file://"))$.addIssue({code:g.ZodIssueCode.custom,message:"Public scaffold manifest source refs cannot use local file:// URIs",path:["source","uri"]});if(_.status==="active"&&_.validationChecks.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Active scaffold manifests require validation checks",path:["validationChecks"]});if(_.status==="active"&&_.output.requiredFiles.length===0&&_.output.requiredDirectories.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Active scaffold manifests require at least one required file or directory",path:["output"]})}),UC=g.enum(["installed","failed","cancelled","partial","unknown"]),IC=J_(y.scaffoldInstallRecord).extend({scaffoldId:g.string().min(1),scaffoldVersion:g.string().min(1).optional(),manifestRef:__.optional(),target:__,status:UC,installedAt:B_.optional(),installer:e$.optional(),packageManager:g.enum(["bun","npm","pnpm","yarn","cargo","pip","other"]).optional(),options:_4.optional(),generatedFiles:g.array(__).default([]),evidenceRefs:g.array(T_).default([]),proofBundleRefs:g.array(__).default([])}).strict().superRefine((_,$)=>{if(_.status==="installed"&&!_.installedAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Installed scaffold records require installedAt",path:["installedAt"]});if(_.status==="installed"&&_.generatedFiles.length===0&&_.evidenceRefs.length===0&&_.proofBundleRefs.length===0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed or partial scaffold records require evidence or proof bundle refs",path:["evidenceRefs"]})}),bD=g.string().regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/,"App ids must be lowercase dashed identifiers"),jP=g.string().regex(/^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/,"Must be a valid npm package name"),I8=g.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"),EC=g.string().regex(/^[0-9a-f]{7,40}$/,"Must be a lowercase git sha (7-40 hex chars)"),jC=p.refine((_)=>_.startsWith("https://github.com/")||_.startsWith("git+https://github.com/"),"GitHub URLs must start with https://github.com/ or git+https://github.com/"),NC=g.enum(["active","stub","deprecated","archived"]),gC=g.enum(["stable","beta","canary","internal"]),AC=g.object({transport:g.enum(["http","stdio"]).default("http"),bin:g.string().min(1).optional(),url:r$.optional()}).strict(),OC=g.object({healthPath:g.string().min(1).default("/health"),port:g.number().int().positive().optional(),baseUrl:r$.optional()}).strict(),SC=g.object({bins:g.array(g.string().min(1)).default([]),mcp:AC.optional(),http:OC.optional()}).strict(),LC=J_(y.app).extend({appId:bD,npmName:jP,repoFolder:bD,githubUrl:jC,projectSlug:_0,surfaces:SC.default({}),lifecycle:NC,releaseChannel:gC.default("stable"),summary:g.string().min(1).optional(),tags:ZD}).strict().superRefine((_,$)=>{let D=new Set;for(let[I,U]of _.surfaces.bins.entries()){if(D.has(U))$.addIssue({code:g.ZodIssueCode.custom,message:"App surface bins must be unique",path:["surfaces","bins",I]});D.add(U)}}),JC=g.enum(["skill","ci","backfilled"]),WC=J_(y.release).extend({appId:bD,package:jP,version:I8,gitSha:EC,publishedAt:B_,publishPath:JC,changelogRef:__.optional(),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.publishPath!=="backfilled"&&_.evidenceRefs.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"skill and ci releases require publish evidence; only backfilled releases may omit it",path:["evidenceRefs"]})}),PC=g.enum(["install","update","rollback","freeze-blocked"]),zC=g.object({cliVersion:g.string().min(1).optional(),mcpHealth:g.enum(["ok","degraded","unavailable","not_checked"]).optional()}).strict().superRefine((_,$)=>{if(!_.cliVersion&&_.mcpHealth===void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"Rollout verification requires at least one concrete verifier field"})}),XC=J_(y.rolloutRecord).extend({appId:bD,package:jP,version:I8,machine:p,action:PC,result:D0,verifiedBy:zC.optional(),at:B_,evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.action==="freeze-blocked"&&_.result!=="blocked"&&_.result!=="skipped")$.addIssue({code:g.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",I=_.verifiedBy?Object.keys(_.verifiedBy).length>0:!1;if((_.action==="install"||_.action==="update")&&_.result==="succeeded"&&(!_.verifiedBy||I&&!D))$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded install/update rollout records require concrete verification",path:["verifiedBy"]})}),GC=g.enum(["email","telegram","slack","discord","x","blog","rss","webhook","github","other"]),RC=g.enum(["pending","queued","sent","failed","skipped","suppressed"]),YC=g.object({channel:GC,status:RC,deliveredAt:B_.optional(),detail:g.string().min(1).optional()}).strict().superRefine((_,$)=>{if(_.status==="sent"&&!_.deliveredAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Sent announcement channels require deliveredAt",path:["deliveredAt"]});if(_.status==="failed"&&!_.detail)$.addIssue({code:g.ZodIssueCode.custom,message:"Failed announcement channels require detail",path:["detail"]})}),QC=J_(y.announcement).extend({campaignId:p,appId:bD.optional(),releaseRef:__.optional(),channels:g.array(YC).min(1),audienceRef:__,sentAt:B_}).strict().superRefine((_,$)=>{if(_.releaseRef&&_.releaseRef.kind!=="release")$.addIssue({code:g.ZodIssueCode.custom,message:"Announcement releaseRef must use resource kind release",path:["releaseRef","kind"]});if(_.audienceRef.kind!=="audience")$.addIssue({code:g.ZodIssueCode.custom,message:"Announcement audienceRef must use resource kind audience",path:["audienceRef","kind"]})}),KC=g.enum(["tag","attribute","group"]),TC=g.enum(["eq","neq","in","not_in","exists","not_exists"]),C9=g.union([g.string(),g.number(),g.boolean()]),FC=g.object({kind:KC,key:g.string().min(1).optional(),op:TC.default("eq"),value:C9.optional(),values:g.array(C9).default([])}).strict().superRefine((_,$)=>{if(_.kind==="attribute"&&!_.key)$.addIssue({code:g.ZodIssueCode.custom,message:"Attribute predicates require key",path:["key"]});if((_.op==="eq"||_.op==="neq")&&_.value===void 0)$.addIssue({code:g.ZodIssueCode.custom,message:"eq/neq predicates require value",path:["value"]});if((_.op==="in"||_.op==="not_in")&&_.values.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"in/not_in predicates require values",path:["values"]})}),VC=g.object({match:g.enum(["all","any"]).default("all"),predicates:g.array(FC).min(1)}).strict(),BC=g.enum(["opt_in","opt_out","transactional","none"]),MC=J_(y.audience).extend({audienceId:bD,name:p,definition:VC,consentPolicy:BC,suppressionSyncedAt:s4}).strict(),XN=["@hasna/cloud","open-cloud"],bC=g.enum(["aws","gcp","azure","cloudflare","vercel","neon","supabase","postgres","s3","rds","other"]),ZC=g.object({id:g.string().min(1),provider:bC,kind:g.enum(["database","bucket","queue","secret","function","worker","cache","topic","scheduler","object_store","other"]),ownerPackage:g.string().min(1),region:g.string().min(1).optional(),accountId:g.string().min(1).optional(),uri:r$.optional(),machineScoped:g.boolean().default(!1)}).strict(),E8=J_(y.appCloudManifest).extend({packageName:g.string().min(1),packageVersion:g.string().min(1).optional(),appId:g.string().min(1),repository:__.optional(),storageMode:g.enum(["local_only","app_owned_cloud","hybrid_local_cache","external_service"]),cloudBoundary:g.enum(["none","app_owned","external_service","local_cache"]),cloudResources:g.array(ZC).default([]),localCache:g.object({path:g.string().min(1).optional(),pullMode:g.enum(["manual","daemon","ci","none"]).default("manual"),conflictPolicy:g.enum(["cloud_wins","local_wins","merge","manual_review"]).default("manual_review")}).strict().optional(),forbiddenSharedRuntimes:g.array(g.string().min(1)).default([...XN]),dependencies:g.array(g.string().min(1)).default([]),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{let D=new Set([...XN,..._.forbiddenSharedRuntimes]);if(D.has(_.packageName))$.addIssue({code:g.ZodIssueCode.custom,message:"App-owned cloud manifests cannot be for a forbidden runtime",path:["packageName"]});for(let I of XN)if(!_.forbiddenSharedRuntimes.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`forbiddenSharedRuntimes must include ${I}`,path:["forbiddenSharedRuntimes"]});for(let I of D)if(_.dependencies.includes(I))$.addIssue({code:g.ZodIssueCode.custom,message:`App-owned cloud manifests cannot depend on ${I}`,path:["dependencies"]});if(_.storageMode==="local_only"&&_.cloudBoundary!=="none")$.addIssue({code:g.ZodIssueCode.custom,message:"local_only storage requires cloudBoundary none",path:["cloudBoundary"]});if(_.storageMode==="app_owned_cloud"&&_.cloudBoundary!=="app_owned")$.addIssue({code:g.ZodIssueCode.custom,message:"app_owned_cloud storage requires cloudBoundary app_owned",path:["cloudBoundary"]});if(_.storageMode==="hybrid_local_cache"){if(_.cloudBoundary!=="local_cache")$.addIssue({code:g.ZodIssueCode.custom,message:"hybrid_local_cache storage requires cloudBoundary local_cache",path:["cloudBoundary"]});if(!_.localCache)$.addIssue({code:g.ZodIssueCode.custom,message:"hybrid_local_cache storage requires localCache settings",path:["localCache"]})}if(_.storageMode==="external_service"){if(_.cloudBoundary!=="external_service")$.addIssue({code:g.ZodIssueCode.custom,message:"external_service storage requires cloudBoundary external_service",path:["cloudBoundary"]});if(_.cloudResources.length>0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Cloud-backed storage modes require explicit app-owned cloudResources",path:["cloudResources"]});if(_.cloudBoundary==="none"&&_.cloudResources.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"cloudBoundary none cannot declare cloudResources",path:["cloudResources"]});_.cloudResources.forEach((I,U)=>{if(I.ownerPackage!==_.packageName)$.addIssue({code:g.ZodIssueCode.custom,message:"Cloud resources must be owned by the app package that declares the manifest",path:["cloudResources",U,"ownerPackage"]})})}),j8=g.enum(["package_manifest","lockfile","source_import","runtime_config","packed_artifact","published_metadata","app_cloud_manifest","remote_config","boundary_doc","other"]),HC=g.enum(["low","medium","high","critical"]),N8=g.object({id:g.string().min(1),kind:j8,severity:HC,path:g.string().min(1).optional(),packageName:g.string().min(1).optional(),pattern:g.string().min(1),message:g.string().min(1),evidenceRefs:g.array(T_).default([])}).strict(),kC=g.object({id:g.string().min(1),kind:j8,status:D0,target:g.string().min(1),command:g.string().min(1).optional(),evidenceRefs:g.array(T_).default([]),findings:g.array(N8).default([])}).strict(),qC=J_(y.noCloudEvidencePack).extend({subject:__,packageName:g.string().min(1).optional(),packageVersion:g.string().min(1).optional(),generatedBy:e$.optional(),scanMode:g.enum(["source_tree","packed_artifact","published_metadata","runtime_config","workspace","ci"]),status:D0,verdict:g.enum(["passed","failed","warning","not_run"]),appCloudManifest:E8.optional(),checks:g.array(kC).min(1),findings:g.array(N8).default([]),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{let D=[..._.findings,..._.checks.flatMap((U)=>U.findings)],I=D.filter((U)=>U.severity==="high"||U.severity==="critical");if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence requires succeeded status",path:["status"]});if(I.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence cannot include high or critical findings",path:["findings"]});if(_.checks.some((U)=>U.status!=="succeeded"))$.addIssue({code:g.ZodIssueCode.custom,message:"Passed no-cloud evidence requires every check to be succeeded",path:["checks"]})}if(_.verdict==="failed"&&D.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Failed no-cloud evidence requires findings",path:["findings"]});if(_.status==="succeeded"&&_.checks.some((U)=>U.status==="failed"))$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded no-cloud evidence cannot contain failed checks",path:["checks"]});_.checks.forEach((U,E)=>{let j=U.findings.filter((N)=>N.severity==="high"||N.severity==="critical");if(U.status==="succeeded"&&j.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"Succeeded no-cloud checks cannot contain high or critical findings",path:["checks",E,"findings"]})})}),CC=g.object({checkId:g.string().min(1),status:D0,summary:g.string().min(1).optional(),startedAt:s4,finishedAt:s4,evidenceRefs:g.array(T_).default([])}).strict(),vC=J_(y.proofBundle).extend({subject:__,validationPlanRef:__.optional(),status:D0,verdict:g.enum(["passed","failed","inconclusive","not_run"]).default("inconclusive"),checks:g.array(CC).default([]),verifier:e$.optional(),evidenceRefs:g.array(T_).default([]),residualRisks:g.array(g.string().min(1)).default([]),freshness:g.enum(["fresh","stale","unknown"]).default("unknown")}).strict().superRefine((_,$)=>{if(_.verdict==="passed"){if(_.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles must have status succeeded",path:["status"]});if(_.checks.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require at least one check result",path:["checks"]});if(_.checks.forEach((I,U)=>{if(I.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require all checks to have status succeeded",path:["checks",U,"status"]})}),!(_.evidenceRefs.length>0||_.checks.some((I)=>I.evidenceRefs.length>0)))$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require evidence",path:["evidenceRefs"]});if(!_.verifier)$.addIssue({code:g.ZodIssueCode.custom,message:"Passed proof bundles require a verifier",path:["verifier"]})}if(_.verdict==="not_run"&&_.checks.length>0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed proof bundles require a failed check or evidence",path:["checks"]})}),wC=J_(y.workRun).extend({objective:g.string().min(1),status:D0,actor:e$,traceId:g.string().min(1).optional(),startedAt:s4,finishedAt:s4,constraints:g.array(g.string().min(1)).default([]),resourceRefs:g.array(__).default([]),decisions:g.array(s9).default([]),costEstimates:g.array(b1).default([]),evidenceRefs:g.array(T_).default([]),validationPlanRefs:g.array(__).default([]),proofBundleRefs:g.array(__).default([])}).strict().superRefine((_,$)=>{if(_.startedAt&&_.finishedAt&&Date.parse(_.finishedAt)<Date.parse(_.startedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"finishedAt must be after or equal to startedAt",path:["finishedAt"]});if(Qq.has(_.status)&&!_.finishedAt)$.addIssue({code:g.ZodIssueCode.custom,message:"Terminal work runs require finishedAt",path:["finishedAt"]});let D=_.evidenceRefs.length>0||_.proofBundleRefs.length>0;if(_.status==="succeeded"&&!D)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Failed or blocked work runs require evidence, a proof bundle, or a decision record",path:["evidenceRefs"]})}),rC=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"])}),fC=g.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"]),xC=g.enum(["todos","codewith","repos","review","merge_provider","openloops","adapter"]),$0=g.string().regex(/^[a-f0-9]{64}$/),FN=g.string().trim().min(3).max(256),g8=/^[a-f0-9]{32}$/;function uC(_,$,D){return`${_}:${$}:opaque-${D.slice(0,32)}`}function yC(_){return`evidence:opaque-${_.slice(0,32)}`}var A8=FN.refine((_)=>{let D=_.startsWith("task_to_pr_projection:opaque-")?_.slice(29):"";return g8.test(D)},"Projection ids must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),NP=FN.refine((_)=>{let D=_.startsWith("attempt_nonce:opaque-")?_.slice(21):"";return g8.test(D)},"Attempt nonces must use a nonsemantic 128-bit lowercase hexadecimal surrogate"),hC=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"]),gP=g.object({role:fC,authority:xC,id:FN,digest:$0,redaction:g.enum(["none","partial","full"])}).strict().superRefine((_,$)=>{let D=rC[_.role];if(!D.includes(_.authority))$.addIssue({code:g.ZodIssueCode.custom,message:`${_.role} refs must be owned by ${D.join(" or ")}`,path:["authority"]});if(hC.has(_.role)&&_.redaction==="none")$.addIssue({code:g.ZodIssueCode.custom,message:`${_.role} refs must be redacted and cannot carry a raw locator or credential`,path:["redaction"]});let I=uC(_.role,_.authority,_.digest);if(_.id!==I)$.addIssue({code:g.ZodIssueCode.custom,message:"Reference ids must be nonsemantic authority-bound surrogates derived from the canonical role, authority, and owner-record digest",path:["id"]})}),Y$=g.object({id:FN,digest:$0,redaction:g.enum(["partial","full"])}).strict().superRefine((_,$)=>{if(_.id!==yC(_.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Evidence ids must be nonsemantic owner-resolvable surrogates derived from their canonical digest",path:["id"]})});function O8(_,$,D,I){if(_.id===$.id||_.digest===$.digest)D.addIssue({code:g.ZodIssueCode.custom,message:"Stop and lease-revocation facts require distinct evidence identities and digests",path:I})}function b(_){return gP.refine(($)=>$.role===_,{message:`Reference must use role ${_}`,path:["role"]})}function V_(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id&&_.digest===$.digest&&_.redaction===$.redaction}function AP(_,$){return _.role===$.role&&_.authority===$.authority&&_.id===$.id}function WD(_,$,D,I,U){if(AP(_,$))D.addIssue({code:g.ZodIssueCode.custom,message:`${U} requires a fresh canonical role/authority/id`,path:I});if(_.digest===$.digest)D.addIssue({code:g.ZodIssueCode.custom,message:`${U} requires a fresh canonical digest`,path:I})}function YN(_){return`${_.role}\x00${_.authority}\x00${_.id}`}function a_(_,$){return _.algorithm===$.algorithm&&_.value===$.value}var K_=g.object({algorithm:g.enum(["sha1","sha256"]),value:g.string().regex(/^[a-f0-9]+$/)}).strict().superRefine((_,$)=>{let D=_.algorithm==="sha1"?40:64;if(_.value.length!==D)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.algorithm} object ids must contain exactly ${D} lowercase hex characters`,path:["value"]})});function v9(_){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 Z9("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 Z9("sha256").update($,"utf8").digest("hex")}var cC=g.object({ref:b("attempt"),nonce:NP,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(),nC=g.object({repoRef:b("repo"),worktreeRef:b("worktree"),branchRef:b("branch"),baseHead:K_,branchHead:K_}).strict(),dC=g.object({streamRef:b("event_stream"),replayCursorRef:b("replay_cursor"),sequence:g.number().int().safe().nonnegative(),prefixDigest:$0}).strict(),mC=g.object({ref:b("handoff"),previousAttemptRef:b("attempt"),nextAttemptRef:b("attempt"),previousWriterGenerationRef:b("writer_generation"),nextWriterGenerationRef:b("writer_generation"),stoppedWorkRunRef:b("work_run"),stopEvidenceRef:Y$,leaseRevocationEvidenceRef:Y$}).strict().superRefine((_,$)=>{WD(_.previousAttemptRef,_.nextAttemptRef,$,["nextAttemptRef"],"Handoff attempt rotation"),WD(_.previousWriterGenerationRef,_.nextWriterGenerationRef,$,["nextWriterGenerationRef"],"Handoff writer-generation rotation"),O8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),lC=g.object({ref:b("review"),pullRequestRef:b("pull_request"),base:K_,head:K_,reviewerRef:b("reviewer"),reviewRunRef:b("review_run"),proofBundleRef:b("proof_bundle"),verdict:g.enum(["approved","changes_requested","blocked"]),reviewedAt:B_}).strict(),iC=g.object({pullRequestRef:b("pull_request"),remoteBranchRef:b("branch"),expectedBase:K_,providerPullRequestBase:K_,localHead:K_,remoteHead:K_,providerPullRequestHead:K_,equalityProofRef:b("proof_bundle"),ciProofBundleRefs:g.array(b("proof_bundle")).min(1),verifiedAt:B_}).strict().superRefine((_,$)=>{if(!a_(_.expectedBase,_.providerPullRequestBase))$.addIssue({code:g.ZodIssueCode.custom,message:"Expected and provider-observed pull-request bases must be exactly equal",path:["providerPullRequestBase"]});if(!a_(_.localHead,_.remoteHead)||!a_(_.localHead,_.providerPullRequestHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Local, remote, and provider pull-request heads must be exactly equal",path:["providerPullRequestHead"]});let D=_.ciProofBundleRefs.map(YN);if(new Set(D).size!==D.length)$.addIssue({code:g.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical identities",path:["ciProofBundleRefs"]});let I=_.ciProofBundleRefs.map((U)=>U.digest);if(new Set(I).size!==I.length)$.addIssue({code:g.ZodIssueCode.custom,message:"CI proof bundle refs must have unique canonical digests",path:["ciProofBundleRefs"]});if(_.ciProofBundleRefs.some((U)=>AP(U,_.equalityProofRef)))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Head-equality and CI proof refs must have distinct canonical digests",path:["ciProofBundleRefs"]})}),tC=g.object({ref:b("repair_cycle"),cycle:g.number().int().min(0).max(2),cap:g.literal(2),exhausted:g.boolean(),latestRepairRef:b("repair_cycle").optional()}).strict().superRefine((_,$)=>{if(_.exhausted!==(_.cycle===_.cap))$.addIssue({code:g.ZodIssueCode.custom,message:"Repair exhaustion must equal the cumulative cycle cap",path:["exhausted"]});if(_.cycle===0&&_.latestRepairRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Cycle zero cannot reference a repair",path:["latestRepairRef"]});if(_.cycle>0&&!_.latestRepairRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Non-zero repair state requires the latest immutable repair ref",path:["latestRepairRef"]});if(_.latestRepairRef&&AP(_.ref,_.latestRepairRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must be distinct canonical records",path:["latestRepairRef"]});if(_.latestRepairRef&&_.ref.digest===_.latestRepairRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Repair-state and latest-repair refs must have distinct canonical digests",path:["latestRepairRef"]})}),oC=g.object({ref:b("merge_guard"),pullRequestRef:b("pull_request"),expectedBase:K_,expectedHead:K_,reviewRefs:g.array(b("review")).min(1),proofBundleRefs:g.array(b("proof_bundle")).min(1),operatorRef:b("merge_operator"),operatorRunRef:b("merge_operator_run"),providerGuardReceiptRef:b("merge_guard_receipt"),mechanism:g.enum(["compare_and_swap","queue_expected_head"]),decision:g.enum(["eligible","denied","consumed","revoked"]),evaluatedAt:B_}).strict().superRefine((_,$)=>{if(new Set(_.reviewRefs.map((E)=>E.id)).size!==_.reviewRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard review refs must be unique",path:["reviewRefs"]});if(new Set(_.proofBundleRefs.map(YN)).size!==_.proofBundleRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical identities",path:["proofBundleRefs"]});if(new Set(_.proofBundleRefs.map((E)=>E.digest)).size!==_.proofBundleRefs.length)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard proof refs must have unique canonical digests",path:["proofBundleRefs"]})}),pC=g.object({ref:b("merge_outcome"),guardRef:b("merge_guard"),pullRequestRef:b("pull_request"),expectedBase:K_,observedBase:K_,expectedHead:K_,observedHead:K_,status:g.enum(["merged","closed_unmerged","refused","head_drift","base_drift"]),mergeCommitRef:b("commit").optional(),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().superRefine((_,$)=>{let D=a_(_.expectedBase,_.observedBase),I=a_(_.expectedHead,_.observedHead);if(_.status==="merged"){if(!D||!I)$.addIssue({code:g.ZodIssueCode.custom,message:"Merged outcomes require observed base and head to equal the guarded values",path:[!D?"observedBase":"observedHead"]});if(!_.mergeCommitRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Merged outcomes require an immutable merge commit ref",path:["mergeCommitRef"]})}else if(_.mergeCommitRef)$.addIssue({code:g.ZodIssueCode.custom,message:"Unmerged outcomes cannot claim a merge commit",path:["mergeCommitRef"]});if(_.status==="head_drift"&&I)$.addIssue({code:g.ZodIssueCode.custom,message:"Head-drift outcomes require distinct expected and observed heads",path:["observedHead"]});if(_.status==="head_drift"&&!D)$.addIssue({code:g.ZodIssueCode.custom,message:"Head-drift outcomes cannot also carry an unclassified base drift",path:["observedBase"]});if(_.status==="base_drift"&&D)$.addIssue({code:g.ZodIssueCode.custom,message:"Base-drift outcomes require distinct expected and observed bases",path:["observedBase"]});if(_.status==="base_drift"&&!I)$.addIssue({code:g.ZodIssueCode.custom,message:"Base-drift outcomes cannot also carry an unclassified head drift",path:["observedHead"]});if(!I&&_.status!=="head_drift")$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Only a base_drift outcome may record an observed base that differs from the expected base",path:["observedBase"]})}),eC=g.object({guard:oC,outcome:pC.optional()}).strict(),aC=g.object({ref:b("recovery"),priorAttemptRef:b("attempt"),priorWriterGenerationRef:b("writer_generation"),priorWorkRunRef:b("work_run"),successorAttemptNonce:NP,successorWriterGenerationRef:b("writer_generation"),preservedStateRefs:g.array(gP).min(1),stopEvidenceRef:Y$,leaseRevocationEvidenceRef:Y$}).strict().superRefine((_,$)=>{WD(_.priorWriterGenerationRef,_.successorWriterGenerationRef,$,["successorWriterGenerationRef"],"Recovery writer-generation rotation"),O8(_.stopEvidenceRef,_.leaseRevocationEvidenceRef,$,["leaseRevocationEvidenceRef"])}),sC=g.object({ref:b("cancellation"),cancelledAttemptRef:b("attempt"),preservedStateRefs:g.array(gP).min(1),evidenceRefs:g.array(Y$).min(1)}).strict(),_v=g.object({ref:b("cleanup_eligibility"),status:g.enum(["not_ready","preserved","blocked","eligible"]),targetWorktreeRef:b("worktree"),eventCursorRef:b("replay_cursor"),terminalDispositionRef:b("terminal_disposition"),writerLeaseRef:b("writer_lease"),leaseRevocationEvidenceRef:Y$,consumedEventEvidenceRef:Y$,evaluatedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().superRefine((_,$)=>{if(_.leaseRevocationEvidenceRef.id===_.consumedEventEvidenceRef.id||_.leaseRevocationEvidenceRef.digest===_.consumedEventEvidenceRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup lease-revocation and consumed-event facts require distinct evidence identities and digests",path:["consumedEventEvidenceRef"]})}),$v=g.object({ref:b("cleanup_outcome"),eligibilityRef:b("cleanup_eligibility"),targetWorktreeRef:b("worktree"),status:g.enum(["preserved","deleted","failed","skipped"]),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict(),Dv=g.object({eligibility:_v,outcome:$v.optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!V_(_.outcome.eligibilityRef,_.eligibility.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup outcomes must bind the exact eligibility decision",path:["outcome","eligibilityRef"]});if(_.outcome&&!V_(_.outcome.targetWorktreeRef,_.eligibility.targetWorktreeRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Deletion requires an eligible cleanup decision",path:["outcome","status"]})}),Uv=g.object({plan:g.object({ref:b("rollback_plan"),targetRef:g.union([b("commit"),b("branch")]),createdAt:B_}).strict(),outcome:g.object({ref:b("rollback_outcome"),planRef:b("rollback_plan"),targetRef:g.union([b("commit"),b("branch")]),status:g.enum(["not_run","succeeded","failed","cancelled"]),finishedAt:B_,evidenceRefs:g.array(Y$).min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.outcome&&!V_(_.outcome.planRef,_.plan.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback plan",path:["outcome","planRef"]});if(_.outcome&&!V_(_.outcome.targetRef,_.plan.targetRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes must bind the exact rollback target",path:["outcome","targetRef"]});if(_.outcome&&Date.parse(_.outcome.finishedAt)<Date.parse(_.plan.createdAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes cannot finish before their plan was created",path:["outcome","finishedAt"]})}),Iv=g.discriminatedUnion("category",[g.object({category:g.literal("projection_id"),projectionId:A8}).strict(),g.object({category:g.literal("work_run"),ref:b("work_run")}).strict(),g.object({category:g.literal("attempt"),ref:b("attempt")}).strict(),g.object({category:g.literal("admission"),ref:b("admission")}).strict(),g.object({category:g.literal("worker_actor"),ref:b("worker_actor")}).strict(),g.object({category:g.literal("worker_assignment"),ref:b("worker")}).strict(),g.object({category:g.literal("attempt_nonce"),nonce:NP}).strict(),g.object({category:g.literal("runtime"),ref:b("runtime")}).strict(),g.object({category:g.literal("writer_generation"),ref:b("writer_generation")}).strict(),g.object({category:g.literal("writer_lease"),ref:b("writer_lease")}).strict(),g.object({category:g.literal("writer_fence"),ref:b("writer_fence")}).strict(),g.object({category:g.literal("provider_profile"),ref:b("provider_profile")}).strict(),g.object({category:g.literal("provider_route"),ref:b("provider_route")}).strict(),g.object({category:g.literal("replay_cursor"),ref:b("replay_cursor")}).strict(),g.object({category:g.literal("replay_prefix"),sequence:g.number().int().safe().nonnegative(),prefixDigest:$0}).strict(),g.object({category:g.literal("repair_state"),ref:b("repair_cycle")}).strict(),g.object({category:g.literal("latest_repair"),ref:b("repair_cycle")}).strict(),g.object({category:g.literal("handoff"),ref:b("handoff")}).strict(),g.object({category:g.literal("recovery"),ref:b("recovery")}).strict(),g.object({category:g.literal("merge_guard"),ref:b("merge_guard")}).strict(),g.object({category:g.literal("cleanup_eligibility"),ref:b("cleanup_eligibility")}).strict(),g.object({category:g.literal("rollback_plan"),ref:b("rollback_plan")}).strict(),g.object({category:g.literal("terminal_disposition"),ref:b("terminal_disposition")}).strict(),g.object({category:g.literal("equality_proof"),ref:b("proof_bundle"),base:K_,head:K_}).strict(),g.object({category:g.literal("ci_proof"),ref:b("proof_bundle"),base:K_,head:K_}).strict(),g.object({category:g.literal("review_proof"),ref:b("proof_bundle"),base:K_,head:K_}).strict(),g.object({category:g.literal("review_record"),ref:b("review"),base:K_,head:K_}).strict(),g.object({category:g.literal("review_run"),ref:b("review_run"),base:K_,head:K_}).strict(),g.object({category:g.literal("provider_guard_receipt"),ref:b("merge_guard_receipt"),base:K_,head:K_}).strict()]);function Ev(_){return[{category:"projection_id",projectionId:_.id},{category:"work_run",ref:_.workRunRef},{category:"attempt",ref:_.attempt.ref},{category:"admission",ref:_.attempt.admissionRef},{category:"worker_actor",ref:_.attempt.workerActorRef},{category:"worker_assignment",ref:_.attempt.workerRef},{category:"attempt_nonce",nonce:_.attempt.nonce},{category:"runtime",ref:_.attempt.runtimeRef},{category:"writer_generation",ref:_.attempt.writerGenerationRef},{category:"writer_lease",ref:_.attempt.writerLeaseRef},{category:"writer_fence",ref:_.attempt.writerFenceRef},{category:"provider_profile",ref:_.attempt.providerProfileRef},{category:"provider_route",ref:_.attempt.providerRouteRef},{category:"replay_cursor",ref:_.events.replayCursorRef},{category:"replay_prefix",sequence:_.events.sequence,prefixDigest:_.events.prefixDigest},{category:"repair_state",ref:_.repair.ref},..._.repair.latestRepairRef?[{category:"latest_repair",ref:_.repair.latestRepairRef}]:[],..._.handoff?[{category:"handoff",ref:_.handoff.ref}]:[],..._.recovery?[{category:"recovery",ref:_.recovery.ref}]:[],..._.exactHead?[{category:"equality_proof",ref:_.exactHead.equalityProofRef,base:_.exactHead.expectedBase,head:_.exactHead.localHead},..._.exactHead.ciProofBundleRefs.map(($)=>({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 jv(_,$){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 V_(_.ref,$.ref)&&(("head"in _)&&("head"in $)&&("base"in _)&&("base"in $)&&a_(_.base,$.base)&&a_(_.head,$.head)||!("head"in _)&&!("head"in $)&&!("base"in _)&&!("base"in $))}var Nv="hasna.task_to_pr_adapter_extension.",gv=g.object({mode:g.enum(["local","cloud"]),schema:DP,ref:b("adapter_extension"),digest:$0}).strict().superRefine((_,$)=>{if(!_.schema.startsWith(Nv))$.addIssue({code:g.ZodIssueCode.custom,message:"Adapter extension schema ids must use the permanently reserved task-to-PR adapter-extension namespace",path:["schema"]})}),Av=g.enum(["admitted","running","handed_off","reviewing","repairing","merge_ready","merged","closed_unmerged","failed","blocked","cancelled","recovering","cleanup_complete","rolled_back"]),w9=new Set(["admitted","running","handed_off"]),r9=new Set(["merged","closed_unmerged","failed","blocked","cancelled","cleanup_complete","rolled_back"]),Ov={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"])},Sv=g.object({schema:g.literal(y.taskToPrProjection),id:A8,createdAt:B_,canonicalizationVersion:g.union([g.literal(1),g.literal(2)]),identityDigest:$0,frozenScopeDigest:$0,state:Av,workRunRef:b("work_run"),rootRequestRef:b("root_request"),prGroupRef:b("pr_group"),leafTaskRef:b("leaf_task"),attempt:cC,repository:nC,events:dC,openLoopsInvocationRef:b("openloops_invocation").optional(),pullRequestRef:b("pull_request").optional(),exactHead:iC.optional(),handoff:mC.optional(),reviews:g.array(lC).default([]),repair:tC,merge:eC.optional(),recovery:aC.optional(),cancellation:sC.optional(),cleanup:Dv.optional(),rollback:Uv.optional(),terminalDispositionRef:b("terminal_disposition").optional(),provenanceLedger:g.array(Iv),adapterExtensions:g.array(gv).default([]),evidenceRefs:g.array(Y$).default([])}).strict().superRefine((_,$)=>{let D=_.canonicalizationVersion===1?v9({canonicalizationVersion:1,rootRequestRef:_.rootRequestRef,prGroupRef:_.prGroupRef,leafTaskRef:_.leafTaskRef,repoRef:_.repository.repoRef,baseHead:_.repository.baseHead,frozenScopeDigest:_.frozenScopeDigest}):v9({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:g.ZodIssueCode.custom,message:"identityDigest must equal the selected v1 compatibility or v2 branch/worktree-bound canonical identity digest",path:["identityDigest"]});let I=new Set,U=new Set,E=new Set,j=new Set,N=new Set,A=new Set;for(let[Q,F]of _.provenanceLedger.entries()){if("ref"in F){if(I.has(F.ref.id))$.addIssue({code:g.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical owner id across categories or generations",path:["provenanceLedger",Q,"ref","id"]});if(I.add(F.ref.id),U.has(F.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Provenance entries cannot reuse a canonical digest across categories or generations",path:["provenanceLedger",Q,"ref","digest"]});U.add(F.ref.digest);continue}if(F.category==="projection_id"){if(E.has(F.projectionId))$.addIssue({code:g.ZodIssueCode.custom,message:"Projection identity provenance tombstones must be globally unique",path:["provenanceLedger",Q,"projectionId"]});E.add(F.projectionId);continue}if(F.category==="attempt_nonce"){if(j.has(F.nonce))$.addIssue({code:g.ZodIssueCode.custom,message:"Attempt nonce provenance tombstones must be globally unique",path:["provenanceLedger",Q,"nonce"]});j.add(F.nonce);continue}if(N.has(F.prefixDigest))$.addIssue({code:g.ZodIssueCode.custom,message:"Replay prefix provenance tombstones must be globally unique",path:["provenanceLedger",Q,"prefixDigest"]});if(N.add(F.prefixDigest),A.has(F.sequence))$.addIssue({code:g.ZodIssueCode.custom,message:"Replay prefix provenance entries must bind globally unique replay sequences",path:["provenanceLedger",Q,"sequence"]});A.add(F.sequence)}for(let Q of Ev(_))if(!_.provenanceLedger.some((F)=>jv(F,Q)))$.addIssue({code:g.ZodIssueCode.custom,message:`The active ${Q.category} identity must be represented exactly in the monotonic provenance ledger`,path:["provenanceLedger"]});let O=[_.rootRequestRef,_.prGroupRef,_.leafTaskRef,_.repository.repoRef,_.repository.worktreeRef,_.repository.branchRef,_.events.streamRef,..._.pullRequestRef?[_.pullRequestRef]:[]],S=(Q,F,q,Z)=>{let f=new Set(F.map((U_)=>U_.role)),l=new Set;for(let[U_,j_]of Q.entries()){if(!f.has(j_.role))$.addIssue({code:g.ZodIssueCode.custom,message:`${Z} cannot preserve an unrecognized ${j_.role} role`,path:[...q,U_]});if(l.has(j_.role))$.addIssue({code:g.ZodIssueCode.custom,message:`${Z} must preserve exactly one canonical ref per role`,path:[...q,U_]});l.add(j_.role)}if(Q.length!==F.length)$.addIssue({code:g.ZodIssueCode.custom,message:`${Z} preservation refs must exactly equal the required canonical role set`,path:q});for(let U_ of F)if(!Q.some((j_)=>V_(j_,U_)))$.addIssue({code:g.ZodIssueCode.custom,message:`${Z} must preserve ${U_.role}`,path:q})};if(_.handoff&&!V_(_.handoff.nextWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Handoff next generation must be the current attempt writer generation",path:["handoff","nextWriterGenerationRef"]});if(_.handoff&&!V_(_.handoff.nextAttemptRef,_.attempt.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Handoff next attempt must be the current attempt",path:["handoff","nextAttemptRef"]});if(_.handoff)WD(_.handoff.stoppedWorkRunRef,_.workRunRef,$,["handoff","stoppedWorkRunRef"],"Handoff WorkRun rotation");if(_.recovery){if(_.recovery.successorAttemptNonce!==_.attempt.nonce)$.addIssue({code:g.ZodIssueCode.custom,message:"Recovery successor nonce must equal the current attempt nonce",path:["recovery","successorAttemptNonce"]});if(!V_(_.recovery.successorWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Recovery successor generation must equal the current writer generation",path:["recovery","successorWriterGenerationRef"]});WD(_.recovery.priorAttemptRef,_.attempt.ref,$,["recovery","priorAttemptRef"],"Recovery attempt rotation"),WD(_.recovery.priorWorkRunRef,_.workRunRef,$,["recovery","priorWorkRunRef"],"Recovery WorkRun rotation"),S(_.recovery.preservedStateRefs,[_.recovery.priorWorkRunRef,...O],["recovery","preservedStateRefs"],"Recovery")}if(_.cancellation&&!V_(_.cancellation.cancelledAttemptRef,_.attempt.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Cancellation must bind the current attempt",path:["cancellation","cancelledAttemptRef"]});if(_.cancellation)S(_.cancellation.preservedStateRefs,[_.workRunRef,_.attempt.ref,...O],["cancellation","preservedStateRefs"],"Cancellation");if(_.cancellation&&_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"A projection cannot be both the cancellation and recovery snapshot",path:["recovery"]});if(_.handoff&&_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"A projection cannot be both the handoff and recovery snapshot",path:["recovery"]});if(_.cleanup&&!V_(_.cleanup.eligibility.eventCursorRef,_.events.replayCursorRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the current canonical replay cursor",path:["cleanup","eligibility","eventCursorRef"]});if(_.cleanup&&(!_.terminalDispositionRef||!V_(_.cleanup.eligibility.terminalDispositionRef,_.terminalDispositionRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact durable terminal owner fact",path:["cleanup","eligibility","terminalDispositionRef"]});if(_.cleanup&&!V_(_.cleanup.eligibility.writerLeaseRef,_.attempt.writerLeaseRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the exact writer lease being revoked",path:["cleanup","eligibility","writerLeaseRef"]});if(_.cleanup&&!V_(_.cleanup.eligibility.targetWorktreeRef,_.repository.worktreeRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility must bind the canonical worktree",path:["cleanup","eligibility","targetWorktreeRef"]});if(_.pullRequestRef){if(_.exactHead&&!V_(_.exactHead.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head proof must bind the canonical pull request ref",path:["exactHead","pullRequestRef"]});for(let[Q,F]of _.reviews.entries())if(!V_(F.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Every review must bind the canonical pull request ref",path:["reviews",Q,"pullRequestRef"]});if(_.merge&&!V_(_.merge.guard.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard must bind the canonical pull request ref",path:["merge","guard","pullRequestRef"]});if(_.merge?.outcome&&!V_(_.merge.outcome.pullRequestRef,_.pullRequestRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Review and merge state require a canonical pull request ref",path:["pullRequestRef"]});if(_.exactHead&&!a_(_.exactHead.localHead,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact local head must equal the canonical branch head",path:["exactHead","localHead"]});if(_.exactHead&&!a_(_.exactHead.expectedBase,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head expected base must equal the canonical repository base",path:["exactHead","expectedBase"]});if(_.exactHead&&!V_(_.exactHead.remoteBranchRef,_.repository.branchRef))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head remote branch ref must equal the canonical repository branch ref",path:["exactHead","remoteBranchRef"]});if(_.exactHead&&Date.parse(_.exactHead.verifiedAt)<Date.parse(_.createdAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head verification cannot precede the projection timestamp",path:["exactHead","verifiedAt"]});if(_.reviews.length>0&&!_.exactHead)$.addIssue({code:g.ZodIssueCode.custom,message:"Reviews require local/remote/provider exact-head proof",path:["exactHead"]});if(_.exactHead){let Q=[{ref:_.exactHead.equalityProofRef,path:["exactHead","equalityProofRef"]},..._.exactHead.ciProofBundleRefs.map((Z,f)=>({ref:Z,path:["exactHead","ciProofBundleRefs",f]})),..._.reviews.map((Z,f)=>({ref:Z.proofBundleRef,path:["reviews",f,"proofBundleRef"]}))],F=new Set,q=new Set;for(let Z of Q){let f=YN(Z.ref);if(F.has(f))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical identities",path:Z.path});if(F.add(f),q.has(Z.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Exact-head equality, CI, and review proof obligations require globally unique canonical digests",path:Z.path});q.add(Z.ref.digest)}}let L=new Set,P=new Set,z=new Set,G=new Set,J=new Set,W=new Set,X=new Set,R=new Set;for(let[Q,F]of _.reviews.entries()){if(!a_(F.base,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Review base must equal the exact canonical pull-request base",path:["reviews",Q,"base"]});if(!a_(F.head,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Review head must equal the exact canonical branch head",path:["reviews",Q,"head"]});for(let[Z,f,l]of[[F.ref.id,L,"ref"],[F.reviewerRef.id,z,"reviewerRef"],[F.reviewRunRef.id,J,"reviewRunRef"]]){if(f.has(Z))$.addIssue({code:g.ZodIssueCode.custom,message:"Review, reviewer, and review-run refs must each be unique",path:["reviews",Q,l]});f.add(Z)}if(P.has(F.ref.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review refs must resolve to distinct canonical record digests",path:["reviews",Q,"ref"]});if(P.add(F.ref.digest),G.has(F.reviewerRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewer refs must resolve to distinct canonical actor digests",path:["reviews",Q,"reviewerRef"]});if(G.add(F.reviewerRef.digest),W.has(F.reviewRunRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review-run refs must resolve to distinct canonical run digests",path:["reviews",Q,"reviewRunRef"]});W.add(F.reviewRunRef.digest);let q=YN(F.proofBundleRef);if(X.has(q))$.addIssue({code:g.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical identities",path:["reviews",Q,"proofBundleRef"]});if(X.add(q),R.has(F.proofBundleRef.digest))$.addIssue({code:g.ZodIssueCode.custom,message:"Review proof bundles must have unique canonical digests",path:["reviews",Q,"proofBundleRef"]});if(R.add(F.proofBundleRef.digest),F.reviewerRef.digest===_.attempt.workerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker and reviewer identities must resolve to distinct canonical digests",path:["reviews",Q,"reviewerRef"]});if(F.reviewRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker runtime and review run must resolve to distinct canonical digests",path:["reviews",Q,"reviewRunRef"]});if(_.exactHead&&Date.parse(F.reviewedAt)<Date.parse(_.exactHead.verifiedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Reviews cannot precede exact-head verification",path:["reviews",Q,"reviewedAt"]})}if(_.merge){if(!_.exactHead)$.addIssue({code:g.ZodIssueCode.custom,message:"Merge state requires local/remote/provider exact-head proof",path:["exactHead"]});if(!a_(_.merge.guard.expectedBase,_.repository.baseHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard expected base must equal the exact canonical pull-request base",path:["merge","guard","expectedBase"]});if(!a_(_.merge.guard.expectedHead,_.repository.branchHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guard expected head must equal the exact canonical branch head",path:["merge","guard","expectedHead"]});if(_.exactHead&&Date.parse(_.merge.guard.evaluatedAt)<Date.parse(_.exactHead.verifiedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guards cannot precede exact-head verification",path:["merge","guard","evaluatedAt"]});if(_.reviews.some((Q)=>Date.parse(_.merge.guard.evaluatedAt)<Date.parse(Q.reviewedAt)))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge guards cannot precede their bound reviews",path:["merge","guard","evaluatedAt"]});if(_.merge.guard.operatorRef.digest===_.attempt.workerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker and merge operator identities must resolve to distinct canonical digests",path:["merge","guard","operatorRef"]});if(_.merge.guard.operatorRunRef.digest===_.attempt.runtimeRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Worker runtime and merge-operator run must resolve to distinct canonical digests",path:["merge","guard","operatorRunRef"]});for(let[Q,F]of _.reviews.entries()){if(_.merge.guard.operatorRef.digest===F.reviewerRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewer and merge operator identities must resolve to distinct canonical digests",path:["reviews",Q,"reviewerRef"]});if(_.merge.guard.operatorRunRef.digest===F.reviewRunRef.digest)$.addIssue({code:g.ZodIssueCode.custom,message:"Review and merge-operator runs must resolve to distinct canonical digests",path:["reviews",Q,"reviewRunRef"]})}if(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed"){if(_.reviews.length===0||_.reviews.some((Q)=>Q.verdict!=="approved"))$.addIssue({code:g.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((Q)=>!_.reviews.some((F)=>V_(Q,F.ref))))$.addIssue({code:g.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 Q of _.reviews)if(!_.merge.guard.proofBundleRefs.some((F)=>V_(F,Q.proofBundleRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact review proof bundle",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&!_.merge.guard.proofBundleRefs.some((Q)=>V_(Q,_.exactHead.equalityProofRef)))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind the exact-head equality proof",path:["merge","guard","proofBundleRefs"]});if(_.exactHead&&_.exactHead.ciProofBundleRefs.some((Q)=>!_.merge.guard.proofBundleRefs.some((F)=>V_(F,Q))))$.addIssue({code:g.ZodIssueCode.custom,message:"Eligible merge guards must bind every exact-head CI proof",path:["merge","guard","proofBundleRefs"]})}}if(_.merge?.outcome){if(!V_(_.merge.outcome.guardRef,_.merge.guard.ref))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome must bind the exact immutable merge guard",path:["merge","outcome","guardRef"]});if(!a_(_.merge.outcome.expectedHead,_.merge.guard.expectedHead))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome expected head must equal the guarded expected head",path:["merge","outcome","expectedHead"]});if(!a_(_.merge.outcome.expectedBase,_.merge.guard.expectedBase))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcome expected base must equal the guarded expected base",path:["merge","outcome","expectedBase"]});if(_.merge.guard.decision!=="consumed")$.addIssue({code:g.ZodIssueCode.custom,message:"Every merge outcome requires an explicitly consumed merge guard",path:["merge","guard","decision"]});if(Date.parse(_.merge.outcome.finishedAt)<Date.parse(_.merge.guard.evaluatedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Merge outcomes cannot precede guard evaluation",path:["merge","outcome","finishedAt"]})}if(_.cleanup){let Q=_.merge?.outcome?.finishedAt??_.createdAt;if(Date.parse(_.cleanup.eligibility.evaluatedAt)<Date.parse(Q))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup eligibility cannot precede the terminal merge outcome or projection",path:["cleanup","eligibility","evaluatedAt"]});if(_.cleanup.outcome&&Date.parse(_.cleanup.outcome.finishedAt)<Date.parse(_.cleanup.eligibility.evaluatedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Cleanup outcomes cannot precede cleanup eligibility",path:["cleanup","outcome","finishedAt"]})}if(_.rollback?.outcome&&_.merge?.outcome&&Date.parse(_.rollback.outcome.finishedAt)<Date.parse(_.merge.outcome.finishedAt))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback outcomes cannot precede the merge outcome they remediate",path:["rollback","outcome","finishedAt"]});if(_.rollback){let Q=_.merge?.outcome?.finishedAt??_.createdAt;if(Date.parse(_.rollback.plan.createdAt)<Date.parse(Q))$.addIssue({code:g.ZodIssueCode.custom,message:"Rollback plans cannot precede the terminal merge outcome or projection",path:["rollback","plan","createdAt"]})}if(_.state==="handed_off"&&!_.handoff)$.addIssue({code:g.ZodIssueCode.custom,message:"Handed-off projections require a handoff ref",path:["handoff"]});if(w9.has(_.state)&&_.reviews.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections cannot carry review bindings before review authority is active`,path:["reviews"]});if((w9.has(_.state)||_.state==="recovering")&&(_.merge?.guard.reviewRefs.length??0)>0)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections cannot hide review bindings in a merge guard before review authority is active`,path:["merge","guard","reviewRefs"]});let T=_.merge?`${_.merge.guard.decision}:${_.merge.outcome?.status??"none"}`:"absent";if(!Ov[_.state].has(T))$.addIssue({code:g.ZodIssueCode.custom,message:`State ${_.state} is incompatible with merge authority ${T}`,path:["merge"]});if(r9.has(_.state)&&!_.terminalDispositionRef)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections require a durable Todos terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(!r9.has(_.state)&&_.terminalDispositionRef)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.state} projections cannot carry a terminal-disposition owner ref`,path:["terminalDispositionRef"]});if(_.state==="reviewing"&&_.reviews.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Reviewing projections require review refs",path:["reviews"]});if(_.state==="cancelled"&&!_.cancellation)$.addIssue({code:g.ZodIssueCode.custom,message:"Cancelled projections require preservation state",path:["cancellation"]});if(_.cancellation&&_.merge?.outcome)$.addIssue({code:g.ZodIssueCode.custom,message:"Cancellation cannot coexist with a terminal merge outcome",path:["cancellation"]});if(_.state==="recovering"&&!_.recovery)$.addIssue({code:g.ZodIssueCode.custom,message:"Recovering projections require recovery state",path:["recovery"]});if(_.state==="repairing"&&_.repair.cycle===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Repairing projections require a non-zero repair cycle",path:["repair","cycle"]});if(_.merge&&(_.merge.guard.decision==="eligible"||_.merge.guard.decision==="consumed")&&!V_(_.attempt.admissionWriterGenerationRef,_.attempt.writerGenerationRef))$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Merge-ready projections require an eligible guard",path:["merge"]});if(_.state==="merged"&&_.merge?.outcome?.status!=="merged")$.addIssue({code:g.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:g.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:g.ZodIssueCode.custom,message:"Cleanup-complete projections require an immutable cleanup outcome",path:["cleanup"]});if(_.state==="rolled_back"&&_.rollback?.outcome?.status!=="succeeded")$.addIssue({code:g.ZodIssueCode.custom,message:"Rolled-back projections require a successful rollback outcome",path:["rollback"]});if((_.state==="failed"||_.state==="blocked")&&_.evidenceRefs.length===0)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:"Non-terminal projections cannot carry terminal owner outcomes",path:["state"]});let Y=new Set;for(let[Q,F]of _.adapterExtensions.entries()){let q=`${F.mode}:${F.schema}`;if(Y.has(q))$.addIssue({code:g.ZodIssueCode.custom,message:"Adapter extensions must be unique per local/cloud mode and schema",path:["adapterExtensions",Q]});Y.add(q)}});var Lv=g.object({id:g.string().min(1),at:B_,kind:g.enum(["message","tool_call","command","file_change","error","test","decision","verification","status","other"]),summary:g.string().min(1),resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([]),costEstimate:b1.optional()}).strict(),Jv=J_(y.agentTrajectory).extend({actor:e$,workRunRef:__.optional(),events:g.array(Lv).default([]),outcome:g.enum(["succeeded","failed","cancelled","blocked","unknown"]).default("unknown"),proofBundleRef:__.optional()}).strict(),Wv="v1",Pv=g.enum(["library","cli-with-store","service","saas"]),zv=["user-hosted","hasna-saas"],Xv=g.enum(zv),Gv=["api","sdk","mcp","cli"],S8=g.enum(Gv),Rv=g.enum(["supported","deferred","unsupported"]),Yv=g.enum(["none","local-only","api-key","session","service-token","custom"]),pW=g.object({method:g.enum(["GET","POST","PUT","PATCH","DELETE"]),path:g.string().regex(/^\/[A-Za-z0-9_./:*-]*$/,"Endpoint paths must be absolute HTTP paths"),public:g.boolean().default(!1),description:g.string().min(1).optional()}).strict(),Qv=g.object({id:g.string().min(1),kind:g.enum(["auth","storage","secret-ref","migration","health","readiness","redaction","smoke","operator","other"]),required:g.boolean().default(!0),command:g.string().min(1).optional(),evidenceRef:T_.optional(),status:g.enum(["pending","passed","failed","blocked","deferred"]).default("pending"),summary:g.string().min(1).optional()}).strict().superRefine((_,$)=>{if((_.status==="passed"||_.status==="failed"||_.status==="blocked")&&!_.command&&!_.evidenceRef&&!_.summary)$.addIssue({code:g.ZodIssueCode.custom,message:"Terminal readiness gates require command, evidenceRef, or summary",path:["status"]})}),Kv=g.object({name:g.string().min(1),kind:S8.optional(),status:Rv,bin:g.string().min(1).optional(),mcpBin:g.string().min(1).optional(),authMode:Yv,health:pW.optional(),readiness:pW.optional(),version:pW.optional(),apiBasePath:g.string().regex(/^\/v[0-9]+$/,"Stable API base path must be /vN").optional(),openApiPath:g.string().regex(/^\/[A-Za-z0-9_./:-]*$/).optional(),exportSubpath:g.string().regex(/^\.(?:\/[A-Za-z0-9_.-]+(?:\/[A-Za-z0-9_.-]+)*)?$/,"SDK export subpaths must be package export keys such as . or ./sdk").optional(),generatedFrom:g.string().regex(/^\/[A-Za-z0-9_./:-]*$/,"SDK generatedFrom must reference an absolute OpenAPI path").optional(),clientClassName:g.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/).optional(),deferReason:g.string().min(1).optional(),readinessGates:g.array(Qv).default([])}).strict().superRefine((_,$)=>{if(_.status==="supported"){if(!_.kind||_.kind==="api"){if(!_.bin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a serve bin",path:["bin"]});if(!_.health)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a health endpoint",path:["health"]});if(!_.readiness)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a readiness endpoint",path:["readiness"]});if(!_.version)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported API surfaces require a version endpoint",path:["version"]})}if(_.kind==="cli"&&!_.bin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported CLI surfaces require a bin",path:["bin"]});if(_.kind==="mcp"&&!_.mcpBin)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported MCP surfaces require an mcpBin",path:["mcpBin"]});if(_.kind==="sdk"&&!_.exportSubpath)$.addIssue({code:g.ZodIssueCode.custom,message:"Supported SDK surfaces require an exportSubpath",path:["exportSubpath"]})}if((_.status==="deferred"||_.status==="unsupported")&&!_.deferReason)$.addIssue({code:g.ZodIssueCode.custom,message:"Deferred or unsupported service surfaces require a deferReason",path:["deferReason"]});if(_.health&&_.health.path!=="/health")$.addIssue({code:g.ZodIssueCode.custom,message:"Health endpoint must be /health",path:["health","path"]});if(_.health&&_.health.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Health endpoint must use GET",path:["health","method"]});if(_.readiness&&_.readiness.path!=="/ready")$.addIssue({code:g.ZodIssueCode.custom,message:"Readiness endpoint must be /ready",path:["readiness","path"]});if(_.readiness&&_.readiness.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Readiness endpoint must use GET",path:["readiness","method"]});if(_.version&&_.version.path!=="/version")$.addIssue({code:g.ZodIssueCode.custom,message:"Version endpoint must be /version",path:["version","path"]});if(_.version&&_.version.method!=="GET")$.addIssue({code:g.ZodIssueCode.custom,message:"Version endpoint must use GET",path:["version","method"]})}),Tv=["sqlite","postgres"],L8=g.enum(Tv),J8=["sqlite","postgres"],Fv=g.enum(J8),$P=["postgres"],Vv=g.object({kind:S8,reason:g.string().trim().min(1)}).strict(),OP=500,SP=200,QN=(_)=>g.string().trim().min(1).max(_).regex(/^[^\u0000-\u001f\u007f]+$/,"Waiver text must not contain control characters"),Bv=["domain","host","ip","email"],Mv=g.object({kind:g.enum(Bv),reason:QN(OP),reviewedBy:QN(SP),expiresAt:B_}).strict(),bv=g.object({engine:g.enum($P),reason:QN(OP),reviewedBy:QN(SP).optional(),expiresAt:B_.optional()}).strict();function Zv(_){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 Hv=g.object({conformance:g.object({waivedSurfaces:g.array(Vv).default([]),waiverProfile:g.literal("non-node-monorepo").optional(),waivedStorageEngines:g.array(bv).default([]),waivedAssetInventories:g.array(Mv).default([])}).catchall(g.unknown()).optional(),release:g.object({artifactScan:g.object({script:g.string().trim().min(1)}).strict().optional()}).catchall(g.unknown()).optional()}).catchall(g.unknown()),kv=g.string().regex(/^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/,"App names must be lowercase dashed identifiers"),qv=["","-cli","-mcp","-serve","-worker","-runner","-daemon","-migrate","-doctor"];function Cv(_){return qv.map(($)=>`${_}${$}`)}function f9(_){return`hasna/oss/${_}/database-url`}var vv=g.object({mode:L8,engines:g.array(Fv).min(1).optional(),envPrefix:g.string().regex(/^HASNA_[A-Z][A-Z0-9]*_$/).optional(),aliasEnvPrefix:g.string().regex(/^[A-Z][A-Z0-9]*_$/).optional(),databaseUrlSecretRef:g.string().regex(/^hasna\/oss\/[a-z0-9-]+\/database-url$/).optional(),sqlitePath:g.string().min(1).endsWith(".db","storage.sqlitePath must end in .db").optional(),pgTestGate:g.object({envVar:g.string().regex(/^[A-Z][A-Z0-9_]*_TEST_DATABASE_URL$/),command:g.string().trim().min(1)}).strict().optional()}).strict().superRefine((_,$)=>{if(_.engines&&new Set(_.engines).size!==_.engines.length)$.addIssue({code:g.ZodIssueCode.custom,message:"storage.engines must not contain duplicates",path:["engines"]});if(_.engines?.includes("postgres")&&!_.envPrefix)$.addIssue({code:g.ZodIssueCode.custom,message:"storage.engines containing postgres requires envPrefix for the HASNA_<NAME>_DATABASE_URL contract",path:["envPrefix"]})}),W8=g.enum(["0600"]),P8=g.enum(["0700"]),z8=g.enum([".hasna",".codewith"]),wv=g.enum(["directory","file","sqlite_db","sqlite_wal","sqlite_shm","backup","export","report","tmp","log","session","snapshot"]),SD=R$.refine((_)=>!_.startsWith("~"),"Local store path patterns must be relative to their declared root"),rv=g.object({id:g.string().min(1),source:g.enum(["sqlite","manifest","index","runtime","package_adapter"]),table:g.string().min(1).optional(),column:g.string().min(1).optional(),description:g.string().min(1),required:g.boolean().default(!0)}).strict(),fv=g.object({safeWhen:g.enum(["exclusive_access","offline_only","never"]),operations:g.array(g.enum(["wal_checkpoint_truncate","incremental_vacuum","optimize","vacuum"])).default([])}).strict().superRefine((_,$)=>{if(_.safeWhen==="never"&&_.operations.length>0)$.addIssue({code:g.ZodIssueCode.custom,message:"sqliteMaintenance.safeWhen=never cannot declare operations",path:["operations"]})}),xv=g.object({id:g.string().min(1),description:g.string().min(1),ttlDays:g.number().int().nonnegative().optional(),artifactClasses:g.array(wv).min(1),allowlistGlobs:g.array(SD).min(1),activeRecordExclusions:g.array(rv).default([]),sqliteMaintenance:fv.optional()}).strict(),uv=g.object({storeId:g.string().regex(/^[a-z][a-z0-9-]*$/),packageName:g.string().min(1),displayName:g.string().min(1),root:z8,relativePath:SD,directoryMode:P8.default("0700"),fileMode:W8.default("0600"),sqliteDatabaseGlobs:g.array(SD).default([]),sensitiveFileGlobs:g.array(SD).default([]),backupGlobs:g.array(SD).default([]),exportGlobs:g.array(SD).default([]),retentionAdapters:g.array(xv).default([]),notes:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{if(_.relativePath.includes("*"))$.addIssue({code:g.ZodIssueCode.custom,message:"store relativePath must be a concrete directory; use glob fields for files",path:["relativePath"]});let D=new Set;for(let[I,U]of _.retentionAdapters.entries()){if(D.has(U.id))$.addIssue({code:g.ZodIssueCode.custom,message:"retention adapter ids must be unique within a store",path:["retentionAdapters",I,"id"]});D.add(U.id)}}),X8=J_(y.secureLocalStorePolicy).extend({version:g.string().min(1),scope:g.array(z8).min(1),defaults:g.object({directoryMode:P8.default("0700"),fileMode:W8.default("0600"),dryRunDefault:g.literal(!0),requireExplicitApply:g.literal(!0),includeSqliteSidecars:g.literal(!0),redactedEvidenceOnly:g.literal(!0)}).strict(),stores:g.array(uv).min(1),lifecycle:g.object({retentionDryRunDefault:g.literal(!0),requireActiveRecordExclusionProof:g.literal(!0),requireArtifactAllowlist:g.literal(!0),sqliteMaintenanceRequiresExclusiveAccess:g.literal(!0)}).strict(),warnings:g.array(g.string().min(1)).default([])}).strict().superRefine((_,$)=>{let D=new Set;for(let[I,U]of _.stores.entries()){if(D.has(U.storeId))$.addIssue({code:g.ZodIssueCode.custom,message:"store ids must be unique",path:["stores",I,"storeId"]});if(D.add(U.storeId),!_.scope.includes(U.root))$.addIssue({code:g.ZodIssueCode.custom,message:"store root must be listed in policy scope",path:["stores",I,"root"]})}}),yv=g.object({$schema:g.string().min(1).optional(),schema:g.literal(y.serviceContract),name:kv,class:Pv,contractVersion:g.literal(Wv),kitVersion:g.string().min(1),description:g.string().min(1).optional(),bins:g.array(g.string().min(1)).default([]),storage:vv.optional(),hosting:g.array(Xv).min(1).default(["user-hosted"]),serviceSurfaces:g.array(Kv).default([]),metadata:Hv.optional()}).strict().superRefine((_,$)=>{if(new Set(_.hosting).size!==_.hosting.length)$.addIssue({code:g.ZodIssueCode.custom,message:"hosting must not contain duplicates",path:["hosting"]});let D=new Set(Cv(_.name)),I=new Set;for(let[O,S]of _.bins.entries()){if(I.has(S))$.addIssue({code:g.ZodIssueCode.custom,message:"Duplicate bin declaration",path:["bins",O]});if(I.add(S),!D.has(S))$.addIssue({code:g.ZodIssueCode.custom,message:`Bin "${S}" is not allowlisted for app "${_.name}"; allowed: ${[...D].join(", ")}`,path:["bins",O]})}let U=(O)=>I.has(`${_.name}${O}`);if(_.storage){let O=_.name.toUpperCase().replace(/-/g,"_");if(_.storage.envPrefix&&_.storage.envPrefix!==`HASNA_${O}_`)$.addIssue({code:g.ZodIssueCode.custom,message:`storage.envPrefix must be HASNA_${O}_`,path:["storage","envPrefix"]});if(_.storage.databaseUrlSecretRef&&_.storage.databaseUrlSecretRef!==f9(_.name))$.addIssue({code:g.ZodIssueCode.custom,message:`storage.databaseUrlSecretRef must be ${f9(_.name)}`,path:["storage","databaseUrlSecretRef"]})}if(_.class==="library"){if(_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"library repos must not declare storage",path:["storage"]});if(U("-serve")||U("-mcp"))$.addIssue({code:g.ZodIssueCode.custom,message:"library repos must not ship a -serve or -mcp bin",path:["bins"]})}if(_.class==="cli-with-store"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"cli-with-store repos must declare storage",path:["storage"]});else{if(_.storage.mode==="sqlite"&&!_.storage.sqlitePath)$.addIssue({code:g.ZodIssueCode.custom,message:"sqlite cli-with-store storage requires sqlitePath (~/.hasna/<name>/<name>.db)",path:["storage","sqlitePath"]});if(_.storage.engines){let O=new Set(_.storage.engines),S=_.metadata?.conformance?.waivedStorageEngines??[],L=Zv({class:_.class,name:_.name,bins:_.bins,hosting:_.hosting,storageMode:_.storage.mode}),P=new Set(L?[]:S.map((G)=>G.engine)),z=J8.filter((G)=>!O.has(G)&&!P.has(G));if(z.length>0){let G=L&&S.length>0?`; declared waiver ignored: ${L}`:"";$.addIssue({code:g.ZodIssueCode.custom,message:`cli-with-store storage.engines must declare both sqlite and postgres unless the engine carries a metadata.conformance.waivedStorageEngines waiver; missing: ${z.join(", ")}${G}`,path:["storage","engines"]})}}}if(!I.has(_.name))$.addIssue({code:g.ZodIssueCode.custom,message:`cli-with-store repos must ship the "${_.name}" bin`,path:["bins"]})}if(_.class==="service"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"service repos must declare storage",path:["storage"]});else if(_.storage.engines&&(!_.storage.engines.includes("sqlite")||!_.storage.engines.includes("postgres")))$.addIssue({code:g.ZodIssueCode.custom,message:"service storage.engines must declare both sqlite and postgres",path:["storage","engines"]});if(!U("-serve"))$.addIssue({code:g.ZodIssueCode.custom,message:`service repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"service repos must declare at least one service surface",path:["serviceSurfaces"]})}if(_.class==="saas"){if(!_.storage)$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must declare storage",path:["storage"]});else{if(_.storage.mode!=="postgres")$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must use the postgres storage backend",path:["storage","mode"]});if(!_.storage.envPrefix)$.addIssue({code:g.ZodIssueCode.custom,message:"saas storage requires envPrefix for the public DATABASE_URL contract",path:["storage","envPrefix"]})}if(!U("-serve"))$.addIssue({code:g.ZodIssueCode.custom,message:`saas repos must ship the "${_.name}-serve" bin`,path:["bins"]});if(_.serviceSurfaces.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"saas repos must declare at least one service surface",path:["serviceSurfaces"]})}for(let[O,S]of _.serviceSurfaces.entries()){if(S.bin&&!I.has(S.bin))$.addIssue({code:g.ZodIssueCode.custom,message:`Service surface bin "${S.bin}" must be declared in bins`,path:["serviceSurfaces",O,"bin"]});if(S.mcpBin&&!I.has(S.mcpBin))$.addIssue({code:g.ZodIssueCode.custom,message:`Service surface MCP bin "${S.mcpBin}" must be declared in bins`,path:["serviceSurfaces",O,"mcpBin"]})}let E=_.metadata?.conformance?.waivedSurfaces??[],j=new Set;for(let[O,S]of E.entries()){if(j.has(S.kind))$.addIssue({code:g.ZodIssueCode.custom,message:`Duplicate conformance waiver for ${S.kind}`,path:["metadata","conformance","waivedSurfaces",O,"kind"]});j.add(S.kind)}let N=_.metadata?.conformance?.waivedStorageEngines??[],A=new Set;for(let[O,S]of N.entries()){if(A.has(S.engine))$.addIssue({code:g.ZodIssueCode.custom,message:`Duplicate storage-engine waiver for ${S.engine}`,path:["metadata","conformance","waivedStorageEngines",O,"engine"]});A.add(S.engine)}}),Lm=g.object({status:g.enum(["ok","degraded","unavailable"]),version:g.string().min(1),mode:L8}).strict(),Jm=g.object({ready:g.boolean(),reason:g.string().min(1).optional()}).strict(),Wm=g.object({version:g.string().min(1)}).strict(),hv=g.enum(["info","notice","breaking","critical"]),cv=g.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 (<source>.<entity>.<action>)"),nv=["FREEZE","UNFREEZE","BREAKING","CUTOVER","POLICY","RELEASE"],dv=g.enum(nv);var mv=g.enum(["fleet","package","machine"]),G8=J_(y.commsEventEnvelope).extend({type:cv,severity:hv,scope:mv,summary:g.string().min(1).optional(),source:e$.optional(),affected_packages:g.array(p).default([]),affected_machines:g.array(p).default([]),action_required:g.boolean().default(!1),ack_by:B_.optional(),dedupe_key:p,resourceRefs:g.array(__).default([]),evidenceRefs:g.array(T_).default([])}).strict().superRefine((_,$)=>{if(_.scope==="package"&&_.affected_packages.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Package-scoped comms events require affected_packages",path:["affected_packages"]});if(_.scope==="machine"&&_.affected_machines.length===0)$.addIssue({code:g.ZodIssueCode.custom,message:"Machine-scoped comms events require affected_machines",path:["affected_machines"]});if(_.ack_by&&!_.action_required)$.addIssue({code:g.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:g.ZodIssueCode.custom,message:`${_.type} events are always critical`,path:["severity"]});if(_.scope!=="fleet")$.addIssue({code:g.ZodIssueCode.custom,message:`${_.type} events are always fleet-scoped`,path:["scope"]});if(!_.action_required)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.type} events require action_required`,path:["action_required"]})}}),lv=g.enum(["fleet","package","product","loop-lane","initiative","personal"]),iv=g.enum(["quiet","work","firehose"]),tv=p.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:<todos-id>)"),ov=J_(y.commsChannelMetadata).extend({class:lv,noise:iv.optional(),owner:p.optional(),until:tv.optional(),successor:p.optional()}).strict().superRefine((_,$)=>{if(_.class==="initiative"){if(!_.owner)$.addIssue({code:g.ZodIssueCode.custom,message:"Initiative channels require an owner",path:["owner"]});if(!_.until)$.addIssue({code:g.ZodIssueCode.custom,message:"Initiative channels require an until horizon (date or gate id)",path:["until"]})}}),x9={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}},pv=J_(y.commsMessageMetadata).extend({tag:dv,envelope:G8}).strict().superRefine((_,$)=>{let D=x9[_.tag];if(!D.allowedSeverities.includes(_.envelope.severity))$.addIssue({code:g.ZodIssueCode.custom,message:`[${_.tag}] posts allow severities ${D.allowedSeverities.join(", ")}`,path:["envelope","severity"]});if(D.requiredEventType&&_.envelope.type!==D.requiredEventType)$.addIssue({code:g.ZodIssueCode.custom,message:`[${_.tag}] posts require event type ${D.requiredEventType}`,path:["envelope","type"]});for(let[I,U]of Object.entries(x9))if(U.requiredEventType===_.envelope.type&&_.tag!==I)$.addIssue({code:g.ZodIssueCode.custom,message:`${_.envelope.type} events must use the [${I}] tag`,path:["tag"]})});var ev={[y.actorRef]:Kq,[y.resourceRef]:Tq,[y.evidenceRef]:Vq,[y.workRun]:wC,[y.taskToPrProjection]:Sv,[y.decisionEnvelope]:s9,[y.costEstimate]:b1,[y.capabilityCard]:Mq,[y.providerLiveModeStandard]:Cq,[y.contextPack]:_8,[y.integrationRef]:$8,[y.projectManifest]:xq,[y.projectPanel]:D8,[y.projectSnapshot]:tq,[y.renderManifest]:cq,[y.agentTrajectory]:Jv,[y.validationPlan]:oq,[y.proofBundle]:vC,[y.scaffoldManifest]:DC,[y.scaffoldInstallRecord]:IC,[y.appCloudManifest]:E8,[y.noCloudEvidencePack]:qC,[y.secureLocalStorePolicy]:X8,[y.serviceContract]:yv,[y.commsEventEnvelope]:G8,[y.commsChannelMetadata]:ov,[y.commsMessageMetadata]:pv,[y.app]:LC,[y.release]:WC,[y.rolloutRecord]:XC,[y.announcement]:QC,[y.audience]:MC};class R8 extends Error{schemaId;issues;constructor(_,$){super(`Contract validation failed for ${_}`);this.name="ContractValidationError",this.schemaId=_,this.issues=$}}function Y8(_,$){let I=ev[_].safeParse($);if(!I.success)throw new R8(_,I.error.issues);return I.data}var Pm=String.raw`(?:^|[^\w$])(?:_*(?:import|require)|createRequire|Module\s*\.\s*_load)`;var LP=[{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"}],zm=LP.filter((_)=>("checkKind"in _)),av=LP.filter((_)=>_.kind==="module"),Xm=[...new Set([...XN,...av.map((_)=>_.pattern)])],Gm=LP.filter((_)=>_.kind==="config");var u9="^[^\\u0000-\\u001f\\u007f]*$",Rm={$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:y.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: <name>, <name>-cli, <name>-mcp, <name>-serve, <name>-worker, <name>-runner, <name>-daemon, <name>-migrate, <name>-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/<name>/<name>.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:$P.length,items:{type:"object",additionalProperties:!1,required:["engine","reason"],properties:{engine:{enum:[...$P]},reason:{type:"string",minLength:1,maxLength:OP,allOf:[{pattern:"\\S"},{pattern:u9}]},reviewedBy:{type:"string",minLength:1,maxLength:SP,allOf:[{pattern:"\\S"},{pattern:u9}]},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 <name>-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 sv="2026-07-06";function t$(_,$,D,I,U,E=[],j){return{id:_,description:$,ttlDays:D,artifactClasses:I,allowlistGlobs:U,activeRecordExclusions:E.map((N)=>({...N,required:N.required??!0})),sqliteMaintenance:j}}var Ym=X8.parse({schema:y.secureLocalStorePolicy,id:"hasna-secure-local-store-defaults",createdAt:"2026-07-06T00:00:00.000Z",version:sv,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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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:[t$("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 _w=64,Qm=new RegExp(`^[A-Za-z0-9][A-Za-z0-9._-]{0,${_w-1}}$`),AD="[0-9a-fA-F]",Km=new RegExp(`^\\{?(?:${AD}{8}-${AD}{4}-${AD}{4}-${AD}{4}-${AD}{12}|${AD}{32})\\}?$`);var $w=/^hasna_([a-z][a-z0-9-]*)_([A-Za-z0-9_-]+)\.([A-Za-z0-9_-]+)$/;var Tm=new RegExp($w.source.replace(/^\^/,"\\b").replace(/\$$/,"\\b"));var Q8="@hasna/knowledge";function Dw(_){if(!Number.isFinite(_??0))return 20;return Math.max(1,Math.min(100,Math.trunc(_??20)))}function Uw(_){return _.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-")||"project"}function Z1(_,$=180){let D=String(_??"").replace(/\s+/g," ").trim();if(D.length<=$)return D;return`${D.slice(0,Math.max(0,$-3))}...`}function w_(_,$=""){return typeof _==="string"&&_.length>0?_:$}function H1(_){return typeof _==="number"&&Number.isFinite(_)?_:0}function HD(_){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 VN(_){return r$.safeParse(_).success}function f$(_,$,D,I,U=[]){return{kind:_,id:$,name:D,uri:I&&VN(I)?I:void 0,externalId:$,sourcePackage:Q8,tags:U}}function Iw(_){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(HD).filter(Boolean).sort((D,I)=>I.localeCompare(D))[0]}function Ew(_){if(!_)return"unknown";let $=Date.now()-new Date(_).valueOf();if(!Number.isFinite($))return"unknown";return $>2592000000?"stale":"fresh"}function jw(_){let $=(D)=>{let I=String(D??"").toLowerCase();return I!==""&&!["done","complete","completed","resolved","succeeded","skipped"].includes(I)};return _.reindex_queue.filter((D)=>$(D.status)).length+_.sync_conflicts.filter((D)=>$(D.status)).length+_.approval_gates.filter((D)=>$(D.status)).length}function Nw(_,$){let D=[];for(let I of _.items.slice(0,$))D.push({id:`item_${I.id}`,title:I.title,summary:Z1(I.content_preview),status:I.archived?"archived":"active",priority:"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("knowledge",I.id,I.title,`knowledge://item/${encodeURIComponent(I.id)}`,I.tags)],evidenceRefs:I.url&&VN(I.url)?[{id:`url_${I.id}`,kind:"url",uri:I.url,summary:"Source URL for this knowledge item."}]:[],metadata:{source:"legacy_store",archived:I.archived,tags:I.tags,url:I.url||void 0}});for(let I of _.sources.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,w_(I.uri,"source")),E=w_(I.title,w_(I.uri,U)),j=w_(I.uri,`knowledge://source/${encodeURIComponent(U)}`);D.push({id:`source_${U}`,title:E,summary:Z1(`${H1(I.chunks)} chunk(s), ${H1(I.revisions)} revision(s)`),status:H1(I.chunks)>0?"indexed":"source",priority:"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("document",U,E,j)],evidenceRefs:VN(j)?[{id:`source_${U}`,kind:"url",uri:j,summary:"Source reference."}]:[],metadata:{source:"knowledge_db.sources",kind:I.kind,chunks:H1(I.chunks),revisions:H1(I.revisions)}})}for(let I of _.chunks.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"chunk"),E=w_(I.source_uri);D.push({id:`chunk_${U}`,title:w_(I.wiki_title,E?`Chunk from ${E}`:`Knowledge chunk ${U}`),summary:Z1(I.text_preview),status:"chunk",priority:"low",timestamp:HD(I.created_at),resourceRefs:[f$("context_pack",U,w_(I.wiki_title,U),`knowledge://chunk/${encodeURIComponent(U)}`)],evidenceRefs:E&&VN(E)?[{id:`chunk_source_${U}`,kind:"url",uri:E,summary:"Chunk source reference."}]:[],metadata:{source:"knowledge_db.chunks",source_uri:E||void 0,token_count:I.token_count,ordinal:I.ordinal}})}for(let I of _.sync_conflicts.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"sync_conflict");D.push({id:`sync_conflict_${U}`,title:`Sync conflict: ${w_(I.entity_kind,"entity")}/${w_(I.entity_id,U)}`,summary:Z1(`Status ${w_(I.status,"unknown")}; strategy ${w_(I.resolution_strategy,"none")}.`),status:w_(I.status,"unknown"),priority:"critical",timestamp:HD(I.created_at),resourceRefs:[f$("finding",U,"Knowledge sync conflict",`knowledge://sync-conflict/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.sync_conflicts",local_machine_id:I.local_machine_id,remote_machine_id:I.remote_machine_id}})}for(let I of _.reindex_queue.slice(0,Math.max(0,$-D.length))){let U=w_(I.id,"reindex");D.push({id:`reindex_${U}`,title:`Reindex ${w_(I.kind,"item")}: ${w_(I.target_id,U)}`,summary:Z1(I.reason),status:w_(I.status,"unknown"),priority:w_(I.status).toLowerCase()==="failed"?"high":"medium",timestamp:HD(I.updated_at??I.created_at),resourceRefs:[f$("action",U,"Knowledge reindex work item",`knowledge://reindex/${encodeURIComponent(U)}`)],metadata:{source:"knowledge_db.reindex_queue",attempts:I.attempts,source_uri:I.source_uri}})}return D.slice(0,$)}async function K8(_,$={}){let D=Dw($.limit),I=new Date().toISOString(),U=Uw(_),j=await($.service??zN({scope:$.scope??"project",cwd:$.cwd})).resolveInventory({limit:D,storePath:$.storePath,includeArchived:$.includeArchived}),N=Iw(j),A=Ew(N),O=j.summary.active_items+j.summary.sources+j.summary.chunks+j.summary.wiki_pages+j.summary.storage_objects,S=jw(j),L=O===0?"empty":A==="stale"?"stale":"ready",P=Nw(j,D),z={schema:y.projectPanel,id:`knowledge_panel_${U}`,createdAt:I,projectId:U,provider:{kind:"knowledge",id:`knowledge_${U}`,name:"Knowledge",sourcePackage:Q8,externalId:j.home},kind:"knowledge",title:"Knowledge",summary:L==="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:L,stateReason:L==="stale"?"Latest indexed knowledge activity is older than 30 days.":void 0,generatedAt:I,freshness:A,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:S,status:S>0?"warning":"good"}],items:P,actions:[f$("action","knowledge:inventory","Inspect knowledge inventory"),f$("action","knowledge:context-pack","Build cited context pack"),f$("action","knowledge:ingest","Ingest project source")],resourceRefs:[f$("project",U,_,`project://${U}`),f$("knowledge",`home_${U}`,"Knowledge workspace",`knowledge://workspace/${encodeURIComponent(U)}`),f$("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 Y8(y.projectPanel,z)}function T8(_){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 B8=["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 M8="HASNA_KNOWLEDGE_STORAGE_MODE",b8="KNOWLEDGE_STORAGE_MODE";function F8(_){return process.env[_]?.trim()||void 0}function V8(_){let $=_?.trim().toLowerCase().replace(/-/g,"_");if($==="sqlite")return"sqlite";if($==="postgres"||$==="postgresql")return"postgres";return}function gw(_={}){let $=g0(f1(_.scope,_.cwd).home);return c($.knowledgeDbPath),{db:w($.knowledgeDbPath),path:$.knowledgeDbPath,scope:_.scope??"global"}}function Z8(){let _=V8(F8(M8))??V8(F8(b8));if(_)return _;return"sqlite"}function JP(_={}){let $=gw(_);try{Aw($.db);let D=$.db.query("SELECT table_name, last_synced_at, direction FROM _knowledge_sync_meta ORDER BY table_name, direction").all();return{mode:Z8(),service:"knowledge",scope:$.scope,databasePath:$.path,tables:B8,sync:D}}finally{$.db.close()}}function Aw(_){_.exec(` CREATE TABLE IF NOT EXISTS _knowledge_sync_meta ( table_name TEXT NOT NULL, last_synced_at TEXT, @@ -2761,9 +2767,9 @@ Pages should be concise, cited, and organized for both humans and agents. archived, id ) WHERE metadata #>> '{hasna_knowledge_relations,schema}' - = 'hasna.knowledge.relations.v1'`,...I9()];var l8=HY(m8(),1),{program:Al,createCommand:Ol,createArgument:Ll,createOption:Sl,CommanderError:Jl,InvalidArgumentError:Wl,InvalidOptionArgumentError:Pl,Command:i8,Argument:zl,Option:Xl,Help:Gl}=l8.default;import{chmod as KP,mkdir as Ar,readFile as Or,rename as Lr,writeFile as e8}from"fs/promises";import{Buffer as EY}from"buffer";import{existsSync as jY}from"fs";import{homedir as Sr}from"os";import{join as v1}from"path";import{createHmac as Gr,timingSafeEqual as Bl}from"crypto";import{randomUUID as Qr}from"crypto";import{spawn as Kr}from"child_process";import{randomUUID as br}from"crypto";function $r(_,$){return $.split(".").reduce((D,I)=>{if(D&&typeof D==="object"&&I in D)return D[I];return},_)}function Dr(_,$){let D=[],I=(E)=>{if(!D.some((j)=>Object.is(j,E)))D.push(E)};if($.includes(".")&&$ in _)I(_[$]);let U=$r(_,$);if(U!==void 0||!$.includes("."))I(U);return D}function Ur(_,$={}){let D="";for(let I=0;I<_.length;I+=1){let U=_[I];if(U==="*")if(_[I+1]==="*")D+=".*",I+=1;else D+=$.segmentSafe?"[^/]*":".*";else D+=U.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return new RegExp(`^${D}$`)}function q1(_,$,D={}){if($===void 0)return!0;if(_===void 0)return!1;return(Array.isArray($)?$:[$]).some((U)=>Ur(U,D).test(_))}function t8(_,$){if(!$)return!0;return Object.entries($).every(([D,I])=>{let U=Dr(_,D);return Ir(U,I,D)})}function Ir(_,$,D){if(Nr($))return!_.some((I)=>o8(I,$.not,D));return _.some((I)=>o8(I,$,D))}function o8(_,$,D){if(typeof $==="string"||Array.isArray($))return Er(_).some((I)=>q1(I,$,{segmentSafe:D.endsWith("_path")||D.endsWith(".path")}));if(Array.isArray(_))return _.some((I)=>I===$);return _===$}function Er(_){if(_===void 0)return[];if(Array.isArray(_))return _.flatMap(($)=>jr($)?[String($)]:[]);return[String(_)]}function jr(_){return _===null||typeof _==="string"||typeof _==="number"||typeof _==="boolean"}function Nr(_){return Boolean(_&&typeof _==="object"&&!Array.isArray(_)&&"not"in _)}function gr(_,$){return q1(_.source,$.source)&&q1(_.type,$.type)&&q1(_.subject,$.subject)&&q1(_.severity,$.severity)&&t8(_.data,$.data)&&t8(_.metadata,$.metadata)}function p8(_,$){if(!_.enabled)return!1;if(!_.filters||_.filters.length===0)return!0;return _.filters.some((D)=>gr($,D))}var ZN="HASNA_EVENTS_DIR",HN="HASNA_EVENTS_HOME",BP="local-json-v1:",Jr=100,Wr=1000;function NY(_){return _||process.env[ZN]||process.env[HN]||v1(Sr(),".hasna","events")}function Pr(){if(process.env[ZN])return ZN;if(process.env[HN])return HN;return null}class kN{dataDir;runtime;channelsPath;eventsPath;deliveriesPath;constructor(_=NY()){this.dataDir=_,this.runtime=zr(_),this.channelsPath=v1(_,"channels.json"),this.eventsPath=v1(_,"events.json"),this.deliveriesPath=v1(_,"deliveries.json")}async init(){await Ar(this.dataDir,{recursive:!0,mode:448}),await KP(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((I)=>I.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((I)=>I.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=s8(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 a8($,_)}async listEventsPage(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]),D=a8($,{eventId:_.eventId,source:_.source,type:_.type}),I=qN(_.cursor,_),U=CN(_.limit),E=D.slice(I,I+U),j=I+E.length,N=j<D.length;return{events:E,cursor:_.cursor,nextCursor:N?gY(j,_):void 0,hasMore:N}}async findEventByIdentity(_){let $=await this.listEvents();return s8($,_)}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(!jY(_))await e8(_,`[] + = 'hasna.knowledge.relations.v1'`,...I9()];var l8=HY(m8(),1),{program:Al,createCommand:Ol,createArgument:Sl,createOption:Ll,CommanderError:Jl,InvalidArgumentError:Wl,InvalidOptionArgumentError:Pl,Command:i8,Argument:zl,Option:Xl,Help:Gl}=l8.default;import{chmod as KP,mkdir as Ar,readFile as Or,rename as Sr,writeFile as e8}from"fs/promises";import{Buffer as EY}from"buffer";import{existsSync as jY}from"fs";import{homedir as Lr}from"os";import{join as v1}from"path";import{createHmac as Gr,timingSafeEqual as Bl}from"crypto";import{randomUUID as Qr}from"crypto";import{spawn as Kr}from"child_process";import{randomUUID as br}from"crypto";function $r(_,$){return $.split(".").reduce((D,I)=>{if(D&&typeof D==="object"&&I in D)return D[I];return},_)}function Dr(_,$){let D=[],I=(E)=>{if(!D.some((j)=>Object.is(j,E)))D.push(E)};if($.includes(".")&&$ in _)I(_[$]);let U=$r(_,$);if(U!==void 0||!$.includes("."))I(U);return D}function Ur(_,$={}){let D="";for(let I=0;I<_.length;I+=1){let U=_[I];if(U==="*")if(_[I+1]==="*")D+=".*",I+=1;else D+=$.segmentSafe?"[^/]*":".*";else D+=U.replace(/[|\\{}()[\]^$+?.]/g,"\\$&")}return new RegExp(`^${D}$`)}function q1(_,$,D={}){if($===void 0)return!0;if(_===void 0)return!1;return(Array.isArray($)?$:[$]).some((U)=>Ur(U,D).test(_))}function t8(_,$){if(!$)return!0;return Object.entries($).every(([D,I])=>{let U=Dr(_,D);return Ir(U,I,D)})}function Ir(_,$,D){if(Nr($))return!_.some((I)=>o8(I,$.not,D));return _.some((I)=>o8(I,$,D))}function o8(_,$,D){if(typeof $==="string"||Array.isArray($))return Er(_).some((I)=>q1(I,$,{segmentSafe:D.endsWith("_path")||D.endsWith(".path")}));if(Array.isArray(_))return _.some((I)=>I===$);return _===$}function Er(_){if(_===void 0)return[];if(Array.isArray(_))return _.flatMap(($)=>jr($)?[String($)]:[]);return[String(_)]}function jr(_){return _===null||typeof _==="string"||typeof _==="number"||typeof _==="boolean"}function Nr(_){return Boolean(_&&typeof _==="object"&&!Array.isArray(_)&&"not"in _)}function gr(_,$){return q1(_.source,$.source)&&q1(_.type,$.type)&&q1(_.subject,$.subject)&&q1(_.severity,$.severity)&&t8(_.data,$.data)&&t8(_.metadata,$.metadata)}function p8(_,$){if(!_.enabled)return!1;if(!_.filters||_.filters.length===0)return!0;return _.filters.some((D)=>gr($,D))}var ZN="HASNA_EVENTS_DIR",HN="HASNA_EVENTS_HOME",BP="local-json-v1:",Jr=100,Wr=1000;function NY(_){return _||process.env[ZN]||process.env[HN]||v1(Lr(),".hasna","events")}function Pr(){if(process.env[ZN])return ZN;if(process.env[HN])return HN;return null}class kN{dataDir;runtime;channelsPath;eventsPath;deliveriesPath;constructor(_=NY()){this.dataDir=_,this.runtime=zr(_),this.channelsPath=v1(_,"channels.json"),this.eventsPath=v1(_,"events.json"),this.deliveriesPath=v1(_,"deliveries.json")}async init(){await Ar(this.dataDir,{recursive:!0,mode:448}),await KP(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((I)=>I.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((I)=>I.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=s8(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 a8($,_)}async listEventsPage(_={}){await this.init();let $=await this.readJson(this.eventsPath,[]),D=a8($,{eventId:_.eventId,source:_.source,type:_.type}),I=qN(_.cursor,_),U=CN(_.limit),E=D.slice(I,I+U),j=I+E.length,N=j<D.length;return{events:E,cursor:_.cursor,nextCursor:N?gY(j,_):void 0,hasMore:N}}async findEventByIdentity(_){let $=await this.listEvents();return s8($,_)}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(!jY(_))await e8(_,`[] `,{encoding:"utf-8",mode:384});await KP(_,384).catch(()=>{return})}async readJson(_,$){try{let D=await Or(_,"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 e8(D,`${JSON.stringify($,null,2)} -`,{encoding:"utf-8",mode:384}),await Lr(D,_),await KP(_,384).catch(()=>{return})}}function zr(_=NY()){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 gY(_,$={}){if(!Number.isInteger(_)||_<0)throw Error(`Invalid event cursor offset: ${_}`);let D={offset:_,eventId:$.eventId,source:$.source,type:$.type};return`${BP}${EY.from(JSON.stringify(D),"utf-8").toString("base64url")}`}function qN(_,$={}){if(!_)return 0;if(!_.startsWith(BP))throw Error(`Invalid local JSON event cursor: ${_}`);let D=_.slice(BP.length),I;try{I=JSON.parse(EY.from(D,"base64url").toString("utf-8"))}catch{throw Error(`Invalid local JSON event cursor: ${_}`)}let U=I.offset;if(!Number.isInteger(U)||U<0)throw Error(`Invalid local JSON event cursor: ${_}`);return TP("eventId",I.eventId,$.eventId),TP("source",I.source,$.source),TP("type",I.type,$.type),U}function CN(_){if(_===void 0)return Jr;if(!Number.isInteger(_)||_<1)throw Error(`Event page limit must be a positive integer, got ${_}`);return Math.min(_,Wr)}function a8(_,$){let D=_;if($.eventId)D=D.filter((I)=>I.id===$.eventId);if($.source)D=D.filter((I)=>I.source===$.source);if($.type)D=D.filter((I)=>I.type===$.type);if($.cursor){let I=qN($.cursor,$);D=D.slice(I)}if($.limit!==void 0)D=D.slice(0,CN($.limit));return D}function TP(_,$,D){if($!==D)throw Error(`Local JSON event cursor ${_} filter mismatch`)}function s8(_,$){return _.find((D)=>$.id!==void 0&&D.id===$.id||$.dedupeKey!==void 0&&D.dedupeKey===$.dedupeKey)}async function Xr(_){let $=new kN(_);await $.init();let[D,I,U]=await Promise.all([$.listChannels(),$.listEvents(),$.listDeliveries()]),E=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:ZN,fallback:HN,active:Pr()},files:{channels:FP($.dataDir,"channels.json",D.length),events:FP($.dataDir,"events.json",I.length),deliveries:FP($.dataDir,"deliveries.json",U.length)},counts:{channels:D.length,enabledChannels:D.filter((j)=>j.enabled).length,disabledChannels:D.filter((j)=>!j.enabled).length,events:I.length,deliveries:U.length},transports:E,safety:{includesEventPayloads:!1,includesWebhookSecrets:!1,listOutputsRedactSecrets:!0,statusOutputIsMetadataOnly:!0}}}function FP(_,$,D){let I=v1(_,$);return{path:I,exists:jY(I),records:D}}function Rr(_,$){return`${_}.${$}`}function Yr(_,$,D){return`sha256=${Gr("sha256",_).update(Rr($,D)).digest("hex")}`}function a$(){return new Date().toISOString()}function C1(_,$=4096){return _.length>$?`${_.slice(0,$)}...`:_}function Tr(_,$){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let D=JSON.stringify(_),I=_.time,U={"Content-Type":"application/json","User-Agent":"@hasna/events","X-Hasna-Event-Id":_.id,"X-Hasna-Event-Type":_.type,"X-Hasna-Timestamp":I,...$.webhook.headers};if($.webhook.secret)U["X-Hasna-Signature"]=Yr($.webhook.secret,I,D);return{body:D,headers:U}}async function Fr(_,$,D={}){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let I=a$(),{body:U,headers:E}=Tr(_,$),j=new AbortController,N=setTimeout(()=>j.abort(),$.webhook.timeoutMs??15000);try{let A=await(D.fetchImpl??fetch)($.webhook.url,{method:"POST",headers:E,body:U,signal:j.signal}),O=C1(await A.text());return{attempt:1,status:A.ok?"success":"failed",startedAt:I,completedAt:a$(),responseStatus:A.status,responseBody:O,error:A.ok?void 0:`Webhook returned HTTP ${A.status}`}}catch(A){return{attempt:1,status:"failed",startedAt:I,completedAt:a$(),error:A instanceof Error?A.message:String(A)}}finally{clearTimeout(N)}}async function Vr(_,$){if(!$.command)throw Error(`Channel ${$.id} has no command config`);let D=a$(),I=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:I};return new Promise((E)=>{let j=Kr($.command.command,$.command.args??[],{cwd:$.command.cwd,env:U,stdio:["pipe","pipe","pipe"]}),N="",A="",O=setTimeout(()=>j.kill("SIGTERM"),$.command.timeoutMs??15000);j.stdin.end(I),j.stdout.on("data",(L)=>{N+=L.toString()}),j.stderr.on("data",(L)=>{A+=L.toString()}),j.on("error",(L)=>{clearTimeout(O),E({attempt:1,status:"failed",startedAt:D,completedAt:a$(),stdout:C1(N),stderr:C1(A),error:L.message})}),j.on("close",(L,J)=>{clearTimeout(O);let P=L===0;E({attempt:1,status:P?"success":"failed",startedAt:D,completedAt:a$(),stdout:C1(N),stderr:C1(A),error:P?void 0:`Command exited with ${J?`signal ${J}`:`code ${L}`}`})})})}async function Br(_,$,D={}){if($.transport==="webhook")return Fr(_,$,D);if($.transport==="command")return Vr(_,$);return{attempt:1,status:"skipped",startedAt:a$(),completedAt:a$(),error:`Unsupported transport: ${$.transport}`}}function _Y(_,$,D){let I=D.some((U)=>U.status==="success")?"success":D.every((U)=>U.status==="skipped")?"skipped":"failed";return{id:Qr(),eventId:_.id,channelId:$.id,transport:$.transport,status:I,attempts:D,createdAt:D[0]?.startedAt??a$(),completedAt:D.at(-1)?.completedAt??a$()}}class AY extends Error{eventType;issues;constructor(_,$){let D=$.map((I)=>`${I.path||"<root>"}: ${I.message}`).join("; ");super(`Event validation failed for type "${_}": ${D}`);this.name="EventValidationError",this.eventType=_,this.issues=$}}class OY{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 AY(_.type,$.issues)}}var Mr=new OY;function VP(_){return{id:_.id??br(),source:_.source,type:_.type,time:Cr(_.time),subject:_.subject,severity:_.severity??"info",data:_.data??{},message:_.message,dedupeKey:_.dedupeKey,schemaVersion:_.schemaVersion??"1.0",metadata:_.metadata??{}}}class LY{store;redactors;transportOptions;catalog;validateCatalogTypes;constructor(_={}){this.store=_.store??new kN(_.dataDir),this.redactors=_.redactors??[],this.transportOptions={fetchImpl:_.fetchImpl},this.catalog=_.catalog??Mr,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?VP(_):kr(VP(_));if($.validate??this.validateCatalogTypes)this.catalog.assertEventValid(D);let I=await this.appendEvent(D,{dedupe:$.dedupe!==!1});if(I.deduped)return{event:I.event,deliveries:[],deduped:!0};let U=$.deliver===!1?[]:await this.deliver(I.event);return{event:I.event,deliveries:U,deduped:!1}}async listEvents(_={}){if(Object.keys(_).length===0)return this.store.listEvents();return $Y(await this.store.listEvents(),_)}async listEventsPage(_={}){if(this.store.listEventsPage)return this.store.listEventsPage(_);let $=$Y(await this.store.listEvents(),{eventId:_.eventId,source:_.source,type:_.type}),D=qN(_.cursor,_),I=CN(_.limit),U=$.slice(D,D+I),E=D+U.length,j=E<$.length;return{events:U,cursor:_.cursor,nextCursor:j?gY(E,_):void 0,hasMore:j}}async listDeliveries(){return this.store.listDeliveries()}async deliver(_){let D=(await this.store.listChannels()).filter((U)=>p8(U,_)),I=[];for(let U of D){let E=await this.applyRedaction(_,U),j=await this.deliverWithRetry(E,U);await this.store.appendDelivery(j),I.push(j)}return I}async matchChannel(_,$={}){let D=await this.store.getChannel(_);if(!D)throw Error(`Channel not found: ${_}`);let I=VP({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=p8(D,I);return{channelId:D.id,matched:U,event:I,filters:D.filters,reason:U?void 0:D.enabled?"event did not match channel filters":"channel is disabled"}}async testChannel(_,$={},D={}){let I=await this.store.getChannel(_);if(!I)throw Error(`Channel not found: ${_}`);let U=await this.matchChannel(_,$),E=U.event;if(D.honorFilters&&!U.matched){let A=new Date().toISOString(),O=_Y(E,I,[{attempt:1,status:"skipped",startedAt:A,completedAt:A,error:U.reason}]);return O.metadata={reason:"filter_mismatch"},await this.store.appendDelivery(O),O}let j=await this.applyRedaction(E,I),N=await this.deliverWithRetry(j,I);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 I of $.events)D.push(...await this.deliver(I));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 I=await this.store.findEventByIdentity({id:_.id,dedupeKey:_.dedupeKey});if(I)return{event:I,stored:!1,deduped:!0,identity:{id:I.id,dedupeKey:I.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=Zr(_,$.redact?.paths??[],$.redact?.replacement??"[REDACTED]");for(let I of this.redactors)D=await I(D,$);return D}async deliverWithRetry(_,$){let D=vr($.retry),I=[];for(let U=0;U<D.maxAttempts;U+=1){let E=await Br(_,$,this.transportOptions);if(E.attempt=U+1,E.status==="failed"&&U+1<D.maxAttempts)E.nextBackoffMs=Math.round(D.backoffMs*D.multiplier**U);if(I.push(E),E.status!=="failed")break;if(E.nextBackoffMs)await Bun.sleep(E.nextBackoffMs)}return _Y(_,$,I)}}function Zr(_,$,D="[REDACTED]"){if($.length===0)return _;let I=structuredClone(_);for(let U of $)qr(I,U,D);return I}function SY(_){let $=structuredClone(_);if($.webhook?.secret)$.webhook.secret="[REDACTED]";if($.command?.env)$.command.env=Object.fromEntries(Object.entries($.command.env).map(([D,I])=>[D,JY(D)?"[REDACTED]":I]));return $}function Hr(_){return _.map(SY)}function kr(_,$="[REDACTED]"){return MP(_,$)}function JY(_){return/secret|token|password|api[_-]?key|authorization/i.test(_)}function MP(_,$){if(Array.isArray(_))return _.map((D)=>MP(D,$));if(!_||typeof _!=="object")return _;return Object.fromEntries(Object.entries(_).map(([D,I])=>[D,JY(D)?$:MP(I,$)]))}function qr(_,$,D){let I=$.split("."),U=_;for(let j of I.slice(0,-1)){let N=U[j];if(!N||typeof N!=="object")return;U=N}let E=I.at(-1);if(E&&E in U)U[E]=D}function $Y(_,$){let D=_;if($.eventId)D=D.filter((I)=>I.id===$.eventId);if($.source)D=D.filter((I)=>I.source===$.source);if($.type)D=D.filter((I)=>I.type===$.type);if($.cursor)D=D.slice(qN($.cursor,$));if($.limit!==void 0)D=D.slice(0,CN($.limit));return D}function Cr(_){if(!_)return new Date().toISOString();return _ instanceof Date?_.toISOString():_}function vr(_){return{maxAttempts:Math.max(1,_?.maxAttempts??1),backoffMs:Math.max(0,_?.backoffMs??250),multiplier:Math.max(1,_?.multiplier??2)}}function bN(_,$,D=!1){if(!_?.length)return;let I={};for(let U of _){let E=fr(U,$),j=E.path;if(j in I)throw Error(`Duplicate ${$} filter path: ${j}`);let N=D?rr(E.rawValue,$):E.rawValue;I[j]=E.negated?{not:N}:N}return I}function wr(_){let $={};if(_.source)$.source=_.source;if(_.type)$.type=_.type;if(_.subject)$.subject=_.subject;if(_.severity)$.severity=_.severity;let D=DY(bN(_.data,"data"),bN(_.dataJson,"data-json",!0)),I=DY(bN(_.metadata,"metadata"),bN(_.metadataJson,"metadata-json",!0));if(Object.keys(D).length>0)$.data=D;if(Object.keys(I).length>0)$.metadata=I;return Object.keys($).length>0?[$]:void 0}function DY(..._){let $={};for(let D of _){if(!D)continue;for(let[I,U]of Object.entries(D)){if(I in $)throw Error(`Duplicate filter path: ${I}`);$[I]=U}}return $}function rr(_,$){let D=JSON.parse(_);if(D===null||typeof D==="string"||typeof D==="number"||typeof D==="boolean"||Array.isArray(D)&&D.every((I)=>typeof I==="string"))return D;throw Error(`${$} filter JSON values must be string, string[], number, boolean, or null`)}function fr(_,$){let D=_.indexOf("!=");if(D>0)return{path:_.slice(0,D),rawValue:_.slice(D+2),negated:!0};let I=_.indexOf("=");if(I<=0)throw Error(`Invalid ${$} filter, expected path=value or path!=value: ${_}`);return{path:_.slice(0,I),rawValue:_.slice(I+1),negated:!1}}var xr=100;function kD(_,$){if(!_)return $;let D=JSON.parse(_);if(!D||typeof D!=="object"||Array.isArray(D))throw Error("Expected a JSON object");return D}function ur(_){if(!_?.length)return;let $={};for(let D of _){let I=D.indexOf("=");if(I===-1)throw Error(`Invalid header, expected name=value: ${D}`);$[D.slice(0,I)]=D.slice(I+1)}return $}function $4(_){if(_.createClient)return _.createClient();return new LY({store:new kN(_.dataDir)})}function I0(_,$,D){if($)console.log(JSON.stringify(_,null,2));else console.log(D)}function UY(_,$){let D=_ instanceof Error?_.message:String(_);if($)console.log(JSON.stringify({error:D},null,2));else console.error(D);process.exitCode=1}function IY(_){return Boolean(_?.json||_?.opts?.().json||_?.optsWithGlobals?.().json||_?.parent?.opts?.().json||_?.parent?.optsWithGlobals?.().json)}function F6(_,$){return IY(_)||IY($)}function yr(_,$){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",U0,[]).option("--metadata <path=value...>","Event metadata field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",U0,[]).option("--data-json <path=json...>","Event data field filter with typed JSON value; path!=json negatives supported",U0,[]).option("--metadata-json <path=json...>","Event metadata field filter with typed JSON value; path!=json negatives supported",U0,[]).option("--secret <secret>","Webhook HMAC secret").option("--header <name=value...>","Webhook header",U0,[]).option("--arg <arg...>","Command argument",U0,[]).option("--timeout-ms <ms>","Transport timeout in milliseconds",w1).option("--retry-attempts <n>","Maximum delivery attempts",w1).option("--retry-backoff-ms <ms>","Initial retry backoff in milliseconds",w1).option("--redact <path...>","Event field path to redact before delivery",U0,[]).option("--disabled","Create channel disabled",!1).option("-j, --json","Print JSON output",!1).action(async(I,U,E)=>{let j=new Date().toISOString(),N={id:U.id,name:U.name,enabled:!U.disabled,transport:U.transport,filters:wr(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:I,secret:U.secret,headers:ur(U.header),timeoutMs:U.timeoutMs};else if(U.transport==="command")N.command={command:I,args:U.arg??[],timeoutMs:U.timeoutMs};else throw Error(`Transport ${U.transport} is reserved for future use and cannot be added yet`);let A=await $4($).addChannel(N);I0(SY(A),F6(U,E),`Added ${A.transport} channel ${A.id}`)}),D.command("list").description("List configured channels").option("-j, --json","Print JSON output",!1).action(async(I,U)=>{let E=await $4($).listChannels();if(F6(I,U)){console.log(JSON.stringify(Hr(E),null,2));return}if(!E.length){console.log("No channels configured.");return}for(let j of E)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(I,U)=>{let E=await Xr($.dataDir);I0(E,F6(I,U),`events dataDir: ${E.dataDir}`)}),D.command("remove").description("Remove a channel").argument("<id>","Channel identifier").option("-j, --json","Print JSON output",!1).action(async(I,U,E)=>{let j=await $4($).removeChannel(I);I0({removed:j},F6(U,E),j?`Removed ${I}`:`Channel not found: ${I}`)}),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(I,U,E)=>{let j=F6(U,E);try{let N=await $4($).testChannel(I,{source:U.source??$.source,type:U.type,subject:U.subject??I,message:U.message,data:kD(U.data,{test:!0}),metadata:kD(U.metadata,{})},{honorFilters:U.honorFilters});I0(N,j,`${N.status}: ${N.channelId}`)}catch(N){UY(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(I,U,E)=>{let j=F6(U,E);try{let N=await $4($).matchChannel(I,{source:U.source??$.source,type:U.type,subject:U.subject??I,message:U.message,data:kD(U.data,{test:!0}),metadata:kD(U.metadata,{})});I0(N,j,`${N.matched?"matched":"skipped"}: ${N.channelId}`)}catch(N){UY(N,j)}}),D}function hr(_,$){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,E,j)=>{let N=await $4($).emit({source:E.source??$.source,type:U,subject:E.subject,severity:E.severity,message:E.message,dedupeKey:E.dedupeKey,data:kD(E.data,{}),metadata:kD(E.metadata,{})},{deliver:E.deliver,dedupe:E.dedupe});I0(N,F6(E,j),`${N.deduped?"Deduped":"Emitted"} ${N.event.id} to ${N.deliveries.length} channel(s)`)});let I=$.defaultEventListLimit??xr;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 ${I}; use 0 for all)`,w1,I).option("-j, --json","Print JSON output",!1).action(async(U,E)=>{let j=await $4($).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(F6(U,E)){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",w1).option("--dry-run","Preview without delivery",!1).option("-j, --json","Print JSON output",!1).action(async(U,E)=>{let j=await $4($).replay({eventId:U.id,source:U.source,type:U.type,cursor:U.cursor,limit:U.limit,dryRun:U.dryRun});I0(j,F6(U,E),cr(j.events.length,j.deliveries.length,j.nextCursor))}),D}function WY(_,$){yr(_,$),hr(_,$)}function w1(_){let $=Number(_);if(!Number.isFinite($))throw Error(`Expected a number, got ${_}`);return $}function U0(_,$){return $.push(_),$}function cr(_,$,D){let I=D?`, next cursor: ${D}`:"";return`Replayed ${_} event(s), ${$} delivery result(s)${I}`}import{basename as nr,dirname as dr,join as mr}from"path";var PY={debug:0,info:1,warn:2,error:3},lr=()=>{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 j0(_,$,D){if(PY[_]<PY[lr()])return;let I={debug:"[DEBUG]",info:"[INFO]",warn:"[WARN]",error:"[ERROR]"}[_],U=D?`${I} ${$} ${JSON.stringify(D)}`:`${I} ${$}`;if(_==="error")console.error(U);else console.error(U)}var YY=["events","webhooks"],QY=["add","list","get","delete","update","archive","restore","upsert","untag","versions","diff","export","prune","dedupe","stats","inventory","project-panel","project-registration","project-membership","project-resources","project-resource","paths","mode","guarded","setup","auth","storage","machines","sync","db","wiki","app-wiki","source","ingest","reindex","search","context","proposals","web","ask","build","embeddings","providers","safety","help",...YY],KY={ls:"list",rm:"delete",edit:"update",unarchive:"restore"},ir=/^k_[A-Za-z0-9][A-Za-z0-9_-]*$/;async function tr(_,$,D){if(/\s/.test($))return!0;if(_.length<=1)return!1;let I=_[1]??"";if(ir.test(I))return!1;return await D.get(I)===null}function or(_){let $=new Set,D=[];for(let I of _){let U=I.toLowerCase();if($.has(U))continue;$.add(U),D.push(I)}return D}function zY(_,$){let D=new Set((_??[]).map((I)=>I.toLowerCase()));return $.filter((I)=>!D.has(I.toLowerCase()))}function bP(_,$,D){if(D===void 0)return{..._,message:$};return{..._,added:D.length,message:`${$} (added ${D.length} tag${D.length===1?"":"s"})`}}function pr(_,$){if($===void 0)throw Error("Missing value for --tag. Example: knowledge add <title> <content> -t <tag> -t <tag>");let D=$.split(",").map((I)=>I.trim()).filter((I)=>I.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 or([..._??[],...D])}function er(_){let $=[],D={},I=!1;for(let U=0;U<_.length;U+=1){let E=_[U];if(I){$.push(E);continue}if(E==="--"){I=!0;continue}if(!E.startsWith("-")||$[0]==="add"&&$.length===2&&E.startsWith("---")){$.push(E);continue}switch(E){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"--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=pr(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;case"--operation-id":D.operationId=_[U+1],U+=1;break;case"--step-id":D.stepId=_[U+1],U+=1;break;case"--idempotency-key":D.idempotencyKey=_[U+1],U+=1;break;case"--collection-id":D.collectionId=_[U+1],U+=1;break;case"--item-id":D.itemId=_[U+1],U+=1;break;case"--receipt-id":D.receiptId=_[U+1],U+=1;break;case"--cursor":D.cursor=_[U+1],U+=1;break;case"--kind":D.kind=[...D.kind??[],_[U+1]],U+=1;break;case"--all":D.all=!0;break;case"--slug":D.slug=_[U+1],U+=1;break;case"--name":D.name=_[U+1],U+=1;break;case"--collection-slug":D.collectionSlug=_[U+1],U+=1;break;case"--collection-name":D.collectionName=_[U+1],U+=1;break;default:throw Error(`Unknown flag: ${E}. Run 'knowledge --help' for valid options.`)}}return{positional:$,flags:D}}function ar(_){if(!_)return"";return KY[_]??_}function sr(_,$){let D=Array.from({length:_.length+1},()=>Array($.length+1).fill(0));for(let I=0;I<=_.length;I+=1)D[I][0]=I;for(let I=0;I<=$.length;I+=1)D[0][I]=I;for(let I=1;I<=_.length;I+=1)for(let U=1;U<=$.length;U+=1){let E=_[I-1]===$[U-1]?0:1;D[I][U]=Math.min(D[I-1][U]+1,D[I][U-1]+1,D[I-1][U-1]+E)}return D[_.length][$.length]}function _f(_){if(!_)return"";let $=[...QY,...Object.keys(KY)],D="",I=Number.POSITIVE_INFINITY;for(let U of $){let E=sr(_,U);if(E<I)I=E,D=U}return I<=3?D:""}function $f(){return nr(process.argv[1]??"").replace(/\.(?:js|ts|mjs|cjs)$/,"")==="knowledge"}async function Df(_){if(!YY.includes(_[0]??""))return!1;let $=new i8;return $.name("knowledge").description("Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions"),WY($,{source:"knowledge"}),await $.parseAsync(_,{from:"user"}),!0}function Uf(){console.log(`knowledge - local agent knowledge store +`,{encoding:"utf-8",mode:384}),await Sr(D,_),await KP(_,384).catch(()=>{return})}}function zr(_=NY()){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 gY(_,$={}){if(!Number.isInteger(_)||_<0)throw Error(`Invalid event cursor offset: ${_}`);let D={offset:_,eventId:$.eventId,source:$.source,type:$.type};return`${BP}${EY.from(JSON.stringify(D),"utf-8").toString("base64url")}`}function qN(_,$={}){if(!_)return 0;if(!_.startsWith(BP))throw Error(`Invalid local JSON event cursor: ${_}`);let D=_.slice(BP.length),I;try{I=JSON.parse(EY.from(D,"base64url").toString("utf-8"))}catch{throw Error(`Invalid local JSON event cursor: ${_}`)}let U=I.offset;if(!Number.isInteger(U)||U<0)throw Error(`Invalid local JSON event cursor: ${_}`);return TP("eventId",I.eventId,$.eventId),TP("source",I.source,$.source),TP("type",I.type,$.type),U}function CN(_){if(_===void 0)return Jr;if(!Number.isInteger(_)||_<1)throw Error(`Event page limit must be a positive integer, got ${_}`);return Math.min(_,Wr)}function a8(_,$){let D=_;if($.eventId)D=D.filter((I)=>I.id===$.eventId);if($.source)D=D.filter((I)=>I.source===$.source);if($.type)D=D.filter((I)=>I.type===$.type);if($.cursor){let I=qN($.cursor,$);D=D.slice(I)}if($.limit!==void 0)D=D.slice(0,CN($.limit));return D}function TP(_,$,D){if($!==D)throw Error(`Local JSON event cursor ${_} filter mismatch`)}function s8(_,$){return _.find((D)=>$.id!==void 0&&D.id===$.id||$.dedupeKey!==void 0&&D.dedupeKey===$.dedupeKey)}async function Xr(_){let $=new kN(_);await $.init();let[D,I,U]=await Promise.all([$.listChannels(),$.listEvents(),$.listDeliveries()]),E=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:ZN,fallback:HN,active:Pr()},files:{channels:FP($.dataDir,"channels.json",D.length),events:FP($.dataDir,"events.json",I.length),deliveries:FP($.dataDir,"deliveries.json",U.length)},counts:{channels:D.length,enabledChannels:D.filter((j)=>j.enabled).length,disabledChannels:D.filter((j)=>!j.enabled).length,events:I.length,deliveries:U.length},transports:E,safety:{includesEventPayloads:!1,includesWebhookSecrets:!1,listOutputsRedactSecrets:!0,statusOutputIsMetadataOnly:!0}}}function FP(_,$,D){let I=v1(_,$);return{path:I,exists:jY(I),records:D}}function Rr(_,$){return`${_}.${$}`}function Yr(_,$,D){return`sha256=${Gr("sha256",_).update(Rr($,D)).digest("hex")}`}function a$(){return new Date().toISOString()}function C1(_,$=4096){return _.length>$?`${_.slice(0,$)}...`:_}function Tr(_,$){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let D=JSON.stringify(_),I=_.time,U={"Content-Type":"application/json","User-Agent":"@hasna/events","X-Hasna-Event-Id":_.id,"X-Hasna-Event-Type":_.type,"X-Hasna-Timestamp":I,...$.webhook.headers};if($.webhook.secret)U["X-Hasna-Signature"]=Yr($.webhook.secret,I,D);return{body:D,headers:U}}async function Fr(_,$,D={}){if(!$.webhook)throw Error(`Channel ${$.id} has no webhook config`);let I=a$(),{body:U,headers:E}=Tr(_,$),j=new AbortController,N=setTimeout(()=>j.abort(),$.webhook.timeoutMs??15000);try{let A=await(D.fetchImpl??fetch)($.webhook.url,{method:"POST",headers:E,body:U,signal:j.signal}),O=C1(await A.text());return{attempt:1,status:A.ok?"success":"failed",startedAt:I,completedAt:a$(),responseStatus:A.status,responseBody:O,error:A.ok?void 0:`Webhook returned HTTP ${A.status}`}}catch(A){return{attempt:1,status:"failed",startedAt:I,completedAt:a$(),error:A instanceof Error?A.message:String(A)}}finally{clearTimeout(N)}}async function Vr(_,$){if(!$.command)throw Error(`Channel ${$.id} has no command config`);let D=a$(),I=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:I};return new Promise((E)=>{let j=Kr($.command.command,$.command.args??[],{cwd:$.command.cwd,env:U,stdio:["pipe","pipe","pipe"]}),N="",A="",O=setTimeout(()=>j.kill("SIGTERM"),$.command.timeoutMs??15000);j.stdin.end(I),j.stdout.on("data",(S)=>{N+=S.toString()}),j.stderr.on("data",(S)=>{A+=S.toString()}),j.on("error",(S)=>{clearTimeout(O),E({attempt:1,status:"failed",startedAt:D,completedAt:a$(),stdout:C1(N),stderr:C1(A),error:S.message})}),j.on("close",(S,L)=>{clearTimeout(O);let P=S===0;E({attempt:1,status:P?"success":"failed",startedAt:D,completedAt:a$(),stdout:C1(N),stderr:C1(A),error:P?void 0:`Command exited with ${L?`signal ${L}`:`code ${S}`}`})})})}async function Br(_,$,D={}){if($.transport==="webhook")return Fr(_,$,D);if($.transport==="command")return Vr(_,$);return{attempt:1,status:"skipped",startedAt:a$(),completedAt:a$(),error:`Unsupported transport: ${$.transport}`}}function _Y(_,$,D){let I=D.some((U)=>U.status==="success")?"success":D.every((U)=>U.status==="skipped")?"skipped":"failed";return{id:Qr(),eventId:_.id,channelId:$.id,transport:$.transport,status:I,attempts:D,createdAt:D[0]?.startedAt??a$(),completedAt:D.at(-1)?.completedAt??a$()}}class AY extends Error{eventType;issues;constructor(_,$){let D=$.map((I)=>`${I.path||"<root>"}: ${I.message}`).join("; ");super(`Event validation failed for type "${_}": ${D}`);this.name="EventValidationError",this.eventType=_,this.issues=$}}class OY{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 AY(_.type,$.issues)}}var Mr=new OY;function VP(_){return{id:_.id??br(),source:_.source,type:_.type,time:Cr(_.time),subject:_.subject,severity:_.severity??"info",data:_.data??{},message:_.message,dedupeKey:_.dedupeKey,schemaVersion:_.schemaVersion??"1.0",metadata:_.metadata??{}}}class SY{store;redactors;transportOptions;catalog;validateCatalogTypes;constructor(_={}){this.store=_.store??new kN(_.dataDir),this.redactors=_.redactors??[],this.transportOptions={fetchImpl:_.fetchImpl},this.catalog=_.catalog??Mr,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?VP(_):kr(VP(_));if($.validate??this.validateCatalogTypes)this.catalog.assertEventValid(D);let I=await this.appendEvent(D,{dedupe:$.dedupe!==!1});if(I.deduped)return{event:I.event,deliveries:[],deduped:!0};let U=$.deliver===!1?[]:await this.deliver(I.event);return{event:I.event,deliveries:U,deduped:!1}}async listEvents(_={}){if(Object.keys(_).length===0)return this.store.listEvents();return $Y(await this.store.listEvents(),_)}async listEventsPage(_={}){if(this.store.listEventsPage)return this.store.listEventsPage(_);let $=$Y(await this.store.listEvents(),{eventId:_.eventId,source:_.source,type:_.type}),D=qN(_.cursor,_),I=CN(_.limit),U=$.slice(D,D+I),E=D+U.length,j=E<$.length;return{events:U,cursor:_.cursor,nextCursor:j?gY(E,_):void 0,hasMore:j}}async listDeliveries(){return this.store.listDeliveries()}async deliver(_){let D=(await this.store.listChannels()).filter((U)=>p8(U,_)),I=[];for(let U of D){let E=await this.applyRedaction(_,U),j=await this.deliverWithRetry(E,U);await this.store.appendDelivery(j),I.push(j)}return I}async matchChannel(_,$={}){let D=await this.store.getChannel(_);if(!D)throw Error(`Channel not found: ${_}`);let I=VP({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=p8(D,I);return{channelId:D.id,matched:U,event:I,filters:D.filters,reason:U?void 0:D.enabled?"event did not match channel filters":"channel is disabled"}}async testChannel(_,$={},D={}){let I=await this.store.getChannel(_);if(!I)throw Error(`Channel not found: ${_}`);let U=await this.matchChannel(_,$),E=U.event;if(D.honorFilters&&!U.matched){let A=new Date().toISOString(),O=_Y(E,I,[{attempt:1,status:"skipped",startedAt:A,completedAt:A,error:U.reason}]);return O.metadata={reason:"filter_mismatch"},await this.store.appendDelivery(O),O}let j=await this.applyRedaction(E,I),N=await this.deliverWithRetry(j,I);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 I of $.events)D.push(...await this.deliver(I));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 I=await this.store.findEventByIdentity({id:_.id,dedupeKey:_.dedupeKey});if(I)return{event:I,stored:!1,deduped:!0,identity:{id:I.id,dedupeKey:I.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=Zr(_,$.redact?.paths??[],$.redact?.replacement??"[REDACTED]");for(let I of this.redactors)D=await I(D,$);return D}async deliverWithRetry(_,$){let D=vr($.retry),I=[];for(let U=0;U<D.maxAttempts;U+=1){let E=await Br(_,$,this.transportOptions);if(E.attempt=U+1,E.status==="failed"&&U+1<D.maxAttempts)E.nextBackoffMs=Math.round(D.backoffMs*D.multiplier**U);if(I.push(E),E.status!=="failed")break;if(E.nextBackoffMs)await Bun.sleep(E.nextBackoffMs)}return _Y(_,$,I)}}function Zr(_,$,D="[REDACTED]"){if($.length===0)return _;let I=structuredClone(_);for(let U of $)qr(I,U,D);return I}function LY(_){let $=structuredClone(_);if($.webhook?.secret)$.webhook.secret="[REDACTED]";if($.command?.env)$.command.env=Object.fromEntries(Object.entries($.command.env).map(([D,I])=>[D,JY(D)?"[REDACTED]":I]));return $}function Hr(_){return _.map(LY)}function kr(_,$="[REDACTED]"){return MP(_,$)}function JY(_){return/secret|token|password|api[_-]?key|authorization/i.test(_)}function MP(_,$){if(Array.isArray(_))return _.map((D)=>MP(D,$));if(!_||typeof _!=="object")return _;return Object.fromEntries(Object.entries(_).map(([D,I])=>[D,JY(D)?$:MP(I,$)]))}function qr(_,$,D){let I=$.split("."),U=_;for(let j of I.slice(0,-1)){let N=U[j];if(!N||typeof N!=="object")return;U=N}let E=I.at(-1);if(E&&E in U)U[E]=D}function $Y(_,$){let D=_;if($.eventId)D=D.filter((I)=>I.id===$.eventId);if($.source)D=D.filter((I)=>I.source===$.source);if($.type)D=D.filter((I)=>I.type===$.type);if($.cursor)D=D.slice(qN($.cursor,$));if($.limit!==void 0)D=D.slice(0,CN($.limit));return D}function Cr(_){if(!_)return new Date().toISOString();return _ instanceof Date?_.toISOString():_}function vr(_){return{maxAttempts:Math.max(1,_?.maxAttempts??1),backoffMs:Math.max(0,_?.backoffMs??250),multiplier:Math.max(1,_?.multiplier??2)}}function bN(_,$,D=!1){if(!_?.length)return;let I={};for(let U of _){let E=fr(U,$),j=E.path;if(j in I)throw Error(`Duplicate ${$} filter path: ${j}`);let N=D?rr(E.rawValue,$):E.rawValue;I[j]=E.negated?{not:N}:N}return I}function wr(_){let $={};if(_.source)$.source=_.source;if(_.type)$.type=_.type;if(_.subject)$.subject=_.subject;if(_.severity)$.severity=_.severity;let D=DY(bN(_.data,"data"),bN(_.dataJson,"data-json",!0)),I=DY(bN(_.metadata,"metadata"),bN(_.metadataJson,"metadata-json",!0));if(Object.keys(D).length>0)$.data=D;if(Object.keys(I).length>0)$.metadata=I;return Object.keys($).length>0?[$]:void 0}function DY(..._){let $={};for(let D of _){if(!D)continue;for(let[I,U]of Object.entries(D)){if(I in $)throw Error(`Duplicate filter path: ${I}`);$[I]=U}}return $}function rr(_,$){let D=JSON.parse(_);if(D===null||typeof D==="string"||typeof D==="number"||typeof D==="boolean"||Array.isArray(D)&&D.every((I)=>typeof I==="string"))return D;throw Error(`${$} filter JSON values must be string, string[], number, boolean, or null`)}function fr(_,$){let D=_.indexOf("!=");if(D>0)return{path:_.slice(0,D),rawValue:_.slice(D+2),negated:!0};let I=_.indexOf("=");if(I<=0)throw Error(`Invalid ${$} filter, expected path=value or path!=value: ${_}`);return{path:_.slice(0,I),rawValue:_.slice(I+1),negated:!1}}var xr=100;function kD(_,$){if(!_)return $;let D=JSON.parse(_);if(!D||typeof D!=="object"||Array.isArray(D))throw Error("Expected a JSON object");return D}function ur(_){if(!_?.length)return;let $={};for(let D of _){let I=D.indexOf("=");if(I===-1)throw Error(`Invalid header, expected name=value: ${D}`);$[D.slice(0,I)]=D.slice(I+1)}return $}function $4(_){if(_.createClient)return _.createClient();return new SY({store:new kN(_.dataDir)})}function I0(_,$,D){if($)console.log(JSON.stringify(_,null,2));else console.log(D)}function UY(_,$){let D=_ instanceof Error?_.message:String(_);if($)console.log(JSON.stringify({error:D},null,2));else console.error(D);process.exitCode=1}function IY(_){return Boolean(_?.json||_?.opts?.().json||_?.optsWithGlobals?.().json||_?.parent?.opts?.().json||_?.parent?.optsWithGlobals?.().json)}function F6(_,$){return IY(_)||IY($)}function yr(_,$){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",U0,[]).option("--metadata <path=value...>","Event metadata field filter; string values, path!=value negatives, array-member matching, dot paths, * segment wildcard, ** recursive wildcard",U0,[]).option("--data-json <path=json...>","Event data field filter with typed JSON value; path!=json negatives supported",U0,[]).option("--metadata-json <path=json...>","Event metadata field filter with typed JSON value; path!=json negatives supported",U0,[]).option("--secret <secret>","Webhook HMAC secret").option("--header <name=value...>","Webhook header",U0,[]).option("--arg <arg...>","Command argument",U0,[]).option("--timeout-ms <ms>","Transport timeout in milliseconds",w1).option("--retry-attempts <n>","Maximum delivery attempts",w1).option("--retry-backoff-ms <ms>","Initial retry backoff in milliseconds",w1).option("--redact <path...>","Event field path to redact before delivery",U0,[]).option("--disabled","Create channel disabled",!1).option("-j, --json","Print JSON output",!1).action(async(I,U,E)=>{let j=new Date().toISOString(),N={id:U.id,name:U.name,enabled:!U.disabled,transport:U.transport,filters:wr(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:I,secret:U.secret,headers:ur(U.header),timeoutMs:U.timeoutMs};else if(U.transport==="command")N.command={command:I,args:U.arg??[],timeoutMs:U.timeoutMs};else throw Error(`Transport ${U.transport} is reserved for future use and cannot be added yet`);let A=await $4($).addChannel(N);I0(LY(A),F6(U,E),`Added ${A.transport} channel ${A.id}`)}),D.command("list").description("List configured channels").option("-j, --json","Print JSON output",!1).action(async(I,U)=>{let E=await $4($).listChannels();if(F6(I,U)){console.log(JSON.stringify(Hr(E),null,2));return}if(!E.length){console.log("No channels configured.");return}for(let j of E)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(I,U)=>{let E=await Xr($.dataDir);I0(E,F6(I,U),`events dataDir: ${E.dataDir}`)}),D.command("remove").description("Remove a channel").argument("<id>","Channel identifier").option("-j, --json","Print JSON output",!1).action(async(I,U,E)=>{let j=await $4($).removeChannel(I);I0({removed:j},F6(U,E),j?`Removed ${I}`:`Channel not found: ${I}`)}),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(I,U,E)=>{let j=F6(U,E);try{let N=await $4($).testChannel(I,{source:U.source??$.source,type:U.type,subject:U.subject??I,message:U.message,data:kD(U.data,{test:!0}),metadata:kD(U.metadata,{})},{honorFilters:U.honorFilters});I0(N,j,`${N.status}: ${N.channelId}`)}catch(N){UY(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(I,U,E)=>{let j=F6(U,E);try{let N=await $4($).matchChannel(I,{source:U.source??$.source,type:U.type,subject:U.subject??I,message:U.message,data:kD(U.data,{test:!0}),metadata:kD(U.metadata,{})});I0(N,j,`${N.matched?"matched":"skipped"}: ${N.channelId}`)}catch(N){UY(N,j)}}),D}function hr(_,$){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,E,j)=>{let N=await $4($).emit({source:E.source??$.source,type:U,subject:E.subject,severity:E.severity,message:E.message,dedupeKey:E.dedupeKey,data:kD(E.data,{}),metadata:kD(E.metadata,{})},{deliver:E.deliver,dedupe:E.dedupe});I0(N,F6(E,j),`${N.deduped?"Deduped":"Emitted"} ${N.event.id} to ${N.deliveries.length} channel(s)`)});let I=$.defaultEventListLimit??xr;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 ${I}; use 0 for all)`,w1,I).option("-j, --json","Print JSON output",!1).action(async(U,E)=>{let j=await $4($).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(F6(U,E)){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",w1).option("--dry-run","Preview without delivery",!1).option("-j, --json","Print JSON output",!1).action(async(U,E)=>{let j=await $4($).replay({eventId:U.id,source:U.source,type:U.type,cursor:U.cursor,limit:U.limit,dryRun:U.dryRun});I0(j,F6(U,E),cr(j.events.length,j.deliveries.length,j.nextCursor))}),D}function WY(_,$){yr(_,$),hr(_,$)}function w1(_){let $=Number(_);if(!Number.isFinite($))throw Error(`Expected a number, got ${_}`);return $}function U0(_,$){return $.push(_),$}function cr(_,$,D){let I=D?`, next cursor: ${D}`:"";return`Replayed ${_} event(s), ${$} delivery result(s)${I}`}import{basename as nr,dirname as dr,join as mr}from"path";var PY={debug:0,info:1,warn:2,error:3},lr=()=>{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 j0(_,$,D){if(PY[_]<PY[lr()])return;let I={debug:"[DEBUG]",info:"[INFO]",warn:"[WARN]",error:"[ERROR]"}[_],U=D?`${I} ${$} ${JSON.stringify(D)}`:`${I} ${$}`;if(_==="error")console.error(U);else console.error(U)}var YY=["events","webhooks"],QY=["add","list","get","delete","update","archive","restore","upsert","untag","versions","diff","export","prune","dedupe","stats","inventory","project-panel","project-registration","project-membership","project-resources","project-resource","paths","mode","guarded","setup","auth","storage","machines","sync","db","wiki","app-wiki","source","ingest","reindex","search","context","proposals","web","ask","build","embeddings","providers","safety","help",...YY],KY={ls:"list",rm:"delete",edit:"update",unarchive:"restore"},ir=/^k_[A-Za-z0-9][A-Za-z0-9_-]*$/;async function tr(_,$,D){if(/\s/.test($))return!0;if(_.length<=1)return!1;let I=_[1]??"";if(ir.test(I))return!1;return await D.get(I)===null}function or(_){let $=new Set,D=[];for(let I of _){let U=I.toLowerCase();if($.has(U))continue;$.add(U),D.push(I)}return D}function zY(_,$){let D=new Set((_??[]).map((I)=>I.toLowerCase()));return $.filter((I)=>!D.has(I.toLowerCase()))}function bP(_,$,D){if(D===void 0)return{..._,message:$};return{..._,added:D.length,message:`${$} (added ${D.length} tag${D.length===1?"":"s"})`}}function pr(_,$){if($===void 0)throw Error("Missing value for --tag. Example: knowledge add <title> <content> -t <tag> -t <tag>");let D=$.split(",").map((I)=>I.trim()).filter((I)=>I.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 or([..._??[],...D])}function er(_){let $=[],D={},I=!1;for(let U=0;U<_.length;U+=1){let E=_[U];if(I){$.push(E);continue}if(E==="--"){I=!0;continue}if(!E.startsWith("-")||$[0]==="add"&&$.length===2&&E.startsWith("---")){$.push(E);continue}switch(E){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"--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=pr(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;case"--operation-id":D.operationId=_[U+1],U+=1;break;case"--step-id":D.stepId=_[U+1],U+=1;break;case"--idempotency-key":D.idempotencyKey=_[U+1],U+=1;break;case"--collection-id":D.collectionId=_[U+1],U+=1;break;case"--item-id":D.itemId=_[U+1],U+=1;break;case"--receipt-id":D.receiptId=_[U+1],U+=1;break;case"--cursor":D.cursor=_[U+1],U+=1;break;case"--kind":D.kind=[...D.kind??[],_[U+1]],U+=1;break;case"--all":D.all=!0;break;case"--slug":D.slug=_[U+1],U+=1;break;case"--name":D.name=_[U+1],U+=1;break;case"--collection-slug":D.collectionSlug=_[U+1],U+=1;break;case"--collection-name":D.collectionName=_[U+1],U+=1;break;default:throw Error(`Unknown flag: ${E}. Run 'knowledge --help' for valid options.`)}}return{positional:$,flags:D}}function ar(_){if(!_)return"";return KY[_]??_}function sr(_,$){let D=Array.from({length:_.length+1},()=>Array($.length+1).fill(0));for(let I=0;I<=_.length;I+=1)D[I][0]=I;for(let I=0;I<=$.length;I+=1)D[0][I]=I;for(let I=1;I<=_.length;I+=1)for(let U=1;U<=$.length;U+=1){let E=_[I-1]===$[U-1]?0:1;D[I][U]=Math.min(D[I-1][U]+1,D[I][U-1]+1,D[I-1][U-1]+E)}return D[_.length][$.length]}function _f(_){if(!_)return"";let $=[...QY,...Object.keys(KY)],D="",I=Number.POSITIVE_INFINITY;for(let U of $){let E=sr(_,U);if(E<I)I=E,D=U}return I<=3?D:""}function $f(){return nr(process.argv[1]??"").replace(/\.(?:js|ts|mjs|cjs)$/,"")==="knowledge"}async function Df(_){if(!YY.includes(_[0]??""))return!1;let $=new i8;return $.name("knowledge").description("Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions"),WY($,{source:"knowledge"}),await $.parseAsync(_,{from:"user"}),!0}function Uf(){console.log(`knowledge - local agent knowledge store Usage: knowledge <command> [options] @@ -2958,25 +2964,25 @@ Prune Options: Reports metadata-only FCAME-1 private input, private result, and exact-title lookup support.`);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}Uf()}function Ef(_){if(_.noColor||process.env.NO_COLOR)return!1;if(process.env.FORCE_COLOR)return!0;return process.stdout.isTTY===!0}function q(_,$,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 I=_.message;console.log(I?`${I} -${t_()}`:jf(_))}function t_(_="full details"){return`Hint: use --verbose for ${_}, or --json for machine-readable output.`}function U_(_,$=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 jf(_){if(!_||typeof _!=="object")return String(_);let $=_,D=[$.ok===!1?"Result: not ok":"Result: ok"];for(let[I,U]of Object.entries($).slice(0,8)){if(I==="ok"||I==="message")continue;if(Array.isArray(U))D.push(`${I}: ${U.length} item(s)`);else if(U&&typeof U==="object")D.push(`${I}: ${Object.keys(U).length} field(s)`);else D.push(`${I}: ${U_(U,100)}`)}return D.push(t_()),D.join(` +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}Uf()}function Ef(_){if(_.noColor||process.env.NO_COLOR)return!1;if(process.env.FORCE_COLOR)return!0;return process.stdout.isTTY===!0}function k(_,$,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 I=_.message;console.log(I?`${I} +${i_()}`:jf(_))}function i_(_="full details"){return`Hint: use --verbose for ${_}, or --json for machine-readable output.`}function I_(_,$=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 jf(_){if(!_||typeof _!=="object")return String(_);let $=_,D=[$.ok===!1?"Result: not ok":"Result: ok"];for(let[I,U]of Object.entries($).slice(0,8)){if(I==="ok"||I==="message")continue;if(Array.isArray(U))D.push(`${I}: ${U.length} item(s)`);else if(U&&typeof U==="object")D.push(`${I}: ${Object.keys(U).length} field(s)`);else D.push(`${I}: ${I_(U,100)}`)}return D.push(i_()),D.join(` `)}function Nf(_){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 ${$6[0]}=postgres to use the API)`,I=[`Knowledge mode: ${$}`,` ${D}`];if(_.pointer_env_present.length>0){let U=_.pointer_ignored?"present but IGNORED for mode selection":"present";I.push(` Pointer env ${U}: ${_.pointer_env_present.join(", ")}`)}if(_.network_guard_active)I.push(" Outbound guard: ACTIVE (NODE_ENV=test) \u2014 non-loopback requests are refused.");if(_.warning)I.push(` Note: ${_.warning}`);return I.join(` -`)}function gf(_){return[`Knowledge paths (${_.scope})`,`Home: ${_.home}`,`SQLite: ${_.knowledge_db_path}`,`JSON store: ${_.json_store_path}`,`Wiki: ${_.wiki_dir}`,t_("config and all paths")].join(` +`)}function gf(_){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 XY(_){console.log(JSON.stringify(_))}function Af(_){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)`],I=(U,E,j)=>{if(E.length===0)return;D.push("",`${U}:`);for(let N of E.slice(0,_.limit))D.push(`- ${j(N)}`)};return I("Items",_.items,(U)=>`${U.id}: ${U.title}`),I("Sources",_.sources,(U)=>`${U.kind??"source"} ${U.uri} (${U.chunks??0} chunk(s))`),I("Chunks",_.chunks,(U)=>`${U.kind??"chunk"} ${U.id}: ${U.text_preview??""}`),I("Wiki pages",_.wiki_pages,(U)=>`${U.path}: ${U.title}`),I("Indexes",_.indexes,(U)=>`${U.kind??"index"} ${U.name}${U.shard_key?` (${U.shard_key})`:""}`),I("Artifacts",_.storage_objects,(U)=>`${U.kind??"artifact"} ${U.artifact_uri}`),I("Runs",_.runs,(U)=>`${U.type??"run"} ${U.id}: ${U.status??"unknown"}`),I("Machines",_.machines,(U)=>`${U.machine_id}${U.workspace_home?` ${U.workspace_home}`:""}`),I("Sync conflicts",_.sync_conflicts,(U)=>`${U.id}: ${U.entity_kind}/${U.entity_id} ${U.status}`),D.join(` -`)}function Of(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} search result(s) for "${U_(_.query,80)}"${_.mode?.semantic?" (semantic enabled)":""}`];for(let I of $.slice(0,_.limit??10)){let U=I.source?.uri??I.provenance?.source_uri??I.artifact?.path??I.artifact?.uri??I.id,E=typeof I.score==="number"?` score=${I.score.toFixed(3)}`:"";if(D.push(`- ${I.kind??"result"} ${U_(I.title??I.id,80)}${E}`),U)D.push(` source: ${U_(U,120)}`);if(I.text)D.push(` text: ${U_(I.text,180)}`)}if($.length===0)D.push("- No matches. Try a broader query or run `knowledge inventory --scope project`.");if(D.push(t_("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 Lf(_){let $=Array.isArray(_.excerpts)?_.excerpts:[],D=Array.isArray(_.citations)?_.citations:[],I=[`${$.length} context excerpt(s) for "${U_(_.query??_.normalized_query,80)}"`];for(let U of $.slice(0,10)){let E=D.find((A)=>A.id===U.citation_id||A.result_id===U.result_id),j=E?.source_uri??E?.artifact_path??U.result_id,N=typeof U.score==="number"?` score=${U.score.toFixed(3)}`:"";if(I.push(`- ${U.kind??"excerpt"} ${U_(U.id,44)}${N}`),j)I.push(` source: ${U_(j,120)}`);I.push(` text: ${U_(U.text,220)}`)}return I.push(`Citations: ${D.length}`),I.push(t_("citations, graph, notes, and full excerpts")),I.join(` -`)}function Sf(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} semantic result(s) for "${U_(_.query,80)}"`,`Index: ${_.provider??"unknown"}:${_.model??"unknown"} (${_.dimensions??"?"} dimensions)`];for(let I of $.slice(0,_.limit??10)){let U=typeof I.score==="number"?` score=${I.score.toFixed(3)}`:"";if(D.push(`- ${U_(I.chunk_id,44)}${U}`),I.source_uri)D.push(` source: ${U_(I.source_uri,120)}`);if(I.text)D.push(` text: ${U_(I.text,180)}`)}return D.push(t_("provenance and full vector result objects")),D.join(` -`)}function Jf(_){let $=Array.isArray(_.sources)?_.sources:[],D=[`${$.length} web source(s) for "${U_(_.query,80)}"`,`Provider: ${_.provider??"unknown"}${_.model?` (${_.model})`:""}`];for(let I of $.slice(0,_.limit??10)){D.push(`- ${U_(I.title??I.url??I.uri??"source",100)}`);let U=I.url??I.uri??I.source_ref;if(U)D.push(` url: ${U_(U,140)}`);if(I.snippet)D.push(` snippet: ${U_(I.snippet,180)}`)}return D.push(t_("provider payloads and filed source refs")),D.join(` -`)}function Wf(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} machine(s) discovered via ${_.source??"unknown"}`,`Adapter: ${_.adapter?.package??"@hasna/machines"} ${_.adapter?.available?"available":"unavailable"}`];for(let I of $.slice(0,10)){let U=I.local?" local":"",E=I.tailscale_dns??I.ssh_target??I.hostname??"";D.push(`- ${U_(I.machine_id??I.id??"unknown",48)}${U}${E?` -> ${U_(E,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(t_("full topology, route hints, and adapter evidence")),D.join(` -`)}function Pf(_){let $=Array.isArray(_.checks)?_.checks:[],D=$.filter((E)=>E.status==="fail"||E.severity==="fail"),I=$.filter((E)=>E.status==="warn"||E.severity==="warn"),U=[`Machine preflight ${_.ok?"passed":"needs attention"} for ${_.machine_id??_.requested_machine_id??"local"}`,`Checks: ${$.length} total, ${D.length} failed, ${I.length} warning(s)`];for(let E of[...D,...I].slice(0,8))U.push(`- ${E.status??E.severity??"check"} ${U_(E.id??E.kind??"check",72)}: ${U_(E.message??E.detail??"",140)}`);return U.push(t_("all checks and repair hints")),U.join(` -`)}function zf(_){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,I])=>`${D}=${I}`).join(", ")||"none"}`,t_("registry rows, clocks, snapshots, imports, and conflicts")].join(` -`)}function Xf(_){let $=Array.isArray(_.warnings)?_.warnings:[],D=Array.isArray(_.recommended_commands)?_.recommended_commands:[],I=[_.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)I.push(`Warnings: ${$.slice(0,5).join("; ")}`);for(let U of D.slice(0,5))I.push(`- next: ${U_(U.shell_command??U.command?.join(" ")??U.id,160)}`);return I.push(t_("diagnostics, route evidence, and all recommended commands")),I.join(` -`)}function Gf(_){let $=_.snapshot??{};return[`Sync snapshot ${_.ok?"recorded":"failed"}`,`Snapshot: ${U_($.id??$.snapshot_id??"unknown",80)} ${$.content_hash?`(${U_($.content_hash,80)})`:""}`,`Machines upserted: ${_.machines_upserted??0}; machine: ${_.machine_id??$.machine_id??"unknown"}`,t_("snapshot payload and topology evidence")].join(` -`)}function Rf(_){let $=Array.isArray(_.conflicts)?_.conflicts:[],D=[`${$.length} sync conflict(s)`];for(let I of $.slice(0,10))D.push(`- ${U_(I.id,48)} ${I.status??"unknown"} ${I.entity_kind??""}/${U_(I.entity_id,80)}`);return D.push("Next: use `knowledge sync conflicts show <id> --json` for one conflict."),D.push(t_("full conflict objects")),D.join(` -`)}function Yf(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} registered sync machine(s)`];for(let I of $.slice(0,10))D.push(`- ${U_(I.machine_id,48)} ${U_(I.hostname??I.workspace_home??"",100)}`);return D.push(t_("machine registry rows")),D.join(` -`)}function GY(_,$){let D=[`Sync ${$} ${_.ok===!1?"needs attention":"completed"}${_.dry_run?" (dry run)":""}`],I=(U,E)=>{if(!E)return;let N=(Array.isArray(E.tables)?E.tables:[]).reduce((L,J)=>L+(J.inserted??0)+(J.updated??0)+(J.deleted??0),0),A=E.artifacts?.copied??0,O=Array.isArray(E.errors)?E.errors.length:0;D.push(`${U}: ${N} table row change(s), ${A} artifact(s), ${O} error(s)`)};if(I("pull",_.pull),I("push",_.push),Array.isArray(_.errors)&&_.errors.length>0)D.push(`Errors: ${_.errors.slice(0,3).map((U)=>U_(U,120)).join("; ")}`);return D.push(t_("per-table rows, artifacts, clocks, and errors")),D.join(` -`)}function Qf(_){let $=Array.isArray(_.citations)?_.citations:[],D=Array.isArray(_.context?.excerpts)?_.context.excerpts:Array.isArray(_.excerpts)?_.excerpts:[],I=[_.generated?"Generated answer with citations":"Prepared citation context draft",`Citations: ${$.length}; excerpts: ${D.length}`];if(_.answer)I.push(`Answer: ${U_(_.answer,500)}`);for(let U of $.slice(0,5))I.push(`- ${U_(U.source_uri??U.ref??U.id,120)}`);return I.push(t_("full answer payload, context, citations, and run ledger")),I.join(` +`)}function Of(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} search result(s) for "${I_(_.query,80)}"${_.mode?.semantic?" (semantic enabled)":""}`];for(let I of $.slice(0,_.limit??10)){let U=I.source?.uri??I.provenance?.source_uri??I.artifact?.path??I.artifact?.uri??I.id,E=typeof I.score==="number"?` score=${I.score.toFixed(3)}`:"";if(D.push(`- ${I.kind??"result"} ${I_(I.title??I.id,80)}${E}`),U)D.push(` source: ${I_(U,120)}`);if(I.text)D.push(` text: ${I_(I.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 Sf(_){let $=Array.isArray(_.excerpts)?_.excerpts:[],D=Array.isArray(_.citations)?_.citations:[],I=[`${$.length} context excerpt(s) for "${I_(_.query??_.normalized_query,80)}"`];for(let U of $.slice(0,10)){let E=D.find((A)=>A.id===U.citation_id||A.result_id===U.result_id),j=E?.source_uri??E?.artifact_path??U.result_id,N=typeof U.score==="number"?` score=${U.score.toFixed(3)}`:"";if(I.push(`- ${U.kind??"excerpt"} ${I_(U.id,44)}${N}`),j)I.push(` source: ${I_(j,120)}`);I.push(` text: ${I_(U.text,220)}`)}return I.push(`Citations: ${D.length}`),I.push(i_("citations, graph, notes, and full excerpts")),I.join(` +`)}function Lf(_){let $=Array.isArray(_.results)?_.results:[],D=[`${$.length} semantic result(s) for "${I_(_.query,80)}"`,`Index: ${_.provider??"unknown"}:${_.model??"unknown"} (${_.dimensions??"?"} dimensions)`];for(let I of $.slice(0,_.limit??10)){let U=typeof I.score==="number"?` score=${I.score.toFixed(3)}`:"";if(D.push(`- ${I_(I.chunk_id,44)}${U}`),I.source_uri)D.push(` source: ${I_(I.source_uri,120)}`);if(I.text)D.push(` text: ${I_(I.text,180)}`)}return D.push(i_("provenance and full vector result objects")),D.join(` +`)}function Jf(_){let $=Array.isArray(_.sources)?_.sources:[],D=[`${$.length} web source(s) for "${I_(_.query,80)}"`,`Provider: ${_.provider??"unknown"}${_.model?` (${_.model})`:""}`];for(let I of $.slice(0,_.limit??10)){D.push(`- ${I_(I.title??I.url??I.uri??"source",100)}`);let U=I.url??I.uri??I.source_ref;if(U)D.push(` url: ${I_(U,140)}`);if(I.snippet)D.push(` snippet: ${I_(I.snippet,180)}`)}return D.push(i_("provider payloads and filed source refs")),D.join(` +`)}function Wf(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} machine(s) discovered via ${_.source??"unknown"}`,`Adapter: ${_.adapter?.package??"@hasna/machines"} ${_.adapter?.available?"available":"unavailable"}`];for(let I of $.slice(0,10)){let U=I.local?" local":"",E=I.tailscale_dns??I.ssh_target??I.hostname??"";D.push(`- ${I_(I.machine_id??I.id??"unknown",48)}${U}${E?` -> ${I_(E,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 Pf(_){let $=Array.isArray(_.checks)?_.checks:[],D=$.filter((E)=>E.status==="fail"||E.severity==="fail"),I=$.filter((E)=>E.status==="warn"||E.severity==="warn"),U=[`Machine preflight ${_.ok?"passed":"needs attention"} for ${_.machine_id??_.requested_machine_id??"local"}`,`Checks: ${$.length} total, ${D.length} failed, ${I.length} warning(s)`];for(let E of[...D,...I].slice(0,8))U.push(`- ${E.status??E.severity??"check"} ${I_(E.id??E.kind??"check",72)}: ${I_(E.message??E.detail??"",140)}`);return U.push(i_("all checks and repair hints")),U.join(` +`)}function zf(_){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,I])=>`${D}=${I}`).join(", ")||"none"}`,i_("registry rows, clocks, snapshots, imports, and conflicts")].join(` +`)}function Xf(_){let $=Array.isArray(_.warnings)?_.warnings:[],D=Array.isArray(_.recommended_commands)?_.recommended_commands:[],I=[_.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)I.push(`Warnings: ${$.slice(0,5).join("; ")}`);for(let U of D.slice(0,5))I.push(`- next: ${I_(U.shell_command??U.command?.join(" ")??U.id,160)}`);return I.push(i_("diagnostics, route evidence, and all recommended commands")),I.join(` +`)}function Gf(_){let $=_.snapshot??{};return[`Sync snapshot ${_.ok?"recorded":"failed"}`,`Snapshot: ${I_($.id??$.snapshot_id??"unknown",80)} ${$.content_hash?`(${I_($.content_hash,80)})`:""}`,`Machines upserted: ${_.machines_upserted??0}; machine: ${_.machine_id??$.machine_id??"unknown"}`,i_("snapshot payload and topology evidence")].join(` +`)}function Rf(_){let $=Array.isArray(_.conflicts)?_.conflicts:[],D=[`${$.length} sync conflict(s)`];for(let I of $.slice(0,10))D.push(`- ${I_(I.id,48)} ${I.status??"unknown"} ${I.entity_kind??""}/${I_(I.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 Yf(_){let $=Array.isArray(_.machines)?_.machines:[],D=[`${$.length} registered sync machine(s)`];for(let I of $.slice(0,10))D.push(`- ${I_(I.machine_id,48)} ${I_(I.hostname??I.workspace_home??"",100)}`);return D.push(i_("machine registry rows")),D.join(` +`)}function GY(_,$){let D=[`Sync ${$} ${_.ok===!1?"needs attention":"completed"}${_.dry_run?" (dry run)":""}`],I=(U,E)=>{if(!E)return;let N=(Array.isArray(E.tables)?E.tables:[]).reduce((S,L)=>S+(L.inserted??0)+(L.updated??0)+(L.deleted??0),0),A=E.artifacts?.copied??0,O=Array.isArray(E.errors)?E.errors.length:0;D.push(`${U}: ${N} table row change(s), ${A} artifact(s), ${O} error(s)`)};if(I("pull",_.pull),I("push",_.push),Array.isArray(_.errors)&&_.errors.length>0)D.push(`Errors: ${_.errors.slice(0,3).map((U)=>I_(U,120)).join("; ")}`);return D.push(i_("per-table rows, artifacts, clocks, and errors")),D.join(` +`)}function Qf(_){let $=Array.isArray(_.citations)?_.citations:[],D=Array.isArray(_.context?.excerpts)?_.context.excerpts:Array.isArray(_.excerpts)?_.excerpts:[],I=[_.generated?"Generated answer with citations":"Prepared citation context draft",`Citations: ${$.length}; excerpts: ${D.length}`];if(_.answer)I.push(`Answer: ${I_(_.answer,500)}`);for(let U of $.slice(0,5))I.push(`- ${I_(U.source_uri??U.ref??U.id,120)}`);return I.push(i_("full answer payload, context, citations, and run ledger")),I.join(` `)}function Kf(_,$){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 RY(_){return!_||_==="local"||_==="localhost"}function E0(_){if(!_.id)throw Error("Missing required --id. Example: knowledge get --id <id>")}function Tf(_,$){let D=$.sort??"created";if(D!=="created"&&D!=="title")throw Error("Invalid --sort value. Use 'created' or 'title'.");let I=[..._].sort((U,E)=>{if(D==="title")return U.title.localeCompare(E.title);return U.created_at.localeCompare(E.created_at)});if($.desc)I.reverse();return{sorted:I,sort:D,direction:$.desc?"desc":"asc"}}async function Ff(_){if(await Df(_))return;let{positional:$,flags:D}=er(_);if(j0("debug","CLI invoked",{command:$[0],flags:{json:D.json,store:D.store}}),D.version){console.log(D.json?JSON.stringify({name:E$.name,version:E$.version},null,2):`${E$.name} ${E$.version}`);return}if(D.completions){let S=D.completions;if(S==="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 project-registration project-membership project-resources project-resource paths mode guarded 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 --operation-id --step-id --idempotency-key --slug --name --collection-id --collection-slug --collection-name --item-id --receipt-id --cursor --kind --all --contract --source-ref --allow-global" -- "$cur")); }; complete -F _knowledge knowledge');else if(S==="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 project-registration project-membership project-resources project-resource paths mode guarded 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" "(--all)--all" "(--contract)--contract" "(--allow-global)--allow-global" "(-p --page)"{-p,--page}"[page number]:number:" "(-l --limit)"{-l,--limit}"[items per page]:number:" "(--search)--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]:" "(--operation-id)--operation-id[registration operation id]:" "(--step-id)--step-id[registration step id]:" "(--idempotency-key)--idempotency-key[caller idempotency key]:" "(--slug)--slug[project slug]:" "(--name)--name[project name]:" "(--collection-id)--collection-id[exact collection id]:" "(--collection-slug)--collection-slug[collection slug]:" "(--collection-name)--collection-name[collection name]:" "(--item-id)--item-id[exact item id]:" "(--receipt-id)--receipt-id[exact receipt id]:" "(--cursor)--cursor[resource cursor]:" "(--kind)--kind[resource kind]:(project collection item taxonomy):" "(--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(S==="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 project-registration project-membership project-resources project-resource paths mode guarded 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 operation-id; complete -c knowledge -l step-id; complete -c knowledge -l idempotency-key; complete -c knowledge -l slug; complete -c knowledge -l name; complete -c knowledge -l collection-id; complete -c knowledge -l collection-slug; complete -c knowledge -l collection-name; complete -c knowledge -l item-id; complete -c knowledge -l receipt-id; complete -c knowledge -l cursor; complete -c knowledge -l kind -a "project collection item taxonomy"; complete -c knowledge -l all; 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 I=ar($[0]),U=1,E=$f()&&I&&!QY.includes(I);if(!I||D.help||I==="help"){let S=I==="help"?$[1]:I||$[1];If(S);return}if(I==="mode"){let S=Vz(process.env);q(D.json||D.verbose?{ok:!0,...S}:Nf(S),D.json,D);return}if(I==="guarded"){if(($[1]??"capabilities")!=="capabilities")throw Error("Usage: knowledge guarded capabilities [--json]");q({ok:!0,contract:"FCAME-1",private_input:!0,private_result:!0,exact_title_lookup:!0,private_transport_body_output:!1},D.json,D);return}Fz(process.env,{storePathOverridden:Boolean(D.store)});let j=I==="project-panel"||I==="app-wiki"?D.scope??"project":D.scope,N=zN({scope:j});if(I==="storage"){let S=$[1]??"status";if(S==="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 W=oN({dryRun:D.dryRun});if(q(W,D.json),!W.ok)process.exitCode=1;return}if(S==="migrate-legacy-path"||S==="migrate-legacy"||S==="migrate-path"){let W=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}if(S==="merge-legacy-path"||S==="merge-legacy"||S==="merge-path"){let W=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}}let A=Boolean(D.store),O=D.store;if(!O)if(j==="project"||j==="local")O=N.workspace.jsonStorePath;else O=u1();let L=t1({storePath:O,storePathOverridden:A});if(E&&await tr($,I,L))I="ask",U=0;if(!A&&(I==="ask"||I==="build")&&!h$())xD(O);let J=()=>{if(!A||h$())return N.projectLinksAuthority();return ON({databasePath:mr(dr(O),"knowledge.db"),itemStore:L,options:{packageVersion:E$.version,authorityId:process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID??"knowledge",tenantId:process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID??"local",corpusId:process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID??"knowledge"}})};if(I==="project-registration"){let S=$[1]??"capability",W=J();if(S==="capability"){q({ok:!0,capability:await W.capability()},D.json,D);return}if(S==="create"){let X=await W.capability(),G=D.project,R=D.slug,K=D.name;if(!D.operationId||!D.stepId||!D.idempotencyKey||!G||!R||!K)throw Error("Usage: knowledge project-registration create --operation-id <id> --step-id <id> --idempotency-key <key> --project <id> --slug <slug> --name <name> [--collection-slug <slug>] [--collection-name <name>] [--json]");let Y={collection_slug:D.collectionSlug??`${R}-knowledge`,collection_name:D.collectionName??`${K} Knowledge`},T=v_({action:"register_collection",source_project_id:G,project_slug:R,project_name:K,collection_slug:Y.collection_slug,collection_name:Y.collection_name,membership_rule:"explicit_collection_binding"}),F=await W.registerCollection({operation_id:D.operationId,step_id:D.stepId,resource_kind:"collection",direction:"forward",authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,target_selector:G,idempotency_key:D.idempotencyKey,request_digest:T,precondition_digest:v_({source_project_id:G,expected:"absent_or_exact_match"}),project_id:G,project_slug:R,project_name:K,desired:Y});q({ok:F.outcome==="accepted",receipt:F},D.json,D);return}if(S==="read-exact"){if(!D.collectionId)throw Error("Usage: knowledge project-registration read-exact --collection-id <uuid> [--json]");q({ok:!0,record:await W.readCollection(D.collectionId)},D.json,D);return}if(S==="receipt"){let X=$[2],G=$[3];if(!D.operationId||!D.stepId||!D.idempotencyKey||!X||!G)throw Error("Usage: knowledge project-registration receipt <register_collection|bind_item> <forward|inverse> --operation-id <id> --step-id <id> --idempotency-key <key> [--json]");let R=await W.capability(),K=await W.lookupReceipt({authority_id:R.authority_id,tenant_id:R.tenant_id,corpus_id:R.corpus_id,operation_id:D.operationId,step_id:D.stepId,action:X,direction:G,idempotency_key:D.idempotencyKey,max_items:1});q({ok:!0,receipt:K},D.json,D);return}if(S==="compensate"||S==="verify-inverse"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.receiptId)throw Error(`Usage: knowledge project-registration ${S} --operation-id <id> --step-id <id> --idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]`);let X=await W.capability(),G={operation_id:D.operationId,step_id:D.stepId,authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,accepted_receipt_id:D.receiptId},R=S==="compensate"?{receipt:await W.compensateRegistration(G)}:{verification:await W.verifyRegistrationInverse(G)};q({ok:!0,...R},D.json,D);return}throw Error("Invalid project-registration action. Use capability, create, read-exact, receipt, compensate, or verify-inverse.")}if(I==="project-membership"){let S=$[1]??"read-exact",W=J();if(S==="bind"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.collectionId||!D.itemId)throw Error("Usage: knowledge project-membership bind --operation-id <id> --step-id <id> --idempotency-key <key> --collection-id <uuid> --item-id <id> [--json]");let X=await W.capability(),G=await W.bindItem({operation_id:D.operationId,step_id:D.stepId,direction:"forward",authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,request_digest:v_({action:"bind_item",collection_id:D.collectionId,item_id:D.itemId}),precondition_digest:v_({collection_id:D.collectionId,item_id:D.itemId,expected:"unbound_or_exact_membership"}),collection_id:D.collectionId,item_id:D.itemId});q({ok:G.outcome==="accepted",receipt:G},D.json,D);return}if(S==="read-exact"){if(!D.collectionId||!D.itemId)throw Error("Usage: knowledge project-membership read-exact --collection-id <uuid> --item-id <id> [--json]");q({ok:!0,record:await W.readItemBinding(D.collectionId,D.itemId)},D.json,D);return}if(S==="compensate"||S==="verify-inverse"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.receiptId)throw Error(`Usage: knowledge project-membership ${S} --operation-id <id> --step-id <id> --idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]`);let X=await W.capability(),G={operation_id:D.operationId,step_id:D.stepId,authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,accepted_receipt_id:D.receiptId},R=S==="compensate"?{receipt:await W.compensateItemBinding(G)}:{verification:await W.verifyItemBindingInverse(G)};q({ok:!0,...R},D.json,D);return}throw Error("Invalid project-membership action. Use bind, read-exact, compensate, or verify-inverse.")}if(I==="project-resources"){let S=D.project??$[1];if(!S)throw Error("Usage: knowledge project-resources <project-id> [--kind <kind>]... [--limit <n>] [--cursor <cursor>] [--all] [--json]");let W=J(),X=D.kind,G=D.all?{resources:await W.readAllProjectResources(S,{limit:D.limit,kinds:X})}:await W.listProjectResources(S,{limit:D.limit,cursor:D.cursor,kinds:X});q({ok:!0,...G},D.json,D);return}if(I==="project-resource"){let S=D.project??$[1],W=$[2],X=$[3];if(!S||!W||!X)throw Error("Usage: knowledge project-resource <project-id> <project|collection|item|taxonomy> <resource-id> [--json]");q({ok:!0,resource:await J().readProjectResource(S,W,X)},D.json,D);return}if(I==="inventory"){let S=await N.resolveInventory({limit:D.limit,includeArchived:D.includeArchived||D.archived,storePath:h$()?void 0:O});q(D.json||D.verbose?S:Af(S),D.json,D);return}if(I==="project-panel"){let S=D.project??$[1];if(!S)throw Error("Usage: knowledge project-panel --project <id|name|slug> [--json|--contract]");let W=await K8(S,{service:N,limit:D.limit,storePath:h$()?void 0:O,includeArchived:D.includeArchived||D.archived});q(D.json||D.contract?W:T8(W),D.json||D.contract);return}if(I==="paths"){let S=N.paths();q(D.json||D.verbose?S:gf(S),D.json,D);return}if(I==="setup"){let S=N.setup({mode:D.mode,apiUrl:D.apiUrl,canonicalExample:D.canonicalExample});q(S,D.json,D);return}if(I==="auth"){let S=$[1]??"whoami";if(S==="whoami"||S==="status"){let W=N.authStatus(process.env);q({ok:!0,...W,message:W.authenticated?`Authenticated via ${W.source}`:"Not authenticated"},D.json,D);return}if(S==="login"){let W=D.apiKey??process.env.KNOWLEDGE_API_KEY??process.env.HASNA_KNOWLEDGE_API_KEY;if(!W)throw Error("Usage: knowledge auth login --api-key <key> [--email <email>]");let X=N.saveAuth({apiKey:W,email:D.email,orgSlug:D.org,orgId:D.orgId,userId:D.userId,apiUrl:D.apiUrl},process.env);q({ok:!0,authenticated:!0,email:X.email??null,org_slug:X.org_slug??null,api_url:X.api_url??N.authStatus(process.env).api_url,auth_path:N.authStatus(process.env).auth_path,message:`Saved hosted credentials for ${X.email??"API key"}`},D.json,D);return}if(S==="logout"){let W=N.clearAuth(process.env);q({ok:!0,removed:W,message:W?"Removed hosted credentials":"No hosted credentials found"},D.json,D);return}throw Error("Invalid auth action. Use 'login', 'whoami', or 'logout'.")}if(I==="storage"){let S=$[1]??"status";if(S==="status"){let W=N.storageContract(),X=N.validateStorage();q({ok:X.ok,...W,validation:X,message:`${W.storage_type} artifact storage at ${W.artifact_store.uri_prefix}`},D.json,D);return}if(S==="validate"){let W=N.validateStorage();if(q({ok:W.ok,validation:W,message:W.ok?"Storage contract valid":`Storage contract invalid: ${W.errors.join("; ")}`},D.json,D),!W.ok)process.exitCode=1;return}if(S==="repair-artifact-keys"||S==="repair-keys"){let W=N.repairArtifactManifestKeys({approveWrite:D.approveWrite,approvedBy:D.approvedBy,dryRun:D.dryRun});q(W,D.json,D);return}if(S==="migrate-legacy-path"||S==="migrate-legacy"||S==="migrate-path"){let W=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}if(S==="merge-legacy-path"||S==="merge-legacy"||S==="merge-path"){let W=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(q(W,D.json),!W.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(I==="machines"){let S=$[1]??"topology";if(S==="topology"||S==="status"){let W=await N.machineTopology({includeTailscale:D.tailscale!==!1});q(D.json||D.verbose?W:Wf(W),D.json,D);return}if(S==="preflight"||S==="check"){let W=$[2]??D.machine??"local",X=D.workspace??process.cwd(),G=await N.machinePreflight({machineId:W,commands:[{command:"bun",required:!0},{command:"knowledge",required:!0}],packages:[{name:E$.name,command:"knowledge",expectedVersion:E$.version,required:!0},{name:"@hasna/machines",command:"machines",required:!1}],workspaces:[{label:"open-knowledge",path:X,expectedPackageName:E$.name,expectedVersion:E$.version,required:!0}]});if(q(D.json||D.verbose?G:Pf(G),D.json,D),!G.ok&&!D.json)process.exitCode=1;return}throw Error("Invalid machines action. Use 'topology' or 'preflight'.")}if(I==="sync"){let S=$[1]??"status",W=D.tables?D.tables.split(",").map((X)=>X.trim()).filter(Boolean):void 0;if(S==="status"){let X=N.syncStatus();q(D.json||D.verbose?X:zf(X),D.json,D);return}if(S==="doctor"||S==="readiness"||S==="preflight"){let X=await N.syncDoctor({machine:D.machine??null,peerWorkspace:D.peerWorkspace??null,includeTailscale:D.tailscale!==!1,tables:W}),G={package:{name:E$.name,version:E$.version},...X};if(q(D.json||D.verbose?G:Xf(G),D.json,D),!X.ok&&!D.json)process.exitCode=1;return}if(S==="snapshot"||S==="record"){let X=await N.createSyncSnapshot({includeTailscale:D.tailscale!==!1,machineId:D.machine});q(D.json||D.verbose?X:Gf(X),D.json,D);return}if(S==="conflicts"||S==="conflict"){let X=$[2];if(X==="show"||X==="get"){let K=$[3]??D.id;if(!K)throw Error("Usage: knowledge sync conflicts show <id>");let Y=N.syncConflict(K);q({ok:!0,conflict:Y,message:`Sync conflict ${K}`},D.json,D);return}if(X==="propose"||X==="proposal"){let K=$[3]??D.id;if(!K)throw Error("Usage: knowledge sync conflicts propose <id>");q(D.mode==="ai"?await N.proposeSyncConflictResolutionWithAi({id:K,modelRef:D.model,fake:D.fake}):N.proposeSyncConflictResolution(K),D.json,D);return}if(X==="resolve"){let K=$[3]??D.id;if(!K)throw Error("Usage: knowledge sync conflicts resolve <id> --approve-write --approved-by <name> [--strategy <name>]");let Y=N.resolveSyncConflict({id:K,strategy:D.strategy,approvedBy:D.approvedBy,approveWrite:D.approveWrite,proposedPatchUri:D.patchUri});if(q(Y,D.json,D),!Y.ok&&!D.json)process.exitCode=1;return}let G=N.syncConflicts({status:X,limit:D.limit}),R={ok:!0,conflicts:G,message:`${G.length} sync conflict(s)`};q(D.json||D.verbose?R:Rf(R),D.json,D);return}if(S==="machines"||S==="registry"){let X=N.syncMachines(),G={ok:!0,machines:X,message:`${X.length} registered sync machine(s)`};q(D.json||D.verbose?G:Yf(G),D.json,D);return}if(S==="export"){let X=N.exportSyncBundle({machineId:D.machine??null,tables:W,includeArtifactContent:D.artifactContent!==!1});q(X,!0);return}if(S==="import"){let X=await Bun.stdin.text();if(!X.trim())throw Error("Usage: knowledge sync import < bundle.json");let G=await N.importSyncBundle({bundle:JSON.parse(X),dryRun:D.dryRun,direction:"import",machineId:D.machine??null});q(D.json||D.verbose?G:GY(G,S),D.json,D);return}if(S==="dry-run"||S==="pull"||S==="push"||S==="sync"){if(!D.peerWorkspace&&RY(D.machine))throw Error(`Usage: knowledge sync ${S} --peer-workspace <repo-or-knowledge-home> [--scope project] -Remote machine sync can omit --peer-workspace when machines path mapping is configured.`);let X=S==="dry-run"?"both":S==="sync"?"both":S,G=!RY(D.machine)?await N.syncRemotePeer({direction:X,machine:D.machine,peerWorkspace:D.peerWorkspace,tables:W,dryRun:D.dryRun===!0||S==="dry-run",includeArtifactContent:D.artifactContent!==!1,includeTailscale:D.tailscale!==!1}):await N.syncPeer({peerWorkspace:D.peerWorkspace,direction:X,dryRun:D.dryRun===!0||S==="dry-run",tables:W,includeArtifactContent:D.artifactContent!==!1,machineId:D.machine??null});if(q(D.json||D.verbose?G:GY(G,S),D.json,D),!G.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(I==="db"){let S=$[1]??"init";if(S==="init"){let W=N.initDb();q({ok:!0,...W,message:`Initialized ${W.path}`},D.json,D);return}if(S==="stats"){let W=N.dbStats();q({ok:!0,path:N.workspace.knowledgeDbPath,...W,message:`knowledge.db schema v${W.schema_version}`},D.json,D);return}if(S==="storage"){if(($[2]??"status")==="status"){let X=JP({scope:D.scope});q({ok:!0,...X,message:`knowledge.db storage mode ${X.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(I==="app-wiki"){let S=$[1]??"init";if(S==="paths"||S==="status"){q({ok:!0,standard:"hasna-app-wiki.v1",default_scope:"project",global_writes_require:"--allow-global",...N.paths()},D.json);return}if(S==="init"||S==="open"){let W=await N.initAppWiki({allowGlobal:D.allowGlobal});q(W,D.json);return}if(S==="note"||S==="notes"){let W=$[2]??"list";if(W==="add"||W==="create"){let X=D.title??$[3],G=D.content??$.slice(4).join(" ");if(!X||!G)throw Error("Usage: knowledge app-wiki note add --title <title> --content <text> [--source-ref <uri>]");let R=await N.addAppWikiNote({title:X,content:G,tags:D.tag,sourceRefs:D.sourceRef,allowGlobal:D.allowGlobal});q(R,D.json);return}if(W==="list"||W==="ls"){let X=N.listAppWikiNotes({limit:D.limit});q({ok:!0,scope:N.scope,home:N.workspace.home,notes:X,message:`${X.length} app wiki note(s)`},D.json);return}if(W==="get"||W==="show"){let X=$[3]??D.id;if(!X)throw Error("Usage: knowledge app-wiki note get <id-or-path>");let G=await N.getAppWikiNote(X,{includeContent:!0});if(!G)throw Error(`App wiki note not found: ${X}`);q(G,D.json);return}throw Error("Invalid app-wiki note action. Use 'add', 'list', or 'get'.")}if(S==="source"||S==="sources"){let W=$[2]??"add";if(W!=="add"&&W!=="ingest")throw Error("Invalid app-wiki source action. Use 'add'.");let X=$[3]??D.sourceRef?.[0];if(!X)throw Error("Usage: knowledge app-wiki source add <source-ref>");let G=await N.addAppWikiSourceRef({sourceRef:X,purpose:D.purpose,allowGlobal:D.allowGlobal});q({ok:!0,...G,message:`Added app wiki source ${G.source_ref}`},D.json);return}if(S==="search"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge app-wiki search <query>");let X=await N.searchAppWiki({query:W,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...X,message:`${X.results.length} app wiki result(s)`},D.json);return}if(S==="query"||S==="context"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge app-wiki query <query>");let X=await N.queryAppWiki({query:W,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...X,message:`${X.excerpts.length} app wiki excerpt(s)`},D.json);return}throw Error("Invalid app-wiki action. Use 'init', 'paths', 'note', 'source', 'search', or 'query'.")}if(I==="wiki"){let S=$[1]??"init";if(S==="init"){let W=await N.initWiki();q({ok:!0,...W,message:`Initialized wiki layout in ${N.workspace.home}`},D.json,D);return}if(S==="compile"){let W=$.slice(2),X=W.filter((K)=>/^(open-files|file|s3|https?):\/\//.test(K)),G=W.filter((K)=>!/^(open-files|file|s3|https?):\/\//.test(K)).join(" "),R=await N.compileWiki({title:D.title,query:G||D.search,sourceRefs:X.length>0?X:void 0,limit:D.limit});q({ok:!0,...R,message:`Compiled wiki page ${R.path}`},D.json,D);return}if(S==="file-answer"||S==="answer"){let W=$.slice(2).join(" ");if(!W)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 X=await N.fileAnswer({prompt:W,answer:D.content,approveWrite:D.approveWrite,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...X},D.json,D);return}if(S==="lint"){let W=N.lintWiki();q({ok:W.ok,...W,message:W.ok?"Wiki lint passed":`Wiki lint found ${W.issue_count} issue(s)`},D.json,D);return}throw Error("Invalid wiki action. Use 'init', 'compile', 'file-answer', or 'lint'.")}if(I==="safety"){let S=$[1]??"status",W=N.ensureWorkspace(),X=N.safetyPolicy();N.initDb();let G=w(W.knowledgeDbPath);try{if(S==="status"){q({ok:!0,mode:X.mode,workspace:W.home,allow_write_roots:X.allowWriteRoots,read_only_source_access:X.readOnlySourceAccess,network:X.network,redaction:X.redaction,approvals:X.approvals,message:`Safety policy: ${X.mode}`},D.json,D);return}if(S==="check"){let R=$[2]??"generated_write",K=$[3]??null,Y;try{if(R==="web_search")G0(X),Y={action:R,target_uri:K,approval_required:!1,approved:!0,decision:"allow"};else if(R==="s3_read"){if(!K)throw Error("safety check s3_read requires an s3:// target.");b6(K,X),Y={action:R,target_uri:K,approval_required:!1,approved:!0,decision:"allow"}}else Y=E3(G,X,R,K);G_(G,{event_type:"safety_check",action:R,target_uri:K,decision:Y.decision==="allow"?"allow":"requires_approval",metadata:Y}),q({ok:!0,...Y,message:`Safety check ${Y.decision}`},D.json,D);return}catch(T){throw G_(G,{event_type:"safety_check",action:R,target_uri:K,decision:"deny",metadata:{error:T instanceof Error?T.message:String(T)}}),T}}if(S==="approve"){let R=$[2]??"generated_write",K=$[3]??null,Y=s1(G,{action:R,target_uri:K,reason:"local-cli approval",metadata:{scope:D.scope??"global"}});G_(G,{event_type:"approval",action:R,target_uri:K,decision:"allow",metadata:{approval_id:Y.id}}),q({ok:!0,...Y,action:R,target_uri:K,message:`Approved ${R}`},D.json,D);return}if(S==="audit"){let R=G.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((K)=>({id:K.id,event_type:K.event_type,action:K.action,target_uri:K.target_uri,decision:K.decision,metadata:JSON.parse(K.metadata_json),created_at:K.created_at}));q({ok:!0,events:R,message:`${R.length} audit event(s)`},D.json,D);return}if(S==="redact"){let R=$.slice(2).join(" ");if(!R)throw Error("Usage: knowledge safety redact <text>");let K=y_(R,X);if(K.findings.length>0)R0(G,{source_uri:"safety://redact",findings:K.findings,metadata:{command:"safety redact"}});G_(G,{event_type:"redaction",action:"safety_redact",target_uri:"safety://redact",decision:K.findings.length>0?"redacted":"allow",metadata:{findings:K.findings.length}}),q({ok:!0,text:K.text,findings:K.findings,message:`Redacted ${K.findings.length} finding(s)`},D.json,D);return}throw Error("Invalid safety action. Use 'status', 'check', 'approve', 'audit', or 'redact'.")}finally{G.close()}}if(I==="source"){if(($[1]??"")!=="resolve")throw Error("Invalid source action. Use 'resolve'.");let W=$[2];if(!W)throw Error("Usage: knowledge source resolve <source-ref>");let X=await N.resolveSource(W,{purpose:D.purpose,limit:D.limit});q({ok:!0,...X,message:X.resolved?`Resolved ${X.source_ref} (${X.content.chunks_returned}/${X.content.chunks_total} chunks)`:`Source not indexed: ${W}`},D.json,D);return}if(I==="ingest"){let S=$[1]??"";if(S==="rules"||S==="global-rules"||S==="agent-rules"){let W=await N.importRulesProvenance({root:D.workspace??process.cwd(),owner:D.owner,dryRun:D.dryRun===!0,maxItems:D.maxItems,limit:D.limit});q({ok:!0,...W},D.json);return}if(S==="manifest"){let W=$[2];if(!W)throw Error("Usage: knowledge ingest manifest <file|s3://bucket/key>");let X=await N.ingestManifest(W);q({ok:!0,...X,message:`Ingested ${X.items_seen} manifest item(s)`},D.json,D);return}if(S==="source"){let W=$[2];if(!W)throw Error("Usage: knowledge ingest source <source-ref>");let X=await N.ingestSource(W,D.purpose);q({ok:!0,...X,message:`Ingested source ${X.source_ref} (${X.chunks_inserted} chunks)`},D.json,D);return}throw Error("Invalid ingest action. Use 'manifest' or 'source'.")}if(I==="reindex"){let S=$[1]??"status";if(S==="status"){let W=N.reindexHealth({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`${W.missing_embeddings} chunk(s) missing embeddings`},D.json,D);return}if(S==="enqueue"){let W=N.enqueueReindex({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`Queued ${W.enqueued} embedding refresh item(s)`},D.json,D);return}if(S==="embeddings"){let W=await N.refreshEmbeddings({full:D.full,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`Embedded ${W.indexed.chunks_embedded} chunk(s)`},D.json,D);return}if(S==="outbox"){let W=$[2];if(!W)throw Error("Usage: knowledge reindex outbox <file|s3://bucket/key>");let X=await N.consumeOutbox(W);q({ok:!0,...X,message:`Consumed ${X.events_seen} outbox event(s)`},D.json,D);return}throw Error("Invalid reindex action. Use 'status', 'enqueue', 'embeddings', or 'outbox'.")}if(I==="embeddings"){let S=$[1]??"status";if(S==="status"){let W=N.embeddingStatus();q({ok:!0,...W,message:`${W.total_vector_entries} vector index entries`},D.json,D);return}if(S==="index"){let W=await N.indexEmbeddings({limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});q({ok:!0,...W,message:`Embedded ${W.chunks_embedded} chunk(s)`},D.json,D);return}if(S==="search"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge embeddings search <query>");let X=await N.semanticSearch({query:W,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake}),G={ok:!0,...X,message:`${X.results.length} semantic result(s)`};q(D.json||D.verbose?G:Sf(G),D.json,D);return}throw Error("Invalid embeddings action. Use 'status', 'index', or 'search'.")}if(I==="context"){if(($[1]??"pack")!=="pack")throw Error("Invalid context action. Use 'pack'.");let W=D.from??"search";if(!["search","loops","runs"].includes(W))throw Error("Invalid --from value. Use 'search', 'loops', or 'runs'.");let X=$.slice(2).join(" ")||D.topic||"",G=await N.contextPack({source:W,purpose:W==="loops"||W==="runs"?"proposal":"agent_context",query:X,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:O});XY({ok:!0,...G,message:G.message});return}if(I==="proposals"){if(($[1]??"context")!=="context")throw Error("Invalid proposals action. Use 'context'.");let W=D.from??"loops";if(!["loops","runs"].includes(W))throw Error("Invalid --from value for proposals. Use 'loops' or 'runs'.");let X=D.topic??$.slice(2).join(" ");if(!X.trim())throw Error("Usage: knowledge proposals context --from loops --topic <text>");let G=await N.contextPack({source:W,purpose:"proposal",query:X,topic:X,since:D.since,dedupe:D.dedupe??!0,maxTokens:D.maxTokens,maxItems:D.maxItems,limit:D.limit});XY({ok:!0,...G,message:G.message});return}if(I==="search"){let S=$.slice(1).join(" ");if(!S)throw Error("Usage: knowledge search <query>");if(D.context){let G=await N.retrieveContext({query:S,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:O}),R={ok:!0,...G,message:`${G.excerpts.length} context excerpt(s)`};q(D.json||D.verbose?R:Lf(R),D.json,D);return}let W=await N.search({query:S,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:O}),X={ok:!0,...W,message:`${W.results.length} search result(s)`};q(D.json||D.verbose?X:Of(X),D.json,D);return}if(I==="web"){if(($[1]??"search")!=="search")throw Error("Invalid web action. Use 'search'.");let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge web search <query>");let X=await N.webSearch({query:W,limit:D.limit,modelRef:D.model,provider:D.provider,domains:D.domain,fake:D.fake,fileResults:D.fileResults}),G={ok:!0,...X,message:`${X.sources.length} web source(s)`};q(D.json||D.verbose?G:Jf(G),D.json,D);return}if(I==="ask"||I==="build"){let S=$.slice(U).join(" ");if(!S)throw Error("Usage: knowledge ask <prompt>");let W=await N.runPrompt({prompt:S,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,generate:D.generate,approveWrite:D.approveWrite,legacyStorePath:O}),X={ok:!0,...W,message:W.generated?"Generated answer with citations":"Prepared citation context draft"};q(D.json||D.verbose?X:Qf(X),D.json,D);return}if(I==="providers"){let S=$[1]??"status";if(S==="status"){let W=N.providerStatus(),X=W.providers.filter((G)=>G.configured).length;q({ok:!0,...W,message:`${X}/${W.providers.length} provider credential(s) configured`},D.json,D);return}if(S==="models"){let W=N.modelRegistry();q({ok:!0,models:W,message:`${W.length} model alias(es)`},D.json,D);return}if(S==="check"){let W=$[2]??"default",X=T$(W,N.config()),G=x_(X),R=A4(G.provider,N.config());q({ok:!0,target:W,model_ref:X,provider:G.provider,model:G.model,credential:R,message:`${G.provider} credentials configured`},D.json,D);return}throw Error("Invalid providers action. Use 'status', 'models', or 'check'.")}if(I==="add"){let S=$[1],W=$[2];if(!S||!W)throw Error("Usage: knowledge add <title> <content>");let X=await L.create({title:S,content:W,url:D.url??null,tags:D.tag??[]});j0("info","Item added",{id:X.id,title:X.title,tags:X.tags?.length??0,transport:L.kind}),q({ok:!0,item:X,message:`Added ${X.id}`},D.json,D);return}if(I==="list"){if(D.format!==void 0&&D.format!=="table"&&D.format!=="json")throw Error("Invalid --format value for list. Use 'table' or 'json'.");if(D.page!==void 0&&(!Number.isFinite(D.page)||!Number.isInteger(D.page)||D.page<1))throw Error("--page must be a positive integer.");if(D.limit!==void 0&&(!Number.isFinite(D.limit)||!Number.isInteger(D.limit)||D.limit<1||D.limit>200))throw Error("--limit must be an integer between 1 and 200.");let S=D.page??1,W=D.limit??20,X=D.search?String(D.search).toLowerCase():"",G=D.tagRaw??D.tag??[],R=D.tag?.length?D.tag.map((A_)=>A_.toLowerCase()).join(","):"none",K=D.format==="table"||!D.json&&!D.format&&Ef(D),Y=D.json||D.format==="json",T=D.archived?"archived":D.includeArchived?"all":"active",{sort:F,direction:k}=Tf([],D),B=(S-1)*W;if(B>1e4)throw Error("The requested page exceeds the maximum bounded offset of 10000.");let c=await L.list({search:X,tags:G,archive:T,sort:F,direction:k,limit:W,offset:B}),E_=c.items,D_=Math.max(1,Math.ceil(c.total/W)),J_={ok:!0,page:S,limit:W,total:c.total,total_pages:D_,sort:F,direction:k,items:E_,store_exists:c.exists};if(Y){q(J_,!0);return}if(D.verbose){q(J_,!1,D);return}if(E_.length===0){q(`No items found (search=${X||"none"}, tag=${R})`,!1);return}if(K){let A_=(r_)=>r_,K$=`${A_("ID")} ${A_("TITLE")} ${A_("CREATED")} ${A_("URL")} ${A_("TAGS")}`;console.log(K$);for(let r_ of E_)console.log(`${r_.id} ${A_(U_(r_.title,80))} ${r_.created_at} ${r_.url?A_(U_(r_.url,90)):""} ${r_.tags?.length?A_(U_(`[${r_.tags.join(", ")}]`,80)):""}`);console.log(`Page ${S}/${D_} | showing ${E_.length} of ${c.total} | sort=${F} ${k} | search=${X||"none"} | tag=${R}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}else{for(let A_ of E_)console.log(`${A_.id} ${U_(A_.title,80)} ${A_.created_at}${A_.url?` ${U_(A_.url,90)}`:""}${A_.tags?.length?` ${U_(`[${A_.tags.join(", ")}]`,80)}`:""}`);console.log(`Page ${S}/${D_} | showing ${E_.length} of ${c.total} | sort=${F} ${k} | search=${X||"none"} | tag=${R}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}return}if(I==="get"){E0(D);let S=await L.get(D.id);if(!S)throw Error(`Item not found: ${D.id}`);q({ok:!0,item:S,store_exists:L.exists,message:`${S.id}: ${S.title}`},D.json,D);return}if(I==="versions"){E0(D);let S=Number.isFinite(D.page)&&D.page>0?D.page:1,W=Number.isFinite(D.limit)&&D.limit>0?D.limit:void 0,X=await L.listVersions(D.id,{limit:W,offset:(S-1)*(W??50)});if(!X)throw Error(`Item not found: ${D.id}`);let G={ok:!0,id:X.item_id,current_version:X.current_version,total:X.total,page:S,store:L.location,versions:X.items,message:X.total===0?`${X.item_id} is at version ${X.current_version} with no retained prior versions`:`${X.item_id} is at version ${X.current_version}; ${X.total} prior version(s) retained`};if(D.json||D.verbose){q(G,D.json,D);return}console.log(G.message);for(let R of X.items){let K=R.actor?` by ${R.actor}`:"",Y=R.reason?` (${R.reason})`:"";console.log(`v${R.version} ${R.valid_to}${K}${Y} ${R.content_bytes} bytes ${R.content_hash.slice(0,12)}`)}if(X.items.length>0)console.log("Hint: `knowledge diff --id <id> --rev <n>` shows what changed.");return}if(I==="diff"){E0(D);let S=await L.get(D.id);if(!S)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 W=()=>({title:S.title,content:S.content,url:S.url,tags:S.tags??[],metadata:S.metadata??{},archived:S.archived??!1}),X=`v${S.version??"?"} (current)`,G=async(k)=>{if(k==="current")return{label:X,snapshot:W()};let B=Number(k);if(!Number.isInteger(B)||B<1)throw Error(`Not a version number: ${k}`);if(S.version!==void 0&&B===S.version)return{label:X,snapshot:W()};let c=await L.getVersion(S.id,B);if(!c)throw Error(`No version ${B} retained for ${S.id} (it is at version ${S.version??"?"}). Run \`knowledge versions --id <id>\` to see what is retained.`);return{label:`v${c.version}`,snapshot:{title:c.title,content:c.content,url:c.url,tags:c.tags,metadata:c.metadata,archived:c.archived}}},R,K;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),K=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,K=D.to}else{let k=await L.listVersions(S.id,{limit:1});if(!k)throw Error(`Item not found: ${D.id}`);if(k.items.length===0)throw Error(`${S.id} is at version ${k.current_version} with no retained prior versions to diff against.`);R=String(k.items[0].version),K="current"}let Y=await G(R),T=await G(K),F=kz(Y.snapshot,T.snapshot);if(D.json||D.verbose){q({ok:!0,id:S.id,from:Y.label,to:T.label,...F},D.json,D);return}console.log(qz(F,`${S.id} ${Y.label}`,`${S.id} ${T.label}`));return}if(I==="update"){E0(D);let S=await L.get(D.id);if(!S)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 W={};if(D.title!==void 0)W.title=D.title;if(D.content!==void 0)W.content=D.content;if(D.url!==void 0)W.url=D.url;let X;if(D.tag!==void 0){if(X=zY(S.tags,D.tag),X.length>0)W.tags=[...S.tags??[],...X]}let G=D.ifVersion!==void 0?D.ifVersion:S.version,R=await L.update(S.id,W,{expectedVersion:G});q(bP({ok:!0,item:R},`Updated ${R?.id??S.id}`,X),D.json,D);return}if(I==="archive"||I==="restore"){E0(D);let S=await L.get(D.id);if(!S)throw Error(`Item not found: ${D.id}`);let W=await L.update(S.id,{archived:I==="archive"},{expectedVersion:S.version});q({ok:!0,item:W,message:`${I==="archive"?"Archived":"Restored"} ${W?.id??S.id}`},D.json,D);return}if(I==="untag"){if(E0(D),!D.tag?.length)throw Error("Missing required --tag. Example: knowledge untag --id <id> -t <tag>");let S=await L.get(D.id);if(!S)throw Error(`Item not found: ${D.id}`);let W=S.tags??[],X=new Set(W.map((B)=>B.toLowerCase())),G=new Set;for(let B of D.tagRaw??D.tag){let c=B.trim().toLowerCase();if(c.length>0&&X.has(c)){G.add(c);continue}for(let E_ of B.split(",").map((D_)=>D_.trim().toLowerCase()).filter((D_)=>D_.length>0))G.add(E_)}let R=W.filter((B)=>!G.has(B.toLowerCase())),K=W.length-R.length,Y=[...G].filter((B)=>!X.has(B));if(K===0)throw Error(`No matching tag on ${S.id}: ${Y.map((B)=>JSON.stringify(B)).join(", ")} not in [${W.map((B)=>JSON.stringify(B)).join(", ")}]`);let T=await L.update(S.id,{tags:R},{expectedVersion:S.version}),F=Y.length>0?` (not found: ${Y.map((B)=>JSON.stringify(B)).join(", ")})`:"",k={ok:!0,item:T,removed:K,message:`Removed ${K} tag${K===1?"":"s"} from ${T?.id??S.id}${F}`};if(Y.length>0)k.not_found=Y;q(k,D.json,D);return}if(I==="upsert"){let S=D.title??$[1],W=D.content??$[2],X=D.id?await L.get(D.id):null;if(!X){if(!S||!W)throw Error("New item requires title and content. Example: knowledge upsert <title> <content> [--id <id>]");let Y=await L.create({id:D.id,title:S,content:W,url:D.url??null,tags:D.tag??[]});q(bP({ok:!0,created:!0,item:Y},`Upserted ${Y.id}`,D.tag),D.json,D);return}let G={};if(S!==void 0)G.title=S;if(W!==void 0)G.content=W;if(D.url!==void 0)G.url=D.url;let R;if(D.tag!==void 0){if(R=zY(X.tags,D.tag),R.length>0)G.tags=[...X.tags??[],...R]}let K=await L.update(X.id,G,{expectedVersion:X.version});q(bP({ok:!0,created:!1,item:K},`Upserted ${K?.id??X.id}`,R),D.json,D);return}if(I==="delete"){if(E0(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}`);j0("info","Item deleted",{id:D.id,transport:L.kind}),q({ok:!0,deleted_id:D.id,message:`Deleted ${D.id}`},D.json,D);return}if(I==="export"){let S=D.format??"json";if(S!=="json"&&S!=="jsonl")throw Error("Invalid --format. Use 'json' or 'jsonl'.");let W=await L.listAll();if(S==="jsonl")for(let X of W.items)console.log(JSON.stringify(X));else if(D.json||D.format==="json"||D.verbose)q({ok:!0,items:W.items,store_exists:W.exists},D.json||D.format==="json",D);else q(Kf(W.items,S),!1);return}if(I==="prune"){if(!D.yes)throw Error("Refusing prune without --yes. Re-run with: knowledge prune --yes [--older-than <days>] [--empty]");let{items:S}=await L.listAll(),W=D.olderThan!==void 0?new Date(Date.now()-D.olderThan*86400000):null,X=S.filter((K)=>W!==null&&new Date(K.created_at)<W||D.empty&&K.content.trim().length===0),G=await L.deleteMany(X.map((K)=>K.id)),R=S.length-G;j0("info","Prune completed",{pruned:G,remaining:R,transport:L.kind}),q({ok:!0,pruned:G,remaining:R,message:`Pruned ${G} item(s)`},D.json,D);return}if(I==="dedupe"){if(!D.yes)throw Error("Refusing dedupe without --yes. Re-run with: knowledge dedupe --yes [--json]");let{items:S}=await L.listAll(),W=new Set,X=[];for(let K of S){let Y=`${K.title}\x00${K.content}`;if(W.has(Y))X.push(K);else W.add(Y)}let G=await L.deleteMany(X.map((K)=>K.id)),R=S.length-G;j0("info","Dedupe completed",{removed:G,remaining:R,transport:L.kind}),q({ok:!0,removed:G,remaining:R,message:`Dedupe removed ${G} duplicate(s)`},D.json,D);return}if(I==="stats"){let S=await L.listAll(),W=S.items.filter((B)=>!B.archived),X=W.length,G=S.items.length-X,R=W.filter((B)=>B.url).length,K=W.filter((B)=>B.tags&&B.tags.length>0).length,Y=X>0?W.map((B)=>B.created_at).sort()[0]:null,T=X>0?W.map((B)=>B.created_at).sort()[X-1]:null,F={};for(let B of W)for(let c of B.tags||[])F[c]=(F[c]||0)+1;let k=Object.entries(F).sort((B,c)=>c[1]-B[1]).slice(0,5).map(([B,c])=>({tag:B,count:c}));q({ok:!0,total:X,archived:G,with_url:R,with_tags:K,oldest:Y,newest:T,top_tags:k,store_exists:S.exists,message:`${X} items | ${R} with URL | ${K} with tags`},D.json,D);return}let P=_f($[0]),z=P?` Did you mean '${P}'?`:"";throw j0("warn","Unknown command",{input:$[0],suggestion:P}),Error(`Unknown command: ${$[0]}.${z} Run 'knowledge --help' for available commands.`)}function Vf(_,$){let D=_ instanceof Error?_.message:String(_);j0("debug","CLI error",{message:D,stack:_ instanceof Error?_.stack:void 0}),console.error(`Error: ${D}`);let I=_ instanceof z0?_:null;if($.includes("--json"))q({ok:!1,error:D,message:D,...I?{code:"version_conflict",expected:I.expected,current:I.current}:{}},!0);process.exitCode=I?2:1}if(import.meta.main){let _=process.argv.slice(2);Ff(_).catch(($)=>Vf($,_))}export{_f as suggestCommand,Tf as sortItems,Ff as run,er as parseArgs,Vf as emitCliError}; +`)}function RY(_){return!_||_==="local"||_==="localhost"}function E0(_){if(!_.id)throw Error("Missing required --id. Example: knowledge get --id <id>")}function Tf(_,$){let D=$.sort??"created";if(D!=="created"&&D!=="title")throw Error("Invalid --sort value. Use 'created' or 'title'.");let I=[..._].sort((U,E)=>{if(D==="title")return U.title.localeCompare(E.title);return U.created_at.localeCompare(E.created_at)});if($.desc)I.reverse();return{sorted:I,sort:D,direction:$.desc?"desc":"asc"}}async function Ff(_){if(await Df(_))return;let{positional:$,flags:D}=er(_);if(j0("debug","CLI invoked",{command:$[0],flags:{json:D.json,store:D.store}}),D.version){console.log(D.json?JSON.stringify({name:E$.name,version:E$.version},null,2):`${E$.name} ${E$.version}`);return}if(D.completions){let O=D.completions;if(O==="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 project-registration project-membership project-resources project-resource paths mode guarded 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 --operation-id --step-id --idempotency-key --slug --name --collection-id --collection-slug --collection-name --item-id --receipt-id --cursor --kind --all --contract --source-ref --allow-global" -- "$cur")); }; complete -F _knowledge knowledge');else if(O==="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 project-registration project-membership project-resources project-resource paths mode guarded 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" "(--all)--all" "(--contract)--contract" "(--allow-global)--allow-global" "(-p --page)"{-p,--page}"[page number]:number:" "(-l --limit)"{-l,--limit}"[items per page]:number:" "(--search)--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]:" "(--operation-id)--operation-id[registration operation id]:" "(--step-id)--step-id[registration step id]:" "(--idempotency-key)--idempotency-key[caller idempotency key]:" "(--slug)--slug[project slug]:" "(--name)--name[project name]:" "(--collection-id)--collection-id[exact collection id]:" "(--collection-slug)--collection-slug[collection slug]:" "(--collection-name)--collection-name[collection name]:" "(--item-id)--item-id[exact item id]:" "(--receipt-id)--receipt-id[exact receipt id]:" "(--cursor)--cursor[resource cursor]:" "(--kind)--kind[resource kind]:(project collection item taxonomy):" "(--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(O==="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 project-registration project-membership project-resources project-resource paths mode guarded 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 operation-id; complete -c knowledge -l step-id; complete -c knowledge -l idempotency-key; complete -c knowledge -l slug; complete -c knowledge -l name; complete -c knowledge -l collection-id; complete -c knowledge -l collection-slug; complete -c knowledge -l collection-name; complete -c knowledge -l item-id; complete -c knowledge -l receipt-id; complete -c knowledge -l cursor; complete -c knowledge -l kind -a "project collection item taxonomy"; complete -c knowledge -l all; 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 I=ar($[0]),U=1,E=$f()&&I&&!QY.includes(I);if(!I||D.help||I==="help"){let O=I==="help"?$[1]:I||$[1];If(O);return}if(I==="mode"){let O=Vz(process.env);k(D.json||D.verbose?{ok:!0,...O}:Nf(O),D.json,D);return}if(I==="guarded"){if(($[1]??"capabilities")!=="capabilities")throw Error("Usage: knowledge guarded capabilities [--json]");k({ok:!0,contract:"FCAME-1",private_input:!0,private_result:!0,exact_title_lookup:!0,private_transport_body_output:!1},D.json,D);return}Fz(process.env,{storePathOverridden:Boolean(D.store)});let j=I==="project-panel"||I==="app-wiki"?D.scope??"project":D.scope,N=zN({scope:j}),A;try{if(I==="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 W=oN({dryRun:D.dryRun});if(k(W,D.json),!W.ok)process.exitCode=1;return}if(J==="migrate-legacy-path"||J==="migrate-legacy"||J==="migrate-path"){let W=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(k(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}if(J==="merge-legacy-path"||J==="merge-legacy"||J==="merge-path"){let W=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(k(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}}let O=Boolean(D.store),S=D.store;if(!S)if(j==="project"||j==="local")S=N.workspace.jsonStorePath;else S=u1();let L=t1({storePath:S,storePathOverridden:O});if(E&&await tr($,I,L))I="ask",U=0;if(!O&&(I==="ask"||I==="build")&&!h$())xD(S);let P=()=>{if(!O||h$())return N.projectLinksAuthority();return A??=ON({databasePath:mr(dr(S),"knowledge.db"),itemStore:L,options:{packageVersion:E$.version,authorityId:process.env.HASNA_KNOWLEDGE_PROJECT_AUTHORITY_ID??"knowledge",tenantId:process.env.HASNA_KNOWLEDGE_PROJECT_TENANT_ID??"local",corpusId:process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID??"knowledge"}}),A};if(I==="project-registration"){let J=$[1]??"capability",W=P();if(J==="capability"){k({ok:!0,capability:await W.capability()},D.json,D);return}if(J==="create"){let X=await W.capability(),R=D.project,T=D.slug,Y=D.name;if(!D.operationId||!D.stepId||!D.idempotencyKey||!R||!T||!Y)throw Error("Usage: knowledge project-registration create --operation-id <id> --step-id <id> --idempotency-key <key> --project <id> --slug <slug> --name <name> [--collection-slug <slug>] [--collection-name <name>] [--json]");let Q={collection_slug:D.collectionSlug??`${T}-knowledge`,collection_name:D.collectionName??`${Y} Knowledge`},F=v_({action:"register_collection",source_project_id:R,project_slug:T,project_name:Y,collection_slug:Q.collection_slug,collection_name:Q.collection_name,membership_rule:"explicit_collection_binding"}),q=await W.registerCollection({operation_id:D.operationId,step_id:D.stepId,resource_kind:"collection",direction:"forward",authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,target_selector:R,idempotency_key:D.idempotencyKey,request_digest:F,precondition_digest:v_({source_project_id:R,expected:"absent_or_exact_match"}),project_id:R,project_slug:T,project_name:Y,desired:Q});k({ok:q.outcome==="accepted",receipt:q},D.json,D);return}if(J==="read-exact"){if(!D.collectionId)throw Error("Usage: knowledge project-registration read-exact --collection-id <uuid> [--json]");k({ok:!0,record:await W.readCollection(D.collectionId)},D.json,D);return}if(J==="receipt"){let X=$[2],R=$[3];if(!D.operationId||!D.stepId||!D.idempotencyKey||!X||!R)throw Error("Usage: knowledge project-registration receipt <register_collection|bind_item> <forward|inverse> --operation-id <id> --step-id <id> --idempotency-key <key> [--json]");let T=await W.capability(),Y=await W.lookupReceipt({authority_id:T.authority_id,tenant_id:T.tenant_id,corpus_id:T.corpus_id,operation_id:D.operationId,step_id:D.stepId,action:X,direction:R,idempotency_key:D.idempotencyKey,max_items:1});k({ok:!0,receipt:Y},D.json,D);return}if(J==="compensate"||J==="verify-inverse"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.receiptId)throw Error(`Usage: knowledge project-registration ${J} --operation-id <id> --step-id <id> --idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]`);let X=await W.capability(),R={operation_id:D.operationId,step_id:D.stepId,authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,accepted_receipt_id:D.receiptId},T=J==="compensate"?{receipt:await W.compensateRegistration(R)}:{verification:await W.verifyRegistrationInverse(R)};k({ok:!0,...T},D.json,D);return}throw Error("Invalid project-registration action. Use capability, create, read-exact, receipt, compensate, or verify-inverse.")}if(I==="project-membership"){let J=$[1]??"read-exact",W=P();if(J==="bind"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.collectionId||!D.itemId)throw Error("Usage: knowledge project-membership bind --operation-id <id> --step-id <id> --idempotency-key <key> --collection-id <uuid> --item-id <id> [--json]");let X=await W.capability(),R=await W.bindItem({operation_id:D.operationId,step_id:D.stepId,direction:"forward",authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,request_digest:v_({action:"bind_item",collection_id:D.collectionId,item_id:D.itemId}),precondition_digest:v_({collection_id:D.collectionId,item_id:D.itemId,expected:"unbound_or_exact_membership"}),collection_id:D.collectionId,item_id:D.itemId});k({ok:R.outcome==="accepted",receipt:R},D.json,D);return}if(J==="read-exact"){if(!D.collectionId||!D.itemId)throw Error("Usage: knowledge project-membership read-exact --collection-id <uuid> --item-id <id> [--json]");k({ok:!0,record:await W.readItemBinding(D.collectionId,D.itemId)},D.json,D);return}if(J==="compensate"||J==="verify-inverse"){if(!D.operationId||!D.stepId||!D.idempotencyKey||!D.receiptId)throw Error(`Usage: knowledge project-membership ${J} --operation-id <id> --step-id <id> --idempotency-key <key> --receipt-id <accepted-receipt-id> [--json]`);let X=await W.capability(),R={operation_id:D.operationId,step_id:D.stepId,authority_route:k$,package_version:X.package_version,authority_id:X.authority_id,tenant_id:X.tenant_id,corpus_id:X.corpus_id,idempotency_key:D.idempotencyKey,accepted_receipt_id:D.receiptId},T=J==="compensate"?{receipt:await W.compensateItemBinding(R)}:{verification:await W.verifyItemBindingInverse(R)};k({ok:!0,...T},D.json,D);return}throw Error("Invalid project-membership action. Use bind, read-exact, compensate, or verify-inverse.")}if(I==="project-resources"){let J=D.project??$[1];if(!J)throw Error("Usage: knowledge project-resources <project-id> [--kind <kind>]... [--limit <n>] [--cursor <cursor>] [--all] [--json]");let W=P(),X=D.kind,R=D.all?{resources:await W.readAllProjectResources(J,{limit:D.limit,kinds:X})}:await W.listProjectResources(J,{limit:D.limit,cursor:D.cursor,kinds:X});k({ok:!0,...R},D.json,D);return}if(I==="project-resource"){let J=D.project??$[1],W=$[2],X=$[3];if(!J||!W||!X)throw Error("Usage: knowledge project-resource <project-id> <project|collection|item|taxonomy> <resource-id> [--json]");k({ok:!0,resource:await P().readProjectResource(J,W,X)},D.json,D);return}if(I==="inventory"){let J=await N.resolveInventory({limit:D.limit,includeArchived:D.includeArchived||D.archived,storePath:h$()?void 0:S});k(D.json||D.verbose?J:Af(J),D.json,D);return}if(I==="project-panel"){let J=D.project??$[1];if(!J)throw Error("Usage: knowledge project-panel --project <id|name|slug> [--json|--contract]");let W=await K8(J,{service:N,limit:D.limit,storePath:h$()?void 0:S,includeArchived:D.includeArchived||D.archived});k(D.json||D.contract?W:T8(W),D.json||D.contract);return}if(I==="paths"){let J=N.paths();k(D.json||D.verbose?J:gf(J),D.json,D);return}if(I==="setup"){let J=N.setup({mode:D.mode,apiUrl:D.apiUrl,canonicalExample:D.canonicalExample});k(J,D.json,D);return}if(I==="auth"){let J=$[1]??"whoami";if(J==="whoami"||J==="status"){let W=N.authStatus(process.env);k({ok:!0,...W,message:W.authenticated?`Authenticated via ${W.source}`:"Not authenticated"},D.json,D);return}if(J==="login"){let W=D.apiKey??process.env.KNOWLEDGE_API_KEY??process.env.HASNA_KNOWLEDGE_API_KEY;if(!W)throw Error("Usage: knowledge auth login --api-key <key> [--email <email>]");let X=N.saveAuth({apiKey:W,email:D.email,orgSlug:D.org,orgId:D.orgId,userId:D.userId,apiUrl:D.apiUrl},process.env);k({ok:!0,authenticated:!0,email:X.email??null,org_slug:X.org_slug??null,api_url:X.api_url??N.authStatus(process.env).api_url,auth_path:N.authStatus(process.env).auth_path,message:`Saved hosted credentials for ${X.email??"API key"}`},D.json,D);return}if(J==="logout"){let W=N.clearAuth(process.env);k({ok:!0,removed:W,message:W?"Removed hosted credentials":"No hosted credentials found"},D.json,D);return}throw Error("Invalid auth action. Use 'login', 'whoami', or 'logout'.")}if(I==="storage"){let J=$[1]??"status";if(J==="status"){let W=N.storageContract(),X=N.validateStorage();k({ok:X.ok,...W,validation:X,message:`${W.storage_type} artifact storage at ${W.artifact_store.uri_prefix}`},D.json,D);return}if(J==="validate"){let W=N.validateStorage();if(k({ok:W.ok,validation:W,message:W.ok?"Storage contract valid":`Storage contract invalid: ${W.errors.join("; ")}`},D.json,D),!W.ok)process.exitCode=1;return}if(J==="repair-artifact-keys"||J==="repair-keys"){let W=N.repairArtifactManifestKeys({approveWrite:D.approveWrite,approvedBy:D.approvedBy,dryRun:D.dryRun});k(W,D.json,D);return}if(J==="migrate-legacy-path"||J==="migrate-legacy"||J==="migrate-path"){let W=N.migrateLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(k(W,D.json),!W.ok&&!D.json)process.exitCode=1;return}if(J==="merge-legacy-path"||J==="merge-legacy"||J==="merge-path"){let W=N.mergeLegacyPath({approveWrite:D.approveWrite,approvedBy:D.approvedBy});if(k(W,D.json),!W.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(I==="machines"){let J=$[1]??"topology";if(J==="topology"||J==="status"){let W=await N.machineTopology({includeTailscale:D.tailscale!==!1});k(D.json||D.verbose?W:Wf(W),D.json,D);return}if(J==="preflight"||J==="check"){let W=$[2]??D.machine??"local",X=D.workspace??process.cwd(),R=await N.machinePreflight({machineId:W,commands:[{command:"bun",required:!0},{command:"knowledge",required:!0}],packages:[{name:E$.name,command:"knowledge",expectedVersion:E$.version,required:!0},{name:"@hasna/machines",command:"machines",required:!1}],workspaces:[{label:"open-knowledge",path:X,expectedPackageName:E$.name,expectedVersion:E$.version,required:!0}]});if(k(D.json||D.verbose?R:Pf(R),D.json,D),!R.ok&&!D.json)process.exitCode=1;return}throw Error("Invalid machines action. Use 'topology' or 'preflight'.")}if(I==="sync"){let J=$[1]??"status",W=D.tables?D.tables.split(",").map((X)=>X.trim()).filter(Boolean):void 0;if(J==="status"){let X=N.syncStatus();k(D.json||D.verbose?X:zf(X),D.json,D);return}if(J==="doctor"||J==="readiness"||J==="preflight"){let X=await N.syncDoctor({machine:D.machine??null,peerWorkspace:D.peerWorkspace??null,includeTailscale:D.tailscale!==!1,tables:W}),R={package:{name:E$.name,version:E$.version},...X};if(k(D.json||D.verbose?R:Xf(R),D.json,D),!X.ok&&!D.json)process.exitCode=1;return}if(J==="snapshot"||J==="record"){let X=await N.createSyncSnapshot({includeTailscale:D.tailscale!==!1,machineId:D.machine});k(D.json||D.verbose?X:Gf(X),D.json,D);return}if(J==="conflicts"||J==="conflict"){let X=$[2];if(X==="show"||X==="get"){let Y=$[3]??D.id;if(!Y)throw Error("Usage: knowledge sync conflicts show <id>");let Q=N.syncConflict(Y);k({ok:!0,conflict:Q,message:`Sync conflict ${Y}`},D.json,D);return}if(X==="propose"||X==="proposal"){let Y=$[3]??D.id;if(!Y)throw Error("Usage: knowledge sync conflicts propose <id>");k(D.mode==="ai"?await N.proposeSyncConflictResolutionWithAi({id:Y,modelRef:D.model,fake:D.fake}):N.proposeSyncConflictResolution(Y),D.json,D);return}if(X==="resolve"){let Y=$[3]??D.id;if(!Y)throw Error("Usage: knowledge sync conflicts resolve <id> --approve-write --approved-by <name> [--strategy <name>]");let Q=N.resolveSyncConflict({id:Y,strategy:D.strategy,approvedBy:D.approvedBy,approveWrite:D.approveWrite,proposedPatchUri:D.patchUri});if(k(Q,D.json,D),!Q.ok&&!D.json)process.exitCode=1;return}let R=N.syncConflicts({status:X,limit:D.limit}),T={ok:!0,conflicts:R,message:`${R.length} sync conflict(s)`};k(D.json||D.verbose?T:Rf(T),D.json,D);return}if(J==="machines"||J==="registry"){let X=N.syncMachines(),R={ok:!0,machines:X,message:`${X.length} registered sync machine(s)`};k(D.json||D.verbose?R:Yf(R),D.json,D);return}if(J==="export"){let X=N.exportSyncBundle({machineId:D.machine??null,tables:W,includeArtifactContent:D.artifactContent!==!1});k(X,!0);return}if(J==="import"){let X=await Bun.stdin.text();if(!X.trim())throw Error("Usage: knowledge sync import < bundle.json");let R=await N.importSyncBundle({bundle:JSON.parse(X),dryRun:D.dryRun,direction:"import",machineId:D.machine??null});k(D.json||D.verbose?R:GY(R,J),D.json,D);return}if(J==="dry-run"||J==="pull"||J==="push"||J==="sync"){if(!D.peerWorkspace&&RY(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 X=J==="dry-run"?"both":J==="sync"?"both":J,R=!RY(D.machine)?await N.syncRemotePeer({direction:X,machine:D.machine,peerWorkspace:D.peerWorkspace,tables:W,dryRun:D.dryRun===!0||J==="dry-run",includeArtifactContent:D.artifactContent!==!1,includeTailscale:D.tailscale!==!1}):await N.syncPeer({peerWorkspace:D.peerWorkspace,direction:X,dryRun:D.dryRun===!0||J==="dry-run",tables:W,includeArtifactContent:D.artifactContent!==!1,machineId:D.machine??null});if(k(D.json||D.verbose?R:GY(R,J),D.json,D),!R.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(I==="db"){let J=$[1]??"init";if(J==="init"){let W=N.initDb();k({ok:!0,...W,message:`Initialized ${W.path}`},D.json,D);return}if(J==="stats"){let W=N.dbStats();k({ok:!0,path:N.workspace.knowledgeDbPath,...W,message:`knowledge.db schema v${W.schema_version}`},D.json,D);return}if(J==="storage"){if(($[2]??"status")==="status"){let X=JP({scope:D.scope});k({ok:!0,...X,message:`knowledge.db storage mode ${X.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(I==="app-wiki"){let J=$[1]??"init";if(J==="paths"||J==="status"){k({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 W=await N.initAppWiki({allowGlobal:D.allowGlobal});k(W,D.json);return}if(J==="note"||J==="notes"){let W=$[2]??"list";if(W==="add"||W==="create"){let X=D.title??$[3],R=D.content??$.slice(4).join(" ");if(!X||!R)throw Error("Usage: knowledge app-wiki note add --title <title> --content <text> [--source-ref <uri>]");let T=await N.addAppWikiNote({title:X,content:R,tags:D.tag,sourceRefs:D.sourceRef,allowGlobal:D.allowGlobal});k(T,D.json);return}if(W==="list"||W==="ls"){let X=N.listAppWikiNotes({limit:D.limit});k({ok:!0,scope:N.scope,home:N.workspace.home,notes:X,message:`${X.length} app wiki note(s)`},D.json);return}if(W==="get"||W==="show"){let X=$[3]??D.id;if(!X)throw Error("Usage: knowledge app-wiki note get <id-or-path>");let R=await N.getAppWikiNote(X,{includeContent:!0});if(!R)throw Error(`App wiki note not found: ${X}`);k(R,D.json);return}throw Error("Invalid app-wiki note action. Use 'add', 'list', or 'get'.")}if(J==="source"||J==="sources"){let W=$[2]??"add";if(W!=="add"&&W!=="ingest")throw Error("Invalid app-wiki source action. Use 'add'.");let X=$[3]??D.sourceRef?.[0];if(!X)throw Error("Usage: knowledge app-wiki source add <source-ref>");let R=await N.addAppWikiSourceRef({sourceRef:X,purpose:D.purpose,allowGlobal:D.allowGlobal});k({ok:!0,...R,message:`Added app wiki source ${R.source_ref}`},D.json);return}if(J==="search"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge app-wiki search <query>");let X=await N.searchAppWiki({query:W,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...X,message:`${X.results.length} app wiki result(s)`},D.json);return}if(J==="query"||J==="context"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge app-wiki query <query>");let X=await N.queryAppWiki({query:W,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...X,message:`${X.excerpts.length} app wiki excerpt(s)`},D.json);return}throw Error("Invalid app-wiki action. Use 'init', 'paths', 'note', 'source', 'search', or 'query'.")}if(I==="wiki"){let J=$[1]??"init";if(J==="init"){let W=await N.initWiki();k({ok:!0,...W,message:`Initialized wiki layout in ${N.workspace.home}`},D.json,D);return}if(J==="compile"){let W=$.slice(2),X=W.filter((Y)=>/^(open-files|file|s3|https?):\/\//.test(Y)),R=W.filter((Y)=>!/^(open-files|file|s3|https?):\/\//.test(Y)).join(" "),T=await N.compileWiki({title:D.title,query:R||D.search,sourceRefs:X.length>0?X:void 0,limit:D.limit});k({ok:!0,...T,message:`Compiled wiki page ${T.path}`},D.json,D);return}if(J==="file-answer"||J==="answer"){let W=$.slice(2).join(" ");if(!W)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 X=await N.fileAnswer({prompt:W,answer:D.content,approveWrite:D.approveWrite,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...X},D.json,D);return}if(J==="lint"){let W=N.lintWiki();k({ok:W.ok,...W,message:W.ok?"Wiki lint passed":`Wiki lint found ${W.issue_count} issue(s)`},D.json,D);return}throw Error("Invalid wiki action. Use 'init', 'compile', 'file-answer', or 'lint'.")}if(I==="safety"){let J=$[1]??"status",W=N.ensureWorkspace(),X=N.safetyPolicy();N.initDb();let R=w(W.knowledgeDbPath);try{if(J==="status"){k({ok:!0,mode:X.mode,workspace:W.home,allow_write_roots:X.allowWriteRoots,read_only_source_access:X.readOnlySourceAccess,network:X.network,redaction:X.redaction,approvals:X.approvals,message:`Safety policy: ${X.mode}`},D.json,D);return}if(J==="check"){let T=$[2]??"generated_write",Y=$[3]??null,Q;try{if(T==="web_search")G0(X),Q={action:T,target_uri:Y,approval_required:!1,approved:!0,decision:"allow"};else if(T==="s3_read"){if(!Y)throw Error("safety check s3_read requires an s3:// target.");b6(Y,X),Q={action:T,target_uri:Y,approval_required:!1,approved:!0,decision:"allow"}}else Q=E3(R,X,T,Y);R_(R,{event_type:"safety_check",action:T,target_uri:Y,decision:Q.decision==="allow"?"allow":"requires_approval",metadata:Q}),k({ok:!0,...Q,message:`Safety check ${Q.decision}`},D.json,D);return}catch(F){throw R_(R,{event_type:"safety_check",action:T,target_uri:Y,decision:"deny",metadata:{error:F instanceof Error?F.message:String(F)}}),F}}if(J==="approve"){let T=$[2]??"generated_write",Y=$[3]??null,Q=s1(R,{action:T,target_uri:Y,reason:"local-cli approval",metadata:{scope:D.scope??"global"}});R_(R,{event_type:"approval",action:T,target_uri:Y,decision:"allow",metadata:{approval_id:Q.id}}),k({ok:!0,...Q,action:T,target_uri:Y,message:`Approved ${T}`},D.json,D);return}if(J==="audit"){let T=R.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((Y)=>({id:Y.id,event_type:Y.event_type,action:Y.action,target_uri:Y.target_uri,decision:Y.decision,metadata:JSON.parse(Y.metadata_json),created_at:Y.created_at}));k({ok:!0,events:T,message:`${T.length} audit event(s)`},D.json,D);return}if(J==="redact"){let T=$.slice(2).join(" ");if(!T)throw Error("Usage: knowledge safety redact <text>");let Y=u_(T,X);if(Y.findings.length>0)R0(R,{source_uri:"safety://redact",findings:Y.findings,metadata:{command:"safety redact"}});R_(R,{event_type:"redaction",action:"safety_redact",target_uri:"safety://redact",decision:Y.findings.length>0?"redacted":"allow",metadata:{findings:Y.findings.length}}),k({ok:!0,text:Y.text,findings:Y.findings,message:`Redacted ${Y.findings.length} finding(s)`},D.json,D);return}throw Error("Invalid safety action. Use 'status', 'check', 'approve', 'audit', or 'redact'.")}finally{R.close()}}if(I==="source"){if(($[1]??"")!=="resolve")throw Error("Invalid source action. Use 'resolve'.");let W=$[2];if(!W)throw Error("Usage: knowledge source resolve <source-ref>");let X=await N.resolveSource(W,{purpose:D.purpose,limit:D.limit});k({ok:!0,...X,message:X.resolved?`Resolved ${X.source_ref} (${X.content.chunks_returned}/${X.content.chunks_total} chunks)`:`Source not indexed: ${W}`},D.json,D);return}if(I==="ingest"){let J=$[1]??"";if(J==="rules"||J==="global-rules"||J==="agent-rules"){let W=await N.importRulesProvenance({root:D.workspace??process.cwd(),owner:D.owner,dryRun:D.dryRun===!0,maxItems:D.maxItems,limit:D.limit});k({ok:!0,...W},D.json);return}if(J==="manifest"){let W=$[2];if(!W)throw Error("Usage: knowledge ingest manifest <file|s3://bucket/key>");let X=await N.ingestManifest(W);k({ok:!0,...X,message:`Ingested ${X.items_seen} manifest item(s)`},D.json,D);return}if(J==="source"){let W=$[2];if(!W)throw Error("Usage: knowledge ingest source <source-ref>");let X=await N.ingestSource(W,D.purpose);k({ok:!0,...X,message:`Ingested source ${X.source_ref} (${X.chunks_inserted} chunks)`},D.json,D);return}throw Error("Invalid ingest action. Use 'manifest' or 'source'.")}if(I==="reindex"){let J=$[1]??"status";if(J==="status"){let W=N.reindexHealth({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...W,message:`${W.missing_embeddings} chunk(s) missing embeddings`},D.json,D);return}if(J==="enqueue"){let W=N.enqueueReindex({modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...W,message:`Queued ${W.enqueued} embedding refresh item(s)`},D.json,D);return}if(J==="embeddings"){let W=await N.refreshEmbeddings({full:D.full,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...W,message:`Embedded ${W.indexed.chunks_embedded} chunk(s)`},D.json,D);return}if(J==="outbox"){let W=$[2];if(!W)throw Error("Usage: knowledge reindex outbox <file|s3://bucket/key>");let X=await N.consumeOutbox(W);k({ok:!0,...X,message:`Consumed ${X.events_seen} outbox event(s)`},D.json,D);return}throw Error("Invalid reindex action. Use 'status', 'enqueue', 'embeddings', or 'outbox'.")}if(I==="embeddings"){let J=$[1]??"status";if(J==="status"){let W=N.embeddingStatus();k({ok:!0,...W,message:`${W.total_vector_entries} vector index entries`},D.json,D);return}if(J==="index"){let W=await N.indexEmbeddings({limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake});k({ok:!0,...W,message:`Embedded ${W.chunks_embedded} chunk(s)`},D.json,D);return}if(J==="search"){let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge embeddings search <query>");let X=await N.semanticSearch({query:W,limit:D.limit,modelRef:D.model,dimensions:D.dimensions,fake:D.fake}),R={ok:!0,...X,message:`${X.results.length} semantic result(s)`};k(D.json||D.verbose?R:Lf(R),D.json,D);return}throw Error("Invalid embeddings action. Use 'status', 'index', or 'search'.")}if(I==="context"){if(($[1]??"pack")!=="pack")throw Error("Invalid context action. Use 'pack'.");let W=D.from??"search";if(!["search","loops","runs"].includes(W))throw Error("Invalid --from value. Use 'search', 'loops', or 'runs'.");let X=$.slice(2).join(" ")||D.topic||"",R=await N.contextPack({source:W,purpose:W==="loops"||W==="runs"?"proposal":"agent_context",query:X,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:S});XY({ok:!0,...R,message:R.message});return}if(I==="proposals"){if(($[1]??"context")!=="context")throw Error("Invalid proposals action. Use 'context'.");let W=D.from??"loops";if(!["loops","runs"].includes(W))throw Error("Invalid --from value for proposals. Use 'loops' or 'runs'.");let X=D.topic??$.slice(2).join(" ");if(!X.trim())throw Error("Usage: knowledge proposals context --from loops --topic <text>");let R=await N.contextPack({source:W,purpose:"proposal",query:X,topic:X,since:D.since,dedupe:D.dedupe??!0,maxTokens:D.maxTokens,maxItems:D.maxItems,limit:D.limit});XY({ok:!0,...R,message:R.message});return}if(I==="search"){let J=$.slice(1).join(" ");if(!J)throw Error("Usage: knowledge search <query>");if(D.context){let R=await N.retrieveContext({query:J,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:S}),T={ok:!0,...R,message:`${R.excerpts.length} context excerpt(s)`};k(D.json||D.verbose?T:Sf(T),D.json,D);return}let W=await N.search({query:J,limit:D.limit,semantic:D.semantic,modelRef:D.model,dimensions:D.dimensions,fake:D.fake,legacyStorePath:S}),X={ok:!0,...W,message:`${W.results.length} search result(s)`};k(D.json||D.verbose?X:Of(X),D.json,D);return}if(I==="web"){if(($[1]??"search")!=="search")throw Error("Invalid web action. Use 'search'.");let W=$.slice(2).join(" ");if(!W)throw Error("Usage: knowledge web search <query>");let X=await N.webSearch({query:W,limit:D.limit,modelRef:D.model,provider:D.provider,domains:D.domain,fake:D.fake,fileResults:D.fileResults}),R={ok:!0,...X,message:`${X.sources.length} web source(s)`};k(D.json||D.verbose?R:Jf(R),D.json,D);return}if(I==="ask"||I==="build"){let J=$.slice(U).join(" ");if(!J)throw Error("Usage: knowledge ask <prompt>");let W=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:S}),X={ok:!0,...W,message:W.generated?"Generated answer with citations":"Prepared citation context draft"};k(D.json||D.verbose?X:Qf(X),D.json,D);return}if(I==="providers"){let J=$[1]??"status";if(J==="status"){let W=N.providerStatus(),X=W.providers.filter((R)=>R.configured).length;k({ok:!0,...W,message:`${X}/${W.providers.length} provider credential(s) configured`},D.json,D);return}if(J==="models"){let W=N.modelRegistry();k({ok:!0,models:W,message:`${W.length} model alias(es)`},D.json,D);return}if(J==="check"){let W=$[2]??"default",X=T$(W,N.config()),R=f_(X),T=A4(R.provider,N.config());k({ok:!0,target:W,model_ref:X,provider:R.provider,model:R.model,credential:T,message:`${R.provider} credentials configured`},D.json,D);return}throw Error("Invalid providers action. Use 'status', 'models', or 'check'.")}if(I==="add"){let J=$[1],W=$[2];if(!J||!W)throw Error("Usage: knowledge add <title> <content>");let X=await L.create({title:J,content:W,url:D.url??null,tags:D.tag??[]});j0("info","Item added",{id:X.id,title:X.title,tags:X.tags?.length??0,transport:L.kind}),k({ok:!0,item:X,message:`Added ${X.id}`},D.json,D);return}if(I==="list"){if(D.format!==void 0&&D.format!=="table"&&D.format!=="json")throw Error("Invalid --format value for list. Use 'table' or 'json'.");if(D.page!==void 0&&(!Number.isFinite(D.page)||!Number.isInteger(D.page)||D.page<1))throw Error("--page must be a positive integer.");if(D.limit!==void 0&&(!Number.isFinite(D.limit)||!Number.isInteger(D.limit)||D.limit<1||D.limit>200))throw Error("--limit must be an integer between 1 and 200.");let J=D.page??1,W=D.limit??20,X=D.search?String(D.search).toLowerCase():"",R=D.tagRaw??D.tag??[],T=D.tag?.length?D.tag.map((G_)=>G_.toLowerCase()).join(","):"none",Y=D.format==="table"||!D.json&&!D.format&&Ef(D),Q=D.json||D.format==="json",F=D.archived?"archived":D.includeArchived?"all":"active",{sort:q,direction:Z}=Tf([],D),f=(J-1)*W;if(f>1e4)throw Error("The requested page exceeds the maximum bounded offset of 10000.");let l=await L.list({search:X,tags:R,archive:F,sort:q,direction:Z,limit:W,offset:f}),U_=l.items,j_=Math.max(1,Math.ceil(l.total/W)),_$={ok:!0,page:J,limit:W,total:l.total,total_pages:j_,sort:q,direction:Z,items:U_,store_exists:l.exists};if(Q){k(_$,!0);return}if(D.verbose){k(_$,!1,D);return}if(U_.length===0){k(`No items found (search=${X||"none"}, tag=${T})`,!1);return}if(Y){let G_=(E_)=>E_,K$=`${G_("ID")} ${G_("TITLE")} ${G_("CREATED")} ${G_("URL")} ${G_("TAGS")}`;console.log(K$);for(let E_ of U_)console.log(`${E_.id} ${G_(I_(E_.title,80))} ${E_.created_at} ${E_.url?G_(I_(E_.url,90)):""} ${E_.tags?.length?G_(I_(`[${E_.tags.join(", ")}]`,80)):""}`);console.log(`Page ${J}/${j_} | showing ${U_.length} of ${l.total} | sort=${q} ${Z} | search=${X||"none"} | tag=${T}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}else{for(let G_ of U_)console.log(`${G_.id} ${I_(G_.title,80)} ${G_.created_at}${G_.url?` ${I_(G_.url,90)}`:""}${G_.tags?.length?` ${I_(`[${G_.tags.join(", ")}]`,80)}`:""}`);console.log(`Page ${J}/${j_} | showing ${U_.length} of ${l.total} | sort=${q} ${Z} | search=${X||"none"} | tag=${T}`),console.log("Hint: use `knowledge get --id <id> --json` for full item content.")}return}if(I==="get"){E0(D);let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);k({ok:!0,item:J,store_exists:L.exists,message:`${J.id}: ${J.title}`},D.json,D);return}if(I==="versions"){E0(D);let J=Number.isFinite(D.page)&&D.page>0?D.page:1,W=Number.isFinite(D.limit)&&D.limit>0?D.limit:void 0,X=await L.listVersions(D.id,{limit:W,offset:(J-1)*(W??50)});if(!X)throw Error(`Item not found: ${D.id}`);let R={ok:!0,id:X.item_id,current_version:X.current_version,total:X.total,page:J,store:L.location,versions:X.items,message:X.total===0?`${X.item_id} is at version ${X.current_version} with no retained prior versions`:`${X.item_id} is at version ${X.current_version}; ${X.total} prior version(s) retained`};if(D.json||D.verbose){k(R,D.json,D);return}console.log(R.message);for(let T of X.items){let Y=T.actor?` by ${T.actor}`:"",Q=T.reason?` (${T.reason})`:"";console.log(`v${T.version} ${T.valid_to}${Y}${Q} ${T.content_bytes} bytes ${T.content_hash.slice(0,12)}`)}if(X.items.length>0)console.log("Hint: `knowledge diff --id <id> --rev <n>` shows what changed.");return}if(I==="diff"){E0(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 W=()=>({title:J.title,content:J.content,url:J.url,tags:J.tags??[],metadata:J.metadata??{},archived:J.archived??!1}),X=`v${J.version??"?"} (current)`,R=async(Z)=>{if(Z==="current")return{label:X,snapshot:W()};let f=Number(Z);if(!Number.isInteger(f)||f<1)throw Error(`Not a version number: ${Z}`);if(J.version!==void 0&&f===J.version)return{label:X,snapshot:W()};let l=await L.getVersion(J.id,f);if(!l)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${l.version}`,snapshot:{title:l.title,content:l.content,url:l.url,tags:l.tags,metadata:l.metadata,archived:l.archived}}},T,Y;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.");T=String(D.rev-1),Y=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.");T=D.from,Y=D.to}else{let Z=await L.listVersions(J.id,{limit:1});if(!Z)throw Error(`Item not found: ${D.id}`);if(Z.items.length===0)throw Error(`${J.id} is at version ${Z.current_version} with no retained prior versions to diff against.`);T=String(Z.items[0].version),Y="current"}let Q=await R(T),F=await R(Y),q=kz(Q.snapshot,F.snapshot);if(D.json||D.verbose){k({ok:!0,id:J.id,from:Q.label,to:F.label,...q},D.json,D);return}console.log(qz(q,`${J.id} ${Q.label}`,`${J.id} ${F.label}`));return}if(I==="update"){E0(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 W={};if(D.title!==void 0)W.title=D.title;if(D.content!==void 0)W.content=D.content;if(D.url!==void 0)W.url=D.url;let X;if(D.tag!==void 0){if(X=zY(J.tags,D.tag),X.length>0)W.tags=[...J.tags??[],...X]}let R=D.ifVersion!==void 0?D.ifVersion:J.version,T=await L.update(J.id,W,{expectedVersion:R});k(bP({ok:!0,item:T},`Updated ${T?.id??J.id}`,X),D.json,D);return}if(I==="archive"||I==="restore"){E0(D);let J=await L.get(D.id);if(!J)throw Error(`Item not found: ${D.id}`);let W=await L.update(J.id,{archived:I==="archive"},{expectedVersion:J.version});k({ok:!0,item:W,message:`${I==="archive"?"Archived":"Restored"} ${W?.id??J.id}`},D.json,D);return}if(I==="untag"){if(E0(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 W=J.tags??[],X=new Set(W.map((f)=>f.toLowerCase())),R=new Set;for(let f of D.tagRaw??D.tag){let l=f.trim().toLowerCase();if(l.length>0&&X.has(l)){R.add(l);continue}for(let U_ of f.split(",").map((j_)=>j_.trim().toLowerCase()).filter((j_)=>j_.length>0))R.add(U_)}let T=W.filter((f)=>!R.has(f.toLowerCase())),Y=W.length-T.length,Q=[...R].filter((f)=>!X.has(f));if(Y===0)throw Error(`No matching tag on ${J.id}: ${Q.map((f)=>JSON.stringify(f)).join(", ")} not in [${W.map((f)=>JSON.stringify(f)).join(", ")}]`);let F=await L.update(J.id,{tags:T},{expectedVersion:J.version}),q=Q.length>0?` (not found: ${Q.map((f)=>JSON.stringify(f)).join(", ")})`:"",Z={ok:!0,item:F,removed:Y,message:`Removed ${Y} tag${Y===1?"":"s"} from ${F?.id??J.id}${q}`};if(Q.length>0)Z.not_found=Q;k(Z,D.json,D);return}if(I==="upsert"){let J=D.title??$[1],W=D.content??$[2],X=D.id?await L.get(D.id):null;if(!X){if(!J||!W)throw Error("New item requires title and content. Example: knowledge upsert <title> <content> [--id <id>]");let Q=await L.create({id:D.id,title:J,content:W,url:D.url??null,tags:D.tag??[]});k(bP({ok:!0,created:!0,item:Q},`Upserted ${Q.id}`,D.tag),D.json,D);return}let R={};if(J!==void 0)R.title=J;if(W!==void 0)R.content=W;if(D.url!==void 0)R.url=D.url;let T;if(D.tag!==void 0){if(T=zY(X.tags,D.tag),T.length>0)R.tags=[...X.tags??[],...T]}let Y=await L.update(X.id,R,{expectedVersion:X.version});k(bP({ok:!0,created:!1,item:Y},`Upserted ${Y?.id??X.id}`,T),D.json,D);return}if(I==="delete"){if(E0(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}`);j0("info","Item deleted",{id:D.id,transport:L.kind}),k({ok:!0,deleted_id:D.id,message:`Deleted ${D.id}`},D.json,D);return}if(I==="export"){let J=D.format??"json";if(J!=="json"&&J!=="jsonl")throw Error("Invalid --format. Use 'json' or 'jsonl'.");let W=await L.listAll();if(J==="jsonl")for(let X of W.items)console.log(JSON.stringify(X));else if(D.json||D.format==="json"||D.verbose)k({ok:!0,items:W.items,store_exists:W.exists},D.json||D.format==="json",D);else k(Kf(W.items,J),!1);return}if(I==="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(),W=D.olderThan!==void 0?new Date(Date.now()-D.olderThan*86400000):null,X=J.filter((Y)=>W!==null&&new Date(Y.created_at)<W||D.empty&&Y.content.trim().length===0),R=await L.deleteMany(X.map((Y)=>Y.id)),T=J.length-R;j0("info","Prune completed",{pruned:R,remaining:T,transport:L.kind}),k({ok:!0,pruned:R,remaining:T,message:`Pruned ${R} item(s)`},D.json,D);return}if(I==="dedupe"){if(!D.yes)throw Error("Refusing dedupe without --yes. Re-run with: knowledge dedupe --yes [--json]");let{items:J}=await L.listAll(),W=new Set,X=[];for(let Y of J){let Q=`${Y.title}\x00${Y.content}`;if(W.has(Q))X.push(Y);else W.add(Q)}let R=await L.deleteMany(X.map((Y)=>Y.id)),T=J.length-R;j0("info","Dedupe completed",{removed:R,remaining:T,transport:L.kind}),k({ok:!0,removed:R,remaining:T,message:`Dedupe removed ${R} duplicate(s)`},D.json,D);return}if(I==="stats"){let J=await L.listAll(),W=J.items.filter((f)=>!f.archived),X=W.length,R=J.items.length-X,T=W.filter((f)=>f.url).length,Y=W.filter((f)=>f.tags&&f.tags.length>0).length,Q=X>0?W.map((f)=>f.created_at).sort()[0]:null,F=X>0?W.map((f)=>f.created_at).sort()[X-1]:null,q={};for(let f of W)for(let l of f.tags||[])q[l]=(q[l]||0)+1;let Z=Object.entries(q).sort((f,l)=>l[1]-f[1]).slice(0,5).map(([f,l])=>({tag:f,count:l}));k({ok:!0,total:X,archived:R,with_url:T,with_tags:Y,oldest:Q,newest:F,top_tags:Z,store_exists:J.exists,message:`${X} items | ${T} with URL | ${Y} with tags`},D.json,D);return}let z=_f($[0]),G=z?` Did you mean '${z}'?`:"";throw j0("warn","Unknown command",{input:$[0],suggestion:z}),Error(`Unknown command: ${$[0]}.${G} Run 'knowledge --help' for available commands.`)}finally{await A?.close(),await N.close()}}function Vf(_,$){let D=_ instanceof Error?_.message:String(_);j0("debug","CLI error",{message:D,stack:_ instanceof Error?_.stack:void 0}),console.error(`Error: ${D}`);let I=_ instanceof z0?_:null;if($.includes("--json"))k({ok:!1,error:D,message:D,...I?{code:"version_conflict",expected:I.expected,current:I.current}:{}},!0);process.exitCode=I?2:1}if(import.meta.main){let _=process.argv.slice(2);Ff(_).catch(($)=>Vf($,_))}export{_f as suggestCommand,Tf as sortItems,Ff as run,er as parseArgs,Vf as emitCliError}; diff --git a/dist/index.js b/dist/index.js index 68b1b45..dce37fa 100644 --- a/dist/index.js +++ b/dist/index.js @@ -17552,6 +17552,7 @@ class PostgresProjectLinksSql { this.client = client; this.transactionClient = transactionClient; } + async close() {} async get(sql, params = []) { return this.client.get(postgresSql(sql), params); } @@ -17572,9 +17573,17 @@ class PostgresProjectLinksSql { class SqliteProjectLinksSql { db; tail = Promise.resolve(); + closed = false; constructor(db) { this.db = db; } + async close() { + await this.tail; + if (this.closed) + return; + this.closed = true; + this.db.close(); + } async get(sql, params = []) { return this.db.query(sql).get(...params) ?? null; } @@ -17942,6 +17951,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { }; this.now = options.now ?? (() => new Date().toISOString()); } + async close() { + await this.sql.close(); + } capabilityValue() { return { authority: "knowledge", @@ -18044,7 +18056,7 @@ class PackageOwnedKnowledgeProjectLinksAuthority { return row ? toReceipt(row) : null; } assertIdempotent(existing, input) { - if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest || input.accepted_receipt_id !== undefined && existing.accepted_receipt_id !== input.accepted_receipt_id) { throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); } } @@ -18193,6 +18205,25 @@ class PackageOwnedKnowledgeProjectLinksAuthority { ]); return row ? toReceipt(row) : null; } + async hasOtherAcceptedForwardReceipt(sql, accepted) { + const itemPredicate = accepted.action === "bind_item" ? "AND item_id = ?" : "AND item_id IS NULL"; + const row = await sql.get(`SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${itemPredicate} + LIMIT 1`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.action, + accepted.collection_id, + accepted.receipt_id, + ...accepted.action === "bind_item" ? [accepted.item_id] : [] + ]); + return row !== null; + } assertInverseIdentity(request) { this.assertIdentity(request); requiredString(request.accepted_receipt_id, "accepted_receipt_id"); @@ -18224,6 +18255,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!aggregate) { outcome = "terminal_nonacceptance"; reason = "accepted_collection_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_later_accepted_adopter"; } else { const membership = await tx.get(`SELECT COUNT(*) AS count FROM knowledge_project_collection_memberships @@ -18490,6 +18524,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!membership) { outcome = "terminal_nonacceptance"; reason = "accepted_membership_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "membership_has_later_accepted_adopter"; } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { outcome = "terminal_nonacceptance"; reason = "membership_is_owned_by_a_different_receipt"; @@ -18837,6 +18874,7 @@ class KnowledgeProjectLinksHttpClient { this.fetchImpl = options.fetch ?? guardedFetch; this.root = options.baseUrl.replace(/\/+$/, ""); } + async close() {} headers(extra = {}) { const headers = new Headers(this.options.headers); headers.set("accept", "application/json"); @@ -24030,6 +24068,23 @@ function knowledgeOpenApi(version) { "created_at", "updated_at" ], + properties: { + source_project_id: { type: "string" }, + project_id: { type: "string" }, + project_slug: { type: "string" }, + project_name: { type: "string" }, + collection_id: { type: "string" }, + collection_slug: { type: "string" }, + collection_name: { type: "string" }, + membership_rule: { + type: "string", + enum: ["explicit_collection_binding"] + }, + revision: { type: "string" }, + digest: { type: "string" }, + created_at: { type: "string", format: "date-time" }, + updated_at: { type: "string", format: "date-time" } + }, additionalProperties: false }, ProjectResource: { @@ -24047,6 +24102,36 @@ function knowledgeOpenApi(version) { "locator", "metadata" ], + properties: { + key: { type: "string" }, + kind: { + type: "string", + enum: ["project", "collection", "item", "taxonomy"] + }, + id: { type: "string" }, + project_id: { type: "string" }, + source_project_id: { type: "string" }, + collection_id: { type: "string" }, + revision: { type: "string" }, + digest: { type: "string" }, + title: { type: "string" }, + locator: { + type: "object", + required: ["kind", "value"], + properties: { + kind: { + type: "string", + enum: ["external_uuid", "canonical_uri"] + }, + value: { type: "string" } + }, + additionalProperties: false + }, + metadata: { + type: "object", + additionalProperties: true + } + }, additionalProperties: false }, ProjectResourcePage: { @@ -38557,6 +38642,11 @@ class KnowledgeService { }); return this.cachedProjectLinksAuthority; } + async close() { + const authority = this.cachedProjectLinksAuthority; + this.cachedProjectLinksAuthority = undefined; + await authority?.close(); + } async listItems(options = {}) { return this.itemStore().list(options); } diff --git a/dist/project-links.d.ts b/dist/project-links.d.ts index 9cab92d..1e2e0d1 100644 --- a/dist/project-links.d.ts +++ b/dist/project-links.d.ts @@ -179,6 +179,7 @@ export interface KnowledgeProjectResourceListOptions { kinds?: KnowledgeProjectResourceKind[]; } export interface KnowledgeProjectLinksAuthority { + close(): Promise<void>; capability(): Promise<KnowledgeProjectRegistrationCapability>; registerCollection(request: KnowledgeProjectRegistrationRequest): Promise<KnowledgeProjectRegistrationReceipt>; readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord>; @@ -232,6 +233,7 @@ export declare class KnowledgeProjectLinksHttpClient implements KnowledgeProject private readonly fetchImpl; private readonly root; constructor(options: KnowledgeProjectLinksHttpClientOptions); + close(): Promise<void>; private headers; private request; capability(): Promise<KnowledgeProjectRegistrationCapability>; diff --git a/dist/serve.js b/dist/serve.js index c547c49..85c7056 100644 --- a/dist/serve.js +++ b/dist/serve.js @@ -2507,6 +2507,7 @@ class PostgresProjectLinksSql { this.client = client; this.transactionClient = transactionClient; } + async close() {} async get(sql, params = []) { return this.client.get(postgresSql(sql), params); } @@ -2527,9 +2528,17 @@ class PostgresProjectLinksSql { class SqliteProjectLinksSql { db; tail = Promise.resolve(); + closed = false; constructor(db) { this.db = db; } + async close() { + await this.tail; + if (this.closed) + return; + this.closed = true; + this.db.close(); + } async get(sql, params = []) { return this.db.query(sql).get(...params) ?? null; } @@ -2897,6 +2906,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { }; this.now = options.now ?? (() => new Date().toISOString()); } + async close() { + await this.sql.close(); + } capabilityValue() { return { authority: "knowledge", @@ -2999,7 +3011,7 @@ class PackageOwnedKnowledgeProjectLinksAuthority { return row ? toReceipt(row) : null; } assertIdempotent(existing, input) { - if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest || input.accepted_receipt_id !== undefined && existing.accepted_receipt_id !== input.accepted_receipt_id) { throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); } } @@ -3148,6 +3160,25 @@ class PackageOwnedKnowledgeProjectLinksAuthority { ]); return row ? toReceipt(row) : null; } + async hasOtherAcceptedForwardReceipt(sql, accepted) { + const itemPredicate = accepted.action === "bind_item" ? "AND item_id = ?" : "AND item_id IS NULL"; + const row = await sql.get(`SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${itemPredicate} + LIMIT 1`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.action, + accepted.collection_id, + accepted.receipt_id, + ...accepted.action === "bind_item" ? [accepted.item_id] : [] + ]); + return row !== null; + } assertInverseIdentity(request) { this.assertIdentity(request); requiredString(request.accepted_receipt_id, "accepted_receipt_id"); @@ -3179,6 +3210,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!aggregate) { outcome = "terminal_nonacceptance"; reason = "accepted_collection_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_later_accepted_adopter"; } else { const membership = await tx.get(`SELECT COUNT(*) AS count FROM knowledge_project_collection_memberships @@ -3445,6 +3479,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!membership) { outcome = "terminal_nonacceptance"; reason = "accepted_membership_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "membership_has_later_accepted_adopter"; } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { outcome = "terminal_nonacceptance"; reason = "membership_is_owned_by_a_different_receipt"; @@ -3792,6 +3829,7 @@ class KnowledgeProjectLinksHttpClient { this.fetchImpl = options.fetch ?? guardedFetch; this.root = options.baseUrl.replace(/\/+$/, ""); } + async close() {} headers(extra = {}) { const headers = new Headers(this.options.headers); headers.set("accept", "application/json"); @@ -5865,6 +5903,23 @@ function knowledgeOpenApi(version) { "created_at", "updated_at" ], + properties: { + source_project_id: { type: "string" }, + project_id: { type: "string" }, + project_slug: { type: "string" }, + project_name: { type: "string" }, + collection_id: { type: "string" }, + collection_slug: { type: "string" }, + collection_name: { type: "string" }, + membership_rule: { + type: "string", + enum: ["explicit_collection_binding"] + }, + revision: { type: "string" }, + digest: { type: "string" }, + created_at: { type: "string", format: "date-time" }, + updated_at: { type: "string", format: "date-time" } + }, additionalProperties: false }, ProjectResource: { @@ -5882,6 +5937,36 @@ function knowledgeOpenApi(version) { "locator", "metadata" ], + properties: { + key: { type: "string" }, + kind: { + type: "string", + enum: ["project", "collection", "item", "taxonomy"] + }, + id: { type: "string" }, + project_id: { type: "string" }, + source_project_id: { type: "string" }, + collection_id: { type: "string" }, + revision: { type: "string" }, + digest: { type: "string" }, + title: { type: "string" }, + locator: { + type: "object", + required: ["kind", "value"], + properties: { + kind: { + type: "string", + enum: ["external_uuid", "canonical_uri"] + }, + value: { type: "string" } + }, + additionalProperties: false + }, + metadata: { + type: "object", + additionalProperties: true + } + }, additionalProperties: false }, ProjectResourcePage: { diff --git a/dist/service.d.ts b/dist/service.d.ts index 4d07e35..d4388cd 100644 --- a/dist/service.d.ts +++ b/dist/service.d.ts @@ -392,6 +392,7 @@ export declare class KnowledgeService { * the authenticated HTTP producer, never a local mirror. */ projectLinksAuthority(): KnowledgeProjectLinksAuthority; + close(): Promise<void>; /** Bounded list query via the unified Store. */ listItems(options?: ItemListOptions): Promise<ItemListResult>; /** Fetch one knowledge item by id or short id via the unified Store. */ diff --git a/dist/storage.js b/dist/storage.js index 949886b..5b83c3c 100644 --- a/dist/storage.js +++ b/dist/storage.js @@ -2682,6 +2682,7 @@ class PostgresProjectLinksSql { this.client = client; this.transactionClient = transactionClient; } + async close() {} async get(sql, params = []) { return this.client.get(postgresSql(sql), params); } @@ -2702,9 +2703,17 @@ class PostgresProjectLinksSql { class SqliteProjectLinksSql { db; tail = Promise.resolve(); + closed = false; constructor(db) { this.db = db; } + async close() { + await this.tail; + if (this.closed) + return; + this.closed = true; + this.db.close(); + } async get(sql, params = []) { return this.db.query(sql).get(...params) ?? null; } @@ -3072,6 +3081,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { }; this.now = options.now ?? (() => new Date().toISOString()); } + async close() { + await this.sql.close(); + } capabilityValue() { return { authority: "knowledge", @@ -3174,7 +3186,7 @@ class PackageOwnedKnowledgeProjectLinksAuthority { return row ? toReceipt(row) : null; } assertIdempotent(existing, input) { - if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) { + if (existing.idempotency_key !== input.idempotency_key || input.request_digest !== undefined && existing.request_digest !== input.request_digest || input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest || input.accepted_receipt_id !== undefined && existing.accepted_receipt_id !== input.accepted_receipt_id) { throw new KnowledgeProjectLinksError("KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH", "operation and step identity are already bound to a different Knowledge project-link request.", { receipt_id: existing.receipt_id }); } } @@ -3323,6 +3335,25 @@ class PackageOwnedKnowledgeProjectLinksAuthority { ]); return row ? toReceipt(row) : null; } + async hasOtherAcceptedForwardReceipt(sql, accepted) { + const itemPredicate = accepted.action === "bind_item" ? "AND item_id = ?" : "AND item_id IS NULL"; + const row = await sql.get(`SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${itemPredicate} + LIMIT 1`, [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.action, + accepted.collection_id, + accepted.receipt_id, + ...accepted.action === "bind_item" ? [accepted.item_id] : [] + ]); + return row !== null; + } assertInverseIdentity(request) { this.assertIdentity(request); requiredString(request.accepted_receipt_id, "accepted_receipt_id"); @@ -3354,6 +3385,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!aggregate) { outcome = "terminal_nonacceptance"; reason = "accepted_collection_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "collection_has_later_accepted_adopter"; } else { const membership = await tx.get(`SELECT COUNT(*) AS count FROM knowledge_project_collection_memberships @@ -3620,6 +3654,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority { } else if (!membership) { outcome = "terminal_nonacceptance"; reason = "accepted_membership_is_already_absent"; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = "terminal_nonacceptance"; + reason = "membership_has_later_accepted_adopter"; } else if (membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1) { outcome = "terminal_nonacceptance"; reason = "membership_is_owned_by_a_different_receipt"; @@ -3967,6 +4004,7 @@ class KnowledgeProjectLinksHttpClient { this.fetchImpl = options.fetch ?? guardedFetch; this.root = options.baseUrl.replace(/\/+$/, ""); } + async close() {} headers(extra = {}) { const headers = new Headers(this.options.headers); headers.set("accept", "application/json"); diff --git a/src/cli.ts b/src/cli.ts index 8d74b3b..129c138 100755 --- a/src/cli.ts +++ b/src/cli.ts @@ -23,6 +23,7 @@ import { KNOWLEDGE_PROJECT_REGISTRATION_ROUTE, createLocalKnowledgeProjectLinksAuthority, digestKnowledgeProjectLinksValue, + type KnowledgeProjectLinksAuthority, type KnowledgeProjectReceiptAction, type KnowledgeProjectRegistrationDirection, type KnowledgeProjectResourceKind, @@ -1022,6 +1023,8 @@ async function run(argv: string[]): Promise<void> { const serviceScope = command === 'project-panel' || command === 'app-wiki' ? (flags.scope ?? 'project') : flags.scope; const service = createKnowledgeService({ scope: serviceScope }); + let standaloneProjectLinksAuthority: KnowledgeProjectLinksAuthority | undefined; + try { if (command === 'storage') { const storageAction = positional[1] ?? 'status'; if (storageAction === 'import-legacy') { @@ -1091,7 +1094,7 @@ async function run(argv: string[]): Promise<void> { const projectLinksAuthority = () => { if (!storePathOverridden || isKnowledgeApiMode()) return service.projectLinksAuthority(); - return createLocalKnowledgeProjectLinksAuthority({ + standaloneProjectLinksAuthority ??= createLocalKnowledgeProjectLinksAuthority({ databasePath: join(dirname(storePath), 'knowledge.db'), itemStore, options: { @@ -1101,6 +1104,7 @@ async function run(argv: string[]): Promise<void> { corpusId: process.env.HASNA_KNOWLEDGE_PROJECT_CORPUS_ID ?? 'knowledge', }, }); + return standaloneProjectLinksAuthority; }; if (command === 'project-registration') { @@ -2720,6 +2724,10 @@ async function run(argv: string[]): Promise<void> { const hint = suggestion ? ` Did you mean '${suggestion}'?` : ''; log('warn', 'Unknown command', { input: positional[0], suggestion }); throw new Error(`Unknown command: ${positional[0]}.${hint} Run 'knowledge --help' for available commands.`); + } finally { + await standaloneProjectLinksAuthority?.close(); + await service.close(); + } } /** diff --git a/src/project-links.ts b/src/project-links.ts index 27ca0c0..073b45b 100644 --- a/src/project-links.ts +++ b/src/project-links.ts @@ -199,6 +199,7 @@ export interface KnowledgeProjectResourceListOptions { } export interface KnowledgeProjectLinksAuthority { + close(): Promise<void>; capability(): Promise<KnowledgeProjectRegistrationCapability>; registerCollection(request: KnowledgeProjectRegistrationRequest): Promise<KnowledgeProjectRegistrationReceipt>; readCollection(collectionId: string): Promise<KnowledgeProjectCollectionRecord>; @@ -307,6 +308,7 @@ interface SqlRunResult { } interface ProjectLinksSql { + close(): Promise<void>; get<T extends Record<string, unknown>>(sql: string, params?: readonly unknown[]): Promise<T | null>; many<T extends Record<string, unknown>>(sql: string, params?: readonly unknown[]): Promise<T[]>; run(sql: string, params?: readonly unknown[]): Promise<SqlRunResult>; @@ -324,6 +326,8 @@ class PostgresProjectLinksSql implements ProjectLinksSql { private readonly transactionClient?: PoolQueryClient, ) {} + async close(): Promise<void> {} + async get<T extends Record<string, unknown>>(sql: string, params: readonly unknown[] = []): Promise<T | null> { return this.client.get<T>(postgresSql(sql), params); } @@ -347,9 +351,17 @@ class PostgresProjectLinksSql implements ProjectLinksSql { class SqliteProjectLinksSql implements ProjectLinksSql { private tail: Promise<void> = Promise.resolve(); + private closed = false; constructor(readonly db: Database) {} + async close(): Promise<void> { + await this.tail; + if (this.closed) return; + this.closed = true; + this.db.close(); + } + async get<T extends Record<string, unknown>>(sql: string, params: readonly unknown[] = []): Promise<T | null> { return (this.db.query(sql).get(...params as SQLQueryBindings[]) as T | null) ?? null; } @@ -741,6 +753,10 @@ class PackageOwnedKnowledgeProjectLinksAuthority implements KnowledgeProjectLink this.now = options.now ?? (() => new Date().toISOString()); } + async close(): Promise<void> { + await this.sql.close(); + } + private capabilityValue(): KnowledgeProjectRegistrationCapability { return { authority: 'knowledge', @@ -899,11 +915,16 @@ class PackageOwnedKnowledgeProjectLinksAuthority implements KnowledgeProjectLink idempotency_key: string; request_digest?: string; precondition_digest?: string; + accepted_receipt_id?: string; }): void { if ( existing.idempotency_key !== input.idempotency_key || (input.request_digest !== undefined && existing.request_digest !== input.request_digest) || (input.precondition_digest !== undefined && existing.precondition_digest !== input.precondition_digest) + || ( + input.accepted_receipt_id !== undefined + && existing.accepted_receipt_id !== input.accepted_receipt_id + ) ) { throw new KnowledgeProjectLinksError( 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH', @@ -1127,6 +1148,34 @@ class PackageOwnedKnowledgeProjectLinksAuthority implements KnowledgeProjectLink return row ? toReceipt(row) : null; } + private async hasOtherAcceptedForwardReceipt( + sql: ProjectLinksSql, + accepted: KnowledgeProjectRegistrationReceipt, + ): Promise<boolean> { + const itemPredicate = accepted.action === 'bind_item' + ? 'AND item_id = ?' + : 'AND item_id IS NULL'; + const row = await sql.get<{ receipt_id: string }>( + `SELECT receipt_id + FROM knowledge_project_link_receipts + WHERE authority_id = ? AND tenant_id = ? AND corpus_id = ? + AND action = ? AND direction = 'forward' AND outcome = 'accepted' + AND collection_id = ? AND receipt_id <> ? + ${itemPredicate} + LIMIT 1`, + [ + this.identity.authority_id, + this.identity.tenant_id, + this.identity.corpus_id, + accepted.action, + accepted.collection_id, + accepted.receipt_id, + ...(accepted.action === 'bind_item' ? [accepted.item_id] : []), + ], + ); + return row !== null; + } + private assertInverseIdentity(request: KnowledgeProjectInverseRequest): void { this.assertIdentity(request); requiredString(request.accepted_receipt_id, 'accepted_receipt_id'); @@ -1166,6 +1215,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority implements KnowledgeProjectLink } else if (!aggregate) { outcome = 'terminal_nonacceptance'; reason = 'accepted_collection_is_already_absent'; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = 'terminal_nonacceptance'; + reason = 'collection_has_later_accepted_adopter'; } else { const membership = await tx.get<{ count: number | string }>( `SELECT COUNT(*) AS count @@ -1511,6 +1563,9 @@ class PackageOwnedKnowledgeProjectLinksAuthority implements KnowledgeProjectLink } else if (!membership) { outcome = 'terminal_nonacceptance'; reason = 'accepted_membership_is_already_absent'; + } else if (await this.hasOtherAcceptedForwardReceipt(tx, accepted)) { + outcome = 'terminal_nonacceptance'; + reason = 'membership_has_later_accepted_adopter'; } else if ( membership.bound_receipt_id !== accepted.receipt_id || Number(membership.created_by_operation) !== 1 @@ -1993,6 +2048,8 @@ export class KnowledgeProjectLinksHttpClient implements KnowledgeProjectLinksAut this.root = options.baseUrl.replace(/\/+$/, ''); } + async close(): Promise<void> {} + private headers(extra: Record<string, string> = {}): Headers { const headers = new Headers(this.options.headers); headers.set('accept', 'application/json'); diff --git a/src/serve.ts b/src/serve.ts index 34c9851..ae7dddb 100644 --- a/src/serve.ts +++ b/src/serve.ts @@ -2679,6 +2679,23 @@ export function knowledgeOpenApi(version: string): Record<string, unknown> { 'created_at', 'updated_at', ], + properties: { + source_project_id: { type: 'string' }, + project_id: { type: 'string' }, + project_slug: { type: 'string' }, + project_name: { type: 'string' }, + collection_id: { type: 'string' }, + collection_slug: { type: 'string' }, + collection_name: { type: 'string' }, + membership_rule: { + type: 'string', + enum: ['explicit_collection_binding'], + }, + revision: { type: 'string' }, + digest: { type: 'string' }, + created_at: { type: 'string', format: 'date-time' }, + updated_at: { type: 'string', format: 'date-time' }, + }, additionalProperties: false, }, ProjectResource: { @@ -2696,6 +2713,36 @@ export function knowledgeOpenApi(version: string): Record<string, unknown> { 'locator', 'metadata', ], + properties: { + key: { type: 'string' }, + kind: { + type: 'string', + enum: ['project', 'collection', 'item', 'taxonomy'], + }, + id: { type: 'string' }, + project_id: { type: 'string' }, + source_project_id: { type: 'string' }, + collection_id: { type: 'string' }, + revision: { type: 'string' }, + digest: { type: 'string' }, + title: { type: 'string' }, + locator: { + type: 'object', + required: ['kind', 'value'], + properties: { + kind: { + type: 'string', + enum: ['external_uuid', 'canonical_uri'], + }, + value: { type: 'string' }, + }, + additionalProperties: false, + }, + metadata: { + type: 'object', + additionalProperties: true, + }, + }, additionalProperties: false, }, ProjectResourcePage: { diff --git a/src/service.ts b/src/service.ts index 1c0a8f3..3ed5bb5 100644 --- a/src/service.ts +++ b/src/service.ts @@ -1744,6 +1744,12 @@ export class KnowledgeService { return this.cachedProjectLinksAuthority; } + async close(): Promise<void> { + const authority = this.cachedProjectLinksAuthority; + this.cachedProjectLinksAuthority = undefined; + await authority?.close(); + } + /** Bounded list query via the unified Store. */ async listItems(options: ItemListOptions = {}): Promise<ItemListResult> { return this.itemStore().list(options); diff --git a/tests/project-links.test.ts b/tests/project-links.test.ts index 090d807..4dafc86 100644 --- a/tests/project-links.test.ts +++ b/tests/project-links.test.ts @@ -1,5 +1,5 @@ import { afterAll, describe, expect, test } from 'bun:test'; -import { mkdtempSync, rmSync } from 'node:fs'; +import { existsSync, mkdtempSync, rmSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { fileURLToPath } from 'node:url'; @@ -21,10 +21,12 @@ import { createServeHandler, knowledgeOpenApi } from '../src/serve'; import { createMigratedPglite } from './fixtures/pglite-client'; const tempRoots: string[] = []; +const localAuthorities: KnowledgeProjectLinksAuthority[] = []; const fixedNow = () => '2026-08-10T12:00:00.000Z'; const repoRoot = join(fileURLToPath(new URL('.', import.meta.url)), '..'); -afterAll(() => { +afterAll(async () => { + for (const authority of localAuthorities.splice(0)) await authority.close(); for (const root of tempRoots) rmSync(root, { recursive: true, force: true }); }); @@ -198,6 +200,90 @@ async function inverseRequest( }; } +function receiptLookupRequest( + capability: KnowledgeProjectRegistrationCapability, + receipt: KnowledgeProjectRegistrationReceipt, +) { + return { + authority_id: capability.authority_id, + tenant_id: capability.tenant_id, + corpus_id: capability.corpus_id, + operation_id: receipt.operation_id, + step_id: receipt.step_id, + action: receipt.action, + direction: receipt.direction, + idempotency_key: receipt.idempotency_key, + max_items: 1 as const, + }; +} + +interface TestJsonSchema { + $ref?: string; + type?: string; + format?: string; + enum?: unknown[]; + required?: string[]; + properties?: Record<string, TestJsonSchema>; + items?: TestJsonSchema; + additionalProperties?: boolean | TestJsonSchema; +} + +function expectSchemaAccepts( + schemas: Record<string, TestJsonSchema>, + schema: TestJsonSchema, + value: unknown, + path = '$', +): void { + if (schema.$ref) { + const name = schema.$ref.split('/').at(-1)!; + expectSchemaAccepts(schemas, schemas[name]!, value, path); + return; + } + if (schema.enum) { + expect(schema.enum, `${path} enum`).toContain(value); + } + if (schema.type === 'string') { + expect(typeof value, `${path} type`).toBe('string'); + if (schema.format === 'date-time') { + expect(Number.isNaN(Date.parse(value as string)), `${path} date-time`).toBe(false); + } + return; + } + if (schema.type === 'integer') { + expect(Number.isInteger(value), `${path} type`).toBe(true); + return; + } + if (schema.type === 'boolean') { + expect(typeof value, `${path} type`).toBe('boolean'); + return; + } + if (schema.type === 'array') { + expect(Array.isArray(value), `${path} type`).toBe(true); + for (const [index, entry] of (value as unknown[]).entries()) { + expectSchemaAccepts(schemas, schema.items!, entry, `${path}[${index}]`); + } + return; + } + if (schema.type === 'object') { + expect(value !== null && typeof value === 'object' && !Array.isArray(value), `${path} type`) + .toBe(true); + const record = value as Record<string, unknown>; + for (const field of schema.required ?? []) { + expect(record, `${path}.${field} required`).toHaveProperty(field); + expect(schema.properties, `${path}.${field} schema`).toHaveProperty(field); + } + if (schema.additionalProperties === false) { + expect( + Object.keys(record).filter((field) => !schema.properties?.[field]), + `${path} additional properties`, + ).toEqual([]); + } + for (const [field, fieldSchema] of Object.entries(schema.properties ?? {})) { + if (field in record) expectSchemaAccepts(schemas, fieldSchema, record[field], `${path}.${field}`); + } + } +} + function localHarness(items = new Map<string, KnowledgeItem>()) { const root = tempRoot(); const store = mapItemStore(items); @@ -212,6 +298,7 @@ function localHarness(items = new Map<string, KnowledgeItem>()) { now: fixedNow, }, }); + localAuthorities.push(authority); return { root, store, items, authority }; } @@ -321,13 +408,14 @@ describe('Knowledge Projects resource-link producer', () => { now: fixedNow, }, }); + localAuthorities.push(reopened); expect((await reopened.readCollection(registration.collection_id!)).digest) .toBe((await harness.authority.readCollection(registration.collection_id!)).digest); expect((await reopened.readAllProjectResources('wks_project_alpha')).length) .toBe(postMutationResources.length); }); - test('registration and bind-existing are idempotent/adoptable, while inverse only removes owned effects', async () => { + test('later accepted adopters preserve creator-owned collections and memberships', async () => { const existing = item('k_existing', 'Existing', ['Convention']); const { authority } = localHarness(new Map([[existing.id, existing]])); const request = await registrationRequest(authority); @@ -344,6 +432,20 @@ describe('Knowledge Projects resource-link producer', () => { expect(adoptedRegistration.reason).toBe('adopted_existing_collection'); expect(adoptedRegistration.created_by_operation).toBe(false); + const capability = await authority.capability(); + const registrationInverseRequest = await inverseRequest(capability, accepted, { + operationId: 'op-inverse-owned-collection', + stepId: 'step-inverse-owned-collection', + idempotencyKey: 'idem-inverse-owned-collection', + }); + const registrationInverse = await authority.compensateRegistration(registrationInverseRequest); + expect(registrationInverse.outcome).toBe('terminal_nonacceptance'); + expect(registrationInverse.reason).toBe('collection_has_later_accepted_adopter'); + expect(await authority.lookupReceipt(receiptLookupRequest(capability, adoptedRegistration))) + .toEqual(adoptedRegistration); + expect((await authority.readCollection(accepted.collection_id!)).collection_id) + .toBe(accepted.collection_id); + const binding = await authority.bindItem( await bindingRequest(authority, accepted.collection_id!, existing.id), ); @@ -357,7 +459,6 @@ describe('Knowledge Projects resource-link producer', () => { expect(adoptedBinding.reason).toBe('adopted_existing_membership'); expect(adoptedBinding.created_by_operation).toBe(false); - const capability = await authority.capability(); const adoptedInverseRequest = await inverseRequest(capability, adoptedBinding, { operationId: 'op-inverse-adopted-membership', stepId: 'step-inverse-adopted-membership', @@ -375,22 +476,101 @@ describe('Knowledge Projects resource-link producer', () => { idempotencyKey: 'idem-inverse-owned-membership', }); const bindingInverse = await authority.compensateItemBinding(bindingInverseRequest); - expect(bindingInverse.outcome).toBe('accepted'); - expect(await authority.verifyItemBindingInverse(bindingInverseRequest)) - .toMatchObject({ target_id: existing.id, absent: true }); + expect(bindingInverse.outcome).toBe('terminal_nonacceptance'); + expect(bindingInverse.reason).toBe('membership_has_later_accepted_adopter'); + expect(await authority.lookupReceipt(receiptLookupRequest(capability, adoptedBinding))) + .toEqual(adoptedBinding); + expect(await authority.readItemBinding(accepted.collection_id!, existing.id)) + .toMatchObject({ item_id: existing.id }); + }); - const registrationInverseRequest = await inverseRequest(capability, accepted, { - operationId: 'op-inverse-owned-collection', - stepId: 'step-inverse-owned-collection', - idempotencyKey: 'idem-inverse-owned-collection', + test('inverse removes solely owned effects and binds idempotency to the accepted receipt', async () => { + const first = item('k_inverse_first', 'Inverse First'); + const second = item('k_inverse_second', 'Inverse Second'); + const { authority } = localHarness(new Map([ + [first.id, first], + [second.id, second], + ])); + const firstRegistration = await authority.registerCollection( + await registrationRequest(authority), + ); + const secondRegistration = await authority.registerCollection( + await registrationRequest(authority, { + operationId: 'op-register-beta', + stepId: 'step-register-beta', + idempotencyKey: 'idem-register-beta', + projectId: 'wks_project_beta', + projectSlug: 'beta', + projectName: 'Beta', + }), + ); + const capability = await authority.capability(); + + const firstRegistrationInverse = await inverseRequest(capability, firstRegistration, { + operationId: 'op-inverse-registration', + stepId: 'step-inverse-registration', + idempotencyKey: 'idem-inverse-registration', }); - const registrationInverse = await authority.compensateRegistration(registrationInverseRequest); - expect(registrationInverse.outcome).toBe('accepted'); - expect(await authority.verifyRegistrationInverse(registrationInverseRequest)) - .toMatchObject({ target_id: accepted.collection_id, absent: true }); - await expect(authority.readCollection(accepted.collection_id!)).rejects.toBeInstanceOf( - KnowledgeProjectLinksError, + expect((await authority.compensateRegistration(firstRegistrationInverse)).outcome) + .toBe('accepted'); + expect(await authority.verifyRegistrationInverse(firstRegistrationInverse)) + .toMatchObject({ target_id: firstRegistration.collection_id, absent: true }); + await expect( + authority.compensateRegistration({ + ...firstRegistrationInverse, + accepted_receipt_id: secondRegistration.receipt_id, + }), + ).rejects.toMatchObject({ + code: 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH', + }); + expect((await authority.readCollection(secondRegistration.collection_id!)).collection_id) + .toBe(secondRegistration.collection_id); + + const firstBinding = await authority.bindItem( + await bindingRequest(authority, secondRegistration.collection_id!, first.id), + ); + const secondBinding = await authority.bindItem( + await bindingRequest(authority, secondRegistration.collection_id!, second.id), ); + const firstBindingInverse = await inverseRequest(capability, firstBinding, { + operationId: 'op-inverse-binding', + stepId: 'step-inverse-binding', + idempotencyKey: 'idem-inverse-binding', + }); + expect((await authority.compensateItemBinding(firstBindingInverse)).outcome) + .toBe('accepted'); + expect(await authority.verifyItemBindingInverse(firstBindingInverse)) + .toMatchObject({ target_id: first.id, absent: true }); + await expect( + authority.compensateItemBinding({ + ...firstBindingInverse, + accepted_receipt_id: secondBinding.receipt_id, + }), + ).rejects.toMatchObject({ + code: 'KNOWLEDGE_PROJECT_LINKS_IDEMPOTENCY_MISMATCH', + }); + expect(await authority.readItemBinding(secondRegistration.collection_id!, second.id)) + .toMatchObject({ item_id: second.id }); + }); + + test('local authority close releases the owned SQLite handle before directory cleanup', async () => { + const root = tempRoot(); + const authority = createLocalKnowledgeProjectLinksAuthority({ + databasePath: join(root, 'knowledge.db'), + itemStore: mapItemStore(new Map()), + options: { + packageVersion: '9.9.9', + authorityId: 'knowledge-test', + tenantId: 'tenant-test', + corpusId: 'corpus-test', + now: fixedNow, + }, + }); + await authority.capability(); + await authority.close(); + await authority.close(); + rmSync(root, { recursive: true, force: true }); + expect(existsSync(root)).toBe(false); }); test('Postgres executes the same aggregate, membership, receipt, and resource semantics', async () => { @@ -429,6 +609,7 @@ describe('Knowledge Projects resource-link producer', () => { (error) => String(error), ); expect(receiptMutation).toContain('immutable'); + await authority.close(); await db.close(); }); @@ -487,11 +668,18 @@ describe('Knowledge Projects resource-link producer', () => { await client.bindItem(await bindingRequest(client, registration.collection_id!, apiItem.id)); expect((await client.readAllProjectResources('wks_project_alpha')).map((entry) => entry.kind)) .toEqual(['collection', 'item', 'project', 'taxonomy']); + const exactResource = await client.readProjectResource( + 'wks_project_alpha', + 'item', + apiItem.id, + ); + await client.close(); server.stop(true); const sdk = createKnowledgeClient({ projectLinksAuthority: authority }); expect((await sdk.projectLinks.capability()).route).toBe(KNOWLEDGE_PROJECT_REGISTRATION_ROUTE); - expect((await sdk.projectLinks.readCollection(registration.collection_id!)).collection_id) + const collectionRecord = await sdk.projectLinks.readCollection(registration.collection_id!); + expect(collectionRecord.collection_id) .toBe(registration.collection_id); const openapi = knowledgeOpenApi('9.9.9'); @@ -499,7 +687,10 @@ describe('Knowledge Projects resource-link producer', () => { expect(openapi.paths).toHaveProperty('/v1/project-registration/items/bind'); expect(openapi.paths).toHaveProperty('/v1/projects/{projectId}/resources'); expect(openapi.paths).toHaveProperty('/v1/projects/{projectId}/resources/{kind}/{resourceId}'); - expect(openapi.components.schemas).toHaveProperty('ProjectResourcePage'); + const schemas = (openapi.components as { schemas: Record<string, TestJsonSchema> }).schemas; + expect(schemas).toHaveProperty('ProjectResourcePage'); + expectSchemaAccepts(schemas, schemas.ProjectCollectionRecord!, collectionRecord); + expectSchemaAccepts(schemas, schemas.ProjectResource!, exactResource); }); test('CLI registers, binds, exhausts, and exactly reads the same local producer', () => { From 4e91b55dcc559c4c47eb8d8b34f64d4dd0cc89c0 Mon Sep 17 00:00:00 2001 From: Andrei Hasna <andrei@hasna.com> Date: Mon, 10 Aug 2026 19:57:44 +0300 Subject: [PATCH 3/4] CI: keep matrix lanes independent Agent: Theophrastus --- .github/workflows/ci.yml | 1 + tests/generated-artifacts.test.ts | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed50412..b6290bc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -49,6 +49,7 @@ jobs: test-matrix: strategy: + fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runtime: [bun] diff --git a/tests/generated-artifacts.test.ts b/tests/generated-artifacts.test.ts index 917ab20..fe96d28 100644 --- a/tests/generated-artifacts.test.ts +++ b/tests/generated-artifacts.test.ts @@ -152,6 +152,19 @@ describe('generated artifact verification', () => { // minifier change under the gate without any commit in this repo. expect(pins[0]).toMatch(/^\d+\.\d+\.\d+$/); }); + + test('the cross-platform matrix does not cancel Windows when another OS fails', () => { + const workflow = readFileSync(join(repoRoot, '.github', 'workflows', 'ci.yml'), 'utf8'); + expect(workflow).toContain( + [ + ' test-matrix:', + ' strategy:', + ' fail-fast: false', + ' matrix:', + ' os: [ubuntu-latest, macos-latest, windows-latest]', + ].join('\n'), + ); + }); }); // DELIBERATELY NOT TESTED HERE: end-to-end behaviour of the script itself — that it exits 1 on a From b0de40d63f8d4e28fd3c863d2361270db094f982 Mon Sep 17 00:00:00 2001 From: Andrei Hasna <andrei@hasna.com> Date: Mon, 10 Aug 2026 20:35:11 +0300 Subject: [PATCH 4/4] test: normalize workflow line endings Agent: Theophrastus --- tests/generated-artifacts.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/generated-artifacts.test.ts b/tests/generated-artifacts.test.ts index fe96d28..dff4b1f 100644 --- a/tests/generated-artifacts.test.ts +++ b/tests/generated-artifacts.test.ts @@ -154,7 +154,10 @@ describe('generated artifact verification', () => { }); test('the cross-platform matrix does not cancel Windows when another OS fails', () => { - const workflow = readFileSync(join(repoRoot, '.github', 'workflows', 'ci.yml'), 'utf8'); + const workflow = readFileSync(join(repoRoot, '.github', 'workflows', 'ci.yml'), 'utf8').replace( + /\r\n/g, + '\n', + ); expect(workflow).toContain( [ ' test-matrix:',