@xrkseek/harness 0.4.5 → 0.4.7
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/node_modules/@xrkseek/a2a/README.md +3 -3
- package/node_modules/@xrkseek/a2a/dist/inbound-frame.d.ts +13 -0
- package/node_modules/@xrkseek/a2a/dist/inbound-frame.d.ts.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/inbound-frame.js +32 -0
- package/node_modules/@xrkseek/a2a/dist/inbound-frame.js.map +1 -0
- package/node_modules/@xrkseek/a2a/dist/inbound.d.ts +2 -2
- package/node_modules/@xrkseek/a2a/dist/index.d.ts +1 -0
- package/node_modules/@xrkseek/a2a/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/a2a/dist/index.js +1 -0
- package/node_modules/@xrkseek/a2a/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/store.d.ts.map +1 -1
- package/node_modules/@xrkseek/checkpoint/dist/store.js +15 -2
- package/node_modules/@xrkseek/checkpoint/dist/store.js.map +1 -1
- package/node_modules/@xrkseek/core-agent/dist/index.d.ts +5 -0
- package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent/dist/index.js +1 -0
- package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +7 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +5 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/http.d.ts +4 -4
- package/node_modules/@xrkseek/exec-memory/dist/http.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/http.js +9 -10
- package/node_modules/@xrkseek/exec-memory/dist/http.js.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts +2 -10
- package/node_modules/@xrkseek/exec-memory/dist/resolve.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-memory/dist/resolve.js +2 -7
- package/node_modules/@xrkseek/exec-memory/dist/resolve.js.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/README.md +3 -0
- package/node_modules/@xrkseek/exec-ssh/dist/index.d.ts +2 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.js +2 -1
- package/node_modules/@xrkseek/exec-ssh/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/probe.d.ts +26 -0
- package/node_modules/@xrkseek/exec-ssh/dist/probe.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-ssh/dist/probe.js +50 -0
- package/node_modules/@xrkseek/exec-ssh/dist/probe.js.map +1 -0
- package/node_modules/@xrkseek/exec-ssh/dist/providers.d.ts +8 -0
- package/node_modules/@xrkseek/exec-ssh/dist/providers.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-ssh/dist/providers.js +25 -0
- package/node_modules/@xrkseek/exec-ssh/dist/providers.js.map +1 -1
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.d.ts +7 -0
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.js +29 -0
- package/node_modules/@xrkseek/im-gateway-contract/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.js +2 -2
- package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.d.ts +2 -0
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js +4 -0
- package/node_modules/@xrkseek/server-face/dist/cost-meter-store.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +3 -3
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +3 -3
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/process-channels.d.ts +10 -2
- package/node_modules/@xrkseek/server-face/dist/process-channels.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/process-channels.js +14 -9
- package/node_modules/@xrkseek/server-face/dist/process-channels.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-export.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-export.js +12 -0
- package/node_modules/@xrkseek/server-face/dist/session-export.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +30 -2
- package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-status.js +82 -24
- package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +20 -0
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts +12 -5
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js +15 -7
- package/node_modules/@xrkseek/server-face/dist/workspace-checkpoint.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.d.ts +38 -1
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.js +121 -9
- package/node_modules/@xrkseek/server-host/dist/a2a-inbound-public.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.d.ts +5 -2
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +59 -16
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts +21 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js +44 -0
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/auto-review-classifier.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.d.ts +2 -3
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.js +2 -28
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/im-gateway-sidecar.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts +2 -2
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/index.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-http/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/index.js +1 -1
- package/node_modules/@xrkseek/server-http/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-inbound-public.d.ts","sourceRoot":"","sources":["../src/a2a-inbound-public.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"a2a-inbound-public.d.ts","sourceRoot":"","sources":["../src/a2a-inbound-public.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMjE,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAO9B,uDAAuD;AACvD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,sDAAsD;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,oCAAoC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAIT;AAmBD,6EAA6E;AAC7E,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,OAAO,CAAC,EAAE,yBAAyB,GAClC,MAAM,CAWR;AA6BD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE;IACL,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,yBAAyB,CAAC;CAC9C,GACA,OAAO,CAAC,MAAM,CAAC,CA2CjB;AAED,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE;IACtD,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,yBAAyB,GAAG,SAAS,CAAC;CACvE,GAAG,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAgD5E"}
|
|
@@ -1,22 +1,134 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readSessionEvents } from "@xrkseek/core-session";
|
|
2
|
+
import { createA2aInboundHandler, wrapA2aInboundText, } from "@xrkseek/a2a";
|
|
3
|
+
import { dispatchFaceMethod, lastAssistantBodyText, } from "@xrkseek/server-face";
|
|
2
4
|
function envOn(raw) {
|
|
3
5
|
const v = raw?.trim().toLowerCase();
|
|
4
6
|
return v === "1" || v === "true" || v === "yes" || v === "on";
|
|
5
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve whether A2A inbound routes are live.
|
|
10
|
+
* Non-empty `XRK_A2A_INBOUND` wins (CI bypass); else product `enabled`.
|
|
11
|
+
*/
|
|
12
|
+
export function resolveA2aInboundEnabled(env = process.env, product) {
|
|
13
|
+
const raw = String(env.XRK_A2A_INBOUND ?? "").trim();
|
|
14
|
+
if (raw !== "")
|
|
15
|
+
return envOn(raw);
|
|
16
|
+
return product?.enabled === true;
|
|
17
|
+
}
|
|
18
|
+
function inboundTimeoutMs(env, product) {
|
|
19
|
+
const fromProduct = product?.timeoutMs;
|
|
20
|
+
if (typeof fromProduct === "number" &&
|
|
21
|
+
Number.isFinite(fromProduct) &&
|
|
22
|
+
fromProduct >= 1_000) {
|
|
23
|
+
return Math.min(fromProduct, 600_000);
|
|
24
|
+
}
|
|
25
|
+
const n = Number(env.XRK_A2A_INBOUND_TIMEOUT_MS ?? "");
|
|
26
|
+
if (Number.isFinite(n) && n >= 1_000)
|
|
27
|
+
return Math.min(n, 600_000);
|
|
28
|
+
return 120_000;
|
|
29
|
+
}
|
|
30
|
+
/** Stable Face session id for an A2A context (Hermes `a2a-{slug}` style). */
|
|
31
|
+
export function a2aInboundSessionId(contextId, env = process.env, product) {
|
|
32
|
+
const pinned = env.XRK_A2A_INBOUND_SESSION?.trim() || product?.sessionId?.trim();
|
|
33
|
+
if (pinned)
|
|
34
|
+
return pinned;
|
|
35
|
+
const slug = contextId
|
|
36
|
+
.trim()
|
|
37
|
+
.replace(/[^a-zA-Z0-9._-]+/g, "-")
|
|
38
|
+
.replace(/^-+|-+$/g, "")
|
|
39
|
+
.slice(0, 64) || "default";
|
|
40
|
+
return `a2a-${slug}`;
|
|
41
|
+
}
|
|
42
|
+
function sleep(ms) {
|
|
43
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
44
|
+
}
|
|
45
|
+
async function ensureA2aSession(face, sessionId, peer) {
|
|
46
|
+
const created = await dispatchFaceMethod(face, "session.create", `a2a-c-${Date.now().toString(36)}`, {
|
|
47
|
+
sessionId,
|
|
48
|
+
label: `a2a:${peer}`,
|
|
49
|
+
});
|
|
50
|
+
if (created.result.ok)
|
|
51
|
+
return;
|
|
52
|
+
if (face.store.has(sessionId))
|
|
53
|
+
return;
|
|
54
|
+
throw new Error(created.result.ok === false
|
|
55
|
+
? created.result.error.message
|
|
56
|
+
: `session.create failed for ${sessionId}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Admit framed A2A text into Face and return the next assistant body
|
|
60
|
+
* (or a timeout / empty-turn note).
|
|
61
|
+
*/
|
|
62
|
+
export async function admitA2aInboundToFace(face, input) {
|
|
63
|
+
const env = input.env ?? process.env;
|
|
64
|
+
const product = input.product;
|
|
65
|
+
const sessionId = a2aInboundSessionId(input.contextId, env, product);
|
|
66
|
+
const framed = wrapA2aInboundText(input.peer, input.text);
|
|
67
|
+
await ensureA2aSession(face, sessionId, input.peer);
|
|
68
|
+
const beforeLen = readSessionEvents(face.store, sessionId).length;
|
|
69
|
+
const prompted = await dispatchFaceMethod(face, "session.prompt", `a2a-p-${input.taskId}`, {
|
|
70
|
+
sessionId,
|
|
71
|
+
mode: "queue",
|
|
72
|
+
content: [{ type: "text", text: framed }],
|
|
73
|
+
});
|
|
74
|
+
if (!prompted.result.ok) {
|
|
75
|
+
throw new Error(prompted.result.ok === false
|
|
76
|
+
? prompted.result.error.message
|
|
77
|
+
: `session.prompt failed for ${sessionId}`);
|
|
78
|
+
}
|
|
79
|
+
const timeoutMs = inboundTimeoutMs(env, product);
|
|
80
|
+
const deadline = Date.now() + timeoutMs;
|
|
81
|
+
while (Date.now() < deadline) {
|
|
82
|
+
const reply = lastAssistantBodyText(readSessionEvents(face.store, sessionId).slice(beforeLen));
|
|
83
|
+
if (reply)
|
|
84
|
+
return reply;
|
|
85
|
+
await sleep(150);
|
|
86
|
+
}
|
|
87
|
+
const late = lastAssistantBodyText(readSessionEvents(face.store, sessionId).slice(beforeLen));
|
|
88
|
+
if (late)
|
|
89
|
+
return late;
|
|
90
|
+
return (`[A2A] Face session ${sessionId} had no assistant reply within ` +
|
|
91
|
+
`${timeoutMs}ms (task ${input.taskId}; peer ${input.peer})`);
|
|
92
|
+
}
|
|
6
93
|
export function createA2aInboundPublicHandler(options) {
|
|
7
94
|
const env = options?.env ?? process.env;
|
|
8
|
-
if (!envOn(env.XRK_A2A_INBOUND)) {
|
|
9
|
-
return async () => false;
|
|
10
|
-
}
|
|
11
95
|
const host = (options?.host ?? env.XRK_A2A_PUBLIC_HOST ?? "127.0.0.1").trim();
|
|
12
96
|
const port = options?.port ??
|
|
13
97
|
(Number(env.XRK_A2A_PUBLIC_PORT) || Number(env.PORT) || 0);
|
|
14
98
|
const base = env.XRK_A2A_PUBLIC_URL?.trim() ||
|
|
15
99
|
(port > 0 ? `http://${host}:${port}/a2a` : `http://${host}/a2a`);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
100
|
+
const face = options?.face;
|
|
101
|
+
let inner;
|
|
102
|
+
const ensureInner = () => {
|
|
103
|
+
if (inner)
|
|
104
|
+
return inner;
|
|
105
|
+
inner = createA2aInboundHandler({
|
|
106
|
+
url: base,
|
|
107
|
+
env,
|
|
108
|
+
name: env.XRK_A2A_AGENT_NAME?.trim() || "XRK Harness",
|
|
109
|
+
description: face
|
|
110
|
+
? "XRK Host A2A inbound — message/send admits into a Face session."
|
|
111
|
+
: "XRK Host A2A inbound (Agent Card + message/send). Face session injection optional.",
|
|
112
|
+
...(face
|
|
113
|
+
? {
|
|
114
|
+
onMessage: (msg) => {
|
|
115
|
+
const product = options?.resolveProduct?.();
|
|
116
|
+
return admitA2aInboundToFace(face, {
|
|
117
|
+
...msg,
|
|
118
|
+
env,
|
|
119
|
+
...(product ? { product } : {}),
|
|
120
|
+
});
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
: {}),
|
|
124
|
+
});
|
|
125
|
+
return inner;
|
|
126
|
+
};
|
|
127
|
+
return async (req, res) => {
|
|
128
|
+
const product = options?.resolveProduct?.();
|
|
129
|
+
if (!resolveA2aInboundEnabled(env, product))
|
|
130
|
+
return false;
|
|
131
|
+
return ensureInner()(req, res);
|
|
132
|
+
};
|
|
21
133
|
}
|
|
22
134
|
//# sourceMappingURL=a2a-inbound-public.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"a2a-inbound-public.js","sourceRoot":"","sources":["../src/a2a-inbound-public.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"a2a-inbound-public.js","sourceRoot":"","sources":["../src/a2a-inbound-public.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,sBAAsB,CAAC;AAE9B,SAAS,KAAK,CAAC,GAAuB;IACpC,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,CAAC;AAChE,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAAyB,OAAO,CAAC,GAAG,EACpC,OAAmC;IAEnC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAsB,EACtB,OAAmC;IAEnC,MAAM,WAAW,GAAG,OAAO,EAAE,SAAS,CAAC;IACvC,IACE,OAAO,WAAW,KAAK,QAAQ;QAC/B,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC5B,WAAW,IAAI,KAAK,EACpB,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACvD,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,MAAyB,OAAO,CAAC,GAAG,EACpC,OAAmC;IAEnC,MAAM,MAAM,GACV,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACpE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,IAAI,GACR,SAAS;SACN,IAAI,EAAE;SACN,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC;IAC/B,OAAO,OAAO,IAAI,EAAE,CAAC;AACvB,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,IAAiB,EACjB,SAAiB,EACjB,IAAY;IAEZ,MAAM,OAAO,GAAG,MAAM,kBAAkB,CACtC,IAAI,EACJ,gBAAgB,EAChB,SAAS,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAClC;QACE,SAAS;QACT,KAAK,EAAE,OAAO,IAAI,EAAE;KACrB,CACF,CAAC;IACF,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO;IAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO;IACtC,MAAM,IAAI,KAAK,CACb,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK;QACzB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;QAC9B,CAAC,CAAC,6BAA6B,SAAS,EAAE,CAC7C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAiB,EACjB,KAOC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC;IAClE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CACvC,IAAI,EACJ,gBAAgB,EAChB,SAAS,KAAK,CAAC,MAAM,EAAE,EACvB;QACE,SAAS;QACT,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;KAC1C,CACF,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK;YAC1B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO;YAC/B,CAAC,CAAC,6BAA6B,SAAS,EAAE,CAC7C,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,qBAAqB,CACjC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAC1D,CAAC;QACF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,qBAAqB,CAChC,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAC1D,CAAC;IACF,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,CACL,sBAAsB,SAAS,iCAAiC;QAChE,GAAG,SAAS,YAAY,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,IAAI,GAAG,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,OAQ7C;IACC,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC,mBAAmB,IAAI,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,MAAM,IAAI,GACR,OAAO,EAAE,IAAI;QACb,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GACR,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE;QAC9B,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAE3B,IAAI,KAKS,CAAC;IAEd,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,KAAK,GAAG,uBAAuB,CAAC;YAC9B,GAAG,EAAE,IAAI;YACT,GAAG;YACH,IAAI,EAAE,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,IAAI,aAAa;YACrD,WAAW,EAAE,IAAI;gBACf,CAAC,CAAC,iEAAiE;gBACnE,CAAC,CAAC,oFAAoF;YACxF,GAAG,CAAC,IAAI;gBACN,CAAC,CAAC;oBACE,SAAS,EAAE,CAAC,GAAG,EAAE,EAAE;wBACjB,MAAM,OAAO,GAAG,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC;wBAC5C,OAAO,qBAAqB,CAAC,IAAI,EAAE;4BACjC,GAAG,GAAG;4BACN,GAAG;4BACH,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAChC,CAAC,CAAC;oBACL,CAAC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,MAAM,OAAO,GAAG,OAAO,EAAE,cAAc,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,CAAC;YAAE,OAAO,KAAK,CAAC;QAC1D,OAAO,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentHandle } from "@xrkseek/core-agent";
|
|
2
2
|
import type { LlmAdapter } from "@xrkseek/llm";
|
|
3
3
|
import { type SessionStore } from "@xrkseek/core-session";
|
|
4
|
+
import { type MemoryProvider } from "@xrkseek/exec-memory";
|
|
4
5
|
import { type HostConfig } from "@xrkseek/server-config";
|
|
5
6
|
import { type HarnessHttpServer } from "@xrkseek/server-http";
|
|
6
7
|
import { type PluginLoader, type RegisteredPlugin } from "@xrkseek/server-loader";
|
|
@@ -12,6 +13,7 @@ export type { InvalidateAllOpts } from "./agent-cache.js";
|
|
|
12
13
|
export { createStandingToolRegistry } from "./standing-tools.js";
|
|
13
14
|
export type { AgentResolveOpts, HostAgentCache } from "./agent-cache.js";
|
|
14
15
|
export type { HostLogger, HostSpawnOptions } from "./log.js";
|
|
16
|
+
export { a2aInboundSessionId, createA2aInboundPublicHandler, resolveA2aInboundEnabled, type A2aInboundProductSettings, } from "./a2a-inbound-public.js";
|
|
15
17
|
export { loadMcpToolPlugins, mcpDraftsToSpecs, mcpFingerprint, parseMcpServersEnv, readMcpAllowFromHostSettings, readMcpServersFromHostSettings, reconcileMcpToolPlugins, resetLastGoodHostMcpWireCaches, type McpRegisteredPlugin, type McpServerDraft, type McpServerSpec, type ReconcileMcpResult, } from "./mcp-wire.js";
|
|
16
18
|
/**
|
|
17
19
|
* `prepareArgv` for the Host-wide shared shell. Resolves the sandbox stack
|
|
@@ -176,10 +178,11 @@ export type AgentFactory = (input: {
|
|
|
176
178
|
/** Env overlay for video-gen (Credentials `XRK_VIDEO_GEN_OPENAI_KEY`). */
|
|
177
179
|
videoGenEnv?: NodeJS.ProcessEnv;
|
|
178
180
|
/**
|
|
179
|
-
* Face `curated-memory` product: pass `false` to skip MEMORY.md / USER.md
|
|
181
|
+
* Face `curated-memory` product: pass `false` to skip MEMORY.md / USER.md;
|
|
182
|
+
* pass a provider to share Host Phase1 consolidation store with Agent tools.
|
|
180
183
|
* `XRK_CURATED_MEMORY=0` env still force-disables for CI.
|
|
181
184
|
*/
|
|
182
|
-
curatedMemory?: false;
|
|
185
|
+
curatedMemory?: false | MemoryProvider;
|
|
183
186
|
/**
|
|
184
187
|
* Face `locale` product (Settings SoT) — drives the harness `language` prompt
|
|
185
188
|
* section so reasoning follows the UI language.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAQL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,8 @@ import { createProviderRegistry } from "@xrkseek/llm-registry";
|
|
|
4
4
|
import { loadPolicyRulesetFile } from "@xrkseek/policy";
|
|
5
5
|
import { flattenText, isHumanUserMessageSource } from "@xrkseek/protocol";
|
|
6
6
|
import { effectiveSandboxMode, shouldConfineSandbox, } from "@xrkseek/protocol";
|
|
7
|
-
import { consolidateCuratedMemoryPhase1, consolidateCuratedMemoryPhase2,
|
|
7
|
+
import { consolidateCuratedMemoryPhase1, consolidateCuratedMemoryPhase2, resolveMemoryProvider, } from "@xrkseek/exec-memory";
|
|
8
|
+
import { runSkillCurator } from "@xrkseek/workspace";
|
|
8
9
|
import { resolveSecretStore } from "@xrkseek/secrets";
|
|
9
10
|
import { hostSettingsPath, defaultSpillDir, resolveXrkHome } from "@xrkseek/server-config";
|
|
10
11
|
import { installOutboundHttpProxy } from "./http-proxy.js";
|
|
@@ -12,7 +13,7 @@ import { mountInvariantsFailFast } from "./invariants-fail-fast.js";
|
|
|
12
13
|
import { watchPolicyFile } from "./policy-file-watch.js";
|
|
13
14
|
import { createA2aInboundPublicHandler } from "./a2a-inbound-public.js";
|
|
14
15
|
import { applyXrkProductBootPolicy, chainPublicHandlers, ensureDshCompatHostPlugin, createLiveHostPluginsPublicHandler, createHttpServer, createXrkPluginPublicHandler, createSidebarPublicHandler, prewarmDshCompatAdapters, shutdownDshCompatServices, applyHostPackageByName, stopHostPackageFiber, listHostAppliedPackages, invokeDshCompatRpc, attachDshCompatUpgrades, DSH_SETTINGS_NAMESPACES, DSH_SETTINGS_DEFAULTS, runPluginMutate, ensureXrkPlatformClientBootEntries, injectBootIntoHtml, injectMobileAccessShellIntoHtml, loadBootManifestFromWebDist, mergeWebBootManifests, resolveWebBootManifest, createXrkWalletPort, createMobileAccessGateChecker, createMobileAccessGateHandler, loadSidebarPrefs, } from "@xrkseek/server-http";
|
|
15
|
-
import { attachFaceUpgrades, bindSubagentTools, bindSessionQueryTools, createFaceRuntime, effectiveHostApiKey, isLoopbackAddress, listCredentialSlots, peekSettingsYamlSection, publishRemoteEvent, createSessionRoutingLlm, liveRouteAllowsImageInput, resolveSessionCwd, canonicalAgentPresetId, resolveAgentPresetProfile, DEFAULT_MAX_DEPTH, DEFAULT_MAX_ACTIVE_CHILDREN, tryHandleFaceHttp, isPluginSoftDisabledAt, readDisabledPluginIdsAt, readManagedPackageIndexAt, reconcileManagedProcessPlugins, snapshotSessionWorkspace, } from "@xrkseek/server-face";
|
|
16
|
+
import { attachFaceUpgrades, bindSubagentTools, bindSessionQueryTools, createFaceRuntime, effectiveHostApiKey, isLoopbackAddress, listCredentialSlots, peekSettingsYamlSection, publishRemoteEvent, createSessionRoutingLlm, liveRouteAllowsImageInput, resolveSessionCwd, canonicalAgentPresetId, resolveAgentPresetProfile, DEFAULT_MAX_DEPTH, DEFAULT_MAX_ACTIVE_CHILDREN, tryHandleFaceHttp, isPluginSoftDisabledAt, readDisabledPluginIdsAt, readManagedPackageIndexAt, reconcileManagedProcessPlugins, snapshotSessionWorkspace, SNAPSHOT_DRAIN_BUDGET_MS, } from "@xrkseek/server-face";
|
|
16
17
|
import { createPluginLoader, composeHostPolicyEngine, wireCompositionChannels, wireCompositionLlm, collectChannelPluginRegistrations, } from "@xrkseek/server-loader";
|
|
17
18
|
import { existsSync } from "node:fs";
|
|
18
19
|
import { access } from "node:fs/promises";
|
|
@@ -41,11 +42,12 @@ import { createSandboxStack, parseSandboxProduct, } from "@xrkseek/exec-sandbox"
|
|
|
41
42
|
import { createBrowserRuntimeRegistry, setOutboundAllowlistAuditObserver } from "@xrkseek/exec-web";
|
|
42
43
|
import { createLocalSubprocess } from "@xrkseek/exec-subprocess";
|
|
43
44
|
import { resolveExecEnvironment, } from "@xrkseek/exec-environment";
|
|
44
|
-
import {
|
|
45
|
+
import { createSshExecutionWorldReady, resolveSshConfig, } from "@xrkseek/exec-ssh";
|
|
45
46
|
/** True while an unattended cron agent turn is running — skip cron tools to avoid recursion. */
|
|
46
47
|
const cronAgentDepth = new AsyncLocalStorage();
|
|
47
48
|
export { createHostAgentCache, HOST_PLUGINS_KEY } from "./agent-cache.js";
|
|
48
49
|
export { createStandingToolRegistry } from "./standing-tools.js";
|
|
50
|
+
export { a2aInboundSessionId, createA2aInboundPublicHandler, resolveA2aInboundEnabled, } from "./a2a-inbound-public.js";
|
|
49
51
|
export { loadMcpToolPlugins, mcpDraftsToSpecs, mcpFingerprint, parseMcpServersEnv, readMcpAllowFromHostSettings, readMcpServersFromHostSettings, reconcileMcpToolPlugins, resetLastGoodHostMcpWireCaches, } from "./mcp-wire.js";
|
|
50
52
|
/**
|
|
51
53
|
* AbortError with a readable reason. Used by the session drain snapshot race
|
|
@@ -357,7 +359,7 @@ export function createHostManager() {
|
|
|
357
359
|
if (sshConfig) {
|
|
358
360
|
execWorldKind = "ssh";
|
|
359
361
|
localHostRoot = config.runtime.workspaceRoot;
|
|
360
|
-
sshWorld =
|
|
362
|
+
sshWorld = await createSshExecutionWorldReady({ config: sshConfig });
|
|
361
363
|
// Tool coordinates are the remote workspace; Face session cwd follows.
|
|
362
364
|
config.runtime.workspaceRoot =
|
|
363
365
|
sshWorld.workspaceRoot;
|
|
@@ -425,6 +427,13 @@ export function createHostManager() {
|
|
|
425
427
|
const ensureSession = (sid) => newSession(store, sid).id;
|
|
426
428
|
const faceBox = {};
|
|
427
429
|
/** Session-end Phase1 (+ optional Phase2 LLM): fold leftover notes into MEMORY.md. */
|
|
430
|
+
let curatedMemProvider;
|
|
431
|
+
const getCuratedMemProvider = () => {
|
|
432
|
+
if (!curatedMemProvider) {
|
|
433
|
+
curatedMemProvider = resolveMemoryProvider();
|
|
434
|
+
}
|
|
435
|
+
return curatedMemProvider;
|
|
436
|
+
};
|
|
428
437
|
const consolidateCuratedMemoryForSession = (sessionId) => {
|
|
429
438
|
try {
|
|
430
439
|
const rt = faceBox.runtime;
|
|
@@ -462,7 +471,7 @@ export function createHostManager() {
|
|
|
462
471
|
}
|
|
463
472
|
if (userTexts.length === 0)
|
|
464
473
|
return;
|
|
465
|
-
const memStore =
|
|
474
|
+
const memStore = getCuratedMemProvider();
|
|
466
475
|
void (async () => {
|
|
467
476
|
await consolidateCuratedMemoryPhase1(memStore, { userTexts });
|
|
468
477
|
if (!phase2Llm)
|
|
@@ -486,6 +495,16 @@ export function createHostManager() {
|
|
|
486
495
|
/* best-effort — Host stop / archive must continue */
|
|
487
496
|
}
|
|
488
497
|
};
|
|
498
|
+
const runWorkspaceSkillCurator = () => {
|
|
499
|
+
try {
|
|
500
|
+
void runSkillCurator({
|
|
501
|
+
workspaceRoot: config.runtime.workspaceRoot,
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
catch {
|
|
505
|
+
/* best-effort — Host stop must continue */
|
|
506
|
+
}
|
|
507
|
+
};
|
|
489
508
|
const llmResolverBox = {};
|
|
490
509
|
const pluginSettingsBox = {};
|
|
491
510
|
const sessionCwdBox = {};
|
|
@@ -651,7 +670,7 @@ export function createHostManager() {
|
|
|
651
670
|
: {}),
|
|
652
671
|
...(pluginSettings.curatedMemory === false
|
|
653
672
|
? { curatedMemory: false }
|
|
654
|
-
: {}),
|
|
673
|
+
: { curatedMemory: getCuratedMemProvider() }),
|
|
655
674
|
});
|
|
656
675
|
if (faceBox.approvals) {
|
|
657
676
|
agent.setApprovalHandler(faceBox.approvals.handlerFor(sessionId));
|
|
@@ -719,14 +738,12 @@ export function createHostManager() {
|
|
|
719
738
|
createDrain: (sessionId) => async ({ signal }) => {
|
|
720
739
|
const snapshot = () => {
|
|
721
740
|
const face = faceBox.runtime;
|
|
722
|
-
//
|
|
723
|
-
// own deadline (SNAPSHOT_TIMEOUT_MS), so a hung git/fs call
|
|
724
|
-
// degrades to "no checkpoint" instead of blocking the turn. The
|
|
725
|
-
// drain loop's abort check covers cancellation; no shared state
|
|
726
|
-
// here, so no signal listener bookkeeping is needed.
|
|
741
|
+
// Soft-bounded; overlaps LLM via continueTurn.beforeTools.
|
|
727
742
|
if (!face || signal.aborted)
|
|
728
743
|
return Promise.resolve();
|
|
729
|
-
return snapshotSessionWorkspace(face, sessionId
|
|
744
|
+
return snapshotSessionWorkspace(face, sessionId, {
|
|
745
|
+
budgetMs: SNAPSHOT_DRAIN_BUDGET_MS,
|
|
746
|
+
}).then(() => undefined);
|
|
730
747
|
};
|
|
731
748
|
try {
|
|
732
749
|
const agent = await resolveAgent(sessionId);
|
|
@@ -737,10 +754,16 @@ export function createHostManager() {
|
|
|
737
754
|
if (signal.aborted) {
|
|
738
755
|
throw hostAbortError(signal.reason);
|
|
739
756
|
}
|
|
740
|
-
//
|
|
741
|
-
//
|
|
742
|
-
await
|
|
743
|
-
|
|
757
|
+
// Hermes-style: snapshot worktree before tools mutate files.
|
|
758
|
+
// Start immediately and pass as beforeTools so it overlaps the
|
|
759
|
+
// LLM; do not await serially before continueTurn (that pinned
|
|
760
|
+
// Queue/Steer chrome on large monorepos).
|
|
761
|
+
const snapP = snapshot();
|
|
762
|
+
const result = await agent.continueTurn({
|
|
763
|
+
signal,
|
|
764
|
+
beforeTools: () => snapP,
|
|
765
|
+
});
|
|
766
|
+
await snapP;
|
|
744
767
|
lastDrainResult.set(sessionId, result);
|
|
745
768
|
}
|
|
746
769
|
}
|
|
@@ -1602,6 +1625,25 @@ export function createHostManager() {
|
|
|
1602
1625
|
tryHandlePublic: chainPublicHandlers(createA2aInboundPublicHandler({
|
|
1603
1626
|
host: config.runtime.host,
|
|
1604
1627
|
port: config.runtime.port,
|
|
1628
|
+
face: faceRuntime,
|
|
1629
|
+
resolveProduct: () => {
|
|
1630
|
+
try {
|
|
1631
|
+
const ns = faceRuntime.settingsNamespaces.view("a2a-inbound")
|
|
1632
|
+
.value;
|
|
1633
|
+
return {
|
|
1634
|
+
enabled: ns.enabled === true,
|
|
1635
|
+
...(typeof ns.sessionId === "string"
|
|
1636
|
+
? { sessionId: ns.sessionId }
|
|
1637
|
+
: {}),
|
|
1638
|
+
...(typeof ns.timeoutMs === "number"
|
|
1639
|
+
? { timeoutMs: ns.timeoutMs }
|
|
1640
|
+
: {}),
|
|
1641
|
+
};
|
|
1642
|
+
}
|
|
1643
|
+
catch {
|
|
1644
|
+
return undefined;
|
|
1645
|
+
}
|
|
1646
|
+
},
|
|
1605
1647
|
}), createMobileAccessGateHandler({ xrkHome: resolveXrkHome() }), createSidebarPublicHandler({
|
|
1606
1648
|
xrkHome: resolveXrkHome(),
|
|
1607
1649
|
defaultCwd: faceRuntime.workspaceRoot,
|
|
@@ -1720,6 +1762,7 @@ export function createHostManager() {
|
|
|
1720
1762
|
for (const sessionId of store.list()) {
|
|
1721
1763
|
consolidateCuratedMemoryForSession(sessionId);
|
|
1722
1764
|
}
|
|
1765
|
+
runWorkspaceSkillCurator();
|
|
1723
1766
|
await http.close();
|
|
1724
1767
|
await agentCache.dispose();
|
|
1725
1768
|
if (sharedShell) {
|