@knpkv/herdr-work 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/dist/goal-family.d.ts +4 -0
- package/dist/goal-family.d.ts.map +1 -0
- package/dist/goal-family.js +32 -0
- package/dist/goal-family.js.map +1 -0
- package/dist/model.d.ts +404 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +110 -2
- package/dist/model.js.map +1 -1
- package/dist/projection.d.ts +192 -0
- package/dist/projection.d.ts.map +1 -1
- package/dist/projection.js +7 -2
- package/dist/projection.js.map +1 -1
- package/dist/service.d.ts +192 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/store.d.ts +48 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +20 -18
- package/dist/store.js.map +1 -1
- package/dist/view.d.ts +9 -2
- package/dist/view.d.ts.map +1 -1
- package/dist/view.js +45 -5
- package/dist/view.js.map +1 -1
- package/package.json +5 -3
- package/src/styles.css +46 -3
package/README.md
CHANGED
|
@@ -4,4 +4,16 @@ Durable fleet work checkpoints and the Rly departure-board projection used by th
|
|
|
4
4
|
|
|
5
5
|
Each `WorkGoalCheckpoint` stores a complete, Schema-decoded goal state at its exact durable timestamp. `projectWorkSnapshots` selects the latest recorded checkpoint at now, 24 hours, 7 days, and 30 days. A goal does not appear before its creation checkpoint, and missing history is never synthesized.
|
|
6
6
|
|
|
7
|
-
`
|
|
7
|
+
`WorkGoal.goalFamily` records a goal as either the canonical member of a family or a superseded member pointing to that canonical goal. Superseded goals leave the active projection only after their durable relation checkpoint. Earlier snapshots still show their previous state, blockers, reviews, and activity. A relation cannot be removed or retargeted, and a superseded goal cannot precede its canonical member.
|
|
8
|
+
|
|
9
|
+
`WorkStore` persists events in SQLite. Recording the exact same checkpoint again is an idempotent replay; reusing an event ID or goal timestamp with changed content returns `WorkCheckpointConflictError`. `makeWorkService` is the small runtime interface for recording checkpoints and reading all four snapshots.
|
|
10
|
+
|
|
11
|
+
`WorkBoard` renders these persisted outbound-link forms:
|
|
12
|
+
|
|
13
|
+
- `AgentConnectTarget.url` — local terminal handoff.
|
|
14
|
+
- `WorkApprovalTarget` — approval deep link with its host and job identity. The approvals ingestion boundary resolves the configured destination and verifies the URL origin before persistence; the root path and identity query remain required.
|
|
15
|
+
- `WorkReview.url` — review destination.
|
|
16
|
+
|
|
17
|
+
Every URL uses the credential-free HTTP(S) `LinkUrl` boundary. Provider credentials and private locators never enter these persisted or browser-visible links.
|
|
18
|
+
|
|
19
|
+
`WorkBoard` accepts `externalLinks="enabled"` by default. With `externalLinks="disabled"`, it keeps recorded approval, review, and Connect targets visible as metadata without rendering outbound links for read-only LAN Work.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { WorkProjectionError } from "./errors.js";
|
|
2
|
+
import type { WorkGoalCheckpoint } from "./model.js";
|
|
3
|
+
export declare const validateGoalFamilyHistory: (events: ReadonlyArray<WorkGoalCheckpoint>) => WorkProjectionError | undefined;
|
|
4
|
+
//# sourceMappingURL=goal-family.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-family.d.ts","sourceRoot":"","sources":["../src/goal-family.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAkB,MAAM,YAAY,CAAA;AAKpE,eAAO,MAAM,yBAAyB,WAC5B,aAAa,CAAC,kBAAkB,CAAC,KACxC,mBAAmB,GAAG,SAkCxB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { WorkProjectionError } from "./errors.js";
|
|
2
|
+
const inconsistency = (detail, cause) => new WorkProjectionError({ cause, detail, reason: "inconsistent_history" });
|
|
3
|
+
export const validateGoalFamilyHistory = (events) => {
|
|
4
|
+
const familyByGoal = new Map();
|
|
5
|
+
const canonicalActivatedAt = new Map();
|
|
6
|
+
const ordered = events.toSorted((left, right) => left.occurredAt - right.occurredAt);
|
|
7
|
+
for (const event of ordered) {
|
|
8
|
+
const family = event.goal.goalFamily;
|
|
9
|
+
const previousFamily = familyByGoal.get(event.goal.id);
|
|
10
|
+
if (previousFamily !== undefined && (family === undefined ||
|
|
11
|
+
family.canonicalGoalId !== previousFamily.canonicalGoalId ||
|
|
12
|
+
family.role !== previousFamily.role)) {
|
|
13
|
+
return inconsistency(`goal ${event.goal.id} changed or removed its goal-family relation`, event);
|
|
14
|
+
}
|
|
15
|
+
if (family !== undefined) {
|
|
16
|
+
familyByGoal.set(event.goal.id, family);
|
|
17
|
+
if (family.role === "canonical" && !canonicalActivatedAt.has(event.goal.id)) {
|
|
18
|
+
canonicalActivatedAt.set(event.goal.id, event.occurredAt);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const event of ordered) {
|
|
23
|
+
const family = event.goal.goalFamily;
|
|
24
|
+
if (family?.role !== "superseded")
|
|
25
|
+
continue;
|
|
26
|
+
const canonicalAt = canonicalActivatedAt.get(family.canonicalGoalId);
|
|
27
|
+
if (canonicalAt === undefined || canonicalAt > event.occurredAt) {
|
|
28
|
+
return inconsistency(`goal ${event.goal.id} was superseded before canonical goal ${family.canonicalGoalId} was recorded`, event);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=goal-family.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goal-family.js","sourceRoot":"","sources":["../src/goal-family.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAGjD,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,KAAyB,EAAE,EAAE,CAClE,IAAI,mBAAmB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACvC,MAAyC,EACR,EAAE;IACnC,MAAM,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAA;IACtD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;IACpF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAA;QACpC,MAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACtD,IACE,cAAc,KAAK,SAAS,IAAI,CAC9B,MAAM,KAAK,SAAS;YACpB,MAAM,CAAC,eAAe,KAAK,cAAc,CAAC,eAAe;YACzD,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,CACpC,EACD,CAAC;YACD,OAAO,aAAa,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,8CAA8C,EAAE,KAAK,CAAC,CAAA;QAClG,CAAC;QACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;YACvC,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC5E,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAA;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAA;QACpC,IAAI,MAAM,EAAE,IAAI,KAAK,YAAY;YAAE,SAAQ;QAC3C,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAA;QACpE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;YAChE,OAAO,aAAa,CAClB,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,yCAAyC,MAAM,CAAC,eAAe,eAAe,EACnG,KAAK,CACN,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAA"}
|
package/dist/model.d.ts
CHANGED
|
@@ -31,6 +31,74 @@ export declare const WorkBlocker: Schema.Struct<{
|
|
|
31
31
|
}>;
|
|
32
32
|
export interface WorkBlocker extends Schema.Schema.Type<typeof WorkBlocker> {
|
|
33
33
|
}
|
|
34
|
+
export declare const WorkAgentHierarchy: Schema.Struct<{
|
|
35
|
+
readonly agent: Schema.Struct<{
|
|
36
|
+
readonly host: Schema.String;
|
|
37
|
+
readonly agentId: Schema.String;
|
|
38
|
+
readonly name: Schema.String;
|
|
39
|
+
readonly paneId: Schema.String;
|
|
40
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
41
|
+
readonly parentAgentId: Schema.String;
|
|
42
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
43
|
+
}>>;
|
|
44
|
+
}>;
|
|
45
|
+
}>;
|
|
46
|
+
export interface WorkAgentHierarchy extends Schema.Schema.Type<typeof WorkAgentHierarchy> {
|
|
47
|
+
}
|
|
48
|
+
export declare const WorkActivityKind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
49
|
+
export type WorkActivityKind = typeof WorkActivityKind.Type;
|
|
50
|
+
export declare const WorkActivity: Schema.Struct<{
|
|
51
|
+
readonly id: Schema.String;
|
|
52
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
53
|
+
readonly summary: Schema.String;
|
|
54
|
+
readonly occurredAt: Schema.Number;
|
|
55
|
+
}>;
|
|
56
|
+
export interface WorkActivity extends Schema.Schema.Type<typeof WorkActivity> {
|
|
57
|
+
}
|
|
58
|
+
export declare const WorkApprovalTarget: Schema.Struct<{
|
|
59
|
+
readonly host: Schema.String;
|
|
60
|
+
readonly jobId: Schema.String;
|
|
61
|
+
readonly url: Schema.String;
|
|
62
|
+
}>;
|
|
63
|
+
export interface WorkApprovalTarget extends Schema.Schema.Type<typeof WorkApprovalTarget> {
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Checks a decoded approval target against the origin resolved by the
|
|
67
|
+
* configuration-aware approvals boundary before the target is persisted.
|
|
68
|
+
*/
|
|
69
|
+
export declare const approvalTargetMatchesOrigin: (target: WorkApprovalTarget, authoritativeOrigin: string) => boolean;
|
|
70
|
+
export declare const WorkRequestState: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
71
|
+
export type WorkRequestState = typeof WorkRequestState.Type;
|
|
72
|
+
export declare const WorkRequest: Schema.Struct<{
|
|
73
|
+
readonly id: Schema.String;
|
|
74
|
+
readonly summary: Schema.String;
|
|
75
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
76
|
+
readonly requestedAt: Schema.Number;
|
|
77
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
78
|
+
readonly host: Schema.String;
|
|
79
|
+
readonly jobId: Schema.String;
|
|
80
|
+
readonly url: Schema.String;
|
|
81
|
+
}>>;
|
|
82
|
+
}>;
|
|
83
|
+
export interface WorkRequest extends Schema.Schema.Type<typeof WorkRequest> {
|
|
84
|
+
}
|
|
85
|
+
export declare const WorkReviewState: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
86
|
+
export type WorkReviewState = typeof WorkReviewState.Type;
|
|
87
|
+
/** Review status plus the persisted credential-free destination, when known. */
|
|
88
|
+
export declare const WorkReview: Schema.Struct<{
|
|
89
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
90
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
91
|
+
readonly updatedAt: Schema.Number;
|
|
92
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
93
|
+
}>;
|
|
94
|
+
export interface WorkReview extends Schema.Schema.Type<typeof WorkReview> {
|
|
95
|
+
}
|
|
96
|
+
export declare const WorkGoalFamily: Schema.Struct<{
|
|
97
|
+
readonly canonicalGoalId: Schema.String;
|
|
98
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
99
|
+
}>;
|
|
100
|
+
export interface WorkGoalFamily extends Schema.Schema.Type<typeof WorkGoalFamily> {
|
|
101
|
+
}
|
|
34
102
|
export declare const WorkGoal: Schema.Struct<{
|
|
35
103
|
readonly id: Schema.String;
|
|
36
104
|
readonly title: Schema.String;
|
|
@@ -59,6 +127,54 @@ export declare const WorkGoal: Schema.Struct<{
|
|
|
59
127
|
readonly agentId: Schema.String;
|
|
60
128
|
readonly url: Schema.String;
|
|
61
129
|
}>>;
|
|
130
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
131
|
+
readonly canonicalGoalId: Schema.String;
|
|
132
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
133
|
+
}>>;
|
|
134
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
135
|
+
readonly agent: Schema.Struct<{
|
|
136
|
+
readonly host: Schema.String;
|
|
137
|
+
readonly agentId: Schema.String;
|
|
138
|
+
readonly name: Schema.String;
|
|
139
|
+
readonly paneId: Schema.String;
|
|
140
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
141
|
+
readonly parentAgentId: Schema.String;
|
|
142
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
143
|
+
}>>;
|
|
144
|
+
}>;
|
|
145
|
+
}>>>;
|
|
146
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
147
|
+
readonly id: Schema.String;
|
|
148
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
149
|
+
readonly summary: Schema.String;
|
|
150
|
+
readonly occurredAt: Schema.Number;
|
|
151
|
+
}>>>;
|
|
152
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
153
|
+
readonly summary: Schema.String;
|
|
154
|
+
readonly since: Schema.Number;
|
|
155
|
+
}>>>;
|
|
156
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
157
|
+
readonly id: Schema.String;
|
|
158
|
+
readonly summary: Schema.String;
|
|
159
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
160
|
+
readonly requestedAt: Schema.Number;
|
|
161
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
162
|
+
readonly host: Schema.String;
|
|
163
|
+
readonly jobId: Schema.String;
|
|
164
|
+
readonly url: Schema.String;
|
|
165
|
+
}>>;
|
|
166
|
+
}>>>;
|
|
167
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
168
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
169
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
170
|
+
readonly updatedAt: Schema.Number;
|
|
171
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
172
|
+
}>>>;
|
|
173
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
174
|
+
readonly host: Schema.String;
|
|
175
|
+
readonly jobId: Schema.String;
|
|
176
|
+
readonly url: Schema.String;
|
|
177
|
+
}>>>;
|
|
62
178
|
readonly createdAt: Schema.Number;
|
|
63
179
|
readonly updatedAt: Schema.Number;
|
|
64
180
|
}>;
|
|
@@ -96,6 +212,54 @@ export declare const WorkGoalCheckpoint: Schema.Struct<{
|
|
|
96
212
|
readonly agentId: Schema.String;
|
|
97
213
|
readonly url: Schema.String;
|
|
98
214
|
}>>;
|
|
215
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
216
|
+
readonly canonicalGoalId: Schema.String;
|
|
217
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
218
|
+
}>>;
|
|
219
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
220
|
+
readonly agent: Schema.Struct<{
|
|
221
|
+
readonly host: Schema.String;
|
|
222
|
+
readonly agentId: Schema.String;
|
|
223
|
+
readonly name: Schema.String;
|
|
224
|
+
readonly paneId: Schema.String;
|
|
225
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
226
|
+
readonly parentAgentId: Schema.String;
|
|
227
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
228
|
+
}>>;
|
|
229
|
+
}>;
|
|
230
|
+
}>>>;
|
|
231
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
232
|
+
readonly id: Schema.String;
|
|
233
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
234
|
+
readonly summary: Schema.String;
|
|
235
|
+
readonly occurredAt: Schema.Number;
|
|
236
|
+
}>>>;
|
|
237
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
238
|
+
readonly summary: Schema.String;
|
|
239
|
+
readonly since: Schema.Number;
|
|
240
|
+
}>>>;
|
|
241
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
242
|
+
readonly id: Schema.String;
|
|
243
|
+
readonly summary: Schema.String;
|
|
244
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
245
|
+
readonly requestedAt: Schema.Number;
|
|
246
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
247
|
+
readonly host: Schema.String;
|
|
248
|
+
readonly jobId: Schema.String;
|
|
249
|
+
readonly url: Schema.String;
|
|
250
|
+
}>>;
|
|
251
|
+
}>>>;
|
|
252
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
253
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
254
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
255
|
+
readonly updatedAt: Schema.Number;
|
|
256
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
257
|
+
}>>>;
|
|
258
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
259
|
+
readonly host: Schema.String;
|
|
260
|
+
readonly jobId: Schema.String;
|
|
261
|
+
readonly url: Schema.String;
|
|
262
|
+
}>>>;
|
|
99
263
|
readonly createdAt: Schema.Number;
|
|
100
264
|
readonly updatedAt: Schema.Number;
|
|
101
265
|
}>;
|
|
@@ -136,6 +300,54 @@ export declare const WorkSnapshot: Schema.Struct<{
|
|
|
136
300
|
readonly agentId: Schema.String;
|
|
137
301
|
readonly url: Schema.String;
|
|
138
302
|
}>>;
|
|
303
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
304
|
+
readonly canonicalGoalId: Schema.String;
|
|
305
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
306
|
+
}>>;
|
|
307
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
308
|
+
readonly agent: Schema.Struct<{
|
|
309
|
+
readonly host: Schema.String;
|
|
310
|
+
readonly agentId: Schema.String;
|
|
311
|
+
readonly name: Schema.String;
|
|
312
|
+
readonly paneId: Schema.String;
|
|
313
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
314
|
+
readonly parentAgentId: Schema.String;
|
|
315
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
316
|
+
}>>;
|
|
317
|
+
}>;
|
|
318
|
+
}>>>;
|
|
319
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
320
|
+
readonly id: Schema.String;
|
|
321
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
322
|
+
readonly summary: Schema.String;
|
|
323
|
+
readonly occurredAt: Schema.Number;
|
|
324
|
+
}>>>;
|
|
325
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
326
|
+
readonly summary: Schema.String;
|
|
327
|
+
readonly since: Schema.Number;
|
|
328
|
+
}>>>;
|
|
329
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
330
|
+
readonly id: Schema.String;
|
|
331
|
+
readonly summary: Schema.String;
|
|
332
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
333
|
+
readonly requestedAt: Schema.Number;
|
|
334
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
335
|
+
readonly host: Schema.String;
|
|
336
|
+
readonly jobId: Schema.String;
|
|
337
|
+
readonly url: Schema.String;
|
|
338
|
+
}>>;
|
|
339
|
+
}>>>;
|
|
340
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
341
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
342
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
343
|
+
readonly updatedAt: Schema.Number;
|
|
344
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
345
|
+
}>>>;
|
|
346
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
347
|
+
readonly host: Schema.String;
|
|
348
|
+
readonly jobId: Schema.String;
|
|
349
|
+
readonly url: Schema.String;
|
|
350
|
+
}>>>;
|
|
139
351
|
readonly createdAt: Schema.Number;
|
|
140
352
|
readonly updatedAt: Schema.Number;
|
|
141
353
|
}>>;
|
|
@@ -176,6 +388,54 @@ export declare const WorkSnapshots: Schema.Struct<{
|
|
|
176
388
|
readonly agentId: Schema.String;
|
|
177
389
|
readonly url: Schema.String;
|
|
178
390
|
}>>;
|
|
391
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
392
|
+
readonly canonicalGoalId: Schema.String;
|
|
393
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
394
|
+
}>>;
|
|
395
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
396
|
+
readonly agent: Schema.Struct<{
|
|
397
|
+
readonly host: Schema.String;
|
|
398
|
+
readonly agentId: Schema.String;
|
|
399
|
+
readonly name: Schema.String;
|
|
400
|
+
readonly paneId: Schema.String;
|
|
401
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
402
|
+
readonly parentAgentId: Schema.String;
|
|
403
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
404
|
+
}>>;
|
|
405
|
+
}>;
|
|
406
|
+
}>>>;
|
|
407
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
408
|
+
readonly id: Schema.String;
|
|
409
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
410
|
+
readonly summary: Schema.String;
|
|
411
|
+
readonly occurredAt: Schema.Number;
|
|
412
|
+
}>>>;
|
|
413
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
414
|
+
readonly summary: Schema.String;
|
|
415
|
+
readonly since: Schema.Number;
|
|
416
|
+
}>>>;
|
|
417
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
418
|
+
readonly id: Schema.String;
|
|
419
|
+
readonly summary: Schema.String;
|
|
420
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
421
|
+
readonly requestedAt: Schema.Number;
|
|
422
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
423
|
+
readonly host: Schema.String;
|
|
424
|
+
readonly jobId: Schema.String;
|
|
425
|
+
readonly url: Schema.String;
|
|
426
|
+
}>>;
|
|
427
|
+
}>>>;
|
|
428
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
429
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
430
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
431
|
+
readonly updatedAt: Schema.Number;
|
|
432
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
433
|
+
}>>>;
|
|
434
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
435
|
+
readonly host: Schema.String;
|
|
436
|
+
readonly jobId: Schema.String;
|
|
437
|
+
readonly url: Schema.String;
|
|
438
|
+
}>>>;
|
|
179
439
|
readonly createdAt: Schema.Number;
|
|
180
440
|
readonly updatedAt: Schema.Number;
|
|
181
441
|
}>>;
|
|
@@ -212,6 +472,54 @@ export declare const WorkSnapshots: Schema.Struct<{
|
|
|
212
472
|
readonly agentId: Schema.String;
|
|
213
473
|
readonly url: Schema.String;
|
|
214
474
|
}>>;
|
|
475
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
476
|
+
readonly canonicalGoalId: Schema.String;
|
|
477
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
478
|
+
}>>;
|
|
479
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
480
|
+
readonly agent: Schema.Struct<{
|
|
481
|
+
readonly host: Schema.String;
|
|
482
|
+
readonly agentId: Schema.String;
|
|
483
|
+
readonly name: Schema.String;
|
|
484
|
+
readonly paneId: Schema.String;
|
|
485
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
486
|
+
readonly parentAgentId: Schema.String;
|
|
487
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
488
|
+
}>>;
|
|
489
|
+
}>;
|
|
490
|
+
}>>>;
|
|
491
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
492
|
+
readonly id: Schema.String;
|
|
493
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
494
|
+
readonly summary: Schema.String;
|
|
495
|
+
readonly occurredAt: Schema.Number;
|
|
496
|
+
}>>>;
|
|
497
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
498
|
+
readonly summary: Schema.String;
|
|
499
|
+
readonly since: Schema.Number;
|
|
500
|
+
}>>>;
|
|
501
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
502
|
+
readonly id: Schema.String;
|
|
503
|
+
readonly summary: Schema.String;
|
|
504
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
505
|
+
readonly requestedAt: Schema.Number;
|
|
506
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
507
|
+
readonly host: Schema.String;
|
|
508
|
+
readonly jobId: Schema.String;
|
|
509
|
+
readonly url: Schema.String;
|
|
510
|
+
}>>;
|
|
511
|
+
}>>>;
|
|
512
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
513
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
514
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
515
|
+
readonly updatedAt: Schema.Number;
|
|
516
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
517
|
+
}>>>;
|
|
518
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
519
|
+
readonly host: Schema.String;
|
|
520
|
+
readonly jobId: Schema.String;
|
|
521
|
+
readonly url: Schema.String;
|
|
522
|
+
}>>>;
|
|
215
523
|
readonly createdAt: Schema.Number;
|
|
216
524
|
readonly updatedAt: Schema.Number;
|
|
217
525
|
}>>;
|
|
@@ -248,6 +556,54 @@ export declare const WorkSnapshots: Schema.Struct<{
|
|
|
248
556
|
readonly agentId: Schema.String;
|
|
249
557
|
readonly url: Schema.String;
|
|
250
558
|
}>>;
|
|
559
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
560
|
+
readonly canonicalGoalId: Schema.String;
|
|
561
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
562
|
+
}>>;
|
|
563
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
564
|
+
readonly agent: Schema.Struct<{
|
|
565
|
+
readonly host: Schema.String;
|
|
566
|
+
readonly agentId: Schema.String;
|
|
567
|
+
readonly name: Schema.String;
|
|
568
|
+
readonly paneId: Schema.String;
|
|
569
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
570
|
+
readonly parentAgentId: Schema.String;
|
|
571
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
572
|
+
}>>;
|
|
573
|
+
}>;
|
|
574
|
+
}>>>;
|
|
575
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
576
|
+
readonly id: Schema.String;
|
|
577
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
578
|
+
readonly summary: Schema.String;
|
|
579
|
+
readonly occurredAt: Schema.Number;
|
|
580
|
+
}>>>;
|
|
581
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
582
|
+
readonly summary: Schema.String;
|
|
583
|
+
readonly since: Schema.Number;
|
|
584
|
+
}>>>;
|
|
585
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
586
|
+
readonly id: Schema.String;
|
|
587
|
+
readonly summary: Schema.String;
|
|
588
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
589
|
+
readonly requestedAt: Schema.Number;
|
|
590
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
591
|
+
readonly host: Schema.String;
|
|
592
|
+
readonly jobId: Schema.String;
|
|
593
|
+
readonly url: Schema.String;
|
|
594
|
+
}>>;
|
|
595
|
+
}>>>;
|
|
596
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
597
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
598
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
599
|
+
readonly updatedAt: Schema.Number;
|
|
600
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
601
|
+
}>>>;
|
|
602
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
603
|
+
readonly host: Schema.String;
|
|
604
|
+
readonly jobId: Schema.String;
|
|
605
|
+
readonly url: Schema.String;
|
|
606
|
+
}>>>;
|
|
251
607
|
readonly createdAt: Schema.Number;
|
|
252
608
|
readonly updatedAt: Schema.Number;
|
|
253
609
|
}>>;
|
|
@@ -284,6 +640,54 @@ export declare const WorkSnapshots: Schema.Struct<{
|
|
|
284
640
|
readonly agentId: Schema.String;
|
|
285
641
|
readonly url: Schema.String;
|
|
286
642
|
}>>;
|
|
643
|
+
readonly goalFamily: Schema.optionalKey<Schema.Struct<{
|
|
644
|
+
readonly canonicalGoalId: Schema.String;
|
|
645
|
+
readonly role: Schema.Literals<readonly ["canonical", "superseded"]>;
|
|
646
|
+
}>>;
|
|
647
|
+
readonly agentHierarchy: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
648
|
+
readonly agent: Schema.Struct<{
|
|
649
|
+
readonly host: Schema.String;
|
|
650
|
+
readonly agentId: Schema.String;
|
|
651
|
+
readonly name: Schema.String;
|
|
652
|
+
readonly paneId: Schema.String;
|
|
653
|
+
readonly relationship: Schema.optionalKey<Schema.Struct<{
|
|
654
|
+
readonly parentAgentId: Schema.String;
|
|
655
|
+
readonly relation: Schema.Literals<readonly ["delegated", "pair", "review"]>;
|
|
656
|
+
}>>;
|
|
657
|
+
}>;
|
|
658
|
+
}>>>;
|
|
659
|
+
readonly activity: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
660
|
+
readonly id: Schema.String;
|
|
661
|
+
readonly kind: Schema.Literals<readonly ["note", "status", "blocker", "request", "review", "shipment"]>;
|
|
662
|
+
readonly summary: Schema.String;
|
|
663
|
+
readonly occurredAt: Schema.Number;
|
|
664
|
+
}>>>;
|
|
665
|
+
readonly blockers: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
666
|
+
readonly summary: Schema.String;
|
|
667
|
+
readonly since: Schema.Number;
|
|
668
|
+
}>>>;
|
|
669
|
+
readonly requests: Schema.optionalKey<Schema.$Array<Schema.Struct<{
|
|
670
|
+
readonly id: Schema.String;
|
|
671
|
+
readonly summary: Schema.String;
|
|
672
|
+
readonly state: Schema.Literals<readonly ["open", "approved", "rejected", "fulfilled"]>;
|
|
673
|
+
readonly requestedAt: Schema.Number;
|
|
674
|
+
readonly approvalTarget: Schema.NullOr<Schema.Struct<{
|
|
675
|
+
readonly host: Schema.String;
|
|
676
|
+
readonly jobId: Schema.String;
|
|
677
|
+
readonly url: Schema.String;
|
|
678
|
+
}>>;
|
|
679
|
+
}>>>;
|
|
680
|
+
readonly review: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
681
|
+
readonly state: Schema.Literals<readonly ["not_requested", "requested", "changes_requested", "approved"]>;
|
|
682
|
+
readonly summary: Schema.NullOr<Schema.String>;
|
|
683
|
+
readonly updatedAt: Schema.Number;
|
|
684
|
+
readonly url: Schema.NullOr<Schema.String>;
|
|
685
|
+
}>>>;
|
|
686
|
+
readonly approvalTarget: Schema.optionalKey<Schema.NullOr<Schema.Struct<{
|
|
687
|
+
readonly host: Schema.String;
|
|
688
|
+
readonly jobId: Schema.String;
|
|
689
|
+
readonly url: Schema.String;
|
|
690
|
+
}>>>;
|
|
287
691
|
readonly createdAt: Schema.Number;
|
|
288
692
|
readonly updatedAt: Schema.Number;
|
|
289
693
|
}>>;
|
package/dist/model.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"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"}
|