genesis-ai-cli 7.4.5
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/.env.example +78 -0
- package/README.md +282 -0
- package/dist/src/active-inference/actions.d.ts +75 -0
- package/dist/src/active-inference/actions.js +250 -0
- package/dist/src/active-inference/autonomous-loop.d.ts +103 -0
- package/dist/src/active-inference/autonomous-loop.js +289 -0
- package/dist/src/active-inference/core.d.ts +85 -0
- package/dist/src/active-inference/core.js +555 -0
- package/dist/src/active-inference/demo-autonomous-loop.d.ts +8 -0
- package/dist/src/active-inference/demo-autonomous-loop.js +338 -0
- package/dist/src/active-inference/demo-value-integration.d.ts +8 -0
- package/dist/src/active-inference/demo-value-integration.js +174 -0
- package/dist/src/active-inference/index.d.ts +32 -0
- package/dist/src/active-inference/index.js +88 -0
- package/dist/src/active-inference/integration.d.ts +114 -0
- package/dist/src/active-inference/integration.js +698 -0
- package/dist/src/active-inference/memory-integration.d.ts +51 -0
- package/dist/src/active-inference/memory-integration.js +232 -0
- package/dist/src/active-inference/observations.d.ts +67 -0
- package/dist/src/active-inference/observations.js +147 -0
- package/dist/src/active-inference/test-active-inference.d.ts +8 -0
- package/dist/src/active-inference/test-active-inference.js +320 -0
- package/dist/src/active-inference/test-value-integration.d.ts +6 -0
- package/dist/src/active-inference/test-value-integration.js +168 -0
- package/dist/src/active-inference/types.d.ts +150 -0
- package/dist/src/active-inference/types.js +59 -0
- package/dist/src/active-inference/value-integration.d.ts +164 -0
- package/dist/src/active-inference/value-integration.js +459 -0
- package/dist/src/agents/base-agent.d.ts +53 -0
- package/dist/src/agents/base-agent.js +178 -0
- package/dist/src/agents/builder.d.ts +67 -0
- package/dist/src/agents/builder.js +537 -0
- package/dist/src/agents/critic.d.ts +35 -0
- package/dist/src/agents/critic.js +322 -0
- package/dist/src/agents/ethicist.d.ts +54 -0
- package/dist/src/agents/ethicist.js +393 -0
- package/dist/src/agents/explorer.d.ts +26 -0
- package/dist/src/agents/explorer.js +216 -0
- package/dist/src/agents/feeling.d.ts +41 -0
- package/dist/src/agents/feeling.js +320 -0
- package/dist/src/agents/index.d.ts +111 -0
- package/dist/src/agents/index.js +222 -0
- package/dist/src/agents/memory.d.ts +69 -0
- package/dist/src/agents/memory.js +404 -0
- package/dist/src/agents/message-bus.d.ts +88 -0
- package/dist/src/agents/message-bus.js +267 -0
- package/dist/src/agents/narrator.d.ts +90 -0
- package/dist/src/agents/narrator.js +473 -0
- package/dist/src/agents/planner.d.ts +38 -0
- package/dist/src/agents/planner.js +341 -0
- package/dist/src/agents/predictor.d.ts +73 -0
- package/dist/src/agents/predictor.js +506 -0
- package/dist/src/agents/sensor.d.ts +88 -0
- package/dist/src/agents/sensor.js +377 -0
- package/dist/src/agents/test-agents.d.ts +6 -0
- package/dist/src/agents/test-agents.js +73 -0
- package/dist/src/agents/types.d.ts +194 -0
- package/dist/src/agents/types.js +7 -0
- package/dist/src/brain/index.d.ts +185 -0
- package/dist/src/brain/index.js +843 -0
- package/dist/src/brain/trace.d.ts +91 -0
- package/dist/src/brain/trace.js +327 -0
- package/dist/src/brain/types.d.ts +165 -0
- package/dist/src/brain/types.js +51 -0
- package/dist/src/cli/chat.d.ts +237 -0
- package/dist/src/cli/chat.js +1959 -0
- package/dist/src/cli/dispatcher.d.ts +182 -0
- package/dist/src/cli/dispatcher.js +718 -0
- package/dist/src/cli/human-loop.d.ts +170 -0
- package/dist/src/cli/human-loop.js +543 -0
- package/dist/src/cli/index.d.ts +12 -0
- package/dist/src/cli/index.js +28 -0
- package/dist/src/cli/interactive.d.ts +141 -0
- package/dist/src/cli/interactive.js +757 -0
- package/dist/src/cli/ui.d.ts +205 -0
- package/dist/src/cli/ui.js +632 -0
- package/dist/src/consciousness/attention-schema.d.ts +154 -0
- package/dist/src/consciousness/attention-schema.js +432 -0
- package/dist/src/consciousness/global-workspace.d.ts +149 -0
- package/dist/src/consciousness/global-workspace.js +422 -0
- package/dist/src/consciousness/index.d.ts +186 -0
- package/dist/src/consciousness/index.js +476 -0
- package/dist/src/consciousness/phi-calculator.d.ts +119 -0
- package/dist/src/consciousness/phi-calculator.js +445 -0
- package/dist/src/consciousness/phi-decisions.d.ts +169 -0
- package/dist/src/consciousness/phi-decisions.js +383 -0
- package/dist/src/consciousness/phi-monitor.d.ts +153 -0
- package/dist/src/consciousness/phi-monitor.js +465 -0
- package/dist/src/consciousness/types.d.ts +260 -0
- package/dist/src/consciousness/types.js +44 -0
- package/dist/src/daemon/dream-mode.d.ts +115 -0
- package/dist/src/daemon/dream-mode.js +470 -0
- package/dist/src/daemon/index.d.ts +162 -0
- package/dist/src/daemon/index.js +542 -0
- package/dist/src/daemon/maintenance.d.ts +139 -0
- package/dist/src/daemon/maintenance.js +549 -0
- package/dist/src/daemon/process.d.ts +82 -0
- package/dist/src/daemon/process.js +442 -0
- package/dist/src/daemon/scheduler.d.ts +90 -0
- package/dist/src/daemon/scheduler.js +494 -0
- package/dist/src/daemon/types.d.ts +213 -0
- package/dist/src/daemon/types.js +50 -0
- package/dist/src/epistemic/index.d.ts +74 -0
- package/dist/src/epistemic/index.js +225 -0
- package/dist/src/grounding/epistemic-stack.d.ts +100 -0
- package/dist/src/grounding/epistemic-stack.js +408 -0
- package/dist/src/grounding/feedback.d.ts +98 -0
- package/dist/src/grounding/feedback.js +276 -0
- package/dist/src/grounding/index.d.ts +123 -0
- package/dist/src/grounding/index.js +224 -0
- package/dist/src/grounding/verifier.d.ts +149 -0
- package/dist/src/grounding/verifier.js +484 -0
- package/dist/src/healing/detector.d.ts +110 -0
- package/dist/src/healing/detector.js +436 -0
- package/dist/src/healing/fixer.d.ts +138 -0
- package/dist/src/healing/fixer.js +572 -0
- package/dist/src/healing/index.d.ts +23 -0
- package/dist/src/healing/index.js +43 -0
- package/dist/src/hooks/index.d.ts +135 -0
- package/dist/src/hooks/index.js +317 -0
- package/dist/src/index.d.ts +23 -0
- package/dist/src/index.js +1266 -0
- package/dist/src/kernel/index.d.ts +155 -0
- package/dist/src/kernel/index.js +795 -0
- package/dist/src/kernel/invariants.d.ts +153 -0
- package/dist/src/kernel/invariants.js +355 -0
- package/dist/src/kernel/test-kernel.d.ts +6 -0
- package/dist/src/kernel/test-kernel.js +108 -0
- package/dist/src/kernel/test-real-mcp.d.ts +10 -0
- package/dist/src/kernel/test-real-mcp.js +295 -0
- package/dist/src/llm/index.d.ts +146 -0
- package/dist/src/llm/index.js +428 -0
- package/dist/src/llm/router.d.ts +136 -0
- package/dist/src/llm/router.js +510 -0
- package/dist/src/mcp/index.d.ts +85 -0
- package/dist/src/mcp/index.js +657 -0
- package/dist/src/mcp/resilient.d.ts +139 -0
- package/dist/src/mcp/resilient.js +417 -0
- package/dist/src/memory/cache.d.ts +118 -0
- package/dist/src/memory/cache.js +356 -0
- package/dist/src/memory/cognitive-workspace.d.ts +231 -0
- package/dist/src/memory/cognitive-workspace.js +521 -0
- package/dist/src/memory/consolidation.d.ts +99 -0
- package/dist/src/memory/consolidation.js +443 -0
- package/dist/src/memory/episodic.d.ts +114 -0
- package/dist/src/memory/episodic.js +394 -0
- package/dist/src/memory/forgetting.d.ts +134 -0
- package/dist/src/memory/forgetting.js +324 -0
- package/dist/src/memory/index.d.ts +211 -0
- package/dist/src/memory/index.js +367 -0
- package/dist/src/memory/indexer.d.ts +123 -0
- package/dist/src/memory/indexer.js +479 -0
- package/dist/src/memory/procedural.d.ts +136 -0
- package/dist/src/memory/procedural.js +479 -0
- package/dist/src/memory/semantic.d.ts +132 -0
- package/dist/src/memory/semantic.js +497 -0
- package/dist/src/memory/types.d.ts +193 -0
- package/dist/src/memory/types.js +15 -0
- package/dist/src/orchestrator.d.ts +65 -0
- package/dist/src/orchestrator.js +317 -0
- package/dist/src/persistence/index.d.ts +257 -0
- package/dist/src/persistence/index.js +763 -0
- package/dist/src/pipeline/executor.d.ts +51 -0
- package/dist/src/pipeline/executor.js +695 -0
- package/dist/src/pipeline/index.d.ts +7 -0
- package/dist/src/pipeline/index.js +11 -0
- package/dist/src/self-production.d.ts +67 -0
- package/dist/src/self-production.js +205 -0
- package/dist/src/subagents/executor.d.ts +58 -0
- package/dist/src/subagents/executor.js +283 -0
- package/dist/src/subagents/index.d.ts +37 -0
- package/dist/src/subagents/index.js +53 -0
- package/dist/src/subagents/registry.d.ts +23 -0
- package/dist/src/subagents/registry.js +167 -0
- package/dist/src/subagents/types.d.ts +79 -0
- package/dist/src/subagents/types.js +14 -0
- package/dist/src/tools/bash.d.ts +139 -0
- package/dist/src/tools/bash.js +583 -0
- package/dist/src/tools/edit.d.ts +125 -0
- package/dist/src/tools/edit.js +424 -0
- package/dist/src/tools/git.d.ts +179 -0
- package/dist/src/tools/git.js +504 -0
- package/dist/src/tools/index.d.ts +21 -0
- package/dist/src/tools/index.js +163 -0
- package/dist/src/types.d.ts +145 -0
- package/dist/src/types.js +7 -0
- package/dist/src/world-model/decoder.d.ts +163 -0
- package/dist/src/world-model/decoder.js +517 -0
- package/dist/src/world-model/digital-twin.d.ts +219 -0
- package/dist/src/world-model/digital-twin.js +695 -0
- package/dist/src/world-model/encoder.d.ts +141 -0
- package/dist/src/world-model/encoder.js +564 -0
- package/dist/src/world-model/index.d.ts +221 -0
- package/dist/src/world-model/index.js +772 -0
- package/dist/src/world-model/predictor.d.ts +161 -0
- package/dist/src/world-model/predictor.js +681 -0
- package/dist/src/world-model/test-value-jepa.d.ts +8 -0
- package/dist/src/world-model/test-value-jepa.js +430 -0
- package/dist/src/world-model/types.d.ts +341 -0
- package/dist/src/world-model/types.js +69 -0
- package/dist/src/world-model/value-jepa.d.ts +247 -0
- package/dist/src/world-model/value-jepa.js +622 -0
- package/dist/test/brain.test.d.ts +11 -0
- package/dist/test/brain.test.js +358 -0
- package/dist/test/cli/dispatcher.test.d.ts +4 -0
- package/dist/test/cli/dispatcher.test.js +332 -0
- package/dist/test/cli/human-loop.test.d.ts +4 -0
- package/dist/test/cli/human-loop.test.js +270 -0
- package/dist/test/grounding/feedback.test.d.ts +4 -0
- package/dist/test/grounding/feedback.test.js +462 -0
- package/dist/test/grounding/verifier.test.d.ts +4 -0
- package/dist/test/grounding/verifier.test.js +442 -0
- package/dist/test/grounding.test.d.ts +6 -0
- package/dist/test/grounding.test.js +246 -0
- package/dist/test/healing/detector.test.d.ts +4 -0
- package/dist/test/healing/detector.test.js +266 -0
- package/dist/test/healing/fixer.test.d.ts +4 -0
- package/dist/test/healing/fixer.test.js +369 -0
- package/dist/test/integration.test.d.ts +5 -0
- package/dist/test/integration.test.js +290 -0
- package/dist/test/tools/bash.test.d.ts +4 -0
- package/dist/test/tools/bash.test.js +348 -0
- package/dist/test/tools/edit.test.d.ts +4 -0
- package/dist/test/tools/edit.test.js +350 -0
- package/dist/test/tools/git.test.d.ts +4 -0
- package/dist/test/tools/git.test.js +350 -0
- package/package.json +60 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Genesis 4.0 - Message Bus
|
|
4
|
+
*
|
|
5
|
+
* Pub/Sub message bus for agent communication.
|
|
6
|
+
* Based on EventEmitter pattern with typed messages.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.messageBus = exports.MessageBus = void 0;
|
|
10
|
+
exports.createMessage = createMessage;
|
|
11
|
+
const crypto_1 = require("crypto");
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Message Bus Class
|
|
14
|
+
// ============================================================================
|
|
15
|
+
class MessageBus {
|
|
16
|
+
subscriptions = new Map();
|
|
17
|
+
messageQueue = [];
|
|
18
|
+
processing = false;
|
|
19
|
+
messageHistory = [];
|
|
20
|
+
maxHistorySize = 1000;
|
|
21
|
+
// Metrics
|
|
22
|
+
metrics = {
|
|
23
|
+
messagesSent: 0,
|
|
24
|
+
messagesDelivered: 0,
|
|
25
|
+
messagesDropped: 0,
|
|
26
|
+
startTime: new Date(),
|
|
27
|
+
};
|
|
28
|
+
// ============================================================================
|
|
29
|
+
// Core Methods
|
|
30
|
+
// ============================================================================
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe to messages
|
|
33
|
+
*/
|
|
34
|
+
subscribe(agentId, handler, filter) {
|
|
35
|
+
const subscriptionId = (0, crypto_1.randomUUID)();
|
|
36
|
+
this.subscriptions.set(subscriptionId, {
|
|
37
|
+
id: subscriptionId,
|
|
38
|
+
agentId,
|
|
39
|
+
filter,
|
|
40
|
+
handler,
|
|
41
|
+
});
|
|
42
|
+
return subscriptionId;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Unsubscribe from messages
|
|
46
|
+
*/
|
|
47
|
+
unsubscribe(subscriptionId) {
|
|
48
|
+
return this.subscriptions.delete(subscriptionId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Publish a message
|
|
52
|
+
*/
|
|
53
|
+
async publish(message) {
|
|
54
|
+
const fullMessage = {
|
|
55
|
+
...message,
|
|
56
|
+
id: (0, crypto_1.randomUUID)(),
|
|
57
|
+
timestamp: new Date(),
|
|
58
|
+
};
|
|
59
|
+
this.messageQueue.push(fullMessage);
|
|
60
|
+
this.metrics.messagesSent++;
|
|
61
|
+
// Store in history
|
|
62
|
+
this.addToHistory(fullMessage);
|
|
63
|
+
// Process queue
|
|
64
|
+
await this.processQueue();
|
|
65
|
+
return fullMessage.id;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create and publish a message (helper)
|
|
69
|
+
*/
|
|
70
|
+
async send(from, to, type, payload, options = {}) {
|
|
71
|
+
return this.publish({
|
|
72
|
+
from,
|
|
73
|
+
to,
|
|
74
|
+
type,
|
|
75
|
+
payload,
|
|
76
|
+
priority: options.priority || 'normal',
|
|
77
|
+
replyTo: options.replyTo,
|
|
78
|
+
correlationId: options.correlationId,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Broadcast to all agents
|
|
83
|
+
*/
|
|
84
|
+
async broadcast(from, type, payload, priority = 'normal') {
|
|
85
|
+
return this.send(from, 'broadcast', type, payload, { priority });
|
|
86
|
+
}
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// Queue Processing
|
|
89
|
+
// ============================================================================
|
|
90
|
+
async processQueue() {
|
|
91
|
+
if (this.processing)
|
|
92
|
+
return;
|
|
93
|
+
this.processing = true;
|
|
94
|
+
try {
|
|
95
|
+
// Sort by priority
|
|
96
|
+
this.messageQueue.sort((a, b) => {
|
|
97
|
+
const priorityOrder = { critical: 0, high: 1, normal: 2, low: 3 };
|
|
98
|
+
return priorityOrder[a.priority] - priorityOrder[b.priority];
|
|
99
|
+
});
|
|
100
|
+
while (this.messageQueue.length > 0) {
|
|
101
|
+
const message = this.messageQueue.shift();
|
|
102
|
+
await this.deliverMessage(message);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
this.processing = false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async deliverMessage(message) {
|
|
110
|
+
const targetSubscriptions = this.findSubscriptions(message);
|
|
111
|
+
if (targetSubscriptions.length === 0) {
|
|
112
|
+
this.metrics.messagesDropped++;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
// Deliver to all matching subscriptions
|
|
116
|
+
const deliveryPromises = targetSubscriptions.map(async (sub) => {
|
|
117
|
+
try {
|
|
118
|
+
await sub.handler(message);
|
|
119
|
+
this.metrics.messagesDelivered++;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
console.error(`[MessageBus] Error delivering to ${sub.agentId}:`, error);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
await Promise.all(deliveryPromises);
|
|
126
|
+
}
|
|
127
|
+
findSubscriptions(message) {
|
|
128
|
+
const matching = [];
|
|
129
|
+
for (const sub of this.subscriptions.values()) {
|
|
130
|
+
// Check if message is for this subscriber
|
|
131
|
+
if (message.to !== 'broadcast') {
|
|
132
|
+
// Exact match by ID
|
|
133
|
+
const exactMatch = message.to === sub.agentId;
|
|
134
|
+
// Match by agent type (e.g., 'explorer' matches 'explorer-12345678')
|
|
135
|
+
const typeMatch = sub.agentId.startsWith(message.to + '-');
|
|
136
|
+
if (!exactMatch && !typeMatch) {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Check filter
|
|
141
|
+
if (sub.filter) {
|
|
142
|
+
if (sub.filter.types && !sub.filter.types.includes(message.type)) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (sub.filter.from && !sub.filter.from.includes(message.from)) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
if (sub.filter.priority && !sub.filter.priority.includes(message.priority)) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
matching.push(sub);
|
|
153
|
+
}
|
|
154
|
+
return matching;
|
|
155
|
+
}
|
|
156
|
+
// ============================================================================
|
|
157
|
+
// History
|
|
158
|
+
// ============================================================================
|
|
159
|
+
addToHistory(message) {
|
|
160
|
+
this.messageHistory.push(message);
|
|
161
|
+
if (this.messageHistory.length > this.maxHistorySize) {
|
|
162
|
+
this.messageHistory.shift();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
getHistory(filter) {
|
|
166
|
+
let filtered = [...this.messageHistory];
|
|
167
|
+
if (filter?.from) {
|
|
168
|
+
filtered = filtered.filter((m) => m.from === filter.from);
|
|
169
|
+
}
|
|
170
|
+
if (filter?.to) {
|
|
171
|
+
filtered = filtered.filter((m) => m.to === filter.to);
|
|
172
|
+
}
|
|
173
|
+
if (filter?.type) {
|
|
174
|
+
filtered = filtered.filter((m) => m.type === filter.type);
|
|
175
|
+
}
|
|
176
|
+
if (filter?.limit) {
|
|
177
|
+
filtered = filtered.slice(-filter.limit);
|
|
178
|
+
}
|
|
179
|
+
return filtered;
|
|
180
|
+
}
|
|
181
|
+
// ============================================================================
|
|
182
|
+
// Utilities
|
|
183
|
+
// ============================================================================
|
|
184
|
+
/**
|
|
185
|
+
* Wait for a specific message (useful for request-response)
|
|
186
|
+
*/
|
|
187
|
+
waitForMessage(filter, timeout = 30000) {
|
|
188
|
+
return new Promise((resolve, reject) => {
|
|
189
|
+
const timeoutId = setTimeout(() => {
|
|
190
|
+
this.unsubscribe(subId);
|
|
191
|
+
reject(new Error('Message timeout'));
|
|
192
|
+
}, timeout);
|
|
193
|
+
// Subscribe using the expected recipient ID so we receive messages addressed to them
|
|
194
|
+
const subscriberId = filter.to || 'waiter-' + (0, crypto_1.randomUUID)();
|
|
195
|
+
const subId = this.subscribe(subscriberId, (message) => {
|
|
196
|
+
let matches = true;
|
|
197
|
+
if (filter.replyTo && message.replyTo !== filter.replyTo)
|
|
198
|
+
matches = false;
|
|
199
|
+
if (filter.correlationId && message.correlationId !== filter.correlationId)
|
|
200
|
+
matches = false;
|
|
201
|
+
if (filter.type && message.type !== filter.type)
|
|
202
|
+
matches = false;
|
|
203
|
+
if (filter.from && !message.from.startsWith(filter.from))
|
|
204
|
+
matches = false;
|
|
205
|
+
if (matches) {
|
|
206
|
+
clearTimeout(timeoutId);
|
|
207
|
+
this.unsubscribe(subId);
|
|
208
|
+
resolve(message);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Request-response pattern
|
|
215
|
+
*/
|
|
216
|
+
async request(from, to, type, payload, timeout = 30000) {
|
|
217
|
+
const correlationId = (0, crypto_1.randomUUID)();
|
|
218
|
+
// Set up response listener first
|
|
219
|
+
// We subscribe as 'from' to receive responses addressed to us
|
|
220
|
+
const responsePromise = this.waitForMessage({ correlationId, from: to, to: from }, timeout);
|
|
221
|
+
// Send request
|
|
222
|
+
await this.send(from, to, type, payload, { correlationId });
|
|
223
|
+
// Wait for response
|
|
224
|
+
return responsePromise;
|
|
225
|
+
}
|
|
226
|
+
// ============================================================================
|
|
227
|
+
// Metrics
|
|
228
|
+
// ============================================================================
|
|
229
|
+
getMetrics() {
|
|
230
|
+
return {
|
|
231
|
+
...this.metrics,
|
|
232
|
+
uptime: Date.now() - this.metrics.startTime.getTime(),
|
|
233
|
+
activeSubscriptions: this.subscriptions.size,
|
|
234
|
+
queueLength: this.messageQueue.length,
|
|
235
|
+
historySize: this.messageHistory.length,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
// ============================================================================
|
|
239
|
+
// Cleanup
|
|
240
|
+
// ============================================================================
|
|
241
|
+
clear() {
|
|
242
|
+
this.subscriptions.clear();
|
|
243
|
+
this.messageQueue = [];
|
|
244
|
+
this.messageHistory = [];
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
exports.MessageBus = MessageBus;
|
|
248
|
+
// ============================================================================
|
|
249
|
+
// Singleton Export
|
|
250
|
+
// ============================================================================
|
|
251
|
+
exports.messageBus = new MessageBus();
|
|
252
|
+
// ============================================================================
|
|
253
|
+
// Helper Functions
|
|
254
|
+
// ============================================================================
|
|
255
|
+
function createMessage(from, to, type, payload, options = {}) {
|
|
256
|
+
return {
|
|
257
|
+
id: (0, crypto_1.randomUUID)(),
|
|
258
|
+
from,
|
|
259
|
+
to,
|
|
260
|
+
type,
|
|
261
|
+
payload,
|
|
262
|
+
timestamp: new Date(),
|
|
263
|
+
priority: options.priority || 'normal',
|
|
264
|
+
replyTo: options.replyTo,
|
|
265
|
+
correlationId: options.correlationId,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Genesis 4.0 - Narrator Agent
|
|
3
|
+
*
|
|
4
|
+
* Creates coherent narratives from events and experiences.
|
|
5
|
+
* The storyteller: "Here's what happened..."
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Event to narrative transformation
|
|
9
|
+
* - Temporal coherence
|
|
10
|
+
* - Causal reasoning
|
|
11
|
+
* - Multi-perspective storytelling
|
|
12
|
+
* - Summary generation
|
|
13
|
+
*/
|
|
14
|
+
import { BaseAgent } from './base-agent.js';
|
|
15
|
+
import { MessageBus } from './message-bus.js';
|
|
16
|
+
import { Message, MessageType } from './types.js';
|
|
17
|
+
interface Event {
|
|
18
|
+
id: string;
|
|
19
|
+
type: string;
|
|
20
|
+
timestamp: Date;
|
|
21
|
+
actors: string[];
|
|
22
|
+
action: string;
|
|
23
|
+
outcome?: string;
|
|
24
|
+
context?: string;
|
|
25
|
+
importance?: number;
|
|
26
|
+
}
|
|
27
|
+
interface Narrative {
|
|
28
|
+
id: string;
|
|
29
|
+
title: string;
|
|
30
|
+
summary: string;
|
|
31
|
+
chapters: Chapter[];
|
|
32
|
+
themes: string[];
|
|
33
|
+
timeline: {
|
|
34
|
+
start: Date;
|
|
35
|
+
end: Date;
|
|
36
|
+
duration: number;
|
|
37
|
+
};
|
|
38
|
+
createdAt: Date;
|
|
39
|
+
}
|
|
40
|
+
interface Chapter {
|
|
41
|
+
title: string;
|
|
42
|
+
content: string;
|
|
43
|
+
events: string[];
|
|
44
|
+
startTime: Date;
|
|
45
|
+
endTime: Date;
|
|
46
|
+
}
|
|
47
|
+
interface NarrativeStyle {
|
|
48
|
+
voice: 'first_person' | 'third_person' | 'omniscient';
|
|
49
|
+
tone: 'formal' | 'casual' | 'technical' | 'poetic';
|
|
50
|
+
detail: 'minimal' | 'moderate' | 'detailed';
|
|
51
|
+
}
|
|
52
|
+
export declare class NarratorAgent extends BaseAgent {
|
|
53
|
+
private eventBuffer;
|
|
54
|
+
private narratives;
|
|
55
|
+
private defaultStyle;
|
|
56
|
+
private themeKeywords;
|
|
57
|
+
constructor(bus?: MessageBus);
|
|
58
|
+
protected getMessageTypes(): MessageType[];
|
|
59
|
+
process(message: Message): Promise<Message | null>;
|
|
60
|
+
private handleEvent;
|
|
61
|
+
private collectEvent;
|
|
62
|
+
private createEvent;
|
|
63
|
+
private describeAction;
|
|
64
|
+
private handleNarrateRequest;
|
|
65
|
+
private getEventsInRange;
|
|
66
|
+
generateNarrative(events: Event[], style?: NarrativeStyle, format?: 'summary' | 'detailed' | 'chapters'): Narrative;
|
|
67
|
+
private detectThemes;
|
|
68
|
+
private generateTitle;
|
|
69
|
+
private generateChapters;
|
|
70
|
+
private groupEvents;
|
|
71
|
+
private generateChapterTitle;
|
|
72
|
+
private narrate;
|
|
73
|
+
private narrateEvent;
|
|
74
|
+
private pastTense;
|
|
75
|
+
private generateSummary;
|
|
76
|
+
private formatDuration;
|
|
77
|
+
private createEmptyNarrative;
|
|
78
|
+
private handleQuery;
|
|
79
|
+
getStats(): {
|
|
80
|
+
eventsBuffered: number;
|
|
81
|
+
narrativesGenerated: number;
|
|
82
|
+
recentThemes: string[];
|
|
83
|
+
};
|
|
84
|
+
private capitalize;
|
|
85
|
+
addEvent(event: Partial<Event>): void;
|
|
86
|
+
getEventBuffer(): Event[];
|
|
87
|
+
setDefaultStyle(style: Partial<NarrativeStyle>): void;
|
|
88
|
+
}
|
|
89
|
+
export declare function createNarratorAgent(bus?: MessageBus): NarratorAgent;
|
|
90
|
+
export {};
|