@honeybee-ai/waggle-cli 1.0.2 → 1.0.6
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/dist/cli.js +487 -4942
- package/dist/cli.js.map +4 -4
- package/package.json +10 -14
- package/dist/brood.d.ts +0 -92
- package/dist/brood.js +0 -259
- package/dist/brood.js.map +0 -1
- package/dist/cli.d.ts +0 -1
- package/dist/commands/auth.d.ts +0 -1
- package/dist/commands/auth.js +0 -155
- package/dist/commands/auth.js.map +0 -1
- package/dist/commands/claim.d.ts +0 -1
- package/dist/commands/claim.js +0 -36
- package/dist/commands/claim.js.map +0 -1
- package/dist/commands/completion.d.ts +0 -1
- package/dist/commands/completion.js +0 -191
- package/dist/commands/completion.js.map +0 -1
- package/dist/commands/config-cmd.d.ts +0 -1
- package/dist/commands/config-cmd.js +0 -61
- package/dist/commands/config-cmd.js.map +0 -1
- package/dist/commands/down.d.ts +0 -1
- package/dist/commands/down.js +0 -76
- package/dist/commands/down.js.map +0 -1
- package/dist/commands/events.d.ts +0 -1
- package/dist/commands/events.js +0 -129
- package/dist/commands/events.js.map +0 -1
- package/dist/commands/halt.d.ts +0 -1
- package/dist/commands/halt.js +0 -25
- package/dist/commands/halt.js.map +0 -1
- package/dist/commands/help-cmd.d.ts +0 -1
- package/dist/commands/help-cmd.js +0 -125
- package/dist/commands/help-cmd.js.map +0 -1
- package/dist/commands/hooks-cmd.d.ts +0 -1
- package/dist/commands/hooks-cmd.js +0 -83
- package/dist/commands/hooks-cmd.js.map +0 -1
- package/dist/commands/init.d.ts +0 -1
- package/dist/commands/init.js +0 -78
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/integrations.d.ts +0 -1
- package/dist/commands/integrations.js +0 -380
- package/dist/commands/integrations.js.map +0 -1
- package/dist/commands/join.d.ts +0 -1
- package/dist/commands/join.js +0 -81
- package/dist/commands/join.js.map +0 -1
- package/dist/commands/leave.d.ts +0 -1
- package/dist/commands/leave.js +0 -36
- package/dist/commands/leave.js.map +0 -1
- package/dist/commands/marketplace.d.ts +0 -1
- package/dist/commands/marketplace.js +0 -291
- package/dist/commands/marketplace.js.map +0 -1
- package/dist/commands/msg.d.ts +0 -1
- package/dist/commands/msg.js +0 -105
- package/dist/commands/msg.js.map +0 -1
- package/dist/commands/namespace.d.ts +0 -1
- package/dist/commands/namespace.js +0 -95
- package/dist/commands/namespace.js.map +0 -1
- package/dist/commands/pause.d.ts +0 -2
- package/dist/commands/pause.js +0 -45
- package/dist/commands/pause.js.map +0 -1
- package/dist/commands/protocol.d.ts +0 -1
- package/dist/commands/protocol.js +0 -341
- package/dist/commands/protocol.js.map +0 -1
- package/dist/commands/release.d.ts +0 -1
- package/dist/commands/release.js +0 -29
- package/dist/commands/release.js.map +0 -1
- package/dist/commands/scan.d.ts +0 -1
- package/dist/commands/scan.js +0 -157
- package/dist/commands/scan.js.map +0 -1
- package/dist/commands/serve.d.ts +0 -1
- package/dist/commands/serve.js +0 -78
- package/dist/commands/serve.js.map +0 -1
- package/dist/commands/state.d.ts +0 -1
- package/dist/commands/state.js +0 -119
- package/dist/commands/state.js.map +0 -1
- package/dist/commands/status.d.ts +0 -1
- package/dist/commands/status.js +0 -78
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/swarm.d.ts +0 -1
- package/dist/commands/swarm.js +0 -404
- package/dist/commands/swarm.js.map +0 -1
- package/dist/commands/team.d.ts +0 -1
- package/dist/commands/team.js +0 -35
- package/dist/commands/team.js.map +0 -1
- package/dist/commands/telemetry.d.ts +0 -1
- package/dist/commands/telemetry.js +0 -151
- package/dist/commands/telemetry.js.map +0 -1
- package/dist/commands/up.d.ts +0 -1
- package/dist/commands/up.js +0 -376
- package/dist/commands/up.js.map +0 -1
- package/dist/commands/upgrade.d.ts +0 -1
- package/dist/commands/upgrade.js +0 -99
- package/dist/commands/upgrade.js.map +0 -1
- package/dist/hook.d.ts +0 -1
- package/dist/hook.js +0 -532
- package/dist/hook.js.map +0 -7
- package/dist/hooks/post-tool-use.d.ts +0 -2
- package/dist/hooks/post-tool-use.js +0 -16
- package/dist/hooks/post-tool-use.js.map +0 -1
- package/dist/hooks/pre-tool-use.d.ts +0 -2
- package/dist/hooks/pre-tool-use.js +0 -49
- package/dist/hooks/pre-tool-use.js.map +0 -1
- package/dist/hooks/prompt-submit.d.ts +0 -2
- package/dist/hooks/prompt-submit.js +0 -64
- package/dist/hooks/prompt-submit.js.map +0 -1
- package/dist/hooks/session-start.d.ts +0 -2
- package/dist/hooks/session-start.js +0 -103
- package/dist/hooks/session-start.js.map +0 -1
- package/dist/hooks/stop.d.ts +0 -2
- package/dist/hooks/stop.js +0 -52
- package/dist/hooks/stop.js.map +0 -1
- package/dist/lib/config.d.ts +0 -6
- package/dist/lib/config.js +0 -53
- package/dist/lib/config.js.map +0 -1
- package/dist/lib/format.d.ts +0 -22
- package/dist/lib/format.js +0 -42
- package/dist/lib/format.js.map +0 -1
- package/dist/lib/global-config.d.ts +0 -13
- package/dist/lib/global-config.js +0 -52
- package/dist/lib/global-config.js.map +0 -1
- package/dist/lib/hooks.d.ts +0 -2
- package/dist/lib/hooks.js +0 -75
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/id.d.ts +0 -1
- package/dist/lib/id.js +0 -5
- package/dist/lib/id.js.map +0 -1
- package/dist/lib/ipc-broker.d.ts +0 -23
- package/dist/lib/ipc-broker.js +0 -95
- package/dist/lib/ipc-broker.js.map +0 -1
- package/dist/types.d.ts +0 -26
- package/dist/types.js +0 -3
- package/dist/types.js.map +0 -1
- package/hooks/post-tool-use.sh +0 -13
- package/hooks/pre-tool-use.sh +0 -13
- package/hooks/prompt-submit.sh +0 -13
- package/hooks/session-start.sh +0 -13
- package/hooks/stop.sh +0 -13
package/dist/hook.js
DELETED
|
@@ -1,532 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __esm = (fn, res) => function __init() {
|
|
5
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
6
|
-
};
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
// node_modules/.pnpm/@agentcoordinationprotocol+sdk@0.1.0/node_modules/@agentcoordinationprotocol/sdk/dist/client.js
|
|
13
|
-
import { request as httpRequest } from "node:http";
|
|
14
|
-
import { request as httpsRequest } from "node:https";
|
|
15
|
-
function createAcpClient(config2) {
|
|
16
|
-
const base = config2.server.replace(/\/$/, "");
|
|
17
|
-
const ns = (config2.namespace ?? "default") === "default" ? "" : `/${config2.namespace}`;
|
|
18
|
-
function fetch(method, path, body) {
|
|
19
|
-
return new Promise((resolve, reject) => {
|
|
20
|
-
const url = new URL(`${base}/api${ns}${path}`);
|
|
21
|
-
const isHttps = url.protocol === "https:";
|
|
22
|
-
const reqFn = isHttps ? httpsRequest : httpRequest;
|
|
23
|
-
const headers = {
|
|
24
|
-
"X-Agent-Id": config2.agentId
|
|
25
|
-
};
|
|
26
|
-
let payload;
|
|
27
|
-
if (body !== void 0) {
|
|
28
|
-
payload = JSON.stringify(body);
|
|
29
|
-
headers["Content-Type"] = "application/json";
|
|
30
|
-
headers["Content-Length"] = Buffer.byteLength(payload).toString();
|
|
31
|
-
}
|
|
32
|
-
const req = reqFn(url, { method, headers, timeout: TIMEOUT }, (res) => {
|
|
33
|
-
let data = "";
|
|
34
|
-
res.on("data", (chunk) => data += chunk);
|
|
35
|
-
res.on("end", () => {
|
|
36
|
-
try {
|
|
37
|
-
const parsed = data ? JSON.parse(data) : {};
|
|
38
|
-
resolve({ ok: res.statusCode >= 200 && res.statusCode < 300, status: res.statusCode, data: parsed });
|
|
39
|
-
} catch {
|
|
40
|
-
resolve({ ok: false, status: res.statusCode, data: {} });
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
req.on("error", (err) => reject(err));
|
|
45
|
-
req.on("timeout", () => {
|
|
46
|
-
req.destroy();
|
|
47
|
-
reject(new Error("timeout"));
|
|
48
|
-
});
|
|
49
|
-
if (payload)
|
|
50
|
-
req.write(payload);
|
|
51
|
-
req.end();
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
// Health
|
|
56
|
-
health: () => fetch("GET", "/health"),
|
|
57
|
-
// Control
|
|
58
|
-
getControlStatus: () => fetch("GET", "/control/status"),
|
|
59
|
-
halt: (reason, opts) => fetch("POST", "/control/halt", { reason, ...opts }),
|
|
60
|
-
pause: (reason, opts) => fetch("POST", "/control/pause", { reason, ...opts }),
|
|
61
|
-
resume: (opts) => fetch("POST", "/control/resume", opts ?? {}),
|
|
62
|
-
// Claims
|
|
63
|
-
claim: (resource, value, opts) => fetch("POST", "/claims", { resource, value: value || resource, ...opts }),
|
|
64
|
-
releaseClaim: (resource) => fetch("DELETE", `/claims/${encodeURIComponent(resource)}`),
|
|
65
|
-
getClaims: (pattern) => {
|
|
66
|
-
const qs = pattern ? `?pattern=${encodeURIComponent(pattern)}` : "";
|
|
67
|
-
return fetch("GET", `/claims${qs}`);
|
|
68
|
-
},
|
|
69
|
-
checkClaim: (resource) => fetch("GET", `/claims/${encodeURIComponent(resource)}`),
|
|
70
|
-
listClaims: (pattern) => {
|
|
71
|
-
const qs = pattern ? `?pattern=${encodeURIComponent(pattern)}` : "";
|
|
72
|
-
return fetch("GET", `/claims${qs}`);
|
|
73
|
-
},
|
|
74
|
-
// Events
|
|
75
|
-
publishEvent: (type, data) => fetch("POST", "/events", { type, data }),
|
|
76
|
-
getEvents: (since, opts) => {
|
|
77
|
-
const params = [];
|
|
78
|
-
if (since !== void 0)
|
|
79
|
-
params.push(`since=${since}`);
|
|
80
|
-
if (opts?.type)
|
|
81
|
-
params.push(`type=${encodeURIComponent(opts.type)}`);
|
|
82
|
-
const qs = params.length ? `?${params.join("&")}` : "";
|
|
83
|
-
return fetch("GET", `/events${qs}`);
|
|
84
|
-
},
|
|
85
|
-
// Discoveries
|
|
86
|
-
publishDiscovery: (topic, content, category) => fetch("POST", "/discoveries", { topic, content, category }),
|
|
87
|
-
getDiscoveries: () => fetch("GET", "/discoveries"),
|
|
88
|
-
searchDiscoveries: (opts) => {
|
|
89
|
-
const params = [];
|
|
90
|
-
if (opts?.query)
|
|
91
|
-
params.push(`query=${encodeURIComponent(opts.query)}`);
|
|
92
|
-
if (opts?.category)
|
|
93
|
-
params.push(`category=${encodeURIComponent(opts.category)}`);
|
|
94
|
-
const qs = params.length ? `?${params.join("&")}` : "";
|
|
95
|
-
return fetch("GET", `/discoveries${qs}`);
|
|
96
|
-
},
|
|
97
|
-
// Messages
|
|
98
|
-
sendMessage: (to, content, opts) => fetch("POST", "/messages", { to, content, ...opts }),
|
|
99
|
-
getMessages: (opts) => {
|
|
100
|
-
const qs = opts?.since ? `?since=${encodeURIComponent(opts.since)}` : "";
|
|
101
|
-
return fetch("GET", `/messages${qs}`);
|
|
102
|
-
},
|
|
103
|
-
// Roles
|
|
104
|
-
requestRole: (role, opts) => fetch("POST", "/roles/request", { role, ...opts }),
|
|
105
|
-
getRoles: () => fetch("GET", "/roles"),
|
|
106
|
-
// Help
|
|
107
|
-
getHelp: () => fetch("GET", "/help"),
|
|
108
|
-
requestHelp: (problem, needs_capability, urgency) => fetch("POST", "/help", { problem, needs_capability, urgency }),
|
|
109
|
-
claimHelp: (id) => fetch("POST", `/help/${encodeURIComponent(id)}/claim`),
|
|
110
|
-
resolveHelp: (id) => fetch("POST", `/help/${encodeURIComponent(id)}/resolve`),
|
|
111
|
-
// Progress
|
|
112
|
-
reportProgress: (claim, progress, note) => fetch("POST", "/progress", { claim, progress, note }),
|
|
113
|
-
// Protocol
|
|
114
|
-
getProtocol: (role) => {
|
|
115
|
-
const qs = role ? `?role=${encodeURIComponent(role)}` : "";
|
|
116
|
-
return fetch("GET", `/protocol${qs}`);
|
|
117
|
-
},
|
|
118
|
-
loadProtocol: (protocol) => fetch("PUT", "/protocol", protocol),
|
|
119
|
-
// State
|
|
120
|
-
getState: (pattern, category) => {
|
|
121
|
-
const params = [];
|
|
122
|
-
if (pattern)
|
|
123
|
-
params.push(`pattern=${encodeURIComponent(pattern)}`);
|
|
124
|
-
if (category)
|
|
125
|
-
params.push(`category=${encodeURIComponent(category)}`);
|
|
126
|
-
const qs = params.length ? `?${params.join("&")}` : "";
|
|
127
|
-
return fetch("GET", `/state${qs}`);
|
|
128
|
-
},
|
|
129
|
-
getStateKey: (key) => fetch("GET", `/state/${encodeURIComponent(key)}`),
|
|
130
|
-
queryState: (opts) => {
|
|
131
|
-
const params = [];
|
|
132
|
-
if (opts?.pattern)
|
|
133
|
-
params.push(`pattern=${encodeURIComponent(opts.pattern)}`);
|
|
134
|
-
if (opts?.category)
|
|
135
|
-
params.push(`category=${encodeURIComponent(opts.category)}`);
|
|
136
|
-
const qs = params.length ? `?${params.join("&")}` : "";
|
|
137
|
-
return fetch("GET", `/state${qs}`);
|
|
138
|
-
},
|
|
139
|
-
setState: (key, value, category, ttlMs) => fetch("PUT", `/state/${encodeURIComponent(key)}`, { value, category, ttlMs }),
|
|
140
|
-
deleteState: (key) => fetch("DELETE", `/state/${encodeURIComponent(key)}`),
|
|
141
|
-
// Conflicts
|
|
142
|
-
flagConflict: (discovery_a, discovery_b, reason) => fetch("POST", "/conflicts", { discovery_a, discovery_b, reason }),
|
|
143
|
-
// Reinforcements
|
|
144
|
-
requestReinforcement: (role, opts) => fetch("POST", "/reinforcements", { role, ...opts }),
|
|
145
|
-
// Governance
|
|
146
|
-
requestApproval: (action, opts) => fetch("POST", "/governance/approve", { action, ...opts }),
|
|
147
|
-
escalate: (reason, context) => fetch("POST", "/governance/escalate", { reason, context }),
|
|
148
|
-
proposeAction: (action, opts) => fetch("POST", "/governance/propose", { action, ...opts }),
|
|
149
|
-
endorseAction: (proposalId) => fetch("POST", `/governance/endorse/${encodeURIComponent(proposalId)}`),
|
|
150
|
-
requestRollback: (reason, scope) => fetch("POST", "/governance/rollback", { reason, scope }),
|
|
151
|
-
// Topics (Honeycomb cross-namespace routing)
|
|
152
|
-
getTopics: () => fetch("GET", "/topics"),
|
|
153
|
-
subscribeTopic: (topic) => fetch("POST", "/topics/subscribe", { topic }),
|
|
154
|
-
unsubscribeTopic: (topic) => fetch("DELETE", `/topics/subscribe/${encodeURIComponent(topic)}`),
|
|
155
|
-
publishTopic: (topic) => fetch("POST", "/topics/publish", { topic }),
|
|
156
|
-
unpublishTopic: (topic) => fetch("DELETE", `/topics/publish/${encodeURIComponent(topic)}`),
|
|
157
|
-
// Namespaces
|
|
158
|
-
getNamespaces: () => fetch("GET", "/_ns"),
|
|
159
|
-
createNamespace: (name) => fetch("POST", "/_ns", { name }),
|
|
160
|
-
deleteNamespace: (name) => fetch("DELETE", `/_ns/${encodeURIComponent(name)}`)
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
var TIMEOUT;
|
|
164
|
-
var init_client = __esm({
|
|
165
|
-
"node_modules/.pnpm/@agentcoordinationprotocol+sdk@0.1.0/node_modules/@agentcoordinationprotocol/sdk/dist/client.js"() {
|
|
166
|
-
TIMEOUT = 3e3;
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
// node_modules/.pnpm/@agentcoordinationprotocol+sdk@0.1.0/node_modules/@agentcoordinationprotocol/sdk/dist/index.js
|
|
171
|
-
var init_dist = __esm({
|
|
172
|
-
"node_modules/.pnpm/@agentcoordinationprotocol+sdk@0.1.0/node_modules/@agentcoordinationprotocol/sdk/dist/index.js"() {
|
|
173
|
-
init_client();
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
// src/hooks/session-start.ts
|
|
178
|
-
var session_start_exports = {};
|
|
179
|
-
__export(session_start_exports, {
|
|
180
|
-
handleSessionStart: () => handleSessionStart
|
|
181
|
-
});
|
|
182
|
-
import { appendFileSync } from "node:fs";
|
|
183
|
-
async function handleSessionStart(config2, configPath2, _input) {
|
|
184
|
-
const envFile = process.env.CLAUDE_ENV_FILE;
|
|
185
|
-
if (envFile) {
|
|
186
|
-
const esc = (v) => v.replace(/["\\`$!]/g, "\\$&");
|
|
187
|
-
appendFileSync(envFile, [
|
|
188
|
-
`export WGL_SERVER="${esc(config2.server)}"`,
|
|
189
|
-
`export WGL_AGENT_ID="${esc(config2.agentId)}"`,
|
|
190
|
-
`export WGL_NAMESPACE="${esc(config2.namespace)}"`,
|
|
191
|
-
`export WGL_ROLE="${esc(config2.role)}"`,
|
|
192
|
-
`export WGL_CONFIG="${esc(configPath2)}"`
|
|
193
|
-
].join("\n") + "\n");
|
|
194
|
-
}
|
|
195
|
-
const client = createAcpClient(config2);
|
|
196
|
-
const context = [];
|
|
197
|
-
try {
|
|
198
|
-
const [controlRes, protocolRes, rolesRes, claimsRes, messagesRes] = await Promise.all([
|
|
199
|
-
client.getControlStatus().catch(() => null),
|
|
200
|
-
client.getProtocol().catch(() => null),
|
|
201
|
-
client.getRoles().catch(() => null),
|
|
202
|
-
client.getClaims().catch(() => null),
|
|
203
|
-
client.getMessages().catch(() => null)
|
|
204
|
-
]);
|
|
205
|
-
if (controlRes?.ok) {
|
|
206
|
-
const ctrl = controlRes.data;
|
|
207
|
-
if (ctrl.halted) {
|
|
208
|
-
context.push(`COORDINATION HALTED${ctrl.reason ? `: ${ctrl.reason}` : ""}. Do not proceed with any coordinated work.`);
|
|
209
|
-
} else if (ctrl.paused) {
|
|
210
|
-
context.push(`Coordination paused${ctrl.reason ? `: ${ctrl.reason}` : ""}. Proceed cautiously.`);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
try {
|
|
214
|
-
await client.requestRole(config2.role);
|
|
215
|
-
} catch {
|
|
216
|
-
}
|
|
217
|
-
if (protocolRes?.ok) {
|
|
218
|
-
const p = protocolRes.data;
|
|
219
|
-
if (p.name) {
|
|
220
|
-
context.push(`Protocol: ${p.name}${p.description ? ` \u2014 ${p.description}` : ""}`);
|
|
221
|
-
if (p.phases?.length) {
|
|
222
|
-
context.push(`Phases: ${p.phases.map((ph) => ph.name).join(" \u2192 ")}`);
|
|
223
|
-
}
|
|
224
|
-
if (p.rules?.length) {
|
|
225
|
-
context.push(`Rules:
|
|
226
|
-
${p.rules.map((r) => ` - ${r}`).join("\n")}`);
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
if (rolesRes?.ok && Array.isArray(rolesRes.data)) {
|
|
231
|
-
const roles = rolesRes.data;
|
|
232
|
-
if (roles.length > 0) {
|
|
233
|
-
context.push(`Team: ${roles.map((r) => `${r.agent} (${r.role})`).join(", ")}`);
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
if (claimsRes?.ok && Array.isArray(claimsRes.data)) {
|
|
237
|
-
const claims = claimsRes.data.filter((c) => c.status === "active");
|
|
238
|
-
if (claims.length > 0) {
|
|
239
|
-
const mine = claims.filter((c) => c.owner === config2.agentId);
|
|
240
|
-
const others = claims.filter((c) => c.owner !== config2.agentId);
|
|
241
|
-
if (mine.length > 0) {
|
|
242
|
-
context.push(`Your claims: ${mine.map((c) => c.resource).join(", ")}`);
|
|
243
|
-
}
|
|
244
|
-
if (others.length > 0) {
|
|
245
|
-
context.push(`Locked by others: ${others.map((c) => `${c.resource} (${c.owner})`).join(", ")}`);
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
if (messagesRes?.ok && Array.isArray(messagesRes.data)) {
|
|
250
|
-
const msgs = messagesRes.data.filter((m) => m.to === config2.agentId || m.to === "*");
|
|
251
|
-
if (msgs.length > 0) {
|
|
252
|
-
context.push(`Messages:
|
|
253
|
-
${msgs.map((m) => ` [${m.from}]: ${m.content}`).join("\n")}`);
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
} catch {
|
|
257
|
-
}
|
|
258
|
-
client.publishEvent("agent.session_start", {
|
|
259
|
-
agentId: config2.agentId,
|
|
260
|
-
role: config2.role
|
|
261
|
-
}).catch(() => {
|
|
262
|
-
});
|
|
263
|
-
if (context.length > 0) {
|
|
264
|
-
const output = {
|
|
265
|
-
additionalContext: `[waggle-cli] You are agent ${config2.agentId} (role: ${config2.role}) coordinating via ACP.
|
|
266
|
-
Server: ${config2.server} | Namespace: ${config2.namespace}
|
|
267
|
-
|
|
268
|
-
${context.join("\n\n")}
|
|
269
|
-
|
|
270
|
-
File edits are auto-claimed. Use wgl commands for manual coordination.`
|
|
271
|
-
};
|
|
272
|
-
console.log(JSON.stringify(output));
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
var init_session_start = __esm({
|
|
276
|
-
"src/hooks/session-start.ts"() {
|
|
277
|
-
"use strict";
|
|
278
|
-
init_dist();
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
|
|
282
|
-
// src/hooks/pre-tool-use.ts
|
|
283
|
-
var pre_tool_use_exports = {};
|
|
284
|
-
__export(pre_tool_use_exports, {
|
|
285
|
-
handlePreToolUse: () => handlePreToolUse
|
|
286
|
-
});
|
|
287
|
-
async function handlePreToolUse(config2, input2) {
|
|
288
|
-
const client = createAcpClient(config2);
|
|
289
|
-
try {
|
|
290
|
-
const controlRes = await client.getControlStatus();
|
|
291
|
-
if (controlRes.ok) {
|
|
292
|
-
const ctrl = controlRes.data;
|
|
293
|
-
if (ctrl.halted) {
|
|
294
|
-
const output = {
|
|
295
|
-
decision: "block",
|
|
296
|
-
reason: `Coordination HALTED${ctrl.reason ? `: ${ctrl.reason}` : ""}. File edits blocked.`
|
|
297
|
-
};
|
|
298
|
-
console.log(JSON.stringify(output));
|
|
299
|
-
return;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
} catch {
|
|
303
|
-
}
|
|
304
|
-
if (!config2.autoClaimFiles) return;
|
|
305
|
-
const filePath = input2.tool_input?.file_path;
|
|
306
|
-
if (!filePath) return;
|
|
307
|
-
const resource = `file:${filePath}`;
|
|
308
|
-
try {
|
|
309
|
-
const res = await client.claim(resource, filePath);
|
|
310
|
-
if (res.ok) {
|
|
311
|
-
const result = res.data;
|
|
312
|
-
if (result.status === "rejected") {
|
|
313
|
-
const owner = result.claim?.owner || "another agent";
|
|
314
|
-
const output = {
|
|
315
|
-
decision: "block",
|
|
316
|
-
reason: `File locked by ${owner}: ${filePath}`
|
|
317
|
-
};
|
|
318
|
-
console.log(JSON.stringify(output));
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
} catch {
|
|
323
|
-
}
|
|
324
|
-
}
|
|
325
|
-
var init_pre_tool_use = __esm({
|
|
326
|
-
"src/hooks/pre-tool-use.ts"() {
|
|
327
|
-
"use strict";
|
|
328
|
-
init_dist();
|
|
329
|
-
}
|
|
330
|
-
});
|
|
331
|
-
|
|
332
|
-
// src/hooks/post-tool-use.ts
|
|
333
|
-
var post_tool_use_exports = {};
|
|
334
|
-
__export(post_tool_use_exports, {
|
|
335
|
-
handlePostToolUse: () => handlePostToolUse
|
|
336
|
-
});
|
|
337
|
-
async function handlePostToolUse(config2, input2) {
|
|
338
|
-
const client = createAcpClient(config2);
|
|
339
|
-
const filePath = input2.tool_input?.file_path;
|
|
340
|
-
if (!filePath) return;
|
|
341
|
-
const resource = `file:${filePath}`;
|
|
342
|
-
if (config2.autoPublishDiscoveries) {
|
|
343
|
-
const toolName = input2.tool_name || "unknown";
|
|
344
|
-
client.publishDiscovery(
|
|
345
|
-
`file-change:${filePath}`,
|
|
346
|
-
`${config2.agentId} ${toolName === "Write" ? "created" : "edited"} ${filePath}`,
|
|
347
|
-
"file-change"
|
|
348
|
-
).catch(() => {
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
client.reportProgress(resource, 0, `${input2.tool_name || "edit"} completed`).catch(() => {
|
|
352
|
-
});
|
|
353
|
-
}
|
|
354
|
-
var init_post_tool_use = __esm({
|
|
355
|
-
"src/hooks/post-tool-use.ts"() {
|
|
356
|
-
"use strict";
|
|
357
|
-
init_dist();
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
// src/hooks/stop.ts
|
|
362
|
-
var stop_exports = {};
|
|
363
|
-
__export(stop_exports, {
|
|
364
|
-
handleStop: () => handleStop
|
|
365
|
-
});
|
|
366
|
-
async function handleStop(config2, _input) {
|
|
367
|
-
const client = createAcpClient(config2);
|
|
368
|
-
try {
|
|
369
|
-
const [messagesRes, helpRes, claimsRes] = await Promise.all([
|
|
370
|
-
client.getMessages().catch(() => null),
|
|
371
|
-
client.getHelp().catch(() => null),
|
|
372
|
-
client.getClaims().catch(() => null)
|
|
373
|
-
]);
|
|
374
|
-
const blockers = [];
|
|
375
|
-
if (messagesRes?.ok && Array.isArray(messagesRes.data)) {
|
|
376
|
-
const unread = messagesRes.data.filter(
|
|
377
|
-
(m) => m.to === config2.agentId || m.to === "*"
|
|
378
|
-
);
|
|
379
|
-
if (unread.length > 0) {
|
|
380
|
-
blockers.push(`${unread.length} unread message(s) \u2014 check with \`wgl status\``);
|
|
381
|
-
}
|
|
382
|
-
}
|
|
383
|
-
if (helpRes?.ok && Array.isArray(helpRes.data)) {
|
|
384
|
-
const openHelp = helpRes.data.filter((h) => h.status === "open");
|
|
385
|
-
if (openHelp.length > 0) {
|
|
386
|
-
blockers.push(`${openHelp.length} open help request(s) need attention`);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
if (claimsRes?.ok && Array.isArray(claimsRes.data)) {
|
|
390
|
-
const mine = claimsRes.data.filter(
|
|
391
|
-
(c) => c.owner === config2.agentId && c.status === "active"
|
|
392
|
-
);
|
|
393
|
-
for (const claim of mine) {
|
|
394
|
-
client.releaseClaim(claim.resource).catch(() => {
|
|
395
|
-
});
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
if (blockers.length > 0) {
|
|
399
|
-
const output = {
|
|
400
|
-
decision: "block",
|
|
401
|
-
reason: `Cannot stop \u2014 coordination items pending:
|
|
402
|
-
${blockers.map((b) => ` \u2022 ${b}`).join("\n")}`
|
|
403
|
-
};
|
|
404
|
-
console.log(JSON.stringify(output));
|
|
405
|
-
return;
|
|
406
|
-
}
|
|
407
|
-
} catch {
|
|
408
|
-
}
|
|
409
|
-
client.publishEvent("agent.session_complete", {
|
|
410
|
-
agentId: config2.agentId,
|
|
411
|
-
role: config2.role
|
|
412
|
-
}).catch(() => {
|
|
413
|
-
});
|
|
414
|
-
}
|
|
415
|
-
var init_stop = __esm({
|
|
416
|
-
"src/hooks/stop.ts"() {
|
|
417
|
-
"use strict";
|
|
418
|
-
init_dist();
|
|
419
|
-
}
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
// src/hooks/prompt-submit.ts
|
|
423
|
-
var prompt_submit_exports = {};
|
|
424
|
-
__export(prompt_submit_exports, {
|
|
425
|
-
handlePromptSubmit: () => handlePromptSubmit
|
|
426
|
-
});
|
|
427
|
-
import { writeFileSync } from "node:fs";
|
|
428
|
-
async function handlePromptSubmit(config2, configPath2, _input) {
|
|
429
|
-
const client = createAcpClient(config2);
|
|
430
|
-
const context = [];
|
|
431
|
-
try {
|
|
432
|
-
const [controlRes, eventsRes] = await Promise.all([
|
|
433
|
-
client.getControlStatus().catch(() => null),
|
|
434
|
-
client.getEvents(config2.lastEventCursor).catch(() => null)
|
|
435
|
-
]);
|
|
436
|
-
if (controlRes?.ok) {
|
|
437
|
-
const ctrl = controlRes.data;
|
|
438
|
-
if (ctrl.halted) {
|
|
439
|
-
context.push(`COORDINATION HALTED${ctrl.reason ? `: ${ctrl.reason}` : ""}. Do not proceed with coordinated work.`);
|
|
440
|
-
} else if (ctrl.paused) {
|
|
441
|
-
context.push(`Coordination paused${ctrl.reason ? `: ${ctrl.reason}` : ""}.`);
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
if (eventsRes?.ok && Array.isArray(eventsRes.data)) {
|
|
445
|
-
const events = eventsRes.data;
|
|
446
|
-
if (events.length > 0) {
|
|
447
|
-
const maxId = Math.max(...events.map((e) => e.id));
|
|
448
|
-
config2.lastEventCursor = maxId;
|
|
449
|
-
try {
|
|
450
|
-
writeFileSync(configPath2, JSON.stringify(config2, null, 2) + "\n");
|
|
451
|
-
} catch {
|
|
452
|
-
}
|
|
453
|
-
const byType = {};
|
|
454
|
-
for (const ev of events) {
|
|
455
|
-
byType[ev.type] = (byType[ev.type] || 0) + 1;
|
|
456
|
-
}
|
|
457
|
-
const summary = Object.entries(byType).map(([type, count]) => `${type} (${count})`).join(", ");
|
|
458
|
-
context.push(`New events since last prompt: ${summary}`);
|
|
459
|
-
const important = events.filter(
|
|
460
|
-
(e) => e.type.startsWith("agent.") || e.type.startsWith("control.") || e.type.startsWith("conflict.")
|
|
461
|
-
);
|
|
462
|
-
if (important.length > 0) {
|
|
463
|
-
for (const ev of important.slice(-5)) {
|
|
464
|
-
context.push(` [${ev.type}] ${JSON.stringify(ev.data)}`);
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
} catch {
|
|
470
|
-
}
|
|
471
|
-
if (context.length > 0) {
|
|
472
|
-
console.log(`[waggle-cli] ${context.join("\n")}`);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
var init_prompt_submit = __esm({
|
|
476
|
-
"src/hooks/prompt-submit.ts"() {
|
|
477
|
-
"use strict";
|
|
478
|
-
init_dist();
|
|
479
|
-
}
|
|
480
|
-
});
|
|
481
|
-
|
|
482
|
-
// src/hook.ts
|
|
483
|
-
import { readFileSync as readFileSync2 } from "node:fs";
|
|
484
|
-
var hookName = process.argv[2];
|
|
485
|
-
var configPath = process.argv[3];
|
|
486
|
-
if (!hookName || !configPath) process.exit(0);
|
|
487
|
-
var config;
|
|
488
|
-
try {
|
|
489
|
-
config = JSON.parse(readFileSync2(configPath, "utf8"));
|
|
490
|
-
} catch {
|
|
491
|
-
process.exit(0);
|
|
492
|
-
}
|
|
493
|
-
var input;
|
|
494
|
-
try {
|
|
495
|
-
const raw = readFileSync2(0, "utf8");
|
|
496
|
-
input = raw ? JSON.parse(raw) : {};
|
|
497
|
-
} catch {
|
|
498
|
-
input = {};
|
|
499
|
-
}
|
|
500
|
-
async function run() {
|
|
501
|
-
switch (hookName) {
|
|
502
|
-
case "session-start": {
|
|
503
|
-
const { handleSessionStart: handleSessionStart2 } = await Promise.resolve().then(() => (init_session_start(), session_start_exports));
|
|
504
|
-
await handleSessionStart2(config, configPath, input);
|
|
505
|
-
break;
|
|
506
|
-
}
|
|
507
|
-
case "pre-tool-use": {
|
|
508
|
-
const { handlePreToolUse: handlePreToolUse2 } = await Promise.resolve().then(() => (init_pre_tool_use(), pre_tool_use_exports));
|
|
509
|
-
await handlePreToolUse2(config, input);
|
|
510
|
-
break;
|
|
511
|
-
}
|
|
512
|
-
case "post-tool-use": {
|
|
513
|
-
const { handlePostToolUse: handlePostToolUse2 } = await Promise.resolve().then(() => (init_post_tool_use(), post_tool_use_exports));
|
|
514
|
-
await handlePostToolUse2(config, input);
|
|
515
|
-
break;
|
|
516
|
-
}
|
|
517
|
-
case "stop": {
|
|
518
|
-
const { handleStop: handleStop2 } = await Promise.resolve().then(() => (init_stop(), stop_exports));
|
|
519
|
-
await handleStop2(config, input);
|
|
520
|
-
break;
|
|
521
|
-
}
|
|
522
|
-
case "prompt-submit": {
|
|
523
|
-
const { handlePromptSubmit: handlePromptSubmit2 } = await Promise.resolve().then(() => (init_prompt_submit(), prompt_submit_exports));
|
|
524
|
-
await handlePromptSubmit2(config, configPath, input);
|
|
525
|
-
break;
|
|
526
|
-
}
|
|
527
|
-
default:
|
|
528
|
-
process.exit(0);
|
|
529
|
-
}
|
|
530
|
-
}
|
|
531
|
-
run().catch(() => process.exit(0));
|
|
532
|
-
//# sourceMappingURL=hook.js.map
|
package/dist/hook.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../node_modules/.pnpm/@agentcoordinationprotocol+sdk@0.1.0/node_modules/@agentcoordinationprotocol/sdk/src/client.ts", "../node_modules/.pnpm/@agentcoordinationprotocol+sdk@0.1.0/node_modules/@agentcoordinationprotocol/sdk/src/index.ts", "../src/hooks/session-start.ts", "../src/hooks/pre-tool-use.ts", "../src/hooks/post-tool-use.ts", "../src/hooks/stop.ts", "../src/hooks/prompt-submit.ts", "../src/hook.ts"],
|
|
4
|
-
"sourcesContent": [null, null, "import { appendFileSync } from 'node:fs';\nimport { createAcpClient } from '@agentcoordinationprotocol/sdk';\nimport type { ProtocolSpec, RoleAssignment, Claim, ControlStatus } from '@agentcoordinationprotocol/sdk';\nimport type { WglConfig, HookInput } from '../types.js';\n\nexport async function handleSessionStart(config: WglConfig, configPath: string, _input: HookInput): Promise<void> {\n // Export env vars via CLAUDE_ENV_FILE\n const envFile = process.env.CLAUDE_ENV_FILE;\n if (envFile) {\n // Escape shell-special characters to prevent injection\n const esc = (v: string) => v.replace(/[\"\\\\`$!]/g, '\\\\$&');\n appendFileSync(envFile, [\n `export WGL_SERVER=\"${esc(config.server)}\"`,\n `export WGL_AGENT_ID=\"${esc(config.agentId)}\"`,\n `export WGL_NAMESPACE=\"${esc(config.namespace)}\"`,\n `export WGL_ROLE=\"${esc(config.role)}\"`,\n `export WGL_CONFIG=\"${esc(configPath)}\"`,\n ].join('\\n') + '\\n');\n }\n\n const client = createAcpClient(config);\n const context: string[] = [];\n\n try {\n // Fetch everything in parallel\n const [controlRes, protocolRes, rolesRes, claimsRes, messagesRes] = await Promise.all([\n client.getControlStatus().catch(() => null),\n client.getProtocol().catch(() => null),\n client.getRoles().catch(() => null),\n client.getClaims().catch(() => null),\n client.getMessages().catch(() => null),\n ]);\n\n // Check control status\n if (controlRes?.ok) {\n const ctrl = controlRes.data as ControlStatus;\n if (ctrl.halted) {\n context.push(`COORDINATION HALTED${ctrl.reason ? `: ${ctrl.reason}` : ''}. Do not proceed with any coordinated work.`);\n } else if (ctrl.paused) {\n context.push(`Coordination paused${ctrl.reason ? `: ${ctrl.reason}` : ''}. Proceed cautiously.`);\n }\n }\n\n // Register role\n try {\n await client.requestRole(config.role);\n } catch {\n // Non-fatal\n }\n\n // Protocol info\n if (protocolRes?.ok) {\n const p = protocolRes.data as ProtocolSpec;\n if (p.name) {\n context.push(`Protocol: ${p.name}${p.description ? ` \u2014 ${p.description}` : ''}`);\n if (p.phases?.length) {\n context.push(`Phases: ${p.phases.map(ph => ph.name).join(' \u2192 ')}`);\n }\n if (p.rules?.length) {\n context.push(`Rules:\\n${p.rules.map(r => ` - ${r}`).join('\\n')}`);\n }\n }\n }\n\n // Team\n if (rolesRes?.ok && Array.isArray(rolesRes.data)) {\n const roles = rolesRes.data as RoleAssignment[];\n if (roles.length > 0) {\n context.push(`Team: ${roles.map(r => `${r.agent} (${r.role})`).join(', ')}`);\n }\n }\n\n // Active claims\n if (claimsRes?.ok && Array.isArray(claimsRes.data)) {\n const claims = (claimsRes.data as Claim[]).filter(c => c.status === 'active');\n if (claims.length > 0) {\n const mine = claims.filter(c => c.owner === config.agentId);\n const others = claims.filter(c => c.owner !== config.agentId);\n if (mine.length > 0) {\n context.push(`Your claims: ${mine.map(c => c.resource).join(', ')}`);\n }\n if (others.length > 0) {\n context.push(`Locked by others: ${others.map(c => `${c.resource} (${c.owner})`).join(', ')}`);\n }\n }\n }\n\n // Unread messages\n if (messagesRes?.ok && Array.isArray(messagesRes.data)) {\n const msgs = messagesRes.data.filter((m: any) => m.to === config.agentId || m.to === '*');\n if (msgs.length > 0) {\n context.push(`Messages:\\n${msgs.map((m: any) => ` [${m.from}]: ${m.content}`).join('\\n')}`);\n }\n }\n } catch {\n // Server unreachable \u2014 no context, no problem\n }\n\n // Publish session start event (fire-and-forget)\n client.publishEvent('agent.session_start', {\n agentId: config.agentId,\n role: config.role,\n }).catch(() => {});\n\n // Output coordination context\n if (context.length > 0) {\n const output = {\n additionalContext: `[waggle-cli] You are agent ${config.agentId} (role: ${config.role}) coordinating via ACP.\\nServer: ${config.server} | Namespace: ${config.namespace}\\n\\n${context.join('\\n\\n')}\\n\\nFile edits are auto-claimed. Use wgl commands for manual coordination.`,\n };\n console.log(JSON.stringify(output));\n }\n}\n", "import { createAcpClient } from '@agentcoordinationprotocol/sdk';\nimport type { ControlStatus, ClaimResult } from '@agentcoordinationprotocol/sdk';\nimport type { WglConfig, HookInput, HookOutput } from '../types.js';\n\nexport async function handlePreToolUse(config: WglConfig, input: HookInput): Promise<void> {\n const client = createAcpClient(config);\n\n // Check halt status\n try {\n const controlRes = await client.getControlStatus();\n if (controlRes.ok) {\n const ctrl = controlRes.data as ControlStatus;\n if (ctrl.halted) {\n const output: HookOutput = {\n decision: 'block',\n reason: `Coordination HALTED${ctrl.reason ? `: ${ctrl.reason}` : ''}. File edits blocked.`,\n };\n console.log(JSON.stringify(output));\n return;\n }\n }\n } catch {\n // Server unreachable \u2014 allow edit\n }\n\n // Auto-claim file\n if (!config.autoClaimFiles) return;\n\n const filePath = input.tool_input?.file_path as string | undefined;\n if (!filePath) return;\n\n const resource = `file:${filePath}`;\n\n try {\n const res = await client.claim(resource, filePath);\n if (res.ok) {\n const result = res.data as ClaimResult;\n if (result.status === 'rejected') {\n const owner = result.claim?.owner || 'another agent';\n const output: HookOutput = {\n decision: 'block',\n reason: `File locked by ${owner}: ${filePath}`,\n };\n console.log(JSON.stringify(output));\n return;\n }\n // Approved \u2014 proceed silently\n }\n } catch {\n // Server unreachable \u2014 allow edit\n }\n}\n", "import { createAcpClient } from '@agentcoordinationprotocol/sdk';\nimport type { WglConfig, HookInput } from '../types.js';\n\nexport async function handlePostToolUse(config: WglConfig, input: HookInput): Promise<void> {\n const client = createAcpClient(config);\n\n const filePath = input.tool_input?.file_path as string | undefined;\n if (!filePath) return;\n\n const resource = `file:${filePath}`;\n\n // Publish discovery about file change (fire-and-forget)\n if (config.autoPublishDiscoveries) {\n const toolName = input.tool_name || 'unknown';\n client.publishDiscovery(\n `file-change:${filePath}`,\n `${config.agentId} ${toolName === 'Write' ? 'created' : 'edited'} ${filePath}`,\n 'file-change',\n ).catch(() => {});\n }\n\n // Report progress on active claim (fire-and-forget)\n client.reportProgress(resource, 0, `${input.tool_name || 'edit'} completed`).catch(() => {});\n}\n", "import { createAcpClient } from '@agentcoordinationprotocol/sdk';\nimport type { Claim, Message, HelpRequest } from '@agentcoordinationprotocol/sdk';\nimport type { WglConfig, HookInput, HookOutput } from '../types.js';\n\nexport async function handleStop(config: WglConfig, _input: HookInput): Promise<void> {\n const client = createAcpClient(config);\n\n try {\n // Check for blockers in parallel\n const [messagesRes, helpRes, claimsRes] = await Promise.all([\n client.getMessages().catch(() => null),\n client.getHelp().catch(() => null),\n client.getClaims().catch(() => null),\n ]);\n\n const blockers: string[] = [];\n\n // Check for unread messages addressed to us\n if (messagesRes?.ok && Array.isArray(messagesRes.data)) {\n const unread = (messagesRes.data as Message[]).filter(\n m => m.to === config.agentId || m.to === '*',\n );\n if (unread.length > 0) {\n blockers.push(`${unread.length} unread message(s) \u2014 check with \\`wgl status\\``);\n }\n }\n\n // Check for open help requests\n if (helpRes?.ok && Array.isArray(helpRes.data)) {\n const openHelp = (helpRes.data as HelpRequest[]).filter(h => h.status === 'open');\n if (openHelp.length > 0) {\n blockers.push(`${openHelp.length} open help request(s) need attention`);\n }\n }\n\n // Release completed claims\n if (claimsRes?.ok && Array.isArray(claimsRes.data)) {\n const mine = (claimsRes.data as Claim[]).filter(\n c => c.owner === config.agentId && c.status === 'active',\n );\n for (const claim of mine) {\n client.releaseClaim(claim.resource).catch(() => {});\n }\n }\n\n // Block if there are blockers\n if (blockers.length > 0) {\n const output: HookOutput = {\n decision: 'block',\n reason: `Cannot stop \u2014 coordination items pending:\\n${blockers.map(b => ` \u2022 ${b}`).join('\\n')}`,\n };\n console.log(JSON.stringify(output));\n return;\n }\n } catch {\n // Server unreachable \u2014 allow stop\n }\n\n // Publish session complete (fire-and-forget)\n client.publishEvent('agent.session_complete', {\n agentId: config.agentId,\n role: config.role,\n }).catch(() => {});\n}\n", "import { readFileSync, writeFileSync } from 'node:fs';\nimport { createAcpClient } from '@agentcoordinationprotocol/sdk';\nimport type { ControlStatus, IncubatorEvent } from '@agentcoordinationprotocol/sdk';\nimport type { WglConfig, HookInput } from '../types.js';\n\nexport async function handlePromptSubmit(config: WglConfig, configPath: string, _input: HookInput): Promise<void> {\n const client = createAcpClient(config);\n const context: string[] = [];\n\n try {\n // Check halt status and fetch new events in parallel\n const [controlRes, eventsRes] = await Promise.all([\n client.getControlStatus().catch(() => null),\n client.getEvents(config.lastEventCursor).catch(() => null),\n ]);\n\n // Check control status\n if (controlRes?.ok) {\n const ctrl = controlRes.data as ControlStatus;\n if (ctrl.halted) {\n context.push(`COORDINATION HALTED${ctrl.reason ? `: ${ctrl.reason}` : ''}. Do not proceed with coordinated work.`);\n } else if (ctrl.paused) {\n context.push(`Coordination paused${ctrl.reason ? `: ${ctrl.reason}` : ''}.`);\n }\n }\n\n // Summarize new events\n if (eventsRes?.ok && Array.isArray(eventsRes.data)) {\n const events = eventsRes.data as IncubatorEvent[];\n if (events.length > 0) {\n // Update cursor\n const maxId = Math.max(...events.map(e => e.id));\n config.lastEventCursor = maxId;\n try {\n writeFileSync(configPath, JSON.stringify(config, null, 2) + '\\n');\n } catch {\n // Non-fatal\n }\n\n // Summarize by type\n const byType: Record<string, number> = {};\n for (const ev of events) {\n byType[ev.type] = (byType[ev.type] || 0) + 1;\n }\n\n const summary = Object.entries(byType)\n .map(([type, count]) => `${type} (${count})`)\n .join(', ');\n\n context.push(`New events since last prompt: ${summary}`);\n\n // Show details for important events\n const important = events.filter(e =>\n e.type.startsWith('agent.') ||\n e.type.startsWith('control.') ||\n e.type.startsWith('conflict.'),\n );\n if (important.length > 0) {\n for (const ev of important.slice(-5)) {\n context.push(` [${ev.type}] ${JSON.stringify(ev.data)}`);\n }\n }\n }\n }\n } catch {\n // Server unreachable \u2014 no injection\n }\n\n // Output as plain text (UserPromptSubmit format)\n if (context.length > 0) {\n console.log(`[waggle-cli] ${context.join('\\n')}`);\n }\n}\n", "import { readFileSync } from 'node:fs';\nimport type { WglConfig, HookInput } from './types.js';\n\nconst hookName = process.argv[2];\nconst configPath = process.argv[3];\n\nif (!hookName || !configPath) process.exit(0);\n\nlet config: WglConfig;\ntry {\n config = JSON.parse(readFileSync(configPath, 'utf8'));\n} catch {\n process.exit(0);\n}\n\n// Read stdin\nlet input: HookInput;\ntry {\n const raw = readFileSync(0, 'utf8');\n input = raw ? JSON.parse(raw) : {};\n} catch {\n input = {} as HookInput;\n}\n\nasync function run(): Promise<void> {\n switch (hookName) {\n case 'session-start': {\n const { handleSessionStart } = await import('./hooks/session-start.js');\n await handleSessionStart(config, configPath, input);\n break;\n }\n case 'pre-tool-use': {\n const { handlePreToolUse } = await import('./hooks/pre-tool-use.js');\n await handlePreToolUse(config, input);\n break;\n }\n case 'post-tool-use': {\n const { handlePostToolUse } = await import('./hooks/post-tool-use.js');\n await handlePostToolUse(config, input);\n break;\n }\n case 'stop': {\n const { handleStop } = await import('./hooks/stop.js');\n await handleStop(config, input);\n break;\n }\n case 'prompt-submit': {\n const { handlePromptSubmit } = await import('./hooks/prompt-submit.js');\n await handlePromptSubmit(config, configPath, input);\n break;\n }\n default:\n process.exit(0);\n }\n}\n\nrun().catch(() => process.exit(0));\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;AAAA,SAAS,WAAW,mBAAmB;AACvC,SAAS,WAAW,oBAAoB;AAgBlC,SAAU,gBAAgBA,SAAuB;AACrD,QAAM,OAAOA,QAAO,OAAO,QAAQ,OAAO,EAAE;AAC5C,QAAM,MAAMA,QAAO,aAAa,eAAe,YAAY,KAAK,IAAIA,QAAO,SAAS;AAEpF,WAAS,MAAmB,QAAgB,MAAc,MAAc;AACtE,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,YAAM,MAAM,IAAI,IAAI,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE;AAC7C,YAAM,UAAU,IAAI,aAAa;AACjC,YAAM,QAAQ,UAAU,eAAe;AAEvC,YAAM,UAAkC;QACtC,cAAcA,QAAO;;AAEvB,UAAI;AACJ,UAAI,SAAS,QAAW;AACtB,kBAAU,KAAK,UAAU,IAAI;AAC7B,gBAAQ,cAAc,IAAI;AAC1B,gBAAQ,gBAAgB,IAAI,OAAO,WAAW,OAAO,EAAE,SAAQ;MACjE;AAEA,YAAM,MAAM,MAAM,KAAK,EAAE,QAAQ,SAAS,SAAS,QAAO,GAAI,CAAC,QAAO;AACpE,YAAI,OAAO;AACX,YAAI,GAAG,QAAQ,CAAC,UAAkB,QAAQ,KAAK;AAC/C,YAAI,GAAG,OAAO,MAAK;AACjB,cAAI;AACF,kBAAM,SAAS,OAAO,KAAK,MAAM,IAAI,IAAI,CAAA;AACzC,oBAAQ,EAAE,IAAI,IAAI,cAAe,OAAO,IAAI,aAAc,KAAK,QAAQ,IAAI,YAAa,MAAM,OAAW,CAAE;UAC7G,QAAQ;AACN,oBAAQ,EAAE,IAAI,OAAO,QAAQ,IAAI,YAAa,MAAM,CAAA,EAAO,CAAE;UAC/D;QACF,CAAC;MACH,CAAC;AAED,UAAI,GAAG,SAAS,CAAC,QAAQ,OAAO,GAAG,CAAC;AACpC,UAAI,GAAG,WAAW,MAAK;AAAG,YAAI,QAAO;AAAI,eAAO,IAAI,MAAM,SAAS,CAAC;MAAG,CAAC;AAExE,UAAI;AAAS,YAAI,MAAM,OAAO;AAC9B,UAAI,IAAG;IACT,CAAC;EACH;AAEA,SAAO;;IAEL,QAAQ,MAAM,MAAM,OAAO,SAAS;;IAGpC,kBAAkB,MAAM,MAAqB,OAAO,iBAAiB;IACrE,MAAM,CAAC,QAAiB,SACtB,MAAM,QAAQ,iBAAiB,EAAE,QAAQ,GAAG,KAAI,CAAE;IACpD,OAAO,CAAC,QAAiB,SACvB,MAAM,QAAQ,kBAAkB,EAAE,QAAQ,GAAG,KAAI,CAAE;IACrD,QAAQ,CAAC,SACP,MAAM,QAAQ,mBAAmB,QAAQ,CAAA,CAAE;;IAG7C,OAAO,CAAC,UAAkB,OAAgB,SACxC,MAAmB,QAAQ,WAAW,EAAE,UAAU,OAAO,SAAS,UAAU,GAAG,KAAI,CAAE;IACvF,cAAc,CAAC,aAAqB,MAAM,UAAU,WAAW,mBAAmB,QAAQ,CAAC,EAAE;IAC7F,WAAW,CAAC,YAAoB;AAC9B,YAAM,KAAK,UAAU,YAAY,mBAAmB,OAAO,CAAC,KAAK;AACjE,aAAO,MAAe,OAAO,UAAU,EAAE,EAAE;IAC7C;IACA,YAAY,CAAC,aACX,MAAM,OAAO,WAAW,mBAAmB,QAAQ,CAAC,EAAE;IACxD,YAAY,CAAC,YAAoB;AAC/B,YAAM,KAAK,UAAU,YAAY,mBAAmB,OAAO,CAAC,KAAK;AACjE,aAAO,MAAe,OAAO,UAAU,EAAE,EAAE;IAC7C;;IAGA,cAAc,CAAC,MAAc,SAC3B,MAAsB,QAAQ,WAAW,EAAE,MAAM,KAAI,CAAE;IACzD,WAAW,CAAC,OAAgB,SAA4B;AACtD,YAAM,SAAmB,CAAA;AACzB,UAAI,UAAU;AAAW,eAAO,KAAK,SAAS,KAAK,EAAE;AACrD,UAAI,MAAM;AAAM,eAAO,KAAK,QAAQ,mBAAmB,KAAK,IAAI,CAAC,EAAE;AACnE,YAAM,KAAK,OAAO,SAAS,IAAI,OAAO,KAAK,GAAG,CAAC,KAAK;AACpD,aAAO,MAAwB,OAAO,UAAU,EAAE,EAAE;IACtD;;IAGA,kBAAkB,CAAC,OAAe,SAAiB,aACjD,MAAiB,QAAQ,gBAAgB,EAAE,OAAO,SAAS,SAAQ,CAAE;IACvE,gBAAgB,MAAM,MAAmB,OAAO,cAAc;IAC9D,mBAAmB,CAAC,SAAgD;AAClE,YAAM,SAAmB,CAAA;AACzB,UAAI,MAAM;AAAO,eAAO,KAAK,SAAS,mBAAmB,KAAK,KAAK,CAAC,EAAE;AACtE,UAAI,MAAM;AAAU,eAAO,KAAK,YAAY,mBAAmB,KAAK,QAAQ,CAAC,EAAE;AAC/E,YAAM,KAAK,OAAO,SAAS,IAAI,OAAO,KAAK,GAAG,CAAC,KAAK;AACpD,aAAO,MAAmB,OAAO,eAAe,EAAE,EAAE;IACtD;;IAGA,aAAa,CAAC,IAAY,SAAiB,SACzC,MAAe,QAAQ,aAAa,EAAE,IAAI,SAAS,GAAG,KAAI,CAAE;IAC9D,aAAa,CAAC,SAA6B;AACzC,YAAM,KAAK,MAAM,QAAQ,UAAU,mBAAmB,KAAK,KAAK,CAAC,KAAK;AACtE,aAAO,MAAiB,OAAO,YAAY,EAAE,EAAE;IACjD;;IAGA,aAAa,CAAC,MAAc,SAC1B,MAAsB,QAAQ,kBAAkB,EAAE,MAAM,GAAG,KAAI,CAAE;IACnE,UAAU,MAAM,MAAwB,OAAO,QAAQ;;IAGvD,SAAS,MAAM,MAAqB,OAAO,OAAO;IAClD,aAAa,CAAC,SAAiB,kBAA2B,YACxD,MAAmB,QAAQ,SAAS,EAAE,SAAS,kBAAkB,QAAO,CAAE;IAC5E,WAAW,CAAC,OACV,MAAmB,QAAQ,SAAS,mBAAmB,EAAE,CAAC,QAAQ;IACpE,aAAa,CAAC,OACZ,MAAmB,QAAQ,SAAS,mBAAmB,EAAE,CAAC,UAAU;;IAGtE,gBAAgB,CAAC,OAAe,UAAkB,SAChD,MAAsB,QAAQ,aAAa,EAAE,OAAO,UAAU,KAAI,CAAE;;IAGtE,aAAa,CAAC,SAAiB;AAC7B,YAAM,KAAK,OAAO,SAAS,mBAAmB,IAAI,CAAC,KAAK;AACxD,aAAO,MAAoB,OAAO,YAAY,EAAE,EAAE;IACpD;IACA,cAAc,CAAC,aACb,MAAM,OAAO,aAAa,QAAQ;;IAGpC,UAAU,CAAC,SAAkB,aAAqB;AAChD,YAAM,SAAmB,CAAA;AACzB,UAAI;AAAS,eAAO,KAAK,WAAW,mBAAmB,OAAO,CAAC,EAAE;AACjE,UAAI;AAAU,eAAO,KAAK,YAAY,mBAAmB,QAAQ,CAAC,EAAE;AACpE,YAAM,KAAK,OAAO,SAAS,IAAI,OAAO,KAAK,GAAG,CAAC,KAAK;AACpD,aAAO,MAA+B,OAAO,SAAS,EAAE,EAAE;IAC5D;IACA,aAAa,CAAC,QACZ,MAA2D,OAAO,UAAU,mBAAmB,GAAG,CAAC,EAAE;IACvG,YAAY,CAAC,SAAkD;AAC7D,YAAM,SAAmB,CAAA;AACzB,UAAI,MAAM;AAAS,eAAO,KAAK,WAAW,mBAAmB,KAAK,OAAO,CAAC,EAAE;AAC5E,UAAI,MAAM;AAAU,eAAO,KAAK,YAAY,mBAAmB,KAAK,QAAQ,CAAC,EAAE;AAC/E,YAAM,KAAK,OAAO,SAAS,IAAI,OAAO,KAAK,GAAG,CAAC,KAAK;AACpD,aAAO,MAAgD,OAAO,SAAS,EAAE,EAAE;IAC7E;IACA,UAAU,CAAC,KAAa,OAAgB,UAAmB,UACzD,MAAM,OAAO,UAAU,mBAAmB,GAAG,CAAC,IAAI,EAAE,OAAO,UAAU,MAAK,CAAE;IAC9E,aAAa,CAAC,QACZ,MAAM,UAAU,UAAU,mBAAmB,GAAG,CAAC,EAAE;;IAGrD,cAAc,CAAC,aAAqB,aAAqB,WACvD,MAAgB,QAAQ,cAAc,EAAE,aAAa,aAAa,OAAM,CAAE;;IAG5E,sBAAsB,CAAC,MAAc,SACnC,MAA4B,QAAQ,mBAAmB,EAAE,MAAM,GAAG,KAAI,CAAE;;IAG1E,iBAAiB,CAAC,QAAgB,SAChC,MAAwB,QAAQ,uBAAuB,EAAE,QAAQ,GAAG,KAAI,CAAE;IAC5E,UAAU,CAAC,QAAgB,YACzB,MAAM,QAAQ,wBAAwB,EAAE,QAAQ,QAAO,CAAE;IAC3D,eAAe,CAAC,QAAgB,SAC9B,MAAgB,QAAQ,uBAAuB,EAAE,QAAQ,GAAG,KAAI,CAAE;IACpE,eAAe,CAAC,eACd,MAAM,QAAQ,uBAAuB,mBAAmB,UAAU,CAAC,EAAE;IACvE,iBAAiB,CAAC,QAAgB,UAChC,MAAM,QAAQ,wBAAwB,EAAE,QAAQ,MAAK,CAAE;;IAGzD,WAAW,MACT,MAAqD,OAAO,SAAS;IACvE,gBAAgB,CAAC,UACf,MAAM,QAAQ,qBAAqB,EAAE,MAAK,CAAE;IAC9C,kBAAkB,CAAC,UACjB,MAAM,UAAU,qBAAqB,mBAAmB,KAAK,CAAC,EAAE;IAClE,cAAc,CAAC,UACb,MAAM,QAAQ,mBAAmB,EAAE,MAAK,CAAE;IAC5C,gBAAgB,CAAC,UACf,MAAM,UAAU,mBAAmB,mBAAmB,KAAK,CAAC,EAAE;;IAGhE,eAAe,MAAM,MAAgB,OAAO,MAAM;IAClD,iBAAiB,CAAC,SAChB,MAAM,QAAQ,QAAQ,EAAE,KAAI,CAAE;IAChC,iBAAiB,CAAC,SAChB,MAAM,UAAU,QAAQ,mBAAmB,IAAI,CAAC,EAAE;;AAExD;AA5MA,IASM;AATN;;AASA,IAAM,UAAU;;;;;ACThB;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA,SAAS,sBAAsB;AAK/B,eAAsB,mBAAmBC,SAAmBC,aAAoB,QAAkC;AAEhH,QAAM,UAAU,QAAQ,IAAI;AAC5B,MAAI,SAAS;AAEX,UAAM,MAAM,CAAC,MAAc,EAAE,QAAQ,aAAa,MAAM;AACxD,mBAAe,SAAS;AAAA,MACtB,sBAAsB,IAAID,QAAO,MAAM,CAAC;AAAA,MACxC,wBAAwB,IAAIA,QAAO,OAAO,CAAC;AAAA,MAC3C,yBAAyB,IAAIA,QAAO,SAAS,CAAC;AAAA,MAC9C,oBAAoB,IAAIA,QAAO,IAAI,CAAC;AAAA,MACpC,sBAAsB,IAAIC,WAAU,CAAC;AAAA,IACvC,EAAE,KAAK,IAAI,IAAI,IAAI;AAAA,EACrB;AAEA,QAAM,SAAS,gBAAgBD,OAAM;AACrC,QAAM,UAAoB,CAAC;AAE3B,MAAI;AAEF,UAAM,CAAC,YAAY,aAAa,UAAU,WAAW,WAAW,IAAI,MAAM,QAAQ,IAAI;AAAA,MACpF,OAAO,iBAAiB,EAAE,MAAM,MAAM,IAAI;AAAA,MAC1C,OAAO,YAAY,EAAE,MAAM,MAAM,IAAI;AAAA,MACrC,OAAO,SAAS,EAAE,MAAM,MAAM,IAAI;AAAA,MAClC,OAAO,UAAU,EAAE,MAAM,MAAM,IAAI;AAAA,MACnC,OAAO,YAAY,EAAE,MAAM,MAAM,IAAI;AAAA,IACvC,CAAC;AAGD,QAAI,YAAY,IAAI;AAClB,YAAM,OAAO,WAAW;AACxB,UAAI,KAAK,QAAQ;AACf,gBAAQ,KAAK,sBAAsB,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,EAAE,6CAA6C;AAAA,MACvH,WAAW,KAAK,QAAQ;AACtB,gBAAQ,KAAK,sBAAsB,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,EAAE,uBAAuB;AAAA,MACjG;AAAA,IACF;AAGA,QAAI;AACF,YAAM,OAAO,YAAYA,QAAO,IAAI;AAAA,IACtC,QAAQ;AAAA,IAER;AAGA,QAAI,aAAa,IAAI;AACnB,YAAM,IAAI,YAAY;AACtB,UAAI,EAAE,MAAM;AACV,gBAAQ,KAAK,aAAa,EAAE,IAAI,GAAG,EAAE,cAAc,WAAM,EAAE,WAAW,KAAK,EAAE,EAAE;AAC/E,YAAI,EAAE,QAAQ,QAAQ;AACpB,kBAAQ,KAAK,WAAW,EAAE,OAAO,IAAI,QAAM,GAAG,IAAI,EAAE,KAAK,UAAK,CAAC,EAAE;AAAA,QACnE;AACA,YAAI,EAAE,OAAO,QAAQ;AACnB,kBAAQ,KAAK;AAAA,EAAW,EAAE,MAAM,IAAI,OAAK,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,QACnE;AAAA,MACF;AAAA,IACF;AAGA,QAAI,UAAU,MAAM,MAAM,QAAQ,SAAS,IAAI,GAAG;AAChD,YAAM,QAAQ,SAAS;AACvB,UAAI,MAAM,SAAS,GAAG;AACpB,gBAAQ,KAAK,SAAS,MAAM,IAAI,OAAK,GAAG,EAAE,KAAK,KAAK,EAAE,IAAI,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,MAC7E;AAAA,IACF;AAGA,QAAI,WAAW,MAAM,MAAM,QAAQ,UAAU,IAAI,GAAG;AAClD,YAAM,SAAU,UAAU,KAAiB,OAAO,OAAK,EAAE,WAAW,QAAQ;AAC5E,UAAI,OAAO,SAAS,GAAG;AACrB,cAAM,OAAO,OAAO,OAAO,OAAK,EAAE,UAAUA,QAAO,OAAO;AAC1D,cAAM,SAAS,OAAO,OAAO,OAAK,EAAE,UAAUA,QAAO,OAAO;AAC5D,YAAI,KAAK,SAAS,GAAG;AACnB,kBAAQ,KAAK,gBAAgB,KAAK,IAAI,OAAK,EAAE,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,QACrE;AACA,YAAI,OAAO,SAAS,GAAG;AACrB,kBAAQ,KAAK,qBAAqB,OAAO,IAAI,OAAK,GAAG,EAAE,QAAQ,KAAK,EAAE,KAAK,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,QAC9F;AAAA,MACF;AAAA,IACF;AAGA,QAAI,aAAa,MAAM,MAAM,QAAQ,YAAY,IAAI,GAAG;AACtD,YAAM,OAAO,YAAY,KAAK,OAAO,CAAC,MAAW,EAAE,OAAOA,QAAO,WAAW,EAAE,OAAO,GAAG;AACxF,UAAI,KAAK,SAAS,GAAG;AACnB,gBAAQ,KAAK;AAAA,EAAc,KAAK,IAAI,CAAC,MAAW,MAAM,EAAE,IAAI,MAAM,EAAE,OAAO,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;AAAA,MAC7F;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAER;AAGA,SAAO,aAAa,uBAAuB;AAAA,IACzC,SAASA,QAAO;AAAA,IAChB,MAAMA,QAAO;AAAA,EACf,CAAC,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AAGjB,MAAI,QAAQ,SAAS,GAAG;AACtB,UAAM,SAAS;AAAA,MACb,mBAAmB,8BAA8BA,QAAO,OAAO,WAAWA,QAAO,IAAI;AAAA,UAAoCA,QAAO,MAAM,iBAAiBA,QAAO,SAAS;AAAA;AAAA,EAAO,QAAQ,KAAK,MAAM,CAAC;AAAA;AAAA;AAAA,IACpM;AACA,YAAQ,IAAI,KAAK,UAAU,MAAM,CAAC;AAAA,EACpC;AACF;AA/GA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACDA;AAAA;AAAA;AAAA;AAIA,eAAsB,iBAAiBE,SAAmBC,QAAiC;AACzF,QAAM,SAAS,gBAAgBD,OAAM;AAGrC,MAAI;AACF,UAAM,aAAa,MAAM,OAAO,iBAAiB;AACjD,QAAI,WAAW,IAAI;AACjB,YAAM,OAAO,WAAW;AACxB,UAAI,KAAK,QAAQ;AACf,cAAM,SAAqB;AAAA,UACzB,UAAU;AAAA,UACV,QAAQ,sBAAsB,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,EAAE;AAAA,QACrE;AACA,gBAAQ,IAAI,KAAK,UAAU,MAAM,CAAC;AAClC;AAAA,MACF;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAER;AAGA,MAAI,CAACA,QAAO,eAAgB;AAE5B,QAAM,WAAWC,OAAM,YAAY;AACnC,MAAI,CAAC,SAAU;AAEf,QAAM,WAAW,QAAQ,QAAQ;AAEjC,MAAI;AACF,UAAM,MAAM,MAAM,OAAO,MAAM,UAAU,QAAQ;AACjD,QAAI,IAAI,IAAI;AACV,YAAM,SAAS,IAAI;AACnB,UAAI,OAAO,WAAW,YAAY;AAChC,cAAM,QAAQ,OAAO,OAAO,SAAS;AACrC,cAAM,SAAqB;AAAA,UACzB,UAAU;AAAA,UACV,QAAQ,kBAAkB,KAAK,KAAK,QAAQ;AAAA,QAC9C;AACA,gBAAQ,IAAI,KAAK,UAAU,MAAM,CAAC;AAClC;AAAA,MACF;AAAA,IAEF;AAAA,EACF,QAAQ;AAAA,EAER;AACF;AAnDA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAGA,eAAsB,kBAAkBC,SAAmBC,QAAiC;AAC1F,QAAM,SAAS,gBAAgBD,OAAM;AAErC,QAAM,WAAWC,OAAM,YAAY;AACnC,MAAI,CAAC,SAAU;AAEf,QAAM,WAAW,QAAQ,QAAQ;AAGjC,MAAID,QAAO,wBAAwB;AACjC,UAAM,WAAWC,OAAM,aAAa;AACpC,WAAO;AAAA,MACL,eAAe,QAAQ;AAAA,MACvB,GAAGD,QAAO,OAAO,IAAI,aAAa,UAAU,YAAY,QAAQ,IAAI,QAAQ;AAAA,MAC5E;AAAA,IACF,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EAClB;AAGA,SAAO,eAAe,UAAU,GAAG,GAAGC,OAAM,aAAa,MAAM,YAAY,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AAC7F;AAvBA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAIA,eAAsB,WAAWC,SAAmB,QAAkC;AACpF,QAAM,SAAS,gBAAgBA,OAAM;AAErC,MAAI;AAEF,UAAM,CAAC,aAAa,SAAS,SAAS,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC1D,OAAO,YAAY,EAAE,MAAM,MAAM,IAAI;AAAA,MACrC,OAAO,QAAQ,EAAE,MAAM,MAAM,IAAI;AAAA,MACjC,OAAO,UAAU,EAAE,MAAM,MAAM,IAAI;AAAA,IACrC,CAAC;AAED,UAAM,WAAqB,CAAC;AAG5B,QAAI,aAAa,MAAM,MAAM,QAAQ,YAAY,IAAI,GAAG;AACtD,YAAM,SAAU,YAAY,KAAmB;AAAA,QAC7C,OAAK,EAAE,OAAOA,QAAO,WAAW,EAAE,OAAO;AAAA,MAC3C;AACA,UAAI,OAAO,SAAS,GAAG;AACrB,iBAAS,KAAK,GAAG,OAAO,MAAM,qDAAgD;AAAA,MAChF;AAAA,IACF;AAGA,QAAI,SAAS,MAAM,MAAM,QAAQ,QAAQ,IAAI,GAAG;AAC9C,YAAM,WAAY,QAAQ,KAAuB,OAAO,OAAK,EAAE,WAAW,MAAM;AAChF,UAAI,SAAS,SAAS,GAAG;AACvB,iBAAS,KAAK,GAAG,SAAS,MAAM,sCAAsC;AAAA,MACxE;AAAA,IACF;AAGA,QAAI,WAAW,MAAM,MAAM,QAAQ,UAAU,IAAI,GAAG;AAClD,YAAM,OAAQ,UAAU,KAAiB;AAAA,QACvC,OAAK,EAAE,UAAUA,QAAO,WAAW,EAAE,WAAW;AAAA,MAClD;AACA,iBAAW,SAAS,MAAM;AACxB,eAAO,aAAa,MAAM,QAAQ,EAAE,MAAM,MAAM;AAAA,QAAC,CAAC;AAAA,MACpD;AAAA,IACF;AAGA,QAAI,SAAS,SAAS,GAAG;AACvB,YAAM,SAAqB;AAAA,QACzB,UAAU;AAAA,QACV,QAAQ;AAAA,EAA8C,SAAS,IAAI,OAAK,YAAO,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC;AAAA,MAChG;AACA,cAAQ,IAAI,KAAK,UAAU,MAAM,CAAC;AAClC;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAER;AAGA,SAAO,aAAa,0BAA0B;AAAA,IAC5C,SAASA,QAAO;AAAA,IAChB,MAAMA,QAAO;AAAA,EACf,CAAC,EAAE,MAAM,MAAM;AAAA,EAAC,CAAC;AACnB;AA/DA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA,SAAuB,qBAAqB;AAK5C,eAAsB,mBAAmBC,SAAmBC,aAAoB,QAAkC;AAChH,QAAM,SAAS,gBAAgBD,OAAM;AACrC,QAAM,UAAoB,CAAC;AAE3B,MAAI;AAEF,UAAM,CAAC,YAAY,SAAS,IAAI,MAAM,QAAQ,IAAI;AAAA,MAChD,OAAO,iBAAiB,EAAE,MAAM,MAAM,IAAI;AAAA,MAC1C,OAAO,UAAUA,QAAO,eAAe,EAAE,MAAM,MAAM,IAAI;AAAA,IAC3D,CAAC;AAGD,QAAI,YAAY,IAAI;AAClB,YAAM,OAAO,WAAW;AACxB,UAAI,KAAK,QAAQ;AACf,gBAAQ,KAAK,sBAAsB,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,EAAE,yCAAyC;AAAA,MACnH,WAAW,KAAK,QAAQ;AACtB,gBAAQ,KAAK,sBAAsB,KAAK,SAAS,KAAK,KAAK,MAAM,KAAK,EAAE,GAAG;AAAA,MAC7E;AAAA,IACF;AAGA,QAAI,WAAW,MAAM,MAAM,QAAQ,UAAU,IAAI,GAAG;AAClD,YAAM,SAAS,UAAU;AACzB,UAAI,OAAO,SAAS,GAAG;AAErB,cAAM,QAAQ,KAAK,IAAI,GAAG,OAAO,IAAI,OAAK,EAAE,EAAE,CAAC;AAC/C,QAAAA,QAAO,kBAAkB;AACzB,YAAI;AACF,wBAAcC,aAAY,KAAK,UAAUD,SAAQ,MAAM,CAAC,IAAI,IAAI;AAAA,QAClE,QAAQ;AAAA,QAER;AAGA,cAAM,SAAiC,CAAC;AACxC,mBAAW,MAAM,QAAQ;AACvB,iBAAO,GAAG,IAAI,KAAK,OAAO,GAAG,IAAI,KAAK,KAAK;AAAA,QAC7C;AAEA,cAAM,UAAU,OAAO,QAAQ,MAAM,EAClC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,GAAG,IAAI,KAAK,KAAK,GAAG,EAC3C,KAAK,IAAI;AAEZ,gBAAQ,KAAK,iCAAiC,OAAO,EAAE;AAGvD,cAAM,YAAY,OAAO;AAAA,UAAO,OAC9B,EAAE,KAAK,WAAW,QAAQ,KAC1B,EAAE,KAAK,WAAW,UAAU,KAC5B,EAAE,KAAK,WAAW,WAAW;AAAA,QAC/B;AACA,YAAI,UAAU,SAAS,GAAG;AACxB,qBAAW,MAAM,UAAU,MAAM,EAAE,GAAG;AACpC,oBAAQ,KAAK,MAAM,GAAG,IAAI,KAAK,KAAK,UAAU,GAAG,IAAI,CAAC,EAAE;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF,QAAQ;AAAA,EAER;AAGA,MAAI,QAAQ,SAAS,GAAG;AACtB,YAAQ,IAAI,gBAAgB,QAAQ,KAAK,IAAI,CAAC,EAAE;AAAA,EAClD;AACF;AAxEA;AAAA;AAAA;AACA;AAAA;AAAA;;;ACDA,SAAS,gBAAAE,qBAAoB;AAG7B,IAAM,WAAW,QAAQ,KAAK,CAAC;AAC/B,IAAM,aAAa,QAAQ,KAAK,CAAC;AAEjC,IAAI,CAAC,YAAY,CAAC,WAAY,SAAQ,KAAK,CAAC;AAE5C,IAAI;AACJ,IAAI;AACF,WAAS,KAAK,MAAMA,cAAa,YAAY,MAAM,CAAC;AACtD,QAAQ;AACN,UAAQ,KAAK,CAAC;AAChB;AAGA,IAAI;AACJ,IAAI;AACF,QAAM,MAAMA,cAAa,GAAG,MAAM;AAClC,UAAQ,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AACnC,QAAQ;AACN,UAAQ,CAAC;AACX;AAEA,eAAe,MAAqB;AAClC,UAAQ,UAAU;AAAA,IAChB,KAAK,iBAAiB;AACpB,YAAM,EAAE,oBAAAC,oBAAmB,IAAI,MAAM;AACrC,YAAMA,oBAAmB,QAAQ,YAAY,KAAK;AAClD;AAAA,IACF;AAAA,IACA,KAAK,gBAAgB;AACnB,YAAM,EAAE,kBAAAC,kBAAiB,IAAI,MAAM;AACnC,YAAMA,kBAAiB,QAAQ,KAAK;AACpC;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,YAAM,EAAE,mBAAAC,mBAAkB,IAAI,MAAM;AACpC,YAAMA,mBAAkB,QAAQ,KAAK;AACrC;AAAA,IACF;AAAA,IACA,KAAK,QAAQ;AACX,YAAM,EAAE,YAAAC,YAAW,IAAI,MAAM;AAC7B,YAAMA,YAAW,QAAQ,KAAK;AAC9B;AAAA,IACF;AAAA,IACA,KAAK,iBAAiB;AACpB,YAAM,EAAE,oBAAAC,oBAAmB,IAAI,MAAM;AACrC,YAAMA,oBAAmB,QAAQ,YAAY,KAAK;AAClD;AAAA,IACF;AAAA,IACA;AACE,cAAQ,KAAK,CAAC;AAAA,EAClB;AACF;AAEA,IAAI,EAAE,MAAM,MAAM,QAAQ,KAAK,CAAC,CAAC;",
|
|
6
|
-
"names": ["config", "config", "configPath", "config", "input", "config", "input", "config", "config", "configPath", "readFileSync", "handleSessionStart", "handlePreToolUse", "handlePostToolUse", "handleStop", "handlePromptSubmit"]
|
|
7
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { createAcpClient } from '@agentcoordinationprotocol/sdk';
|
|
2
|
-
export async function handlePostToolUse(config, input) {
|
|
3
|
-
const client = createAcpClient(config);
|
|
4
|
-
const filePath = input.tool_input?.file_path;
|
|
5
|
-
if (!filePath)
|
|
6
|
-
return;
|
|
7
|
-
const resource = `file:${filePath}`;
|
|
8
|
-
// Publish discovery about file change (fire-and-forget)
|
|
9
|
-
if (config.autoPublishDiscoveries) {
|
|
10
|
-
const toolName = input.tool_name || 'unknown';
|
|
11
|
-
client.publishDiscovery(`file-change:${filePath}`, `${config.agentId} ${toolName === 'Write' ? 'created' : 'edited'} ${filePath}`, 'file-change').catch(() => { });
|
|
12
|
-
}
|
|
13
|
-
// Report progress on active claim (fire-and-forget)
|
|
14
|
-
client.reportProgress(resource, 0, `${input.tool_name || 'edit'} completed`).catch(() => { });
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=post-tool-use.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"post-tool-use.js","sourceRoot":"","sources":["../../src/hooks/post-tool-use.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGjE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAiB,EAAE,KAAgB;IACzE,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,EAAE,SAA+B,CAAC;IACnE,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,MAAM,QAAQ,GAAG,QAAQ,QAAQ,EAAE,CAAC;IAEpC,wDAAwD;IACxD,IAAI,MAAM,CAAC,sBAAsB,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC;QAC9C,MAAM,CAAC,gBAAgB,CACrB,eAAe,QAAQ,EAAE,EACzB,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,IAAI,QAAQ,EAAE,EAC9E,aAAa,CACd,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,oDAAoD;IACpD,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AAC/F,CAAC"}
|