@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 CHANGED
@@ -1,12 +1,126 @@
1
1
  # Changelog
2
- ## [0.0.96] - 2026-07-21
2
+
3
+ ## [0.1.0] - 2026-08-09
3
4
 
4
5
  ### Changed
6
+ - Released with exact 0.1.0 graph.
5
7
 
6
- - Released with exact 0.0.96 graph.
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
- ## Unreleased
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 || !card.supportedInterfaces.every((item) => item.protocolBinding === "JSONRPC" && item.protocolVersion === "1.0" && isHttpsUrl(item.url)))
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() || !skill.name.trim() || !skill.description.trim() || ids.has(skill.id) || skill.tags.length > 64 || [skill.id, skill.name, skill.description, ...skill.tags].some((value) => Buffer.byteLength(value) > 16 * 1024))
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" || typeof record.typ !== "string" || typeof record.kid !== "string" || typeof record.iat !== "string" || typeof record.exp !== "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).filter((key) => record[key] !== undefined).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
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
  }