@remnic/core 9.7.10 → 9.7.12
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 +6 -6
- package/dist/access-admin-ops-surface.js +7 -7
- package/dist/access-boundary.d.ts +7 -7
- package/dist/access-boundary.js +8 -8
- package/dist/access-cli.js +31 -31
- package/dist/access-http.d.ts +8 -7
- package/dist/access-http.js +12 -12
- package/dist/access-identity-continuity-surface.d.ts +5 -5
- package/dist/access-identity-continuity-surface.js +7 -7
- package/dist/access-lcm-surface.d.ts +6 -6
- package/dist/access-lcm-surface.js +7 -7
- package/dist/access-mcp.d.ts +6 -6
- package/dist/access-mcp.js +11 -11
- package/dist/access-observe-write-surface.d.ts +6 -6
- package/dist/access-observe-write-surface.js +7 -7
- package/dist/access-operations-batch.js +9 -9
- package/dist/access-operations.d.ts +10 -10
- package/dist/access-operations.js +10 -10
- package/dist/access-recall-surface.d.ts +6 -6
- package/dist/access-recall-surface.js +7 -7
- package/dist/access-schema.d.ts +64 -64
- package/dist/{access-service-DSuzikHQ.d.ts → access-service-tHd3eQpd.d.ts} +4 -4
- package/dist/access-service.d.ts +6 -6
- package/dist/access-service.js +7 -7
- package/dist/access-surface-catalog.d.ts +6 -6
- package/dist/access-surface-catalog.js +2 -0
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/action-confidence.d.ts +1 -1
- package/dist/active-memory-bridge.d.ts +1 -1
- package/dist/active-recall.d.ts +1 -1
- package/dist/active-recall.js +1 -1
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +5 -5
- package/dist/briefing.d.ts +2 -2
- package/dist/briefing.js +3 -3
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +2 -2
- package/dist/bulk-import/index.d.ts +3 -3
- package/dist/calibration.d.ts +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/{catalog-BNwjACa5.d.ts → catalog-DEMiw6HZ.d.ts} +48 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +4 -4
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-U4KHQTJ6.js → chunk-2AL7N3BH.js} +4 -2
- package/dist/{chunk-U4KHQTJ6.js.map → chunk-2AL7N3BH.js.map} +1 -1
- package/dist/{chunk-L4H6MQ7I.js → chunk-2RSL6YRA.js} +2 -2
- package/dist/{chunk-7EX4YOKH.js → chunk-2ZPQUTMW.js} +4 -4
- package/dist/{chunk-673NPXE3.js → chunk-3SIC3E65.js} +2 -2
- package/dist/{chunk-OVMS3DCB.js → chunk-675YU5IK.js} +2 -2
- package/dist/{chunk-7LMEY5KZ.js → chunk-6N7R7TR2.js} +34 -1
- package/dist/chunk-6N7R7TR2.js.map +1 -0
- package/dist/{chunk-7CKS4AXY.js → chunk-AOWPZ7TM.js} +17 -17
- package/dist/{chunk-TGBJ2OMK.js → chunk-BQTSGK5Y.js} +2 -2
- package/dist/{chunk-UZRIKUFS.js → chunk-CE3GMHT4.js} +4 -2
- package/dist/chunk-CE3GMHT4.js.map +1 -0
- package/dist/{chunk-YXOAQAH2.js → chunk-CLFY35ED.js} +3 -3
- package/dist/{chunk-HQ7QZJM5.js → chunk-D4TLWDYR.js} +2 -2
- package/dist/{chunk-LQKITFGB.js → chunk-FUUF7FMX.js} +2 -2
- package/dist/{chunk-3ZVFLMFQ.js → chunk-G5PVJJRA.js} +1 -1
- package/dist/chunk-G5PVJJRA.js.map +1 -0
- package/dist/{chunk-MXRMNKSY.js → chunk-I3GKTDM2.js} +3 -3
- package/dist/{chunk-EQF5763Z.js → chunk-IQULRIZM.js} +2 -2
- package/dist/{chunk-DJCKXI4M.js → chunk-NVXQTRBL.js} +2 -2
- package/dist/{chunk-VDLMAJXS.js → chunk-OCY3CRPG.js} +3 -3
- package/dist/{chunk-YLTG6BO4.js → chunk-OIFZII6J.js} +2 -2
- package/dist/{chunk-XF4KOVDK.js → chunk-PA6DMYEK.js} +6 -6
- package/dist/{chunk-3OQ4IZJN.js → chunk-QPZCAVDC.js} +7 -7
- package/dist/{chunk-DLWYAN6A.js → chunk-T6U7HDIY.js} +2 -2
- package/dist/chunk-TITSEN2M.js +1794 -0
- package/dist/chunk-TITSEN2M.js.map +1 -0
- package/dist/{chunk-JZM5QUTE.js → chunk-TMGK6YE7.js} +171 -9
- package/dist/chunk-TMGK6YE7.js.map +1 -0
- package/dist/{chunk-KXLRMM35.js → chunk-TRH533CA.js} +30 -7
- package/dist/chunk-TRH533CA.js.map +1 -0
- package/dist/{chunk-UTDA43TB.js → chunk-TWGGNUWJ.js} +2 -2
- package/dist/{chunk-SBFDL2EQ.js → chunk-UTZW3X2R.js} +2 -2
- package/dist/{chunk-SECMZACR.js → chunk-XUQUBZ7O.js} +2 -2
- package/dist/{chunk-N3LWQJ6Y.js → chunk-YI7XUXLX.js} +309 -16
- package/dist/chunk-YI7XUXLX.js.map +1 -0
- package/dist/{chunk-QVALQE4P.js → chunk-ZASJ53ML.js} +128 -10
- package/dist/chunk-ZASJ53ML.js.map +1 -0
- package/dist/{chunk-WUDBMLC6.js → chunk-ZC3HG22I.js} +2 -2
- package/dist/{chunk-VCEH5UYS.js → chunk-ZRXSHGXT.js} +2 -2
- package/dist/{cli-DACyuK8-.d.ts → cli-D8Tsa4Sh.d.ts} +5 -5
- package/dist/cli.d.ts +8 -8
- package/dist/cli.js +25 -25
- package/dist/compounding/engine.d.ts +2 -2
- package/dist/compounding/engine.js +3 -3
- 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 +1 -1
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize-runner.js +3 -3
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- package/dist/connectors/index.js +3 -3
- 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/conversation-index/backend.d.ts +1 -1
- 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/day-summary.d.ts +1 -1
- package/dist/delinearize.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 +3 -3
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +5 -5
- package/dist/extraction-faithfulness.d.ts +1 -1
- 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.d.ts +1 -1
- package/dist/fallback-llm.d.ts +1 -1
- 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-snapshot.d.ts +1 -1
- package/dist/graph.d.ts +1 -1
- package/dist/identity-continuity.d.ts +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 +4002 -16
- package/dist/index.js +78 -31
- package/dist/intent.d.ts +1 -1
- package/dist/lcm/engine.d.ts +1 -1
- package/dist/lcm/index.d.ts +1 -1
- 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 +1 -1
- package/dist/local-model-endpoint.d.ts +1 -1
- package/dist/maintenance/memory-governance.d.ts +1 -1
- package/dist/maintenance/memory-governance.js +3 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
- package/dist/maintenance/rebuild-memory-projection.js +4 -4
- package/dist/mcp-memory-inspector-app.d.ts +6 -6
- 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-store.d.ts +1 -1
- package/dist/memory-provenance.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 +4 -4
- package/dist/namespaces/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/namespaces/storage.js +3 -3
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +2 -2
- package/dist/operator-toolkit.js +8 -8
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +2 -2
- package/dist/orchestration/maintenance.js +5 -5
- package/dist/{orchestrator-D83AvrPf.d.ts → orchestrator-B_WXBmuE.d.ts} +4 -4
- package/dist/orchestrator.d.ts +5 -5
- package/dist/orchestrator.js +31 -31
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-BSqGpYl1.d.ts → pipeline-Dvtvt141.d.ts} +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/provenance.d.ts +1 -1
- package/dist/{qmd-CutnpRVe.d.ts → qmd-DwBLh_hl.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-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-planner-llm.d.ts +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/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/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +2 -2
- 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/schemas.d.ts +52 -52
- package/dist/search/embed-helper.d.ts +1 -1
- package/dist/search/factory.d.ts +1 -1
- package/dist/search/index.d.ts +1 -1
- 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-btIVRC4l.d.ts → semantic-consolidation-Dia_6FOn.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-consolidation.js +4 -4
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.d.ts +1 -1
- package/dist/semantic-rule-verifier.js +3 -3
- 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 +9 -9
- package/dist/signal.d.ts +1 -1
- package/dist/{storage-BVv_Mqa0.d.ts → storage-RshM7i8-.d.ts} +18 -1
- package/dist/storage.d.ts +2 -2
- package/dist/storage.js +2 -2
- package/dist/summarizer.d.ts +1 -1
- package/dist/summary-snapshot.d.ts +1 -1
- 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 +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transfer/types.d.ts +66 -66
- package/dist/trust-score-stage.d.ts +1 -1
- package/dist/trust-score.d.ts +1 -1
- package/dist/{types-Cmkz7csa.d.ts → types-CHSXOq7s.d.ts} +34 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/verified-recall.js +3 -3
- package/package.json +2 -2
- package/src/access-boundary.ts +2 -0
- package/src/access-http.ts +147 -6
- package/src/access-mcp-cancellation.test.ts +2 -2
- package/src/access-operations.ts +2 -0
- package/src/access-surface-catalog.ts +2 -0
- package/src/config.test.ts +44 -0
- package/src/config.ts +43 -0
- package/src/index.ts +53 -0
- package/src/namespaces/catalog.test.ts +258 -0
- package/src/namespaces/catalog.ts +235 -10
- package/src/namespaces/storage.ts +9 -0
- package/src/orchestrator.ts +3 -0
- package/src/relay/mission-access.test.ts +379 -0
- package/src/relay/mission-access.ts +125 -0
- package/src/relay/mission-fixture.ts +301 -0
- package/src/relay/mission.test.ts +964 -0
- package/src/relay/mission.ts +1725 -0
- package/src/storage-catalog-touch-gating.test.ts +70 -0
- package/src/storage.ts +31 -5
- package/src/types.ts +34 -0
- package/dist/chunk-3ZVFLMFQ.js.map +0 -1
- package/dist/chunk-7LMEY5KZ.js.map +0 -1
- package/dist/chunk-FNJX2O6G.js +0 -467
- package/dist/chunk-FNJX2O6G.js.map +0 -1
- package/dist/chunk-JZM5QUTE.js.map +0 -1
- package/dist/chunk-KXLRMM35.js.map +0 -1
- package/dist/chunk-N3LWQJ6Y.js.map +0 -1
- package/dist/chunk-QVALQE4P.js.map +0 -1
- package/dist/chunk-UZRIKUFS.js.map +0 -1
- /package/dist/{chunk-L4H6MQ7I.js.map → chunk-2RSL6YRA.js.map} +0 -0
- /package/dist/{chunk-7EX4YOKH.js.map → chunk-2ZPQUTMW.js.map} +0 -0
- /package/dist/{chunk-673NPXE3.js.map → chunk-3SIC3E65.js.map} +0 -0
- /package/dist/{chunk-OVMS3DCB.js.map → chunk-675YU5IK.js.map} +0 -0
- /package/dist/{chunk-7CKS4AXY.js.map → chunk-AOWPZ7TM.js.map} +0 -0
- /package/dist/{chunk-TGBJ2OMK.js.map → chunk-BQTSGK5Y.js.map} +0 -0
- /package/dist/{chunk-YXOAQAH2.js.map → chunk-CLFY35ED.js.map} +0 -0
- /package/dist/{chunk-HQ7QZJM5.js.map → chunk-D4TLWDYR.js.map} +0 -0
- /package/dist/{chunk-LQKITFGB.js.map → chunk-FUUF7FMX.js.map} +0 -0
- /package/dist/{chunk-MXRMNKSY.js.map → chunk-I3GKTDM2.js.map} +0 -0
- /package/dist/{chunk-EQF5763Z.js.map → chunk-IQULRIZM.js.map} +0 -0
- /package/dist/{chunk-DJCKXI4M.js.map → chunk-NVXQTRBL.js.map} +0 -0
- /package/dist/{chunk-VDLMAJXS.js.map → chunk-OCY3CRPG.js.map} +0 -0
- /package/dist/{chunk-YLTG6BO4.js.map → chunk-OIFZII6J.js.map} +0 -0
- /package/dist/{chunk-XF4KOVDK.js.map → chunk-PA6DMYEK.js.map} +0 -0
- /package/dist/{chunk-3OQ4IZJN.js.map → chunk-QPZCAVDC.js.map} +0 -0
- /package/dist/{chunk-DLWYAN6A.js.map → chunk-T6U7HDIY.js.map} +0 -0
- /package/dist/{chunk-UTDA43TB.js.map → chunk-TWGGNUWJ.js.map} +0 -0
- /package/dist/{chunk-SBFDL2EQ.js.map → chunk-UTZW3X2R.js.map} +0 -0
- /package/dist/{chunk-SECMZACR.js.map → chunk-XUQUBZ7O.js.map} +0 -0
- /package/dist/{chunk-WUDBMLC6.js.map → chunk-ZC3HG22I.js.map} +0 -0
- /package/dist/{chunk-VCEH5UYS.js.map → chunk-ZRXSHGXT.js.map} +0 -0
|
@@ -13,7 +13,10 @@ import {
|
|
|
13
13
|
processChatMessage,
|
|
14
14
|
sessionBelongsToPrincipal,
|
|
15
15
|
subscribeChatTranscript
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-OCY3CRPG.js";
|
|
17
|
+
import {
|
|
18
|
+
RelayMissionStoreError
|
|
19
|
+
} from "./chunk-TITSEN2M.js";
|
|
17
20
|
import {
|
|
18
21
|
validateRequest
|
|
19
22
|
} from "./chunk-2MR3MFQB.js";
|
|
@@ -28,7 +31,7 @@ import {
|
|
|
28
31
|
} from "./chunk-35NN3ZFA.js";
|
|
29
32
|
import {
|
|
30
33
|
getOperation
|
|
31
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-CE3GMHT4.js";
|
|
32
35
|
import {
|
|
33
36
|
assertOperationAllowed,
|
|
34
37
|
enforceNamespaceAllowList,
|
|
@@ -38,7 +41,7 @@ import {
|
|
|
38
41
|
import {
|
|
39
42
|
CorrectionContractError,
|
|
40
43
|
EngramAccessInputError
|
|
41
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-QPZCAVDC.js";
|
|
42
45
|
import {
|
|
43
46
|
isTrustZoneName
|
|
44
47
|
} from "./chunk-JGSKJHF7.js";
|
|
@@ -50,7 +53,7 @@ import {
|
|
|
50
53
|
} from "./chunk-DEUNUKTD.js";
|
|
51
54
|
import {
|
|
52
55
|
isRecallDisclosure
|
|
53
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-G5PVJJRA.js";
|
|
54
57
|
import {
|
|
55
58
|
expandTildePath
|
|
56
59
|
} from "./chunk-EYIEWJNI.js";
|
|
@@ -374,6 +377,20 @@ function decodePeerIdSegment(raw) {
|
|
|
374
377
|
throw new EngramAccessInputError("peerId path segment is not valid percent-encoded input");
|
|
375
378
|
}
|
|
376
379
|
}
|
|
380
|
+
function decodeRelayMissionIdSegment(raw) {
|
|
381
|
+
try {
|
|
382
|
+
return decodeURIComponent(raw);
|
|
383
|
+
} catch {
|
|
384
|
+
throw new EngramAccessInputError(
|
|
385
|
+
"missionId path segment is not valid percent-encoded input"
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
function rejectBlankRelayNamespace(value) {
|
|
390
|
+
if (value !== void 0 && value !== null && value.trim().length === 0) {
|
|
391
|
+
throw new EngramAccessInputError("Relay namespace must not be blank when provided");
|
|
392
|
+
}
|
|
393
|
+
}
|
|
377
394
|
function codingContextFromProjectTag(projectTag) {
|
|
378
395
|
const projectId = projectTagProjectId(projectTag);
|
|
379
396
|
return {
|
|
@@ -403,7 +420,7 @@ var EngramAccessHttpServer = class {
|
|
|
403
420
|
readiness;
|
|
404
421
|
resourceMetadataUrl;
|
|
405
422
|
externalRequestHandler;
|
|
406
|
-
|
|
423
|
+
writeRequestSlots = [];
|
|
407
424
|
writeRateLimitMaxRequests;
|
|
408
425
|
writeRateLimitWindowMs;
|
|
409
426
|
mcpServer;
|
|
@@ -504,6 +521,14 @@ var EngramAccessHttpServer = class {
|
|
|
504
521
|
this.respondJson(res, 400, { error: err.message, code: "correction_contract_error" });
|
|
505
522
|
return;
|
|
506
523
|
}
|
|
524
|
+
if (err instanceof RelayMissionStoreError) {
|
|
525
|
+
const status = err.code === "idempotency_conflict" ? 409 : err.code === "limit_exceeded" ? 413 : err.code === "lock_unavailable" ? 503 : 500;
|
|
526
|
+
this.respondJson(res, status, {
|
|
527
|
+
error: status >= 500 ? "relay_backend_unavailable" : err.message,
|
|
528
|
+
code: `relay_${err.code}`
|
|
529
|
+
});
|
|
530
|
+
return;
|
|
531
|
+
}
|
|
507
532
|
if (res.headersSent) {
|
|
508
533
|
res.destroy(err);
|
|
509
534
|
return;
|
|
@@ -1358,6 +1383,87 @@ var EngramAccessHttpServer = class {
|
|
|
1358
1383
|
this.respondJson(res, 200, await this.service.lcmStatus());
|
|
1359
1384
|
return;
|
|
1360
1385
|
}
|
|
1386
|
+
const relayEventMatch = /^\/engram\/v1\/relay\/missions\/([^/]+)\/events$/.exec(pathname);
|
|
1387
|
+
if (req.method === "POST" && relayEventMatch) {
|
|
1388
|
+
const missionId = decodeRelayMissionIdSegment(relayEventMatch[1] ?? "");
|
|
1389
|
+
const body = await this.readJsonBody(req);
|
|
1390
|
+
const unexpectedFields = Object.keys(body).filter(
|
|
1391
|
+
(key) => key !== "namespace" && key !== "event"
|
|
1392
|
+
);
|
|
1393
|
+
if (unexpectedFields.length > 0) {
|
|
1394
|
+
throw new EngramAccessInputError(
|
|
1395
|
+
`Relay append body contains unexpected field(s): ${unexpectedFields.sort().join(", ")}`
|
|
1396
|
+
);
|
|
1397
|
+
}
|
|
1398
|
+
if (!Object.prototype.hasOwnProperty.call(body, "event")) {
|
|
1399
|
+
throw new EngramAccessInputError("Relay append body must contain an event object");
|
|
1400
|
+
}
|
|
1401
|
+
if (Object.prototype.hasOwnProperty.call(body, "namespace") && body.namespace !== void 0 && body.namespace !== null && typeof body.namespace !== "string") {
|
|
1402
|
+
throw new EngramAccessInputError("namespace must be a string when provided");
|
|
1403
|
+
}
|
|
1404
|
+
rejectBlankRelayNamespace(
|
|
1405
|
+
typeof body.namespace === "string" ? body.namespace : void 0
|
|
1406
|
+
);
|
|
1407
|
+
const namespace = this.resolveNamespace(
|
|
1408
|
+
req,
|
|
1409
|
+
typeof body.namespace === "string" ? body.namespace : void 0
|
|
1410
|
+
);
|
|
1411
|
+
const op = getOperation("relay_mission_append");
|
|
1412
|
+
if (!op) {
|
|
1413
|
+
throw new Error("access-boundary: operation not registered: relay_mission_append");
|
|
1414
|
+
}
|
|
1415
|
+
let releaseWriteQuota;
|
|
1416
|
+
try {
|
|
1417
|
+
const output = await op.run(
|
|
1418
|
+
{ missionId, namespace, event: body.event },
|
|
1419
|
+
{
|
|
1420
|
+
service: this.service,
|
|
1421
|
+
authenticatedPrincipal: this.resolveRequestPrincipal(req),
|
|
1422
|
+
hooks: {
|
|
1423
|
+
enforceWriteQuota: () => {
|
|
1424
|
+
releaseWriteQuota ??= this.reserveWriteRateLimitSlot();
|
|
1425
|
+
}
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
);
|
|
1429
|
+
if (output.result.appended) {
|
|
1430
|
+
releaseWriteQuota = void 0;
|
|
1431
|
+
}
|
|
1432
|
+
this.respondJson(res, output.result.appended ? 201 : 200, output.result);
|
|
1433
|
+
} finally {
|
|
1434
|
+
releaseWriteQuota?.();
|
|
1435
|
+
}
|
|
1436
|
+
return;
|
|
1437
|
+
}
|
|
1438
|
+
const relayMissionMatch = /^\/engram\/v1\/relay\/missions\/([^/]+)$/.exec(pathname);
|
|
1439
|
+
if (req.method === "GET" && relayMissionMatch) {
|
|
1440
|
+
const missionId = decodeRelayMissionIdSegment(relayMissionMatch[1] ?? "");
|
|
1441
|
+
rejectBlankRelayNamespace(parsed.searchParams.get("namespace"));
|
|
1442
|
+
const namespace = this.resolveNamespace(
|
|
1443
|
+
req,
|
|
1444
|
+
parsed.searchParams.get("namespace") ?? void 0
|
|
1445
|
+
);
|
|
1446
|
+
const op = getOperation("relay_mission_read");
|
|
1447
|
+
if (!op) {
|
|
1448
|
+
throw new Error("access-boundary: operation not registered: relay_mission_read");
|
|
1449
|
+
}
|
|
1450
|
+
const output = await op.run(
|
|
1451
|
+
{
|
|
1452
|
+
missionId,
|
|
1453
|
+
namespace,
|
|
1454
|
+
since: parsed.searchParams.get("since") ?? void 0,
|
|
1455
|
+
until: parsed.searchParams.get("until") ?? void 0,
|
|
1456
|
+
limit: parsed.searchParams.get("limit") ?? void 0
|
|
1457
|
+
},
|
|
1458
|
+
{
|
|
1459
|
+
service: this.service,
|
|
1460
|
+
authenticatedPrincipal: this.resolveRequestPrincipal(req)
|
|
1461
|
+
}
|
|
1462
|
+
);
|
|
1463
|
+
res.setHeader("cache-control", "no-store");
|
|
1464
|
+
this.respondJson(res, 200, output.result);
|
|
1465
|
+
return;
|
|
1466
|
+
}
|
|
1361
1467
|
if (req.method === "POST" && pathname === "/engram/v1/memories") {
|
|
1362
1468
|
const body = await this.readValidatedBody(req, "memoryStore");
|
|
1363
1469
|
const envelope = {
|
|
@@ -2917,15 +3023,27 @@ var EngramAccessHttpServer = class {
|
|
|
2917
3023
|
}
|
|
2918
3024
|
ensureWriteRateLimitAvailable() {
|
|
2919
3025
|
const now = Date.now();
|
|
2920
|
-
while (this.
|
|
2921
|
-
this.
|
|
3026
|
+
while (this.writeRequestSlots.length > 0 && now - (this.writeRequestSlots[0]?.recordedAt ?? 0) > this.writeRateLimitWindowMs) {
|
|
3027
|
+
this.writeRequestSlots.shift();
|
|
2922
3028
|
}
|
|
2923
|
-
if (this.
|
|
3029
|
+
if (this.writeRequestSlots.length >= this.writeRateLimitMaxRequests) {
|
|
2924
3030
|
throw new HttpError(429, "write_rate_limited", "write_rate_limited");
|
|
2925
3031
|
}
|
|
2926
3032
|
}
|
|
2927
3033
|
recordWriteRateLimitHit() {
|
|
2928
|
-
this.
|
|
3034
|
+
this.writeRequestSlots.push({ recordedAt: Date.now() });
|
|
3035
|
+
}
|
|
3036
|
+
reserveWriteRateLimitSlot() {
|
|
3037
|
+
this.ensureWriteRateLimitAvailable();
|
|
3038
|
+
const slot = { recordedAt: Date.now() };
|
|
3039
|
+
this.writeRequestSlots.push(slot);
|
|
3040
|
+
let active = true;
|
|
3041
|
+
return () => {
|
|
3042
|
+
if (!active) return;
|
|
3043
|
+
active = false;
|
|
3044
|
+
const index = this.writeRequestSlots.indexOf(slot);
|
|
3045
|
+
if (index >= 0) this.writeRequestSlots.splice(index, 1);
|
|
3046
|
+
};
|
|
2929
3047
|
}
|
|
2930
3048
|
shouldCountWriteRateLimit(response) {
|
|
2931
3049
|
return response.dryRun !== true && response.idempotencyReplay !== true;
|
|
@@ -2972,4 +3090,4 @@ function positiveIntQueryParam(value, label) {
|
|
|
2972
3090
|
export {
|
|
2973
3091
|
EngramAccessHttpServer
|
|
2974
3092
|
};
|
|
2975
|
-
//# sourceMappingURL=chunk-
|
|
3093
|
+
//# sourceMappingURL=chunk-ZASJ53ML.js.map
|