nexus-agents 5.0.3 → 5.0.5
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/{child-mcp-config-2EXF74GZ.js → child-mcp-config-PIZSE56V.js} +2 -2
- package/dist/{chunk-KYOVZ2QZ.js → chunk-2I5BBD6U.js} +5 -5
- package/dist/{chunk-26PZ2652.js → chunk-326RCKE2.js} +46 -41
- package/dist/{chunk-26PZ2652.js.map → chunk-326RCKE2.js.map} +1 -1
- package/dist/{chunk-WTQEMR7D.js → chunk-5MQPSHIG.js} +7 -7
- package/dist/{chunk-SOKS6XK2.js → chunk-5VP6WPEI.js} +2 -2
- package/dist/{chunk-AVYTX7JQ.js → chunk-6OPLDOJG.js} +3 -3
- package/dist/{chunk-SZ6J4YY7.js → chunk-AS4B7KCT.js} +2 -2
- package/dist/{chunk-7TXO7LYE.js → chunk-BGGS3PH2.js} +2 -2
- package/dist/{chunk-Y4XI4RIB.js → chunk-F67CLL5B.js} +2 -2
- package/dist/{chunk-KG752W6G.js → chunk-FDWB4PUV.js} +2 -2
- package/dist/{chunk-C2LEM7RD.js → chunk-FU45UMX5.js} +2 -2
- package/dist/{chunk-3IDYJL2Y.js → chunk-FWBR6DZO.js} +2 -2
- package/dist/{chunk-77VDRUFK.js → chunk-GFDE5IAZ.js} +3 -3
- package/dist/{chunk-VRJJGXUE.js → chunk-GSK2JRVW.js} +8 -8
- package/dist/{chunk-KQPEECXT.js → chunk-GTMJPNPR.js} +2 -2
- package/dist/{chunk-OLCMDKQE.js → chunk-IJLWQ4Y3.js} +7 -7
- package/dist/{chunk-W7ITYRY2.js → chunk-JOY5IRVR.js} +2 -2
- package/dist/{chunk-AKOBOCUB.js → chunk-K4OBRS4D.js} +2 -2
- package/dist/{chunk-FWP5FZ7V.js → chunk-NDVKXAK5.js} +2 -2
- package/dist/{chunk-Q225TVYP.js → chunk-OCFY37TZ.js} +16 -2
- package/dist/chunk-OCFY37TZ.js.map +1 -0
- package/dist/{chunk-ZSNWRX2B.js → chunk-OOGKQTDN.js} +2 -2
- package/dist/{chunk-VS2DUTJ5.js → chunk-P7IHQSCC.js} +18 -4
- package/dist/chunk-P7IHQSCC.js.map +1 -0
- package/dist/{chunk-WIYDV6ZY.js → chunk-Q36RQS7J.js} +3 -3
- package/dist/{chunk-VZM7YQZL.js → chunk-R66FJKP4.js} +5 -5
- package/dist/{chunk-2P6GBKUN.js → chunk-ROCFIXAK.js} +2 -2
- package/dist/{chunk-EQRCOUJJ.js → chunk-SY54YKTT.js} +2 -2
- package/dist/{chunk-AU6N4HZR.js → chunk-T2KKAZTB.js} +3 -3
- package/dist/{chunk-OKS6I7T7.js → chunk-TC2QG4U3.js} +4 -4
- package/dist/{chunk-VHB3L7H7.js → chunk-TIOXRJK3.js} +2 -2
- package/dist/{chunk-XIWGJBVE.js → chunk-VX6VNBCU.js} +4 -4
- package/dist/chunk-XUTX54BU.js +7 -0
- package/dist/{chunk-FTIJ4V4A.js → chunk-YZN2UFYB.js} +8 -8
- package/dist/{chunk-O6TCROTE.js → chunk-ZSVUZOMQ.js} +4 -4
- package/dist/{chunk-QNF6NAQ3.js → chunk-ZXTOZ7B3.js} +6 -6
- package/dist/{cli-circuit-breaker-UFQZZVAB.js → cli-circuit-breaker-YEQKBXCN.js} +3 -3
- package/dist/cli.js +47 -45
- package/dist/cli.js.map +1 -1
- package/dist/{composite-router-KL7ZLCJY.js → composite-router-7D45ZSSG.js} +2 -2
- package/dist/{consensus-vote-3PGPRVOV.js → consensus-vote-AONDO26T.js} +17 -17
- package/dist/{context-retriever-GJL6HFJK.js → context-retriever-3R3BWMEW.js} +8 -8
- package/dist/{doctor-deep-XEJ7JXQI.js → doctor-deep-ECI74ALB.js} +3 -3
- package/dist/{doctor-live-4VAU6HLF.js → doctor-live-OBEZKBNU.js} +9 -9
- package/dist/{expert-bridge-VYB4C7C5.js → expert-bridge-XIFIEXQM.js} +4 -4
- package/dist/{factory-YYGHDTUN.js → factory-2TN6OVWR.js} +5 -5
- package/dist/{factory-S5K2EIKH.js → factory-3T6NTUDH.js} +9 -9
- package/dist/{improvement-review-NVIZXYSX.js → improvement-review-4KMYPNSZ.js} +6 -6
- package/dist/index.js +31 -31
- package/dist/{init-opencode-5PUDYNKQ.js → init-opencode-SIT4DIQ4.js} +6 -6
- package/dist/issue-triage-42TGOOZX.js +17 -0
- package/dist/{pr-reviewer-helpers-4YANH63K.js → pr-reviewer-helpers-NL7YXDAO.js} +4 -4
- package/dist/{registry-command-KZDEZNUE.js → registry-command-UBUAESO2.js} +2 -2
- package/dist/{repo-security-plan-7N2BVFFF.js → repo-security-plan-MK3OFGIC.js} +3 -3
- package/dist/{research-helpers-synthesize-FCXEDCUC.js → research-helpers-synthesize-UZGA2H5E.js} +4 -4
- package/dist/{routing-memory-NZZHHDN6.js → routing-memory-GSOJXKYR.js} +2 -2
- package/dist/{session-memory-OV55DW3U.js → session-memory-QK544BZF.js} +3 -3
- package/dist/{setup-config-WFHZTYAU.js → setup-config-AXDZQQZD.js} +3 -3
- package/dist/{setup-custom-api-5V5IQUMA.js → setup-custom-api-JNLX5DPO.js} +4 -4
- package/dist/setup-data-dir-PIT5H2S6.js +29 -0
- package/dist/{tool-memory-NJ5B3U27.js → tool-memory-DYW3QKJZ.js} +5 -5
- package/dist/{unified-registry-YBGPLXH3.js → unified-registry-ZRG3SO3X.js} +10 -10
- package/dist/{weather-report-U626M3HS.js → weather-report-JQGPC6ZC.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-Q225TVYP.js.map +0 -1
- package/dist/chunk-RXJHAUJY.js +0 -7
- package/dist/chunk-VS2DUTJ5.js.map +0 -1
- package/dist/issue-triage-5ZFQWQ3W.js +0 -17
- package/dist/setup-data-dir-YJU7MPS5.js +0 -29
- /package/dist/{child-mcp-config-2EXF74GZ.js.map → child-mcp-config-PIZSE56V.js.map} +0 -0
- /package/dist/{chunk-KYOVZ2QZ.js.map → chunk-2I5BBD6U.js.map} +0 -0
- /package/dist/{chunk-WTQEMR7D.js.map → chunk-5MQPSHIG.js.map} +0 -0
- /package/dist/{chunk-SOKS6XK2.js.map → chunk-5VP6WPEI.js.map} +0 -0
- /package/dist/{chunk-AVYTX7JQ.js.map → chunk-6OPLDOJG.js.map} +0 -0
- /package/dist/{chunk-SZ6J4YY7.js.map → chunk-AS4B7KCT.js.map} +0 -0
- /package/dist/{chunk-7TXO7LYE.js.map → chunk-BGGS3PH2.js.map} +0 -0
- /package/dist/{chunk-Y4XI4RIB.js.map → chunk-F67CLL5B.js.map} +0 -0
- /package/dist/{chunk-KG752W6G.js.map → chunk-FDWB4PUV.js.map} +0 -0
- /package/dist/{chunk-C2LEM7RD.js.map → chunk-FU45UMX5.js.map} +0 -0
- /package/dist/{chunk-3IDYJL2Y.js.map → chunk-FWBR6DZO.js.map} +0 -0
- /package/dist/{chunk-77VDRUFK.js.map → chunk-GFDE5IAZ.js.map} +0 -0
- /package/dist/{chunk-VRJJGXUE.js.map → chunk-GSK2JRVW.js.map} +0 -0
- /package/dist/{chunk-KQPEECXT.js.map → chunk-GTMJPNPR.js.map} +0 -0
- /package/dist/{chunk-OLCMDKQE.js.map → chunk-IJLWQ4Y3.js.map} +0 -0
- /package/dist/{chunk-W7ITYRY2.js.map → chunk-JOY5IRVR.js.map} +0 -0
- /package/dist/{chunk-AKOBOCUB.js.map → chunk-K4OBRS4D.js.map} +0 -0
- /package/dist/{chunk-FWP5FZ7V.js.map → chunk-NDVKXAK5.js.map} +0 -0
- /package/dist/{chunk-ZSNWRX2B.js.map → chunk-OOGKQTDN.js.map} +0 -0
- /package/dist/{chunk-WIYDV6ZY.js.map → chunk-Q36RQS7J.js.map} +0 -0
- /package/dist/{chunk-VZM7YQZL.js.map → chunk-R66FJKP4.js.map} +0 -0
- /package/dist/{chunk-2P6GBKUN.js.map → chunk-ROCFIXAK.js.map} +0 -0
- /package/dist/{chunk-EQRCOUJJ.js.map → chunk-SY54YKTT.js.map} +0 -0
- /package/dist/{chunk-AU6N4HZR.js.map → chunk-T2KKAZTB.js.map} +0 -0
- /package/dist/{chunk-OKS6I7T7.js.map → chunk-TC2QG4U3.js.map} +0 -0
- /package/dist/{chunk-VHB3L7H7.js.map → chunk-TIOXRJK3.js.map} +0 -0
- /package/dist/{chunk-XIWGJBVE.js.map → chunk-VX6VNBCU.js.map} +0 -0
- /package/dist/{chunk-RXJHAUJY.js.map → chunk-XUTX54BU.js.map} +0 -0
- /package/dist/{chunk-FTIJ4V4A.js.map → chunk-YZN2UFYB.js.map} +0 -0
- /package/dist/{chunk-O6TCROTE.js.map → chunk-ZSVUZOMQ.js.map} +0 -0
- /package/dist/{chunk-QNF6NAQ3.js.map → chunk-ZXTOZ7B3.js.map} +0 -0
- /package/dist/{cli-circuit-breaker-UFQZZVAB.js.map → cli-circuit-breaker-YEQKBXCN.js.map} +0 -0
- /package/dist/{composite-router-KL7ZLCJY.js.map → composite-router-7D45ZSSG.js.map} +0 -0
- /package/dist/{consensus-vote-3PGPRVOV.js.map → consensus-vote-AONDO26T.js.map} +0 -0
- /package/dist/{context-retriever-GJL6HFJK.js.map → context-retriever-3R3BWMEW.js.map} +0 -0
- /package/dist/{doctor-deep-XEJ7JXQI.js.map → doctor-deep-ECI74ALB.js.map} +0 -0
- /package/dist/{doctor-live-4VAU6HLF.js.map → doctor-live-OBEZKBNU.js.map} +0 -0
- /package/dist/{expert-bridge-VYB4C7C5.js.map → expert-bridge-XIFIEXQM.js.map} +0 -0
- /package/dist/{factory-S5K2EIKH.js.map → factory-2TN6OVWR.js.map} +0 -0
- /package/dist/{factory-YYGHDTUN.js.map → factory-3T6NTUDH.js.map} +0 -0
- /package/dist/{improvement-review-NVIZXYSX.js.map → improvement-review-4KMYPNSZ.js.map} +0 -0
- /package/dist/{init-opencode-5PUDYNKQ.js.map → init-opencode-SIT4DIQ4.js.map} +0 -0
- /package/dist/{issue-triage-5ZFQWQ3W.js.map → issue-triage-42TGOOZX.js.map} +0 -0
- /package/dist/{pr-reviewer-helpers-4YANH63K.js.map → pr-reviewer-helpers-NL7YXDAO.js.map} +0 -0
- /package/dist/{registry-command-KZDEZNUE.js.map → registry-command-UBUAESO2.js.map} +0 -0
- /package/dist/{repo-security-plan-7N2BVFFF.js.map → repo-security-plan-MK3OFGIC.js.map} +0 -0
- /package/dist/{research-helpers-synthesize-FCXEDCUC.js.map → research-helpers-synthesize-UZGA2H5E.js.map} +0 -0
- /package/dist/{routing-memory-NZZHHDN6.js.map → routing-memory-GSOJXKYR.js.map} +0 -0
- /package/dist/{session-memory-OV55DW3U.js.map → session-memory-QK544BZF.js.map} +0 -0
- /package/dist/{setup-config-WFHZTYAU.js.map → setup-config-AXDZQQZD.js.map} +0 -0
- /package/dist/{setup-custom-api-5V5IQUMA.js.map → setup-custom-api-JNLX5DPO.js.map} +0 -0
- /package/dist/{setup-data-dir-YJU7MPS5.js.map → setup-data-dir-PIT5H2S6.js.map} +0 -0
- /package/dist/{tool-memory-NJ5B3U27.js.map → tool-memory-DYW3QKJZ.js.map} +0 -0
- /package/dist/{unified-registry-YBGPLXH3.js.map → unified-registry-ZRG3SO3X.js.map} +0 -0
- /package/dist/{weather-report-U626M3HS.js.map → weather-report-JQGPC6ZC.js.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
resolveCliSlot
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NDVKXAK5.js";
|
|
4
4
|
import {
|
|
5
5
|
createLogger,
|
|
6
6
|
getTimeProvider,
|
|
7
7
|
isRateLimitText
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6OPLDOJG.js";
|
|
9
9
|
|
|
10
10
|
// src/pipeline/expert-bridge.ts
|
|
11
11
|
function resolveCliFromModelString(model) {
|
|
@@ -21,7 +21,7 @@ async function getMcpConfigPath() {
|
|
|
21
21
|
if (cachedMcpConfigPath !== null) return cachedMcpConfigPath;
|
|
22
22
|
mcpConfigInitPromise ??= (async () => {
|
|
23
23
|
try {
|
|
24
|
-
const { generateMcpConfig } = await import("./child-mcp-config-
|
|
24
|
+
const { generateMcpConfig } = await import("./child-mcp-config-PIZSE56V.js");
|
|
25
25
|
const config = await generateMcpConfig();
|
|
26
26
|
cachedMcpConfigPath = config.configPath;
|
|
27
27
|
cachedMcpConfigCleanup = config.cleanup;
|
|
@@ -93,8 +93,8 @@ var routerInitPromise = null;
|
|
|
93
93
|
async function getRouter() {
|
|
94
94
|
if (cachedRouter !== null) return cachedRouter;
|
|
95
95
|
routerInitPromise ??= (async () => {
|
|
96
|
-
const { createAllAdapters } = await import("./factory-
|
|
97
|
-
const { createCompositeRouter } = await import("./composite-router-
|
|
96
|
+
const { createAllAdapters } = await import("./factory-3T6NTUDH.js");
|
|
97
|
+
const { createCompositeRouter } = await import("./composite-router-7D45ZSSG.js");
|
|
98
98
|
const adapters = createAllAdapters();
|
|
99
99
|
if (adapters.size === 0) {
|
|
100
100
|
routerInitPromise = null;
|
|
@@ -102,7 +102,7 @@ async function getRouter() {
|
|
|
102
102
|
}
|
|
103
103
|
cachedRouter = adaptCompositeRouter(createCompositeRouter(adapters));
|
|
104
104
|
try {
|
|
105
|
-
const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-
|
|
105
|
+
const { createCliCircuitBreakerIntegration } = await import("./cli-circuit-breaker-YEQKBXCN.js");
|
|
106
106
|
cachedCircuitBreaker = createCliCircuitBreakerIntegration([...adapters.values()]);
|
|
107
107
|
} catch (error) {
|
|
108
108
|
const msg = error instanceof Error ? error.message : String(error);
|
|
@@ -213,4 +213,4 @@ export {
|
|
|
213
213
|
tokenSplitFromUsage,
|
|
214
214
|
executeExpert
|
|
215
215
|
};
|
|
216
|
-
//# sourceMappingURL=chunk-
|
|
216
|
+
//# sourceMappingURL=chunk-5MQPSHIG.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
computeTokenCost,
|
|
3
3
|
getDefaultRegistry,
|
|
4
4
|
roundToMicroUsd
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6OPLDOJG.js";
|
|
6
6
|
import {
|
|
7
7
|
getNexusDataDir
|
|
8
8
|
} from "./chunk-OGHEKPLD.js";
|
|
@@ -131,4 +131,4 @@ export {
|
|
|
131
131
|
loadUsageEvents,
|
|
132
132
|
rollupByModel
|
|
133
133
|
};
|
|
134
|
-
//# sourceMappingURL=chunk-
|
|
134
|
+
//# sourceMappingURL=chunk-5VP6WPEI.js.map
|
|
@@ -2632,7 +2632,7 @@ function setDefaultRegistry(registry) {
|
|
|
2632
2632
|
}
|
|
2633
2633
|
async function reloadDefaultRegistry() {
|
|
2634
2634
|
globalRegistry = buildDefaultRegistry();
|
|
2635
|
-
const { resetGlobalRegistry } = await import("./unified-registry-
|
|
2635
|
+
const { resetGlobalRegistry } = await import("./unified-registry-ZRG3SO3X.js");
|
|
2636
2636
|
resetGlobalRegistry();
|
|
2637
2637
|
return globalRegistry;
|
|
2638
2638
|
}
|
|
@@ -15245,7 +15245,7 @@ var CompositeRouter = class _CompositeRouter {
|
|
|
15245
15245
|
*/
|
|
15246
15246
|
async consultUnifiedContext(task) {
|
|
15247
15247
|
try {
|
|
15248
|
-
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-
|
|
15248
|
+
const { getContextForTask, inferTaskCategory } = await import("./context-retriever-3R3BWMEW.js");
|
|
15249
15249
|
const ctx = await getContextForTask({
|
|
15250
15250
|
task: task.content,
|
|
15251
15251
|
category: inferTaskCategory(task.content),
|
|
@@ -16851,4 +16851,4 @@ export {
|
|
|
16851
16851
|
AgentCapability,
|
|
16852
16852
|
OrchestratorError
|
|
16853
16853
|
};
|
|
16854
|
-
//# sourceMappingURL=chunk-
|
|
16854
|
+
//# sourceMappingURL=chunk-6OPLDOJG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getRandomProvider,
|
|
3
3
|
getTimeProvider
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6OPLDOJG.js";
|
|
5
5
|
|
|
6
6
|
// src/utils/id-utils.ts
|
|
7
7
|
import { randomUUID } from "crypto";
|
|
@@ -24,4 +24,4 @@ export {
|
|
|
24
24
|
generateHyphenId,
|
|
25
25
|
generateUUID
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-AS4B7KCT.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
createLogger,
|
|
4
4
|
err,
|
|
5
5
|
ok
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6OPLDOJG.js";
|
|
7
7
|
|
|
8
8
|
// src/adapters/sdk/types.ts
|
|
9
9
|
var PROVIDER_ENV_KEYS = {
|
|
@@ -260,4 +260,4 @@ export {
|
|
|
260
260
|
validateCustomApiBaseUrl,
|
|
261
261
|
assertCustomApiHostResolvesPublic
|
|
262
262
|
};
|
|
263
|
-
//# sourceMappingURL=chunk-
|
|
263
|
+
//# sourceMappingURL=chunk-BGGS3PH2.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
getErrorMessage,
|
|
6
6
|
ok,
|
|
7
7
|
parseBoolEnv
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-6OPLDOJG.js";
|
|
9
9
|
|
|
10
10
|
// src/cli/research-helpers-io.ts
|
|
11
11
|
import * as fs2 from "fs/promises";
|
|
@@ -156,4 +156,4 @@ export {
|
|
|
156
156
|
loadPapersRegistry,
|
|
157
157
|
savePapersRegistry
|
|
158
158
|
};
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
159
|
+
//# sourceMappingURL=chunk-F67CLL5B.js.map
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
getTimeProvider,
|
|
9
9
|
isRateLimitText,
|
|
10
10
|
ok
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-6OPLDOJG.js";
|
|
12
12
|
|
|
13
13
|
// src/cli-adapters/circuit-breaker-types.ts
|
|
14
14
|
var CircuitErrorCode = {
|
|
@@ -541,4 +541,4 @@ export {
|
|
|
541
541
|
CliCircuitBreakerIntegration,
|
|
542
542
|
createCliCircuitBreakerIntegration
|
|
543
543
|
};
|
|
544
|
-
//# sourceMappingURL=chunk-
|
|
544
|
+
//# sourceMappingURL=chunk-FDWB4PUV.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
CACHE_TIMEOUTS,
|
|
3
3
|
createLogger,
|
|
4
4
|
getTimeProvider
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6OPLDOJG.js";
|
|
6
6
|
|
|
7
7
|
// src/security/trust-types.ts
|
|
8
8
|
import { z } from "zod";
|
|
@@ -560,4 +560,4 @@ export {
|
|
|
560
560
|
resolveReputationGatingMode,
|
|
561
561
|
gateWithReputation
|
|
562
562
|
};
|
|
563
|
-
//# sourceMappingURL=chunk-
|
|
563
|
+
//# sourceMappingURL=chunk-FU45UMX5.js.map
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
createLogger,
|
|
3
3
|
err,
|
|
4
4
|
ok
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-6OPLDOJG.js";
|
|
6
6
|
|
|
7
7
|
// src/scm/token-resolver.ts
|
|
8
8
|
import { execFile } from "child_process";
|
|
@@ -87,4 +87,4 @@ export {
|
|
|
87
87
|
hasToken,
|
|
88
88
|
getTokenEnvVars
|
|
89
89
|
};
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-FWBR6DZO.js.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
loadPapersRegistry
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-F67CLL5B.js";
|
|
4
4
|
import {
|
|
5
5
|
getErrorMessage
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6OPLDOJG.js";
|
|
7
7
|
|
|
8
8
|
// src/cli/research-helpers-synthesize.ts
|
|
9
9
|
import { z } from "zod";
|
|
@@ -886,4 +886,4 @@ export {
|
|
|
886
886
|
AttributedInsightSchema,
|
|
887
887
|
synthesizeResearch
|
|
888
888
|
};
|
|
889
|
-
//# sourceMappingURL=chunk-
|
|
889
|
+
//# sourceMappingURL=chunk-GFDE5IAZ.js.map
|
|
@@ -5,34 +5,34 @@ import {
|
|
|
5
5
|
planOptionalParams,
|
|
6
6
|
requireApiKey,
|
|
7
7
|
validateApiKeyPresence
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ROCFIXAK.js";
|
|
9
9
|
import {
|
|
10
10
|
CUSTOM_API_DEFAULT_MODEL
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-SY54YKTT.js";
|
|
12
12
|
import {
|
|
13
13
|
CUSTOM_API_BASE_URL_ENV,
|
|
14
14
|
PROVIDER_ENV_KEYS,
|
|
15
15
|
assertCustomApiHostResolvesPublic,
|
|
16
16
|
validateCustomApiBaseUrl
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-BGGS3PH2.js";
|
|
18
18
|
import {
|
|
19
19
|
nexusMkdtempSync
|
|
20
20
|
} from "./chunk-4OW67KT2.js";
|
|
21
21
|
import {
|
|
22
22
|
getAvailabilityCache
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-NDVKXAK5.js";
|
|
24
24
|
import {
|
|
25
25
|
extractSystemPrompt
|
|
26
26
|
} from "./chunk-QZUG667L.js";
|
|
27
27
|
import {
|
|
28
28
|
generateHyphenId
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-AS4B7KCT.js";
|
|
30
30
|
import {
|
|
31
31
|
CliCircuitBreaker,
|
|
32
32
|
DEFAULT_CIRCUIT_BREAKER_CONFIG,
|
|
33
33
|
getCliCircuitBreakerSnapshot,
|
|
34
34
|
getDefaultCliCircuitBreakerRegistry
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-FDWB4PUV.js";
|
|
36
36
|
import {
|
|
37
37
|
CLI_SUBPROCESS_TIMEOUTS,
|
|
38
38
|
CLI_TIMEOUTS,
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
resolveCliAlias,
|
|
73
73
|
resolveRetryAfterMs,
|
|
74
74
|
retryAfterMsFromContext
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-6OPLDOJG.js";
|
|
76
76
|
|
|
77
77
|
// src/cli-adapters/cli-to-model-adapter.ts
|
|
78
78
|
var CliToModelAdapter = class {
|
|
@@ -4903,4 +4903,4 @@ export {
|
|
|
4903
4903
|
SdkAdapter,
|
|
4904
4904
|
createAutoAdapter
|
|
4905
4905
|
};
|
|
4906
|
-
//# sourceMappingURL=chunk-
|
|
4906
|
+
//# sourceMappingURL=chunk-GSK2JRVW.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getErrorMessage
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6OPLDOJG.js";
|
|
4
4
|
|
|
5
5
|
// src/cli/setup-config.ts
|
|
6
6
|
import { copyFileSync, existsSync, mkdirSync, writeFileSync } from "fs";
|
|
@@ -77,4 +77,4 @@ function ensureBackup(outputPath) {
|
|
|
77
77
|
export {
|
|
78
78
|
runConfigInitSync
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-GTMJPNPR.js.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readOpenAICompatEnv
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-R66FJKP4.js";
|
|
4
4
|
import {
|
|
5
5
|
allOf
|
|
6
6
|
} from "./chunk-OQB3XC5O.js";
|
|
7
7
|
import {
|
|
8
8
|
VERSION
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XUTX54BU.js";
|
|
10
10
|
import {
|
|
11
11
|
capitalize
|
|
12
12
|
} from "./chunk-6T3EPABN.js";
|
|
13
13
|
import {
|
|
14
14
|
createAllAdapters,
|
|
15
15
|
probeCli
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-GSK2JRVW.js";
|
|
17
17
|
import {
|
|
18
18
|
getNexusTmpDir
|
|
19
19
|
} from "./chunk-4OW67KT2.js";
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
ok,
|
|
29
29
|
symbols,
|
|
30
30
|
writeLine
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6OPLDOJG.js";
|
|
32
32
|
import {
|
|
33
33
|
getLearningDir,
|
|
34
34
|
getOutcomesFile,
|
|
@@ -1201,13 +1201,13 @@ async function runDoctorFix(result) {
|
|
|
1201
1201
|
writeLine2("\u2500".repeat(40));
|
|
1202
1202
|
let fixCount = 0;
|
|
1203
1203
|
if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
|
|
1204
|
-
const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-
|
|
1204
|
+
const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-PIT5H2S6.js");
|
|
1205
1205
|
const outcome = describeDataDirFix2(initDataDirectories2());
|
|
1206
1206
|
writeLine2(outcome.line);
|
|
1207
1207
|
if (outcome.counted) fixCount++;
|
|
1208
1208
|
}
|
|
1209
1209
|
if (!result.configFile.found) {
|
|
1210
|
-
const { runConfigInitSync } = await import("./setup-config-
|
|
1210
|
+
const { runConfigInitSync } = await import("./setup-config-AXDZQQZD.js");
|
|
1211
1211
|
const configResult = runConfigInitSync(process.cwd(), false, false);
|
|
1212
1212
|
if (configResult.success && configResult.created) {
|
|
1213
1213
|
writeLine2(`\u2713 Generated config: ${configResult.path}`);
|
|
@@ -1303,4 +1303,4 @@ export {
|
|
|
1303
1303
|
startStdioServer,
|
|
1304
1304
|
closeServer
|
|
1305
1305
|
};
|
|
1306
|
-
//# sourceMappingURL=chunk-
|
|
1306
|
+
//# sourceMappingURL=chunk-IJLWQ4Y3.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
createLogger,
|
|
6
6
|
getTimeProvider
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6OPLDOJG.js";
|
|
8
8
|
|
|
9
9
|
// src/mcp/tools/scanner-registry-fetcher.ts
|
|
10
10
|
import { z } from "zod";
|
|
@@ -721,4 +721,4 @@ export {
|
|
|
721
721
|
generateSecurityPlan,
|
|
722
722
|
buildPlanFromAnalysis
|
|
723
723
|
};
|
|
724
|
-
//# sourceMappingURL=chunk-
|
|
724
|
+
//# sourceMappingURL=chunk-JOY5IRVR.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
err,
|
|
5
5
|
getErrorMessage,
|
|
6
6
|
ok
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6OPLDOJG.js";
|
|
8
8
|
|
|
9
9
|
// src/scm/types.ts
|
|
10
10
|
var ScmError = class extends Error {
|
|
@@ -263,4 +263,4 @@ export {
|
|
|
263
263
|
ScmError,
|
|
264
264
|
GitHubProvider
|
|
265
265
|
};
|
|
266
|
-
//# sourceMappingURL=chunk-
|
|
266
|
+
//# sourceMappingURL=chunk-K4OBRS4D.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
MODEL_IDS,
|
|
4
4
|
getTimeProvider,
|
|
5
5
|
resolveModelIdentitySync
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-6OPLDOJG.js";
|
|
7
7
|
|
|
8
8
|
// src/config/model-availability.ts
|
|
9
9
|
var DEFAULT_TTL_MS = 6e4;
|
|
@@ -150,4 +150,4 @@ export {
|
|
|
150
150
|
resetAvailabilityCache,
|
|
151
151
|
filterAvailableModels
|
|
152
152
|
};
|
|
153
|
-
//# sourceMappingURL=chunk-
|
|
153
|
+
//# sourceMappingURL=chunk-NDVKXAK5.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
getErrorMessage,
|
|
5
5
|
getTimeProvider,
|
|
6
6
|
ok
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6OPLDOJG.js";
|
|
8
8
|
|
|
9
9
|
// src/context/session-memory.ts
|
|
10
10
|
import * as fs from "fs";
|
|
@@ -140,6 +140,20 @@ var SessionMemory = class {
|
|
|
140
140
|
getCurrentSessionLearnings() {
|
|
141
141
|
return this.currentSession?.learnings ?? [];
|
|
142
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Get tasks completed in the current (unpersisted) session.
|
|
145
|
+
*
|
|
146
|
+
* Sibling of {@link getCurrentSessionLearnings}. Its absence is why
|
|
147
|
+
* `memory_stats` reported a hardcoded `tasksCount: 0` — the data was in the
|
|
148
|
+
* episode all along, just not readable before `endSession` (#5269).
|
|
149
|
+
*/
|
|
150
|
+
getCurrentSessionTasks() {
|
|
151
|
+
return this.currentSession?.tasksCompleted ?? [];
|
|
152
|
+
}
|
|
153
|
+
/** Get errors resolved in the current (unpersisted) session. See above. */
|
|
154
|
+
getCurrentSessionErrors() {
|
|
155
|
+
return this.currentSession?.errorsResolved ?? [];
|
|
156
|
+
}
|
|
143
157
|
/** Record a learning during the current session. */
|
|
144
158
|
recordLearning(learning) {
|
|
145
159
|
if (this.currentSession === null) {
|
|
@@ -352,4 +366,4 @@ export {
|
|
|
352
366
|
SessionMemory,
|
|
353
367
|
createSessionMemory
|
|
354
368
|
};
|
|
355
|
-
//# sourceMappingURL=chunk-
|
|
369
|
+
//# sourceMappingURL=chunk-OCFY37TZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/context/session-memory.ts","../src/context/session-memory-types.ts"],"sourcesContent":["/**\n * Cross-session episodic memory persistence with FIFO eviction bounds.\n * @module context/session-memory\n * (Source: Issue #130, #709 - arXiv:2303.11366 - Reflexion)\n */\nimport * as fs from 'node:fs';\nimport * as path from 'node:path';\nimport type { Result } from '../core/result.js';\nimport { ok, err } from '../core/result.js';\nimport { getErrorMessage, getTimeProvider } from '../core/index.js';\nimport type { ILogger } from '../core/logger.js';\nimport { createLogger } from '../core/logger.js';\nimport type {\n SessionLearning,\n CompletedTask,\n ResolvedError,\n SessionEpisode,\n SessionMemoryConfig,\n} from './session-memory-types.js';\nimport {\n SessionLearningSchema,\n CompletedTaskSchema,\n ResolvedErrorSchema,\n SessionEpisodeSchema,\n SessionMemoryError,\n DEFAULT_SESSION_MEMORY_CONFIG,\n} from './session-memory-types.js';\n\nexport type {\n SessionLearning,\n CompletedTask,\n ResolvedError,\n SessionEpisode,\n SessionMemoryConfig,\n} from './session-memory-types.js';\nexport {\n SessionLearningSchema,\n CompletedTaskSchema,\n ResolvedErrorSchema,\n SessionEpisodeSchema,\n SessionMemoryError,\n} from './session-memory-types.js';\n\n/** Manages cross-session episodic memory with per-session bounds and disk retention. */\nexport class SessionMemory {\n private readonly memoryDir: string;\n private readonly maxEpisodesToLoad: number;\n private readonly maxLearningsInContext: number;\n private readonly minConfidenceThreshold: number;\n private readonly maxLearningsPerSession: number;\n private readonly maxTasksPerSession: number;\n private readonly maxErrorsPerSession: number;\n private readonly maxEpisodeFiles: number;\n private readonly log: ILogger;\n private currentSession: SessionEpisode | null = null;\n private sessionStartTime: number | null = null;\n\n constructor(config: SessionMemoryConfig) {\n const d = DEFAULT_SESSION_MEMORY_CONFIG;\n this.memoryDir = config.memoryDir;\n this.maxEpisodesToLoad = config.maxEpisodesToLoad ?? d.maxEpisodesToLoad;\n this.maxLearningsInContext = config.maxLearningsInContext ?? d.maxLearningsInContext;\n this.minConfidenceThreshold = config.minConfidenceThreshold ?? d.minConfidenceThreshold;\n this.maxLearningsPerSession = config.maxLearningsPerSession ?? d.maxLearningsPerSession;\n this.maxTasksPerSession = config.maxTasksPerSession ?? d.maxTasksPerSession;\n this.maxErrorsPerSession = config.maxErrorsPerSession ?? d.maxErrorsPerSession;\n this.maxEpisodeFiles = config.maxEpisodeFiles ?? d.maxEpisodeFiles;\n this.log = config.logger ?? createLogger({ component: 'SessionMemory' });\n }\n\n /** Start a new session and load relevant memories. */\n startSession(sessionId: string): Result<readonly SessionLearning[], SessionMemoryError> {\n if (this.currentSession !== null) {\n return err(\n new SessionMemoryError('Session already in progress', {\n existingSessionId: this.currentSession.sessionId,\n })\n );\n }\n\n this.ensureMemoryDir();\n this.sessionStartTime = getTimeProvider().now();\n\n this.currentSession = {\n sessionId,\n date: getTimeProvider().nowDateString(),\n durationMs: 0,\n summary: '',\n learnings: [],\n tasksCompleted: [],\n errorsResolved: [],\n };\n\n this.log.info('Session started', { sessionId });\n\n // Load relevant learnings from past episodes\n const relevantLearnings = this.loadRelevantLearnings();\n return ok(relevantLearnings);\n }\n\n /** End the current session and persist episode. */\n endSession(summary: string): Result<SessionEpisode, SessionMemoryError> {\n if (this.currentSession === null || this.sessionStartTime === null) {\n return err(new SessionMemoryError('No session in progress'));\n }\n\n const durationMs = getTimeProvider().now() - this.sessionStartTime;\n const episode: SessionEpisode = {\n ...this.currentSession,\n durationMs,\n summary,\n };\n\n const persistResult = this.persistEpisode(episode);\n if (!persistResult.ok) return persistResult;\n\n this.log.info('Session ended', {\n sessionId: episode.sessionId,\n durationMs,\n learningsCount: episode.learnings.length,\n tasksCount: episode.tasksCompleted.length,\n });\n\n this.currentSession = null;\n this.sessionStartTime = null;\n\n return ok(episode);\n }\n\n /** Check if a session is currently active. */\n isSessionActive(): boolean {\n return this.currentSession !== null;\n }\n\n /** Get the current session ID. */\n getCurrentSessionId(): string | null {\n return this.currentSession?.sessionId ?? null;\n }\n\n /** Get learnings accumulated in the current (unpersisted) session. */\n getCurrentSessionLearnings(): readonly SessionLearning[] {\n return this.currentSession?.learnings ?? [];\n }\n\n /**\n * Get tasks completed in the current (unpersisted) session.\n *\n * Sibling of {@link getCurrentSessionLearnings}. Its absence is why\n * `memory_stats` reported a hardcoded `tasksCount: 0` — the data was in the\n * episode all along, just not readable before `endSession` (#5269).\n */\n getCurrentSessionTasks(): readonly CompletedTask[] {\n return this.currentSession?.tasksCompleted ?? [];\n }\n\n /** Get errors resolved in the current (unpersisted) session. See above. */\n getCurrentSessionErrors(): readonly ResolvedError[] {\n return this.currentSession?.errorsResolved ?? [];\n }\n\n /** Record a learning during the current session. */\n recordLearning(learning: SessionLearning): Result<void, SessionMemoryError> {\n if (this.currentSession === null) {\n return err(new SessionMemoryError('No session in progress'));\n }\n\n const validation = SessionLearningSchema.safeParse(learning);\n if (!validation.success) {\n return err(\n new SessionMemoryError('Invalid learning data', {\n errors: validation.error.issues,\n })\n );\n }\n\n const updated = [...this.currentSession.learnings, learning];\n if (updated.length > this.maxLearningsPerSession) {\n updated.splice(0, updated.length - this.maxLearningsPerSession);\n this.log.debug('Learning FIFO eviction', { kept: this.maxLearningsPerSession });\n }\n this.currentSession = { ...this.currentSession, learnings: updated };\n\n this.log.debug('Learning recorded', { pattern: learning.pattern });\n return ok(undefined);\n }\n\n /** Record a completed task during the current session. */\n recordTask(task: CompletedTask): Result<void, SessionMemoryError> {\n if (this.currentSession === null) {\n return err(new SessionMemoryError('No session in progress'));\n }\n\n const validation = CompletedTaskSchema.safeParse(task);\n if (!validation.success) {\n return err(\n new SessionMemoryError('Invalid task data', {\n errors: validation.error.issues,\n })\n );\n }\n\n const updated = [...this.currentSession.tasksCompleted, task];\n if (updated.length > this.maxTasksPerSession) {\n updated.splice(0, updated.length - this.maxTasksPerSession);\n this.log.debug('Task FIFO eviction', { kept: this.maxTasksPerSession });\n }\n this.currentSession = { ...this.currentSession, tasksCompleted: updated };\n\n this.log.debug('Task recorded', { issue: task.issue });\n return ok(undefined);\n }\n\n /** Record a resolved error during the current session. */\n recordError(error: ResolvedError): Result<void, SessionMemoryError> {\n if (this.currentSession === null) {\n return err(new SessionMemoryError('No session in progress'));\n }\n\n const validation = ResolvedErrorSchema.safeParse(error);\n if (!validation.success) {\n return err(\n new SessionMemoryError('Invalid error data', {\n errors: validation.error.issues,\n })\n );\n }\n\n const updated = [...this.currentSession.errorsResolved, error];\n if (updated.length > this.maxErrorsPerSession) {\n updated.splice(0, updated.length - this.maxErrorsPerSession);\n this.log.debug('Error FIFO eviction', { kept: this.maxErrorsPerSession });\n }\n this.currentSession = { ...this.currentSession, errorsResolved: updated };\n\n this.log.debug('Error resolution recorded', { error: error.error });\n return ok(undefined);\n }\n\n /** Load all episodes from the memory directory. */\n loadEpisodes(limit?: number): readonly SessionEpisode[] {\n this.ensureMemoryDir();\n const files = this.getEpisodeFiles();\n const effectiveLimit = limit ?? this.maxEpisodesToLoad;\n\n const episodes: SessionEpisode[] = [];\n for (const file of files.slice(0, effectiveLimit)) {\n const episode = this.loadEpisodeFile(file);\n if (episode !== null) {\n episodes.push(episode);\n }\n }\n\n return episodes;\n }\n\n /** Load learnings relevant to the current context. */\n loadRelevantLearnings(): readonly SessionLearning[] {\n const episodes = this.loadEpisodes();\n const allLearnings: SessionLearning[] = [];\n\n for (const episode of episodes) {\n for (const learning of episode.learnings) {\n if (learning.confidence >= this.minConfidenceThreshold) {\n allLearnings.push(learning);\n }\n }\n }\n\n // Sort by confidence (highest first) and limit\n return allLearnings\n .sort((a, b) => b.confidence - a.confidence)\n .slice(0, this.maxLearningsInContext);\n }\n\n /** Search for learnings matching a query (includes current session).\n * Uses keyword-based matching: all query words must appear in the text. */\n searchLearnings(query: string): readonly SessionLearning[] {\n const keywords = query\n .toLowerCase()\n .split(/\\s+/)\n .filter((k) => k.length > 1);\n const matches: SessionLearning[] = [];\n\n // Search persisted episodes\n const episodes = this.loadEpisodes();\n for (const episode of episodes) {\n for (const learning of episode.learnings) {\n if (matchesKeywords(learning, keywords)) {\n matches.push(learning);\n }\n }\n }\n\n // Include current (unpersisted) session learnings (#1126)\n if (this.currentSession !== null) {\n for (const learning of this.currentSession.learnings) {\n if (matchesKeywords(learning, keywords)) {\n matches.push(learning);\n }\n }\n }\n\n return matches.sort((a, b) => b.confidence - a.confidence);\n }\n\n /** Get recent errors and their solutions. */\n getRecentErrorSolutions(limit = 10): readonly ResolvedError[] {\n const episodes = this.loadEpisodes();\n const errors: ResolvedError[] = [];\n\n for (const episode of episodes) {\n errors.push(...episode.errorsResolved);\n }\n\n return errors.slice(0, limit);\n }\n\n private ensureMemoryDir(): void {\n if (!fs.existsSync(this.memoryDir)) {\n fs.mkdirSync(this.memoryDir, { recursive: true });\n this.log.debug('Created memory directory', { path: this.memoryDir });\n }\n }\n\n private getEpisodeFiles(): readonly string[] {\n try {\n const files = fs\n .readdirSync(this.memoryDir)\n .filter((f) => f.startsWith('episode-') && f.endsWith('.json'))\n .sort()\n .reverse(); // Most recent first\n return files;\n } catch {\n return [];\n }\n }\n\n private loadEpisodeFile(filename: string): SessionEpisode | null {\n try {\n const filepath = path.join(this.memoryDir, filename);\n const content = fs.readFileSync(filepath, 'utf-8');\n const data = JSON.parse(content) as unknown;\n const validation = SessionEpisodeSchema.safeParse(data);\n if (validation.success) {\n // Cast required due to exactOptionalPropertyTypes - Zod validated the data\n return validation.data as SessionEpisode;\n }\n this.log.warn('Invalid episode file', { filename, errors: validation.error.issues });\n return null;\n } catch (error) {\n this.log.warn('Failed to load episode file', { filename, error });\n return null;\n }\n }\n\n private persistEpisode(episode: SessionEpisode): Result<void, SessionMemoryError> {\n try {\n this.ensureMemoryDir();\n // Use more of session ID to avoid collisions\n const sessionSuffix = episode.sessionId.replace(/[^a-zA-Z0-9-]/g, '-').slice(0, 16);\n const timestamp = getTimeProvider().now().toString(36); // Base36 timestamp for uniqueness\n const filename = `episode-${episode.date}-${sessionSuffix}-${timestamp}.json`;\n const filepath = path.join(this.memoryDir, filename);\n const content = JSON.stringify(episode, null, 2);\n fs.writeFileSync(filepath, content, 'utf-8');\n this.log.debug('Episode persisted', { filename });\n this.enforceEpisodeRetention();\n return ok(undefined);\n } catch (error) {\n const message = getErrorMessage(error);\n return err(new SessionMemoryError(`Failed to persist episode: ${message}`));\n }\n }\n\n /** Delete oldest episode files when count exceeds maxEpisodeFiles. */\n private enforceEpisodeRetention(): void {\n try {\n const files = this.getEpisodeFiles(); // sorted most-recent-first\n if (files.length <= this.maxEpisodeFiles) return;\n const toDelete = files.slice(this.maxEpisodeFiles);\n for (const file of toDelete) {\n fs.unlinkSync(path.join(this.memoryDir, file));\n }\n this.log.info('Episode retention enforced', {\n kept: this.maxEpisodeFiles,\n deleted: toDelete.length,\n });\n } catch (error: unknown) {\n this.log.debug('Episode retention cleanup failed', {\n error: getErrorMessage(error),\n });\n }\n }\n}\n\n/** Check if a learning matches all keywords (AND logic). */\nfunction matchesKeywords(learning: SessionLearning, keywords: readonly string[]): boolean {\n if (keywords.length === 0) return false;\n const text = `${learning.pattern} ${learning.context}`.toLowerCase();\n return keywords.every((k) => text.includes(k));\n}\n\n/** Create a SessionMemory instance with default configuration. */\nexport function createSessionMemory(\n memoryDir: string,\n config?: Partial<Omit<SessionMemoryConfig, 'memoryDir'>>\n): SessionMemory {\n return new SessionMemory({\n memoryDir,\n ...config,\n });\n}\n","/**\n * Session Memory Types and Schemas\n *\n * Type definitions for cross-session episodic memory persistence.\n *\n * @module context/session-memory-types\n * (Source: Issue #130, arXiv:2303.11366 - Reflexion)\n */\n\nimport { z } from 'zod';\nimport type { ILogger } from '../core/logger.js';\n\n// ============================================================================\n// Session Learning\n// ============================================================================\n\n/**\n * A learning captured during a session.\n */\nexport interface SessionLearning {\n /** The pattern or technique learned */\n readonly pattern: string;\n /** Context where this learning applies */\n readonly context: string;\n /** Confidence in this learning (0-1) */\n readonly confidence: number;\n /** Optional source (e.g., task, error, user feedback) */\n readonly source?: string;\n}\n\nexport const SessionLearningSchema = z.object({\n pattern: z.string().min(1),\n context: z.string().min(1),\n confidence: z.number().min(0).max(1),\n source: z.string().optional(),\n});\n\n// ============================================================================\n// Completed Task\n// ============================================================================\n\n/**\n * A task completed during a session.\n */\nexport interface CompletedTask {\n /** Issue or task identifier */\n readonly issue?: string | number;\n /** Approach used to complete the task */\n readonly approach: string;\n /** Challenges encountered */\n readonly challenges: readonly string[];\n /** Duration in milliseconds */\n readonly durationMs?: number;\n}\n\nexport const CompletedTaskSchema = z.object({\n issue: z.union([z.string(), z.number()]).optional(),\n approach: z.string().min(1),\n challenges: z.array(z.string()),\n durationMs: z.number().positive().optional(),\n});\n\n// ============================================================================\n// Resolved Error\n// ============================================================================\n\n/**\n * An error resolved during a session.\n */\nexport interface ResolvedError {\n /** Error message or type */\n readonly error: string;\n /** Solution applied */\n readonly solution: string;\n /** File pattern where this applies */\n readonly filePattern?: string;\n}\n\nexport const ResolvedErrorSchema = z.object({\n error: z.string().min(1),\n solution: z.string().min(1),\n filePattern: z.string().optional(),\n});\n\n// ============================================================================\n// Session Episode\n// ============================================================================\n\n/**\n * Complete session episode data.\n */\nexport interface SessionEpisode {\n /** Unique session identifier */\n readonly sessionId: string;\n /** Session date (ISO format) */\n readonly date: string;\n /** Session duration in milliseconds */\n readonly durationMs: number;\n /** Brief summary of the session */\n readonly summary: string;\n /** Learnings captured */\n readonly learnings: readonly SessionLearning[];\n /** Tasks completed */\n readonly tasksCompleted: readonly CompletedTask[];\n /** Errors resolved */\n readonly errorsResolved: readonly ResolvedError[];\n}\n\nexport const SessionEpisodeSchema = z.object({\n sessionId: z.string().min(1),\n date: z.string().min(1),\n durationMs: z.number().min(0),\n summary: z.string(),\n learnings: z.array(SessionLearningSchema),\n tasksCompleted: z.array(CompletedTaskSchema),\n errorsResolved: z.array(ResolvedErrorSchema),\n});\n\n// ============================================================================\n// Error Class\n// ============================================================================\n\n/**\n * Error for session memory operations.\n */\nexport class SessionMemoryError extends Error {\n constructor(\n message: string,\n public readonly context?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'SessionMemoryError';\n }\n}\n\n// ============================================================================\n// Configuration\n// ============================================================================\n\n/**\n * Configuration for SessionMemory.\n */\nexport interface SessionMemoryConfig {\n /** Base directory for memory storage */\n readonly memoryDir: string;\n /** Maximum episodes to load on session start */\n readonly maxEpisodesToLoad?: number;\n /** Maximum learnings to include in context */\n readonly maxLearningsInContext?: number;\n /** Minimum confidence threshold for learnings */\n readonly minConfidenceThreshold?: number;\n /** Maximum learnings per session (FIFO eviction). */\n readonly maxLearningsPerSession?: number;\n /** Maximum tasks per session (FIFO eviction). */\n readonly maxTasksPerSession?: number;\n /** Maximum errors per session (FIFO eviction). */\n readonly maxErrorsPerSession?: number;\n /** Maximum episode files to retain on disk. Oldest are deleted. */\n readonly maxEpisodeFiles?: number;\n /** Logger instance */\n readonly logger?: ILogger;\n}\n\nexport const DEFAULT_SESSION_MEMORY_CONFIG = {\n maxEpisodesToLoad: 10,\n maxLearningsInContext: 20,\n minConfidenceThreshold: 0.5,\n maxLearningsPerSession: 500,\n maxTasksPerSession: 200,\n maxErrorsPerSession: 200,\n maxEpisodeFiles: 50,\n} as const;\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getTimeProvider
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-6OPLDOJG.js";
|
|
4
4
|
|
|
5
5
|
// src/security/audit-trail.ts
|
|
6
6
|
var MAX_EVENTS = 1e4;
|
|
@@ -205,4 +205,4 @@ export {
|
|
|
205
205
|
createGraphAuditBridge,
|
|
206
206
|
createAuditTrail
|
|
207
207
|
};
|
|
208
|
-
//# sourceMappingURL=chunk-
|
|
208
|
+
//# sourceMappingURL=chunk-OOGKQTDN.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
} from "./chunk-6T3EPABN.js";
|
|
6
6
|
import {
|
|
7
7
|
SessionMemory
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OCFY37TZ.js";
|
|
9
9
|
import {
|
|
10
10
|
StatsOnlyAdapter,
|
|
11
11
|
ensureSharedMemoryRegistry
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
} from "./chunk-KSQSWEFH.js";
|
|
16
16
|
import {
|
|
17
17
|
generateId
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-AS4B7KCT.js";
|
|
19
19
|
import {
|
|
20
20
|
ErrorCode,
|
|
21
21
|
NexusError,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
getTimeProvider,
|
|
29
29
|
ok,
|
|
30
30
|
setSharedMobiMemDbPathResolver
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-6OPLDOJG.js";
|
|
32
32
|
import {
|
|
33
33
|
nexusDataPath
|
|
34
34
|
} from "./chunk-OGHEKPLD.js";
|
|
@@ -5095,6 +5095,20 @@ var ToolMemoryManager = class {
|
|
|
5095
5095
|
getRecentErrorSolutions(limit) {
|
|
5096
5096
|
return this.memory.getRecentErrorSolutions(limit);
|
|
5097
5097
|
}
|
|
5098
|
+
/**
|
|
5099
|
+
* Live session counts for `memory_stats` (#5269).
|
|
5100
|
+
*
|
|
5101
|
+
* These were reported as a hardcoded `0` beside `session: true`, so a caller
|
|
5102
|
+
* read "session memory is healthy and holds 0 tasks, 0 errors" — the backend
|
|
5103
|
+
* assertion corroborating the fabricated zeros. The episode has held both all
|
|
5104
|
+
* along; nothing exposed them before `endSession`.
|
|
5105
|
+
*/
|
|
5106
|
+
getSessionCounts() {
|
|
5107
|
+
return {
|
|
5108
|
+
tasksCount: this.memory.getCurrentSessionTasks().length,
|
|
5109
|
+
errorsCount: this.memory.getCurrentSessionErrors().length
|
|
5110
|
+
};
|
|
5111
|
+
}
|
|
5098
5112
|
/**
|
|
5099
5113
|
* Retrieve past learnings relevant to a task description.
|
|
5100
5114
|
* Searches by keywords, falls back to highest-confidence learnings.
|
|
@@ -5608,4 +5622,4 @@ export {
|
|
|
5608
5622
|
reinitializeMemoryBackends,
|
|
5609
5623
|
ToolMemoryManager
|
|
5610
5624
|
};
|
|
5611
|
-
//# sourceMappingURL=chunk-
|
|
5625
|
+
//# sourceMappingURL=chunk-P7IHQSCC.js.map
|