@lobu/worker 7.0.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/error-handler.d.ts +0 -4
- package/dist/core/error-handler.d.ts.map +1 -1
- package/dist/core/error-handler.js +4 -15
- package/dist/core/error-handler.js.map +1 -1
- package/dist/core/types.d.ts +19 -19
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +0 -4
- package/dist/core/types.js.map +1 -1
- package/dist/core/workspace.d.ts +2 -11
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +14 -36
- package/dist/core/workspace.js.map +1 -1
- package/dist/embedded/just-bash-bootstrap.d.ts.map +1 -1
- package/dist/embedded/just-bash-bootstrap.js +34 -4
- package/dist/embedded/just-bash-bootstrap.js.map +1 -1
- package/dist/embedded/mcp-cli-commands.d.ts.map +1 -1
- package/dist/embedded/mcp-cli-commands.js +3 -38
- package/dist/embedded/mcp-cli-commands.js.map +1 -1
- package/dist/gateway/sse-client.d.ts.map +1 -1
- package/dist/gateway/sse-client.js +72 -10
- package/dist/gateway/sse-client.js.map +1 -1
- package/dist/gateway/types.d.ts +2 -0
- package/dist/gateway/types.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -24
- package/dist/index.js.map +1 -1
- package/dist/instructions/builder.d.ts.map +1 -1
- package/dist/instructions/builder.js +2 -1
- package/dist/instructions/builder.js.map +1 -1
- package/dist/openclaw/plugin-loader.d.ts.map +1 -1
- package/dist/openclaw/plugin-loader.js +8 -19
- package/dist/openclaw/plugin-loader.js.map +1 -1
- package/dist/openclaw/processor.d.ts.map +1 -1
- package/dist/openclaw/processor.js +2 -0
- package/dist/openclaw/processor.js.map +1 -1
- package/dist/openclaw/sandbox-leak.d.ts.map +1 -1
- package/dist/openclaw/sandbox-leak.js +1 -6
- package/dist/openclaw/sandbox-leak.js.map +1 -1
- package/dist/openclaw/session-context.d.ts.map +1 -1
- package/dist/openclaw/session-context.js +3 -0
- package/dist/openclaw/session-context.js.map +1 -1
- package/dist/openclaw/tool-policy.d.ts.map +1 -1
- package/dist/openclaw/tool-policy.js +5 -11
- package/dist/openclaw/tool-policy.js.map +1 -1
- package/dist/openclaw/transcript-snapshot.d.ts +88 -0
- package/dist/openclaw/transcript-snapshot.d.ts.map +1 -0
- package/dist/openclaw/transcript-snapshot.js +223 -0
- package/dist/openclaw/transcript-snapshot.js.map +1 -0
- package/dist/openclaw/worker.d.ts +14 -0
- package/dist/openclaw/worker.d.ts.map +1 -1
- package/dist/openclaw/worker.js +147 -10
- package/dist/openclaw/worker.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +3 -40
- package/dist/server.js.map +1 -1
- package/dist/shared/audio-provider-suggestions.d.ts.map +1 -1
- package/dist/shared/audio-provider-suggestions.js +4 -6
- package/dist/shared/audio-provider-suggestions.js.map +1 -1
- package/dist/shared/tool-implementations.d.ts.map +1 -1
- package/dist/shared/tool-implementations.js +62 -24
- package/dist/shared/tool-implementations.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/processor-harden.test.ts +6 -16
- package/src/__tests__/sse-client.test.ts +99 -0
- package/src/__tests__/transcript-snapshot.test.ts +275 -0
- package/src/core/error-handler.ts +5 -20
- package/src/core/types.ts +19 -35
- package/src/core/workspace.ts +22 -45
- package/src/embedded/just-bash-bootstrap.ts +36 -4
- package/src/embedded/mcp-cli-commands.ts +9 -6
- package/src/gateway/sse-client.ts +87 -22
- package/src/gateway/types.ts +15 -0
- package/src/index.ts +8 -26
- package/src/instructions/builder.ts +2 -3
- package/src/openclaw/plugin-loader.ts +15 -19
- package/src/openclaw/processor.ts +1 -0
- package/src/openclaw/sandbox-leak.ts +1 -6
- package/src/openclaw/session-context.ts +3 -0
- package/src/openclaw/tool-policy.ts +5 -12
- package/src/openclaw/transcript-snapshot.ts +238 -0
- package/src/openclaw/worker.ts +167 -13
- package/src/server.ts +1 -5
- package/src/shared/audio-provider-suggestions.ts +4 -6
- package/src/shared/tool-implementations.ts +57 -16
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-context.d.ts","sourceRoot":"","sources":["../../src/openclaw/session-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAIpB,UAAU,cAAc;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrD,wFAAwF;IACxF,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAGpD;AAqGD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAAO,GAC3C,OAAO,CAAC;IACT;;;;;;OAMG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC,
|
|
1
|
+
{"version":3,"file":"session-context.d.ts","sourceRoot":"","sources":["../../src/openclaw/session-context.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,YAAY,CAAC;AAIpB,UAAU,cAAc;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,KAAK,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACrD,wFAAwF;IACxF,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD;AAED,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAwCD;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CAGpD;AAqGD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAAO,GAC3C,OAAO,CAAC;IACT;;;;;;OAMG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,SAAS,EAAE,SAAS,EAAE,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAAC,CAqHD"}
|
|
@@ -120,6 +120,9 @@ async function getOpenClawSessionContext(opts = {}) {
|
|
|
120
120
|
headers: {
|
|
121
121
|
Authorization: `Bearer ${workerToken}`,
|
|
122
122
|
},
|
|
123
|
+
// Session context is fetched once per turn; a stalled gateway here would
|
|
124
|
+
// otherwise hang the worker before the agent ever sees the prompt.
|
|
125
|
+
signal: AbortSignal.timeout(30_000),
|
|
123
126
|
});
|
|
124
127
|
if (!response.ok) {
|
|
125
128
|
logger.warn("Gateway returned non-success status for session context", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/openclaw/session-context.ts"],"names":[],"mappings":";;AA6EA,sEAGC;AA2GD,
|
|
1
|
+
{"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/openclaw/session-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-policy.d.ts","sourceRoot":"","sources":["../../src/openclaw/tool-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AA4DF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYtE;
|
|
1
|
+
{"version":3,"file":"tool-policy.d.ts","sourceRoot":"","sources":["../../src/openclaw/tool-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AA4DF,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYtE;AAMD,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,EAAE,CAUrE;AAyBD,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CACrC,GAAG,UAAU,CAyCb;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,GACjB,OAAO,CA8BT;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,iBAAiB,GACxB,IAAI,CA4BN"}
|
|
@@ -69,9 +69,6 @@ function isDirectPackageInstallCommand(command) {
|
|
|
69
69
|
return (DEFAULT_PACKAGE_MANAGER_DENY_PREFIXES.some((prefix) => trimmed.startsWith(prefix.toLowerCase())) ||
|
|
70
70
|
DIRECT_PACKAGE_INSTALL_PATTERNS.some((pattern) => pattern.test(trimmed)));
|
|
71
71
|
}
|
|
72
|
-
function normalizePattern(pattern) {
|
|
73
|
-
return pattern.trim();
|
|
74
|
-
}
|
|
75
72
|
function normalizeToolName(name) {
|
|
76
73
|
return name.trim().toLowerCase();
|
|
77
74
|
}
|
|
@@ -86,15 +83,12 @@ function normalizeToolList(value) {
|
|
|
86
83
|
}
|
|
87
84
|
function parseBashFilter(pattern) {
|
|
88
85
|
const match = pattern.match(/^Bash\(([^:]+):\*\)$/i);
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
const prefix = match[1]?.trim();
|
|
93
|
-
return prefix ? prefix : null;
|
|
86
|
+
const prefix = match?.[1]?.trim();
|
|
87
|
+
return prefix || null;
|
|
94
88
|
}
|
|
95
89
|
function matchesToolPattern(toolName, pattern) {
|
|
96
90
|
const normalizedTool = normalizeToolName(toolName);
|
|
97
|
-
const normalizedPattern =
|
|
91
|
+
const normalizedPattern = pattern.trim();
|
|
98
92
|
const normalizedPatternLower = normalizedPattern.toLowerCase();
|
|
99
93
|
if (normalizedPattern === "*") {
|
|
100
94
|
return true;
|
|
@@ -113,11 +107,11 @@ function buildToolPolicy(params) {
|
|
|
113
107
|
const mergedAllowed = [
|
|
114
108
|
...(toolsConfig?.allowedTools ?? []),
|
|
115
109
|
...allowedPatterns,
|
|
116
|
-
].map(
|
|
110
|
+
].map((p) => p.trim());
|
|
117
111
|
const mergedDenied = [
|
|
118
112
|
...(toolsConfig?.deniedTools ?? []),
|
|
119
113
|
...deniedPatterns,
|
|
120
|
-
].map(
|
|
114
|
+
].map((p) => p.trim());
|
|
121
115
|
const bashAllowPrefixes = mergedAllowed
|
|
122
116
|
.map((pattern) => parseBashFilter(pattern))
|
|
123
117
|
.filter((prefix) => Boolean(prefix));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-policy.js","sourceRoot":"","sources":["../../src/openclaw/tool-policy.ts"],"names":[],"mappings":";;AA0EA,sEAYC;
|
|
1
|
+
{"version":3,"file":"tool-policy.js","sourceRoot":"","sources":["../../src/openclaw/tool-policy.ts"],"names":[],"mappings":";;AA0EA,sEAYC;AAMD,8CAUC;AAyBD,0CA6CC;AAED,sDAiCC;AAED,4DA+BC;AAhOD,MAAM,qCAAqC,GAAG;IAC5C,MAAM;IACN,UAAU;IACV,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,SAAS;IACT,OAAO;IACP,YAAY;IACZ,UAAU;IACV,cAAc;IACd,WAAW;IACX,eAAe;IACf,WAAW;IACX,WAAW;IACX,WAAW;IACX,cAAc;IACd,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,eAAe;IACf,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,QAAQ;IACR,eAAe;IACf,WAAW;IACX,eAAe;IACf,WAAW;IACX,cAAc;IACd,UAAU;IACV,gBAAgB;IAChB,aAAa;IACb,cAAc;IACd,aAAa;IACb,mBAAmB;CACpB,CAAC;AAEF,MAAM,+BAA+B,GAAG;IACtC,yGAAyG;IACzG,sDAAsD;IACtD,8CAA8C;IAC9C,2CAA2C;IAC3C,uCAAuC;IACvC,wCAAwC;IACxC,2CAA2C;IAC3C,wDAAwD;IACxD,0CAA0C;IAC1C,oCAAoC;IACpC,iCAAiC;IACjC,kCAAkC;IAClC,iCAAiC;IACjC,uCAAuC;CACxC,CAAC;AAEF,SAAgB,6BAA6B,CAAC,OAAe;IAC3D,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,qCAAqC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACpD,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACzC;QACD,+BAA+B,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CACzE,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACnC,CAAC;AAED,SAAgB,iBAAiB,CAAC,KAAyB;IACzD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACpE,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACb,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAChE;SACA,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAClC,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAC3D,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAE/D,IAAI,iBAAiB,KAAK,GAAG,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,sBAAsB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,cAAc,KAAK,sBAAsB,CAAC;AACnD,CAAC;AAED,SAAgB,eAAe,CAAC,MAI/B;IACC,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACvC,MAAM,UAAU,GAAG,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC;IAEpD,MAAM,aAAa,GAAG;QACpB,GAAG,CAAC,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;QACpC,GAAG,eAAe;KACnB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvB,MAAM,YAAY,GAAG;QACnB,GAAG,CAAC,WAAW,EAAE,WAAW,IAAI,EAAE,CAAC;QACnC,GAAG,cAAc;KAClB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAEvB,MAAM,iBAAiB,GAAG,aAAa;SACpC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC1C,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzD,MAAM,gBAAgB,GAAG,YAAY;SAClC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SAC1C,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAClD,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CACpC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,eAAe,EAAE,aAAa;QAC9B,cAAc,EAAE,YAAY;QAC5B,UAAU;QACV,UAAU,EAAE;YACV,QAAQ,EAAE,YAAY;YACtB,aAAa,EAAE,iBAAiB;YAChC,YAAY,EAAE;gBACZ,GAAG,qCAAqC;gBACxC,GAAG,gBAAgB;aACpB;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,qBAAqB,CACnC,QAAgB,EAChB,MAAkB;IAElB,MAAM,cAAc,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE/D,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CACxC,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAC3E,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;QAC9B,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,iBAAiB,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACzD,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAC5C,CAAC;YACF,MAAM,mBAAmB,GAAG,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YACvE,OAAO,iBAAiB,IAAI,mBAAmB,CAAC;QAClD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACtC,kBAAkB,CAAC,cAAc,EAAE,OAAO,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CACtC,OAAe,EACf,MAAyB;IAEzB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,iBAAiB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAChD,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1D,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACnD,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CACtD,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACnD,CAAC;IACF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-run snapshot client for OpenClaw's `session.jsonl`.
|
|
3
|
+
*
|
|
4
|
+
* Why this exists: today's PVC-backed `workspaces/` directory is read-write-
|
|
5
|
+
* once, which forces the helm chart to pin `replicaCount: 1` for the
|
|
6
|
+
* gateway/worker. Mirroring the post-run session.jsonl to Postgres lets a
|
|
7
|
+
* second pod hydrate the file on boot and resume the conversation, which is
|
|
8
|
+
* the prerequisite for dropping the PVC (Phase 5, separate PR).
|
|
9
|
+
*
|
|
10
|
+
* Design contract for the next reader:
|
|
11
|
+
* - We do NOT fork or wrap `@mariozechner/pi-coding-agent`'s `SessionManager`.
|
|
12
|
+
* It owns the file on disk; we read it back at terminal time and write
|
|
13
|
+
* the bytes verbatim to PG. The next boot writes those bytes back to
|
|
14
|
+
* disk verbatim before SessionManager.open(), so SessionManager observes
|
|
15
|
+
* a byte-identical file to what it last wrote.
|
|
16
|
+
* - The snapshot is taken in `OpenClawWorker.cleanup()` on every terminal
|
|
17
|
+
* status — `completed`, `failed`, `timeout`, `cancelled`. Hydrate filters
|
|
18
|
+
* for `terminal_status='completed'` so a failed run can't poison the
|
|
19
|
+
* next worker with a dangling `tool_use` content block. Older completed
|
|
20
|
+
* snapshots remain readable; the hydrate query takes the latest one.
|
|
21
|
+
* - The worker is sandboxed — no PG access. Two new endpoints live on the
|
|
22
|
+
* existing worker gateway: `GET /worker/transcript/snapshot` for
|
|
23
|
+
* hydrate, `POST /worker/transcript/snapshot` for write. (org, agent,
|
|
24
|
+
* conv) are pulled from the worker JWT on the gateway side, so the
|
|
25
|
+
* worker can't impersonate another conversation.
|
|
26
|
+
* - Phase 5: snapshot mode is the default. `LOBU_SESSION_STORE=file`
|
|
27
|
+
* opts out for legacy/local-dev single-replica deploys. Phase 6
|
|
28
|
+
* drops the env var entirely.
|
|
29
|
+
*
|
|
30
|
+
* Trade-off accepted: a mid-run crash loses the partial transcript for that
|
|
31
|
+
* run. The next attempt re-runs from the previous user message. Tools must
|
|
32
|
+
* be idempotent (or accept user-visible re-execution).
|
|
33
|
+
*/
|
|
34
|
+
export type TerminalStatus = "completed" | "failed" | "timeout" | "cancelled";
|
|
35
|
+
export interface TranscriptSnapshotOptions {
|
|
36
|
+
/** Absolute path to the session.jsonl SessionManager reads/writes. */
|
|
37
|
+
sessionFile: string;
|
|
38
|
+
/** Gateway base URL (e.g. `http://127.0.0.1:8787/lobu`). */
|
|
39
|
+
gatewayUrl: string;
|
|
40
|
+
/** Worker JWT. The gateway pulls (org, agent, conv) from this token. */
|
|
41
|
+
workerToken: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Pull the latest `terminal_status='completed'` snapshot for this worker's
|
|
45
|
+
* (org, agent, conv) and write the bytes to `sessionFile`. Must run BEFORE
|
|
46
|
+
* SessionManager.open() so the rehydrated content is visible at open time.
|
|
47
|
+
*
|
|
48
|
+
* Returns `true` if a snapshot was found and written, `false` if no snapshot
|
|
49
|
+
* exists yet (first turn). Throws on transport errors — caller decides
|
|
50
|
+
* whether to fall back to a fresh session.
|
|
51
|
+
*/
|
|
52
|
+
export declare function hydrateFromSnapshot(opts: TranscriptSnapshotOptions): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Read the session file in full and POST it to the gateway. Called once per
|
|
55
|
+
* worker run at terminal time, from `OpenClawWorker.cleanup()`. The
|
|
56
|
+
* `terminal_status` discriminator lets the hydrate path skip failed/timeout
|
|
57
|
+
* snapshots so a dangling `tool_use` doesn't poison the next attempt.
|
|
58
|
+
*
|
|
59
|
+
* Failure to snapshot is logged but does NOT throw — there's nothing the
|
|
60
|
+
* caller can do beyond what cleanup already does (the worker is exiting).
|
|
61
|
+
* The next attempt will hydrate from the previous successful snapshot.
|
|
62
|
+
*/
|
|
63
|
+
export declare function writeSnapshot(opts: TranscriptSnapshotOptions & {
|
|
64
|
+
terminalStatus: TerminalStatus;
|
|
65
|
+
/**
|
|
66
|
+
* The runs.id this worker claimed. Sent in the POST body so the route
|
|
67
|
+
* binds the snapshot to the correct run unambiguously; the route then
|
|
68
|
+
* verifies the runId actually belongs to the JWT's (org, agent, conv)
|
|
69
|
+
* tuple before INSERTing. Codex P1#1 on PR #865 — without this, the
|
|
70
|
+
* route fell back to a "latest run for (org, agent, conv)" lookup
|
|
71
|
+
* which raced with the next user message enqueuing a fresh run.
|
|
72
|
+
*/
|
|
73
|
+
runId: number;
|
|
74
|
+
}): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Purge all snapshot rows for this worker's (org, agent, conv). Called
|
|
77
|
+
* by the session-reset path so the next boot doesn't rehydrate the
|
|
78
|
+
* conversation from Postgres after a `/new`. Idempotent — a 404 / empty
|
|
79
|
+
* result is treated as success.
|
|
80
|
+
*
|
|
81
|
+
* Failures are logged but not thrown — reset is best-effort; if the
|
|
82
|
+
* purge HTTP call fails the worst case is the next boot hydrates from
|
|
83
|
+
* the previous transcript (the legacy file-mode behaviour). The local
|
|
84
|
+
* session.jsonl unlink is the primary signal; this is the multi-replica
|
|
85
|
+
* complement to it.
|
|
86
|
+
*/
|
|
87
|
+
export declare function clearSnapshots(opts: Pick<TranscriptSnapshotOptions, "gatewayUrl" | "workerToken">): Promise<void>;
|
|
88
|
+
//# sourceMappingURL=transcript-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-snapshot.d.ts","sourceRoot":"","sources":["../../src/openclaw/transcript-snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAQH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,CAAC;AAE9E,MAAM,WAAW,yBAAyB;IACxC,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAuClB;AAED;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,yBAAyB,GAAG;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CA2Ef;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,YAAY,GAAG,aAAa,CAAC,GAClE,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Per-run snapshot client for OpenClaw's `session.jsonl`.
|
|
4
|
+
*
|
|
5
|
+
* Why this exists: today's PVC-backed `workspaces/` directory is read-write-
|
|
6
|
+
* once, which forces the helm chart to pin `replicaCount: 1` for the
|
|
7
|
+
* gateway/worker. Mirroring the post-run session.jsonl to Postgres lets a
|
|
8
|
+
* second pod hydrate the file on boot and resume the conversation, which is
|
|
9
|
+
* the prerequisite for dropping the PVC (Phase 5, separate PR).
|
|
10
|
+
*
|
|
11
|
+
* Design contract for the next reader:
|
|
12
|
+
* - We do NOT fork or wrap `@mariozechner/pi-coding-agent`'s `SessionManager`.
|
|
13
|
+
* It owns the file on disk; we read it back at terminal time and write
|
|
14
|
+
* the bytes verbatim to PG. The next boot writes those bytes back to
|
|
15
|
+
* disk verbatim before SessionManager.open(), so SessionManager observes
|
|
16
|
+
* a byte-identical file to what it last wrote.
|
|
17
|
+
* - The snapshot is taken in `OpenClawWorker.cleanup()` on every terminal
|
|
18
|
+
* status — `completed`, `failed`, `timeout`, `cancelled`. Hydrate filters
|
|
19
|
+
* for `terminal_status='completed'` so a failed run can't poison the
|
|
20
|
+
* next worker with a dangling `tool_use` content block. Older completed
|
|
21
|
+
* snapshots remain readable; the hydrate query takes the latest one.
|
|
22
|
+
* - The worker is sandboxed — no PG access. Two new endpoints live on the
|
|
23
|
+
* existing worker gateway: `GET /worker/transcript/snapshot` for
|
|
24
|
+
* hydrate, `POST /worker/transcript/snapshot` for write. (org, agent,
|
|
25
|
+
* conv) are pulled from the worker JWT on the gateway side, so the
|
|
26
|
+
* worker can't impersonate another conversation.
|
|
27
|
+
* - Phase 5: snapshot mode is the default. `LOBU_SESSION_STORE=file`
|
|
28
|
+
* opts out for legacy/local-dev single-replica deploys. Phase 6
|
|
29
|
+
* drops the env var entirely.
|
|
30
|
+
*
|
|
31
|
+
* Trade-off accepted: a mid-run crash loses the partial transcript for that
|
|
32
|
+
* run. The next attempt re-runs from the previous user message. Tools must
|
|
33
|
+
* be idempotent (or accept user-visible re-execution).
|
|
34
|
+
*/
|
|
35
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
36
|
+
if (k2 === undefined) k2 = k;
|
|
37
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
38
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
39
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
40
|
+
}
|
|
41
|
+
Object.defineProperty(o, k2, desc);
|
|
42
|
+
}) : (function(o, m, k, k2) {
|
|
43
|
+
if (k2 === undefined) k2 = k;
|
|
44
|
+
o[k2] = m[k];
|
|
45
|
+
}));
|
|
46
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
47
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
48
|
+
}) : function(o, v) {
|
|
49
|
+
o["default"] = v;
|
|
50
|
+
});
|
|
51
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
52
|
+
var ownKeys = function(o) {
|
|
53
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
54
|
+
var ar = [];
|
|
55
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
56
|
+
return ar;
|
|
57
|
+
};
|
|
58
|
+
return ownKeys(o);
|
|
59
|
+
};
|
|
60
|
+
return function (mod) {
|
|
61
|
+
if (mod && mod.__esModule) return mod;
|
|
62
|
+
var result = {};
|
|
63
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
64
|
+
__setModuleDefault(result, mod);
|
|
65
|
+
return result;
|
|
66
|
+
};
|
|
67
|
+
})();
|
|
68
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
69
|
+
exports.hydrateFromSnapshot = hydrateFromSnapshot;
|
|
70
|
+
exports.writeSnapshot = writeSnapshot;
|
|
71
|
+
exports.clearSnapshots = clearSnapshots;
|
|
72
|
+
const node_fs_1 = require("node:fs");
|
|
73
|
+
const path = __importStar(require("node:path"));
|
|
74
|
+
const core_1 = require("@lobu/core");
|
|
75
|
+
const logger = (0, core_1.createLogger)("transcript-snapshot");
|
|
76
|
+
/**
|
|
77
|
+
* Pull the latest `terminal_status='completed'` snapshot for this worker's
|
|
78
|
+
* (org, agent, conv) and write the bytes to `sessionFile`. Must run BEFORE
|
|
79
|
+
* SessionManager.open() so the rehydrated content is visible at open time.
|
|
80
|
+
*
|
|
81
|
+
* Returns `true` if a snapshot was found and written, `false` if no snapshot
|
|
82
|
+
* exists yet (first turn). Throws on transport errors — caller decides
|
|
83
|
+
* whether to fall back to a fresh session.
|
|
84
|
+
*/
|
|
85
|
+
async function hydrateFromSnapshot(opts) {
|
|
86
|
+
const url = `${opts.gatewayUrl}/worker/transcript/snapshot`;
|
|
87
|
+
const res = await fetch(url, {
|
|
88
|
+
method: "GET",
|
|
89
|
+
headers: { Authorization: `Bearer ${opts.workerToken}` },
|
|
90
|
+
signal: AbortSignal.timeout(30_000),
|
|
91
|
+
});
|
|
92
|
+
// 404 = no completed snapshot for this (org, agent, conv). First turn or
|
|
93
|
+
// every previous attempt failed/timed out. Caller should start fresh.
|
|
94
|
+
if (res.status === 404) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (!res.ok) {
|
|
98
|
+
throw new Error(`transcript hydrate failed: ${res.status} ${res.statusText}`);
|
|
99
|
+
}
|
|
100
|
+
const body = await res.text();
|
|
101
|
+
await node_fs_1.promises.mkdir(path.dirname(opts.sessionFile), { recursive: true });
|
|
102
|
+
// writeFile truncates atomically (open with O_TRUNC); no partial state
|
|
103
|
+
// is visible to SessionManager.open() because that call runs after this
|
|
104
|
+
// function resolves.
|
|
105
|
+
await node_fs_1.promises.writeFile(opts.sessionFile, body, "utf-8");
|
|
106
|
+
// fsync so a pod crash between this return and SessionManager.open()
|
|
107
|
+
// doesn't leave the file half-written. The cost is one extra disk flush
|
|
108
|
+
// on every worker boot — acceptable.
|
|
109
|
+
const handle = await node_fs_1.promises.open(opts.sessionFile, "r");
|
|
110
|
+
try {
|
|
111
|
+
await handle.sync();
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
await handle.close();
|
|
115
|
+
}
|
|
116
|
+
logger.info(`Hydrated session file from snapshot: ${body.length} bytes → ${opts.sessionFile}`);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Read the session file in full and POST it to the gateway. Called once per
|
|
121
|
+
* worker run at terminal time, from `OpenClawWorker.cleanup()`. The
|
|
122
|
+
* `terminal_status` discriminator lets the hydrate path skip failed/timeout
|
|
123
|
+
* snapshots so a dangling `tool_use` doesn't poison the next attempt.
|
|
124
|
+
*
|
|
125
|
+
* Failure to snapshot is logged but does NOT throw — there's nothing the
|
|
126
|
+
* caller can do beyond what cleanup already does (the worker is exiting).
|
|
127
|
+
* The next attempt will hydrate from the previous successful snapshot.
|
|
128
|
+
*/
|
|
129
|
+
async function writeSnapshot(opts) {
|
|
130
|
+
// Hydrate filters `terminal_status='completed'` — failed/timeout/cancelled
|
|
131
|
+
// snapshots are never used. POSTing them is pure network waste; the
|
|
132
|
+
// route would store them but no future hydrate would pick them up.
|
|
133
|
+
// Skip at the source so any caller (cleanup() today, future paths
|
|
134
|
+
// tomorrow) stays out of the wasteful write. Codex round 2 quality
|
|
135
|
+
// win C on PR #865.
|
|
136
|
+
if (opts.terminalStatus !== "completed") {
|
|
137
|
+
logger.debug(`Skipping snapshot POST: terminal_status='${opts.terminalStatus}' is never read by hydrate`);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
let body;
|
|
141
|
+
try {
|
|
142
|
+
body = await node_fs_1.promises.readFile(opts.sessionFile, "utf-8");
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
// No session file = nothing to snapshot. Common when the worker exits
|
|
146
|
+
// before SessionManager.open() ran (early error path).
|
|
147
|
+
const isMissing = err instanceof Error && err.code === "ENOENT";
|
|
148
|
+
if (isMissing) {
|
|
149
|
+
logger.debug(`No session file at ${opts.sessionFile}; skipping snapshot`);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
logger.warn(`Failed to read session file for snapshot: ${err instanceof Error ? err.message : String(err)}`);
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (body.length === 0) {
|
|
156
|
+
logger.debug("Empty session file; skipping snapshot");
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const url = `${opts.gatewayUrl}/worker/transcript/snapshot`;
|
|
160
|
+
try {
|
|
161
|
+
const res = await fetch(url, {
|
|
162
|
+
method: "POST",
|
|
163
|
+
headers: {
|
|
164
|
+
Authorization: `Bearer ${opts.workerToken}`,
|
|
165
|
+
"Content-Type": "application/json",
|
|
166
|
+
},
|
|
167
|
+
body: JSON.stringify({
|
|
168
|
+
terminalStatus: opts.terminalStatus,
|
|
169
|
+
snapshotJsonl: body,
|
|
170
|
+
runId: opts.runId,
|
|
171
|
+
}),
|
|
172
|
+
// Snapshots can be large (633 KB max measured); 60s timeout covers
|
|
173
|
+
// slow links + PG TOAST writes.
|
|
174
|
+
signal: AbortSignal.timeout(60_000),
|
|
175
|
+
});
|
|
176
|
+
if (!res.ok) {
|
|
177
|
+
// 409 = UNIQUE (org, agent, conv, run_id) collision. Means another
|
|
178
|
+
// pod (or a retry) already wrote this snapshot — benign, drop it.
|
|
179
|
+
if (res.status === 409) {
|
|
180
|
+
logger.info(`Snapshot for run already exists (status=${opts.terminalStatus}); skipping duplicate`);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
logger.error(`Snapshot POST failed: ${res.status} ${res.statusText}`);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
logger.info(`Wrote snapshot: ${body.length} bytes, status=${opts.terminalStatus}`);
|
|
187
|
+
}
|
|
188
|
+
catch (err) {
|
|
189
|
+
logger.error(`Snapshot POST threw: ${err instanceof Error ? err.message : String(err)}`);
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Purge all snapshot rows for this worker's (org, agent, conv). Called
|
|
195
|
+
* by the session-reset path so the next boot doesn't rehydrate the
|
|
196
|
+
* conversation from Postgres after a `/new`. Idempotent — a 404 / empty
|
|
197
|
+
* result is treated as success.
|
|
198
|
+
*
|
|
199
|
+
* Failures are logged but not thrown — reset is best-effort; if the
|
|
200
|
+
* purge HTTP call fails the worst case is the next boot hydrates from
|
|
201
|
+
* the previous transcript (the legacy file-mode behaviour). The local
|
|
202
|
+
* session.jsonl unlink is the primary signal; this is the multi-replica
|
|
203
|
+
* complement to it.
|
|
204
|
+
*/
|
|
205
|
+
async function clearSnapshots(opts) {
|
|
206
|
+
const url = `${opts.gatewayUrl}/worker/transcript/snapshot`;
|
|
207
|
+
try {
|
|
208
|
+
const res = await fetch(url, {
|
|
209
|
+
method: "DELETE",
|
|
210
|
+
headers: { Authorization: `Bearer ${opts.workerToken}` },
|
|
211
|
+
signal: AbortSignal.timeout(30_000),
|
|
212
|
+
});
|
|
213
|
+
if (!res.ok) {
|
|
214
|
+
logger.warn(`Snapshot DELETE failed: ${res.status} ${res.statusText} — next boot may rehydrate stale history`);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
logger.info("Purged conversation snapshots for session reset");
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
logger.warn(`Snapshot DELETE threw: ${err instanceof Error ? err.message : String(err)} — next boot may rehydrate stale history`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=transcript-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcript-snapshot.js","sourceRoot":"","sources":["../../src/openclaw/transcript-snapshot.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BH,kDAyCC;AAYD,sCAwFC;AAcD,wCAsBC;AA3MD,qCAAyC;AACzC,gDAAkC;AAClC,qCAA0C;AAE1C,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,qBAAqB,CAAC,CAAC;AAanD;;;;;;;;GAQG;AACI,KAAK,UAAU,mBAAmB,CACvC,IAA+B;IAE/B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,6BAA6B,CAAC;IAC5D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAC3B,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;QACxD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IAEH,yEAAyE;IACzE,sEAAsE;IACtE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,8BAA8B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9B,MAAM,kBAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,uEAAuE;IACvE,wEAAwE;IACxE,qBAAqB;IACrB,MAAM,kBAAE,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACpD,qEAAqE;IACrE,wEAAwE;IACxE,qCAAqC;IACrC,MAAM,MAAM,GAAG,MAAM,kBAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,MAAM,CAAC,IAAI,CACT,wCAAwC,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,WAAW,EAAE,CAClF,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,aAAa,CACjC,IAWC;IAED,2EAA2E;IAC3E,oEAAoE;IACpE,mEAAmE;IACnE,kEAAkE;IAClE,mEAAmE;IACnE,oBAAoB;IACpB,IAAI,IAAI,CAAC,cAAc,KAAK,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,KAAK,CACV,4CAA4C,IAAI,CAAC,cAAc,4BAA4B,CAC5F,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,sEAAsE;QACtE,uDAAuD;QACvD,MAAM,SAAS,GACb,GAAG,YAAY,KAAK,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC3E,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,WAAW,qBAAqB,CAAC,CAAC;YAC1E,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CACT,6CAA6C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChG,CAAC;QACF,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,6BAA6B,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,cAAc,EAAE,kBAAkB;aACnC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,aAAa,EAAE,IAAI;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;YACF,mEAAmE;YACnE,gCAAgC;YAChC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,mEAAmE;YACnE,kEAAkE;YAClE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CACT,2CAA2C,IAAI,CAAC,cAAc,uBAAuB,CACtF,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACtE,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CACT,mBAAmB,IAAI,CAAC,MAAM,kBAAkB,IAAI,CAAC,cAAc,EAAE,CACtE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACV,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC3E,CAAC;QACF,OAAO;IACT,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,cAAc,CAClC,IAAmE;IAEnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,6BAA6B,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE,EAAE;YACxD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CACT,2BAA2B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,0CAA0C,CAClG,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CACT,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,0CAA0C,CACrH,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -15,6 +15,20 @@ export declare class OpenClawWorker implements WorkerExecutor {
|
|
|
15
15
|
workerTransport: WorkerTransport;
|
|
16
16
|
private config;
|
|
17
17
|
private progressProcessor;
|
|
18
|
+
/**
|
|
19
|
+
* Terminal status for the current run, used by `cleanup()` to discriminate
|
|
20
|
+
* the snapshot row. Defaults to `failed` (pessimistic) so an early crash
|
|
21
|
+
* before any return-path assignment is recorded as a failure, not silently
|
|
22
|
+
* accepted as a completion. Set to `completed` only on the success path
|
|
23
|
+
* in `execute()`. Resets on every `execute()` invocation.
|
|
24
|
+
*/
|
|
25
|
+
private terminalStatus;
|
|
26
|
+
/**
|
|
27
|
+
* Path to the OpenClaw session file for the current run. Captured in
|
|
28
|
+
* `runAISession()` (where SessionManager opens it) so `cleanup()` can
|
|
29
|
+
* read it back for the snapshot without re-deriving the path.
|
|
30
|
+
*/
|
|
31
|
+
private sessionFilePath;
|
|
18
32
|
constructor(config: WorkerConfig);
|
|
19
33
|
/**
|
|
20
34
|
* Main execution workflow
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/openclaw/worker.ts"],"names":[],"mappings":";AAMA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAK,EAGV,YAAY,EACZ,cAAc,EACf,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/openclaw/worker.ts"],"names":[],"mappings":";AAMA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,YAAY,CAAC;AAWpB,OAAO,KAAK,EAGV,YAAY,EACZ,cAAc,EACf,MAAM,eAAe,CAAC;AAsDvB,UAAU,yBAAyB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAiCD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,MAAM,CAOR;AA4GD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAIR;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,yBAAyB,CA2B3B;AAED,qBAAa,cAAe,YAAW,cAAc;IACnD,OAAO,CAAC,gBAAgB,CAAmB;IACpC,eAAe,EAAE,eAAe,CAAC;IACxC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAA4B;IACrD;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAA4B;IAClD;;;;OAIG;IACH,OAAO,CAAC,eAAe,CAAuB;gBAElC,MAAM,EAAE,YAAY;IAiChC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmRxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD9B,kBAAkB,IAAI,eAAe,GAAG,IAAI;YAI9B,gCAAgC;YAqFhC,YAAY;YA09BZ,kBAAkB;YA0BlB,kBAAkB;IAmEhC,OAAO,KAAK,aAAa,GAOxB;IAED,OAAO,CAAC,MAAM,CAAC,OAAO;IAItB,OAAO,CAAC,qBAAqB;IA4D7B,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAoB;YAE7C,oBAAoB;IAgDlC,OAAO,CAAC,yBAAyB;YAanB,oCAAoC;CAiCnD"}
|