@remnic/core 9.16.3 → 9.17.0
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 +8 -8
- package/dist/access-boundary.d.ts +8 -8
- package/dist/access-cli.js +8 -8
- package/dist/access-http.d.ts +8 -8
- package/dist/access-identity-continuity-surface.d.ts +6 -6
- package/dist/access-lcm-surface.d.ts +8 -8
- package/dist/access-mcp.d.ts +8 -8
- package/dist/access-memory-search-fanout.d.ts +2 -2
- package/dist/{access-namespace-preflight-DwhEFYy3.d.ts → access-namespace-preflight-_yxq3PYy.d.ts} +1 -1
- package/dist/access-namespace-preflight.d.ts +3 -3
- package/dist/access-observe-write-surface.d.ts +8 -8
- package/dist/access-operations.d.ts +11 -11
- package/dist/access-recall-concurrency.d.ts +8 -8
- package/dist/access-recall-response.d.ts +8 -8
- package/dist/access-recall-surface.d.ts +8 -8
- package/dist/access-schema.d.ts +76 -76
- package/dist/{access-service-CSq1Wp2Z.d.ts → access-service-CSm242ks.d.ts} +6 -6
- package/dist/access-service.d.ts +8 -8
- package/dist/access-surface-catalog.d.ts +8 -8
- 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 +2 -2
- package/dist/{auto-sync-UZG3XQZ5.js → auto-sync-IH3G25MT.js} +2 -2
- package/dist/behavior-learner.d.ts +1 -1
- package/dist/behavior-signals.d.ts +1 -1
- package/dist/bootstrap.d.ts +6 -6
- package/dist/briefing.d.ts +2 -2
- 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-B9uga4sG.d.ts → catalog-9qLG_2OV.d.ts} +1 -1
- package/dist/causal-behavior.d.ts +1 -1
- package/dist/causal-consolidation.d.ts +1 -1
- package/dist/causal-trajectory-graph.d.ts +1 -1
- package/dist/{chunk-5EKOBRCA.js → chunk-BCNVNUQG.js} +2 -2
- package/dist/{chunk-V6LYAXGW.js → chunk-F7BWFIDK.js} +2 -2
- package/dist/{chunk-BTK2PIFL.js → chunk-GBT4TFV7.js} +2 -2
- package/dist/{chunk-JOCXI2O5.js → chunk-K2B2TMF3.js} +2 -2
- package/dist/{chunk-GSQASASV.js → chunk-MONWCSVL.js} +65 -4
- package/dist/chunk-MONWCSVL.js.map +1 -0
- package/dist/{chunk-VLIY55Q5.js → chunk-TXXP7WAM.js} +4 -4
- package/dist/{chunk-YHURQ3M5.js → chunk-UH7VNQ7O.js} +268 -5
- package/dist/chunk-UH7VNQ7O.js.map +1 -0
- package/dist/{chunk-5SB7SC2G.js → chunk-UX3ZXN34.js} +3 -1
- package/dist/{cli-DYLGXxuu.d.ts → cli-BLZHYY2A.d.ts} +5 -5
- package/dist/cli.d.ts +10 -10
- package/dist/cli.js +5 -5
- package/dist/compounding/engine.d.ts +2 -2
- 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 +2 -2
- package/dist/connectors/codex-materialize-runner.d.ts +1 -1
- package/dist/connectors/codex-materialize.d.ts +1 -1
- package/dist/connectors/index.d.ts +1 -1
- 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-schema.d.ts +1 -1
- package/dist/explicit-capture.d.ts +6 -6
- 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/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 +502 -427
- package/dist/index.js +14 -8
- 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/rebuild-memory-lifecycle-ledger.d.ts +2 -2
- package/dist/mcp-memory-inspector-app.d.ts +8 -8
- 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/principal.d.ts +1 -1
- package/dist/namespaces/search.d.ts +1 -1
- package/dist/namespaces/storage.d.ts +3 -3
- package/dist/native-knowledge.d.ts +1 -1
- package/dist/offline-sync-impression-drain.d.ts +1 -1
- package/dist/operator-toolkit.d.ts +2 -2
- package/dist/operator-toolkit.js +3 -3
- package/dist/orchestration/compression-guideline-coordinator.d.ts +2 -2
- package/dist/orchestration/maintenance.d.ts +3 -3
- package/dist/orchestration/maintenance.js +2 -2
- package/dist/{orchestrator-BHx-DWCa.d.ts → orchestrator-CplS9U3U.d.ts} +5 -5
- package/dist/orchestrator.d.ts +6 -6
- package/dist/orchestrator.js +8 -8
- package/dist/patterns-cli.d.ts +1 -1
- package/dist/{pipeline-DDHSE876.d.ts → pipeline-DB4CbFqo.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/{qmd-C4WVh6BM.d.ts → qmd-BxZmOLHq.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-memory-map.d.ts +1 -1
- 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-renderer.d.ts +1 -1
- package/dist/recall-xray.d.ts +1 -1
- 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 +3 -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 +76 -76
- package/dist/{scope-profiles-EqMXwzCz.d.ts → scope-profiles-NsQQo1Lt.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-CYpvwmQc.d.ts → semantic-consolidation-DW85h30n.d.ts} +1 -1
- package/dist/semantic-consolidation.d.ts +2 -2
- package/dist/semantic-rule-verifier.d.ts +1 -1
- 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-Dxd7zVZH.d.ts → storage-o5BTAa8d.d.ts} +1 -1
- package/dist/storage.d.ts +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-OUCJALBK.d.ts → types-V3dT-pen.d.ts} +14 -2
- package/dist/types.d.ts +1 -1
- package/dist/utility-runtime.d.ts +1 -1
- package/dist/write-envelope.d.ts +1 -1
- package/package.json +2 -2
- package/src/activity/config.test.ts +42 -4
- package/src/activity/config.ts +83 -8
- package/src/activity/index.ts +5 -3
- package/src/activity/memory-gen.test.ts +436 -0
- package/src/activity/memory-gen.ts +409 -0
- package/src/activity/runner.test.ts +3 -0
- package/src/activity/scheduler.test.ts +3 -0
- package/src/activity/sync-registration.test.ts +2 -1
- package/src/activity/types.ts +15 -1
- package/src/config.test.ts +7 -0
- package/dist/chunk-GSQASASV.js.map +0 -1
- package/dist/chunk-YHURQ3M5.js.map +0 -1
- /package/dist/{auto-sync-UZG3XQZ5.js.map → auto-sync-IH3G25MT.js.map} +0 -0
- /package/dist/{chunk-5EKOBRCA.js.map → chunk-BCNVNUQG.js.map} +0 -0
- /package/dist/{chunk-V6LYAXGW.js.map → chunk-F7BWFIDK.js.map} +0 -0
- /package/dist/{chunk-BTK2PIFL.js.map → chunk-GBT4TFV7.js.map} +0 -0
- /package/dist/{chunk-JOCXI2O5.js.map → chunk-K2B2TMF3.js.map} +0 -0
- /package/dist/{chunk-VLIY55Q5.js.map → chunk-TXXP7WAM.js.map} +0 -0
- /package/dist/{chunk-5SB7SC2G.js.map → chunk-UX3ZXN34.js.map} +0 -0
|
@@ -96,6 +96,8 @@ declare function validateImportTurn(turn: ImportTurn, index?: number): ImportTur
|
|
|
96
96
|
*
|
|
97
97
|
* All timestamps are UTC ISO-8601; day bucketing is half-open [start, end).
|
|
98
98
|
*/
|
|
99
|
+
|
|
100
|
+
type ActivityExtractionMode = "off" | "smart";
|
|
99
101
|
/** One captured on-screen text snapshot (a single window at a single instant). */
|
|
100
102
|
interface ActivitySnapshot {
|
|
101
103
|
/** Store row id (assigned on insert; absent before persistence). */
|
|
@@ -170,7 +172,7 @@ interface ActivitySourceConfig {
|
|
|
170
172
|
baseUrl: string;
|
|
171
173
|
token?: string;
|
|
172
174
|
}
|
|
173
|
-
/** Opt-in activity synchronization settings. */
|
|
175
|
+
/** Opt-in activity synchronization + trust-gated extraction settings. */
|
|
174
176
|
interface ActivityConfig {
|
|
175
177
|
enabled: boolean;
|
|
176
178
|
timezone: string;
|
|
@@ -178,6 +180,16 @@ interface ActivityConfig {
|
|
|
178
180
|
/** Periodic auto-sync cadence in minutes (default 15). */
|
|
179
181
|
autoSyncIntervalMinutes: number;
|
|
180
182
|
sources: ActivitySourceConfig[];
|
|
183
|
+
/** `off` keeps activity searchable only; `smart` trust-gates durable first-person claims. */
|
|
184
|
+
extractionMode: ActivityExtractionMode;
|
|
185
|
+
/** Baseline confidence in activity as a source of the user's own actions. */
|
|
186
|
+
sourceTrust: number;
|
|
187
|
+
autoApproveTrust: number;
|
|
188
|
+
reviewTrust: number;
|
|
189
|
+
minConfidence: number;
|
|
190
|
+
minImportance: ImportanceLevel;
|
|
191
|
+
/** `0` means no count cap. */
|
|
192
|
+
maxMemoriesPerDay: number;
|
|
181
193
|
}
|
|
182
194
|
|
|
183
195
|
/**
|
|
@@ -4027,4 +4039,4 @@ interface HourlySummary {
|
|
|
4027
4039
|
generatedAt: string;
|
|
4028
4040
|
}
|
|
4029
4041
|
|
|
4030
|
-
export { type BehaviorSignalEvent as $, type ActiveRecallChatType as A, type BriefingSections as B, type CalendarSource as C, type DreamsPhase as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type ExtractionResult as J, type ConsolidationResult as K, type LiveConnectorsConfig as L, type MemoryFile as M, type DaySummaryResult as N, type ExtractionFailureClass as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallPlanMode as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type ProvenanceSource as U, type TrustWeights as V, type ConversationThread as W, type LifecycleState as X, type VerificationState as Y, type PolicyClass as Z, type ImportanceLevel as _, type DreamsRunResult as a, type ActivitySourceClient as a$, type BufferSurpriseEvent as a0, type ImportTurn as a1, type BulkImportOptions as a2, type BulkImportSource as a3, type BulkImportResult as a4, type SecretRef as a5, type AgentAccessAuthToken as a6, type CompressionGuidelineOptimizerEventCounts as a7, type CompressionGuidelineOptimizerActionSummary as a8, type CompressionGuidelineOptimizerRuleUpdate as a9, type EntityActivityEntry as aA, type AccessTrackingEntry as aB, type MemorySummary as aC, type CodingContext as aD, type DreamsStatusResult as aE, type WearableConversation as aF, type WearableSourceSettings as aG, type WearableNativeMemory as aH, type WearableMemoryMode as aI, type WearableSourceConnector as aJ, type WearablesConfig as aK, type WearableSyncSummary as aL, type WearableSourceStatus as aM, type WearableDayTranscript as aN, type WearableCorrectionRule as aO, type RecallSectionConfig as aP, type BootstrapOptions as aQ, type BootstrapResult as aR, type ConsolidationObservation as aS, type CodingModeConfig as aT, type CodingKnowledgeConfig as aU, type WearableCleanupSettings as aV, type WearableFusionConfig as aW, type WearableDayTranscriptMeta as aX, type ActivitySnapshot as aY, type ActivityDayMeta as aZ, type ActivityDayDigest as a_, type MemoryActionType as aa, type MemoryActionEvent as ab, type CompressionGuidelineOptimizerState as ac, type EntityMention as ad, type EntitySchemaDefinition as ae, type EntitySchemaSectionDefinition as af, type EntityStructuredSection as ag, type ImportanceScore as ah, type MemoryIntent as ai, type MemoryActionEligibilityContext as aj, type MemoryActionPolicyResult as ak, type MemoryLifecycleEventType as al, type MemoryLifecycleStateSummary as am, type ModelProviderConfig as an, type NativeKnowledgeConfig as ao, type ProvenanceConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type TopicScore as as, type QmdSearchExplain as at, type EntityTimelineEntry as au, type MemoryLink as av, type BufferState as aw, type MetaState as ax, type FileHygieneConfig as ay, type EntityRelationship as az, type RecallDisclosure as b, type
|
|
4042
|
+
export { type BehaviorSignalEvent as $, type ActiveRecallChatType as A, type BriefingSections as B, type CalendarSource as C, type DreamsPhase as D, type EntityFile as E, type FaithfulnessFrontmatter as F, type GatewayConfig as G, type HourlySummary as H, type IdentityInjectionMode as I, type ExtractionResult as J, type ConsolidationResult as K, type LiveConnectorsConfig as L, type MemoryFile as M, type DaySummaryResult as N, type ExtractionFailureClass as O, type PluginConfig as P, type QmdSearchResult as Q, type RecallPlanMode as R, type SessionObserverBandConfig as S, type TranscriptEntry as T, type ProvenanceSource as U, type TrustWeights as V, type ConversationThread as W, type LifecycleState as X, type VerificationState as Y, type PolicyClass as Z, type ImportanceLevel as _, type DreamsRunResult as a, type ActivitySourceClient as a$, type BufferSurpriseEvent as a0, type ImportTurn as a1, type BulkImportOptions as a2, type BulkImportSource as a3, type BulkImportResult as a4, type SecretRef as a5, type AgentAccessAuthToken as a6, type CompressionGuidelineOptimizerEventCounts as a7, type CompressionGuidelineOptimizerActionSummary as a8, type CompressionGuidelineOptimizerRuleUpdate as a9, type EntityActivityEntry as aA, type AccessTrackingEntry as aB, type MemorySummary as aC, type CodingContext as aD, type DreamsStatusResult as aE, type WearableConversation as aF, type WearableSourceSettings as aG, type WearableNativeMemory as aH, type WearableMemoryMode as aI, type WearableSourceConnector as aJ, type WearablesConfig as aK, type WearableSyncSummary as aL, type WearableSourceStatus as aM, type WearableDayTranscript as aN, type WearableCorrectionRule as aO, type RecallSectionConfig as aP, type BootstrapOptions as aQ, type BootstrapResult as aR, type ConsolidationObservation as aS, type CodingModeConfig as aT, type CodingKnowledgeConfig as aU, type WearableCleanupSettings as aV, type WearableFusionConfig as aW, type WearableDayTranscriptMeta as aX, type ActivitySnapshot as aY, type ActivityDayMeta as aZ, type ActivityDayDigest as a_, type MemoryActionType as aa, type MemoryActionEvent as ab, type CompressionGuidelineOptimizerState as ac, type EntityMention as ad, type EntitySchemaDefinition as ae, type EntitySchemaSectionDefinition as af, type EntityStructuredSection as ag, type ImportanceScore as ah, type MemoryIntent as ai, type MemoryActionEligibilityContext as aj, type MemoryActionPolicyResult as ak, type MemoryLifecycleEventType as al, type MemoryLifecycleStateSummary as am, type ModelProviderConfig as an, type NativeKnowledgeConfig as ao, type ProvenanceConfig as ap, type RetrievalTier as aq, type SignalScanResult as ar, type TopicScore as as, type QmdSearchExplain as at, type EntityTimelineEntry as au, type MemoryLink as av, type BufferState as aw, type MetaState as ax, type FileHygieneConfig as ay, type EntityRelationship as az, type RecallDisclosure as b, type ExtractionPassSource as b$, type ActivitySourceCheck as b0, type ActivitySnapshotPage as b1, type ActivityConfig as b2, type ActivitySourceConfig as b3, type ActivityExtractionMode as b4, type BriefingConfig as b5, type BriefingOpenCommitment as b6, type BriefingWindow as b7, type BulkImportError as b8, type BulkImportSourceAdapter as b9, type CaptureMode as bA, type ChatConfig as bB, type CodexCliReasoningEffort as bC, type CodexCompactionFlushMode as bD, type CodexConnectorConfig as bE, type CodingGraphLspConfig as bF, type CompressionGuidelineActivationState as bG, type CompressionGuidelineOptimizerSourceWindow as bH, type ConfidenceTier as bI, type ConsolidationAction as bJ, type ConsolidationItem as bK, type ContradictionScanConfig as bL, type CronConversationRecallMode as bM, type CronRecallMode as bN, type DreamingConfig as bO, type DreamingNarrativePromptStyle as bP, type DreamsDeepSleepConfig as bQ, type DreamsLightSleepConfig as bR, type DreamsPhaseStatus as bS, type DreamsPhasesConfig as bT, type DreamsRemConfig as bU, type EngramTraceEvent as bV, type ExtractedProcedureStep as bW, type ExtractedQuestion as bX, type ExtractedReasoningTrace as bY, type ExtractedReasoningTraceStep as bZ, type ExtractedRelationship as b_, type CodexCompatConfig as ba, DEFAULT_RECALL_DISCLOSURE as bb, type ExtractedFact as bc, type ImportSourceRole as bd, type ImportTurnValidationIssue as be, type MemoryActionEligibilitySource as bf, type MemoryObservation as bg, type MemoryScope as bh, RECALL_DISCLOSURE_LEVELS as bi, type WearableAuthCheck as bj, type WearableFetchOptions as bk, type WearableFetchPage as bl, type WearableNativeMemoryPage as bm, type WearableTranscriptSegment as bn, isImportRole as bo, isRecallDisclosure as bp, parseIsoTimestamp as bq, validateImportTurn as br, type AgentAccessHttpConfig as bs, type AgentDefaultsConfig as bt, type AgentPersona as bu, type BehaviorLoopAdjustment as bv, type BehaviorSignalDirection as bw, type BehaviorSignalType as bx, type BriefingCalendarSourceError as by, type BufferEntryState as bz, type ActiveRecallQueryMode as c, type GitHubLiveConnectorConfig as c0, type GmailLiveConnectorConfig as c1, type GoogleDriveLiveConnectorConfig as c2, type HeartbeatConfig as c3, type HeartbeatDetectionMode as c4, type LlmTraceCallback as c5, type LlmTraceEvent as c6, type MemoryActionOutcome as c7, type MemoryActionPolicyDecision as c8, type MemoryActionStatus as c9, type SlotMismatchMode as cA, type TriggerMode as cB, confidenceTier as cC, type MemoryLinkType as ca, type MemoryOsPresetName as cb, type ModelApi as cc, type ModelDefinitionConfig as cd, type ModelProviderAuthMode as ce, type NamespacePolicy as cf, type NativeKnowledgeFolderRuleConfig as cg, type NativeKnowledgeObsidianVaultConfig as ch, type NativeKnowledgeOpenClawWorkspaceConfig as ci, type NotionLiveConnectorConfig as cj, type PrincipalFromSessionKeyMode as ck, type PrincipalRule as cl, type ProceduralConfig as cm, type QuestionEntry as cn, type ReasoningEffort as co, type RecallPipelineConfig as cp, type RecallTraceEvent as cq, type RelevanceFeedback as cr, SPECULATIVE_TTL_DAYS as cs, type ScopeProfileAutoPromoteConfig as ct, type ScopeProfileTeamProjectConfig as cu, type ScopeTeamConfig as cv, type ScoredEntity as cw, type SemanticChunkingConfigShape as cx, type SignalLevel as cy, type SlotBehaviorConfig as cz, type ActiveRecallPromptStyle as d, type ActiveRecallThinking as e, type ActiveRecallModelFallbackPolicy as f, type RecallTierExplain as g, type BriefingFollowup as h, type BriefingFocus as i, type CalendarEvent as j, type BriefingActiveThread as k, type BriefingResult as l, type BriefingRecentEntity as m, type BufferTurn as n, type MemoryFrontmatter as o, type Checkpoint as p, type AgentPersonaModelConfig as q, type SourceConnectorProvenance as r, type ScopeProfileConfig as s, type ScopeProfileLayerId as t, type ScopeProfilePromotionTarget as u, type BehaviorLoopPolicyState as v, type MemoryCategory as w, type MemoryStatus as x, type MemoryProjectionCurrentState as y, type MemoryLifecycleEvent as z };
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { aB as AccessTrackingEntry, A as ActiveRecallChatType, f as ActiveRecallModelFallbackPolicy, d as ActiveRecallPromptStyle, c as ActiveRecallQueryMode, e as ActiveRecallThinking, a6 as AgentAccessAuthToken,
|
|
1
|
+
export { aB as AccessTrackingEntry, A as ActiveRecallChatType, f as ActiveRecallModelFallbackPolicy, d as ActiveRecallPromptStyle, c as ActiveRecallQueryMode, e as ActiveRecallThinking, a6 as AgentAccessAuthToken, bs as AgentAccessHttpConfig, bt as AgentDefaultsConfig, bu as AgentPersona, q as AgentPersonaModelConfig, bv as BehaviorLoopAdjustment, v as BehaviorLoopPolicyState, bw as BehaviorSignalDirection, $ as BehaviorSignalEvent, bx as BehaviorSignalType, aQ as BootstrapOptions, aR as BootstrapResult, k as BriefingActiveThread, by as BriefingCalendarSourceError, b5 as BriefingConfig, i as BriefingFocus, h as BriefingFollowup, b6 as BriefingOpenCommitment, m as BriefingRecentEntity, l as BriefingResult, B as BriefingSections, b7 as BriefingWindow, bz as BufferEntryState, aw as BufferState, a0 as BufferSurpriseEvent, n as BufferTurn, j as CalendarEvent, C as CalendarSource, bA as CaptureMode, bB as ChatConfig, p as Checkpoint, bC as CodexCliReasoningEffort, bD as CodexCompactionFlushMode, ba as CodexCompatConfig, bE as CodexConnectorConfig, aD as CodingContext, bF as CodingGraphLspConfig, aU as CodingKnowledgeConfig, aT as CodingModeConfig, bG as CompressionGuidelineActivationState, a8 as CompressionGuidelineOptimizerActionSummary, a7 as CompressionGuidelineOptimizerEventCounts, a9 as CompressionGuidelineOptimizerRuleUpdate, bH as CompressionGuidelineOptimizerSourceWindow, ac as CompressionGuidelineOptimizerState, bI as ConfidenceTier, bJ as ConsolidationAction, bK as ConsolidationItem, aS as ConsolidationObservation, K as ConsolidationResult, bL as ContradictionScanConfig, W as ConversationThread, bM as CronConversationRecallMode, bN as CronRecallMode, bb as DEFAULT_RECALL_DISCLOSURE, N as DaySummaryResult, bO as DreamingConfig, bP as DreamingNarrativePromptStyle, bQ as DreamsDeepSleepConfig, bR as DreamsLightSleepConfig, D as DreamsPhase, bS as DreamsPhaseStatus, bT as DreamsPhasesConfig, bU as DreamsRemConfig, a as DreamsRunResult, aE as DreamsStatusResult, bV as EngramTraceEvent, aA as EntityActivityEntry, E as EntityFile, ad as EntityMention, az as EntityRelationship, ae as EntitySchemaDefinition, af as EntitySchemaSectionDefinition, ag as EntityStructuredSection, au as EntityTimelineEntry, bc as ExtractedFact, bW as ExtractedProcedureStep, bX as ExtractedQuestion, bY as ExtractedReasoningTrace, bZ as ExtractedReasoningTraceStep, b_ as ExtractedRelationship, O as ExtractionFailureClass, b$ as ExtractionPassSource, J as ExtractionResult, F as FaithfulnessFrontmatter, ay as FileHygieneConfig, G as GatewayConfig, c0 as GitHubLiveConnectorConfig, c1 as GmailLiveConnectorConfig, c2 as GoogleDriveLiveConnectorConfig, c3 as HeartbeatConfig, c4 as HeartbeatDetectionMode, H as HourlySummary, I as IdentityInjectionMode, _ as ImportanceLevel, ah as ImportanceScore, X as LifecycleState, L as LiveConnectorsConfig, c5 as LlmTraceCallback, c6 as LlmTraceEvent, aj as MemoryActionEligibilityContext, bf as MemoryActionEligibilitySource, ab as MemoryActionEvent, c7 as MemoryActionOutcome, c8 as MemoryActionPolicyDecision, ak as MemoryActionPolicyResult, c9 as MemoryActionStatus, aa as MemoryActionType, w as MemoryCategory, M as MemoryFile, o as MemoryFrontmatter, ai as MemoryIntent, z as MemoryLifecycleEvent, al as MemoryLifecycleEventType, am as MemoryLifecycleStateSummary, av as MemoryLink, ca as MemoryLinkType, bg as MemoryObservation, cb as MemoryOsPresetName, y as MemoryProjectionCurrentState, bh as MemoryScope, x as MemoryStatus, aC as MemorySummary, ax as MetaState, cc as ModelApi, cd as ModelDefinitionConfig, ce as ModelProviderAuthMode, an as ModelProviderConfig, cf as NamespacePolicy, ao as NativeKnowledgeConfig, cg as NativeKnowledgeFolderRuleConfig, ch as NativeKnowledgeObsidianVaultConfig, ci as NativeKnowledgeOpenClawWorkspaceConfig, cj as NotionLiveConnectorConfig, P as PluginConfig, Z as PolicyClass, ck as PrincipalFromSessionKeyMode, cl as PrincipalRule, cm as ProceduralConfig, ap as ProvenanceConfig, U as ProvenanceSource, at as QmdSearchExplain, Q as QmdSearchResult, cn as QuestionEntry, bi as RECALL_DISCLOSURE_LEVELS, co as ReasoningEffort, b as RecallDisclosure, cp as RecallPipelineConfig, R as RecallPlanMode, aP as RecallSectionConfig, g as RecallTierExplain, cq as RecallTraceEvent, cr as RelevanceFeedback, aq as RetrievalTier, cs as SPECULATIVE_TTL_DAYS, ct as ScopeProfileAutoPromoteConfig, s as ScopeProfileConfig, t as ScopeProfileLayerId, u as ScopeProfilePromotionTarget, cu as ScopeProfileTeamProjectConfig, cv as ScopeTeamConfig, cw as ScoredEntity, a5 as SecretRef, cx as SemanticChunkingConfigShape, S as SessionObserverBandConfig, cy as SignalLevel, ar as SignalScanResult, cz as SlotBehaviorConfig, cA as SlotMismatchMode, r as SourceConnectorProvenance, as as TopicScore, T as TranscriptEntry, cB as TriggerMode, V as TrustWeights, Y as VerificationState, cC as confidenceTier, bp as isRecallDisclosure } from './types-V3dT-pen.js';
|
|
2
2
|
import './message-parts/index.js';
|
|
3
3
|
import './bounded-jsonl-state.js';
|
|
4
4
|
export { ContinuityImprovementLoop, ContinuityIncidentCloseInput, ContinuityIncidentOpenInput, ContinuityIncidentRecord, ContinuityIncidentState, ContinuityLoopCadence, ContinuityLoopReviewInput, ContinuityLoopStatus, ContinuityLoopUpsertInput } from './types-continuity.js';
|
package/dist/write-envelope.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.17.0",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3045,7 +3045,7 @@
|
|
|
3045
3045
|
"core"
|
|
3046
3046
|
],
|
|
3047
3047
|
"peerDependencies": {
|
|
3048
|
-
"@remnic/coding-graph": "^9.
|
|
3048
|
+
"@remnic/coding-graph": "^9.17.0"
|
|
3049
3049
|
},
|
|
3050
3050
|
"peerDependenciesMeta": {
|
|
3051
3051
|
"@remnic/coding-graph": {
|
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import test from "node:test";
|
|
3
3
|
|
|
4
|
-
import { parseActivityConfig } from "./config.js";
|
|
4
|
+
import { defaultActivityConfig, parseActivityConfig } from "./config.js";
|
|
5
5
|
|
|
6
|
-
test("parseActivityConfig defaults to an inert configuration", () => {
|
|
7
|
-
assert.deepEqual(
|
|
6
|
+
test("parseActivityConfig defaults to an inert, search-only configuration", () => {
|
|
7
|
+
assert.deepEqual(defaultActivityConfig(), {
|
|
8
8
|
enabled: false,
|
|
9
9
|
timezone: "UTC",
|
|
10
10
|
syncDays: 1,
|
|
11
11
|
autoSyncIntervalMinutes: 15,
|
|
12
12
|
sources: [],
|
|
13
|
+
extractionMode: "off",
|
|
14
|
+
sourceTrust: 0.6,
|
|
15
|
+
autoApproveTrust: 0.8,
|
|
16
|
+
reviewTrust: 0.5,
|
|
17
|
+
minConfidence: 0.7,
|
|
18
|
+
minImportance: "normal",
|
|
19
|
+
maxMemoriesPerDay: 0,
|
|
13
20
|
});
|
|
21
|
+
assert.deepEqual(parseActivityConfig(undefined), defaultActivityConfig());
|
|
14
22
|
});
|
|
15
23
|
|
|
16
24
|
test("parseActivityConfig treats a string false gate as disabled", () => {
|
|
@@ -26,10 +34,10 @@ test("parseActivityConfig preserves explicit source settings", () => {
|
|
|
26
34
|
sources: [{ machineLabel: "fixture-machine", baseUrl: "http://127.0.0.1:4319", token: "fixture-token" }],
|
|
27
35
|
}),
|
|
28
36
|
{
|
|
37
|
+
...defaultActivityConfig(),
|
|
29
38
|
enabled: true,
|
|
30
39
|
timezone: "America/Chicago",
|
|
31
40
|
syncDays: 3,
|
|
32
|
-
autoSyncIntervalMinutes: 15,
|
|
33
41
|
sources: [{ machineLabel: "fixture-machine", baseUrl: "http://127.0.0.1:4319", token: "fixture-token" }],
|
|
34
42
|
},
|
|
35
43
|
);
|
|
@@ -111,3 +119,33 @@ test("parseActivityConfig parses and bounds autoSyncIntervalMinutes", () => {
|
|
|
111
119
|
assert.throws(() => parseActivityConfig({ autoSyncIntervalMinutes: 0 }), /autoSyncIntervalMinutes must be an integer from 1 to 1440/);
|
|
112
120
|
assert.throws(() => parseActivityConfig({ autoSyncIntervalMinutes: 1441 }), /autoSyncIntervalMinutes must be an integer from 1 to 1440/);
|
|
113
121
|
});
|
|
122
|
+
|
|
123
|
+
test("activity config accepts smart extraction only when explicitly selected", () => {
|
|
124
|
+
// `enabled` defaults false, so no source is required to configure extraction.
|
|
125
|
+
assert.deepEqual(parseActivityConfig({ extractionMode: "smart", maxMemoriesPerDay: 3 }), {
|
|
126
|
+
...defaultActivityConfig(),
|
|
127
|
+
extractionMode: "smart",
|
|
128
|
+
maxMemoriesPerDay: 3,
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
test("activity config rejects invalid extraction values rather than silently defaulting", () => {
|
|
133
|
+
assert.throws(() => parseActivityConfig({ extractionMode: "automatic" }), /extractionMode/);
|
|
134
|
+
assert.throws(() => parseActivityConfig({ minConfidence: 1.1 }), /minConfidence/);
|
|
135
|
+
assert.throws(() => parseActivityConfig({ maxMemoriesPerDay: 1.5 }), /maxMemoriesPerDay/);
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
test("activity config rejects inverted trust thresholds", () => {
|
|
139
|
+
assert.throws(
|
|
140
|
+
() => parseActivityConfig({ reviewTrust: 0.9, autoApproveTrust: 0.5 }),
|
|
141
|
+
/reviewTrust .* must be below autoApproveTrust/,
|
|
142
|
+
);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
test("activity config rejects a null extractionMode instead of silently defaulting to off", () => {
|
|
146
|
+
assert.throws(() => parseActivityConfig({ extractionMode: null }), /extractionMode/);
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
test("activity config rejects a null maxMemoriesPerDay instead of silently uncapping", () => {
|
|
150
|
+
assert.throws(() => parseActivityConfig({ maxMemoriesPerDay: null }), /maxMemoriesPerDay/);
|
|
151
|
+
});
|
package/src/activity/config.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import { coerceBooleanLike, coerceNumber } from "../connectors/coerce.js";
|
|
2
2
|
import { assertValidTimezone } from "./digest.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ImportanceLevel } from "../types.js";
|
|
4
|
+
import type { ActivityConfig, ActivityExtractionMode, ActivitySourceConfig } from "./types.js";
|
|
5
|
+
|
|
6
|
+
const EXTRACTION_MODES: readonly ActivityExtractionMode[] = ["off", "smart"];
|
|
7
|
+
const IMPORTANCE_LEVELS: readonly ImportanceLevel[] = ["critical", "high", "normal", "low", "trivial"];
|
|
8
|
+
const LOOPBACK_HOSTS: Record<string, true> = { localhost: true, "127.0.0.1": true, "::1": true };
|
|
9
|
+
|
|
10
|
+
/** The inert default: disabled, search-only, no sources, no extraction. */
|
|
11
|
+
export function defaultActivityConfig(): ActivityConfig {
|
|
12
|
+
return {
|
|
13
|
+
enabled: false,
|
|
14
|
+
timezone: "UTC",
|
|
15
|
+
syncDays: 1,
|
|
16
|
+
autoSyncIntervalMinutes: 15,
|
|
17
|
+
sources: [],
|
|
18
|
+
extractionMode: "off",
|
|
19
|
+
sourceTrust: 0.6,
|
|
20
|
+
autoApproveTrust: 0.8,
|
|
21
|
+
reviewTrust: 0.5,
|
|
22
|
+
minConfidence: 0.7,
|
|
23
|
+
minImportance: "normal",
|
|
24
|
+
maxMemoriesPerDay: 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
4
27
|
|
|
5
28
|
function asRecord(value: unknown, name: string): Record<string, unknown> {
|
|
6
29
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
@@ -15,15 +38,21 @@ function optionalString(value: unknown, name: string): string | undefined {
|
|
|
15
38
|
return value;
|
|
16
39
|
}
|
|
17
40
|
|
|
18
|
-
|
|
41
|
+
function parseUnitInterval(value: unknown, key: string, fallback: number): number {
|
|
42
|
+
if (value === undefined) return fallback;
|
|
43
|
+
const parsed = coerceNumber(value);
|
|
44
|
+
if (parsed === undefined || !Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
|
|
45
|
+
throw new RangeError(`activity.${key} must be a number in [0, 1]`);
|
|
46
|
+
}
|
|
47
|
+
return parsed;
|
|
48
|
+
}
|
|
19
49
|
|
|
20
50
|
/**
|
|
21
51
|
* Parse, protocol-check, and confine an activity source base URL to a local
|
|
22
52
|
* loopback host. Shared with ActivityHttpSourceClient so config-load and client
|
|
23
|
-
* construction reject the exact same shapes with the same prefixed message
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
* exfiltrate it; the subsystem contract is local capture daemons only.
|
|
53
|
+
* construction reject the exact same shapes with the same prefixed message. The
|
|
54
|
+
* bearer token travels in an Authorization header, so a non-loopback baseUrl
|
|
55
|
+
* would exfiltrate it; the subsystem contract is local capture daemons only.
|
|
27
56
|
*/
|
|
28
57
|
export function validateActivityBaseUrl(baseUrl: string): URL {
|
|
29
58
|
let parsed: URL;
|
|
@@ -61,9 +90,15 @@ function parseSource(value: unknown): ActivitySourceConfig {
|
|
|
61
90
|
return { machineLabel, baseUrl, ...(token === undefined ? {} : { token }) };
|
|
62
91
|
}
|
|
63
92
|
|
|
93
|
+
/**
|
|
94
|
+
* Parse the unified `activity.*` block. `enabled` gates source ingestion (and
|
|
95
|
+
* requires at least one source); `extractionMode` independently gates durable
|
|
96
|
+
* trust-gated memory extraction (default `off`, i.e. search-only).
|
|
97
|
+
*/
|
|
64
98
|
export function parseActivityConfig(raw: unknown): ActivityConfig {
|
|
99
|
+
const defaults = defaultActivityConfig();
|
|
65
100
|
if (raw === undefined || raw === null) {
|
|
66
|
-
return {
|
|
101
|
+
return { ...defaults };
|
|
67
102
|
}
|
|
68
103
|
const config = asRecord(raw, "activity");
|
|
69
104
|
const enabledValue = coerceBooleanLike(config.enabled, "activity.enabled");
|
|
@@ -107,5 +142,45 @@ export function parseActivityConfig(raw: unknown): ActivityConfig {
|
|
|
107
142
|
}
|
|
108
143
|
const enabled = enabledValue ?? false;
|
|
109
144
|
if (enabled && sources.length === 0) throw new RangeError("activity.enabled requires at least one source");
|
|
110
|
-
|
|
145
|
+
|
|
146
|
+
// Extraction gate (independent of `enabled` ingestion). Default `off`.
|
|
147
|
+
// Default only for a missing key; an explicit null/non-string is a malformed
|
|
148
|
+
// enum and must fail rather than silently disabling extraction.
|
|
149
|
+
const extractionMode = config.extractionMode === undefined ? defaults.extractionMode : config.extractionMode;
|
|
150
|
+
if (typeof extractionMode !== "string" || !EXTRACTION_MODES.includes(extractionMode as ActivityExtractionMode)) {
|
|
151
|
+
throw new RangeError(`activity.extractionMode must be one of: ${EXTRACTION_MODES.join(", ")}`);
|
|
152
|
+
}
|
|
153
|
+
const minImportance = config.minImportance === undefined ? defaults.minImportance : config.minImportance;
|
|
154
|
+
if (typeof minImportance !== "string" || !IMPORTANCE_LEVELS.includes(minImportance as ImportanceLevel)) {
|
|
155
|
+
throw new RangeError(`activity.minImportance must be one of: ${IMPORTANCE_LEVELS.join(", ")}`);
|
|
156
|
+
}
|
|
157
|
+
// Default only for a missing key; an explicit null/unparseable value must fail
|
|
158
|
+
// rather than silently uncapping (parity with the enum/unit-interval fields).
|
|
159
|
+
const rawMaxMemoriesPerDay =
|
|
160
|
+
config.maxMemoriesPerDay === undefined ? defaults.maxMemoriesPerDay : config.maxMemoriesPerDay;
|
|
161
|
+
const maxMemoriesPerDay = coerceNumber(rawMaxMemoriesPerDay);
|
|
162
|
+
if (maxMemoriesPerDay === undefined || !Number.isInteger(maxMemoriesPerDay) || maxMemoriesPerDay < 0) {
|
|
163
|
+
throw new RangeError("activity.maxMemoriesPerDay must be a non-negative integer");
|
|
164
|
+
}
|
|
165
|
+
const autoApproveTrust = parseUnitInterval(config.autoApproveTrust, "autoApproveTrust", defaults.autoApproveTrust);
|
|
166
|
+
const reviewTrust = parseUnitInterval(config.reviewTrust, "reviewTrust", defaults.reviewTrust);
|
|
167
|
+
if (reviewTrust >= autoApproveTrust) {
|
|
168
|
+
throw new RangeError(
|
|
169
|
+
`activity.reviewTrust (${reviewTrust}) must be below autoApproveTrust (${autoApproveTrust})`,
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
enabled,
|
|
174
|
+
timezone,
|
|
175
|
+
syncDays,
|
|
176
|
+
autoSyncIntervalMinutes,
|
|
177
|
+
sources,
|
|
178
|
+
extractionMode: extractionMode as ActivityExtractionMode,
|
|
179
|
+
sourceTrust: parseUnitInterval(config.sourceTrust, "sourceTrust", defaults.sourceTrust),
|
|
180
|
+
autoApproveTrust,
|
|
181
|
+
reviewTrust,
|
|
182
|
+
minConfidence: parseUnitInterval(config.minConfidence, "minConfidence", defaults.minConfidence),
|
|
183
|
+
minImportance: minImportance as ImportanceLevel,
|
|
184
|
+
maxMemoriesPerDay,
|
|
185
|
+
};
|
|
111
186
|
}
|
package/src/activity/index.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Public entry for the on-screen activity subsystem (issue #1900): the durable
|
|
3
|
-
* SQLite snapshot store
|
|
4
|
-
*
|
|
5
|
-
*
|
|
3
|
+
* SQLite snapshot store, the deterministic day-digest renderer, the replayable
|
|
4
|
+
* source ingestion pipeline, and trust-gated memory generation. Re-exported from
|
|
5
|
+
* the package root (`src/index.ts`) so consumers import it from `@remnic/core`,
|
|
6
|
+
* matching the wearables subsystem's surfacing.
|
|
6
7
|
*/
|
|
7
8
|
export * from "./types.js";
|
|
8
9
|
export * from "./store.js";
|
|
@@ -13,3 +14,4 @@ export * from "./runner.js";
|
|
|
13
14
|
export * from "./scheduler.js";
|
|
14
15
|
export * from "./config.js";
|
|
15
16
|
export * from "./reindex.js";
|
|
17
|
+
export * from "./memory-gen.js";
|