@essentialai/cogent-server 3.1.5 → 3.2.1
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 +24 -0
- package/dist/routes/messages.d.ts.map +1 -1
- package/dist/routes/messages.js +130 -7
- package/dist/routes/messages.js.map +1 -1
- package/dist/routes/peers.d.ts +17 -2
- package/dist/routes/peers.d.ts.map +1 -1
- package/dist/routes/peers.js +21 -3
- package/dist/routes/peers.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [3.2.1] - 2026-05-17
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **FIX-INFERRED-ECHO: opt-in dedup of untagged auto-relay echoes (Phase 18 light).** `LocalGetHistoryQuerySchema` accepts new optional `dedupInferredEchoes: boolean` (preprocess coerces `"true"` string → boolean). When `true`, GET `/api/sessions/:id/messages` suppresses M[i] when `M[i].message === M[i-1].response`, `fromPeerId`/`toPeerId` are swapped, AND `Δt < 120s`. Catches the ~13% of echo records that bypass the `isRelayEcho` tag (peer-driven `cogent_send_message` re-broadcasts after autoRelay's execClaude returns). Filter applies BEFORE peerId narrowing so the M[i] vs M[i-1] pairing sees the full timeline. Opt-in keeps existing callers untouched. See `server/src/routes/messages.ts`.
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- **PATCH `/api/sessions/:sessionId/messages/:messageId` accepts `response: null`.** `UpdateMessageResponseSchema` changed `response: z.string()` → `response: z.string().nullable()`. Lets cloud clients explicitly mark timed-out sends — the message record's `response` stays `null` instead of holding a bridge-generated stub that LLMs would misread as the recipient's reply. See `server/src/routes/messages.ts`. Paired with client `src/tools/send-message.ts` FIX-TIMEOUT-UX in cogent-bridge 3.2.1.
|
|
10
|
+
|
|
11
|
+
### Internal
|
|
12
|
+
- 5 new tests under `src/__tests__/routes/messages.test.ts` `describe("dedupInferredEchoes (FIX-INFERRED-ECHO, 3.2.1)")` — covers happy-path suppression, default-off backward compat, content-mismatch no-op, direction-mismatch no-op, and the `"true"` string preprocess coercion.
|
|
13
|
+
|
|
14
|
+
## [3.2.0] - 2026-05-12
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- **Server-side acceptance of `mode` on POST `/peers` (OBS-01 / OBS-02).** `ExtendedRegisterPeerRequestSchema` now accepts optional `mode: z.enum(["observer", "agent"])`. `StoredPeerInfo` widened with optional `mode`. Persistence uses conditional-set (no `{ mode: undefined }` placeholder); GET `/peers` returns it on records where it was supplied. See `server/src/routes/peers.ts`.
|
|
18
|
+
- **Server-side `metadataOnly` projection on GET `/api/sessions/:id/messages` (HIST-02).** `LocalGetHistoryQuerySchema` accepts `metadataOnly` (preprocess coerces `"true"` string → boolean) and the GET handler projects each record to the 7-key shape `{id, fromPeerId, toPeerId, timestamp, durationMs, isRelayEcho, success}` before `c.json`. Built via object literal so `message`/`response`/`error` keys are physically absent. Server is the source of truth for the wire shape in cloud mode. See `server/src/routes/messages.ts`.
|
|
19
|
+
|
|
20
|
+
### Internal
|
|
21
|
+
- Drift-snapshot tripwire test extended to include `"mode"` in the expected key set alongside `"clientVersion"`. Both fields remain server-side extensions in the same drift-budget as `clientVersion` until Phase 18 retires the mirror via `.extend()` against a bumped `@essentialai/cogent` shared-types package.
|
|
22
|
+
- 5 new tests under `server/src/__tests__/routes/peers.test.ts` `describe("OBS-01 / OBS-02 mode field")` covering POST/GET with `mode: "observer" | "agent"`, absence-as-legacy compat, and validator rejection of garbage values.
|
|
23
|
+
- 4 new tests under `server/src/__tests__/routes/messages.test.ts` `describe("metadataOnly (HIST-02)")` covering 7-key projection, end-to-end response.text() size ratio ≤ 0.10, preprocess coercion, and default/false passthrough.
|
|
24
|
+
|
|
25
|
+
Planning: `.planning/phases/17-observer-mode-and-history-hygiene/`
|
|
26
|
+
|
|
3
27
|
## [3.1.3] - 2026-05-05
|
|
4
28
|
|
|
5
29
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/routes/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/routes/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,YAAY,CAAC,EAAE,mBAAmB,EAClC,eAAe,CAAC,EAAE,eAAe,GAChC,IAAI,CAAC,SAAS,CAAC,CAiYjB"}
|
package/dist/routes/messages.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
2
|
import { zValidator } from "@hono/zod-validator";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
-
import { BridgeError, ErrorCode,
|
|
4
|
+
import { BridgeError, ErrorCode, generateMessageId, } from "@essentialai/cogent";
|
|
5
5
|
import { createAuthMiddleware } from "../middleware/auth.js";
|
|
6
6
|
import { validationHook } from "./validation-hook.js";
|
|
7
7
|
import { createMessageFrame } from "../ws/frames.js";
|
|
@@ -22,6 +22,53 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
22
22
|
// Auth middleware applied per-route (not wildcard) to avoid intercepting
|
|
23
23
|
// unauthenticated session routes mounted at the same /api/sessions prefix.
|
|
24
24
|
const auth = createAuthMiddleware(sessionStore, authService);
|
|
25
|
+
// Local request schemas (redefined here so we can extend the wire contract
|
|
26
|
+
// without touching the shared @essentialai/cogent package, whose schemas
|
|
27
|
+
// are .strict() and pinned at v3.0.0). The shape mirrors the shared schemas
|
|
28
|
+
// and adds the new optional `isRelayEcho` (POST) / `includeRelayEchoes` (GET)
|
|
29
|
+
// fields for the 260511-o3p relay-echo fix. Older clients that omit the
|
|
30
|
+
// fields continue to work — the fields are optional with explicit defaults.
|
|
31
|
+
const LocalSendMessageBodySchema = z
|
|
32
|
+
.object({
|
|
33
|
+
fromPeerId: z.string().min(1),
|
|
34
|
+
toPeerId: z.string().min(1),
|
|
35
|
+
message: z.string().min(1),
|
|
36
|
+
originPlatform: z.enum(["cc", "slack", "gchat", "web"]).optional(),
|
|
37
|
+
isRelayEcho: z.boolean().optional(),
|
|
38
|
+
})
|
|
39
|
+
.strict();
|
|
40
|
+
const LocalGetHistoryQuerySchema = z
|
|
41
|
+
.object({
|
|
42
|
+
peerId: z.string().optional(),
|
|
43
|
+
limit: z.coerce.number().int().min(1).max(1000).optional().default(100),
|
|
44
|
+
offset: z.coerce.number().int().min(0).optional().default(0),
|
|
45
|
+
// Query strings arrive as raw strings; coerce "true" / true to boolean,
|
|
46
|
+
// anything else (including absent) to false. Default false keeps
|
|
47
|
+
// history clean of auto-relay echo records.
|
|
48
|
+
includeRelayEchoes: z
|
|
49
|
+
.preprocess((v) => v === "true" || v === true, z.boolean())
|
|
50
|
+
.optional()
|
|
51
|
+
.default(false),
|
|
52
|
+
// HIST-02 (3.2): when true, response records are projected to a 7-key
|
|
53
|
+
// metadata-only shape (no message/response bodies). Mirrors the
|
|
54
|
+
// includeRelayEchoes preprocess so "true" / true both coerce to boolean.
|
|
55
|
+
metadataOnly: z
|
|
56
|
+
.preprocess((v) => v === "true" || v === true, z.boolean())
|
|
57
|
+
.optional()
|
|
58
|
+
.default(false),
|
|
59
|
+
// FIX-INFERRED-ECHO (3.2.1, Phase 18 light): when true, suppress untagged
|
|
60
|
+
// auto-relay echoes via content-and-direction heuristic — drop M[i] when
|
|
61
|
+
// M[i].message === M[i-1].response AND fromPeerId/toPeerId are swapped
|
|
62
|
+
// AND Δt < 120s. Catches the ~13% of echo records that bypass the
|
|
63
|
+
// isRelayEcho tag (peer-driven cogent_send_message re-broadcasts).
|
|
64
|
+
// Opt-in to avoid surprise behavior change for callers still relying on
|
|
65
|
+
// the legacy untagged stream.
|
|
66
|
+
dedupInferredEchoes: z
|
|
67
|
+
.preprocess((v) => v === "true" || v === true, z.boolean())
|
|
68
|
+
.optional()
|
|
69
|
+
.default(false),
|
|
70
|
+
})
|
|
71
|
+
.strict();
|
|
25
72
|
/**
|
|
26
73
|
* POST /:sessionId/messages - Send a message (direct or broadcast).
|
|
27
74
|
*
|
|
@@ -31,15 +78,18 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
31
78
|
* Updates sender's lastSeenAt as a heartbeat on activity.
|
|
32
79
|
* Enforces per-session message cap by trimming oldest messages.
|
|
33
80
|
*/
|
|
34
|
-
messages.post("/:sessionId/messages", auth, zValidator("json",
|
|
81
|
+
messages.post("/:sessionId/messages", auth, zValidator("json", LocalSendMessageBodySchema, validationHook), async (c) => {
|
|
35
82
|
const authSessionId = c.get("sessionId");
|
|
36
83
|
const pathSessionId = c.req.param("sessionId");
|
|
37
84
|
// Verify path param matches authenticated session
|
|
38
85
|
if (pathSessionId !== authSessionId) {
|
|
39
86
|
throw new BridgeError(ErrorCode.AUTH_INVALID_TOKEN, "Token does not belong to this session");
|
|
40
87
|
}
|
|
41
|
-
const { fromPeerId, toPeerId, message, originPlatform } = c.req.valid("json");
|
|
42
|
-
// Variables to capture for the response (set inside updateSession callback)
|
|
88
|
+
const { fromPeerId, toPeerId, message, originPlatform, isRelayEcho } = c.req.valid("json");
|
|
89
|
+
// Variables to capture for the response (set inside updateSession callback).
|
|
90
|
+
// The record may carry an extra `isRelayEcho` flag (260511-o3p) that is
|
|
91
|
+
// not yet part of the shared MessageRecord type (pinned at v3.0.0); see
|
|
92
|
+
// local schema above. We store it on the record via an intersection type.
|
|
43
93
|
let messageId;
|
|
44
94
|
let timestamp;
|
|
45
95
|
let record;
|
|
@@ -69,7 +119,14 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
69
119
|
success: true,
|
|
70
120
|
error: null,
|
|
71
121
|
originPlatform: originPlatform ?? "cc",
|
|
122
|
+
// Persist explicit false (rather than undefined) so the field is
|
|
123
|
+
// unambiguous on the wire and downstream filters can compare
|
|
124
|
+
// against true/false directly.
|
|
125
|
+
isRelayEcho: isRelayEcho ?? false,
|
|
72
126
|
};
|
|
127
|
+
// state.messages is MessageRecord[] from the shared package which
|
|
128
|
+
// doesn't yet know about isRelayEcho; the cast keeps the new field
|
|
129
|
+
// intact through JSON persistence without bumping the shared package.
|
|
73
130
|
state.messages.push(record);
|
|
74
131
|
// Enforce message cap (session store also does this, belt-and-suspenders)
|
|
75
132
|
if (state.messages.length > maxMessages) {
|
|
@@ -134,7 +191,7 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
134
191
|
* When peerId is provided, returns messages where the peer is sender,
|
|
135
192
|
* recipient, or the message is a broadcast (toPeerId: "*").
|
|
136
193
|
*/
|
|
137
|
-
messages.get("/:sessionId/messages", auth, zValidator("query",
|
|
194
|
+
messages.get("/:sessionId/messages", auth, zValidator("query", LocalGetHistoryQuerySchema, validationHook), async (c) => {
|
|
138
195
|
const authSessionId = c.get("sessionId");
|
|
139
196
|
const pathSessionId = c.req.param("sessionId");
|
|
140
197
|
// Verify path param matches authenticated session
|
|
@@ -146,13 +203,52 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
146
203
|
// Zod schema provides defaults but the type annotation includes undefined
|
|
147
204
|
const limit = query.limit ?? 300;
|
|
148
205
|
const offset = query.offset ?? 0;
|
|
206
|
+
const includeRelayEchoes = query.includeRelayEchoes ?? false;
|
|
207
|
+
const metadataOnly = query.metadataOnly ?? false;
|
|
208
|
+
const dedupInferredEchoes = query.dedupInferredEchoes ?? false;
|
|
149
209
|
// Fresh read from store (not cached from auth middleware)
|
|
150
210
|
const session = await sessionStore.getSession(authSessionId);
|
|
151
211
|
if (!session) {
|
|
152
212
|
throw new BridgeError(ErrorCode.SESSION_NOT_FOUND, `Session ${authSessionId} not found`);
|
|
153
213
|
}
|
|
154
|
-
// Filter
|
|
214
|
+
// Filter out auto-relay echoes FIRST -- before peerId narrowing and
|
|
215
|
+
// before pagination -- so the response budget is spent on real records,
|
|
216
|
+
// not on the duplicate "phantom self" entries every directed exchange
|
|
217
|
+
// produces. Opt back in with includeRelayEchoes=true (260511-o3p).
|
|
155
218
|
let filtered = session.messages;
|
|
219
|
+
if (!includeRelayEchoes) {
|
|
220
|
+
filtered = filtered.filter((m) => m.isRelayEcho !== true);
|
|
221
|
+
}
|
|
222
|
+
// FIX-INFERRED-ECHO (3.2.1, Phase 18 light): suppress untagged
|
|
223
|
+
// auto-relay echoes. Apply BEFORE peerId narrowing so the pairing
|
|
224
|
+
// (M[i] vs M[i-1]) sees the full timeline. Heuristic:
|
|
225
|
+
// - same content: M[i].message === M[i-1].response
|
|
226
|
+
// - swapped direction: fromPeerId/toPeerId are inverted
|
|
227
|
+
// - tight window: Δt < 120s
|
|
228
|
+
// M[i].response may be anything (real reply or null) -- we only need
|
|
229
|
+
// the message-side to be a content duplicate of M[i-1]'s response.
|
|
230
|
+
if (dedupInferredEchoes && filtered.length > 1) {
|
|
231
|
+
const INFERRED_ECHO_WINDOW_MS = 120_000;
|
|
232
|
+
filtered = filtered.filter((msg, i) => {
|
|
233
|
+
if (i === 0)
|
|
234
|
+
return true;
|
|
235
|
+
const prev = filtered[i - 1];
|
|
236
|
+
if (!prev.response)
|
|
237
|
+
return true;
|
|
238
|
+
if (msg.message !== prev.response)
|
|
239
|
+
return true;
|
|
240
|
+
if (msg.fromPeerId !== prev.toPeerId)
|
|
241
|
+
return true;
|
|
242
|
+
if (msg.toPeerId !== prev.fromPeerId)
|
|
243
|
+
return true;
|
|
244
|
+
const dt = Date.parse(msg.timestamp) - Date.parse(prev.timestamp);
|
|
245
|
+
if (!Number.isFinite(dt) || dt < 0 || dt > INFERRED_ECHO_WINDOW_MS) {
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
return false;
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
// Filter messages by peer if specified
|
|
156
252
|
if (peerId) {
|
|
157
253
|
filtered = filtered.filter((msg) => msg.fromPeerId === peerId ||
|
|
158
254
|
msg.toPeerId === peerId ||
|
|
@@ -167,6 +263,30 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
167
263
|
const endPos = Math.max(0, filtered.length - offset);
|
|
168
264
|
const startPos = Math.max(0, endPos - limit);
|
|
169
265
|
const paginated = filtered.slice(startPos, endPos);
|
|
266
|
+
// HIST-02: when metadataOnly is true, project each record to the
|
|
267
|
+
// 7-key contract shape BEFORE serialization. Built via object literal
|
|
268
|
+
// (not delete-on-clone) so the keys "message" and "response" are
|
|
269
|
+
// absent from the JSON (not nulled, not truncated). isRelayEcho is
|
|
270
|
+
// emitted explicitly as boolean (older records without the field
|
|
271
|
+
// get false) so the contract is stable on every record.
|
|
272
|
+
if (metadataOnly) {
|
|
273
|
+
const projected = paginated.map((m) => {
|
|
274
|
+
const rec = m;
|
|
275
|
+
return {
|
|
276
|
+
id: rec.id,
|
|
277
|
+
fromPeerId: rec.fromPeerId,
|
|
278
|
+
toPeerId: rec.toPeerId,
|
|
279
|
+
timestamp: rec.timestamp,
|
|
280
|
+
durationMs: rec.durationMs,
|
|
281
|
+
isRelayEcho: rec.isRelayEcho === true,
|
|
282
|
+
success: rec.success,
|
|
283
|
+
};
|
|
284
|
+
});
|
|
285
|
+
return c.json({
|
|
286
|
+
messages: projected,
|
|
287
|
+
total,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
170
290
|
return c.json({
|
|
171
291
|
messages: paginated,
|
|
172
292
|
total,
|
|
@@ -180,8 +300,11 @@ export function createMessageRoutes(sessionStore, authService, maxMessages, conn
|
|
|
180
300
|
* messageId does not exist, succeeds silently (message may have been
|
|
181
301
|
* trimmed by the cap).
|
|
182
302
|
*/
|
|
303
|
+
// v3.2.1 (FIX-TIMEOUT-UX): accept null response so cloud clients can mark
|
|
304
|
+
// timed-out sends explicitly (record's response stays null instead of
|
|
305
|
+
// holding a bridge-generated stub that LLMs would misread as the reply).
|
|
183
306
|
const UpdateMessageResponseSchema = z.object({
|
|
184
|
-
response: z.string(),
|
|
307
|
+
response: z.string().nullable(),
|
|
185
308
|
durationMs: z.number().optional(),
|
|
186
309
|
});
|
|
187
310
|
messages.patch("/:sessionId/messages/:messageId", auth, zValidator("json", UpdateMessageResponseSchema, validationHook), async (c) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/routes/messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/routes/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/peers.d.ts
CHANGED
|
@@ -11,12 +11,18 @@ import type { ServerEnv } from "../types.js";
|
|
|
11
11
|
* The published schema is typed as `z.ZodType<RegisterPeerRequest>` in its .d.ts,
|
|
12
12
|
* which prevents a TS-clean `.extend()` here without first bumping the shared
|
|
13
13
|
* types package to 3.0.1 (deferred — see audit M1, Path B). Until then, this
|
|
14
|
-
* file mirrors the shape verbatim and adds
|
|
14
|
+
* file mirrors the shape verbatim and adds server-side extensions:
|
|
15
|
+
* - `clientVersion` (server 3.1.4+ / observability)
|
|
16
|
+
* - `mode` (server 3.2.0+ / Phase 17 OBS-01: observer-mode peers)
|
|
17
|
+
*
|
|
18
|
+
* Both extensions ship ahead of the shared-types bump; Phase 18 retires this
|
|
19
|
+
* local mirror in favor of an `.extend()` against the shared schema once
|
|
20
|
+
* @essentialai/cogent 3.0.1+ is published.
|
|
15
21
|
*
|
|
16
22
|
* Drift is guarded by a structural snapshot test in peers.test.ts that imports
|
|
17
23
|
* THIS schema directly and asserts:
|
|
18
24
|
* Object.keys(ExtendedRegisterPeerRequestSchema.shape).sort()
|
|
19
|
-
* === [...Object.keys(publishedShape), "clientVersion"].sort()
|
|
25
|
+
* === [...Object.keys(publishedShape), "clientVersion", "mode"].sort()
|
|
20
26
|
* Failure means @essentialai/cogent shipped a new field on its
|
|
21
27
|
* RegisterPeerRequestSchema and this mirror needs the same addition.
|
|
22
28
|
* The test cannot be silenced by editing a payload — it reads the live schemas.
|
|
@@ -27,6 +33,11 @@ import type { ServerEnv } from "../types.js";
|
|
|
27
33
|
* clientVersion shape (audit L3): loose semver MAJOR.MINOR.PATCH with optional
|
|
28
34
|
* pre-release suffix; rejects free-form strings, whitespace, and typos like
|
|
29
35
|
* "client v3.1.6". Defense-in-depth — the field is observability-only.
|
|
36
|
+
*
|
|
37
|
+
* mode (Phase 17 OBS-01): "observer" registers a passive watcher that
|
|
38
|
+
* receives WS frames and remains targetable but never auto-replies. "agent"
|
|
39
|
+
* (default when absent) is the standard CC peer behavior. Pre-3.2.0 clients
|
|
40
|
+
* omit the field entirely; pre-3.2.0 servers reject it (strict schema).
|
|
30
41
|
*/
|
|
31
42
|
export declare const ExtendedRegisterPeerRequestSchema: z.ZodObject<{
|
|
32
43
|
peerId: z.ZodString;
|
|
@@ -50,6 +61,10 @@ export declare const ExtendedRegisterPeerRequestSchema: z.ZodObject<{
|
|
|
50
61
|
}>>;
|
|
51
62
|
platformIdentity: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
52
63
|
clientVersion: z.ZodOptional<z.ZodString>;
|
|
64
|
+
mode: z.ZodOptional<z.ZodEnum<{
|
|
65
|
+
agent: "agent";
|
|
66
|
+
observer: "observer";
|
|
67
|
+
}>>;
|
|
53
68
|
}, z.core.$strict>;
|
|
54
69
|
/**
|
|
55
70
|
* Create peer management routes sub-router.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../src/routes/peers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C
|
|
1
|
+
{"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../src/routes/peers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAQ7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;kBAmBnC,CAAC;AAsBZ;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,WAAW,EACxB,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,IAAI,CAAC,SAAS,CAAC,CAsOjB"}
|
package/dist/routes/peers.js
CHANGED
|
@@ -12,12 +12,18 @@ import { createPeerConnectedFrame, createPeerDisconnectedFrame, } from "../ws/fr
|
|
|
12
12
|
* The published schema is typed as `z.ZodType<RegisterPeerRequest>` in its .d.ts,
|
|
13
13
|
* which prevents a TS-clean `.extend()` here without first bumping the shared
|
|
14
14
|
* types package to 3.0.1 (deferred — see audit M1, Path B). Until then, this
|
|
15
|
-
* file mirrors the shape verbatim and adds
|
|
15
|
+
* file mirrors the shape verbatim and adds server-side extensions:
|
|
16
|
+
* - `clientVersion` (server 3.1.4+ / observability)
|
|
17
|
+
* - `mode` (server 3.2.0+ / Phase 17 OBS-01: observer-mode peers)
|
|
18
|
+
*
|
|
19
|
+
* Both extensions ship ahead of the shared-types bump; Phase 18 retires this
|
|
20
|
+
* local mirror in favor of an `.extend()` against the shared schema once
|
|
21
|
+
* @essentialai/cogent 3.0.1+ is published.
|
|
16
22
|
*
|
|
17
23
|
* Drift is guarded by a structural snapshot test in peers.test.ts that imports
|
|
18
24
|
* THIS schema directly and asserts:
|
|
19
25
|
* Object.keys(ExtendedRegisterPeerRequestSchema.shape).sort()
|
|
20
|
-
* === [...Object.keys(publishedShape), "clientVersion"].sort()
|
|
26
|
+
* === [...Object.keys(publishedShape), "clientVersion", "mode"].sort()
|
|
21
27
|
* Failure means @essentialai/cogent shipped a new field on its
|
|
22
28
|
* RegisterPeerRequestSchema and this mirror needs the same addition.
|
|
23
29
|
* The test cannot be silenced by editing a payload — it reads the live schemas.
|
|
@@ -28,6 +34,11 @@ import { createPeerConnectedFrame, createPeerDisconnectedFrame, } from "../ws/fr
|
|
|
28
34
|
* clientVersion shape (audit L3): loose semver MAJOR.MINOR.PATCH with optional
|
|
29
35
|
* pre-release suffix; rejects free-form strings, whitespace, and typos like
|
|
30
36
|
* "client v3.1.6". Defense-in-depth — the field is observability-only.
|
|
37
|
+
*
|
|
38
|
+
* mode (Phase 17 OBS-01): "observer" registers a passive watcher that
|
|
39
|
+
* receives WS frames and remains targetable but never auto-replies. "agent"
|
|
40
|
+
* (default when absent) is the standard CC peer behavior. Pre-3.2.0 clients
|
|
41
|
+
* omit the field entirely; pre-3.2.0 servers reject it (strict schema).
|
|
31
42
|
*/
|
|
32
43
|
export const ExtendedRegisterPeerRequestSchema = z
|
|
33
44
|
.object({
|
|
@@ -43,6 +54,7 @@ export const ExtendedRegisterPeerRequestSchema = z
|
|
|
43
54
|
.regex(/^\d+\.\d+\.\d+(?:-[a-z0-9.-]+)?$/, "clientVersion must be loose semver (e.g. 3.1.7 or 3.1.7-rc1)")
|
|
44
55
|
.max(64)
|
|
45
56
|
.optional(),
|
|
57
|
+
mode: z.enum(["observer", "agent"]).optional(),
|
|
46
58
|
})
|
|
47
59
|
.strict();
|
|
48
60
|
/**
|
|
@@ -82,7 +94,7 @@ export function createPeerRoutes(sessionStore, authService, connectionManager) {
|
|
|
82
94
|
const pathSessionId = c.req.param("sessionId");
|
|
83
95
|
const authSessionId = c.get("sessionId");
|
|
84
96
|
verifySessionMatch(pathSessionId, authSessionId);
|
|
85
|
-
const { peerId, cwd, label, platform, type: peerType, transport, platformIdentity, clientVersion, } = c.req.valid("json");
|
|
97
|
+
const { peerId, cwd, label, platform, type: peerType, transport, platformIdentity, clientVersion, mode, } = c.req.valid("json");
|
|
86
98
|
const now = new Date().toISOString();
|
|
87
99
|
const peerInfo = {
|
|
88
100
|
peerId,
|
|
@@ -102,6 +114,12 @@ export function createPeerRoutes(sessionStore, authService, connectionManager) {
|
|
|
102
114
|
if (clientVersion !== undefined) {
|
|
103
115
|
peerInfo.clientVersion = clientVersion;
|
|
104
116
|
}
|
|
117
|
+
// Same conditional-set pattern for the 3.2.0 mode field (Phase 17 OBS-01).
|
|
118
|
+
// Pre-3.2.0 clients omit the field; we MUST NOT serialize { mode: undefined }
|
|
119
|
+
// into the session state — list-peers consumers expect absent === "agent".
|
|
120
|
+
if (mode !== undefined) {
|
|
121
|
+
peerInfo.mode = mode;
|
|
122
|
+
}
|
|
105
123
|
await sessionStore.updateSession(authSessionId, (state) => {
|
|
106
124
|
// Add peer to session
|
|
107
125
|
state.peers[peerId] = peerInfo;
|
package/dist/routes/peers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peers.js","sourceRoot":"","sources":["../../src/routes/peers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,SAAS,GACV,MAAM,qBAAqB,CAAC;AAM7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACL,wBAAwB,EACxB,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AAEzB
|
|
1
|
+
{"version":3,"file":"peers.js","sourceRoot":"","sources":["../../src/routes/peers.ts"],"names":[],"mappings":"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"}
|