@chorus-aidlc/chorus-openclaw-plugin 0.10.0 → 0.11.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/connection-state.d.ts +35 -0
- package/dist/connection-state.d.ts.map +1 -0
- package/dist/connection-state.js +52 -0
- package/dist/connection-state.js.map +1 -0
- package/dist/control-handler.d.ts +73 -0
- package/dist/control-handler.d.ts.map +1 -0
- package/dist/control-handler.js +135 -0
- package/dist/control-handler.js.map +1 -0
- package/dist/daemon-client.d.ts +203 -0
- package/dist/daemon-client.d.ts.map +1 -0
- package/dist/daemon-client.js +469 -0
- package/dist/daemon-client.js.map +1 -0
- package/dist/daemon-rest-client.d.ts +86 -0
- package/dist/daemon-rest-client.d.ts.map +1 -0
- package/dist/daemon-rest-client.js +196 -0
- package/dist/daemon-rest-client.js.map +1 -0
- package/dist/event-router.d.ts +31 -6
- package/dist/event-router.d.ts.map +1 -1
- package/dist/event-router.js +58 -27
- package/dist/event-router.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +106 -7
- package/dist/index.js.map +1 -1
- package/dist/lineage.d.ts +44 -0
- package/dist/lineage.d.ts.map +1 -0
- package/dist/lineage.js +116 -0
- package/dist/lineage.js.map +1 -0
- package/dist/mcp-registration.d.ts.map +1 -1
- package/dist/mcp-registration.js +5 -4
- package/dist/mcp-registration.js.map +1 -1
- package/dist/sse-listener.d.ts +34 -0
- package/dist/sse-listener.d.ts.map +1 -1
- package/dist/sse-listener.js +78 -4
- package/dist/sse-listener.js.map +1 -1
- package/dist/wake.d.ts +20 -0
- package/dist/wake.d.ts.map +1 -1
- package/dist/wake.js +56 -0
- package/dist/wake.js.map +1 -1
- package/package.json +1 -1
- package/skills/brainstorm/SKILL.md +1 -1
- package/skills/chorus/SKILL.md +36 -5
- package/skills/develop/SKILL.md +1 -1
- package/skills/idea/SKILL.md +1 -1
- package/skills/openspec-aware/SKILL.md +1 -1
- package/skills/proposal/SKILL.md +1 -1
- package/skills/proposal-reviewer/SKILL.md +1 -1
- package/skills/quick-dev/SKILL.md +1 -1
- package/skills/review/SKILL.md +1 -1
- package/skills/task-reviewer/SKILL.md +1 -1
- package/skills/yolo/SKILL.md +1 -1
- package/src/connection-state.ts +66 -0
- package/src/control-handler.ts +219 -0
- package/src/daemon-client.ts +622 -0
- package/src/daemon-rest-client.ts +312 -0
- package/src/event-router.ts +103 -33
- package/src/index.ts +113 -8
- package/src/lineage.ts +157 -0
- package/src/mcp-registration.ts +6 -19
- package/src/openclaw-sdk.d.ts +232 -1
- package/src/sse-listener.ts +117 -5
- package/src/wake.ts +69 -26
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGrE,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface LineageLogger {
|
|
2
|
+
info: (msg: string) => void;
|
|
3
|
+
warn: (msg: string) => void;
|
|
4
|
+
error: (msg: string) => void;
|
|
5
|
+
}
|
|
6
|
+
/** The idea attribution of an entity. Both null when there's no idea ancestor. */
|
|
7
|
+
export interface LineageAttribution {
|
|
8
|
+
rootIdeaUuid: string | null;
|
|
9
|
+
directIdeaUuid: string | null;
|
|
10
|
+
}
|
|
11
|
+
export interface LineageResolverOptions {
|
|
12
|
+
/** Chorus base URL. */
|
|
13
|
+
url: string;
|
|
14
|
+
/** `cho_` agent API key. */
|
|
15
|
+
apiKey: string;
|
|
16
|
+
logger?: LineageLogger;
|
|
17
|
+
/** Injectable for tests (defaults to global fetch). */
|
|
18
|
+
fetchImpl?: typeof fetch;
|
|
19
|
+
}
|
|
20
|
+
export declare class LineageResolver {
|
|
21
|
+
private readonly url;
|
|
22
|
+
private readonly apiKey;
|
|
23
|
+
private readonly logger;
|
|
24
|
+
private readonly fetchImpl;
|
|
25
|
+
/** Per-run cache keyed by `${type}:${uuid}` so repeats single-flight. */
|
|
26
|
+
private readonly cache;
|
|
27
|
+
constructor(opts: LineageResolverOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Resolve an entity to its idea attribution `{ rootIdeaUuid, directIdeaUuid }`.
|
|
30
|
+
* One REST call per entity; the cache single-flights repeats. On any failure both
|
|
31
|
+
* ids are null (caller falls back to a per-entity key). Never throws.
|
|
32
|
+
*/
|
|
33
|
+
resolve(event: {
|
|
34
|
+
entityType?: string;
|
|
35
|
+
entityUuid?: string;
|
|
36
|
+
}): Promise<LineageAttribution>;
|
|
37
|
+
/**
|
|
38
|
+
* Call GET /api/entities/{type}/{uuid}/root-idea and return
|
|
39
|
+
* `{ rootIdeaUuid, directIdeaUuid }` (each string | null). Returns both null on any
|
|
40
|
+
* error so the caller degrades to a per-entity session key — never throws.
|
|
41
|
+
*/
|
|
42
|
+
private resolveViaServer;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=lineage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../src/lineage.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAID,kFAAkF;AAClF,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAID,MAAM,WAAW,sBAAsB;IACrC,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,uDAAuD;IACvD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,yEAAyE;IACzE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;gBAEnD,IAAI,EAAE,sBAAsB;IAOxC;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwB/B;;;;OAIG;YACW,gBAAgB;CA2D/B"}
|
package/dist/lineage.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// packages/openclaw-plugin/src/lineage.ts
|
|
2
|
+
// Resolves any inbound Chorus notification/entity to its idea attribution, so the
|
|
3
|
+
// OpenClaw daemon client can anchor ONE embedded-agent session per DIRECT idea (the
|
|
4
|
+
// in-process analog of `claude --resume <directIdeaUuid>`) while reporting the ROOT
|
|
5
|
+
// idea in its execution snapshot for observability.
|
|
6
|
+
//
|
|
7
|
+
// TS mirror of `cli/lineage.mjs` (`LineageResolver`) — same single-source-of-truth
|
|
8
|
+
// REST contract, re-stated in TS because the plugin publishes standalone (it cannot
|
|
9
|
+
// import a file under `cli/`; see daemon-rest-client.ts for the same rationale).
|
|
10
|
+
//
|
|
11
|
+
// Resolution is fully SERVER-SIDE: every entity is resolved by a single call to the
|
|
12
|
+
// standalone REST endpoint
|
|
13
|
+
// GET /api/entities/{type}/{uuid}/root-idea (Bearer <cho_ agent key>)
|
|
14
|
+
// which returns BOTH `rootIdeaUuid` (topmost ancestor) and `directIdeaUuid` (the
|
|
15
|
+
// first idea node on the lineage). There is intentionally NO client-side lineage
|
|
16
|
+
// walk. On any failure (unreachable server, non-2xx, malformed body) it returns both
|
|
17
|
+
// ids as null so the caller falls back to a per-entity session key — "no idea
|
|
18
|
+
// ancestor" is a normal, non-fatal outcome. Uses global fetch (Node 18+) → no new dep.
|
|
19
|
+
const NOOP_LOGGER = { info() { }, warn() { }, error() { } };
|
|
20
|
+
const NONE = { rootIdeaUuid: null, directIdeaUuid: null };
|
|
21
|
+
export class LineageResolver {
|
|
22
|
+
url;
|
|
23
|
+
apiKey;
|
|
24
|
+
logger;
|
|
25
|
+
fetchImpl;
|
|
26
|
+
/** Per-run cache keyed by `${type}:${uuid}` so repeats single-flight. */
|
|
27
|
+
cache = new Map();
|
|
28
|
+
constructor(opts) {
|
|
29
|
+
this.url = opts.url.replace(/\/$/, "");
|
|
30
|
+
this.apiKey = opts.apiKey;
|
|
31
|
+
this.logger = opts.logger ?? NOOP_LOGGER;
|
|
32
|
+
this.fetchImpl = opts.fetchImpl ?? globalThis.fetch;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolve an entity to its idea attribution `{ rootIdeaUuid, directIdeaUuid }`.
|
|
36
|
+
* One REST call per entity; the cache single-flights repeats. On any failure both
|
|
37
|
+
* ids are null (caller falls back to a per-entity key). Never throws.
|
|
38
|
+
*/
|
|
39
|
+
async resolve(event) {
|
|
40
|
+
const entityType = event?.entityType;
|
|
41
|
+
const entityUuid = event?.entityUuid;
|
|
42
|
+
if (!entityType || !entityUuid) {
|
|
43
|
+
this.logger.warn("[Chorus] lineage: event missing entityType/entityUuid");
|
|
44
|
+
return NONE;
|
|
45
|
+
}
|
|
46
|
+
// An ad-hoc conversation (`daemon_session`) has NO idea ancestor by definition,
|
|
47
|
+
// and the root-idea endpoint does not accept it (it would 400). Short-circuit to
|
|
48
|
+
// the null attribution the caller would fall back to anyway — avoiding a
|
|
49
|
+
// guaranteed-failing round-trip + a spurious warn on every ad-hoc resume. The
|
|
50
|
+
// caller then anchors the session on the entity uuid (= the ad-hoc sessionId).
|
|
51
|
+
if (entityType === "daemon_session") {
|
|
52
|
+
return NONE;
|
|
53
|
+
}
|
|
54
|
+
const cacheKey = `${entityType}:${entityUuid}`;
|
|
55
|
+
const cached = this.cache.get(cacheKey);
|
|
56
|
+
if (cached)
|
|
57
|
+
return cached;
|
|
58
|
+
const result = await this.resolveViaServer(entityType, entityUuid);
|
|
59
|
+
this.cache.set(cacheKey, result);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Call GET /api/entities/{type}/{uuid}/root-idea and return
|
|
64
|
+
* `{ rootIdeaUuid, directIdeaUuid }` (each string | null). Returns both null on any
|
|
65
|
+
* error so the caller degrades to a per-entity session key — never throws.
|
|
66
|
+
*/
|
|
67
|
+
async resolveViaServer(entityType, entityUuid) {
|
|
68
|
+
const endpoint = `${this.url}/api/entities/${encodeURIComponent(entityType)}/` +
|
|
69
|
+
`${encodeURIComponent(entityUuid)}/root-idea`;
|
|
70
|
+
let response;
|
|
71
|
+
try {
|
|
72
|
+
response = await this.fetchImpl(endpoint, {
|
|
73
|
+
headers: { Authorization: `Bearer ${this.apiKey}`, Accept: "application/json" },
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
this.logger.warn(`[Chorus] lineage: request failed for ${entityType}:${entityUuid}: ${err}`);
|
|
78
|
+
return NONE;
|
|
79
|
+
}
|
|
80
|
+
if (!response.ok) {
|
|
81
|
+
this.logger.warn(`[Chorus] lineage: server returned ${response.status} for ${entityType}:${entityUuid}`);
|
|
82
|
+
return NONE;
|
|
83
|
+
}
|
|
84
|
+
let body;
|
|
85
|
+
try {
|
|
86
|
+
body = await response.json();
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
this.logger.warn(`[Chorus] lineage: bad JSON for ${entityType}:${entityUuid}: ${err}`);
|
|
90
|
+
return NONE;
|
|
91
|
+
}
|
|
92
|
+
// API envelope: { success: true, data: { rootIdeaUuid, directIdeaUuid, ... } }.
|
|
93
|
+
const data = body && typeof body === "object" ? body.data : undefined;
|
|
94
|
+
if (!data || typeof data !== "object" || !("rootIdeaUuid" in data)) {
|
|
95
|
+
this.logger.warn(`[Chorus] lineage: unexpected response shape for ${entityType}:${entityUuid}`);
|
|
96
|
+
return NONE;
|
|
97
|
+
}
|
|
98
|
+
const root = data.rootIdeaUuid;
|
|
99
|
+
if (root !== null && typeof root !== "string") {
|
|
100
|
+
this.logger.warn(`[Chorus] lineage: non-string rootIdeaUuid for ${entityType}:${entityUuid}`);
|
|
101
|
+
return NONE;
|
|
102
|
+
}
|
|
103
|
+
// directIdeaUuid is the session anchor. Older servers may omit it: treat a
|
|
104
|
+
// missing/non-string value as null so the caller falls back to a per-entity key.
|
|
105
|
+
const directRaw = data.directIdeaUuid;
|
|
106
|
+
const direct = typeof directRaw === "string" ? directRaw : null;
|
|
107
|
+
if (directRaw !== undefined && directRaw !== null && typeof directRaw !== "string") {
|
|
108
|
+
this.logger.warn(`[Chorus] lineage: non-string directIdeaUuid for ${entityType}:${entityUuid}`);
|
|
109
|
+
}
|
|
110
|
+
const resolvedVia = data.resolvedVia;
|
|
111
|
+
this.logger.info(`[Chorus] lineage: ${entityType}:${entityUuid} → root ${root ?? "none"}, direct ${direct ?? "none"}` +
|
|
112
|
+
(typeof resolvedVia === "string" ? ` (${resolvedVia})` : ""));
|
|
113
|
+
return { rootIdeaUuid: root, directIdeaUuid: direct };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=lineage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../src/lineage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-registration.d.ts","sourceRoot":"","sources":["../src/mcp-registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA8CtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp-registration.d.ts","sourceRoot":"","sources":["../src/mcp-registration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA8CtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,kBAAkB,GACtB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
package/dist/mcp-registration.js
CHANGED
|
@@ -57,10 +57,11 @@ export async function ensureChorusMcpServer(api, cfg) {
|
|
|
57
57
|
}
|
|
58
58
|
const desired = buildDesiredEntry(cfg.chorusUrl, cfg.apiKey);
|
|
59
59
|
try {
|
|
60
|
-
// `api.runtime` is
|
|
61
|
-
// config
|
|
62
|
-
//
|
|
63
|
-
// (
|
|
60
|
+
// `api.runtime` is now typed (`OpenClawPluginRuntime`) via the SDK shim; its
|
|
61
|
+
// `config` slice mirrors the real `PluginRuntimeCore.config` API
|
|
62
|
+
// (../openclaw/src/plugins/runtime/types-core.ts:145) — `current()` reads the
|
|
63
|
+
// live snapshot, `mutateConfigFile(...)` writes the `mcp.servers.chorus`
|
|
64
|
+
// entry. No `unknown` cast needed.
|
|
64
65
|
const runtimeConfig = api.runtime?.config;
|
|
65
66
|
if (!runtimeConfig?.mutateConfigFile) {
|
|
66
67
|
logger.error("[Chorus] MCP server registration failed — runtime.config.mutateConfigFile is unavailable on this host");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-registration.js","sourceRoot":"","sources":["../src/mcp-registration.ts"],"names":[],"mappings":"AAgBA;;GAEG;AACH,SAAS,iBAAiB,CAAC,SAAiB,EAAE,MAAc;IAC1D,OAAO;QACL,GAAG,EAAE,IAAI,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE;QAC9C,SAAS,EAAE,iBAAiB;QAC5B,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;KAC/C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,QAAiB,EAAE,OAA6B;IACpE,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,CAAC,GAAG,QAIT,CAAC;IACF,OAAO,CACL,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;QACrB,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QACjC,CAAC,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,aAAa,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAsB,EACtB,GAAuB;IAEvB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAE1B,8DAA8D;IAC9D,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CACT,wEAAwE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC7F,CAAC;QACF,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAU,EAAE,GAAG,CAAC,MAAO,CAAC,CAAC;IAE/D,IAAI,CAAC;QACH,
|
|
1
|
+
{"version":3,"file":"mcp-registration.js","sourceRoot":"","sources":["../src/mcp-registration.ts"],"names":[],"mappings":"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"}
|
package/dist/sse-listener.d.ts
CHANGED
|
@@ -6,10 +6,41 @@ export interface SseNotificationEvent {
|
|
|
6
6
|
unreadCount?: number;
|
|
7
7
|
[key: string]: unknown;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* The server's post-handshake `connection_registered` data event (carrying the
|
|
11
|
+
* DaemonConnection uuid this stream registered as). Forked to `onConnectionId`,
|
|
12
|
+
* NEVER to the wake path. See api/events/notifications/route.ts.
|
|
13
|
+
*/
|
|
14
|
+
export interface SseControlEvent {
|
|
15
|
+
type: string;
|
|
16
|
+
command?: string;
|
|
17
|
+
connectionUuid?: string;
|
|
18
|
+
targetConnectionUuid?: string;
|
|
19
|
+
entityType?: string;
|
|
20
|
+
entityUuid?: string;
|
|
21
|
+
turnUuid?: string;
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
9
24
|
export interface ChorusSseListenerOptions {
|
|
10
25
|
chorusUrl: string;
|
|
11
26
|
apiKey: string;
|
|
12
27
|
onEvent: (event: SseNotificationEvent) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Called once the server reports which DaemonConnection this stream registered
|
|
30
|
+
* as (the `connection_registered` data event). Stored as the connection
|
|
31
|
+
* identity (connection-state) and refreshed on every reconnect. This event is
|
|
32
|
+
* NOT a wake — it is forked here BEFORE `onEvent`, so the router never sees it.
|
|
33
|
+
*/
|
|
34
|
+
onConnectionId?: (connectionUuid: string) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Called for a `type:"control"` data event (the reverse control channel). This
|
|
37
|
+
* is NOT a wake: the control event is forked here BEFORE `onEvent`, so the
|
|
38
|
+
* router / wake path never sees it and it can never spawn a new embedded-agent
|
|
39
|
+
* run for the control event itself. The handler verifies the target connection
|
|
40
|
+
* (+ entity, for interrupt) and routes to the behavior hooks — see
|
|
41
|
+
* control-handler.ts.
|
|
42
|
+
*/
|
|
43
|
+
onControl?: (event: SseControlEvent) => void;
|
|
13
44
|
onReconnect: () => Promise<void>;
|
|
14
45
|
logger: {
|
|
15
46
|
info: (msg: string) => void;
|
|
@@ -19,6 +50,9 @@ export interface ChorusSseListenerOptions {
|
|
|
19
50
|
}
|
|
20
51
|
export declare class ChorusSseListener {
|
|
21
52
|
private readonly opts;
|
|
53
|
+
private readonly onConnectionId;
|
|
54
|
+
private readonly onControl;
|
|
55
|
+
private readonly endpoint;
|
|
22
56
|
private _status;
|
|
23
57
|
private abortController;
|
|
24
58
|
private reconnectTimer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-listener.d.ts","sourceRoot":"","sources":["../src/sse-listener.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sse-listener.d.ts","sourceRoot":"","sources":["../src/sse-listener.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC7C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACpG;AA+BD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmC;IAClE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,cAAc,CAAoB;gBAE9B,IAAI,EAAE,wBAAwB;IAqB1C,IAAI,MAAM,IAAI,iBAAiB,CAE9B;IAED,wGAAwG;IAClG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD9B,2CAA2C;IAC3C,UAAU,IAAI,IAAI;YAcJ,aAAa;IAsC3B,OAAO,CAAC,cAAc;IAiDtB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,mBAAmB;CAM5B"}
|
package/dist/sse-listener.js
CHANGED
|
@@ -1,13 +1,58 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { hostname } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
1
5
|
const INITIAL_DELAY_MS = 1_000;
|
|
2
6
|
const MAX_DELAY_MS = 30_000;
|
|
7
|
+
// Plugin version — read from this package's own package.json so the value the
|
|
8
|
+
// server's DaemonConnection registry records always matches the installed
|
|
9
|
+
// plugin rather than a hardcoded literal. The compiled output lives in dist/
|
|
10
|
+
// and the source in src/; both are one level under the package root, so
|
|
11
|
+
// "../package.json" resolves to the package manifest in either case. Defensive:
|
|
12
|
+
// fall back to "0.0.0" if the manifest is unreadable — a missing version must
|
|
13
|
+
// never block the listener from connecting.
|
|
14
|
+
function readPluginVersion() {
|
|
15
|
+
try {
|
|
16
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
17
|
+
const pkg = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
|
|
18
|
+
return typeof pkg.version === "string" && pkg.version ? pkg.version : "0.0.0";
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return "0.0.0";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const PLUGIN_VERSION = readPluginVersion();
|
|
25
|
+
// Plugin process start time, captured once at module load. Reconnects re-send
|
|
26
|
+
// this original start (recomputed to ISO-8601 at URL-construction time), not the
|
|
27
|
+
// reconnect moment.
|
|
28
|
+
const PROCESS_STARTED_AT = new Date();
|
|
3
29
|
export class ChorusSseListener {
|
|
4
30
|
opts;
|
|
31
|
+
onConnectionId;
|
|
32
|
+
onControl;
|
|
33
|
+
endpoint;
|
|
5
34
|
_status = "disconnected";
|
|
6
35
|
abortController = null;
|
|
7
36
|
reconnectTimer = null;
|
|
8
37
|
reconnectDelay = INITIAL_DELAY_MS;
|
|
9
38
|
constructor(opts) {
|
|
10
39
|
this.opts = opts;
|
|
40
|
+
// Default the optional bidirectional callbacks to no-ops so a caller that
|
|
41
|
+
// only wants the wake path (no daemon reporting) still works unchanged.
|
|
42
|
+
this.onConnectionId = opts.onConnectionId ?? (() => { });
|
|
43
|
+
this.onControl = opts.onControl ?? (() => { });
|
|
44
|
+
// Build the self-reporting endpoint URL once and reuse it across every
|
|
45
|
+
// (re)connect, so the reconnect path always re-sends the same params. The
|
|
46
|
+
// CLI reports clientType=openclaw so the server's connection registry can
|
|
47
|
+
// distinguish an OpenClaw daemon from a chorus CLI (claude_code) daemon.
|
|
48
|
+
// These params are display-only metadata; auth remains the Bearer header.
|
|
49
|
+
const params = new URLSearchParams({
|
|
50
|
+
clientType: "openclaw",
|
|
51
|
+
clientVersion: PLUGIN_VERSION,
|
|
52
|
+
host: hostname(),
|
|
53
|
+
startedAt: PROCESS_STARTED_AT.toISOString(),
|
|
54
|
+
});
|
|
55
|
+
this.endpoint = `${this.opts.chorusUrl.replace(/\/$/, "")}/api/events/notifications?${params.toString()}`;
|
|
11
56
|
}
|
|
12
57
|
get status() {
|
|
13
58
|
return this._status;
|
|
@@ -17,10 +62,9 @@ export class ChorusSseListener {
|
|
|
17
62
|
this.clearReconnectTimer();
|
|
18
63
|
const abortController = new AbortController();
|
|
19
64
|
this.abortController = abortController;
|
|
20
|
-
const url = `${this.opts.chorusUrl.replace(/\/$/, "")}/api/events/notifications`;
|
|
21
65
|
let response;
|
|
22
66
|
try {
|
|
23
|
-
response = await fetch(
|
|
67
|
+
response = await fetch(this.endpoint, {
|
|
24
68
|
headers: {
|
|
25
69
|
Authorization: `Bearer ${this.opts.apiKey}`,
|
|
26
70
|
Accept: "text/event-stream",
|
|
@@ -121,13 +165,43 @@ export class ChorusSseListener {
|
|
|
121
165
|
// Data lines
|
|
122
166
|
if (line.startsWith("data: ")) {
|
|
123
167
|
const jsonStr = line.slice(6);
|
|
168
|
+
let event;
|
|
124
169
|
try {
|
|
125
|
-
|
|
126
|
-
this.opts.onEvent(event);
|
|
170
|
+
event = JSON.parse(jsonStr);
|
|
127
171
|
}
|
|
128
172
|
catch (err) {
|
|
129
173
|
this.opts.logger.warn(`SSE JSON parse error: ${err} — raw: ${jsonStr}`);
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
// The server's post-handshake `connection_registered` data event tells us
|
|
177
|
+
// which DaemonConnection this stream registered as. Capture it (the
|
|
178
|
+
// connection identity used to attribute reports + double-check control
|
|
179
|
+
// commands) and do NOT forward it to the wake path — it isn't a
|
|
180
|
+
// notification. Forked here so the router never logs it as ignored.
|
|
181
|
+
if (event.type === "connection_registered" && typeof event.connectionUuid === "string") {
|
|
182
|
+
try {
|
|
183
|
+
this.onConnectionId(event.connectionUuid);
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
this.opts.logger.warn(`onConnectionId callback error: ${err}`);
|
|
187
|
+
}
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
// Reverse control channel: a `type:"control"` event is NOT a wake. Fork it
|
|
191
|
+
// to onControl and `continue` — it MUST NEVER fall through to onEvent (the
|
|
192
|
+
// router / wake path), or a control command could be mistaken for a wake and
|
|
193
|
+
// spawn a new embedded-agent run. This is the structural guarantee the spec
|
|
194
|
+
// requires.
|
|
195
|
+
if (event.type === "control") {
|
|
196
|
+
try {
|
|
197
|
+
this.onControl(event);
|
|
198
|
+
}
|
|
199
|
+
catch (err) {
|
|
200
|
+
this.opts.logger.warn(`onControl callback error: ${err}`);
|
|
201
|
+
}
|
|
202
|
+
continue;
|
|
130
203
|
}
|
|
204
|
+
this.opts.onEvent(event);
|
|
131
205
|
}
|
|
132
206
|
}
|
|
133
207
|
}
|
package/dist/sse-listener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-listener.js","sourceRoot":"","sources":["../src/sse-listener.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sse-listener.js","sourceRoot":"","sources":["../src/sse-listener.ts"],"names":[],"mappings":"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"}
|
package/dist/wake.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-entry";
|
|
2
|
+
import type { WakeRunContext } from "./daemon-client.js";
|
|
2
3
|
/**
|
|
3
4
|
* Resolve the main agent session key from the host config.
|
|
4
5
|
*
|
|
@@ -42,6 +43,25 @@ export declare function resolveModelRef(api: OpenClawPluginApi): {
|
|
|
42
43
|
provider: string;
|
|
43
44
|
model: string;
|
|
44
45
|
} | null;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the host run context the daemon client needs to run a wake via
|
|
48
|
+
* `runEmbeddedAgent` — the main-agent session key + agent id + workspace/timeout +
|
|
49
|
+
* model override + the typed `runtime.agent` surface. Returns null when the wake must
|
|
50
|
+
* be DROPPED (no resolvable session key, or the host does not expose the agent
|
|
51
|
+
* runtime / a required session helper). This is the SINGLE place that reaches into
|
|
52
|
+
* `api.config` / `api.runtime`, so the daemon client stays host-API-agnostic and
|
|
53
|
+
* unit-testable with a plain context object.
|
|
54
|
+
*
|
|
55
|
+
* NOTE: this resolves only the host-derived knobs (the agent's main-session lane,
|
|
56
|
+
* workspace, model). The per-wake session ANCHOR (the Chorus business key →
|
|
57
|
+
* deterministic sessionKey → getSessionEntry) is owned by the daemon client, so a
|
|
58
|
+
* resume continues the same session regardless of when the context was resolved.
|
|
59
|
+
*/
|
|
60
|
+
export declare function resolveWakeRunContext(api: OpenClawPluginApi, logger: {
|
|
61
|
+
info: (m: string) => void;
|
|
62
|
+
warn: (m: string) => void;
|
|
63
|
+
error: (m: string) => void;
|
|
64
|
+
}): WakeRunContext | null;
|
|
45
65
|
/**
|
|
46
66
|
* Build a `wake(message, contextKey)` callback bound to the host runtime.
|
|
47
67
|
*
|
package/dist/wake.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wake.d.ts","sourceRoot":"","sources":["../src/wake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"wake.d.ts","sourceRoot":"","sources":["../src/wake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAwDzD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAoBvE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAO7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,iBAAiB,GACrB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAe5C;AAuCD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC3F,cAAc,GAAG,IAAI,CAiCvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GACjG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,CAgG/C"}
|
package/dist/wake.js
CHANGED
|
@@ -120,10 +120,21 @@ export function resolveModelRef(api) {
|
|
|
120
120
|
}
|
|
121
121
|
return { provider: ref.slice(0, slash), model: ref.slice(slash + 1) };
|
|
122
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Resolve the `api.runtime.agent` surface we use to run a turn, returning null
|
|
125
|
+
* when the host does not expose it (narrow registration modes / older hosts).
|
|
126
|
+
*
|
|
127
|
+
* `api.runtime` is now typed (`OpenClawPluginRuntime`) via the SDK shim — the
|
|
128
|
+
* `agent` slice mirrors `PluginRuntimeCore.agent` (types-core.ts:180-221). We
|
|
129
|
+
* still runtime-check each function we call (the declared type is a structural
|
|
130
|
+
* promise the host fulfills; a real host that drops a member must degrade
|
|
131
|
+
* gracefully, not throw).
|
|
132
|
+
*/
|
|
123
133
|
function getRuntimeAgent(api) {
|
|
124
134
|
const agent = api.runtime?.agent;
|
|
125
135
|
if (!agent ||
|
|
126
136
|
typeof agent.runEmbeddedAgent !== "function" ||
|
|
137
|
+
typeof agent.resolveAgentDir !== "function" ||
|
|
127
138
|
typeof agent.resolveAgentWorkspaceDir !== "function" ||
|
|
128
139
|
typeof agent.resolveAgentTimeoutMs !== "function" ||
|
|
129
140
|
typeof agent.session?.getSessionEntry !== "function" ||
|
|
@@ -142,6 +153,51 @@ function nextRunId(contextKey) {
|
|
|
142
153
|
wakeCounter += 1;
|
|
143
154
|
return `chorus-wake-${wakeCounter}-${contextKey}`;
|
|
144
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* Resolve the host run context the daemon client needs to run a wake via
|
|
158
|
+
* `runEmbeddedAgent` — the main-agent session key + agent id + workspace/timeout +
|
|
159
|
+
* model override + the typed `runtime.agent` surface. Returns null when the wake must
|
|
160
|
+
* be DROPPED (no resolvable session key, or the host does not expose the agent
|
|
161
|
+
* runtime / a required session helper). This is the SINGLE place that reaches into
|
|
162
|
+
* `api.config` / `api.runtime`, so the daemon client stays host-API-agnostic and
|
|
163
|
+
* unit-testable with a plain context object.
|
|
164
|
+
*
|
|
165
|
+
* NOTE: this resolves only the host-derived knobs (the agent's main-session lane,
|
|
166
|
+
* workspace, model). The per-wake session ANCHOR (the Chorus business key →
|
|
167
|
+
* deterministic sessionKey → getSessionEntry) is owned by the daemon client, so a
|
|
168
|
+
* resume continues the same session regardless of when the context was resolved.
|
|
169
|
+
*/
|
|
170
|
+
export function resolveWakeRunContext(api, logger) {
|
|
171
|
+
const sessionKey = resolveSessionKey(api);
|
|
172
|
+
if (!sessionKey) {
|
|
173
|
+
logger.warn("[Chorus] Wake run-context unavailable — could not resolve a main agent session key.");
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
const agent = getRuntimeAgent(api);
|
|
177
|
+
if (!agent) {
|
|
178
|
+
logger.warn("[Chorus] Wake run-context unavailable — api.runtime.agent.runEmbeddedAgent (or a required session helper) is not exposed on this host.");
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
const cfg = api.config;
|
|
182
|
+
const agentId = resolveAgentId(api);
|
|
183
|
+
let workspaceDir;
|
|
184
|
+
let agentDir;
|
|
185
|
+
let timeoutMs;
|
|
186
|
+
try {
|
|
187
|
+
workspaceDir = agent.resolveAgentWorkspaceDir(cfg, agentId);
|
|
188
|
+
agentDir = agent.resolveAgentDir(cfg, agentId);
|
|
189
|
+
timeoutMs = agent.resolveAgentTimeoutMs({ cfg });
|
|
190
|
+
}
|
|
191
|
+
catch (err) {
|
|
192
|
+
logger.warn(`[Chorus] Wake run-context unavailable — workspace/timeout resolution failed: ${err}`);
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
const modelRef = resolveModelRef(api);
|
|
196
|
+
if (!modelRef) {
|
|
197
|
+
logger.warn("[Chorus] No agents.defaults.model configured — wake turns will use the host default model, which may be unavailable.");
|
|
198
|
+
}
|
|
199
|
+
return { agent, sessionKey, agentId, config: cfg, workspaceDir, agentDir, timeoutMs, modelRef };
|
|
200
|
+
}
|
|
145
201
|
/**
|
|
146
202
|
* Build a `wake(message, contextKey)` callback bound to the host runtime.
|
|
147
203
|
*
|
package/dist/wake.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wake.js","sourceRoot":"","sources":["../src/wake.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wake.js","sourceRoot":"","sources":["../src/wake.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED