pi-radar 0.9.0 → 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 (42) hide show
  1. package/README.md +8 -10
  2. package/dist/extension/baseline.js +343 -361
  3. package/dist/extension/radar-children.js +108 -218
  4. package/dist/extension/radar-client.js +103 -15
  5. package/dist/extension/radar-execution.js +26 -17
  6. package/dist/extension/radar-inspection.js +0 -45
  7. package/dist/extension/radar-launch.js +24 -185
  8. package/dist/extension/radar-publication.js +26 -17
  9. package/dist/extension/radar-runtime.js +1 -1
  10. package/dist/index.js +317 -488
  11. package/extension/generated-contracts.ts +362 -13
  12. package/extension/radar-children.ts +60 -155
  13. package/extension/radar-client.ts +130 -19
  14. package/extension/radar-inspection.ts +2 -77
  15. package/extension/radar-launch.ts +52 -391
  16. package/extension/radar-publication.ts +36 -53
  17. package/extension/radar-runtime.ts +1 -1
  18. package/package.json +1 -1
  19. package/schema/public/v1/observation-get-response.deserialize.schema.json +5 -25
  20. package/schema/public/v1/observation-get-response.serialize.schema.json +7 -29
  21. package/schema/public/v1/observation-snapshot.deserialize.schema.json +5 -25
  22. package/schema/public/v1/observation-snapshot.serialize.schema.json +7 -29
  23. package/schema/public/v1/spawn-list-page.deserialize.schema.json +40 -17
  24. package/schema/public/v1/spawn-list-page.serialize.schema.json +40 -17
  25. package/schema/public/v1/subject-assignment-acquire.deserialize.schema.json +78 -0
  26. package/schema/public/v1/subject-assignment-acquire.serialize.schema.json +79 -0
  27. package/schema/public/v1/subject-assignment-publish.deserialize.schema.json +310 -0
  28. package/schema/public/v1/subject-assignment-publish.serialize.schema.json +310 -0
  29. package/schema/public/v1/subject-assignment-retire.deserialize.schema.json +22 -0
  30. package/schema/public/v1/subject-assignment-retire.serialize.schema.json +22 -0
  31. package/schema/public/v1/subject-child-get-params.deserialize.schema.json +18 -0
  32. package/schema/public/v1/subject-child-get-params.serialize.schema.json +18 -0
  33. package/schema/public/v1/subject-children-params.deserialize.schema.json +51 -0
  34. package/schema/public/v1/subject-children-params.serialize.schema.json +54 -0
  35. package/schema/public/v1/subject-get-params.deserialize.schema.json +14 -0
  36. package/schema/public/v1/subject-get-params.serialize.schema.json +14 -0
  37. package/schema/public/v1/subject-get-result.deserialize.schema.json +566 -0
  38. package/schema/public/v1/subject-get-result.serialize.schema.json +573 -0
  39. package/schema/public/v1/subject-list-params.deserialize.schema.json +38 -0
  40. package/schema/public/v1/subject-list-params.serialize.schema.json +43 -0
  41. package/schema/public/v1/subject-list-result.deserialize.schema.json +575 -0
  42. package/schema/public/v1/subject-list-result.serialize.schema.json +583 -0
@@ -1,5 +1,348 @@
1
1
  // Generated from the checked-in Rust-derived JSON Schemas. Do not edit.
2
2
 
3
+ export interface SubjectGetParams {
4
+ subject_id: string;
5
+ }
6
+ export interface SubjectChildGetParams {
7
+ registration_id: string;
8
+ subject_id: string;
9
+ }
10
+ /**
11
+ * Freshness is independent of process identity or completion.
12
+ */
13
+ export type SubjectGetResultFreshness = "fresh" | "stale";
14
+ /**
15
+ * One complete accepted snapshot, typed by the channel that carries it. Each
16
+ * variant is strict about its own fields, so a field from another channel is
17
+ * refused rather than silently dropped.
18
+ */
19
+ export type SubjectGetResultReport =
20
+ SubjectGetResultSnapshot | SubjectGetResultAssignmentSnapshot | SubjectGetResultFactsSnapshot;
21
+ export type SubjectGetResultAttachmentState = "starting" | "live" | "detached" | "unknown";
22
+
23
+ export interface SubjectGetResult {
24
+ subject: SubjectGetResultSubject;
25
+ }
26
+ export interface SubjectGetResultSubject {
27
+ assignment: SubjectGetResultChannelFacts | null;
28
+ execution: SubjectGetResultChannelFacts | null;
29
+ facts: SubjectGetResultChannelFacts | null;
30
+ location: SubjectGetResultRegistryLocation | null;
31
+ managed: SubjectGetResultManagedMetadata;
32
+ /**
33
+ * Recorded scope ownership, not proof of current cgroup membership.
34
+ */
35
+ scoped: boolean | null;
36
+ session_id: string | null;
37
+ state: SubjectGetResultAttachmentState;
38
+ subject_id: string;
39
+ }
40
+ export interface SubjectGetResultChannelFacts {
41
+ snapshot: SubjectGetResultPublicSnapshotFacts | null;
42
+ writer: SubjectGetResultPublicWriterFacts;
43
+ }
44
+ /**
45
+ * The last accepted report as an unrelated reader may see it, leaving out the
46
+ * handle that fences further writes.
47
+ */
48
+ export interface SubjectGetResultPublicSnapshotFacts {
49
+ expires_at: string;
50
+ freshness: SubjectGetResultFreshness;
51
+ generation: number;
52
+ incarnation: string;
53
+ lease_ms: number;
54
+ observed_at?: string | null;
55
+ received_at: string;
56
+ reporting_owner?: string | null;
57
+ restored: boolean;
58
+ sequence: number;
59
+ snapshot: SubjectGetResultReport;
60
+ source: string;
61
+ }
62
+ /**
63
+ * One complete snapshot for one channel. Vocabulary is free-form; shape is
64
+ * strict. Unknown state/reason/action words survive, unknown fields do not.
65
+ */
66
+ export interface SubjectGetResultSnapshot {
67
+ actions?: string[];
68
+ activity: string;
69
+ last_outcome?: SubjectGetResultOutcome | null;
70
+ waiting_reason?: string | null;
71
+ }
72
+ /**
73
+ * A turn outcome kept distinct from current activity.
74
+ */
75
+ export interface SubjectGetResultOutcome {
76
+ detail?: string | null;
77
+ /**
78
+ * Producer vocabulary is deliberately free-form.
79
+ */
80
+ result: string;
81
+ }
82
+ /**
83
+ * The owner's complete assignment snapshot: the shared base plus facts only an
84
+ * owner knows. It is authored by the owner's writer and is never derived from
85
+ * execution activity; the owner's identity is provenance, not authority.
86
+ */
87
+ export interface SubjectGetResultAssignmentSnapshot {
88
+ actions?: string[];
89
+ activity: string;
90
+ ask?: string | null;
91
+ assigned_started_unix_ms?: number | null;
92
+ assignment?: string | null;
93
+ awaited?: string[];
94
+ definition?: string | null;
95
+ last_outcome?: SubjectGetResultOutcome | null;
96
+ request?: string | null;
97
+ role?: string | null;
98
+ run?: string | null;
99
+ waiting_reason?: string | null;
100
+ }
101
+ /**
102
+ * The agent's own process facts. Self-authored by any Pi session, with no owner
103
+ * or assignment, and kept separate from execution and assignment. Every field
104
+ * is optional and a published snapshot replaces the whole value, so omission
105
+ * withdraws a fact. `context_window` is counts; a display derives the percentage.
106
+ */
107
+ export interface SubjectGetResultFactsSnapshot {
108
+ background_started_unix_ms?: number | null;
109
+ background_tasks?: SubjectGetResultBackgroundTask[];
110
+ context_window?: SubjectGetResultContextWindow | null;
111
+ model?: string | null;
112
+ provider?: string | null;
113
+ session_name?: string | null;
114
+ thinking?: string | null;
115
+ }
116
+ /**
117
+ * One background task the agent process reports as unresolved.
118
+ */
119
+ export interface SubjectGetResultBackgroundTask {
120
+ id: string;
121
+ phase: string;
122
+ }
123
+ /**
124
+ * How much of a model's context window a session has used, as counts.
125
+ *
126
+ * `window` is positive and `tokens` does not exceed it; the percentage a display
127
+ * shows is derived from these and never published. Wire counts stay exact in JS.
128
+ */
129
+ export interface SubjectGetResultContextWindow {
130
+ tokens: number;
131
+ window: number;
132
+ }
133
+ /**
134
+ * The current writer as an unrelated reader may see it: provenance and
135
+ * generation, without the opaque handle an update must present.
136
+ */
137
+ export interface SubjectGetResultPublicWriterFacts {
138
+ generation: number;
139
+ incarnation: string;
140
+ reporting_owner?: string | null;
141
+ retired_at?: string | null;
142
+ sequence: number;
143
+ source: string;
144
+ }
145
+ /**
146
+ * Where an agent's incarnation lives on one backend, in that backend's own
147
+ * coordinates.
148
+ *
149
+ * The backend name is free-form so a source Radar does not ship yet is
150
+ * preserved rather than rejected; the rest are the coordinates as reported, and
151
+ * each is optional because a backend need not name every level.
152
+ */
153
+ export interface SubjectGetResultRegistryLocation {
154
+ backend: string;
155
+ instance?: string | null;
156
+ pane?: string | null;
157
+ tab?: string | null;
158
+ workspace?: string | null;
159
+ }
160
+ /**
161
+ * One durable launch subject. The correlation is a private credential and is
162
+ * spent at capture; no public read returns it.
163
+ */
164
+ export interface SubjectGetResultManagedMetadata {
165
+ label?: string | null;
166
+ owner?: string | null;
167
+ parent_subject_id?: string | null;
168
+ role?: string | null;
169
+ run?: string | null;
170
+ }
171
+ export interface SubjectListParams {
172
+ after?: string | null;
173
+ limit?: number | null;
174
+ selection?: "live" | "retained" | "all";
175
+ }
176
+ export type SubjectChildrenParamsSelection = "live" | "retained" | "all";
177
+
178
+ export interface SubjectChildrenParams {
179
+ after?: string | null;
180
+ limit?: number | null;
181
+ registration_id: string;
182
+ selection?: SubjectChildrenParamsSelection | null;
183
+ }
184
+ /**
185
+ * Freshness is independent of process identity or completion.
186
+ */
187
+ export type SubjectListResultFreshness = "fresh" | "stale";
188
+ /**
189
+ * One complete accepted snapshot, typed by the channel that carries it. Each
190
+ * variant is strict about its own fields, so a field from another channel is
191
+ * refused rather than silently dropped.
192
+ */
193
+ export type SubjectListResultReport =
194
+ SubjectListResultSnapshot | SubjectListResultAssignmentSnapshot | SubjectListResultFactsSnapshot;
195
+ export type SubjectListResultAttachmentState = "starting" | "live" | "detached" | "unknown";
196
+
197
+ export interface SubjectListResult {
198
+ next: string | null;
199
+ subjects: SubjectListResultSubject[];
200
+ }
201
+ export interface SubjectListResultSubject {
202
+ assignment: SubjectListResultChannelFacts | null;
203
+ execution: SubjectListResultChannelFacts | null;
204
+ facts: SubjectListResultChannelFacts | null;
205
+ location: SubjectListResultRegistryLocation | null;
206
+ managed: SubjectListResultManagedMetadata;
207
+ /**
208
+ * Recorded scope ownership, not proof of current cgroup membership.
209
+ */
210
+ scoped: boolean | null;
211
+ session_id: string | null;
212
+ state: SubjectListResultAttachmentState;
213
+ subject_id: string;
214
+ }
215
+ export interface SubjectListResultChannelFacts {
216
+ snapshot: SubjectListResultPublicSnapshotFacts | null;
217
+ writer: SubjectListResultPublicWriterFacts;
218
+ }
219
+ /**
220
+ * The last accepted report as an unrelated reader may see it, leaving out the
221
+ * handle that fences further writes.
222
+ */
223
+ export interface SubjectListResultPublicSnapshotFacts {
224
+ expires_at: string;
225
+ freshness: SubjectListResultFreshness;
226
+ generation: number;
227
+ incarnation: string;
228
+ lease_ms: number;
229
+ observed_at?: string | null;
230
+ received_at: string;
231
+ reporting_owner?: string | null;
232
+ restored: boolean;
233
+ sequence: number;
234
+ snapshot: SubjectListResultReport;
235
+ source: string;
236
+ }
237
+ /**
238
+ * One complete snapshot for one channel. Vocabulary is free-form; shape is
239
+ * strict. Unknown state/reason/action words survive, unknown fields do not.
240
+ */
241
+ export interface SubjectListResultSnapshot {
242
+ actions?: string[];
243
+ activity: string;
244
+ last_outcome?: SubjectListResultOutcome | null;
245
+ waiting_reason?: string | null;
246
+ }
247
+ /**
248
+ * A turn outcome kept distinct from current activity.
249
+ */
250
+ export interface SubjectListResultOutcome {
251
+ detail?: string | null;
252
+ /**
253
+ * Producer vocabulary is deliberately free-form.
254
+ */
255
+ result: string;
256
+ }
257
+ /**
258
+ * The owner's complete assignment snapshot: the shared base plus facts only an
259
+ * owner knows. It is authored by the owner's writer and is never derived from
260
+ * execution activity; the owner's identity is provenance, not authority.
261
+ */
262
+ export interface SubjectListResultAssignmentSnapshot {
263
+ actions?: string[];
264
+ activity: string;
265
+ ask?: string | null;
266
+ assigned_started_unix_ms?: number | null;
267
+ assignment?: string | null;
268
+ awaited?: string[];
269
+ definition?: string | null;
270
+ last_outcome?: SubjectListResultOutcome | null;
271
+ request?: string | null;
272
+ role?: string | null;
273
+ run?: string | null;
274
+ waiting_reason?: string | null;
275
+ }
276
+ /**
277
+ * The agent's own process facts. Self-authored by any Pi session, with no owner
278
+ * or assignment, and kept separate from execution and assignment. Every field
279
+ * is optional and a published snapshot replaces the whole value, so omission
280
+ * withdraws a fact. `context_window` is counts; a display derives the percentage.
281
+ */
282
+ export interface SubjectListResultFactsSnapshot {
283
+ background_started_unix_ms?: number | null;
284
+ background_tasks?: SubjectListResultBackgroundTask[];
285
+ context_window?: SubjectListResultContextWindow | null;
286
+ model?: string | null;
287
+ provider?: string | null;
288
+ session_name?: string | null;
289
+ thinking?: string | null;
290
+ }
291
+ /**
292
+ * One background task the agent process reports as unresolved.
293
+ */
294
+ export interface SubjectListResultBackgroundTask {
295
+ id: string;
296
+ phase: string;
297
+ }
298
+ /**
299
+ * How much of a model's context window a session has used, as counts.
300
+ *
301
+ * `window` is positive and `tokens` does not exceed it; the percentage a display
302
+ * shows is derived from these and never published. Wire counts stay exact in JS.
303
+ */
304
+ export interface SubjectListResultContextWindow {
305
+ tokens: number;
306
+ window: number;
307
+ }
308
+ /**
309
+ * The current writer as an unrelated reader may see it: provenance and
310
+ * generation, without the opaque handle an update must present.
311
+ */
312
+ export interface SubjectListResultPublicWriterFacts {
313
+ generation: number;
314
+ incarnation: string;
315
+ reporting_owner?: string | null;
316
+ retired_at?: string | null;
317
+ sequence: number;
318
+ source: string;
319
+ }
320
+ /**
321
+ * Where an agent's incarnation lives on one backend, in that backend's own
322
+ * coordinates.
323
+ *
324
+ * The backend name is free-form so a source Radar does not ship yet is
325
+ * preserved rather than rejected; the rest are the coordinates as reported, and
326
+ * each is optional because a backend need not name every level.
327
+ */
328
+ export interface SubjectListResultRegistryLocation {
329
+ backend: string;
330
+ instance?: string | null;
331
+ pane?: string | null;
332
+ tab?: string | null;
333
+ workspace?: string | null;
334
+ }
335
+ /**
336
+ * One durable launch subject. The correlation is a private credential and is
337
+ * spent at capture; no public read returns it.
338
+ */
339
+ export interface SubjectListResultManagedMetadata {
340
+ label?: string | null;
341
+ owner?: string | null;
342
+ parent_subject_id?: string | null;
343
+ role?: string | null;
344
+ run?: string | null;
345
+ }
3
346
  export interface PresenceReportDeserialize {
4
347
  claim_id: string;
5
348
  incarnation: string;
@@ -551,7 +894,7 @@ export interface HerdsmanFacts {
551
894
  */
552
895
  background_tasks: string[];
553
896
  /**
554
- * The percentage a Herdr token states, percent sign included. It carries no
897
+ * The percentage a background-task token states, percent sign included. It carries no
555
898
  * counts, so it is never presented as a typed window.
556
899
  */
557
900
  context_usage: string | null;
@@ -565,7 +908,7 @@ export interface HerdsmanFacts {
565
908
  definition: string | null;
566
909
  /**
567
910
  * A managed worker's runtime label: the name its owner and its siblings
568
- * use for it, and the only faithful source for a worker's name. Herdr's
911
+ * use for it, and the only faithful source for a worker's name. The backend's
569
912
  * own agent name truncates it and its title welds it to the task.
570
913
  */
571
914
  label: string | null;
@@ -639,7 +982,7 @@ export interface Lineage {
639
982
  session: SessionUuid;
640
983
  }
641
984
  /**
642
- * Connector-scoped runtime location: Herdr workspace, tab and pane identifiers.
985
+ * Backend-scoped runtime location: workspace, tab and pane identifiers.
643
986
  *
644
987
  * Pane identity is a runtime location detail; it is never an agent identity.
645
988
  */
@@ -687,7 +1030,6 @@ export interface RegistryAgent {
687
1030
  */
688
1031
  export interface PublicChannelFacts {
689
1032
  channel: Channel;
690
- registration_id: string;
691
1033
  snapshot?: PublicSnapshotFacts | null;
692
1034
  version: number;
693
1035
  writer: PublicWriterFacts;
@@ -905,13 +1247,11 @@ export interface RegistryLocation {
905
1247
  export interface ManagedSubject {
906
1248
  child_close: ChildCloseTarget | null;
907
1249
  claim_id: string;
908
- identity_unresolved: boolean;
909
1250
  metadata: ManagedMetadata;
910
1251
  process: ProcessIdentity;
911
1252
  session: string | null;
912
1253
  state: State;
913
1254
  subject_id: string;
914
- successor: string | null;
915
1255
  }
916
1256
  /**
917
1257
  * Exact spawn-edge child identity required by `spawn.close`.
@@ -1323,7 +1663,6 @@ export interface LifecycleObservation {
1323
1663
  session: string | null;
1324
1664
  state: State;
1325
1665
  subject_id: string;
1326
- successor: string | null;
1327
1666
  }
1328
1667
  /**
1329
1668
  * A runtime pane: location plus optional display text.
@@ -1342,7 +1681,7 @@ export interface Pane {
1342
1681
  title: string | null;
1343
1682
  }
1344
1683
  /**
1345
- * A Herdr tab within a workspace; shown as location detail, not a tree level.
1684
+ * A tab within a workspace; shown as location detail, not a tree level.
1346
1685
  */
1347
1686
  export interface Tab {
1348
1687
  label: string | null;
@@ -1351,7 +1690,7 @@ export interface Tab {
1351
1690
  workspace_id: string;
1352
1691
  }
1353
1692
  /**
1354
- * A Herdr workspace: the first display grouping for the fleet tree.
1693
+ * A workspace: the first display grouping for the fleet tree.
1355
1694
  */
1356
1695
  export interface Workspace {
1357
1696
  label: string | null;
@@ -1443,7 +1782,7 @@ export interface SpawnListPageSerializePublicSpawnTopology {
1443
1782
  bound?: SpawnListPageSerializeBoundChild | null;
1444
1783
  claim_id?: string | null;
1445
1784
  created: SpawnListPageSerializeRequestOutcome;
1446
- exit_observation?: SpawnListPageSerializePublicSpawnExitObservation | null;
1785
+ exit_observation: SpawnListPageSerializePublicSpawnExitObservation;
1447
1786
  /**
1448
1787
  * Freshness of the recorded location against this read's evidence, in the
1449
1788
  * registry's one freshness vocabulary: `fresh` when the backend reports the
@@ -1452,15 +1791,17 @@ export interface SpawnListPageSerializePublicSpawnTopology {
1452
1791
  * nothing to verify.
1453
1792
  */
1454
1793
  freshness?: SpawnListPageSerializeFreshness | null;
1794
+ granted_at?: string | null;
1455
1795
  launched: SpawnListPageSerializeRequestOutcome;
1456
1796
  location?: SpawnListPageSerializeRegistryLocation | null;
1457
1797
  parent: string;
1458
- parent_session_id?: string | null;
1798
+ parent_session_id: string;
1459
1799
  parent_subject_id?: string | null;
1460
1800
  recorded_at: string;
1461
1801
  request_id: string;
1462
1802
  state: SpawnListPageSerializeSpawnState;
1463
1803
  version: number;
1804
+ withdrawn?: SpawnListPageSerializeWithdrawn | null;
1464
1805
  }
1465
1806
  /**
1466
1807
  * The child a token bound: the registering incarnation's own registry identity.
@@ -1472,9 +1813,9 @@ export interface SpawnListPageSerializeBoundChild {
1472
1813
  bound_at: string;
1473
1814
  incarnation: string;
1474
1815
  /**
1475
- * Exact registry identity returned to the registering child. Absent in legacy records.
1816
+ * Exact registry identity returned to the registering child.
1476
1817
  */
1477
- registration_id?: string | null;
1818
+ registration_id: string;
1478
1819
  source: string;
1479
1820
  /**
1480
1821
  * The durable agent the bound child attaches as. Absent for an edge without
@@ -1497,3 +1838,11 @@ export interface SpawnListPageSerializeRegistryLocation {
1497
1838
  tab?: string | null;
1498
1839
  workspace?: string | null;
1499
1840
  }
1841
+ /**
1842
+ * Why and when a launch ended without ever presenting, so a reader never infers
1843
+ * failure from absence.
1844
+ */
1845
+ export interface SpawnListPageSerializeWithdrawn {
1846
+ at: string;
1847
+ reason: string;
1848
+ }