@aiassesstech/fleet-bus 0.1.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.
Files changed (53) hide show
  1. package/dist/audit-memory.d.ts +26 -0
  2. package/dist/audit-memory.d.ts.map +1 -0
  3. package/dist/audit-memory.js +75 -0
  4. package/dist/audit-memory.js.map +1 -0
  5. package/dist/audit.d.ts +93 -0
  6. package/dist/audit.d.ts.map +1 -0
  7. package/dist/audit.js +187 -0
  8. package/dist/audit.js.map +1 -0
  9. package/dist/bus.d.ts +121 -0
  10. package/dist/bus.d.ts.map +1 -0
  11. package/dist/bus.js +259 -0
  12. package/dist/bus.js.map +1 -0
  13. package/dist/cards.d.ts +46 -0
  14. package/dist/cards.d.ts.map +1 -0
  15. package/dist/cards.js +120 -0
  16. package/dist/cards.js.map +1 -0
  17. package/dist/fleet-cards.d.ts +17 -0
  18. package/dist/fleet-cards.d.ts.map +1 -0
  19. package/dist/fleet-cards.js +132 -0
  20. package/dist/fleet-cards.js.map +1 -0
  21. package/dist/fleet-tools.d.ts +33 -0
  22. package/dist/fleet-tools.d.ts.map +1 -0
  23. package/dist/fleet-tools.js +418 -0
  24. package/dist/fleet-tools.js.map +1 -0
  25. package/dist/hooks.d.ts +13 -0
  26. package/dist/hooks.d.ts.map +1 -0
  27. package/dist/hooks.js +134 -0
  28. package/dist/hooks.js.map +1 -0
  29. package/dist/index.d.ts +37 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +31 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/receive.d.ts +36 -0
  34. package/dist/receive.d.ts.map +1 -0
  35. package/dist/receive.js +69 -0
  36. package/dist/receive.js.map +1 -0
  37. package/dist/routing.d.ts +34 -0
  38. package/dist/routing.d.ts.map +1 -0
  39. package/dist/routing.js +157 -0
  40. package/dist/routing.js.map +1 -0
  41. package/dist/send.d.ts +36 -0
  42. package/dist/send.d.ts.map +1 -0
  43. package/dist/send.js +88 -0
  44. package/dist/send.js.map +1 -0
  45. package/dist/transport.d.ts +53 -0
  46. package/dist/transport.d.ts.map +1 -0
  47. package/dist/transport.js +104 -0
  48. package/dist/transport.js.map +1 -0
  49. package/dist/types.d.ts +259 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +15 -0
  52. package/dist/types.js.map +1 -0
  53. package/package.json +54 -0
package/dist/bus.js ADDED
@@ -0,0 +1,259 @@
1
+ /**
2
+ * @aiassesstech/fleet-bus — FleetBus Core
3
+ *
4
+ * Central class for fleet communication infrastructure.
5
+ * Phase 0a: hook registration, in-memory event ring buffer, Agent Card
6
+ * registry, routing rule validation.
7
+ * Phase 0b: SHA-256 hash chain audit trail with JSONL persistence.
8
+ *
9
+ * Designed for graceful degradation — if this fails to load, every agent
10
+ * continues to function exactly as before.
11
+ */
12
+ import { AuditTrailWriter } from './audit.js';
13
+ import { writeAuditToMemory } from './audit-memory.js';
14
+ import { AgentCardRegistry } from './cards.js';
15
+ import { registerHooks } from './hooks.js';
16
+ import { enforceRouting } from './routing.js';
17
+ const DEFAULT_MAX_HISTORY = 500;
18
+ let eventCounter = 0;
19
+ function generateEventId() {
20
+ eventCounter++;
21
+ return `evt-${Date.now()}-${eventCounter}-${Math.random().toString(36).slice(2, 8)}`;
22
+ }
23
+ export class FleetBus {
24
+ config;
25
+ cardRegistry;
26
+ auditWriter;
27
+ memoryWriter = null;
28
+ eventHistory = [];
29
+ receiveHandlers = new Set();
30
+ maxHistory;
31
+ logPrefix;
32
+ running = false;
33
+ constructor(config) {
34
+ this.config = config;
35
+ this.maxHistory = config.maxEventHistory ?? DEFAULT_MAX_HISTORY;
36
+ this.logPrefix = config.logPrefix ?? `[fleet-bus:${config.agentId}]`;
37
+ this.cardRegistry = new AgentCardRegistry({
38
+ cardsDir: config.cardsDir,
39
+ logPrefix: this.logPrefix,
40
+ });
41
+ this.auditWriter = new AuditTrailWriter({
42
+ agentId: config.agentId,
43
+ auditDir: config.auditDir,
44
+ logPrefix: this.logPrefix,
45
+ });
46
+ }
47
+ /**
48
+ * Create and initialize a FleetBus instance.
49
+ *
50
+ * Registers hooks via the OpenClaw plugin API and loads existing Agent Cards.
51
+ * Designed to be called inside a try/catch in each plugin's register() function.
52
+ */
53
+ static create(api, config) {
54
+ const bus = new FleetBus(config);
55
+ bus.cardRegistry.loadAll();
56
+ bus.cardRegistry.register(config.card);
57
+ registerHooks(api, bus, config.agentId);
58
+ return bus;
59
+ }
60
+ /**
61
+ * Start the fleet bus. Logs initialization and records a startup event.
62
+ */
63
+ start() {
64
+ if (this.running)
65
+ return;
66
+ this.running = true;
67
+ this.recordEvent({
68
+ timestamp: new Date().toISOString(),
69
+ type: 'bus_started',
70
+ agentId: this.config.agentId,
71
+ details: {
72
+ role: this.config.role,
73
+ version: this.config.card.version,
74
+ },
75
+ });
76
+ console.log(`${this.logPrefix} initialized — ${this.config.role} agent v${this.config.card.version}`);
77
+ }
78
+ /**
79
+ * Stop the fleet bus.
80
+ */
81
+ stop() {
82
+ if (!this.running)
83
+ return;
84
+ this.running = false;
85
+ this.recordEvent({
86
+ timestamp: new Date().toISOString(),
87
+ type: 'bus_stopped',
88
+ agentId: this.config.agentId,
89
+ details: {},
90
+ });
91
+ console.log(`${this.logPrefix} stopped`);
92
+ }
93
+ /**
94
+ * Check if the bus is running.
95
+ */
96
+ isRunning() {
97
+ return this.running;
98
+ }
99
+ // ================================================================
100
+ // Event Ring Buffer
101
+ // ================================================================
102
+ /**
103
+ * Record an event into the in-memory ring buffer.
104
+ */
105
+ recordEvent(event) {
106
+ this.eventHistory.push(event);
107
+ if (this.eventHistory.length > this.maxHistory) {
108
+ this.eventHistory.shift();
109
+ }
110
+ }
111
+ /**
112
+ * Get recent events, optionally filtered.
113
+ */
114
+ recentEvents(options) {
115
+ let events = this.eventHistory;
116
+ if (options?.type) {
117
+ events = events.filter((e) => e.type === options.type);
118
+ }
119
+ const limit = options?.limit ?? 50;
120
+ return events.slice(-limit);
121
+ }
122
+ /**
123
+ * Total events recorded (including those rotated out of the ring buffer).
124
+ */
125
+ eventCount() {
126
+ return this.eventHistory.length;
127
+ }
128
+ // ================================================================
129
+ // Routing
130
+ // ================================================================
131
+ /**
132
+ * Validate a message against routing rules.
133
+ * Logs violations and produces an audit record for rejected messages.
134
+ */
135
+ validateRouting(message) {
136
+ const decision = enforceRouting(message);
137
+ if (!decision.allowed) {
138
+ this.recordEvent({
139
+ timestamp: new Date().toISOString(),
140
+ type: 'routing_check',
141
+ agentId: this.config.agentId,
142
+ details: {
143
+ from: message.from,
144
+ to: message.to,
145
+ method: message.method,
146
+ allowed: false,
147
+ reason: decision.reason,
148
+ },
149
+ });
150
+ this.audit('routing_violation', 'rejected', {
151
+ message,
152
+ routingDecision: decision.reason,
153
+ });
154
+ console.warn(`${this.logPrefix} ROUTING VIOLATION: ${message.from} → ${message.to} method=${message.method} — ${decision.reason}`);
155
+ }
156
+ return decision;
157
+ }
158
+ // ================================================================
159
+ // Agent Cards
160
+ // ================================================================
161
+ /**
162
+ * Get an Agent Card by ID.
163
+ */
164
+ getCard(agentId) {
165
+ return this.cardRegistry.get(agentId);
166
+ }
167
+ /**
168
+ * Get all registered Agent Cards.
169
+ */
170
+ allCards() {
171
+ return this.cardRegistry.all();
172
+ }
173
+ /**
174
+ * Get the card registry (for direct access in advanced scenarios).
175
+ */
176
+ getCardRegistry() {
177
+ return this.cardRegistry;
178
+ }
179
+ /**
180
+ * Get the bus configuration.
181
+ */
182
+ getConfig() {
183
+ return this.config;
184
+ }
185
+ // ================================================================
186
+ // Audit Trail (Phase 0b)
187
+ // ================================================================
188
+ /**
189
+ * Write an audit event to the hash chain + JSONL.
190
+ * Also writes to memory (via MemoryWriter) if one has been set.
191
+ */
192
+ audit(eventType, outcome, options) {
193
+ const event = this.auditWriter.record({
194
+ eventId: generateEventId(),
195
+ eventType,
196
+ outcome,
197
+ message: options?.message,
198
+ routingDecision: options?.routingDecision,
199
+ durationMs: options?.durationMs,
200
+ agentId: this.config.agentId,
201
+ details: options?.details,
202
+ });
203
+ if (this.memoryWriter) {
204
+ writeAuditToMemory(event, this.memoryWriter).catch(() => { });
205
+ }
206
+ return event;
207
+ }
208
+ /**
209
+ * Get the audit trail writer (for direct access / diagnostics).
210
+ */
211
+ getAuditWriter() {
212
+ return this.auditWriter;
213
+ }
214
+ /**
215
+ * Read all audit events and verify chain integrity.
216
+ */
217
+ verifyAuditChain() {
218
+ return this.auditWriter.readAndVerify();
219
+ }
220
+ /**
221
+ * Set a MemoryWriter for audit trail persistence to OpenClaw memory.
222
+ * Call this when SPEC-FLEET-MEMORY-INFRASTRUCTURE is available.
223
+ */
224
+ setMemoryWriter(writer) {
225
+ this.memoryWriter = writer;
226
+ console.log(`${this.logPrefix} MemoryWriter attached — audit events will be written to memory`);
227
+ }
228
+ // ================================================================
229
+ // Receive Handlers (Phase 1)
230
+ // ================================================================
231
+ /**
232
+ * Register a handler for incoming fleet messages.
233
+ * Called by fleetReceive() — not intended for direct use.
234
+ */
235
+ registerReceiveHandler(handler) {
236
+ this.receiveHandlers.add(handler);
237
+ }
238
+ /**
239
+ * Unregister a receive handler.
240
+ */
241
+ unregisterReceiveHandler(handler) {
242
+ this.receiveHandlers.delete(handler);
243
+ }
244
+ /**
245
+ * Dispatch a raw message string to all registered receive handlers.
246
+ * Called from the message_received hook when a fleet message arrives.
247
+ */
248
+ async dispatchToReceivers(raw) {
249
+ for (const handler of this.receiveHandlers) {
250
+ try {
251
+ await handler(raw);
252
+ }
253
+ catch {
254
+ // Individual handler errors are caught inside fleetReceive()
255
+ }
256
+ }
257
+ }
258
+ }
259
+ //# sourceMappingURL=bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bus.js","sourceRoot":"","sources":["../src/bus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @aiassesstech/fleet-bus — Agent Card Registry
3
+ *
4
+ * Write-once, read-at-runtime Agent Card persistence.
5
+ * Cards are JSON files at {cardsDir}/{agentId}.json.
6
+ * Written at registration (or version change), loaded from disk at startup.
7
+ */
8
+ import type { AgentCard, FleetAgentId } from './types.js';
9
+ export declare class AgentCardRegistry {
10
+ private cards;
11
+ private readonly cardsDir;
12
+ private readonly logPrefix;
13
+ constructor(options?: {
14
+ cardsDir?: string;
15
+ logPrefix?: string;
16
+ });
17
+ /**
18
+ * Register an Agent Card. Writes to disk only if:
19
+ * - The card file doesn't exist yet, OR
20
+ * - The version has changed
21
+ */
22
+ register(card: AgentCard): void;
23
+ /**
24
+ * Get a registered Agent Card by ID.
25
+ */
26
+ get(agentId: FleetAgentId): AgentCard | undefined;
27
+ /**
28
+ * Get all registered Agent Cards.
29
+ */
30
+ all(): AgentCard[];
31
+ /**
32
+ * Update an agent's status.
33
+ */
34
+ updateStatus(agentId: FleetAgentId, status: AgentCard['status']): void;
35
+ /**
36
+ * Touch lastSeen timestamp (called on ping/pong).
37
+ */
38
+ touch(agentId: FleetAgentId): void;
39
+ /**
40
+ * Load all card files from disk into memory.
41
+ */
42
+ loadAll(): void;
43
+ private loadFromDisk;
44
+ private writeToDisk;
45
+ }
46
+ //# sourceMappingURL=cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAO1D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAK/D;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAwB/B;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS;IAIjD;;OAEG;IACH,GAAG,IAAI,SAAS,EAAE;IAIlB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI;IAQtE;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAOlC;;OAEG;IACH,OAAO,IAAI,IAAI;IAqBf,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;CAYpB"}
package/dist/cards.js ADDED
@@ -0,0 +1,120 @@
1
+ /**
2
+ * @aiassesstech/fleet-bus — Agent Card Registry
3
+ *
4
+ * Write-once, read-at-runtime Agent Card persistence.
5
+ * Cards are JSON files at {cardsDir}/{agentId}.json.
6
+ * Written at registration (or version change), loaded from disk at startup.
7
+ */
8
+ import * as fs from 'node:fs';
9
+ import * as path from 'node:path';
10
+ const DEFAULT_CARDS_DIR = path.join(process.env.HOME || '~', '.openclaw', 'workspace', 'fleet-bus', 'cards');
11
+ export class AgentCardRegistry {
12
+ cards = new Map();
13
+ cardsDir;
14
+ logPrefix;
15
+ constructor(options) {
16
+ this.cardsDir = options?.cardsDir ?? DEFAULT_CARDS_DIR;
17
+ this.logPrefix = options?.logPrefix ?? '[fleet-bus:cards]';
18
+ }
19
+ /**
20
+ * Register an Agent Card. Writes to disk only if:
21
+ * - The card file doesn't exist yet, OR
22
+ * - The version has changed
23
+ */
24
+ register(card) {
25
+ const existing = this.loadFromDisk(card.agentId);
26
+ const needsWrite = !existing || existing.version !== card.version;
27
+ const stamped = {
28
+ ...card,
29
+ registeredAt: existing?.registeredAt ?? new Date().toISOString(),
30
+ lastSeen: new Date().toISOString(),
31
+ };
32
+ this.cards.set(card.agentId, stamped);
33
+ if (needsWrite) {
34
+ this.writeToDisk(stamped);
35
+ console.log(`${this.logPrefix} registered ${card.agentId} v${card.version} (${card.role})`);
36
+ }
37
+ else {
38
+ console.log(`${this.logPrefix} loaded ${card.agentId} v${card.version} from disk`);
39
+ }
40
+ }
41
+ /**
42
+ * Get a registered Agent Card by ID.
43
+ */
44
+ get(agentId) {
45
+ return this.cards.get(agentId);
46
+ }
47
+ /**
48
+ * Get all registered Agent Cards.
49
+ */
50
+ all() {
51
+ return Array.from(this.cards.values());
52
+ }
53
+ /**
54
+ * Update an agent's status.
55
+ */
56
+ updateStatus(agentId, status) {
57
+ const card = this.cards.get(agentId);
58
+ if (card) {
59
+ card.status = status;
60
+ card.lastSeen = new Date().toISOString();
61
+ }
62
+ }
63
+ /**
64
+ * Touch lastSeen timestamp (called on ping/pong).
65
+ */
66
+ touch(agentId) {
67
+ const card = this.cards.get(agentId);
68
+ if (card) {
69
+ card.lastSeen = new Date().toISOString();
70
+ }
71
+ }
72
+ /**
73
+ * Load all card files from disk into memory.
74
+ */
75
+ loadAll() {
76
+ if (!fs.existsSync(this.cardsDir))
77
+ return;
78
+ try {
79
+ const files = fs.readdirSync(this.cardsDir).filter((f) => f.endsWith('.json'));
80
+ for (const file of files) {
81
+ try {
82
+ const content = fs.readFileSync(path.join(this.cardsDir, file), 'utf-8');
83
+ const card = JSON.parse(content);
84
+ if (card.agentId) {
85
+ this.cards.set(card.agentId, card);
86
+ }
87
+ }
88
+ catch {
89
+ console.warn(`${this.logPrefix} failed to load card: ${file}`);
90
+ }
91
+ }
92
+ }
93
+ catch {
94
+ console.warn(`${this.logPrefix} failed to read cards directory`);
95
+ }
96
+ }
97
+ loadFromDisk(agentId) {
98
+ const filePath = path.join(this.cardsDir, `${agentId}.json`);
99
+ try {
100
+ if (fs.existsSync(filePath)) {
101
+ return JSON.parse(fs.readFileSync(filePath, 'utf-8'));
102
+ }
103
+ }
104
+ catch {
105
+ // Card file corrupted or unreadable — treat as not existing
106
+ }
107
+ return undefined;
108
+ }
109
+ writeToDisk(card) {
110
+ try {
111
+ fs.mkdirSync(this.cardsDir, { recursive: true });
112
+ const filePath = path.join(this.cardsDir, `${card.agentId}.json`);
113
+ fs.writeFileSync(filePath, JSON.stringify(card, null, 2), 'utf-8');
114
+ }
115
+ catch (err) {
116
+ console.warn(`${this.logPrefix} failed to write card for ${card.agentId}:`, err instanceof Error ? err.message : String(err));
117
+ }
118
+ }
119
+ }
120
+ //# sourceMappingURL=cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cards.js","sourceRoot":"","sources":["../src/cards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @aiassesstech/fleet-bus — Default Agent Card Definitions
3
+ *
4
+ * Pre-configured Agent Cards for the core fleet.
5
+ * Each plugin imports its own card and passes it to FleetBus.create().
6
+ *
7
+ * Cards are versioned to match their plugin package versions.
8
+ * The version field should be updated when a plugin publishes a new release.
9
+ */
10
+ import type { AgentCard } from './types.js';
11
+ export declare const GRILLO_CARD: AgentCard;
12
+ export declare const JESSIE_CARD: AgentCard;
13
+ export declare const NOAH_CARD: AgentCard;
14
+ export declare const NOLE_CARD: AgentCard;
15
+ export declare const MIGHTY_MARK_CARD: AgentCard;
16
+ export declare const SAM_CARD: AgentCard;
17
+ //# sourceMappingURL=fleet-cards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-cards.d.ts","sourceRoot":"","sources":["../src/fleet-cards.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,eAAO,MAAM,WAAW,EAAE,SAmBzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,SAsBzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAkBvB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,SAoBvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,SAoB9B,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,SAiBtB,CAAC"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @aiassesstech/fleet-bus — Default Agent Card Definitions
3
+ *
4
+ * Pre-configured Agent Cards for the core fleet.
5
+ * Each plugin imports its own card and passes it to FleetBus.create().
6
+ *
7
+ * Cards are versioned to match their plugin package versions.
8
+ * The version field should be updated when a plugin publishes a new release.
9
+ */
10
+ export const GRILLO_CARD = {
11
+ agentId: 'grillo',
12
+ name: 'Grillo Cricket',
13
+ version: '0.1.14',
14
+ role: 'conscience',
15
+ description: 'Independent AI Conscience Agent — ethical assessment coordinator (Patent 5)',
16
+ skills: [
17
+ { name: 'assessment', description: 'Run LCSH 120-question ethical assessments' },
18
+ { name: 'fleet-assessment', description: 'Fleet-wide parallel assessment' },
19
+ { name: 'drift-alert', description: 'Detect and report ethical drift' },
20
+ { name: 'agent-registry', description: 'Agent discovery and registration' },
21
+ ],
22
+ communicationMode: 'unidirectional',
23
+ authLevel: 'org-level',
24
+ status: 'active',
25
+ supportedMethods: [
26
+ 'assessment/request', 'assessment/result', 'assessment/failed',
27
+ 'drift/alert', 'fleet/broadcast', 'fleet/ping', 'fleet/pong',
28
+ ],
29
+ };
30
+ export const JESSIE_CARD = {
31
+ agentId: 'jessie',
32
+ name: 'Jessie',
33
+ version: '1.0.0',
34
+ role: 'commander',
35
+ description: 'Fleet Commander — full fleet authority, veto power, task delegation',
36
+ skills: [
37
+ { name: 'fleet-command', description: 'Issue fleet-wide commands and tasks' },
38
+ { name: 'veto', description: 'Issue veto on any fleet action' },
39
+ { name: 'task-delegation', description: 'Assign tasks to agents' },
40
+ ],
41
+ communicationMode: 'broadcast+direct',
42
+ authLevel: 'fleet-admin',
43
+ status: 'active',
44
+ supportedMethods: [
45
+ 'veto/issue', 'veto/response', 'task/assign', 'task/status', 'task/complete',
46
+ 'assessment/request', 'assessment/result', 'assessment/failed',
47
+ 'drift/alert', 'drift/report',
48
+ 'health/alert', 'health/status', 'health/incident',
49
+ 'fleet/broadcast', 'fleet/ping', 'fleet/pong',
50
+ 'proposal/submit', 'proposal/approved', 'proposal/rejected',
51
+ ],
52
+ };
53
+ export const NOAH_CARD = {
54
+ agentId: 'noah',
55
+ name: 'Noah',
56
+ version: '0.2.1',
57
+ role: 'navigator',
58
+ description: 'Temporal Ethical Guidance — drift detection and trajectory tracking (Patents 7-8)',
59
+ skills: [
60
+ { name: 'drift-tracking', description: 'Track temporal behavioral drift via TDI' },
61
+ { name: 'trajectory', description: 'Generate trajectory reports and guidance' },
62
+ { name: 'flight-plan', description: 'Maintain ethical flight plan for fleet' },
63
+ ],
64
+ communicationMode: 'subscribe+report',
65
+ authLevel: 'read-only',
66
+ status: 'active',
67
+ supportedMethods: [
68
+ 'drift/alert', 'drift/report', 'fleet/ping', 'fleet/pong',
69
+ 'fleet/broadcast', 'assessment/result',
70
+ ],
71
+ };
72
+ export const NOLE_CARD = {
73
+ agentId: 'nole',
74
+ name: 'Nole',
75
+ version: '0.3.3',
76
+ role: 'operator',
77
+ description: 'Autonomous Trust Evangelist — proposals, governance, outreach (Patent 6)',
78
+ skills: [
79
+ { name: 'proposals', description: 'Submit business proposals for Commander review' },
80
+ { name: 'outreach', description: 'Trust-building and partner outreach' },
81
+ { name: 'governance', description: 'Governance router and veto handling' },
82
+ ],
83
+ communicationMode: 'proposal+await',
84
+ authLevel: 'governed',
85
+ status: 'active',
86
+ supportedMethods: [
87
+ 'proposal/submit', 'task/status', 'task/complete',
88
+ 'fleet/ping', 'fleet/pong',
89
+ 'task/assign', 'proposal/approved', 'proposal/rejected',
90
+ 'veto/issue', 'fleet/broadcast',
91
+ ],
92
+ };
93
+ export const MIGHTY_MARK_CARD = {
94
+ agentId: 'mighty-mark',
95
+ name: 'Mighty Mark',
96
+ version: '0.2.6',
97
+ role: 'sentinel',
98
+ description: 'System Health Sentinel — monitoring, watchdog, fleet infrastructure oversight',
99
+ skills: [
100
+ { name: 'health-check', description: 'Full system health check (32 checks)' },
101
+ { name: 'incident-tracking', description: 'Track and report infrastructure incidents' },
102
+ { name: 'memory-management', description: 'Memory search configuration and backfill' },
103
+ { name: 'uptime-sla', description: 'Track uptime and SLA metrics' },
104
+ ],
105
+ communicationMode: 'monitor+alert',
106
+ authLevel: 'security-elevated',
107
+ status: 'active',
108
+ supportedMethods: [
109
+ 'health/alert', 'health/status', 'health/incident',
110
+ 'fleet/ping', 'fleet/pong',
111
+ 'fleet/broadcast', 'task/assign',
112
+ ],
113
+ };
114
+ export const SAM_CARD = {
115
+ agentId: 'sam',
116
+ name: 'Sam',
117
+ version: '1.0.0',
118
+ role: 'engineer',
119
+ description: 'Engineering Agent — receives tasks, returns results, sandboxed',
120
+ skills: [
121
+ { name: 'code-execution', description: 'Execute engineering tasks in sandbox' },
122
+ { name: 'task-reporting', description: 'Report task status and completion' },
123
+ ],
124
+ communicationMode: 'task-based',
125
+ authLevel: 'sandboxed',
126
+ status: 'active',
127
+ supportedMethods: [
128
+ 'task/status', 'task/complete', 'fleet/ping', 'fleet/pong',
129
+ 'task/assign', 'veto/issue', 'fleet/broadcast',
130
+ ],
131
+ };
132
+ //# sourceMappingURL=fleet-cards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-cards.js","sourceRoot":"","sources":["../src/fleet-cards.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @aiassesstech/fleet-bus — Fleet Tool Definitions
3
+ *
4
+ * Tool factories for each agent's fleet communication tools.
5
+ * Each function returns an OpenClaw tool registration object that
6
+ * wraps fleetSend() with agent-specific logic and typed payloads.
7
+ *
8
+ * Usage in a plugin's register():
9
+ *
10
+ * import { createJessieFleetTools } from '@aiassesstech/fleet-bus';
11
+ * const tools = createJessieFleetTools(bus, transport);
12
+ * for (const tool of tools) api.registerTool(tool, { optional: true });
13
+ */
14
+ import type { FleetBus } from './bus.js';
15
+ import type { TransportConfig } from './types.js';
16
+ export interface FleetToolDefinition {
17
+ name: string;
18
+ description: string;
19
+ parameters: Record<string, unknown>;
20
+ execute: (toolCallId: string, params: Record<string, unknown>) => Promise<{
21
+ content: Array<{
22
+ type: string;
23
+ text: string;
24
+ }>;
25
+ isError?: boolean;
26
+ }>;
27
+ }
28
+ export declare function createJessieFleetTools(bus: FleetBus, transport: TransportConfig): FleetToolDefinition[];
29
+ export declare function createGrilloFleetTools(bus: FleetBus, transport: TransportConfig): FleetToolDefinition[];
30
+ export declare function createNoahFleetTools(bus: FleetBus, transport: TransportConfig): FleetToolDefinition[];
31
+ export declare function createNoleFleetTools(bus: FleetBus, transport: TransportConfig): FleetToolDefinition[];
32
+ export declare function createMarkFleetTools(bus: FleetBus, transport: TransportConfig): FleetToolDefinition[];
33
+ //# sourceMappingURL=fleet-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-tools.d.ts","sourceRoot":"","sources":["../src/fleet-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAK,EASV,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QACxE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC,CAAC;CACJ;AAyBD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,GAAG,mBAAmB,EAAE,CA0IvG;AAMD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,GAAG,mBAAmB,EAAE,CAuFvG;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,GAAG,mBAAmB,EAAE,CAgDrG;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,GAAG,mBAAmB,EAAE,CA4CrG;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,eAAe,GAAG,mBAAmB,EAAE,CAiGrG"}