@hydra-acp/approver 0.1.2 → 0.1.4
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 +1 -1
- package/dist/bridge.js +16 -6
- package/dist/bridge.js.map +1 -1
- package/dist/permission.js +3 -3
- package/dist/permission.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -206,7 +206,7 @@ If `approver.config.js` doesn't exist, the approver defaults to **abstain on eve
|
|
|
206
206
|
|
|
207
207
|
## How it works
|
|
208
208
|
|
|
209
|
-
The hydra-acp daemon broadcasts each `session/request_permission` to every attached client simultaneously and resolves the original agent request on the first response (see `hydra-acp/src/core/session.ts` `handlePermissionRequest`). Losers receive a `session/permission_resolved`
|
|
209
|
+
The hydra-acp daemon broadcasts each `session/request_permission` to every attached client simultaneously and resolves the original agent request on the first response (see `hydra-acp/src/core/session.ts` `handlePermissionRequest`). Losers receive a `session/update` with `sessionUpdate: "permission_resolved"` (per RFD #533) carrying the winning outcome.
|
|
210
210
|
|
|
211
211
|
The approver attaches as one more client. When the rule fn returns an `optionId`, it replies immediately and wins. When it abstains, it stashes the JSON-RPC `respond` callback keyed by `toolCallId`; when `permission_resolved` arrives for that id, it replies with `{ outcome: { outcome: "cancelled" } }` to close out its own pending promise (no side effect — the daemon already settled the original request).
|
|
212
212
|
|
package/dist/bridge.js
CHANGED
|
@@ -4,7 +4,8 @@ import { logger } from "./util/log.js";
|
|
|
4
4
|
const log = logger("bridge");
|
|
5
5
|
// One bridge per discovered session. Opens a WS, attaches as a
|
|
6
6
|
// controller, hooks session/request_permission requests + the
|
|
7
|
-
// session/permission_resolved notification through
|
|
7
|
+
// session/update permission_resolved notification (RFD #533) through
|
|
8
|
+
// PermissionRouter.
|
|
8
9
|
//
|
|
9
10
|
// `getRule` is a thunk rather than a baked-in value so SIGHUP reloads
|
|
10
11
|
// (which mutate the rule on the entry point's loader) are picked up
|
|
@@ -49,9 +50,10 @@ export class ApproverBridge {
|
|
|
49
50
|
}
|
|
50
51
|
onRequest(r) {
|
|
51
52
|
if (r.method !== "session/request_permission") {
|
|
52
|
-
//
|
|
53
|
-
//
|
|
54
|
-
|
|
53
|
+
// hydra-acp broadcasts agent→client requests to every attached
|
|
54
|
+
// client and resolves on the first response. Any client that
|
|
55
|
+
// isn't the intended responder must stay silent — replying
|
|
56
|
+
// -32601 would race the real client. Just log and drop.
|
|
55
57
|
return;
|
|
56
58
|
}
|
|
57
59
|
const params = (r.params ?? {});
|
|
@@ -60,11 +62,19 @@ export class ApproverBridge {
|
|
|
60
62
|
});
|
|
61
63
|
}
|
|
62
64
|
onNotification(n) {
|
|
63
|
-
if (n.method !== "session/
|
|
65
|
+
if (n.method !== "session/update") {
|
|
64
66
|
return;
|
|
65
67
|
}
|
|
66
68
|
const params = (n.params ?? {});
|
|
67
|
-
|
|
69
|
+
const update = params.update;
|
|
70
|
+
if (!update || update.sessionUpdate !== "permission_resolved") {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const toolCallId = typeof update.toolCallId === "string" ? update.toolCallId : undefined;
|
|
74
|
+
if (!toolCallId) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
this.router.onPermissionResolved({ toolCallId });
|
|
68
78
|
}
|
|
69
79
|
}
|
|
70
80
|
//# sourceMappingURL=bridge.js.map
|
package/dist/bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
|
package/dist/permission.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Per-bridge router: decodes session/request_permission, calls the user
|
|
2
2
|
// rule fn, and either responds immediately (rule returned an optionId)
|
|
3
|
-
// or stashes the responder until
|
|
4
|
-
//
|
|
3
|
+
// or stashes the responder until the daemon broadcasts a
|
|
4
|
+
// session/update permission_resolved (RFD #533).
|
|
5
5
|
//
|
|
6
6
|
// Rules can change at runtime via setRule (SIGHUP-driven reload from
|
|
7
7
|
// the entry point). Pending responders are unaffected by a reload —
|
|
@@ -48,7 +48,7 @@ export class PermissionRouter {
|
|
|
48
48
|
// promise (if any) with a cancelled outcome so the JSON-RPC layer
|
|
49
49
|
// doesn't leak a pending request on the daemon side.
|
|
50
50
|
onPermissionResolved(params) {
|
|
51
|
-
const toolCallId = params
|
|
51
|
+
const { toolCallId } = params;
|
|
52
52
|
if (!toolCallId) {
|
|
53
53
|
return;
|
|
54
54
|
}
|
package/dist/permission.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../src/permission.ts"],"names":[],"mappings":"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"}
|