@powerhousedao/switchboard 6.2.2-dev.8 → 6.2.2-dev.80
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/.tsbuild/test/attachment-reference-read-model.test.d.ts +2 -0
- package/.tsbuild/test/attachment-reference-read-model.test.d.ts.map +1 -0
- package/.tsbuild/test/attachments/download-target.test.d.ts +2 -0
- package/.tsbuild/test/attachments/download-target.test.d.ts.map +1 -0
- package/.tsbuild/test/reactor-feature-flags.test.d.ts +2 -0
- package/.tsbuild/test/reactor-feature-flags.test.d.ts.map +1 -0
- package/.tsbuild/tsconfig.tsbuildinfo +1 -1
- package/Auth.md +85 -1
- package/CHANGELOG.md +495 -0
- package/README.md +37 -0
- package/dist/index.mjs +1 -1
- package/dist/{server-Cgud_ONM.mjs → server-CQKVIxsA.mjs} +323 -40
- package/dist/server-CQKVIxsA.mjs.map +1 -0
- package/dist/server.d.mts +9 -5
- package/dist/server.d.mts.map +1 -1
- package/dist/server.mjs +3 -3
- package/package.json +14 -13
- package/test/attachment-reference-read-model.test.ts +425 -0
- package/test/attachments/auth.test.ts +138 -8
- package/test/attachments/download-target.test.ts +450 -0
- package/test/attachments/index.test.ts +37 -2
- package/test/attachments/routes-integration.test.ts +98 -1
- package/test/reactor-feature-flags.test.ts +61 -0
- package/tsconfig.json +3 -0
- package/dist/server-Cgud_ONM.mjs.map +0 -1
package/Auth.md
CHANGED
|
@@ -112,7 +112,7 @@ interface VerifiableCredential {
|
|
|
112
112
|
1. **Token Decoding**: Extract credential information from JWT
|
|
113
113
|
2. **Credential Validation**: Verify against W3C standards
|
|
114
114
|
3. **Issuer Verification**: Check credential issuer authenticity
|
|
115
|
-
4. **
|
|
115
|
+
4. **Credential Existence Check**: Validate credential still exists and is valid — against a remote Renown/Switchboard or this switchboard's own read model (see [Which Renown Instance Is Used](#which-renown-instance-is-used))
|
|
116
116
|
5. **User Extraction**: Create user object from verified credentials
|
|
117
117
|
|
|
118
118
|
### 5. **Authorization**
|
|
@@ -173,6 +173,32 @@ export AUTH_ENABLED=true
|
|
|
173
173
|
export ADMINS="0x111,0x222,0x333"
|
|
174
174
|
```
|
|
175
175
|
|
|
176
|
+
`AUTH_ENABLED` does two things: it selects the authorization policy
|
|
177
|
+
(`ADMIN_ONLY` instead of `OPEN`) **and** it makes the middleware verify the
|
|
178
|
+
bearer so `ctx.user` is populated. `RESOLVE_CALLER_IDENTITY` separates the
|
|
179
|
+
second from the first:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
# Read the bearer and populate ctx.user, whatever the policy is
|
|
183
|
+
export RESOLVE_CALLER_IDENTITY=true
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
| | `AUTH_ENABLED` unset | `AUTH_ENABLED=true` |
|
|
187
|
+
| -------------------------------- | -------------------------- | ------------------------------- |
|
|
188
|
+
| `RESOLVE_CALLER_IDENTITY` unset | no user, `OPEN` | user resolved, `ADMIN_ONLY` |
|
|
189
|
+
| `RESOLVE_CALLER_IDENTITY=true` | **user resolved, `OPEN`** | user resolved, `ADMIN_ONLY` |
|
|
190
|
+
|
|
191
|
+
It defaults to whatever `AUTH_ENABLED` is, so a deployment that never sets it
|
|
192
|
+
behaves exactly as before. The bold cell is the combination `AUTH_ENABLED`
|
|
193
|
+
alone cannot express, and the one a custom subgraph needs when it does its own
|
|
194
|
+
authorization: its resolvers learn who is calling without every non-admin
|
|
195
|
+
being locked out of switchboard.
|
|
196
|
+
|
|
197
|
+
It **resolves** an identity and enforces nothing — a request with no token is
|
|
198
|
+
still admitted, with no user. Verification is otherwise identical to
|
|
199
|
+
`AUTH_ENABLED=true`, Renown credential check included, so an invalid token is
|
|
200
|
+
still a 401.
|
|
201
|
+
|
|
176
202
|
#### Configuration File Method
|
|
177
203
|
|
|
178
204
|
```json
|
|
@@ -184,6 +210,64 @@ export ADMINS="0x111,0x222,0x333"
|
|
|
184
210
|
}
|
|
185
211
|
```
|
|
186
212
|
|
|
213
|
+
#### Which Renown Instance Is Used
|
|
214
|
+
|
|
215
|
+
Step 4 of the verification process re-checks that the signer's Renown credential
|
|
216
|
+
still exists. `auth.renown` says which instance answers that question:
|
|
217
|
+
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"auth": {
|
|
221
|
+
"enabled": true,
|
|
222
|
+
"admins": ["0x111"],
|
|
223
|
+
"renown": {
|
|
224
|
+
"source": "remote",
|
|
225
|
+
"url": "https://renown.acme.io",
|
|
226
|
+
"switchboardUrl": "https://sb.acme.io/graphql"
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
| Field | Env override | Meaning |
|
|
233
|
+
| --- | --- | --- |
|
|
234
|
+
| `source` | `RENOWN_SOURCE` | `remote` (default) queries another instance; `self` reads this switchboard's own `renown-read-model` subgraph in-process. |
|
|
235
|
+
| `url` | `RENOWN_URL` | Renown base URL, used for discovery and the REST fallback. Defaults to `https://www.renown.id`. |
|
|
236
|
+
| `switchboardUrl` | `SWITCHBOARD_URL` | A switchboard's GraphQL endpoint to read credentials from directly, skipping discovery. |
|
|
237
|
+
|
|
238
|
+
Env vars win over the config file field by field; a blank value counts as unset.
|
|
239
|
+
With `source: "remote"` the order is `switchboardUrl`, then discovery via `url`,
|
|
240
|
+
then the Renown REST API at `url`. With `source: "self"` both URLs are ignored
|
|
241
|
+
for verification — but `url` still applies to this switchboard's own identity
|
|
242
|
+
(below).
|
|
243
|
+
|
|
244
|
+
Either way the credential's EIP-712 proof is re-verified and expiry and
|
|
245
|
+
delegation binding are re-checked, so a locally stored credential is held to the
|
|
246
|
+
same standard as a remote one. Successful checks are cached per identity for
|
|
247
|
+
`CREDENTIAL_VERIFICATION_CACHE_TTL_MS` (60s default) in both modes, so
|
|
248
|
+
revocation still lags by up to that TTL.
|
|
249
|
+
|
|
250
|
+
`self` requires a loaded package that provides the `renown-read-model` subgraph
|
|
251
|
+
(`@powerhousedao/renown-package`). Startup fails if none does, rather than booting
|
|
252
|
+
a switchboard that rejects every authenticated request.
|
|
253
|
+
|
|
254
|
+
Where the pieces live: `@renown/sdk` owns the read-model contract
|
|
255
|
+
(`RENOWN_READ_MODEL_SUBGRAPH`, `createLocalCredentialVerifier`), this app wires
|
|
256
|
+
it to the running reactor after the API is up, and `reactor-api` only supplies
|
|
257
|
+
the generic `GraphQLManager.executeSubgraphQuery` plus an injectable
|
|
258
|
+
`verifyCredential` — core has no knowledge of the renown package. A host that
|
|
259
|
+
sets `source: "self"` without injecting a verifier is refused at boot rather
|
|
260
|
+
than silently verified against a remote Renown.
|
|
261
|
+
|
|
262
|
+
#### The Switchboard's Own Identity
|
|
263
|
+
|
|
264
|
+
Separately from verifying incoming credentials, a switchboard has its own
|
|
265
|
+
identity — the `ph login` keypair it uses to authenticate *outbound* to remote
|
|
266
|
+
drives and services. It authenticates against `auth.renown.url` too, so one
|
|
267
|
+
setting covers both directions. Pass `identity.baseUrl` when starting the server
|
|
268
|
+
to point it somewhere else; unset everywhere, it falls back to
|
|
269
|
+
`https://www.renown.id`.
|
|
270
|
+
|
|
187
271
|
### 2. **Frontend Integration**
|
|
188
272
|
|
|
189
273
|
#### Using the useAuth Hook
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,498 @@
|
|
|
1
|
+
## 6.2.2-dev.80 (2026-09-04)
|
|
2
|
+
|
|
3
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
4
|
+
|
|
5
|
+
## 6.2.2-dev.79 (2026-09-04)
|
|
6
|
+
|
|
7
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
8
|
+
|
|
9
|
+
## 6.2.2-dev.78 (2026-09-04)
|
|
10
|
+
|
|
11
|
+
### 🚀 Features
|
|
12
|
+
|
|
13
|
+
- **bench:** bench:fix gate picks the next VERIFIED task when no id is given ([7c0560964](https://github.com/powerhouse-inc/powerhouse/commit/7c0560964))
|
|
14
|
+
- **bench:** bench-fixer agent and /bench-fix command close a verified finding ([9a2cbfdfe](https://github.com/powerhouse-inc/powerhouse/commit/9a2cbfdfe))
|
|
15
|
+
|
|
16
|
+
### 🩹 Fixes
|
|
17
|
+
|
|
18
|
+
- **connect:** stop serving stale builds after a deploy ([#2960](https://github.com/powerhouse-inc/powerhouse/pull/2960))
|
|
19
|
+
|
|
20
|
+
### ❤️ Thank You
|
|
21
|
+
|
|
22
|
+
- Benjamin Jordan
|
|
23
|
+
- Claude Fable 5.1
|
|
24
|
+
- Frank @froid1911
|
|
25
|
+
|
|
26
|
+
## 6.2.2-dev.77 (2026-09-03)
|
|
27
|
+
|
|
28
|
+
### 🚀 Features
|
|
29
|
+
|
|
30
|
+
- **connect:** AI chat assistant with settings, feature flag, and markdown ([#2956](https://github.com/powerhouse-inc/powerhouse/pull/2956))
|
|
31
|
+
- **reactor:** pure data layer for a bench records viewer ([d7abdde8e](https://github.com/powerhouse-inc/powerhouse/commit/d7abdde8e))
|
|
32
|
+
|
|
33
|
+
### ❤️ Thank You
|
|
34
|
+
|
|
35
|
+
- Benjamin Jordan
|
|
36
|
+
- Claude Fable 5.1
|
|
37
|
+
- Frank @froid1911
|
|
38
|
+
|
|
39
|
+
## 6.2.2-dev.76 (2026-09-03)
|
|
40
|
+
|
|
41
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
42
|
+
|
|
43
|
+
## 6.2.2-dev.75 (2026-09-03)
|
|
44
|
+
|
|
45
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
46
|
+
|
|
47
|
+
## 6.2.2-dev.74 (2026-09-02)
|
|
48
|
+
|
|
49
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
50
|
+
|
|
51
|
+
## 6.2.2-dev.73 (2026-09-02)
|
|
52
|
+
|
|
53
|
+
### 🚀 Features
|
|
54
|
+
|
|
55
|
+
- **reactor-api:** resolve the caller's identity without enforcing a policy ([#2953](https://github.com/powerhouse-inc/powerhouse/pull/2953))
|
|
56
|
+
- **reactor:** one script runs the benchmarks and records them ([89f958f97](https://github.com/powerhouse-inc/powerhouse/commit/89f958f97))
|
|
57
|
+
- three bench agents and the loop that runs them back to back ([af0e7467f](https://github.com/powerhouse-inc/powerhouse/commit/af0e7467f))
|
|
58
|
+
- **reactor:** add zod schemas for benchmark and task records ([9869572ba](https://github.com/powerhouse-inc/powerhouse/commit/9869572ba))
|
|
59
|
+
|
|
60
|
+
### 🩹 Fixes
|
|
61
|
+
|
|
62
|
+
- **ci:** emit an empty changed-files list without a trailing space ([366ad4d96](https://github.com/powerhouse-inc/powerhouse/commit/366ad4d96))
|
|
63
|
+
|
|
64
|
+
### ❤️ Thank You
|
|
65
|
+
|
|
66
|
+
- Benjamin Jordan
|
|
67
|
+
- Claude Opus 5
|
|
68
|
+
- Guillermo Puente Sandoval @gpuente
|
|
69
|
+
|
|
70
|
+
## 6.2.2-dev.72 (2026-09-02)
|
|
71
|
+
|
|
72
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
73
|
+
|
|
74
|
+
## 6.2.2-dev.71 (2026-09-01)
|
|
75
|
+
|
|
76
|
+
### 🚀 Features
|
|
77
|
+
|
|
78
|
+
- agent-managed Vetra with per-project ports ([#2946](https://github.com/powerhouse-inc/powerhouse/pull/2946))
|
|
79
|
+
|
|
80
|
+
### 🩹 Fixes
|
|
81
|
+
|
|
82
|
+
- **reactor-api:** hold @apollo/subgraph below 2.15 and use its array form ([ec6d19da0](https://github.com/powerhouse-inc/powerhouse/commit/ec6d19da0))
|
|
83
|
+
|
|
84
|
+
### ❤️ Thank You
|
|
85
|
+
|
|
86
|
+
- Benjamin Jordan
|
|
87
|
+
- Claude Opus 5
|
|
88
|
+
- Frank @froid1911
|
|
89
|
+
|
|
90
|
+
## 6.2.2-dev.70 (2026-09-01)
|
|
91
|
+
|
|
92
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
93
|
+
|
|
94
|
+
## 6.2.2-dev.69 (2026-08-31)
|
|
95
|
+
|
|
96
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
97
|
+
|
|
98
|
+
## 6.2.2-dev.68 (2026-08-31)
|
|
99
|
+
|
|
100
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
101
|
+
|
|
102
|
+
## 6.2.2-dev.67 (2026-08-31)
|
|
103
|
+
|
|
104
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
105
|
+
|
|
106
|
+
## 6.2.2-dev.66 (2026-08-30)
|
|
107
|
+
|
|
108
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
109
|
+
|
|
110
|
+
## 6.2.2-dev.65 (2026-08-29)
|
|
111
|
+
|
|
112
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
113
|
+
|
|
114
|
+
## 6.2.2-dev.64 (2026-08-28)
|
|
115
|
+
|
|
116
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
117
|
+
|
|
118
|
+
## 6.2.2-dev.63 (2026-08-27)
|
|
119
|
+
|
|
120
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
121
|
+
|
|
122
|
+
## 6.2.2-dev.62 (2026-08-27)
|
|
123
|
+
|
|
124
|
+
### 🩹 Fixes
|
|
125
|
+
|
|
126
|
+
- **ci:** build before typecheck in simulate-ci-workflow ([2ecd03e81](https://github.com/powerhouse-inc/powerhouse/commit/2ecd03e81))
|
|
127
|
+
- **windows:** spawn package managers through cross-spawn ([ff4140072](https://github.com/powerhouse-inc/powerhouse/commit/ff4140072))
|
|
128
|
+
- **windows:** make package scripts runnable under cmd.exe ([987022ed9](https://github.com/powerhouse-inc/powerhouse/commit/987022ed9))
|
|
129
|
+
|
|
130
|
+
### ❤️ Thank You
|
|
131
|
+
|
|
132
|
+
- Claude Opus 5 (1M context)
|
|
133
|
+
- Wouter Kampmann
|
|
134
|
+
|
|
135
|
+
## 6.2.2-dev.61 (2026-08-26)
|
|
136
|
+
|
|
137
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
138
|
+
|
|
139
|
+
## 6.2.2-dev.60 (2026-08-26)
|
|
140
|
+
|
|
141
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
142
|
+
|
|
143
|
+
## 6.2.2-dev.59 (2026-08-25)
|
|
144
|
+
|
|
145
|
+
### 🩹 Fixes
|
|
146
|
+
|
|
147
|
+
- **reactor:** stable processor cursor ids behind legacyProcessorIds flag ([ee82e90b4](https://github.com/powerhouse-inc/powerhouse/commit/ee82e90b4))
|
|
148
|
+
|
|
149
|
+
### ❤️ Thank You
|
|
150
|
+
|
|
151
|
+
- acaldas
|
|
152
|
+
|
|
153
|
+
## 6.2.2-dev.58 (2026-08-25)
|
|
154
|
+
|
|
155
|
+
### 🚀 Features
|
|
156
|
+
|
|
157
|
+
- **docker:** per-channel compose files on cr.vetra.io with fixed ports ([7d8f51b57](https://github.com/powerhouse-inc/powerhouse/commit/7d8f51b57))
|
|
158
|
+
|
|
159
|
+
### 🩹 Fixes
|
|
160
|
+
|
|
161
|
+
- **docker:** connect image HEALTHCHECK uses 127.0.0.1 ([4c80c5759](https://github.com/powerhouse-inc/powerhouse/commit/4c80c5759))
|
|
162
|
+
- **docker:** healthcheck 127.0.0.1 instead of localhost in compose files ([e15bb8c9d](https://github.com/powerhouse-inc/powerhouse/commit/e15bb8c9d))
|
|
163
|
+
|
|
164
|
+
### ❤️ Thank You
|
|
165
|
+
|
|
166
|
+
- froid1911
|
|
167
|
+
|
|
168
|
+
## 6.2.2-dev.57 (2026-08-24)
|
|
169
|
+
|
|
170
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
171
|
+
|
|
172
|
+
## 6.2.2-dev.56 (2026-08-23)
|
|
173
|
+
|
|
174
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
175
|
+
|
|
176
|
+
## 6.2.2-dev.55 (2026-08-22)
|
|
177
|
+
|
|
178
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
179
|
+
|
|
180
|
+
## 6.2.2-dev.54 (2026-08-21)
|
|
181
|
+
|
|
182
|
+
### 🚀 Features
|
|
183
|
+
|
|
184
|
+
- ⚠️ **reactor-api:** type the actions mutateDocument accepts ([1b9adbe2a](https://github.com/powerhouse-inc/powerhouse/commit/1b9adbe2a))
|
|
185
|
+
|
|
186
|
+
### ⚠️ Breaking Changes
|
|
187
|
+
|
|
188
|
+
- **reactor-api:** type the actions mutateDocument accepts ([1b9adbe2a](https://github.com/powerhouse-inc/powerhouse/commit/1b9adbe2a))
|
|
189
|
+
|
|
190
|
+
### ❤️ Thank You
|
|
191
|
+
|
|
192
|
+
- Benjamin Jordan
|
|
193
|
+
- Claude Fable 5
|
|
194
|
+
|
|
195
|
+
## 6.2.2-dev.53 (2026-08-20)
|
|
196
|
+
|
|
197
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
198
|
+
|
|
199
|
+
## 6.2.2-dev.52 (2026-08-19)
|
|
200
|
+
|
|
201
|
+
### 🚀 Features
|
|
202
|
+
|
|
203
|
+
- **switchboard:** verify renown credentials against the reactor's own read model ([9e7efe532](https://github.com/powerhouse-inc/powerhouse/commit/9e7efe532))
|
|
204
|
+
|
|
205
|
+
### 🩹 Fixes
|
|
206
|
+
|
|
207
|
+
- **reactor-api,switchboard:** parse PGlite read-model timestamps as UTC ([e6e25758b](https://github.com/powerhouse-inc/powerhouse/commit/e6e25758b))
|
|
208
|
+
|
|
209
|
+
### ❤️ Thank You
|
|
210
|
+
|
|
211
|
+
- acaldas
|
|
212
|
+
|
|
213
|
+
## 6.2.2-dev.51 (2026-08-19)
|
|
214
|
+
|
|
215
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
216
|
+
|
|
217
|
+
## 6.2.2-dev.50 (2026-08-18)
|
|
218
|
+
|
|
219
|
+
### 🚀 Features
|
|
220
|
+
|
|
221
|
+
- **switchboard:** read the group and condition enforcement flags ([e3d72b0a8](https://github.com/powerhouse-inc/powerhouse/commit/e3d72b0a8))
|
|
222
|
+
|
|
223
|
+
### 🩹 Fixes
|
|
224
|
+
|
|
225
|
+
- **ci:** install chromium from the package that owns playwright ([653349ee0](https://github.com/powerhouse-inc/powerhouse/commit/653349ee0))
|
|
226
|
+
- **connect:** stage the CSP rewrite instead of sed -i ([ab5cd1d8f](https://github.com/powerhouse-inc/powerhouse/commit/ab5cd1d8f))
|
|
227
|
+
|
|
228
|
+
### ❤️ Thank You
|
|
229
|
+
|
|
230
|
+
- Benjamin Jordan
|
|
231
|
+
- Claude Opus 5 (1M context)
|
|
232
|
+
|
|
233
|
+
## 6.2.2-dev.49 (2026-08-17)
|
|
234
|
+
|
|
235
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
236
|
+
|
|
237
|
+
## 6.2.2-dev.48 (2026-08-15)
|
|
238
|
+
|
|
239
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
240
|
+
|
|
241
|
+
## 6.2.2-dev.47 (2026-08-14)
|
|
242
|
+
|
|
243
|
+
### 🩹 Fixes
|
|
244
|
+
|
|
245
|
+
- **connect:** sync CSP registry origin to runtime packageRegistryUrl ([418652419](https://github.com/powerhouse-inc/powerhouse/commit/418652419))
|
|
246
|
+
|
|
247
|
+
### ❤️ Thank You
|
|
248
|
+
|
|
249
|
+
- Frank Pfeift
|
|
250
|
+
|
|
251
|
+
## 6.2.2-dev.46 (2026-08-14)
|
|
252
|
+
|
|
253
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
254
|
+
|
|
255
|
+
## 6.2.2-dev.45 (2026-08-13)
|
|
256
|
+
|
|
257
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
258
|
+
|
|
259
|
+
## 6.2.2-dev.44 (2026-08-12)
|
|
260
|
+
|
|
261
|
+
### 🚀 Features
|
|
262
|
+
|
|
263
|
+
- **reactor-api,codegen:** register upgrade manifests on the switchboard ([85383aa0f](https://github.com/powerhouse-inc/powerhouse/commit/85383aa0f))
|
|
264
|
+
- **reactor-group:** ship the PHGroup document model as @powerhousedao/reactor-group ([d5a323016](https://github.com/powerhouse-inc/powerhouse/commit/d5a323016))
|
|
265
|
+
|
|
266
|
+
### 🩹 Fixes
|
|
267
|
+
|
|
268
|
+
- **shared:** harden the condition evaluator per review ([eea3fb475](https://github.com/powerhouse-inc/powerhouse/commit/eea3fb475))
|
|
269
|
+
|
|
270
|
+
### ❤️ Thank You
|
|
271
|
+
|
|
272
|
+
- Benjamin Jordan
|
|
273
|
+
- Claude Fable 5
|
|
274
|
+
|
|
275
|
+
## 6.2.2-dev.43 (2026-08-11)
|
|
276
|
+
|
|
277
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
278
|
+
|
|
279
|
+
## 6.2.2-dev.42 (2026-08-10)
|
|
280
|
+
|
|
281
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
282
|
+
|
|
283
|
+
## 6.2.2-dev.41 (2026-08-09)
|
|
284
|
+
|
|
285
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
286
|
+
|
|
287
|
+
## 6.2.2-dev.40 (2026-08-08)
|
|
288
|
+
|
|
289
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
290
|
+
|
|
291
|
+
## 6.2.2-dev.39 (2026-08-07)
|
|
292
|
+
|
|
293
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
294
|
+
|
|
295
|
+
## 6.2.2-dev.38 (2026-08-06)
|
|
296
|
+
|
|
297
|
+
### 🚀 Features
|
|
298
|
+
|
|
299
|
+
- added recipe e2e tests to the suite ([88cd1a55c](https://github.com/powerhouse-inc/powerhouse/commit/88cd1a55c))
|
|
300
|
+
- auth phase 4 ([28aa9ad6a](https://github.com/powerhouse-inc/powerhouse/commit/28aa9ad6a))
|
|
301
|
+
|
|
302
|
+
### 🩹 Fixes
|
|
303
|
+
|
|
304
|
+
- stage llm files from pre-commit hook ([0af2ab705](https://github.com/powerhouse-inc/powerhouse/commit/0af2ab705))
|
|
305
|
+
- **reactor:** point preflight:auth at a real store ([c1315a9f9](https://github.com/powerhouse-inc/powerhouse/commit/c1315a9f9))
|
|
306
|
+
- **reactor:** filter initialState and keep auth in a scoped subscription read ([77fee70b4](https://github.com/powerhouse-inc/powerhouse/commit/77fee70b4))
|
|
307
|
+
- **reactor:** degrade the poll query against a remote on the older schema ([0c3aefe65](https://github.com/powerhouse-inc/powerhouse/commit/0c3aefe65))
|
|
308
|
+
- **shared:** stop a state snapshot from installing or replacing a policy ([f947e562e](https://github.com/powerhouse-inc/powerhouse/commit/f947e562e))
|
|
309
|
+
- **shared:** make auth-administration retention a reachability rule ([3db42daac](https://github.com/powerhouse-inc/powerhouse/commit/3db42daac))
|
|
310
|
+
|
|
311
|
+
### ❤️ Thank You
|
|
312
|
+
|
|
313
|
+
- Benjamin Jordan
|
|
314
|
+
- Claude Fable 5
|
|
315
|
+
|
|
316
|
+
## 6.2.2-dev.37 (2026-08-05)
|
|
317
|
+
|
|
318
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
319
|
+
|
|
320
|
+
## 6.2.2-dev.36 (2026-08-04)
|
|
321
|
+
|
|
322
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
323
|
+
|
|
324
|
+
## 6.2.2-dev.35 (2026-08-03)
|
|
325
|
+
|
|
326
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
327
|
+
|
|
328
|
+
## 6.2.2-dev.34 (2026-08-02)
|
|
329
|
+
|
|
330
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
331
|
+
|
|
332
|
+
## 6.2.2-dev.33 (2026-08-01)
|
|
333
|
+
|
|
334
|
+
### 🩹 Fixes
|
|
335
|
+
|
|
336
|
+
- **reactor:** fixing a few defects with document scope reshuffle specifics ([7546b9ff2](https://github.com/powerhouse-inc/powerhouse/commit/7546b9ff2))
|
|
337
|
+
|
|
338
|
+
### ❤️ Thank You
|
|
339
|
+
|
|
340
|
+
- Benjamin Jordan
|
|
341
|
+
|
|
342
|
+
## 6.2.2-dev.32 (2026-07-31)
|
|
343
|
+
|
|
344
|
+
### 🚀 Features
|
|
345
|
+
|
|
346
|
+
- **reactor:** feature flag guards and spec updates to make plan for guarded reshuffle edge cases ([20b0fd6be](https://github.com/powerhouse-inc/powerhouse/commit/20b0fd6be))
|
|
347
|
+
|
|
348
|
+
### 🩹 Fixes
|
|
349
|
+
|
|
350
|
+
- **reactor:** fix convergence in the case we deny an operation that has a skip ([21cbb3ecb](https://github.com/powerhouse-inc/powerhouse/commit/21cbb3ecb))
|
|
351
|
+
- auth-scope spec updates, assert ordered streams, and fix some busted default protocol versions ([97c5a37b5](https://github.com/powerhouse-inc/powerhouse/commit/97c5a37b5))
|
|
352
|
+
|
|
353
|
+
### ❤️ Thank You
|
|
354
|
+
|
|
355
|
+
- Benjamin Jordan
|
|
356
|
+
|
|
357
|
+
## 6.2.2-dev.31 (2026-07-31)
|
|
358
|
+
|
|
359
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
360
|
+
|
|
361
|
+
## 6.2.2-dev.30 (2026-07-31)
|
|
362
|
+
|
|
363
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
364
|
+
|
|
365
|
+
## 6.2.2-dev.29 (2026-07-31)
|
|
366
|
+
|
|
367
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
368
|
+
|
|
369
|
+
## 6.2.2-dev.28 (2026-07-30)
|
|
370
|
+
|
|
371
|
+
### 🚀 Features
|
|
372
|
+
|
|
373
|
+
- **reactor-browser:** add IReactorBrowserClient and a light GraphQL client ([#2893](https://github.com/powerhouse-inc/powerhouse/pull/2893))
|
|
374
|
+
- **reactor:** plugging in the first decision model ([27e9b2772](https://github.com/powerhouse-inc/powerhouse/commit/27e9b2772))
|
|
375
|
+
|
|
376
|
+
### ❤️ Thank You
|
|
377
|
+
|
|
378
|
+
- Benjamin Jordan
|
|
379
|
+
- Guillermo Puente Sandoval @gpuente
|
|
380
|
+
|
|
381
|
+
## 6.2.2-dev.27 (2026-07-30)
|
|
382
|
+
|
|
383
|
+
### 🩹 Fixes
|
|
384
|
+
|
|
385
|
+
- **connect:** pin @privy-io/react-auth to 3.35.0 ([909352ce3](https://github.com/powerhouse-inc/powerhouse/commit/909352ce3))
|
|
386
|
+
|
|
387
|
+
### ❤️ Thank You
|
|
388
|
+
|
|
389
|
+
- acaldas
|
|
390
|
+
|
|
391
|
+
## 6.2.2-dev.26 (2026-07-30)
|
|
392
|
+
|
|
393
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
394
|
+
|
|
395
|
+
## 6.2.2-dev.25 (2026-07-29)
|
|
396
|
+
|
|
397
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
398
|
+
|
|
399
|
+
## 6.2.2-dev.24 (2026-07-29)
|
|
400
|
+
|
|
401
|
+
### 🩹 Fixes
|
|
402
|
+
|
|
403
|
+
- **reactor:** fix an issue exacerbated by auth where snapshots were ordered by insertion not revision ([4aa32fe1b](https://github.com/powerhouse-inc/powerhouse/commit/4aa32fe1b))
|
|
404
|
+
|
|
405
|
+
### ❤️ Thank You
|
|
406
|
+
|
|
407
|
+
- Benjamin Jordan
|
|
408
|
+
|
|
409
|
+
## 6.2.2-dev.23 (2026-07-28)
|
|
410
|
+
|
|
411
|
+
### 🩹 Fixes
|
|
412
|
+
|
|
413
|
+
- **deps:** pin qr to 0.5.5 so RainbowKit can render the WalletConnect QR ([5343f9178](https://github.com/powerhouse-inc/powerhouse/commit/5343f9178))
|
|
414
|
+
|
|
415
|
+
### ❤️ Thank You
|
|
416
|
+
|
|
417
|
+
- acaldas
|
|
418
|
+
|
|
419
|
+
## 6.2.2-dev.22 (2026-07-28)
|
|
420
|
+
|
|
421
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
422
|
+
|
|
423
|
+
## 6.2.2-dev.21 (2026-07-27)
|
|
424
|
+
|
|
425
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
426
|
+
|
|
427
|
+
## 6.2.2-dev.20 (2026-07-27)
|
|
428
|
+
|
|
429
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
430
|
+
|
|
431
|
+
## 6.2.2-dev.19 (2026-07-27)
|
|
432
|
+
|
|
433
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
434
|
+
|
|
435
|
+
## 6.2.2-dev.18 (2026-07-27)
|
|
436
|
+
|
|
437
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
438
|
+
|
|
439
|
+
## 6.2.2-dev.17 (2026-07-26)
|
|
440
|
+
|
|
441
|
+
### 🚀 Features
|
|
442
|
+
|
|
443
|
+
- **attachments:** S3-compatible storage, direct transfers, and document-derived authorization ([#2884](https://github.com/powerhouse-inc/powerhouse/pull/2884))
|
|
444
|
+
|
|
445
|
+
### ❤️ Thank You
|
|
446
|
+
|
|
447
|
+
- Guillermo Puente Sandoval @gpuente
|
|
448
|
+
|
|
449
|
+
## 6.2.2-dev.16 (2026-07-25)
|
|
450
|
+
|
|
451
|
+
### 🩹 Fixes
|
|
452
|
+
|
|
453
|
+
- code review fixes ([318cbefa9](https://github.com/powerhouse-inc/powerhouse/commit/318cbefa9))
|
|
454
|
+
- version 0 is reserved and only 1 and on is available for setting ([193ac4c56](https://github.com/powerhouse-inc/powerhouse/commit/193ac4c56))
|
|
455
|
+
- resolve a contradiction in group membership ([39845a65c](https://github.com/powerhouse-inc/powerhouse/commit/39845a65c))
|
|
456
|
+
- grant evaluation needs to ignore features that do not exist yet ([0c1d06396](https://github.com/powerhouse-inc/powerhouse/commit/0c1d06396))
|
|
457
|
+
|
|
458
|
+
### ❤️ Thank You
|
|
459
|
+
|
|
460
|
+
- Benjamin Jordan
|
|
461
|
+
|
|
462
|
+
## 6.2.2-dev.15 (2026-07-24)
|
|
463
|
+
|
|
464
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
465
|
+
|
|
466
|
+
## 6.2.2-dev.14 (2026-07-23)
|
|
467
|
+
|
|
468
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
469
|
+
|
|
470
|
+
## 6.2.2-dev.13 (2026-07-23)
|
|
471
|
+
|
|
472
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
473
|
+
|
|
474
|
+
## 6.2.2-dev.12 (2026-07-23)
|
|
475
|
+
|
|
476
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
477
|
+
|
|
478
|
+
## 6.2.2-dev.11 (2026-07-22)
|
|
479
|
+
|
|
480
|
+
### 🚀 Features
|
|
481
|
+
|
|
482
|
+
- **connect:** dynamic packages can contribute to the PWA configuration ([da867e21d](https://github.com/powerhouse-inc/powerhouse/commit/da867e21d))
|
|
483
|
+
|
|
484
|
+
### ❤️ Thank You
|
|
485
|
+
|
|
486
|
+
- Yasiel Cabrera @YasielCabrera
|
|
487
|
+
|
|
488
|
+
## 6.2.2-dev.10 (2026-07-21)
|
|
489
|
+
|
|
490
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
491
|
+
|
|
492
|
+
## 6.2.2-dev.9 (2026-07-20)
|
|
493
|
+
|
|
494
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
495
|
+
|
|
1
496
|
## 6.2.2-dev.8 (2026-07-19)
|
|
2
497
|
|
|
3
498
|
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
package/README.md
CHANGED
|
@@ -156,6 +156,43 @@ The same settings are available programmatically via
|
|
|
156
156
|
`startSwitchboard({ workerPool: { numWorkers, dbPoolSizePerWorker, acquireTimeoutMs } })`,
|
|
157
157
|
which takes precedence over the environment variables.
|
|
158
158
|
|
|
159
|
+
### Reactor Enforcement Flags
|
|
160
|
+
|
|
161
|
+
| Variable | Description | Default |
|
|
162
|
+
| ------------------------------ | ------------------------------------------------------------------ | ------- |
|
|
163
|
+
| `REACTOR_DOCUMENT_DECISIONS` | Decide writes from the document stream, not the meta cache | `false` |
|
|
164
|
+
| `REACTOR_AUTH_ENFORCEMENT` | Enforce the auth scope's policy at admission, replay and read | `false` |
|
|
165
|
+
| `REACTOR_AUTH_GROUPS` | Let `{ group }` principals match against group-document rosters | `false` |
|
|
166
|
+
| `REACTOR_AUTH_CONDITIONS` | Evaluate `where` / `match` conditions on grants | `false` |
|
|
167
|
+
|
|
168
|
+
Set each to the literal `true` to enable. Each flag requires the one above it,
|
|
169
|
+
and switchboard refuses to start on a set that skips one — a partially enforcing
|
|
170
|
+
reactor would apply less than the operator asked for.
|
|
171
|
+
|
|
172
|
+
These change replay outcomes, which are consensus outcomes, so **a flag flips
|
|
173
|
+
for a whole document-sharing fleet, never per node**. Two nodes that share
|
|
174
|
+
documents and disagree on the flags diverge, exactly as two nodes on
|
|
175
|
+
incompatible versions would. Connect carries the same flags in
|
|
176
|
+
`connect.reactor.featureFlags` (see `apps/connect/RUNTIME-CONFIG.md`); a fleet
|
|
177
|
+
that includes browser replicas has to set them there too.
|
|
178
|
+
|
|
179
|
+
Sweep the store before enabling either auth flag — neither unsafe condition is
|
|
180
|
+
repairable after the fact, because the auth stream is never reshuffled:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
cd packages/reactor && pnpm preflight:auth --pg <connection-string>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Exit `0` is clean for both; `1` means streams unsafe for `authEnforcement`, `2`
|
|
187
|
+
means documents unsafe for `authConditions`, `3` both, and `68` means the run
|
|
188
|
+
died having checked nothing. Gate on the whole code, not on a bit.
|
|
189
|
+
|
|
190
|
+
One expectation worth stating: turning enforcement on protects nothing that
|
|
191
|
+
already exists. The host's permission tables still own sync serving and the
|
|
192
|
+
GraphQL boundary, and every document that predates the auth scope carries an
|
|
193
|
+
uninitialized policy, which allows everything. Enforcement bites only on
|
|
194
|
+
documents that have emitted `INITIALIZE_AUTH`.
|
|
195
|
+
|
|
159
196
|
### Authentication Configuration
|
|
160
197
|
|
|
161
198
|
```typescript
|
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5a65c537-fadb-5705-95c0-4cec44d7b4d2")}catch(e){}}();
|
|
4
|
-
import { a as parseForcePgVersion, r as startSwitchboard } from "./server-
|
|
4
|
+
import { a as parseForcePgVersion, r as startSwitchboard } from "./server-CQKVIxsA.mjs";
|
|
5
5
|
import "./utils-Baw7rThP.mjs";
|
|
6
6
|
import { metrics } from "@opentelemetry/api";
|
|
7
7
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|