@usine/core 0.0.0 → 0.1.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 (63) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +29 -1
  3. package/dist/agent.d.ts +121 -0
  4. package/dist/agent.d.ts.map +1 -0
  5. package/dist/agent.js +105 -0
  6. package/dist/agent.js.map +1 -0
  7. package/dist/attempt-channel.d.ts +134 -0
  8. package/dist/attempt-channel.d.ts.map +1 -0
  9. package/dist/attempt-channel.js +138 -0
  10. package/dist/attempt-channel.js.map +1 -0
  11. package/dist/index.d.ts +24 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +24 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/instance.d.ts +9 -0
  16. package/dist/instance.d.ts.map +1 -0
  17. package/dist/instance.js +8 -0
  18. package/dist/instance.js.map +1 -0
  19. package/dist/lifecycle/attempt-failure.d.ts +51 -0
  20. package/dist/lifecycle/attempt-failure.d.ts.map +1 -0
  21. package/dist/lifecycle/attempt-failure.js +45 -0
  22. package/dist/lifecycle/attempt-failure.js.map +1 -0
  23. package/dist/lifecycle/attempt.d.ts +61 -0
  24. package/dist/lifecycle/attempt.d.ts.map +1 -0
  25. package/dist/lifecycle/attempt.js +52 -0
  26. package/dist/lifecycle/attempt.js.map +1 -0
  27. package/dist/lifecycle/event.d.ts +30 -0
  28. package/dist/lifecycle/event.d.ts.map +1 -0
  29. package/dist/lifecycle/event.js +26 -0
  30. package/dist/lifecycle/event.js.map +1 -0
  31. package/dist/lifecycle/item.d.ts +11 -0
  32. package/dist/lifecycle/item.d.ts.map +1 -0
  33. package/dist/lifecycle/item.js +9 -0
  34. package/dist/lifecycle/item.js.map +1 -0
  35. package/dist/lifecycle/loop.d.ts +17 -0
  36. package/dist/lifecycle/loop.d.ts.map +1 -0
  37. package/dist/lifecycle/loop.js +15 -0
  38. package/dist/lifecycle/loop.js.map +1 -0
  39. package/dist/lifecycle/run-state.d.ts +133 -0
  40. package/dist/lifecycle/run-state.d.ts.map +1 -0
  41. package/dist/lifecycle/run-state.js +126 -0
  42. package/dist/lifecycle/run-state.js.map +1 -0
  43. package/dist/lifecycle/run.d.ts +22 -0
  44. package/dist/lifecycle/run.d.ts.map +1 -0
  45. package/dist/lifecycle/run.js +22 -0
  46. package/dist/lifecycle/run.js.map +1 -0
  47. package/dist/lifecycle/step.d.ts +23 -0
  48. package/dist/lifecycle/step.d.ts.map +1 -0
  49. package/dist/lifecycle/step.js +21 -0
  50. package/dist/lifecycle/step.js.map +1 -0
  51. package/dist/repository.d.ts +26 -0
  52. package/dist/repository.d.ts.map +1 -0
  53. package/dist/repository.js +32 -0
  54. package/dist/repository.js.map +1 -0
  55. package/dist/step-result.d.ts +35 -0
  56. package/dist/step-result.d.ts.map +1 -0
  57. package/dist/step-result.js +30 -0
  58. package/dist/step-result.js.map +1 -0
  59. package/dist/worker.d.ts +9 -0
  60. package/dist/worker.d.ts.map +1 -0
  61. package/dist/worker.js +9 -0
  62. package/dist/worker.js.map +1 -0
  63. package/package.json +40 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,cAAc,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAC;AAClD,OAAO,KAAK,cAAc,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAC9C,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,0BAA0B,CAAC;AACrD,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object (branded path): absolute or caller-resolved path to the
4
+ * instance folder (ADR 0001). Shared by every package that anchors itself to
5
+ * the instance repo — the engine's database adapters and the config loader.
6
+ */
7
+ export declare const Directory: Schema.brand<Schema.NonEmptyString, "InstanceDirectory">;
8
+ export type Directory = typeof Directory.Type;
9
+ //# sourceMappingURL=instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../src/instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,SAAS,0DAAgE,CAAC;AACvF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object (branded path): absolute or caller-resolved path to the
4
+ * instance folder (ADR 0001). Shared by every package that anchors itself to
5
+ * the instance repo — the engine's database adapters and the config loader.
6
+ */
7
+ export const Directory = Schema.NonEmptyString.pipe(Schema.brand("InstanceDirectory"));
8
+ //# sourceMappingURL=instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../src/instance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Why an attempt failed — the typed taxonomy the retry law dispatches on
3
+ * (ADR 0002, ADR 0013). Typed errors; three classes, deliberately distinct:
4
+ *
5
+ * - `InfraFailure` — the only class the engine may retry on its own, capped.
6
+ * - `AgentFailure` — always waits for the operator.
7
+ * - `RunawayFailure` — never auto-retried; only the operator restarts it.
8
+ */
9
+ import { Schema } from "effect";
10
+ declare const InfraFailure_base: Schema.Class<InfraFailure, Schema.TaggedStruct<"InfraFailure", {
11
+ readonly message: Schema.String;
12
+ readonly cause: Schema.Defect;
13
+ }>, import("effect/Cause").YieldableError>;
14
+ /**
15
+ * Typed error: infrastructure failed around the agent — worker unreachable,
16
+ * checkout failed, run host died. Auto-retryable, capped.
17
+ */
18
+ export declare class InfraFailure extends InfraFailure_base {
19
+ }
20
+ declare const AgentFailure_base: Schema.Class<AgentFailure, Schema.TaggedStruct<"AgentFailure", {
21
+ readonly message: Schema.String;
22
+ }>, import("effect/Cause").YieldableError>;
23
+ /**
24
+ * Typed error: the agent ran and failed the work itself. Never auto-retried —
25
+ * an agent that failed once would fail the same way again; the operator
26
+ * decides what changes before the next attempt.
27
+ */
28
+ export declare class AgentFailure extends AgentFailure_base {
29
+ }
30
+ /** Which per-attempt ceiling the runaway guard tripped. */
31
+ export declare const RunawayCeiling: Schema.Literals<readonly ["wall-clock", "tokens"]>;
32
+ export type RunawayCeiling = typeof RunawayCeiling.Type;
33
+ declare const RunawayFailure_base: Schema.Class<RunawayFailure, Schema.TaggedStruct<"RunawayFailure", {
34
+ readonly ceiling: Schema.Literals<readonly ["wall-clock", "tokens"]>;
35
+ }>, import("effect/Cause").YieldableError>;
36
+ /**
37
+ * Typed error: the runaway guard interrupted an attempt burning without
38
+ * progress. Its own class so auto-retry can never touch it (ADR 0013).
39
+ */
40
+ export declare class RunawayFailure extends RunawayFailure_base {
41
+ }
42
+ export declare const AttemptFailure: Schema.Union<readonly [typeof InfraFailure, typeof AgentFailure, typeof RunawayFailure]>;
43
+ export type AttemptFailure = typeof AttemptFailure.Type;
44
+ /**
45
+ * The class half of the auto-retry law (ADR 0002): only infra failures are
46
+ * ever auto-retried. This deliberately ignores the attempt cap — the full
47
+ * capped decision is `Attempt.shouldAutoRetry`.
48
+ */
49
+ export declare const isAutoRetryable: <I>(input: I) => input is I & InfraFailure;
50
+ export {};
51
+ //# sourceMappingURL=attempt-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt-failure.d.ts","sourceRoot":"","sources":["../../src/lifecycle/attempt-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;;;;;AAEhC;;;GAGG;AACH,qBAAa,YAAa,SAAQ,iBAMjC;CAAG;;;;AAEJ;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,iBAKjC;CAAG;AAEJ,2DAA2D;AAC3D,eAAO,MAAM,cAAc,oDAA4C,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;;;;AAExD;;;GAGG;AACH,qBAAa,cAAe,SAAQ,mBAIlC;CAAG;AAEL,eAAO,MAAM,cAAc,0FAA6D,CAAC;AACzF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,eAAe,4CAA0B,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Why an attempt failed — the typed taxonomy the retry law dispatches on
3
+ * (ADR 0002, ADR 0013). Typed errors; three classes, deliberately distinct:
4
+ *
5
+ * - `InfraFailure` — the only class the engine may retry on its own, capped.
6
+ * - `AgentFailure` — always waits for the operator.
7
+ * - `RunawayFailure` — never auto-retried; only the operator restarts it.
8
+ */
9
+ import { Schema } from "effect";
10
+ /**
11
+ * Typed error: infrastructure failed around the agent — worker unreachable,
12
+ * checkout failed, run host died. Auto-retryable, capped.
13
+ */
14
+ export class InfraFailure extends Schema.TaggedError("AttemptFailure/InfraFailure")("InfraFailure", {
15
+ message: Schema.String,
16
+ cause: Schema.Defect(),
17
+ }) {
18
+ }
19
+ /**
20
+ * Typed error: the agent ran and failed the work itself. Never auto-retried —
21
+ * an agent that failed once would fail the same way again; the operator
22
+ * decides what changes before the next attempt.
23
+ */
24
+ export class AgentFailure extends Schema.TaggedError("AttemptFailure/AgentFailure")("AgentFailure", {
25
+ message: Schema.String,
26
+ }) {
27
+ }
28
+ /** Which per-attempt ceiling the runaway guard tripped. */
29
+ export const RunawayCeiling = Schema.Literals(["wall-clock", "tokens"]);
30
+ /**
31
+ * Typed error: the runaway guard interrupted an attempt burning without
32
+ * progress. Its own class so auto-retry can never touch it (ADR 0013).
33
+ */
34
+ export class RunawayFailure extends Schema.TaggedError("AttemptFailure/RunawayFailure")("RunawayFailure", {
35
+ ceiling: RunawayCeiling,
36
+ }) {
37
+ }
38
+ export const AttemptFailure = Schema.Union([InfraFailure, AgentFailure, RunawayFailure]);
39
+ /**
40
+ * The class half of the auto-retry law (ADR 0002): only infra failures are
41
+ * ever auto-retried. This deliberately ignores the attempt cap — the full
42
+ * capped decision is `Attempt.shouldAutoRetry`.
43
+ */
44
+ export const isAutoRetryable = Schema.is(InfraFailure);
45
+ //# sourceMappingURL=attempt-failure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt-failure.js","sourceRoot":"","sources":["../../src/lifecycle/attempt-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAAe,6BAA6B,CAAC,CAC/F,cAAc,EACd;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;CACvB,CACF;CAAG;AAEJ;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,WAAW,CAAe,6BAA6B,CAAC,CAC/F,cAAc,EACd;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;CACvB,CACF;CAAG;AAEJ,2DAA2D;AAC3D,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGxE;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,CACpD,+BAA+B,CAChC,CAAC,gBAAgB,EAAE;IAClB,OAAO,EAAE,cAAc;CACxB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC;AAGzF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { Schema } from "effect";
2
+ import { AttemptFailure } from "./attempt-failure.ts";
3
+ import { BrainSpec } from "../agent.ts";
4
+ /**
5
+ * Value object (branded id): identity of one Attempt.
6
+ */
7
+ export declare const AttemptId: Schema.brand<Schema.NonEmptyString, "AttemptId">;
8
+ export type AttemptId = typeof AttemptId.Type;
9
+ /**
10
+ * Value object: 1-based position of a try under its step — retries are
11
+ * attempt N+1 under the same step, never new runs. Also the unit of the
12
+ * auto-retry cap: a cap of 3 means at most three attempts in total.
13
+ */
14
+ export declare const AttemptNumber: Schema.brand<Schema.Int, "AttemptNumber">;
15
+ export type AttemptNumber = typeof AttemptNumber.Type;
16
+ declare const Succeeded_base: Schema.Class<Succeeded, Schema.TaggedStruct<"Succeeded", {}>, {}>;
17
+ /** Outcome — value object: the attempt finished; the step result is stored on the Step. */
18
+ export declare class Succeeded extends Succeeded_base {
19
+ }
20
+ declare const Failed_base: Schema.Class<Failed, Schema.TaggedStruct<"Failed", {
21
+ readonly failure: Schema.Union<readonly [typeof import("./attempt-failure.ts").InfraFailure, typeof import("./attempt-failure.ts").AgentFailure, typeof import("./attempt-failure.ts").RunawayFailure]>;
22
+ }>, {}>;
23
+ /** Outcome — value object: the attempt failed, with the typed failure that closed it. */
24
+ export declare class Failed extends Failed_base {
25
+ }
26
+ declare const Canceled_base: Schema.Class<Canceled, Schema.TaggedStruct<"Canceled", {}>, {}>;
27
+ /** Outcome — value object: the operator canceled the Run during this Attempt. */
28
+ export declare class Canceled extends Canceled_base {
29
+ }
30
+ export declare const Outcome: Schema.Union<readonly [typeof Succeeded, typeof Failed, typeof Canceled]>;
31
+ export type Outcome = typeof Outcome.Type;
32
+ declare const Attempt_base: Schema.Class<Attempt, Schema.Struct<{
33
+ readonly id: Schema.brand<Schema.NonEmptyString, "AttemptId">;
34
+ readonly runId: Schema.brand<Schema.NonEmptyString, "RunId">;
35
+ readonly stepName: Schema.brand<Schema.NonEmptyString, "StepName">;
36
+ readonly worker: Schema.brand<Schema.String, "WorkerName">;
37
+ readonly number: Schema.brand<Schema.Int, "AttemptNumber">;
38
+ readonly brain: typeof BrainSpec;
39
+ readonly parentModel: Schema.OptionFromNullOr<Schema.brand<Schema.String, "ModelId">>;
40
+ readonly startedAt: Schema.DateTimeUtc;
41
+ readonly outcome: Schema.Option<Schema.Union<readonly [typeof Succeeded, typeof Failed, typeof Canceled]>>;
42
+ }>, {}>;
43
+ /**
44
+ * Entity — ledger row: one try of a step on a worker. `outcome` is none while
45
+ * the attempt is in flight.
46
+ */
47
+ export declare class Attempt extends Attempt_base {
48
+ }
49
+ /**
50
+ * Deriver — the full auto-retry law over one failed attempt (ADR 0002,
51
+ * ADR 0013): the class rule (`AttemptFailure.isAutoRetryable` — infra only)
52
+ * capped by the attempt count. `maxAutoAttempts` counts total attempts:
53
+ * attempt N may auto-retry into attempt N+1 only while N < maxAutoAttempts.
54
+ */
55
+ export declare const shouldAutoRetry: (options: {
56
+ readonly failure: AttemptFailure;
57
+ readonly number: AttemptNumber;
58
+ readonly maxAutoAttempts: AttemptNumber;
59
+ }) => boolean;
60
+ export {};
61
+ //# sourceMappingURL=attempt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt.d.ts","sourceRoot":"","sources":["../../src/lifecycle/attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAGvE,OAAO,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjD;;GAEG;AACH,eAAO,MAAM,SAAS,kDAAwD,CAAC;AAC/E,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,aAAa,2CAEzB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAC;;AAEtD,2FAA2F;AAC3F,qBAAa,SAAU,SAAQ,cAG9B;CAAG;;;;AAEJ,yFAAyF;AACzF,qBAAa,MAAO,SAAQ,WAE1B;CAAG;;AAEL,iFAAiF;AACjF,qBAAa,QAAS,SAAQ,aAG7B;CAAG;AAEJ,eAAO,MAAM,OAAO,2EAA8C,CAAC;AACnE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;;;;;;;;;;;;AAE1C;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAU3B;CAAG;AAEL;;;;;GAKG;AACH,eAAO,MAAM,eAAe,YAAa;IACvC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC;CACzC,KAAG,OAAuF,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { Schema } from "effect";
2
+ import { AttemptFailure, isAutoRetryable } from "./attempt-failure.js";
3
+ import { RunId } from "./run.js";
4
+ import { StepName } from "./step.js";
5
+ import { BrainSpec, ModelId } from "../agent.js";
6
+ import { Name as WorkerName } from "../worker.js";
7
+ /**
8
+ * Value object (branded id): identity of one Attempt.
9
+ */
10
+ export const AttemptId = Schema.NonEmptyString.pipe(Schema.brand("AttemptId"));
11
+ /**
12
+ * Value object: 1-based position of a try under its step — retries are
13
+ * attempt N+1 under the same step, never new runs. Also the unit of the
14
+ * auto-retry cap: a cap of 3 means at most three attempts in total.
15
+ */
16
+ export const AttemptNumber = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)).pipe(Schema.brand("AttemptNumber"));
17
+ /** Outcome — value object: the attempt finished; the step result is stored on the Step. */
18
+ export class Succeeded extends Schema.TaggedClass("AttemptOutcome/Succeeded")("Succeeded", {}) {
19
+ }
20
+ /** Outcome — value object: the attempt failed, with the typed failure that closed it. */
21
+ export class Failed extends Schema.TaggedClass("AttemptOutcome/Failed")("Failed", {
22
+ failure: AttemptFailure,
23
+ }) {
24
+ }
25
+ /** Outcome — value object: the operator canceled the Run during this Attempt. */
26
+ export class Canceled extends Schema.TaggedClass("AttemptOutcome/Canceled")("Canceled", {}) {
27
+ }
28
+ export const Outcome = Schema.Union([Succeeded, Failed, Canceled]);
29
+ /**
30
+ * Entity — ledger row: one try of a step on a worker. `outcome` is none while
31
+ * the attempt is in flight.
32
+ */
33
+ export class Attempt extends Schema.Class("Attempt")({
34
+ id: AttemptId,
35
+ runId: RunId,
36
+ stepName: StepName,
37
+ worker: WorkerName,
38
+ number: AttemptNumber,
39
+ brain: BrainSpec,
40
+ parentModel: Schema.OptionFromNullOr(ModelId),
41
+ startedAt: Schema.DateTimeUtc,
42
+ outcome: Schema.Option(Outcome),
43
+ }) {
44
+ }
45
+ /**
46
+ * Deriver — the full auto-retry law over one failed attempt (ADR 0002,
47
+ * ADR 0013): the class rule (`AttemptFailure.isAutoRetryable` — infra only)
48
+ * capped by the attempt count. `maxAutoAttempts` counts total attempts:
49
+ * attempt N may auto-retry into attempt N+1 only while N < maxAutoAttempts.
50
+ */
51
+ export const shouldAutoRetry = (options) => isAutoRetryable(options.failure) && options.number < options.maxAutoAttempts;
52
+ //# sourceMappingURL=attempt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attempt.js","sourceRoot":"","sources":["../../src/lifecycle/attempt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AAG/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAClF,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAC9B,CAAC;AAGF,2FAA2F;AAC3F,MAAM,OAAO,SAAU,SAAQ,MAAM,CAAC,WAAW,CAAY,0BAA0B,CAAC,CACtF,WAAW,EACX,EAAE,CACH;CAAG;AAEJ,yFAAyF;AACzF,MAAM,OAAO,MAAO,SAAQ,MAAM,CAAC,WAAW,CAAS,uBAAuB,CAAC,CAAC,QAAQ,EAAE;IACxF,OAAO,EAAE,cAAc;CACxB,CAAC;CAAG;AAEL,iFAAiF;AACjF,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,WAAW,CAAW,yBAAyB,CAAC,CACnF,UAAU,EACV,EAAE,CACH;CAAG;AAEJ,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGnE;;;GAGG;AACH,MAAM,OAAO,OAAQ,SAAQ,MAAM,CAAC,KAAK,CAAU,SAAS,CAAC,CAAC;IAC5D,EAAE,EAAE,SAAS;IACb,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,SAAS;IAChB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;IAC7C,SAAS,EAAE,MAAM,CAAC,WAAW;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;CAChC,CAAC;CAAG;AAEL;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAI/B,EAAW,EAAE,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object (branded id): identity of one Event in the ledger.
4
+ */
5
+ export declare const EventId: Schema.brand<Schema.NonEmptyString, "EventId">;
6
+ export type EventId = typeof EventId.Type;
7
+ /**
8
+ * Value object: the engine-derived, never-expiring idempotency key — timestamps aside, the
9
+ * same watched state is the same Event, forever. Derived per trigger type,
10
+ * never authored in a loop file (ADR 0002).
11
+ */
12
+ export declare const DedupKey: Schema.brand<Schema.NonEmptyString, "DedupKey">;
13
+ export type DedupKey = typeof DedupKey.Type;
14
+ declare const Event_base: Schema.Class<Event, Schema.Struct<{
15
+ readonly id: Schema.brand<Schema.NonEmptyString, "EventId">;
16
+ readonly dedupKey: Schema.brand<Schema.NonEmptyString, "DedupKey">;
17
+ readonly payload: Schema.Codec<Schema.Json, Schema.Json, never, never>;
18
+ readonly receivedAt: Schema.DateTimeUtc;
19
+ }>, {}>;
20
+ /**
21
+ * Entity — ledger row: one deduplicated fact the engine may react to — a trigger matching watched
22
+ * state, or an operator approval. An Event owns at most one open Run, ever.
23
+ *
24
+ * The payload is the stream's payload slice — GitHub's own shapes, kept opaque
25
+ * here; the expression and loop-file blocks range over it.
26
+ */
27
+ export declare class Event extends Event_base {
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../src/lifecycle/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,eAAO,MAAM,OAAO,gDAAsD,CAAC;AAC3E,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,QAAQ,iDAAuD,CAAC;AAC7E,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;;;;;;;AAE5C;;;;;;GAMG;AACH,qBAAa,KAAM,SAAQ,UAKzB;CAAG"}
@@ -0,0 +1,26 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object (branded id): identity of one Event in the ledger.
4
+ */
5
+ export const EventId = Schema.NonEmptyString.pipe(Schema.brand("EventId"));
6
+ /**
7
+ * Value object: the engine-derived, never-expiring idempotency key — timestamps aside, the
8
+ * same watched state is the same Event, forever. Derived per trigger type,
9
+ * never authored in a loop file (ADR 0002).
10
+ */
11
+ export const DedupKey = Schema.NonEmptyString.pipe(Schema.brand("DedupKey"));
12
+ /**
13
+ * Entity — ledger row: one deduplicated fact the engine may react to — a trigger matching watched
14
+ * state, or an operator approval. An Event owns at most one open Run, ever.
15
+ *
16
+ * The payload is the stream's payload slice — GitHub's own shapes, kept opaque
17
+ * here; the expression and loop-file blocks range over it.
18
+ */
19
+ export class Event extends Schema.Class("Event")({
20
+ id: EventId,
21
+ dedupKey: DedupKey,
22
+ payload: Schema.Json,
23
+ receivedAt: Schema.DateTimeUtc,
24
+ }) {
25
+ }
26
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../src/lifecycle/event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;GAEG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAG3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAG7E;;;;;;GAMG;AACH,MAAM,OAAO,KAAM,SAAQ,MAAM,CAAC,KAAK,CAAQ,OAAO,CAAC,CAAC;IACtD,EAAE,EAAE,OAAO;IACX,QAAQ,EAAE,QAAQ;IAClB,OAAO,EAAE,MAAM,CAAC,IAAI;IACpB,UAAU,EAAE,MAAM,CAAC,WAAW;CAC/B,CAAC;CAAG"}
@@ -0,0 +1,11 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object: stable identity of one piece of software-work state inside a
4
+ * loop. Several content-distinct Events may concern the same Item.
5
+ */
6
+ export declare const ItemKey: Schema.brand<Schema.NonEmptyString, "ItemKey">;
7
+ export type ItemKey = typeof ItemKey.Type;
8
+ /** Positive repository-local number for an issue-like Item. */
9
+ export declare const Number: Schema.brand<Schema.Int, "ItemNumber">;
10
+ export type Number = typeof Number.Type;
11
+ //# sourceMappingURL=item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.d.ts","sourceRoot":"","sources":["../../src/lifecycle/item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,eAAO,MAAM,OAAO,gDAAsD,CAAC;AAC3E,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAE1C,+DAA+D;AAC/D,eAAO,MAAM,MAAM,wCAElB,CAAC;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object: stable identity of one piece of software-work state inside a
4
+ * loop. Several content-distinct Events may concern the same Item.
5
+ */
6
+ export const ItemKey = Schema.NonEmptyString.pipe(Schema.brand("ItemKey"));
7
+ /** Positive repository-local number for an issue-like Item. */
8
+ export const Number = Schema.Int.check(Schema.isGreaterThanOrEqualTo(1)).pipe(Schema.brand("ItemNumber"));
9
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sourceRoot":"","sources":["../../src/lifecycle/item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;AAG3E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAC3E,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAC3B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object (branded id): loop identity — the loop file's name in the instance repo. Filename is
4
+ * identity — renaming the file retires one loop and creates another
5
+ * (ADR 0001).
6
+ */
7
+ export declare const LoopName: Schema.brand<Schema.NonEmptyString, "LoopName">;
8
+ export type LoopName = typeof LoopName.Type;
9
+ /**
10
+ * Value object: whether a loop parks new runs until an approval Event arrives
11
+ * (ADR 0004's `approval:` field, default none). One owner for the literal set
12
+ * the config parser accepts and the engine routes on.
13
+ */
14
+ export declare const APPROVAL_REQUIREMENTS: readonly ["none", "required"];
15
+ export declare const ApprovalRequirement: Schema.Literals<readonly ["none", "required"]>;
16
+ export type ApprovalRequirement = typeof ApprovalRequirement.Type;
17
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/lifecycle/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,iDAAuD,CAAC;AAC7E,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAE5C;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,YAAI,MAAM,EAAE,UAAU,CAAU,CAAC;AACnE,eAAO,MAAM,mBAAmB,gDAAyC,CAAC;AAC1E,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Schema } from "effect";
2
+ /**
3
+ * Value object (branded id): loop identity — the loop file's name in the instance repo. Filename is
4
+ * identity — renaming the file retires one loop and creates another
5
+ * (ADR 0001).
6
+ */
7
+ export const LoopName = Schema.NonEmptyString.pipe(Schema.brand("LoopName"));
8
+ /**
9
+ * Value object: whether a loop parks new runs until an approval Event arrives
10
+ * (ADR 0004's `approval:` field, default none). One owner for the literal set
11
+ * the config parser accepts and the engine routes on.
12
+ */
13
+ export const APPROVAL_REQUIREMENTS = ["none", "required"];
14
+ export const ApprovalRequirement = Schema.Literals(APPROVAL_REQUIREMENTS);
15
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/lifecycle/loop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAG7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAU,CAAC;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * The run state machine (ADR 0002):
3
+ *
4
+ * pending ──────────────► running ──► succeeded
5
+ * │ ▲ │
6
+ * ▼ │ ▼
7
+ * waiting ────────────────┘ failed ──► (retry: attempt N+1) ──► running
8
+ *
9
+ * pending | waiting | running ──► canceled (operator cancel)
10
+ * pending | waiting ──► canceled (supersede, revoke — a started
11
+ * attempt always finishes, ADR 0007)
12
+ *
13
+ * States are value objects (a discriminated union, each state carrying exactly
14
+ * its own data). Transitions are typestate derivers: each function accepts
15
+ * only the states it is legal on, so an illegal transition is a compile
16
+ * error. Construct states through these transitions (or by parsing a stored
17
+ * row via the `RunState` union) — they are the state machine.
18
+ */
19
+ import { Schema } from "effect";
20
+ import { EventId } from "./event.ts";
21
+ declare const OperatorCanceled_base: Schema.Class<OperatorCanceled, Schema.TaggedStruct<"OperatorCanceled", {}>, {}>;
22
+ /** Cancel reason — value object: the operator closed the run by hand. */
23
+ export declare class OperatorCanceled extends OperatorCanceled_base {
24
+ }
25
+ declare const Superseded_base: Schema.Class<Superseded, Schema.TaggedStruct<"Superseded", {
26
+ readonly by: Schema.brand<Schema.NonEmptyString, "EventId">;
27
+ }>, {}>;
28
+ /**
29
+ * Cancel reason — value object: a newer Event for the same Item took the
30
+ * run's place before any attempt started.
31
+ */
32
+ export declare class Superseded extends Superseded_base {
33
+ }
34
+ declare const Revoked_base: Schema.Class<Revoked, Schema.TaggedStruct<"Revoked", {}>, {}>;
35
+ /**
36
+ * Cancel reason — value object: the run's Item stopped matching its loop's
37
+ * trigger before any attempt started. Distinct from operator cancel and from
38
+ * supersede.
39
+ */
40
+ export declare class Revoked extends Revoked_base {
41
+ }
42
+ export declare const CancelReason: Schema.Union<readonly [typeof OperatorCanceled, typeof Superseded, typeof Revoked]>;
43
+ export type CancelReason = typeof CancelReason.Type;
44
+ declare const Pending_base: Schema.Class<Pending, Schema.TaggedStruct<"Pending", {}>, {}>;
45
+ /** Open: just created; no attempt started, no approval gate passed. */
46
+ export declare class Pending extends Pending_base {
47
+ }
48
+ declare const Waiting_base: Schema.Class<Waiting, Schema.TaggedStruct<"Waiting", {}>, {}>;
49
+ /**
50
+ * Open: parked on its loop's approval gate — v1's only waiting reason. The
51
+ * approval it consumes is an Event like every other fact.
52
+ */
53
+ export declare class Waiting extends Waiting_base {
54
+ }
55
+ declare const Running_base: Schema.Class<Running, Schema.TaggedStruct<"Running", {}>, {}>;
56
+ /** Open: an attempt is executing on a worker. */
57
+ export declare class Running extends Running_base {
58
+ }
59
+ declare const Succeeded_base: Schema.Class<Succeeded, Schema.TaggedStruct<"Succeeded", {}>, {}>;
60
+ /** Closed: the step finished and its result is stored. */
61
+ export declare class Succeeded extends Succeeded_base {
62
+ }
63
+ declare const Failed_base: Schema.Class<Failed, Schema.TaggedStruct<"Failed", {}>, {}>;
64
+ /**
65
+ * Closed, but reopenable: the last attempt failed and no auto-retry applies.
66
+ * The failure itself lives on the Attempt.
67
+ */
68
+ export declare class Failed extends Failed_base {
69
+ }
70
+ declare const Canceled_base: Schema.Class<Canceled, Schema.TaggedStruct<"Canceled", {
71
+ readonly reason: Schema.Union<readonly [typeof OperatorCanceled, typeof Superseded, typeof Revoked]>;
72
+ }>, {}>;
73
+ /** Closed: canceled, with the reason recorded. */
74
+ export declare class Canceled extends Canceled_base {
75
+ }
76
+ /**
77
+ * The open half of the machine — the single statement of the open/closed
78
+ * partition; the alias, the guard, and the full union all derive from it.
79
+ */
80
+ export declare const Open: Schema.Union<readonly [typeof Pending, typeof Waiting, typeof Running]>;
81
+ export type Open = typeof Open.Type;
82
+ export declare const RunState: Schema.Union<readonly [typeof Pending, typeof Waiting, typeof Running, typeof Succeeded, typeof Failed, typeof Canceled]>;
83
+ export type RunState = typeof RunState.Type;
84
+ export declare const isOpen: <I>(input: I) => input is I & (Pending | Running | Waiting);
85
+ /** The open partition as `_tag` literals, for queries that filter stored rows by state. */
86
+ export declare const OPEN_STATE_TAGS: readonly ["Pending", "Waiting", "Running"];
87
+ /** Every state as `_tag` literals, for read models that project stored rows by state. */
88
+ export declare const STATE_TAGS: readonly ["Pending", "Waiting", "Running", "Succeeded", "Failed", "Canceled"];
89
+ /**
90
+ * The states with no started attempt, as `_tag` literals — the precondition
91
+ * of `supersede` and `revoke`, for queries that filter stored rows by state.
92
+ */
93
+ export declare const UNSTARTED_STATE_TAGS: readonly ["Pending", "Waiting"];
94
+ /** pending → waiting: park the run on its loop's approval gate. */
95
+ export declare const awaitApproval: (_state: Pending) => Waiting;
96
+ /**
97
+ * pending | waiting → running: the first attempt starts. From waiting, the
98
+ * engine consumes the approval Event that opens the gate.
99
+ */
100
+ export declare const start: (_state: Pending | Waiting) => Running;
101
+ /** running → succeeded: the attempt finished and the step result is stored. */
102
+ export declare const succeed: (_state: Running) => Succeeded;
103
+ /**
104
+ * running → failed: the attempt failed and no auto-retry applies — the engine
105
+ * discharges that precondition with `Attempt.shouldAutoRetry`, the one owner
106
+ * of the auto-retry law.
107
+ */
108
+ export declare const fail: (_state: Running) => Failed;
109
+ /**
110
+ * failed → running: operator retry. The next try is a new Attempt (N+1) under
111
+ * the same Step, never a new run.
112
+ */
113
+ export declare const retry: (_state: Failed) => Running;
114
+ /**
115
+ * open → canceled: the operator's act, reachable from every open state —
116
+ * named by cause like its siblings; supersede and revoke are the other two
117
+ * roads into Canceled.
118
+ */
119
+ export declare const cancelByOperator: (_state: Open) => Canceled;
120
+ /**
121
+ * pending | waiting → canceled: a newer Event for the same Item takes this
122
+ * run's place. Only runs with no started attempt can be superseded — a running
123
+ * attempt always finishes, and the newer state is judged again when it ends
124
+ * (ADR 0007).
125
+ */
126
+ export declare const supersede: (_state: Pending | Waiting, by: EventId) => Canceled;
127
+ /**
128
+ * pending | waiting → canceled: the run's Item stopped matching its loop's
129
+ * trigger. Never touches a running attempt.
130
+ */
131
+ export declare const revoke: (_state: Pending | Waiting) => Canceled;
132
+ export {};
133
+ //# sourceMappingURL=run-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../../src/lifecycle/run-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;;AAErC,yEAAyE;AACzE,qBAAa,gBAAiB,SAAQ,qBAEb;CAAG;;;;AAE5B;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAG/B;CAAG;;AAEJ;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,YAAkE;CAAG;AAElG,eAAO,MAAM,YAAY,qFAAwD,CAAC;AAClF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAC;;AAEpD,uEAAuE;AACvE,qBAAa,OAAQ,SAAQ,YAA8D;CAAG;;AAE9F;;;GAGG;AACH,qBAAa,OAAQ,SAAQ,YAA8D;CAAG;;AAE9F,iDAAiD;AACjD,qBAAa,OAAQ,SAAQ,YAA8D;CAAG;;AAE9F,0DAA0D;AAC1D,qBAAa,SAAU,SAAQ,cAG9B;CAAG;;AAEJ;;;GAGG;AACH,qBAAa,MAAO,SAAQ,WAA2D;CAAG;;;;AAE1F,kDAAkD;AAClD,qBAAa,QAAS,SAAQ,aAE5B;CAAG;AAEL;;;GAGG;AACH,eAAO,MAAM,IAAI,yEAA4C,CAAC;AAC9D,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC;AAEpC,eAAO,MAAM,QAAQ,2HAA+D,CAAC;AACrF,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;AAE5C,eAAO,MAAM,MAAM,6DAAkB,CAAC;AAgBtC,2FAA2F;AAC3F,eAAO,MAAM,eAAe,4CAAkD,CAAC;AAE/E,yFAAyF;AACzF,eAAO,MAAM,UAAU,+EAOtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,iCAAoD,CAAC;AAEtF,mEAAmE;AACnE,eAAO,MAAM,aAAa,WAAY,OAAO,KAAG,OAAwB,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,KAAK,WAAY,OAAO,GAAG,OAAO,KAAG,OAAwB,CAAC;AAE3E,+EAA+E;AAC/E,eAAO,MAAM,OAAO,WAAY,OAAO,KAAG,SAA4B,CAAC;AAEvE;;;;GAIG;AACH,eAAO,MAAM,IAAI,WAAY,OAAO,KAAG,MAAsB,CAAC;AAE9D;;;GAGG;AACH,eAAO,MAAM,KAAK,WAAY,MAAM,KAAG,OAAwB,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,WAAY,IAAI,KAAG,QACE,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,SAAS,WAAY,OAAO,GAAG,OAAO,MAAM,OAAO,KAAG,QACjB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,MAAM,WAAY,OAAO,GAAG,OAAO,KAAG,QACV,CAAC"}