@groundnuty/macf-core 0.2.47 → 0.2.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/delivery/index.d.ts +3 -0
- package/dist/delivery/index.d.ts.map +1 -0
- package/dist/delivery/index.js +2 -0
- package/dist/delivery/index.js.map +1 -0
- package/dist/delivery/store.d.ts +135 -0
- package/dist/delivery/store.d.ts.map +1 -0
- package/dist/delivery/store.js +81 -0
- package/dist/delivery/store.js.map +1 -0
- package/dist/discovery.d.ts +19 -8
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +42 -12
- package/dist/discovery.js.map +1 -1
- package/dist/fleet-driver.d.ts +57 -1
- package/dist/fleet-driver.d.ts.map +1 -1
- package/dist/fleet-driver.js.map +1 -1
- package/dist/fleet-upgrade.d.ts +175 -22
- package/dist/fleet-upgrade.d.ts.map +1 -1
- package/dist/fleet-upgrade.js +207 -29
- package/dist/fleet-upgrade.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/prompt-responses.d.ts +9 -0
- package/dist/prompt-responses.d.ts.map +1 -1
- package/dist/prompt-responses.js +10 -1
- package/dist/prompt-responses.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DR-038 Decision 6 — the pluggable store INTERFACE for the effectively-once
|
|
3
|
+
* delivery layer. This is the BINDING contract: a driver (in-memory here for
|
|
4
|
+
* tests/reference, a VM disk-spool driver + a K8s PVC/broker driver owned by
|
|
5
|
+
* devops per DR-008) implements `OutboxStore` / `InboxStore` against whatever
|
|
6
|
+
* durable substrate it has. The concrete on-disk layout (filenames, jsonl vs.
|
|
7
|
+
* broker topic, etc.) is explicitly NOT part of this contract — DR-038
|
|
8
|
+
* Decision 6 is emphatic that the interface, not the file shape, is binding.
|
|
9
|
+
*
|
|
10
|
+
* HOISTED HERE (macf#741 follow-up to #738/#742) from
|
|
11
|
+
* `packages/macf-channel-server/src/delivery/store.ts` so ONE definition
|
|
12
|
+
* serves all three consumers that need it: `macf-channel-server` (the
|
|
13
|
+
* sender/receiver runtime, `outbox.ts` / `inbox.ts` / `in-memory-store.ts`),
|
|
14
|
+
* `macf` (the plugin's on-startup inbox drain, `plugin/lib/inbox-store.ts`),
|
|
15
|
+
* and devops's disk-spool driver (DR-008), which lives in a THIRD repo
|
|
16
|
+
* (`macf-devops-toolkit`) that cannot depend on either monorepo package
|
|
17
|
+
* directly — `@groundnuty/macf-core` (npm-published, already a dependency of
|
|
18
|
+
* both `macf` and `macf-channel-server`) is the one home reachable by all
|
|
19
|
+
* three. `macf-channel-server`'s local `delivery/store.ts` (the prior home
|
|
20
|
+
* of this contract) is removed; every consumer there now imports these
|
|
21
|
+
* types directly from `@groundnuty/macf-core`.
|
|
22
|
+
*
|
|
23
|
+
* Both interfaces are `Promise`-returning uniformly, even though the
|
|
24
|
+
* reference in-memory driver (`in-memory-store.ts`) and a likely disk-spool
|
|
25
|
+
* driver could be synchronous under the hood (comms-ledger.ts's
|
|
26
|
+
* `appendFileSync` precedent). This is a DELIBERATE GUESS beyond what
|
|
27
|
+
* DR-038's Decision 6 sketch pins (which shows bare `void` / `Message[]`
|
|
28
|
+
* returns) — flagged for science's review: the devops K8s PVC/broker driver
|
|
29
|
+
* (DR-008) is plausibly async (network I/O), and a uniform async contract
|
|
30
|
+
* means the runtime-agnostic `outbox.ts` / `inbox.ts` logic in this slice
|
|
31
|
+
* never needs to special-case a driver's sync-vs-async shape. If the review
|
|
32
|
+
* decides all drivers are sync-capable, this can be narrowed later without
|
|
33
|
+
* changing call sites (an async fn can always wrap a sync value).
|
|
34
|
+
*
|
|
35
|
+
* `payload` is intentionally `unknown` at the store layer — the store's job
|
|
36
|
+
* is durable persistence + dedup, not payload semantics. The effectively-once
|
|
37
|
+
* logic (`outbox.ts` / `inbox.ts`) is equally payload-agnostic; only the
|
|
38
|
+
* eventual wiring slice (notify_peer / `/notify`) will narrow `payload` to a
|
|
39
|
+
* concrete `NotifyPayload`-shaped type.
|
|
40
|
+
*/
|
|
41
|
+
import { z } from 'zod';
|
|
42
|
+
export declare const OutboxEntrySchema: z.ZodObject<{
|
|
43
|
+
id: z.ZodString;
|
|
44
|
+
target: z.ZodString;
|
|
45
|
+
payload: z.ZodUnknown;
|
|
46
|
+
enqueuedAt: z.ZodNumber;
|
|
47
|
+
nextAttemptAt: z.ZodNumber;
|
|
48
|
+
attemptCount: z.ZodNumber;
|
|
49
|
+
}, z.core.$strip>;
|
|
50
|
+
export type OutboxEntry = z.infer<typeof OutboxEntrySchema>;
|
|
51
|
+
export declare const InboxEntrySchema: z.ZodObject<{
|
|
52
|
+
id: z.ZodString;
|
|
53
|
+
payload: z.ZodUnknown;
|
|
54
|
+
receivedAt: z.ZodNumber;
|
|
55
|
+
processed: z.ZodBoolean;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
export type InboxEntry = z.infer<typeof InboxEntrySchema>;
|
|
58
|
+
export interface OutboxStore {
|
|
59
|
+
/**
|
|
60
|
+
* Persist a NEW entry BEFORE the first send attempt (persist-then-send,
|
|
61
|
+
* DR-038 Decision 1). Callers mint the id via `mintMessageId()` and set
|
|
62
|
+
* `attemptCount: 0` before calling this — `enqueue` is insert-only, not an
|
|
63
|
+
* upsert; retry-state mutations go through `reschedule` (below).
|
|
64
|
+
*/
|
|
65
|
+
enqueue(entry: OutboxEntry): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* All entries not yet acked or dead-lettered — i.e. everything still
|
|
68
|
+
* awaiting delivery, regardless of whether they're currently due. This is
|
|
69
|
+
* what gets re-read on sender startup (Decision 4's restart-survival) — a
|
|
70
|
+
* fresh `outbox.ts` instance over the SAME store sees every entry a prior
|
|
71
|
+
* process instance hadn't finished with. The retry loop (`outbox.ts`)
|
|
72
|
+
* filters this list by `nextAttemptAt <= now` itself; the store does not
|
|
73
|
+
* do due-filtering (mirrors DR-038 Decision 6's `pending(): Message[]`
|
|
74
|
+
* sketch, which returns the undelivered set, not just the due subset).
|
|
75
|
+
*/
|
|
76
|
+
listPending(): Promise<OutboxEntry[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Reschedule an entry after a failed/timed-out send attempt: bump
|
|
79
|
+
* `nextAttemptAt` (per the backoff schedule) and `attemptCount`. This is
|
|
80
|
+
* an ADDITION beyond DR-038 Decision 6's sketch (which shows only
|
|
81
|
+
* `enqueue` / `pending` / `markAcked` / `deadLetter`) — flagged for
|
|
82
|
+
* review: the retry loop needs SOME way to durably persist backoff state
|
|
83
|
+
* so a restart resumes the correct schedule rather than restarting
|
|
84
|
+
* backoff from attempt 0 (which would race through TTL faster than
|
|
85
|
+
* intended after a crash-loop). `reschedule` is the minimal mutate-in-
|
|
86
|
+
* place primitive for that; it does not change the entry's identity, so
|
|
87
|
+
* a driver can implement it as "load, patch two fields, re-persist"
|
|
88
|
+
* against any single-entry-addressable substrate.
|
|
89
|
+
*/
|
|
90
|
+
reschedule(id: string, nextAttemptAt: number, attemptCount: number): Promise<void>;
|
|
91
|
+
/** Durable-ACK path (HTTP 200 received) → remove the entry (Decision 3). */
|
|
92
|
+
markAcked(id: string): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* TTL-expiry path → remove from the live pending set (Decision 4). The
|
|
95
|
+
* GitHub-issue escalation itself is explicitly NOT a store concern (DR-038
|
|
96
|
+
* Decision 4: "a decision-layer action... NOT a store-driver method") —
|
|
97
|
+
* this method only handles the store-side bookkeeping; the caller
|
|
98
|
+
* (`outbox.ts`) separately invokes an `onDeadLetter` callback for the
|
|
99
|
+
* decision-layer escalation, wired by a later slice.
|
|
100
|
+
*/
|
|
101
|
+
deadLetter(id: string): Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
export interface InboxStore {
|
|
104
|
+
/**
|
|
105
|
+
* Atomically dedup-and-persist. Returns `wasNew: true` when this `id`
|
|
106
|
+
* wasn't already present (a genuinely new message, now durably persisted);
|
|
107
|
+
* `false` when it was already present (a redelivery — no-op, existing
|
|
108
|
+
* entry left untouched). MUST be a single atomic operation — DR-038
|
|
109
|
+
* Decision 6 is explicit that a separate `has()` + `persist()` would
|
|
110
|
+
* reopen the check-then-act TOCTOU this primitive exists to close.
|
|
111
|
+
*/
|
|
112
|
+
persist(entry: InboxEntry): Promise<boolean>;
|
|
113
|
+
/** Existence check by id (task-specified addition beyond the DR-038 sketch). */
|
|
114
|
+
has(id: string): Promise<boolean>;
|
|
115
|
+
/** Fetch by id, or `undefined` if absent (task-specified addition). */
|
|
116
|
+
get(id: string): Promise<InboxEntry | undefined>;
|
|
117
|
+
/**
|
|
118
|
+
* Persisted-but-not-yet-processed entries — drained on-receipt AND
|
|
119
|
+
* on-startup (DR-038 Decision 5). Dedup-by-id makes the two triggers
|
|
120
|
+
* safe to overlap.
|
|
121
|
+
*/
|
|
122
|
+
listUndrained(): Promise<InboxEntry[]>;
|
|
123
|
+
/**
|
|
124
|
+
* Mark an entry processed — it won't be re-drained.
|
|
125
|
+
*
|
|
126
|
+
* Forward-note (DR-038 / macf#741): today's plugin drain calls this
|
|
127
|
+
* BEFORE surfacing the entry to the operator/agent (mark-then-surface),
|
|
128
|
+
* against an in-memory reference store where the distinction is moot. Once
|
|
129
|
+
* a durable driver lands, revisit the ordering to surface-then-mark
|
|
130
|
+
* instead, so a crash between the two steps can't silently drop a message
|
|
131
|
+
* that was marked processed but never actually surfaced.
|
|
132
|
+
*/
|
|
133
|
+
markProcessed(id: string): Promise<void>;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/delivery/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,iBAAiB;;;;;;;iBAsB5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAM5D,eAAO,MAAM,gBAAgB;;;;;iBAS3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAM1D,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C;;;;;;;;;OASG;IACH,WAAW,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAEtC;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF,4EAA4E;IAC5E,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAMD,MAAM,WAAW,UAAU;IACzB;;;;;;;OAOG;IACH,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE7C,gFAAgF;IAChF,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAElC,uEAAuE;IACvE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC;IAEjD;;;;OAIG;IACH,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAEvC;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DR-038 Decision 6 — the pluggable store INTERFACE for the effectively-once
|
|
3
|
+
* delivery layer. This is the BINDING contract: a driver (in-memory here for
|
|
4
|
+
* tests/reference, a VM disk-spool driver + a K8s PVC/broker driver owned by
|
|
5
|
+
* devops per DR-008) implements `OutboxStore` / `InboxStore` against whatever
|
|
6
|
+
* durable substrate it has. The concrete on-disk layout (filenames, jsonl vs.
|
|
7
|
+
* broker topic, etc.) is explicitly NOT part of this contract — DR-038
|
|
8
|
+
* Decision 6 is emphatic that the interface, not the file shape, is binding.
|
|
9
|
+
*
|
|
10
|
+
* HOISTED HERE (macf#741 follow-up to #738/#742) from
|
|
11
|
+
* `packages/macf-channel-server/src/delivery/store.ts` so ONE definition
|
|
12
|
+
* serves all three consumers that need it: `macf-channel-server` (the
|
|
13
|
+
* sender/receiver runtime, `outbox.ts` / `inbox.ts` / `in-memory-store.ts`),
|
|
14
|
+
* `macf` (the plugin's on-startup inbox drain, `plugin/lib/inbox-store.ts`),
|
|
15
|
+
* and devops's disk-spool driver (DR-008), which lives in a THIRD repo
|
|
16
|
+
* (`macf-devops-toolkit`) that cannot depend on either monorepo package
|
|
17
|
+
* directly — `@groundnuty/macf-core` (npm-published, already a dependency of
|
|
18
|
+
* both `macf` and `macf-channel-server`) is the one home reachable by all
|
|
19
|
+
* three. `macf-channel-server`'s local `delivery/store.ts` (the prior home
|
|
20
|
+
* of this contract) is removed; every consumer there now imports these
|
|
21
|
+
* types directly from `@groundnuty/macf-core`.
|
|
22
|
+
*
|
|
23
|
+
* Both interfaces are `Promise`-returning uniformly, even though the
|
|
24
|
+
* reference in-memory driver (`in-memory-store.ts`) and a likely disk-spool
|
|
25
|
+
* driver could be synchronous under the hood (comms-ledger.ts's
|
|
26
|
+
* `appendFileSync` precedent). This is a DELIBERATE GUESS beyond what
|
|
27
|
+
* DR-038's Decision 6 sketch pins (which shows bare `void` / `Message[]`
|
|
28
|
+
* returns) — flagged for science's review: the devops K8s PVC/broker driver
|
|
29
|
+
* (DR-008) is plausibly async (network I/O), and a uniform async contract
|
|
30
|
+
* means the runtime-agnostic `outbox.ts` / `inbox.ts` logic in this slice
|
|
31
|
+
* never needs to special-case a driver's sync-vs-async shape. If the review
|
|
32
|
+
* decides all drivers are sync-capable, this can be narrowed later without
|
|
33
|
+
* changing call sites (an async fn can always wrap a sync value).
|
|
34
|
+
*
|
|
35
|
+
* `payload` is intentionally `unknown` at the store layer — the store's job
|
|
36
|
+
* is durable persistence + dedup, not payload semantics. The effectively-once
|
|
37
|
+
* logic (`outbox.ts` / `inbox.ts`) is equally payload-agnostic; only the
|
|
38
|
+
* eventual wiring slice (notify_peer / `/notify`) will narrow `payload` to a
|
|
39
|
+
* concrete `NotifyPayload`-shaped type.
|
|
40
|
+
*/
|
|
41
|
+
import { z } from 'zod';
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
// Outbox entry — the sender-side persisted record (DR-038 Decisions 1, 2, 4).
|
|
44
|
+
// ---------------------------------------------------------------------------
|
|
45
|
+
export const OutboxEntrySchema = z.object({
|
|
46
|
+
/**
|
|
47
|
+
* UUIDv4 message-id, minted ONCE at enqueue (DR-038 Decision 2) via
|
|
48
|
+
* `mintMessageId()` (`message-id.ts`). Persisted verbatim; NEVER
|
|
49
|
+
* regenerated on retry — that stability is the whole receiver-side dedup
|
|
50
|
+
* key (Decision 1).
|
|
51
|
+
*/
|
|
52
|
+
id: z.string().min(1),
|
|
53
|
+
/**
|
|
54
|
+
* Driver-agnostic routing target identifier (e.g. an agent/routing-label,
|
|
55
|
+
* or a target URL — whatever the caller's `send` seam expects as its
|
|
56
|
+
* first argument). Opaque to the store.
|
|
57
|
+
*/
|
|
58
|
+
target: z.string().min(1),
|
|
59
|
+
/** Opaque message payload. JSON-serializable is assumed but not enforced here. */
|
|
60
|
+
payload: z.unknown(),
|
|
61
|
+
/** Epoch-ms at first enqueue. Used for wall-clock TTL expiry (Decision 4). */
|
|
62
|
+
enqueuedAt: z.number(),
|
|
63
|
+
/** Epoch-ms of the next scheduled attempt (immediate on first enqueue). */
|
|
64
|
+
nextAttemptAt: z.number(),
|
|
65
|
+
/** Count of send attempts made so far (0 before the first attempt). */
|
|
66
|
+
attemptCount: z.number().int().nonnegative(),
|
|
67
|
+
});
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Inbox entry — the receiver-side persisted record (DR-038 Decisions 1, 3).
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
export const InboxEntrySchema = z.object({
|
|
72
|
+
/** The sender's message-id — the dedup key (DR-038 Decisions 1, 2). */
|
|
73
|
+
id: z.string().min(1),
|
|
74
|
+
/** Opaque message payload, as durably received. */
|
|
75
|
+
payload: z.unknown(),
|
|
76
|
+
/** Epoch-ms at receipt (persist time, i.e. before ACK — Decision 3). */
|
|
77
|
+
receivedAt: z.number(),
|
|
78
|
+
/** Has the drain processed this entry yet? (Decision 5). */
|
|
79
|
+
processed: z.boolean(),
|
|
80
|
+
});
|
|
81
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/delivery/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC;;;;;OAKG;IACH,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB;;;;OAIG;IACH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,kFAAkF;IAClF,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,8EAA8E;IAC9E,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,2EAA2E;IAC3E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;IACzB,uEAAuE;IACvE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;CAC7C,CAAC,CAAC;AAGH,8EAA8E;AAC9E,4EAA4E;AAC5E,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,uEAAuE;IACvE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACrB,mDAAmD;IACnD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,wEAAwE;IACxE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,4DAA4D;IAC5D,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;CACvB,CAAC,CAAC"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* The workspace-discovery record + its pure helpers (DR-037 Decision 4).
|
|
3
3
|
*
|
|
4
4
|
* This is the shared substrate the fleet operational-layer subcommands consume:
|
|
5
|
-
* `macf ps` (alive∪dead enumeration), `macf fleet upgrade` (group-by-
|
|
6
|
-
* fleets
|
|
5
|
+
* `macf ps` (alive∪dead enumeration), `macf fleet upgrade` (group-by-PROJECT →
|
|
6
|
+
* fleets — macf#710; a project owns its own CA + registry namespace, so it is
|
|
7
|
+
* the correct grouping key, NOT the coarser `registry` scope), and the watchdog
|
|
8
|
+
* (desired-set reconcile) all read the same primitive.
|
|
7
9
|
*
|
|
8
10
|
* The record shape + the RUNTIME-and-CLI-independent helpers live HERE in
|
|
9
11
|
* macf-core (DR-037 OQ2 — pure/portable logic in macf-core); the VM-filesystem
|
|
@@ -25,22 +27,31 @@ export declare const WorkspaceRecordSchema: z.ZodObject<{
|
|
|
25
27
|
agent: z.ZodString;
|
|
26
28
|
workspace: z.ZodString;
|
|
27
29
|
registry: z.ZodString;
|
|
30
|
+
project: z.ZodString;
|
|
28
31
|
versionPin: z.ZodNullable<z.ZodString>;
|
|
29
32
|
}, z.core.$strip>;
|
|
30
33
|
export type WorkspaceRecord = z.infer<typeof WorkspaceRecordSchema>;
|
|
31
34
|
/**
|
|
32
|
-
* Render a `RegistryConfig` as its stable
|
|
33
|
-
* == a registry — DR-037 Decision 1). Pure.
|
|
35
|
+
* Render a `RegistryConfig` as its stable, human-legible identifier. Pure.
|
|
34
36
|
*
|
|
35
37
|
* - `repo` → `owner/repo`
|
|
36
38
|
* - `org` → the org name
|
|
37
|
-
* - `profile` → the profile user name (
|
|
38
|
-
*
|
|
39
|
+
* - `profile` → the profile user name (e.g. every `groundnuty` profile-registry
|
|
40
|
+
* workspace, REGARDLESS of which project it belongs to, renders
|
|
41
|
+
* the same identifier here — it names the shared NETWORK ENDPOINT,
|
|
42
|
+
* not a fleet)
|
|
39
43
|
* - `local` → `local` (DR-024)
|
|
40
44
|
*
|
|
45
|
+
* NOTE (macf#710): this identifier is NOT the fleet-grouping key — see
|
|
46
|
+
* `WorkspaceRecord.project` for that. Prior to #710, `fleet upgrade` grouped by
|
|
47
|
+
* this identifier (DR-037 Decision 1's original framing), which collapsed
|
|
48
|
+
* distinct projects sharing one profile/org registry scope into a single fleet.
|
|
49
|
+
* `registryIdentifier` remains useful for display + for resolving a genuinely
|
|
50
|
+
* registry-scoped target (e.g. `fleet-resume`'s repo-scoped alert-repo lookup).
|
|
51
|
+
*
|
|
41
52
|
* Org and profile scopes collapse to a bare name; a theoretical `org foo` vs
|
|
42
|
-
* `profile foo` collision is accepted for this
|
|
43
|
-
*
|
|
53
|
+
* `profile foo` collision is accepted for this heuristic (they are not both
|
|
54
|
+
* used by one host in practice) and keeps the identifier human-legible.
|
|
44
55
|
*/
|
|
45
56
|
export declare function registryIdentifier(config: RegistryConfig): string;
|
|
46
57
|
/**
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,qBAAqB;;;;;;iBA2ChC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAWjE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,MAAM,EAAE,CAM1F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,SAAS,eAAe,EAAE,CAS5B"}
|
package/dist/discovery.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
* The workspace-discovery record + its pure helpers (DR-037 Decision 4).
|
|
3
3
|
*
|
|
4
4
|
* This is the shared substrate the fleet operational-layer subcommands consume:
|
|
5
|
-
* `macf ps` (alive∪dead enumeration), `macf fleet upgrade` (group-by-
|
|
6
|
-
* fleets
|
|
5
|
+
* `macf ps` (alive∪dead enumeration), `macf fleet upgrade` (group-by-PROJECT →
|
|
6
|
+
* fleets — macf#710; a project owns its own CA + registry namespace, so it is
|
|
7
|
+
* the correct grouping key, NOT the coarser `registry` scope), and the watchdog
|
|
8
|
+
* (desired-set reconcile) all read the same primitive.
|
|
7
9
|
*
|
|
8
10
|
* The record shape + the RUNTIME-and-CLI-independent helpers live HERE in
|
|
9
11
|
* macf-core (DR-037 OQ2 — pure/portable logic in macf-core); the VM-filesystem
|
|
@@ -30,12 +32,32 @@ export const WorkspaceRecordSchema = z.object({
|
|
|
30
32
|
*/
|
|
31
33
|
workspace: z.string(),
|
|
32
34
|
/**
|
|
33
|
-
* The registry this workspace belongs to, as a stable
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
35
|
+
* The registry this workspace belongs to, as a stable identifier — `owner/repo`
|
|
36
|
+
* (repo scope), the org / profile-user name (org / profile scope), or `local`
|
|
37
|
+
* (DR-024 local-registry mode). Derive via `registryIdentifier`.
|
|
38
|
+
*
|
|
39
|
+
* NOT the fleet-grouping key (macf#710) — a profile/org registry scope is the
|
|
40
|
+
* NETWORK ENDPOINT (e.g. the `groundnuty/groundnuty` GitHub repo backing a
|
|
41
|
+
* profile registry), which multiple DISTINCT projects can share. Each project
|
|
42
|
+
* has its own registry NAMESPACE (`MACF_AGENT_*` vs `ICSOC_2026_AGENT_*`) and
|
|
43
|
+
* its own CA (`MACF_CA_CERT` vs `ICSOC_2026_CA_CERT` — see
|
|
44
|
+
* `createVmDriverFromConfig`'s `${toVariableSegment(config.project)}_CA_CERT`
|
|
45
|
+
* lookup). Grouping by `registry` collapsed distinct projects sharing one
|
|
46
|
+
* profile/org scope into a single fleet, so a driver built from one project's
|
|
47
|
+
* workspace (its CA) was used to probe the other project's agents — wrong CA,
|
|
48
|
+
* false-negative UNREACHABLE. See `project` below for the correct grouping key.
|
|
37
49
|
*/
|
|
38
50
|
registry: z.string(),
|
|
51
|
+
/**
|
|
52
|
+
* The project this workspace belongs to (`.macf/macf-agent.json` `project`) —
|
|
53
|
+
* its own CA + registry namespace + version cadence. THE fleet-grouping key
|
|
54
|
+
* (macf#710, superseding the pre-#710 `registry`-based grouping): `fleet
|
|
55
|
+
* upgrade` groups discovered workspaces by this field, so a `groundnuty`
|
|
56
|
+
* profile-registry host running BOTH `macf` and `icsoc_2026` projects
|
|
57
|
+
* discovers as TWO fleets, each rolled with a driver bound to that project's
|
|
58
|
+
* own CA — no cross-project probe mismatch.
|
|
59
|
+
*/
|
|
60
|
+
project: z.string(),
|
|
39
61
|
/**
|
|
40
62
|
* The workspace's pinned framework version (`.macf/macf-agent.json`
|
|
41
63
|
* `versions.cli`), or `null` when the config carries no pin (legacy / pre-P6).
|
|
@@ -45,18 +67,26 @@ export const WorkspaceRecordSchema = z.object({
|
|
|
45
67
|
versionPin: z.string().nullable(),
|
|
46
68
|
});
|
|
47
69
|
/**
|
|
48
|
-
* Render a `RegistryConfig` as its stable
|
|
49
|
-
* == a registry — DR-037 Decision 1). Pure.
|
|
70
|
+
* Render a `RegistryConfig` as its stable, human-legible identifier. Pure.
|
|
50
71
|
*
|
|
51
72
|
* - `repo` → `owner/repo`
|
|
52
73
|
* - `org` → the org name
|
|
53
|
-
* - `profile` → the profile user name (
|
|
54
|
-
*
|
|
74
|
+
* - `profile` → the profile user name (e.g. every `groundnuty` profile-registry
|
|
75
|
+
* workspace, REGARDLESS of which project it belongs to, renders
|
|
76
|
+
* the same identifier here — it names the shared NETWORK ENDPOINT,
|
|
77
|
+
* not a fleet)
|
|
55
78
|
* - `local` → `local` (DR-024)
|
|
56
79
|
*
|
|
80
|
+
* NOTE (macf#710): this identifier is NOT the fleet-grouping key — see
|
|
81
|
+
* `WorkspaceRecord.project` for that. Prior to #710, `fleet upgrade` grouped by
|
|
82
|
+
* this identifier (DR-037 Decision 1's original framing), which collapsed
|
|
83
|
+
* distinct projects sharing one profile/org registry scope into a single fleet.
|
|
84
|
+
* `registryIdentifier` remains useful for display + for resolving a genuinely
|
|
85
|
+
* registry-scoped target (e.g. `fleet-resume`'s repo-scoped alert-repo lookup).
|
|
86
|
+
*
|
|
57
87
|
* Org and profile scopes collapse to a bare name; a theoretical `org foo` vs
|
|
58
|
-
* `profile foo` collision is accepted for this
|
|
59
|
-
*
|
|
88
|
+
* `profile foo` collision is accepted for this heuristic (they are not both
|
|
89
|
+
* used by one host in practice) and keeps the identifier human-legible.
|
|
60
90
|
*/
|
|
61
91
|
export function registryIdentifier(config) {
|
|
62
92
|
switch (config.type) {
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,8EAA8E;IAC9E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB;;;;OAIG;IACH,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB;;;;;;;;OAQG;IACH,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAIH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB;IACvD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,KAAK;YACR,OAAO,MAAM,CAAC,GAAG,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAmC;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,CAAC;IACzB,OAAO,QAAQ;SACZ,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAAmC;IAEnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YAAE,SAAS;QACpC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACd,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/fleet-driver.d.ts
CHANGED
|
@@ -98,6 +98,33 @@ export interface FleetDriver {
|
|
|
98
98
|
* DEAD/absent agent is not busy (safe to `launch`).
|
|
99
99
|
*/
|
|
100
100
|
readonly isBusy: (agent: string) => Promise<boolean>;
|
|
101
|
+
/**
|
|
102
|
+
* The pre-flight config-dirty predicate (macf#722 Fix B) — `true` when the
|
|
103
|
+
* agent's workspace has UNCOMMITTED changes on the roll's touched-config
|
|
104
|
+
* surface (`.claude/**`, `CLAUDE.md`, `claude.sh`, `env.local.*` — see
|
|
105
|
+
* `ROLL_TOUCHED_CONFIG_PATTERNS` in `fleet-upgrade.ts`). VM: `git status`
|
|
106
|
+
* in the agent's workspace, filtered to that path set. A DEAD/absent agent
|
|
107
|
+
* reads `false` (nothing to check; reconcile will launch it). Kept as a
|
|
108
|
+
* boolean convenience alongside `listDirtyConfig` below — `rollFleet`'s
|
|
109
|
+
* pre-flight gate itself calls `listDirtyConfig` (it needs the file list to
|
|
110
|
+
* OBJECT with, macf#725), so this predicate form is for OTHER callers that
|
|
111
|
+
* only need the yes/no answer.
|
|
112
|
+
*/
|
|
113
|
+
readonly isConfigDirty: (agent: string) => Promise<boolean>;
|
|
114
|
+
/**
|
|
115
|
+
* The pre-flight config-dirty gate's LIST form (macf#725 — transactional
|
|
116
|
+
* object-with-message revision; this is what `rollFleet` actually calls).
|
|
117
|
+
* Same predicate surface as `isConfigDirty` (`ROLL_TOUCHED_CONFIG_PATTERNS`,
|
|
118
|
+
* tracked-only), but returns the actual uncommitted paths rather than a
|
|
119
|
+
* boolean, so the roll can OBJECT with a specific, actionable list instead
|
|
120
|
+
* of a bare skip — a dirty agent is SKIPPED before any mutation (never
|
|
121
|
+
* upgraded/restarted); `macf update` / restart-self would otherwise clobber
|
|
122
|
+
* or stash operator-authored config underneath it. Empty array == clean
|
|
123
|
+
* (equivalent to `isConfigDirty` reading `false`). VM: `git status
|
|
124
|
+
* --porcelain` in the agent's workspace, filtered to that path set, one
|
|
125
|
+
* path per line.
|
|
126
|
+
*/
|
|
127
|
+
readonly listDirtyConfig: (agent: string) => Promise<readonly string[]>;
|
|
101
128
|
/**
|
|
102
129
|
* Read the agent's current pane content for stall-signature matching
|
|
103
130
|
* (`macf fleet resume`, DR-037 / macf#686). VM: a single `tmux capture-pane`
|
|
@@ -113,8 +140,26 @@ export interface FleetDriver {
|
|
|
113
140
|
/**
|
|
114
141
|
* Restart the agent. VM: `macf restart-self` when ALIVE (graceful — stash +
|
|
115
142
|
* detached relaunch), or `launch` when DEAD. K8s: cycle the pod.
|
|
143
|
+
*
|
|
144
|
+
* `opts.leaveConfigUncommitted` (macf#725 — transactional revision, replaces
|
|
145
|
+
* the earlier unconditional-`forceStashConfig` shape): set ONLY by `rollFleet`
|
|
146
|
+
* on the restart that immediately follows an `upgrade` in the SAME roll. The
|
|
147
|
+
* roll's pre-flight `listDirtyConfig` gate already guaranteed the config
|
|
148
|
+
* surface was clean BEFORE `upgrade` ran; the ONLY dirt an upgrade can leave
|
|
149
|
+
* behind is `macf update`'s OWN regeneration of the managed surface — which is
|
|
150
|
+
* supposed to change and must never be silently stashed away (the relaunched
|
|
151
|
+
* agent needs to SEE it via `git status`). So this tells `restart-self` to
|
|
152
|
+
* relaunch WITHOUT stashing AND WITHOUT refusing on its own post-upgrade
|
|
153
|
+
* config-dirty guard — it maps to `restart-self`'s `--leave-config-uncommitted`
|
|
154
|
+
* flag / `MACF_RESTART_LEAVE_CONFIG_UNCOMMITTED=1`. Omitted (default false,
|
|
155
|
+
* i.e. the STANDALONE guard stays fully active) for every OTHER caller (e.g. a
|
|
156
|
+
* direct operator `macf restart-self` invocation, or `fleet-reconcile`'s
|
|
157
|
+
* healing ladder), which never bypasses the config-dirty gate because it never
|
|
158
|
+
* checks it in the first place.
|
|
116
159
|
*/
|
|
117
|
-
readonly restart: (agent: string
|
|
160
|
+
readonly restart: (agent: string, opts?: {
|
|
161
|
+
readonly leaveConfigUncommitted?: boolean;
|
|
162
|
+
}) => Promise<void>;
|
|
118
163
|
/**
|
|
119
164
|
* The tier-1 gated nudge — deliver `text` into the agent's live turn loop.
|
|
120
165
|
* VM: the canonical `tmux-send-to-claude` submit pattern. Runtime-specific.
|
|
@@ -122,6 +167,17 @@ export interface FleetDriver {
|
|
|
122
167
|
readonly inject: (agent: string, text: string) => Promise<void>;
|
|
123
168
|
/** Cold-start a desired-but-down agent. VM: spawn its `./claude.sh`. */
|
|
124
169
|
readonly launch: (agent: string) => Promise<void>;
|
|
170
|
+
/**
|
|
171
|
+
* List the agent's currently-modified files (macf#725) — used AFTER a
|
|
172
|
+
* successful `upgrade` to report what `macf update` regenerated in the
|
|
173
|
+
* relaunched agent's workspace, so the roll's post-upgrade message can name
|
|
174
|
+
* them explicitly. VM: `git status --porcelain` (all tracked changes, not
|
|
175
|
+
* scoped to the config-surface patterns — `macf update` can also touch pins /
|
|
176
|
+
* other managed files outside that surface). Best-effort: an inspection
|
|
177
|
+
* failure returns an empty list rather than throwing (never blocks reporting
|
|
178
|
+
* on a diagnostic-only read).
|
|
179
|
+
*/
|
|
180
|
+
readonly listModifiedFiles: (agent: string) => Promise<readonly string[]>;
|
|
125
181
|
}
|
|
126
182
|
/**
|
|
127
183
|
* A fleet-driver operation failed against a resolvable target — most commonly an
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-driver.d.ts","sourceRoot":"","sources":["../src/fleet-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,SAAS,eAAe,EAAE,CAAC;IAE9D;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD
|
|
1
|
+
{"version":3,"file":"fleet-driver.d.ts","sourceRoot":"","sources":["../src/fleet-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,gDAAgD;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,SAAS,eAAe,EAAE,CAAC;IAE9D;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAErD;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAE5D;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAExE;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEhE,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzG;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD;;;;;;;;;OASG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;CAC3E;AAED;;;;;GAKG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;gBACjC,OAAO,EAAE,MAAM;CAI5B"}
|
package/dist/fleet-driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fleet-driver.js","sourceRoot":"","sources":["../src/fleet-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fleet-driver.js","sourceRoot":"","sources":["../src/fleet-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmKxC;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
|