reflectt-node 0.1.8 → 0.1.11
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/defaults/TEAM-ROLES.yaml +317 -5
- package/dist/agent-config.d.ts +51 -0
- package/dist/agent-config.d.ts.map +1 -0
- package/dist/agent-config.js +129 -0
- package/dist/agent-config.js.map +1 -0
- package/dist/agent-config.test.d.ts +2 -0
- package/dist/agent-config.test.d.ts.map +1 -0
- package/dist/agent-config.test.js +91 -0
- package/dist/agent-config.test.js.map +1 -0
- package/dist/agent-memories.d.ts +58 -0
- package/dist/agent-memories.d.ts.map +1 -0
- package/dist/agent-memories.js +168 -0
- package/dist/agent-memories.js.map +1 -0
- package/dist/agent-memories.test.d.ts +2 -0
- package/dist/agent-memories.test.d.ts.map +1 -0
- package/dist/agent-memories.test.js +327 -0
- package/dist/agent-memories.test.js.map +1 -0
- package/dist/agent-messaging.d.ts +50 -0
- package/dist/agent-messaging.d.ts.map +1 -0
- package/dist/agent-messaging.js +103 -0
- package/dist/agent-messaging.js.map +1 -0
- package/dist/agent-messaging.test.d.ts +2 -0
- package/dist/agent-messaging.test.d.ts.map +1 -0
- package/dist/agent-messaging.test.js +105 -0
- package/dist/agent-messaging.test.js.map +1 -0
- package/dist/agent-runs.d.ts +158 -0
- package/dist/agent-runs.d.ts.map +1 -0
- package/dist/agent-runs.js +514 -0
- package/dist/agent-runs.js.map +1 -0
- package/dist/agent-runs.test.d.ts +2 -0
- package/dist/agent-runs.test.d.ts.map +1 -0
- package/dist/agent-runs.test.js +386 -0
- package/dist/agent-runs.test.js.map +1 -0
- package/dist/approval-queue.test.d.ts +2 -0
- package/dist/approval-queue.test.d.ts.map +1 -0
- package/dist/approval-queue.test.js +118 -0
- package/dist/approval-queue.test.js.map +1 -0
- package/dist/artifact-store.d.ts +55 -0
- package/dist/artifact-store.d.ts.map +1 -0
- package/dist/artifact-store.js +128 -0
- package/dist/artifact-store.js.map +1 -0
- package/dist/artifact-store.test.d.ts +2 -0
- package/dist/artifact-store.test.d.ts.map +1 -0
- package/dist/artifact-store.test.js +119 -0
- package/dist/artifact-store.test.js.map +1 -0
- package/dist/boardHealthWorker.d.ts +28 -0
- package/dist/boardHealthWorker.d.ts.map +1 -1
- package/dist/boardHealthWorker.js +33 -1
- package/dist/boardHealthWorker.js.map +1 -1
- package/dist/canvas-input.test.d.ts +2 -0
- package/dist/canvas-input.test.d.ts.map +1 -0
- package/dist/canvas-input.test.js +96 -0
- package/dist/canvas-input.test.js.map +1 -0
- package/dist/canvas-render.test.d.ts +2 -0
- package/dist/canvas-render.test.d.ts.map +1 -0
- package/dist/canvas-render.test.js +95 -0
- package/dist/canvas-render.test.js.map +1 -0
- package/dist/capabilities/browser.d.ts +75 -0
- package/dist/capabilities/browser.d.ts.map +1 -0
- package/dist/capabilities/browser.js +172 -0
- package/dist/capabilities/browser.js.map +1 -0
- package/dist/channels.d.ts +1 -1
- package/dist/cli.js +4 -2
- package/dist/cli.js.map +1 -1
- package/dist/cloud.d.ts +2 -0
- package/dist/cloud.d.ts.map +1 -1
- package/dist/cloud.js +21 -1
- package/dist/cloud.js.map +1 -1
- package/dist/cost-enforcement.d.ts +38 -0
- package/dist/cost-enforcement.d.ts.map +1 -0
- package/dist/cost-enforcement.js +84 -0
- package/dist/cost-enforcement.js.map +1 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +131 -0
- package/dist/db.js.map +1 -1
- package/dist/e2e-loop-proof.test.d.ts +2 -0
- package/dist/e2e-loop-proof.test.d.ts.map +1 -0
- package/dist/e2e-loop-proof.test.js +104 -0
- package/dist/e2e-loop-proof.test.js.map +1 -0
- package/dist/email-sms-send.test.d.ts +2 -0
- package/dist/email-sms-send.test.d.ts.map +1 -0
- package/dist/email-sms-send.test.js +96 -0
- package/dist/email-sms-send.test.js.map +1 -0
- package/dist/events.d.ts +1 -1
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +2 -0
- package/dist/events.js.map +1 -1
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +5 -10
- package/dist/fingerprint.js.map +1 -1
- package/dist/github-webhook-chat.d.ts +75 -0
- package/dist/github-webhook-chat.d.ts.map +1 -0
- package/dist/github-webhook-chat.js +108 -0
- package/dist/github-webhook-chat.js.map +1 -0
- package/dist/handoff-state.test.d.ts +2 -0
- package/dist/handoff-state.test.d.ts.map +1 -0
- package/dist/handoff-state.test.js +102 -0
- package/dist/handoff-state.test.js.map +1 -0
- package/dist/health.d.ts +9 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +18 -0
- package/dist/health.js.map +1 -1
- package/dist/host-error-correlation.d.ts +65 -0
- package/dist/host-error-correlation.d.ts.map +1 -0
- package/dist/host-error-correlation.js +123 -0
- package/dist/host-error-correlation.js.map +1 -0
- package/dist/index.js +39 -10
- package/dist/index.js.map +1 -1
- package/dist/notificationDedupeGuard.d.ts +4 -0
- package/dist/notificationDedupeGuard.d.ts.map +1 -1
- package/dist/notificationDedupeGuard.js +8 -4
- package/dist/notificationDedupeGuard.js.map +1 -1
- package/dist/presence.d.ts +37 -5
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js +127 -16
- package/dist/presence.js.map +1 -1
- package/dist/review-sla.d.ts +9 -0
- package/dist/review-sla.d.ts.map +1 -0
- package/dist/review-sla.js +51 -0
- package/dist/review-sla.js.map +1 -0
- package/dist/routing-enforcement.test.d.ts +2 -0
- package/dist/routing-enforcement.test.d.ts.map +1 -0
- package/dist/routing-enforcement.test.js +86 -0
- package/dist/routing-enforcement.test.js.map +1 -0
- package/dist/run-retention.test.d.ts +2 -0
- package/dist/run-retention.test.d.ts.map +1 -0
- package/dist/run-retention.test.js +57 -0
- package/dist/run-retention.test.js.map +1 -0
- package/dist/run-stream.test.d.ts +2 -0
- package/dist/run-stream.test.d.ts.map +1 -0
- package/dist/run-stream.test.js +70 -0
- package/dist/run-stream.test.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1229 -75
- package/dist/server.js.map +1 -1
- package/dist/tasks.d.ts.map +1 -1
- package/dist/tasks.js +45 -0
- package/dist/tasks.js.map +1 -1
- package/dist/todoHoardingGuard.d.ts +17 -0
- package/dist/todoHoardingGuard.d.ts.map +1 -1
- package/dist/todoHoardingGuard.js +25 -2
- package/dist/todoHoardingGuard.js.map +1 -1
- package/dist/webhook-storage.d.ts +50 -0
- package/dist/webhook-storage.d.ts.map +1 -0
- package/dist/webhook-storage.js +102 -0
- package/dist/webhook-storage.js.map +1 -0
- package/dist/webhook-storage.test.d.ts +2 -0
- package/dist/webhook-storage.test.d.ts.map +1 -0
- package/dist/webhook-storage.test.js +86 -0
- package/dist/webhook-storage.test.js.map +1 -0
- package/dist/workflow-templates.d.ts +44 -0
- package/dist/workflow-templates.d.ts.map +1 -0
- package/dist/workflow-templates.js +154 -0
- package/dist/workflow-templates.js.map +1 -0
- package/dist/workflow-templates.test.d.ts +2 -0
- package/dist/workflow-templates.test.d.ts.map +1 -0
- package/dist/workflow-templates.test.js +76 -0
- package/dist/workflow-templates.test.js.map +1 -0
- package/package.json +3 -1
- package/public/dashboard.js +11 -0
- package/public/design-tokens-platform.md +118 -0
- package/public/design-tokens.css +195 -0
- package/public/docs.md +127 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-messaging.d.ts","sourceRoot":"","sources":["../src/agent-messaging.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;CAClB;AA8BD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,GAAG,YAAY,CAaf;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,YAAY,EAAE,CAsBjB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAIhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAY/E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,EAAE,CAW9G"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Host-native agent-to-agent messaging — replaces gateway for local agents
|
|
3
|
+
import { getDb } from './db.js';
|
|
4
|
+
function rowToMessage(row) {
|
|
5
|
+
return {
|
|
6
|
+
id: row.id,
|
|
7
|
+
fromAgent: row.from_agent,
|
|
8
|
+
toAgent: row.to_agent,
|
|
9
|
+
channel: row.channel,
|
|
10
|
+
content: row.content,
|
|
11
|
+
metadata: JSON.parse(row.metadata || '{}'),
|
|
12
|
+
readAt: row.read_at,
|
|
13
|
+
createdAt: row.created_at,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function generateId() {
|
|
17
|
+
return `amsg-${Date.now()}-${Math.random().toString(36).slice(2, 13)}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Send a message from one agent to another (or to a channel).
|
|
21
|
+
*/
|
|
22
|
+
export function sendAgentMessage(opts) {
|
|
23
|
+
const db = getDb();
|
|
24
|
+
const id = generateId();
|
|
25
|
+
const now = Date.now();
|
|
26
|
+
const channel = opts.channel ?? 'direct';
|
|
27
|
+
const metadata = opts.metadata ?? {};
|
|
28
|
+
db.prepare(`
|
|
29
|
+
INSERT INTO agent_messages (id, from_agent, to_agent, channel, content, metadata, created_at)
|
|
30
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
31
|
+
`).run(id, opts.fromAgent, opts.toAgent, channel, opts.content, JSON.stringify(metadata), now);
|
|
32
|
+
return { id, fromAgent: opts.fromAgent, toAgent: opts.toAgent, channel, content: opts.content, metadata, readAt: null, createdAt: now };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* List messages for an agent (inbox).
|
|
36
|
+
*/
|
|
37
|
+
export function listAgentMessages(opts) {
|
|
38
|
+
const db = getDb();
|
|
39
|
+
const conditions = ['to_agent = ?'];
|
|
40
|
+
const params = [opts.agentId];
|
|
41
|
+
if (opts.channel) {
|
|
42
|
+
conditions.push('channel = ?');
|
|
43
|
+
params.push(opts.channel);
|
|
44
|
+
}
|
|
45
|
+
if (opts.unreadOnly) {
|
|
46
|
+
conditions.push('read_at IS NULL');
|
|
47
|
+
}
|
|
48
|
+
if (opts.since) {
|
|
49
|
+
conditions.push('created_at >= ?');
|
|
50
|
+
params.push(opts.since);
|
|
51
|
+
}
|
|
52
|
+
const limit = opts.limit ?? 50;
|
|
53
|
+
const sql = `SELECT * FROM agent_messages WHERE ${conditions.join(' AND ')} ORDER BY created_at DESC LIMIT ?`;
|
|
54
|
+
params.push(limit);
|
|
55
|
+
return db.prepare(sql).all(...params).map(rowToMessage);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* List messages sent by an agent (outbox).
|
|
59
|
+
*/
|
|
60
|
+
export function listSentMessages(agentId, limit) {
|
|
61
|
+
const db = getDb();
|
|
62
|
+
return db.prepare('SELECT * FROM agent_messages WHERE from_agent = ? ORDER BY created_at DESC LIMIT ?')
|
|
63
|
+
.all(agentId, limit ?? 50).map(rowToMessage);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Mark messages as read.
|
|
67
|
+
*/
|
|
68
|
+
export function markMessagesRead(agentId, messageIds) {
|
|
69
|
+
const db = getDb();
|
|
70
|
+
const now = Date.now();
|
|
71
|
+
if (messageIds && messageIds.length > 0) {
|
|
72
|
+
const placeholders = messageIds.map(() => '?').join(',');
|
|
73
|
+
const result = db.prepare(`UPDATE agent_messages SET read_at = ? WHERE to_agent = ? AND id IN (${placeholders}) AND read_at IS NULL`)
|
|
74
|
+
.run(now, agentId, ...messageIds);
|
|
75
|
+
return result.changes;
|
|
76
|
+
}
|
|
77
|
+
// Mark all unread
|
|
78
|
+
const result = db.prepare('UPDATE agent_messages SET read_at = ? WHERE to_agent = ? AND read_at IS NULL').run(now, agentId);
|
|
79
|
+
return result.changes;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get unread count for an agent.
|
|
83
|
+
*/
|
|
84
|
+
export function getUnreadCount(agentId) {
|
|
85
|
+
const db = getDb();
|
|
86
|
+
return db.prepare('SELECT COUNT(*) as c FROM agent_messages WHERE to_agent = ? AND read_at IS NULL').get(agentId).c;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* List messages in a channel (broadcast/topic).
|
|
90
|
+
*/
|
|
91
|
+
export function listChannelMessages(channel, opts) {
|
|
92
|
+
const db = getDb();
|
|
93
|
+
const conditions = ['channel = ?'];
|
|
94
|
+
const params = [channel];
|
|
95
|
+
if (opts?.since) {
|
|
96
|
+
conditions.push('created_at >= ?');
|
|
97
|
+
params.push(opts.since);
|
|
98
|
+
}
|
|
99
|
+
const limit = opts?.limit ?? 50;
|
|
100
|
+
return db.prepare(`SELECT * FROM agent_messages WHERE ${conditions.join(' AND ')} ORDER BY created_at DESC LIMIT ?`)
|
|
101
|
+
.all(...params, limit).map(rowToMessage);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=agent-messaging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-messaging.js","sourceRoot":"","sources":["../src/agent-messaging.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-messaging.test.d.ts","sourceRoot":"","sources":["../src/agent-messaging.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
import { describe, it, beforeEach } from 'node:test';
|
|
3
|
+
import assert from 'node:assert/strict';
|
|
4
|
+
class InMemoryMessageStore {
|
|
5
|
+
messages = [];
|
|
6
|
+
counter = 0;
|
|
7
|
+
send(from, to, content, channel = 'direct') {
|
|
8
|
+
const msg = { id: `amsg-${++this.counter}`, from, to, channel, content, readAt: null };
|
|
9
|
+
this.messages.push(msg);
|
|
10
|
+
return msg;
|
|
11
|
+
}
|
|
12
|
+
inbox(agentId, opts) {
|
|
13
|
+
let result = this.messages.filter(m => m.to === agentId);
|
|
14
|
+
if (opts?.unreadOnly)
|
|
15
|
+
result = result.filter(m => m.readAt === null);
|
|
16
|
+
if (opts?.channel)
|
|
17
|
+
result = result.filter(m => m.channel === opts.channel);
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
sent(agentId) {
|
|
21
|
+
return this.messages.filter(m => m.from === agentId);
|
|
22
|
+
}
|
|
23
|
+
markRead(agentId, ids) {
|
|
24
|
+
let count = 0;
|
|
25
|
+
for (const m of this.messages) {
|
|
26
|
+
if (m.to !== agentId || m.readAt !== null)
|
|
27
|
+
continue;
|
|
28
|
+
if (!ids || ids.includes(m.id)) {
|
|
29
|
+
m.readAt = Date.now();
|
|
30
|
+
count++;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return count;
|
|
34
|
+
}
|
|
35
|
+
unreadCount(agentId) {
|
|
36
|
+
return this.messages.filter(m => m.to === agentId && m.readAt === null).length;
|
|
37
|
+
}
|
|
38
|
+
channel(ch) {
|
|
39
|
+
return this.messages.filter(m => m.channel === ch);
|
|
40
|
+
}
|
|
41
|
+
clear() { this.messages = []; this.counter = 0; }
|
|
42
|
+
}
|
|
43
|
+
describe('agent messaging', () => {
|
|
44
|
+
let store;
|
|
45
|
+
beforeEach(() => { store = new InMemoryMessageStore(); });
|
|
46
|
+
it('sends a direct message', () => {
|
|
47
|
+
const msg = store.send('link', 'kai', 'PR #879 ready for review');
|
|
48
|
+
assert.equal(msg.from, 'link');
|
|
49
|
+
assert.equal(msg.to, 'kai');
|
|
50
|
+
assert.equal(msg.channel, 'direct');
|
|
51
|
+
assert.equal(msg.readAt, null);
|
|
52
|
+
});
|
|
53
|
+
it('shows in recipient inbox', () => {
|
|
54
|
+
store.send('link', 'kai', 'Hello');
|
|
55
|
+
const inbox = store.inbox('kai');
|
|
56
|
+
assert.equal(inbox.length, 1);
|
|
57
|
+
assert.equal(inbox[0].content, 'Hello');
|
|
58
|
+
});
|
|
59
|
+
it('does not show in sender inbox', () => {
|
|
60
|
+
store.send('link', 'kai', 'Hello');
|
|
61
|
+
assert.equal(store.inbox('link').length, 0);
|
|
62
|
+
});
|
|
63
|
+
it('shows in sender sent', () => {
|
|
64
|
+
store.send('link', 'kai', 'Hello');
|
|
65
|
+
assert.equal(store.sent('link').length, 1);
|
|
66
|
+
});
|
|
67
|
+
it('tracks unread count', () => {
|
|
68
|
+
store.send('link', 'kai', 'msg1');
|
|
69
|
+
store.send('pixel', 'kai', 'msg2');
|
|
70
|
+
assert.equal(store.unreadCount('kai'), 2);
|
|
71
|
+
});
|
|
72
|
+
it('marks specific messages read', () => {
|
|
73
|
+
const m1 = store.send('link', 'kai', 'msg1');
|
|
74
|
+
store.send('pixel', 'kai', 'msg2');
|
|
75
|
+
store.markRead('kai', [m1.id]);
|
|
76
|
+
assert.equal(store.unreadCount('kai'), 1);
|
|
77
|
+
});
|
|
78
|
+
it('marks all messages read', () => {
|
|
79
|
+
store.send('link', 'kai', 'msg1');
|
|
80
|
+
store.send('pixel', 'kai', 'msg2');
|
|
81
|
+
store.markRead('kai');
|
|
82
|
+
assert.equal(store.unreadCount('kai'), 0);
|
|
83
|
+
});
|
|
84
|
+
it('filters unread only', () => {
|
|
85
|
+
store.send('link', 'kai', 'msg1');
|
|
86
|
+
const m2 = store.send('pixel', 'kai', 'msg2');
|
|
87
|
+
store.markRead('kai', [m2.id]);
|
|
88
|
+
const unread = store.inbox('kai', { unreadOnly: true });
|
|
89
|
+
assert.equal(unread.length, 1);
|
|
90
|
+
});
|
|
91
|
+
it('supports channel messages', () => {
|
|
92
|
+
store.send('link', 'team', 'broadcast', 'shipping');
|
|
93
|
+
store.send('pixel', 'team', 'design update', 'shipping');
|
|
94
|
+
store.send('kai', 'team', 'ops note', 'general');
|
|
95
|
+
assert.equal(store.channel('shipping').length, 2);
|
|
96
|
+
assert.equal(store.channel('general').length, 1);
|
|
97
|
+
});
|
|
98
|
+
it('filters inbox by channel', () => {
|
|
99
|
+
store.send('link', 'kai', 'direct msg');
|
|
100
|
+
store.send('link', 'kai', 'channel msg', 'reviews');
|
|
101
|
+
assert.equal(store.inbox('kai', { channel: 'reviews' }).length, 1);
|
|
102
|
+
assert.equal(store.inbox('kai', { channel: 'direct' }).length, 1);
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
//# sourceMappingURL=agent-messaging.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-messaging.test.js","sourceRoot":"","sources":["../src/agent-messaging.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
export type AgentRunStatus = 'idle' | 'working' | 'blocked' | 'waiting_review' | 'completed' | 'failed' | 'cancelled';
|
|
2
|
+
export declare const VALID_RUN_STATUSES: AgentRunStatus[];
|
|
3
|
+
export declare const VALID_EVENT_TYPES: readonly ["run_created", "task_attached", "tool_invoked", "artifact_produced", "review_requested", "review_approved", "review_rejected", "blocked", "handed_off", "completed", "failed"];
|
|
4
|
+
export type AgentEventType = (typeof VALID_EVENT_TYPES)[number];
|
|
5
|
+
export interface AgentRun {
|
|
6
|
+
id: string;
|
|
7
|
+
agentId: string;
|
|
8
|
+
teamId: string;
|
|
9
|
+
objective: string;
|
|
10
|
+
status: AgentRunStatus;
|
|
11
|
+
parentRunId: string | null;
|
|
12
|
+
contextSnapshot: Record<string, unknown>;
|
|
13
|
+
artifacts: Array<Record<string, unknown>>;
|
|
14
|
+
startedAt: number;
|
|
15
|
+
updatedAt: number;
|
|
16
|
+
completedAt: number | null;
|
|
17
|
+
}
|
|
18
|
+
export interface EventRationale {
|
|
19
|
+
choice: string;
|
|
20
|
+
considered?: string[];
|
|
21
|
+
constraint?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface AgentEvent {
|
|
24
|
+
id: string;
|
|
25
|
+
runId: string | null;
|
|
26
|
+
agentId: string;
|
|
27
|
+
eventType: AgentEventType;
|
|
28
|
+
payload: Record<string, unknown>;
|
|
29
|
+
createdAt: number;
|
|
30
|
+
}
|
|
31
|
+
export declare function validateRationale(rationale: unknown): EventRationale;
|
|
32
|
+
export declare function createAgentRun(agentId: string, teamId: string, objective: string, opts?: {
|
|
33
|
+
taskId?: string;
|
|
34
|
+
parentRunId?: string;
|
|
35
|
+
}): AgentRun;
|
|
36
|
+
export declare function updateAgentRun(runId: string, updates: {
|
|
37
|
+
status?: AgentRunStatus;
|
|
38
|
+
contextSnapshot?: Record<string, unknown>;
|
|
39
|
+
artifacts?: Array<Record<string, unknown>>;
|
|
40
|
+
completedAt?: number;
|
|
41
|
+
}): AgentRun | null;
|
|
42
|
+
export declare function getAgentRun(runId: string): AgentRun | null;
|
|
43
|
+
export declare function getActiveAgentRun(agentId: string, teamId: string): AgentRun | null;
|
|
44
|
+
export declare function listAgentRuns(agentId: string, teamId: string, opts?: {
|
|
45
|
+
status?: AgentRunStatus;
|
|
46
|
+
limit?: number;
|
|
47
|
+
}): AgentRun[];
|
|
48
|
+
export interface RoutingValidation {
|
|
49
|
+
valid: boolean;
|
|
50
|
+
errors: string[];
|
|
51
|
+
warnings: string[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate routing semantics for actionable events.
|
|
55
|
+
* Enforces: action_required, urgency, owner required.
|
|
56
|
+
* Optional: expires_at.
|
|
57
|
+
*/
|
|
58
|
+
export declare function validateRoutingSemantics(eventType: string, payload: Record<string, unknown>): RoutingValidation;
|
|
59
|
+
export declare function appendAgentEvent(event: {
|
|
60
|
+
agentId: string;
|
|
61
|
+
runId?: string | null;
|
|
62
|
+
eventType: string;
|
|
63
|
+
payload?: Record<string, unknown>;
|
|
64
|
+
enforceRouting?: boolean;
|
|
65
|
+
}): AgentEvent;
|
|
66
|
+
export declare function listAgentEvents(opts: {
|
|
67
|
+
agentId?: string;
|
|
68
|
+
runId?: string;
|
|
69
|
+
eventType?: string;
|
|
70
|
+
since?: number;
|
|
71
|
+
limit?: number;
|
|
72
|
+
}): AgentEvent[];
|
|
73
|
+
export interface RetentionPolicy {
|
|
74
|
+
maxAgeDays: number;
|
|
75
|
+
maxCompletedRuns: number;
|
|
76
|
+
deleteArchived: boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface RetentionResult {
|
|
79
|
+
archived: number;
|
|
80
|
+
deleted: number;
|
|
81
|
+
eventsDeleted: number;
|
|
82
|
+
dryRun: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Archive old completed/cancelled/failed runs per retention policy.
|
|
86
|
+
* Returns count of runs archived and events cleaned up.
|
|
87
|
+
*/
|
|
88
|
+
export declare function applyRunRetention(opts?: {
|
|
89
|
+
policy?: Partial<RetentionPolicy>;
|
|
90
|
+
agentId?: string;
|
|
91
|
+
dryRun?: boolean;
|
|
92
|
+
}): RetentionResult;
|
|
93
|
+
/**
|
|
94
|
+
* Get retention stats — how many runs would be affected by current policy.
|
|
95
|
+
*/
|
|
96
|
+
export declare function getRetentionStats(policy?: Partial<RetentionPolicy>): {
|
|
97
|
+
totalRuns: number;
|
|
98
|
+
terminalRuns: number;
|
|
99
|
+
wouldArchive: number;
|
|
100
|
+
oldestRunAge: number | null;
|
|
101
|
+
};
|
|
102
|
+
export interface PendingApproval {
|
|
103
|
+
event: AgentEvent;
|
|
104
|
+
agentId: string;
|
|
105
|
+
runId: string | null;
|
|
106
|
+
urgency: string | null;
|
|
107
|
+
owner: string | null;
|
|
108
|
+
expiresAt: number | null;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* List pending approvals: review_requested events with action_required
|
|
112
|
+
* that don't yet have a matching review_approved or review_rejected.
|
|
113
|
+
*/
|
|
114
|
+
export declare function listPendingApprovals(opts?: {
|
|
115
|
+
agentId?: string;
|
|
116
|
+
limit?: number;
|
|
117
|
+
}): PendingApproval[];
|
|
118
|
+
/**
|
|
119
|
+
* Submit an approval decision. Records a review_approved or review_rejected event
|
|
120
|
+
* and optionally unblocks the associated run.
|
|
121
|
+
*/
|
|
122
|
+
/**
|
|
123
|
+
* Dedicated approval queue — unified view of everything needing human decision.
|
|
124
|
+
* Covers review_requested (PR reviews) AND approval_requested (agent actions like deploy/execute).
|
|
125
|
+
* Each item answers: what needs decision, who owns it, when it expires, what happens if ignored.
|
|
126
|
+
*/
|
|
127
|
+
export interface ApprovalQueueItem {
|
|
128
|
+
id: string;
|
|
129
|
+
category: 'review' | 'agent_action';
|
|
130
|
+
event: AgentEvent;
|
|
131
|
+
agentId: string;
|
|
132
|
+
runId: string | null;
|
|
133
|
+
title: string;
|
|
134
|
+
description: string | null;
|
|
135
|
+
urgency: string | null;
|
|
136
|
+
owner: string | null;
|
|
137
|
+
expiresAt: number | null;
|
|
138
|
+
autoAction: string | null;
|
|
139
|
+
createdAt: number;
|
|
140
|
+
isExpired: boolean;
|
|
141
|
+
}
|
|
142
|
+
export declare function listApprovalQueue(opts?: {
|
|
143
|
+
agentId?: string;
|
|
144
|
+
category?: 'review' | 'agent_action';
|
|
145
|
+
includeExpired?: boolean;
|
|
146
|
+
limit?: number;
|
|
147
|
+
}): ApprovalQueueItem[];
|
|
148
|
+
export declare function submitApprovalDecision(opts: {
|
|
149
|
+
eventId: string;
|
|
150
|
+
decision: 'approve' | 'reject';
|
|
151
|
+
reviewer: string;
|
|
152
|
+
comment?: string;
|
|
153
|
+
rationale?: EventRationale;
|
|
154
|
+
}): {
|
|
155
|
+
event: AgentEvent;
|
|
156
|
+
runUnblocked: boolean;
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=agent-runs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-runs.d.ts","sourceRoot":"","sources":["../src/agent-runs.ts"],"names":[],"mappings":"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"}
|