@snoai/memory 1.2.8 → 1.2.10
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 +4 -4
- package/dist/{access-tracker-D1e-2-Bb.d.ts → access-tracker-BOPHSJjf.d.ts} +4 -4
- package/dist/{adapter-TCrv5P-C.d.ts → adapter-lyb6RaQE.d.ts} +2 -2
- package/dist/{atomic-memory-extraction-C0n0wHzt.d.ts → atomic-memory-extraction-B_XpkhMd.d.ts} +7 -5
- package/dist/{atomic-memory-extraction-BG42OXou.js → atomic-memory-extraction-o2v8mp7G.js} +109 -50
- package/dist/{b-profile-section-dictionary-provider-y3DMQ518.d.ts → b-profile-section-dictionary-provider-BK5NBs-y.d.ts} +1 -1
- package/dist/{capture-policy-detector-BY7v5Cq1.d.ts → capture-policy-detector-BvVGmxxX.d.ts} +1 -1
- package/dist/{classifier-DnbbtwTS.d.ts → classifier-CXQxJJPP.d.ts} +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/{coding-skin-_Qu3INZD.js → coding-skin-azRXA51Z.js} +2 -1
- package/dist/coding-skin.d.ts +1 -0
- package/dist/coding-skin.js +2 -2
- package/dist/{config-BCZRhUvW.js → config-C7LzSWhG.js} +9 -4
- package/dist/{connection-C9YD5sgm.js → connection-PQcq3TPO.js} +1 -1
- package/dist/{derived-suppression-cache-BLAH0nB9.d.ts → derived-suppression-cache-Ckwjey7I.d.ts} +1 -1
- package/dist/diagnostic-encoder.js +1 -1
- package/dist/{index-dQMkc_6y.d.ts → index-CsPUNkcm.d.ts} +2 -2
- package/dist/{index-BO4RU_mc.d.ts → index-DPfJrOFD.d.ts} +1 -1
- package/dist/{index-DL8AVj0Z.d.ts → index-Pb9LrHgL.d.ts} +4 -5
- package/dist/index.d.ts +12 -9
- package/dist/index.js +97 -47
- package/dist/internal/config/index.d.ts +1 -1
- package/dist/internal/config/index.js +4 -5
- package/dist/internal/config/plugin-config-schema.d.ts +1 -1
- package/dist/internal/config/plugin-config-schema.js +1 -1
- package/dist/internal/config/product-mode.d.ts +1 -1
- package/dist/internal/config/settings.d.ts +1 -1
- package/dist/internal/config/settings.js +4 -4
- package/dist/internal/config/skin-defaults.d.ts +1 -1
- package/dist/internal/contract/profile.d.ts +1 -1
- package/dist/internal/contract/routes.d.ts +1 -1
- package/dist/internal/engine/bindings/memory-cli-shared.d.ts +4 -4
- 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 +2 -2
- package/dist/internal/engine/bindings/memory-store-tool.js +4 -4
- package/dist/internal/engine/bindings/memory-tool-access.d.ts +1 -1
- package/dist/internal/engine/bindings/memory-tool-access.js +1 -1
- package/dist/internal/engine/bindings/memory-tool-results.d.ts +1 -1
- package/dist/internal/engine/bindings/memory-tool-results.js +1 -1
- package/dist/internal/engine/bindings/memory-tool-schemas.d.ts +5 -5
- package/dist/internal/engine/bindings/memory-tool-schemas.js +1 -1
- package/dist/internal/engine/bindings/memory-update-tool.js +3 -3
- package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.d.ts +4 -4
- package/dist/internal/engine/bindings/sno-station-mem-ambient-learning-hook.js +4 -4
- package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.d.ts +4 -4
- package/dist/internal/engine/bindings/sno-station-mem-auto-recall-hook.js +2 -2
- package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.d.ts +6 -6
- package/dist/internal/engine/bindings/sno-station-mem-insight-distill-factory.js +7 -5
- package/dist/internal/engine/bindings/sno-station-mem-message-transcript.js +2 -2
- package/dist/internal/engine/bindings/sno-station-mem-reset-hook.d.ts +3 -3
- package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.d.ts +1 -1
- package/dist/internal/engine/bindings/sno-station-mem-runtime-mode.js +3 -3
- package/dist/internal/engine/extraction/atomic-memory-extraction.d.ts +1 -1
- package/dist/internal/engine/extraction/atomic-memory-extraction.js +1 -1
- package/dist/internal/engine/extraction/b-profile-section-dictionary-provider.d.ts +1 -1
- package/dist/internal/engine/extraction/b-profile-section-rekey.d.ts +5 -5
- package/dist/internal/engine/extraction/capture-policy-detector.d.ts +1 -1
- package/dist/internal/engine/extraction/memory-metadata-codec.d.ts +2 -2
- package/dist/internal/engine/extraction/memory-temporality-classifier.d.ts +1 -1
- package/dist/internal/engine/extraction/memory-temporality-classifier.js +1 -1
- package/dist/internal/engine/observability/adapter.d.ts +1 -1
- package/dist/internal/engine/observability/memory-snapshot.d.ts +1 -1
- package/dist/internal/engine/observability/observable-embedder.d.ts +1 -1
- package/dist/internal/engine/observability/observable-llm-client.d.ts +1 -1
- package/dist/internal/engine/observability/observable-llm-client.js +0 -2
- package/dist/internal/engine/observability/observable-memory-store.d.ts +1 -1
- package/dist/internal/engine/observability/observable-memory-store.js +2 -2
- package/dist/internal/engine/observability/observable-retriever.d.ts +1 -1
- package/dist/internal/engine/observability/observable-retriever.js +2 -2
- package/dist/internal/engine/observability/runtime-diagnostics.d.ts +1 -1
- package/dist/internal/engine/observability/runtime-diagnostics.js +3 -3
- package/dist/internal/engine/operations/daily-spend-estimator.js +1 -1
- package/dist/internal/engine/operations/memory-tier-promoter.d.ts +1 -1
- package/dist/internal/engine/operations/runtime-audit-log.d.ts +3 -3
- package/dist/internal/engine/operations/runtime-audit-log.js +2 -2
- package/dist/internal/engine/provider/provider-registration.d.ts +4 -4
- package/dist/internal/engine/provider/provider-row-renderer.d.ts +1 -1
- package/dist/internal/engine/reflection/reflection-command-hooks.d.ts +1 -1
- package/dist/internal/engine/reflection/reflection-command-hooks.js +1 -1
- package/dist/internal/engine/reflection/reflection-deps.d.ts +1 -1
- package/dist/internal/engine/reflection/reflection-embedded-generator.d.ts +1 -1
- package/dist/internal/engine/reflection/reflection-embedded-generator.js +1 -1
- package/dist/internal/engine/reflection/reflection-injection-hooks.d.ts +1 -1
- package/dist/internal/engine/reflection/reflection-injection-hooks.js +1 -1
- package/dist/internal/engine/reflection/reflection-lifecycle-hooks.d.ts +1 -1
- package/dist/internal/engine/reflection/reflection-lifecycle-hooks.js +1 -1
- package/dist/internal/engine/reflection/strategy-hook-runner.d.ts +3 -3
- package/dist/internal/engine/reflection/strategy-hook-runner.js +2 -2
- package/dist/internal/engine/rem/classifier.d.ts +1 -1
- package/dist/internal/engine/rem/index.d.ts +2 -2
- package/dist/internal/engine/rem/index.js +9 -7
- package/dist/internal/engine/retrieval/access-tracker.d.ts +1 -1
- package/dist/internal/engine/retrieval/retriever.d.ts +1 -1
- package/dist/internal/engine/retrieval/retriever.js +1 -1
- package/dist/internal/engine/security/memory-scope-policy.js +1 -1
- package/dist/internal/engine/security/scopes.js +2 -2
- package/dist/internal/engine/shared/memory-kind-policy.d.ts +1 -1
- package/dist/internal/engine/shared/paths.d.ts +2 -2
- package/dist/internal/engine/shared/types.d.ts +2 -2
- package/dist/internal/engine/shared/types.js +1 -1
- package/dist/internal/engine/shared/utils.d.ts +1 -1
- package/dist/internal/engine/shared/utils.js +2 -3
- package/dist/internal/engine/telemetry/memory-telemetry-api.js +2 -2
- package/dist/internal/engine/telemetry/observe-ledger.d.ts +1 -1
- package/dist/internal/engine/telemetry/observe-ledger.js +46 -19
- package/dist/internal/model/llm-client.d.ts +2 -2
- package/dist/internal/model/llm-client.js +1 -1
- package/dist/internal/model/llm-mode-routing.d.ts +1 -1
- package/dist/internal/model/llm-mode-routing.js +1 -1
- package/dist/internal/store/atomic-memory-cutover-sql.js +1 -1
- package/dist/internal/store/connection.js +1 -1
- package/dist/internal/store/maintenance.d.ts +2 -2
- package/dist/internal/store/maintenance.js +444 -40
- package/dist/internal/store/memory-kinds-cutover-migrator.js +1 -1
- package/dist/internal/store/migrations.js +1 -1
- package/dist/internal/store/store.d.ts +2 -2
- package/dist/internal/store/store.js +1 -1
- package/dist/{llm-client-RqmOEQkg.d.ts → llm-client-BTaUVmDe.d.ts} +1 -1
- package/dist/{llm-client-fVrzPcyz.js → llm-client-ConEyQEs.js} +51 -12
- package/dist/{log-site-catalog.generated-Bb9w8j4f.js → log-site-catalog.generated-C9RmyAA0.js} +227 -192
- package/dist/log-site-catalog.json +1 -1
- package/dist/{memory-kind-policy-BOGb8thm.d.ts → memory-kind-policy-ClQEXeOL.d.ts} +1 -1
- package/dist/{memory-metadata-codec-DcSqjbWR.d.ts → memory-metadata-codec-wVAuoKrG.d.ts} +1 -1
- package/dist/{memory-runtime-DSP8cXik.js → memory-runtime-HibOMCFa.js} +482 -297
- package/dist/{memory-scope-policy-DICSCURA.js → memory-scope-policy--TiLZnrE.js} +2 -2
- package/dist/{memory-snapshot-C5BnJ2rO.d.ts → memory-snapshot-uTdxJnIh.d.ts} +2 -2
- package/dist/{memory-store-base-z593oJ4h.d.ts → memory-store-base-Bk2dOKED.d.ts} +5 -6
- package/dist/{memory-store-shared-DqpWJXZZ.js → memory-store-shared-CURizQIy.js} +1 -1
- package/dist/{memory-telemetry-receipts-YsxbwOAf.js → memory-telemetry-receipts-cjIQGwdp.js} +5 -1
- package/dist/{memory-temporality-classifier-SzlUCgTj.d.ts → memory-temporality-classifier-CcxfHYoT.d.ts} +1 -1
- package/dist/{memory-temporality-classifier-CeSOL2vq.js → memory-temporality-classifier-MBJyJdvB.js} +2 -2
- package/dist/{memory-tier-promoter-Z7jprFB7.d.ts → memory-tier-promoter-MkZPQ8u1.d.ts} +1 -1
- package/dist/memory-tool-dependencies--SrMdT3P.d.ts +14 -0
- package/dist/{memory-tool-dependencies-CnaGABQG.js → memory-tool-dependencies-DUMY8SwB.js} +3 -3
- package/dist/{model-call-table-BZJQkbKX.js → model-call-table-BE97f37s.js} +6 -1
- package/dist/{observable-embedder-DjhGxHx2.d.ts → observable-embedder-CGr3Zejf.d.ts} +1 -1
- package/dist/{observable-llm-client-CLJLMmwA.d.ts → observable-llm-client-CXUA7Gi3.d.ts} +3 -3
- package/dist/{observable-memory-store-B48HV2NK.d.ts → observable-memory-store-BwwKcUzf.d.ts} +4 -4
- package/dist/{observable-retriever-CAdHncKh.d.ts → observable-retriever-BZpdv93Y.d.ts} +5 -5
- package/dist/paths-DmmPxD_v.d.ts +1 -0
- package/dist/{plugin-config-schema-VBSPGEG3.d.ts → plugin-config-schema-BrhMvnXJ.d.ts} +3 -1
- package/dist/{plugin-config-schema-hIfZTELX.js → plugin-config-schema-Di-uKTP0.js} +1 -1
- package/dist/{profile-CQNCtVIu.d.ts → profile-CF5oDjR7.d.ts} +1 -1
- package/dist/{profile-section-writer-joJEIYhF.js → profile-section-writer-CmNa95uN.js} +3 -3
- package/dist/{reflection-command-hooks-Cl0ShtbF.d.ts → reflection-command-hooks-CM2mWb69.d.ts} +4 -4
- package/dist/{reflection-command-hooks-CG8n1GNK.js → reflection-command-hooks-CnTj8cKL.js} +3 -3
- package/dist/{reflection-deps-B0_cPBZt.d.ts → reflection-deps-B5I0nYZS.d.ts} +2 -2
- package/dist/{reflection-embedded-generator-C5kA0T0v.d.ts → reflection-embedded-generator-CogQIBcG.d.ts} +3 -3
- package/dist/{reflection-embedded-generator-D342_5o_.js → reflection-embedded-generator-DR525Moy.js} +1 -1
- package/dist/{reflection-injection-hooks-CtgcjLGx.d.ts → reflection-injection-hooks-BnbfZqpj.d.ts} +4 -4
- package/dist/{reflection-lifecycle-hooks-Pd7P9wya.d.ts → reflection-lifecycle-hooks-DMDhtidj.d.ts} +3 -3
- package/dist/{rem-batch-executor-DsXWpJYU.js → rem-batch-executor-8x4FBLtW.js} +1 -1
- package/dist/{rem-trigger-DZaplx_E.js → rem-trigger-DmRERTNH.js} +1672 -1003
- package/dist/{retriever-ZoLvPRHq.js → retriever-BXQmJMh0.js} +16 -3
- package/dist/{retriever-DQdyGlkr.d.ts → retriever-BpxV-0fB.d.ts} +8 -8
- package/dist/{runtime-audit-log-BCeujlEp.js → runtime-audit-log-DK6xAYxh.js} +103 -2
- package/dist/{runtime-audit-log-Bn3JLBPj.d.ts → runtime-audit-log-DdhLlTxi.d.ts} +4 -2
- package/dist/{scopes-CSOn6zdd.js → scopes-a4Kly9n7.js} +1 -1
- package/dist/{server-Dw34jY1d.js → server-CCduS_Ea.js} +17 -320
- package/dist/sidecar/main.js +11 -4
- package/dist/sno-station-mem-runtime-dependencies-AdFFr3bU.d.ts +31 -0
- package/dist/{sno-station-mem-runtime-dependencies-DAMOKR9y.js → sno-station-mem-runtime-dependencies-CexFtaY6.js} +9 -9
- package/dist/{store-DKndKig1.d.ts → store-BDIAl2cc.d.ts} +1 -1
- package/dist/{store-CUk-jEGA.js → store-BQxkgJTX.js} +31 -23
- package/dist/{strategy-hook-runner-BSk_o6Yt.d.ts → strategy-hook-runner-DT9emgCZ.d.ts} +7 -7
- package/dist/{strategy-hook-runner-CWApiUZW.js → strategy-hook-runner-SvyyGBXw.js} +1 -1
- package/dist/{types-Del9J7UB.d.ts → types-Ae3a8562.d.ts} +1 -1
- package/dist/{utils-Ctb9aevJ.d.ts → utils-CDw2ttQf.d.ts} +2 -3
- package/package.json +2 -2
- package/settings.default.json +4 -4
- package/dist/memory-tool-dependencies-CJNppsKh.d.ts +0 -14
- package/dist/paths-D3dEsoE4.d.ts +0 -1
- package/dist/sno-station-mem-runtime-dependencies-8CRIkARK.d.ts +0 -31
- package/dist/{unplaced-candidate-migration-CbQHzcEM.js → unplaced-candidate-migration-BCcdQkcx.js} +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ct as FIXED_PROTOCOL_VALUE_69, d as FIXED_EXTERNAL_VALUE_8, f as FIXED_EXTERNAL_VALUE_9 } from "./signed-registry-constants-yq3DlG3B.js";
|
|
2
2
|
import { i as memoryOperationSignal, r as memoryOperationId, t as checkMemoryOperation } from "./operation-cancellation-CTKWwNHk.js";
|
|
3
|
-
import { t as MODEL_CALLS } from "./model-call-table-
|
|
3
|
+
import { t as MODEL_CALLS } from "./model-call-table-BE97f37s.js";
|
|
4
4
|
import { classifyLlmFailure, isCredentialFailure, isTransientLlmStatus } from "./internal/model/llm-failure.js";
|
|
5
5
|
import { a as repairCommonJson, i as previewText, n as readModelReplyJson, r as extractJsonFromResponse } from "./model-reply-text-CKopStP2.js";
|
|
6
6
|
import { resolveLlmRoute } from "./internal/model/llm-mode-routing.js";
|
|
@@ -165,7 +165,10 @@ function materializeBundledLlmixEndpoint(input) {
|
|
|
165
165
|
if (!path) throw new Error(`sno-station-mem llm-client: signed endpoint path missing from preset ${input.preset.preset}`);
|
|
166
166
|
return {
|
|
167
167
|
url: new URL(path, resolveEndpointBase(input.baseSource, input.preset.provider !== "sno-gpu")).toString(),
|
|
168
|
-
preset: input.preset
|
|
168
|
+
preset: input.preset.provider === "sno-gpu" && path === "/extract/profile/v1/completions" ? {
|
|
169
|
+
...input.preset,
|
|
170
|
+
model: "b-profile"
|
|
171
|
+
} : input.preset
|
|
169
172
|
};
|
|
170
173
|
}
|
|
171
174
|
async function resolveConfiguredBundledLlmixEndpoint(input) {
|
|
@@ -782,6 +785,7 @@ function normalizeMemoryLlmRequest(value) {
|
|
|
782
785
|
const emptyReplyAttempts = raw.emptyReplyAttempts;
|
|
783
786
|
if (emptyReplyAttempts !== void 0 && (!Number.isInteger(emptyReplyAttempts) || Number(emptyReplyAttempts) < 1 || Number(emptyReplyAttempts) > EMPTY_REPLY_ATTEMPTS)) throw new Error(`sno-station-mem llm-client: emptyReplyAttempts must be an integer from 1 to ${EMPTY_REPLY_ATTEMPTS}`);
|
|
784
787
|
const enableThinking = raw.enableThinking;
|
|
788
|
+
const takeProviderAttempt = raw.takeProviderAttempt;
|
|
785
789
|
if (enableThinking !== void 0 && typeof enableThinking !== "boolean") throw new Error("sno-station-mem llm-client: enableThinking must be a boolean");
|
|
786
790
|
const signal = raw.signal;
|
|
787
791
|
if (signal !== void 0 && !hasAbortSignalShape(signal)) throw new Error("sno-station-mem llm-client: signal must be an AbortSignal");
|
|
@@ -795,6 +799,7 @@ function normalizeMemoryLlmRequest(value) {
|
|
|
795
799
|
...maxTokens !== void 0 ? { maxTokens: Number(maxTokens) } : {},
|
|
796
800
|
...emptyReplyAttempts !== void 0 ? { emptyReplyAttempts: Number(emptyReplyAttempts) } : {},
|
|
797
801
|
...enableThinking !== void 0 ? { enableThinking } : {},
|
|
802
|
+
...typeof takeProviderAttempt === "function" ? { takeProviderAttempt: () => takeProviderAttempt() === true } : {},
|
|
798
803
|
...requestId !== void 0 ? { requestId } : {},
|
|
799
804
|
...typeof raw.promptTemplateHash === "string" && /^[a-f0-9]{64}$/.test(raw.promptTemplateHash) ? { promptTemplateHash: raw.promptTemplateHash } : {},
|
|
800
805
|
...typeof raw.extractionSkillHash === "string" && /^[a-f0-9]{64}$/.test(raw.extractionSkillHash) ? { extractionSkillHash: raw.extractionSkillHash } : {},
|
|
@@ -802,7 +807,9 @@ function normalizeMemoryLlmRequest(value) {
|
|
|
802
807
|
};
|
|
803
808
|
}
|
|
804
809
|
function textSystemContent(request) {
|
|
805
|
-
|
|
810
|
+
const occasion = MODEL_CALLS[request.callId].occasion;
|
|
811
|
+
if (occasion === "conflictAdjudication") return CONFLICT_ADJUDICATION_SYSTEM_CONTENT;
|
|
812
|
+
return occasion === "memoryExtract" ? JSON_SYSTEM_CONTENT : REFLECTION_TEXT_SYSTEM_CONTENT;
|
|
806
813
|
}
|
|
807
814
|
/** Creates the LLM client facade with provider routing, key rotation, and JSON parsing. */
|
|
808
815
|
function createLlmClient(config) {
|
|
@@ -832,8 +839,29 @@ function createLlmClient(config) {
|
|
|
832
839
|
}
|
|
833
840
|
return endpointPromise;
|
|
834
841
|
};
|
|
842
|
+
const providerBudget = new AsyncLocalStorage();
|
|
835
843
|
const pipeline = new CallPipeline({
|
|
836
|
-
dispatch:
|
|
844
|
+
dispatch: async (context) => {
|
|
845
|
+
const budget = providerBudget.getStore();
|
|
846
|
+
if (!budget) return callProvider(context);
|
|
847
|
+
const timeoutMs = Math.floor(budget.deadlineMs - performance.now());
|
|
848
|
+
if (timeoutMs <= 0) throw Object.assign(/* @__PURE__ */ new Error("Request deadline exhausted before provider dispatch"), { statusCode: 499 });
|
|
849
|
+
if (budget.remaining <= 0 || budget.takeProviderAttempt && !budget.takeProviderAttempt()) throw Object.assign(/* @__PURE__ */ new Error("Provider request attempts exhausted"), { statusCode: 499 });
|
|
850
|
+
budget.remaining -= 1;
|
|
851
|
+
const providerConfig = context.config;
|
|
852
|
+
const dispatchConfig = {
|
|
853
|
+
...providerConfig,
|
|
854
|
+
timeoutMs,
|
|
855
|
+
...providerConfig.rawCompletion ? { rawCompletion: {
|
|
856
|
+
...providerConfig.rawCompletion,
|
|
857
|
+
timeoutMs
|
|
858
|
+
} } : {}
|
|
859
|
+
};
|
|
860
|
+
return callProvider({
|
|
861
|
+
...context,
|
|
862
|
+
config: dispatchConfig
|
|
863
|
+
});
|
|
864
|
+
},
|
|
837
865
|
maxRetries: 2,
|
|
838
866
|
retryBaseMs: 100,
|
|
839
867
|
retryMaxDelayMs: 500,
|
|
@@ -905,6 +933,7 @@ function createLlmClient(config) {
|
|
|
905
933
|
if (transport === "agent-host-seam") {
|
|
906
934
|
const agentPort = config.agentPort;
|
|
907
935
|
if (!agentPort) throw new LlmClientTerminalError("transport", `sno-station-mem: llm-client [${request.callId}] AgentLlmPort is unavailable`);
|
|
936
|
+
if (request.takeProviderAttempt && !request.takeProviderAttempt()) return null;
|
|
908
937
|
config.onTransportAttempt?.({
|
|
909
938
|
callId: request.callId,
|
|
910
939
|
destination,
|
|
@@ -1147,13 +1176,18 @@ function createLlmClient(config) {
|
|
|
1147
1176
|
* result is returned untouched — it means no call was made, not that the model said nothing.
|
|
1148
1177
|
*/
|
|
1149
1178
|
const requestContentRetryingEmpty = async (state, request, systemContent, deadlineMs, prompt = request.prompt) => {
|
|
1150
|
-
|
|
1179
|
+
const budget = {
|
|
1180
|
+
remaining: EMPTY_REPLY_ATTEMPTS,
|
|
1181
|
+
deadlineMs,
|
|
1182
|
+
takeProviderAttempt: request.takeProviderAttempt
|
|
1183
|
+
};
|
|
1184
|
+
let content = await providerBudget.run(budget, () => requestContent(state, request, systemContent, prompt));
|
|
1151
1185
|
let usage = state.usage;
|
|
1152
1186
|
try {
|
|
1153
1187
|
checkMemoryOperation();
|
|
1154
1188
|
const attemptLimit = request.emptyReplyAttempts ?? EMPTY_REPLY_ATTEMPTS;
|
|
1155
1189
|
for (let attempt = 2; attempt <= attemptLimit; attempt += 1) {
|
|
1156
|
-
if (content === null || content.raw.trim().length > 0) break;
|
|
1190
|
+
if (content === null || content.raw.trim().length > 0 || budget.remaining <= 0) break;
|
|
1157
1191
|
const remainingMs = deadlineMs - performance.now();
|
|
1158
1192
|
if (remainingMs <= 0) break;
|
|
1159
1193
|
log.debug("Retrying empty model reply", {
|
|
@@ -1167,10 +1201,10 @@ function createLlmClient(config) {
|
|
|
1167
1201
|
function: "requestContentRetryingEmpty",
|
|
1168
1202
|
site_id: "shared.llm-client.requestContentRetryingEmpty.cd874fefff"
|
|
1169
1203
|
});
|
|
1170
|
-
content = await requestContent(state, {
|
|
1204
|
+
content = await providerBudget.run(budget, () => requestContent(state, {
|
|
1171
1205
|
...request,
|
|
1172
1206
|
timeoutMs: remainingMs
|
|
1173
|
-
}, systemContent, prompt);
|
|
1207
|
+
}, systemContent, prompt));
|
|
1174
1208
|
usage = addUsage(usage, state.usage);
|
|
1175
1209
|
checkMemoryOperation();
|
|
1176
1210
|
}
|
|
@@ -1195,6 +1229,7 @@ function createLlmClient(config) {
|
|
|
1195
1229
|
if (snoError !== void 0) throw snoError;
|
|
1196
1230
|
return content;
|
|
1197
1231
|
}
|
|
1232
|
+
const remainingMs = Math.floor(deadlineMs - performance.now());
|
|
1198
1233
|
const originalLastError = state.error;
|
|
1199
1234
|
const originalLastUsage = state.usage;
|
|
1200
1235
|
const source = snoError instanceof Error ? snoError.message : originalLastError ?? "";
|
|
@@ -1206,21 +1241,25 @@ function createLlmClient(config) {
|
|
|
1206
1241
|
else if (!config.apiKey?.trim()) snoFailure = "missing_key";
|
|
1207
1242
|
const operationId = config.operationId ?? memoryOperationId();
|
|
1208
1243
|
let hostFailure = "empty_reply";
|
|
1209
|
-
if (
|
|
1244
|
+
if (remainingMs <= 0) hostFailure = "deadline_exhausted";
|
|
1245
|
+
else if (!config.agentPort) hostFailure = "port_unavailable";
|
|
1210
1246
|
else if ([
|
|
1211
1247
|
"E10",
|
|
1212
1248
|
"P1",
|
|
1213
1249
|
"REM1"
|
|
1214
1250
|
].includes(request.callId) && !request.hostPrompt) hostFailure = "host_prompt_missing";
|
|
1215
1251
|
else try {
|
|
1216
|
-
const host = await requestContent(state,
|
|
1252
|
+
const host = await requestContent(state, {
|
|
1253
|
+
...request,
|
|
1254
|
+
timeoutMs: remainingMs
|
|
1255
|
+
}, systemContent, request.hostPrompt ?? request.prompt, "host");
|
|
1217
1256
|
if (host?.raw.trim()) {
|
|
1218
1257
|
log.info("Sno model call answered by host", {
|
|
1219
1258
|
call_id: request.callId,
|
|
1220
1259
|
operation_id: operationId,
|
|
1221
1260
|
sno_failure: snoFailure,
|
|
1222
1261
|
host_outcome: "answered",
|
|
1223
|
-
timeout_ms:
|
|
1262
|
+
timeout_ms: remainingMs
|
|
1224
1263
|
}, {
|
|
1225
1264
|
event_name: "memory.llm_client.fallback",
|
|
1226
1265
|
file: "packages/memory/src/model/llm-client.ts",
|
|
@@ -1232,7 +1271,7 @@ function createLlmClient(config) {
|
|
|
1232
1271
|
}
|
|
1233
1272
|
if (host === null) hostFailure = "host_error";
|
|
1234
1273
|
} catch (error) {
|
|
1235
|
-
if (request.signal?.aborted) throw error;
|
|
1274
|
+
if (request.signal?.aborted || error instanceof ModelCallRefusedError) throw error;
|
|
1236
1275
|
hostFailure = error instanceof LlmClientTerminalError ? error.category : "transport";
|
|
1237
1276
|
}
|
|
1238
1277
|
state.error = originalLastError;
|