@honeybee-ai/incubator 1.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.
- package/README.md +586 -0
- package/dashboard/dist/assets/index-DFb8p7xI.js +9 -0
- package/dashboard/dist/assets/index-RKiEoHEo.css +1 -0
- package/dashboard/dist/index.html +13 -0
- package/dist/agent/acp/claim-manager.d.ts +24 -0
- package/dist/agent/acp/claim-manager.js +64 -0
- package/dist/agent/acp/claim-manager.js.map +1 -0
- package/dist/agent/acp/direct-runtime.d.ts +90 -0
- package/dist/agent/acp/direct-runtime.js +364 -0
- package/dist/agent/acp/direct-runtime.js.map +1 -0
- package/dist/agent/acp/event-client.d.ts +20 -0
- package/dist/agent/acp/event-client.js +60 -0
- package/dist/agent/acp/event-client.js.map +1 -0
- package/dist/agent/acp/event-matcher.d.ts +13 -0
- package/dist/agent/acp/event-matcher.js +31 -0
- package/dist/agent/acp/event-matcher.js.map +1 -0
- package/dist/agent/acp/progress.d.ts +23 -0
- package/dist/agent/acp/progress.js +54 -0
- package/dist/agent/acp/progress.js.map +1 -0
- package/dist/agent/acp/runtime.d.ts +156 -0
- package/dist/agent/acp/runtime.js +337 -0
- package/dist/agent/acp/runtime.js.map +1 -0
- package/dist/agent/acp/ws-event-client.d.ts +64 -0
- package/dist/agent/acp/ws-event-client.js +263 -0
- package/dist/agent/acp/ws-event-client.js.map +1 -0
- package/dist/agent/agent.d.ts +60 -0
- package/dist/agent/agent.js +121 -0
- package/dist/agent/agent.js.map +1 -0
- package/dist/agent/cli.d.ts +2 -0
- package/dist/agent/cli.js +311 -0
- package/dist/agent/cli.js.map +1 -0
- package/dist/agent/mcp-client.d.ts +37 -0
- package/dist/agent/mcp-client.js +92 -0
- package/dist/agent/mcp-client.js.map +1 -0
- package/dist/agent/mock-runner.d.ts +14 -0
- package/dist/agent/mock-runner.js +159 -0
- package/dist/agent/mock-runner.js.map +1 -0
- package/dist/agent/native-client.d.ts +18 -0
- package/dist/agent/native-client.js +42 -0
- package/dist/agent/native-client.js.map +1 -0
- package/dist/agent/prompt.d.ts +45 -0
- package/dist/agent/prompt.js +115 -0
- package/dist/agent/prompt.js.map +1 -0
- package/dist/agent/providers.d.ts +25 -0
- package/dist/agent/providers.js +696 -0
- package/dist/agent/providers.js.map +1 -0
- package/dist/agent/runner.d.ts +15 -0
- package/dist/agent/runner.js +625 -0
- package/dist/agent/runner.js.map +1 -0
- package/dist/agent/tool-client.d.ts +12 -0
- package/dist/agent/tool-client.js +2 -0
- package/dist/agent/tool-client.js.map +1 -0
- package/dist/agent/types.d.ts +116 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent-pool.d.ts +44 -0
- package/dist/agent-pool.js +228 -0
- package/dist/agent-pool.js.map +1 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -0
- package/dist/bus.d.ts +24 -0
- package/dist/bus.js +79 -0
- package/dist/bus.js.map +1 -0
- package/dist/dances.d.ts +73 -0
- package/dist/dances.js +122 -0
- package/dist/dances.js.map +1 -0
- package/dist/guard.d.ts +52 -0
- package/dist/guard.js +210 -0
- package/dist/guard.js.map +1 -0
- package/dist/heartbeat.d.ts +41 -0
- package/dist/heartbeat.js +104 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/honeycomb.d.ts +63 -0
- package/dist/honeycomb.js +222 -0
- package/dist/honeycomb.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +601 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/config.d.ts +15 -0
- package/dist/integrations/config.js +62 -0
- package/dist/integrations/config.js.map +1 -0
- package/dist/integrations/index.d.ts +4 -0
- package/dist/integrations/index.js +4 -0
- package/dist/integrations/index.js.map +1 -0
- package/dist/integrations/loader.d.ts +8 -0
- package/dist/integrations/loader.js +27 -0
- package/dist/integrations/loader.js.map +1 -0
- package/dist/integrations/manager.d.ts +29 -0
- package/dist/integrations/manager.js +108 -0
- package/dist/integrations/manager.js.map +1 -0
- package/dist/log.d.ts +25 -0
- package/dist/log.js +67 -0
- package/dist/log.js.map +1 -0
- package/dist/namespaces.d.ts +28 -0
- package/dist/namespaces.js +100 -0
- package/dist/namespaces.js.map +1 -0
- package/dist/orchestrator.d.ts +119 -0
- package/dist/orchestrator.js +463 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/persistence.d.ts +7 -0
- package/dist/persistence.js +62 -0
- package/dist/persistence.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +12 -0
- package/dist/plugins/loader.js +122 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +76 -0
- package/dist/plugins/manager.js +238 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/propolis/guard.d.ts +23 -0
- package/dist/propolis/guard.js +49 -0
- package/dist/propolis/guard.js.map +1 -0
- package/dist/propolis/tools/types.d.ts +9 -0
- package/dist/propolis/tools/types.js +9 -0
- package/dist/propolis/tools/types.js.map +1 -0
- package/dist/rest.d.ts +4 -0
- package/dist/rest.js +962 -0
- package/dist/rest.js.map +1 -0
- package/dist/run-watcher.d.ts +20 -0
- package/dist/run-watcher.js +74 -0
- package/dist/run-watcher.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.js +412 -0
- package/dist/server.js.map +1 -0
- package/dist/stores/backend.d.ts +15 -0
- package/dist/stores/backend.js +28 -0
- package/dist/stores/backend.js.map +1 -0
- package/dist/stores/claims.d.ts +14 -0
- package/dist/stores/claims.js +77 -0
- package/dist/stores/claims.js.map +1 -0
- package/dist/stores/conflicts.d.ts +10 -0
- package/dist/stores/conflicts.js +39 -0
- package/dist/stores/conflicts.js.map +1 -0
- package/dist/stores/control.d.ts +37 -0
- package/dist/stores/control.js +105 -0
- package/dist/stores/control.js.map +1 -0
- package/dist/stores/discoveries.d.ts +11 -0
- package/dist/stores/discoveries.js +45 -0
- package/dist/stores/discoveries.js.map +1 -0
- package/dist/stores/events.d.ts +14 -0
- package/dist/stores/events.js +42 -0
- package/dist/stores/events.js.map +1 -0
- package/dist/stores/help.d.ts +11 -0
- package/dist/stores/help.js +46 -0
- package/dist/stores/help.js.map +1 -0
- package/dist/stores/interfaces.d.ts +125 -0
- package/dist/stores/interfaces.js +2 -0
- package/dist/stores/interfaces.js.map +1 -0
- package/dist/stores/messages.d.ts +8 -0
- package/dist/stores/messages.js +29 -0
- package/dist/stores/messages.js.map +1 -0
- package/dist/stores/progress.d.ts +8 -0
- package/dist/stores/progress.js +21 -0
- package/dist/stores/progress.js.map +1 -0
- package/dist/stores/proposals.d.ts +11 -0
- package/dist/stores/proposals.js +46 -0
- package/dist/stores/proposals.js.map +1 -0
- package/dist/stores/redis/claims.d.ts +16 -0
- package/dist/stores/redis/claims.js +126 -0
- package/dist/stores/redis/claims.js.map +1 -0
- package/dist/stores/redis/db.d.ts +39 -0
- package/dist/stores/redis/db.js +34 -0
- package/dist/stores/redis/db.js.map +1 -0
- package/dist/stores/redis/discoveries.d.ts +13 -0
- package/dist/stores/redis/discoveries.js +54 -0
- package/dist/stores/redis/discoveries.js.map +1 -0
- package/dist/stores/redis/events.d.ts +17 -0
- package/dist/stores/redis/events.js +57 -0
- package/dist/stores/redis/events.js.map +1 -0
- package/dist/stores/redis/index.d.ts +3 -0
- package/dist/stores/redis/index.js +31 -0
- package/dist/stores/redis/index.js.map +1 -0
- package/dist/stores/redis/state.d.ts +14 -0
- package/dist/stores/redis/state.js +83 -0
- package/dist/stores/redis/state.js.map +1 -0
- package/dist/stores/reinforcements.d.ts +11 -0
- package/dist/stores/reinforcements.js +42 -0
- package/dist/stores/reinforcements.js.map +1 -0
- package/dist/stores/roles.d.ts +9 -0
- package/dist/stores/roles.js +22 -0
- package/dist/stores/roles.js.map +1 -0
- package/dist/stores/runs.d.ts +15 -0
- package/dist/stores/runs.js +50 -0
- package/dist/stores/runs.js.map +1 -0
- package/dist/stores/sqlite/claims.d.ts +17 -0
- package/dist/stores/sqlite/claims.js +121 -0
- package/dist/stores/sqlite/claims.js.map +1 -0
- package/dist/stores/sqlite/db.d.ts +16 -0
- package/dist/stores/sqlite/db.js +77 -0
- package/dist/stores/sqlite/db.js.map +1 -0
- package/dist/stores/sqlite/discoveries.d.ts +14 -0
- package/dist/stores/sqlite/discoveries.js +66 -0
- package/dist/stores/sqlite/discoveries.js.map +1 -0
- package/dist/stores/sqlite/events.d.ts +16 -0
- package/dist/stores/sqlite/events.js +75 -0
- package/dist/stores/sqlite/events.js.map +1 -0
- package/dist/stores/sqlite/index.d.ts +2 -0
- package/dist/stores/sqlite/index.js +33 -0
- package/dist/stores/sqlite/index.js.map +1 -0
- package/dist/stores/sqlite/state.d.ts +15 -0
- package/dist/stores/sqlite/state.js +99 -0
- package/dist/stores/sqlite/state.js.map +1 -0
- package/dist/stores/state.d.ts +11 -0
- package/dist/stores/state.js +67 -0
- package/dist/stores/state.js.map +1 -0
- package/dist/transports/broker.d.ts +20 -0
- package/dist/transports/broker.js +102 -0
- package/dist/transports/broker.js.map +1 -0
- package/dist/transports/index.d.ts +3 -0
- package/dist/transports/index.js +3 -0
- package/dist/transports/index.js.map +1 -0
- package/dist/transports/ipc.d.ts +26 -0
- package/dist/transports/ipc.js +93 -0
- package/dist/transports/ipc.js.map +1 -0
- package/dist/transports/types.d.ts +39 -0
- package/dist/transports/types.js +8 -0
- package/dist/transports/types.js.map +1 -0
- package/dist/types.d.ts +45 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +36 -0
- package/dist/utils.js.map +1 -0
- package/dist/waggle/client.d.ts +16 -0
- package/dist/waggle/client.js +28 -0
- package/dist/waggle/client.js.map +1 -0
- package/dist/waggle/compound.d.ts +22 -0
- package/dist/waggle/compound.js +194 -0
- package/dist/waggle/compound.js.map +1 -0
- package/dist/waggle/index.d.ts +25 -0
- package/dist/waggle/index.js +77 -0
- package/dist/waggle/index.js.map +1 -0
- package/dist/waggle/types.d.ts +54 -0
- package/dist/waggle/types.js +2 -0
- package/dist/waggle/types.js.map +1 -0
- package/dist/webhooks.d.ts +26 -0
- package/dist/webhooks.js +79 -0
- package/dist/webhooks.js.map +1 -0
- package/dist/ws.d.ts +33 -0
- package/dist/ws.js +195 -0
- package/dist/ws.js.map +1 -0
- package/package.json +122 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IPCTransport — Unix socket client for cross-incubator Honeycomb events.
|
|
3
|
+
*
|
|
4
|
+
* Connects to the IPCBroker started by `wgl up`. Sends/receives NDJSON
|
|
5
|
+
* messages over a Unix domain socket.
|
|
6
|
+
*/
|
|
7
|
+
import { connect } from 'node:net';
|
|
8
|
+
export class IPCTransport {
|
|
9
|
+
socket = null;
|
|
10
|
+
handlers = new Map();
|
|
11
|
+
buffer = '';
|
|
12
|
+
opts;
|
|
13
|
+
constructor(opts) {
|
|
14
|
+
this.opts = opts;
|
|
15
|
+
}
|
|
16
|
+
async connect() {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const sock = connect(this.opts.socketPath, () => {
|
|
19
|
+
this.socket = sock;
|
|
20
|
+
// Register with broker
|
|
21
|
+
this.send({
|
|
22
|
+
type: 'register',
|
|
23
|
+
hive: this.opts.hiveName,
|
|
24
|
+
publishes: this.opts.publishes,
|
|
25
|
+
subscribes: this.opts.subscribes,
|
|
26
|
+
});
|
|
27
|
+
resolve();
|
|
28
|
+
});
|
|
29
|
+
sock.setEncoding('utf8');
|
|
30
|
+
sock.on('data', (chunk) => this.onData(chunk));
|
|
31
|
+
sock.on('error', (err) => {
|
|
32
|
+
if (!this.socket)
|
|
33
|
+
reject(err);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async publish(topic, event) {
|
|
38
|
+
this.send({
|
|
39
|
+
type: 'event',
|
|
40
|
+
hive: this.opts.hiveName,
|
|
41
|
+
topic,
|
|
42
|
+
event,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
subscribe(topic, handler) {
|
|
46
|
+
let set = this.handlers.get(topic);
|
|
47
|
+
if (!set) {
|
|
48
|
+
set = new Set();
|
|
49
|
+
this.handlers.set(topic, set);
|
|
50
|
+
}
|
|
51
|
+
set.add(handler);
|
|
52
|
+
return () => {
|
|
53
|
+
set.delete(handler);
|
|
54
|
+
if (set.size === 0)
|
|
55
|
+
this.handlers.delete(topic);
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async close() {
|
|
59
|
+
this.handlers.clear();
|
|
60
|
+
if (this.socket) {
|
|
61
|
+
this.socket.end();
|
|
62
|
+
this.socket = null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
send(msg) {
|
|
66
|
+
if (this.socket) {
|
|
67
|
+
this.socket.write(JSON.stringify(msg) + '\n');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
onData(chunk) {
|
|
71
|
+
this.buffer += chunk;
|
|
72
|
+
const lines = this.buffer.split('\n');
|
|
73
|
+
this.buffer = lines.pop(); // keep incomplete line in buffer
|
|
74
|
+
for (const line of lines) {
|
|
75
|
+
if (!line)
|
|
76
|
+
continue;
|
|
77
|
+
try {
|
|
78
|
+
const msg = JSON.parse(line);
|
|
79
|
+
if (msg.type === 'forward') {
|
|
80
|
+
const set = this.handlers.get(msg.topic);
|
|
81
|
+
if (set) {
|
|
82
|
+
for (const handler of set)
|
|
83
|
+
handler(msg.event);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Ignore malformed messages
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=ipc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["../../src/transports/ipc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Honeycomb transport layer — cross-incubator event routing.
|
|
3
|
+
*
|
|
4
|
+
* Level 1 (within-incubator) uses TopicRouter directly.
|
|
5
|
+
* Level 2 (cross-incubator) uses HoneycombTransport over IPC/TCP.
|
|
6
|
+
*/
|
|
7
|
+
export interface TopicEvent {
|
|
8
|
+
sourceHive: string;
|
|
9
|
+
topic: string;
|
|
10
|
+
data: unknown;
|
|
11
|
+
publishedBy: string;
|
|
12
|
+
timestamp: string;
|
|
13
|
+
}
|
|
14
|
+
export interface HoneycombTransport {
|
|
15
|
+
/** Publish a topic event to remote hives. */
|
|
16
|
+
publish(topic: string, event: TopicEvent): Promise<void>;
|
|
17
|
+
/** Subscribe to incoming events for a topic. Returns unsubscribe fn. */
|
|
18
|
+
subscribe(topic: string, handler: (event: TopicEvent) => void): () => void;
|
|
19
|
+
/** Connect to broker (if applicable). */
|
|
20
|
+
connect(): Promise<void>;
|
|
21
|
+
/** Disconnect from broker. */
|
|
22
|
+
close(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/** Wire protocol messages (NDJSON over Unix socket). */
|
|
25
|
+
export type BrokerMessage = {
|
|
26
|
+
type: 'register';
|
|
27
|
+
hive: string;
|
|
28
|
+
publishes: string[];
|
|
29
|
+
subscribes: string[];
|
|
30
|
+
} | {
|
|
31
|
+
type: 'event';
|
|
32
|
+
hive: string;
|
|
33
|
+
topic: string;
|
|
34
|
+
event: TopicEvent;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'forward';
|
|
37
|
+
topic: string;
|
|
38
|
+
event: TopicEvent;
|
|
39
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/transports/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export interface StateEntry {
|
|
2
|
+
key: string;
|
|
3
|
+
value: unknown;
|
|
4
|
+
category?: string;
|
|
5
|
+
setBy: string;
|
|
6
|
+
setAt: string;
|
|
7
|
+
updatedAt: string;
|
|
8
|
+
ttlMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface Claim {
|
|
11
|
+
resource: string;
|
|
12
|
+
value: string;
|
|
13
|
+
owner: string;
|
|
14
|
+
status: 'active' | 'released' | 'expired';
|
|
15
|
+
claimedAt: string;
|
|
16
|
+
ttlMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface IncubatorEvent {
|
|
19
|
+
id: number;
|
|
20
|
+
type: string;
|
|
21
|
+
data: unknown;
|
|
22
|
+
publishedBy: string;
|
|
23
|
+
publishedAt: string;
|
|
24
|
+
}
|
|
25
|
+
export interface Discovery {
|
|
26
|
+
id: string;
|
|
27
|
+
topic: string;
|
|
28
|
+
content: string;
|
|
29
|
+
category?: string;
|
|
30
|
+
publishedBy: string;
|
|
31
|
+
publishedAt: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ClaimResult {
|
|
34
|
+
status: 'approved' | 'rejected';
|
|
35
|
+
claim: Claim;
|
|
36
|
+
}
|
|
37
|
+
export type { Message, HelpRequest, ProgressReport, Conflict, RoleAssignment, ReinforcementRequest, Proposal, } from '@agentcoordinationprotocol/spec';
|
|
38
|
+
export interface Snapshot {
|
|
39
|
+
state: StateEntry[];
|
|
40
|
+
claims: Claim[];
|
|
41
|
+
events: IncubatorEvent[];
|
|
42
|
+
discoveries: Discovery[];
|
|
43
|
+
eventCursor: number;
|
|
44
|
+
savedAt: string;
|
|
45
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
let idCounter = 0;
|
|
2
|
+
export function generateId() {
|
|
3
|
+
return `${Date.now()}-${++idCounter}`;
|
|
4
|
+
}
|
|
5
|
+
export function matchGlob(pattern, text) {
|
|
6
|
+
// Linear-time wildcard matching (no regex, no backtracking)
|
|
7
|
+
let pi = 0, ti = 0;
|
|
8
|
+
let starP = -1, starT = -1;
|
|
9
|
+
while (ti < text.length) {
|
|
10
|
+
if (pi < pattern.length && (pattern[pi] === '?' || pattern[pi] === text[ti])) {
|
|
11
|
+
pi++;
|
|
12
|
+
ti++;
|
|
13
|
+
}
|
|
14
|
+
else if (pi < pattern.length && pattern[pi] === '*') {
|
|
15
|
+
starP = pi++;
|
|
16
|
+
starT = ti;
|
|
17
|
+
}
|
|
18
|
+
else if (starP >= 0) {
|
|
19
|
+
pi = starP + 1;
|
|
20
|
+
ti = ++starT;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
while (pi < pattern.length && pattern[pi] === '*')
|
|
27
|
+
pi++;
|
|
28
|
+
return pi === pattern.length;
|
|
29
|
+
}
|
|
30
|
+
export function isExpired(timestamp, ttlMs) {
|
|
31
|
+
if (!ttlMs)
|
|
32
|
+
return false;
|
|
33
|
+
const created = new Date(timestamp).getTime();
|
|
34
|
+
return Date.now() > created + ttlMs;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,IAAI,SAAS,GAAG,CAAC,CAAC;AAElB,MAAM,UAAU,UAAU;IACxB,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAY;IACrD,4DAA4D;IAC5D,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACnB,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7E,EAAE,EAAE,CAAC;YAAC,EAAE,EAAE,CAAC;QACb,CAAC;aAAM,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;YACtD,KAAK,GAAG,EAAE,EAAE,CAAC;YAAC,KAAK,GAAG,EAAE,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACtB,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC;YAAC,EAAE,GAAG,EAAE,KAAK,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,EAAE,CAAC,KAAK,GAAG;QAAE,EAAE,EAAE,CAAC;IACxD,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,KAAc;IACzD,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IAC9C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ToolClient } from '../agent/tool-client.js';
|
|
2
|
+
import type { ToolDef } from '../agent/types.js';
|
|
3
|
+
import type { CompoundContext } from './compound.js';
|
|
4
|
+
/**
|
|
5
|
+
* ToolClient that wraps the compound handler.
|
|
6
|
+
* The runner sees exactly ONE tool (waggle). All operations
|
|
7
|
+
* are batched and routed internally by the compound handler.
|
|
8
|
+
*/
|
|
9
|
+
export declare class WaggleToolClient implements ToolClient {
|
|
10
|
+
private ctx;
|
|
11
|
+
constructor(ctx: CompoundContext);
|
|
12
|
+
getToolDefs(): ToolDef[];
|
|
13
|
+
hasToolName(name: string): boolean;
|
|
14
|
+
callTool(_name: string, args: Record<string, unknown>): Promise<string>;
|
|
15
|
+
close(): Promise<void>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { compoundHandler } from './compound.js';
|
|
2
|
+
import { WAGGLE_TOOL_DEF, parseWaggleArgs } from './index.js';
|
|
3
|
+
/**
|
|
4
|
+
* ToolClient that wraps the compound handler.
|
|
5
|
+
* The runner sees exactly ONE tool (waggle). All operations
|
|
6
|
+
* are batched and routed internally by the compound handler.
|
|
7
|
+
*/
|
|
8
|
+
export class WaggleToolClient {
|
|
9
|
+
ctx;
|
|
10
|
+
constructor(ctx) {
|
|
11
|
+
this.ctx = ctx;
|
|
12
|
+
}
|
|
13
|
+
getToolDefs() {
|
|
14
|
+
return [WAGGLE_TOOL_DEF];
|
|
15
|
+
}
|
|
16
|
+
hasToolName(name) {
|
|
17
|
+
return name === 'waggle';
|
|
18
|
+
}
|
|
19
|
+
async callTool(_name, args) {
|
|
20
|
+
const parsed = parseWaggleArgs(args);
|
|
21
|
+
const result = await compoundHandler(parsed, this.ctx);
|
|
22
|
+
return JSON.stringify(result);
|
|
23
|
+
}
|
|
24
|
+
async close() {
|
|
25
|
+
// No-op — compound handler has no connections to close
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/waggle/client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE9D;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IACP;IAApB,YAAoB,GAAoB;QAApB,QAAG,GAAH,GAAG,CAAiB;IAAG,CAAC;IAE5C,WAAW;QACT,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3B,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,KAAK,QAAQ,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAa,EAAE,IAA6B;QACzD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,uDAAuD;IACzD,CAAC;CACF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { WaggleInput, WaggleResult, WaitSpec, NormalizedWait, AcpBackend, Primitives } from './types.js';
|
|
2
|
+
import type { ToolResult } from '../propolis/tools/types.js';
|
|
3
|
+
import type { TelemetryReporter } from '@honeybee-ai/hivemind-sdk/telemetry';
|
|
4
|
+
import type { PluginManager } from '../plugins/index.js';
|
|
5
|
+
type EnvHandler = (args: Record<string, unknown>) => Promise<ToolResult>;
|
|
6
|
+
/** Build env handler map from PluginManager (replaces propolis-direct loading). */
|
|
7
|
+
export declare function createHandlerMap(pluginManager: PluginManager): Map<string, EnvHandler>;
|
|
8
|
+
export interface CompoundContext {
|
|
9
|
+
/** Map of handler name → handler function (from PluginManager). */
|
|
10
|
+
handlers: Map<string, EnvHandler>;
|
|
11
|
+
/** ACP backend for coordination ops (null = no coordination). */
|
|
12
|
+
acp?: AcpBackend | null;
|
|
13
|
+
/** Allowed primitives per role (null = all allowed). */
|
|
14
|
+
primitives?: Primitives | null;
|
|
15
|
+
/** Telemetry reporter (optional). */
|
|
16
|
+
telemetry?: TelemetryReporter;
|
|
17
|
+
/** Dynamic env action names (from PluginManager). Falls back to DEFAULT_ENV_ACTIONS. */
|
|
18
|
+
envActions?: Set<string>;
|
|
19
|
+
}
|
|
20
|
+
export declare function normalizeWait(spec: WaitSpec | undefined | false): NormalizedWait | null;
|
|
21
|
+
export declare function compoundHandler(input: WaggleInput, ctx: CompoundContext): Promise<WaggleResult>;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/** Build env handler map from PluginManager (replaces propolis-direct loading). */
|
|
2
|
+
export function createHandlerMap(pluginManager) {
|
|
3
|
+
return pluginManager.getHandlerMap();
|
|
4
|
+
}
|
|
5
|
+
// ─── Action name mapping ────────────────────────────────────────────
|
|
6
|
+
/** Map waggle action names to propolis handler names where they differ. */
|
|
7
|
+
const ENV_ACTION_MAP = {
|
|
8
|
+
shell: 'run',
|
|
9
|
+
scrape: 'scrape_page',
|
|
10
|
+
};
|
|
11
|
+
/** ACP coordination primitives. */
|
|
12
|
+
const ACP_ACTIONS = new Set(['publish', 'claim', 'release', 'get_state', 'set_state']);
|
|
13
|
+
/**
|
|
14
|
+
* All known env action names.
|
|
15
|
+
* Populated dynamically from PluginManager, plus waggle aliases.
|
|
16
|
+
* Falls back to the classic set when no PluginManager is wired.
|
|
17
|
+
*/
|
|
18
|
+
const DEFAULT_ENV_ACTIONS = new Set([
|
|
19
|
+
'read_file', 'write_file', 'patch_file', 'list_files', 'glob', 'grep',
|
|
20
|
+
'shell', 'git_status', 'git_diff', 'git_commit', 'git_log',
|
|
21
|
+
'fetch', 'scrape',
|
|
22
|
+
'pty_spawn', 'pty_send', 'pty_read', 'pty_resize', 'pty_close',
|
|
23
|
+
]);
|
|
24
|
+
// ─── Wait normalization ─────────────────────────────────────────────
|
|
25
|
+
export function normalizeWait(spec) {
|
|
26
|
+
if (spec === undefined || spec === false || spec === null)
|
|
27
|
+
return null;
|
|
28
|
+
if (spec === true)
|
|
29
|
+
return { types: null, timeout: 0, pureDelay: false };
|
|
30
|
+
if (typeof spec === 'string')
|
|
31
|
+
return { types: [spec], timeout: 0, pureDelay: false };
|
|
32
|
+
if (Array.isArray(spec))
|
|
33
|
+
return { types: spec.length > 0 ? spec : null, timeout: 0, pureDelay: false };
|
|
34
|
+
if (typeof spec === 'number')
|
|
35
|
+
return { types: null, timeout: spec, pureDelay: true };
|
|
36
|
+
return {
|
|
37
|
+
types: spec.types && spec.types.length > 0 ? spec.types : null,
|
|
38
|
+
timeout: spec.timeout ?? 0,
|
|
39
|
+
pureDelay: false,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// ─── Compound handler ───────────────────────────────────────────────
|
|
43
|
+
export async function compoundHandler(input, ctx) {
|
|
44
|
+
const results = [];
|
|
45
|
+
const envActions = ctx.envActions ?? DEFAULT_ENV_ACTIONS;
|
|
46
|
+
// Execute ops sequentially
|
|
47
|
+
for (const op of input.dance) {
|
|
48
|
+
const action = op.do;
|
|
49
|
+
const opStart = Date.now();
|
|
50
|
+
if (ACP_ACTIONS.has(action)) {
|
|
51
|
+
// Check ACP primitive filtering
|
|
52
|
+
if (ctx.primitives?.acp && !ctx.primitives.acp.includes(action)) {
|
|
53
|
+
results.push({ op: action, ok: false, error: `action '${action}' not permitted for this role` });
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const result = await executeAcpOp(op, ctx.acp);
|
|
57
|
+
ctx.telemetry?.record('tool_call', { action, success: result.ok, latency_ms: Date.now() - opStart });
|
|
58
|
+
results.push(result);
|
|
59
|
+
}
|
|
60
|
+
else if (envActions.has(action) || ctx.handlers.has(action) || ctx.handlers.has(ENV_ACTION_MAP[action] ?? '')) {
|
|
61
|
+
// Check env primitive filtering
|
|
62
|
+
if (ctx.primitives?.env && !ctx.primitives.env.includes(action)) {
|
|
63
|
+
results.push({ op: action, ok: false, error: `action '${action}' not permitted for this role` });
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const result = await executeEnvOp(op, ctx.handlers, envActions);
|
|
67
|
+
ctx.telemetry?.record('tool_call', { action, success: result.ok, latency_ms: Date.now() - opStart });
|
|
68
|
+
results.push(result);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
results.push({ op: action, ok: false, error: `unknown action: '${action}'` });
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Handle wait
|
|
75
|
+
const waitSpec = normalizeWait(input.wait);
|
|
76
|
+
let wakeEvents;
|
|
77
|
+
if (waitSpec) {
|
|
78
|
+
if (waitSpec.pureDelay) {
|
|
79
|
+
// Pure delay — just sleep, no event matching
|
|
80
|
+
await new Promise(r => setTimeout(r, waitSpec.timeout));
|
|
81
|
+
wakeEvents = [];
|
|
82
|
+
}
|
|
83
|
+
else if (ctx.acp) {
|
|
84
|
+
wakeEvents = await ctx.acp.waitForWake({
|
|
85
|
+
types: waitSpec.types,
|
|
86
|
+
timeout: waitSpec.timeout,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// No ACP backend — sleep if timeout, else return immediately
|
|
91
|
+
if (waitSpec.timeout > 0) {
|
|
92
|
+
await new Promise(r => setTimeout(r, waitSpec.timeout));
|
|
93
|
+
}
|
|
94
|
+
wakeEvents = [];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return {
|
|
98
|
+
results,
|
|
99
|
+
...(wakeEvents !== undefined ? { wakeEvents } : {}),
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// ─── Env op execution ───────────────────────────────────────────────
|
|
103
|
+
async function executeEnvOp(op, handlers, envActions = DEFAULT_ENV_ACTIONS) {
|
|
104
|
+
const action = op.do;
|
|
105
|
+
const handlerName = ENV_ACTION_MAP[action] ?? action;
|
|
106
|
+
const handler = handlers.get(handlerName);
|
|
107
|
+
if (!handler) {
|
|
108
|
+
if (envActions.has(action)) {
|
|
109
|
+
return { op: action, ok: false, error: 'Environment tools not available. Install @honeybee-ai/propolis.' };
|
|
110
|
+
}
|
|
111
|
+
return { op: action, ok: false, error: `unknown action: '${action}'` };
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
// Build args — everything except 'do'
|
|
115
|
+
const args = {};
|
|
116
|
+
for (const [k, v] of Object.entries(op)) {
|
|
117
|
+
if (k !== 'do')
|
|
118
|
+
args[k] = v;
|
|
119
|
+
}
|
|
120
|
+
// Map git_diff 'cached' → 'staged' for handler compatibility
|
|
121
|
+
if (action === 'git_diff' && 'cached' in args) {
|
|
122
|
+
args.staged = args.cached;
|
|
123
|
+
delete args.cached;
|
|
124
|
+
}
|
|
125
|
+
// Map git_commit 'files' array → comma-separated string
|
|
126
|
+
if (action === 'git_commit' && Array.isArray(args.files)) {
|
|
127
|
+
args.files = args.files.join(',');
|
|
128
|
+
}
|
|
129
|
+
const result = await handler(args);
|
|
130
|
+
return unwrapToolResult(action, result);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
return { op: action, ok: false, error: err.message };
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// ─── ACP op execution ───────────────────────────────────────────────
|
|
137
|
+
async function executeAcpOp(op, acp) {
|
|
138
|
+
if (!acp) {
|
|
139
|
+
return { op: op.do, ok: false, error: 'no ACP backend available' };
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
let resultStr;
|
|
143
|
+
switch (op.do) {
|
|
144
|
+
case 'publish':
|
|
145
|
+
resultStr = await acp.publishEvent(op.type, op.data ?? {});
|
|
146
|
+
break;
|
|
147
|
+
case 'claim':
|
|
148
|
+
resultStr = await acp.claimResource(op.resource, op.value);
|
|
149
|
+
break;
|
|
150
|
+
case 'release':
|
|
151
|
+
resultStr = await acp.releaseResource(op.resource);
|
|
152
|
+
break;
|
|
153
|
+
case 'get_state':
|
|
154
|
+
resultStr = await acp.getState();
|
|
155
|
+
break;
|
|
156
|
+
case 'set_state':
|
|
157
|
+
resultStr = await acp.setState(op.key, op.value);
|
|
158
|
+
break;
|
|
159
|
+
default:
|
|
160
|
+
return { op: op.do, ok: false, error: `unknown ACP action: '${op.do}'` };
|
|
161
|
+
}
|
|
162
|
+
return unwrapJsonResult(op.do, resultStr);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
return { op: op.do, ok: false, error: err.message };
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ─── Result unwrapping ──────────────────────────────────────────────
|
|
169
|
+
function unwrapToolResult(action, result) {
|
|
170
|
+
const text = result.content?.[0]?.text ?? JSON.stringify(result);
|
|
171
|
+
try {
|
|
172
|
+
const parsed = JSON.parse(text);
|
|
173
|
+
if (parsed.error) {
|
|
174
|
+
return { op: action, ok: false, error: parsed.error };
|
|
175
|
+
}
|
|
176
|
+
return { op: action, ok: true, data: parsed };
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
return { op: action, ok: true, data: text };
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function unwrapJsonResult(action, resultStr) {
|
|
183
|
+
try {
|
|
184
|
+
const parsed = JSON.parse(resultStr);
|
|
185
|
+
if (parsed.error) {
|
|
186
|
+
return { op: action, ok: false, error: parsed.error };
|
|
187
|
+
}
|
|
188
|
+
return { op: action, ok: true, data: parsed };
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return { op: action, ok: true, data: resultStr };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=compound.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compound.js","sourceRoot":"","sources":["../../src/waggle/compound.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export { compoundHandler, normalizeWait, createHandlerMap } from './compound.js';
|
|
2
|
+
export type { CompoundContext } from './compound.js';
|
|
3
|
+
export { WaggleToolClient } from './client.js';
|
|
4
|
+
export type { WaggleInput, WaggleResult, WaitSpec, NormalizedWait, Operation, OpResult, AcpBackend, Primitives, } from './types.js';
|
|
5
|
+
import type { ToolDef } from '../agent/types.js';
|
|
6
|
+
/** All known waggle action names. */
|
|
7
|
+
export declare const ALL_ACTIONS: readonly ["read_file", "write_file", "patch_file", "list_files", "glob", "grep", "shell", "git_status", "git_diff", "git_commit", "git_log", "fetch", "scrape", "publish", "claim", "release", "get_state", "set_state"];
|
|
8
|
+
export declare const ENV_ACTIONS: ("claim" | "shell" | "scrape" | "publish" | "release" | "get_state" | "set_state" | "read_file" | "write_file" | "patch_file" | "list_files" | "glob" | "grep" | "git_status" | "git_diff" | "git_commit" | "git_log" | "fetch")[];
|
|
9
|
+
export declare const ACP_ACTIONS: ("claim" | "shell" | "scrape" | "publish" | "release" | "get_state" | "set_state" | "read_file" | "write_file" | "patch_file" | "list_files" | "glob" | "grep" | "git_status" | "git_diff" | "git_commit" | "git_log" | "fetch")[];
|
|
10
|
+
/**
|
|
11
|
+
* Single tool definition for the LLM.
|
|
12
|
+
* The agent sees exactly ONE tool, no matter how many capabilities exist underneath.
|
|
13
|
+
*/
|
|
14
|
+
export declare const WAGGLE_TOOL_DEF: ToolDef;
|
|
15
|
+
/**
|
|
16
|
+
* Parse the LLM's waggle tool call args into WaggleInput.
|
|
17
|
+
* The LLM sends ops as a JSON string (or already-parsed array).
|
|
18
|
+
*/
|
|
19
|
+
export declare function parseWaggleArgs(args: Record<string, unknown>): {
|
|
20
|
+
dance: Array<{
|
|
21
|
+
do: string;
|
|
22
|
+
[k: string]: unknown;
|
|
23
|
+
}>;
|
|
24
|
+
wait?: unknown;
|
|
25
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export { compoundHandler, normalizeWait, createHandlerMap } from './compound.js';
|
|
2
|
+
export { WaggleToolClient } from './client.js';
|
|
3
|
+
/** All known waggle action names. */
|
|
4
|
+
export const ALL_ACTIONS = [
|
|
5
|
+
// Env
|
|
6
|
+
'read_file', 'write_file', 'patch_file', 'list_files', 'glob', 'grep',
|
|
7
|
+
'shell', 'git_status', 'git_diff', 'git_commit', 'git_log',
|
|
8
|
+
'fetch', 'scrape',
|
|
9
|
+
// ACP
|
|
10
|
+
'publish', 'claim', 'release', 'get_state', 'set_state',
|
|
11
|
+
];
|
|
12
|
+
export const ENV_ACTIONS = ALL_ACTIONS.slice(0, 13);
|
|
13
|
+
export const ACP_ACTIONS = ALL_ACTIONS.slice(13);
|
|
14
|
+
/**
|
|
15
|
+
* Single tool definition for the LLM.
|
|
16
|
+
* The agent sees exactly ONE tool, no matter how many capabilities exist underneath.
|
|
17
|
+
*/
|
|
18
|
+
export const WAGGLE_TOOL_DEF = {
|
|
19
|
+
type: 'function',
|
|
20
|
+
function: {
|
|
21
|
+
name: 'waggle',
|
|
22
|
+
description: [
|
|
23
|
+
'Execute operations and optionally wait for events. Ops run sequentially.',
|
|
24
|
+
'Actions: read_file, write_file, patch_file, list_files, glob, grep, shell,',
|
|
25
|
+
'git_status, git_diff, git_commit, git_log, fetch, scrape,',
|
|
26
|
+
'publish, claim, release, get_state, set_state.',
|
|
27
|
+
'Wait: true (any event), "type" (specific), ["a","b"] (any of), number (sleep ms), {types,timeout}.',
|
|
28
|
+
].join(' '),
|
|
29
|
+
parameters: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
dance: {
|
|
33
|
+
type: 'string',
|
|
34
|
+
description: 'JSON array of operations. Each op: { "do": "action", ...params }. Example: [{"do":"read_file","path":"src/index.ts"},{"do":"publish","type":"file.read","data":{"path":"src/index.ts"}}]',
|
|
35
|
+
},
|
|
36
|
+
wait: {
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Optional wait spec after ops. true, "event_type", ["a","b"], 30000, or {"types":["a"],"timeout":5000}. Omit for no wait.',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
required: ['dance'],
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Parse the LLM's waggle tool call args into WaggleInput.
|
|
47
|
+
* The LLM sends ops as a JSON string (or already-parsed array).
|
|
48
|
+
*/
|
|
49
|
+
export function parseWaggleArgs(args) {
|
|
50
|
+
const raw = args.dance;
|
|
51
|
+
let dance;
|
|
52
|
+
if (typeof raw === 'string') {
|
|
53
|
+
dance = JSON.parse(raw);
|
|
54
|
+
}
|
|
55
|
+
else if (Array.isArray(raw)) {
|
|
56
|
+
dance = raw;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
dance = [];
|
|
60
|
+
}
|
|
61
|
+
let wait;
|
|
62
|
+
if (args.wait !== undefined) {
|
|
63
|
+
if (typeof args.wait === 'string') {
|
|
64
|
+
try {
|
|
65
|
+
wait = JSON.parse(args.wait);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
wait = args.wait; // plain string event type
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
wait = args.wait;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return { dance: dance, wait };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/waggle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQ/C,qCAAqC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM;IACrE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS;IAC1D,OAAO,EAAE,QAAQ;IACjB,MAAM;IACN,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW;CAC/C,CAAC;AAEX,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAEjD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAY;IACtC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE;YACX,0EAA0E;YAC1E,4EAA4E;YAC5E,2DAA2D;YAC3D,gDAAgD;YAChD,oGAAoG;SACrG,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0LAA0L;iBACxM;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0HAA0H;iBACxI;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,IAA6B;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,KAAgB,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,GAAG,GAAG,CAAC;IACd,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,CAAC;IACb,CAAC;IAED,IAAI,IAAa,CAAC;IAClB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,0BAA0B;YAC9C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,KAAoD,EAAE,IAAI,EAAE,CAAC;AAC/E,CAAC"}
|