@remnic/core 9.54.4 → 9.54.6
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-admin-ops-surface.d.ts +24 -23
- package/dist/access-admin-ops-surface.js +55 -50
- package/dist/access-authorization-probe.d.ts +25 -22
- package/dist/access-authorization-probe.js +58 -51
- package/dist/access-boundary.d.ts +26 -23
- package/dist/access-boundary.js +59 -52
- package/dist/access-cli.js +115 -107
- package/dist/access-cli.js.map +1 -1
- package/dist/access-coding-context-resolution.d.ts +1 -1
- package/dist/access-extraction-force-flush.d.ts +19 -18
- package/dist/access-extraction-force-flush.js +55 -50
- package/dist/access-health-types.d.ts +1 -1
- package/dist/access-http-lcm-compaction.d.ts +22 -21
- package/dist/access-http-lifecycle-flush.d.ts +22 -21
- package/dist/access-http-offline-stream.d.ts +19 -18
- package/dist/access-http-query.js +55 -50
- package/dist/access-http.d.ts +55 -36
- package/dist/access-http.js +76 -65
- package/dist/access-identity-continuity-surface.d.ts +9 -9
- package/dist/access-identity-continuity-surface.js +55 -50
- package/dist/access-lcm-surface.d.ts +21 -20
- package/dist/access-lcm-surface.js +55 -50
- package/dist/access-mcp.d.ts +22 -21
- package/dist/access-mcp.js +63 -57
- package/dist/access-memory-search-fanout.d.ts +22 -2
- package/dist/access-memory-search-fanout.js +1 -1
- package/dist/{access-namespace-preflight-C7n4tgWC.d.ts → access-namespace-preflight-CCNn_6NE.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-namespace-preflight.js +55 -50
- package/dist/access-observe-write-surface.d.ts +22 -21
- package/dist/access-observe-write-surface.js +55 -50
- package/dist/access-offline-manifest.d.ts +10 -9
- package/dist/access-offline-manifest.js +12 -10
- package/dist/access-operations-batch.js +57 -52
- package/dist/access-operations.d.ts +23 -22
- package/dist/access-operations.js +61 -55
- package/dist/access-recall-concurrency.d.ts +21 -20
- package/dist/access-recall-concurrency.js +55 -50
- package/dist/access-recall-response.d.ts +19 -18
- package/dist/access-recall-response.js +55 -50
- package/dist/access-recall-surface.d.ts +19 -18
- package/dist/access-recall-surface.js +55 -50
- package/dist/access-schema.d.ts +2 -2
- package/dist/access-schema.js +5 -4
- package/dist/{access-service-CXvbxLK-.d.ts → access-service-DkSdXK4S.d.ts} +1314 -83
- package/dist/access-service-helpers.d.ts +22 -21
- package/dist/access-service.d.ts +31 -30
- package/dist/access-service.js +55 -50
- package/dist/access-surface-catalog.d.ts +22 -21
- package/dist/access-surface-catalog.js +209 -2
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/access-wearables-meetings-surface.d.ts +3 -3
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +14 -1
- package/dist/active-memory-bridge.js +6 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +4 -2
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/admin-console/public/what-helps-me/app.js +1594 -0
- package/dist/admin-console/public/what-helps-me/index.html +339 -0
- package/dist/admin-console/public/what-helps-me/model.js +685 -0
- package/dist/admin-console/public/what-helps-me/what-helps-me.css +1296 -0
- package/dist/ambient-provenance.d.ts +1 -1
- package/dist/artifact-search.d.ts +1 -1
- package/dist/{auto-sync-TDHLZPVP.js → auto-sync-NR3GPCOA.js} +4 -4
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +9 -9
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +33 -12
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer-turn-helpers.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/buffer.js +3 -3
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{catalog-BOOxl-I2.d.ts → catalog-DGFf8mD9.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +34 -13
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-ZYLC7NFO.js → chunk-26ZXBTYN.js} +4 -4
- package/dist/chunk-26ZXBTYN.js.map +1 -0
- package/dist/{chunk-LLJMAULE.js → chunk-2FKEIPIT.js} +5 -5
- package/dist/{chunk-3CSX3ETE.js → chunk-2LWQSV6A.js} +23 -11
- package/dist/chunk-2LWQSV6A.js.map +1 -0
- package/dist/{chunk-JBPKEARU.js → chunk-2QSZNTDO.js} +7 -7
- package/dist/chunk-37DZZFFM.js +502 -0
- package/dist/chunk-37DZZFFM.js.map +1 -0
- package/dist/chunk-3HSRWJTC.js +9 -0
- package/dist/chunk-3HSRWJTC.js.map +1 -0
- package/dist/{chunk-XUAMCLY4.js → chunk-3TIZPSJC.js} +17 -13
- package/dist/chunk-3TIZPSJC.js.map +1 -0
- package/dist/{chunk-PDDTI7IC.js → chunk-43SEBY2M.js} +1 -1
- package/dist/{chunk-HWRD23DW.js → chunk-46SZBVDS.js} +3 -3
- package/dist/{chunk-6HPHEFXT.js → chunk-5FD7JMTX.js} +2 -2
- package/dist/{chunk-7BZOBA5J.js → chunk-5NB726GV.js} +70 -16
- package/dist/chunk-5NB726GV.js.map +1 -0
- package/dist/chunk-62OKGIJA.js +39 -0
- package/dist/chunk-62OKGIJA.js.map +1 -0
- package/dist/{chunk-IBKR2TFR.js → chunk-6CYHUWCO.js} +2 -2
- package/dist/{chunk-YN6ASZUG.js → chunk-6QPI2ITJ.js} +5 -5
- package/dist/{chunk-UU3G6GUP.js → chunk-76JJSXK7.js} +1 -1
- package/dist/chunk-76JJSXK7.js.map +1 -0
- package/dist/{chunk-PX2LSHYM.js → chunk-7BD6O7ZV.js} +189 -4
- package/dist/chunk-7BD6O7ZV.js.map +1 -0
- package/dist/chunk-7TBXNYLO.js +346 -0
- package/dist/chunk-7TBXNYLO.js.map +1 -0
- package/dist/{chunk-NH5IR2WM.js → chunk-BRR5EUTF.js} +6 -2
- package/dist/chunk-BRR5EUTF.js.map +1 -0
- package/dist/{chunk-NIS256NW.js → chunk-CIAI24TQ.js} +3 -3
- package/dist/{chunk-T2JHZWH6.js → chunk-D3LBIUWV.js} +11703 -7573
- package/dist/chunk-D3LBIUWV.js.map +1 -0
- package/dist/{chunk-7FGL6CGA.js → chunk-DVYRD4HY.js} +2 -2
- package/dist/{chunk-G7Z6EENO.js → chunk-EKTP7MNS.js} +4 -4
- package/dist/{chunk-S75M5ZRK.js → chunk-F2JRDPON.js} +16 -1
- package/dist/chunk-F2JRDPON.js.map +1 -0
- package/dist/{chunk-RZ4XGKOJ.js → chunk-FFRTNF3L.js} +8 -8
- package/dist/{chunk-VKXWK44Q.js → chunk-FONWBCVY.js} +3 -3
- package/dist/{chunk-DZD576ZU.js → chunk-FPLM2TKD.js} +2 -2
- package/dist/{chunk-ZPJ4QSGP.js → chunk-FTPONF6B.js} +2 -2
- package/dist/{chunk-LJS7KUPV.js → chunk-FWX7W5PM.js} +2 -2
- package/dist/{chunk-UTRO5UJU.js → chunk-G6DFSS6A.js} +5 -1
- package/dist/chunk-G6DFSS6A.js.map +1 -0
- package/dist/{chunk-6LAPLZOS.js → chunk-GJ776BC2.js} +8 -3
- package/dist/chunk-GJ776BC2.js.map +1 -0
- package/dist/{chunk-G4T7L557.js → chunk-GN3WRFJY.js} +6 -6
- package/dist/{chunk-QT2FRYI4.js → chunk-H7NAZ3UB.js} +2 -2
- package/dist/{chunk-APPFNGX6.js → chunk-HBUFQRIM.js} +2 -2
- package/dist/{chunk-UU7TRFNE.js → chunk-HGJ6NJ4E.js} +2 -2
- package/dist/{chunk-WB7JSQCP.js → chunk-HIEWDJ2O.js} +5 -2
- package/dist/{chunk-WB7JSQCP.js.map → chunk-HIEWDJ2O.js.map} +1 -1
- package/dist/{chunk-UES4BHA2.js → chunk-I3MSGFGD.js} +17 -6
- package/dist/chunk-I3MSGFGD.js.map +1 -0
- package/dist/{chunk-C4ZNGVK3.js → chunk-IKP5OYQQ.js} +2 -2
- package/dist/{chunk-KQAFEZQX.js → chunk-IPLYGWQF.js} +5 -5
- package/dist/{chunk-RDJRFDJY.js → chunk-IQ4NVWEF.js} +2 -2
- package/dist/{chunk-CGVHPCP2.js → chunk-JYG4OLWH.js} +2 -2
- package/dist/{chunk-WOPA3SGI.js → chunk-K26NWEOC.js} +8 -8
- package/dist/{chunk-K4QS7LXU.js → chunk-K2UGPTYY.js} +485 -44
- package/dist/chunk-K2UGPTYY.js.map +1 -0
- package/dist/{chunk-L6CQ7WIW.js → chunk-KFBOPMF6.js} +11 -11
- package/dist/chunk-KFBOPMF6.js.map +1 -0
- package/dist/{chunk-G7A5HLUS.js → chunk-KJH6W2I7.js} +2 -2
- package/dist/{chunk-IXEBUYO4.js → chunk-KM55SMLG.js} +11 -2
- package/dist/{chunk-IXEBUYO4.js.map → chunk-KM55SMLG.js.map} +1 -1
- package/dist/{chunk-HOIRB77A.js → chunk-L6Z5OAS4.js} +2 -2
- package/dist/chunk-LC2BDILZ.js +57 -0
- package/dist/chunk-LC2BDILZ.js.map +1 -0
- package/dist/{chunk-227UFSEQ.js → chunk-LEPOP46W.js} +4 -4
- package/dist/{chunk-6R4G7N4S.js → chunk-M4YHAODQ.js} +388 -748
- package/dist/chunk-M4YHAODQ.js.map +1 -0
- package/dist/{chunk-3JLPGJ43.js → chunk-MIH3CJPN.js} +5 -5
- package/dist/{chunk-QHFV6VNU.js → chunk-MK5VEWCR.js} +2 -2
- package/dist/chunk-NISZQW72.js +140 -0
- package/dist/chunk-NISZQW72.js.map +1 -0
- package/dist/{chunk-GUKBW4HL.js → chunk-NQMSEB5D.js} +6 -6
- package/dist/{chunk-G2LUMAUF.js → chunk-OCIP6YMD.js} +12 -5
- package/dist/chunk-OCIP6YMD.js.map +1 -0
- package/dist/{chunk-47P3RYZP.js → chunk-PG4QBPVG.js} +21 -11
- package/dist/chunk-PG4QBPVG.js.map +1 -0
- package/dist/{chunk-WRJVB3C2.js → chunk-PO7NXBG2.js} +2 -2
- package/dist/{chunk-QWGE2PUH.js → chunk-PT54WISF.js} +190 -56
- package/dist/chunk-PT54WISF.js.map +1 -0
- package/dist/{chunk-AZM4CCAC.js → chunk-QZLDRQ4I.js} +8 -8
- package/dist/{chunk-THPPCISA.js → chunk-RBII7637.js} +5 -5
- package/dist/{chunk-JDZPNCMA.js → chunk-RUNORG2P.js} +6 -3
- package/dist/chunk-RUNORG2P.js.map +1 -0
- package/dist/{chunk-JV5YUBIZ.js → chunk-RZQ6W2W4.js} +50 -44
- package/dist/chunk-RZQ6W2W4.js.map +1 -0
- package/dist/{chunk-RUMNY5DT.js → chunk-SMNYAMJD.js} +6 -2
- package/dist/chunk-SMNYAMJD.js.map +1 -0
- package/dist/{chunk-MKQBXQKU.js → chunk-TB6CBZ5V.js} +22 -15
- package/dist/chunk-TB6CBZ5V.js.map +1 -0
- package/dist/{chunk-VMMQDEN5.js → chunk-TO7ZTWJW.js} +2 -2
- package/dist/{chunk-K2TDK7GG.js → chunk-TWTUGCTY.js} +2 -2
- package/dist/{chunk-HLYR2TQL.js → chunk-UCTS3DDH.js} +2 -2
- package/dist/{chunk-JYIJNNN3.js → chunk-UG6VXIOK.js} +2 -2
- package/dist/{chunk-WM65LU67.js → chunk-UKYS3NU5.js} +2 -2
- package/dist/{chunk-WDBX6VER.js → chunk-UPLZNJKN.js} +5 -5
- package/dist/{chunk-C23BYTJV.js → chunk-UW5NPZJ2.js} +40 -12
- package/dist/chunk-UW5NPZJ2.js.map +1 -0
- package/dist/{chunk-2GFK22OZ.js → chunk-V6ERBR7U.js} +2 -2
- package/dist/{chunk-CYF6WVE7.js → chunk-W5ZKPI34.js} +139 -158
- package/dist/chunk-W5ZKPI34.js.map +1 -0
- package/dist/chunk-XX4HPFFM.js +370 -0
- package/dist/chunk-XX4HPFFM.js.map +1 -0
- package/dist/{chunk-ZMYDYNI4.js → chunk-XZHE2DEN.js} +4 -4
- package/dist/chunk-YXQEKCZM.js +223 -0
- package/dist/chunk-YXQEKCZM.js.map +1 -0
- package/dist/{chunk-GYPQL6XN.js → chunk-Z4N7SVVF.js} +35 -47
- package/dist/chunk-Z4N7SVVF.js.map +1 -0
- package/dist/{chunk-MAXVH44E.js → chunk-Z54EM5YZ.js} +7 -7
- package/dist/{chunk-YGLY6QFV.js → chunk-ZRZVLB7O.js} +2 -2
- package/dist/{chunk-4IIFL7GC.js → chunk-ZUKIUXHQ.js} +10 -10
- package/dist/{cli-DVUFIa5E.d.ts → cli-Bze8S0Qs.d.ts} +5 -5
- package/dist/cli.d.ts +22 -21
- package/dist/cli.js +90 -80
- package/dist/coding/pre-action-gate.d.ts +1 -1
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +33 -12
- package/dist/compounding/preference-consolidator.d.ts +1 -1
- package/dist/compression-optimizer.d.ts +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +4 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +33 -12
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +32 -12
- package/dist/consolidation-provenance-check.d.ts +2 -2
- package/dist/consolidation-undo.d.ts +2 -2
- package/dist/contradiction/index.d.ts +2 -2
- package/dist/contradiction/index.js +3 -1
- package/dist/contradiction-scan-JDTBXRGW.js +20 -0
- package/dist/converge-config.d.ts +1 -1
- package/dist/convergence-refresh.d.ts +2 -2
- package/dist/convergence-refresh.js +35 -14
- package/dist/conversation-index/backend.d.ts +1 -1
- package/dist/conversation-index/backend.js +2 -2
- package/dist/conversation-index/chunker.d.ts +1 -1
- package/dist/conversation-index/faiss-adapter.d.ts +1 -1
- package/dist/conversation-index/indexer.d.ts +1 -1
- package/dist/conversation-index/search.d.ts +1 -1
- package/dist/corpus-watermark.d.ts +1 -1
- package/dist/corpus-watermark.js +25 -24
- package/dist/day-summary.d.ts +1 -1
- package/dist/delinearize.d.ts +1 -1
- package/dist/dependency-propagation-config.d.ts +1 -1
- package/dist/{dependency-propagation-delivery-XzF76C9n.d.ts → dependency-propagation-delivery-CzEfB31P.d.ts} +1 -1
- package/dist/direct-answer-wiring.d.ts +1 -1
- package/dist/direct-answer.d.ts +1 -1
- package/dist/embedding-fallback.d.ts +1 -1
- package/dist/enrichment/index.d.ts +1 -1
- package/dist/entity-retrieval.d.ts +2 -2
- package/dist/entity-retrieval.js +33 -12
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +9 -9
- package/dist/explicit-capture.js +7 -4
- package/dist/external-wiki-access.d.ts +22 -21
- package/dist/external-wiki-access.js +56 -51
- package/dist/external-wiki-collection-registration.d.ts +1 -1
- package/dist/external-wiki-collection.d.ts +1 -1
- package/dist/external-wiki-mcp-tools.d.ts +22 -21
- package/dist/extraction-error-classification.d.ts +1 -1
- package/dist/extraction-faithfulness.d.ts +1 -1
- package/dist/extraction-faithfulness.js +2 -2
- package/dist/extraction-judge-telemetry.d.ts +1 -1
- package/dist/extraction-judge-training.d.ts +1 -1
- package/dist/extraction-judge.d.ts +1 -1
- package/dist/extraction-judge.js +2 -2
- package/dist/extraction-liveness.d.ts +1 -1
- package/dist/extraction-normalization.d.ts +1 -1
- package/dist/extraction-prompt.d.ts +1 -1
- package/dist/extraction-source-grounding-rules.d.ts +1 -1
- package/dist/extraction-source-grounding.d.ts +1 -1
- package/dist/extraction.d.ts +1 -1
- package/dist/extraction.js +35 -19
- package/dist/fallback-llm.d.ts +14 -1
- package/dist/fallback-llm.js +1 -1
- package/dist/{first-start-migration-626C5554.js → first-start-migration-CRZCZAJN.js} +11 -3
- package/dist/first-start-migration-CRZCZAJN.js.map +1 -0
- package/dist/graph-dashboard-diff.d.ts +1 -1
- package/dist/graph-dashboard-key.d.ts +1 -1
- package/dist/graph-dashboard-parser.d.ts +1 -1
- package/dist/graph-edge-reinforcement.d.ts +1 -1
- package/dist/graph-path-reconstruction.d.ts +1 -1
- package/dist/graph-path-scoring.d.ts +1 -1
- package/dist/graph-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/importers/index.d.ts +1 -1
- package/dist/in-flight-reads.d.ts +1 -1
- package/dist/index.d.ts +314 -308
- package/dist/index.js +304 -133
- package/dist/inline-script.d.ts +3 -0
- package/dist/inline-script.js +8 -0
- package/dist/inline-script.js.map +1 -0
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.d.ts +1 -1
- package/dist/lcm/index.js +6 -6
- package/dist/lcm/tools.d.ts +1 -1
- package/dist/lifecycle.d.ts +1 -1
- package/dist/live-connectors-runner.d.ts +1 -1
- package/dist/local-llm.d.ts +2 -1
- package/dist/local-llm.js +2 -2
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +33 -12
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +33 -12
- package/dist/maintenance/rebuild-memory-projection.d.ts +2 -2
- package/dist/maintenance/rebuild-memory-projection.js +34 -13
- package/dist/{maintenance-BJzNIKBE.d.ts → maintenance-C8aRWfhq.d.ts} +3 -3
- package/dist/mcp-memory-inspector-app.d.ts +22 -21
- package/dist/mcp-read-only-tools.js +1 -1
- package/dist/memory-action-policy.d.ts +1 -1
- package/dist/memory-cache.d.ts +1 -1
- package/dist/memory-lifecycle-ledger-utils.d.ts +1 -1
- package/dist/memory-projection-mutations.js +2 -2
- package/dist/memory-projection-store.d.ts +6 -2
- package/dist/memory-projection-store.js +1 -1
- package/dist/memory-provenance.d.ts +1 -1
- package/dist/memory-snapshot.d.ts +1 -1
- package/dist/memory-worth-outcomes.d.ts +2 -2
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +3 -3
- package/dist/namespaces/migrate.js +24 -23
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/search.js +8 -8
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +33 -12
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-file-io.d.ts +20 -0
- package/dist/offline-sync-file-io.js +18 -0
- package/dist/offline-sync-file-io.js.map +1 -0
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/offline-sync-impression-drain.js +5 -5
- package/dist/offline-sync.d.ts +8 -6
- package/dist/offline-sync.js +2 -1
- package/dist/operator-doctor-corpus.d.ts +1 -1
- package/dist/operator-doctor-corpus.js +26 -25
- package/dist/operator-doctor-replica.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +3 -3
- package/dist/operator-toolkit.js +39 -36
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +4 -4
- package/dist/orchestration/maintenance.js +38 -18
- package/dist/{orchestrator-BiXgBJBQ.d.ts → orchestrator-D85CzDDY.d.ts} +11 -8
- package/dist/orchestrator.d.ts +9 -9
- package/dist/orchestrator.js +117 -109
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-sz_dcuLg.d.ts → pipeline-DPcUifCO.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/proactive-contention.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/public-http-D-SyWNj6.d.ts +25 -0
- package/dist/{purge-533FZLS4.js → purge-GB7PZHT2.js} +2 -2
- package/dist/{qmd-eAWObK4M.d.ts → qmd-dFCHp1r0.d.ts} +1 -1
- package/dist/qmd-preflight.d.ts +2 -2
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.d.ts +2 -2
- package/dist/recall-concurrency-config.d.ts +1 -1
- package/dist/recall-disclosure-escalation.d.ts +1 -1
- package/dist/recall-explain-renderer.d.ts +1 -1
- package/dist/recall-explain-renderer.js +3 -3
- package/dist/recall-memory-map.d.ts +1 -1
- package/dist/recall-planner-llm.d.ts +1 -1
- package/dist/recall-planner-llm.js +1 -1
- package/dist/recall-state.d.ts +1 -1
- package/dist/recall-tag-filter.d.ts +1 -1
- package/dist/recall-timings.d.ts +1 -1
- package/dist/recall-xray-cli.d.ts +1 -1
- package/dist/recall-xray-cli.js +4 -4
- package/dist/recall-xray-renderer.d.ts +1 -1
- package/dist/recall-xray-renderer.js +3 -3
- package/dist/recall-xray.d.ts +1 -1
- package/dist/recall-xray.js +2 -2
- package/dist/reconcile/cursor.d.ts +2 -1
- package/dist/reconcile/manifest.d.ts +2 -1
- package/dist/reconcile/manifest.js +6 -5
- package/dist/reconcile/plan.d.ts +2 -1
- package/dist/reconcile/plan.js +3 -2
- package/dist/replay/normalizers/chatgpt.d.ts +1 -1
- package/dist/replay/normalizers/claude.d.ts +1 -1
- package/dist/replay/normalizers/openclaw.d.ts +1 -1
- package/dist/replay/normalizers/shared.d.ts +1 -1
- package/dist/replay/runner.d.ts +1 -1
- package/dist/replay/types.d.ts +1 -1
- package/dist/replica-divergence.d.ts +1 -1
- package/dist/replica-peers-config.d.ts +1 -1
- package/dist/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +5 -3
- package/dist/retrieval-agents.d.ts +2 -2
- package/dist/retrieval-tiers.d.ts +1 -1
- package/dist/routing/engine.d.ts +1 -1
- package/dist/routing/store.d.ts +1 -1
- package/dist/salvage-envelope.d.ts +1 -1
- package/dist/schemas.d.ts +38 -38
- package/dist/{scope-profiles-BBQsXuyj.d.ts → scope-profiles-DICK7GtN.d.ts} +1 -1
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/factory.js +6 -6
- package/dist/search/index.d.ts +1 -1
- package/dist/search/index.js +12 -12
- package/dist/search/lancedb-backend.d.ts +1 -1
- package/dist/search/meilisearch-backend.d.ts +1 -1
- package/dist/search/noop-backend.d.ts +1 -1
- package/dist/search/orama-backend.d.ts +1 -1
- package/dist/search/port.d.ts +1 -1
- package/dist/search/remote-backend.d.ts +1 -1
- package/dist/{semantic-consolidation-HD8RkzVA.d.ts → semantic-consolidation-BP7NAX0N.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +34 -13
- package/dist/semantic-rule-promotion.js +33 -12
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +33 -12
- package/dist/{service-DIrtHHEg.d.ts → service-DT-pJyda.d.ts} +660 -660
- package/dist/session-observer-bands.d.ts +1 -1
- package/dist/session-observer-state.d.ts +1 -1
- package/dist/shared-context/manager.d.ts +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/source-agent-qualifier.d.ts +1 -1
- package/dist/source-agent-qualifier.js +31 -15
- package/dist/{storage-DqCzXi56.d.ts → storage-qOnaJ1Lw.d.ts} +49 -13
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +33 -12
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +5 -5
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/support-passport/index.d.ts +518 -0
- package/dist/support-passport/index.js +357 -0
- package/dist/support-passport/index.js.map +1 -0
- package/dist/temporal-supersession.d.ts +2 -2
- package/dist/temporal-timeline-recall.d.ts +1 -1
- package/dist/temporal-validity.d.ts +1 -1
- package/dist/threading.d.ts +1 -1
- package/dist/tier-migration.d.ts +2 -2
- package/dist/tier-routing.d.ts +2 -2
- package/dist/tier-routing.js +7 -1
- package/dist/{tier-stats-2JCZYEF7.js → tier-stats-EXYSKSVN.js} +8 -2
- package/dist/{tier-stats-2JCZYEF7.js.map → tier-stats-EXYSKSVN.js.map} +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/autodetect.js +1 -1
- package/dist/transfer/backup.js +1 -1
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/types.d.ts +36 -36
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-d_j4vC6N.d.ts → types-ed-SvS2t.d.ts} +8 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +2 -2
- package/dist/verified-recall.js +33 -12
- package/dist/write-envelope.d.ts +1 -1
- package/dist/write-rate-limiter.d.ts +11 -5
- package/dist/write-rate-limiter.js +1 -1
- package/package.json +12 -2
- package/scripts/build-with-heap.mjs +11 -1
- package/src/access-authorization-probe.ts +20 -2
- package/src/access-boundary.ts +32 -0
- package/src/access-http.test.ts +1971 -643
- package/src/access-http.ts +81 -74
- package/src/access-mcp.ts +3 -1
- package/src/access-memory-search-fanout.ts +24 -1
- package/src/access-offline-manifest.ts +5 -0
- package/src/access-operations.ts +2 -0
- package/src/access-service-namespace.test.ts +14 -0
- package/src/access-service-observe-scope.test.ts +2 -0
- package/src/access-service-offline-file-content.test.ts +211 -0
- package/src/access-service.ts +628 -884
- package/src/access-surface-catalog.test.ts +40 -10
- package/src/access-surface-catalog.ts +15 -0
- package/src/active-memory-bridge.test.ts +151 -0
- package/src/active-memory-bridge.ts +95 -21
- package/src/briefing.test.ts +38 -0
- package/src/briefing.ts +3 -3
- package/src/cli.ts +6 -1
- package/src/config.ts +18 -9
- package/src/connectors/codex-materialize-runner.ts +2 -0
- package/src/contradiction/contradiction-scan.ts +2 -0
- package/src/contradiction/contradiction.test.ts +42 -0
- package/src/correction/correction-access-wiring.ts +8 -2
- package/src/correction/correction-storage-integration.test.ts +7 -0
- package/src/explicit-capture.test.ts +24 -0
- package/src/explicit-capture.ts +2 -0
- package/src/fallback-llm.test.ts +54 -0
- package/src/fallback-llm.ts +54 -9
- package/src/index.ts +3 -0
- package/src/inline-script.ts +6 -0
- package/src/local-llm-headers-timeout.test.ts +42 -0
- package/src/local-llm.ts +8 -8
- package/src/maintenance/first-start-migration.ts +2 -1
- package/src/maintenance/memory-governance.test.ts +25 -0
- package/src/maintenance/memory-governance.ts +4 -1
- package/src/maintenance/pattern-reinforcement.test.ts +20 -0
- package/src/maintenance/pattern-reinforcement.ts +2 -1
- package/src/maintenance/rebuild-memory-projection.ts +8 -8
- package/src/mcp-read-only-tools.ts +3 -0
- package/src/memory-projection-store.ts +25 -27
- package/src/offline-sync-file-io.ts +68 -0
- package/src/offline-sync.ts +43 -57
- package/src/orchestration/consolidation-run.ts +5 -4
- package/src/orchestration/contradiction-linking-coordinator.ts +7 -0
- package/src/orchestration/contradiction-localization.integration.test.ts +115 -0
- package/src/orchestration/lifecycle-policy-coordinator.ts +2 -1
- package/src/orchestration/qmd-result-resolver.test.ts +215 -14
- package/src/orchestration/qmd-result-resolver.ts +142 -82
- package/src/orchestration/recall-search-pipeline.test.ts +41 -0
- package/src/orchestration/recall-search-pipeline.ts +12 -0
- package/src/orchestration/semantic-consolidation-coordinator.ts +2 -1
- package/src/orchestration/tier-migration-coordinator.ts +23 -56
- package/src/orchestration/workspace-ops.test.ts +37 -0
- package/src/orchestration/workspace-ops.ts +5 -29
- package/src/orchestrator.ts +7 -8
- package/src/relay/mission-access.test.ts +11 -11
- package/src/relay/mission-ui.test.ts +3 -1
- package/src/storage/supersession-audit.ts +7 -1
- package/src/storage/supersession-side-effects.ts +17 -5
- package/src/storage/tombstone-blocked-capture-sync.ts +31 -0
- package/src/storage-contract/failure-semantics.test.ts +102 -0
- package/src/storage.ts +18 -19
- package/src/support-passport/access-http-base.ts +143 -0
- package/src/support-passport/access-http.ts +172 -0
- package/src/support-passport/access-operations.ts +272 -0
- package/src/support-passport/access-service-base.test.ts +193 -0
- package/src/support-passport/access-service-base.ts +176 -0
- package/src/support-passport/access-surface.test.ts +283 -0
- package/src/support-passport/access-surface.ts +286 -0
- package/src/support-passport/card-projection.test.ts +137 -0
- package/src/support-passport/card-projection.ts +348 -0
- package/src/support-passport/card-replacement.ts +126 -0
- package/src/support-passport/card-service-commit-forwarding.test.ts +160 -0
- package/src/support-passport/card-service.test.ts +2964 -0
- package/src/support-passport/card-service.ts +1184 -0
- package/src/support-passport/card-state.ts +158 -0
- package/src/support-passport/config-model-routing.test.ts +37 -0
- package/src/support-passport/config.test.ts +34 -0
- package/src/support-passport/config.ts +41 -0
- package/src/support-passport/contracts.test.ts +156 -0
- package/src/support-passport/contracts.ts +149 -0
- package/src/support-passport/errors.ts +30 -0
- package/src/support-passport/generated-batch.test.ts +185 -0
- package/src/support-passport/generated-batch.ts +338 -0
- package/src/support-passport/grant-contracts.ts +183 -0
- package/src/support-passport/grant-generated-batch-scope.test.ts +201 -0
- package/src/support-passport/grant-service-cache.test.ts +148 -0
- package/src/support-passport/grant-service-cancellation.test.ts +83 -0
- package/src/support-passport/grant-service-marker-cache.test.ts +62 -0
- package/src/support-passport/grant-service.test.ts +3496 -0
- package/src/support-passport/grant-service.ts +513 -0
- package/src/support-passport/grant-store-commit-hook.test.ts +123 -0
- package/src/support-passport/grant-store-order.test.ts +60 -0
- package/src/support-passport/grant-store-path-safety.test.ts +30 -0
- package/src/support-passport/grant-store-recovery.test.ts +448 -0
- package/src/support-passport/grant-store.ts +906 -0
- package/src/support-passport/index.ts +17 -0
- package/src/support-passport/mcp-tools.test.ts +222 -0
- package/src/support-passport/mcp-tools.ts +187 -0
- package/src/support-passport/model-adapter.test.ts +840 -0
- package/src/support-passport/model-adapter.ts +602 -0
- package/src/support-passport/model-audit-pinned-write.test.ts +59 -0
- package/src/support-passport/model-audit.ts +152 -0
- package/src/support-passport/model-bridge.test.ts +456 -0
- package/src/support-passport/model-bridge.ts +439 -0
- package/src/support-passport/model-contracts.ts +124 -0
- package/src/support-passport/model-service.test.ts +1731 -0
- package/src/support-passport/model-service.ts +399 -0
- package/src/support-passport/offline-sync-guard.ts +230 -0
- package/src/support-passport/owner-http.test.ts +671 -0
- package/src/support-passport/owner-lock.ts +70 -0
- package/src/support-passport/private-file.test.ts +99 -0
- package/src/support-passport/private-file.ts +498 -0
- package/src/support-passport/public-http.test.ts +476 -0
- package/src/support-passport/public-http.ts +601 -0
- package/src/support-passport/ui.test.ts +181 -0
- package/src/tier-routing.ts +28 -17
- package/src/training-export/converter.test.ts +24 -0
- package/src/training-export/converter.ts +2 -0
- package/src/types.ts +8 -1
- package/src/wearables/service.test.ts +13 -0
- package/src/wearables/service.ts +2 -0
- package/src/write-rate-limiter.test.ts +30 -6
- package/src/write-rate-limiter.ts +29 -18
- package/dist/chunk-3CSX3ETE.js.map +0 -1
- package/dist/chunk-47P3RYZP.js.map +0 -1
- package/dist/chunk-6LAPLZOS.js.map +0 -1
- package/dist/chunk-6R4G7N4S.js.map +0 -1
- package/dist/chunk-7BZOBA5J.js.map +0 -1
- package/dist/chunk-C23BYTJV.js.map +0 -1
- package/dist/chunk-CYF6WVE7.js.map +0 -1
- package/dist/chunk-G2LUMAUF.js.map +0 -1
- package/dist/chunk-GYPQL6XN.js.map +0 -1
- package/dist/chunk-JDZPNCMA.js.map +0 -1
- package/dist/chunk-JV5YUBIZ.js.map +0 -1
- package/dist/chunk-K4QS7LXU.js.map +0 -1
- package/dist/chunk-L6CQ7WIW.js.map +0 -1
- package/dist/chunk-MKQBXQKU.js.map +0 -1
- package/dist/chunk-NH5IR2WM.js.map +0 -1
- package/dist/chunk-PX2LSHYM.js.map +0 -1
- package/dist/chunk-QWGE2PUH.js.map +0 -1
- package/dist/chunk-RUMNY5DT.js.map +0 -1
- package/dist/chunk-S75M5ZRK.js.map +0 -1
- package/dist/chunk-T2JHZWH6.js.map +0 -1
- package/dist/chunk-UES4BHA2.js.map +0 -1
- package/dist/chunk-UTRO5UJU.js.map +0 -1
- package/dist/chunk-UU3G6GUP.js.map +0 -1
- package/dist/chunk-XUAMCLY4.js.map +0 -1
- package/dist/chunk-ZYLC7NFO.js.map +0 -1
- package/dist/contradiction-scan-HYLIRMJ2.js +0 -14
- package/dist/first-start-migration-626C5554.js.map +0 -1
- /package/dist/{auto-sync-TDHLZPVP.js.map → auto-sync-NR3GPCOA.js.map} +0 -0
- /package/dist/{chunk-LLJMAULE.js.map → chunk-2FKEIPIT.js.map} +0 -0
- /package/dist/{chunk-JBPKEARU.js.map → chunk-2QSZNTDO.js.map} +0 -0
- /package/dist/{chunk-PDDTI7IC.js.map → chunk-43SEBY2M.js.map} +0 -0
- /package/dist/{chunk-HWRD23DW.js.map → chunk-46SZBVDS.js.map} +0 -0
- /package/dist/{chunk-6HPHEFXT.js.map → chunk-5FD7JMTX.js.map} +0 -0
- /package/dist/{chunk-IBKR2TFR.js.map → chunk-6CYHUWCO.js.map} +0 -0
- /package/dist/{chunk-YN6ASZUG.js.map → chunk-6QPI2ITJ.js.map} +0 -0
- /package/dist/{chunk-NIS256NW.js.map → chunk-CIAI24TQ.js.map} +0 -0
- /package/dist/{chunk-7FGL6CGA.js.map → chunk-DVYRD4HY.js.map} +0 -0
- /package/dist/{chunk-G7Z6EENO.js.map → chunk-EKTP7MNS.js.map} +0 -0
- /package/dist/{chunk-RZ4XGKOJ.js.map → chunk-FFRTNF3L.js.map} +0 -0
- /package/dist/{chunk-VKXWK44Q.js.map → chunk-FONWBCVY.js.map} +0 -0
- /package/dist/{chunk-DZD576ZU.js.map → chunk-FPLM2TKD.js.map} +0 -0
- /package/dist/{chunk-ZPJ4QSGP.js.map → chunk-FTPONF6B.js.map} +0 -0
- /package/dist/{chunk-LJS7KUPV.js.map → chunk-FWX7W5PM.js.map} +0 -0
- /package/dist/{chunk-G4T7L557.js.map → chunk-GN3WRFJY.js.map} +0 -0
- /package/dist/{chunk-QT2FRYI4.js.map → chunk-H7NAZ3UB.js.map} +0 -0
- /package/dist/{chunk-APPFNGX6.js.map → chunk-HBUFQRIM.js.map} +0 -0
- /package/dist/{chunk-UU7TRFNE.js.map → chunk-HGJ6NJ4E.js.map} +0 -0
- /package/dist/{chunk-C4ZNGVK3.js.map → chunk-IKP5OYQQ.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-IPLYGWQF.js.map} +0 -0
- /package/dist/{chunk-RDJRFDJY.js.map → chunk-IQ4NVWEF.js.map} +0 -0
- /package/dist/{chunk-CGVHPCP2.js.map → chunk-JYG4OLWH.js.map} +0 -0
- /package/dist/{chunk-WOPA3SGI.js.map → chunk-K26NWEOC.js.map} +0 -0
- /package/dist/{chunk-G7A5HLUS.js.map → chunk-KJH6W2I7.js.map} +0 -0
- /package/dist/{chunk-HOIRB77A.js.map → chunk-L6Z5OAS4.js.map} +0 -0
- /package/dist/{chunk-227UFSEQ.js.map → chunk-LEPOP46W.js.map} +0 -0
- /package/dist/{chunk-3JLPGJ43.js.map → chunk-MIH3CJPN.js.map} +0 -0
- /package/dist/{chunk-QHFV6VNU.js.map → chunk-MK5VEWCR.js.map} +0 -0
- /package/dist/{chunk-GUKBW4HL.js.map → chunk-NQMSEB5D.js.map} +0 -0
- /package/dist/{chunk-WRJVB3C2.js.map → chunk-PO7NXBG2.js.map} +0 -0
- /package/dist/{chunk-AZM4CCAC.js.map → chunk-QZLDRQ4I.js.map} +0 -0
- /package/dist/{chunk-THPPCISA.js.map → chunk-RBII7637.js.map} +0 -0
- /package/dist/{chunk-VMMQDEN5.js.map → chunk-TO7ZTWJW.js.map} +0 -0
- /package/dist/{chunk-K2TDK7GG.js.map → chunk-TWTUGCTY.js.map} +0 -0
- /package/dist/{chunk-HLYR2TQL.js.map → chunk-UCTS3DDH.js.map} +0 -0
- /package/dist/{chunk-JYIJNNN3.js.map → chunk-UG6VXIOK.js.map} +0 -0
- /package/dist/{chunk-WM65LU67.js.map → chunk-UKYS3NU5.js.map} +0 -0
- /package/dist/{chunk-WDBX6VER.js.map → chunk-UPLZNJKN.js.map} +0 -0
- /package/dist/{chunk-2GFK22OZ.js.map → chunk-V6ERBR7U.js.map} +0 -0
- /package/dist/{chunk-ZMYDYNI4.js.map → chunk-XZHE2DEN.js.map} +0 -0
- /package/dist/{chunk-MAXVH44E.js.map → chunk-Z54EM5YZ.js.map} +0 -0
- /package/dist/{chunk-YGLY6QFV.js.map → chunk-ZRZVLB7O.js.map} +0 -0
- /package/dist/{chunk-4IIFL7GC.js.map → chunk-ZUKIUXHQ.js.map} +0 -0
- /package/dist/{contradiction-scan-HYLIRMJ2.js.map → contradiction-scan-JDTBXRGW.js.map} +0 -0
- /package/dist/{purge-533FZLS4.js.map → purge-GB7PZHT2.js.map} +0 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeNamespaceIdentity
|
|
3
|
+
} from "./chunk-EGGE52UU.js";
|
|
4
|
+
import {
|
|
5
|
+
stripAttributesSuffix
|
|
6
|
+
} from "./chunk-JDSVLVCG.js";
|
|
7
|
+
import {
|
|
8
|
+
parseIsoOffsetTimestamp
|
|
9
|
+
} from "./chunk-P7FMDTKL.js";
|
|
10
|
+
|
|
11
|
+
// src/support-passport/contracts.ts
|
|
12
|
+
import { createHash } from "crypto";
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
var SUPPORT_PASSPORT_CARD_CATEGORIES = [
|
|
15
|
+
"communication",
|
|
16
|
+
"environment",
|
|
17
|
+
"transitions",
|
|
18
|
+
"sensory",
|
|
19
|
+
"regulation",
|
|
20
|
+
"interests",
|
|
21
|
+
"other"
|
|
22
|
+
];
|
|
23
|
+
var SUPPORT_PASSPORT_CARD_STATUSES = [
|
|
24
|
+
"pending_review",
|
|
25
|
+
"active",
|
|
26
|
+
"rejected",
|
|
27
|
+
"superseded",
|
|
28
|
+
"archived"
|
|
29
|
+
];
|
|
30
|
+
var SupportPassportCardCategorySchema = z.enum(SUPPORT_PASSPORT_CARD_CATEGORIES);
|
|
31
|
+
var SupportPassportCardStatusSchema = z.enum(SUPPORT_PASSPORT_CARD_STATUSES);
|
|
32
|
+
var SupportPassportCardTitleSchema = z.string().trim().min(1).max(80).refine((title) => !title.includes("]") && !title.includes("\n") && !title.includes("\r"), {
|
|
33
|
+
message: "card titles cannot contain closing brackets or line breaks"
|
|
34
|
+
});
|
|
35
|
+
var IsoTimestampSchema = z.string().datetime({ offset: true }).refine((value) => parseIsoOffsetTimestamp(value) !== null, {
|
|
36
|
+
message: "timestamps must be valid ISO 8601 values"
|
|
37
|
+
});
|
|
38
|
+
var SupportPassportNamespaceSchema = z.string().min(1).refine((namespace) => namespace === normalizeNamespaceIdentity(namespace), {
|
|
39
|
+
message: "namespaces must be canonical"
|
|
40
|
+
});
|
|
41
|
+
var SupportPassportMemoryIdSchema = z.string().trim().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/);
|
|
42
|
+
var SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH = 512;
|
|
43
|
+
var SupportPassportSourceMemoryIdSchema = z.string().trim().min(1).max(SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH);
|
|
44
|
+
var SupportPassportCardSchema = z.object({
|
|
45
|
+
cardId: SupportPassportMemoryIdSchema,
|
|
46
|
+
title: SupportPassportCardTitleSchema,
|
|
47
|
+
statement: z.string().trim().min(1).max(500),
|
|
48
|
+
category: SupportPassportCardCategorySchema,
|
|
49
|
+
status: SupportPassportCardStatusSchema,
|
|
50
|
+
updatedAt: IsoTimestampSchema,
|
|
51
|
+
reviewBy: IsoTimestampSchema,
|
|
52
|
+
revision: z.string().regex(/^[a-f0-9]{64}$/)
|
|
53
|
+
}).strict();
|
|
54
|
+
var SupportPassportCardListSchema = z.array(SupportPassportCardSchema).max(100).superRefine((cards, ctx) => {
|
|
55
|
+
const seen = /* @__PURE__ */ new Set();
|
|
56
|
+
for (const [index, card] of cards.entries()) {
|
|
57
|
+
if (seen.has(card.cardId)) {
|
|
58
|
+
ctx.addIssue({
|
|
59
|
+
code: z.ZodIssueCode.custom,
|
|
60
|
+
message: "card IDs must be unique",
|
|
61
|
+
path: [index, "cardId"]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
seen.add(card.cardId);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
var SupportPassportListCardsInputSchema = z.object({
|
|
68
|
+
principal: z.string().trim().min(1).max(512)
|
|
69
|
+
}).strict();
|
|
70
|
+
var SupportPassportManualDraftInputSchema = z.object({
|
|
71
|
+
principal: z.string().trim().min(1).max(512),
|
|
72
|
+
title: SupportPassportCardTitleSchema,
|
|
73
|
+
statement: z.string().trim().min(1).max(500),
|
|
74
|
+
category: SupportPassportCardCategorySchema,
|
|
75
|
+
reviewBy: IsoTimestampSchema
|
|
76
|
+
}).strict();
|
|
77
|
+
var SupportPassportCardMutationInputSchema = z.object({
|
|
78
|
+
principal: z.string().trim().min(1).max(512),
|
|
79
|
+
cardId: SupportPassportMemoryIdSchema,
|
|
80
|
+
expectedRevision: z.string().regex(/^[a-f0-9]{64}$/),
|
|
81
|
+
reasonCode: z.string().trim().min(1).max(64).regex(/^[a-z0-9-]+$/).optional()
|
|
82
|
+
}).strict();
|
|
83
|
+
var SupportPassportReplaceCardInputSchema = SupportPassportCardMutationInputSchema.extend({
|
|
84
|
+
title: SupportPassportCardTitleSchema,
|
|
85
|
+
statement: z.string().trim().min(1).max(500),
|
|
86
|
+
category: SupportPassportCardCategorySchema,
|
|
87
|
+
reviewBy: IsoTimestampSchema
|
|
88
|
+
}).strict();
|
|
89
|
+
function computeSupportPassportCardRevision(fields) {
|
|
90
|
+
const canonicalFields = {
|
|
91
|
+
cardId: fields.cardId,
|
|
92
|
+
category: fields.category,
|
|
93
|
+
reviewBy: fields.reviewBy,
|
|
94
|
+
statement: fields.statement,
|
|
95
|
+
status: fields.status,
|
|
96
|
+
title: fields.title,
|
|
97
|
+
updatedAt: fields.updatedAt
|
|
98
|
+
};
|
|
99
|
+
return createHash("sha256").update(JSON.stringify(canonicalFields)).digest("hex");
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// src/support-passport/card-projection.ts
|
|
103
|
+
import { createHash as createHash2 } from "crypto";
|
|
104
|
+
import { lstat } from "fs/promises";
|
|
105
|
+
var SUPPORT_PASSPORT_CARD_TAG = "support-passport-card";
|
|
106
|
+
var SUPPORT_PASSPORT_AUDIT_TAG = "support-passport-audit";
|
|
107
|
+
function isSupportPassportPrivateMemory(memory) {
|
|
108
|
+
const tags = memory.frontmatter.tags;
|
|
109
|
+
if (tags?.includes(SUPPORT_PASSPORT_CARD_TAG) === true || tags?.includes(SUPPORT_PASSPORT_AUDIT_TAG) === true) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
return Object.keys(memory.frontmatter.structuredAttributes ?? {}).some((key) => key.startsWith("support-passport-"));
|
|
113
|
+
}
|
|
114
|
+
function excludeSupportPassportPrivateMemories(memories) {
|
|
115
|
+
return memories.filter((memory) => !isSupportPassportPrivateMemory(memory));
|
|
116
|
+
}
|
|
117
|
+
function createSupportPassportPrivateFileExclusion(storage) {
|
|
118
|
+
const classifications = /* @__PURE__ */ new Map();
|
|
119
|
+
return async ({ filePath }) => {
|
|
120
|
+
let file;
|
|
121
|
+
try {
|
|
122
|
+
file = await lstat(filePath);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
if (error.code === "ENOENT") {
|
|
125
|
+
classifications.delete(filePath);
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
130
|
+
const identity = `${file.dev}:${file.ino}:${file.size}:${file.mtimeMs}:${file.ctimeMs}`;
|
|
131
|
+
const cached = classifications.get(filePath);
|
|
132
|
+
if (cached?.identity === identity) return await cached.excluded;
|
|
133
|
+
const excluded = storage.readMemoryByPath(filePath).then((memory) => memory ? isSupportPassportPrivateMemory(memory) : false);
|
|
134
|
+
classifications.set(filePath, { identity, excluded });
|
|
135
|
+
try {
|
|
136
|
+
return await excluded;
|
|
137
|
+
} catch (error) {
|
|
138
|
+
if (classifications.get(filePath)?.excluded === excluded) classifications.delete(filePath);
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
var SUPPORT_PASSPORT_ATTRIBUTE_KEYS = Object.freeze({
|
|
144
|
+
namespace: "support-passport-namespace",
|
|
145
|
+
namespaceEncoding: "support-passport-namespace-encoding",
|
|
146
|
+
owner: "support-passport-owner",
|
|
147
|
+
title: "support-passport-title",
|
|
148
|
+
category: "support-passport-category",
|
|
149
|
+
order: "support-passport-order",
|
|
150
|
+
reviewBy: "support-passport-review-by",
|
|
151
|
+
sourceMemoryIds: "support-passport-source-ids",
|
|
152
|
+
replacesDraftId: "support-passport-replaces-draft-id",
|
|
153
|
+
replacedRevision: "support-passport-replaced-revision",
|
|
154
|
+
draftReplacementPrepared: "support-passport-draft-replacement-prepared",
|
|
155
|
+
replacementComplete: "support-passport-replacement-complete",
|
|
156
|
+
generatedBatchId: "support-passport-generated-batch-id",
|
|
157
|
+
generatedBatchSize: "support-passport-generated-batch-size"
|
|
158
|
+
});
|
|
159
|
+
var SUPPORT_PASSPORT_NAMESPACE_ENCODING = "base64url-v1";
|
|
160
|
+
var SUPPORT_PASSPORT_NAMESPACE_CHUNK_PREFIX = "support-passport-namespace-";
|
|
161
|
+
var SUPPORT_PASSPORT_NAMESPACE_CHUNK_SIZE = 1024;
|
|
162
|
+
var LegacySupportPassportNamespaceSchema = SupportPassportNamespaceSchema.refine(
|
|
163
|
+
(namespace) => !namespace.includes("/") && !namespace.includes("\\") && !namespace.includes("..") && !namespace.includes("]") && !namespace.includes("\0") && !namespace.includes("\n") && !namespace.includes("\r")
|
|
164
|
+
);
|
|
165
|
+
function encodeSupportPassportNamespaceAttributes(namespace) {
|
|
166
|
+
const canonical = SupportPassportNamespaceSchema.parse(namespace);
|
|
167
|
+
const encoded = Buffer.from(canonical, "utf8").toString("base64url");
|
|
168
|
+
const chunks = encoded.match(new RegExp(`.{1,${SUPPORT_PASSPORT_NAMESPACE_CHUNK_SIZE}}`, "g")) ?? [];
|
|
169
|
+
const digest = createHash2("sha256").update(encoded).digest("hex");
|
|
170
|
+
return Object.fromEntries([
|
|
171
|
+
[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespace, chunks[0] ?? ""],
|
|
172
|
+
[
|
|
173
|
+
SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespaceEncoding,
|
|
174
|
+
`${SUPPORT_PASSPORT_NAMESPACE_ENCODING}:${chunks.length}:${digest}`
|
|
175
|
+
],
|
|
176
|
+
...chunks.slice(1).map((chunk, index) => [`${SUPPORT_PASSPORT_NAMESPACE_CHUNK_PREFIX}${index + 1}`, chunk])
|
|
177
|
+
]);
|
|
178
|
+
}
|
|
179
|
+
function decodeSupportPassportNamespaceAttributes(attributes) {
|
|
180
|
+
const firstChunk = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespace];
|
|
181
|
+
const encoding = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespaceEncoding];
|
|
182
|
+
if (encoding === void 0) {
|
|
183
|
+
const legacy = LegacySupportPassportNamespaceSchema.safeParse(firstChunk);
|
|
184
|
+
return legacy.success ? legacy.data : null;
|
|
185
|
+
}
|
|
186
|
+
const match = /^base64url-v1:([1-9]\d*):([a-f0-9]{64})$/.exec(encoding);
|
|
187
|
+
if (!match || typeof firstChunk !== "string") return null;
|
|
188
|
+
const chunkCount = Number(match[1]);
|
|
189
|
+
if (!Number.isSafeInteger(chunkCount)) return null;
|
|
190
|
+
const chunkIndexes = Object.keys(attributes).flatMap((key) => {
|
|
191
|
+
const chunkMatch = /^support-passport-namespace-(\d+)$/.exec(key);
|
|
192
|
+
return chunkMatch ? [Number(chunkMatch[1])] : [];
|
|
193
|
+
});
|
|
194
|
+
if (chunkIndexes.length !== chunkCount - 1 || chunkIndexes.some((index) => !Number.isSafeInteger(index) || index < 1 || index >= chunkCount))
|
|
195
|
+
return null;
|
|
196
|
+
const chunks = [firstChunk];
|
|
197
|
+
for (let index = 1; index < chunkCount; index += 1) {
|
|
198
|
+
const chunk = attributes[`${SUPPORT_PASSPORT_NAMESPACE_CHUNK_PREFIX}${index}`];
|
|
199
|
+
if (typeof chunk !== "string" || chunk.length === 0) return null;
|
|
200
|
+
chunks.push(chunk);
|
|
201
|
+
}
|
|
202
|
+
const encoded = chunks.join("");
|
|
203
|
+
if (createHash2("sha256").update(encoded).digest("hex") !== match[2]) return null;
|
|
204
|
+
const decoded = Buffer.from(encoded, "base64url").toString("utf8");
|
|
205
|
+
if (Buffer.from(decoded, "utf8").toString("base64url") !== encoded) return null;
|
|
206
|
+
const namespace = SupportPassportNamespaceSchema.safeParse(decoded);
|
|
207
|
+
return namespace.success ? namespace.data : null;
|
|
208
|
+
}
|
|
209
|
+
function computeSupportPassportOwnerKey(principal) {
|
|
210
|
+
return createHash2("sha256").update(principal).digest("hex");
|
|
211
|
+
}
|
|
212
|
+
function activeSupportPassportReplacementPredecessorIds(cards) {
|
|
213
|
+
return new Set(
|
|
214
|
+
cards.filter((item) => item.card.status === "active").map((item) => item.memory.frontmatter.supersedes).filter((cardId) => typeof cardId === "string")
|
|
215
|
+
);
|
|
216
|
+
}
|
|
217
|
+
function parseSourceMemoryIds(frontmatter) {
|
|
218
|
+
const lineage = frontmatter.lineage;
|
|
219
|
+
const legacyValue = frontmatter.structuredAttributes?.[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.sourceMemoryIds];
|
|
220
|
+
const rawIds = lineage ?? (legacyValue === void 0 || legacyValue === "" ? [] : legacyValue.split(","));
|
|
221
|
+
if (rawIds.length > 5) return null;
|
|
222
|
+
const normalized = [];
|
|
223
|
+
for (const rawId of rawIds) {
|
|
224
|
+
const parsed = SupportPassportSourceMemoryIdSchema.safeParse(rawId);
|
|
225
|
+
if (!parsed.success) return null;
|
|
226
|
+
normalized.push(parsed.data);
|
|
227
|
+
}
|
|
228
|
+
if (new Set(normalized).size !== normalized.length) return null;
|
|
229
|
+
return normalized;
|
|
230
|
+
}
|
|
231
|
+
function parseSupportPassportCardMetadata(memory) {
|
|
232
|
+
const frontmatter = memory.frontmatter;
|
|
233
|
+
const attributes = frontmatter.structuredAttributes;
|
|
234
|
+
if (frontmatter.category !== "preference") return null;
|
|
235
|
+
if (!frontmatter.tags?.includes(SUPPORT_PASSPORT_CARD_TAG)) return null;
|
|
236
|
+
if (!attributes || frontmatter.blockedBy || frontmatter.archivedAt || frontmatter.supersededBy)
|
|
237
|
+
return null;
|
|
238
|
+
const category = SupportPassportCardCategorySchema.safeParse(
|
|
239
|
+
attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.category]
|
|
240
|
+
);
|
|
241
|
+
const status = SupportPassportCardStatusSchema.safeParse(frontmatter.status);
|
|
242
|
+
const rawOrder = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.order];
|
|
243
|
+
const order = Number(rawOrder);
|
|
244
|
+
const sourceMemoryIds = parseSourceMemoryIds(frontmatter);
|
|
245
|
+
const namespace = decodeSupportPassportNamespaceAttributes(attributes);
|
|
246
|
+
const owner = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.owner];
|
|
247
|
+
let replacesDraftId;
|
|
248
|
+
const rawReplacesDraftId = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.replacesDraftId];
|
|
249
|
+
if (rawReplacesDraftId !== void 0) {
|
|
250
|
+
const parsedReplacesDraftId = SupportPassportMemoryIdSchema.safeParse(rawReplacesDraftId);
|
|
251
|
+
if (!parsedReplacesDraftId.success) return null;
|
|
252
|
+
replacesDraftId = parsedReplacesDraftId.data;
|
|
253
|
+
}
|
|
254
|
+
let replacedRevision;
|
|
255
|
+
const rawReplacedRevision = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.replacedRevision];
|
|
256
|
+
if (rawReplacedRevision !== void 0) {
|
|
257
|
+
if (!/^[a-f0-9]{64}$/.test(rawReplacedRevision)) return null;
|
|
258
|
+
replacedRevision = rawReplacedRevision;
|
|
259
|
+
}
|
|
260
|
+
const generatedBatchId = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.generatedBatchId];
|
|
261
|
+
const rawGeneratedBatchSize = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.generatedBatchSize];
|
|
262
|
+
let generatedBatchSize;
|
|
263
|
+
if (generatedBatchId !== void 0) {
|
|
264
|
+
if (!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(generatedBatchId)) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
if (typeof rawGeneratedBatchSize !== "string" || !/^[1-8]$/.test(rawGeneratedBatchSize)) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
generatedBatchSize = Number(rawGeneratedBatchSize);
|
|
271
|
+
} else if (rawGeneratedBatchSize !== void 0) {
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
274
|
+
if (!category.success || !status.success || status.data === "superseded" || typeof rawOrder !== "string" || !/^(?:0|[1-9]\d*)$/.test(rawOrder) || !Number.isSafeInteger(order) || namespace === null || typeof owner !== "string" || !/^[a-f0-9]{64}$/.test(owner) || !sourceMemoryIds)
|
|
275
|
+
return null;
|
|
276
|
+
const fields = SupportPassportCardSchema.omit({
|
|
277
|
+
revision: true,
|
|
278
|
+
statement: true
|
|
279
|
+
}).safeParse({
|
|
280
|
+
cardId: frontmatter.id,
|
|
281
|
+
title: attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.title],
|
|
282
|
+
category: category.data,
|
|
283
|
+
status: status.data,
|
|
284
|
+
updatedAt: frontmatter.updated,
|
|
285
|
+
reviewBy: attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.reviewBy]
|
|
286
|
+
});
|
|
287
|
+
if (!fields.success) return null;
|
|
288
|
+
return {
|
|
289
|
+
fields: fields.data,
|
|
290
|
+
order,
|
|
291
|
+
sourceMemoryIds,
|
|
292
|
+
namespace,
|
|
293
|
+
owner,
|
|
294
|
+
replacesDraftId,
|
|
295
|
+
replacedRevision,
|
|
296
|
+
draftReplacementPrepared: attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.draftReplacementPrepared] === "true",
|
|
297
|
+
generatedBatchId,
|
|
298
|
+
generatedBatchSize
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
function hasLiveSupportPassportCard(memory) {
|
|
302
|
+
const metadata = parseSupportPassportCardMetadata(memory);
|
|
303
|
+
if (metadata?.fields.status !== "active" && metadata?.fields.status !== "pending_review") return false;
|
|
304
|
+
return SupportPassportCardSchema.omit({ revision: true }).safeParse({
|
|
305
|
+
...metadata.fields,
|
|
306
|
+
statement: stripAttributesSuffix(memory.content)
|
|
307
|
+
}).success;
|
|
308
|
+
}
|
|
309
|
+
function projectSupportPassportCard(memory) {
|
|
310
|
+
const metadata = parseSupportPassportCardMetadata(memory);
|
|
311
|
+
if (!metadata) return null;
|
|
312
|
+
const fields = {
|
|
313
|
+
...metadata.fields,
|
|
314
|
+
statement: stripAttributesSuffix(memory.content)
|
|
315
|
+
};
|
|
316
|
+
const normalized = SupportPassportCardSchema.omit({
|
|
317
|
+
revision: true
|
|
318
|
+
}).safeParse(fields);
|
|
319
|
+
if (!normalized.success) return null;
|
|
320
|
+
const parsed = SupportPassportCardSchema.safeParse({
|
|
321
|
+
...normalized.data,
|
|
322
|
+
revision: computeSupportPassportCardRevision(normalized.data)
|
|
323
|
+
});
|
|
324
|
+
if (!parsed.success) return null;
|
|
325
|
+
return {
|
|
326
|
+
card: parsed.data,
|
|
327
|
+
memory,
|
|
328
|
+
order: metadata.order,
|
|
329
|
+
sourceMemoryIds: metadata.sourceMemoryIds,
|
|
330
|
+
namespace: metadata.namespace,
|
|
331
|
+
owner: metadata.owner,
|
|
332
|
+
replacesDraftId: metadata.replacesDraftId,
|
|
333
|
+
replacedRevision: metadata.replacedRevision,
|
|
334
|
+
draftReplacementPrepared: metadata.draftReplacementPrepared,
|
|
335
|
+
generatedBatchId: metadata.generatedBatchId,
|
|
336
|
+
generatedBatchSize: metadata.generatedBatchSize
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export {
|
|
341
|
+
SUPPORT_PASSPORT_CARD_CATEGORIES,
|
|
342
|
+
SUPPORT_PASSPORT_CARD_STATUSES,
|
|
343
|
+
SupportPassportCardCategorySchema,
|
|
344
|
+
SupportPassportCardStatusSchema,
|
|
345
|
+
SupportPassportCardTitleSchema,
|
|
346
|
+
SupportPassportNamespaceSchema,
|
|
347
|
+
SupportPassportMemoryIdSchema,
|
|
348
|
+
SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH,
|
|
349
|
+
SupportPassportSourceMemoryIdSchema,
|
|
350
|
+
SupportPassportCardSchema,
|
|
351
|
+
SupportPassportCardListSchema,
|
|
352
|
+
SupportPassportListCardsInputSchema,
|
|
353
|
+
SupportPassportManualDraftInputSchema,
|
|
354
|
+
SupportPassportCardMutationInputSchema,
|
|
355
|
+
SupportPassportReplaceCardInputSchema,
|
|
356
|
+
computeSupportPassportCardRevision,
|
|
357
|
+
SUPPORT_PASSPORT_CARD_TAG,
|
|
358
|
+
SUPPORT_PASSPORT_AUDIT_TAG,
|
|
359
|
+
isSupportPassportPrivateMemory,
|
|
360
|
+
excludeSupportPassportPrivateMemories,
|
|
361
|
+
createSupportPassportPrivateFileExclusion,
|
|
362
|
+
SUPPORT_PASSPORT_ATTRIBUTE_KEYS,
|
|
363
|
+
encodeSupportPassportNamespaceAttributes,
|
|
364
|
+
decodeSupportPassportNamespaceAttributes,
|
|
365
|
+
computeSupportPassportOwnerKey,
|
|
366
|
+
activeSupportPassportReplacementPredecessorIds,
|
|
367
|
+
hasLiveSupportPassportCard,
|
|
368
|
+
projectSupportPassportCard
|
|
369
|
+
};
|
|
370
|
+
//# sourceMappingURL=chunk-XX4HPFFM.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/support-passport/contracts.ts","../src/support-passport/card-projection.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport { z } from \"zod\";\n\nimport { normalizeNamespaceIdentity } from \"../namespaces/identity.js\";\nimport { parseIsoOffsetTimestamp } from \"../utils/iso-timestamp.js\";\n\nexport const SUPPORT_PASSPORT_CARD_CATEGORIES = [\n \"communication\",\n \"environment\",\n \"transitions\",\n \"sensory\",\n \"regulation\",\n \"interests\",\n \"other\",\n] as const;\n\nexport const SUPPORT_PASSPORT_CARD_STATUSES = [\n \"pending_review\",\n \"active\",\n \"rejected\",\n \"superseded\",\n \"archived\",\n] as const;\n\nexport const SupportPassportCardCategorySchema = z.enum(SUPPORT_PASSPORT_CARD_CATEGORIES);\nexport const SupportPassportCardStatusSchema = z.enum(SUPPORT_PASSPORT_CARD_STATUSES);\nexport const SupportPassportCardTitleSchema = z\n .string()\n .trim()\n .min(1)\n .max(80)\n .refine((title) => !title.includes(\"]\") && !title.includes(\"\\n\") && !title.includes(\"\\r\"), {\n message: \"card titles cannot contain closing brackets or line breaks\",\n });\n\nconst IsoTimestampSchema = z\n .string()\n .datetime({ offset: true })\n .refine((value) => parseIsoOffsetTimestamp(value) !== null, {\n message: \"timestamps must be valid ISO 8601 values\",\n });\nexport const SupportPassportNamespaceSchema = z\n .string()\n .min(1)\n .refine((namespace) => namespace === normalizeNamespaceIdentity(namespace), {\n message: \"namespaces must be canonical\",\n });\nexport const SupportPassportMemoryIdSchema = z\n .string()\n .trim()\n .min(1)\n .max(128)\n .regex(/^[A-Za-z0-9._:-]+$/);\nexport const SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH = 512;\nexport const SupportPassportSourceMemoryIdSchema = z\n .string()\n .trim()\n .min(1)\n .max(SUPPORT_PASSPORT_SOURCE_MEMORY_ID_MAX_LENGTH);\n\nexport const SupportPassportCardSchema = z\n .object({\n cardId: SupportPassportMemoryIdSchema,\n title: SupportPassportCardTitleSchema,\n statement: z.string().trim().min(1).max(500),\n category: SupportPassportCardCategorySchema,\n status: SupportPassportCardStatusSchema,\n updatedAt: IsoTimestampSchema,\n reviewBy: IsoTimestampSchema,\n revision: z.string().regex(/^[a-f0-9]{64}$/),\n })\n .strict();\n\nexport const SupportPassportCardListSchema = z\n .array(SupportPassportCardSchema)\n .max(100)\n .superRefine((cards, ctx) => {\n const seen = new Set<string>();\n for (const [index, card] of cards.entries()) {\n if (seen.has(card.cardId)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"card IDs must be unique\",\n path: [index, \"cardId\"],\n });\n }\n seen.add(card.cardId);\n }\n });\n\nexport const SupportPassportListCardsInputSchema = z\n .object({\n principal: z.string().trim().min(1).max(512),\n })\n .strict();\n\nexport const SupportPassportManualDraftInputSchema = z\n .object({\n principal: z.string().trim().min(1).max(512),\n title: SupportPassportCardTitleSchema,\n statement: z.string().trim().min(1).max(500),\n category: SupportPassportCardCategorySchema,\n reviewBy: IsoTimestampSchema,\n })\n .strict();\n\nexport const SupportPassportCardMutationInputSchema = z\n .object({\n principal: z.string().trim().min(1).max(512),\n cardId: SupportPassportMemoryIdSchema,\n expectedRevision: z.string().regex(/^[a-f0-9]{64}$/),\n reasonCode: z\n .string()\n .trim()\n .min(1)\n .max(64)\n .regex(/^[a-z0-9-]+$/)\n .optional(),\n })\n .strict();\n\nexport const SupportPassportReplaceCardInputSchema = SupportPassportCardMutationInputSchema.extend({\n title: SupportPassportCardTitleSchema,\n statement: z.string().trim().min(1).max(500),\n category: SupportPassportCardCategorySchema,\n reviewBy: IsoTimestampSchema,\n}).strict();\n\nexport type SupportPassportCard = z.infer<typeof SupportPassportCardSchema>;\nexport type SupportPassportCardCategory = z.infer<typeof SupportPassportCardCategorySchema>;\nexport type SupportPassportCardStatus = z.infer<typeof SupportPassportCardStatusSchema>;\nexport type SupportPassportManualDraftInput = z.input<typeof SupportPassportManualDraftInputSchema>;\nexport type SupportPassportCardMutationInput = z.input<typeof SupportPassportCardMutationInputSchema>;\nexport type SupportPassportReplaceCardInput = z.input<typeof SupportPassportReplaceCardInputSchema>;\n\ntype RevisionFields = Omit<SupportPassportCard, \"revision\">;\n\nexport function computeSupportPassportCardRevision(fields: RevisionFields): string {\n const canonicalFields = {\n cardId: fields.cardId,\n category: fields.category,\n reviewBy: fields.reviewBy,\n statement: fields.statement,\n status: fields.status,\n title: fields.title,\n updatedAt: fields.updatedAt,\n };\n return createHash(\"sha256\").update(JSON.stringify(canonicalFields)).digest(\"hex\");\n}\n","import { createHash } from \"node:crypto\";\nimport { lstat } from \"node:fs/promises\";\n\nimport type { OfflineSyncExcludeFile } from \"../offline-sync-file-io.js\";\nimport { stripAttributesSuffix } from \"../structured-attributes.js\";\nimport type { MemoryFile } from \"../types.js\";\nimport {\n type SupportPassportCard,\n SupportPassportCardCategorySchema,\n SupportPassportCardSchema,\n SupportPassportCardStatusSchema,\n SupportPassportMemoryIdSchema,\n SupportPassportNamespaceSchema,\n SupportPassportSourceMemoryIdSchema,\n computeSupportPassportCardRevision,\n} from \"./contracts.js\";\n\nexport const SUPPORT_PASSPORT_CARD_TAG = \"support-passport-card\";\nexport const SUPPORT_PASSPORT_AUDIT_TAG = \"support-passport-audit\";\n\nexport function isSupportPassportPrivateMemory(memory: {\n frontmatter: {\n tags?: readonly string[];\n structuredAttributes?: Readonly<Record<string, string>>;\n };\n}): boolean {\n const tags = memory.frontmatter.tags;\n if (tags?.includes(SUPPORT_PASSPORT_CARD_TAG) === true || tags?.includes(SUPPORT_PASSPORT_AUDIT_TAG) === true) {\n return true;\n }\n return Object.keys(memory.frontmatter.structuredAttributes ?? {})\n .some((key) => key.startsWith(\"support-passport-\"));\n}\n\nexport function excludeSupportPassportPrivateMemories<T extends Pick<MemoryFile, \"frontmatter\">>(\n memories: readonly T[]\n): T[] {\n return memories.filter((memory) => !isSupportPassportPrivateMemory(memory));\n}\n\nexport function createSupportPassportPrivateFileExclusion(storage: {\n readMemoryByPath(filePath: string): Promise<MemoryFile | null>;\n}): OfflineSyncExcludeFile {\n const classifications = new Map<string, { identity: string; excluded: Promise<boolean> }>();\n return async ({ filePath }) => {\n let file: Awaited<ReturnType<typeof lstat>>;\n try {\n file = await lstat(filePath);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n classifications.delete(filePath);\n return false;\n }\n throw error;\n }\n const identity = `${file.dev}:${file.ino}:${file.size}:${file.mtimeMs}:${file.ctimeMs}`;\n const cached = classifications.get(filePath);\n if (cached?.identity === identity) return await cached.excluded;\n const excluded = storage\n .readMemoryByPath(filePath)\n .then((memory) => (memory ? isSupportPassportPrivateMemory(memory) : false));\n classifications.set(filePath, { identity, excluded });\n try {\n return await excluded;\n } catch (error) {\n if (classifications.get(filePath)?.excluded === excluded) classifications.delete(filePath);\n throw error;\n }\n };\n}\n\nexport const SUPPORT_PASSPORT_ATTRIBUTE_KEYS = Object.freeze({\n namespace: \"support-passport-namespace\",\n namespaceEncoding: \"support-passport-namespace-encoding\",\n owner: \"support-passport-owner\",\n title: \"support-passport-title\",\n category: \"support-passport-category\",\n order: \"support-passport-order\",\n reviewBy: \"support-passport-review-by\",\n sourceMemoryIds: \"support-passport-source-ids\",\n replacesDraftId: \"support-passport-replaces-draft-id\",\n replacedRevision: \"support-passport-replaced-revision\",\n draftReplacementPrepared: \"support-passport-draft-replacement-prepared\",\n replacementComplete: \"support-passport-replacement-complete\",\n generatedBatchId: \"support-passport-generated-batch-id\",\n generatedBatchSize: \"support-passport-generated-batch-size\",\n});\n\nconst SUPPORT_PASSPORT_NAMESPACE_ENCODING = \"base64url-v1\";\nconst SUPPORT_PASSPORT_NAMESPACE_CHUNK_PREFIX = \"support-passport-namespace-\";\nconst SUPPORT_PASSPORT_NAMESPACE_CHUNK_SIZE = 1_024;\nconst LegacySupportPassportNamespaceSchema = SupportPassportNamespaceSchema.refine(\n (namespace) =>\n !namespace.includes(\"/\") &&\n !namespace.includes(\"\\\\\") &&\n !namespace.includes(\"..\") &&\n !namespace.includes(\"]\") &&\n !namespace.includes(\"\\0\") &&\n !namespace.includes(\"\\n\") &&\n !namespace.includes(\"\\r\")\n);\n\nexport function encodeSupportPassportNamespaceAttributes(namespace: string): Record<string, string> {\n const canonical = SupportPassportNamespaceSchema.parse(namespace);\n const encoded = Buffer.from(canonical, \"utf8\").toString(\"base64url\");\n const chunks = encoded.match(new RegExp(`.{1,${SUPPORT_PASSPORT_NAMESPACE_CHUNK_SIZE}}`, \"g\")) ?? [];\n const digest = createHash(\"sha256\").update(encoded).digest(\"hex\");\n return Object.fromEntries([\n [SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespace, chunks[0] ?? \"\"],\n [\n SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespaceEncoding,\n `${SUPPORT_PASSPORT_NAMESPACE_ENCODING}:${chunks.length}:${digest}`,\n ],\n ...chunks.slice(1).map((chunk, index) => [`${SUPPORT_PASSPORT_NAMESPACE_CHUNK_PREFIX}${index + 1}`, chunk]),\n ]);\n}\n\nexport function decodeSupportPassportNamespaceAttributes(attributes: Readonly<Record<string, string>>): string | null {\n const firstChunk = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespace];\n const encoding = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.namespaceEncoding];\n if (encoding === undefined) {\n const legacy = LegacySupportPassportNamespaceSchema.safeParse(firstChunk);\n return legacy.success ? legacy.data : null;\n }\n const match = /^base64url-v1:([1-9]\\d*):([a-f0-9]{64})$/.exec(encoding);\n if (!match || typeof firstChunk !== \"string\") return null;\n const chunkCount = Number(match[1]);\n if (!Number.isSafeInteger(chunkCount)) return null;\n const chunkIndexes = Object.keys(attributes).flatMap((key) => {\n const chunkMatch = /^support-passport-namespace-(\\d+)$/.exec(key);\n return chunkMatch ? [Number(chunkMatch[1])] : [];\n });\n if (\n chunkIndexes.length !== chunkCount - 1 ||\n chunkIndexes.some((index) => !Number.isSafeInteger(index) || index < 1 || index >= chunkCount)\n )\n return null;\n const chunks = [firstChunk];\n for (let index = 1; index < chunkCount; index += 1) {\n const chunk = attributes[`${SUPPORT_PASSPORT_NAMESPACE_CHUNK_PREFIX}${index}`];\n if (typeof chunk !== \"string\" || chunk.length === 0) return null;\n chunks.push(chunk);\n }\n const encoded = chunks.join(\"\");\n if (createHash(\"sha256\").update(encoded).digest(\"hex\") !== match[2]) return null;\n const decoded = Buffer.from(encoded, \"base64url\").toString(\"utf8\");\n if (Buffer.from(decoded, \"utf8\").toString(\"base64url\") !== encoded) return null;\n const namespace = SupportPassportNamespaceSchema.safeParse(decoded);\n return namespace.success ? namespace.data : null;\n}\n\nexport interface StoredSupportPassportCard {\n card: SupportPassportCard;\n memory: MemoryFile;\n order: number;\n sourceMemoryIds: string[];\n namespace: string;\n owner: string;\n replacesDraftId?: string;\n replacedRevision?: string;\n draftReplacementPrepared: boolean;\n generatedBatchId?: string;\n generatedBatchSize?: number;\n}\n\nexport function computeSupportPassportOwnerKey(principal: string): string {\n return createHash(\"sha256\").update(principal).digest(\"hex\");\n}\n\nexport function activeSupportPassportReplacementPredecessorIds(\n cards: readonly StoredSupportPassportCard[],\n): Set<string> {\n return new Set(\n cards\n .filter((item) => item.card.status === \"active\")\n .map((item) => item.memory.frontmatter.supersedes)\n .filter((cardId): cardId is string => typeof cardId === \"string\"),\n );\n}\n\nfunction parseSourceMemoryIds(frontmatter: MemoryFile[\"frontmatter\"]): string[] | null {\n const lineage = frontmatter.lineage;\n const legacyValue = frontmatter.structuredAttributes?.[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.sourceMemoryIds];\n const rawIds = lineage ?? (legacyValue === undefined || legacyValue === \"\" ? [] : legacyValue.split(\",\"));\n if (rawIds.length > 5) return null;\n const normalized: string[] = [];\n for (const rawId of rawIds) {\n const parsed = SupportPassportSourceMemoryIdSchema.safeParse(rawId);\n if (!parsed.success) return null;\n normalized.push(parsed.data);\n }\n if (new Set(normalized).size !== normalized.length) return null;\n return normalized;\n}\n\ninterface SupportPassportCardMetadata {\n fields: Omit<SupportPassportCard, \"revision\" | \"statement\">;\n order: number;\n sourceMemoryIds: string[];\n namespace: string;\n owner: string;\n replacesDraftId?: string;\n replacedRevision?: string;\n draftReplacementPrepared: boolean;\n generatedBatchId?: string;\n generatedBatchSize?: number;\n}\n\nfunction parseSupportPassportCardMetadata(\n memory: Pick<MemoryFile, \"frontmatter\">,\n): SupportPassportCardMetadata | null {\n const frontmatter = memory.frontmatter;\n const attributes = frontmatter.structuredAttributes;\n if (frontmatter.category !== \"preference\") return null;\n if (!frontmatter.tags?.includes(SUPPORT_PASSPORT_CARD_TAG)) return null;\n if (\n !attributes ||\n frontmatter.blockedBy ||\n frontmatter.archivedAt ||\n frontmatter.supersededBy\n )\n return null;\n\n const category = SupportPassportCardCategorySchema.safeParse(\n attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.category],\n );\n const status = SupportPassportCardStatusSchema.safeParse(frontmatter.status);\n const rawOrder = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.order];\n const order = Number(rawOrder);\n const sourceMemoryIds = parseSourceMemoryIds(frontmatter);\n const namespace = decodeSupportPassportNamespaceAttributes(attributes);\n const owner = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.owner];\n let replacesDraftId: string | undefined;\n const rawReplacesDraftId =\n attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.replacesDraftId];\n if (rawReplacesDraftId !== undefined) {\n const parsedReplacesDraftId =\n SupportPassportMemoryIdSchema.safeParse(rawReplacesDraftId);\n if (!parsedReplacesDraftId.success) return null;\n replacesDraftId = parsedReplacesDraftId.data;\n }\n let replacedRevision: string | undefined;\n const rawReplacedRevision =\n attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.replacedRevision];\n if (rawReplacedRevision !== undefined) {\n if (!/^[a-f0-9]{64}$/.test(rawReplacedRevision)) return null;\n replacedRevision = rawReplacedRevision;\n }\n const generatedBatchId = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.generatedBatchId];\n const rawGeneratedBatchSize = attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.generatedBatchSize];\n let generatedBatchSize: number | undefined;\n if (generatedBatchId !== undefined) {\n if (!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(generatedBatchId)) {\n return null;\n }\n if (\n typeof rawGeneratedBatchSize !== \"string\" ||\n !/^[1-8]$/.test(rawGeneratedBatchSize)\n ) {\n return null;\n }\n generatedBatchSize = Number(rawGeneratedBatchSize);\n } else if (rawGeneratedBatchSize !== undefined) {\n return null;\n }\n if (\n !category.success ||\n !status.success ||\n status.data === \"superseded\" ||\n typeof rawOrder !== \"string\" ||\n !/^(?:0|[1-9]\\d*)$/.test(rawOrder) ||\n !Number.isSafeInteger(order) ||\n namespace === null ||\n typeof owner !== \"string\" ||\n !/^[a-f0-9]{64}$/.test(owner) ||\n !sourceMemoryIds\n )\n return null;\n const fields = SupportPassportCardSchema.omit({\n revision: true,\n statement: true,\n }).safeParse({\n cardId: frontmatter.id,\n title: attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.title],\n category: category.data,\n status: status.data,\n updatedAt: frontmatter.updated,\n reviewBy: attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.reviewBy],\n });\n if (!fields.success) return null;\n return {\n fields: fields.data,\n order,\n sourceMemoryIds,\n namespace,\n owner,\n replacesDraftId,\n replacedRevision,\n draftReplacementPrepared:\n attributes[SUPPORT_PASSPORT_ATTRIBUTE_KEYS.draftReplacementPrepared] ===\n \"true\",\n generatedBatchId,\n generatedBatchSize,\n };\n}\n\nexport function hasLiveSupportPassportCard(memory: Pick<MemoryFile, \"frontmatter\" | \"content\">): boolean {\n const metadata = parseSupportPassportCardMetadata(memory);\n if (metadata?.fields.status !== \"active\" && metadata?.fields.status !== \"pending_review\") return false;\n return SupportPassportCardSchema.omit({ revision: true }).safeParse({\n ...metadata.fields,\n statement: stripAttributesSuffix(memory.content),\n }).success;\n}\n\nexport function projectSupportPassportCard(\n memory: MemoryFile,\n): StoredSupportPassportCard | null {\n const metadata = parseSupportPassportCardMetadata(memory);\n if (!metadata) return null;\n\n const fields = {\n ...metadata.fields,\n statement: stripAttributesSuffix(memory.content),\n };\n const normalized = SupportPassportCardSchema.omit({\n revision: true,\n }).safeParse(fields);\n if (!normalized.success) return null;\n const parsed = SupportPassportCardSchema.safeParse({\n ...normalized.data,\n revision: computeSupportPassportCardRevision(normalized.data),\n });\n if (!parsed.success) return null;\n return {\n card: parsed.data,\n memory,\n order: metadata.order,\n sourceMemoryIds: metadata.sourceMemoryIds,\n namespace: metadata.namespace,\n owner: metadata.owner,\n replacesDraftId: metadata.replacesDraftId,\n replacedRevision: metadata.replacedRevision,\n draftReplacementPrepared: metadata.draftReplacementPrepared,\n generatedBatchId: metadata.generatedBatchId,\n generatedBatchSize: metadata.generatedBatchSize,\n };\n}\n"],"mappings":"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","names":["createHash","createHash"]}
|
|
@@ -2,12 +2,12 @@ import {
|
|
|
2
2
|
hasBroadGraphIntent,
|
|
3
3
|
planRecallMode
|
|
4
4
|
} from "./chunk-PD6O7AXF.js";
|
|
5
|
-
import {
|
|
6
|
-
parseQmdExplain
|
|
7
|
-
} from "./chunk-QCECHYZL.js";
|
|
8
5
|
import {
|
|
9
6
|
buildCompressionGuidelinesMarkdown
|
|
10
7
|
} from "./chunk-OD4FM2U7.js";
|
|
8
|
+
import {
|
|
9
|
+
parseQmdExplain
|
|
10
|
+
} from "./chunk-QCECHYZL.js";
|
|
11
11
|
import {
|
|
12
12
|
resolveLifecycleState
|
|
13
13
|
} from "./chunk-TBBDFYXW.js";
|
|
@@ -1654,4 +1654,4 @@ export {
|
|
|
1654
1654
|
ExtractionDeadlineError,
|
|
1655
1655
|
ExtractionRunCoordinator
|
|
1656
1656
|
};
|
|
1657
|
-
//# sourceMappingURL=chunk-
|
|
1657
|
+
//# sourceMappingURL=chunk-XZHE2DEN.js.map
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SupportPassportCreateGrantRequestSchema,
|
|
3
|
+
defineOperation
|
|
4
|
+
} from "./chunk-D3LBIUWV.js";
|
|
5
|
+
import {
|
|
6
|
+
SupportPassportCardCategorySchema,
|
|
7
|
+
SupportPassportMemoryIdSchema,
|
|
8
|
+
SupportPassportSourceMemoryIdSchema
|
|
9
|
+
} from "./chunk-XX4HPFFM.js";
|
|
10
|
+
|
|
11
|
+
// src/support-passport/access-operations.ts
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
var IsoTimestampSchema = z.string().datetime({ offset: true });
|
|
14
|
+
var RevisionSchema = z.string().regex(/^[a-f0-9]{64}$/);
|
|
15
|
+
var ReasonCodeSchema = z.string().trim().min(1).max(64).regex(/^[a-z0-9-]+$/);
|
|
16
|
+
var GrantIdSchema = z.string().trim().min(1).max(128).regex(/^[A-Za-z0-9_-]+$/);
|
|
17
|
+
var EmptySchema = z.object({}).strict();
|
|
18
|
+
var ManualDraftSchema = z.object({
|
|
19
|
+
title: z.string().trim().min(1).max(80),
|
|
20
|
+
statement: z.string().trim().min(1).max(500),
|
|
21
|
+
category: SupportPassportCardCategorySchema,
|
|
22
|
+
reviewBy: IsoTimestampSchema
|
|
23
|
+
}).strict();
|
|
24
|
+
var GenerateDraftsSchema = z.object({
|
|
25
|
+
sourceMemoryIds: z.array(SupportPassportSourceMemoryIdSchema).min(1).max(20),
|
|
26
|
+
sourceMemoryRevisions: z.array(z.object({ memoryId: SupportPassportSourceMemoryIdSchema, revision: RevisionSchema }).strict()).min(1).max(20),
|
|
27
|
+
consent: z.literal(true)
|
|
28
|
+
}).strict().superRefine((input, ctx) => {
|
|
29
|
+
if (new Set(input.sourceMemoryIds).size !== input.sourceMemoryIds.length) {
|
|
30
|
+
ctx.addIssue({
|
|
31
|
+
code: z.ZodIssueCode.custom,
|
|
32
|
+
message: "source memory IDs must be unique",
|
|
33
|
+
path: ["sourceMemoryIds"]
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
const revisionIds = input.sourceMemoryRevisions.map((source) => source.memoryId);
|
|
37
|
+
if (new Set(revisionIds).size !== revisionIds.length || revisionIds.length !== input.sourceMemoryIds.length || input.sourceMemoryIds.some((memoryId) => !revisionIds.includes(memoryId))) {
|
|
38
|
+
ctx.addIssue({
|
|
39
|
+
code: z.ZodIssueCode.custom,
|
|
40
|
+
message: "source memory revisions must match the selected memory IDs",
|
|
41
|
+
path: ["sourceMemoryRevisions"]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
var ReplaceCardSchema = ManualDraftSchema.extend({
|
|
46
|
+
cardId: SupportPassportMemoryIdSchema,
|
|
47
|
+
expectedRevision: RevisionSchema
|
|
48
|
+
}).strict();
|
|
49
|
+
var CardMutationSchema = z.object({
|
|
50
|
+
cardId: SupportPassportMemoryIdSchema,
|
|
51
|
+
expectedRevision: RevisionSchema,
|
|
52
|
+
reasonCode: ReasonCodeSchema
|
|
53
|
+
}).strict();
|
|
54
|
+
var RevokeGrantSchema = z.object({
|
|
55
|
+
grantId: GrantIdSchema,
|
|
56
|
+
expectedVersion: z.number().int().positive()
|
|
57
|
+
}).strict();
|
|
58
|
+
var PublicGrantSchema = z.object({
|
|
59
|
+
grantId: GrantIdSchema,
|
|
60
|
+
secret: z.string().regex(/^[A-Za-z0-9_-]{32,256}$/)
|
|
61
|
+
}).strict();
|
|
62
|
+
var AskGrantSchema = PublicGrantSchema.extend({
|
|
63
|
+
question: z.string().trim().min(1).max(500)
|
|
64
|
+
}).strict();
|
|
65
|
+
function principal(value) {
|
|
66
|
+
return value ?? "";
|
|
67
|
+
}
|
|
68
|
+
var supportPassportMemoryPreviewOperation = defineOperation({
|
|
69
|
+
name: "support_passport_memory_preview",
|
|
70
|
+
description: "Preview one owner memory and bind it to a support-card consent revision.",
|
|
71
|
+
schema: z.object({ memoryId: SupportPassportSourceMemoryIdSchema }).strict(),
|
|
72
|
+
handler: async (input, ctx) => ({
|
|
73
|
+
result: await ctx.service.supportPassportPreviewMemory(principal(ctx.authenticatedPrincipal), input.memoryId)
|
|
74
|
+
})
|
|
75
|
+
});
|
|
76
|
+
var supportPassportCardsListOperation = defineOperation({
|
|
77
|
+
name: "support_passport_cards_list",
|
|
78
|
+
description: "List the authenticated owner's support cards.",
|
|
79
|
+
schema: EmptySchema,
|
|
80
|
+
handler: async (_input, ctx) => ({
|
|
81
|
+
result: { cards: await ctx.service.supportPassportListCards(principal(ctx.authenticatedPrincipal)) }
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
var supportPassportDraftCreateOperation = defineOperation({
|
|
85
|
+
name: "support_passport_draft_create",
|
|
86
|
+
description: "Create one support card draft for the authenticated owner.",
|
|
87
|
+
schema: ManualDraftSchema,
|
|
88
|
+
handler: async (input, ctx) => ({
|
|
89
|
+
result: {
|
|
90
|
+
card: await ctx.service.supportPassportCreateManualDraft(
|
|
91
|
+
principal(ctx.authenticatedPrincipal),
|
|
92
|
+
input,
|
|
93
|
+
{
|
|
94
|
+
...ctx.abortSignal ? { signal: ctx.abortSignal } : {},
|
|
95
|
+
...ctx.hooks?.recordWriteCommit ? { onCommitted: ctx.hooks.recordWriteCommit } : {}
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
});
|
|
101
|
+
var supportPassportDraftsGenerateOperation = defineOperation({
|
|
102
|
+
name: "support_passport_drafts_generate",
|
|
103
|
+
description: "Draft support cards from selected owner memories after explicit consent.",
|
|
104
|
+
schema: GenerateDraftsSchema,
|
|
105
|
+
handler: async (input, ctx) => ({
|
|
106
|
+
result: {
|
|
107
|
+
cards: await ctx.service.supportPassportGenerateDrafts(principal(ctx.authenticatedPrincipal), {
|
|
108
|
+
...input,
|
|
109
|
+
signal: ctx.abortSignal,
|
|
110
|
+
...ctx.hooks?.recordWriteCommit ? { onCommitted: ctx.hooks.recordWriteCommit } : {}
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
})
|
|
114
|
+
});
|
|
115
|
+
var supportPassportCardReplaceOperation = defineOperation({
|
|
116
|
+
name: "support_passport_card_replace",
|
|
117
|
+
description: "Replace one support card with a new owner-reviewed draft.",
|
|
118
|
+
schema: ReplaceCardSchema,
|
|
119
|
+
handler: async ({ cardId, ...input }, ctx) => ({
|
|
120
|
+
result: {
|
|
121
|
+
card: await ctx.service.supportPassportReplaceCard(
|
|
122
|
+
principal(ctx.authenticatedPrincipal),
|
|
123
|
+
cardId,
|
|
124
|
+
input,
|
|
125
|
+
{
|
|
126
|
+
...ctx.abortSignal ? { signal: ctx.abortSignal } : {},
|
|
127
|
+
...ctx.hooks?.recordWriteCommit ? { onCommitted: ctx.hooks.recordWriteCommit } : {}
|
|
128
|
+
}
|
|
129
|
+
)
|
|
130
|
+
}
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
function defineCardMutation(name, description, run) {
|
|
134
|
+
return defineOperation({
|
|
135
|
+
name,
|
|
136
|
+
description,
|
|
137
|
+
schema: CardMutationSchema,
|
|
138
|
+
handler: async ({ cardId, ...input }, ctx) => ({
|
|
139
|
+
result: {
|
|
140
|
+
card: await ctx.service[run](
|
|
141
|
+
principal(ctx.authenticatedPrincipal),
|
|
142
|
+
cardId,
|
|
143
|
+
input,
|
|
144
|
+
{
|
|
145
|
+
...ctx.abortSignal ? { signal: ctx.abortSignal } : {},
|
|
146
|
+
...ctx.hooks?.recordWriteCommit ? { onCommitted: ctx.hooks.recordWriteCommit } : {}
|
|
147
|
+
}
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
var supportPassportCardApproveOperation = defineCardMutation(
|
|
154
|
+
"support_passport_card_approve",
|
|
155
|
+
"Approve one pending support card as its authenticated owner.",
|
|
156
|
+
"supportPassportApproveCard"
|
|
157
|
+
);
|
|
158
|
+
var supportPassportCardRejectOperation = defineCardMutation(
|
|
159
|
+
"support_passport_card_reject",
|
|
160
|
+
"Reject one pending support card as its authenticated owner.",
|
|
161
|
+
"supportPassportRejectCard"
|
|
162
|
+
);
|
|
163
|
+
var supportPassportCardWithdrawOperation = defineCardMutation(
|
|
164
|
+
"support_passport_card_withdraw",
|
|
165
|
+
"Withdraw one approved support card as its authenticated owner.",
|
|
166
|
+
"supportPassportWithdrawCard"
|
|
167
|
+
);
|
|
168
|
+
var supportPassportGrantCreateOperation = defineOperation({
|
|
169
|
+
name: "support_passport_grant_create",
|
|
170
|
+
description: "Create one timed share link for exact approved support card versions.",
|
|
171
|
+
schema: SupportPassportCreateGrantRequestSchema,
|
|
172
|
+
handler: async (input, ctx) => ({
|
|
173
|
+
result: await ctx.service.supportPassportCreateGrant(
|
|
174
|
+
principal(ctx.authenticatedPrincipal),
|
|
175
|
+
input,
|
|
176
|
+
{
|
|
177
|
+
...ctx.abortSignal ? { signal: ctx.abortSignal } : {},
|
|
178
|
+
...ctx.hooks?.recordWriteCommit ? { onCommitted: ctx.hooks.recordWriteCommit } : {}
|
|
179
|
+
}
|
|
180
|
+
)
|
|
181
|
+
})
|
|
182
|
+
});
|
|
183
|
+
var supportPassportGrantsListOperation = defineOperation({
|
|
184
|
+
name: "support_passport_grants_list",
|
|
185
|
+
description: "List the authenticated owner's support passport share links without secrets.",
|
|
186
|
+
schema: EmptySchema,
|
|
187
|
+
handler: async (_input, ctx) => ({
|
|
188
|
+
result: { grants: await ctx.service.supportPassportListGrants(principal(ctx.authenticatedPrincipal)) }
|
|
189
|
+
})
|
|
190
|
+
});
|
|
191
|
+
var supportPassportGrantRevokeOperation = defineOperation({
|
|
192
|
+
name: "support_passport_grant_revoke",
|
|
193
|
+
description: "Stop one support passport share link as its authenticated owner.",
|
|
194
|
+
schema: RevokeGrantSchema,
|
|
195
|
+
handler: async ({ grantId, ...input }, ctx) => ({
|
|
196
|
+
result: await ctx.service.supportPassportRevokeGrant(
|
|
197
|
+
principal(ctx.authenticatedPrincipal),
|
|
198
|
+
grantId,
|
|
199
|
+
input,
|
|
200
|
+
{
|
|
201
|
+
...ctx.abortSignal ? { signal: ctx.abortSignal } : {},
|
|
202
|
+
...ctx.hooks?.recordWriteCommit ? { onCommitted: ctx.hooks.recordWriteCommit } : {}
|
|
203
|
+
}
|
|
204
|
+
)
|
|
205
|
+
})
|
|
206
|
+
});
|
|
207
|
+
var supportPassportGrantReadOperation = defineOperation({
|
|
208
|
+
name: "support_passport_grant_read",
|
|
209
|
+
description: "Read one active support passport share link.",
|
|
210
|
+
schema: PublicGrantSchema,
|
|
211
|
+
handler: async ({ grantId, secret }, ctx) => ({
|
|
212
|
+
result: await ctx.service.supportPassportReadGrant(grantId, secret)
|
|
213
|
+
})
|
|
214
|
+
});
|
|
215
|
+
var supportPassportGrantAskOperation = defineOperation({
|
|
216
|
+
name: "support_passport_grant_ask",
|
|
217
|
+
description: "Answer one helper question from an active support passport share link.",
|
|
218
|
+
schema: AskGrantSchema,
|
|
219
|
+
handler: async ({ grantId, secret, question }, ctx) => ({
|
|
220
|
+
result: await ctx.service.supportPassportAskGrant(grantId, secret, question, ctx.abortSignal)
|
|
221
|
+
})
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=chunk-YXQEKCZM.js.map
|