@intentius/chant-lexicon-fly 0.89.0 → 0.91.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 (75) hide show
  1. package/dist/components/capability-plugin.d.ts +1 -0
  2. package/dist/components/capability-plugin.d.ts.map +1 -1
  3. package/dist/components/fly-release.d.ts +148 -0
  4. package/dist/components/fly-release.d.ts.map +1 -0
  5. package/dist/components/index.d.ts +2 -0
  6. package/dist/components/index.d.ts.map +1 -1
  7. package/dist/describe-resources.d.ts +11 -0
  8. package/dist/describe-resources.d.ts.map +1 -1
  9. package/dist/index.d.ts +3 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/integrity.json +4 -4
  12. package/dist/manifest.json +1 -1
  13. package/dist/op/activities/emulator-images.d.ts +13 -0
  14. package/dist/op/activities/emulator-images.d.ts.map +1 -1
  15. package/dist/op/activities/fly-apply.d.ts +8 -22
  16. package/dist/op/activities/fly-apply.d.ts.map +1 -1
  17. package/dist/op/activities/index.d.ts +6 -2
  18. package/dist/op/activities/index.d.ts.map +1 -1
  19. package/dist/op/activities/machine-release.d.ts +176 -0
  20. package/dist/op/activities/machine-release.d.ts.map +1 -0
  21. package/dist/op/activities/machines-contract.d.ts +8 -0
  22. package/dist/op/activities/machines-contract.d.ts.map +1 -1
  23. package/dist/op/activities/machines-fake.d.ts +53 -0
  24. package/dist/op/activities/machines-fake.d.ts.map +1 -0
  25. package/dist/op/activities/sprite-services.d.ts +158 -0
  26. package/dist/op/activities/sprite-services.d.ts.map +1 -0
  27. package/dist/op/activities/sprites-contract.d.ts +17 -1
  28. package/dist/op/activities/sprites-contract.d.ts.map +1 -1
  29. package/dist/op/activities/sprites-emulator.d.ts +12 -0
  30. package/dist/op/activities/sprites-emulator.d.ts.map +1 -1
  31. package/dist/op/activities/sprites-fake.d.ts +4 -0
  32. package/dist/op/activities/sprites-fake.d.ts.map +1 -1
  33. package/dist/op/activities/sprites.d.ts +53 -0
  34. package/dist/op/activities/sprites.d.ts.map +1 -1
  35. package/dist/op/builders.d.ts +33 -1
  36. package/dist/op/builders.d.ts.map +1 -1
  37. package/dist/release-metadata.d.ts +48 -0
  38. package/dist/release-metadata.d.ts.map +1 -0
  39. package/dist/release-store.d.ts +36 -0
  40. package/dist/release-store.d.ts.map +1 -0
  41. package/dist/skills/chant-fly-ops.md +33 -0
  42. package/dist/skills/chant-fly-sprites.md +4 -2
  43. package/package.json +2 -2
  44. package/src/components/capability-plugin.ts +11 -3
  45. package/src/components/fly-release.test.ts +244 -0
  46. package/src/components/fly-release.ts +341 -0
  47. package/src/components/index.ts +16 -0
  48. package/src/describe-resources.test.ts +18 -3
  49. package/src/describe-resources.ts +69 -5
  50. package/src/index.ts +21 -0
  51. package/src/op/activities/emulator-images.ts +14 -0
  52. package/src/op/activities/fly-apply.ts +15 -3
  53. package/src/op/activities/index.ts +57 -0
  54. package/src/op/activities/machine-release.integration.test.ts +113 -0
  55. package/src/op/activities/machine-release.test.ts +138 -0
  56. package/src/op/activities/machine-release.ts +407 -0
  57. package/src/op/activities/machines-contract.docker.integration.test.ts +10 -1
  58. package/src/op/activities/machines-contract.test.ts +11 -1
  59. package/src/op/activities/machines-contract.ts +17 -0
  60. package/src/op/activities/machines-fake.ts +165 -0
  61. package/src/op/activities/sprite-config.test.ts +19 -0
  62. package/src/op/activities/sprite-services.docker.integration.test.ts +87 -0
  63. package/src/op/activities/sprite-services.test.ts +263 -0
  64. package/src/op/activities/sprite-services.ts +311 -0
  65. package/src/op/activities/sprites-contract.test.ts +15 -4
  66. package/src/op/activities/sprites-contract.ts +24 -6
  67. package/src/op/activities/sprites-emulator.ts +52 -1
  68. package/src/op/activities/sprites-fake.ts +57 -8
  69. package/src/op/activities/sprites.test.ts +102 -0
  70. package/src/op/activities/sprites.ts +108 -7
  71. package/src/op/builders.ts +53 -1
  72. package/src/release-metadata.ts +72 -0
  73. package/src/release-store.ts +70 -0
  74. package/src/skills/chant-fly-ops.md +33 -0
  75. package/src/skills/chant-fly-sprites.md +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"machines-contract.d.ts","sourceRoot":"","sources":["../../../src/op/activities/machines-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EA8B/C,CAAC;AAEX,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE1C"}
1
+ {"version":3,"file":"machines-contract.d.ts","sourceRoot":"","sources":["../../../src/op/activities/machines-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EA8B/C,CAAC;AAEX,4FAA4F;AAC5F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE1C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,EAAE,SAAS,gBAAgB,EAQtD,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * An in-memory Fly Machines (flaps) API, as a {@link FlyHttp} (#2736).
3
+ *
4
+ * The twin of ./sprites-fake.ts for the Machines side: the endpoints the
5
+ * applier (./fly-apply.ts) and the release activities (./machine-release.ts)
6
+ * call, answered from memory with the response shapes flaps and mudflaps use.
7
+ * Unit tests inject it where the default client would reach the network; the
8
+ * docker-gated tests run the same activities against the pinned mudflaps.
9
+ *
10
+ * Not an activity: nothing in ./index.ts exports it, so `loadActivities`
11
+ * never binds it.
12
+ */
13
+ import type { FlyHttp } from "./fly-apply.js";
14
+ /** One Machine the fake holds. */
15
+ export interface FakeMachine {
16
+ id: string;
17
+ name: string;
18
+ state: string;
19
+ instance_id: string;
20
+ config: Record<string, unknown> & {
21
+ metadata?: Record<string, string>;
22
+ };
23
+ }
24
+ /** What an `exec` answers: the Machines API's exec envelope. */
25
+ export interface FakeExecResult {
26
+ exit_code: number;
27
+ stdout?: string;
28
+ stderr?: string;
29
+ }
30
+ export interface MachinesFake {
31
+ http: FlyHttp;
32
+ apps: Set<string>;
33
+ machines: Map<string, FakeMachine[]>;
34
+ /** Every exec, in order: the app, the machine id and the command. */
35
+ execs: Array<{
36
+ app: string;
37
+ id: string;
38
+ command: string[];
39
+ }>;
40
+ /** Every call, as `METHOD path` (no base, no query). */
41
+ calls: string[];
42
+ /** The live machine named `name` in `app`, if any. */
43
+ machine(app: string, name: string): FakeMachine | undefined;
44
+ }
45
+ export interface MachinesFakeOptions {
46
+ /** Answer an exec. Default: exit 0 with no output. */
47
+ exec?: (app: string, machine: FakeMachine, command: string[]) => FakeExecResult;
48
+ /** The state a created or updated machine settles in. Default `started`. */
49
+ settle?: (machine: FakeMachine) => string;
50
+ }
51
+ /** A fresh in-memory flaps. */
52
+ export declare function createMachinesFake(options?: MachinesFakeOptions): MachinesFake;
53
+ //# sourceMappingURL=machines-fake.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machines-fake.d.ts","sourceRoot":"","sources":["../../../src/op/activities/machines-fake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;CACzE;AAED,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACrC,qEAAqE;IACrE,KAAK,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC7D,wDAAwD;IACxD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sDAAsD;IACtD,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC;CAC7D;AAED,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,cAAc,CAAC;IAChF,4EAA4E;IAC5E,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,MAAM,CAAC;CAC3C;AAOD,+BAA+B;AAC/B,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CA4GlF"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Sprite Services activities (#2711) — imperative create/get/list/start/stop/
3
+ * delete/logs over a Sprite's background services, the surface a box's door,
4
+ * hud and chud run as long-lived services through (`sprite-env services`
5
+ * inside the sprite, `/v1/sprites/{id}/services/...` outside). Shared by the
6
+ * Sprites API, wisp (arugula-salad/wisp) and spritzer 0.6.0's container mode
7
+ * (INTENTIUS/spritzer#22).
8
+ *
9
+ * This is the imperative twin of `sprite-config.ts`'s `spriteApplyServices` —
10
+ * that one reconciles a whole desired service *set* (additive create-or-update,
11
+ * optionally started, no delete). These activities are the single-service
12
+ * primitives underneath it: create-and-start one service and watch it come
13
+ * up, inspect or list what's running, stop/start one by name, delete it, and
14
+ * read its log tail. An Op that provisions a box one service at a time (or
15
+ * needs delete, which `spriteApplyServices` doesn't expose) uses these
16
+ * directly; `spriteApplyServices` stays the batch-reconcile convenience on
17
+ * top of the same wire shapes.
18
+ *
19
+ * `spriteServiceCreate` is a `PUT` that both defines the service and starts
20
+ * it, streaming NDJSON progress (`started`, `stdout`, `stderr`, `exit`,
21
+ * `complete`) for a bounded `?duration` window (default 500ms — enough to
22
+ * surface an immediate failure, e.g. a missing binary, without holding the
23
+ * step open for spritzer's own 5s default). The stream is read to completion
24
+ * either way; the definitive result comes from a follow-up `GET` of the
25
+ * service (`spriteServiceGet`'s own logic), which throws if its `state.status`
26
+ * is `"failed"`. `spriteServiceStart` follows the same create-then-GET shape
27
+ * (`PUT` already started it; `start` is for a stopped service).
28
+ */
29
+ import { type SpritesHttp } from "./sprites.js";
30
+ /** A service's live half. */
31
+ export interface SpriteServiceState {
32
+ name: string;
33
+ /** `stopped` | `running` | `stopping` | `failed`. */
34
+ status: string;
35
+ pid?: number;
36
+ started_at?: string;
37
+ error?: string;
38
+ restart_count?: number;
39
+ }
40
+ /** The `GET`/`PUT` response shape: the definition with its state beside it. */
41
+ export interface SpriteService {
42
+ name: string;
43
+ cmd: string;
44
+ args?: string[];
45
+ env?: Record<string, string>;
46
+ dir?: string;
47
+ /** Names of services that must be running first. */
48
+ needs?: string[];
49
+ /** Route the sprite's public URL to this port. Only one service may set it. */
50
+ http_port?: number;
51
+ state: SpriteServiceState;
52
+ }
53
+ export interface SpriteServiceCreateArgs {
54
+ /** Target sprite id. */
55
+ id: string;
56
+ /** Service name — the key every later call addresses it by. */
57
+ name: string;
58
+ cmd: string;
59
+ args?: string[];
60
+ env?: Record<string, string>;
61
+ dir?: string;
62
+ needs?: string[];
63
+ http_port?: number;
64
+ /**
65
+ * How long spritzer keeps streaming NDJSON after the start action
66
+ * succeeds, ms (`?duration`). Default: `500`. A crash past this window is
67
+ * caught by a later `spriteServiceGet`/`spriteUrl`, not this call.
68
+ */
69
+ durationMs?: number;
70
+ endpoint?: string;
71
+ token?: string;
72
+ }
73
+ export interface SpriteServiceGetArgs {
74
+ id: string;
75
+ name: string;
76
+ endpoint?: string;
77
+ token?: string;
78
+ }
79
+ export interface SpriteServiceListArgs {
80
+ id: string;
81
+ endpoint?: string;
82
+ token?: string;
83
+ }
84
+ export interface SpriteServiceStartArgs {
85
+ id: string;
86
+ name: string;
87
+ /** Same as `spriteServiceCreate`'s `durationMs`. Default: `500`. */
88
+ durationMs?: number;
89
+ endpoint?: string;
90
+ token?: string;
91
+ }
92
+ export interface SpriteServiceStopArgs {
93
+ id: string;
94
+ name: string;
95
+ /** Grace period before SIGKILL, ms (`?timeout`). Default: spritzer's own (10s). */
96
+ timeoutMs?: number;
97
+ endpoint?: string;
98
+ token?: string;
99
+ }
100
+ export interface SpriteServiceDeleteArgs {
101
+ id: string;
102
+ name: string;
103
+ endpoint?: string;
104
+ token?: string;
105
+ }
106
+ export interface SpriteServiceLogsArgs {
107
+ id: string;
108
+ name: string;
109
+ /** Tail length. Default: spritzer's own (100). */
110
+ lines?: number;
111
+ endpoint?: string;
112
+ token?: string;
113
+ }
114
+ export interface SpriteServiceLogsResult {
115
+ /** The tail, one entry per log line, oldest first. */
116
+ lines: string[];
117
+ }
118
+ /** Build the `PUT` create-or-update body. Pure. */
119
+ export declare function spriteServiceCreateBody(args: SpriteServiceCreateArgs): Record<string, unknown>;
120
+ /**
121
+ * Parse a service log NDJSON body (`{type, data, timestamp, ...}` per line,
122
+ * terminated by a `complete` event) into a plain line tail — the `data` text
123
+ * of every non-`complete` event, in stream order. Pure.
124
+ */
125
+ export declare function parseServiceLogNdjson(text: string): string[];
126
+ /**
127
+ * Create (or replace) and start a service. `PUT /v1/sprites/{id}/services/{name}`,
128
+ * streamed as NDJSON for `?duration` (mapped from `durationMs`). The stream is
129
+ * read to completion, then a `GET` fetches the definitive state; a `"failed"`
130
+ * status throws with the agent's own error text.
131
+ */
132
+ export declare function spriteServiceCreate(args: SpriteServiceCreateArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteService>;
133
+ /** Get one service. `GET /v1/sprites/{id}/services/{name}`. */
134
+ export declare function spriteServiceGet(args: SpriteServiceGetArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteService>;
135
+ /** List every service on the sprite. `GET /v1/sprites/{id}/services`. */
136
+ export declare function spriteServiceList(args: SpriteServiceListArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteService[]>;
137
+ /**
138
+ * Start a stopped service. `POST /v1/sprites/{id}/services/{name}/start`,
139
+ * streamed as NDJSON for `?duration`, then a `GET` for the definitive state
140
+ * (same shape as `spriteServiceCreate`).
141
+ */
142
+ export declare function spriteServiceStart(args: SpriteServiceStartArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteService>;
143
+ /**
144
+ * Stop a running service (SIGTERM, then SIGKILL after the grace period).
145
+ * `POST /v1/sprites/{id}/services/{name}/stop`.
146
+ */
147
+ export declare function spriteServiceStop(args: SpriteServiceStopArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteService>;
148
+ /**
149
+ * Delete a service, stopping it first (idempotent; a 404 means it is already
150
+ * gone). `DELETE /v1/sprites/{id}/services/{name}`.
151
+ */
152
+ export declare function spriteServiceDelete(args: SpriteServiceDeleteArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<Record<string, never>>;
153
+ /**
154
+ * Read a service's log tail. `GET /v1/sprites/{id}/services/{name}/logs`,
155
+ * parsed from NDJSON to a plain line array (`parseServiceLogNdjson`).
156
+ */
157
+ export declare function spriteServiceLogs(args: SpriteServiceLogsArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteServiceLogsResult>;
158
+ //# sourceMappingURL=sprite-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite-services.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprite-services.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAA8C,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAmBzF,6BAA6B;AAC7B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,+EAA+E;AAC/E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,kBAAkB,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,sDAAsD;IACtD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mDAAmD;AACnD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAU5D;AAID;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED,+DAA+D;AAC/D,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,EAC1B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,aAAa,CAAC,CAOxB;AAED,yEAAyE;AACzE,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,qBAAqB,EAC3B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,aAAa,EAAE,CAAC,CAM1B;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,qBAAqB,EAC3B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,aAAa,CAAC,CAWxB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,uBAAuB,EAC7B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAQhC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,qBAAqB,EAC3B,MAAM,CAAC,EAAE,WAAW,EACpB,IAAI,GAAE,WAA4C,GACjD,OAAO,CAAC,uBAAuB,CAAC,CAQlC"}
@@ -19,6 +19,22 @@
19
19
  * Path params are written with names matching ./sprites.ts (`{id}`, `{cp}`);
20
20
  * the coverage check normalizes param names before comparing, since spritzer
21
21
  * spells the checkpoint id `{cid}`.
22
+ *
23
+ * #2711 adds the imperative Services activities (`./sprite-services.ts`).
24
+ * Several of them share a physical endpoint with `spriteApplyServices`'s own
25
+ * calls (one `PUT`/one `GET .../services`/one `.../start` — the reconcile
26
+ * activity and the single-service primitives are two callers of the same
27
+ * REST surface), so one row lists every activity that calls it, comma
28
+ * separated, rather than one row per activity — `contractKeys()` stays one
29
+ * key per physical endpoint. `spriteServiceDelete` and `spriteServiceLogs`
30
+ * are deliberately absent: spritzer's interpreter mode (the coverage test's
31
+ * oracle) doesn't implement them, only its container-mode agent does, which
32
+ * has no per-verb entry in `/_spritzer/health` (real.go reports the whole
33
+ * `/v1/sprites/{id}/services/...` proxy as one wildcard line — nothing to
34
+ * normalize-compare against a specific verb). They're exercised instead by
35
+ * `sprite-services.docker.integration.test.ts` against real container-mode
36
+ * spritzer. `spriteUrl` is absent for the same reason, plus its target
37
+ * (`/s/{name}/...`) isn't under `/v1/sprites` at all.
22
38
  */
23
39
  /** One endpoint the fly sprite activities call. */
24
40
  export interface SpritesEndpoint {
@@ -26,7 +42,7 @@ export interface SpritesEndpoint {
26
42
  method: "GET" | "POST" | "PUT" | "DELETE" | "WS";
27
43
  /** Path template under the Sprites base, e.g. `/v1/sprites/{id}/checkpoint`. */
28
44
  path: string;
29
- /** The fly activity that calls it (an activity module export). */
45
+ /** The fly activity/activities that call it (comma-separated when more than one shares the endpoint). */
30
46
  activity: string;
31
47
  }
32
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sprites-contract.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACjD,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EAwB7C,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE1C"}
1
+ {"version":3,"file":"sprites-contract.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACjD,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,yGAAyG;IACzG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,eAAe,EA0B7C,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAItE;AAED,8DAA8D;AAC9D,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE1C"}
@@ -30,4 +30,16 @@ export declare const spritesUp: (args?: SpritesUpArgs, signal?: AbortSignal) =>
30
30
  }>;
31
31
  /** Stop and remove the local spritzer container (no-op if already gone). */
32
32
  export declare const spritesDown: (args?: SpritesDownArgs, signal?: AbortSignal) => Promise<void>;
33
+ /** Container exec mode spritzer, pinned to {@link SPRITZER_CONTAINER_IMAGE} (0.6.0, the first release with this mode). */
34
+ export declare const SPRITZER_CONTAINER_SPEC: EmulatorSpec;
35
+ export declare const spritesContainerRunCommand: (args?: SpritesUpArgs) => string;
36
+ export declare const spritesContainerExistsCommand: (name: string) => string;
37
+ export declare const spritesContainerRmCommand: (name: string) => string;
38
+ export declare const spritesContainerHealthUrl: (port: number) => string;
39
+ /** Boot a local spritzer in container exec mode (Docker runtime) and return its endpoint. */
40
+ export declare const spritesContainerUp: (args?: SpritesUpArgs, signal?: AbortSignal) => Promise<{
41
+ endpoint: string;
42
+ }>;
43
+ /** Stop and remove the local container-exec-mode spritzer (no-op if already gone). Sprite containers it made are the caller's to clean up (see the integration test). */
44
+ export declare const spritesContainerDown: (args?: SpritesDownArgs, signal?: AbortSignal) => Promise<void>;
33
45
  //# sourceMappingURL=sprites-emulator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sprites-emulator.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites-emulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGpG,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,eAAO,MAAM,aAAa,EAAE,YAM3B,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAIF,eAAO,MAAM,oBAAoB,0BAAyB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,0BAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,0BAAqB,CAAC;AACnD,sGAAsG;AACtG,eAAO,MAAM,eAAe,0BAAoB,CAAC;AACjD,eAAO,MAAM,iBAAiB,GAAI,OAAM,aAAkB,KAAG,MAAmC,CAAC;AAEjG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,GAAI,OAAM,aAAkB,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAC5E,CAAC;AAE5B,4EAA4E;AAC5E,eAAO,MAAM,WAAW,GAAI,OAAM,eAAoB,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAC9D,CAAC"}
1
+ {"version":3,"file":"sprites-emulator.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites-emulator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGpG,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAMD,eAAO,MAAM,aAAa,EAAE,YAM3B,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,iBAAiB,EAAE,kBAG/B,CAAC;AAIF,eAAO,MAAM,oBAAoB,0BAAyB,CAAC;AAC3D,eAAO,MAAM,gBAAgB,0BAAqB,CAAC;AACnD,eAAO,MAAM,gBAAgB,0BAAqB,CAAC;AACnD,sGAAsG;AACtG,eAAO,MAAM,eAAe,0BAAoB,CAAC;AACjD,eAAO,MAAM,iBAAiB,GAAI,OAAM,aAAkB,KAAG,MAAmC,CAAC;AAEjG,0FAA0F;AAC1F,eAAO,MAAM,SAAS,GAAI,OAAM,aAAkB,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAC5E,CAAC;AAE5B,4EAA4E;AAC5E,eAAO,MAAM,WAAW,GAAI,OAAM,eAAoB,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAC9D,CAAC;AAc9B,0HAA0H;AAC1H,eAAO,MAAM,uBAAuB,EAAE,YAqBrC,CAAC;AAIF,eAAO,MAAM,0BAA0B,GAAI,OAAM,aAAkB,KAAG,MAA4C,CAAC;AACnH,eAAO,MAAM,6BAA6B,0BAAkC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,0BAA8B,CAAC;AACrE,eAAO,MAAM,yBAAyB,0BAA8B,CAAC;AAErE,6FAA6F;AAC7F,eAAO,MAAM,kBAAkB,GAAI,OAAM,aAAkB,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAC5E,CAAC;AAErC,yKAAyK;AACzK,eAAO,MAAM,oBAAoB,GAAI,OAAM,eAAoB,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAC9D,CAAC"}
@@ -39,7 +39,11 @@ interface StoredService {
39
39
  pid: number;
40
40
  status: string;
41
41
  started_at?: string;
42
+ error?: string;
42
43
  };
44
+ /** Synthetic log lines (#2711) — the fake runs no real process, so `logs` is a
45
+ * scripted trail of lifecycle events, enough to exercise `spriteServiceLogs`. */
46
+ logs: string[];
43
47
  }
44
48
  interface SpriteState {
45
49
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sprites-fake.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites-fake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,KAAK,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEpE,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,kFAAkF;IAClF,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CA6CrE;AA4CD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjI;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA+TpF"}
1
+ {"version":3,"file":"sprites-fake.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites-fake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,KAAK,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAEpE,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1F;qFACiF;IACjF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,YAAY,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3B,kFAAkF;IAClF,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0EAA0E;IAC1E,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxC,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU,CA6CrE;AA4CD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBjI;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA6WpF"}
@@ -20,6 +20,13 @@
20
20
  * S3: endpoint override via `SPRITES_BASE_URL` (an explicit `endpoint` arg wins,
21
21
  * then the env, then the real Sprites base), so the same Op targets real Sprites
22
22
  * or the in-process fake with no code change.
23
+ *
24
+ * #2711: the studio and wisp's own docs call these `SPRITES_API_URL` and
25
+ * `SPRITE_TOKEN` rather than `SPRITES_BASE_URL`/`SPRITES_API_TOKEN`. Both
26
+ * pairs are accepted — `resolveSpritesEndpoint`/`resolveSpritesToken` read the
27
+ * alias when the original name is unset, with the original always winning
28
+ * when both are present, so an existing deployment is never surprised by the
29
+ * alias taking over.
23
30
  */
24
31
  export declare const DEFAULT_SPRITES_BASE_URL = "https://api.sprites.dev";
25
32
  /**
@@ -31,6 +38,12 @@ export declare const DEFAULT_SPRITES_BASE_URL = "https://api.sprites.dev";
31
38
  export declare function resolveSpritesEndpoint(args?: {
32
39
  endpoint?: string;
33
40
  }, env?: NodeJS.ProcessEnv): string;
41
+ /**
42
+ * Resolve the bearer token (#2711): an explicit `token` arg wins, then
43
+ * `SPRITES_API_TOKEN`, then its alias `SPRITE_TOKEN`. Pure — mirrors
44
+ * `resolveSpritesEndpoint`.
45
+ */
46
+ export declare function resolveSpritesToken(token?: string | undefined, env?: NodeJS.ProcessEnv): string | undefined;
34
47
  export declare const STREAM_STDIN = 0;
35
48
  export declare const STREAM_STDOUT = 1;
36
49
  export declare const STREAM_STDERR = 2;
@@ -192,4 +205,44 @@ export declare function listCheckpoints(args: ListCheckpointsArgs, signal?: Abor
192
205
  export declare function spriteRestore(args: SpriteRestoreArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<Record<string, never>>;
193
206
  /** Destroy the sprite (idempotent; a 404 means it is already gone). `DELETE /v1/sprites/{id}`. */
194
207
  export declare function spriteDestroy(args: SpriteDestroyArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<Record<string, never>>;
208
+ /**
209
+ * Delete the sprite (#2711) — the same idempotent `DELETE /v1/sprites/{id}` as
210
+ * `spriteDestroy`, under the name spritzer, wisp and the other lexicons'
211
+ * delete activities (`awsDelete`, `gcpDelete`, `azDelete`) use. A literal
212
+ * alias, not a reimplementation, so the two names can never drift: an Op
213
+ * authored against either resolves to the same call. `spriteDestroy` stays —
214
+ * it is the name every existing Op, example and the `op-verb-class` registry
215
+ * already depend on.
216
+ */
217
+ export declare const spriteDelete: typeof spriteDestroy;
218
+ export type SpriteDeleteArgs = SpriteDestroyArgs;
219
+ export interface SpriteUrlArgs {
220
+ /** Target sprite id. */
221
+ id: string;
222
+ /**
223
+ * Wait until this path on the sprite's URL answers, instead of returning
224
+ * the URL immediately. Unset (default): no wait, just resolve the URL.
225
+ */
226
+ path?: string;
227
+ /** Expected status while waiting. Default: any 2xx. */
228
+ status?: number;
229
+ /** Max time to wait for `path` to answer, ms. Default: `10000`. */
230
+ timeoutMs?: number;
231
+ /** Delay between polls, ms. Default: `500`. */
232
+ intervalMs?: number;
233
+ endpoint?: string;
234
+ token?: string;
235
+ }
236
+ export interface SpriteUrlResult {
237
+ url: string;
238
+ }
239
+ /**
240
+ * Resolve the sprite's URL (#2711) — `spriteCreate` returns it too, but
241
+ * nothing until now exposed it on its own (for a later phase that only has
242
+ * the sprite `id`) or waited on it. `GET /v1/sprites/{id}` for the URL; with
243
+ * `path` set, polls `GET {url}{path}` until `status` (default any 2xx) or
244
+ * `timeoutMs` runs out — the box's door/hud/chud services take a moment to
245
+ * bind their `http_port` after `spriteServiceStart`.
246
+ */
247
+ export declare function spriteUrl(args: SpriteUrlArgs, signal?: AbortSignal, http?: SpritesHttp): Promise<SpriteUrlResult>;
195
248
  //# sourceMappingURL=sprites.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/op/activities/sprites.ts"],"names":[],"mappings":"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"}
@@ -27,11 +27,13 @@
27
27
  */
28
28
  import { type NamedActivityStep, type WithStepRefs } from "@intentius/chant/op";
29
29
  import type { ActivityStep } from "@intentius/chant/op";
30
- import type { SpriteCreateArgs, SpriteExecArgs, SpriteCheckpointArgs, SpriteRestoreArgs, ListCheckpointsArgs, SpriteDestroyArgs } from "./activities/sprites.js";
30
+ import type { SpriteCreateArgs, SpriteExecArgs, SpriteCheckpointArgs, SpriteRestoreArgs, ListCheckpointsArgs, SpriteDestroyArgs, SpriteUrlArgs } from "./activities/sprites.js";
31
31
  import type { SpriteWriteFileArgs, SpriteReadFileArgs, SpriteListDirArgs, SpriteRemoveArgs } from "./activities/sprite-fs.js";
32
32
  import type { SpriteApplyNetworkPolicyArgs, SpriteApplyServicesArgs } from "./activities/sprite-config.js";
33
+ import type { SpriteServiceCreateArgs, SpriteServiceGetArgs, SpriteServiceListArgs, SpriteServiceStartArgs, SpriteServiceStopArgs, SpriteServiceDeleteArgs, SpriteServiceLogsArgs } from "./activities/sprite-services.js";
33
34
  import type { SpriteTaskCreateArgs, SpriteTaskRefreshArgs, SpriteTaskReleaseArgs } from "./activities/sprite-tasks.js";
34
35
  import type { SpritesUpArgs, SpritesDownArgs } from "./activities/sprites-emulator.js";
36
+ import type { FlyMachineReleaseArgs, FlyMachineExecArgs, FlyMachineStateArgs, FlyMachineVerifyArgs, FlyMachineRestoreArgs } from "./activities/machine-release.js";
35
37
  type StepOpts = {
36
38
  profile?: ActivityStep["profile"];
37
39
  };
@@ -47,6 +49,10 @@ export declare const spriteRestore: (args: WithStepRefs<SpriteRestoreArgs> & Ste
47
49
  export declare const listCheckpoints: (args: WithStepRefs<ListCheckpointsArgs> & StepOpts) => NamedActivityStep;
48
50
  /** Destroy a sprite — the fully typed twin of core's `spriteDestroy`. Defaults to the `fastIdempotent` profile. */
49
51
  export declare const spriteDestroy: (args: WithStepRefs<SpriteDestroyArgs> & StepOpts) => NamedActivityStep;
52
+ /** Delete a sprite (#2711; alias of `spriteDestroy`). Defaults to the `fastIdempotent` profile. */
53
+ export declare const spriteDelete: (args: WithStepRefs<SpriteDestroyArgs> & StepOpts) => NamedActivityStep;
54
+ /** Resolve a sprite's URL, optionally waiting until a path on it answers (#2711). Defaults to the `fastIdempotent` profile. */
55
+ export declare const spriteUrl: (args: WithStepRefs<SpriteUrlArgs> & StepOpts) => NamedActivityStep;
50
56
  /** Write a file into a sprite — the fully typed twin of core's `spriteWriteFile`. Defaults to the `fastIdempotent` profile. */
51
57
  export declare const spriteWriteFile: (args: WithStepRefs<SpriteWriteFileArgs> & StepOpts) => NamedActivityStep;
52
58
  /** Read a file from a sprite — the fully typed twin of core's `spriteReadFile`. Defaults to the `fastIdempotent` profile. */
@@ -59,6 +65,20 @@ export declare const spriteRemove: (args: WithStepRefs<SpriteRemoveArgs> & StepO
59
65
  export declare const spriteApplyNetworkPolicy: (args: WithStepRefs<SpriteApplyNetworkPolicyArgs> & StepOpts) => NamedActivityStep;
60
66
  /** Reconcile a sprite's background services — the fully typed twin of core's `spriteApplyServices`. Defaults to the `fastIdempotent` profile. */
61
67
  export declare const spriteApplyServices: (args: WithStepRefs<SpriteApplyServicesArgs> & StepOpts) => NamedActivityStep;
68
+ /** Create-and-start one background service (#2711) — the single-service primitive underneath `spriteApplyServices`. Defaults to the `longInfra` profile (the create+start NDJSON round trip). */
69
+ export declare const spriteServiceCreate: (args: WithStepRefs<SpriteServiceCreateArgs> & StepOpts) => NamedActivityStep;
70
+ /** Get one background service's definition and live state (#2711). Defaults to the `fastIdempotent` profile. */
71
+ export declare const spriteServiceGet: (args: WithStepRefs<SpriteServiceGetArgs> & StepOpts) => NamedActivityStep;
72
+ /** List a sprite's background services (#2711). Defaults to the `fastIdempotent` profile. */
73
+ export declare const spriteServiceList: (args: WithStepRefs<SpriteServiceListArgs> & StepOpts) => NamedActivityStep;
74
+ /** Start a stopped background service (#2711). Defaults to the `longInfra` profile (the NDJSON round trip). */
75
+ export declare const spriteServiceStart: (args: WithStepRefs<SpriteServiceStartArgs> & StepOpts) => NamedActivityStep;
76
+ /** Stop a running background service (#2711). Defaults to the `fastIdempotent` profile. */
77
+ export declare const spriteServiceStop: (args: WithStepRefs<SpriteServiceStopArgs> & StepOpts) => NamedActivityStep;
78
+ /** Delete a background service, idempotent (#2711). Defaults to the `fastIdempotent` profile. */
79
+ export declare const spriteServiceDelete: (args: WithStepRefs<SpriteServiceDeleteArgs> & StepOpts) => NamedActivityStep;
80
+ /** Read a background service's log tail (#2711). Defaults to the `fastIdempotent` profile. */
81
+ export declare const spriteServiceLogs: (args: WithStepRefs<SpriteServiceLogsArgs> & StepOpts) => NamedActivityStep;
62
82
  /** Create a keep-alive task — the fully typed twin of core's `spriteTaskCreate`. Defaults to the `fastIdempotent` profile. */
63
83
  export declare const spriteTaskCreate: (args: WithStepRefs<SpriteTaskCreateArgs> & StepOpts) => NamedActivityStep;
64
84
  /** Refresh a keep-alive task's expiry — the fully typed twin of core's `spriteTaskRefresh`. Defaults to the `fastIdempotent` profile. */
@@ -69,5 +89,17 @@ export declare const spriteTaskRelease: (args: WithStepRefs<SpriteTaskReleaseArg
69
89
  export declare const spritesUp: (args?: WithStepRefs<SpritesUpArgs> & StepOpts) => NamedActivityStep;
70
90
  /** Stop and remove the local spritzer container — the fully typed twin of core's `spritesDown`. Defaults to the `fastIdempotent` profile. */
71
91
  export declare const spritesDown: (args?: WithStepRefs<SpritesDownArgs> & StepOpts) => NamedActivityStep;
92
+ /** Apply the plan with the Machine serving a release (its digest in the Machine's metadata). Defaults to the `longInfra` profile. */
93
+ export declare const flyMachineRelease: (args: WithStepRefs<FlyMachineReleaseArgs> & StepOpts) => NamedActivityStep;
94
+ /** Run a command inside a Machine (a migration). Defaults to the `atMostOnce` profile: chant cannot know the command is safe to repeat. */
95
+ export declare const flyMachineExec: (args: WithStepRefs<FlyMachineExecArgs> & StepOpts) => NamedActivityStep;
96
+ /** Restart a Machine under a lease and wait for it to be started. Defaults to the `longInfra` profile. */
97
+ export declare const flyMachineRestart: (args: WithStepRefs<FlyMachineStateArgs> & StepOpts) => NamedActivityStep;
98
+ /** Stop a Machine under a lease. Defaults to the `longInfra` profile. */
99
+ export declare const flyMachineStop: (args: WithStepRefs<FlyMachineStateArgs> & StepOpts) => NamedActivityStep;
100
+ /** Check a Machine is started with a release, and its health endpoint answers. Defaults to the `longInfra` profile. */
101
+ export declare const flyMachineVerify: (args: WithStepRefs<FlyMachineVerifyArgs> & StepOpts) => NamedActivityStep;
102
+ /** Put a recorded Machine config back (restore, rollback). Defaults to the `longInfra` profile. */
103
+ export declare const flyMachineRestore: (args: WithStepRefs<FlyMachineRestoreArgs> & StepOpts) => NamedActivityStep;
72
104
  export {};
73
105
  //# sourceMappingURL=builders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/op/builders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAY,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9J,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC3H,OAAO,KAAK,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACxG,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACpH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEpF,KAAK,QAAQ,GAAG;IAAE,OAAO,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAA;CAAE,CAAC;AA6BtD,4GAA4G;AAC5G,eAAO,MAAM,YAAY,uDAPuB,iBAOqC,CAAC;AACtF,oHAAoH;AACpH,eAAO,MAAM,UAAU,qDATyB,iBAS+B,CAAC;AAChF,oHAAoH;AACpH,eAAO,MAAM,gBAAgB,2DAXmB,iBAWiD,CAAC;AAClG,8GAA8G;AAC9G,eAAO,MAAM,aAAa,wDAbsB,iBAawC,CAAC;AACzF,gIAAgI;AAChI,eAAO,MAAM,eAAe,0DAfoB,iBAemD,CAAC;AACpG,mHAAmH;AACnH,eAAO,MAAM,aAAa,wDAjBsB,iBAiB6C,CAAC;AAC9F,+HAA+H;AAC/H,eAAO,MAAM,eAAe,0DAnBoB,iBAmBmD,CAAC;AACpG,6HAA6H;AAC7H,eAAO,MAAM,cAAc,yDArBqB,iBAqBgD,CAAC;AACjG,+HAA+H;AAC/H,eAAO,MAAM,aAAa,wDAvBsB,iBAuB6C,CAAC;AAC9F,2HAA2H;AAC3H,eAAO,MAAM,YAAY,uDAzBuB,iBAyB0C,CAAC;AAC3F,0JAA0J;AAC1J,eAAO,MAAM,wBAAwB,mEA3BW,iBA2B8E,CAAC;AAC/H,iJAAiJ;AACjJ,eAAO,MAAM,mBAAmB,8DA7BgB,iBA6B+D,CAAC;AAChH,8HAA8H;AAC9H,eAAO,MAAM,gBAAgB,2DA/BmB,iBA+BsD,CAAC;AACvG,yIAAyI;AACzI,eAAO,MAAM,iBAAiB,4DAjCkB,iBAiCyD,CAAC;AAC1G,gIAAgI;AAChI,eAAO,MAAM,iBAAiB,4DAnCkB,iBAmCyD,CAAC;AAE1G,0IAA0I;AAC1I,eAAO,MAAM,SAAS,GAAI,OAAM,YAAY,CAAC,aAAa,CAAC,GAAG,QAAa,KAAG,iBACnB,CAAC;AAC5D,6IAA6I;AAC7I,eAAO,MAAM,WAAW,GAAI,OAAM,YAAY,CAAC,eAAe,CAAC,GAAG,QAAa,KAAG,iBACd,CAAC"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/op/builders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * The release a Fly Machine serves, as its metadata records it (#2736, ws-056).
3
+ *
4
+ * Pure: the keys, a reader, and a writer over a Machine config. The Machines
5
+ * activities (./op/activities/machine-release.ts) stamp these on a release,
6
+ * `describeResources` (./describe-resources.ts) reads them back, and
7
+ * `chant components status --live` compares the digest with the release
8
+ * ledger.
9
+ */
10
+ /**
11
+ * The Machine metadata keys that say which release it serves. Fly metadata is
12
+ * a string map, so each field is its own key.
13
+ *
14
+ * - `digest`: the release's digest, the release ledger's join key.
15
+ * - `gitSha`: the commit the release was built from.
16
+ * - `release`: an optional human label (a tag, a release id).
17
+ * - `previousDigest`: the release this one replaced when it first shipped, so
18
+ * a rollback knows where to go back to with no history of its own.
19
+ */
20
+ export declare const RELEASE_METADATA_KEYS: {
21
+ readonly digest: "chant-release-digest";
22
+ readonly gitSha: "chant-release-git-sha";
23
+ readonly release: "chant-release";
24
+ readonly previousDigest: "chant-release-previous-digest";
25
+ };
26
+ /** A release, as a Machine's metadata records it. */
27
+ export interface MachineRelease {
28
+ /** The release's digest (`sha256:...`): what the release ledger records. */
29
+ digest: string;
30
+ /** The commit it was built from. */
31
+ gitSha?: string;
32
+ /** A human label for it. */
33
+ release?: string;
34
+ /** The digest of the release it replaced, when there was one. */
35
+ previousDigest?: string;
36
+ }
37
+ export type MachineConfig = Record<string, unknown> & {
38
+ metadata?: Record<string, string>;
39
+ env?: Record<string, string>;
40
+ };
41
+ /** The release a Machine's metadata names, or undefined when it names none. Pure. */
42
+ export declare function readMachineRelease(metadata: Record<string, string> | null | undefined): MachineRelease | undefined;
43
+ /**
44
+ * A Machine config serving `release`: a copy of `config` with the release's
45
+ * metadata keys set (and any it does not carry removed). Pure.
46
+ */
47
+ export declare function withReleaseMetadata(config: MachineConfig | undefined, release: MachineRelease): MachineConfig;
48
+ //# sourceMappingURL=release-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-metadata.d.ts","sourceRoot":"","sources":["../src/release-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB;;;;;CAKxB,CAAC;AAEX,qDAAqD;AACrD,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE1H,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAYlH;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,aAAa,CAU7G"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Where a Fly release's Machine config is kept, so a rollback can put it back
3
+ * (#2736, ws-056).
4
+ *
5
+ * The Machine's metadata says which release it serves and which one it
6
+ * replaced; the config that earlier release applied is kept on the
7
+ * `chant/lifecycle` branch beside the release ledger, one file per release at
8
+ * `<env>/fly/<app>/<machine>/<digest>.json`. It is written through core's
9
+ * ledger plumbing, so a workspace member's copy lands under its own prefix,
10
+ * and every checkout that fetches the branch can roll back.
11
+ *
12
+ * Not exported from the package entry point: it spawns git, which stays off
13
+ * the build path. The `fly-release` and `fly-rollback` capabilities import it.
14
+ */
15
+ /** Which Machine and release a config belongs to. */
16
+ export interface MachineConfigRef {
17
+ app: string;
18
+ machine: string;
19
+ digest: string;
20
+ }
21
+ /** A store of the Machine config each release applied. */
22
+ export interface MachineConfigStore {
23
+ read(ref: MachineConfigRef): Promise<Record<string, unknown> | undefined>;
24
+ write(ref: MachineConfigRef, config: Record<string, unknown>): Promise<void>;
25
+ }
26
+ /** The file a release's Machine config is kept in, under the environment's ledger directory. */
27
+ export declare function machineConfigFile(ref: MachineConfigRef): string;
28
+ /** The lifecycle-branch store for `environment`. */
29
+ export declare function lifecycleMachineConfigStore(environment: string, opts?: {
30
+ cwd?: string;
31
+ }): MachineConfigStore;
32
+ /** An in-memory store, for tests and for a caller with nowhere to keep configs. */
33
+ export declare function memoryMachineConfigStore(): MachineConfigStore & {
34
+ entries: Map<string, Record<string, unknown>>;
35
+ };
36
+ //# sourceMappingURL=release-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-store.d.ts","sourceRoot":"","sources":["../src/release-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAC1E,KAAK,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9E;AAID,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAE/D;AAED,oDAAoD;AACpD,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAgB5G;AAED,mFAAmF;AACnF,wBAAgB,wBAAwB,IAAI,kBAAkB,GAAG;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE,CAYjH"}