@xgjktech/xg_cwork_im 1.17.47 → 1.17.49
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +489 -489
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -11
- package/dist/index.js.map +1 -1
- package/dist/src/build-project-prompt.test.js +18 -18
- package/dist/src/cron-appkey-binding-store.d.ts.map +1 -1
- package/dist/src/cron-appkey-binding-store.js +28 -10
- package/dist/src/cron-appkey-binding-store.js.map +1 -1
- package/dist/src/cron-appkey-binding-store.test.js +69 -1
- package/dist/src/cron-appkey-binding-store.test.js.map +1 -1
- package/dist/src/gateway-session-queue.d.ts +3 -0
- package/dist/src/gateway-session-queue.d.ts.map +1 -1
- package/dist/src/gateway-session-queue.js +1 -0
- package/dist/src/gateway-session-queue.js.map +1 -1
- package/dist/src/plugin-dispose.d.ts +8 -7
- package/dist/src/plugin-dispose.d.ts.map +1 -1
- package/dist/src/plugin-dispose.js +11 -10
- package/dist/src/plugin-dispose.js.map +1 -1
- package/dist/src/process-shared-store.d.ts +7 -8
- package/dist/src/process-shared-store.d.ts.map +1 -1
- package/dist/src/process-shared-store.js +12 -7
- package/dist/src/process-shared-store.js.map +1 -1
- package/dist/src/process-shared-store.test.js +31 -23
- package/dist/src/process-shared-store.test.js.map +1 -1
- package/dist/src/register-exec-env-hook.d.ts.map +1 -1
- package/dist/src/register-exec-env-hook.js +174 -33
- package/dist/src/register-exec-env-hook.js.map +1 -1
- package/dist/src/register-exec-env-hook.test.js +32 -0
- package/dist/src/register-exec-env-hook.test.js.map +1 -1
- package/dist/src/session-env-store.d.ts +4 -2
- package/dist/src/session-env-store.d.ts.map +1 -1
- package/dist/src/session-env-store.js +7 -3
- package/dist/src/session-env-store.js.map +1 -1
- package/dist/src/session-env-store.test.js +3 -1
- package/dist/src/session-env-store.test.js.map +1 -1
- package/dist/src/single-chat-no-reply-fallback.d.ts +14 -0
- package/dist/src/single-chat-no-reply-fallback.d.ts.map +1 -0
- package/dist/src/single-chat-no-reply-fallback.js +20 -0
- package/dist/src/single-chat-no-reply-fallback.js.map +1 -0
- package/dist/src/subagent-progress-hooks.d.ts +11 -0
- package/dist/src/subagent-progress-hooks.d.ts.map +1 -0
- package/dist/src/subagent-progress-hooks.js +41 -0
- package/dist/src/subagent-progress-hooks.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-shared-store.d.ts","sourceRoot":"","sources":["../../src/process-shared-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,kBAAkB;IAC/B,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB;
|
|
1
|
+
{"version":3,"file":"process-shared-store.d.ts","sourceRoot":"","sources":["../../src/process-shared-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,kBAAkB;IAC/B,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,WAAW,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,yCAAyC;IACzC,gBAAgB,EAAE,OAAO,CAAC;CAC7B;AAkBD,uCAAuC;AACvC,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED,oBAAoB;AACpB,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,2CAA2C;AAC3C,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAED,4BAA4B;AAC5B,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,4DAA4D;AAC5D,wBAAgB,uBAAuB,IAAI,OAAO,CAKjD;AAED,0DAA0D;AAC1D,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,0CAA0C;AAC1C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,sBAAsB;AACtB,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,GAAG,SAAS,CAE7D;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAMrE;AAED,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAEzD;AAED,6BAA6B;AAC7B,wBAAgB,iCAAiC,IAAI,IAAI,CAKxD"}
|
|
@@ -22,6 +22,7 @@ function ensureStore() {
|
|
|
22
22
|
registerSeq: 0,
|
|
23
23
|
runtime: undefined,
|
|
24
24
|
namespace: {},
|
|
25
|
+
fullTeardownDone: false,
|
|
25
26
|
};
|
|
26
27
|
g[STORE_KEY] = created;
|
|
27
28
|
return created;
|
|
@@ -46,13 +47,17 @@ export function nextRegisterSeq() {
|
|
|
46
47
|
export function currentRegisterSeq() {
|
|
47
48
|
return ensureStore().registerSeq;
|
|
48
49
|
}
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return
|
|
50
|
+
/** 全量 teardown(gateway_stop)幂等闸门:首次调用返回 true,其后返回 false。 */
|
|
51
|
+
export function requestFullTeardownOnce() {
|
|
52
|
+
const store = ensureStore();
|
|
53
|
+
if (store.fullTeardownDone)
|
|
54
|
+
return false;
|
|
55
|
+
store.fullTeardownDone = true;
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
/** 出现新的 register() 时复位 teardown 闸门(允许下次停机再次 teardown)。 */
|
|
59
|
+
export function resetFullTeardownGate() {
|
|
60
|
+
ensureStore().fullTeardownDone = false;
|
|
56
61
|
}
|
|
57
62
|
/** register() 时写入最新 runtime(连接派发按需现取)。 */
|
|
58
63
|
export function setSharedRuntime(rt) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-shared-store.js","sourceRoot":"","sources":["../../src/process-shared-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"process-shared-store.js","sourceRoot":"","sources":["../../src/process-shared-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAezD,SAAS,WAAW;IAChB,MAAM,CAAC,GAAG,UAA0C,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,SAAS,CAAuB,CAAC;IAC9C,CAAC;IACD,MAAM,OAAO,GAAuB;QAChC,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;QACd,OAAO,EAAE,SAAS;QAClB,SAAS,EAAE,EAAE;QACb,gBAAgB,EAAE,KAAK;KAC1B,CAAC;IACF,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;IACvB,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,eAAe;IAC3B,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED,oBAAoB;AACpB,MAAM,UAAU,kBAAkB;IAC9B,OAAO,WAAW,EAAE,CAAC,WAAW,CAAC;AACrC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,eAAe;IAC3B,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC,WAAW,CAAC;AAC7B,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,kBAAkB;IAC9B,OAAO,WAAW,EAAE,CAAC,WAAW,CAAC;AACrC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,uBAAuB;IACnC,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAC5B,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO,KAAK,CAAC;IACzC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,qBAAqB;IACjC,WAAW,EAAE,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC3C,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,gBAAgB,CAAC,EAAW;IACxC,WAAW,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED,sBAAsB;AACtB,MAAM,UAAU,gBAAgB;IAC5B,OAAO,WAAW,EAAE,CAAC,OAAwB,CAAC;AAClD,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,iBAAiB,CAAI,GAAW,EAAE,OAAgB;IAC9D,MAAM,EAAE,GAAG,WAAW,EAAE,CAAC,SAAS,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;QAC1B,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,CAAC,GAAG,CAAM,CAAC;AACxB,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAO,GAAW;IAC1C,OAAO,iBAAiB,CAAC,OAAO,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,EAAQ,CAAC,CAAC;AAClE,CAAC;AAED,6BAA6B;AAC7B,MAAM,UAAU,iCAAiC;IAC7C,MAAM,CAAC,GAAG,UAA0C,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;AACL,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { beforeEach, describe, it } from "node:test";
|
|
3
|
-
import { __resetProcessSharedStoreForTests, currentModuleEpoch, currentRegisterSeq, getOrCreateShared,
|
|
3
|
+
import { __resetProcessSharedStoreForTests, currentModuleEpoch, currentRegisterSeq, getOrCreateShared, getSharedMap, nextModuleEpoch, nextRegisterSeq, requestFullTeardownOnce, resetFullTeardownGate, } from "./process-shared-store.js";
|
|
4
4
|
beforeEach(() => {
|
|
5
5
|
__resetProcessSharedStoreForTests();
|
|
6
6
|
});
|
|
7
7
|
describe("process-shared-store: module epoch / register seq", () => {
|
|
8
|
-
it("moduleEpoch and registerSeq are monotonic per claim", () => {
|
|
8
|
+
it("moduleEpoch and registerSeq are monotonic per claim (observability only)", () => {
|
|
9
9
|
assert.equal(nextModuleEpoch(), 1);
|
|
10
10
|
assert.equal(nextModuleEpoch(), 2);
|
|
11
11
|
assert.equal(currentModuleEpoch(), 2);
|
|
@@ -13,6 +13,13 @@ describe("process-shared-store: module epoch / register seq", () => {
|
|
|
13
13
|
assert.equal(nextRegisterSeq(), 2);
|
|
14
14
|
assert.equal(currentRegisterSeq(), 2);
|
|
15
15
|
});
|
|
16
|
+
it("registerSeq is NOT used to decide teardown (must never gate stopAll on 'no later register')", () => {
|
|
17
|
+
// Registry 代际交替可能在批量 register 的尾端触发 cleanup,而无更晚 register;
|
|
18
|
+
// 该情形绝不能导出「全量 teardown」结论。这里验证 registerSeq 仅单调计数。
|
|
19
|
+
const last = nextRegisterSeq();
|
|
20
|
+
nextRegisterSeq();
|
|
21
|
+
assert.ok(currentRegisterSeq() > last);
|
|
22
|
+
});
|
|
16
23
|
});
|
|
17
24
|
describe("process-shared-store: cross-module singleton via getOrCreateShared", () => {
|
|
18
25
|
it("getOrCreateShared returns the same instance for the same key", () => {
|
|
@@ -20,33 +27,34 @@ describe("process-shared-store: cross-module singleton via getOrCreateShared", (
|
|
|
20
27
|
const b = getOrCreateShared("x", () => new Map());
|
|
21
28
|
assert.equal(a, b);
|
|
22
29
|
});
|
|
30
|
+
it("getSharedMap returns the same map for the same key (old/new module read/write one copy)", () => {
|
|
31
|
+
const a = getSharedMap("shared-map");
|
|
32
|
+
const b = getSharedMap("shared-map");
|
|
33
|
+
assert.equal(a, b);
|
|
34
|
+
a.set("k", 1);
|
|
35
|
+
assert.equal(b.get("k"), 1);
|
|
36
|
+
});
|
|
23
37
|
it("distinct keys produce distinct instances", () => {
|
|
24
38
|
const a = getOrCreateShared("k1", () => new Map());
|
|
25
39
|
const b = getOrCreateShared("k2", () => new Map());
|
|
26
40
|
assert.notEqual(a, b);
|
|
27
41
|
});
|
|
28
42
|
});
|
|
29
|
-
describe("process-shared-store:
|
|
30
|
-
it("
|
|
31
|
-
|
|
32
|
-
assert.equal(
|
|
33
|
-
assert.equal(
|
|
34
|
-
});
|
|
35
|
-
it("a
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const g0 = nextRegisterSeq();
|
|
45
|
-
const g1 = nextRegisterSeq();
|
|
46
|
-
const g2 = nextRegisterSeq();
|
|
47
|
-
assert.equal(isTakeover(g0), true);
|
|
48
|
-
assert.equal(isTakeover(g1), true);
|
|
49
|
-
assert.equal(isTakeover(g2), false);
|
|
43
|
+
describe("process-shared-store: full teardown once-gate (gateway_stop)", () => {
|
|
44
|
+
it("requestFullTeardownOnce returns true only once until reset", () => {
|
|
45
|
+
assert.equal(requestFullTeardownOnce(), true);
|
|
46
|
+
assert.equal(requestFullTeardownOnce(), false);
|
|
47
|
+
assert.equal(requestFullTeardownOnce(), false);
|
|
48
|
+
});
|
|
49
|
+
it("a new register resets the gate so a later stop can teardown again", () => {
|
|
50
|
+
assert.equal(requestFullTeardownOnce(), true);
|
|
51
|
+
resetFullTeardownGate();
|
|
52
|
+
assert.equal(requestFullTeardownOnce(), true);
|
|
53
|
+
});
|
|
54
|
+
it("repeated gateway_stop handlers (one per register) collapse to a single teardown", () => {
|
|
55
|
+
const handlers = [requestFullTeardownOnce, requestFullTeardownOnce, requestFullTeardownOnce];
|
|
56
|
+
const results = handlers.map((h) => h());
|
|
57
|
+
assert.deepEqual(results, [true, false, false]);
|
|
50
58
|
});
|
|
51
59
|
});
|
|
52
60
|
//# sourceMappingURL=process-shared-store.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-shared-store.test.js","sourceRoot":"","sources":["../../src/process-shared-store.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EACH,iCAAiC,EACjC,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"process-shared-store.test.js","sourceRoot":"","sources":["../../src/process-shared-store.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-exec-env-hook.d.ts","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"register-exec-env-hook.d.ts","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAUnF,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAyI/E,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAKxE;AA0CD,4EAA4E;AAC5E,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAkB9E;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAkB9F;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAgDhE;AAED,gFAAgF;AAChF,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAqE1E"}
|
|
@@ -8,13 +8,116 @@
|
|
|
8
8
|
* event.params.env(优先级低于 resolve_exec_env 的 pluginEnv,但本插件
|
|
9
9
|
* 不注册 resolve_exec_env,因此 params.env 即最终生效值)。不碰 process.env。
|
|
10
10
|
*/
|
|
11
|
+
import { createHash } from "node:crypto";
|
|
11
12
|
import { getXgImConfig } from "./channel-config.js";
|
|
12
|
-
import { getSessionUserContext, isRecord,
|
|
13
|
+
import { getLinkedParentSessionKey, getSessionEnv, getSessionUserContext, isRecord, } from "./session-env-store.js";
|
|
13
14
|
import { bindCronAppKey as persistCronBinding, getCronAppKeyBinding as readCronBinding } from "./cron-appkey-binding-store.js";
|
|
14
15
|
export const XG_OPENAPI_BASE_URL = "XG_OPENAPI_BASE_URL";
|
|
15
|
-
//
|
|
16
|
-
//
|
|
16
|
+
// UUID matching is retained only as a fallback for unstructured CLI text.
|
|
17
|
+
// Structured result fields accept any non-empty job id.
|
|
17
18
|
const CRON_JOB_ID_PATTERN = /\b[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{8,16}\b/i;
|
|
19
|
+
const APPKEY_MAX_PARENT_DEPTH = 8;
|
|
20
|
+
function parseAgentIdFromSessionKey(sessionKey) {
|
|
21
|
+
if (!sessionKey?.startsWith("agent:"))
|
|
22
|
+
return undefined;
|
|
23
|
+
const rest = sessionKey.slice("agent:".length);
|
|
24
|
+
const end = rest.indexOf(":");
|
|
25
|
+
return (end > 0 ? rest.slice(0, end) : rest).trim() || undefined;
|
|
26
|
+
}
|
|
27
|
+
function appKeyFingerprint(appKey) {
|
|
28
|
+
if (!appKey)
|
|
29
|
+
return undefined;
|
|
30
|
+
return createHash("sha256").update(appKey).digest("hex").slice(0, 12);
|
|
31
|
+
}
|
|
32
|
+
function validAppKey(value) {
|
|
33
|
+
return typeof value === "string" && value.trim().length > 0 && value.length <= 256 && !/[\0\r\n]/.test(value);
|
|
34
|
+
}
|
|
35
|
+
function parentAgentMatches(parentSessionKey, agentId) {
|
|
36
|
+
if (!agentId)
|
|
37
|
+
return true;
|
|
38
|
+
const parentAgentId = parseAgentIdFromSessionKey(parentSessionKey);
|
|
39
|
+
// An opaque/legacy parent key is not evidence of a cross-agent link.
|
|
40
|
+
// Reject only when both sides are known and explicitly different.
|
|
41
|
+
return !parentAgentId || parentAgentId === agentId;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Resolve the AppKey from the current Session and OpenClaw's persisted parent
|
|
45
|
+
* metadata. The in-memory child link is only a compatibility fallback for
|
|
46
|
+
* older hosts/tests; authentication never depends on subagent_spawned.
|
|
47
|
+
*/
|
|
48
|
+
function resolveAppKeyForSession(api, sessionKey, agentIdHint) {
|
|
49
|
+
if (!sessionKey)
|
|
50
|
+
return { source: "none", reason: "SESSION_KEY_MISSING" };
|
|
51
|
+
const agentId = agentIdHint?.trim() || parseAgentIdFromSessionKey(sessionKey);
|
|
52
|
+
const sessionAgentId = parseAgentIdFromSessionKey(sessionKey);
|
|
53
|
+
if (agentIdHint && sessionAgentId && sessionAgentId !== agentIdHint.trim()) {
|
|
54
|
+
return { source: "none", sessionKey, agentId, reason: "SESSION_AGENT_MISMATCH" };
|
|
55
|
+
}
|
|
56
|
+
const getEntry = (key) => {
|
|
57
|
+
try {
|
|
58
|
+
const runtime = api.runtime;
|
|
59
|
+
const sessionApi = runtime.agent?.session;
|
|
60
|
+
if (!sessionApi?.getSessionEntry)
|
|
61
|
+
return undefined;
|
|
62
|
+
const cfg = api.runtime.config.current();
|
|
63
|
+
const storePath = sessionApi.resolveStorePath?.(cfg.session?.store, agentId ? { agentId } : undefined);
|
|
64
|
+
return sessionApi.getSessionEntry({ sessionKey: key, ...(agentId ? { agentId } : {}), ...(storePath ? { storePath } : {}) });
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
let currentKey = sessionKey;
|
|
71
|
+
const visited = new Set();
|
|
72
|
+
let sawEntryRead = false;
|
|
73
|
+
let cronLineageSeen = false;
|
|
74
|
+
for (let depth = 0; depth <= APPKEY_MAX_PARENT_DEPTH && currentKey; depth += 1) {
|
|
75
|
+
if (visited.has(currentKey)) {
|
|
76
|
+
return { source: "none", sessionKey, agentId, reason: "PARENT_CHAIN_CYCLE" };
|
|
77
|
+
}
|
|
78
|
+
visited.add(currentKey);
|
|
79
|
+
const cron = parseCronSessionKey(currentKey);
|
|
80
|
+
if (cron) {
|
|
81
|
+
if (!agentId || cron.agentId === agentId) {
|
|
82
|
+
cronLineageSeen = true;
|
|
83
|
+
const binding = readCronBinding(cron.agentId, cron.jobId);
|
|
84
|
+
if (binding?.appKey && validAppKey(binding.appKey)) {
|
|
85
|
+
return {
|
|
86
|
+
appKey: binding.appKey,
|
|
87
|
+
source: "cron",
|
|
88
|
+
sessionKey,
|
|
89
|
+
agentId: cron.agentId,
|
|
90
|
+
jobId: cron.jobId,
|
|
91
|
+
parentSessionKey: depth > 0 ? currentKey : undefined,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Once a Cron Session is in the lineage, never fall through to an
|
|
97
|
+
// ordinary IM parent, which could carry a stale user AppKey.
|
|
98
|
+
if (!cronLineageSeen) {
|
|
99
|
+
const ownEnv = getSessionEnv(currentKey);
|
|
100
|
+
const ownAppKey = ownEnv?.XG_OPENAPI_APP_KEY;
|
|
101
|
+
if (validAppKey(ownAppKey)) {
|
|
102
|
+
return { appKey: ownAppKey, source: depth === 0 ? "own" : "parent", sessionKey, agentId, parentSessionKey: depth > 0 ? currentKey : undefined };
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
const entry = getEntry(currentKey);
|
|
106
|
+
if (entry)
|
|
107
|
+
sawEntryRead = true;
|
|
108
|
+
const metadataParent = entry?.parentSessionKey || entry?.spawnedBy;
|
|
109
|
+
const fallbackParent = getLinkedParentSessionKey(currentKey);
|
|
110
|
+
const parentKey = metadataParent || fallbackParent;
|
|
111
|
+
if (!parentKey) {
|
|
112
|
+
return { source: "none", sessionKey, agentId, reason: sawEntryRead ? "AUTH_CONTEXT_MISSING" : "SESSION_ENTRY_MISSING" };
|
|
113
|
+
}
|
|
114
|
+
if (!parentAgentMatches(parentKey, agentId)) {
|
|
115
|
+
return { source: "none", sessionKey, agentId, parentSessionKey: parentKey, reason: "PARENT_AGENT_MISMATCH" };
|
|
116
|
+
}
|
|
117
|
+
currentKey = parentKey;
|
|
118
|
+
}
|
|
119
|
+
return { source: "none", sessionKey, agentId, reason: "PARENT_CHAIN_LIMIT" };
|
|
120
|
+
}
|
|
18
121
|
/** Return true only for the supported CLI/API forms that create a Cron job. */
|
|
19
122
|
export function isCronCreateCommand(command) {
|
|
20
123
|
if (!command)
|
|
@@ -23,6 +126,27 @@ export function isCronCreateCommand(command) {
|
|
|
23
126
|
return /\bopenclaw(?:\.cmd)?\s+cron\s+(?:add|create)\b/.test(normalized) ||
|
|
24
127
|
/\bopenclaw(?:\.cmd)?\s+gateway\s+call\s+cron\.create\b/.test(normalized);
|
|
25
128
|
}
|
|
129
|
+
function isUsableCronJobId(value) {
|
|
130
|
+
return typeof value === "string" && value.trim().length > 0 && value.length <= 256 && !/[\0\r\n]/.test(value);
|
|
131
|
+
}
|
|
132
|
+
function collectStructuredCronJobIds(value, out = [], seen = new Set()) {
|
|
133
|
+
if (value == null || seen.has(value) || typeof value !== "object")
|
|
134
|
+
return out;
|
|
135
|
+
seen.add(value);
|
|
136
|
+
if (Array.isArray(value)) {
|
|
137
|
+
for (const item of value)
|
|
138
|
+
collectStructuredCronJobIds(item, out, seen);
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
for (const [key, item] of Object.entries(value)) {
|
|
142
|
+
if ((key === "id" || key === "jobId") && isUsableCronJobId(item))
|
|
143
|
+
out.push(item.trim());
|
|
144
|
+
else
|
|
145
|
+
collectStructuredCronJobIds(item, out, seen);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
26
150
|
function collectText(value, out = [], seen = new Set()) {
|
|
27
151
|
if (value == null || seen.has(value))
|
|
28
152
|
return out;
|
|
@@ -52,7 +176,21 @@ function collectText(value, out = [], seen = new Set()) {
|
|
|
52
176
|
}
|
|
53
177
|
/** Extract the authoritative UUID printed by `openclaw cron add --json`. */
|
|
54
178
|
export function extractCronJobIdFromResult(result) {
|
|
179
|
+
// Prefer authoritative structured fields and accept non-UUID ids.
|
|
180
|
+
const structured = collectStructuredCronJobIds(result);
|
|
181
|
+
if (structured.length > 0)
|
|
182
|
+
return structured[0];
|
|
55
183
|
for (const text of collectText(result)) {
|
|
184
|
+
// CLI adapters commonly wrap JSON in a text field.
|
|
185
|
+
try {
|
|
186
|
+
const parsed = JSON.parse(text);
|
|
187
|
+
const parsedId = collectStructuredCronJobIds(parsed)[0];
|
|
188
|
+
if (parsedId)
|
|
189
|
+
return parsedId;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Fall through to the UUID-only text fallback below.
|
|
193
|
+
}
|
|
56
194
|
const match = text.match(CRON_JOB_ID_PATTERN);
|
|
57
195
|
if (match)
|
|
58
196
|
return match[0];
|
|
@@ -69,9 +207,15 @@ export function parseCronSessionKey(sessionKey) {
|
|
|
69
207
|
return undefined;
|
|
70
208
|
const agentId = sessionKey.slice("agent:".length, markerIndex);
|
|
71
209
|
const rest = sessionKey.slice(markerIndex + marker.length);
|
|
210
|
+
if (!agentId || !rest)
|
|
211
|
+
return undefined;
|
|
72
212
|
const runMarker = ":run:";
|
|
73
213
|
const runIndex = rest.indexOf(runMarker);
|
|
74
|
-
if (
|
|
214
|
+
if (runIndex < 0) {
|
|
215
|
+
// Isolated Cron sessions are stable per job and have no run segment.
|
|
216
|
+
return { agentId, jobId: rest, runId: "" };
|
|
217
|
+
}
|
|
218
|
+
if (runIndex <= 0 || runIndex + runMarker.length >= rest.length)
|
|
75
219
|
return undefined;
|
|
76
220
|
const jobId = rest.slice(0, runIndex);
|
|
77
221
|
const runId = rest.slice(runIndex + runMarker.length);
|
|
@@ -92,37 +236,34 @@ export function registerExecEnvHook(api) {
|
|
|
92
236
|
api.on("before_tool_call", (event, ctx) => {
|
|
93
237
|
if (event.toolName !== "exec")
|
|
94
238
|
return;
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
239
|
+
let resolution;
|
|
240
|
+
try {
|
|
241
|
+
resolution = resolveAppKeyForSession(api, ctx.sessionKey, ctx.agentId);
|
|
242
|
+
}
|
|
243
|
+
catch (err) {
|
|
244
|
+
resolution = { source: "none", sessionKey: ctx.sessionKey, agentId: ctx.agentId, reason: `RESOLVE_ERROR:${String(err)}` };
|
|
245
|
+
}
|
|
102
246
|
const baseUrl = resolveBaseUrl();
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
if (Object.keys(env).length === 0)
|
|
247
|
+
const existing = isRecord(event.params.env) ? { ...event.params.env } : {};
|
|
248
|
+
const hadAppKey = Object.prototype.hasOwnProperty.call(existing, "XG_OPENAPI_APP_KEY");
|
|
249
|
+
delete existing.XG_OPENAPI_APP_KEY;
|
|
250
|
+
if (resolution.appKey)
|
|
251
|
+
existing.XG_OPENAPI_APP_KEY = resolution.appKey;
|
|
252
|
+
if (baseUrl)
|
|
253
|
+
existing[XG_OPENAPI_BASE_URL] = baseUrl;
|
|
254
|
+
const changed = hadAppKey || Boolean(resolution.appKey) || Boolean(baseUrl);
|
|
255
|
+
const source = resolution.source;
|
|
256
|
+
const fp = appKeyFingerprint(resolution.appKey);
|
|
257
|
+
console.debug(`[xg_cwork_im] [appkey-resolve] event=appkey-resolve sessionKey=${ctx.sessionKey ?? "(none)"} ` +
|
|
258
|
+
`parentSessionKey=${resolution.parentSessionKey ?? "(none)"} source=${source} ` +
|
|
259
|
+
`agentId=${resolution.agentId ?? ctx.agentId ?? "(none)"} jobId=${resolution.jobId ?? "(none)"} ` +
|
|
260
|
+
`bindingFound=${Boolean(resolution.appKey)} appKeyFingerprint=${fp ?? "(none)"} reason=${resolution.reason ?? "(none)"}`);
|
|
261
|
+
if (!changed)
|
|
121
262
|
return;
|
|
122
263
|
return {
|
|
123
264
|
params: {
|
|
124
265
|
...event.params,
|
|
125
|
-
env:
|
|
266
|
+
env: existing,
|
|
126
267
|
},
|
|
127
268
|
};
|
|
128
269
|
}, { priority: 0 });
|
|
@@ -134,8 +275,8 @@ export function registerCronAppKeyBindingHook(api) {
|
|
|
134
275
|
console.warn(`[xg_cwork_im] [cron-binding] missing jobId/sessionKey; binding skipped`);
|
|
135
276
|
return;
|
|
136
277
|
}
|
|
137
|
-
const
|
|
138
|
-
const appKey =
|
|
278
|
+
const resolved = resolveAppKeyForSession(api, sessionKey, agentIdHint);
|
|
279
|
+
const appKey = resolved.appKey;
|
|
139
280
|
if (!appKey) {
|
|
140
281
|
console.warn(`[xg_cwork_im] [cron-binding] no appKey in creator session; jobId=${jobId}`);
|
|
141
282
|
return;
|
|
@@ -145,7 +286,7 @@ export function registerCronAppKeyBindingHook(api) {
|
|
|
145
286
|
console.warn(`[xg_cwork_im] [cron-binding] agent mismatch; sessionAgent=${sessionAgent} agentId=${agentIdHint} jobId=${jobId}`);
|
|
146
287
|
return;
|
|
147
288
|
}
|
|
148
|
-
const agentId = agentIdHint
|
|
289
|
+
const agentId = agentIdHint?.trim() || resolved.agentId || sessionAgent;
|
|
149
290
|
if (!agentId) {
|
|
150
291
|
console.warn(`[xg_cwork_im] [cron-binding] missing agentId; jobId=${jobId}`);
|
|
151
292
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-exec-env-hook.js","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,oBAAoB,IAAI,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAE/H,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAIzD,qEAAqE;AACrE,0EAA0E;AAC1E,MAAM,mBAAmB,GAAG,oDAAoD,CAAC;AAEjF,+EAA+E;AAC/E,MAAM,UAAU,mBAAmB,CAAC,OAA2B;IAC3D,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,gDAAgD,CAAC,IAAI,CAAC,UAAU,CAAC;QACpE,wDAAwD,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,MAAgB,EAAE,EAAE,OAAO,IAAI,GAAG,EAAW;IAC9E,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBAClC,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACJ,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,0BAA0B,CAAC,MAAe;IACtD,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC9C,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,UAA8B;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,WAAW,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACzF,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,IAAI,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACtD,MAAM,cAAc,GAAG,GAAuB,EAAE;QAC5C,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG;gBAAE,OAAO,SAAS,CAAC;YAC3B,OAAO,aAAa,CAAC,GAAqB,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAC7E,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC,CAAC;IAEF,GAAG,CAAC,EAAE,CACF,kBAAkB,EAClB,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACX,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM;YAAE,OAAO;QACtC,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,MAAM,GAAG,GAA2B,IAAI;YACpC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,IAAI,WAAW;YAAE,GAAG,CAAC,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC;QAC7D,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;QACjC,IAAI,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC;QACvC,CAAC;QACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YACvF,MAAM,iBAAiB,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC1C,OAAO,iBAAiB,CAAC,kBAAkB,CAAC;YAC5C,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAClF,OAAO;gBACH,MAAM,EAAE;oBACJ,GAAG,KAAK,CAAC,MAAM;oBACf,GAAG,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;iBACxF;aACJ,CAAC;QACN,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC1C,OAAO;YACH,MAAM,EAAE;gBACJ,GAAG,KAAK,CAAC,MAAM;gBACf,GAAG,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,GAAG,EAAE;aAC/B;SACJ,CAAC;IACN,CAAC,EACD,EAAE,QAAQ,EAAE,CAAC,EAAE,CAClB,CAAC;AAEN,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,6BAA6B,CAAC,GAAsB;IAChE,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,UAA8B,EAAE,WAAoB,EAAQ,EAAE;QAClG,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;YACvF,OAAO;QACX,CAAC;QACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,UAAU,CAAC,kBAAkB,CAAC;QAC7C,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,oEAAoE,KAAK,EAAE,CAAC,CAAC;YAC1F,OAAO;QACX,CAAC;QACD,MAAM,YAAY,GAAG,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtH,IAAI,YAAY,IAAI,WAAW,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,6DAA6D,YAAY,YAAY,WAAW,UAAU,KAAK,EAAE,CAAC,CAAC;YAChI,OAAO;QACX,CAAC;QACD,MAAM,OAAO,GAAG,WAAW,IAAI,YAAY,CAAC;QAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,uDAAuD,KAAK,EAAE,CAAC,CAAC;YAC7E,OAAO;QACX,CAAC;QACD,MAAM,IAAI,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC7B,OAAO;YACP,KAAK;YACL,MAAM;YACN,MAAM,EAAE,IAAI,EAAE,MAAM;YACpB,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,eAAe,EAAE,UAAU;YAC3B,MAAM,EAAE,IAAI;SACf,CAAC,CAAC;QACH,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,wDAAwD,OAAO,UAAU,KAAK,EAAE,CAAC,CAAC;IAC/G,CAAC,CAAC;IAEF,yEAAyE;IACzE,4EAA4E;IAC5E,GAAG,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO;QACxB,sEAAsE;QACtE,kEAAkE;QAClE,+DAA+D;QAC/D,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;gBAAE,OAAO;YAC1C,MAAM,KAAK,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,KAAK;gBAAE,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;;gBAC1D,OAAO,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAC;YAC9G,OAAO;QACX,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM;YAAE,OAAO;QACtC,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClF,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACpI,CAAC,MAAM,IAAI,CAAC,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1H,IAAI,KAAK;YAAE,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,EAAG,GAA4B,CAAC,OAAO,CAAC,CAAC;;YACpF,OAAO,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;IAC3G,CAAC,CAAC,CAAC;IAEH,4EAA4E;IAC5E,2EAA2E;IAC3E,uDAAuD;IACvD,GAAG,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7B,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU;YAAE,OAAO;QAC1E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;QACpD,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"register-exec-env-hook.js","sourceRoot":"","sources":["../../src/register-exec-env-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,12 @@ function captureApi(cfg) {
|
|
|
15
15
|
},
|
|
16
16
|
}),
|
|
17
17
|
},
|
|
18
|
+
agent: {
|
|
19
|
+
session: {
|
|
20
|
+
getSessionEntry: ({ sessionKey }) => cfg?.entries?.[sessionKey],
|
|
21
|
+
resolveStorePath: () => "test-session-store",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
18
24
|
},
|
|
19
25
|
on: (_name, handler) => {
|
|
20
26
|
registeredHandler = handler;
|
|
@@ -94,5 +100,31 @@ describe("register-exec-env-hook", () => {
|
|
|
94
100
|
const resultParams = result.params;
|
|
95
101
|
assert.deepEqual(resultParams.env, { [XG_OPENAPI_APP_KEY]: "key-a" });
|
|
96
102
|
});
|
|
103
|
+
it("使用 OpenClaw Session 元数据解析父链,不依赖 subagent_spawned", () => {
|
|
104
|
+
registerExecEnvHook(captureApi({
|
|
105
|
+
entries: {
|
|
106
|
+
"agent:agent-a:child": { spawnedBy: "agent:agent-a:parent" },
|
|
107
|
+
"agent:agent-a:parent": { parentSessionKey: "agent:agent-a:root" },
|
|
108
|
+
},
|
|
109
|
+
}));
|
|
110
|
+
setSessionEnvEntry("agent:agent-a:root", XG_OPENAPI_APP_KEY, "parent-key");
|
|
111
|
+
const result = registeredHandler({ toolName: "exec", params: { command: "echo hi" } }, { sessionKey: "agent:agent-a:child" });
|
|
112
|
+
assert.deepEqual(result.params.env, { [XG_OPENAPI_APP_KEY]: "parent-key" });
|
|
113
|
+
});
|
|
114
|
+
it("无绑定时删除普通 Session 的 AI AppKey,但不阻断 exec", () => {
|
|
115
|
+
registerExecEnvHook(captureApi());
|
|
116
|
+
const result = registeredHandler({ toolName: "exec", params: { command: "echo hi", env: { XG_OPENAPI_APP_KEY: "ai-wrong", KEEP: "1" } } }, { sessionKey: "agent:agent-a:main" });
|
|
117
|
+
assert.deepEqual(result.params.env, { KEEP: "1" });
|
|
118
|
+
});
|
|
119
|
+
it("父 Session 属于其他 agent 时不注入 AppKey", () => {
|
|
120
|
+
registerExecEnvHook(captureApi({
|
|
121
|
+
entries: {
|
|
122
|
+
"agent:agent-a:child": { spawnedBy: "agent:agent-b:parent" },
|
|
123
|
+
},
|
|
124
|
+
}));
|
|
125
|
+
setSessionEnvEntry("agent:agent-b:parent", XG_OPENAPI_APP_KEY, "other-agent-key");
|
|
126
|
+
const result = registeredHandler({ toolName: "exec", params: { env: { XG_OPENAPI_APP_KEY: "ai-wrong" } } }, { sessionKey: "agent:agent-a:child", agentId: "agent-a" });
|
|
127
|
+
assert.deepEqual(result.params.env, {});
|
|
128
|
+
});
|
|
97
129
|
});
|
|
98
130
|
//# sourceMappingURL=register-exec-env-hook.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-exec-env-hook.test.js","sourceRoot":"","sources":["../../src/register-exec-env-hook.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEhE,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EACH,8BAA8B,EAC9B,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACrB,MAAM,wBAAwB,CAAC;AAOhC,IAAI,iBAAoD,CAAC;AAEzD,SAAS,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"register-exec-env-hook.test.js","sourceRoot":"","sources":["../../src/register-exec-env-hook.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* 会话级环境变量存储:按 sessionKey 保存每个会话的 exec 环境变量,
|
|
3
3
|
* 供 before_tool_call 向 exec 子进程注入(多用户并发安全,不碰 process.env)。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* linkChildSession
|
|
5
|
+
* 语义:同一群内消息按当前会话写入;subagent 的权威父链由 OpenClaw
|
|
6
|
+
* Session 元数据提供,linkChildSession 仅保留作运行时兼容/性能回退。
|
|
7
7
|
*
|
|
8
8
|
* 持久化:仅持久化会话级 env(当前为 XG_OPENAPI_APP_KEY)。写入后防抖落盘到
|
|
9
9
|
* stateDir/xgjktech/session-env.json,openclaw 重启后恢复;subagent 父子链是
|
|
@@ -33,6 +33,8 @@ export declare function clearSessionEnv(sessionKey: string): void;
|
|
|
33
33
|
export declare function removeSessionEnvKey(sessionKey: string, key: string): void;
|
|
34
34
|
/** 登记 subagent 子会话到父会话的关联,供 exec env 父子链反查。 */
|
|
35
35
|
export declare function linkChildSession(childSessionKey: string, parentSessionKey: string): void;
|
|
36
|
+
/** 读取运行时登记的 child -> parent 关系;仅作为宿主父链不可用时的兼容回退。 */
|
|
37
|
+
export declare function getLinkedParentSessionKey(sessionKey: string | undefined): string | undefined;
|
|
36
38
|
/** Record the last IM sender for optional Cron binding audit metadata. */
|
|
37
39
|
export declare function setSessionUserContext(sessionKey: string, userId?: string, userName?: string): void;
|
|
38
40
|
export declare function getSessionUserContext(sessionKey: string | undefined): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-env-store.d.ts","sourceRoot":"","sources":["../../src/session-env-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAsDvD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AA+GD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQhE;AAED,2BAA2B;AAC3B,wBAAgB,0BAA0B,IAAI,IAAI,CASjD;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CASnF;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,IAAI,CAqBN;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAMpF;AAED,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAOxD;AAED,uBAAuB;AACvB,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAIxF;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAExH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc3F;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAkB7C"}
|
|
1
|
+
{"version":3,"file":"session-env-store.d.ts","sourceRoot":"","sources":["../../src/session-env-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAsDvD,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQtF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AA+GD;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQhE;AAED,2BAA2B;AAC3B,wBAAgB,0BAA0B,IAAI,IAAI,CASjD;AAED,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CASnF;AAED,gDAAgD;AAChD,wBAAgB,kBAAkB,CAC9B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,SAAS,GAC1B,IAAI,CAqBN;AAED,2BAA2B;AAC3B,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAMpF;AAED,yBAAyB;AACzB,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAOxD;AAED,uBAAuB;AACvB,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAIxF;AAED,oDAAoD;AACpD,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE5F;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAGlG;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAExH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc3F;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAkB7C"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* 会话级环境变量存储:按 sessionKey 保存每个会话的 exec 环境变量,
|
|
3
3
|
* 供 before_tool_call 向 exec 子进程注入(多用户并发安全,不碰 process.env)。
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* linkChildSession
|
|
5
|
+
* 语义:同一群内消息按当前会话写入;subagent 的权威父链由 OpenClaw
|
|
6
|
+
* Session 元数据提供,linkChildSession 仅保留作运行时兼容/性能回退。
|
|
7
7
|
*
|
|
8
8
|
* 持久化:仅持久化会话级 env(当前为 XG_OPENAPI_APP_KEY)。写入后防抖落盘到
|
|
9
9
|
* stateDir/xgjktech/session-env.json,openclaw 重启后恢复;subagent 父子链是
|
|
@@ -42,7 +42,7 @@ function isValidEnvKey(key) {
|
|
|
42
42
|
function isUsableEnvValue(value) {
|
|
43
43
|
if (value.length === 0 || value.length > MAX_ENV_VALUE_LENGTH)
|
|
44
44
|
return false;
|
|
45
|
-
if (
|
|
45
|
+
if (/[\0\r\n]/.test(value))
|
|
46
46
|
return false;
|
|
47
47
|
return true;
|
|
48
48
|
}
|
|
@@ -264,6 +264,10 @@ export function linkChildSession(childSessionKey, parentSessionKey) {
|
|
|
264
264
|
sessionChildLinks.set(childSessionKey, parentSessionKey);
|
|
265
265
|
scheduleCleanup(childSessionKey);
|
|
266
266
|
}
|
|
267
|
+
/** 读取运行时登记的 child -> parent 关系;仅作为宿主父链不可用时的兼容回退。 */
|
|
268
|
+
export function getLinkedParentSessionKey(sessionKey) {
|
|
269
|
+
return sessionKey ? sessionChildLinks.get(sessionKey) : undefined;
|
|
270
|
+
}
|
|
267
271
|
/** Record the last IM sender for optional Cron binding audit metadata. */
|
|
268
272
|
export function setSessionUserContext(sessionKey, userId, userName) {
|
|
269
273
|
if (!sessionKey || (!userId && !userName))
|