@mastra/server 1.38.0-alpha.9 → 1.39.0-alpha.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/CHANGELOG.md +267 -0
- package/dist/_types/@mastra_schema-compat/dist/_types/@internal_ai-sdk-v5/dist/index.d.ts +11 -8
- package/dist/{api-schema-manifest-E3RU6MLF.cjs → api-schema-manifest-ALHYYJMN.cjs} +4 -4
- package/dist/{api-schema-manifest-E3RU6MLF.cjs.map → api-schema-manifest-ALHYYJMN.cjs.map} +1 -1
- package/dist/{api-schema-manifest-DNC2KIKD.js → api-schema-manifest-PQ6VZTB3.js} +3 -3
- package/dist/{api-schema-manifest-DNC2KIKD.js.map → api-schema-manifest-PQ6VZTB3.js.map} +1 -1
- package/dist/chunk-2ONW75MN.cjs +477 -0
- package/dist/chunk-2ONW75MN.cjs.map +1 -0
- package/dist/{chunk-CJMJQR2K.cjs → chunk-3APAH25G.cjs} +4 -4
- package/dist/{chunk-CJMJQR2K.cjs.map → chunk-3APAH25G.cjs.map} +1 -1
- package/dist/{chunk-PXYR3D6L.cjs → chunk-3D55EABW.cjs} +3 -9
- package/dist/chunk-3D55EABW.cjs.map +1 -0
- package/dist/{chunk-WXJSYUBX.cjs → chunk-3KXE2KXE.cjs} +4 -4
- package/dist/{chunk-WXJSYUBX.cjs.map → chunk-3KXE2KXE.cjs.map} +1 -1
- package/dist/{chunk-APV6QKRZ.cjs → chunk-4W7KQRF5.cjs} +28 -28
- package/dist/{chunk-APV6QKRZ.cjs.map → chunk-4W7KQRF5.cjs.map} +1 -1
- package/dist/{chunk-L33BLLID.cjs → chunk-544IXGBW.cjs} +168 -166
- package/dist/chunk-544IXGBW.cjs.map +1 -0
- package/dist/{chunk-VH6QCEN7.cjs → chunk-5DDUXRAY.cjs} +102 -102
- package/dist/{chunk-VH6QCEN7.cjs.map → chunk-5DDUXRAY.cjs.map} +1 -1
- package/dist/{chunk-DNKTFFOV.cjs → chunk-5WB7PKHN.cjs} +4 -4
- package/dist/{chunk-DNKTFFOV.cjs.map → chunk-5WB7PKHN.cjs.map} +1 -1
- package/dist/{chunk-ODIMB6T6.cjs → chunk-6MP52DMQ.cjs} +7 -7
- package/dist/{chunk-ODIMB6T6.cjs.map → chunk-6MP52DMQ.cjs.map} +1 -1
- package/dist/{chunk-3LUN33E7.cjs → chunk-76ONC2XD.cjs} +85 -19
- package/dist/chunk-76ONC2XD.cjs.map +1 -0
- package/dist/{chunk-TLMAHJTC.cjs → chunk-77IY4RTO.cjs} +16 -16
- package/dist/{chunk-TLMAHJTC.cjs.map → chunk-77IY4RTO.cjs.map} +1 -1
- package/dist/{chunk-5PCUNLFX.js → chunk-AEH5OCIH.js} +3 -3
- package/dist/{chunk-5PCUNLFX.js.map → chunk-AEH5OCIH.js.map} +1 -1
- package/dist/{chunk-WADS7CD7.js → chunk-AW5INHG7.js} +4 -4
- package/dist/{chunk-WADS7CD7.js.map → chunk-AW5INHG7.js.map} +1 -1
- package/dist/{chunk-P7FVOCQB.cjs → chunk-AX6REP5O.cjs} +4 -4
- package/dist/{chunk-P7FVOCQB.cjs.map → chunk-AX6REP5O.cjs.map} +1 -1
- package/dist/{chunk-4DVNH3KJ.js → chunk-B5NMA52D.js} +4 -4
- package/dist/{chunk-4DVNH3KJ.js.map → chunk-B5NMA52D.js.map} +1 -1
- package/dist/{chunk-4T6DC425.js → chunk-CBG6LUEW.js} +3 -3
- package/dist/{chunk-4T6DC425.js.map → chunk-CBG6LUEW.js.map} +1 -1
- package/dist/{chunk-SDBN3DIS.cjs → chunk-D5M3VILP.cjs} +26 -26
- package/dist/{chunk-SDBN3DIS.cjs.map → chunk-D5M3VILP.cjs.map} +1 -1
- package/dist/{chunk-Z2ZMHHQW.js → chunk-E7AEYMKH.js} +3 -3
- package/dist/{chunk-Z2ZMHHQW.js.map → chunk-E7AEYMKH.js.map} +1 -1
- package/dist/{chunk-J6OD53OV.js → chunk-ESJTIVEQ.js} +12 -3
- package/dist/chunk-ESJTIVEQ.js.map +1 -0
- package/dist/{chunk-T2FBYRYD.cjs → chunk-ET7KSUVJ.cjs} +12 -2
- package/dist/chunk-ET7KSUVJ.cjs.map +1 -0
- package/dist/{chunk-T6IXA4ZQ.js → chunk-FQCCUWMS.js} +3 -3
- package/dist/{chunk-T6IXA4ZQ.js.map → chunk-FQCCUWMS.js.map} +1 -1
- package/dist/{chunk-QRIHD5UO.js → chunk-G2CL5JMK.js} +5 -5
- package/dist/{chunk-QRIHD5UO.js.map → chunk-G2CL5JMK.js.map} +1 -1
- package/dist/{chunk-XDOMY4VL.cjs → chunk-GAERIPY2.cjs} +5 -5
- package/dist/{chunk-XDOMY4VL.cjs.map → chunk-GAERIPY2.cjs.map} +1 -1
- package/dist/{chunk-QM3NYDZZ.js → chunk-HEBNJ6KJ.js} +4 -4
- package/dist/{chunk-QM3NYDZZ.js.map → chunk-HEBNJ6KJ.js.map} +1 -1
- package/dist/{chunk-AT5ZCHIV.cjs → chunk-HGREXGI2.cjs} +3 -3
- package/dist/{chunk-AT5ZCHIV.cjs.map → chunk-HGREXGI2.cjs.map} +1 -1
- package/dist/{chunk-RBONVWGZ.js → chunk-HJVMQDSZ.js} +9 -3
- package/dist/chunk-HJVMQDSZ.js.map +1 -0
- package/dist/{chunk-MFYZWOKE.cjs → chunk-IGE7NPFH.cjs} +5 -5
- package/dist/{chunk-MFYZWOKE.cjs.map → chunk-IGE7NPFH.cjs.map} +1 -1
- package/dist/{chunk-UFYCA27U.js → chunk-IONXSX77.js} +5 -3
- package/dist/chunk-IONXSX77.js.map +1 -0
- package/dist/{chunk-RTYOFB6W.cjs → chunk-IU3ZRZSG.cjs} +5 -3
- package/dist/chunk-IU3ZRZSG.cjs.map +1 -0
- package/dist/{chunk-76I5G5W5.js → chunk-JMEMSVJ5.js} +4 -9
- package/dist/chunk-JMEMSVJ5.js.map +1 -0
- package/dist/{chunk-56F2IRK3.js → chunk-K6XESXNQ.js} +3 -3
- package/dist/{chunk-56F2IRK3.js.map → chunk-K6XESXNQ.js.map} +1 -1
- package/dist/{chunk-43KD3CRE.cjs → chunk-LBVQK4LO.cjs} +16 -5
- package/dist/chunk-LBVQK4LO.cjs.map +1 -0
- package/dist/{chunk-IJFPP2XB.js → chunk-LNBKA6IA.js} +69 -4
- package/dist/chunk-LNBKA6IA.js.map +1 -0
- package/dist/{chunk-BKYFKSJI.js → chunk-LPYCF5B2.js} +3 -3
- package/dist/{chunk-BKYFKSJI.js.map → chunk-LPYCF5B2.js.map} +1 -1
- package/dist/{chunk-DRXZDKLU.js → chunk-LQQCTO6D.js} +3 -3
- package/dist/{chunk-DRXZDKLU.js.map → chunk-LQQCTO6D.js.map} +1 -1
- package/dist/{chunk-HX5BGP6D.cjs → chunk-LYF4J3JE.cjs} +17 -17
- package/dist/{chunk-HX5BGP6D.cjs.map → chunk-LYF4J3JE.cjs.map} +1 -1
- package/dist/chunk-NQLS4Z3W.js +472 -0
- package/dist/chunk-NQLS4Z3W.js.map +1 -0
- package/dist/{chunk-KSZXXQHZ.js → chunk-NTE3Q3BA.js} +3 -3
- package/dist/{chunk-KSZXXQHZ.js.map → chunk-NTE3Q3BA.js.map} +1 -1
- package/dist/{chunk-5FPJ4RT4.js → chunk-OCWY55IQ.js} +3 -3
- package/dist/{chunk-5FPJ4RT4.js.map → chunk-OCWY55IQ.js.map} +1 -1
- package/dist/{chunk-GPAQ47NG.cjs → chunk-QVFQUBC7.cjs} +9 -3
- package/dist/chunk-QVFQUBC7.cjs.map +1 -0
- package/dist/{chunk-7GOHECZP.js → chunk-SEAEQN2H.js} +3 -3
- package/dist/{chunk-7GOHECZP.js.map → chunk-SEAEQN2H.js.map} +1 -1
- package/dist/{chunk-6XSS54BL.cjs → chunk-THXUZHS6.cjs} +7 -7
- package/dist/{chunk-6XSS54BL.cjs.map → chunk-THXUZHS6.cjs.map} +1 -1
- package/dist/{chunk-M7HLT2GO.js → chunk-UOQHTFYI.js} +3 -3
- package/dist/{chunk-M7HLT2GO.js.map → chunk-UOQHTFYI.js.map} +1 -1
- package/dist/{chunk-5SK4SJJH.js → chunk-V4G7MSFL.js} +3 -3
- package/dist/{chunk-5SK4SJJH.js.map → chunk-V4G7MSFL.js.map} +1 -1
- package/dist/{chunk-XB6H6LOM.js → chunk-VSB4S6R5.js} +3 -3
- package/dist/{chunk-XB6H6LOM.js.map → chunk-VSB4S6R5.js.map} +1 -1
- package/dist/{chunk-4DGDQWQQ.cjs → chunk-VWFP6O2W.cjs} +14 -14
- package/dist/{chunk-4DGDQWQQ.cjs.map → chunk-VWFP6O2W.cjs.map} +1 -1
- package/dist/{chunk-ZNMKBPTN.cjs → chunk-WUPBIK5J.cjs} +15 -15
- package/dist/{chunk-ZNMKBPTN.cjs.map → chunk-WUPBIK5J.cjs.map} +1 -1
- package/dist/{chunk-F27R55RI.cjs → chunk-XGFN7MMF.cjs} +4 -4
- package/dist/{chunk-F27R55RI.cjs.map → chunk-XGFN7MMF.cjs.map} +1 -1
- package/dist/{chunk-YW252K6H.js → chunk-XNGC2C6Z.js} +20 -18
- package/dist/chunk-XNGC2C6Z.js.map +1 -0
- package/dist/{chunk-7GSR7HQ2.js → chunk-Y5CIOSHU.js} +4 -4
- package/dist/{chunk-7GSR7HQ2.js.map → chunk-Y5CIOSHU.js.map} +1 -1
- package/dist/{chunk-OJNVSXOF.js → chunk-YH4WGIEH.js} +16 -5
- package/dist/chunk-YH4WGIEH.js.map +1 -0
- package/dist/{chunk-NSXV3FWO.cjs → chunk-ZIWTQGJV.cjs} +20 -20
- package/dist/{chunk-NSXV3FWO.cjs.map → chunk-ZIWTQGJV.cjs.map} +1 -1
- package/dist/constants-DVRTNEGY-A5OAGF3M.js +3 -0
- package/dist/{constants-SPS7MR4D-YRZDDIPO.js.map → constants-DVRTNEGY-A5OAGF3M.js.map} +1 -1
- package/dist/{constants-SPS7MR4D-ZMHAFWSH.cjs → constants-DVRTNEGY-ZGCNETZ3.cjs} +8 -8
- package/dist/{constants-SPS7MR4D-ZMHAFWSH.cjs.map → constants-DVRTNEGY-ZGCNETZ3.cjs.map} +1 -1
- package/dist/{dist-HIWM6H43.js → dist-LWX2CRMH.js} +304 -125
- package/dist/dist-LWX2CRMH.js.map +1 -0
- package/dist/{dist-LZYJXHUM.cjs → dist-QFLLP7OJ.cjs} +336 -157
- package/dist/dist-QFLLP7OJ.cjs.map +1 -0
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{observational-memory-TJFOX3YN-A2QE2E3I.cjs → observational-memory-G52HNRHE-73KIWQ2G.cjs} +31 -31
- package/dist/{observational-memory-TJFOX3YN-A2QE2E3I.cjs.map → observational-memory-G52HNRHE-73KIWQ2G.cjs.map} +1 -1
- package/dist/{observational-memory-TJFOX3YN-P3KG2OXA.js → observational-memory-G52HNRHE-RHA4V77M.js} +4 -4
- package/dist/{observational-memory-TJFOX3YN-P3KG2OXA.js.map → observational-memory-G52HNRHE-RHA4V77M.js.map} +1 -1
- package/dist/server/auth/helpers.d.ts +3 -4
- package/dist/server/auth/helpers.d.ts.map +1 -1
- package/dist/server/auth/index.cjs +15 -15
- package/dist/server/auth/index.js +1 -1
- package/dist/server/handlers/a2a.cjs +14 -14
- package/dist/server/handlers/a2a.js +1 -1
- package/dist/server/handlers/agent-builder.cjs +17 -17
- package/dist/server/handlers/agent-builder.js +1 -1
- package/dist/server/handlers/agent-versions.cjs +8 -8
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +45 -45
- package/dist/server/handlers/agents.d.ts +4 -0
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +1 -1
- package/dist/server/handlers/auth.cjs +12 -12
- package/dist/server/handlers/auth.js +1 -1
- package/dist/server/handlers/conversations.cjs +5 -5
- package/dist/server/handlers/conversations.js +1 -1
- package/dist/server/handlers/memory.cjs +27 -27
- package/dist/server/handlers/memory.d.ts.map +1 -1
- package/dist/server/handlers/memory.js +1 -1
- package/dist/server/handlers/responses.cjs +4 -4
- package/dist/server/handlers/responses.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +8 -8
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/scores.cjs +7 -7
- package/dist/server/handlers/scores.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +3 -3
- package/dist/server/handlers/stored-agent-favorites.js +1 -1
- package/dist/server/handlers/stored-agents.cjs +12 -8
- package/dist/server/handlers/stored-agents.d.ts +26 -0
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +1 -1
- package/dist/server/handlers/stored-scorers.cjs +6 -6
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/system.cjs +3 -3
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tools.cjs +6 -6
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/workflows.cjs +27 -27
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/handlers.cjs +18 -18
- package/dist/server/handlers.js +9 -9
- package/dist/server/schemas/agents.d.ts +2 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +119 -115
- package/dist/server/schemas/index.js +5 -5
- package/dist/server/schemas/stored-agents.d.ts +17 -0
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +23 -16
- package/dist/server/server-adapter/index.cjs.map +1 -1
- package/dist/server/server-adapter/index.d.ts.map +1 -1
- package/dist/server/server-adapter/index.js +11 -4
- package/dist/server/server-adapter/index.js.map +1 -1
- package/dist/server/server-adapter/routes/stored-agents.d.ts +2 -1
- package/dist/server/server-adapter/routes/stored-agents.d.ts.map +1 -1
- package/dist/working-memory-state-J7ASTNXX-JNDYMEET.js +3 -0
- package/dist/working-memory-state-J7ASTNXX-JNDYMEET.js.map +1 -0
- package/dist/working-memory-state-J7ASTNXX-WEIO7C67.cjs +24 -0
- package/dist/working-memory-state-J7ASTNXX-WEIO7C67.cjs.map +1 -0
- package/package.json +9 -9
- package/dist/chunk-3LUN33E7.cjs.map +0 -1
- package/dist/chunk-43KD3CRE.cjs.map +0 -1
- package/dist/chunk-76I5G5W5.js.map +0 -1
- package/dist/chunk-GPAQ47NG.cjs.map +0 -1
- package/dist/chunk-IJFPP2XB.js.map +0 -1
- package/dist/chunk-J6OD53OV.js.map +0 -1
- package/dist/chunk-L33BLLID.cjs.map +0 -1
- package/dist/chunk-OJNVSXOF.js.map +0 -1
- package/dist/chunk-PXYR3D6L.cjs.map +0 -1
- package/dist/chunk-RBONVWGZ.js.map +0 -1
- package/dist/chunk-RTYOFB6W.cjs.map +0 -1
- package/dist/chunk-T2FBYRYD.cjs.map +0 -1
- package/dist/chunk-UFYCA27U.js.map +0 -1
- package/dist/chunk-YW252K6H.js.map +0 -1
- package/dist/constants-SPS7MR4D-YRZDDIPO.js +0 -3
- package/dist/dist-HIWM6H43.js.map +0 -1
- package/dist/dist-LZYJXHUM.cjs.map +0 -1
|
@@ -0,0 +1,477 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var crypto = require('crypto');
|
|
4
|
+
|
|
5
|
+
// ../memory/dist/chunk-WCGXQIEN.js
|
|
6
|
+
|
|
7
|
+
// ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.3/c2a1d77e3f595587fc71d833e2045f3b897998b15167d647e8b9eeaae17f7bb2/node_modules/diff/libesm/diff/base.js
|
|
8
|
+
var Diff = class {
|
|
9
|
+
diff(oldStr, newStr, options = {}) {
|
|
10
|
+
let callback;
|
|
11
|
+
if (typeof options === "function") {
|
|
12
|
+
callback = options;
|
|
13
|
+
options = {};
|
|
14
|
+
} else if ("callback" in options) {
|
|
15
|
+
callback = options.callback;
|
|
16
|
+
}
|
|
17
|
+
const oldString = this.castInput(oldStr, options);
|
|
18
|
+
const newString = this.castInput(newStr, options);
|
|
19
|
+
const oldTokens = this.removeEmpty(this.tokenize(oldString, options));
|
|
20
|
+
const newTokens = this.removeEmpty(this.tokenize(newString, options));
|
|
21
|
+
return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);
|
|
22
|
+
}
|
|
23
|
+
diffWithOptionsObj(oldTokens, newTokens, options, callback) {
|
|
24
|
+
var _a;
|
|
25
|
+
const done = (value) => {
|
|
26
|
+
value = this.postProcess(value, options);
|
|
27
|
+
if (callback) {
|
|
28
|
+
setTimeout(function() {
|
|
29
|
+
callback(value);
|
|
30
|
+
}, 0);
|
|
31
|
+
return void 0;
|
|
32
|
+
} else {
|
|
33
|
+
return value;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const newLen = newTokens.length, oldLen = oldTokens.length;
|
|
37
|
+
let editLength = 1;
|
|
38
|
+
let maxEditLength = newLen + oldLen;
|
|
39
|
+
if (options.maxEditLength != null) {
|
|
40
|
+
maxEditLength = Math.min(maxEditLength, options.maxEditLength);
|
|
41
|
+
}
|
|
42
|
+
const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;
|
|
43
|
+
const abortAfterTimestamp = Date.now() + maxExecutionTime;
|
|
44
|
+
const bestPath = [{ oldPos: -1, lastComponent: void 0 }];
|
|
45
|
+
let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);
|
|
46
|
+
if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {
|
|
47
|
+
return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));
|
|
48
|
+
}
|
|
49
|
+
let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;
|
|
50
|
+
const execEditLength = () => {
|
|
51
|
+
for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {
|
|
52
|
+
let basePath;
|
|
53
|
+
const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];
|
|
54
|
+
if (removePath) {
|
|
55
|
+
bestPath[diagonalPath - 1] = void 0;
|
|
56
|
+
}
|
|
57
|
+
let canAdd = false;
|
|
58
|
+
if (addPath) {
|
|
59
|
+
const addPathNewPos = addPath.oldPos - diagonalPath;
|
|
60
|
+
canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;
|
|
61
|
+
}
|
|
62
|
+
const canRemove = removePath && removePath.oldPos + 1 < oldLen;
|
|
63
|
+
if (!canAdd && !canRemove) {
|
|
64
|
+
bestPath[diagonalPath] = void 0;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (!canRemove || canAdd && removePath.oldPos < addPath.oldPos) {
|
|
68
|
+
basePath = this.addToPath(addPath, true, false, 0, options);
|
|
69
|
+
} else {
|
|
70
|
+
basePath = this.addToPath(removePath, false, true, 1, options);
|
|
71
|
+
}
|
|
72
|
+
newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);
|
|
73
|
+
if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {
|
|
74
|
+
return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;
|
|
75
|
+
} else {
|
|
76
|
+
bestPath[diagonalPath] = basePath;
|
|
77
|
+
if (basePath.oldPos + 1 >= oldLen) {
|
|
78
|
+
maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);
|
|
79
|
+
}
|
|
80
|
+
if (newPos + 1 >= newLen) {
|
|
81
|
+
minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
editLength++;
|
|
86
|
+
};
|
|
87
|
+
if (callback) {
|
|
88
|
+
(function exec() {
|
|
89
|
+
setTimeout(function() {
|
|
90
|
+
if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {
|
|
91
|
+
return callback(void 0);
|
|
92
|
+
}
|
|
93
|
+
if (!execEditLength()) {
|
|
94
|
+
exec();
|
|
95
|
+
}
|
|
96
|
+
}, 0);
|
|
97
|
+
})();
|
|
98
|
+
} else {
|
|
99
|
+
while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {
|
|
100
|
+
const ret = execEditLength();
|
|
101
|
+
if (ret) {
|
|
102
|
+
return ret;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
addToPath(path, added, removed, oldPosInc, options) {
|
|
108
|
+
const last = path.lastComponent;
|
|
109
|
+
if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {
|
|
110
|
+
return {
|
|
111
|
+
oldPos: path.oldPos + oldPosInc,
|
|
112
|
+
lastComponent: { count: last.count + 1, added, removed, previousComponent: last.previousComponent }
|
|
113
|
+
};
|
|
114
|
+
} else {
|
|
115
|
+
return {
|
|
116
|
+
oldPos: path.oldPos + oldPosInc,
|
|
117
|
+
lastComponent: { count: 1, added, removed, previousComponent: last }
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {
|
|
122
|
+
const newLen = newTokens.length, oldLen = oldTokens.length;
|
|
123
|
+
let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;
|
|
124
|
+
while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {
|
|
125
|
+
newPos++;
|
|
126
|
+
oldPos++;
|
|
127
|
+
commonCount++;
|
|
128
|
+
if (options.oneChangePerToken) {
|
|
129
|
+
basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
if (commonCount && !options.oneChangePerToken) {
|
|
133
|
+
basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };
|
|
134
|
+
}
|
|
135
|
+
basePath.oldPos = oldPos;
|
|
136
|
+
return newPos;
|
|
137
|
+
}
|
|
138
|
+
equals(left, right, options) {
|
|
139
|
+
if (options.comparator) {
|
|
140
|
+
return options.comparator(left, right);
|
|
141
|
+
} else {
|
|
142
|
+
return left === right || !!options.ignoreCase && left.toLowerCase() === right.toLowerCase();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
removeEmpty(array) {
|
|
146
|
+
const ret = [];
|
|
147
|
+
for (let i = 0; i < array.length; i++) {
|
|
148
|
+
if (array[i]) {
|
|
149
|
+
ret.push(array[i]);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return ret;
|
|
153
|
+
}
|
|
154
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
155
|
+
castInput(value, options) {
|
|
156
|
+
return value;
|
|
157
|
+
}
|
|
158
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
159
|
+
tokenize(value, options) {
|
|
160
|
+
return Array.from(value);
|
|
161
|
+
}
|
|
162
|
+
join(chars) {
|
|
163
|
+
return chars.join("");
|
|
164
|
+
}
|
|
165
|
+
postProcess(changeObjects, options) {
|
|
166
|
+
return changeObjects;
|
|
167
|
+
}
|
|
168
|
+
get useLongestToken() {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
buildValues(lastComponent, newTokens, oldTokens) {
|
|
172
|
+
const components = [];
|
|
173
|
+
let nextComponent;
|
|
174
|
+
while (lastComponent) {
|
|
175
|
+
components.push(lastComponent);
|
|
176
|
+
nextComponent = lastComponent.previousComponent;
|
|
177
|
+
delete lastComponent.previousComponent;
|
|
178
|
+
lastComponent = nextComponent;
|
|
179
|
+
}
|
|
180
|
+
components.reverse();
|
|
181
|
+
const componentLen = components.length;
|
|
182
|
+
let componentPos = 0, newPos = 0, oldPos = 0;
|
|
183
|
+
for (; componentPos < componentLen; componentPos++) {
|
|
184
|
+
const component = components[componentPos];
|
|
185
|
+
if (!component.removed) {
|
|
186
|
+
if (!component.added && this.useLongestToken) {
|
|
187
|
+
let value = newTokens.slice(newPos, newPos + component.count);
|
|
188
|
+
value = value.map(function(value2, i) {
|
|
189
|
+
const oldValue = oldTokens[oldPos + i];
|
|
190
|
+
return oldValue.length > value2.length ? oldValue : value2;
|
|
191
|
+
});
|
|
192
|
+
component.value = this.join(value);
|
|
193
|
+
} else {
|
|
194
|
+
component.value = this.join(newTokens.slice(newPos, newPos + component.count));
|
|
195
|
+
}
|
|
196
|
+
newPos += component.count;
|
|
197
|
+
if (!component.added) {
|
|
198
|
+
oldPos += component.count;
|
|
199
|
+
}
|
|
200
|
+
} else {
|
|
201
|
+
component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));
|
|
202
|
+
oldPos += component.count;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return components;
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
// ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.3/c2a1d77e3f595587fc71d833e2045f3b897998b15167d647e8b9eeaae17f7bb2/node_modules/diff/libesm/diff/line.js
|
|
210
|
+
var LineDiff = class extends Diff {
|
|
211
|
+
constructor() {
|
|
212
|
+
super(...arguments);
|
|
213
|
+
this.tokenize = tokenize;
|
|
214
|
+
}
|
|
215
|
+
equals(left, right, options) {
|
|
216
|
+
if (options.ignoreWhitespace) {
|
|
217
|
+
if (!options.newlineIsToken || !left.includes("\n")) {
|
|
218
|
+
left = left.trim();
|
|
219
|
+
}
|
|
220
|
+
if (!options.newlineIsToken || !right.includes("\n")) {
|
|
221
|
+
right = right.trim();
|
|
222
|
+
}
|
|
223
|
+
} else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {
|
|
224
|
+
if (left.endsWith("\n")) {
|
|
225
|
+
left = left.slice(0, -1);
|
|
226
|
+
}
|
|
227
|
+
if (right.endsWith("\n")) {
|
|
228
|
+
right = right.slice(0, -1);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return super.equals(left, right, options);
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
var lineDiff = new LineDiff();
|
|
235
|
+
function diffLines(oldStr, newStr, options) {
|
|
236
|
+
return lineDiff.diff(oldStr, newStr, options);
|
|
237
|
+
}
|
|
238
|
+
function tokenize(value, options) {
|
|
239
|
+
if (options.stripTrailingCr) {
|
|
240
|
+
value = value.replace(/\r\n/g, "\n");
|
|
241
|
+
}
|
|
242
|
+
const retLines = [], linesAndNewlines = value.split(/(\n|\r\n)/);
|
|
243
|
+
if (!linesAndNewlines[linesAndNewlines.length - 1]) {
|
|
244
|
+
linesAndNewlines.pop();
|
|
245
|
+
}
|
|
246
|
+
for (let i = 0; i < linesAndNewlines.length; i++) {
|
|
247
|
+
const line = linesAndNewlines[i];
|
|
248
|
+
if (i % 2 && !options.newlineIsToken) {
|
|
249
|
+
retLines[retLines.length - 1] += line;
|
|
250
|
+
} else {
|
|
251
|
+
retLines.push(line);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return retLines;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// ../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.3/c2a1d77e3f595587fc71d833e2045f3b897998b15167d647e8b9eeaae17f7bb2/node_modules/diff/libesm/patch/create.js
|
|
258
|
+
function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
|
|
259
|
+
let optionsObj;
|
|
260
|
+
if (!options) {
|
|
261
|
+
optionsObj = {};
|
|
262
|
+
} else if (typeof options === "function") {
|
|
263
|
+
optionsObj = { callback: options };
|
|
264
|
+
} else {
|
|
265
|
+
optionsObj = options;
|
|
266
|
+
}
|
|
267
|
+
if (typeof optionsObj.context === "undefined") {
|
|
268
|
+
optionsObj.context = 4;
|
|
269
|
+
}
|
|
270
|
+
const context = optionsObj.context;
|
|
271
|
+
if (optionsObj.newlineIsToken) {
|
|
272
|
+
throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");
|
|
273
|
+
}
|
|
274
|
+
if (!optionsObj.callback) {
|
|
275
|
+
return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));
|
|
276
|
+
} else {
|
|
277
|
+
const { callback } = optionsObj;
|
|
278
|
+
diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {
|
|
279
|
+
const patch = diffLinesResultToPatch(diff);
|
|
280
|
+
callback(patch);
|
|
281
|
+
} }));
|
|
282
|
+
}
|
|
283
|
+
function diffLinesResultToPatch(diff) {
|
|
284
|
+
if (!diff) {
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
diff.push({ value: "", lines: [] });
|
|
288
|
+
function contextLines(lines) {
|
|
289
|
+
return lines.map(function(entry) {
|
|
290
|
+
return " " + entry;
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
const hunks = [];
|
|
294
|
+
let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;
|
|
295
|
+
for (let i = 0; i < diff.length; i++) {
|
|
296
|
+
const current = diff[i], lines = current.lines || splitLines(current.value);
|
|
297
|
+
current.lines = lines;
|
|
298
|
+
if (current.added || current.removed) {
|
|
299
|
+
if (!oldRangeStart) {
|
|
300
|
+
const prev = diff[i - 1];
|
|
301
|
+
oldRangeStart = oldLine;
|
|
302
|
+
newRangeStart = newLine;
|
|
303
|
+
if (prev) {
|
|
304
|
+
curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];
|
|
305
|
+
oldRangeStart -= curRange.length;
|
|
306
|
+
newRangeStart -= curRange.length;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
for (const line of lines) {
|
|
310
|
+
curRange.push((current.added ? "+" : "-") + line);
|
|
311
|
+
}
|
|
312
|
+
if (current.added) {
|
|
313
|
+
newLine += lines.length;
|
|
314
|
+
} else {
|
|
315
|
+
oldLine += lines.length;
|
|
316
|
+
}
|
|
317
|
+
} else {
|
|
318
|
+
if (oldRangeStart) {
|
|
319
|
+
if (lines.length <= context * 2 && i < diff.length - 2) {
|
|
320
|
+
for (const line of contextLines(lines)) {
|
|
321
|
+
curRange.push(line);
|
|
322
|
+
}
|
|
323
|
+
} else {
|
|
324
|
+
const contextSize = Math.min(lines.length, context);
|
|
325
|
+
for (const line of contextLines(lines.slice(0, contextSize))) {
|
|
326
|
+
curRange.push(line);
|
|
327
|
+
}
|
|
328
|
+
const hunk = {
|
|
329
|
+
oldStart: oldRangeStart,
|
|
330
|
+
oldLines: oldLine - oldRangeStart + contextSize,
|
|
331
|
+
newStart: newRangeStart,
|
|
332
|
+
newLines: newLine - newRangeStart + contextSize,
|
|
333
|
+
lines: curRange
|
|
334
|
+
};
|
|
335
|
+
hunks.push(hunk);
|
|
336
|
+
oldRangeStart = 0;
|
|
337
|
+
newRangeStart = 0;
|
|
338
|
+
curRange = [];
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
oldLine += lines.length;
|
|
342
|
+
newLine += lines.length;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
for (const hunk of hunks) {
|
|
346
|
+
for (let i = 0; i < hunk.lines.length; i++) {
|
|
347
|
+
if (hunk.lines[i].endsWith("\n")) {
|
|
348
|
+
hunk.lines[i] = hunk.lines[i].slice(0, -1);
|
|
349
|
+
} else {
|
|
350
|
+
hunk.lines.splice(i + 1, 0, "\");
|
|
351
|
+
i++;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return {
|
|
356
|
+
oldFileName,
|
|
357
|
+
newFileName,
|
|
358
|
+
oldHeader,
|
|
359
|
+
newHeader,
|
|
360
|
+
hunks
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
function splitLines(text) {
|
|
365
|
+
const hasTrailingNl = text.endsWith("\n");
|
|
366
|
+
const result = text.split("\n").map((line) => line + "\n");
|
|
367
|
+
if (hasTrailingNl) {
|
|
368
|
+
result.pop();
|
|
369
|
+
} else {
|
|
370
|
+
result.push(result.pop().slice(0, -1));
|
|
371
|
+
}
|
|
372
|
+
return result;
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// ../memory/dist/chunk-WCGXQIEN.js
|
|
376
|
+
var WORKING_MEMORY_STATE_ID = "working-memory";
|
|
377
|
+
var WORKING_MEMORY_STATE_PROCESSOR_ID = "working-memory-state";
|
|
378
|
+
var WorkingMemoryStateProcessor = class {
|
|
379
|
+
constructor(memory, memoryConfig) {
|
|
380
|
+
this.memory = memory;
|
|
381
|
+
this.memoryConfig = memoryConfig;
|
|
382
|
+
}
|
|
383
|
+
memory;
|
|
384
|
+
memoryConfig;
|
|
385
|
+
id = WORKING_MEMORY_STATE_PROCESSOR_ID;
|
|
386
|
+
stateId = WORKING_MEMORY_STATE_ID;
|
|
387
|
+
async computeStateSignal(args) {
|
|
388
|
+
const template = await this.memory.getWorkingMemoryTemplate({ memoryConfig: this.memoryConfig });
|
|
389
|
+
if (!template) return;
|
|
390
|
+
const data = await this.memory.getWorkingMemory({
|
|
391
|
+
threadId: args.threadId,
|
|
392
|
+
resourceId: args.resourceId,
|
|
393
|
+
memoryConfig: this.memoryConfig
|
|
394
|
+
});
|
|
395
|
+
const contents = data?.trim();
|
|
396
|
+
if (!contents) return;
|
|
397
|
+
const cacheKey = stableWorkingMemoryCacheKey({ format: template.format, data: contents });
|
|
398
|
+
const shouldMakeSnapshot = !args.contextWindow.hasSnapshot;
|
|
399
|
+
if (args.tracking?.currentCacheKey === cacheKey && !shouldMakeSnapshot) return;
|
|
400
|
+
const mergedConfig = this.memory.getMergedThreadConfig(this.memoryConfig);
|
|
401
|
+
const scope = mergedConfig.workingMemory?.scope ?? "resource";
|
|
402
|
+
const deltaCandidate = template.format === "markdown" && !shouldMakeSnapshot ? buildMarkdownDelta({
|
|
403
|
+
lastSnapshot: args.lastSnapshot,
|
|
404
|
+
deltasSinceSnapshot: args.deltasSinceSnapshot,
|
|
405
|
+
nextContents: contents
|
|
406
|
+
}) : void 0;
|
|
407
|
+
if (deltaCandidate) {
|
|
408
|
+
return {
|
|
409
|
+
id: WORKING_MEMORY_STATE_ID,
|
|
410
|
+
mode: "delta",
|
|
411
|
+
cacheKey,
|
|
412
|
+
tagName: "working-memory",
|
|
413
|
+
contents: deltaCandidate.contents,
|
|
414
|
+
delta: deltaCandidate.contents,
|
|
415
|
+
// Stash the full post-edit text on the signal so the next turn can
|
|
416
|
+
// diff against the most recently emitted state instead of the older
|
|
417
|
+
// snapshot. Invisible to the model.
|
|
418
|
+
value: contents,
|
|
419
|
+
attributes: {
|
|
420
|
+
format: template.format,
|
|
421
|
+
scope,
|
|
422
|
+
patch: "unified-diff"
|
|
423
|
+
}
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
return {
|
|
427
|
+
id: WORKING_MEMORY_STATE_ID,
|
|
428
|
+
mode: "snapshot",
|
|
429
|
+
cacheKey,
|
|
430
|
+
tagName: "working-memory",
|
|
431
|
+
contents,
|
|
432
|
+
// Mirror contents in value so the first delta after a snapshot has a
|
|
433
|
+
// typed prior-state to diff against without falling back to contents.
|
|
434
|
+
value: contents,
|
|
435
|
+
attributes: {
|
|
436
|
+
format: template.format,
|
|
437
|
+
scope
|
|
438
|
+
}
|
|
439
|
+
};
|
|
440
|
+
}
|
|
441
|
+
};
|
|
442
|
+
function stableWorkingMemoryCacheKey(input) {
|
|
443
|
+
const hash = crypto.createHash("sha256");
|
|
444
|
+
hash.update(input.format);
|
|
445
|
+
hash.update("\0");
|
|
446
|
+
hash.update(input.data ?? "");
|
|
447
|
+
return `sha256:${hash.digest("hex")}`;
|
|
448
|
+
}
|
|
449
|
+
function buildMarkdownDelta(args) {
|
|
450
|
+
const { lastSnapshot, deltasSinceSnapshot, nextContents } = args;
|
|
451
|
+
const latestDelta = deltasSinceSnapshot.at(-1);
|
|
452
|
+
const prior = pickStringValue(readSignalValue(latestDelta)) ?? pickStringValue(readSignalValue(lastSnapshot)) ?? (typeof lastSnapshot?.contents === "string" ? lastSnapshot.contents : void 0);
|
|
453
|
+
if (!prior) return;
|
|
454
|
+
const patch = renderHunksOnly(prior, nextContents);
|
|
455
|
+
return { contents: patch };
|
|
456
|
+
}
|
|
457
|
+
function pickStringValue(value) {
|
|
458
|
+
return typeof value === "string" ? value : void 0;
|
|
459
|
+
}
|
|
460
|
+
function readSignalValue(signal) {
|
|
461
|
+
return signal?.metadata?.value;
|
|
462
|
+
}
|
|
463
|
+
function renderHunksOnly(prior, next) {
|
|
464
|
+
const { hunks } = structuredPatch("", "", prior, next, "", "", { context: 0 });
|
|
465
|
+
return hunks.map((hunk) => {
|
|
466
|
+
const header = `@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`;
|
|
467
|
+
const lines = hunk.lines.filter((line) => !line.startsWith("\"));
|
|
468
|
+
return [header, ...lines].join("\n");
|
|
469
|
+
}).join("\n");
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
exports.WORKING_MEMORY_STATE_ID = WORKING_MEMORY_STATE_ID;
|
|
473
|
+
exports.WORKING_MEMORY_STATE_PROCESSOR_ID = WORKING_MEMORY_STATE_PROCESSOR_ID;
|
|
474
|
+
exports.WorkingMemoryStateProcessor = WorkingMemoryStateProcessor;
|
|
475
|
+
exports.stableWorkingMemoryCacheKey = stableWorkingMemoryCacheKey;
|
|
476
|
+
//# sourceMappingURL=chunk-2ONW75MN.cjs.map
|
|
477
|
+
//# sourceMappingURL=chunk-2ONW75MN.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.3/c2a1d77e3f595587fc71d833e2045f3b897998b15167d647e8b9eeaae17f7bb2/node_modules/diff/libesm/diff/base.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.3/c2a1d77e3f595587fc71d833e2045f3b897998b15167d647e8b9eeaae17f7bb2/node_modules/diff/libesm/diff/line.js","../../../../../../setup-pnpm/node_modules/.bin/store/v11/links/@/diff/8.0.3/c2a1d77e3f595587fc71d833e2045f3b897998b15167d647e8b9eeaae17f7bb2/node_modules/diff/libesm/patch/create.js","../../memory/src/processors/working-memory-state/processor.ts"],"names":["value","createHash"],"mappings":"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","file":"chunk-2ONW75MN.cjs","sourcesContent":["export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nimport { generateOptions } from '../util/params.js';\nclass LineDiff extends Diff {\n constructor() {\n super(...arguments);\n this.tokenize = tokenize;\n }\n equals(left, right, options) {\n // If we're ignoring whitespace, we need to normalise lines by stripping\n // whitespace before checking equality. (This has an annoying interaction\n // with newlineIsToken that requires special handling: if newlines get their\n // own token, then we DON'T want to trim the *newline* tokens down to empty\n // strings, since this would cause us to treat whitespace-only line content\n // as equal to a separator between lines, which would be weird and\n // inconsistent with the documented behavior of the options.)\n if (options.ignoreWhitespace) {\n if (!options.newlineIsToken || !left.includes('\\n')) {\n left = left.trim();\n }\n if (!options.newlineIsToken || !right.includes('\\n')) {\n right = right.trim();\n }\n }\n else if (options.ignoreNewlineAtEof && !options.newlineIsToken) {\n if (left.endsWith('\\n')) {\n left = left.slice(0, -1);\n }\n if (right.endsWith('\\n')) {\n right = right.slice(0, -1);\n }\n }\n return super.equals(left, right, options);\n }\n}\nexport const lineDiff = new LineDiff();\nexport function diffLines(oldStr, newStr, options) {\n return lineDiff.diff(oldStr, newStr, options);\n}\nexport function diffTrimmedLines(oldStr, newStr, options) {\n options = generateOptions(options, { ignoreWhitespace: true });\n return lineDiff.diff(oldStr, newStr, options);\n}\n// Exported standalone so it can be used from jsonDiff too.\nexport function tokenize(value, options) {\n if (options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n const retLines = [], linesAndNewlines = value.split(/(\\n|\\r\\n)/);\n // Ignore the final empty token that occurs if the string ends with a new line\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n }\n // Merge the content and line separators into single tokens\n for (let i = 0; i < linesAndNewlines.length; i++) {\n const line = linesAndNewlines[i];\n if (i % 2 && !options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n }\n else {\n retLines.push(line);\n }\n }\n return retLines;\n}\n","import { diffLines } from '../diff/line.js';\nexport const INCLUDE_HEADERS = {\n includeIndex: true,\n includeUnderline: true,\n includeFileHeaders: true\n};\nexport const FILE_HEADERS_ONLY = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: true\n};\nexport const OMIT_HEADERS = {\n includeIndex: false,\n includeUnderline: false,\n includeFileHeaders: false\n};\nexport function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n let optionsObj;\n if (!options) {\n optionsObj = {};\n }\n else if (typeof options === 'function') {\n optionsObj = { callback: options };\n }\n else {\n optionsObj = options;\n }\n if (typeof optionsObj.context === 'undefined') {\n optionsObj.context = 4;\n }\n // We copy this into its own variable to placate TypeScript, which thinks\n // optionsObj.context might be undefined in the callbacks below.\n const context = optionsObj.context;\n // @ts-expect-error (runtime check for something that is correctly a static type error)\n if (optionsObj.newlineIsToken) {\n throw new Error('newlineIsToken may not be used with patch-generation functions, only with diffing functions');\n }\n if (!optionsObj.callback) {\n return diffLinesResultToPatch(diffLines(oldStr, newStr, optionsObj));\n }\n else {\n const { callback } = optionsObj;\n diffLines(oldStr, newStr, Object.assign(Object.assign({}, optionsObj), { callback: (diff) => {\n const patch = diffLinesResultToPatch(diff);\n // TypeScript is unhappy without the cast because it does not understand that `patch` may\n // be undefined here only if `callback` is StructuredPatchCallbackAbortable:\n callback(patch);\n } }));\n }\n function diffLinesResultToPatch(diff) {\n // STEP 1: Build up the patch with no \"\\" lines and with the arrays\n // of lines containing trailing newline characters. We'll tidy up later...\n if (!diff) {\n return;\n }\n diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier\n function contextLines(lines) {\n return lines.map(function (entry) { return ' ' + entry; });\n }\n const hunks = [];\n let oldRangeStart = 0, newRangeStart = 0, curRange = [], oldLine = 1, newLine = 1;\n for (let i = 0; i < diff.length; i++) {\n const current = diff[i], lines = current.lines || splitLines(current.value);\n current.lines = lines;\n if (current.added || current.removed) {\n // If we have previous context, start with that\n if (!oldRangeStart) {\n const prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n if (prev) {\n curRange = context > 0 ? contextLines(prev.lines.slice(-context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n }\n // Output our changes\n for (const line of lines) {\n curRange.push((current.added ? '+' : '-') + line);\n }\n // Track the updated file position\n if (current.added) {\n newLine += lines.length;\n }\n else {\n oldLine += lines.length;\n }\n }\n else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= context * 2 && i < diff.length - 2) {\n // Overlapping\n for (const line of contextLines(lines)) {\n curRange.push(line);\n }\n }\n else {\n // end the range and output\n const contextSize = Math.min(lines.length, context);\n for (const line of contextLines(lines.slice(0, contextSize))) {\n curRange.push(line);\n }\n const hunk = {\n oldStart: oldRangeStart,\n oldLines: (oldLine - oldRangeStart + contextSize),\n newStart: newRangeStart,\n newLines: (newLine - newRangeStart + contextSize),\n lines: curRange\n };\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n oldLine += lines.length;\n newLine += lines.length;\n }\n }\n // Step 2: eliminate the trailing `\\n` from each line of each hunk, and, where needed, add\n // \"\\".\n for (const hunk of hunks) {\n for (let i = 0; i < hunk.lines.length; i++) {\n if (hunk.lines[i].endsWith('\\n')) {\n hunk.lines[i] = hunk.lines[i].slice(0, -1);\n }\n else {\n hunk.lines.splice(i + 1, 0, '\\\');\n i++; // Skip the line we just added, then continue iterating\n }\n }\n }\n return {\n oldFileName: oldFileName, newFileName: newFileName,\n oldHeader: oldHeader, newHeader: newHeader,\n hunks: hunks\n };\n }\n}\n/**\n * creates a unified diff patch.\n * @param patch either a single structured patch object (as returned by `structuredPatch`) or an array of them (as returned by `parsePatch`)\n */\nexport function formatPatch(patch, headerOptions) {\n if (!headerOptions) {\n headerOptions = INCLUDE_HEADERS;\n }\n if (Array.isArray(patch)) {\n if (patch.length > 1 && !headerOptions.includeFileHeaders) {\n throw new Error('Cannot omit file headers on a multi-file patch. '\n + '(The result would be unparseable; how would a tool trying to apply '\n + 'the patch know which changes are to which file?)');\n }\n return patch.map(p => formatPatch(p, headerOptions)).join('\\n');\n }\n const ret = [];\n if (headerOptions.includeIndex && patch.oldFileName == patch.newFileName) {\n ret.push('Index: ' + patch.oldFileName);\n }\n if (headerOptions.includeUnderline) {\n ret.push('===================================================================');\n }\n if (headerOptions.includeFileHeaders) {\n ret.push('--- ' + patch.oldFileName + (typeof patch.oldHeader === 'undefined' ? '' : '\\t' + patch.oldHeader));\n ret.push('+++ ' + patch.newFileName + (typeof patch.newHeader === 'undefined' ? '' : '\\t' + patch.newHeader));\n }\n for (let i = 0; i < patch.hunks.length; i++) {\n const hunk = patch.hunks[i];\n // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines\n + ' +' + hunk.newStart + ',' + hunk.newLines\n + ' @@');\n for (const line of hunk.lines) {\n ret.push(line);\n }\n }\n return ret.join('\\n') + '\\n';\n}\nexport function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (typeof options === 'function') {\n options = { callback: options };\n }\n if (!(options === null || options === void 0 ? void 0 : options.callback)) {\n const patchObj = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);\n if (!patchObj) {\n return;\n }\n return formatPatch(patchObj, options === null || options === void 0 ? void 0 : options.headerOptions);\n }\n else {\n const { callback } = options;\n structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, Object.assign(Object.assign({}, options), { callback: patchObj => {\n if (!patchObj) {\n callback(undefined);\n }\n else {\n callback(formatPatch(patchObj, options.headerOptions));\n }\n } }));\n }\n}\nexport function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n/**\n * Split `text` into an array of lines, including the trailing newline character (where present)\n */\nfunction splitLines(text) {\n const hasTrailingNl = text.endsWith('\\n');\n const result = text.split('\\n').map(line => line + '\\n');\n if (hasTrailingNl) {\n result.pop();\n }\n else {\n result.push(result.pop().slice(0, -1));\n }\n return result;\n}\n","/**\n * WorkingMemoryStateProcessor\n *\n * Experimental: delivers working memory to the model as a state signal instead\n * of folding it into the system message. Storage and the `setWorkingMemory`\n * tool are unchanged — this processor only changes the delivery path.\n *\n * Pattern matches `BrowserContextProcessor` in `@mastra/core/browser`:\n * - `stateId` namespaces the state lane on the thread.\n * - `cacheKey` is derived from the rendered payload so dedup is automatic.\n * - `contextWindow.hasSnapshot` re-injection ensures the model still sees the\n * current snapshot after older messages drop out of the window.\n *\n * Delta emission (markdown mode only): when a prior snapshot exists in the\n * context window, the processor emits a unified-diff delta against that\n * snapshot's contents. Schema mode and the snapshot fallback always emit a\n * full snapshot.\n *\n * @example\n * ```ts\n * new Memory({\n * options: {\n * workingMemory: {\n * enabled: true,\n * template: '...',\n * useStateSignals: true, // auto-attaches this processor\n * },\n * },\n * });\n * ```\n */\n\nimport { createHash } from 'node:crypto';\n\nimport type { MastraMemory, MemoryConfigInternal, WorkingMemoryTemplate } from '@mastra/core/memory';\nimport type {\n ComputeStateSignalArgs,\n ComputeStateSignalResult,\n Processor,\n ProcessorActiveStateSignal,\n} from '@mastra/core/processors';\nimport { structuredPatch } from 'diff';\n\nexport const WORKING_MEMORY_STATE_ID = 'working-memory';\nexport const WORKING_MEMORY_STATE_PROCESSOR_ID = 'working-memory-state';\n\nexport class WorkingMemoryStateProcessor implements Processor<typeof WORKING_MEMORY_STATE_PROCESSOR_ID> {\n readonly id = WORKING_MEMORY_STATE_PROCESSOR_ID;\n readonly stateId = WORKING_MEMORY_STATE_ID;\n\n constructor(\n private readonly memory: MastraMemory,\n private readonly memoryConfig?: MemoryConfigInternal,\n ) {}\n\n async computeStateSignal(args: ComputeStateSignalArgs): Promise<ComputeStateSignalResult> {\n const template = await this.memory.getWorkingMemoryTemplate({ memoryConfig: this.memoryConfig });\n if (!template) return;\n\n const data = await this.memory.getWorkingMemory({\n threadId: args.threadId,\n resourceId: args.resourceId,\n memoryConfig: this.memoryConfig,\n });\n\n // Nothing stored yet — no state to broadcast. The setWorkingMemory tool\n // description tells the model the expected shape; the signal carries state.\n const contents = data?.trim();\n if (!contents) return;\n\n const cacheKey = stableWorkingMemoryCacheKey({ format: template.format, data: contents });\n const shouldMakeSnapshot = !args.contextWindow.hasSnapshot;\n if (args.tracking?.currentCacheKey === cacheKey && !shouldMakeSnapshot) return;\n\n const mergedConfig = this.memory.getMergedThreadConfig(this.memoryConfig);\n const scope = mergedConfig.workingMemory?.scope ?? 'resource';\n\n const deltaCandidate =\n template.format === 'markdown' && !shouldMakeSnapshot\n ? buildMarkdownDelta({\n lastSnapshot: args.lastSnapshot,\n deltasSinceSnapshot: args.deltasSinceSnapshot,\n nextContents: contents,\n })\n : undefined;\n\n if (deltaCandidate) {\n return {\n id: WORKING_MEMORY_STATE_ID,\n mode: 'delta',\n cacheKey,\n tagName: 'working-memory',\n contents: deltaCandidate.contents,\n delta: deltaCandidate.contents,\n // Stash the full post-edit text on the signal so the next turn can\n // diff against the most recently emitted state instead of the older\n // snapshot. Invisible to the model.\n value: contents,\n attributes: {\n format: template.format,\n scope,\n patch: 'unified-diff',\n },\n };\n }\n\n return {\n id: WORKING_MEMORY_STATE_ID,\n mode: 'snapshot',\n cacheKey,\n tagName: 'working-memory',\n contents,\n // Mirror contents in value so the first delta after a snapshot has a\n // typed prior-state to diff against without falling back to contents.\n value: contents,\n attributes: {\n format: template.format,\n scope,\n },\n };\n }\n}\n\n/**\n * Stable cache key for the rendered working memory payload. Returns a SHA-256\n * digest so dedup metadata stays compact regardless of payload size (working\n * memory blobs can grow arbitrarily long).\n */\nexport function stableWorkingMemoryCacheKey(input: {\n format: WorkingMemoryTemplate['format'];\n data: string | null;\n}): string {\n const hash = createHash('sha256');\n hash.update(input.format);\n hash.update('\\0');\n hash.update(input.data ?? '');\n return `sha256:${hash.digest('hex')}`;\n}\n\n/**\n * Build a unified-diff delta against the most recently emitted state. Prefers\n * the latest delta's `value` (the post-edit full text) when available, falling\n * back to the snapshot's `value` and finally the snapshot's `contents`. This\n * keeps deltas incremental (B→C) instead of cumulative against a stale\n * snapshot (A→C), which matters when many small edits land between snapshots.\n *\n * Returns undefined when:\n * - there's no prior state to diff against\n * - the prior state isn't a plain string (multimodal signal)\n *\n * In either case the caller falls back to emitting a full snapshot.\n */\nfunction buildMarkdownDelta(args: {\n lastSnapshot?: ProcessorActiveStateSignal;\n deltasSinceSnapshot: ProcessorActiveStateSignal[];\n nextContents: string;\n}): { contents: string } | undefined {\n const { lastSnapshot, deltasSinceSnapshot, nextContents } = args;\n\n // `value` is stored on the persisted signal's metadata (see applyStateSignal\n // in @mastra/core/agent/state-signals). Read from there to recover the\n // post-edit full text from the most recently emitted state.\n const latestDelta = deltasSinceSnapshot.at(-1);\n const prior =\n pickStringValue(readSignalValue(latestDelta)) ??\n pickStringValue(readSignalValue(lastSnapshot)) ??\n (typeof lastSnapshot?.contents === 'string' ? lastSnapshot.contents : undefined);\n ('');\n if (!prior) return;\n\n const patch = renderHunksOnly(prior, nextContents);\n\n return { contents: patch };\n}\n\nfunction pickStringValue(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction readSignalValue(signal: ProcessorActiveStateSignal | undefined): unknown {\n return (signal?.metadata as { value?: unknown } | undefined)?.value;\n}\n\n/**\n * Render a unified-diff-style patch body containing only `@@` hunks and their\n * lines — dropping the filename preamble (`Index:` / `===` / `---` / `+++`)\n * that `createPatch` emits and the `\` trailer.\n * The preamble exists for tooling like `patch -p1` to know which file to\n * apply to; we only ever diff a single working-memory blob. The newline\n * trailer is semantically meaningless to the model and adds noise to the\n * state signal.\n */\nfunction renderHunksOnly(prior: string, next: string): string {\n const { hunks } = structuredPatch('', '', prior, next, '', '', { context: 0 });\n return hunks\n .map(hunk => {\n const header = `@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`;\n const lines = hunk.lines.filter(line => !line.startsWith('\\\'));\n return [header, ...lines].join('\\n');\n })\n .join('\\n');\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunkXCZ44WKI_cjs = require('./chunk-XCZ44WKI.cjs');
|
|
4
|
-
var
|
|
4
|
+
var chunkLBVQK4LO_cjs = require('./chunk-LBVQK4LO.cjs');
|
|
5
5
|
var chunkZ7LCIYK7_cjs = require('./chunk-Z7LCIYK7.cjs');
|
|
6
6
|
var chunkRZR7PLFW_cjs = require('./chunk-RZR7PLFW.cjs');
|
|
7
7
|
var chunk64ITUOXI_cjs = require('./chunk-64ITUOXI.cjs');
|
|
@@ -74,7 +74,7 @@ var GET_AUTH_CAPABILITIES_ROUTE = chunkRZR7PLFW_cjs.createPublicRoute({
|
|
|
74
74
|
return { enabled: false, login: null };
|
|
75
75
|
}
|
|
76
76
|
const capabilities = await buildCapabilities(auth, request, { rbac, fga, apiPrefix: routePrefix });
|
|
77
|
-
if (!("user" in capabilities) &&
|
|
77
|
+
if (!("user" in capabilities) && chunkLBVQK4LO_cjs.supportsSessionRefresh(auth)) {
|
|
78
78
|
try {
|
|
79
79
|
const sessionId = await auth.getSessionIdFromRequest(request);
|
|
80
80
|
if (sessionId) {
|
|
@@ -512,5 +512,5 @@ exports.POST_CREDENTIALS_SIGN_UP_ROUTE = POST_CREDENTIALS_SIGN_UP_ROUTE;
|
|
|
512
512
|
exports.POST_LOGOUT_ROUTE = POST_LOGOUT_ROUTE;
|
|
513
513
|
exports.POST_REFRESH_ROUTE = POST_REFRESH_ROUTE;
|
|
514
514
|
exports.getPublicOrigin = getPublicOrigin;
|
|
515
|
-
//# sourceMappingURL=chunk-
|
|
516
|
-
//# sourceMappingURL=chunk-
|
|
515
|
+
//# sourceMappingURL=chunk-3APAH25G.cjs.map
|
|
516
|
+
//# sourceMappingURL=chunk-3APAH25G.cjs.map
|