@essentialai/cogent 3.8.0 → 3.10.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/dist/schemas/api-requests.d.ts +45 -0
- package/dist/schemas/api-requests.d.ts.map +1 -1
- package/dist/schemas/api-requests.js +36 -7
- package/dist/schemas/api-requests.js.map +1 -1
- package/dist/schemas/index.d.ts +1 -1
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +1 -1
- package/dist/schemas/index.js.map +1 -1
- package/dist/types/message.d.ts +34 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +2 -0
- package/dist/types/message.js.map +1 -1
- package/package.json +1 -1
|
@@ -25,6 +25,12 @@ export interface ResolveSessionRequest {
|
|
|
25
25
|
/** Request body for registering a peer in a session. */
|
|
26
26
|
export interface RegisterPeerRequest {
|
|
27
27
|
peerId: string;
|
|
28
|
+
/**
|
|
29
|
+
* AUD-003. Proof that this caller owns `peerId` when the token differs from the one that
|
|
30
|
+
* created it — e.g. this agent re-joined and was issued a new token. Not needed on the common
|
|
31
|
+
* path (same token). Issued once, in the registration response, when the peer is first created.
|
|
32
|
+
*/
|
|
33
|
+
peerSecret?: string;
|
|
28
34
|
cwd: string;
|
|
29
35
|
label: string;
|
|
30
36
|
platform?: "cc" | "codex" | "slack" | "gchat" | "web" | "gemini";
|
|
@@ -45,6 +51,20 @@ export interface SendMessageRequest {
|
|
|
45
51
|
toPeerId: string;
|
|
46
52
|
message: string;
|
|
47
53
|
originPlatform?: "cc" | "codex" | "slack" | "gchat" | "web" | "gemini";
|
|
54
|
+
/**
|
|
55
|
+
* Delivery outcome AS REPORTED BY THE SENDER. The relay cannot observe any of these — only the
|
|
56
|
+
* sender knows whether its wake succeeded, why it failed, and how long it took. Before
|
|
57
|
+
* 2026-09-03 they were absent from this contract and the relay fabricated `success: true` on
|
|
58
|
+
* every record; four consumers then branched on that constant, including the production
|
|
59
|
+
* check-on-stop hook, which read a "could not wake" notice as an ANSWER.
|
|
60
|
+
*
|
|
61
|
+
* Optional and additive: a sender that omits them behaves exactly as before. A client MUST gate
|
|
62
|
+
* sending them on the relay advertising `message-delivery-fields` (GET /api/health), because the
|
|
63
|
+
* accept schema is strict and an older relay rejects unknown keys outright.
|
|
64
|
+
*/
|
|
65
|
+
success?: boolean;
|
|
66
|
+
error?: string | null;
|
|
67
|
+
durationMs?: number | null;
|
|
48
68
|
}
|
|
49
69
|
/** Query parameters for message history retrieval. */
|
|
50
70
|
export interface GetHistoryQuery {
|
|
@@ -57,6 +77,31 @@ export interface PollQuery {
|
|
|
57
77
|
lastMessageId?: string;
|
|
58
78
|
peerId: string;
|
|
59
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* 🔴 AUD-009 — field maxima at the public boundary.
|
|
82
|
+
*
|
|
83
|
+
* Every one of these had a minimum and no maximum, so a single caller could inflate memory, JSON
|
|
84
|
+
* parsing, disk, stored history and every WebSocket fan-out at once. The values are deliberately
|
|
85
|
+
* GENEROUS: the goal is to bound the blast radius of abuse, not to police ordinary use. An agent
|
|
86
|
+
* relaying a long file listing or a large answer must keep working, which is why MESSAGE_MAX sits
|
|
87
|
+
* at 1 MiB rather than something tidy.
|
|
88
|
+
*/
|
|
89
|
+
export declare const FIELD_LIMITS: {
|
|
90
|
+
/** A shared channel secret. Long passphrases are fine; novels are not. */
|
|
91
|
+
readonly SECRET_MAX: 1024;
|
|
92
|
+
/** Org_ID. */
|
|
93
|
+
readonly ORG_ID_MAX: 256;
|
|
94
|
+
/** Peer identifier. */
|
|
95
|
+
readonly PEER_ID_MAX: 128;
|
|
96
|
+
/** Human-readable peer label. */
|
|
97
|
+
readonly PEER_LABEL_MAX: 256;
|
|
98
|
+
/** Working directory — comfortably above PATH_MAX (4096) on every platform we support. */
|
|
99
|
+
readonly CWD_MAX: 8192;
|
|
100
|
+
/** A single message body. */
|
|
101
|
+
readonly MESSAGE_MAX: 1048576;
|
|
102
|
+
/** One platform-identity value (e.g. a Slack user id). */
|
|
103
|
+
readonly PLATFORM_IDENTITY_VALUE_MAX: 512;
|
|
104
|
+
};
|
|
60
105
|
/**
|
|
61
106
|
* Schema for POST /api/sessions request body.
|
|
62
107
|
* Creates a new bridge session with a shared secret.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-requests.d.ts","sourceRoot":"","sources":["../../src/schemas/api-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,oDAAoD;AACpD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACjE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,8GAA8G;IAC9G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2HAA2H;IAC3H,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;CAAG;AAEzC,wDAAwD;AACxD,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"api-requests.d.ts","sourceRoot":"","sources":["../../src/schemas/api-requests.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,29 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* 🔴 AUD-009 — field maxima at the public boundary.
|
|
4
|
+
*
|
|
5
|
+
* Every one of these had a minimum and no maximum, so a single caller could inflate memory, JSON
|
|
6
|
+
* parsing, disk, stored history and every WebSocket fan-out at once. The values are deliberately
|
|
7
|
+
* GENEROUS: the goal is to bound the blast radius of abuse, not to police ordinary use. An agent
|
|
8
|
+
* relaying a long file listing or a large answer must keep working, which is why MESSAGE_MAX sits
|
|
9
|
+
* at 1 MiB rather than something tidy.
|
|
10
|
+
*/
|
|
11
|
+
export const FIELD_LIMITS = {
|
|
12
|
+
/** A shared channel secret. Long passphrases are fine; novels are not. */
|
|
13
|
+
SECRET_MAX: 1024,
|
|
14
|
+
/** Org_ID. */
|
|
15
|
+
ORG_ID_MAX: 256,
|
|
16
|
+
/** Peer identifier. */
|
|
17
|
+
PEER_ID_MAX: 128,
|
|
18
|
+
/** Human-readable peer label. */
|
|
19
|
+
PEER_LABEL_MAX: 256,
|
|
20
|
+
/** Working directory — comfortably above PATH_MAX (4096) on every platform we support. */
|
|
21
|
+
CWD_MAX: 8192,
|
|
22
|
+
/** A single message body. */
|
|
23
|
+
MESSAGE_MAX: 1_048_576,
|
|
24
|
+
/** One platform-identity value (e.g. a Slack user id). */
|
|
25
|
+
PLATFORM_IDENTITY_VALUE_MAX: 512,
|
|
26
|
+
};
|
|
2
27
|
// --- Zod schemas (source of truth) ---
|
|
3
28
|
/**
|
|
4
29
|
* Schema for POST /api/sessions request body.
|
|
@@ -7,8 +32,8 @@ import { z } from "zod";
|
|
|
7
32
|
export const CreateSessionRequestSchema = z
|
|
8
33
|
.object({
|
|
9
34
|
label: z.string().regex(/^[a-z0-9][a-z0-9-]{1,30}[a-z0-9]$/).optional().describe("Optional human-readable session label (3-32 lowercase alphanumeric + hyphens)"),
|
|
10
|
-
secret: z.string().min(8).describe("Shared secret for joining the session (min 8 chars)"),
|
|
11
|
-
orgId: z.string().min(1).optional().describe("Optional Org_ID -- gates the channel to Business Edition orgs (multi-tenant relay only)"),
|
|
35
|
+
secret: z.string().min(8).max(FIELD_LIMITS.SECRET_MAX).describe("Shared secret for joining the session (min 8 chars)"),
|
|
36
|
+
orgId: z.string().min(1).max(FIELD_LIMITS.ORG_ID_MAX).optional().describe("Optional Org_ID -- gates the channel to Business Edition orgs (multi-tenant relay only)"),
|
|
12
37
|
})
|
|
13
38
|
.strict();
|
|
14
39
|
/**
|
|
@@ -38,13 +63,14 @@ export const ResolveSessionRequestSchema = z
|
|
|
38
63
|
*/
|
|
39
64
|
export const RegisterPeerRequestSchema = z
|
|
40
65
|
.object({
|
|
41
|
-
peerId: z.string().min(1).describe("Unique peer identifier"),
|
|
42
|
-
|
|
43
|
-
|
|
66
|
+
peerId: z.string().min(1).max(FIELD_LIMITS.PEER_ID_MAX).describe("Unique peer identifier"),
|
|
67
|
+
peerSecret: z.string().min(1).max(256).optional().describe("AUD-003: proof of ownership when reclaiming a peer from a different token"),
|
|
68
|
+
cwd: z.string().max(FIELD_LIMITS.CWD_MAX).describe("Peer working directory path"),
|
|
69
|
+
label: z.string().max(FIELD_LIMITS.PEER_LABEL_MAX).describe("Human-readable peer label"),
|
|
44
70
|
platform: z.enum(["cc", "codex", "slack", "gchat", "web", "gemini"]).optional().describe("Platform this peer belongs to"),
|
|
45
71
|
type: z.enum(["agent", "human"]).optional().describe("Peer type"),
|
|
46
72
|
transport: z.enum(["ws", "slack-bot", "gchat-bot", "websocket"]).optional().describe("Transport mechanism"),
|
|
47
|
-
platformIdentity: z.record(z.string(), z.string()).optional().describe("Platform-specific identity fields"),
|
|
73
|
+
platformIdentity: z.record(z.string().max(64), z.string().max(FIELD_LIMITS.PLATFORM_IDENTITY_VALUE_MAX)).optional().describe("Platform-specific identity fields"),
|
|
48
74
|
role: z.string().max(64).optional().describe("A2A role advertised by this peer (Agent Card)"),
|
|
49
75
|
capabilities: z.array(z.string().max(64)).max(16).optional().describe("Capability strings → A2A Agent Card skills[]"),
|
|
50
76
|
})
|
|
@@ -64,8 +90,11 @@ export const SendMessageRequestSchema = z
|
|
|
64
90
|
.object({
|
|
65
91
|
fromPeerId: z.string().min(1).describe("Sender peer ID"),
|
|
66
92
|
toPeerId: z.string().min(1).describe("Recipient peer ID (use '*' for broadcast)"),
|
|
67
|
-
message: z.string().min(1).describe("Message content"),
|
|
93
|
+
message: z.string().min(1).max(FIELD_LIMITS.MESSAGE_MAX).describe("Message content"),
|
|
68
94
|
originPlatform: z.enum(["cc", "codex", "slack", "gchat", "web", "gemini"]).optional().describe("Platform originating this message"),
|
|
95
|
+
success: z.boolean().optional().describe("Delivery outcome as reported by the sender"),
|
|
96
|
+
error: z.string().nullable().optional().describe("Failure code as reported by the sender"),
|
|
97
|
+
durationMs: z.number().int().nonnegative().nullable().optional().describe("Sender-measured duration"),
|
|
69
98
|
})
|
|
70
99
|
.strict();
|
|
71
100
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-requests.js","sourceRoot":"","sources":["../../src/schemas/api-requests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"api-requests.js","sourceRoot":"","sources":["../../src/schemas/api-requests.ts"],"names":[],"mappings":"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"}
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { CreateSessionRequestSchema, type CreateSessionRequest, JoinSessionRequestSchema, type JoinSessionRequest, ResolveSessionRequestSchema, type ResolveSessionRequest, RegisterPeerRequestSchema, type RegisterPeerRequest, DeregisterPeerRequestSchema, type DeregisterPeerRequest, SendMessageRequestSchema, type SendMessageRequest, GetHistoryQuerySchema, type GetHistoryQuery, PollQuerySchema, type PollQuery, } from "./api-requests.js";
|
|
1
|
+
export { CreateSessionRequestSchema, type CreateSessionRequest, JoinSessionRequestSchema, type JoinSessionRequest, ResolveSessionRequestSchema, type ResolveSessionRequest, RegisterPeerRequestSchema, type RegisterPeerRequest, DeregisterPeerRequestSchema, type DeregisterPeerRequest, SendMessageRequestSchema, type SendMessageRequest, GetHistoryQuerySchema, type GetHistoryQuery, PollQuerySchema, type PollQuery, FIELD_LIMITS, } from "./api-requests.js";
|
|
2
2
|
export { CreateSessionResponseSchema, type CreateSessionResponse, JoinSessionResponseSchema, type JoinSessionResponse, RegisterPeerResponseSchema, ListPeersResponseSchema, type ListPeersResponse, SendMessageResponseSchema, type SendMessageResponse, GetHistoryResponseSchema, type GetHistoryResponse, HealthResponseSchema, type HealthResponse, PeerEventSchema, type PeerEvent, PollResponseSchema, type PollResponse, ErrorResponseSchema, } from "./api-responses.js";
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,KAAK,eAAe,EACpB,eAAe,EACf,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,qBAAqB,EACrB,KAAK,eAAe,EACpB,eAAe,EACf,KAAK,SAAS,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,oBAAoB,EACpB,KAAK,cAAc,EACnB,eAAe,EACf,KAAK,SAAS,EACd,kBAAkB,EAClB,KAAK,YAAY,EACjB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
package/dist/schemas/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { CreateSessionRequestSchema, JoinSessionRequestSchema, ResolveSessionRequestSchema, RegisterPeerRequestSchema, DeregisterPeerRequestSchema, SendMessageRequestSchema, GetHistoryQuerySchema, PollQuerySchema, } from "./api-requests.js";
|
|
1
|
+
export { CreateSessionRequestSchema, JoinSessionRequestSchema, ResolveSessionRequestSchema, RegisterPeerRequestSchema, DeregisterPeerRequestSchema, SendMessageRequestSchema, GetHistoryQuerySchema, PollQuerySchema, FIELD_LIMITS, } from "./api-requests.js";
|
|
2
2
|
export { CreateSessionResponseSchema, JoinSessionResponseSchema, RegisterPeerResponseSchema, ListPeersResponseSchema, SendMessageResponseSchema, GetHistoryResponseSchema, HealthResponseSchema, PeerEventSchema, PollResponseSchema, ErrorResponseSchema, } from "./api-responses.js";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,EAExB,2BAA2B,EAE3B,yBAAyB,EAEzB,2BAA2B,EAE3B,wBAAwB,EAExB,qBAAqB,EAErB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAE1B,wBAAwB,EAExB,2BAA2B,EAE3B,yBAAyB,EAEzB,2BAA2B,EAE3B,wBAAwB,EAExB,qBAAqB,EAErB,eAAe,EAEf,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,2BAA2B,EAE3B,yBAAyB,EAEzB,0BAA0B,EAC1B,uBAAuB,EAEvB,yBAAyB,EAEzB,wBAAwB,EAExB,oBAAoB,EAEpB,eAAe,EAEf,kBAAkB,EAElB,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
package/dist/types/message.d.ts
CHANGED
|
@@ -28,6 +28,40 @@ export interface MessageRecord {
|
|
|
28
28
|
timestamp: string;
|
|
29
29
|
durationMs: number | null;
|
|
30
30
|
success: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* A directed send that was delivered and acknowledged, but whose reply had not arrived within
|
|
33
|
+
* the fast-path window. `success: true` with `response: null` and `pending: true` means "the
|
|
34
|
+
* answer is still coming"; the same record WITHOUT pending means "nothing came back". Before
|
|
35
|
+
* 2026-09-03 the relay accepted this field on PATCH and silently dropped it, so history could
|
|
36
|
+
* not tell those two apart (AUD-005).
|
|
37
|
+
*/
|
|
38
|
+
pending?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* The SENDER declares this message terminal: it conveys information and expects no reply.
|
|
41
|
+
* Absent/true === today's behaviour (a directed message demands an answer).
|
|
42
|
+
*
|
|
43
|
+
* 🔴 WHY THIS IS A WIRE FIELD AND NOT A CONVENTION IN THE TEXT (2026-09-21). Rail C decides
|
|
44
|
+
* "unanswered" from ADDRESSING alone: a directed message to me is pending until I send a
|
|
45
|
+
* directed reply to its sender. A terminal acknowledgement is still a directed message, so it
|
|
46
|
+
* demands a reply, and that reply is itself directed — two agents running the same hook
|
|
47
|
+
* acknowledge each other forever. Observed live between po-backend and po-integrator, which
|
|
48
|
+
* burned turns exchanging ACKs and then NEGOTIATED A PROSE PROTOCOL between themselves
|
|
49
|
+
* ("send closures as undirected broadcasts", `ACK_*` prefixes, "no reply needed" in the body).
|
|
50
|
+
* The hook reads addressing, not prose, so none of it could work — and the agreed workaround
|
|
51
|
+
* was structurally incapable of clearing anything, because a broadcast never clears a directed
|
|
52
|
+
* message (check-on-stop.lib.mjs:137-141).
|
|
53
|
+
*
|
|
54
|
+
* memory/typescript-master-vault/concepts/Typesafe_Protocols.md names this exactly: a protocol
|
|
55
|
+
* describes every legal message "along with the expected shape of any response", and when that
|
|
56
|
+
* expectation is "described informally — in documentation, comments, or untyped JSON schemas"
|
|
57
|
+
* the two ends drift. So the expectation becomes a typed field the receiver can act on, rather
|
|
58
|
+
* than an English sentence two agents have to agree to honour.
|
|
59
|
+
*
|
|
60
|
+
* Deliberately a boolean, not a `kind` discriminated union (which the same vault note would
|
|
61
|
+
* otherwise favour): the only consumer needs exactly one bit, and a union would be mapped
|
|
62
|
+
* straight back down to it. CLAUDE.md — do not over-design.
|
|
63
|
+
*/
|
|
64
|
+
replyExpected?: boolean;
|
|
31
65
|
error: string | null;
|
|
32
66
|
/** Platform that originated this message -- used for echo suppression in multi-platform sessions. */
|
|
33
67
|
originPlatform?: "cc" | "codex" | "slack" | "gchat" | "web" | "gemini" | "whatsapp" | "telegram" | "discord";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAQiC,CAAC;AAErF,4FAA4F;AAC5F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qGAAqG;IACrG,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7G,sFAAsF;IACtF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kGAAkG;IAClG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,eAAO,MAAM,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAQiC,CAAC;AAErF,4FAA4F;AAC5F,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qGAAqG;IACrG,cAAc,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC7G,sFAAsF;IACtF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAcvD,CAAC"}
|
package/dist/types/message.js
CHANGED
|
@@ -21,6 +21,8 @@ export const MessageRecordSchema = z.object({
|
|
|
21
21
|
timestamp: z.string().datetime().describe("ISO 8601 message timestamp"),
|
|
22
22
|
durationMs: z.number().nullable().describe("Round-trip duration in ms"),
|
|
23
23
|
success: z.boolean().describe("Whether delivery succeeded"),
|
|
24
|
+
pending: z.boolean().optional().describe("Delivered+acked; the reply is still expected"),
|
|
25
|
+
replyExpected: z.boolean().optional().describe("Sender declares the message terminal — no reply expected. Absent/true = a reply is expected."),
|
|
24
26
|
error: z.string().nullable().describe("Error message if delivery failed"),
|
|
25
27
|
originPlatform: z.enum(["cc", "codex", "slack", "gchat", "web", "gemini", "whatsapp", "telegram", "discord"]).optional().describe("Platform that originated this message"),
|
|
26
28
|
attachments: z.array(AttachmentSchema).optional().describe("Cogent Mail M2.5 — file references (byte transport = email)"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC;KACrD,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACrE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC1E,CAAC;KACD,QAAQ,CAAC,uEAAuE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAqBxB,MAAM,CAAC,MAAM,gBAAgB,GAA0B,CAAC;KACrD,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IACrE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC/D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;CAC1E,CAAC;KACD,QAAQ,CAAC,uEAAuE,CAAC,CAAC;AAqDrF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B,CAAC,CAAC,MAAM,CAAC;IACpE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IAC3D,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IACxD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACrE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IAC3D,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;IACxF,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;IAC9I,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IACzE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAC1K,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;CAC1H,CAAC,CAAC"}
|