@snoai/memory 1.6.0 → 1.7.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/README.md +1 -1
- package/dist/{atomic-extraction-reply-BJ9XV_9s.js → atomic-extraction-reply-DF_S9ROg.js} +6 -3
- package/dist/{atomic-memory-extraction-l65aofbl.js → atomic-memory-extraction-pL1_58Kw.js} +45 -6
- package/dist/{coding-skin-azRXA51Z.js → coding-skin-AW1UPUPY.js} +9 -1
- package/dist/coding-skin.d.ts +8 -0
- package/dist/coding-skin.js +2 -2
- package/dist/{config-CByvnX3d.js → config-BwUcq2zS.js} +12 -7
- package/dist/diagnostic-encoder.js +1 -1
- package/dist/index.js +5 -5
- package/dist/internal/config/settings.js +1 -1
- package/dist/internal/engine/bindings/memory-forget-tool.js +1 -1
- package/dist/internal/engine/bindings/memory-list-tool.js +1 -1
- package/dist/internal/engine/bindings/memory-recall-tool.js +1 -1
- package/dist/internal/engine/bindings/memory-reflection-resolve-tool.js +1 -1
- package/dist/internal/engine/bindings/memory-stats-tool.js +1 -1
- package/dist/internal/engine/bindings/memory-store-tool.js +3 -3
- package/dist/internal/engine/bindings/memory-tool-access.js +1 -1
- package/dist/internal/engine/bindings/memory-tool-results.js +1 -1
- package/dist/internal/engine/bindings/memory-tool-schemas.js +1 -1
- package/dist/internal/engine/bindings/memory-update-tool.js +2 -2
- package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.js +3 -3
- package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.js +1 -1
- package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.js +2 -2
- package/dist/internal/engine/bindings/sno-station-mem-message-transcript.js +2 -2
- package/dist/internal/engine/extraction/atomic-memory-extraction.js +1 -1
- package/dist/internal/engine/extraction/memory-temporality-classifier.js +1 -1
- package/dist/internal/engine/observability/observable-memory-store.js +1 -1
- package/dist/internal/engine/observability/runtime-diagnostics.js +3 -3
- package/dist/internal/engine/reflection/reflection-command-hooks.js +1 -1
- package/dist/internal/engine/reflection/reflection-embedded-generator.js +1 -1
- package/dist/internal/engine/reflection/reflection-injection-hooks.js +1 -1
- package/dist/internal/engine/reflection/reflection-lifecycle-hooks.js +1 -1
- package/dist/internal/engine/reflection/strategy-hook-runner.js +2 -2
- package/dist/internal/model/llm-client.js +1 -1
- package/dist/internal/model/llm-mode-routing.js +1 -1
- package/dist/internal/store/maintenance.js +3 -3
- package/dist/internal/store/store.js +1 -1
- package/dist/{llm-client-ByzZRemn.js → llm-client-Dq9FZPdC.js} +36 -6
- package/dist/{log-site-catalog.generated-DsvDgHJa.js → log-site-catalog.generated-Wze-GrOG.js} +90 -90
- package/dist/log-site-catalog.json +1 -1
- package/dist/{memory-runtime-DXr1VO1p.js → memory-runtime-B4A1t5DO.js} +139 -97
- package/dist/{memory-temporality-classifier-Bauwnls7.js → memory-temporality-classifier-CHcnOT5T.js} +2 -2
- package/dist/{memory-tool-dependencies-Cc4SJMtd.js → memory-tool-dependencies-CAVm0Sy4.js} +1 -1
- package/dist/{model-call-table-CPyQfBJ6.js → model-call-table-DjfbmUDl.js} +12 -7
- package/dist/{profile-section-writer-CR-WWIoB.js → profile-section-writer-3apndAJu.js} +2 -2
- package/dist/{reflection-command-hooks-Der9aX0e.js → reflection-command-hooks-B9UENMGV.js} +3 -3
- package/dist/{reflection-embedded-generator-BEdDusPV.js → reflection-embedded-generator-Do_r_LbU.js} +1 -1
- package/dist/{rem-batch-executor-DiU8hSGc.js → rem-batch-executor-BUgNyYLv.js} +1 -1
- package/dist/{rem-trigger-CBfyJVfh.js → rem-trigger-pg_cCp5U.js} +37 -7
- package/dist/{server-BlbG5uOM.js → server-CByyXSvp.js} +4 -4
- package/dist/sidecar/main.js +2 -2
- package/dist/{sno-station-mem-runtime-dependencies-DsidkZi2.js → sno-station-mem-runtime-dependencies-CgNS1dIM.js} +5 -5
- package/dist/{store-Bja1tVFw.js → store-DNgKOGWP.js} +1 -1
- package/dist/{strategy-hook-runner-F-ruiw48.js → strategy-hook-runner-Bg6rBY71.js} +1 -1
- package/package.json +1 -1
- package/settings.default.json +7 -7
- package/skills/extract-atomic-memory/SKILL.md +4 -3
- package/skills/extract-atomic-memory/references/capture.md +3 -2
|
@@ -5,6 +5,11 @@ const extract = {
|
|
|
5
5
|
"agent-native": "host",
|
|
6
6
|
"rem-enhanced": "sno-gpu"
|
|
7
7
|
};
|
|
8
|
+
const extractHost = {
|
|
9
|
+
"local-first": "off",
|
|
10
|
+
"agent-native": "host",
|
|
11
|
+
"rem-enhanced": "host"
|
|
12
|
+
};
|
|
8
13
|
const host = {
|
|
9
14
|
"local-first": "off",
|
|
10
15
|
"agent-native": "host",
|
|
@@ -54,7 +59,7 @@ const MODEL_CALLS = {
|
|
|
54
59
|
E2: {
|
|
55
60
|
description: "fact enrichment",
|
|
56
61
|
occasion: "memoryExtract",
|
|
57
|
-
destinations:
|
|
62
|
+
destinations: extractHost,
|
|
58
63
|
snoPreset: chat,
|
|
59
64
|
transport: {
|
|
60
65
|
host: "agent-host-seam",
|
|
@@ -90,7 +95,7 @@ const MODEL_CALLS = {
|
|
|
90
95
|
E4: {
|
|
91
96
|
description: "compound record split",
|
|
92
97
|
occasion: "memoryExtract",
|
|
93
|
-
destinations:
|
|
98
|
+
destinations: extractHost,
|
|
94
99
|
snoPreset: chat,
|
|
95
100
|
transport: {
|
|
96
101
|
host: "agent-host-seam",
|
|
@@ -108,7 +113,7 @@ const MODEL_CALLS = {
|
|
|
108
113
|
E5: {
|
|
109
114
|
description: "missing half recovery",
|
|
110
115
|
occasion: "memoryExtract",
|
|
111
|
-
destinations:
|
|
116
|
+
destinations: extractHost,
|
|
112
117
|
snoPreset: chat,
|
|
113
118
|
transport: {
|
|
114
119
|
host: "agent-host-seam",
|
|
@@ -126,7 +131,7 @@ const MODEL_CALLS = {
|
|
|
126
131
|
E6: {
|
|
127
132
|
description: "subject check",
|
|
128
133
|
occasion: "memoryExtract",
|
|
129
|
-
destinations:
|
|
134
|
+
destinations: extractHost,
|
|
130
135
|
snoPreset: chat,
|
|
131
136
|
transport: {
|
|
132
137
|
host: "agent-host-seam",
|
|
@@ -144,7 +149,7 @@ const MODEL_CALLS = {
|
|
|
144
149
|
E7: {
|
|
145
150
|
description: "unresolved subject recovery",
|
|
146
151
|
occasion: "memoryExtract",
|
|
147
|
-
destinations:
|
|
152
|
+
destinations: extractHost,
|
|
148
153
|
snoPreset: chat,
|
|
149
154
|
transport: {
|
|
150
155
|
host: "agent-host-seam",
|
|
@@ -162,7 +167,7 @@ const MODEL_CALLS = {
|
|
|
162
167
|
E8: {
|
|
163
168
|
description: "same entity judgment",
|
|
164
169
|
occasion: "memoryExtract",
|
|
165
|
-
destinations:
|
|
170
|
+
destinations: extractHost,
|
|
166
171
|
snoPreset: chat,
|
|
167
172
|
transport: {
|
|
168
173
|
host: "agent-host-seam",
|
|
@@ -234,7 +239,7 @@ const MODEL_CALLS = {
|
|
|
234
239
|
E12: {
|
|
235
240
|
description: "background state keying",
|
|
236
241
|
occasion: "memoryExtract",
|
|
237
|
-
destinations:
|
|
242
|
+
destinations: extractHost,
|
|
238
243
|
snoPreset: chat,
|
|
239
244
|
transport: {
|
|
240
245
|
host: "agent-host-seam",
|
|
@@ -2,11 +2,11 @@ import { MAX_LIST_LIMIT } from "./internal/config/index.js";
|
|
|
2
2
|
import { SnoStationMemError, StorageError } from "./internal/engine/shared/errors.js";
|
|
3
3
|
import { a as buildInsightMetadata, c as stringifyInsightMetadata, h as deriveFactKey, s as parseInsightMetadata } from "./memory-metadata-codec-DL1sbJiN.js";
|
|
4
4
|
import { a as currentMutationAttemptId, f as runWithMutationAttempt } from "./runtime-audit-log-DK6xAYxh.js";
|
|
5
|
-
import { n as LlmClientTerminalError } from "./llm-client-
|
|
5
|
+
import { n as LlmClientTerminalError } from "./llm-client-Dq9FZPdC.js";
|
|
6
6
|
import { resolveLlmRoute } from "./internal/model/llm-mode-routing.js";
|
|
7
7
|
import { boundSectionContent, buildIndexedText } from "./internal/engine/extraction/extraction-text-sanitizer.js";
|
|
8
8
|
import { adapterAViewFromRecord, orderAdapterAPair, parseAdapterAChatVerdict, prospectiveProfileView, renderAdapterAChatPrompt, renderAdapterAPrompt } from "./internal/engine/rem/index.js";
|
|
9
|
-
import { S as StaleSupersedeTargetError, a as resolveTaskLifecycle, c as buildTaskLifecycleCommandClaim, i as findUniqueActiveTaskByDescription, l as resolveTaskLifecycleEffectiveTime, n as acceptsTaskLifecycleJudgment, o as taskLifecycleCandidateSetVersion, r as buildTaskLifecycleCandidateSet, s as admitTaskLifecycleAssertion, w as TaskLifecycleStaleResolutionError } from "./store-
|
|
9
|
+
import { S as StaleSupersedeTargetError, a as resolveTaskLifecycle, c as buildTaskLifecycleCommandClaim, i as findUniqueActiveTaskByDescription, l as resolveTaskLifecycleEffectiveTime, n as acceptsTaskLifecycleJudgment, o as taskLifecycleCandidateSetVersion, r as buildTaskLifecycleCandidateSet, s as admitTaskLifecycleAssertion, w as TaskLifecycleStaleResolutionError } from "./store-DNgKOGWP.js";
|
|
10
10
|
import { o as canonicalizeProfileSectionName, r as recordTokenCounter } from "./memory-store-write-validation-B_hDG2zf.js";
|
|
11
11
|
import { canExtractorWrite } from "./internal/engine/shared/memory-kind-policy.js";
|
|
12
12
|
import { resolveHookAgentId } from "./internal/engine/bindings/sno-station-mem-runtime-mode.js";
|
|
@@ -3,14 +3,14 @@ import { a as buildInsightMetadata, c as stringifyInsightMetadata } from "./memo
|
|
|
3
3
|
import { redactSecrets } from "./internal/engine/security/redact.js";
|
|
4
4
|
import { t as checkMemoryOperation } from "./operation-cancellation-QcwC4mDX.js";
|
|
5
5
|
import { setLruEntry } from "./internal/engine/shared/lru.js";
|
|
6
|
-
import { i as createLlmClient } from "./llm-client-
|
|
6
|
+
import { i as createLlmClient } from "./llm-client-Dq9FZPdC.js";
|
|
7
7
|
import { pickLlmRoutingConfig } from "./internal/model/llm-mode-routing.js";
|
|
8
8
|
import { appendSelfImprovementEntry } from "./internal/engine/operations/learning-file-maintenance.js";
|
|
9
9
|
import { getSnoStationMemDataDir } from "./internal/store/data-paths.js";
|
|
10
10
|
import { resolveHookAgentId } from "./internal/engine/bindings/sno-station-mem-runtime-mode.js";
|
|
11
|
-
import { n as createRetireByNameRunBudget, r as runProfileSectionUpdate } from "./profile-section-writer-
|
|
11
|
+
import { n as createRetireByNameRunBudget, r as runProfileSectionUpdate } from "./profile-section-writer-3apndAJu.js";
|
|
12
12
|
import { a as generateReflectionText, c as shouldSkipReflectionMessage, l as writeReflectionToFilesystem, s as readSessionConversationWithResetFallback, u as extractTextContent } from "./daily-log-generator-DEsiCs7o.js";
|
|
13
|
-
import { a as resolveWorkspaceDirFromEvent, f as setReflectionDerivedCacheEntry, l as isSessionBoundaryReflectionAction, n as createReflectionGenerator, o as DEFAULT_REFLECTION_BOUNDARY_DERIVED_SUPPRESSION_MS, t as DEFAULT_MEMORY_LLM_CONFIG, u as setReflectionDerivedSuppression } from "./reflection-embedded-generator-
|
|
13
|
+
import { a as resolveWorkspaceDirFromEvent, f as setReflectionDerivedCacheEntry, l as isSessionBoundaryReflectionAction, n as createReflectionGenerator, o as DEFAULT_REFLECTION_BOUNDARY_DERIVED_SUPPRESSION_MS, t as DEFAULT_MEMORY_LLM_CONFIG, u as setReflectionDerivedSuppression } from "./reflection-embedded-generator-Do_r_LbU.js";
|
|
14
14
|
import { i as buildReflectionMappedMetadata, n as createReflectionEventId, o as extractInjectableReflectionMappedMemoryItems, r as buildReflectionAntiPatternSignature, s as extractReflectionLearningGovernanceCandidates, t as storeReflectionEntries } from "./memory-entry-projector-B36Nwsi_.js";
|
|
15
15
|
import { createLogger, currentLogContext, privateLogReference, withLogContext } from "@snoai/utils/logger";
|
|
16
16
|
import { basename, join } from "node:path";
|
package/dist/{reflection-embedded-generator-BEdDusPV.js → reflection-embedded-generator-Do_r_LbU.js}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { X as FIXED_MEMORY_SNO_AI_EXTRACT } from "./signed-registry-constants-yq3DlG3B.js";
|
|
2
|
-
import { i as createLlmClient } from "./llm-client-
|
|
2
|
+
import { i as createLlmClient } from "./llm-client-Dq9FZPdC.js";
|
|
3
3
|
//#region src/engine/reflection/derived-line-cache.ts
|
|
4
4
|
/**
|
|
5
5
|
* Returns reflection derived cache entry from reflection cache keys state without side effects.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { c as runRemProductionOrderedWave } from "./rem-trigger-
|
|
1
|
+
import { c as runRemProductionOrderedWave } from "./rem-trigger-pg_cCp5U.js";
|
|
2
2
|
export { runRemProductionOrderedWave };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as FIXED_IDX_MEMORY_ACTIVE_TASK_CURRENT_REVISION, A as modelCallDestination, At as FIXED_MEMORY_PROFILE_RECOVERY_ENTRIES, B as FIXED_EXTERNAL_VALUE_49, C as getSnoStationMemStateDir, Cn as CHUNK_OVERLAP_TOKENS, Cr as ensureModelDownloaded, Ct as FIXED_MEMORY_CHUNKS_MEM_FACET_IDX, D as settingsToPluginConfig, Dn as DEFAULT_IMPORTANCE, Dt as FIXED_MEMORY_MEMORIES_FACT_ID_INSERT_GUARD, En as DEFAULT_BM25_WEIGHT, Et as FIXED_MEMORY_MEMORIES, Fn as EMBEDDER_DIM, G as FIXED_EXTERNAL_VALUE_55, H as FIXED_EXTERNAL_VALUE_52, Hn as HEAD_EXTRACT_OVERLAP_DROP_RATIO, In as EMBEDDER_MODEL_DEFAULT, It as FIXED_MEMORY_SNO_EXTRACT_CHAT, J as FIXED_EXTERNAL_VALUE_58, K as FIXED_EXTERNAL_VALUE_56, Kn as INTRA_MEMORY_COSINE_THRESHOLD, Kt as FIXED_PROTOCOL_VALUE_69, Ln as EMBEDDER_PROVIDER_DEFAULT, Mn as DEFAULT_RERANK_TIMEOUT_MS, Mt as FIXED_MEMORY_PROVIDER_PROJECT_AGENTS, Nt as FIXED_MEMORY_PROVIDER_PROJECT_MAPPINGS, O as MODEL_CALLS, On as DEFAULT_RECALL_LIFECYCLE, Ot as FIXED_MEMORY_MEMORIES_FACT_ID_UPDATE_GUARD, P as observeAgentId, Pn as DEFAULT_VECTOR_WEIGHT, Q as FIXED_IDX_MEMORY, Rn as EVAL_QA_TRACES_FILENAME, Rt as FIXED_MEMORY_TASK_LIFECYCLE_COMMANDS, Sn as CHUNK_MIN_TOKENS, Sr as LocalReranker, St as FIXED_MEMORY_CHUNKS_MEMORY_ID_IDX, T as readSettings, Tn as CHUNK_TOKENIZER_MODE, Tt as FIXED_MEMORY_EXTRACTION_TIMESTAMPS, U as FIXED_EXTERNAL_VALUE_53, Un as HEAD_EXTRACT_TOKEN_BUDGET, V as FIXED_EXTERNAL_VALUE_51, Vn as HEAD_EXTRACT_MIN_CONTENT_TOKENS, W as FIXED_EXTERNAL_VALUE_54, Wn as IMPORTANCE_WEIGHT_BASE, X as FIXED_EXTERNAL_VALUE_8, Xn as MAX_CHUNK_FETCH_LIMIT, Y as FIXED_EXTERNAL_VALUE_62, Z as FIXED_EXTERNAL_VALUE_9, Zn as MAX_LIST_LIMIT, _r as CachedEmbeddingProvider, _t as FIXED_MEMORY_CHUNKS, a as REM_MODEL_OUTPUT_TOKEN_CAP, an as PERSISTED_PROVIDER_SYSTEM, ar as RECENCY_WEIGHT, at as FIXED_IDX_MEMORY_MEMORIES_LANE_PROJECT, bn as CHUNKING_VERSION$1, bt as FIXED_MEMORY_CHUNKS_AU, cn as SUPPORTED_LOCALES, cr as RETRIEVAL_STORAGE_CHUNK_PROFILE, ct as FIXED_IDX_MEMORY_MEMORIES_PROJECT_FACT_KEY_ACTIVE, d as getRemDiscoveryPath, dn as ADJACENCY_BONUS_PER_PAIR, dt as FIXED_MEMORY_ACTIVE_TASK_EVIDENCE, en as FIXED_VEC_MEMORY, et as FIXED_IDX_MEMORY_ACTIVE_TASK_EVIDENCE_INSTANCE, ft as FIXED_MEMORY_ACTIVE_TASK_INSTANCES, g as readRemOperationalConfig, gt as FIXED_MEMORY_ACTIVE_TASK_TRANSITIONS, hr as experimentMmrDisabled, ht as FIXED_MEMORY_ACTIVE_TASK_REVISIONS, in as PERSISTED_CONTENT_HASH_V3, it as FIXED_IDX_MEMORY_MEMORIES_FACT_ID, jr as REM_SIDECAR_TOKEN_HEADER, jt as FIXED_MEMORY_PROVIDER_AGENT_MAPPINGS, k as MODEL_CALL_WORKLOAD, kt as FIXED_MEMORY_MIGRATION_MARKERS, lt as FIXED_IDX_MEMORY_MEMORIES_PROJECT_TIMESTAMP, mr as experimentCandidatePoolOverride, mt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_MANIFESTS, nn as PERSISTED_CANDIDATE_HASH_V1, nr as MULTI_HIT_BONUS_CAP, nt as FIXED_IDX_MEMORY_MEMORIES_CATEGORY, o as REM_RUN_PATH, ot as FIXED_IDX_MEMORY_MEMORIES_PROJECT, pt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_EVIDENCE, q as FIXED_EXTERNAL_VALUE_57, qt as FIXED_PROTOCOL_VALUE_73, r as REM_CORRELATION_ID_HEADER, rn as PERSISTED_CONTENT_HASH_V1, rr as MULTI_HIT_BONUS_PER_HIT, rt as FIXED_IDX_MEMORY_MEMORIES_CONTENT_HASH, s as REM_SIDECAR_HOST, sn as llmRoutingConfigSchema, st as FIXED_IDX_MEMORY_MEMORIES_PROJECT_CONTENT_HASH, tn as FIXED_VEC_MEMORY_CHUNKS, tr as MMR_LAMBDA, tt as FIXED_IDX_MEMORY_ACTIVE_TASK_INSTANCES_PROJECTION, un as ADJACENCY_BONUS_CAP, ur as TIME_DECAY_FLOOR, ut as FIXED_MEMORY, vn as BONUS_TOTAL_INVARIANT, vr as LOCAL_EMBEDDING_CACHE_DIR_DEFAULT, vt as FIXED_MEMORY_CHUNKS_AD, wn as CHUNK_TARGET_TOKENS, wt as FIXED_MEMORY_CHUNKS_MEM_IDX, xn as CHUNK_MAX_TOKENS, xr as LocalEmbedProvider, xt as FIXED_MEMORY_CHUNKS_FTS, yn as CACHE_TTL_MS, yr as LOCAL_EMBEDDING_MODEL, yt as FIXED_MEMORY_CHUNKS_AI, zt as FIXED_MEMORY_UNPLACED_CANDIDATES } from "./config-
|
|
1
|
+
import { $ as FIXED_IDX_MEMORY_ACTIVE_TASK_CURRENT_REVISION, A as modelCallDestination, At as FIXED_MEMORY_PROFILE_RECOVERY_ENTRIES, B as FIXED_EXTERNAL_VALUE_49, C as getSnoStationMemStateDir, Cn as CHUNK_OVERLAP_TOKENS, Cr as ensureModelDownloaded, Ct as FIXED_MEMORY_CHUNKS_MEM_FACET_IDX, D as settingsToPluginConfig, Dn as DEFAULT_IMPORTANCE, Dt as FIXED_MEMORY_MEMORIES_FACT_ID_INSERT_GUARD, En as DEFAULT_BM25_WEIGHT, Et as FIXED_MEMORY_MEMORIES, Fn as EMBEDDER_DIM, G as FIXED_EXTERNAL_VALUE_55, H as FIXED_EXTERNAL_VALUE_52, Hn as HEAD_EXTRACT_OVERLAP_DROP_RATIO, In as EMBEDDER_MODEL_DEFAULT, It as FIXED_MEMORY_SNO_EXTRACT_CHAT, J as FIXED_EXTERNAL_VALUE_58, K as FIXED_EXTERNAL_VALUE_56, Kn as INTRA_MEMORY_COSINE_THRESHOLD, Kt as FIXED_PROTOCOL_VALUE_69, Ln as EMBEDDER_PROVIDER_DEFAULT, Mn as DEFAULT_RERANK_TIMEOUT_MS, Mt as FIXED_MEMORY_PROVIDER_PROJECT_AGENTS, Nt as FIXED_MEMORY_PROVIDER_PROJECT_MAPPINGS, O as MODEL_CALLS, On as DEFAULT_RECALL_LIFECYCLE, Ot as FIXED_MEMORY_MEMORIES_FACT_ID_UPDATE_GUARD, P as observeAgentId, Pn as DEFAULT_VECTOR_WEIGHT, Q as FIXED_IDX_MEMORY, Rn as EVAL_QA_TRACES_FILENAME, Rt as FIXED_MEMORY_TASK_LIFECYCLE_COMMANDS, Sn as CHUNK_MIN_TOKENS, Sr as LocalReranker, St as FIXED_MEMORY_CHUNKS_MEMORY_ID_IDX, T as readSettings, Tn as CHUNK_TOKENIZER_MODE, Tt as FIXED_MEMORY_EXTRACTION_TIMESTAMPS, U as FIXED_EXTERNAL_VALUE_53, Un as HEAD_EXTRACT_TOKEN_BUDGET, V as FIXED_EXTERNAL_VALUE_51, Vn as HEAD_EXTRACT_MIN_CONTENT_TOKENS, W as FIXED_EXTERNAL_VALUE_54, Wn as IMPORTANCE_WEIGHT_BASE, X as FIXED_EXTERNAL_VALUE_8, Xn as MAX_CHUNK_FETCH_LIMIT, Y as FIXED_EXTERNAL_VALUE_62, Z as FIXED_EXTERNAL_VALUE_9, Zn as MAX_LIST_LIMIT, _r as CachedEmbeddingProvider, _t as FIXED_MEMORY_CHUNKS, a as REM_MODEL_OUTPUT_TOKEN_CAP, an as PERSISTED_PROVIDER_SYSTEM, ar as RECENCY_WEIGHT, at as FIXED_IDX_MEMORY_MEMORIES_LANE_PROJECT, bn as CHUNKING_VERSION$1, bt as FIXED_MEMORY_CHUNKS_AU, cn as SUPPORTED_LOCALES, cr as RETRIEVAL_STORAGE_CHUNK_PROFILE, ct as FIXED_IDX_MEMORY_MEMORIES_PROJECT_FACT_KEY_ACTIVE, d as getRemDiscoveryPath, dn as ADJACENCY_BONUS_PER_PAIR, dt as FIXED_MEMORY_ACTIVE_TASK_EVIDENCE, en as FIXED_VEC_MEMORY, et as FIXED_IDX_MEMORY_ACTIVE_TASK_EVIDENCE_INSTANCE, ft as FIXED_MEMORY_ACTIVE_TASK_INSTANCES, g as readRemOperationalConfig, gt as FIXED_MEMORY_ACTIVE_TASK_TRANSITIONS, hr as experimentMmrDisabled, ht as FIXED_MEMORY_ACTIVE_TASK_REVISIONS, in as PERSISTED_CONTENT_HASH_V3, it as FIXED_IDX_MEMORY_MEMORIES_FACT_ID, jr as REM_SIDECAR_TOKEN_HEADER, jt as FIXED_MEMORY_PROVIDER_AGENT_MAPPINGS, k as MODEL_CALL_WORKLOAD, kt as FIXED_MEMORY_MIGRATION_MARKERS, lt as FIXED_IDX_MEMORY_MEMORIES_PROJECT_TIMESTAMP, mr as experimentCandidatePoolOverride, mt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_MANIFESTS, nn as PERSISTED_CANDIDATE_HASH_V1, nr as MULTI_HIT_BONUS_CAP, nt as FIXED_IDX_MEMORY_MEMORIES_CATEGORY, o as REM_RUN_PATH, ot as FIXED_IDX_MEMORY_MEMORIES_PROJECT, pt as FIXED_MEMORY_ACTIVE_TASK_MIGRATION_EVIDENCE, q as FIXED_EXTERNAL_VALUE_57, qt as FIXED_PROTOCOL_VALUE_73, r as REM_CORRELATION_ID_HEADER, rn as PERSISTED_CONTENT_HASH_V1, rr as MULTI_HIT_BONUS_PER_HIT, rt as FIXED_IDX_MEMORY_MEMORIES_CONTENT_HASH, s as REM_SIDECAR_HOST, sn as llmRoutingConfigSchema, st as FIXED_IDX_MEMORY_MEMORIES_PROJECT_CONTENT_HASH, tn as FIXED_VEC_MEMORY_CHUNKS, tr as MMR_LAMBDA, tt as FIXED_IDX_MEMORY_ACTIVE_TASK_INSTANCES_PROJECTION, un as ADJACENCY_BONUS_CAP, ur as TIME_DECAY_FLOOR, ut as FIXED_MEMORY, vn as BONUS_TOTAL_INVARIANT, vr as LOCAL_EMBEDDING_CACHE_DIR_DEFAULT, vt as FIXED_MEMORY_CHUNKS_AD, wn as CHUNK_TARGET_TOKENS, wt as FIXED_MEMORY_CHUNKS_MEM_IDX, xn as CHUNK_MAX_TOKENS, xr as LocalEmbedProvider, xt as FIXED_MEMORY_CHUNKS_FTS, yn as CACHE_TTL_MS, yr as LOCAL_EMBEDDING_MODEL, yt as FIXED_MEMORY_CHUNKS_AI, zt as FIXED_MEMORY_UNPLACED_CANDIDATES } from "./config-BwUcq2zS.js";
|
|
2
2
|
import { createLogger, createLogger as createLogger$1, currentLogContext, privateLogReference, withLogContext } from "@snoai/utils/logger";
|
|
3
3
|
import path, { dirname, join, resolve } from "node:path";
|
|
4
4
|
import { appendFileSync, closeSync, createReadStream, existsSync, fstatSync, fsyncSync, ftruncateSync, mkdirSync, openSync, readFileSync, readSync, realpathSync, renameSync, rmSync, statSync, writeFileSync, writeSync } from "node:fs";
|
|
@@ -6944,6 +6944,32 @@ function isCcproxyOpenAiBaseUrl(value) {
|
|
|
6944
6944
|
return false;
|
|
6945
6945
|
}
|
|
6946
6946
|
}
|
|
6947
|
+
/** Joins a chat-completion SSE stream into the body a non-streamed reply carries; `: ping` comments are skipped. */
|
|
6948
|
+
function assembleChatStream(text) {
|
|
6949
|
+
const body = {};
|
|
6950
|
+
let message;
|
|
6951
|
+
for (const line of text.split("\n")) {
|
|
6952
|
+
if (!line.startsWith("data:")) continue;
|
|
6953
|
+
const data = line.slice(5).trim();
|
|
6954
|
+
if (data === "[DONE]") break;
|
|
6955
|
+
const chunk = JSON.parse(data);
|
|
6956
|
+
body.id ??= chunk.id;
|
|
6957
|
+
body.model ??= chunk.model;
|
|
6958
|
+
if (chunk.usage) body.usage = chunk.usage;
|
|
6959
|
+
const choice = chunk.choices?.[0];
|
|
6960
|
+
if (!choice) continue;
|
|
6961
|
+
message ??= { content: "" };
|
|
6962
|
+
if (typeof choice.delta?.content === "string") message.content += choice.delta.content;
|
|
6963
|
+
if (choice.finish_reason) message.finishReason = choice.finish_reason;
|
|
6964
|
+
}
|
|
6965
|
+
return {
|
|
6966
|
+
...body,
|
|
6967
|
+
choices: message ? [{
|
|
6968
|
+
message: { content: message.content },
|
|
6969
|
+
finish_reason: message.finishReason
|
|
6970
|
+
}] : []
|
|
6971
|
+
};
|
|
6972
|
+
}
|
|
6947
6973
|
async function snoStationMemDispatch(ctx) {
|
|
6948
6974
|
const cfgExt = ctx.config;
|
|
6949
6975
|
const provider = ctx.provider;
|
|
@@ -6995,7 +7021,11 @@ async function snoStationMemDispatch(ctx) {
|
|
|
6995
7021
|
body: JSON.stringify({
|
|
6996
7022
|
model: ctx.model,
|
|
6997
7023
|
messages: ctx.messages,
|
|
6998
|
-
...callBody
|
|
7024
|
+
...callBody,
|
|
7025
|
+
...provider === "sno-gpu" ? {
|
|
7026
|
+
stream: true,
|
|
7027
|
+
stream_options: { include_usage: true }
|
|
7028
|
+
} : {}
|
|
6999
7029
|
})
|
|
7000
7030
|
});
|
|
7001
7031
|
diagnostic.headersAt = performance.now();
|
|
@@ -7013,7 +7043,7 @@ async function snoStationMemDispatch(ctx) {
|
|
|
7013
7043
|
}
|
|
7014
7044
|
let body;
|
|
7015
7045
|
try {
|
|
7016
|
-
body = await response.json();
|
|
7046
|
+
body = response.headers.get("content-type")?.includes("text/event-stream") ? assembleChatStream(await response.text()) : await response.json();
|
|
7017
7047
|
diagnostic.bodyAt = performance.now();
|
|
7018
7048
|
} catch (parseErr) {
|
|
7019
7049
|
if (abortedProviderCategory(requestAbort)) throwTerminalAbort(parseErr, requestAbort);
|
|
@@ -7335,12 +7365,12 @@ function createLlmClient(config) {
|
|
|
7335
7365
|
let lastError = null;
|
|
7336
7366
|
let lastUsage = null;
|
|
7337
7367
|
const resolveRequestTimeoutMs = (request) => {
|
|
7338
|
-
if (
|
|
7368
|
+
if (!request.callId.startsWith("E") || MODEL_CALLS[request.callId].occasion !== "memoryExtract") return request.timeoutMs ?? config.timeoutMs ?? 3e4;
|
|
7339
7369
|
const operationDeadline = memoryOperationDeadline();
|
|
7340
7370
|
if (operationDeadline === void 0) return request.timeoutMs ?? 3e5;
|
|
7341
7371
|
const remainingMs = operationDeadline - performance.now();
|
|
7342
7372
|
if (remainingMs <= 0) throw new LlmClientTerminalError("timeout", "Memory operation deadline exhausted before extraction");
|
|
7343
|
-
return Math.min(request.timeoutMs ?? remainingMs, remainingMs);
|
|
7373
|
+
return Math.floor(Math.min(request.timeoutMs ?? remainingMs, remainingMs));
|
|
7344
7374
|
};
|
|
7345
7375
|
const destinationFor = (request) => {
|
|
7346
7376
|
if (!config.routing) return "host";
|
|
@@ -7668,7 +7698,7 @@ function createLlmClient(config) {
|
|
|
7668
7698
|
const attemptLimit = request.emptyReplyAttempts ?? EMPTY_REPLY_ATTEMPTS;
|
|
7669
7699
|
for (let attempt = 2; attempt <= attemptLimit; attempt += 1) {
|
|
7670
7700
|
if (content === null || content.raw.trim().length > 0 || budget.remaining <= 0) break;
|
|
7671
|
-
const remainingMs = deadlineMs - performance.now();
|
|
7701
|
+
const remainingMs = Math.floor(deadlineMs - performance.now());
|
|
7672
7702
|
if (remainingMs <= 0) break;
|
|
7673
7703
|
log$20.debug("Retrying empty model reply", {
|
|
7674
7704
|
call_id: request.callId,
|
|
@@ -29837,7 +29867,7 @@ async function runWithCanonicalStoreWriteMutex(canonicalStorePath, action) {
|
|
|
29837
29867
|
async function openBatchRuntime(input) {
|
|
29838
29868
|
const settings = input.settings;
|
|
29839
29869
|
const dbPath = settings.store.path;
|
|
29840
|
-
const pluginConfig = settingsToPluginConfig(settings, "product");
|
|
29870
|
+
const pluginConfig = settingsToPluginConfig(settings, process.env.SNO_USAGE_CLASS === "research" ? "research" : "product");
|
|
29841
29871
|
initSqliteRuntime(settings.store.encryptionKey);
|
|
29842
29872
|
const embedder = createEmbedder(pluginConfig.embedding, getSnoStationMemStateDir());
|
|
29843
29873
|
let store;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { At as getAuditPath, Dt as appendAuditEntryStrict, K as REM_BUILT_OPERATION_TYPES, Ot as compactAuditLog, Pt as readJsonlLines, bt as ModelCallRefusedError, d as RemJobStore, f as parseRemJobStats, n as remNeedsHost, q as parseRemOperationType } from "./rem-trigger-
|
|
2
|
-
import { $n as MEMORY_SHUTDOWN_TIMEOUT_MS, Ar as MEMORY_SKIN_HEADER, C as getSnoStationMemStateDir, Dr as MEMORY_ERROR_STATUS, Er as MEMORY_DEFAULT_SKIN_ID, Mr as memoryMethod, S as getSidecarSocketPath, _ as readRemTestHoldMs, c as REM_SIDECAR_ORIGIN, d as getRemDiscoveryPath, f as getRemJobJournalPath, g as readRemOperationalConfig, i as REM_JOBS_PATH_PREFIX, kr as MEMORY_ROUTES, l as REM_SOURCE, r as REM_CORRELATION_ID_HEADER, s as REM_SIDECAR_HOST, u as getRemChassisJournalPath, v as SettingsUnavailableError, y as getDiscoveryPath } from "./config-
|
|
1
|
+
import { At as getAuditPath, Dt as appendAuditEntryStrict, K as REM_BUILT_OPERATION_TYPES, Ot as compactAuditLog, Pt as readJsonlLines, bt as ModelCallRefusedError, d as RemJobStore, f as parseRemJobStats, n as remNeedsHost, q as parseRemOperationType } from "./rem-trigger-pg_cCp5U.js";
|
|
2
|
+
import { $n as MEMORY_SHUTDOWN_TIMEOUT_MS, Ar as MEMORY_SKIN_HEADER, C as getSnoStationMemStateDir, Dr as MEMORY_ERROR_STATUS, Er as MEMORY_DEFAULT_SKIN_ID, Mr as memoryMethod, S as getSidecarSocketPath, _ as readRemTestHoldMs, c as REM_SIDECAR_ORIGIN, d as getRemDiscoveryPath, f as getRemJobJournalPath, g as readRemOperationalConfig, i as REM_JOBS_PATH_PREFIX, kr as MEMORY_ROUTES, l as REM_SOURCE, r as REM_CORRELATION_ID_HEADER, s as REM_SIDECAR_HOST, u as getRemChassisJournalPath, v as SettingsUnavailableError, y as getDiscoveryPath } from "./config-BwUcq2zS.js";
|
|
3
3
|
import { t as ContractError } from "./error-D-wb-rZw.js";
|
|
4
4
|
import { setImmediate } from "node:timers/promises";
|
|
5
5
|
import { createLogger, currentLogContext, effectiveLogLevel, emitDiagnostic } from "@snoai/utils/logger";
|
|
@@ -335,7 +335,7 @@ async function startOwnedRemSidecar() {
|
|
|
335
335
|
async open() {
|
|
336
336
|
if (currentMemory) return currentMemory;
|
|
337
337
|
if (settingsError) throw settingsError;
|
|
338
|
-
openingMemory ??= import("./memory-runtime-
|
|
338
|
+
openingMemory ??= import("./memory-runtime-B4A1t5DO.js").then((module) => module.MemoryRuntimePool.open()).then((pool) => {
|
|
339
339
|
currentMemory = pool;
|
|
340
340
|
if (stopping) pool.stopTimers();
|
|
341
341
|
return pool;
|
|
@@ -730,7 +730,7 @@ async function runChassisJob(store, journal, waveId, holdMs, runtime) {
|
|
|
730
730
|
cleanRefusalReasons.push(reason);
|
|
731
731
|
await appendChassisRefusal(journal, queued, operation, "refused", reason);
|
|
732
732
|
}
|
|
733
|
-
const { runRemProductionOrderedWave } = await import("./rem-batch-executor-
|
|
733
|
+
const { runRemProductionOrderedWave } = await import("./rem-batch-executor-BUgNyYLv.js");
|
|
734
734
|
const result = enabledOperations.length === 0 ? {
|
|
735
735
|
decision: "allow",
|
|
736
736
|
reasonCode: null,
|
package/dist/sidecar/main.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Or as MEMORY_RECONNECT_INTERVAL_MS, m as isRemTraceEnabled, p as getRemTraceLogPath, v as SettingsUnavailableError } from "../config-
|
|
1
|
+
import { Or as MEMORY_RECONNECT_INTERVAL_MS, m as isRemTraceEnabled, p as getRemTraceLogPath, v as SettingsUnavailableError } from "../config-BwUcq2zS.js";
|
|
2
2
|
import { setTimeout } from "node:timers/promises";
|
|
3
3
|
import { addLogFileTarget, closeLogger, createLogger } from "@snoai/utils/logger";
|
|
4
4
|
//#region src/sidecar/main.ts
|
|
@@ -6,7 +6,7 @@ import { addLogFileTarget, closeLogger, createLogger } from "@snoai/utils/logger
|
|
|
6
6
|
* @purpose Boots the standalone local REM sidecar process.
|
|
7
7
|
* @boundary Process environment, sidecar lifecycle, and local request-log destination.
|
|
8
8
|
*/
|
|
9
|
-
const { startRemSidecar, DuplicateSidecarError } = await import("../server-
|
|
9
|
+
const { startRemSidecar, DuplicateSidecarError } = await import("../server-CByyXSvp.js");
|
|
10
10
|
let sidecar;
|
|
11
11
|
for (let attempt = 1; !sidecar; attempt++) try {
|
|
12
12
|
sidecar = await startRemSidecar();
|
|
@@ -4,12 +4,12 @@ import "./internal/engine/shared/types.js";
|
|
|
4
4
|
import "./internal/engine/security/redact.js";
|
|
5
5
|
import "./internal/engine/shared/utils.js";
|
|
6
6
|
import "./runtime-audit-log-DK6xAYxh.js";
|
|
7
|
-
import "./llm-client-
|
|
7
|
+
import "./llm-client-Dq9FZPdC.js";
|
|
8
8
|
import "./capture-policy-detector-DaMfy9CZ.js";
|
|
9
9
|
import "./ambient-learning-text-normalizer-CxjATmMp.js";
|
|
10
|
-
import "./memory-temporality-classifier-
|
|
10
|
+
import "./memory-temporality-classifier-CHcnOT5T.js";
|
|
11
11
|
import "./scopes-a4Kly9n7.js";
|
|
12
|
-
import "./atomic-memory-extraction-
|
|
12
|
+
import "./atomic-memory-extraction-pL1_58Kw.js";
|
|
13
13
|
import "./internal/store/sqlite-runtime.js";
|
|
14
14
|
import "./connection-BtK-3r-f.js";
|
|
15
15
|
import "./internal/store/data-paths.js";
|
|
@@ -23,8 +23,8 @@ import "./retriever-C54bXeDh.js";
|
|
|
23
23
|
import "./internal/engine/observability/observable-retriever.js";
|
|
24
24
|
import "./internal/engine/observability/session-registry.js";
|
|
25
25
|
import "./daily-log-generator-DEsiCs7o.js";
|
|
26
|
-
import "./reflection-embedded-generator-
|
|
27
|
-
import "./strategy-hook-runner-
|
|
26
|
+
import "./reflection-embedded-generator-Do_r_LbU.js";
|
|
27
|
+
import "./strategy-hook-runner-Bg6rBY71.js";
|
|
28
28
|
import "./data-bootstrap-P8sie9WA.js";
|
|
29
29
|
import "@snoai/sqlite-crypto";
|
|
30
30
|
export {};
|
|
@@ -10,7 +10,7 @@ import { t as checkMemoryOperation } from "./operation-cancellation-QcwC4mDX.js"
|
|
|
10
10
|
import { u as runWithMemoryAudit } from "./runtime-audit-log-DK6xAYxh.js";
|
|
11
11
|
import { getSnoStationMemStateDir } from "./internal/contract/profile.js";
|
|
12
12
|
import "./internal/engine/extraction/extraction-text-sanitizer.js";
|
|
13
|
-
import "./memory-temporality-classifier-
|
|
13
|
+
import "./memory-temporality-classifier-CHcnOT5T.js";
|
|
14
14
|
import { a as readMemorySourceOrder, i as readCorrectionMoment, n as compareMemoryRetirementOrder, o as readMemorySourceOrderOrOldest, r as compareMemorySourceOrder, s as sameSourceTurn, t as closeMemoryRow } from "./memory-source-order-YMRoeDLd.js";
|
|
15
15
|
import { REM_UPDATE_LOCALES, deriveRemWriteIdentity, getRemUpdateLocaleResource, writeRemTwoFacetTransaction } from "./internal/engine/rem/index.js";
|
|
16
16
|
import { n as state_vocabulary_default, r as attribute_dictionary_default, t as relations } from "./relation-dictionary-Cev1kyLe.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DEFAULT_REFLECTION_SESSION_TTL_MS } from "./internal/config/index.js";
|
|
2
2
|
import { setLruEntry, touchLruEntry } from "./internal/engine/shared/lru.js";
|
|
3
3
|
import { n as createErrorSignalTracker } from "./error-signals-lMH2uAdV.js";
|
|
4
|
-
import { i as pruneReflectionState } from "./reflection-embedded-generator-
|
|
4
|
+
import { i as pruneReflectionState } from "./reflection-embedded-generator-Do_r_LbU.js";
|
|
5
5
|
import { a as loadAgentReflectionSlicesFromEntries } from "./memory-entry-projector-B36Nwsi_.js";
|
|
6
6
|
import { createLogger } from "@snoai/utils/logger";
|
|
7
7
|
//#region src/engine/reflection/reflection-slice-loader.ts
|
package/package.json
CHANGED
package/settings.default.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"E2": {
|
|
10
10
|
"local-first": "off",
|
|
11
11
|
"agent-native": "host",
|
|
12
|
-
"rem-enhanced": "
|
|
12
|
+
"rem-enhanced": "host"
|
|
13
13
|
},
|
|
14
14
|
"E3": {
|
|
15
15
|
"local-first": "off",
|
|
@@ -19,27 +19,27 @@
|
|
|
19
19
|
"E4": {
|
|
20
20
|
"local-first": "off",
|
|
21
21
|
"agent-native": "host",
|
|
22
|
-
"rem-enhanced": "
|
|
22
|
+
"rem-enhanced": "host"
|
|
23
23
|
},
|
|
24
24
|
"E5": {
|
|
25
25
|
"local-first": "off",
|
|
26
26
|
"agent-native": "host",
|
|
27
|
-
"rem-enhanced": "
|
|
27
|
+
"rem-enhanced": "host"
|
|
28
28
|
},
|
|
29
29
|
"E6": {
|
|
30
30
|
"local-first": "off",
|
|
31
31
|
"agent-native": "host",
|
|
32
|
-
"rem-enhanced": "
|
|
32
|
+
"rem-enhanced": "host"
|
|
33
33
|
},
|
|
34
34
|
"E7": {
|
|
35
35
|
"local-first": "off",
|
|
36
36
|
"agent-native": "host",
|
|
37
|
-
"rem-enhanced": "
|
|
37
|
+
"rem-enhanced": "host"
|
|
38
38
|
},
|
|
39
39
|
"E8": {
|
|
40
40
|
"local-first": "off",
|
|
41
41
|
"agent-native": "host",
|
|
42
|
-
"rem-enhanced": "
|
|
42
|
+
"rem-enhanced": "host"
|
|
43
43
|
},
|
|
44
44
|
"E9": {
|
|
45
45
|
"local-first": "off",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"E12": {
|
|
60
60
|
"local-first": "off",
|
|
61
61
|
"agent-native": "host",
|
|
62
|
-
"rem-enhanced": "
|
|
62
|
+
"rem-enhanced": "host"
|
|
63
63
|
},
|
|
64
64
|
"P1": {
|
|
65
65
|
"local-first": "off",
|
|
@@ -287,11 +287,12 @@ or `removed`, and is `null` otherwise. `value` for a to-do is the discrete actio
|
|
|
287
287
|
Reply with one JSON object and nothing before or after it. Its shape is
|
|
288
288
|
|
|
289
289
|
```
|
|
290
|
-
{"claims_found": [
|
|
290
|
+
{"claims_found": [<turn_index>, <turn_index>], "records": [{...}, {...}]}
|
|
291
291
|
```
|
|
292
292
|
|
|
293
|
-
`claims_found` comes first, inside the object under its key:
|
|
294
|
-
|
|
293
|
+
`claims_found` comes first, inside the object under its key: for each claim you return, in the
|
|
294
|
+
order the claims appear, the `turn_index` of the turn that states it (a number, never the claim's
|
|
295
|
+
words), and an empty array when the window states none.
|
|
295
296
|
`records` follows, one record for each entry of `claims_found`, each record complete as
|
|
296
297
|
`response_schema` describes, with its `source_span` filled in. Listing the claims first is what
|
|
297
298
|
makes the array complete: a reply that opens `records` at once is where whole turns go missing. The task-specific instructions the engine appends below (turns to account for, subject
|
|
@@ -102,8 +102,9 @@ Even when no claims remain, return the decisions; empty claims and facts do not
|
|
|
102
102
|
## Capture reply
|
|
103
103
|
|
|
104
104
|
Return only JSON matching response_schema, with claims_found FIRST, decisions second, facts last.
|
|
105
|
-
claims_found lists the claims you found before forming facts
|
|
106
|
-
|
|
105
|
+
claims_found lists the claims you found before forming facts, one entry per claim: the turn_index
|
|
106
|
+
of the turn that states it, never the claim's words. Claims may merge or split into facts, so the
|
|
107
|
+
two lists need not have the same length. Never return empty facts when claims_found
|
|
107
108
|
is nonempty. facts contains one self-contained
|
|
108
109
|
sentence per captured claim, with integer ids 0..n-1 in list order. For a window with no claims,
|
|
109
110
|
return empty claims_found and facts arrays, and still classify every user turn in decisions.
|