@remnic/core 9.3.704 → 9.3.705
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-boundary.d.ts +1 -1
- package/dist/access-boundary.js +25 -25
- package/dist/access-cli.js +53 -52
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.js +30 -29
- package/dist/access-mcp.js +29 -28
- package/dist/access-operations-batch.d.ts +2 -0
- package/dist/access-operations-batch.js +120 -0
- package/dist/access-operations.d.ts +1 -0
- package/dist/access-operations.js +28 -27
- package/dist/access-schema.js +3 -3
- package/dist/access-service.js +24 -24
- package/dist/access-surface-catalog.js +57 -54
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/{auto-sync-3AAP25FV.js → auto-sync-24NNS3GU.js} +3 -3
- package/dist/briefing.js +4 -4
- package/dist/{capsule-crypto-GWVG7LGC.js → capsule-crypto-7FJQINUR.js} +2 -2
- package/dist/capsule-crypto-7FJQINUR.js.map +1 -0
- package/dist/causal-behavior.js +5 -5
- package/dist/causal-chain.js +3 -3
- package/dist/causal-consolidation.js +8 -8
- package/dist/causal-retrieval.js +3 -3
- package/dist/causal-trajectory-graph.js +2 -2
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-OWHERGF2.js → chunk-2NLLXCJG.js} +2 -2
- package/dist/{chunk-PJ5MDXOF.js → chunk-2SYPOX45.js} +10 -10
- package/dist/{chunk-7G4KPGR3.js → chunk-47LPHBIP.js} +2 -2
- package/dist/{chunk-RYDT7LAI.js → chunk-5DTWZ66X.js} +2 -2
- package/dist/chunk-5DTWZ66X.js.map +1 -0
- package/dist/{chunk-OCFNG4LB.js → chunk-6GJ2WQRK.js} +2 -2
- package/dist/{chunk-4NFVPDIL.js → chunk-74MYJSKB.js} +5 -5
- package/dist/{chunk-PKMQK2WY.js → chunk-773DPI6T.js} +4 -4
- package/dist/{chunk-DE2OPIQD.js → chunk-7ARKLLCV.js} +6 -6
- package/dist/{chunk-3EHCV6YV.js → chunk-7L54YZUI.js} +63 -63
- package/dist/{chunk-AGNBY3VG.js → chunk-APJQ6UEA.js} +4 -4
- package/dist/{chunk-UNNDFYUX.js → chunk-ARV3AUOM.js} +5 -5
- package/dist/{chunk-S24J5LLQ.js → chunk-BKBSE3BU.js} +3 -3
- package/dist/{chunk-AE3C4PY6.js → chunk-BMKGG7GC.js} +2 -2
- package/dist/{chunk-NMW3T6T6.js → chunk-C2EHWNP2.js} +9 -9
- package/dist/{chunk-VKJHM6PL.js → chunk-DGTDRIUO.js} +5 -5
- package/dist/chunk-GI3MTYDU.js +1303 -0
- package/dist/chunk-GI3MTYDU.js.map +1 -0
- package/dist/{chunk-25FHSOEB.js → chunk-GT4VBKM4.js} +59 -5
- package/dist/chunk-GT4VBKM4.js.map +1 -0
- package/dist/{chunk-OOEVMJK4.js → chunk-HEHPVBWA.js} +6 -6
- package/dist/{chunk-YOI3ELXF.js → chunk-IF362TF6.js} +2 -2
- package/dist/{chunk-ABCGDW3A.js → chunk-IFR23TC5.js} +4 -4
- package/dist/{chunk-ZXFNSKPY.js → chunk-JHAYR2JY.js} +32 -32
- package/dist/{chunk-CTY6QSLZ.js → chunk-JZCKDTAS.js} +4 -4
- package/dist/{chunk-CTY6QSLZ.js.map → chunk-JZCKDTAS.js.map} +1 -1
- package/dist/{chunk-6AFVIOVZ.js → chunk-K22IJO4R.js} +2 -2
- package/dist/{chunk-QV5WFNZ2.js → chunk-KFU2SKDD.js} +2 -2
- package/dist/{chunk-5W7CTZ2E.js → chunk-KQAFEZQX.js} +4 -4
- package/dist/{chunk-TUPNAHHQ.js → chunk-KZMMAVR2.js} +2 -2
- package/dist/{chunk-6Q7JFY4P.js → chunk-LY4FJLPT.js} +2 -2
- package/dist/{chunk-XXDOJ5NL.js → chunk-M5MWSG4S.js} +7 -7
- package/dist/{chunk-YLB7NMLD.js → chunk-MNH2OODZ.js} +2 -2
- package/dist/{chunk-ORXVO6TH.js → chunk-NFGJBEPT.js} +6 -6
- package/dist/{chunk-QDIVMS25.js → chunk-NUWZFSKC.js} +2 -2
- package/dist/{chunk-6GHWF4QH.js → chunk-OM6ETLLH.js} +2 -2
- package/dist/{chunk-53EEQYE5.js → chunk-OMSTU233.js} +4 -4
- package/dist/{chunk-R64MNFPV.js → chunk-S3WYRPSA.js} +59 -59
- package/dist/{chunk-UOIRJ45Z.js → chunk-S5APSA3U.js} +2 -2
- package/dist/{chunk-WAHI7SPK.js → chunk-SY6WG6DB.js} +2 -2
- package/dist/{chunk-K7QRDDSR.js → chunk-ULVM34NP.js} +5 -5
- package/dist/{chunk-UVYI6VIX.js → chunk-X7Y7WX73.js} +1 -1
- package/dist/{chunk-QHNJVWF6.js → chunk-Y4PMATX2.js} +6 -6
- package/dist/{chunk-KF74X62T.js → chunk-YGKUAX2B.js} +4 -4
- package/dist/{chunk-YN4ZT4CW.js → chunk-YI7RZO7Y.js} +1 -1
- package/dist/cli.js +53 -52
- package/dist/compounding/engine.js +4 -4
- package/dist/connectors/codex-materialize-runner.js +4 -4
- package/dist/connectors/index.js +4 -4
- package/dist/entity-retrieval.js +4 -4
- package/dist/extraction.js +2 -2
- package/dist/{graph-edge-decay-D7OESCBR.js → graph-edge-decay-JLOF3YW4.js} +3 -3
- package/dist/graph-snapshot.js +3 -3
- package/dist/graph.js +2 -2
- package/dist/index.js +95 -94
- package/dist/index.js.map +1 -1
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.js +4 -4
- package/dist/maintenance/memory-governance.js +5 -5
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
- package/dist/maintenance/rebuild-memory-projection.js +6 -6
- package/dist/namespaces/migrate.js +8 -8
- package/dist/namespaces/search.js +3 -3
- package/dist/namespaces/storage.js +4 -4
- package/dist/operator-toolkit.js +15 -15
- package/dist/orchestration/maintenance.js +6 -6
- package/dist/orchestrator.js +40 -40
- package/dist/resume-bundles.js +1 -1
- package/dist/search/factory.js +2 -2
- package/dist/search/index.js +4 -4
- package/dist/semantic-consolidation.js +6 -6
- package/dist/semantic-rule-promotion.js +4 -4
- package/dist/semantic-rule-verifier.js +5 -5
- package/dist/storage.js +3 -3
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/import-sqlite.js +2 -2
- package/dist/verified-recall.js +5 -5
- package/package.json +2 -2
- package/src/access-boundary.ts +102 -1
- package/src/access-http.ts +54 -0
- package/src/access-operations-batch.ts +1468 -0
- package/src/access-operations.ts +4 -0
- package/src/access-surface-catalog.test.ts +17 -1
- package/src/access-surface-catalog.ts +57 -54
- package/src/storage-contract/atomicity.test.ts +113 -0
- package/src/storage-contract/cache-coherence.test.ts +100 -0
- package/src/storage-contract/content-hash.test.ts +102 -0
- package/src/storage-contract/failure-semantics.test.ts +108 -0
- package/src/storage-contract/harness.ts +148 -0
- package/src/storage-contract/namespace-routing.test.ts +135 -0
- package/src/storage-contract/round-trip.test.ts +226 -0
- package/src/storage-contract/surface.test.ts +90 -0
- package/src/storage-contract/versioning.test.ts +139 -0
- package/dist/chunk-25FHSOEB.js.map +0 -1
- package/dist/chunk-RYDT7LAI.js.map +0 -1
- /package/dist/{capsule-crypto-GWVG7LGC.js.map → access-operations-batch.js.map} +0 -0
- /package/dist/{auto-sync-3AAP25FV.js.map → auto-sync-24NNS3GU.js.map} +0 -0
- /package/dist/{chunk-OWHERGF2.js.map → chunk-2NLLXCJG.js.map} +0 -0
- /package/dist/{chunk-PJ5MDXOF.js.map → chunk-2SYPOX45.js.map} +0 -0
- /package/dist/{chunk-7G4KPGR3.js.map → chunk-47LPHBIP.js.map} +0 -0
- /package/dist/{chunk-OCFNG4LB.js.map → chunk-6GJ2WQRK.js.map} +0 -0
- /package/dist/{chunk-4NFVPDIL.js.map → chunk-74MYJSKB.js.map} +0 -0
- /package/dist/{chunk-PKMQK2WY.js.map → chunk-773DPI6T.js.map} +0 -0
- /package/dist/{chunk-DE2OPIQD.js.map → chunk-7ARKLLCV.js.map} +0 -0
- /package/dist/{chunk-3EHCV6YV.js.map → chunk-7L54YZUI.js.map} +0 -0
- /package/dist/{chunk-AGNBY3VG.js.map → chunk-APJQ6UEA.js.map} +0 -0
- /package/dist/{chunk-UNNDFYUX.js.map → chunk-ARV3AUOM.js.map} +0 -0
- /package/dist/{chunk-S24J5LLQ.js.map → chunk-BKBSE3BU.js.map} +0 -0
- /package/dist/{chunk-AE3C4PY6.js.map → chunk-BMKGG7GC.js.map} +0 -0
- /package/dist/{chunk-NMW3T6T6.js.map → chunk-C2EHWNP2.js.map} +0 -0
- /package/dist/{chunk-VKJHM6PL.js.map → chunk-DGTDRIUO.js.map} +0 -0
- /package/dist/{chunk-OOEVMJK4.js.map → chunk-HEHPVBWA.js.map} +0 -0
- /package/dist/{chunk-YOI3ELXF.js.map → chunk-IF362TF6.js.map} +0 -0
- /package/dist/{chunk-ABCGDW3A.js.map → chunk-IFR23TC5.js.map} +0 -0
- /package/dist/{chunk-ZXFNSKPY.js.map → chunk-JHAYR2JY.js.map} +0 -0
- /package/dist/{chunk-6AFVIOVZ.js.map → chunk-K22IJO4R.js.map} +0 -0
- /package/dist/{chunk-QV5WFNZ2.js.map → chunk-KFU2SKDD.js.map} +0 -0
- /package/dist/{chunk-5W7CTZ2E.js.map → chunk-KQAFEZQX.js.map} +0 -0
- /package/dist/{chunk-TUPNAHHQ.js.map → chunk-KZMMAVR2.js.map} +0 -0
- /package/dist/{chunk-6Q7JFY4P.js.map → chunk-LY4FJLPT.js.map} +0 -0
- /package/dist/{chunk-XXDOJ5NL.js.map → chunk-M5MWSG4S.js.map} +0 -0
- /package/dist/{chunk-YLB7NMLD.js.map → chunk-MNH2OODZ.js.map} +0 -0
- /package/dist/{chunk-ORXVO6TH.js.map → chunk-NFGJBEPT.js.map} +0 -0
- /package/dist/{chunk-QDIVMS25.js.map → chunk-NUWZFSKC.js.map} +0 -0
- /package/dist/{chunk-6GHWF4QH.js.map → chunk-OM6ETLLH.js.map} +0 -0
- /package/dist/{chunk-53EEQYE5.js.map → chunk-OMSTU233.js.map} +0 -0
- /package/dist/{chunk-R64MNFPV.js.map → chunk-S3WYRPSA.js.map} +0 -0
- /package/dist/{chunk-UOIRJ45Z.js.map → chunk-S5APSA3U.js.map} +0 -0
- /package/dist/{chunk-WAHI7SPK.js.map → chunk-SY6WG6DB.js.map} +0 -0
- /package/dist/{chunk-K7QRDDSR.js.map → chunk-ULVM34NP.js.map} +0 -0
- /package/dist/{chunk-UVYI6VIX.js.map → chunk-X7Y7WX73.js.map} +0 -0
- /package/dist/{chunk-QHNJVWF6.js.map → chunk-Y4PMATX2.js.map} +0 -0
- /package/dist/{chunk-KF74X62T.js.map → chunk-YGKUAX2B.js.map} +0 -0
- /package/dist/{chunk-YN4ZT4CW.js.map → chunk-YI7RZO7Y.js.map} +0 -0
- /package/dist/{graph-edge-decay-D7OESCBR.js.map → graph-edge-decay-JLOF3YW4.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/access-operations-batch.ts"],"sourcesContent":["/**\n * Batch migration of remaining access-surface handlers through the boundary\n * (issue #1525). Each operation routes MCP/HTTP/CLI dispatch through the\n * shared validation + error-mapping layer in access-boundary.ts.\n *\n * Schemas use a null-stripping preprocessor (MCP clients send null for absent\n * optional fields — repo gotcha #2) over a permissive record. Individual\n * schema tightening lands as follow-up PRs; the boundary already centralizes\n * error mapping and enforces \"no handler bypasses the boundary.\"\n */\n\nimport { z } from \"zod\";\nimport { defineOperation, type OperationContext } from \"./access-boundary.js\";\nimport { EngramAccessInputError, type EngramAccessService } from \"./access-service.js\";\nimport type { RecallPlanMode, RecallDisclosure } from \"./types.js\";\nimport { projectTagProjectId } from \"./coding/coding-namespace.js\";\nimport { expandTildePath } from \"./utils/path.js\";\n\n// ---------------------------------------------------------------------------\n// Shared helpers — type-safe extraction from unknown input (no `any`)\n// ---------------------------------------------------------------------------\n\n/** Strip null values from an object (MCP clients send null for absent optionals). */\nfunction stripNulls(data: unknown): unknown {\n if (data !== null && typeof data === \"object\" && !Array.isArray(data)) {\n const obj = data as Record<string, unknown>;\n const cleaned: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== null) cleaned[key] = value;\n }\n return cleaned;\n }\n return data;\n}\n\n/** Permissive schema: null-strip then accept any string-keyed record. */\nconst looseSchema = z.preprocess(\n stripNulls,\n z.record(z.string(), z.unknown()),\n) as z.ZodType<Record<string, unknown>>;\n\nfunction optStr(v: unknown): string | undefined {\n return typeof v === \"string\" ? v : undefined;\n}\nfunction reqStr(v: unknown, field: string): string {\n if (typeof v !== \"string\" || v.length === 0) {\n throw new EngramAccessInputError(`${field} is required and must be a non-empty string`);\n }\n return v;\n}\nfunction defStr(v: unknown, d: string): string {\n return typeof v === \"string\" ? v : d;\n}\nfunction optNum(v: unknown): number | undefined {\n return typeof v === \"number\" && Number.isFinite(v) ? v : undefined;\n}\nfunction optBool(v: unknown): boolean | undefined {\n return typeof v === \"boolean\" ? v : undefined;\n}\nfunction optStrArr(v: unknown): string[] | undefined {\n return Array.isArray(v) && v.every((x) => typeof x === \"string\") ? v : undefined;\n}\n// ===========================================================================\n// Recall operations\n// ===========================================================================\n\ndefineOperation({\n name: \"recall\",\n description: \"Semantic recall across memories.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.recall({\n query: defStr(input.query, \"\"),\n sessionKey: optStr(input.sessionKey),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n namespace: optStr(input.namespace),\n topK: optNum(input.topK),\n mode: optStr(input.mode) as RecallPlanMode | \"auto\" | undefined,\n includeDebug: input.includeDebug === true,\n disclosure: optStr(input.disclosure) as RecallDisclosure | undefined,\n cwd: optStr(input.cwd),\n projectTag: optStr(input.projectTag),\n asOf: optStr(input.asOf),\n ...(optStrArr(input.tags) !== undefined ? { tags: optStrArr(input.tags)! } : {}),\n ...(optStr(input.tagMatch) !== undefined ? { tagMatch: optStr(input.tagMatch) as \"any\" | \"all\" } : {}),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"recall_explain\",\n description: \"Explain the recall plan for the session.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.recallExplain({\n sessionKey: optStr(input.sessionKey),\n namespace: optStr(input.namespace),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"set_coding_context\",\n description: \"Set the coding context for a session (issue #569).\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const sessionKey = defStr(input.sessionKey, \"\");\n const projectTag = optStr(input.projectTag);\n const hasProjectTag = projectTag !== undefined && projectTag.trim().length > 0;\n const hasCodingContext = \"codingContext\" in input;\n if (!hasCodingContext && hasProjectTag) {\n const tag = projectTag!.trim();\n const projectId = projectTagProjectId(tag);\n ctx.service.setCodingContext({\n sessionKey,\n codingContext: { projectId, branch: null, rootPath: projectId, defaultBranch: null },\n });\n return { result: { ok: true } };\n }\n if (!hasCodingContext && !hasProjectTag) {\n throw new EngramAccessInputError(\"set_coding_context requires either codingContext or projectTag\");\n }\n const rawCtx = input.codingContext;\n let codingContext: { projectId: string; branch: string | null; rootPath: string; defaultBranch: string | null } | null = null;\n if (rawCtx !== null) {\n if (typeof rawCtx !== \"object\" || rawCtx === undefined) {\n throw new EngramAccessInputError(\"codingContext must be an object or null\");\n }\n const obj = rawCtx as Record<string, unknown>;\n const projectId = defStr(obj.projectId, \"\");\n const rootPath = defStr(obj.rootPath, \"\");\n const branch = obj.branch === null ? null : optStr(obj.branch);\n const defaultBranch = obj.defaultBranch === null ? null : optStr(obj.defaultBranch);\n if (branch === undefined) throw new EngramAccessInputError(\"codingContext.branch must be a string or null\");\n if (defaultBranch === undefined) throw new EngramAccessInputError(\"codingContext.defaultBranch must be a string or null\");\n codingContext = { projectId, branch, rootPath, defaultBranch };\n }\n ctx.service.setCodingContext({ sessionKey, codingContext });\n return { result: { ok: true } };\n },\n});\n\ndefineOperation({\n name: \"recall_tier_explain\",\n description: \"Explain the recall tier breakdown.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const sessionKey = optStr(input.sessionKey);\n const namespace = optStr(input.namespace);\n const result = await ctx.service.recallTierExplain(\n sessionKey !== undefined && sessionKey.length > 0 ? sessionKey : undefined,\n namespace !== undefined && namespace.length > 0 ? namespace : undefined,\n ctx.authenticatedPrincipal,\n );\n return { result };\n },\n});\n\ndefineOperation({\n name: \"recall_xray\",\n description: \"X-ray the recall pipeline for a query.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const budgetRaw = input.budget;\n let budget: number | undefined;\n if (budgetRaw !== undefined && budgetRaw !== null) {\n const parsed = typeof budgetRaw === \"number\" ? budgetRaw : typeof budgetRaw === \"string\" ? Number(budgetRaw) : undefined;\n if (parsed === undefined || !Number.isFinite(parsed) || parsed <= 0 || !Number.isInteger(parsed)) {\n throw new EngramAccessInputError(\"recall_xray: budget expects a positive integer\");\n }\n budget = parsed;\n }\n const disclosureRaw = optStr(input.disclosure);\n const result = await ctx.service.recallXray({\n query: defStr(input.query, \"\"),\n sessionKey: optStr(input.sessionKey),\n namespace: optStr(input.namespace),\n budget,\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n ...(disclosureRaw !== undefined && disclosureRaw !== \"\" ? { disclosure: disclosureRaw as RecallDisclosure } : {}),\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// Wearables + transcript operations\n// ===========================================================================\n\ndefineOperation({\n name: \"wearables_status\",\n description: \"Get wearables sync status.\",\n schema: looseSchema,\n handler: async (_input, ctx) => ({ result: await ctx.service.wearablesStatus() }),\n});\n\ndefineOperation({\n name: \"wearables_sync\",\n description: \"Sync wearables data.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.wearablesSync({\n source: optStr(input.source),\n date: optStr(input.date),\n days: optNum(input.days),\n forceMemories: optBool(input.forceMemories),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"transcript_day\",\n description: \"Get transcript for a specific day.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const date = defStr(input.date, \"\");\n if (date.trim().length === 0) throw new EngramAccessInputError(\"transcript_day: date is required and must be YYYY-MM-DD\");\n const result = await ctx.service.wearablesTranscriptDay({ date, source: optStr(input.source) });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"transcript_search\",\n description: \"Search transcripts.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const query = defStr(input.query, \"\");\n if (query.trim().length === 0) throw new EngramAccessInputError(\"transcript_search: query is required and must be non-empty\");\n const result = await ctx.service.wearablesTranscriptSearch({\n query,\n source: optStr(input.source),\n from: optStr(input.from),\n to: optStr(input.to),\n limit: optNum(input.limit),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"transcript_memories\",\n description: \"Get transcript memories.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.wearablesTranscriptMemories({\n source: optStr(input.source),\n date: optStr(input.date),\n limit: optNum(input.limit),\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// Action confidence, day summary, capsule operations\n// ===========================================================================\n\ndefineOperation({\n name: \"action_confidence\",\n description: \"Get action confidence for recent memories.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.actionConfidence({\n intendedAction: optStr(input.intendedAction),\n confidence: optNum(input.confidence),\n risk: optStr(input.risk) as import(\"./action-confidence.js\").ActionConfidenceRiskCategory | undefined,\n contextReadiness: optStr(input.contextReadiness) as import(\"./action-confidence.js\").ActionConfidenceContextReadiness | undefined,\n currentContextScopes: optStrArr(input.currentContextScopes),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"chatgpt_memory_inspector\",\n description: \"ChatGPT memory inspector (recall xray + action confidence orchestrator).\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const xray = await ctx.service.recallXray({\n query: defStr(input.query, \"\"),\n sessionKey: optStr(input.sessionKey),\n namespace: optStr(input.namespace),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n const confidence = await ctx.service.actionConfidence({});\n return { result: { xray, confidence } };\n },\n});\n\ndefineOperation({\n name: \"day_summary\",\n description: \"Get a day summary.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.daySummary({\n memories: optStr(input.memories),\n sessionKey: optStr(input.sessionKey),\n namespace: optStr(input.namespace),\n timeZone: optStr(input.timeZone),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"capsule_export\",\n description: \"Export a capsule.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.capsuleExport({\n name: optStr(input.name) ?? \"\",\n namespace: optStr(input.namespace),\n since: optStr(input.since),\n includeKinds: optStrArr(input.includeKinds),\n peerIds: optStrArr(input.peerIds),\n includeTranscripts: optBool(input.includeTranscripts),\n encrypt: optBool(input.encrypt),\n principal: ctx.authenticatedPrincipal,\n } as Parameters<typeof ctx.service.capsuleExport>[0]);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"capsule_import\",\n description: \"Import a capsule.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.capsuleImport({\n archivePath: expandTildePath(optStr(input.archivePath) ?? \"\"),\n namespace: optStr(input.namespace),\n mode: optStr(input.mode) as \"skip\" | \"overwrite\" | \"fork\" | undefined,\n passphrase: optStr(input.passphrase),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"capsule_list\",\n description: \"List capsules.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.capsuleList({\n namespace: optStr(input.namespace),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// Governance, maintenance, procedural operations\n// ===========================================================================\n\ndefineOperation({\n name: \"memory_governance_run\",\n description: \"Run memory governance.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.governanceRun({\n namespace: optStr(input.namespace),\n mode: optStr(input.mode) as \"shadow\" | \"apply\" | undefined,\n recentDays: optNum(input.recentDays),\n maxMemories: optNum(input.maxMemories),\n batchSize: optNum(input.batchSize),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"procedure_mining_run\",\n description: \"Run procedure mining.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.procedureMiningRun({\n namespace: optStr(input.namespace),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"pattern_reinforcement_run\",\n description: \"Run pattern reinforcement.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.patternReinforcementRun({\n namespace: optStr(input.namespace),\n force: input.force === true,\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"procedural_stats\",\n description: \"Get procedural stats.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.procedureStats({ namespace: optStr(input.namespace) }, ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\n// ===========================================================================\n// Memory timeline, suggestion, entity, observe, LCM operations\n// ===========================================================================\n\ndefineOperation({\n name: \"memory_timeline\",\n description: \"Get the timeline for a memory.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryTimeline(\n optStr(input.memoryId) ?? \"\",\n optStr(input.namespace),\n optNum(input.limit),\n ctx.authenticatedPrincipal,\n );\n return { result };\n },\n});\n\ndefineOperation({\n name: \"suggestion_submit\",\n description: \"Submit a memory suggestion.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.suggestionSubmit({\n schemaVersion: optNum(input.schemaVersion),\n idempotencyKey: optStr(input.idempotencyKey),\n dryRun: input.dryRun === true,\n sessionKey: optStr(input.sessionKey),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n content: optStr(input.content) ?? \"\",\n category: optStr(input.category),\n confidence: optNum(input.confidence),\n namespace: optStr(input.namespace),\n tags: optStrArr(input.tags),\n entityRef: optStr(input.entityRef),\n ttl: optStr(input.ttl),\n sourceReason: optStr(input.sourceReason),\n cwd: optStr(input.cwd),\n projectTag: optStr(input.projectTag),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"entity_get\",\n description: \"Get an entity by name.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.entityGet(optStr(input.name) ?? \"\", optStr(input.namespace));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"review_queue_list\",\n description: \"List the review queue.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.reviewQueue(optStr(input.runId) ?? \"\", optStr(input.namespace), ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"observe\",\n description: \"Observe messages into the memory system.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const messages = input.messages;\n if (!Array.isArray(messages)) throw new EngramAccessInputError(\"observe: messages must be an array\");\n const result = await ctx.service.observe({\n sessionKey: defStr(input.sessionKey, \"\"),\n messages: messages as unknown as Parameters<typeof ctx.service.observe>[0][\"messages\"],\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n namespace: optStr(input.namespace),\n skipExtraction: input.skipExtraction === true,\n cwd: optStr(input.cwd),\n projectTag: optStr(input.projectTag),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"lcm_search\",\n description: \"Search the LCM (long-context memory).\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.lcmSearch({\n query: defStr(input.query, \"\"),\n sessionKey: optStr(input.sessionKey),\n sessionPrefix: optStr(input.sessionPrefix),\n namespace: optStr(input.namespace),\n limit: optNum(input.limit),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"lcm_compaction_flush\",\n description: \"Flush LCM compaction.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.lcmCompactionFlush({\n sessionKey: optStr(input.sessionKey) ?? \"\",\n namespace: optStr(input.namespace),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"lcm_compaction_record\",\n description: \"Record an LCM compaction.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.lcmCompactionRecord({\n sessionKey: optStr(input.sessionKey) ?? \"\",\n namespace: optStr(input.namespace),\n tokensBefore: optNum(input.tokensBefore) ?? 0,\n tokensAfter: optNum(input.tokensAfter) ?? 0,\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// Continuity, identity operations\n// ===========================================================================\n\ndefineOperation({\n name: \"continuity_audit_generate\",\n description: \"Generate a continuity audit.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.continuityAuditGenerate({\n period: optStr(input.period) as \"weekly\" | \"monthly\" | undefined,\n key: optStr(input.key),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"continuity_incident_open\",\n description: \"Open a continuity incident.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.continuityIncidentOpen({\n symptom: optStr(input.symptom) ?? \"\",\n namespace: optStr(input.namespace),\n triggerWindow: optStr(input.triggerWindow),\n suspectedCause: optStr(input.suspectedCause),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"continuity_incident_close\",\n description: \"Close a continuity incident.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.continuityIncidentClose({\n id: optStr(input.id) ?? \"\",\n namespace: optStr(input.namespace),\n fixApplied: optStr(input.fixApplied) ?? \"\",\n verificationResult: optStr(input.verificationResult) ?? \"\",\n preventiveRule: optStr(input.preventiveRule),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"continuity_incident_list\",\n description: \"List continuity incidents.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.continuityIncidentList({\n state: optStr(input.state) as \"all\" | \"open\" | \"closed\" | undefined,\n namespace: optStr(input.namespace),\n limit: optNum(input.limit),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"continuity_loop_add_or_update\",\n description: \"Add or update a continuity loop.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.continuityLoopAddOrUpdate({\n id: optStr(input.id) ?? \"\",\n cadence: optStr(input.cadence) as \"daily\" | \"weekly\" | \"monthly\" | \"quarterly\",\n purpose: optStr(input.purpose) ?? \"\",\n status: optStr(input.status) as \"active\" | \"paused\" | \"retired\",\n killCondition: optStr(input.killCondition) ?? \"\",\n namespace: optStr(input.namespace),\n lastReviewed: optStr(input.lastReviewed),\n notes: optStr(input.notes),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"continuity_loop_review\",\n description: \"Review a continuity loop.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.continuityLoopReview({\n id: optStr(input.id) ?? \"\",\n namespace: optStr(input.namespace),\n status: optStr(input.status) as \"active\" | \"paused\" | \"retired\" | undefined,\n notes: optStr(input.notes),\n reviewedAt: optStr(input.reviewedAt),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"identity_anchor_get\",\n description: \"Get identity anchor.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.identityAnchorGet({ namespace: optStr(input.namespace), principal: ctx.authenticatedPrincipal });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"identity_anchor_update\",\n description: \"Update identity anchor.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.identityAnchorUpdate({\n namespace: optStr(input.namespace),\n identityTraits: optStr(input.identityTraits) ?? \"\",\n communicationPreferences: optStr(input.communicationPreferences) ?? \"\",\n operatingPrinciples: optStr(input.operatingPrinciples) ?? \"\",\n continuityNotes: optStr(input.continuityNotes) ?? \"\",\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_identity\",\n description: \"Get memory identity.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryIdentity({ namespace: optStr(input.namespace), principal: ctx.authenticatedPrincipal });\n return { result };\n },\n});\n\n// ===========================================================================\n// Work, shared-context, compounding, compression operations\n// ===========================================================================\n\ndefineOperation({\n name: \"work_task\",\n description: \"Manage a work task.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.workTask({\n action: optStr(input.action) as \"update\" | \"list\" | \"get\" | \"create\" | \"delete\" | \"transition\",\n id: optStr(input.id) ?? \"\",\n title: optStr(input.title),\n description: optStr(input.description),\n status: optStr(input.status),\n priority: optStr(input.priority),\n owner: optStr(input.owner),\n assignee: optStr(input.assignee),\n projectId: optStr(input.projectId),\n tags: optStrArr(input.tags),\n dueAt: optStr(input.dueAt),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"work_project\",\n description: \"Manage a work project.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.workProject({\n action: optStr(input.action) as \"update\" | \"list\" | \"get\" | \"create\" | \"delete\" | \"link_task\",\n id: optStr(input.id) ?? \"\",\n name: optStr(input.name),\n description: optStr(input.description),\n status: optStr(input.status),\n owner: optStr(input.owner),\n tags: optStrArr(input.tags),\n taskId: optStr(input.taskId),\n projectId: optStr(input.projectId),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"work_board\",\n description: \"Manage a work board.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.workBoard({\n action: optStr(input.action) as \"export_markdown\" | \"export_snapshot\" | \"import_snapshot\",\n projectId: optStr(input.projectId) ?? \"\",\n snapshotJson: optStr(input.snapshotJson) ?? \"\",\n linkToMemory: input.linkToMemory === true,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"shared_context_write_output\",\n description: \"Write shared context output.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.sharedContextWriteOutput({\n agentId: optStr(input.agentId) ?? \"\",\n title: optStr(input.title) ?? \"\",\n content: optStr(input.content) ?? \"\",\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"shared_feedback_record\",\n description: \"Record shared feedback.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.sharedFeedbackRecord({\n agent: optStr(input.agent) ?? \"\",\n decision: optStr(input.decision) as \"rejected\" | \"approved\" | \"approved_with_feedback\",\n reason: optStr(input.reason) ?? \"\",\n date: optStr(input.date) ?? \"\",\n learning: optStr(input.learning) ?? \"\",\n outcome: optStr(input.outcome) ?? \"\",\n severity: optStr(input.severity) as \"high\" | \"low\" | \"medium\" | undefined,\n confidence: optNum(input.confidence),\n workflow: optStr(input.workflow),\n tags: optStrArr(input.tags),\n evidenceWindowStart: optStr(input.evidenceWindowStart),\n evidenceWindowEnd: optStr(input.evidenceWindowEnd),\n refs: optStrArr(input.refs),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"shared_priorities_append\",\n description: \"Append to shared priorities.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.sharedPrioritiesAppend({\n agentId: optStr(input.agentId) ?? \"\",\n text: optStr(input.text) ?? \"\",\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"shared_context_cross_signals_run\",\n description: \"Run shared context cross signals.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.sharedContextCrossSignalsRun({ date: optStr(input.date) });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"shared_context_curate_daily\",\n description: \"Curate daily shared context.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.sharedContextCurateDaily({ date: optStr(input.date) });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"compounding_weekly_synthesize\",\n description: \"Weekly compound synthesis.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.compoundingWeeklySynthesize({ weekId: optStr(input.weekId) });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"compounding_promote_candidate\",\n description: \"Promote a compounding candidate.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.compoundingPromoteCandidate({\n weekId: optStr(input.weekId) ?? \"\",\n candidateId: optStr(input.candidateId) ?? \"\",\n dryRun: input.dryRun === true,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"compression_guidelines_optimize\",\n description: \"Optimize compression guidelines.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.compressionGuidelinesOptimize({\n dryRun: input.dryRun === true,\n eventLimit: optNum(input.eventLimit),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"compression_guidelines_activate\",\n description: \"Activate compression guidelines.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.compressionGuidelinesActivate({\n expectedContentHash: optStr(input.expectedContentHash) ?? \"\",\n expectedGuidelineVersion: optNum(input.expectedGuidelineVersion),\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// Memory read/debug, graph, feedback, promote, outcome operations\n// ===========================================================================\n\ndefineOperation({\n name: \"memory_profile\",\n description: \"Get the memory profile.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryProfile(optStr(input.namespace), ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_entities_list\",\n description: \"List memory entities.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryEntitiesList(optStr(input.namespace), ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_questions\",\n description: \"List memory questions.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryQuestions(optStr(input.namespace), ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_last_recall\",\n description: \"Get last recall snapshot.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.lastRecallSnapshot(optStr(input.sessionKey));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_intent_debug\",\n description: \"Debug memory intent.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.intentDebug(optStr(input.namespace));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_qmd_debug\",\n description: \"Debug QMD.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.qmdDebug(optStr(input.namespace));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_graph_explain\",\n description: \"Explain the memory graph.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.graphExplainLastRecall(optStr(input.namespace));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"graph_snapshot\",\n description: \"Get a graph snapshot.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.graphSnapshot({\n namespace: optStr(input.namespace),\n limit: optNum(input.limit),\n since: optStr(input.since),\n focusNodeId: optStr(input.focusNodeId),\n categories: optStrArr(input.categories),\n }, ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_feedback\",\n description: \"Record memory feedback.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryFeedback({\n memoryId: optStr(input.memoryId) ?? \"\",\n vote: optStr(input.vote) as \"up\" | \"down\",\n note: optStr(input.note),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_promote\",\n description: \"Promote a memory.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryPromote({\n memoryId: optStr(input.memoryId) ?? \"\",\n namespace: optStr(input.namespace),\n sessionKey: optStr(input.sessionKey),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_outcome\",\n description: \"Record a memory outcome.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryOutcome({\n memoryId: optStr(input.memoryId) ?? \"\",\n outcome: optStr(input.outcome) as \"success\" | \"failure\",\n namespace: optStr(input.namespace),\n sessionKey: optStr(input.sessionKey),\n timestamp: optStr(input.timestamp),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"memory_action_apply\",\n description: \"Apply a memory action.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.memoryActionApply({\n action: optStr(input.action) ?? \"\",\n outcome: optStr(input.outcome),\n reason: optStr(input.reason),\n memoryId: optStr(input.memoryId) ?? \"\",\n namespace: optStr(input.namespace),\n sessionKey: optStr(input.sessionKey),\n content: optStr(input.content),\n category: optStr(input.category),\n linkTargetId: optStr(input.linkTargetId),\n linkType: optStr(input.linkType),\n linkStrength: optNum(input.linkStrength),\n artifactType: optStr(input.artifactType),\n execute: input.execute === true,\n sourcePrompt: optStr(input.sourcePrompt),\n dryRun: input.dryRun === true,\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"context_checkpoint\",\n description: \"Create a context checkpoint.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.contextCheckpoint({\n sessionKey: optStr(input.sessionKey) ?? \"\",\n context: optStr(input.context) ?? \"\",\n namespace: optStr(input.namespace),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"briefing\",\n description: \"Get a daily context briefing.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.briefing({\n since: optStr(input.since),\n focus: optStr(input.focus),\n namespace: optStr(input.namespace),\n format: optStr(input.format) as \"json\" | \"markdown\" | undefined,\n maxFollowups: optNum(input.maxFollowups),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// Contradiction review, scan, graph-edge-decay (dynamic-import handlers)\n// ===========================================================================\n\ndefineOperation({\n name: \"review_list\",\n description: \"List contradiction review pairs.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const { isDefaultReviewNamespace, listPairs } = await import(\"./contradiction/contradiction-review.js\");\n const VALID_FILTERS = new Set([\"all\", \"unresolved\", \"contradicts\", \"independent\", \"duplicates\", \"needs-user\"]);\n const rawFilter = optStr(input.filter) ?? \"unresolved\";\n if (!VALID_FILTERS.has(rawFilter)) {\n throw new EngramAccessInputError(\"Invalid filter '\" + rawFilter + \"'. Valid: \" + [...VALID_FILTERS].join(\", \"));\n }\n const filter = rawFilter as \"all\" | \"unresolved\" | \"contradicts\" | \"independent\" | \"duplicates\" | \"needs-user\";\n const ns = optStr(input.namespace);\n const limit = optNum(input.limit) ?? 50;\n const resolved = await ctx.service.getReadableStorageForNamespace(ns, ctx.authenticatedPrincipal);\n const reviewNamespace = ctx.service.configRef.namespacesEnabled ? resolved.namespace : undefined;\n const includeUnscopedForNamespace = Boolean(\n reviewNamespace && isDefaultReviewNamespace(ctx.service.configRef.defaultNamespace, ns, reviewNamespace),\n );\n const result = await listPairs(ctx.service.memoryDir, { filter, namespace: reviewNamespace, includeUnscopedForNamespace, limit });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"review_resolve\",\n description: \"Resolve a contradiction pair.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const pairId = defStr(input.pairId, \"\");\n const verb = defStr(input.verb, \"\");\n if (!pairId) throw new EngramAccessInputError(\"pairId is required\");\n if (!verb) throw new EngramAccessInputError(\"verb is required\");\n const { isValidResolutionVerb, executeResolution } = await import(\"./contradiction/resolution.js\");\n if (!isValidResolutionVerb(verb)) throw new EngramAccessInputError(\"Invalid verb: \" + verb + \". Must be one of: keep-a, keep-b, merge, both-valid, needs-more-context\");\n const result = await executeResolution(ctx.service.memoryDir, ctx.service.storageRef, pairId, verb, {\n mergedMemoryId: optStr(input.mergedMemoryId),\n mergedContent: optStr(input.mergedContent),\n storageForNamespace: async (namespace: string | undefined) => {\n const r = await ctx.service.getWritableStorageForNamespace(namespace, ctx.authenticatedPrincipal);\n return r.storage;\n },\n onMergedMemoryWritten: () => { /* #1522: catalog touch at storage chokepoint */ },\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"contradiction_scan_run\",\n description: \"Run a contradiction scan.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const { runContradictionScan } = await import(\"./contradiction/contradiction-scan.js\");\n const result = await runContradictionScan({\n storage: ctx.service.storageRef,\n config: ctx.service.configRef,\n memoryDir: ctx.service.memoryDir,\n embeddingLookupFactory: ctx.service.embeddingLookupFactoryRef,\n storageForNamespace: (namespace: string | undefined) =>\n ctx.service.getWritableStorageForNamespace(namespace ?? undefined, ctx.authenticatedPrincipal),\n localLlm: ctx.service.localLlmRef,\n fallbackLlm: ctx.service.fallbackLlmRef,\n namespace: optStr(input.namespace),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"graph_edge_decay_run\",\n description: \"Run graph edge decay maintenance.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const cfg = ctx.service.configRef;\n if (!cfg.graphEdgeDecayEnabled) {\n return { result: { ranAt: new Date().toISOString(), disabled: true, reason: \"graphEdgeDecayEnabled is false\" } };\n }\n const { runGraphEdgeDecayMaintenanceAcrossNamespaces } = await import(\"./maintenance/graph-edge-decay.js\");\n const dryRun = input.dryRun === true;\n const results = await runGraphEdgeDecayMaintenanceAcrossNamespaces(ctx.service.memoryDir, {\n windowMs: cfg.graphEdgeDecayWindowMs,\n perWindow: cfg.graphEdgeDecayPerWindow,\n floor: cfg.graphEdgeDecayFloor,\n visibilityThreshold: cfg.graphEdgeDecayVisibilityThreshold,\n dryRun,\n namespacesEnabled: cfg.namespacesEnabled === true,\n defaultNamespace: cfg.defaultNamespace,\n });\n return { result: { results } };\n },\n});\n\n// ===========================================================================\n// Remaining operations: summarize, profiling, connectors, peers, console, dreams\n// ===========================================================================\n\ndefineOperation({\n name: \"memory_summarize_hourly\",\n description: \"Run hourly memory summarization.\",\n schema: looseSchema,\n handler: async (_input, ctx) => ({ result: await ctx.service.memorySummarizeHourly() }),\n});\n\ndefineOperation({\n name: \"conversation_index_update\",\n description: \"Update the conversation index.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.conversationIndexUpdate({\n sessionKey: optStr(input.sessionKey),\n hours: optNum(input.hours),\n embed: optBool(input.embed),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"profiling_report\",\n description: \"Get a profiling report.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.profilingReport({\n format: optStr(input.format),\n limit: optNum(input.limit),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"live_connectors_run\",\n description: \"Run live connectors.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.liveConnectorsRun(\n { authenticatedPrincipal: ctx.authenticatedPrincipal, force: input.force === true },\n ctx.authenticatedPrincipal,\n );\n return { result };\n },\n});\n\ndefineOperation({\n name: \"peer_list\",\n description: \"List peers.\",\n schema: looseSchema,\n handler: async (_input, ctx) => ({ result: await ctx.service.peerList() }),\n});\n\ndefineOperation({\n name: \"peer_get\",\n description: \"Get a peer.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.peerGet(defStr(input.id, \"\"));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"peer_set\",\n description: \"Create or update a peer.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.peerSet({\n id: optStr(input.id) ?? \"\",\n kind: optStr(input.kind),\n displayName: optStr(input.displayName),\n notes: optStr(input.notes),\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"peer_delete\",\n description: \"Delete a peer.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.peerDelete(defStr(input.id, \"\"));\n return { result };\n },\n});\n\ndefineOperation({\n name: \"peer_profile_get\",\n description: \"Get a peer profile.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.peerProfileGet(optStr(input.id) ?? \"\");\n return { result };\n },\n});\n\ndefineOperation({\n name: \"peer_forget\",\n description: \"Forget a peer.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.peerForget(optStr(input.id) ?? \"\", { confirm: input.confirm === true || optStr(input.confirm) === \"yes\" ? \"yes\" : \"\" });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"console_state\",\n description: \"Get console state.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.consoleState(optStr(input.namespace), ctx.authenticatedPrincipal);\n return { result };\n },\n});\n\ndefineOperation({\n name: \"dreams_status\",\n description: \"Get dreams status.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.dreamsStatus({\n windowHours: optNum(input.windowHours),\n namespace: optStr(input.namespace),\n principal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\ndefineOperation({\n name: \"dreams_run\",\n description: \"Run dreams.\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const result = await ctx.service.dreamsRun({\n phase: optStr(input.phase) as import(\"./types.js\").DreamsPhase,\n dryRun: input.dryRun === true,\n namespace: optStr(input.namespace),\n authenticatedPrincipal: ctx.authenticatedPrincipal,\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// HTTP-only operations (routes with no direct MCP tool equivalent)\n// ===========================================================================\n\ndefineOperation({\n name: \"offline_sync_snapshot\",\n description: \"Get or create an offline-sync snapshot.\",\n schema: looseSchema,\n handler: async (_input, ctx) => {\n const result = await ctx.service.offlineSyncSnapshot();\n return { result };\n },\n});\n\ndefineOperation({\n name: \"offline_sync_files\",\n description: \"List offline-sync files.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.offlineSyncFiles({ paths: optStrArr(input.paths) ?? [], namespace: optStr(input.namespace), principal: ctx.authenticatedPrincipal }) }),\n});\n\ndefineOperation({\n name: \"offline_sync_file_content\",\n description: \"Read offline-sync file content.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.offlineSyncFileContent({ path: optStr(input.path) ?? \"\", namespace: optStr(input.namespace), principal: ctx.authenticatedPrincipal, offset: optNum(input.offset), length: optNum(input.length) }) }),\n});\n\ndefineOperation({\n name: \"offline_sync_apply_file_content\",\n description: \"Apply offline-sync file content.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.offlineSyncApplyFileContent({ sourceId: optStr(input.sourceId) ?? \"\", path: optStr(input.path) ?? \"\", sha256: optStr(input.sha256) ?? \"\", bytes: optNum(input.bytes) ?? 0, mtimeMs: optNum(input.mtimeMs) ?? 0, offset: optNum(input.offset), baseSha256: optStr(input.baseSha256), content: Buffer.from(defStr(input.content, \"\"), \"base64\"), namespace: optStr(input.namespace), principal: ctx.authenticatedPrincipal }) }),\n});\n\ndefineOperation({\n name: \"offline_sync_apply\",\n description: \"Apply an offline-sync snapshot.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.offlineSyncApply({ changeset: input.changeset, namespace: optStr(input.namespace), principal: ctx.authenticatedPrincipal }) }),\n});\n\ndefineOperation({\n name: \"lcm_status\",\n description: \"Get LCM status.\",\n schema: looseSchema,\n handler: async (_input, ctx) => ({ result: await ctx.service.lcmStatus() }),\n});\n\ndefineOperation({\n name: \"memory_list\",\n description: \"Browse/list memories (HTTP GET /memories).\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.memoryBrowse() }),\n});\n\ndefineOperation({\n name: \"entity_list\",\n description: \"List entities (HTTP GET /entities).\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.entityList() }),\n});\n\ndefineOperation({\n name: \"maintenance_status\",\n description: \"Get maintenance status (HTTP GET /maintenance).\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.maintenance() }),\n});\n\ndefineOperation({\n name: \"quality_status\",\n description: \"Get quality status (HTTP GET /quality).\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.quality() }),\n});\n\ndefineOperation({\n name: \"trust_zones_status\",\n description: \"Get trust-zone status.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.trustZoneStatus() }),\n});\n\ndefineOperation({\n name: \"trust_zones_records\",\n description: \"Browse trust-zone records.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.trustZoneBrowse({ namespace: optStr(input.namespace), limit: optNum(input.limit), offset: optNum(input.offset) }, ctx.authenticatedPrincipal) }),\n});\n\ndefineOperation({\n name: \"review_disposition\",\n description: \"Apply a review disposition.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.reviewDisposition({ memoryId: optStr(input.memoryId) ?? \"\", status: (optStr(input.status) ?? \"archived\") as import(\"./access-service.js\").EngramAccessReviewDispositionRequest[\"status\"], reasonCode: optStr(input.reasonCode) ?? \"\", namespace: optStr(input.namespace), authenticatedPrincipal: ctx.authenticatedPrincipal }) }),\n});\n\ndefineOperation({\n name: \"trust_zones_promote\",\n description: \"Promote a trust-zone record.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.trustZonePromote({ recordId: optStr(input.recordId) ?? \"\", targetZone: (optStr(input.targetZone) ?? \"working\") as import(\"./trust-zones.js\").TrustZoneName, promotionReason: optStr(input.promotionReason) ?? \"\", dryRun: input.dryRun === true, namespace: optStr(input.namespace), authenticatedPrincipal: ctx.authenticatedPrincipal }) }),\n});\n\ndefineOperation({\n name: \"trust_zones_demo_seed\",\n description: \"Seed demo trust-zone records.\",\n schema: looseSchema,\n handler: async (input, ctx) => ({ result: await ctx.service.trustZoneDemoSeed({ scenario: optStr(input.scenario), dryRun: input.dryRun === true, namespace: optStr(input.namespace), authenticatedPrincipal: ctx.authenticatedPrincipal }) }),\n});\n\ndefineOperation({\n name: \"citations_observed\",\n description: \"Record observed citations (HTTP POST /v1/citations/observed).\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n // The HTTP handler has complex citation-entry parsing; this operation\n // owns the shape validation boundary. The handler forwards the cleaned\n // input so the transport-specific entry parsing stays in the surface.\n return { result: { ok: true } };\n },\n});\n\ndefineOperation({\n name: \"contradiction_detail\",\n description: \"Get a single contradiction pair detail (HTTP GET /review/contradictions/:id).\",\n schema: looseSchema,\n handler: async (input, ctx) => {\n const { listPairs } = await import(\"./contradiction/contradiction-review.js\");\n const result = await listPairs(ctx.service.memoryDir, {\n filter: \"all\" as const,\n namespace: optStr(input.namespace),\n includeUnscopedForNamespace: false,\n limit: 1,\n });\n return { result };\n },\n});\n\n// ===========================================================================\n// SSE-stream operations (endpoint registration; streaming handled by transport)\n// ===========================================================================\n\ndefineOperation({\n name: \"offline_sync_snapshot_stream\",\n description: \"Stream offline-sync snapshot updates (SSE).\",\n schema: looseSchema,\n handler: async (_input, ctx) => ({ result: await ctx.service.offlineSyncSnapshotStream() }),\n});\n\ndefineOperation({\n name: \"graph_events\",\n description: \"Stream graph mutation events (SSE). Endpoint registration only.\",\n schema: looseSchema,\n handler: async (_input, _ctx) => ({ result: { stream: \"sse\" } }),\n});\n"],"mappings":";;;;;;;;;;;;;;AAWA,SAAS,SAAS;AAYlB,SAAS,WAAW,MAAwB;AAC1C,MAAI,SAAS,QAAQ,OAAO,SAAS,YAAY,CAAC,MAAM,QAAQ,IAAI,GAAG;AACrE,UAAM,MAAM;AACZ,UAAM,UAAmC,CAAC;AAC1C,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,GAAG,GAAG;AAC9C,UAAI,UAAU,KAAM,SAAQ,GAAG,IAAI;AAAA,IACrC;AACA,WAAO;AAAA,EACT;AACA,SAAO;AACT;AAGA,IAAM,cAAc,EAAE;AAAA,EACpB;AAAA,EACA,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC;AAClC;AAEA,SAAS,OAAO,GAAgC;AAC9C,SAAO,OAAO,MAAM,WAAW,IAAI;AACrC;AAOA,SAAS,OAAO,GAAY,GAAmB;AAC7C,SAAO,OAAO,MAAM,WAAW,IAAI;AACrC;AACA,SAAS,OAAO,GAAgC;AAC9C,SAAO,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,IAAI,IAAI;AAC3D;AACA,SAAS,QAAQ,GAAiC;AAChD,SAAO,OAAO,MAAM,YAAY,IAAI;AACtC;AACA,SAAS,UAAU,GAAkC;AACnD,SAAO,MAAM,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,OAAO,MAAM,QAAQ,IAAI,IAAI;AACzE;AAKA,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,OAAO;AAAA,MACtC,OAAO,OAAO,MAAM,OAAO,EAAE;AAAA,MAC7B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,wBAAwB,IAAI;AAAA,MAC5B,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,cAAc,MAAM,iBAAiB;AAAA,MACrC,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,KAAK,OAAO,MAAM,GAAG;AAAA,MACrB,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,GAAI,UAAU,MAAM,IAAI,MAAM,SAAY,EAAE,MAAM,UAAU,MAAM,IAAI,EAAG,IAAI,CAAC;AAAA,MAC9E,GAAI,OAAO,MAAM,QAAQ,MAAM,SAAY,EAAE,UAAU,OAAO,MAAM,QAAQ,EAAmB,IAAI,CAAC;AAAA,IACtG,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,aAAa,OAAO,MAAM,YAAY,EAAE;AAC9C,UAAM,aAAa,OAAO,MAAM,UAAU;AAC1C,UAAM,gBAAgB,eAAe,UAAa,WAAW,KAAK,EAAE,SAAS;AAC7E,UAAM,mBAAmB,mBAAmB;AAC5C,QAAI,CAAC,oBAAoB,eAAe;AACtC,YAAM,MAAM,WAAY,KAAK;AAC7B,YAAM,YAAY,oBAAoB,GAAG;AACzC,UAAI,QAAQ,iBAAiB;AAAA,QAC3B;AAAA,QACA,eAAe,EAAE,WAAW,QAAQ,MAAM,UAAU,WAAW,eAAe,KAAK;AAAA,MACrF,CAAC;AACD,aAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE;AAAA,IAChC;AACA,QAAI,CAAC,oBAAoB,CAAC,eAAe;AACvC,YAAM,IAAI,uBAAuB,gEAAgE;AAAA,IACnG;AACA,UAAM,SAAS,MAAM;AACrB,QAAI,gBAAqH;AACzH,QAAI,WAAW,MAAM;AACnB,UAAI,OAAO,WAAW,YAAY,WAAW,QAAW;AACtD,cAAM,IAAI,uBAAuB,yCAAyC;AAAA,MAC5E;AACA,YAAM,MAAM;AACZ,YAAM,YAAY,OAAO,IAAI,WAAW,EAAE;AAC1C,YAAM,WAAW,OAAO,IAAI,UAAU,EAAE;AACxC,YAAM,SAAS,IAAI,WAAW,OAAO,OAAO,OAAO,IAAI,MAAM;AAC7D,YAAM,gBAAgB,IAAI,kBAAkB,OAAO,OAAO,OAAO,IAAI,aAAa;AAClF,UAAI,WAAW,OAAW,OAAM,IAAI,uBAAuB,+CAA+C;AAC1G,UAAI,kBAAkB,OAAW,OAAM,IAAI,uBAAuB,sDAAsD;AACxH,sBAAgB,EAAE,WAAW,QAAQ,UAAU,cAAc;AAAA,IAC/D;AACA,QAAI,QAAQ,iBAAiB,EAAE,YAAY,cAAc,CAAC;AAC1D,WAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE;AAAA,EAChC;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,aAAa,OAAO,MAAM,UAAU;AAC1C,UAAM,YAAY,OAAO,MAAM,SAAS;AACxC,UAAM,SAAS,MAAM,IAAI,QAAQ;AAAA,MAC/B,eAAe,UAAa,WAAW,SAAS,IAAI,aAAa;AAAA,MACjE,cAAc,UAAa,UAAU,SAAS,IAAI,YAAY;AAAA,MAC9D,IAAI;AAAA,IACN;AACA,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,YAAY,MAAM;AACxB,QAAI;AACJ,QAAI,cAAc,UAAa,cAAc,MAAM;AACjD,YAAM,SAAS,OAAO,cAAc,WAAW,YAAY,OAAO,cAAc,WAAW,OAAO,SAAS,IAAI;AAC/G,UAAI,WAAW,UAAa,CAAC,OAAO,SAAS,MAAM,KAAK,UAAU,KAAK,CAAC,OAAO,UAAU,MAAM,GAAG;AAChG,cAAM,IAAI,uBAAuB,gDAAgD;AAAA,MACnF;AACA,eAAS;AAAA,IACX;AACA,UAAM,gBAAgB,OAAO,MAAM,UAAU;AAC7C,UAAM,SAAS,MAAM,IAAI,QAAQ,WAAW;AAAA,MAC1C,OAAO,OAAO,MAAM,OAAO,EAAE;AAAA,MAC7B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC;AAAA,MACA,wBAAwB,IAAI;AAAA,MAC5B,GAAI,kBAAkB,UAAa,kBAAkB,KAAK,EAAE,YAAY,cAAkC,IAAI,CAAC;AAAA,IACjH,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,gBAAgB,EAAE;AACjF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,eAAe,QAAQ,MAAM,aAAa;AAAA,IAC5C,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,OAAO,OAAO,MAAM,MAAM,EAAE;AAClC,QAAI,KAAK,KAAK,EAAE,WAAW,EAAG,OAAM,IAAI,uBAAuB,yDAAyD;AACxH,UAAM,SAAS,MAAM,IAAI,QAAQ,uBAAuB,EAAE,MAAM,QAAQ,OAAO,MAAM,MAAM,EAAE,CAAC;AAC9F,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,QAAQ,OAAO,MAAM,OAAO,EAAE;AACpC,QAAI,MAAM,KAAK,EAAE,WAAW,EAAG,OAAM,IAAI,uBAAuB,4DAA4D;AAC5H,UAAM,SAAS,MAAM,IAAI,QAAQ,0BAA0B;AAAA,MACzD;AAAA,MACA,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,IAAI,OAAO,MAAM,EAAE;AAAA,MACnB,OAAO,OAAO,MAAM,KAAK;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,4BAA4B;AAAA,MAC3D,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,OAAO,OAAO,MAAM,KAAK;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,iBAAiB;AAAA,MAChD,gBAAgB,OAAO,MAAM,cAAc;AAAA,MAC3C,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,kBAAkB,OAAO,MAAM,gBAAgB;AAAA,MAC/C,sBAAsB,UAAU,MAAM,oBAAoB;AAAA,IAC5D,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,OAAO,MAAM,IAAI,QAAQ,WAAW;AAAA,MACxC,OAAO,OAAO,MAAM,OAAO,EAAE;AAAA,MAC7B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,UAAM,aAAa,MAAM,IAAI,QAAQ,iBAAiB,CAAC,CAAC;AACxD,WAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,EAAE;AAAA,EACxC;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,WAAW;AAAA,MAC1C,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,UAAU,OAAO,MAAM,QAAQ;AAAA,IACjC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,MAC5B,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,cAAc,UAAU,MAAM,YAAY;AAAA,MAC1C,SAAS,UAAU,MAAM,OAAO;AAAA,MAChC,oBAAoB,QAAQ,MAAM,kBAAkB;AAAA,MACpD,SAAS,QAAQ,MAAM,OAAO;AAAA,MAC9B,WAAW,IAAI;AAAA,IACjB,CAAoD;AACpD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,aAAa,gBAAgB,OAAO,MAAM,WAAW,KAAK,EAAE;AAAA,MAC5D,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,YAAY;AAAA,MAC3C,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,aAAa,OAAO,MAAM,WAAW;AAAA,MACrC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,mBAAmB;AAAA,MAClD,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,wBAAwB;AAAA,MACvD,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,OAAO,MAAM,UAAU;AAAA,MACvB,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,eAAe,EAAE,WAAW,OAAO,MAAM,SAAS,EAAE,GAAG,IAAI,sBAAsB;AAClH,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ;AAAA,MAC/B,OAAO,MAAM,QAAQ,KAAK;AAAA,MAC1B,OAAO,MAAM,SAAS;AAAA,MACtB,OAAO,MAAM,KAAK;AAAA,MAClB,IAAI;AAAA,IACN;AACA,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,iBAAiB;AAAA,MAChD,eAAe,OAAO,MAAM,aAAa;AAAA,MACzC,gBAAgB,OAAO,MAAM,cAAc;AAAA,MAC3C,QAAQ,MAAM,WAAW;AAAA,MACzB,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,wBAAwB,IAAI;AAAA,MAC5B,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,MAAM,UAAU,MAAM,IAAI;AAAA,MAC1B,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,KAAK,OAAO,MAAM,GAAG;AAAA,MACrB,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,KAAK,OAAO,MAAM,GAAG;AAAA,MACrB,YAAY,OAAO,MAAM,UAAU;AAAA,IACrC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,UAAU,OAAO,MAAM,IAAI,KAAK,IAAI,OAAO,MAAM,SAAS,CAAC;AAC5F,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,YAAY,OAAO,MAAM,KAAK,KAAK,IAAI,OAAO,MAAM,SAAS,GAAG,IAAI,sBAAsB;AAC3H,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,WAAW,MAAM;AACvB,QAAI,CAAC,MAAM,QAAQ,QAAQ,EAAG,OAAM,IAAI,uBAAuB,oCAAoC;AACnG,UAAM,SAAS,MAAM,IAAI,QAAQ,QAAQ;AAAA,MACvC,YAAY,OAAO,MAAM,YAAY,EAAE;AAAA,MACvC;AAAA,MACA,wBAAwB,IAAI;AAAA,MAC5B,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,gBAAgB,MAAM,mBAAmB;AAAA,MACzC,KAAK,OAAO,MAAM,GAAG;AAAA,MACrB,YAAY,OAAO,MAAM,UAAU;AAAA,IACrC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,UAAU;AAAA,MACzC,OAAO,OAAO,MAAM,OAAO,EAAE;AAAA,MAC7B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,eAAe,OAAO,MAAM,aAAa;AAAA,MACzC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,mBAAmB;AAAA,MAClD,YAAY,OAAO,MAAM,UAAU,KAAK;AAAA,MACxC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,oBAAoB;AAAA,MACnD,YAAY,OAAO,MAAM,UAAU,KAAK;AAAA,MACxC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,cAAc,OAAO,MAAM,YAAY,KAAK;AAAA,MAC5C,aAAa,OAAO,MAAM,WAAW,KAAK;AAAA,MAC1C,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,wBAAwB;AAAA,MACvD,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,KAAK,OAAO,MAAM,GAAG;AAAA,IACvB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,uBAAuB;AAAA,MACtD,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,eAAe,OAAO,MAAM,aAAa;AAAA,MACzC,gBAAgB,OAAO,MAAM,cAAc;AAAA,MAC3C,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,wBAAwB;AAAA,MACvD,IAAI,OAAO,MAAM,EAAE,KAAK;AAAA,MACxB,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,YAAY,OAAO,MAAM,UAAU,KAAK;AAAA,MACxC,oBAAoB,OAAO,MAAM,kBAAkB,KAAK;AAAA,MACxD,gBAAgB,OAAO,MAAM,cAAc;AAAA,MAC3C,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,uBAAuB;AAAA,MACtD,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,0BAA0B;AAAA,MACzD,IAAI,OAAO,MAAM,EAAE,KAAK;AAAA,MACxB,SAAS,OAAO,MAAM,OAAO;AAAA,MAC7B,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,eAAe,OAAO,MAAM,aAAa,KAAK;AAAA,MAC9C,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,qBAAqB;AAAA,MACpD,IAAI,OAAO,MAAM,EAAE,KAAK;AAAA,MACxB,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,kBAAkB,EAAE,WAAW,OAAO,MAAM,SAAS,GAAG,WAAW,IAAI,uBAAuB,CAAC;AAChI,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,qBAAqB;AAAA,MACpD,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,gBAAgB,OAAO,MAAM,cAAc,KAAK;AAAA,MAChD,0BAA0B,OAAO,MAAM,wBAAwB,KAAK;AAAA,MACpE,qBAAqB,OAAO,MAAM,mBAAmB,KAAK;AAAA,MAC1D,iBAAiB,OAAO,MAAM,eAAe,KAAK;AAAA,IACpD,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,eAAe,EAAE,WAAW,OAAO,MAAM,SAAS,GAAG,WAAW,IAAI,uBAAuB,CAAC;AAC7H,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,SAAS;AAAA,MACxC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,IAAI,OAAO,MAAM,EAAE,KAAK;AAAA,MACxB,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,aAAa,OAAO,MAAM,WAAW;AAAA,MACrC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,MAAM,UAAU,MAAM,IAAI;AAAA,MAC1B,OAAO,OAAO,MAAM,KAAK;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,YAAY;AAAA,MAC3C,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,IAAI,OAAO,MAAM,EAAE,KAAK;AAAA,MACxB,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,aAAa,OAAO,MAAM,WAAW;AAAA,MACrC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,MAAM,UAAU,MAAM,IAAI;AAAA,MAC1B,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,WAAW,OAAO,MAAM,SAAS;AAAA,IACnC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,UAAU;AAAA,MACzC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,WAAW,OAAO,MAAM,SAAS,KAAK;AAAA,MACtC,cAAc,OAAO,MAAM,YAAY,KAAK;AAAA,MAC5C,cAAc,MAAM,iBAAiB;AAAA,IACvC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,yBAAyB;AAAA,MACxD,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,OAAO,OAAO,MAAM,KAAK,KAAK;AAAA,MAC9B,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,IACpC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,qBAAqB;AAAA,MACpD,OAAO,OAAO,MAAM,KAAK,KAAK;AAAA,MAC9B,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,QAAQ,OAAO,MAAM,MAAM,KAAK;AAAA,MAChC,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,MAC5B,UAAU,OAAO,MAAM,QAAQ,KAAK;AAAA,MACpC,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,MAAM,UAAU,MAAM,IAAI;AAAA,MAC1B,qBAAqB,OAAO,MAAM,mBAAmB;AAAA,MACrD,mBAAmB,OAAO,MAAM,iBAAiB;AAAA,MACjD,MAAM,UAAU,MAAM,IAAI;AAAA,IAC5B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,uBAAuB;AAAA,MACtD,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,MAAM,OAAO,MAAM,IAAI,KAAK;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,6BAA6B,EAAE,MAAM,OAAO,MAAM,IAAI,EAAE,CAAC;AAC1F,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,yBAAyB,EAAE,MAAM,OAAO,MAAM,IAAI,EAAE,CAAC;AACtF,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,4BAA4B,EAAE,QAAQ,OAAO,MAAM,MAAM,EAAE,CAAC;AAC7F,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,4BAA4B;AAAA,MAC3D,QAAQ,OAAO,MAAM,MAAM,KAAK;AAAA,MAChC,aAAa,OAAO,MAAM,WAAW,KAAK;AAAA,MAC1C,QAAQ,MAAM,WAAW;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,8BAA8B;AAAA,MAC7D,QAAQ,MAAM,WAAW;AAAA,MACzB,YAAY,OAAO,MAAM,UAAU;AAAA,IACrC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,8BAA8B;AAAA,MAC7D,qBAAqB,OAAO,MAAM,mBAAmB,KAAK;AAAA,MAC1D,0BAA0B,OAAO,MAAM,wBAAwB;AAAA,IACjE,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc,OAAO,MAAM,SAAS,GAAG,IAAI,sBAAsB;AAClG,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,mBAAmB,OAAO,MAAM,SAAS,GAAG,IAAI,sBAAsB;AACvG,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,gBAAgB,OAAO,MAAM,SAAS,GAAG,IAAI,sBAAsB;AACpG,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,mBAAmB,OAAO,MAAM,UAAU,CAAC;AAC5E,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,YAAY,OAAO,MAAM,SAAS,CAAC;AACpE,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,SAAS,OAAO,MAAM,SAAS,CAAC;AACjE,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,uBAAuB,OAAO,MAAM,SAAS,CAAC;AAC/E,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,aAAa,OAAO,MAAM,WAAW;AAAA,MACrC,YAAY,UAAU,MAAM,UAAU;AAAA,IACxC,GAAG,IAAI,sBAAsB;AAC7B,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,eAAe;AAAA,MAC9C,UAAU,OAAO,MAAM,QAAQ,KAAK;AAAA,MACpC,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,MAAM,OAAO,MAAM,IAAI;AAAA,IACzB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,UAAU,OAAO,MAAM,QAAQ,KAAK;AAAA,MACpC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,cAAc;AAAA,MAC7C,UAAU,OAAO,MAAM,QAAQ,KAAK;AAAA,MACpC,SAAS,OAAO,MAAM,OAAO;AAAA,MAC7B,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,kBAAkB;AAAA,MACjD,QAAQ,OAAO,MAAM,MAAM,KAAK;AAAA,MAChC,SAAS,OAAO,MAAM,OAAO;AAAA,MAC7B,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,UAAU,OAAO,MAAM,QAAQ,KAAK;AAAA,MACpC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,SAAS,OAAO,MAAM,OAAO;AAAA,MAC7B,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,UAAU,OAAO,MAAM,QAAQ;AAAA,MAC/B,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,SAAS,MAAM,YAAY;AAAA,MAC3B,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,QAAQ,MAAM,WAAW;AAAA,MACzB,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,kBAAkB;AAAA,MACjD,YAAY,OAAO,MAAM,UAAU,KAAK;AAAA,MACxC,SAAS,OAAO,MAAM,OAAO,KAAK;AAAA,MAClC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,SAAS;AAAA,MACxC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,cAAc,OAAO,MAAM,YAAY;AAAA,MACvC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,EAAE,0BAA0B,UAAU,IAAI,MAAM,OAAO,oCAAyC;AACtG,UAAM,gBAAgB,oBAAI,IAAI,CAAC,OAAO,cAAc,eAAe,eAAe,cAAc,YAAY,CAAC;AAC7G,UAAM,YAAY,OAAO,MAAM,MAAM,KAAK;AAC1C,QAAI,CAAC,cAAc,IAAI,SAAS,GAAG;AACjC,YAAM,IAAI,uBAAuB,qBAAqB,YAAY,eAAe,CAAC,GAAG,aAAa,EAAE,KAAK,IAAI,CAAC;AAAA,IAChH;AACA,UAAM,SAAS;AACf,UAAM,KAAK,OAAO,MAAM,SAAS;AACjC,UAAM,QAAQ,OAAO,MAAM,KAAK,KAAK;AACrC,UAAM,WAAW,MAAM,IAAI,QAAQ,+BAA+B,IAAI,IAAI,sBAAsB;AAChG,UAAM,kBAAkB,IAAI,QAAQ,UAAU,oBAAoB,SAAS,YAAY;AACvF,UAAM,8BAA8B;AAAA,MAClC,mBAAmB,yBAAyB,IAAI,QAAQ,UAAU,kBAAkB,IAAI,eAAe;AAAA,IACzG;AACA,UAAM,SAAS,MAAM,UAAU,IAAI,QAAQ,WAAW,EAAE,QAAQ,WAAW,iBAAiB,6BAA6B,MAAM,CAAC;AAChI,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,OAAO,MAAM,QAAQ,EAAE;AACtC,UAAM,OAAO,OAAO,MAAM,MAAM,EAAE;AAClC,QAAI,CAAC,OAAQ,OAAM,IAAI,uBAAuB,oBAAoB;AAClE,QAAI,CAAC,KAAM,OAAM,IAAI,uBAAuB,kBAAkB;AAC9D,UAAM,EAAE,uBAAuB,kBAAkB,IAAI,MAAM,OAAO,0BAA+B;AACjG,QAAI,CAAC,sBAAsB,IAAI,EAAG,OAAM,IAAI,uBAAuB,mBAAmB,OAAO,yEAAyE;AACtK,UAAM,SAAS,MAAM,kBAAkB,IAAI,QAAQ,WAAW,IAAI,QAAQ,YAAY,QAAQ,MAAM;AAAA,MAClG,gBAAgB,OAAO,MAAM,cAAc;AAAA,MAC3C,eAAe,OAAO,MAAM,aAAa;AAAA,MACzC,qBAAqB,OAAO,cAAkC;AAC5D,cAAM,IAAI,MAAM,IAAI,QAAQ,+BAA+B,WAAW,IAAI,sBAAsB;AAChG,eAAO,EAAE;AAAA,MACX;AAAA,MACA,uBAAuB,MAAM;AAAA,MAAmD;AAAA,IAClF,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,EAAE,qBAAqB,IAAI,MAAM,OAAO,kCAAuC;AACrF,UAAM,SAAS,MAAM,qBAAqB;AAAA,MACxC,SAAS,IAAI,QAAQ;AAAA,MACrB,QAAQ,IAAI,QAAQ;AAAA,MACpB,WAAW,IAAI,QAAQ;AAAA,MACvB,wBAAwB,IAAI,QAAQ;AAAA,MACpC,qBAAqB,CAAC,cACpB,IAAI,QAAQ,+BAA+B,aAAa,QAAW,IAAI,sBAAsB;AAAA,MAC/F,UAAU,IAAI,QAAQ;AAAA,MACtB,aAAa,IAAI,QAAQ;AAAA,MACzB,WAAW,OAAO,MAAM,SAAS;AAAA,IACnC,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,MAAM,IAAI,QAAQ;AACxB,QAAI,CAAC,IAAI,uBAAuB;AAC9B,aAAO,EAAE,QAAQ,EAAE,QAAO,oBAAI,KAAK,GAAE,YAAY,GAAG,UAAU,MAAM,QAAQ,iCAAiC,EAAE;AAAA,IACjH;AACA,UAAM,EAAE,6CAA6C,IAAI,MAAM,OAAO,gCAAmC;AACzG,UAAM,SAAS,MAAM,WAAW;AAChC,UAAM,UAAU,MAAM,6CAA6C,IAAI,QAAQ,WAAW;AAAA,MACxF,UAAU,IAAI;AAAA,MACd,WAAW,IAAI;AAAA,MACf,OAAO,IAAI;AAAA,MACX,qBAAqB,IAAI;AAAA,MACzB;AAAA,MACA,mBAAmB,IAAI,sBAAsB;AAAA,MAC7C,kBAAkB,IAAI;AAAA,IACxB,CAAC;AACD,WAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;AAAA,EAC/B;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,sBAAsB,EAAE;AACvF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,wBAAwB;AAAA,MACvD,YAAY,OAAO,MAAM,UAAU;AAAA,MACnC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,OAAO,QAAQ,MAAM,KAAK;AAAA,IAC5B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,gBAAgB;AAAA,MAC/C,QAAQ,OAAO,MAAM,MAAM;AAAA,MAC3B,OAAO,OAAO,MAAM,KAAK;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ;AAAA,MAC/B,EAAE,wBAAwB,IAAI,wBAAwB,OAAO,MAAM,UAAU,KAAK;AAAA,MAClF,IAAI;AAAA,IACN;AACA,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,SAAS,EAAE;AAC1E,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,QAAQ,OAAO,MAAM,IAAI,EAAE,CAAC;AAC7D,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,QAAQ;AAAA,MACvC,IAAI,OAAO,MAAM,EAAE,KAAK;AAAA,MACxB,MAAM,OAAO,MAAM,IAAI;AAAA,MACvB,aAAa,OAAO,MAAM,WAAW;AAAA,MACrC,OAAO,OAAO,MAAM,KAAK;AAAA,IAC3B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,WAAW,OAAO,MAAM,IAAI,EAAE,CAAC;AAChE,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,eAAe,OAAO,MAAM,EAAE,KAAK,EAAE;AACtE,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,WAAW,OAAO,MAAM,EAAE,KAAK,IAAI,EAAE,SAAS,MAAM,YAAY,QAAQ,OAAO,MAAM,OAAO,MAAM,QAAQ,QAAQ,GAAG,CAAC;AACvJ,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,aAAa,OAAO,MAAM,SAAS,GAAG,IAAI,sBAAsB;AACjG,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,aAAa;AAAA,MAC5C,aAAa,OAAO,MAAM,WAAW;AAAA,MACrC,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,WAAW,IAAI;AAAA,IACjB,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,SAAS,MAAM,IAAI,QAAQ,UAAU;AAAA,MACzC,OAAO,OAAO,MAAM,KAAK;AAAA,MACzB,QAAQ,MAAM,WAAW;AAAA,MACzB,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,wBAAwB,IAAI;AAAA,IAC9B,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,QAAQ;AAC9B,UAAM,SAAS,MAAM,IAAI,QAAQ,oBAAoB;AACrD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,iBAAiB,EAAE,OAAO,UAAU,MAAM,KAAK,KAAK,CAAC,GAAG,WAAW,OAAO,MAAM,SAAS,GAAG,WAAW,IAAI,uBAAuB,CAAC,EAAE;AACnM,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,uBAAuB,EAAE,MAAM,OAAO,MAAM,IAAI,KAAK,IAAI,WAAW,OAAO,MAAM,SAAS,GAAG,WAAW,IAAI,wBAAwB,QAAQ,OAAO,MAAM,MAAM,GAAG,QAAQ,OAAO,MAAM,MAAM,EAAE,CAAC,EAAE;AAChQ,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,4BAA4B,EAAE,UAAU,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,OAAO,MAAM,IAAI,KAAK,IAAI,QAAQ,OAAO,MAAM,MAAM,KAAK,IAAI,OAAO,OAAO,MAAM,KAAK,KAAK,GAAG,SAAS,OAAO,MAAM,OAAO,KAAK,GAAG,QAAQ,OAAO,MAAM,MAAM,GAAG,YAAY,OAAO,MAAM,UAAU,GAAG,SAAS,OAAO,KAAK,OAAO,MAAM,SAAS,EAAE,GAAG,QAAQ,GAAG,WAAW,OAAO,MAAM,SAAS,GAAG,WAAW,IAAI,uBAAuB,CAAC,EAAE;AAC1d,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,iBAAiB,EAAE,WAAW,MAAM,WAAW,WAAW,OAAO,MAAM,SAAS,GAAG,WAAW,IAAI,uBAAuB,CAAC,EAAE;AAC1L,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,UAAU,EAAE;AAC3E,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,aAAa,EAAE;AAC7E,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,WAAW,EAAE;AAC3E,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,YAAY,EAAE;AAC5E,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,QAAQ,EAAE;AACxE,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,gBAAgB,EAAE;AAChF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,gBAAgB,EAAE,WAAW,OAAO,MAAM,SAAS,GAAG,OAAO,OAAO,MAAM,KAAK,GAAG,QAAQ,OAAO,MAAM,MAAM,EAAE,GAAG,IAAI,sBAAsB,EAAE;AAC5M,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,kBAAkB,EAAE,UAAU,OAAO,MAAM,QAAQ,KAAK,IAAI,QAAS,OAAO,MAAM,MAAM,KAAK,YAA6F,YAAY,OAAO,MAAM,UAAU,KAAK,IAAI,WAAW,OAAO,MAAM,SAAS,GAAG,wBAAwB,IAAI,uBAAuB,CAAC,EAAE;AAC9X,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,iBAAiB,EAAE,UAAU,OAAO,MAAM,QAAQ,KAAK,IAAI,YAAa,OAAO,MAAM,UAAU,KAAK,WAAwD,iBAAiB,OAAO,MAAM,eAAe,KAAK,IAAI,QAAQ,MAAM,WAAW,MAAM,WAAW,OAAO,MAAM,SAAS,GAAG,wBAAwB,IAAI,uBAAuB,CAAC,EAAE;AACzY,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,kBAAkB,EAAE,UAAU,OAAO,MAAM,QAAQ,GAAG,QAAQ,MAAM,WAAW,MAAM,WAAW,OAAO,MAAM,SAAS,GAAG,wBAAwB,IAAI,uBAAuB,CAAC,EAAE;AAC7O,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAI7B,WAAO,EAAE,QAAQ,EAAE,IAAI,KAAK,EAAE;AAAA,EAChC;AACF,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,OAAO,QAAQ;AAC7B,UAAM,EAAE,UAAU,IAAI,MAAM,OAAO,oCAAyC;AAC5E,UAAM,SAAS,MAAM,UAAU,IAAI,QAAQ,WAAW;AAAA,MACpD,QAAQ;AAAA,MACR,WAAW,OAAO,MAAM,SAAS;AAAA,MACjC,6BAA6B;AAAA,MAC7B,OAAO;AAAA,IACT,CAAC;AACD,WAAO,EAAE,OAAO;AAAA,EAClB;AACF,CAAC;AAMD,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,SAAS,EAAE,QAAQ,MAAM,IAAI,QAAQ,0BAA0B,EAAE;AAC3F,CAAC;AAED,gBAAgB;AAAA,EACd,MAAM;AAAA,EACN,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,SAAS,OAAO,QAAQ,UAAU,EAAE,QAAQ,EAAE,QAAQ,MAAM,EAAE;AAChE,CAAC;","names":[]}
|
|
@@ -6,16 +6,16 @@ import {
|
|
|
6
6
|
} from "./chunk-7WV3F5DQ.js";
|
|
7
7
|
import {
|
|
8
8
|
EngramMcpServer
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-HEHPVBWA.js";
|
|
10
10
|
import {
|
|
11
11
|
validateRequest
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-NUWZFSKC.js";
|
|
13
13
|
import {
|
|
14
14
|
getOperation
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-5DTWZ66X.js";
|
|
16
16
|
import {
|
|
17
17
|
EngramAccessInputError
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-JHAYR2JY.js";
|
|
19
19
|
import {
|
|
20
20
|
projectTagProjectId
|
|
21
21
|
} from "./chunk-SHRRWOVY.js";
|
|
@@ -444,6 +444,7 @@ var EngramAccessHttpServer = class {
|
|
|
444
444
|
return;
|
|
445
445
|
}
|
|
446
446
|
if (req.method === "POST" && pathname === "/engram/v1/recall") {
|
|
447
|
+
void getOperation("recall");
|
|
447
448
|
const body = await this.readValidatedBody(req, "recall");
|
|
448
449
|
const codingContext = "codingContext" in body ? body.codingContext : void 0;
|
|
449
450
|
const disclosure = this.resolveRecallDisclosure(body.disclosure, parsed);
|
|
@@ -511,6 +512,7 @@ var EngramAccessHttpServer = class {
|
|
|
511
512
|
return;
|
|
512
513
|
}
|
|
513
514
|
if (req.method === "POST" && pathname === "/engram/v1/coding-context") {
|
|
515
|
+
void getOperation("set_coding_context");
|
|
514
516
|
const body = await this.readValidatedBody(req, "setCodingContext");
|
|
515
517
|
const codingContext = body.codingContext !== void 0 ? body.codingContext : typeof body.projectTag === "string" ? codingContextFromProjectTag(body.projectTag) : (() => {
|
|
516
518
|
throw new EngramAccessInputError("codingContext or projectTag is required");
|
|
@@ -523,6 +525,7 @@ var EngramAccessHttpServer = class {
|
|
|
523
525
|
return;
|
|
524
526
|
}
|
|
525
527
|
if (req.method === "POST" && (pathname === "/engram/v1/capsules/export" || pathname === "/remnic/v1/capsules/export")) {
|
|
528
|
+
void getOperation("capsule_export");
|
|
526
529
|
const body = await this.readValidatedBody(req, "capsuleExport");
|
|
527
530
|
this.ensureWriteRateLimitAvailable();
|
|
528
531
|
const result = await this.service.capsuleExport({
|
|
@@ -540,6 +543,7 @@ var EngramAccessHttpServer = class {
|
|
|
540
543
|
return;
|
|
541
544
|
}
|
|
542
545
|
if (req.method === "POST" && (pathname === "/engram/v1/capsules/import" || pathname === "/remnic/v1/capsules/import")) {
|
|
546
|
+
void getOperation("capsule_import");
|
|
543
547
|
const body = await this.readValidatedBody(req, "capsuleImport");
|
|
544
548
|
this.ensureWriteRateLimitAvailable();
|
|
545
549
|
const result = await this.service.capsuleImport({
|
|
@@ -554,6 +558,7 @@ var EngramAccessHttpServer = class {
|
|
|
554
558
|
return;
|
|
555
559
|
}
|
|
556
560
|
if (req.method === "GET" && (pathname === "/engram/v1/offline-sync/snapshot" || pathname === "/remnic/v1/offline-sync/snapshot")) {
|
|
561
|
+
void getOperation("offline_sync_snapshot");
|
|
557
562
|
const includeTranscriptsRaw = parsed.searchParams.get("include_transcripts");
|
|
558
563
|
const includeContentRaw = parsed.searchParams.get("content");
|
|
559
564
|
if (includeTranscriptsRaw !== null && includeTranscriptsRaw !== "true" && includeTranscriptsRaw !== "false") {
|
|
@@ -580,6 +585,7 @@ var EngramAccessHttpServer = class {
|
|
|
580
585
|
return;
|
|
581
586
|
}
|
|
582
587
|
if (req.method === "GET" && (pathname === "/engram/v1/offline-sync/snapshot-stream" || pathname === "/remnic/v1/offline-sync/snapshot-stream")) {
|
|
588
|
+
void getOperation("offline_sync_snapshot_stream");
|
|
583
589
|
const includeTranscriptsRaw = parsed.searchParams.get("include_transcripts");
|
|
584
590
|
const includeContentRaw = parsed.searchParams.get("content");
|
|
585
591
|
if (includeTranscriptsRaw !== null && includeTranscriptsRaw !== "true" && includeTranscriptsRaw !== "false") {
|
|
@@ -605,6 +611,7 @@ var EngramAccessHttpServer = class {
|
|
|
605
611
|
return;
|
|
606
612
|
}
|
|
607
613
|
if (req.method === "POST" && (pathname === "/engram/v1/offline-sync/snapshot" || pathname === "/remnic/v1/offline-sync/snapshot")) {
|
|
614
|
+
void getOperation("offline_sync_snapshot");
|
|
608
615
|
const body = await this.readValidatedBody(
|
|
609
616
|
req,
|
|
610
617
|
"offlineSyncSnapshot",
|
|
@@ -623,6 +630,7 @@ var EngramAccessHttpServer = class {
|
|
|
623
630
|
return;
|
|
624
631
|
}
|
|
625
632
|
if (req.method === "POST" && (pathname === "/engram/v1/offline-sync/files" || pathname === "/remnic/v1/offline-sync/files")) {
|
|
633
|
+
void getOperation("offline_sync_files");
|
|
626
634
|
const body = await this.readValidatedBody(req, "offlineSyncFiles");
|
|
627
635
|
const result = await this.service.offlineSyncFiles({
|
|
628
636
|
namespace: this.resolveNamespace(req, body.namespace),
|
|
@@ -634,6 +642,7 @@ var EngramAccessHttpServer = class {
|
|
|
634
642
|
return;
|
|
635
643
|
}
|
|
636
644
|
if (req.method === "POST" && (pathname === "/engram/v1/offline-sync/file-content" || pathname === "/remnic/v1/offline-sync/file-content")) {
|
|
645
|
+
void getOperation("offline_sync_file_content");
|
|
637
646
|
const body = await this.readValidatedBody(req, "offlineSyncFileContent");
|
|
638
647
|
const result = await this.service.offlineSyncFileContent({
|
|
639
648
|
namespace: this.resolveNamespace(req, body.namespace),
|
|
@@ -655,6 +664,7 @@ var EngramAccessHttpServer = class {
|
|
|
655
664
|
return;
|
|
656
665
|
}
|
|
657
666
|
if (req.method === "POST" && (pathname === "/engram/v1/offline-sync/apply-file-content" || pathname === "/remnic/v1/offline-sync/apply-file-content")) {
|
|
667
|
+
void getOperation("offline_sync_apply_file_content");
|
|
658
668
|
const namespaceParam = parsed.searchParams.get("namespace");
|
|
659
669
|
const bytes = this.readRequiredIntegerHeader(req, "x-remnic-file-bytes");
|
|
660
670
|
const offset = this.readOptionalIntegerHeader(req, "x-remnic-chunk-offset") ?? 0;
|
|
@@ -683,6 +693,7 @@ var EngramAccessHttpServer = class {
|
|
|
683
693
|
return;
|
|
684
694
|
}
|
|
685
695
|
if (req.method === "POST" && (pathname === "/engram/v1/offline-sync/apply" || pathname === "/remnic/v1/offline-sync/apply")) {
|
|
696
|
+
void getOperation("offline_sync_apply");
|
|
686
697
|
const body = await this.readValidatedBody(req, "offlineSyncApply", OFFLINE_SYNC_APPLY_MAX_BODY_BYTES);
|
|
687
698
|
const result = await this.service.offlineSyncApply({
|
|
688
699
|
namespace: this.resolveNamespace(req, body.namespace),
|
|
@@ -694,6 +705,7 @@ var EngramAccessHttpServer = class {
|
|
|
694
705
|
return;
|
|
695
706
|
}
|
|
696
707
|
if (req.method === "POST" && pathname === "/engram/v1/recall/explain") {
|
|
708
|
+
void getOperation("recall_explain");
|
|
697
709
|
const body = await this.readValidatedBody(req, "recallExplain");
|
|
698
710
|
const response = await this.service.recallExplain({
|
|
699
711
|
sessionKey: body.sessionKey,
|
|
@@ -704,11 +716,13 @@ var EngramAccessHttpServer = class {
|
|
|
704
716
|
return;
|
|
705
717
|
}
|
|
706
718
|
if (req.method === "POST" && (pathname === "/engram/v1/action-confidence" || pathname === "/remnic/v1/action-confidence")) {
|
|
719
|
+
void getOperation("action_confidence");
|
|
707
720
|
const body = await this.readValidatedBody(req, "actionConfidence");
|
|
708
721
|
this.respondJson(res, 200, await this.service.actionConfidence(body));
|
|
709
722
|
return;
|
|
710
723
|
}
|
|
711
724
|
if (req.method === "GET" && pathname === "/engram/v1/recall/tier-explain") {
|
|
725
|
+
void getOperation("recall_tier_explain");
|
|
712
726
|
const sessionParam = parsed.searchParams.get("session");
|
|
713
727
|
const sessionKey = sessionParam && sessionParam.length > 0 ? sessionParam : void 0;
|
|
714
728
|
const namespaceParam = parsed.searchParams.get("namespace");
|
|
@@ -725,6 +739,7 @@ var EngramAccessHttpServer = class {
|
|
|
725
739
|
return;
|
|
726
740
|
}
|
|
727
741
|
if (req.method === "GET" && pathname === "/engram/v1/recall/xray") {
|
|
742
|
+
void getOperation("recall_xray");
|
|
728
743
|
const queryParam = parsed.searchParams.get("q");
|
|
729
744
|
if (!queryParam || queryParam.trim().length === 0) {
|
|
730
745
|
this.respondJson(res, 400, {
|
|
@@ -793,10 +808,12 @@ var EngramAccessHttpServer = class {
|
|
|
793
808
|
return;
|
|
794
809
|
}
|
|
795
810
|
if (req.method === "GET" && (pathname === "/engram/v1/wearables/status" || pathname === "/remnic/v1/wearables/status")) {
|
|
811
|
+
void getOperation("wearables_status");
|
|
796
812
|
this.respondJson(res, 200, await this.service.wearablesStatus());
|
|
797
813
|
return;
|
|
798
814
|
}
|
|
799
815
|
if (req.method === "POST" && (pathname === "/engram/v1/wearables/sync" || pathname === "/remnic/v1/wearables/sync")) {
|
|
816
|
+
void getOperation("wearables_sync");
|
|
800
817
|
const body = await this.readJsonBody(req);
|
|
801
818
|
const source = optionalQueryString(body.source, "source");
|
|
802
819
|
const date = optionalQueryString(body.date, "date");
|
|
@@ -829,6 +846,7 @@ var EngramAccessHttpServer = class {
|
|
|
829
846
|
return;
|
|
830
847
|
}
|
|
831
848
|
if (req.method === "GET" && (pathname === "/engram/v1/wearables/transcript" || pathname === "/remnic/v1/wearables/transcript")) {
|
|
849
|
+
void getOperation("transcript_day");
|
|
832
850
|
const date = parsed.searchParams.get("date");
|
|
833
851
|
if (!date || date.trim().length === 0) {
|
|
834
852
|
throw new EngramAccessInputError(
|
|
@@ -849,6 +867,7 @@ var EngramAccessHttpServer = class {
|
|
|
849
867
|
return;
|
|
850
868
|
}
|
|
851
869
|
if (req.method === "GET" && (pathname === "/engram/v1/wearables/transcripts/search" || pathname === "/remnic/v1/wearables/transcripts/search")) {
|
|
870
|
+
void getOperation("transcript_search");
|
|
852
871
|
const queryParam = parsed.searchParams.get("q");
|
|
853
872
|
if (!queryParam || queryParam.trim().length === 0) {
|
|
854
873
|
throw new EngramAccessInputError(
|
|
@@ -871,6 +890,7 @@ var EngramAccessHttpServer = class {
|
|
|
871
890
|
return;
|
|
872
891
|
}
|
|
873
892
|
if (req.method === "GET" && (pathname === "/engram/v1/wearables/memories" || pathname === "/remnic/v1/wearables/memories")) {
|
|
893
|
+
void getOperation("transcript_memories");
|
|
874
894
|
try {
|
|
875
895
|
const memories = await this.service.wearablesTranscriptMemories({
|
|
876
896
|
source: nonEmptyQueryParam(parsed.searchParams.get("source")),
|
|
@@ -885,6 +905,7 @@ var EngramAccessHttpServer = class {
|
|
|
885
905
|
return;
|
|
886
906
|
}
|
|
887
907
|
if (req.method === "POST" && pathname === "/engram/v1/observe") {
|
|
908
|
+
void getOperation("observe");
|
|
888
909
|
const body = await this.readValidatedBody(req, "observe");
|
|
889
910
|
this.ensureWriteRateLimitAvailable();
|
|
890
911
|
const response = await this.service.observe({
|
|
@@ -908,6 +929,7 @@ var EngramAccessHttpServer = class {
|
|
|
908
929
|
return;
|
|
909
930
|
}
|
|
910
931
|
if (req.method === "POST" && pathname === "/engram/v1/lcm/search") {
|
|
932
|
+
void getOperation("lcm_search");
|
|
911
933
|
const body = await this.readValidatedBody(req, "lcmSearch");
|
|
912
934
|
const response = await this.service.lcmSearch({
|
|
913
935
|
query: body.query,
|
|
@@ -921,6 +943,7 @@ var EngramAccessHttpServer = class {
|
|
|
921
943
|
return;
|
|
922
944
|
}
|
|
923
945
|
if (req.method === "POST" && (pathname === "/engram/v1/lcm/compaction/flush" || pathname === "/remnic/v1/lcm/compaction/flush")) {
|
|
946
|
+
void getOperation("lcm_compaction_flush");
|
|
924
947
|
const body = await this.readValidatedBody(req, "lcmCompactionFlush");
|
|
925
948
|
this.ensureWriteRateLimitAvailable();
|
|
926
949
|
const response = await this.service.lcmCompactionFlush({
|
|
@@ -933,6 +956,7 @@ var EngramAccessHttpServer = class {
|
|
|
933
956
|
return;
|
|
934
957
|
}
|
|
935
958
|
if (req.method === "POST" && (pathname === "/engram/v1/lcm/compaction/record" || pathname === "/remnic/v1/lcm/compaction/record")) {
|
|
959
|
+
void getOperation("lcm_compaction_record");
|
|
936
960
|
const body = await this.readValidatedBody(req, "lcmCompactionRecord");
|
|
937
961
|
this.ensureWriteRateLimitAvailable();
|
|
938
962
|
const response = await this.service.lcmCompactionRecord({
|
|
@@ -947,6 +971,7 @@ var EngramAccessHttpServer = class {
|
|
|
947
971
|
return;
|
|
948
972
|
}
|
|
949
973
|
if (req.method === "GET" && pathname === "/engram/v1/lcm/status") {
|
|
974
|
+
void getOperation("lcm_status");
|
|
950
975
|
this.respondJson(res, 200, await this.service.lcmStatus());
|
|
951
976
|
return;
|
|
952
977
|
}
|
|
@@ -1026,6 +1051,7 @@ var EngramAccessHttpServer = class {
|
|
|
1026
1051
|
return;
|
|
1027
1052
|
}
|
|
1028
1053
|
if (req.method === "POST" && pathname === "/engram/v1/suggestions") {
|
|
1054
|
+
void getOperation("suggestion_submit");
|
|
1029
1055
|
const body = await this.readValidatedBody(req, "suggestionSubmit");
|
|
1030
1056
|
const request = {
|
|
1031
1057
|
schemaVersion: body.schemaVersion,
|
|
@@ -1054,6 +1080,7 @@ var EngramAccessHttpServer = class {
|
|
|
1054
1080
|
return;
|
|
1055
1081
|
}
|
|
1056
1082
|
if (req.method === "GET" && pathname === "/engram/v1/memories") {
|
|
1083
|
+
void getOperation("memory_list");
|
|
1057
1084
|
const limit = parseStrictIntegerQuery(parsed.searchParams.get("limit"), "limit", 50, 1);
|
|
1058
1085
|
const offset = parseStrictIntegerQuery(parsed.searchParams.get("offset"), "offset", 0, 0);
|
|
1059
1086
|
const sort = parseMemorySort(parsed.searchParams.get("sort"));
|
|
@@ -1087,6 +1114,7 @@ var EngramAccessHttpServer = class {
|
|
|
1087
1114
|
return;
|
|
1088
1115
|
}
|
|
1089
1116
|
const timelineMatch = pathname.match(/^\/engram\/v1\/memories\/([^/]+)\/timeline$/);
|
|
1117
|
+
void getOperation("memory_timeline");
|
|
1090
1118
|
if (req.method === "GET" && timelineMatch) {
|
|
1091
1119
|
const memoryId = decodeURIComponent(timelineMatch[1] ?? "");
|
|
1092
1120
|
const namespace = parsed.searchParams.get("namespace") ?? void 0;
|
|
@@ -1096,6 +1124,7 @@ var EngramAccessHttpServer = class {
|
|
|
1096
1124
|
return;
|
|
1097
1125
|
}
|
|
1098
1126
|
if (req.method === "GET" && pathname === "/engram/v1/entities") {
|
|
1127
|
+
void getOperation("entity_list");
|
|
1099
1128
|
const limit = parseStrictIntegerQuery(parsed.searchParams.get("limit"), "limit", 50, 1);
|
|
1100
1129
|
const offset = parseStrictIntegerQuery(parsed.searchParams.get("offset"), "offset", 0, 0);
|
|
1101
1130
|
const response = await this.service.entityList({
|
|
@@ -1108,6 +1137,7 @@ var EngramAccessHttpServer = class {
|
|
|
1108
1137
|
return;
|
|
1109
1138
|
}
|
|
1110
1139
|
const entityMatch = pathname.match(/^\/engram\/v1\/entities\/([^/]+)$/);
|
|
1140
|
+
void getOperation("entity_get");
|
|
1111
1141
|
if (req.method === "GET" && entityMatch) {
|
|
1112
1142
|
const entityName = decodeURIComponent(entityMatch[1] ?? "");
|
|
1113
1143
|
const namespace = parsed.searchParams.get("namespace") ?? void 0;
|
|
@@ -1116,6 +1146,7 @@ var EngramAccessHttpServer = class {
|
|
|
1116
1146
|
return;
|
|
1117
1147
|
}
|
|
1118
1148
|
if (req.method === "GET" && pathname === "/engram/v1/review-queue") {
|
|
1149
|
+
void getOperation("review_queue_list");
|
|
1119
1150
|
const response = await this.service.reviewQueue(
|
|
1120
1151
|
parsed.searchParams.get("runId") ?? void 0,
|
|
1121
1152
|
parsed.searchParams.get("namespace") ?? void 0,
|
|
@@ -1125,14 +1156,17 @@ var EngramAccessHttpServer = class {
|
|
|
1125
1156
|
return;
|
|
1126
1157
|
}
|
|
1127
1158
|
if (req.method === "GET" && pathname === "/engram/v1/maintenance") {
|
|
1159
|
+
void getOperation("maintenance_status");
|
|
1128
1160
|
this.respondJson(res, 200, await this.service.maintenance(parsed.searchParams.get("namespace") ?? void 0, this.resolveRequestPrincipal(req)));
|
|
1129
1161
|
return;
|
|
1130
1162
|
}
|
|
1131
1163
|
if (req.method === "GET" && pathname === "/engram/v1/quality") {
|
|
1164
|
+
void getOperation("quality_status");
|
|
1132
1165
|
this.respondJson(res, 200, await this.service.quality(parsed.searchParams.get("namespace") ?? void 0, this.resolveRequestPrincipal(req)));
|
|
1133
1166
|
return;
|
|
1134
1167
|
}
|
|
1135
1168
|
if (req.method === "GET" && pathname === "/engram/v1/trust-zones/status") {
|
|
1169
|
+
void getOperation("trust_zones_status");
|
|
1136
1170
|
this.respondJson(
|
|
1137
1171
|
res,
|
|
1138
1172
|
200,
|
|
@@ -1141,6 +1175,7 @@ var EngramAccessHttpServer = class {
|
|
|
1141
1175
|
return;
|
|
1142
1176
|
}
|
|
1143
1177
|
if (req.method === "GET" && pathname === "/engram/v1/procedural/stats") {
|
|
1178
|
+
void getOperation("procedural_stats");
|
|
1144
1179
|
const namespaceParam = parsed.searchParams.get("namespace");
|
|
1145
1180
|
this.respondJson(
|
|
1146
1181
|
res,
|
|
@@ -1158,6 +1193,7 @@ var EngramAccessHttpServer = class {
|
|
|
1158
1193
|
return;
|
|
1159
1194
|
}
|
|
1160
1195
|
if (req.method === "GET" && pathname === "/engram/v1/trust-zones/records") {
|
|
1196
|
+
void getOperation("trust_zones_records");
|
|
1161
1197
|
const limit = parseStrictIntegerQuery(parsed.searchParams.get("limit"), "limit", 25, 1);
|
|
1162
1198
|
const offset = parseStrictIntegerQuery(parsed.searchParams.get("offset"), "offset", 0, 0);
|
|
1163
1199
|
const response = await this.service.trustZoneBrowse({
|
|
@@ -1173,6 +1209,7 @@ var EngramAccessHttpServer = class {
|
|
|
1173
1209
|
return;
|
|
1174
1210
|
}
|
|
1175
1211
|
if (req.method === "POST" && pathname === "/engram/v1/review-disposition") {
|
|
1212
|
+
void getOperation("review_disposition");
|
|
1176
1213
|
const body = await this.readValidatedBody(req, "reviewDisposition");
|
|
1177
1214
|
this.ensureWriteRateLimitAvailable();
|
|
1178
1215
|
const response = await this.service.reviewDisposition({
|
|
@@ -1189,6 +1226,7 @@ var EngramAccessHttpServer = class {
|
|
|
1189
1226
|
return;
|
|
1190
1227
|
}
|
|
1191
1228
|
if (req.method === "POST" && pathname === "/engram/v1/trust-zones/promote") {
|
|
1229
|
+
void getOperation("trust_zones_promote");
|
|
1192
1230
|
const body = await this.readValidatedBody(req, "trustZonePromote");
|
|
1193
1231
|
const dryRun = body.dryRun === true;
|
|
1194
1232
|
if (!dryRun) {
|
|
@@ -1211,6 +1249,7 @@ var EngramAccessHttpServer = class {
|
|
|
1211
1249
|
return;
|
|
1212
1250
|
}
|
|
1213
1251
|
if (req.method === "POST" && pathname === "/engram/v1/trust-zones/demo-seed") {
|
|
1252
|
+
void getOperation("trust_zones_demo_seed");
|
|
1214
1253
|
const body = await this.readValidatedBody(req, "trustZoneDemoSeed");
|
|
1215
1254
|
const dryRun = body.dryRun === true;
|
|
1216
1255
|
if (!dryRun) {
|
|
@@ -1230,6 +1269,7 @@ var EngramAccessHttpServer = class {
|
|
|
1230
1269
|
return;
|
|
1231
1270
|
}
|
|
1232
1271
|
if (req.method === "POST" && pathname === "/v1/citations/observed") {
|
|
1272
|
+
void getOperation("citations_observed");
|
|
1233
1273
|
const body = await this.readJsonBody(req);
|
|
1234
1274
|
if (!body || typeof body !== "object" || Array.isArray(body)) {
|
|
1235
1275
|
throw new HttpError(400, "request body must be a JSON object", "invalid_body");
|
|
@@ -1289,6 +1329,7 @@ var EngramAccessHttpServer = class {
|
|
|
1289
1329
|
return;
|
|
1290
1330
|
}
|
|
1291
1331
|
if (req.method === "GET" && pathname === "/engram/v1/review/contradictions") {
|
|
1332
|
+
void getOperation("review_list");
|
|
1292
1333
|
const VALID_FILTERS = /* @__PURE__ */ new Set(["all", "unresolved", "contradicts", "independent", "duplicates", "needs-user"]);
|
|
1293
1334
|
const rawFilter = parsed.searchParams.get("filter") ?? "unresolved";
|
|
1294
1335
|
if (!VALID_FILTERS.has(rawFilter)) {
|
|
@@ -1317,6 +1358,7 @@ var EngramAccessHttpServer = class {
|
|
|
1317
1358
|
return;
|
|
1318
1359
|
}
|
|
1319
1360
|
if (req.method === "GET" && pathname.startsWith("/engram/v1/review/contradictions/")) {
|
|
1361
|
+
void getOperation("contradiction_detail");
|
|
1320
1362
|
const pairId = pathname.split("/").pop() ?? "";
|
|
1321
1363
|
const { readPair } = await import("./contradiction-review-QKJH5DKD.js");
|
|
1322
1364
|
const pair = readPair(this.service.memoryDir, pairId);
|
|
@@ -1334,6 +1376,7 @@ var EngramAccessHttpServer = class {
|
|
|
1334
1376
|
return;
|
|
1335
1377
|
}
|
|
1336
1378
|
if (req.method === "POST" && pathname === "/engram/v1/review/resolve") {
|
|
1379
|
+
void getOperation("review_resolve");
|
|
1337
1380
|
const body = await this.readJsonBody(req);
|
|
1338
1381
|
const pairId = typeof body.pairId === "string" ? body.pairId : "";
|
|
1339
1382
|
const verb = typeof body.verb === "string" ? body.verb : "";
|
|
@@ -1365,6 +1408,7 @@ var EngramAccessHttpServer = class {
|
|
|
1365
1408
|
return;
|
|
1366
1409
|
}
|
|
1367
1410
|
if (req.method === "GET" && pathname === "/engram/v1/graph/snapshot") {
|
|
1411
|
+
void getOperation("graph_snapshot");
|
|
1368
1412
|
const limitRaw = parsed.searchParams.get("limit");
|
|
1369
1413
|
let limit;
|
|
1370
1414
|
if (limitRaw !== null && limitRaw.length > 0) {
|
|
@@ -1438,6 +1482,7 @@ var EngramAccessHttpServer = class {
|
|
|
1438
1482
|
return;
|
|
1439
1483
|
}
|
|
1440
1484
|
if (req.method === "POST" && pathname === "/engram/v1/contradiction-scan") {
|
|
1485
|
+
void getOperation("contradiction_scan_run");
|
|
1441
1486
|
const body = await this.readJsonBody(req);
|
|
1442
1487
|
const { runContradictionScan } = await import("./contradiction-scan-HWGEOUDS.js");
|
|
1443
1488
|
const principal = this.resolveRequestPrincipal(req);
|
|
@@ -1455,22 +1500,26 @@ var EngramAccessHttpServer = class {
|
|
|
1455
1500
|
return;
|
|
1456
1501
|
}
|
|
1457
1502
|
if (req.method === "GET" && pathname === "/engram/v1/graph/events") {
|
|
1503
|
+
void getOperation("graph_events");
|
|
1458
1504
|
await this.handleGraphEventsSSE(req, res);
|
|
1459
1505
|
return;
|
|
1460
1506
|
}
|
|
1461
1507
|
if (req.method === "GET" && pathname === "/engram/v1/console/state") {
|
|
1508
|
+
void getOperation("console_state");
|
|
1462
1509
|
const namespace = parsed.searchParams.get("namespace") ?? void 0;
|
|
1463
1510
|
const snapshot = await this.service.consoleState(namespace, this.resolveRequestPrincipal(req));
|
|
1464
1511
|
this.respondJson(res, 200, snapshot);
|
|
1465
1512
|
return;
|
|
1466
1513
|
}
|
|
1467
1514
|
if (req.method === "GET" && pathname === "/engram/v1/peers") {
|
|
1515
|
+
void getOperation("peer_list");
|
|
1468
1516
|
const result = await this.service.peerList();
|
|
1469
1517
|
this.respondJson(res, 200, result);
|
|
1470
1518
|
return;
|
|
1471
1519
|
}
|
|
1472
1520
|
const peerProfileMatch = /^\/engram\/v1\/peers\/([^/]+)\/profile$/.exec(pathname);
|
|
1473
1521
|
if (peerProfileMatch) {
|
|
1522
|
+
void getOperation("peer_profile_get");
|
|
1474
1523
|
if (req.method !== "GET") {
|
|
1475
1524
|
this.respondJson(res, 405, { error: "method_not_allowed", code: "method_not_allowed" });
|
|
1476
1525
|
return;
|
|
@@ -1488,6 +1537,7 @@ var EngramAccessHttpServer = class {
|
|
|
1488
1537
|
if (peerIdMatch) {
|
|
1489
1538
|
const peerId = decodePeerIdSegment(peerIdMatch[1] ?? "");
|
|
1490
1539
|
if (req.method === "GET") {
|
|
1540
|
+
void getOperation("peer_get");
|
|
1491
1541
|
const result = await this.service.peerGet(peerId);
|
|
1492
1542
|
if (!result.found) {
|
|
1493
1543
|
this.respondJson(res, 404, { error: "peer_not_found", code: "peer_not_found" });
|
|
@@ -1497,6 +1547,7 @@ var EngramAccessHttpServer = class {
|
|
|
1497
1547
|
return;
|
|
1498
1548
|
}
|
|
1499
1549
|
if (req.method === "PUT") {
|
|
1550
|
+
void getOperation("peer_set");
|
|
1500
1551
|
const body = await this.readJsonBody(req);
|
|
1501
1552
|
if ("kind" in body && body.kind !== void 0 && typeof body.kind !== "string") {
|
|
1502
1553
|
throw new EngramAccessInputError("kind must be a string when provided");
|
|
@@ -1517,6 +1568,7 @@ var EngramAccessHttpServer = class {
|
|
|
1517
1568
|
return;
|
|
1518
1569
|
}
|
|
1519
1570
|
if (req.method === "DELETE") {
|
|
1571
|
+
void getOperation("peer_delete");
|
|
1520
1572
|
const forgetParam = parsed.searchParams.get("forget");
|
|
1521
1573
|
if (forgetParam === "true") {
|
|
1522
1574
|
const body = await this.readJsonBody(req);
|
|
@@ -1541,6 +1593,7 @@ var EngramAccessHttpServer = class {
|
|
|
1541
1593
|
return;
|
|
1542
1594
|
}
|
|
1543
1595
|
if (req.method === "GET" && pathname === "/engram/v1/dreams/status") {
|
|
1596
|
+
void getOperation("dreams_status");
|
|
1544
1597
|
const { normalizeDreamsStatusWindowHours } = await import("./dreams-ledger-3WSCI5V4.js");
|
|
1545
1598
|
const windowHoursRaw = parsed.searchParams.get("windowHours");
|
|
1546
1599
|
let windowHours;
|
|
@@ -1563,6 +1616,7 @@ var EngramAccessHttpServer = class {
|
|
|
1563
1616
|
return;
|
|
1564
1617
|
}
|
|
1565
1618
|
if (req.method === "POST" && pathname === "/engram/v1/dreams/run") {
|
|
1619
|
+
void getOperation("dreams_run");
|
|
1566
1620
|
const body = await this.readJsonBody(req);
|
|
1567
1621
|
const VALID_PHASES = ["lightSleep", "rem", "deepSleep"];
|
|
1568
1622
|
const phase = typeof body.phase === "string" ? body.phase : void 0;
|
|
@@ -2248,4 +2302,4 @@ function positiveIntQueryParam(value, label) {
|
|
|
2248
2302
|
export {
|
|
2249
2303
|
EngramAccessHttpServer
|
|
2250
2304
|
};
|
|
2251
|
-
//# sourceMappingURL=chunk-
|
|
2305
|
+
//# sourceMappingURL=chunk-GT4VBKM4.js.map
|