@lumenflow/cli 5.3.1 → 5.4.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/README.md +20 -18
- package/dist/agent-session.js +21 -0
- package/dist/agent-session.js.map +1 -1
- package/dist/commands/integrate.js +25 -1
- package/dist/commands/integrate.js.map +1 -1
- package/dist/gates-runners.js +1 -1
- package/dist/gates-runners.js.map +1 -1
- package/dist/hooks/enforcement-generator.js +14 -8
- package/dist/hooks/enforcement-generator.js.map +1 -1
- package/dist/hooks/enforcement-sync.js +2 -1
- package/dist/hooks/enforcement-sync.js.map +1 -1
- package/dist/hooks/generators/index.js +1 -0
- package/dist/hooks/generators/index.js.map +1 -1
- package/dist/hooks/generators/signal-received.js +4 -0
- package/dist/hooks/generators/signal-received.js.map +1 -0
- package/dist/mem-converged.js +101 -0
- package/dist/mem-converged.js.map +1 -0
- package/dist/mem-inbox.js +85 -22
- package/dist/mem-inbox.js.map +1 -1
- package/dist/mem-roster.js +11 -1
- package/dist/mem-roster.js.map +1 -1
- package/dist/mem-signal.js +162 -16
- package/dist/mem-signal.js.map +1 -1
- package/dist/mem-watch.js +207 -0
- package/dist/mem-watch.js.map +1 -0
- package/dist/public-manifest.js +14 -0
- package/dist/public-manifest.js.map +1 -1
- package/dist/session-cross-link.js +14 -2
- package/dist/session-cross-link.js.map +1 -1
- package/dist/sidecar-manager.js +25 -0
- package/dist/sidecar-manager.js.map +1 -1
- package/dist/signal-hook.js +351 -0
- package/dist/signal-hook.js.map +1 -0
- package/dist/wu-prep.js +106 -4
- package/dist/wu-prep.js.map +1 -1
- package/dist/wu-spawn-prompt-builders.js.map +1 -1
- package/dist/wu-spawn-strategy-resolver.js +46 -4
- package/dist/wu-spawn-strategy-resolver.js.map +1 -1
- package/package.json +13 -11
- package/packs/agent-runtime/auto-session-integration.ts +14 -0
- package/packs/agent-runtime/package.json +1 -1
- package/packs/agent-runtime/session-schema.ts +44 -0
- package/packs/sidekick/package.json +1 -1
- package/packs/software-delivery/manifest.ts +3 -0
- package/packs/software-delivery/manifest.yaml +7 -0
- package/packs/software-delivery/package.json +1 -1
- package/packs/software-delivery/src/methodology/incremental-test.ts +48 -16
- package/packs/software-delivery/src/policy/gates-coverage.ts +10 -0
- package/packs/software-delivery/src/policy/resolve-policy.ts +83 -0
- package/packs/software-delivery/tool-impl/memory-tools.ts +56 -1
- package/packs/software-delivery/tool-impl/runtime-cli-adapter.ts +1 -0
- package/templates/core/AGENTS.md.template +19 -1
- package/templates/core/LUMENFLOW.md.template +17 -0
- package/templates/core/ai/onboarding/agent-safety-card.md.template +16 -0
- package/templates/core/ai/onboarding/vendor-support.md.template +9 -9
package/dist/mem-signal.js
CHANGED
|
@@ -19,17 +19,33 @@
|
|
|
19
19
|
*/
|
|
20
20
|
import fs from 'node:fs/promises';
|
|
21
21
|
import path from 'node:path';
|
|
22
|
-
import { createSignal } from '@lumenflow/memory/signal';
|
|
22
|
+
import { createSignal, resolveReaderIdentity } from '@lumenflow/memory/signal';
|
|
23
23
|
import { createWUParser, WU_OPTIONS } from '@lumenflow/core/arg-parser';
|
|
24
|
+
import { createError, ErrorCodes } from '@lumenflow/core/error-handler';
|
|
24
25
|
import { EXIT_CODES, LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
|
|
25
26
|
// WU-1456: Import shared validator for CLI/MCP parity
|
|
26
27
|
import { validateMemSignalArgs } from '@lumenflow/core/schemas/memory-arg-validators';
|
|
27
28
|
import { runCLI } from './cli-entry-point.js';
|
|
29
|
+
import { buildA2ASignalForHook, dispatchSignalReceivedEvents } from './signal-hook.js';
|
|
28
30
|
import { resolveActiveSessionTarget } from './session-cross-link.js';
|
|
29
31
|
/**
|
|
30
32
|
* Log prefix for mem:signal output
|
|
31
33
|
*/
|
|
32
34
|
const LOG_PREFIX = '[mem:signal]';
|
|
35
|
+
const SIGNAL_INTENTS = [
|
|
36
|
+
'INFO',
|
|
37
|
+
'PROPOSE',
|
|
38
|
+
'COUNTER',
|
|
39
|
+
'AGREE',
|
|
40
|
+
'REJECT',
|
|
41
|
+
];
|
|
42
|
+
const INTERRUPT_CLASSES = [
|
|
43
|
+
'advisory',
|
|
44
|
+
'priority',
|
|
45
|
+
'urgent',
|
|
46
|
+
'soon',
|
|
47
|
+
'immediate',
|
|
48
|
+
];
|
|
33
49
|
/**
|
|
34
50
|
* Tool name for audit logging
|
|
35
51
|
*/
|
|
@@ -71,8 +87,33 @@ const CLI_OPTIONS = {
|
|
|
71
87
|
},
|
|
72
88
|
to: {
|
|
73
89
|
name: 'to',
|
|
74
|
-
flags: '--to <
|
|
75
|
-
description: 'Address the signal to
|
|
90
|
+
flags: '--to <recipient[,recipient...]>',
|
|
91
|
+
description: 'Address the signal to one or more session IDs, display names, or agent identities',
|
|
92
|
+
},
|
|
93
|
+
thread: {
|
|
94
|
+
name: 'thread',
|
|
95
|
+
flags: '--thread <id>',
|
|
96
|
+
description: 'A2A thread id for grouping signals',
|
|
97
|
+
},
|
|
98
|
+
replyTo: {
|
|
99
|
+
name: 'replyTo',
|
|
100
|
+
flags: '--reply-to <signal_id>',
|
|
101
|
+
description: 'Parent signal id; inherits the parent thread when --thread is omitted',
|
|
102
|
+
},
|
|
103
|
+
intent: {
|
|
104
|
+
name: 'intent',
|
|
105
|
+
flags: '--intent <INFO|PROPOSE|COUNTER|AGREE|REJECT>',
|
|
106
|
+
description: 'Machine-readable A2A signal intent',
|
|
107
|
+
},
|
|
108
|
+
interrupt: {
|
|
109
|
+
name: 'interrupt',
|
|
110
|
+
flags: '--interrupt <advisory|priority|urgent|soon|immediate>',
|
|
111
|
+
description: 'A2A interruption class',
|
|
112
|
+
},
|
|
113
|
+
requiresAck: {
|
|
114
|
+
name: 'requiresAck',
|
|
115
|
+
flags: '--requires-ack',
|
|
116
|
+
description: 'Mark the signal as requiring an AGREE or REJECT reply',
|
|
76
117
|
},
|
|
77
118
|
};
|
|
78
119
|
/**
|
|
@@ -108,6 +149,10 @@ const FLAGS_WITH_VALUES = new Set([
|
|
|
108
149
|
'--initiative',
|
|
109
150
|
'--delegation-id',
|
|
110
151
|
'--to',
|
|
152
|
+
'--thread',
|
|
153
|
+
'--reply-to',
|
|
154
|
+
'--intent',
|
|
155
|
+
'--interrupt',
|
|
111
156
|
]);
|
|
112
157
|
/**
|
|
113
158
|
* Extract positional arguments from argv (skipping flags and their values)
|
|
@@ -151,6 +196,11 @@ function parseArguments() {
|
|
|
151
196
|
CLI_OPTIONS.initiative,
|
|
152
197
|
CLI_OPTIONS.delegationId,
|
|
153
198
|
CLI_OPTIONS.to,
|
|
199
|
+
CLI_OPTIONS.thread,
|
|
200
|
+
CLI_OPTIONS.replyTo,
|
|
201
|
+
CLI_OPTIONS.intent,
|
|
202
|
+
CLI_OPTIONS.interrupt,
|
|
203
|
+
CLI_OPTIONS.requiresAck,
|
|
154
204
|
],
|
|
155
205
|
required: [],
|
|
156
206
|
allowPositionalId: true,
|
|
@@ -164,6 +214,57 @@ function parseArguments() {
|
|
|
164
214
|
}
|
|
165
215
|
return { args, message };
|
|
166
216
|
}
|
|
217
|
+
export function parseSignalIntent(value) {
|
|
218
|
+
if (!value) {
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
const normalized = value.trim().toUpperCase();
|
|
222
|
+
const intent = SIGNAL_INTENTS.find((candidate) => candidate === normalized);
|
|
223
|
+
if (!intent) {
|
|
224
|
+
throw createError(ErrorCodes.INVALID_ARGUMENT, `Invalid --intent "${value}". Expected one of: ${SIGNAL_INTENTS.join(', ')}`);
|
|
225
|
+
}
|
|
226
|
+
return intent;
|
|
227
|
+
}
|
|
228
|
+
export function parseInterruptClass(value) {
|
|
229
|
+
if (!value) {
|
|
230
|
+
return undefined;
|
|
231
|
+
}
|
|
232
|
+
const normalized = value.trim().toLowerCase();
|
|
233
|
+
const interruptClass = INTERRUPT_CLASSES.find((candidate) => candidate === normalized);
|
|
234
|
+
if (!interruptClass) {
|
|
235
|
+
throw createError(ErrorCodes.INVALID_ARGUMENT, `Invalid --interrupt "${value}". Expected one of: ${INTERRUPT_CLASSES.join(', ')}`);
|
|
236
|
+
}
|
|
237
|
+
return interruptClass;
|
|
238
|
+
}
|
|
239
|
+
export function parseRecipientTargets(to) {
|
|
240
|
+
if (!to) {
|
|
241
|
+
return [];
|
|
242
|
+
}
|
|
243
|
+
return Array.from(new Set(to
|
|
244
|
+
.split(',')
|
|
245
|
+
.map((target) => target.trim())
|
|
246
|
+
.filter((target) => target.length > 0)));
|
|
247
|
+
}
|
|
248
|
+
export async function resolveSignalAddressing(baseDir, to) {
|
|
249
|
+
const rawTargets = parseRecipientTargets(to);
|
|
250
|
+
const recipients = [];
|
|
251
|
+
const resolvedDisplayNames = [];
|
|
252
|
+
for (const rawTarget of rawTargets) {
|
|
253
|
+
const resolvedTarget = resolveActiveSessionTarget(baseDir, rawTarget);
|
|
254
|
+
if (resolvedTarget?.displayName) {
|
|
255
|
+
resolvedDisplayNames.push(resolvedTarget.displayName);
|
|
256
|
+
}
|
|
257
|
+
const readerTarget = resolvedTarget?.sessionId ?? rawTarget;
|
|
258
|
+
recipients.push(await resolveReaderIdentity(baseDir, readerTarget));
|
|
259
|
+
}
|
|
260
|
+
const dedupedRecipients = Array.from(new Set(recipients));
|
|
261
|
+
return {
|
|
262
|
+
recipients: dedupedRecipients,
|
|
263
|
+
rawTargets,
|
|
264
|
+
resolvedDisplayNames: Array.from(new Set(resolvedDisplayNames)),
|
|
265
|
+
...(dedupedRecipients.length === 1 ? { targetAgent: dedupedRecipients[0] } : {}),
|
|
266
|
+
};
|
|
267
|
+
}
|
|
167
268
|
/**
|
|
168
269
|
* Print signal details to console
|
|
169
270
|
*
|
|
@@ -193,12 +294,30 @@ function printSignalDetails(result) {
|
|
|
193
294
|
if (signal.target_agent) {
|
|
194
295
|
console.log(` Target ID: ${signal.target_agent}`);
|
|
195
296
|
}
|
|
297
|
+
if (signal.recipients && signal.recipients.length > 0) {
|
|
298
|
+
console.log(` Recipients: ${signal.recipients.join(', ')}`);
|
|
299
|
+
}
|
|
196
300
|
if (signal.initiative) {
|
|
197
301
|
console.log(` Initiative: ${signal.initiative}`);
|
|
198
302
|
}
|
|
199
303
|
if (signal.delegation_id) {
|
|
200
304
|
console.log(` Delegation: ${signal.delegation_id}`);
|
|
201
305
|
}
|
|
306
|
+
if (signal.thread_id) {
|
|
307
|
+
console.log(` Thread: ${signal.thread_id}`);
|
|
308
|
+
}
|
|
309
|
+
if (signal.reply_to) {
|
|
310
|
+
console.log(` Reply To: ${signal.reply_to}`);
|
|
311
|
+
}
|
|
312
|
+
if (signal.intent) {
|
|
313
|
+
console.log(` Intent: ${signal.intent}`);
|
|
314
|
+
}
|
|
315
|
+
if (signal.interrupt_class) {
|
|
316
|
+
console.log(` Interrupt: ${signal.interrupt_class}`);
|
|
317
|
+
}
|
|
318
|
+
if (signal.requires_ack !== undefined) {
|
|
319
|
+
console.log(` Requires ACK: ${String(signal.requires_ack)}`);
|
|
320
|
+
}
|
|
202
321
|
console.log('');
|
|
203
322
|
}
|
|
204
323
|
/**
|
|
@@ -220,6 +339,11 @@ export async function main() {
|
|
|
220
339
|
console.error(' --initiative <id> Initiative scope (e.g., INIT-060)');
|
|
221
340
|
console.error(' --delegation-id <id> Delegation registry linkage (dlg-XXXX)');
|
|
222
341
|
console.error(' --to <target> Live session_id or display_name recipient');
|
|
342
|
+
console.error(' --thread <id> A2A thread id');
|
|
343
|
+
console.error(' --reply-to <sig> Parent signal id');
|
|
344
|
+
console.error(' --intent <value> INFO, PROPOSE, COUNTER, AGREE, or REJECT');
|
|
345
|
+
console.error(' --interrupt <value> advisory, priority, urgent, soon, or immediate');
|
|
346
|
+
console.error(' --requires-ack Require AGREE or REJECT on the same thread');
|
|
223
347
|
console.error(' --quiet Suppress output except errors');
|
|
224
348
|
process.exit(EXIT_CODES.ERROR);
|
|
225
349
|
}
|
|
@@ -234,28 +358,38 @@ export async function main() {
|
|
|
234
358
|
const startTime = Date.now();
|
|
235
359
|
let result;
|
|
236
360
|
let error = null;
|
|
237
|
-
let
|
|
238
|
-
let resolvedTargetDisplayName;
|
|
361
|
+
let addressing = { recipients: [], rawTargets: [], resolvedDisplayNames: [] };
|
|
239
362
|
try {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
}
|
|
245
|
-
resolvedTargetAgent = resolvedTarget.sessionId;
|
|
246
|
-
resolvedTargetDisplayName = resolvedTarget.displayName;
|
|
247
|
-
}
|
|
363
|
+
addressing = await resolveSignalAddressing(baseDir, args.to);
|
|
364
|
+
const senderIdentity = await resolveReaderIdentity(baseDir);
|
|
365
|
+
const intent = parseSignalIntent(args.intent);
|
|
366
|
+
const interruptClass = parseInterruptClass(args.interrupt);
|
|
248
367
|
result = await createSignal(baseDir, {
|
|
249
368
|
message,
|
|
250
369
|
wuId: args.wu,
|
|
251
370
|
lane: args.lane,
|
|
252
|
-
|
|
371
|
+
sender: senderIdentity,
|
|
372
|
+
target_agent: addressing.targetAgent,
|
|
373
|
+
recipients: addressing.recipients.length > 0 ? addressing.recipients : undefined,
|
|
374
|
+
thread_id: args.thread,
|
|
375
|
+
reply_to: args.replyTo,
|
|
376
|
+
intent,
|
|
377
|
+
interrupt_class: interruptClass,
|
|
378
|
+
requires_ack: args.requiresAck === true ? true : undefined,
|
|
253
379
|
// WU-2755 (ADR-014 extension 3): structured coordination axes.
|
|
254
380
|
role: args.role,
|
|
255
381
|
target_role: args.targetRole,
|
|
256
382
|
initiative: args.initiative,
|
|
257
383
|
delegation_id: args.delegationId,
|
|
258
384
|
});
|
|
385
|
+
try {
|
|
386
|
+
await dispatchSignalReceivedEvents(baseDir, {
|
|
387
|
+
signal: buildA2ASignalForHook(result.signal),
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
catch {
|
|
391
|
+
// Hook delivery is fail-open; the signal has already been durably appended.
|
|
392
|
+
}
|
|
259
393
|
}
|
|
260
394
|
catch (err) {
|
|
261
395
|
error = err instanceof Error ? err.message : String(err);
|
|
@@ -272,8 +406,14 @@ export async function main() {
|
|
|
272
406
|
wuId: args.wu,
|
|
273
407
|
lane: args.lane,
|
|
274
408
|
to: args.to,
|
|
275
|
-
|
|
276
|
-
|
|
409
|
+
recipients: addressing.recipients,
|
|
410
|
+
targetAgent: addressing.targetAgent,
|
|
411
|
+
targetDisplayNames: addressing.resolvedDisplayNames,
|
|
412
|
+
thread: args.thread,
|
|
413
|
+
replyTo: args.replyTo,
|
|
414
|
+
intent: args.intent,
|
|
415
|
+
interrupt: args.interrupt,
|
|
416
|
+
requiresAck: args.requiresAck === true,
|
|
277
417
|
role: args.role,
|
|
278
418
|
targetRole: args.targetRole,
|
|
279
419
|
initiative: args.initiative,
|
|
@@ -286,6 +426,12 @@ export async function main() {
|
|
|
286
426
|
wuId: result.signal?.wu_id,
|
|
287
427
|
lane: result.signal?.lane,
|
|
288
428
|
targetAgent: result.signal?.target_agent,
|
|
429
|
+
recipients: result.signal?.recipients,
|
|
430
|
+
threadId: result.signal?.thread_id,
|
|
431
|
+
replyTo: result.signal?.reply_to,
|
|
432
|
+
intent: result.signal?.intent,
|
|
433
|
+
interruptClass: result.signal?.interrupt_class,
|
|
434
|
+
requiresAck: result.signal?.requires_ack,
|
|
289
435
|
}
|
|
290
436
|
: null,
|
|
291
437
|
error: error ? { message: error } : null,
|
package/dist/mem-signal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mem-signal.js","sourceRoot":"","sources":["../src/mem-signal.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mem-signal.js","sourceRoot":"","sources":["../src/mem-signal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Copyright (c) 2026 Hellmai Ltd
|
|
3
|
+
// SPDX-License-Identifier: LicenseRef-LumenFlow-Proprietary
|
|
4
|
+
/**
|
|
5
|
+
* Memory Watch CLI
|
|
6
|
+
*
|
|
7
|
+
* Foreground daemon fallback for clients that do not have native hook delivery.
|
|
8
|
+
* It tails local A2A signals, dispatches the canonical signal:received event
|
|
9
|
+
* through the WU-2921 queue, then drains that queue to stdout for the session.
|
|
10
|
+
*/
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import fs from 'node:fs/promises';
|
|
13
|
+
import { watch as chokidarWatch } from 'chokidar';
|
|
14
|
+
import { createError, ErrorCodes } from '@lumenflow/core/error-handler';
|
|
15
|
+
import { createWUParser } from '@lumenflow/core/arg-parser';
|
|
16
|
+
import { LUMENFLOW_PATHS } from '@lumenflow/core/wu-constants';
|
|
17
|
+
import { loadInboxSignalViews, markSignalsAsRead, resolveReaderIdentity, } from '@lumenflow/memory/signal';
|
|
18
|
+
import { dispatchSignalReceivedEvents, drainSignalReceivedEvents, } from './signal-hook.js';
|
|
19
|
+
import { resolveActiveSessionTarget } from './session-cross-link.js';
|
|
20
|
+
import { runCLI } from './cli-entry-point.js';
|
|
21
|
+
const LOG_PREFIX = '[mem:watch]';
|
|
22
|
+
const SIGNALS_FILE_NAME = 'signals.jsonl';
|
|
23
|
+
const DELIVERY_POLL_SETTLE_MS = 100;
|
|
24
|
+
const DELIVERY_POLL_INTERVAL_MS = 50;
|
|
25
|
+
const CLI_OPTIONS = {
|
|
26
|
+
session: {
|
|
27
|
+
name: 'session',
|
|
28
|
+
flags: '--session <id>',
|
|
29
|
+
description: 'Active session_id, display_name, or agent_identity to deliver events for',
|
|
30
|
+
},
|
|
31
|
+
quiet: {
|
|
32
|
+
name: 'quiet',
|
|
33
|
+
flags: '-q, --quiet',
|
|
34
|
+
description: 'Suppress watcher lifecycle messages; signal events still print',
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
function asNonEmptyString(value) {
|
|
38
|
+
return typeof value === 'string' && value.trim().length > 0 ? value.trim() : undefined;
|
|
39
|
+
}
|
|
40
|
+
function isDirectedSignal(view) {
|
|
41
|
+
return view.signal.recipients.length > 0;
|
|
42
|
+
}
|
|
43
|
+
async function resolveMemWatchSession(baseDir, session) {
|
|
44
|
+
const resolvedTarget = resolveActiveSessionTarget(baseDir, session);
|
|
45
|
+
if (!resolvedTarget) {
|
|
46
|
+
throw createError(ErrorCodes.VALIDATION_ERROR, `No active agent session found for --session "${session}". Run pnpm mem:roster and pass a live session_id, display_name, or agent_identity.`);
|
|
47
|
+
}
|
|
48
|
+
const readerIdentity = await resolveReaderIdentity(baseDir, resolvedTarget.sessionId);
|
|
49
|
+
return {
|
|
50
|
+
sessionId: resolvedTarget.sessionId,
|
|
51
|
+
readerIdentity,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function getMemWatchSignalsPath(baseDir) {
|
|
55
|
+
return path.join(baseDir, LUMENFLOW_PATHS.MEMORY_DIR, SIGNALS_FILE_NAME);
|
|
56
|
+
}
|
|
57
|
+
async function ensureSignalsFile(baseDir) {
|
|
58
|
+
const signalsPath = getMemWatchSignalsPath(baseDir);
|
|
59
|
+
await fs.mkdir(path.dirname(signalsPath), { recursive: true });
|
|
60
|
+
await fs.appendFile(signalsPath, '', 'utf-8');
|
|
61
|
+
return signalsPath;
|
|
62
|
+
}
|
|
63
|
+
export function formatMemWatchEvents(events) {
|
|
64
|
+
if (events.length === 0) {
|
|
65
|
+
return '';
|
|
66
|
+
}
|
|
67
|
+
const lines = ['<lumenflow-signal-events source="mem:watch">'];
|
|
68
|
+
for (const event of events) {
|
|
69
|
+
const signal = event.signal;
|
|
70
|
+
lines.push('');
|
|
71
|
+
lines.push(`- event: ${event.event}`);
|
|
72
|
+
lines.push(` signal_id: ${signal.signal_id}`);
|
|
73
|
+
lines.push(` sender: ${signal.sender_identity}`);
|
|
74
|
+
lines.push(` intent: ${signal.intent ?? 'INFO'}`);
|
|
75
|
+
lines.push(` interrupt_class: ${signal.interrupt_class ?? 'advisory'}`);
|
|
76
|
+
lines.push(` requires_ack: ${signal.requires_ack === true ? 'true' : 'false'}`);
|
|
77
|
+
if (signal.wu_id)
|
|
78
|
+
lines.push(` wu: ${signal.wu_id}`);
|
|
79
|
+
if (signal.thread_id)
|
|
80
|
+
lines.push(` thread: ${signal.thread_id}`);
|
|
81
|
+
lines.push(` message: ${signal.message}`);
|
|
82
|
+
if (event.next_action) {
|
|
83
|
+
lines.push(' next_action:');
|
|
84
|
+
lines.push(` ack: ${event.next_action.ack_command}`);
|
|
85
|
+
lines.push(` reject: ${event.next_action.reject_command}`);
|
|
86
|
+
lines.push(` gate: ${event.next_action.prep_gate}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
lines.push('</lumenflow-signal-events>');
|
|
90
|
+
return lines.join('\n');
|
|
91
|
+
}
|
|
92
|
+
export async function deliverPendingSignalsForSession(baseDir, options) {
|
|
93
|
+
const target = await resolveMemWatchSession(baseDir, options.session);
|
|
94
|
+
const signalViews = await loadInboxSignalViews(baseDir, {
|
|
95
|
+
compatibilityMode: 'skip-legacy',
|
|
96
|
+
unreadOnly: true,
|
|
97
|
+
targetAgent: target.readerIdentity,
|
|
98
|
+
readerId: target.readerIdentity,
|
|
99
|
+
});
|
|
100
|
+
const directedSignals = signalViews.filter(isDirectedSignal);
|
|
101
|
+
let emittedCount = 0;
|
|
102
|
+
let skippedDuplicateCount = 0;
|
|
103
|
+
let inactiveRecipientCount = 0;
|
|
104
|
+
for (const view of directedSignals) {
|
|
105
|
+
const dispatchResult = await dispatchSignalReceivedEvents(baseDir, {
|
|
106
|
+
signal: view.signal,
|
|
107
|
+
recipientSessionId: target.sessionId,
|
|
108
|
+
deliveredAt: options.deliveredAt,
|
|
109
|
+
});
|
|
110
|
+
emittedCount += dispatchResult.emittedCount;
|
|
111
|
+
skippedDuplicateCount += dispatchResult.skippedDuplicateCount;
|
|
112
|
+
inactiveRecipientCount += dispatchResult.inactiveRecipientCount;
|
|
113
|
+
}
|
|
114
|
+
const events = await drainSignalReceivedEvents(baseDir, target.sessionId);
|
|
115
|
+
const deliveredSignalIds = Array.from(new Set(events.map((event) => event.signal_id)));
|
|
116
|
+
const markedDelivered = deliveredSignalIds.length > 0
|
|
117
|
+
? await markSignalsAsRead(baseDir, deliveredSignalIds, target.readerIdentity)
|
|
118
|
+
: { markedCount: 0 };
|
|
119
|
+
return {
|
|
120
|
+
sessionId: target.sessionId,
|
|
121
|
+
readerIdentity: target.readerIdentity,
|
|
122
|
+
candidateSignalCount: directedSignals.length,
|
|
123
|
+
emittedCount,
|
|
124
|
+
skippedDuplicateCount,
|
|
125
|
+
inactiveRecipientCount,
|
|
126
|
+
markedDeliveredCount: markedDelivered.markedCount,
|
|
127
|
+
events,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
async function deliverAndPrint(options) {
|
|
131
|
+
const delivery = await deliverPendingSignalsForSession(options.baseDir, {
|
|
132
|
+
session: options.session,
|
|
133
|
+
});
|
|
134
|
+
const output = formatMemWatchEvents(delivery.events);
|
|
135
|
+
if (output) {
|
|
136
|
+
console.log(output);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export async function runMemWatch(options) {
|
|
140
|
+
if (!options.quiet) {
|
|
141
|
+
console.log(`${LOG_PREFIX} Watching A2A signals for session ${options.session}`);
|
|
142
|
+
console.log(`${LOG_PREFIX} Press Ctrl+C to stop`);
|
|
143
|
+
}
|
|
144
|
+
const signalsPath = await ensureSignalsFile(options.baseDir);
|
|
145
|
+
await deliverAndPrint(options);
|
|
146
|
+
const watcher = chokidarWatch(signalsPath, {
|
|
147
|
+
ignoreInitial: true,
|
|
148
|
+
awaitWriteFinish: {
|
|
149
|
+
stabilityThreshold: DELIVERY_POLL_SETTLE_MS,
|
|
150
|
+
pollInterval: DELIVERY_POLL_INTERVAL_MS,
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
const onSignalFileChange = async () => {
|
|
154
|
+
try {
|
|
155
|
+
await deliverAndPrint(options);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
159
|
+
console.error(`${LOG_PREFIX} Delivery error: ${message}`);
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
watcher.on('add', () => {
|
|
163
|
+
void onSignalFileChange();
|
|
164
|
+
});
|
|
165
|
+
watcher.on('change', () => {
|
|
166
|
+
void onSignalFileChange();
|
|
167
|
+
});
|
|
168
|
+
await new Promise((resolve) => {
|
|
169
|
+
const cleanup = (activeWatcher) => {
|
|
170
|
+
activeWatcher.close().catch(() => {
|
|
171
|
+
// Watcher cleanup is non-fatal during process shutdown.
|
|
172
|
+
});
|
|
173
|
+
if (!options.quiet) {
|
|
174
|
+
console.log(`${LOG_PREFIX} Stopped`);
|
|
175
|
+
}
|
|
176
|
+
resolve();
|
|
177
|
+
};
|
|
178
|
+
process.once('SIGINT', () => cleanup(watcher));
|
|
179
|
+
process.once('SIGTERM', () => cleanup(watcher));
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function parseArguments() {
|
|
183
|
+
const args = createWUParser({
|
|
184
|
+
name: 'mem-watch',
|
|
185
|
+
description: 'Foreground A2A signal delivery daemon for clients without native hooks',
|
|
186
|
+
options: [CLI_OPTIONS.session, CLI_OPTIONS.quiet],
|
|
187
|
+
required: ['session'],
|
|
188
|
+
allowPositionalId: false,
|
|
189
|
+
});
|
|
190
|
+
const session = asNonEmptyString(args.session);
|
|
191
|
+
if (!session) {
|
|
192
|
+
throw createError(ErrorCodes.VALIDATION_ERROR, 'Missing required --session <id>. Run pnpm mem:roster and pass a live session_id, display_name, or agent_identity.');
|
|
193
|
+
}
|
|
194
|
+
return { session, quiet: args.quiet === true };
|
|
195
|
+
}
|
|
196
|
+
export async function main() {
|
|
197
|
+
const args = parseArguments();
|
|
198
|
+
await runMemWatch({
|
|
199
|
+
baseDir: process.cwd(),
|
|
200
|
+
session: args.session,
|
|
201
|
+
quiet: args.quiet,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
if (import.meta.main) {
|
|
205
|
+
void runCLI(main, { commandName: 'mem:watch' });
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=mem-watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mem-watch.js","sourceRoot":"","sources":["../src/mem-watch.ts"],"names":[],"mappings":";AACA,iCAAiC;AACjC,4DAA4D;AAE5D;;;;;;GAMG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,KAAK,IAAI,aAAa,EAAkB,MAAM,UAAU,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,4BAA4B,EAC5B,yBAAyB,GAE1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,UAAU,GAAG,aAAa,CAAC;AACjC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAC1C,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AA6BrC,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,0EAA0E;KACxF;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gEAAgE;KAC9E;CACF,CAAC;AAEF,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACzF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAqB;IAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,OAAe,EACf,OAAe;IAEf,MAAM,cAAc,GAAG,0BAA0B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,WAAW,CACf,UAAU,CAAC,gBAAgB,EAC3B,gDAAgD,OAAO,qFAAqF,CAC7I,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,cAAc,CAAC,SAAS,CAAC,CAAC;IACtF,OAAO;QACL,SAAS,EAAE,cAAc,CAAC,SAAS;QACnC,cAAc;KACf,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAe;IAC9C,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAA0C;IAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC/D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,sBAAsB,MAAM,CAAC,eAAe,IAAI,UAAU,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,OAAe,EACf,OAAgC;IAEhC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAAC,OAAO,EAAE;QACtD,iBAAiB,EAAE,aAAa;QAChC,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,MAAM,CAAC,cAAc;QAClC,QAAQ,EAAE,MAAM,CAAC,cAAc;KAChC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC7D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,eAAe,EAAE,CAAC;QACnC,MAAM,cAAc,GAAG,MAAM,4BAA4B,CAAC,OAAO,EAAE;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,kBAAkB,EAAE,MAAM,CAAC,SAAS;YACpC,WAAW,EAAE,OAAO,CAAC,WAAW;SACjC,CAAC,CAAC;QACH,YAAY,IAAI,cAAc,CAAC,YAAY,CAAC;QAC5C,qBAAqB,IAAI,cAAc,CAAC,qBAAqB,CAAC;QAC9D,sBAAsB,IAAI,cAAc,CAAC,sBAAsB,CAAC;IAClE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,eAAe,GACnB,kBAAkB,CAAC,MAAM,GAAG,CAAC;QAC3B,CAAC,CAAC,MAAM,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,cAAc,CAAC;QAC7E,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;IAEzB,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,oBAAoB,EAAE,eAAe,CAAC,MAAM;QAC5C,YAAY;QACZ,qBAAqB;QACrB,sBAAsB;QACtB,oBAAoB,EAAE,eAAe,CAAC,WAAW;QACjD,MAAM;KACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,OAA2B;IACxD,MAAM,QAAQ,GAAG,MAAM,+BAA+B,CAAC,OAAO,CAAC,OAAO,EAAE;QACtE,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,oBAAoB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC3D,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,qCAAqC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,uBAAuB,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,EAAE;QACzC,aAAa,EAAE,IAAI;QACnB,gBAAgB,EAAE;YAChB,kBAAkB,EAAE,uBAAuB;YAC3C,YAAY,EAAE,yBAAyB;SACxC;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,GAAG,UAAU,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QACrB,KAAK,kBAAkB,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,KAAK,kBAAkB,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,OAAO,GAAG,CAAC,aAAwB,EAAQ,EAAE;YACjD,aAAa,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC/B,wDAAwD;YAC1D,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,UAAU,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,cAAc,CAAC;QAC1B,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,wEAAwE;QACrF,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC;QACjD,QAAQ,EAAE,CAAC,SAAS,CAAC;QACrB,iBAAiB,EAAE,KAAK;KACzB,CAA2C,CAAC;IAC7C,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,WAAW,CACf,UAAU,CAAC,gBAAgB,EAC3B,mHAAmH,CACpH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,WAAW,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC,CAAC;AACL,CAAC;AAED,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/public-manifest.js
CHANGED
|
@@ -457,6 +457,20 @@ export const PUBLIC_MANIFEST = [
|
|
|
457
457
|
description: 'Check coordination signals',
|
|
458
458
|
category: COMMAND_CATEGORIES.MEMORY_SESSIONS,
|
|
459
459
|
},
|
|
460
|
+
{
|
|
461
|
+
name: 'mem:converged',
|
|
462
|
+
binName: 'mem-converged',
|
|
463
|
+
binPath: './dist/mem-converged.js',
|
|
464
|
+
description: 'Evaluate whether an A2A signal thread has converged',
|
|
465
|
+
category: COMMAND_CATEGORIES.MEMORY_SESSIONS,
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
name: 'mem:watch',
|
|
469
|
+
binName: 'mem-watch',
|
|
470
|
+
binPath: './dist/mem-watch.js',
|
|
471
|
+
description: 'Deliver A2A signal events for clients without native hooks',
|
|
472
|
+
category: COMMAND_CATEGORIES.MEMORY_SESSIONS,
|
|
473
|
+
},
|
|
460
474
|
{
|
|
461
475
|
name: 'mem:roster',
|
|
462
476
|
binName: 'mem-roster',
|