@pairlobby/protocol 0.11.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.
Files changed (55) hide show
  1. package/LICENSE +93 -0
  2. package/README.md +5 -0
  3. package/dist/auto-close.d.ts +34 -0
  4. package/dist/auto-close.d.ts.map +1 -0
  5. package/dist/auto-close.js +12 -0
  6. package/dist/auto-close.js.map +1 -0
  7. package/dist/credentials.d.ts +15 -0
  8. package/dist/credentials.d.ts.map +1 -0
  9. package/dist/credentials.js +48 -0
  10. package/dist/credentials.js.map +1 -0
  11. package/dist/errors.d.ts +23 -0
  12. package/dist/errors.d.ts.map +1 -0
  13. package/dist/errors.js +78 -0
  14. package/dist/errors.js.map +1 -0
  15. package/dist/events.d.ts +3177 -0
  16. package/dist/events.d.ts.map +1 -0
  17. package/dist/events.js +145 -0
  18. package/dist/events.js.map +1 -0
  19. package/dist/handover.d.ts +266 -0
  20. package/dist/handover.d.ts.map +1 -0
  21. package/dist/handover.js +37 -0
  22. package/dist/handover.js.map +1 -0
  23. package/dist/http.d.ts +8849 -0
  24. package/dist/http.d.ts.map +1 -0
  25. package/dist/http.js +157 -0
  26. package/dist/http.js.map +1 -0
  27. package/dist/ids.d.ts +26 -0
  28. package/dist/ids.d.ts.map +1 -0
  29. package/dist/ids.js +46 -0
  30. package/dist/ids.js.map +1 -0
  31. package/dist/index.d.ts +13 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +13 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/limits.d.ts +74 -0
  36. package/dist/limits.d.ts.map +1 -0
  37. package/dist/limits.js +56 -0
  38. package/dist/limits.js.map +1 -0
  39. package/dist/names.d.ts +16 -0
  40. package/dist/names.d.ts.map +1 -0
  41. package/dist/names.js +7 -0
  42. package/dist/names.js.map +1 -0
  43. package/dist/records.d.ts +1109 -0
  44. package/dist/records.d.ts.map +1 -0
  45. package/dist/records.js +169 -0
  46. package/dist/records.js.map +1 -0
  47. package/dist/requests.d.ts +71 -0
  48. package/dist/requests.d.ts.map +1 -0
  49. package/dist/requests.js +93 -0
  50. package/dist/requests.js.map +1 -0
  51. package/dist/wire.d.ts +4266 -0
  52. package/dist/wire.d.ts.map +1 -0
  53. package/dist/wire.js +24 -0
  54. package/dist/wire.js.map +1 -0
  55. package/package.json +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
package/dist/events.js ADDED
@@ -0,0 +1,145 @@
1
+ //! Room events. Clients submit an `EventSubmission`; the server assigns sender,
2
+ //! sequence, id, and timestamp and persists a `RoomEvent`.
3
+ import { z } from 'zod';
4
+ import { NameSource, ParticipantName } from './names.js';
5
+ import { EventId, HandoverId, ParticipantId, RoomId } from './ids.js';
6
+ import { HandoverDocument } from './handover.js';
7
+ import { AutoClosePolicySchema, CloseReasonSchema } from './auto-close.js';
8
+ export const PROTOCOL_VERSION = 1;
9
+ export const PROTOCOL_VERSION_HEADER = 'pairlobby-protocol';
10
+ export const ParticipantKind = z.enum(['agent', 'human']);
11
+ /**
12
+ * A guest may read the room and leave it. Nothing else: no messages, no
13
+ * handovers, no acknowledgements, no invites, no control.
14
+ */
15
+ export const ParticipantRole = z.enum(['guest', 'member', 'controller']);
16
+ /**
17
+ * What an adapter reports actually happened, kept distinct from what the
18
+ * controller asked for. A human message alone never claims cancellation.
19
+ */
20
+ export const ControlOutcome = z.enum(['pause_requested', 'paused_between_turns', 'current_turn_cancelled', 'tool_cancellation_unknown', 'resumed', 'unsupported', 'disconnected']);
21
+ export const AdapterCapabilities = z.object({
22
+ /** The adapter can deliver an unsolicited message into a running session. */
23
+ deliverUnsolicited: z.boolean().default(false),
24
+ /** The adapter can end the model's current turn on request. */
25
+ cancelTurn: z.boolean().default(false),
26
+ /** The adapter can stop a tool the session is currently running. */
27
+ cancelTool: z.boolean().default(false),
28
+ runtime: z.string().min(1).max(128).optional(),
29
+ runtimeVersion: z.string().min(1).max(64).optional()
30
+ });
31
+ const messagePayload = z.object({
32
+ text: z
33
+ .string()
34
+ .min(1)
35
+ .max(32 * 1024)
36
+ .refine((text) => text.trim().length > 0, 'message must not be blank'),
37
+ priority: z.enum(['normal', 'priority']).default('normal'),
38
+ responseStage: z.enum(['progress', 'final']).optional()
39
+ });
40
+ /** A participant confirms receipt of a message; only the target satisfies an addressed request. */
41
+ export const MessageAction = z.enum(['working', 'waiting', 'no_action', 'declined', 'reply_pending', 'done']);
42
+ /** Optional status fields extend the receipt envelope so older clients can still parse it. */
43
+ const messageReceivedPayload = z.object({ eventId: EventId, stage: z.literal('read').optional(), action: MessageAction.optional(), reason: z.string().max(1024).optional(), responseEventId: EventId.optional() });
44
+ const deliveryFailedPayload = z.object({ eventId: EventId, reason: z.string().min(1).max(1024), stage: z.enum(['delivery', 'execution', 'publishing']).optional() });
45
+ const handoverOfferedPayload = z.object({ handoverId: HandoverId, revision: z.number().int().min(1), document: HandoverDocument });
46
+ const handoverAcceptedPayload = z.object({ handoverId: HandoverId, revision: z.number().int().min(1), note: z.string().max(2048).optional() });
47
+ const handoverDeclinedPayload = z.object({ handoverId: HandoverId, revision: z.number().int().min(1), reason: z.string().max(2048).optional() });
48
+ const participantJoinedPayload = z.object({
49
+ participantId: ParticipantId,
50
+ displayName: z.string().min(1).max(64),
51
+ kind: ParticipantKind,
52
+ role: ParticipantRole,
53
+ capabilities: AdapterCapabilities.optional()
54
+ });
55
+ const participantLeftPayload = z.object({ participantId: ParticipantId });
56
+ const participantRevokedPayload = z.object({ participantId: ParticipantId });
57
+ /** `interrupt` asks the receiver to stop the agent's current turn too, not only to hold later work. */
58
+ const controlPausePayload = z.object({ targetParticipantId: ParticipantId, revision: z.number().int().min(1), reason: z.string().max(512).optional(), interrupt: z.boolean().optional() });
59
+ const controlResumePayload = z.object({ targetParticipantId: ParticipantId, revision: z.number().int().min(1) });
60
+ const controlAckPayload = z.object({ targetParticipantId: ParticipantId, revision: z.number().int().min(1), outcome: ControlOutcome, detail: z.string().max(512).optional() });
61
+ /** `reason` is absent on closures recorded before auto-close existed, which were manual. */
62
+ const roomClosedPayload = z.object({ exportWindowEndsAt: z.number().int().nonnegative(), reason: CloseReasonSchema.optional() });
63
+ const roomAutoCloseChangedPayload = z.object({ autoClose: AutoClosePolicySchema, previous: AutoClosePolicySchema });
64
+ const roomRenamedPayload = z.object({ name: z.string().min(1).max(64), previousName: z.string().min(1).max(64) });
65
+ const roomExpiryChangedPayload = z.object({ expiresAt: z.number().int().nonnegative().nullable(), previousExpiresAt: z.number().int().nonnegative().nullable() });
66
+ /** `inviteRole` is present only when the invitation default changed; older clients ignore it. */
67
+ const roomAccessChangedPayload = z.object({ joinPolicy: z.enum(['invite_only', 'open_to_guests']), inviteRole: z.enum(['member', 'guest']).optional() });
68
+ /**
69
+ * An account was asked into the room by its handle, or that invitation was withdrawn.
70
+ * Only a relay with accounts records these; the person's later arrival is an ordinary join.
71
+ */
72
+ const roomInvitationChangedPayload = z.object({ handle: z.string().min(1).max(64), state: z.enum(['invited', 'withdrawn']), role: z.enum(['member', 'guest']).optional(), agents: z.number().int().nonnegative().optional() });
73
+ /** Event types a client may submit. Membership and control events are server-authored. */
74
+ export const CLIENT_EVENT_TYPES = ['message', 'message.received', 'message.delivery_failed', 'handover.offered', 'handover.accepted', 'handover.declined', 'control.ack'];
75
+ export const EventSubmission = z.discriminatedUnion('type', [
76
+ z.object({ type: z.literal('message'), payload: messagePayload }),
77
+ z.object({ type: z.literal('message.received'), payload: messageReceivedPayload }),
78
+ z.object({ type: z.literal('message.delivery_failed'), payload: deliveryFailedPayload }),
79
+ z.object({ type: z.literal('handover.offered'), payload: handoverOfferedPayload }),
80
+ z.object({ type: z.literal('handover.accepted'), payload: handoverAcceptedPayload }),
81
+ z.object({ type: z.literal('handover.declined'), payload: handoverDeclinedPayload }),
82
+ z.object({ type: z.literal('control.ack'), payload: controlAckPayload })
83
+ ]);
84
+ export const EventBody = z.discriminatedUnion('type', [
85
+ z.object({ type: z.literal('message'), payload: messagePayload }),
86
+ z.object({ type: z.literal('message.received'), payload: messageReceivedPayload }),
87
+ z.object({ type: z.literal('message.delivery_failed'), payload: deliveryFailedPayload }),
88
+ z.object({ type: z.literal('handover.offered'), payload: handoverOfferedPayload }),
89
+ z.object({ type: z.literal('handover.accepted'), payload: handoverAcceptedPayload }),
90
+ z.object({ type: z.literal('handover.declined'), payload: handoverDeclinedPayload }),
91
+ z.object({ type: z.literal('participant.joined'), payload: participantJoinedPayload }),
92
+ z.object({ type: z.literal('participant.renamed'), payload: z.object({ participantId: ParticipantId, previousName: z.string(), name: ParticipantName, source: NameSource }) }),
93
+ z.object({ type: z.literal('participant.left'), payload: participantLeftPayload }),
94
+ z.object({ type: z.literal('participant.revoked'), payload: participantRevokedPayload }),
95
+ z.object({ type: z.literal('control.pause'), payload: controlPausePayload }),
96
+ z.object({ type: z.literal('control.resume'), payload: controlResumePayload }),
97
+ z.object({ type: z.literal('control.ack'), payload: controlAckPayload }),
98
+ z.object({ type: z.literal('room.closed'), payload: roomClosedPayload }),
99
+ z.object({ type: z.literal('room.auto_close_changed'), payload: roomAutoCloseChangedPayload }),
100
+ z.object({ type: z.literal('room.renamed'), payload: roomRenamedPayload }),
101
+ z.object({ type: z.literal('room.expiry_changed'), payload: roomExpiryChangedPayload }),
102
+ z.object({ type: z.literal('room.access_changed'), payload: roomAccessChangedPayload }),
103
+ z.object({ type: z.literal('room.local_join_changed'), payload: z.object({ localJoin: z.boolean() }) }),
104
+ z.object({ type: z.literal('room.invitation_changed'), payload: roomInvitationChangedPayload }),
105
+ z.object({ type: z.literal('room.lock_changed'), payload: z.object({ locked: z.boolean() }) }),
106
+ z.object({ type: z.literal('participant.mute_changed'), payload: z.object({ participantId: ParticipantId, muted: z.boolean() }) }),
107
+ z.object({ type: z.literal('participant.role_changed'), payload: z.object({ participantId: ParticipantId, role: ParticipantRole, previousRole: ParticipantRole }) }),
108
+ z.object({ type: z.literal('conversation.turn_changed'), payload: z.object({ action: z.enum(['claimed', 'working', 'passed', 'skipped', 'cancelled', 'mode']), requestIds: z.array(EventId).max(32), participantIds: z.array(ParticipantId).max(32), mode: z.enum(['sequential', 'parallel']) }) })
109
+ ]);
110
+ const envelope = z.object({
111
+ protocolVersion: z.literal(PROTOCOL_VERSION),
112
+ roomId: RoomId,
113
+ seq: z.number().int().min(1),
114
+ eventId: EventId,
115
+ /** Null for events the server authored on its own behalf, such as expiry-driven closure. */
116
+ senderId: ParticipantId.nullable(),
117
+ idempotencyKey: z.string().min(1).max(128).nullable(),
118
+ /** A routing hint, not a private-message boundary: every member reads the whole transcript. */
119
+ recipientId: ParticipantId.nullable(),
120
+ recipientIds: z.array(ParticipantId).min(1).max(32).optional(),
121
+ /** Preserves whether this group was addressed as all, including an untagged chat message. */
122
+ allRecipients: z.boolean().optional(),
123
+ replyTo: EventId.nullable(),
124
+ /** A conversational follow-up; unlike replyTo, this does not complete a request. */
125
+ quoteOf: EventId.optional(),
126
+ at: z.number().int().nonnegative()
127
+ });
128
+ export const RoomEvent = z.intersection(envelope, EventBody);
129
+ export const SendEventRequest = z.intersection(z.object({
130
+ idempotencyKey: z.string().min(1).max(128),
131
+ recipientId: ParticipantId.optional(),
132
+ recipientIds: z.array(ParticipantId).min(1).max(32).optional(),
133
+ allRecipients: z.boolean().optional(),
134
+ turnToken: z.string().min(16).max(128).optional(),
135
+ replyTo: EventId.optional(),
136
+ quoteOf: EventId.optional()
137
+ }), EventSubmission);
138
+ export function isClientEventType(type) {
139
+ return CLIENT_EVENT_TYPES.includes(type);
140
+ }
141
+ /** Byte size the payload counts against room quota. */
142
+ export function payloadBytes(event) {
143
+ return new TextEncoder().encode(JSON.stringify(event.payload)).length;
144
+ }
145
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,266 @@
1
+ import { z } from 'zod';
2
+ export declare const HandoverMode: z.ZodEnum<["sequential", "concurrent"]>;
3
+ export type HandoverMode = z.infer<typeof HandoverMode>;
4
+ export declare const TestResult: z.ZodEnum<["passed", "failed", "not_run"]>;
5
+ export type TestResult = z.infer<typeof TestResult>;
6
+ export declare const RepositoryRef: z.ZodObject<{
7
+ remote: z.ZodOptional<z.ZodString>;
8
+ branch: z.ZodString;
9
+ commit: z.ZodString;
10
+ worktreePath: z.ZodOptional<z.ZodString>;
11
+ dirty: z.ZodBoolean;
12
+ /** Paths the sender knows the receiver cannot reach yet. Flagged as missing until transferred. */
13
+ missingPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ dirty: boolean;
16
+ branch: string;
17
+ commit: string;
18
+ missingPaths: string[];
19
+ remote?: string | undefined;
20
+ worktreePath?: string | undefined;
21
+ }, {
22
+ dirty: boolean;
23
+ branch: string;
24
+ commit: string;
25
+ remote?: string | undefined;
26
+ worktreePath?: string | undefined;
27
+ missingPaths?: string[] | undefined;
28
+ }>;
29
+ export type RepositoryRef = z.infer<typeof RepositoryRef>;
30
+ export declare const TestsRef: z.ZodObject<{
31
+ command: z.ZodString;
32
+ result: z.ZodEnum<["passed", "failed", "not_run"]>;
33
+ notes: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ command: string;
36
+ result: "passed" | "failed" | "not_run";
37
+ notes?: string | undefined;
38
+ }, {
39
+ command: string;
40
+ result: "passed" | "failed" | "not_run";
41
+ notes?: string | undefined;
42
+ }>;
43
+ export type TestsRef = z.infer<typeof TestsRef>;
44
+ export declare const HandoverMetadata: z.ZodObject<{
45
+ goal: z.ZodString;
46
+ recipient: z.ZodString;
47
+ mode: z.ZodEnum<["sequential", "concurrent"]>;
48
+ nextAction: z.ZodString;
49
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
50
+ blockers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
51
+ repository: z.ZodOptional<z.ZodObject<{
52
+ remote: z.ZodOptional<z.ZodString>;
53
+ branch: z.ZodString;
54
+ commit: z.ZodString;
55
+ worktreePath: z.ZodOptional<z.ZodString>;
56
+ dirty: z.ZodBoolean;
57
+ /** Paths the sender knows the receiver cannot reach yet. Flagged as missing until transferred. */
58
+ missingPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
59
+ }, "strip", z.ZodTypeAny, {
60
+ dirty: boolean;
61
+ branch: string;
62
+ commit: string;
63
+ missingPaths: string[];
64
+ remote?: string | undefined;
65
+ worktreePath?: string | undefined;
66
+ }, {
67
+ dirty: boolean;
68
+ branch: string;
69
+ commit: string;
70
+ remote?: string | undefined;
71
+ worktreePath?: string | undefined;
72
+ missingPaths?: string[] | undefined;
73
+ }>>;
74
+ tests: z.ZodOptional<z.ZodObject<{
75
+ command: z.ZodString;
76
+ result: z.ZodEnum<["passed", "failed", "not_run"]>;
77
+ notes: z.ZodOptional<z.ZodString>;
78
+ }, "strip", z.ZodTypeAny, {
79
+ command: string;
80
+ result: "passed" | "failed" | "not_run";
81
+ notes?: string | undefined;
82
+ }, {
83
+ command: string;
84
+ result: "passed" | "failed" | "not_run";
85
+ notes?: string | undefined;
86
+ }>>;
87
+ }, "strip", z.ZodTypeAny, {
88
+ mode: "sequential" | "concurrent";
89
+ goal: string;
90
+ recipient: string;
91
+ nextAction: string;
92
+ decisions: string[];
93
+ blockers: string[];
94
+ repository?: {
95
+ dirty: boolean;
96
+ branch: string;
97
+ commit: string;
98
+ missingPaths: string[];
99
+ remote?: string | undefined;
100
+ worktreePath?: string | undefined;
101
+ } | undefined;
102
+ tests?: {
103
+ command: string;
104
+ result: "passed" | "failed" | "not_run";
105
+ notes?: string | undefined;
106
+ } | undefined;
107
+ }, {
108
+ mode: "sequential" | "concurrent";
109
+ goal: string;
110
+ recipient: string;
111
+ nextAction: string;
112
+ decisions?: string[] | undefined;
113
+ blockers?: string[] | undefined;
114
+ repository?: {
115
+ dirty: boolean;
116
+ branch: string;
117
+ commit: string;
118
+ remote?: string | undefined;
119
+ worktreePath?: string | undefined;
120
+ missingPaths?: string[] | undefined;
121
+ } | undefined;
122
+ tests?: {
123
+ command: string;
124
+ result: "passed" | "failed" | "not_run";
125
+ notes?: string | undefined;
126
+ } | undefined;
127
+ }>;
128
+ export type HandoverMetadata = z.infer<typeof HandoverMetadata>;
129
+ export declare const HandoverDocument: z.ZodObject<{
130
+ metadata: z.ZodObject<{
131
+ goal: z.ZodString;
132
+ recipient: z.ZodString;
133
+ mode: z.ZodEnum<["sequential", "concurrent"]>;
134
+ nextAction: z.ZodString;
135
+ decisions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
136
+ blockers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
137
+ repository: z.ZodOptional<z.ZodObject<{
138
+ remote: z.ZodOptional<z.ZodString>;
139
+ branch: z.ZodString;
140
+ commit: z.ZodString;
141
+ worktreePath: z.ZodOptional<z.ZodString>;
142
+ dirty: z.ZodBoolean;
143
+ /** Paths the sender knows the receiver cannot reach yet. Flagged as missing until transferred. */
144
+ missingPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
145
+ }, "strip", z.ZodTypeAny, {
146
+ dirty: boolean;
147
+ branch: string;
148
+ commit: string;
149
+ missingPaths: string[];
150
+ remote?: string | undefined;
151
+ worktreePath?: string | undefined;
152
+ }, {
153
+ dirty: boolean;
154
+ branch: string;
155
+ commit: string;
156
+ remote?: string | undefined;
157
+ worktreePath?: string | undefined;
158
+ missingPaths?: string[] | undefined;
159
+ }>>;
160
+ tests: z.ZodOptional<z.ZodObject<{
161
+ command: z.ZodString;
162
+ result: z.ZodEnum<["passed", "failed", "not_run"]>;
163
+ notes: z.ZodOptional<z.ZodString>;
164
+ }, "strip", z.ZodTypeAny, {
165
+ command: string;
166
+ result: "passed" | "failed" | "not_run";
167
+ notes?: string | undefined;
168
+ }, {
169
+ command: string;
170
+ result: "passed" | "failed" | "not_run";
171
+ notes?: string | undefined;
172
+ }>>;
173
+ }, "strip", z.ZodTypeAny, {
174
+ mode: "sequential" | "concurrent";
175
+ goal: string;
176
+ recipient: string;
177
+ nextAction: string;
178
+ decisions: string[];
179
+ blockers: string[];
180
+ repository?: {
181
+ dirty: boolean;
182
+ branch: string;
183
+ commit: string;
184
+ missingPaths: string[];
185
+ remote?: string | undefined;
186
+ worktreePath?: string | undefined;
187
+ } | undefined;
188
+ tests?: {
189
+ command: string;
190
+ result: "passed" | "failed" | "not_run";
191
+ notes?: string | undefined;
192
+ } | undefined;
193
+ }, {
194
+ mode: "sequential" | "concurrent";
195
+ goal: string;
196
+ recipient: string;
197
+ nextAction: string;
198
+ decisions?: string[] | undefined;
199
+ blockers?: string[] | undefined;
200
+ repository?: {
201
+ dirty: boolean;
202
+ branch: string;
203
+ commit: string;
204
+ remote?: string | undefined;
205
+ worktreePath?: string | undefined;
206
+ missingPaths?: string[] | undefined;
207
+ } | undefined;
208
+ tests?: {
209
+ command: string;
210
+ result: "passed" | "failed" | "not_run";
211
+ notes?: string | undefined;
212
+ } | undefined;
213
+ }>;
214
+ /** Current state, completed work, and anything else the sender wrote as prose. */
215
+ body: z.ZodString;
216
+ }, "strip", z.ZodTypeAny, {
217
+ metadata: {
218
+ mode: "sequential" | "concurrent";
219
+ goal: string;
220
+ recipient: string;
221
+ nextAction: string;
222
+ decisions: string[];
223
+ blockers: string[];
224
+ repository?: {
225
+ dirty: boolean;
226
+ branch: string;
227
+ commit: string;
228
+ missingPaths: string[];
229
+ remote?: string | undefined;
230
+ worktreePath?: string | undefined;
231
+ } | undefined;
232
+ tests?: {
233
+ command: string;
234
+ result: "passed" | "failed" | "not_run";
235
+ notes?: string | undefined;
236
+ } | undefined;
237
+ };
238
+ body: string;
239
+ }, {
240
+ metadata: {
241
+ mode: "sequential" | "concurrent";
242
+ goal: string;
243
+ recipient: string;
244
+ nextAction: string;
245
+ decisions?: string[] | undefined;
246
+ blockers?: string[] | undefined;
247
+ repository?: {
248
+ dirty: boolean;
249
+ branch: string;
250
+ commit: string;
251
+ remote?: string | undefined;
252
+ worktreePath?: string | undefined;
253
+ missingPaths?: string[] | undefined;
254
+ } | undefined;
255
+ tests?: {
256
+ command: string;
257
+ result: "passed" | "failed" | "not_run";
258
+ notes?: string | undefined;
259
+ } | undefined;
260
+ };
261
+ body: string;
262
+ }>;
263
+ export type HandoverDocument = z.infer<typeof HandoverDocument>;
264
+ export declare const HandoverState: z.ZodEnum<["offered", "accepted", "declined"]>;
265
+ export type HandoverState = z.infer<typeof HandoverState>;
266
+ //# sourceMappingURL=handover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handover.d.ts","sourceRoot":"","sources":["../src/handover.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,YAAY,yCAAuC,CAAC;AACjE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,UAAU,4CAA0C,CAAC;AAClE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,aAAa;;;;;;IAMtB,kGAAkG;;;;;;;;;;;;;;;;EAEpG,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,QAAQ;;;;;;;;;;;;EAInB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;QAZzB,kGAAkG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqBpG,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;YAxBzB,kGAAkG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0BlG,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEpF,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,aAAa,gDAA8C,CAAC;AACzE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ //! The handover document: machine-readable fields in YAML frontmatter, opaque
2
+ //! prose in the body. A missing or malformed field is a validation error, never
3
+ //! a heading the parser guessed at.
4
+ import { z } from 'zod';
5
+ export const HandoverMode = z.enum(['sequential', 'concurrent']);
6
+ export const TestResult = z.enum(['passed', 'failed', 'not_run']);
7
+ export const RepositoryRef = z.object({
8
+ remote: z.string().min(1).max(512).optional(),
9
+ branch: z.string().min(1).max(256),
10
+ commit: z.string().regex(/^[0-9a-f]{7,40}$/, 'expected a hex commit sha'),
11
+ worktreePath: z.string().min(1).max(1024).optional(),
12
+ dirty: z.boolean(),
13
+ /** Paths the sender knows the receiver cannot reach yet. Flagged as missing until transferred. */
14
+ missingPaths: z.array(z.string().min(1).max(1024)).max(100).default([])
15
+ });
16
+ export const TestsRef = z.object({
17
+ command: z.string().min(1).max(512),
18
+ result: TestResult,
19
+ notes: z.string().max(2048).optional()
20
+ });
21
+ export const HandoverMetadata = z.object({
22
+ goal: z.string().min(1).max(2048),
23
+ recipient: z.string().min(1).max(128),
24
+ mode: HandoverMode,
25
+ nextAction: z.string().min(1).max(2048),
26
+ decisions: z.array(z.string().min(1).max(1024)).max(50).default([]),
27
+ blockers: z.array(z.string().min(1).max(1024)).max(50).default([]),
28
+ repository: RepositoryRef.optional(),
29
+ tests: TestsRef.optional()
30
+ });
31
+ export const HandoverDocument = z.object({
32
+ metadata: HandoverMetadata,
33
+ /** Current state, completed work, and anything else the sender wrote as prose. */
34
+ body: z.string().max(24 * 1024)
35
+ });
36
+ export const HandoverState = z.enum(['offered', 'accepted', 'declined']);
37
+ //# sourceMappingURL=handover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handover.js","sourceRoot":"","sources":["../src/handover.ts"],"names":[],"mappings":"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"}