@arnilo/prism-supervisor 0.0.96 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +117 -4
- package/README.md +2 -2
- package/dist/a2a-card.js +19 -7
- package/dist/a2a-client.js +345 -65
- package/dist/a2a-event-source.d.ts +42 -0
- package/dist/a2a-event-source.js +40 -0
- package/dist/a2a-parts.js +109 -19
- package/dist/a2a-push.js +10 -2
- package/dist/a2a-server.js +239 -88
- package/dist/a2a-types.d.ts +12 -1
- package/dist/errors.js +12 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/limits.js +4 -1
- package/dist/supervisor.js +180 -26
- package/dist/types.d.ts +23 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,126 @@
|
|
|
1
1
|
# Changelog
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
## [0.1.0] - 2026-08-09
|
|
3
4
|
|
|
4
5
|
### Changed
|
|
6
|
+
- Released with exact 0.1.0 graph.
|
|
5
7
|
|
|
6
|
-
|
|
8
|
+
## [0.0.28] - 2026-08-08
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Released with exact 0.0.28 graph.
|
|
12
|
+
|
|
13
|
+
## [0.0.27] - 2026-08-07
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Released with exact 0.0.27 graph.
|
|
17
|
+
|
|
18
|
+
## [0.0.26] - 2026-08-06
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Released with exact 0.0.26 graph.
|
|
22
|
+
|
|
23
|
+
## [0.0.25] - 2026-08-06
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- Durable child approvals: `checkpoints` + `definitionRevision` on supervisor; `resumeNestedRun` routes hashed attributed decisions without widening child permission.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- Released with exact 0.0.25 graph.
|
|
30
|
+
|
|
31
|
+
See [migration guide](../../docs/migration.md) for the 0.0.24 → 0.0.25 notes.
|
|
32
|
+
|
|
33
|
+
## [0.0.24] - 2026-08-04
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
- Durable `AgentEventSource` (memory + PostgreSQL LISTEN/NOTIFY), recoverable `ToolEffectStore`, and AG-UI MCP/MCP Apps/A2A fronting for Phase 7.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- Publishable graph remains **47** manifests at **0.0.24**; peers and lockfile move together.
|
|
40
|
+
|
|
41
|
+
See [migration guide](../../docs/migration.md) for the 0.0.23 → 0.0.24 notes.
|
|
42
|
+
|
|
43
|
+
## [0.0.23] - 2026-08-03
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
- Released with exact 0.0.23 graph.
|
|
47
|
+
|
|
48
|
+
## [0.0.22] - 2026-07-31
|
|
49
|
+
|
|
50
|
+
### Changed
|
|
51
|
+
- Released with exact 0.0.22 graph.
|
|
52
|
+
|
|
53
|
+
## [0.0.21] - 2026-07-31
|
|
54
|
+
|
|
55
|
+
### Changed
|
|
56
|
+
- Released with exact 0.0.21 graph.
|
|
57
|
+
|
|
58
|
+
## [0.0.20] - 2026-07-31
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
- Released with exact 0.0.20 graph.
|
|
62
|
+
|
|
63
|
+
## [0.0.19] - 2026-07-30
|
|
64
|
+
|
|
65
|
+
### Changed
|
|
66
|
+
- Released with exact 0.0.19 graph.
|
|
67
|
+
|
|
68
|
+
## [0.0.18] - 2026-07-30
|
|
7
69
|
|
|
70
|
+
### Changed
|
|
71
|
+
- Released with exact 0.0.18 graph.
|
|
72
|
+
|
|
73
|
+
## [0.0.17] - 2026-07-29
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
- Released with exact 0.0.17 graph.
|
|
77
|
+
|
|
78
|
+
## [0.0.16] - 2026-07-26
|
|
79
|
+
|
|
80
|
+
### Changed
|
|
81
|
+
- Released with exact 0.0.16 graph.
|
|
82
|
+
|
|
83
|
+
## [0.0.15] - 2026-07-26
|
|
84
|
+
|
|
85
|
+
### Changed
|
|
86
|
+
|
|
87
|
+
- Released with exact 0.0.15 graph.
|
|
88
|
+
|
|
89
|
+
## [0.0.14] - 2026-07-26
|
|
90
|
+
|
|
91
|
+
### Changed
|
|
92
|
+
|
|
93
|
+
- Released with exact 0.0.14 graph.
|
|
94
|
+
|
|
95
|
+
## [0.0.13] - 2026-07-24
|
|
96
|
+
|
|
97
|
+
### Changed
|
|
98
|
+
|
|
99
|
+
- Released with exact 0.0.13 graph.
|
|
8
100
|
|
|
9
|
-
##
|
|
101
|
+
## [0.0.12] - 2026-07-22
|
|
102
|
+
|
|
103
|
+
### Changed
|
|
104
|
+
|
|
105
|
+
- Released with exact 0.0.12 graph.
|
|
106
|
+
|
|
107
|
+
## [0.0.11] - 2026-07-22
|
|
108
|
+
|
|
109
|
+
### Changed
|
|
110
|
+
|
|
111
|
+
- Released with exact 0.0.11 graph.
|
|
112
|
+
|
|
113
|
+
## [0.0.10] - 2026-07-21
|
|
114
|
+
|
|
115
|
+
### Changed
|
|
116
|
+
|
|
117
|
+
- Released with exact 0.0.10 graph.
|
|
118
|
+
|
|
119
|
+
## [0.0.96] - 2026-07-21
|
|
120
|
+
|
|
121
|
+
### Changed
|
|
122
|
+
|
|
123
|
+
- Released with exact 0.0.96 graph.
|
|
10
124
|
|
|
11
125
|
## [0.0.9] - 2026-07-21
|
|
12
126
|
|
|
@@ -30,7 +144,6 @@
|
|
|
30
144
|
|
|
31
145
|
- Added optional bounded child delegation and A2A 1.0 card/server/client interoperability.
|
|
32
146
|
|
|
33
|
-
|
|
34
147
|
## [0.0.4] - 2026-07-14
|
|
35
148
|
|
|
36
149
|
- Bounded explicit local child delegation with narrowing-only policy composition, derived memory scope IDs, hooks, nested delegation, cancellation, and event subscription.
|
package/README.md
CHANGED
|
@@ -26,6 +26,6 @@ const supervisor = createSupervisor({
|
|
|
26
26
|
console.log((await supervisor.delegate({ childId: "research", input: "Check sources" })).text);
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
Also exports bounded A2A 1.0 cards, handler/client, rich one-of parts, host-owned `A2ATaskLifecycle`, reconnect subscriptions, and push-config CRUD. Direct text invocation remains compatible; durable get/list/cancel/subscribe and rich raw/data/URL parts require explicit adapters/policy. URL parts are validated but never fetched. Push persistence/network/credentials and exact-owner checks remain host-owned; explicit `deliverA2APushEvent()` only bounds attempts/time and forwards stable event IDs for host idempotency. Returned configs omit secrets. JSON-RPC/HTTPS is the only binding.
|
|
29
|
+
Also exports bounded A2A 1.0 cards, handler/client, rich one-of parts, `client.streamMessage()` for verified task/message stream records, host-owned `A2ATaskLifecycle`, `createA2AAgentEventSource()` for shared durable run→task subscriptions, reconnect subscriptions, and push-config CRUD. Direct text invocation remains compatible; durable get/list/cancel/subscribe and rich raw/data/URL parts require explicit adapters/policy. URL parts are validated but never fetched. Push persistence/network/credentials and exact-owner checks remain host-owned; explicit `deliverA2APushEvent()` only bounds attempts/time and forwards stable event IDs for host idempotency. Returned configs omit secrets. JSON-RPC/HTTPS is the only binding.
|
|
30
30
|
|
|
31
|
-
See [Supervisors](../../docs/supervisors.md) and [A2A interoperability](../../docs/a2a.md).
|
|
31
|
+
Pass `checkpoints` + `definitionRevision` for durable child approvals (`resumeNestedRun` routes hashed attributed decisions without widening permission). See [Supervisors](../../docs/supervisors.md) and [A2A interoperability](../../docs/a2a.md).
|
package/dist/a2a-card.js
CHANGED
|
@@ -44,9 +44,7 @@ export async function verifyA2AAgentCard(card, options) {
|
|
|
44
44
|
break;
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
|
-
catch {
|
|
48
|
-
continue;
|
|
49
|
-
}
|
|
47
|
+
catch { }
|
|
50
48
|
}
|
|
51
49
|
if (!matched)
|
|
52
50
|
throw new A2AError("Agent card signature is invalid or expired", 403, "ERR_PRISM_A2A_CARD_SIGNATURE");
|
|
@@ -71,13 +69,19 @@ function validateCard(card) {
|
|
|
71
69
|
throw new A2AError("Agent card exceeds collection/byte limits", 400, "ERR_PRISM_A2A_CARD");
|
|
72
70
|
if (!card.name?.trim() || !card.description?.trim() || !card.version?.trim())
|
|
73
71
|
throw new A2AError("Agent card identity is incomplete", 400, "ERR_PRISM_A2A_CARD");
|
|
74
|
-
if (!card.supportedInterfaces.length ||
|
|
72
|
+
if (!card.supportedInterfaces.length ||
|
|
73
|
+
!card.supportedInterfaces.every((item) => item.protocolBinding === "JSONRPC" && item.protocolVersion === "1.0" && isHttpsUrl(item.url)))
|
|
75
74
|
throw new A2AError("Agent card requires an HTTPS JSONRPC 1.0 interface", 400, "ERR_PRISM_A2A_CARD");
|
|
76
75
|
if (!card.defaultInputModes.includes("text/plain") || !card.defaultOutputModes.includes("text/plain"))
|
|
77
76
|
throw new A2AError("Agent card must support text/plain", 400, "ERR_PRISM_A2A_CARD");
|
|
78
77
|
const ids = new Set();
|
|
79
78
|
for (const skill of card.skills) {
|
|
80
|
-
if (!skill.id.trim() ||
|
|
79
|
+
if (!skill.id.trim() ||
|
|
80
|
+
!skill.name.trim() ||
|
|
81
|
+
!skill.description.trim() ||
|
|
82
|
+
ids.has(skill.id) ||
|
|
83
|
+
skill.tags.length > 64 ||
|
|
84
|
+
[skill.id, skill.name, skill.description, ...skill.tags].some((value) => Buffer.byteLength(value) > 16 * 1024))
|
|
81
85
|
throw new A2AError("Agent card skill is invalid", 400, "ERR_PRISM_A2A_CARD");
|
|
82
86
|
ids.add(skill.id);
|
|
83
87
|
}
|
|
@@ -87,7 +91,11 @@ function parseProtected(value) {
|
|
|
87
91
|
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
|
|
88
92
|
throw new Error("invalid protected header");
|
|
89
93
|
const record = parsed;
|
|
90
|
-
if (typeof record.alg !== "string" ||
|
|
94
|
+
if (typeof record.alg !== "string" ||
|
|
95
|
+
typeof record.typ !== "string" ||
|
|
96
|
+
typeof record.kid !== "string" ||
|
|
97
|
+
typeof record.iat !== "string" ||
|
|
98
|
+
typeof record.exp !== "string")
|
|
91
99
|
throw new Error("invalid protected header");
|
|
92
100
|
return { alg: record.alg, typ: record.typ, kid: record.kid, iat: record.iat, exp: record.exp };
|
|
93
101
|
}
|
|
@@ -103,7 +111,11 @@ function canonicalJson(value) {
|
|
|
103
111
|
return `[${value.map(canonicalJson).join(",")}]`;
|
|
104
112
|
if (value && typeof value === "object") {
|
|
105
113
|
const record = value;
|
|
106
|
-
return `{${Object.keys(record)
|
|
114
|
+
return `{${Object.keys(record)
|
|
115
|
+
.filter((key) => record[key] !== undefined)
|
|
116
|
+
.sort()
|
|
117
|
+
.map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`)
|
|
118
|
+
.join(",")}}`;
|
|
107
119
|
}
|
|
108
120
|
throw new A2AError("Agent card is not canonical JSON", 400, "ERR_PRISM_A2A_CARD");
|
|
109
121
|
}
|