@lumenflow/core 4.19.1 → 4.20.1

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.
@@ -64,4 +64,6 @@ export declare function getMemoryContextMaxSize(config: Partial<LumenFlowConfig>
64
64
  * @returns Formatted Memory Context section, or empty string if no context
65
65
  */
66
66
  export declare function generateMemoryContextSection(baseDir: string, options: GenerateMemoryContextOptions): Promise<string>;
67
+ export { findClaimTimestamp, generateInboxSection } from './wu-spawn-inbox.js';
68
+ export type { GenerateInboxSectionOptions } from './wu-spawn-inbox.js';
67
69
  //# sourceMappingURL=wu-spawn-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wu-spawn-context.d.ts","sourceRoot":"","sources":["../src/wu-spawn-context.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAsBpE;;GAEG;AACH,eAAO,MAAM,6BAA6B,sBAAsB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAgBhF;AAoGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CAwCjB"}
1
+ {"version":3,"file":"wu-spawn-context.d.ts","sourceRoot":"","sources":["../src/wu-spawn-context.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAsBpE;;GAEG;AACH,eAAO,MAAM,6BAA6B,sBAAsB,CAAC;AAEjE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAanF;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAgBhF;AAoGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,4BAA4B,GACpC,OAAO,CAAC,MAAM,CAAC,CAwCjB;AAGD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,YAAY,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC"}
@@ -183,4 +183,6 @@ export async function generateMemoryContextSection(baseDir, options) {
183
183
  // Format for spawn prompt
184
184
  return formatForSpawnPrompt(result.contextBlock, wuId);
185
185
  }
186
+ // WU-2607: Re-export inbox helpers for spawn integration
187
+ export { findClaimTimestamp, generateInboxSection } from './wu-spawn-inbox.js';
186
188
  //# sourceMappingURL=wu-spawn-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wu-spawn-context.js","sourceRoot":"","sources":["../src/wu-spawn-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wu-spawn-context.js","sourceRoot":"","sources":["../src/wu-spawn-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /// <reference path="./types.d.ts" />
2
+ /**
3
+ * Find the latest wu:claim timestamp for a WU by scanning wu-events.jsonl.
4
+ *
5
+ * Lenient parser: malformed lines are silently skipped so a single bad
6
+ * record cannot mask legitimate claim events. Returns null if the file
7
+ * is missing, unreadable, or contains no matching claim event.
8
+ */
9
+ export declare function findClaimTimestamp(baseDir: string, wuId: string): Promise<Date | null>;
10
+ export interface GenerateInboxSectionOptions {
11
+ /** WU ID to scope signals to */
12
+ wuId: string;
13
+ /** Optional lane to scope signals to */
14
+ lane?: string;
15
+ /** Hours window to use when no wu:claim event is found (default: 24) */
16
+ fallbackHours?: number;
17
+ /** Maximum signals to render (default: 20) */
18
+ maxSignals?: number;
19
+ }
20
+ /**
21
+ * Generate the Coordination Signals subsection for wu:brief prompts.
22
+ *
23
+ * Rendered as a markdown subsection (### Coordination Signals) suitable for
24
+ * nesting under the existing ## Memory Context block. Returns an empty
25
+ * string when there are no matching signals OR when any error occurs —
26
+ * wu:brief generation must never be blocked on memory-system health.
27
+ */
28
+ export declare function generateInboxSection(baseDir: string, options: GenerateInboxSectionOptions): Promise<string>;
29
+ //# sourceMappingURL=wu-spawn-inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-spawn-inbox.d.ts","sourceRoot":"","sources":["../src/wu-spawn-inbox.ts"],"names":[],"mappings":"AA2CA;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CA+B5F;AAED,MAAM,WAAW,2BAA2B;IAC1C,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA2DD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
@@ -0,0 +1,122 @@
1
+ // Copyright (c) 2026 Hellmai Ltd
2
+ // SPDX-License-Identifier: AGPL-3.0-only
3
+ /**
4
+ * Coordination Signals (mem:inbox) Integration for wu:brief (WU-2607).
5
+ *
6
+ * Auto-loads coordination signals from other agents into the wu:brief output.
7
+ * Window is bounded by the WU's wu:claim timestamp from wu-events.jsonl;
8
+ * falls back to a configurable hours-window when no claim event is found.
9
+ *
10
+ * Lenient by design: never throws. Any failure (missing files, malformed
11
+ * lines, missing memory peer dep) returns an empty section so wu:brief
12
+ * generation is never blocked on memory-system health.
13
+ *
14
+ * @see {@link ./wu-spawn-context.ts} - Sibling helper for mem:context auto-load
15
+ */
16
+ import fs from 'node:fs/promises';
17
+ import path from 'node:path';
18
+ import { LUMENFLOW_PATHS } from './wu-constants.js';
19
+ const WU_EVENTS_RELPATH = path.join(LUMENFLOW_PATHS.STATE_DIR, 'wu-events.jsonl');
20
+ const DEFAULT_FALLBACK_HOURS = 24;
21
+ const DEFAULT_MAX_SIGNALS = 20;
22
+ const COORDINATION_SECTION_HEADER = '### Coordination Signals';
23
+ function isClaimForWu(value, wuId) {
24
+ if (!value || typeof value !== 'object')
25
+ return false;
26
+ const ev = value;
27
+ return (ev.type === 'claim' &&
28
+ typeof ev.wuId === 'string' &&
29
+ ev.wuId === wuId &&
30
+ typeof ev.timestamp === 'string');
31
+ }
32
+ /**
33
+ * Find the latest wu:claim timestamp for a WU by scanning wu-events.jsonl.
34
+ *
35
+ * Lenient parser: malformed lines are silently skipped so a single bad
36
+ * record cannot mask legitimate claim events. Returns null if the file
37
+ * is missing, unreadable, or contains no matching claim event.
38
+ */
39
+ export async function findClaimTimestamp(baseDir, wuId) {
40
+ let content;
41
+ try {
42
+ content = await fs.readFile(path.join(baseDir, WU_EVENTS_RELPATH), 'utf-8');
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ let latest = null;
48
+ for (const rawLine of content.split('\n')) {
49
+ const line = rawLine.trim();
50
+ if (!line)
51
+ continue;
52
+ let parsed;
53
+ try {
54
+ parsed = JSON.parse(line);
55
+ }
56
+ catch {
57
+ continue;
58
+ }
59
+ if (!isClaimForWu(parsed, wuId))
60
+ continue;
61
+ const ts = new Date(parsed.timestamp);
62
+ if (Number.isNaN(ts.getTime()))
63
+ continue;
64
+ if (!latest || ts > latest) {
65
+ latest = ts;
66
+ }
67
+ }
68
+ return latest;
69
+ }
70
+ function hasLoadSignals(mod) {
71
+ return (!!mod &&
72
+ typeof mod === 'object' &&
73
+ typeof mod.loadSignals === 'function');
74
+ }
75
+ async function loadSignalsFromMemoryPkg(baseDir, options) {
76
+ try {
77
+ const moduleName = '@lumenflow/memory/signal';
78
+ const mod = (await import(moduleName));
79
+ if (!hasLoadSignals(mod))
80
+ return null;
81
+ return await mod.loadSignals(baseDir, {
82
+ wuId: options.wuId,
83
+ lane: options.lane,
84
+ since: options.since,
85
+ unreadOnly: false,
86
+ compatibilityMode: 'skip-legacy',
87
+ });
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ }
93
+ function formatSignal(signal) {
94
+ const ts = signal.created_at ?? 'unknown-time';
95
+ const scope = [];
96
+ if (signal.wu_id)
97
+ scope.push(signal.wu_id);
98
+ if (signal.lane)
99
+ scope.push(signal.lane);
100
+ const scopeStr = scope.length > 0 ? ` [${scope.join(' | ')}]` : '';
101
+ return `- ${ts}${scopeStr} ${signal.id}: ${signal.message}`;
102
+ }
103
+ /**
104
+ * Generate the Coordination Signals subsection for wu:brief prompts.
105
+ *
106
+ * Rendered as a markdown subsection (### Coordination Signals) suitable for
107
+ * nesting under the existing ## Memory Context block. Returns an empty
108
+ * string when there are no matching signals OR when any error occurs —
109
+ * wu:brief generation must never be blocked on memory-system health.
110
+ */
111
+ export async function generateInboxSection(baseDir, options) {
112
+ const { wuId, lane, fallbackHours = DEFAULT_FALLBACK_HOURS, maxSignals = DEFAULT_MAX_SIGNALS, } = options;
113
+ const claimTs = await findClaimTimestamp(baseDir, wuId);
114
+ const since = claimTs ?? new Date(Date.now() - fallbackHours * 60 * 60 * 1000);
115
+ const signals = await loadSignalsFromMemoryPkg(baseDir, { wuId, lane, since });
116
+ if (!signals || signals.length === 0)
117
+ return '';
118
+ const limited = signals.slice(0, maxSignals);
119
+ const sinceLabel = claimTs ? `since wu:claim ${claimTs.toISOString()}` : `last ${fallbackHours}h`;
120
+ return `${COORDINATION_SECTION_HEADER} (${sinceLabel})\n\n${limited.map(formatSignal).join('\n')}\n`;
121
+ }
122
+ //# sourceMappingURL=wu-spawn-inbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wu-spawn-inbox.js","sourceRoot":"","sources":["../src/wu-spawn-inbox.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lumenflow/core",
3
- "version": "4.19.1",
3
+ "version": "4.20.1",
4
4
  "description": "Core WU lifecycle tools for LumenFlow workflow framework",
5
5
  "keywords": [
6
6
  "lumenflow",
@@ -236,7 +236,7 @@
236
236
  "vitest": "^4.0.18"
237
237
  },
238
238
  "peerDependencies": {
239
- "@lumenflow/memory": "4.19.1"
239
+ "@lumenflow/memory": "4.20.1"
240
240
  },
241
241
  "peerDependenciesMeta": {
242
242
  "@lumenflow/memory": {