@remnic/core 9.3.637 → 9.3.639
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-cli.js +29 -29
- package/dist/access-http.d.ts +56 -5
- package/dist/access-http.js +15 -13
- package/dist/access-mcp.d.ts +4 -4
- package/dist/access-mcp.js +14 -12
- package/dist/access-schema.d.ts +3 -0
- package/dist/access-schema.js +1 -1
- package/dist/{access-service-GVOE5U3C.d.ts → access-service-jyYute38.d.ts} +4 -2
- package/dist/access-service.d.ts +4 -4
- package/dist/access-service.js +12 -10
- 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/{auto-sync-RFADEHIQ.js → auto-sync-54QQHOG5.js} +4 -4
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +3 -3
- package/dist/briefing.d.ts +1 -1
- package/dist/briefing.js +3 -3
- package/dist/buffer-surprise-report.d.ts +1 -1
- package/dist/buffer.d.ts +1 -1
- package/dist/calibration.d.ts +1 -1
- package/dist/calibration.js +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-consolidation.js +7 -7
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.js +1 -1
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-TFICNXXU.js → chunk-2BHNQRE5.js} +1153 -294
- package/dist/chunk-2BHNQRE5.js.map +1 -0
- package/dist/{chunk-3RDYU3JS.js → chunk-3AZDLWDW.js} +3 -3
- package/dist/{chunk-FPNQF475.js → chunk-3F7RMHC4.js} +1 -1
- package/dist/chunk-3F7RMHC4.js.map +1 -0
- package/dist/{chunk-3EJ5OOZ3.js → chunk-3SF7QNKF.js} +3 -3
- package/dist/{chunk-NFNQ7TWF.js → chunk-4VTVCWVB.js} +20 -12
- package/dist/chunk-4VTVCWVB.js.map +1 -0
- package/dist/{chunk-XM6M6DHG.js → chunk-52XI77OQ.js} +204 -13
- package/dist/chunk-52XI77OQ.js.map +1 -0
- package/dist/{chunk-6BDVBBBY.js → chunk-666A3MOW.js} +88 -30
- package/dist/chunk-666A3MOW.js.map +1 -0
- package/dist/{chunk-242XFZ36.js → chunk-7OH7KPF5.js} +2 -2
- package/dist/{chunk-HZVIYZYN.js → chunk-7R37SOT4.js} +6 -6
- package/dist/{chunk-7A2QKUUA.js → chunk-7XRSLMUD.js} +2 -2
- package/dist/{chunk-723OMPUI.js → chunk-A3BS64GV.js} +7 -1
- package/dist/chunk-A3BS64GV.js.map +1 -0
- package/dist/{chunk-JCLECECB.js → chunk-A3UPMOJZ.js} +2 -2
- package/dist/{chunk-YCX45GOQ.js → chunk-AFH2JXSF.js} +2 -2
- package/dist/{chunk-BK35NOJL.js → chunk-BB6FNMMB.js} +52 -6
- package/dist/chunk-BB6FNMMB.js.map +1 -0
- package/dist/{chunk-3XNMN242.js → chunk-BTY5XQG3.js} +7 -7
- package/dist/{chunk-QHXW3LZV.js → chunk-C3EJ3UIS.js} +3 -3
- package/dist/{chunk-A3HKTPPV.js → chunk-C63WC454.js} +12 -1
- package/dist/chunk-C63WC454.js.map +1 -0
- package/dist/{chunk-4S3N6HFG.js → chunk-C6XO6ONP.js} +2 -2
- package/dist/{chunk-WD2W4234.js → chunk-CDHRUNBX.js} +11 -2
- package/dist/chunk-CDHRUNBX.js.map +1 -0
- package/dist/{chunk-YQNADJCT.js → chunk-CMZLMIZI.js} +2 -2
- package/dist/{chunk-KVDUDYEN.js → chunk-DDRNDPX4.js} +2 -2
- package/dist/{chunk-PW6GURU3.js → chunk-EKIQBGAY.js} +2 -2
- package/dist/{chunk-QJGTSCJN.js → chunk-FGRV3X3Y.js} +19 -19
- package/dist/{chunk-2IT7WFYE.js → chunk-FWIROLS6.js} +2 -1
- package/dist/chunk-FWIROLS6.js.map +1 -0
- package/dist/{chunk-X7EJF46S.js → chunk-H4RWKZE2.js} +2 -2
- package/dist/{chunk-A6D7A2FW.js → chunk-IHG27THY.js} +4 -4
- package/dist/{chunk-PUEAEQSN.js → chunk-ISMZIMD3.js} +2 -2
- package/dist/{chunk-LEG7XWS2.js → chunk-IXSTQGYV.js} +2 -2
- package/dist/{chunk-CMN5AWAZ.js → chunk-J2KFC47S.js} +2 -2
- package/dist/{chunk-K47C6M2C.js → chunk-M75TBFKQ.js} +2 -2
- package/dist/{chunk-7V2SGZ3H.js → chunk-NE566K4E.js} +2 -2
- package/dist/{chunk-YROCXMCK.js → chunk-RJGPH2Q3.js} +2 -2
- package/dist/{chunk-UXFOGILU.js → chunk-SBHQBC37.js} +2 -2
- package/dist/{chunk-QYGIQ5NM.js → chunk-SHHT4JTC.js} +2 -2
- package/dist/{chunk-TQOU3VAT.js → chunk-SSOMTUCA.js} +1 -1
- package/dist/{chunk-NRST7W5Q.js → chunk-UI2UP7XX.js} +2 -2
- package/dist/{chunk-C4KKM62E.js → chunk-UU5LHD6J.js} +2 -2
- package/dist/{chunk-EWC6W6AB.js → chunk-UXA5L2DZ.js} +2 -2
- package/dist/{chunk-XL7FK7PJ.js → chunk-Y56J7CXW.js} +33 -16
- package/dist/{chunk-XL7FK7PJ.js.map → chunk-Y56J7CXW.js.map} +1 -1
- package/dist/{cli-B-fHk59D.d.ts → cli-A4AIhv9e.d.ts} +3 -3
- package/dist/cli.d.ts +5 -5
- package/dist/cli.js +28 -27
- package/dist/compounding/engine.d.ts +1 -1
- 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 +1 -1
- package/dist/consolidation-undo.d.ts +1 -1
- package/dist/contradiction/index.d.ts +1 -1
- 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 +1 -1
- package/dist/entity-retrieval.js +3 -3
- package/dist/entity-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +3 -3
- 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.d.ts +1 -1
- package/dist/extraction.js +2 -2
- package/dist/fallback-llm.d.ts +1 -1
- package/dist/fallback-llm.js +1 -1
- package/dist/{graph-edge-decay-5ZOK7ZNO.js → graph-edge-decay-PUFNHOBS.js} +2 -2
- package/dist/graph-snapshot.js +2 -2
- package/dist/graph.d.ts +3 -0
- package/dist/graph.js +1 -1
- package/dist/identity-continuity.d.ts +1 -1
- package/dist/importance.d.ts +1 -1
- package/dist/index.d.ts +9 -9
- package/dist/index.js +40 -40
- 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/maintenance/memory-governance-cron.d.ts +8 -0
- package/dist/maintenance/memory-governance-cron.js +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 +4 -4
- 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 +1 -1
- package/dist/models-json.d.ts +1 -1
- package/dist/namespaces/migrate.d.ts +1 -1
- 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 +1 -1
- package/dist/namespaces/storage.js +3 -3
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +1 -1
- package/dist/operator-toolkit.js +8 -8
- package/dist/{orchestrator-CoqytbK_.d.ts → orchestrator-BEDTiuEO.d.ts} +20 -5
- package/dist/orchestrator.d.ts +3 -3
- package/dist/orchestrator.js +24 -24
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/policy-runtime.d.ts +1 -1
- package/dist/qmd-recall-cache.d.ts +1 -1
- package/dist/qmd.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-planner-llm.d.ts +1 -1
- package/dist/recall-planner-llm.js +1 -1
- package/dist/recall-state.d.ts +3 -1
- package/dist/recall-state.js +1 -1
- package/dist/recall-tag-filter.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/resolve-auth-token.d.ts +1 -1
- package/dist/resume-bundles.js +4 -4
- package/dist/retrieval-agents.d.ts +1 -1
- 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/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-BPs6BURk.d.ts → semantic-consolidation-Byut1ufK.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 +1 -1
- package/dist/signal.d.ts +1 -1
- package/dist/storage.d.ts +1 -1
- package/dist/storage.js +2 -2
- package/dist/summarizer.d.ts +1 -1
- package/dist/summarizer.js +3 -3
- package/dist/summary-snapshot.d.ts +1 -1
- package/dist/temporal-supersession.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 +1 -1
- package/dist/tier-routing.d.ts +1 -1
- package/dist/topics.d.ts +1 -1
- package/dist/transcript.d.ts +1 -1
- package/dist/transcript.js +2 -2
- package/dist/{types-CpMPD8xl.d.ts → types-BzA1FKbg.d.ts} +4 -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 +1 -1
- package/src/access-http.test.ts +110 -2
- package/src/access-http.ts +117 -1
- package/src/access-mcp.ts +15 -6
- package/src/access-schema.ts +14 -0
- package/src/access-service-namespace.test.ts +740 -0
- package/src/access-service.ts +226 -4
- package/src/config.ts +14 -0
- package/src/fallback-llm.ts +16 -0
- package/src/graph.ts +39 -17
- package/src/index.ts +9 -1
- package/src/maintenance/memory-governance-cron.ts +113 -30
- package/src/orchestrator.ts +1456 -336
- package/src/recall-state.ts +3 -0
- package/src/types.ts +4 -0
- package/dist/chunk-2IT7WFYE.js.map +0 -1
- package/dist/chunk-6BDVBBBY.js.map +0 -1
- package/dist/chunk-723OMPUI.js.map +0 -1
- package/dist/chunk-A3HKTPPV.js.map +0 -1
- package/dist/chunk-BK35NOJL.js.map +0 -1
- package/dist/chunk-FPNQF475.js.map +0 -1
- package/dist/chunk-NFNQ7TWF.js.map +0 -1
- package/dist/chunk-TFICNXXU.js.map +0 -1
- package/dist/chunk-WD2W4234.js.map +0 -1
- package/dist/chunk-XM6M6DHG.js.map +0 -1
- /package/dist/{auto-sync-RFADEHIQ.js.map → auto-sync-54QQHOG5.js.map} +0 -0
- /package/dist/{chunk-3RDYU3JS.js.map → chunk-3AZDLWDW.js.map} +0 -0
- /package/dist/{chunk-3EJ5OOZ3.js.map → chunk-3SF7QNKF.js.map} +0 -0
- /package/dist/{chunk-242XFZ36.js.map → chunk-7OH7KPF5.js.map} +0 -0
- /package/dist/{chunk-HZVIYZYN.js.map → chunk-7R37SOT4.js.map} +0 -0
- /package/dist/{chunk-7A2QKUUA.js.map → chunk-7XRSLMUD.js.map} +0 -0
- /package/dist/{chunk-JCLECECB.js.map → chunk-A3UPMOJZ.js.map} +0 -0
- /package/dist/{chunk-YCX45GOQ.js.map → chunk-AFH2JXSF.js.map} +0 -0
- /package/dist/{chunk-3XNMN242.js.map → chunk-BTY5XQG3.js.map} +0 -0
- /package/dist/{chunk-QHXW3LZV.js.map → chunk-C3EJ3UIS.js.map} +0 -0
- /package/dist/{chunk-4S3N6HFG.js.map → chunk-C6XO6ONP.js.map} +0 -0
- /package/dist/{chunk-YQNADJCT.js.map → chunk-CMZLMIZI.js.map} +0 -0
- /package/dist/{chunk-KVDUDYEN.js.map → chunk-DDRNDPX4.js.map} +0 -0
- /package/dist/{chunk-PW6GURU3.js.map → chunk-EKIQBGAY.js.map} +0 -0
- /package/dist/{chunk-QJGTSCJN.js.map → chunk-FGRV3X3Y.js.map} +0 -0
- /package/dist/{chunk-X7EJF46S.js.map → chunk-H4RWKZE2.js.map} +0 -0
- /package/dist/{chunk-A6D7A2FW.js.map → chunk-IHG27THY.js.map} +0 -0
- /package/dist/{chunk-PUEAEQSN.js.map → chunk-ISMZIMD3.js.map} +0 -0
- /package/dist/{chunk-LEG7XWS2.js.map → chunk-IXSTQGYV.js.map} +0 -0
- /package/dist/{chunk-CMN5AWAZ.js.map → chunk-J2KFC47S.js.map} +0 -0
- /package/dist/{chunk-K47C6M2C.js.map → chunk-M75TBFKQ.js.map} +0 -0
- /package/dist/{chunk-7V2SGZ3H.js.map → chunk-NE566K4E.js.map} +0 -0
- /package/dist/{chunk-YROCXMCK.js.map → chunk-RJGPH2Q3.js.map} +0 -0
- /package/dist/{chunk-UXFOGILU.js.map → chunk-SBHQBC37.js.map} +0 -0
- /package/dist/{chunk-QYGIQ5NM.js.map → chunk-SHHT4JTC.js.map} +0 -0
- /package/dist/{chunk-TQOU3VAT.js.map → chunk-SSOMTUCA.js.map} +0 -0
- /package/dist/{chunk-NRST7W5Q.js.map → chunk-UI2UP7XX.js.map} +0 -0
- /package/dist/{chunk-C4KKM62E.js.map → chunk-UU5LHD6J.js.map} +0 -0
- /package/dist/{chunk-EWC6W6AB.js.map → chunk-UXA5L2DZ.js.map} +0 -0
- /package/dist/{graph-edge-decay-5ZOK7ZNO.js.map → graph-edge-decay-PUFNHOBS.js.map} +0 -0
|
@@ -7,18 +7,18 @@ import {
|
|
|
7
7
|
materializeAfterSemanticConsolidation,
|
|
8
8
|
parseConsolidationResponse,
|
|
9
9
|
parseOperatorAwareConsolidationResponse
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-H4RWKZE2.js";
|
|
11
|
+
import "./chunk-7XRSLMUD.js";
|
|
12
12
|
import "./chunk-LN4YGHTM.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveExtensionsRoot
|
|
15
15
|
} from "./chunk-JLNBQWZ2.js";
|
|
16
16
|
import "./chunk-3UXOZBHV.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-SHHT4JTC.js";
|
|
18
18
|
import "./chunk-M7XQSUBB.js";
|
|
19
19
|
import "./chunk-5UZXUTVO.js";
|
|
20
20
|
import "./chunk-J6A3CX5N.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-3F7RMHC4.js";
|
|
22
22
|
import "./chunk-RULE4VG5.js";
|
|
23
23
|
import "./chunk-SCU65EZI.js";
|
|
24
24
|
import "./chunk-MB5RSUW6.js";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
promoteSemanticRuleFromMemory,
|
|
3
3
|
setSemanticRulePromotionTestHooks
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-ISMZIMD3.js";
|
|
5
|
+
import "./chunk-SHHT4JTC.js";
|
|
6
6
|
import "./chunk-M7XQSUBB.js";
|
|
7
7
|
import "./chunk-5UZXUTVO.js";
|
|
8
8
|
import "./chunk-J6A3CX5N.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-3F7RMHC4.js";
|
|
10
10
|
import "./chunk-RULE4VG5.js";
|
|
11
11
|
import "./chunk-SCU65EZI.js";
|
|
12
12
|
import "./chunk-MB5RSUW6.js";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
searchVerifiedSemanticRules
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-C6XO6ONP.js";
|
|
4
|
+
import "./chunk-SHHT4JTC.js";
|
|
5
5
|
import "./chunk-M7XQSUBB.js";
|
|
6
6
|
import "./chunk-5UZXUTVO.js";
|
|
7
7
|
import "./chunk-J6A3CX5N.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-3F7RMHC4.js";
|
|
9
9
|
import "./chunk-RULE4VG5.js";
|
|
10
10
|
import "./chunk-SCU65EZI.js";
|
|
11
11
|
import "./chunk-MB5RSUW6.js";
|
package/dist/signal.d.ts
CHANGED
package/dist/storage.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { VersioningConfig } from './page-versioning.js';
|
|
2
2
|
import { ConsolidationOperator } from './consolidation-operator.js';
|
|
3
|
-
import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, I as ImportanceScore, i as MemoryLink, j as MemoryFrontmatter, g as MemoryFile, E as EntityStructuredSection, k as BufferState, l as MetaState, m as MemoryActionEvent, n as MemoryLifecycleEvent, o as BufferSurpriseEvent, B as BehaviorSignalEvent, C as CompressionGuidelineOptimizerState, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, r as ContinuityIncidentCloseInput, s as ContinuityImprovementLoop, t as ContinuityLoopUpsertInput, u as ContinuityLoopReviewInput, F as FileHygieneConfig, v as EntityRelationship, w as EntityActivityEntry, x as EntityFile, y as AccessTrackingEntry, z as MemoryProjectionCurrentState, D as MemorySummary, T as TopicScore } from './types-
|
|
3
|
+
import { P as PluginConfig, h as MemoryStatus, M as MemoryCategory, I as ImportanceScore, i as MemoryLink, j as MemoryFrontmatter, g as MemoryFile, E as EntityStructuredSection, k as BufferState, l as MetaState, m as MemoryActionEvent, n as MemoryLifecycleEvent, o as BufferSurpriseEvent, B as BehaviorSignalEvent, C as CompressionGuidelineOptimizerState, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, r as ContinuityIncidentCloseInput, s as ContinuityImprovementLoop, t as ContinuityLoopUpsertInput, u as ContinuityLoopReviewInput, F as FileHygieneConfig, v as EntityRelationship, w as EntityActivityEntry, x as EntityFile, y as AccessTrackingEntry, z as MemoryProjectionCurrentState, D as MemorySummary, T as TopicScore } from './types-BzA1FKbg.js';
|
|
4
4
|
import { ProjectedMemoryBrowseOptions, ProjectedMemoryBrowsePage, readProjectedGovernanceRecord } from './memory-projection-store.js';
|
|
5
5
|
import './types-BliCnURB.js';
|
|
6
6
|
import './index-DJ9QWMw-.js';
|
package/dist/storage.js
CHANGED
|
@@ -9,11 +9,11 @@ import {
|
|
|
9
9
|
parseEntityFile,
|
|
10
10
|
serializeEntityFile,
|
|
11
11
|
stripAttributesSuffix
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SHHT4JTC.js";
|
|
13
13
|
import "./chunk-M7XQSUBB.js";
|
|
14
14
|
import "./chunk-5UZXUTVO.js";
|
|
15
15
|
import "./chunk-J6A3CX5N.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-3F7RMHC4.js";
|
|
17
17
|
import "./chunk-RULE4VG5.js";
|
|
18
18
|
import "./chunk-SCU65EZI.js";
|
|
19
19
|
import "./chunk-MB5RSUW6.js";
|
package/dist/summarizer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModelRegistry } from './model-registry.js';
|
|
2
|
-
import { P as PluginConfig, G as GatewayConfig, _ as TranscriptEntry, a0 as HourlySummary } from './types-
|
|
2
|
+
import { P as PluginConfig, G as GatewayConfig, _ as TranscriptEntry, a0 as HourlySummary } from './types-BzA1FKbg.js';
|
|
3
3
|
import { TranscriptManager } from './transcript.js';
|
|
4
4
|
import './types-BliCnURB.js';
|
|
5
5
|
import './index-DJ9QWMw-.js';
|
package/dist/summarizer.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
2
|
HourlySummarizer
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7R37SOT4.js";
|
|
4
4
|
import "./chunk-XJNBEDFE.js";
|
|
5
5
|
import "./chunk-XZ4WBBB5.js";
|
|
6
6
|
import "./chunk-77NAFXUD.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-723OMPUI.js";
|
|
7
|
+
import "./chunk-A3BS64GV.js";
|
|
9
8
|
import "./chunk-B5XMS73R.js";
|
|
10
9
|
import "./chunk-7SI52C65.js";
|
|
11
10
|
import "./chunk-L2EXJQJP.js";
|
|
12
11
|
import "./chunk-RK6F44Y6.js";
|
|
12
|
+
import "./chunk-FF4KLI5W.js";
|
|
13
13
|
import "./chunk-NNVTUXEB.js";
|
|
14
14
|
import "./chunk-RGMVMVMF.js";
|
|
15
15
|
import "./chunk-EYIEWJNI.js";
|
package/dist/threading.d.ts
CHANGED
package/dist/tier-migration.d.ts
CHANGED
package/dist/tier-routing.d.ts
CHANGED
package/dist/topics.d.ts
CHANGED
package/dist/transcript.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-
|
|
1
|
+
import { P as PluginConfig, _ as TranscriptEntry, $ as Checkpoint } from './types-BzA1FKbg.js';
|
|
2
2
|
import { SessionIntegrityReport } from './session-integrity.js';
|
|
3
3
|
import './types-BliCnURB.js';
|
|
4
4
|
import './index-DJ9QWMw-.js';
|
package/dist/transcript.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import {
|
|
2
2
|
TranscriptManager
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-FF4KLI5W.js";
|
|
3
|
+
} from "./chunk-IHG27THY.js";
|
|
5
4
|
import "./chunk-KFY3SGN7.js";
|
|
5
|
+
import "./chunk-FF4KLI5W.js";
|
|
6
6
|
import "./chunk-2ODBA7MQ.js";
|
|
7
7
|
import "./chunk-PZ5AY32C.js";
|
|
8
8
|
export {
|
|
@@ -1222,6 +1222,8 @@ interface PluginConfig {
|
|
|
1222
1222
|
judgeTrainingDir: string;
|
|
1223
1223
|
hourlySummariesEnabled: boolean;
|
|
1224
1224
|
daySummaryEnabled: boolean;
|
|
1225
|
+
/** Timezone override for the day summary cron (issue #1475). */
|
|
1226
|
+
daySummaryTimezone?: string;
|
|
1225
1227
|
/** If true, Engram may attempt to auto-register an hourly summary cron job (default off). */
|
|
1226
1228
|
hourlySummaryCronAutoRegister: boolean;
|
|
1227
1229
|
/** If true, Engram may attempt to auto-register the nightly governance cron job (default off). */
|
|
@@ -1547,6 +1549,8 @@ interface PluginConfig {
|
|
|
1547
1549
|
* consolidation. When set, this chain is resolved through gateway providers
|
|
1548
1550
|
* instead of using gatewayAgentId or agents.defaults.model. All task paths
|
|
1549
1551
|
* route through the shared `gatewayTaskChainOptions` helper.
|
|
1552
|
+
* LCM summarization is the one fast-tier exception: if `fastGatewayAgentId`
|
|
1553
|
+
* is configured, LCM uses that persona before falling back to this chain.
|
|
1550
1554
|
*
|
|
1551
1555
|
* Only takes effect when `modelSource: "gateway"`; ignored (with a startup
|
|
1552
1556
|
* warning) under `modelSource: "plugin"`. See issue #1365 / PR #1370.
|
package/dist/types.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import './types-BliCnURB.js';
|
|
2
2
|
import './index-DJ9QWMw-.js';
|
|
3
|
-
export { y as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, a7 as AgentAccessAuthToken, b2 as AgentAccessHttpConfig, b3 as AgentDefaultsConfig, b4 as AgentPersona, f as AgentPersonaModelConfig, b5 as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, b6 as BehaviorSignalDirection, B as BehaviorSignalEvent, b7 as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, V as BriefingActiveThread, b8 as BriefingCalendarSourceError, aO as BriefingConfig, Q as BriefingFocus, O as BriefingFollowup, aP as BriefingOpenCommitment, X as BriefingRecentEntity, W as BriefingResult, N as BriefingSections, aQ as BriefingWindow, b9 as BufferEntryState, k as BufferState, o as BufferSurpriseEvent, Y as BufferTurn, U as CalendarEvent, S as CalendarSource, ba as CaptureMode, $ as Checkpoint, bb as CodexCliReasoningEffort, bc as CodexCompactionFlushMode, aR as CodexCompatConfig, bd as CodexConnectorConfig, aG as CodingContext, aL as CodingModeConfig, be as CompressionGuidelineActivationState, a9 as CompressionGuidelineOptimizerActionSummary, a8 as CompressionGuidelineOptimizerEventCounts, aa as CompressionGuidelineOptimizerRuleUpdate, bf as CompressionGuidelineOptimizerSourceWindow, C as CompressionGuidelineOptimizerState, bg as ConfidenceTier, bh as ConsolidationAction, bi as ConsolidationItem, aJ as ConsolidationObservation, ag as ConsolidationResult, s as ContinuityImprovementLoop, r as ContinuityIncidentCloseInput, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, bj as ContinuityIncidentState, bk as ContinuityLoopCadence, u as ContinuityLoopReviewInput, bl as ContinuityLoopStatus, t as ContinuityLoopUpsertInput, bm as ContradictionScanConfig, as as ConversationThread, bn as CronConversationRecallMode, bo as CronRecallMode, aS as DEFAULT_RECALL_DISCLOSURE, ah as DaySummaryResult, bp as DreamingConfig, bq as DreamingNarrativePromptStyle, br as DreamsDeepSleepConfig, bs as DreamsLightSleepConfig, au as DreamsPhase, bt as DreamsPhaseStatus, bu as DreamsPhasesConfig, bv as DreamsRemConfig, av as DreamsRunResult, at as DreamsStatusResult, bw as EngramTraceEvent, w as EntityActivityEntry, x as EntityFile, ac as EntityMention, v as EntityRelationship, ad as EntitySchemaDefinition, ae as EntitySchemaSectionDefinition, E as EntityStructuredSection, aK as EntityTimelineEntry, aT as ExtractedFact, bx as ExtractedProcedureStep, by as ExtractedQuestion, bz as ExtractedReasoningTrace, bA as ExtractedReasoningTraceStep, bB as ExtractedRelationship, bC as ExtractionPassSource, af as ExtractionResult, F as FileHygieneConfig, G as GatewayConfig, bD as GitHubLiveConnectorConfig, bE as GmailLiveConnectorConfig, bF as GoogleDriveLiveConnectorConfig, bG as HeartbeatConfig, bH as HeartbeatDetectionMode, a0 as HourlySummary, J as IdentityInjectionMode, a5 as ImportanceLevel, I as ImportanceScore, a2 as LifecycleState, L as LiveConnectorsConfig, bI as LlmTraceCallback, bJ as LlmTraceEvent, ak as MemoryActionEligibilityContext, aU as MemoryActionEligibilitySource, m as MemoryActionEvent, bK as MemoryActionOutcome, bL as MemoryActionPolicyDecision, al as MemoryActionPolicyResult, bM as MemoryActionStatus, ab as MemoryActionType, M as MemoryCategory, g as MemoryFile, j as MemoryFrontmatter, ai as MemoryIntent, n as MemoryLifecycleEvent, am as MemoryLifecycleEventType, an as MemoryLifecycleStateSummary, i as MemoryLink, bN as MemoryLinkType, aV as MemoryObservation, bO as MemoryOsPresetName, z as MemoryProjectionCurrentState, aW as MemoryScope, h as MemoryStatus, D as MemorySummary, l as MetaState, bP as ModelApi, bQ as ModelDefinitionConfig, bR as ModelProviderAuthMode, ao as ModelProviderConfig, bS as NamespacePolicy, ap as NativeKnowledgeConfig, bT as NativeKnowledgeFolderRuleConfig, bU as NativeKnowledgeObsidianVaultConfig, bV as NativeKnowledgeOpenClawWorkspaceConfig, bW as NotionLiveConnectorConfig, P as PluginConfig, a4 as PolicyClass, bX as PrincipalFromSessionKeyMode, bY as PrincipalRule, bZ as ProceduralConfig, aj as QmdSearchExplain, Z as QmdSearchResult, b_ as QuestionEntry, aX as RECALL_DISCLOSURE_LEVELS, b$ as ReasoningEffort, K as RecallDisclosure, c0 as RecallPipelineConfig, H as RecallPlanMode, c1 as RecallSectionConfig, R as RecallTierExplain, c2 as RecallTraceEvent, c3 as RelevanceFeedback, aq as RetrievalTier, c4 as SPECULATIVE_TTL_DAYS, c5 as ScoredEntity, a6 as SecretRef, c6 as SemanticChunkingConfigShape, a1 as SessionObserverBandConfig, c7 as SignalLevel, ar as SignalScanResult, c8 as SlotBehaviorConfig, c9 as SlotMismatchMode, T as TopicScore, _ as TranscriptEntry, ca as TriggerMode, a3 as VerificationState, cb as confidenceTier, b1 as isRecallDisclosure } from './types-
|
|
3
|
+
export { y as AccessTrackingEntry, A as ActiveRecallChatType, d as ActiveRecallModelFallbackPolicy, b as ActiveRecallPromptStyle, a as ActiveRecallQueryMode, c as ActiveRecallThinking, a7 as AgentAccessAuthToken, b2 as AgentAccessHttpConfig, b3 as AgentDefaultsConfig, b4 as AgentPersona, f as AgentPersonaModelConfig, b5 as BehaviorLoopAdjustment, e as BehaviorLoopPolicyState, b6 as BehaviorSignalDirection, B as BehaviorSignalEvent, b7 as BehaviorSignalType, aH as BootstrapOptions, aI as BootstrapResult, V as BriefingActiveThread, b8 as BriefingCalendarSourceError, aO as BriefingConfig, Q as BriefingFocus, O as BriefingFollowup, aP as BriefingOpenCommitment, X as BriefingRecentEntity, W as BriefingResult, N as BriefingSections, aQ as BriefingWindow, b9 as BufferEntryState, k as BufferState, o as BufferSurpriseEvent, Y as BufferTurn, U as CalendarEvent, S as CalendarSource, ba as CaptureMode, $ as Checkpoint, bb as CodexCliReasoningEffort, bc as CodexCompactionFlushMode, aR as CodexCompatConfig, bd as CodexConnectorConfig, aG as CodingContext, aL as CodingModeConfig, be as CompressionGuidelineActivationState, a9 as CompressionGuidelineOptimizerActionSummary, a8 as CompressionGuidelineOptimizerEventCounts, aa as CompressionGuidelineOptimizerRuleUpdate, bf as CompressionGuidelineOptimizerSourceWindow, C as CompressionGuidelineOptimizerState, bg as ConfidenceTier, bh as ConsolidationAction, bi as ConsolidationItem, aJ as ConsolidationObservation, ag as ConsolidationResult, s as ContinuityImprovementLoop, r as ContinuityIncidentCloseInput, p as ContinuityIncidentOpenInput, q as ContinuityIncidentRecord, bj as ContinuityIncidentState, bk as ContinuityLoopCadence, u as ContinuityLoopReviewInput, bl as ContinuityLoopStatus, t as ContinuityLoopUpsertInput, bm as ContradictionScanConfig, as as ConversationThread, bn as CronConversationRecallMode, bo as CronRecallMode, aS as DEFAULT_RECALL_DISCLOSURE, ah as DaySummaryResult, bp as DreamingConfig, bq as DreamingNarrativePromptStyle, br as DreamsDeepSleepConfig, bs as DreamsLightSleepConfig, au as DreamsPhase, bt as DreamsPhaseStatus, bu as DreamsPhasesConfig, bv as DreamsRemConfig, av as DreamsRunResult, at as DreamsStatusResult, bw as EngramTraceEvent, w as EntityActivityEntry, x as EntityFile, ac as EntityMention, v as EntityRelationship, ad as EntitySchemaDefinition, ae as EntitySchemaSectionDefinition, E as EntityStructuredSection, aK as EntityTimelineEntry, aT as ExtractedFact, bx as ExtractedProcedureStep, by as ExtractedQuestion, bz as ExtractedReasoningTrace, bA as ExtractedReasoningTraceStep, bB as ExtractedRelationship, bC as ExtractionPassSource, af as ExtractionResult, F as FileHygieneConfig, G as GatewayConfig, bD as GitHubLiveConnectorConfig, bE as GmailLiveConnectorConfig, bF as GoogleDriveLiveConnectorConfig, bG as HeartbeatConfig, bH as HeartbeatDetectionMode, a0 as HourlySummary, J as IdentityInjectionMode, a5 as ImportanceLevel, I as ImportanceScore, a2 as LifecycleState, L as LiveConnectorsConfig, bI as LlmTraceCallback, bJ as LlmTraceEvent, ak as MemoryActionEligibilityContext, aU as MemoryActionEligibilitySource, m as MemoryActionEvent, bK as MemoryActionOutcome, bL as MemoryActionPolicyDecision, al as MemoryActionPolicyResult, bM as MemoryActionStatus, ab as MemoryActionType, M as MemoryCategory, g as MemoryFile, j as MemoryFrontmatter, ai as MemoryIntent, n as MemoryLifecycleEvent, am as MemoryLifecycleEventType, an as MemoryLifecycleStateSummary, i as MemoryLink, bN as MemoryLinkType, aV as MemoryObservation, bO as MemoryOsPresetName, z as MemoryProjectionCurrentState, aW as MemoryScope, h as MemoryStatus, D as MemorySummary, l as MetaState, bP as ModelApi, bQ as ModelDefinitionConfig, bR as ModelProviderAuthMode, ao as ModelProviderConfig, bS as NamespacePolicy, ap as NativeKnowledgeConfig, bT as NativeKnowledgeFolderRuleConfig, bU as NativeKnowledgeObsidianVaultConfig, bV as NativeKnowledgeOpenClawWorkspaceConfig, bW as NotionLiveConnectorConfig, P as PluginConfig, a4 as PolicyClass, bX as PrincipalFromSessionKeyMode, bY as PrincipalRule, bZ as ProceduralConfig, aj as QmdSearchExplain, Z as QmdSearchResult, b_ as QuestionEntry, aX as RECALL_DISCLOSURE_LEVELS, b$ as ReasoningEffort, K as RecallDisclosure, c0 as RecallPipelineConfig, H as RecallPlanMode, c1 as RecallSectionConfig, R as RecallTierExplain, c2 as RecallTraceEvent, c3 as RelevanceFeedback, aq as RetrievalTier, c4 as SPECULATIVE_TTL_DAYS, c5 as ScoredEntity, a6 as SecretRef, c6 as SemanticChunkingConfigShape, a1 as SessionObserverBandConfig, c7 as SignalLevel, ar as SignalScanResult, c8 as SlotBehaviorConfig, c9 as SlotMismatchMode, T as TopicScore, _ as TranscriptEntry, ca as TriggerMode, a3 as VerificationState, cb as confidenceTier, b1 as isRecallDisclosure } from './types-BzA1FKbg.js';
|
package/dist/types.js
CHANGED
package/dist/verified-recall.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
searchVerifiedEpisodes
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-RJGPH2Q3.js";
|
|
4
4
|
import "./chunk-HQ6NIBL6.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-SHHT4JTC.js";
|
|
6
6
|
import "./chunk-M7XQSUBB.js";
|
|
7
7
|
import "./chunk-5UZXUTVO.js";
|
|
8
8
|
import "./chunk-J6A3CX5N.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-3F7RMHC4.js";
|
|
10
10
|
import "./chunk-RULE4VG5.js";
|
|
11
11
|
import "./chunk-SCU65EZI.js";
|
|
12
12
|
import "./chunk-MB5RSUW6.js";
|
package/package.json
CHANGED
package/src/access-http.test.ts
CHANGED
|
@@ -5,7 +5,7 @@ import path from "node:path";
|
|
|
5
5
|
import test from "node:test";
|
|
6
6
|
import { gzipSync } from "node:zlib";
|
|
7
7
|
|
|
8
|
-
import { EngramAccessHttpServer } from "./access-http.js";
|
|
8
|
+
import { EngramAccessHttpServer, type RemnicAdminControls, type RemnicAdminDashboardStatus } from "./access-http.js";
|
|
9
9
|
import { EngramAccessInputError, type EngramAccessService } from "./access-service.js";
|
|
10
10
|
import { parseConfig } from "./config.js";
|
|
11
11
|
import { readPair, writePair } from "./contradiction/contradiction-review.js";
|
|
@@ -117,7 +117,9 @@ test("HTTP admin console assets are public but API routes require bearer authent
|
|
|
117
117
|
try {
|
|
118
118
|
const shell = await fetch(`http://127.0.0.1:${status.port}/remnic/ui/`);
|
|
119
119
|
assert.equal(shell.status, 200);
|
|
120
|
-
|
|
120
|
+
const shellText = await shell.text();
|
|
121
|
+
assert.match(shellText, /Remnic Admin Console/);
|
|
122
|
+
assert.doesNotMatch(shellText, /test-token/);
|
|
121
123
|
|
|
122
124
|
const app = await fetch(`http://127.0.0.1:${status.port}/remnic/ui/app.js`);
|
|
123
125
|
assert.equal(app.status, 200);
|
|
@@ -133,6 +135,112 @@ test("HTTP admin console assets are public but API routes require bearer authent
|
|
|
133
135
|
}
|
|
134
136
|
});
|
|
135
137
|
|
|
138
|
+
test("HTTP admin console can prefill the primary bearer token when explicitly enabled", async () => {
|
|
139
|
+
const service = {} as EngramAccessService;
|
|
140
|
+
const server = new EngramAccessHttpServer({
|
|
141
|
+
service,
|
|
142
|
+
port: 0,
|
|
143
|
+
authToken: "test-token",
|
|
144
|
+
adminConsolePrefillToken: true,
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
const status = await server.start();
|
|
148
|
+
try {
|
|
149
|
+
const unauthenticatedShell = await fetch(`http://127.0.0.1:${status.port}/engram/ui/`);
|
|
150
|
+
assert.equal(unauthenticatedShell.status, 200);
|
|
151
|
+
assert.doesNotMatch(await unauthenticatedShell.text(), /test-token/);
|
|
152
|
+
|
|
153
|
+
const shell = await fetch(`http://127.0.0.1:${status.port}/engram/ui/`, {
|
|
154
|
+
headers: { authorization: "Bearer test-token" },
|
|
155
|
+
});
|
|
156
|
+
assert.equal(shell.status, 200);
|
|
157
|
+
assert.equal(shell.headers.get("cache-control"), "private, no-store");
|
|
158
|
+
assert.equal(shell.headers.get("vary"), "authorization");
|
|
159
|
+
const shellText = await shell.text();
|
|
160
|
+
assert.match(
|
|
161
|
+
shellText,
|
|
162
|
+
/window\.__REMNIC_ADMIN_CONSOLE_PREFILL_TOKEN__="test-token"/,
|
|
163
|
+
);
|
|
164
|
+
|
|
165
|
+
const app = await fetch(`http://127.0.0.1:${status.port}/engram/ui/app.js`);
|
|
166
|
+
assert.equal(app.status, 200);
|
|
167
|
+
assert.doesNotMatch(await app.text(), /test-token/);
|
|
168
|
+
} finally {
|
|
169
|
+
await server.stop();
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
test("HTTP admin dashboard endpoints require bearer authentication and apply config patches", async () => {
|
|
174
|
+
const service = {} as EngramAccessService;
|
|
175
|
+
const patches: unknown[] = [];
|
|
176
|
+
const dashboard: RemnicAdminDashboardStatus = {
|
|
177
|
+
config: {
|
|
178
|
+
path: "/tmp/remnic/config.json",
|
|
179
|
+
exists: true,
|
|
180
|
+
writable: true,
|
|
181
|
+
restartRequired: false,
|
|
182
|
+
values: {
|
|
183
|
+
modelSource: "plugin",
|
|
184
|
+
model: "gpt-4.1-mini",
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
harnesses: [],
|
|
188
|
+
models: [],
|
|
189
|
+
features: [],
|
|
190
|
+
};
|
|
191
|
+
const adminControls: RemnicAdminControls = {
|
|
192
|
+
status: async () => dashboard,
|
|
193
|
+
update: async (patch) => {
|
|
194
|
+
patches.push(patch);
|
|
195
|
+
return {
|
|
196
|
+
...dashboard,
|
|
197
|
+
config: {
|
|
198
|
+
...dashboard.config,
|
|
199
|
+
restartRequired: true,
|
|
200
|
+
values: {
|
|
201
|
+
...dashboard.config.values,
|
|
202
|
+
modelSource: "gateway",
|
|
203
|
+
gatewayAgentId: "sage-router",
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
},
|
|
208
|
+
};
|
|
209
|
+
const server = new EngramAccessHttpServer({
|
|
210
|
+
service,
|
|
211
|
+
port: 0,
|
|
212
|
+
authToken: "test-token",
|
|
213
|
+
adminControls,
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
const status = await server.start();
|
|
217
|
+
try {
|
|
218
|
+
const unauthorized = await fetch(`http://127.0.0.1:${status.port}/engram/v1/admin/dashboard`);
|
|
219
|
+
assert.equal(unauthorized.status, 401);
|
|
220
|
+
|
|
221
|
+
const dashboardResponse = await fetch(`http://127.0.0.1:${status.port}/engram/v1/admin/dashboard`, {
|
|
222
|
+
headers: { authorization: "Bearer test-token" },
|
|
223
|
+
});
|
|
224
|
+
assert.equal(dashboardResponse.status, 200);
|
|
225
|
+
assert.deepEqual(await dashboardResponse.json(), dashboard);
|
|
226
|
+
|
|
227
|
+
const patchResponse = await fetch(`http://127.0.0.1:${status.port}/remnic/v1/admin/config`, {
|
|
228
|
+
method: "PATCH",
|
|
229
|
+
headers: {
|
|
230
|
+
authorization: "Bearer test-token",
|
|
231
|
+
"content-type": "application/json",
|
|
232
|
+
},
|
|
233
|
+
body: JSON.stringify({ modelSource: "gateway", gatewayAgentId: "sage-router" }),
|
|
234
|
+
});
|
|
235
|
+
assert.equal(patchResponse.status, 200);
|
|
236
|
+
const body = await patchResponse.json() as RemnicAdminDashboardStatus;
|
|
237
|
+
assert.equal(body.config.restartRequired, true);
|
|
238
|
+
assert.deepEqual(patches, [{ modelSource: "gateway", gatewayAgentId: "sage-router" }]);
|
|
239
|
+
} finally {
|
|
240
|
+
await server.stop();
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
|
|
136
244
|
test("HTTP coding-context endpoint accepts projectTag shorthand", async () => {
|
|
137
245
|
const calls: unknown[] = [];
|
|
138
246
|
const service = {
|
package/src/access-http.ts
CHANGED
|
@@ -41,6 +41,8 @@ export interface EngramAccessHttpServerOptions {
|
|
|
41
41
|
maxBodyBytes?: number;
|
|
42
42
|
adminConsoleEnabled?: boolean;
|
|
43
43
|
adminConsolePublicDir?: string;
|
|
44
|
+
/** Inject the primary auth token into the admin console shell for trusted launch surfaces. */
|
|
45
|
+
adminConsolePrefillToken?: boolean;
|
|
44
46
|
trustPrincipalHeader?: boolean;
|
|
45
47
|
/** Enable adapter-based identity resolution from request headers */
|
|
46
48
|
enableAdapters?: boolean;
|
|
@@ -52,6 +54,8 @@ export interface EngramAccessHttpServerOptions {
|
|
|
52
54
|
citationsAutoDetect?: boolean;
|
|
53
55
|
/** Advertise legacy engram.* tool aliases on tools/list (issue #1427). Default true. */
|
|
54
56
|
emitLegacyTools?: boolean;
|
|
57
|
+
/** Optional authenticated admin dashboard/config controls supplied by the host server. */
|
|
58
|
+
adminControls?: RemnicAdminControls;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
61
|
export interface EngramAccessHttpServerStatus {
|
|
@@ -61,6 +65,57 @@ export interface EngramAccessHttpServerStatus {
|
|
|
61
65
|
maxBodyBytes: number;
|
|
62
66
|
}
|
|
63
67
|
|
|
68
|
+
export interface RemnicAdminHarnessStatus {
|
|
69
|
+
id: string;
|
|
70
|
+
label: string;
|
|
71
|
+
detected: boolean;
|
|
72
|
+
enabled: boolean;
|
|
73
|
+
source?: string;
|
|
74
|
+
detail?: string;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface RemnicAdminModelOption {
|
|
78
|
+
id: string;
|
|
79
|
+
label: string;
|
|
80
|
+
provider: string;
|
|
81
|
+
detected: boolean;
|
|
82
|
+
enabled: boolean;
|
|
83
|
+
default?: boolean;
|
|
84
|
+
source?: string;
|
|
85
|
+
endpoint?: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface RemnicAdminFeatureStatus {
|
|
89
|
+
key: string;
|
|
90
|
+
label: string;
|
|
91
|
+
enabled: boolean;
|
|
92
|
+
writable: boolean;
|
|
93
|
+
restartRequired?: boolean;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export interface RemnicAdminConfigStatus {
|
|
97
|
+
path: string;
|
|
98
|
+
exists: boolean;
|
|
99
|
+
writable: boolean;
|
|
100
|
+
restartRequired: boolean;
|
|
101
|
+
values: Record<string, string | number | boolean | null>;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface RemnicAdminDashboardStatus {
|
|
105
|
+
config: RemnicAdminConfigStatus;
|
|
106
|
+
harnesses: RemnicAdminHarnessStatus[];
|
|
107
|
+
providers?: RemnicAdminHarnessStatus[];
|
|
108
|
+
models: RemnicAdminModelOption[];
|
|
109
|
+
features: RemnicAdminFeatureStatus[];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
export type RemnicAdminConfigPatch = Record<string, unknown>;
|
|
113
|
+
|
|
114
|
+
export interface RemnicAdminControls {
|
|
115
|
+
status: () => Promise<RemnicAdminDashboardStatus>;
|
|
116
|
+
update?: (patch: RemnicAdminConfigPatch) => Promise<RemnicAdminDashboardStatus>;
|
|
117
|
+
}
|
|
118
|
+
|
|
64
119
|
function resolveDefaultAdminConsolePublicDir(): string {
|
|
65
120
|
const thisDir = path.dirname(fileURLToPath(import.meta.url));
|
|
66
121
|
const candidates = [
|
|
@@ -210,6 +265,8 @@ export class EngramAccessHttpServer {
|
|
|
210
265
|
private readonly maxBodyBytes: number;
|
|
211
266
|
private readonly adminConsoleEnabled: boolean;
|
|
212
267
|
private readonly adminConsolePublicDir: string;
|
|
268
|
+
private readonly adminConsolePrefillToken?: string;
|
|
269
|
+
private readonly adminControls?: RemnicAdminControls;
|
|
213
270
|
private readonly trustPrincipalHeader: boolean;
|
|
214
271
|
private readonly adapterRegistry: AdapterRegistry | null;
|
|
215
272
|
private readonly writeRequestTimestamps: number[] = [];
|
|
@@ -242,6 +299,8 @@ export class EngramAccessHttpServer {
|
|
|
242
299
|
: 131072;
|
|
243
300
|
this.adminConsoleEnabled = options.adminConsoleEnabled !== false;
|
|
244
301
|
this.adminConsolePublicDir = options.adminConsolePublicDir ?? defaultAdminConsolePublicDir;
|
|
302
|
+
this.adminConsolePrefillToken = options.adminConsolePrefillToken === true ? this.authToken : undefined;
|
|
303
|
+
this.adminControls = options.adminControls;
|
|
245
304
|
this.trustPrincipalHeader = options.trustPrincipalHeader === true;
|
|
246
305
|
this.adapterRegistry = options.enableAdapters !== false
|
|
247
306
|
? (options.adapterRegistry ?? new AdapterRegistry())
|
|
@@ -492,6 +551,38 @@ export class EngramAccessHttpServer {
|
|
|
492
551
|
return;
|
|
493
552
|
}
|
|
494
553
|
|
|
554
|
+
if (
|
|
555
|
+
req.method === "GET" &&
|
|
556
|
+
(pathname === "/engram/v1/admin/dashboard" || pathname === "/remnic/v1/admin/dashboard")
|
|
557
|
+
) {
|
|
558
|
+
if (!this.adminControls) {
|
|
559
|
+
this.respondJson(res, 404, { error: "admin_controls_unavailable", code: "admin_controls_unavailable" });
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
this.respondJson(res, 200, await this.adminControls.status());
|
|
563
|
+
return;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
if (
|
|
567
|
+
req.method === "PATCH" &&
|
|
568
|
+
(pathname === "/engram/v1/admin/config" || pathname === "/remnic/v1/admin/config")
|
|
569
|
+
) {
|
|
570
|
+
if (!this.adminControls?.update) {
|
|
571
|
+
this.respondJson(res, 404, { error: "admin_controls_unavailable", code: "admin_controls_unavailable" });
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
try {
|
|
575
|
+
this.respondJson(res, 200, await this.adminControls.update(await this.readJsonBody(req)));
|
|
576
|
+
} catch (error) {
|
|
577
|
+
throw new HttpError(
|
|
578
|
+
400,
|
|
579
|
+
error instanceof Error ? error.message : "invalid_admin_config_patch",
|
|
580
|
+
"invalid_admin_config_patch",
|
|
581
|
+
);
|
|
582
|
+
}
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
|
|
495
586
|
if (req.method === "POST" && pathname === "/engram/v1/recall") {
|
|
496
587
|
const body = await this.readValidatedBody(req, "recall");
|
|
497
588
|
// Preserve the distinction between `codingContext: null` (explicit
|
|
@@ -2244,7 +2335,7 @@ export class EngramAccessHttpServer {
|
|
|
2244
2335
|
return true;
|
|
2245
2336
|
}
|
|
2246
2337
|
if (pathname === "/remnic/ui/" || pathname === "/engram/ui/") {
|
|
2247
|
-
await this.
|
|
2338
|
+
await this.respondAdminConsoleShell(req, res, pathname);
|
|
2248
2339
|
return true;
|
|
2249
2340
|
}
|
|
2250
2341
|
if (pathname === "/remnic/ui/app.js" || pathname === "/engram/ui/app.js") {
|
|
@@ -2254,6 +2345,31 @@ export class EngramAccessHttpServer {
|
|
|
2254
2345
|
return false;
|
|
2255
2346
|
}
|
|
2256
2347
|
|
|
2348
|
+
private async respondAdminConsoleShell(
|
|
2349
|
+
req: IncomingMessage,
|
|
2350
|
+
res: ServerResponse,
|
|
2351
|
+
pathname: string,
|
|
2352
|
+
): Promise<void> {
|
|
2353
|
+
try {
|
|
2354
|
+
let body = await readFile(path.join(this.adminConsolePublicDir, "index.html"), "utf-8");
|
|
2355
|
+
const canPrefillToken = this.adminConsolePrefillToken && this.isAuthorized(req, pathname);
|
|
2356
|
+
if (canPrefillToken) {
|
|
2357
|
+
const script = `<script>window.__REMNIC_ADMIN_CONSOLE_PREFILL_TOKEN__=${JSON.stringify(this.adminConsolePrefillToken)};</script>`;
|
|
2358
|
+
body = body.includes("</head>")
|
|
2359
|
+
? body.replace("</head>", `${script}</head>`)
|
|
2360
|
+
: `${script}${body}`;
|
|
2361
|
+
res.setHeader("cache-control", "private, no-store");
|
|
2362
|
+
}
|
|
2363
|
+
res.setHeader("vary", "authorization");
|
|
2364
|
+
res.statusCode = 200;
|
|
2365
|
+
res.setHeader("content-type", "text/html; charset=utf-8");
|
|
2366
|
+
res.setHeader("content-length", String(Buffer.byteLength(body)));
|
|
2367
|
+
res.end(body);
|
|
2368
|
+
} catch {
|
|
2369
|
+
this.respondJson(res, 404, { error: "not_found" });
|
|
2370
|
+
}
|
|
2371
|
+
}
|
|
2372
|
+
|
|
2257
2373
|
private async respondStatic(res: ServerResponse, filePath: string, contentType: string): Promise<void> {
|
|
2258
2374
|
try {
|
|
2259
2375
|
const body = await readFile(filePath, "utf-8");
|