@isoplan/protocol 0.3.1 → 0.3.3

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/README.md CHANGED
@@ -11,7 +11,7 @@ ES module only, with TypeScript types. Depends on zod 4.
11
11
  ## What is in it
12
12
 
13
13
  - **Facts** (`FactsSchema` and its parts: `SessionFactSchema`, `AgentFactSchema`, `FileFactSchema`, `WaitFactSchema`, `ReportFactSchema`, `QuestionFactSchema`): what one session reports, the shape a data layer sends and a server stores.
14
- - **Messages**: `DataLayerMessageSchema` for what a data layer or runner sends (hellos, full facts, changes, replies, refusals, and the hand-over, take and taken steps of a handoff), and `OfficeServerMessageSchema` for what a server sends back (repair, conflict, error, request, release and handoff). Each message type has its own schema and type as well, such as `HelloMessage` or `RequestMessage`.
14
+ - **Messages**: `DataLayerMessageSchema` for what a data layer or runner sends (hellos, full facts, changes, replies, refusals, and the hand-over, take and taken steps of a handoff, and ask-room, ask-check and asked-ack for asking a handed-over room a question), and `OfficeServerMessageSchema` for what a server sends back (repair, conflict, error, request, release, handoff, asked, where a question stands, and ask-rights, whether a session may ask). Each message type has its own schema and type as well, such as `HelloMessage` or `RequestMessage`.
15
15
  - **`PROTOCOL_VERSION`**: the version both sides speak. A message's `v` must match it.
16
16
  - **`projectId(remoteUrl, { machine, root })`**: a repository's project id, `host/owner/repo` from its git remote whatever form the remote is written in, or `local:<machine>/<root>` without one.
17
17
 
package/dist/facts.d.ts CHANGED
@@ -2,6 +2,11 @@ import { z } from "zod";
2
2
  export declare const SourceSchema: z.ZodEnum<{
3
3
  "claude-code": "claude-code";
4
4
  }>;
5
+ /** A project: one code repository, by its id (see projectId) and a short name. */
6
+ export declare const ProjectSchema: z.ZodObject<{
7
+ id: z.ZodString;
8
+ name: z.ZodString;
9
+ }, z.core.$strip>;
5
10
  export declare const SessionFactSchema: z.ZodObject<{
6
11
  id: z.ZodString;
7
12
  source: z.ZodEnum<{
@@ -46,6 +51,11 @@ export declare const AgentFactSchema: z.ZodObject<{
46
51
  statusSince: z.ZodISODateTime;
47
52
  lastActive: z.ZodISODateTime;
48
53
  doing: z.ZodNullable<z.ZodObject<{
54
+ project: z.ZodOptional<z.ZodObject<{
55
+ id: z.ZodString;
56
+ name: z.ZodString;
57
+ }, z.core.$strip>>;
58
+ away: z.ZodOptional<z.ZodBoolean>;
49
59
  kind: z.ZodEnum<{
50
60
  read: "read";
51
61
  run: "run";
@@ -77,8 +87,16 @@ export declare const AgentFactSchema: z.ZodObject<{
77
87
  branch: z.ZodOptional<z.ZodNullable<z.ZodString>>;
78
88
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
79
89
  }, z.core.$strip>;
80
- /** An edit or a read: `file` is relative to the repo root, with forward slashes. */
90
+ /**
91
+ * An edit or a read: `file` is relative to its repo's root, with forward slashes. One is known by
92
+ * its agent, file and project, so one agent's README.md at home and in another repo are two.
93
+ */
81
94
  export declare const FileFactSchema: z.ZodObject<{
95
+ project: z.ZodOptional<z.ZodObject<{
96
+ id: z.ZodString;
97
+ name: z.ZodString;
98
+ }, z.core.$strip>>;
99
+ away: z.ZodOptional<z.ZodBoolean>;
82
100
  agent: z.ZodString;
83
101
  file: z.ZodString;
84
102
  at: z.ZodISODateTime;
@@ -107,7 +125,11 @@ export declare const ReportFactSchema: z.ZodObject<{
107
125
  /**
108
126
  * A question an agent asked its owner, open until it is answered, so the floor can show it and the
109
127
  * owner can answer it there. One of the named cases of session-derived text leaving a machine: the
110
- * server keeps it only for the retention period. `id` is the tool call's own id.
128
+ * server keeps it only for the retention period. `id` is the tool call's own id. `answerable`: the
129
+ * session's own plugin is waiting for it, so an answer from the floor reaches it; without it (a
130
+ * session seen only through the wake hook, a question asked before the plugin loaded) the floor
131
+ * shows the question read-only. `withheld`: the secret scan matched its text, or the patterns
132
+ * couldn't be read, so `questions` is only a placeholder; it is answered in the terminal.
111
133
  */
112
134
  export declare const QuestionFactSchema: z.ZodObject<{
113
135
  id: z.ZodString;
@@ -122,6 +144,8 @@ export declare const QuestionFactSchema: z.ZodObject<{
122
144
  }, z.core.$strip>>;
123
145
  multiSelect: z.ZodBoolean;
124
146
  }, z.core.$strip>>;
147
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
148
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
125
149
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
126
150
  }, z.core.$strip>;
127
151
  export declare const FactsSchema: z.ZodObject<{
@@ -169,6 +193,11 @@ export declare const FactsSchema: z.ZodObject<{
169
193
  statusSince: z.ZodISODateTime;
170
194
  lastActive: z.ZodISODateTime;
171
195
  doing: z.ZodNullable<z.ZodObject<{
196
+ project: z.ZodOptional<z.ZodObject<{
197
+ id: z.ZodString;
198
+ name: z.ZodString;
199
+ }, z.core.$strip>>;
200
+ away: z.ZodOptional<z.ZodBoolean>;
172
201
  kind: z.ZodEnum<{
173
202
  read: "read";
174
203
  run: "run";
@@ -201,12 +230,22 @@ export declare const FactsSchema: z.ZodObject<{
201
230
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
202
231
  }, z.core.$strip>>;
203
232
  edits: z.ZodArray<z.ZodObject<{
233
+ project: z.ZodOptional<z.ZodObject<{
234
+ id: z.ZodString;
235
+ name: z.ZodString;
236
+ }, z.core.$strip>>;
237
+ away: z.ZodOptional<z.ZodBoolean>;
204
238
  agent: z.ZodString;
205
239
  file: z.ZodString;
206
240
  at: z.ZodISODateTime;
207
241
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
208
242
  }, z.core.$strip>>;
209
243
  reads: z.ZodArray<z.ZodObject<{
244
+ project: z.ZodOptional<z.ZodObject<{
245
+ id: z.ZodString;
246
+ name: z.ZodString;
247
+ }, z.core.$strip>>;
248
+ away: z.ZodOptional<z.ZodBoolean>;
210
249
  agent: z.ZodString;
211
250
  file: z.ZodString;
212
251
  at: z.ZodISODateTime;
@@ -240,6 +279,8 @@ export declare const FactsSchema: z.ZodObject<{
240
279
  }, z.core.$strip>>;
241
280
  multiSelect: z.ZodBoolean;
242
281
  }, z.core.$strip>>;
282
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
283
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
243
284
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
244
285
  }, z.core.$strip>>>;
245
286
  }, z.core.$strip>;
@@ -289,6 +330,11 @@ export declare const FactUpsertSchema: z.ZodObject<{
289
330
  statusSince: z.ZodISODateTime;
290
331
  lastActive: z.ZodISODateTime;
291
332
  doing: z.ZodNullable<z.ZodObject<{
333
+ project: z.ZodOptional<z.ZodObject<{
334
+ id: z.ZodString;
335
+ name: z.ZodString;
336
+ }, z.core.$strip>>;
337
+ away: z.ZodOptional<z.ZodBoolean>;
292
338
  kind: z.ZodEnum<{
293
339
  read: "read";
294
340
  run: "run";
@@ -321,12 +367,22 @@ export declare const FactUpsertSchema: z.ZodObject<{
321
367
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
322
368
  }, z.core.$strip>>>;
323
369
  edits: z.ZodOptional<z.ZodArray<z.ZodObject<{
370
+ project: z.ZodOptional<z.ZodObject<{
371
+ id: z.ZodString;
372
+ name: z.ZodString;
373
+ }, z.core.$strip>>;
374
+ away: z.ZodOptional<z.ZodBoolean>;
324
375
  agent: z.ZodString;
325
376
  file: z.ZodString;
326
377
  at: z.ZodISODateTime;
327
378
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
328
379
  }, z.core.$strip>>>;
329
380
  reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
381
+ project: z.ZodOptional<z.ZodObject<{
382
+ id: z.ZodString;
383
+ name: z.ZodString;
384
+ }, z.core.$strip>>;
385
+ away: z.ZodOptional<z.ZodBoolean>;
330
386
  agent: z.ZodString;
331
387
  file: z.ZodString;
332
388
  at: z.ZodISODateTime;
@@ -360,21 +416,32 @@ export declare const FactUpsertSchema: z.ZodObject<{
360
416
  }, z.core.$strip>>;
361
417
  multiSelect: z.ZodBoolean;
362
418
  }, z.core.$strip>>;
419
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
420
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
363
421
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
364
422
  }, z.core.$strip>>>;
365
423
  }, z.core.$strip>;
366
424
  /**
367
- * The keys of records that went away: an agent by its id, an edit or read by agent and file, a
425
+ * The keys of records that went away: an agent by its id, an edit or read by agent, file and
426
+ * project (absent for the session's own), a
368
427
  * wait by waiter and on, a report by its agent, a question by its id. The session itself goes with
369
428
  * the connection.
370
429
  */
371
430
  export declare const FactRemoveSchema: z.ZodObject<{
372
431
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
373
432
  edits: z.ZodOptional<z.ZodArray<z.ZodObject<{
433
+ project: z.ZodOptional<z.ZodObject<{
434
+ id: z.ZodString;
435
+ name: z.ZodString;
436
+ }, z.core.$strip>>;
374
437
  agent: z.ZodString;
375
438
  file: z.ZodString;
376
439
  }, z.core.$strip>>>;
377
440
  reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
441
+ project: z.ZodOptional<z.ZodObject<{
442
+ id: z.ZodString;
443
+ name: z.ZodString;
444
+ }, z.core.$strip>>;
378
445
  agent: z.ZodString;
379
446
  file: z.ZodString;
380
447
  }, z.core.$strip>>>;
@@ -386,6 +453,7 @@ export declare const FactRemoveSchema: z.ZodObject<{
386
453
  questions: z.ZodOptional<z.ZodArray<z.ZodString>>;
387
454
  }, z.core.$strip>;
388
455
  export type Source = z.infer<typeof SourceSchema>;
456
+ export type Project = z.infer<typeof ProjectSchema>;
389
457
  export type SessionFact = z.infer<typeof SessionFactSchema>;
390
458
  export type AgentFact = z.infer<typeof AgentFactSchema>;
391
459
  export type FileFact = z.infer<typeof FileFactSchema>;
package/dist/facts.js CHANGED
@@ -6,6 +6,23 @@ const Time = z.iso.datetime({ offset: true });
6
6
  /** Tool-specific detail that views never rely on. */
7
7
  const Extra = z.record(z.string(), z.unknown()).optional();
8
8
  export const SourceSchema = z.enum(["claude-code"]);
9
+ /** A project: one code repository, by its id (see projectId) and a short name. */
10
+ export const ProjectSchema = z.object({
11
+ id: z.string().min(1),
12
+ name: z.string().min(1),
13
+ });
14
+ /**
15
+ * Where a file or a command lands when it isn't in the session's own project (#74): `project` is
16
+ * the repo it is in, and `away` is true when that repo is outside the session's folder, so the
17
+ * agent is working away from home; a repo inside the folder (a workspace above several repos) has
18
+ * `project` and no `away`. Both absent: the session's own project, as for a peer that predates
19
+ * them. A data layer sends them only to a server that said it reads them (`welcome`), and only for
20
+ * a project the server's office holds; anything else stays on the machine.
21
+ */
22
+ const Elsewhere = {
23
+ project: ProjectSchema.optional(),
24
+ away: z.boolean().optional(),
25
+ };
9
26
  export const SessionFactSchema = z.object({
10
27
  id: z.string().min(1),
11
28
  source: SourceSchema,
@@ -42,6 +59,7 @@ export const AgentFactSchema = z.object({
42
59
  kind: z.enum(["write", "read", "run", "search", "talk"]),
43
60
  file: z.string().optional(),
44
61
  since: Time,
62
+ ...Elsewhere,
45
63
  })
46
64
  .nullable(),
47
65
  usage: TokenCounts.extend({
@@ -54,11 +72,15 @@ export const AgentFactSchema = z.object({
54
72
  branch: z.string().nullable().optional(),
55
73
  extra: Extra,
56
74
  });
57
- /** An edit or a read: `file` is relative to the repo root, with forward slashes. */
75
+ /**
76
+ * An edit or a read: `file` is relative to its repo's root, with forward slashes. One is known by
77
+ * its agent, file and project, so one agent's README.md at home and in another repo are two.
78
+ */
58
79
  export const FileFactSchema = z.object({
59
80
  agent: z.string().min(1),
60
81
  file: z.string().min(1),
61
82
  at: Time,
83
+ ...Elsewhere,
62
84
  extra: Extra,
63
85
  });
64
86
  export const WaitFactSchema = z.object({
@@ -82,7 +104,11 @@ export const ReportFactSchema = z.object({
82
104
  /**
83
105
  * A question an agent asked its owner, open until it is answered, so the floor can show it and the
84
106
  * owner can answer it there. One of the named cases of session-derived text leaving a machine: the
85
- * server keeps it only for the retention period. `id` is the tool call's own id.
107
+ * server keeps it only for the retention period. `id` is the tool call's own id. `answerable`: the
108
+ * session's own plugin is waiting for it, so an answer from the floor reaches it; without it (a
109
+ * session seen only through the wake hook, a question asked before the plugin loaded) the floor
110
+ * shows the question read-only. `withheld`: the secret scan matched its text, or the patterns
111
+ * couldn't be read, so `questions` is only a placeholder; it is answered in the terminal.
86
112
  */
87
113
  export const QuestionFactSchema = z.object({
88
114
  id: z.string().min(1),
@@ -96,6 +122,8 @@ export const QuestionFactSchema = z.object({
96
122
  multiSelect: z.boolean(),
97
123
  }))
98
124
  .min(1),
125
+ answerable: z.literal(true).optional(),
126
+ withheld: z.literal(true).optional(),
99
127
  extra: Extra,
100
128
  });
101
129
  export const FactsSchema = z.object({
@@ -118,9 +146,10 @@ export const FactUpsertSchema = z.object({
118
146
  reports: z.array(ReportFactSchema).optional(),
119
147
  questions: z.array(QuestionFactSchema).optional(),
120
148
  });
121
- const FileKey = FileFactSchema.pick({ agent: true, file: true });
149
+ const FileKey = FileFactSchema.pick({ agent: true, file: true, project: true });
122
150
  /**
123
- * The keys of records that went away: an agent by its id, an edit or read by agent and file, a
151
+ * The keys of records that went away: an agent by its id, an edit or read by agent, file and
152
+ * project (absent for the session's own), a
124
153
  * wait by waiter and on, a report by its agent, a question by its id. The session itself goes with
125
154
  * the connection.
126
155
  */
package/dist/facts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"facts.js","sourceRoot":"","sources":["../src/facts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facts.js","sourceRoot":"","sources":["../src/facts.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,17 @@ import { z } from "zod";
4
4
  * changing what a field means, or removing one, does.
5
5
  */
6
6
  export declare const PROTOCOL_VERSION = 1;
7
- export declare const ProjectSchema: z.ZodObject<{
8
- id: z.ZodString;
9
- name: z.ZodString;
10
- }, z.core.$strip>;
7
+ /**
8
+ * Whether a path segment is one Windows reads as `.git`: the name before any NTFS stream
9
+ * (`.git::$INDEX_ALLOCATION`), its trailing dots and spaces dropped, in any case, or the 8.3 short
10
+ * name of a folder that starts with `.git`.
11
+ */
12
+ export declare const isGitFolder: (segment: string) => boolean;
11
13
  /**
12
14
  * One repo a handoff pushed: its path in the session's folder (`.` for the folder itself), remote,
13
15
  * branch and commit. A handoff drives git on the receiver's machine, so the path stays inside the
14
- * folder and the remote can't name a transport helper such as `ext::`, which runs a command.
16
+ * folder, out of any `.git` folder (in any spelling Windows reads as one: `.GIT.`, `.git `, `GIT~1`),
17
+ * with no `:` (an NTFS stream, such as `.git::$INDEX_ALLOCATION`), and the remote can't name a transport helper such as `ext::`, which runs a command.
15
18
  */
16
19
  export declare const HandoffRepoSchema: z.ZodObject<{
17
20
  path: z.ZodString;
@@ -19,7 +22,11 @@ export declare const HandoffRepoSchema: z.ZodObject<{
19
22
  branch: z.ZodString;
20
23
  commit: z.ZodString;
21
24
  }, z.core.$strip>;
22
- /** What the receiver gets: the brief, and every repo pushed for it, each on the handoff's own branch. */
25
+ /**
26
+ * What the receiver gets: the brief, and every repo pushed for it, each on the handoff's own branch,
27
+ * `isoplan/handoff/<id>`. Repos that push to the same remote can't share one, so each after the
28
+ * first has `isoplan/handoff/<id>--<its path, as lowercase letters, digits and dashes>`.
29
+ */
23
30
  export declare const HandoffSchema: z.ZodObject<{
24
31
  id: z.ZodString;
25
32
  brief: z.ZodString;
@@ -114,6 +121,11 @@ export declare const FullMessageSchema: z.ZodObject<{
114
121
  statusSince: z.ZodISODateTime;
115
122
  lastActive: z.ZodISODateTime;
116
123
  doing: z.ZodNullable<z.ZodObject<{
124
+ project: z.ZodOptional<z.ZodObject<{
125
+ id: z.ZodString;
126
+ name: z.ZodString;
127
+ }, z.core.$strip>>;
128
+ away: z.ZodOptional<z.ZodBoolean>;
117
129
  kind: z.ZodEnum<{
118
130
  read: "read";
119
131
  run: "run";
@@ -146,12 +158,22 @@ export declare const FullMessageSchema: z.ZodObject<{
146
158
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
147
159
  }, z.core.$strip>>;
148
160
  edits: z.ZodArray<z.ZodObject<{
161
+ project: z.ZodOptional<z.ZodObject<{
162
+ id: z.ZodString;
163
+ name: z.ZodString;
164
+ }, z.core.$strip>>;
165
+ away: z.ZodOptional<z.ZodBoolean>;
149
166
  agent: z.ZodString;
150
167
  file: z.ZodString;
151
168
  at: z.ZodISODateTime;
152
169
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
153
170
  }, z.core.$strip>>;
154
171
  reads: z.ZodArray<z.ZodObject<{
172
+ project: z.ZodOptional<z.ZodObject<{
173
+ id: z.ZodString;
174
+ name: z.ZodString;
175
+ }, z.core.$strip>>;
176
+ away: z.ZodOptional<z.ZodBoolean>;
155
177
  agent: z.ZodString;
156
178
  file: z.ZodString;
157
179
  at: z.ZodISODateTime;
@@ -185,6 +207,8 @@ export declare const FullMessageSchema: z.ZodObject<{
185
207
  }, z.core.$strip>>;
186
208
  multiSelect: z.ZodBoolean;
187
209
  }, z.core.$strip>>;
210
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
211
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
188
212
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
189
213
  }, z.core.$strip>>>;
190
214
  }, z.core.$strip>;
@@ -239,6 +263,11 @@ export declare const ChangesMessageSchema: z.ZodObject<{
239
263
  statusSince: z.ZodISODateTime;
240
264
  lastActive: z.ZodISODateTime;
241
265
  doing: z.ZodNullable<z.ZodObject<{
266
+ project: z.ZodOptional<z.ZodObject<{
267
+ id: z.ZodString;
268
+ name: z.ZodString;
269
+ }, z.core.$strip>>;
270
+ away: z.ZodOptional<z.ZodBoolean>;
242
271
  kind: z.ZodEnum<{
243
272
  read: "read";
244
273
  run: "run";
@@ -271,12 +300,22 @@ export declare const ChangesMessageSchema: z.ZodObject<{
271
300
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
272
301
  }, z.core.$strip>>>;
273
302
  edits: z.ZodOptional<z.ZodArray<z.ZodObject<{
303
+ project: z.ZodOptional<z.ZodObject<{
304
+ id: z.ZodString;
305
+ name: z.ZodString;
306
+ }, z.core.$strip>>;
307
+ away: z.ZodOptional<z.ZodBoolean>;
274
308
  agent: z.ZodString;
275
309
  file: z.ZodString;
276
310
  at: z.ZodISODateTime;
277
311
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
278
312
  }, z.core.$strip>>>;
279
313
  reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
314
+ project: z.ZodOptional<z.ZodObject<{
315
+ id: z.ZodString;
316
+ name: z.ZodString;
317
+ }, z.core.$strip>>;
318
+ away: z.ZodOptional<z.ZodBoolean>;
280
319
  agent: z.ZodString;
281
320
  file: z.ZodString;
282
321
  at: z.ZodISODateTime;
@@ -310,16 +349,26 @@ export declare const ChangesMessageSchema: z.ZodObject<{
310
349
  }, z.core.$strip>>;
311
350
  multiSelect: z.ZodBoolean;
312
351
  }, z.core.$strip>>;
352
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
353
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
313
354
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
314
355
  }, z.core.$strip>>>;
315
356
  }, z.core.$strip>;
316
357
  remove: z.ZodObject<{
317
358
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
318
359
  edits: z.ZodOptional<z.ZodArray<z.ZodObject<{
360
+ project: z.ZodOptional<z.ZodObject<{
361
+ id: z.ZodString;
362
+ name: z.ZodString;
363
+ }, z.core.$strip>>;
319
364
  agent: z.ZodString;
320
365
  file: z.ZodString;
321
366
  }, z.core.$strip>>>;
322
367
  reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
368
+ project: z.ZodOptional<z.ZodObject<{
369
+ id: z.ZodString;
370
+ name: z.ZodString;
371
+ }, z.core.$strip>>;
323
372
  agent: z.ZodString;
324
373
  file: z.ZodString;
325
374
  }, z.core.$strip>>>;
@@ -359,6 +408,8 @@ export declare const ReplyMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
359
408
  v: z.ZodLiteral<1>;
360
409
  id: z.ZodString;
361
410
  kind: z.ZodLiteral<"owner-answer">;
411
+ closed: z.ZodOptional<z.ZodLiteral<true>>;
412
+ late: z.ZodOptional<z.ZodLiteral<true>>;
362
413
  }, z.core.$strip>], "kind">;
363
414
  /**
364
415
  * A request the machine won't answer, sent in place of its reply. `over-cap` names the cap it would
@@ -447,6 +498,35 @@ export declare const TakenMessageSchema: z.ZodObject<{
447
498
  output: z.ZodString;
448
499
  }, z.core.$strip>>;
449
500
  }, z.core.$strip>;
501
+ /** The longest question a session may ask the room. */
502
+ export declare const MAX_QUESTION_LENGTH = 4000;
503
+ /**
504
+ * The receiver's session asks the room it was handed a question (#49), on its own short link with
505
+ * the session's hello: the room's lead, on its owner's machine, answers it. The server answers
506
+ * `asked`, or an error (`ask-refused`) when the session may not ask. `key`, the asking side's own id
507
+ * for this ask, makes a retry of it the same question rather than a second one.
508
+ */
509
+ export declare const AskRoomMessageSchema: z.ZodObject<{
510
+ type: z.ZodLiteral<"ask-room">;
511
+ v: z.ZodLiteral<1>;
512
+ question: z.ZodString;
513
+ key: z.ZodOptional<z.ZodString>;
514
+ }, z.core.$strip>;
515
+ /** The asking session polls a question it asked: the server answers `asked`. */
516
+ export declare const AskCheckMessageSchema: z.ZodObject<{
517
+ type: z.ZodLiteral<"ask-check">;
518
+ v: z.ZodLiteral<1>;
519
+ question: z.ZodString;
520
+ }, z.core.$strip>;
521
+ /**
522
+ * The asking session's agent was shown how a question ended (answered or dropped): the server stops
523
+ * sending it again.
524
+ */
525
+ export declare const AskedAckMessageSchema: z.ZodObject<{
526
+ type: z.ZodLiteral<"asked-ack">;
527
+ v: z.ZodLiteral<1>;
528
+ question: z.ZodString;
529
+ }, z.core.$strip>;
450
530
  export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
451
531
  type: z.ZodLiteral<"hello">;
452
532
  v: z.ZodLiteral<1>;
@@ -526,6 +606,11 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
526
606
  statusSince: z.ZodISODateTime;
527
607
  lastActive: z.ZodISODateTime;
528
608
  doing: z.ZodNullable<z.ZodObject<{
609
+ project: z.ZodOptional<z.ZodObject<{
610
+ id: z.ZodString;
611
+ name: z.ZodString;
612
+ }, z.core.$strip>>;
613
+ away: z.ZodOptional<z.ZodBoolean>;
529
614
  kind: z.ZodEnum<{
530
615
  read: "read";
531
616
  run: "run";
@@ -558,12 +643,22 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
558
643
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
559
644
  }, z.core.$strip>>;
560
645
  edits: z.ZodArray<z.ZodObject<{
646
+ project: z.ZodOptional<z.ZodObject<{
647
+ id: z.ZodString;
648
+ name: z.ZodString;
649
+ }, z.core.$strip>>;
650
+ away: z.ZodOptional<z.ZodBoolean>;
561
651
  agent: z.ZodString;
562
652
  file: z.ZodString;
563
653
  at: z.ZodISODateTime;
564
654
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
565
655
  }, z.core.$strip>>;
566
656
  reads: z.ZodArray<z.ZodObject<{
657
+ project: z.ZodOptional<z.ZodObject<{
658
+ id: z.ZodString;
659
+ name: z.ZodString;
660
+ }, z.core.$strip>>;
661
+ away: z.ZodOptional<z.ZodBoolean>;
567
662
  agent: z.ZodString;
568
663
  file: z.ZodString;
569
664
  at: z.ZodISODateTime;
@@ -597,6 +692,8 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
597
692
  }, z.core.$strip>>;
598
693
  multiSelect: z.ZodBoolean;
599
694
  }, z.core.$strip>>;
695
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
696
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
600
697
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
601
698
  }, z.core.$strip>>>;
602
699
  }, z.core.$strip>;
@@ -649,6 +746,11 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
649
746
  statusSince: z.ZodISODateTime;
650
747
  lastActive: z.ZodISODateTime;
651
748
  doing: z.ZodNullable<z.ZodObject<{
749
+ project: z.ZodOptional<z.ZodObject<{
750
+ id: z.ZodString;
751
+ name: z.ZodString;
752
+ }, z.core.$strip>>;
753
+ away: z.ZodOptional<z.ZodBoolean>;
652
754
  kind: z.ZodEnum<{
653
755
  read: "read";
654
756
  run: "run";
@@ -681,12 +783,22 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
681
783
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
682
784
  }, z.core.$strip>>>;
683
785
  edits: z.ZodOptional<z.ZodArray<z.ZodObject<{
786
+ project: z.ZodOptional<z.ZodObject<{
787
+ id: z.ZodString;
788
+ name: z.ZodString;
789
+ }, z.core.$strip>>;
790
+ away: z.ZodOptional<z.ZodBoolean>;
684
791
  agent: z.ZodString;
685
792
  file: z.ZodString;
686
793
  at: z.ZodISODateTime;
687
794
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
688
795
  }, z.core.$strip>>>;
689
796
  reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
797
+ project: z.ZodOptional<z.ZodObject<{
798
+ id: z.ZodString;
799
+ name: z.ZodString;
800
+ }, z.core.$strip>>;
801
+ away: z.ZodOptional<z.ZodBoolean>;
690
802
  agent: z.ZodString;
691
803
  file: z.ZodString;
692
804
  at: z.ZodISODateTime;
@@ -720,16 +832,26 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
720
832
  }, z.core.$strip>>;
721
833
  multiSelect: z.ZodBoolean;
722
834
  }, z.core.$strip>>;
835
+ answerable: z.ZodOptional<z.ZodLiteral<true>>;
836
+ withheld: z.ZodOptional<z.ZodLiteral<true>>;
723
837
  extra: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
724
838
  }, z.core.$strip>>>;
725
839
  }, z.core.$strip>;
726
840
  remove: z.ZodObject<{
727
841
  agents: z.ZodOptional<z.ZodArray<z.ZodString>>;
728
842
  edits: z.ZodOptional<z.ZodArray<z.ZodObject<{
843
+ project: z.ZodOptional<z.ZodObject<{
844
+ id: z.ZodString;
845
+ name: z.ZodString;
846
+ }, z.core.$strip>>;
729
847
  agent: z.ZodString;
730
848
  file: z.ZodString;
731
849
  }, z.core.$strip>>>;
732
850
  reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
851
+ project: z.ZodOptional<z.ZodObject<{
852
+ id: z.ZodString;
853
+ name: z.ZodString;
854
+ }, z.core.$strip>>;
733
855
  agent: z.ZodString;
734
856
  file: z.ZodString;
735
857
  }, z.core.$strip>>>;
@@ -767,6 +889,8 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
767
889
  v: z.ZodLiteral<1>;
768
890
  id: z.ZodString;
769
891
  kind: z.ZodLiteral<"owner-answer">;
892
+ closed: z.ZodOptional<z.ZodLiteral<true>>;
893
+ late: z.ZodOptional<z.ZodLiteral<true>>;
770
894
  }, z.core.$strip>], "kind">, z.ZodDiscriminatedUnion<[z.ZodObject<{
771
895
  type: z.ZodLiteral<"refusal">;
772
896
  v: z.ZodLiteral<1>;
@@ -828,6 +952,19 @@ export declare const DataLayerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
828
952
  repo: z.ZodOptional<z.ZodString>;
829
953
  output: z.ZodString;
830
954
  }, z.core.$strip>>;
955
+ }, z.core.$strip>, z.ZodObject<{
956
+ type: z.ZodLiteral<"ask-room">;
957
+ v: z.ZodLiteral<1>;
958
+ question: z.ZodString;
959
+ key: z.ZodOptional<z.ZodString>;
960
+ }, z.core.$strip>, z.ZodObject<{
961
+ type: z.ZodLiteral<"ask-check">;
962
+ v: z.ZodLiteral<1>;
963
+ question: z.ZodString;
964
+ }, z.core.$strip>, z.ZodObject<{
965
+ type: z.ZodLiteral<"asked-ack">;
966
+ v: z.ZodLiteral<1>;
967
+ question: z.ZodString;
831
968
  }, z.core.$strip>], "type">;
832
969
  /** Asks the data layer to send its facts in full. */
833
970
  export declare const RepairMessageSchema: z.ZodObject<{
@@ -843,6 +980,19 @@ export declare const ConflictMessageSchema: z.ZodObject<{
843
980
  file: z.ZodString;
844
981
  text: z.ZodString;
845
982
  }, z.core.$strip>;
983
+ /**
984
+ * Sent after a hello is let in, by a server that reads where an edit or command lands (#74): the
985
+ * projects of the session's office it may report work in, lower-cased: every one with a remote, and
986
+ * of those with none (`local:`), only the hello's own machine's. A data layer reports a file,
987
+ * command or worktree outside the session's own project only for one of these, and one that hasn't
988
+ * had a welcome on its connection keeps them on the machine, as an older server would read them as
989
+ * the session's own.
990
+ */
991
+ export declare const WelcomeMessageSchema: z.ZodObject<{
992
+ type: z.ZodLiteral<"welcome">;
993
+ v: z.ZodLiteral<1>;
994
+ projects: z.ZodArray<z.ZodString>;
995
+ }, z.core.$strip>;
846
996
  /** Something the data layer should show. */
847
997
  export declare const ErrorMessageSchema: z.ZodObject<{
848
998
  type: z.ZodLiteral<"error">;
@@ -950,10 +1100,58 @@ export declare const HandedOverMessageSchema: z.ZodObject<{
950
1100
  name: z.ZodString;
951
1101
  }, z.core.$strip>;
952
1102
  }, z.core.$strip>;
1103
+ /**
1104
+ * Where a question asked of the room stands (#49), sent in answer to ask-room and ask-check, and
1105
+ * down the asking session's own link when an answer arrives after it stopped polling. `queued`: the
1106
+ * owner's machine can't answer now (it is off, its runner is away, a cap is reached, or the fork
1107
+ * couldn't answer), and it is asked again later; `note` says why. `asking`: the owner's runner is
1108
+ * answering. `withheld`: the answer matched a secret pattern on the owner's machine, which keeps it
1109
+ * until they release it. `answered`, with `answer`. `dropped`: it won't be answered (the owner
1110
+ * turned asking off, the handoff was dismissed, or it ran out of tries or time); `note` says why.
1111
+ * `text` is the question as it was asked, `owner` the name of the person whose session answers, and
1112
+ * `key` the ask's own key.
1113
+ * An answered or dropped question is sent again down the session's own link until it is acked.
1114
+ */
1115
+ export declare const AskedMessageSchema: z.ZodObject<{
1116
+ type: z.ZodLiteral<"asked">;
1117
+ v: z.ZodLiteral<1>;
1118
+ question: z.ZodString;
1119
+ text: z.ZodString;
1120
+ state: z.ZodEnum<{
1121
+ answered: "answered";
1122
+ asking: "asking";
1123
+ dropped: "dropped";
1124
+ queued: "queued";
1125
+ withheld: "withheld";
1126
+ }>;
1127
+ answer: z.ZodOptional<z.ZodString>;
1128
+ note: z.ZodOptional<z.ZodString>;
1129
+ owner: z.ZodOptional<z.ZodString>;
1130
+ key: z.ZodOptional<z.ZodString>;
1131
+ }, z.core.$strip>;
1132
+ /**
1133
+ * Whether this session may ask `room` now (#49), sent down its own link when it connects in a room
1134
+ * that was handed to its person, and whenever that changes: a take grants it, and the owner can
1135
+ * turn it off and on again.
1136
+ */
1137
+ export declare const AskRightsMessageSchema: z.ZodObject<{
1138
+ type: z.ZodLiteral<"ask-rights">;
1139
+ v: z.ZodLiteral<1>;
1140
+ room: z.ZodString;
1141
+ owner: z.ZodObject<{
1142
+ id: z.ZodString;
1143
+ name: z.ZodString;
1144
+ }, z.core.$strip>;
1145
+ granted: z.ZodBoolean;
1146
+ }, z.core.$strip>;
953
1147
  export declare const OfficeServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
954
1148
  type: z.ZodLiteral<"repair">;
955
1149
  v: z.ZodLiteral<1>;
956
1150
  reason: z.ZodOptional<z.ZodString>;
1151
+ }, z.core.$strip>, z.ZodObject<{
1152
+ type: z.ZodLiteral<"welcome">;
1153
+ v: z.ZodLiteral<1>;
1154
+ projects: z.ZodArray<z.ZodString>;
957
1155
  }, z.core.$strip>, z.ZodObject<{
958
1156
  type: z.ZodLiteral<"conflict">;
959
1157
  v: z.ZodLiteral<1>;
@@ -1039,8 +1237,32 @@ export declare const OfficeServerMessageSchema: z.ZodDiscriminatedUnion<[z.ZodOb
1039
1237
  type: z.ZodLiteral<"drop">;
1040
1238
  v: z.ZodLiteral<1>;
1041
1239
  id: z.ZodString;
1240
+ }, z.core.$strip>, z.ZodObject<{
1241
+ type: z.ZodLiteral<"asked">;
1242
+ v: z.ZodLiteral<1>;
1243
+ question: z.ZodString;
1244
+ text: z.ZodString;
1245
+ state: z.ZodEnum<{
1246
+ answered: "answered";
1247
+ asking: "asking";
1248
+ dropped: "dropped";
1249
+ queued: "queued";
1250
+ withheld: "withheld";
1251
+ }>;
1252
+ answer: z.ZodOptional<z.ZodString>;
1253
+ note: z.ZodOptional<z.ZodString>;
1254
+ owner: z.ZodOptional<z.ZodString>;
1255
+ key: z.ZodOptional<z.ZodString>;
1256
+ }, z.core.$strip>, z.ZodObject<{
1257
+ type: z.ZodLiteral<"ask-rights">;
1258
+ v: z.ZodLiteral<1>;
1259
+ room: z.ZodString;
1260
+ owner: z.ZodObject<{
1261
+ id: z.ZodString;
1262
+ name: z.ZodString;
1263
+ }, z.core.$strip>;
1264
+ granted: z.ZodBoolean;
1042
1265
  }, z.core.$strip>], "type">;
1043
- export type Project = z.infer<typeof ProjectSchema>;
1044
1266
  export type HandoffRepo = z.infer<typeof HandoffRepoSchema>;
1045
1267
  export type Handoff = z.infer<typeof HandoffSchema>;
1046
1268
  export type HelloMessage = z.infer<typeof HelloMessageSchema>;
@@ -1064,7 +1286,13 @@ export type HandedOverMessage = z.infer<typeof HandedOverMessageSchema>;
1064
1286
  export type HandOverCheckMessage = z.infer<typeof HandOverCheckMessageSchema>;
1065
1287
  export type HandOverReadyMessage = z.infer<typeof HandOverReadyMessageSchema>;
1066
1288
  export type DropMessage = z.infer<typeof DropMessageSchema>;
1289
+ export type AskRoomMessage = z.infer<typeof AskRoomMessageSchema>;
1290
+ export type AskCheckMessage = z.infer<typeof AskCheckMessageSchema>;
1291
+ export type AskedMessage = z.infer<typeof AskedMessageSchema>;
1292
+ export type AskedAckMessage = z.infer<typeof AskedAckMessageSchema>;
1293
+ export type AskRightsMessage = z.infer<typeof AskRightsMessageSchema>;
1067
1294
  export type OfficeServerMessage = z.infer<typeof OfficeServerMessageSchema>;
1295
+ export type WelcomeMessage = z.infer<typeof WelcomeMessageSchema>;
1068
1296
  /**
1069
1297
  * A parsed message, or why it was refused: `unsupported-version` when it carries a protocol
1070
1298
  * version this side doesn't speak, `invalid` for anything else wrong with it.
package/dist/messages.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { FactRemoveSchema, FactsSchema, FactUpsertSchema, SourceSchema } from "./facts.js";
2
+ import { FactRemoveSchema, FactsSchema, FactUpsertSchema, ProjectSchema, SourceSchema } from "./facts.js";
3
3
  /**
4
4
  * The protocol version every message carries as `v`. Adding optional fields doesn't change it;
5
5
  * changing what a field means, or removing one, does.
@@ -7,10 +7,6 @@ import { FactRemoveSchema, FactsSchema, FactUpsertSchema, SourceSchema } from ".
7
7
  export const PROTOCOL_VERSION = 1;
8
8
  const Version = z.literal(PROTOCOL_VERSION);
9
9
  const Seq = z.number().int().nonnegative();
10
- export const ProjectSchema = z.object({
11
- id: z.string().min(1),
12
- name: z.string().min(1),
13
- });
14
10
  const Account = z.object({ id: z.string().min(1), name: z.string() });
15
11
  const Machine = z.object({ name: z.string().min(1) });
16
12
  /** Matches a request with its reply or refusal. */
@@ -20,10 +16,20 @@ const HandoffId = z
20
16
  .string()
21
17
  .max(64)
22
18
  .regex(/^[a-z0-9][a-z0-9-]*$/, "lowercase letters, digits and dashes");
19
+ /**
20
+ * Whether a path segment is one Windows reads as `.git`: the name before any NTFS stream
21
+ * (`.git::$INDEX_ALLOCATION`), its trailing dots and spaces dropped, in any case, or the 8.3 short
22
+ * name of a folder that starts with `.git`.
23
+ */
24
+ export const isGitFolder = (segment) => {
25
+ const name = segment.split(":")[0].replace(/[. ]+$/, "").toLowerCase();
26
+ return name === ".git" || /^git~\d+$/.test(name);
27
+ };
23
28
  /**
24
29
  * One repo a handoff pushed: its path in the session's folder (`.` for the folder itself), remote,
25
30
  * branch and commit. A handoff drives git on the receiver's machine, so the path stays inside the
26
- * folder and the remote can't name a transport helper such as `ext::`, which runs a command.
31
+ * folder, out of any `.git` folder (in any spelling Windows reads as one: `.GIT.`, `.git `, `GIT~1`),
32
+ * with no `:` (an NTFS stream, such as `.git::$INDEX_ALLOCATION`), and the remote can't name a transport helper such as `ext::`, which runs a command.
27
33
  */
28
34
  export const HandoffRepoSchema = z.object({
29
35
  path: z
@@ -31,7 +37,10 @@ export const HandoffRepoSchema = z.object({
31
37
  .min(1)
32
38
  .refine((path) => !/^([\\/]|[A-Za-z]:)/.test(path), "a path relative to the session's folder")
33
39
  .refine((path) => !path.split(/[\\/]/).includes(".."), "a path inside the session's folder, with no `..`")
34
- .refine((path) => !path.startsWith("-"), "a path that doesn't start with `-`, which git would read as an option"),
40
+ .refine((path) => !path.startsWith("-"), "a path that doesn't start with `-`, which git would read as an option")
41
+ .refine((path) => !path.split(/[\\/]/).some(isGitFolder), "a path that isn't in a `.git` folder")
42
+ .refine((path) => !path.includes(":"), "a path with no `:`, which Windows reads as a drive or a file's stream")
43
+ .refine((path) => path === "." || !path.split(/[\\/]/).some((part) => part === "" || part === "." || part === ".."), "`.` itself, or a path of named folders, with no empty, `.` or `..` part"),
35
44
  remote: z
36
45
  .string()
37
46
  .min(1)
@@ -40,7 +49,11 @@ export const HandoffRepoSchema = z.object({
40
49
  branch: z.string().min(1),
41
50
  commit: z.string().regex(/^([0-9a-f]{40}|[0-9a-f]{64})$/, "a full commit hash"),
42
51
  });
43
- /** What the receiver gets: the brief, and every repo pushed for it, each on the handoff's own branch. */
52
+ /**
53
+ * What the receiver gets: the brief, and every repo pushed for it, each on the handoff's own branch,
54
+ * `isoplan/handoff/<id>`. Repos that push to the same remote can't share one, so each after the
55
+ * first has `isoplan/handoff/<id>--<its path, as lowercase letters, digits and dashes>`.
56
+ */
44
57
  export const HandoffSchema = z
45
58
  .object({
46
59
  id: HandoffId,
@@ -49,8 +62,9 @@ export const HandoffSchema = z
49
62
  })
50
63
  .superRefine((handoff, context) => {
51
64
  handoff.repos.forEach((repo, i) => {
52
- if (repo.branch !== `isoplan/handoff/${handoff.id}`) {
53
- context.addIssue({ code: "custom", path: ["repos", i, "branch"], message: `the handoff's branch, isoplan/handoff/${handoff.id}` });
65
+ const own = `isoplan/handoff/${handoff.id}`;
66
+ if (repo.branch !== own && !(repo.branch.startsWith(`${own}--`) && /^[a-z0-9]+(-[a-z0-9]+)*$/.test(repo.branch.slice(own.length + 2)))) {
67
+ context.addIssue({ code: "custom", path: ["repos", i, "branch"], message: `the handoff's branch, isoplan/handoff/${handoff.id} or isoplan/handoff/${handoff.id}--<slug>` });
54
68
  }
55
69
  });
56
70
  });
@@ -102,8 +116,11 @@ export const ReplyMessageSchema = z.discriminatedUnion("kind", [
102
116
  // `fallback`: the fork couldn't write the brief, so `brief` is only the runner's note of what was
103
117
  // pushed, and the server writes the rest from the room's feed. The branch is pushed either way.
104
118
  z.object({ type: z.literal("reply"), v: Version, id: RequestId, kind: z.literal("write-brief"), handoff: HandoffSchema, fallback: z.literal(true).optional() }),
105
- // The owner's answer reached the question that was waiting for it.
106
- z.object({ type: z.literal("reply"), v: Version, id: RequestId, kind: z.literal("owner-answer") }),
119
+ // The owner's answer reached the question that was waiting for it. `closed`: the session never said
120
+ // whether it took the answer, but the question has closed, by this answer or the terminal's. `late`:
121
+ // it took the answer after this request was refused for taking too long, so this reply follows that
122
+ // refusal, with the same id.
123
+ z.object({ type: z.literal("reply"), v: Version, id: RequestId, kind: z.literal("owner-answer"), closed: z.literal(true).optional(), late: z.literal(true).optional() }),
107
124
  ]);
108
125
  /**
109
126
  * A request the machine won't answer, sent in place of its reply. `over-cap` names the cap it would
@@ -120,7 +137,8 @@ export const RefusalMessageSchema = z.discriminatedUnion("reason", [
120
137
  cap: z.enum(["room-hour", "owner-day", "owner-tokens"]),
121
138
  }),
122
139
  // `file`: what was withheld is the handoff's commit, whose added lines in that file matched (the
123
- // pattern itself stays on the machine); without it, the brief or answer.
140
+ // pattern itself stays on the machine); without it, the brief or answer. With several matches, or
141
+ // several repos (#56), it names every such file by its path in the session's folder, joined by ", ".
124
142
  // `unchecked`: files the commit adds that the scan can't read (binary), named so the owner knows.
125
143
  z.object({
126
144
  type: z.literal("refusal"),
@@ -175,6 +193,35 @@ export const TakenMessageSchema = z.object({
175
193
  output: z.string(),
176
194
  })),
177
195
  });
196
+ /** The longest question a session may ask the room. */
197
+ export const MAX_QUESTION_LENGTH = 4000;
198
+ /**
199
+ * The receiver's session asks the room it was handed a question (#49), on its own short link with
200
+ * the session's hello: the room's lead, on its owner's machine, answers it. The server answers
201
+ * `asked`, or an error (`ask-refused`) when the session may not ask. `key`, the asking side's own id
202
+ * for this ask, makes a retry of it the same question rather than a second one.
203
+ */
204
+ export const AskRoomMessageSchema = z.object({
205
+ type: z.literal("ask-room"),
206
+ v: Version,
207
+ question: z.string().trim().min(1).max(MAX_QUESTION_LENGTH),
208
+ key: z.string().min(1).max(100).optional(),
209
+ });
210
+ /** The asking session polls a question it asked: the server answers `asked`. */
211
+ export const AskCheckMessageSchema = z.object({
212
+ type: z.literal("ask-check"),
213
+ v: Version,
214
+ question: RequestId,
215
+ });
216
+ /**
217
+ * The asking session's agent was shown how a question ended (answered or dropped): the server stops
218
+ * sending it again.
219
+ */
220
+ export const AskedAckMessageSchema = z.object({
221
+ type: z.literal("asked-ack"),
222
+ v: Version,
223
+ question: RequestId,
224
+ });
178
225
  export const DataLayerMessageSchema = z.discriminatedUnion("type", [
179
226
  HelloMessageSchema,
180
227
  RunnerHelloMessageSchema,
@@ -186,6 +233,9 @@ export const DataLayerMessageSchema = z.discriminatedUnion("type", [
186
233
  HandOverCheckMessageSchema,
187
234
  TakeMessageSchema,
188
235
  TakenMessageSchema,
236
+ AskRoomMessageSchema,
237
+ AskCheckMessageSchema,
238
+ AskedAckMessageSchema,
189
239
  ]);
190
240
  // Office server → data layer.
191
241
  /** Asks the data layer to send its facts in full. */
@@ -202,6 +252,19 @@ export const ConflictMessageSchema = z.object({
202
252
  file: z.string().min(1),
203
253
  text: z.string().min(1),
204
254
  });
255
+ /**
256
+ * Sent after a hello is let in, by a server that reads where an edit or command lands (#74): the
257
+ * projects of the session's office it may report work in, lower-cased: every one with a remote, and
258
+ * of those with none (`local:`), only the hello's own machine's. A data layer reports a file,
259
+ * command or worktree outside the session's own project only for one of these, and one that hasn't
260
+ * had a welcome on its connection keeps them on the machine, as an older server would read them as
261
+ * the session's own.
262
+ */
263
+ export const WelcomeMessageSchema = z.object({
264
+ type: z.literal("welcome"),
265
+ v: Version,
266
+ projects: z.array(z.string().min(1)),
267
+ });
205
268
  /** Something the data layer should show. */
206
269
  export const ErrorMessageSchema = z.object({
207
270
  type: z.literal("error"),
@@ -295,8 +358,45 @@ export const HandedOverMessageSchema = z.object({
295
358
  handoff: HandoffId,
296
359
  to: Account,
297
360
  });
361
+ /**
362
+ * Where a question asked of the room stands (#49), sent in answer to ask-room and ask-check, and
363
+ * down the asking session's own link when an answer arrives after it stopped polling. `queued`: the
364
+ * owner's machine can't answer now (it is off, its runner is away, a cap is reached, or the fork
365
+ * couldn't answer), and it is asked again later; `note` says why. `asking`: the owner's runner is
366
+ * answering. `withheld`: the answer matched a secret pattern on the owner's machine, which keeps it
367
+ * until they release it. `answered`, with `answer`. `dropped`: it won't be answered (the owner
368
+ * turned asking off, the handoff was dismissed, or it ran out of tries or time); `note` says why.
369
+ * `text` is the question as it was asked, `owner` the name of the person whose session answers, and
370
+ * `key` the ask's own key.
371
+ * An answered or dropped question is sent again down the session's own link until it is acked.
372
+ */
373
+ export const AskedMessageSchema = z.object({
374
+ type: z.literal("asked"),
375
+ v: Version,
376
+ question: RequestId,
377
+ text: z.string().min(1),
378
+ state: z.enum(["queued", "asking", "withheld", "answered", "dropped"]),
379
+ answer: z.string().min(1).optional(),
380
+ note: z.string().min(1).optional(),
381
+ owner: z.string().optional(),
382
+ /** The `key` the question was asked under, so the asking side knows which of its asks it was. */
383
+ key: z.string().min(1).max(100).optional(),
384
+ });
385
+ /**
386
+ * Whether this session may ask `room` now (#49), sent down its own link when it connects in a room
387
+ * that was handed to its person, and whenever that changes: a take grants it, and the owner can
388
+ * turn it off and on again.
389
+ */
390
+ export const AskRightsMessageSchema = z.object({
391
+ type: z.literal("ask-rights"),
392
+ v: Version,
393
+ room: z.string().min(1),
394
+ owner: Account,
395
+ granted: z.boolean(),
396
+ });
298
397
  export const OfficeServerMessageSchema = z.discriminatedUnion("type", [
299
398
  RepairMessageSchema,
399
+ WelcomeMessageSchema,
300
400
  ConflictMessageSchema,
301
401
  ErrorMessageSchema,
302
402
  RequestMessageSchema,
@@ -305,6 +405,8 @@ export const OfficeServerMessageSchema = z.discriminatedUnion("type", [
305
405
  HandedOverMessageSchema,
306
406
  HandOverReadyMessageSchema,
307
407
  DropMessageSchema,
408
+ AskedMessageSchema,
409
+ AskRightsMessageSchema,
308
410
  ]);
309
411
  /** Validates a message an office server received from a data layer. */
310
412
  export function parseDataLayerMessage(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../src/messages.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Project } from "./messages.js";
1
+ import type { Project } from "./facts.js";
2
2
  /**
3
3
  * A project's id and name. With a git remote the id is `host/owner/repo` (any deeper path kept, as
4
4
  * for GitLab subgroups), the same whichever form or letter case the remote is written in, so a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isoplan/protocol",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "The wire protocol between Isoplan's Claude Code plugin and an office server: message and fact types, with zod parsers.",
5
5
  "license": "MIT",
6
6
  "repository": {