@rethinkingstudio/clawpilot 2.1.7-internal.9 → 2.1.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.
Files changed (39) hide show
  1. package/dist/commands/local-handlers.js +46 -0
  2. package/dist/commands/local-handlers.js.map +1 -1
  3. package/dist/commands/pair.js +15 -8
  4. package/dist/commands/pair.js.map +1 -1
  5. package/dist/config/config.js +2 -1
  6. package/dist/config/config.js.map +1 -1
  7. package/dist/generated/build-config.d.ts +1 -1
  8. package/dist/generated/build-config.js +1 -1
  9. package/dist/generated/build-config.js.map +1 -1
  10. package/dist/hermes/agent-bridge.js +5 -0
  11. package/dist/hermes/agent-bridge.js.map +1 -1
  12. package/dist/hermes/home.d.ts +23 -0
  13. package/dist/hermes/home.js +250 -0
  14. package/dist/hermes/home.js.map +1 -0
  15. package/dist/hermes/model-catalog.js +10 -9
  16. package/dist/hermes/model-catalog.js.map +1 -1
  17. package/dist/platform/service-manager.js +9 -0
  18. package/dist/platform/service-manager.js.map +1 -1
  19. package/dist/relay/agent-status.d.ts +55 -0
  20. package/dist/relay/agent-status.js +294 -0
  21. package/dist/relay/agent-status.js.map +1 -0
  22. package/dist/relay/ccconnect-relay-manager.js +206 -35
  23. package/dist/relay/ccconnect-relay-manager.js.map +1 -1
  24. package/dist/relay/hermes-relay-manager.js +225 -53
  25. package/dist/relay/hermes-relay-manager.js.map +1 -1
  26. package/dist/relay/relay-command-dispatcher.d.ts +14 -0
  27. package/dist/relay/relay-command-dispatcher.js +25 -0
  28. package/dist/relay/relay-command-dispatcher.js.map +1 -0
  29. package/dist/relay/relay-manager.js +60 -29
  30. package/dist/relay/relay-manager.js.map +1 -1
  31. package/dist/relay/relay-method-registry.d.ts +9 -0
  32. package/dist/relay/relay-method-registry.js +61 -0
  33. package/dist/relay/relay-method-registry.js.map +1 -0
  34. package/dist/relay/relay-watchdog.d.ts +2 -0
  35. package/dist/relay/relay-watchdog.js +31 -0
  36. package/dist/relay/relay-watchdog.js.map +1 -0
  37. package/package.json +1 -1
  38. package/scripts/hermes_agent_bridge.py +14 -2
  39. package/scripts/verify-build-config.mjs +1 -3
@@ -0,0 +1,294 @@
1
+ export async function buildAgentStatusCards(opts) {
2
+ const agentIds = new Set(opts.agents.map((agent) => agent.id));
3
+ const sortedAgentIds = Array.from(agentIds).sort((lhs, rhs) => lhs.localeCompare(rhs));
4
+ const identities = new Map();
5
+ await Promise.all(sortedAgentIds.map(async (agentId) => {
6
+ const agent = opts.agents.find((item) => item.id === agentId);
7
+ try {
8
+ identities.set(agentId, await opts.loadIdentity(agentId, agent));
9
+ }
10
+ catch {
11
+ identities.set(agentId, {});
12
+ }
13
+ }));
14
+ const cards = await Promise.all(sortedAgentIds.map(async (agentId) => {
15
+ const agent = opts.agents.find((item) => item.id === agentId);
16
+ const identity = identities.get(agentId) ?? {};
17
+ const sessions = opts.sessions
18
+ .filter((session) => (session.agentId ?? agentIdFromSessionKey(session.key)) === agentId)
19
+ .sort(compareSessions);
20
+ const enabledJobs = opts.cronJobs
21
+ .filter((job) => job.enabled && job.agentId === agentId)
22
+ .sort((lhs, rhs) => lhs.displayName.localeCompare(rhs.displayName));
23
+ const status = resolveStatus(sessions);
24
+ const recentOutput = sessions[0] ? await opts.loadRecentOutput(sessions[0].key) : undefined;
25
+ return {
26
+ agentId,
27
+ displayName: cleanedString(identity.name) ?? cleanedString(agent?.name) ?? agentId,
28
+ roleLabel: roleLabel(identity),
29
+ emoji: cleanedString(identity.emoji),
30
+ status,
31
+ currentWork: resolveCurrentWork(status, sessions, enabledJobs),
32
+ recentOutput,
33
+ isScheduled: enabledJobs.length > 0,
34
+ };
35
+ }));
36
+ return cards.sort((lhs, rhs) => {
37
+ const priority = statusPriority(lhs.status) - statusPriority(rhs.status);
38
+ return priority !== 0 ? priority : lhs.agentId.localeCompare(rhs.agentId);
39
+ });
40
+ }
41
+ export function parseAgentsPayload(payload) {
42
+ const rawAgents = asRecord(payload).agents;
43
+ if (!Array.isArray(rawAgents))
44
+ return [];
45
+ return rawAgents.flatMap((raw) => {
46
+ const record = asRecord(raw);
47
+ const id = cleanedString(record.id);
48
+ if (!id)
49
+ return [];
50
+ return [{
51
+ id,
52
+ name: cleanedString(record.name),
53
+ identity: asOptionalRecord(record.identity),
54
+ }];
55
+ });
56
+ }
57
+ export function parseSessionsPayload(payload) {
58
+ const rawSessions = asRecord(payload).sessions;
59
+ if (!Array.isArray(rawSessions))
60
+ return [];
61
+ return rawSessions.flatMap((raw) => {
62
+ const record = asRecord(raw);
63
+ const key = cleanedString(record.key) ?? cleanedString(record.sessionKey);
64
+ if (!key)
65
+ return [];
66
+ return [{
67
+ key,
68
+ agentId: cleanedString(record.agentId) ?? agentIdFromSessionKey(key),
69
+ label: cleanedString(record.label) ?? cleanedString(record.title),
70
+ state: cleanedString(record.state) ?? cleanedString(record.runState),
71
+ updatedAtMs: intValue(record.updatedAt) ?? intValue(record.updatedAtMs) ?? intValue(record.lastMessageAtMs) ?? 0,
72
+ }];
73
+ });
74
+ }
75
+ export function parseCronJobsPayload(payload) {
76
+ const rawJobs = asRecord(payload).jobs;
77
+ if (!Array.isArray(rawJobs))
78
+ return [];
79
+ return rawJobs.flatMap((raw) => {
80
+ const record = asRecord(raw);
81
+ const id = cleanedString(record.id);
82
+ if (!id)
83
+ return [];
84
+ return [{
85
+ id,
86
+ agentId: cleanedString(record.agentId) ?? undefined,
87
+ displayName: cleanedString(record.name) ?? id,
88
+ enabled: typeof record.enabled === "boolean" ? record.enabled : true,
89
+ }];
90
+ });
91
+ }
92
+ export function identityFromAgent(agent) {
93
+ const identity = asRecord(agent?.identity);
94
+ return {
95
+ name: cleanedString(identity.name) ?? cleanedString(agent?.name),
96
+ theme: cleanedString(identity.theme),
97
+ emoji: cleanedString(identity.emoji),
98
+ avatar: cleanedString(identity.avatar) ?? cleanedString(identity.avatarUrl),
99
+ };
100
+ }
101
+ export function parseAgentIdentityMarkdown(text) {
102
+ const placeholders = new Set([
103
+ "_(pick something you like)_",
104
+ "_(AI? robot? familiar? ghost in the machine?)_",
105
+ "_(how do you come across? sharp? warm? chaotic? calm?)_",
106
+ "_(your signature — pick one that feels right)_",
107
+ "_(workspace-relative path, http(s) URL, or data URI)_",
108
+ ]);
109
+ const field = (label) => {
110
+ const lines = text.split(/\r?\n/);
111
+ for (let idx = 0; idx < lines.length; idx += 1) {
112
+ if (lines[idx]?.trim().toLowerCase() !== label.toLowerCase())
113
+ continue;
114
+ const value = lines[idx + 1]?.trim();
115
+ return value && !placeholders.has(value) ? value : undefined;
116
+ }
117
+ return undefined;
118
+ };
119
+ return {
120
+ name: field("Name"),
121
+ creature: field("Creature"),
122
+ vibe: field("Vibe"),
123
+ theme: field("Theme"),
124
+ emoji: field("Emoji"),
125
+ avatar: field("Avatar"),
126
+ };
127
+ }
128
+ export function recentOutputFromMessagesPayload(payload) {
129
+ const rawMessages = asRecord(payload).messages;
130
+ if (!Array.isArray(rawMessages))
131
+ return undefined;
132
+ for (const raw of rawMessages.slice().reverse()) {
133
+ const record = asRecord(raw);
134
+ const role = cleanedString(record.role);
135
+ if (role !== "assistant")
136
+ continue;
137
+ const text = messageText(record);
138
+ if (text && isVisibleRecentOutput(text))
139
+ return formatRecentOutput(text);
140
+ }
141
+ return undefined;
142
+ }
143
+ function messageText(record) {
144
+ const direct = cleanedString(record.text) ?? cleanedString(record.content);
145
+ if (direct)
146
+ return direct;
147
+ const message = asRecord(record.message);
148
+ const content = message.content ?? record.content;
149
+ if (!Array.isArray(content))
150
+ return undefined;
151
+ const textBlock = content.find((item) => asRecord(item).type === "text");
152
+ return cleanedString(asRecord(textBlock).text);
153
+ }
154
+ function resolveStatus(sessions) {
155
+ const states = sessions.flatMap((session) => session.state ? [session.state.toLowerCase()] : []);
156
+ if (states.some((state) => state.includes("error") || state.includes("fail") || state.includes("block"))) {
157
+ return "needsSupport";
158
+ }
159
+ if (states.some((state) => state.includes("approval") || state.includes("review"))) {
160
+ return "awaitingReview";
161
+ }
162
+ if (sessions.some(isLiveSession))
163
+ return "working";
164
+ if (sessions.length > 0 && states.some((state) => state !== "idle" && state !== "inactive")) {
165
+ return "working";
166
+ }
167
+ if (sessions.length > 0 && states.length === 0)
168
+ return "working";
169
+ return "standingBy";
170
+ }
171
+ function resolveCurrentWork(status, sessions, cronJobs) {
172
+ if (status === "awaitingReview")
173
+ return { title: "Current work", detail: "Waiting for approval" };
174
+ if (status === "needsSupport")
175
+ return { title: "Current work", detail: "Blocked" };
176
+ if (status === "working") {
177
+ if (sessions.length > 0)
178
+ return { title: "Current work", detail: "Live session" };
179
+ if (cronJobs[0])
180
+ return { title: "Current work", detail: cronJobs[0].displayName };
181
+ return { title: "Current work", detail: "Active work" };
182
+ }
183
+ if (cronJobs[0])
184
+ return { title: "Next up", detail: cronJobs[0].displayName };
185
+ return { title: "Current work", detail: "No live work" };
186
+ }
187
+ function compareSessions(lhs, rhs) {
188
+ const lhsLive = isLiveSession(lhs);
189
+ const rhsLive = isLiveSession(rhs);
190
+ if (lhsLive !== rhsLive)
191
+ return lhsLive ? -1 : 1;
192
+ if (lhs.updatedAtMs !== rhs.updatedAtMs)
193
+ return rhs.updatedAtMs - lhs.updatedAtMs;
194
+ return lhs.key.localeCompare(rhs.key);
195
+ }
196
+ function isLiveSession(session) {
197
+ if (!session.state)
198
+ return false;
199
+ const normalized = session.state.toLowerCase();
200
+ if (normalized === "idle" || normalized === "inactive")
201
+ return false;
202
+ return ["running", "active", "busy", "working", "processing", "thinking", "streaming", "approval", "review", "blocked", "error"]
203
+ .some((keyword) => normalized.includes(keyword));
204
+ }
205
+ function roleLabel(identity) {
206
+ const theme = cleanedString(identity.theme);
207
+ if (theme)
208
+ return theme;
209
+ const creature = cleanedString(identity.creature);
210
+ const vibe = cleanedString(identity.vibe);
211
+ if (creature && vibe)
212
+ return `${creature} · ${vibe}`;
213
+ return creature ?? vibe ?? "";
214
+ }
215
+ function statusPriority(status) {
216
+ switch (status) {
217
+ case "needsSupport": return 0;
218
+ case "awaitingReview": return 1;
219
+ case "working": return 2;
220
+ case "standingBy": return 3;
221
+ }
222
+ }
223
+ function isVisibleRecentOutput(text) {
224
+ const content = sanitizeRecentOutput(text);
225
+ if (!content)
226
+ return false;
227
+ const lower = content.toLowerCase();
228
+ if (lower === "no_reply" || lower === "noop")
229
+ return false;
230
+ if (lower === "reply_skip" || lower === "announce_skip")
231
+ return false;
232
+ if (lower.startsWith("thinking ") || lower.startsWith("reasoning "))
233
+ return false;
234
+ if (lower.startsWith("text msg_") || lower.startsWith("toolcall "))
235
+ return false;
236
+ if (lower.includes("\"encrypted_content\""))
237
+ return false;
238
+ if (lower.includes("openclaw runtime context (internal)"))
239
+ return false;
240
+ if (lower.includes("conversation info (untrusted metadata)"))
241
+ return false;
242
+ if (lower.includes("internal_write_only"))
243
+ return false;
244
+ return true;
245
+ }
246
+ function formatRecentOutput(text) {
247
+ const content = sanitizeRecentOutput(text);
248
+ if (!content)
249
+ return "";
250
+ const upper = content.toUpperCase();
251
+ if (upper === "NOOP")
252
+ return "No operation";
253
+ if (upper === "NO_REPLY")
254
+ return "No reply";
255
+ if (content.startsWith("{") || content.startsWith("[") || content.startsWith("```json")) {
256
+ return "Structured output";
257
+ }
258
+ return content.length > 88 ? `${content.slice(0, 88).trim()}...` : content;
259
+ }
260
+ function sanitizeRecentOutput(text) {
261
+ return text
262
+ .replace(/\r\n/g, "\n")
263
+ .replace(/\n/g, " ")
264
+ .trim()
265
+ .replace(/^\[\[reply_to_current\]\]\s*/, "")
266
+ .replace(/^\[[^\]]+\]\s*/, "")
267
+ .replace(/^warning:\s*background execution is disabled; running synchronously\.\s*/i, "")
268
+ .trim();
269
+ }
270
+ function agentIdFromSessionKey(sessionKey) {
271
+ const parts = sessionKey.split(":");
272
+ const value = parts[0] === "agent" ? parts[1]?.trim() : undefined;
273
+ return value || undefined;
274
+ }
275
+ function cleanedString(value) {
276
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
277
+ }
278
+ function intValue(value) {
279
+ if (typeof value === "number" && Number.isFinite(value))
280
+ return Math.trunc(value);
281
+ if (typeof value === "string") {
282
+ const parsed = Number.parseInt(value, 10);
283
+ return Number.isFinite(parsed) ? parsed : undefined;
284
+ }
285
+ return undefined;
286
+ }
287
+ function asRecord(value) {
288
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
289
+ }
290
+ function asOptionalRecord(value) {
291
+ const record = asRecord(value);
292
+ return Object.keys(record).length > 0 ? record : undefined;
293
+ }
294
+ //# sourceMappingURL=agent-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-status.js","sourceRoot":"","sources":["../../src/relay/agent-status.ts"],"names":[],"mappings":"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"}