@usine/config 0.1.0 → 0.2.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 (82) hide show
  1. package/README.md +22 -4
  2. package/dist/agent.d.ts +23 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +22 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/board.d.ts +31 -0
  7. package/dist/board.d.ts.map +1 -0
  8. package/dist/board.js +32 -0
  9. package/dist/board.js.map +1 -0
  10. package/dist/checks.d.ts +3 -0
  11. package/dist/checks.d.ts.map +1 -0
  12. package/dist/checks.js +3 -0
  13. package/dist/checks.js.map +1 -0
  14. package/dist/factory.d.ts +86 -0
  15. package/dist/factory.d.ts.map +1 -0
  16. package/dist/factory.js +87 -0
  17. package/dist/factory.js.map +1 -0
  18. package/dist/file.d.ts +27 -0
  19. package/dist/file.d.ts.map +1 -0
  20. package/dist/file.js +29 -0
  21. package/dist/file.js.map +1 -0
  22. package/dist/frontmatter.d.ts +2 -2
  23. package/dist/frontmatter.d.ts.map +1 -1
  24. package/dist/frontmatter.js +2 -2
  25. package/dist/frontmatter.js.map +1 -1
  26. package/dist/instance/diagnostics.d.ts +19 -0
  27. package/dist/instance/diagnostics.d.ts.map +1 -0
  28. package/dist/instance/diagnostics.js +22 -0
  29. package/dist/instance/diagnostics.js.map +1 -0
  30. package/dist/instance/instance.d.ts +17 -0
  31. package/dist/instance/instance.d.ts.map +1 -0
  32. package/dist/instance/instance.js +21 -0
  33. package/dist/instance/instance.js.map +1 -0
  34. package/dist/instance/references.d.ts +21 -0
  35. package/dist/instance/references.d.ts.map +1 -0
  36. package/dist/instance/references.js +38 -0
  37. package/dist/instance/references.js.map +1 -0
  38. package/dist/instance-folder.d.ts +5 -4
  39. package/dist/instance-folder.d.ts.map +1 -1
  40. package/dist/instance-folder.js +23 -3
  41. package/dist/instance-folder.js.map +1 -1
  42. package/dist/label.d.ts +22 -0
  43. package/dist/label.d.ts.map +1 -0
  44. package/dist/label.js +25 -0
  45. package/dist/label.js.map +1 -0
  46. package/dist/loop.d.ts +42 -0
  47. package/dist/loop.d.ts.map +1 -0
  48. package/dist/loop.js +36 -0
  49. package/dist/loop.js.map +1 -0
  50. package/dist/parser.d.ts +13 -8
  51. package/dist/parser.d.ts.map +1 -1
  52. package/dist/parser.js +53 -14
  53. package/dist/parser.js.map +1 -1
  54. package/dist/payload-slices.d.ts +8 -7
  55. package/dist/payload-slices.d.ts.map +1 -1
  56. package/dist/payload-slices.js +8 -8
  57. package/dist/payload-slices.js.map +1 -1
  58. package/dist/selector.d.ts +25 -3
  59. package/dist/selector.d.ts.map +1 -1
  60. package/dist/selector.js +14 -2
  61. package/dist/selector.js.map +1 -1
  62. package/dist/trigger.d.ts +37 -0
  63. package/dist/trigger.d.ts.map +1 -0
  64. package/dist/trigger.js +34 -0
  65. package/dist/trigger.js.map +1 -0
  66. package/dist/yaml/document.d.ts +3 -3
  67. package/dist/yaml/document.d.ts.map +1 -1
  68. package/dist/yaml/document.js +3 -3
  69. package/dist/yaml/document.js.map +1 -1
  70. package/dist/yaml/writer.d.ts +5 -3
  71. package/dist/yaml/writer.d.ts.map +1 -1
  72. package/dist/yaml/writer.js +7 -5
  73. package/dist/yaml/writer.js.map +1 -1
  74. package/package.json +54 -6
  75. package/dist/index.d.ts +0 -11
  76. package/dist/index.d.ts.map +0 -1
  77. package/dist/index.js +0 -11
  78. package/dist/index.js.map +0 -1
  79. package/dist/model.d.ts +0 -257
  80. package/dist/model.d.ts.map +0 -1
  81. package/dist/model.js +0 -238
  82. package/dist/model.js.map +0 -1
@@ -1,5 +1,5 @@
1
- import { Repository } from "@usine/core";
2
- import { Environment, ObjectField, ObjectType, TypeReference, Variable } from "@usine/expression";
1
+ import { splitRepositoryName } from "@usine/core/repository";
2
+ import { Environment, ObjectField, ObjectType, TypeReference, Variable, } from "@usine/expression/expression-engine";
3
3
  import { Schema } from "effect";
4
4
  const reference = Schema.decodeUnknownSync(TypeReference);
5
5
  const objectType = (name, fields) => new ObjectType({
@@ -155,7 +155,7 @@ const environment = (types, itemType) => new Environment({
155
155
  new Variable({ name: "item", type: reference(itemType) }),
156
156
  ],
157
157
  });
158
- /** Exact v1 issue payload slice descriptor recorded by issue #11. */
158
+ /** The CEL environment for issue triggers: the `item` type mirrors the issue payload slice. */
159
159
  export const issueEnvironment = environment([
160
160
  actor,
161
161
  label,
@@ -169,7 +169,7 @@ export const issueEnvironment = environment([
169
169
  pullRequestReferences,
170
170
  issue,
171
171
  ], "IssuePayload");
172
- /** Exact v1 pull-request payload slice descriptor recorded by issue #11. */
172
+ /** The CEL environment for pull-request triggers: the `item` type mirrors the pull-request payload slice. */
173
173
  export const pullRequestEnvironment = environment([
174
174
  actor,
175
175
  label,
@@ -191,7 +191,7 @@ export const pullRequestEnvironment = environment([
191
191
  statusCheckRollup,
192
192
  pullRequest,
193
193
  ], "PullRequestPayload");
194
- /** Schedule payload slice: item.tick = { scheduledAt, scheduledAtLocal, cron, tz }. */
194
+ /** The CEL environment for schedule triggers: `item.tick` has `scheduledAt`, `scheduledAtLocal`, `cron`, and `tz`. */
195
195
  export const scheduleEnvironment = environment([tick, schedule], "SchedulePayload");
196
196
  export const environmentFor = (stream) => {
197
197
  switch (stream) {
@@ -204,11 +204,11 @@ export const environmentFor = (stream) => {
204
204
  }
205
205
  };
206
206
  /**
207
- * The CEL `repo` variable, built beside the `RepoContext` type it must match —
208
- * a field added to one belongs in the other.
207
+ * The value of the CEL `repo` variable. A field added here must also be added
208
+ * to the `RepoContext` type, and the reverse.
209
209
  */
210
210
  export const repositoryContext = (repository) => {
211
- const { owner } = Repository.parts(repository.name);
211
+ const { owner } = splitRepositoryName(repository.name);
212
212
  return {
213
213
  name: repository.name,
214
214
  owner,
@@ -1 +1 @@
1
- {"version":3,"file":"payload-slices.js","sourceRoot":"","sources":["../src/payload-slices.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-slices.js","sourceRoot":"","sources":["../src/payload-slices.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,27 @@
1
- import { Option } from "effect";
2
- import type { ManagedRepo, Selector } from "./model.ts";
3
- /** Match both selector axes when both are present; an omitted selector matches every repo. */
1
+ import { Option, Schema } from "effect";
2
+ import { type ManagedRepo } from "./factory.ts";
3
+ declare const Selector_base: Schema.Class<Selector, Schema.Struct<{
4
+ readonly repos: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>;
5
+ readonly tags: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>;
6
+ }>, {}>;
7
+ /** Narrows a Loop to registry repositories by name, by any listed tag, or by both criteria together. */
8
+ export declare class Selector extends Selector_base {
9
+ }
10
+ /** An authored selector must name repositories or tags; omit the selector entirely to include every repository. */
11
+ export declare const ValidSelector: Schema.decodeTo<Schema.declareConstructor<Selector, {
12
+ readonly repos?: readonly string[];
13
+ readonly tags?: readonly string[];
14
+ }, readonly [Schema.Struct<{
15
+ readonly repos: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>;
16
+ readonly tags: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>;
17
+ }>], {
18
+ readonly repos: Schema.OptionIso<Schema.toType<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>>;
19
+ readonly tags: Schema.OptionIso<Schema.toType<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>>;
20
+ }>, Schema.Struct<{
21
+ readonly repos: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RepositoryName">>>;
22
+ readonly tags: Schema.OptionFromOptionalKey<Schema.$Array<Schema.brand<Schema.String, "RegistryTag">>>;
23
+ }>, never, never>;
24
+ /** Whether a repo passes the selector. Both axes must match when present; no selector matches every repo. */
4
25
  export declare const matchesSelector: (selector: Option.Option<Selector>, repo: ManagedRepo) => boolean;
26
+ export {};
5
27
  //# sourceMappingURL=selector.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExD,8FAA8F;AAC9F,eAAO,MAAM,eAAe,aAAc,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAW,KAAG,OAcnF,CAAC"}
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;AAE7D,wGAAwG;AACxG,qBAAa,QAAS,SAAQ,aAO5B;CAAG;AAEL,mHAAmH;AACnH,eAAO,MAAM,aAAa;;;;;;;;;;;;iBAIzB,CAAC;AAEF,6GAA6G;AAC7G,eAAO,MAAM,eAAe,aAAc,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,WAAW,KAAG,OAcnF,CAAC"}
package/dist/selector.js CHANGED
@@ -1,5 +1,17 @@
1
- import { Option } from "effect";
2
- /** Match both selector axes when both are present; an omitted selector matches every repo. */
1
+ import { RepositoryName } from "@usine/core/repository";
2
+ import { Option, Schema } from "effect";
3
+ import { RegistryTag } from "./factory.js";
4
+ /** Narrows a Loop to registry repositories by name, by any listed tag, or by both criteria together. */
5
+ export class Selector extends Schema.Class("@usine/config/Selector")({
6
+ repos: Schema.OptionFromOptionalKey(Schema.Array(RepositoryName).check(Schema.isNonEmpty(), Schema.isUnique())),
7
+ tags: Schema.OptionFromOptionalKey(Schema.Array(RegistryTag).check(Schema.isNonEmpty(), Schema.isUnique())),
8
+ }) {
9
+ }
10
+ /** An authored selector must name repositories or tags; omit the selector entirely to include every repository. */
11
+ export const ValidSelector = Selector.check(Schema.makeFilter((selector) => Option.isSome(selector.repos) || Option.isSome(selector.tags), {
12
+ message: "Expected selector.repos, selector.tags, or both",
13
+ }));
14
+ /** Whether a repo passes the selector. Both axes must match when present; no selector matches every repo. */
3
15
  export const matchesSelector = (selector, repo) => Option.match(selector, {
4
16
  onNone: () => true,
5
17
  onSome: (value) => {
@@ -1 +1 @@
1
- {"version":3,"file":"selector.js","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,8FAA8F;AAC9F,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAiC,EAAE,IAAiB,EAAW,EAAE,CAC/F,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;IACrB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;IAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,WAAW,IAAI,UAAU,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"selector.js","sourceRoot":"","sources":["../src/selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,WAAW,EAAoB,MAAM,cAAc,CAAC;AAE7D,wGAAwG;AACxG,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,wBAAwB,CAAC,CAAC;IAC7E,KAAK,EAAE,MAAM,CAAC,qBAAqB,CACjC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAC3E;IACD,IAAI,EAAE,MAAM,CAAC,qBAAqB,CAChC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CACxE;CACF,CAAC;CAAG;AAEL,mHAAmH;AACnH,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CACzC,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;IAC7F,OAAO,EAAE,iDAAiD;CAC3D,CAAC,CACH,CAAC;AAEF,6GAA6G;AAC7G,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAiC,EAAE,IAAiB,EAAW,EAAE,CAC/F,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE;IACrB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;IAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;QAChB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;YAC5C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7C,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;YAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;YAClB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC9D,CAAC,CAAC;QACH,OAAO,WAAW,IAAI,UAAU,CAAC;IACnC,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { Schema } from "effect";
2
+ /** A five-field schedule evaluated in the trigger's time zone. */
3
+ export declare const Cron: Schema.brand<Schema.String, "Cron">;
4
+ export type Cron = typeof Cron.Type;
5
+ /** The IANA time zone whose local clock defines a schedule's firing times. */
6
+ export declare const TimeZone: Schema.brand<Schema.String, "TimeZone">;
7
+ export type TimeZone = typeof TimeZone.Type;
8
+ declare const IssueTrigger_base: Schema.Class<IssueTrigger, Schema.Struct<{
9
+ readonly on: Schema.Literal<"issue">;
10
+ readonly if: Schema.brand<Schema.String, "ExpressionSource">;
11
+ }>, {}>;
12
+ /** Watches issues and selects matching payloads with the Loop's `if` expression. */
13
+ export declare class IssueTrigger extends IssueTrigger_base {
14
+ }
15
+ declare const PullRequestTrigger_base: Schema.Class<PullRequestTrigger, Schema.Struct<{
16
+ readonly on: Schema.Literal<"pr">;
17
+ readonly if: Schema.brand<Schema.String, "ExpressionSource">;
18
+ }>, {}>;
19
+ /** Watches pull requests and selects matching payloads with the Loop's `if` expression. */
20
+ export declare class PullRequestTrigger extends PullRequestTrigger_base {
21
+ }
22
+ declare const ScheduleTrigger_base: Schema.Class<ScheduleTrigger, Schema.Struct<{
23
+ readonly on: Schema.Literal<"schedule">;
24
+ readonly if: Schema.brand<Schema.String, "ExpressionSource">;
25
+ readonly cron: Schema.brand<Schema.String, "Cron">;
26
+ readonly tz: Schema.withDecodingDefaultKey<Schema.brand<Schema.String, "TimeZone">, never>;
27
+ }>, {}>;
28
+ /** Fires per selected repository on a schedule, catching up only the latest missed Tick after downtime. */
29
+ export declare class ScheduleTrigger extends ScheduleTrigger_base {
30
+ }
31
+ /** The standing Item condition or schedule that produces Events for a Loop. */
32
+ export declare const Trigger: Schema.Union<readonly [typeof IssueTrigger, typeof PullRequestTrigger, typeof ScheduleTrigger]>;
33
+ export type Trigger = typeof Trigger.Type;
34
+ /** The class of state a Loop watches: issues, pull requests, or scheduled Ticks. */
35
+ export type Stream = Trigger["on"];
36
+ export {};
37
+ //# sourceMappingURL=trigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.d.ts","sourceRoot":"","sources":["../src/trigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAwD,MAAM,EAAE,MAAM,QAAQ,CAAC;AAQtF,kEAAkE;AAClE,eAAO,MAAM,IAAI,qCAEW,CAAC;AAE7B,MAAM,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC;AAIpC,8EAA8E;AAC9E,eAAO,MAAM,QAAQ,yCAEW,CAAC;AAEjC,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC;;;;;AAE5C,oFAAoF;AACpF,qBAAa,YAAa,SAAQ,iBAGhC;CAAG;;;;;AAEL,2FAA2F;AAC3F,qBAAa,kBAAmB,SAAQ,uBAKtC;CAAG;;;;;;;AAEL,2GAA2G;AAC3G,qBAAa,eAAgB,SAAQ,oBAOpC;CAAG;AAEJ,+EAA+E;AAC/E,eAAO,MAAM,OAAO,iGAAoE,CAAC;AAEzF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAC;AAE1C,oFAAoF;AACpF,MAAM,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { Source } from "@usine/expression/expression-engine";
2
+ import { Cron as EffectCron, DateTime, Effect, Option, Result, Schema } from "effect";
3
+ // Uses the same Cron parser the scheduler evaluates with, so a cron that parses
4
+ // here parses at tick time too. Cron.prev and Cron.next can still fail inside a
5
+ // DST gap; the scheduler isolates that per schedule.
6
+ const isFiveFieldCron = (value) => value.trim().split(/\s+/u).length === 5 && Result.isSuccess(EffectCron.parse(value));
7
+ /** A five-field schedule evaluated in the trigger's time zone. */
8
+ export const Cron = Schema.String.check(Schema.makeFilter(isFiveFieldCron, { message: "Expected a valid five-field cron expression" })).pipe(Schema.brand("Cron"));
9
+ const isTimeZone = (value) => Option.isSome(DateTime.zoneMakeNamed(value));
10
+ /** The IANA time zone whose local clock defines a schedule's firing times. */
11
+ export const TimeZone = Schema.String.check(Schema.makeFilter(isTimeZone, { message: "Expected an IANA time-zone name" })).pipe(Schema.brand("TimeZone"));
12
+ /** Watches issues and selects matching payloads with the Loop's `if` expression. */
13
+ export class IssueTrigger extends Schema.Class("@usine/config/IssueTrigger")({
14
+ on: Schema.Literal("issue"),
15
+ if: Source,
16
+ }) {
17
+ }
18
+ /** Watches pull requests and selects matching payloads with the Loop's `if` expression. */
19
+ export class PullRequestTrigger extends Schema.Class("@usine/config/PullRequestTrigger")({
20
+ on: Schema.Literal("pr"),
21
+ if: Source,
22
+ }) {
23
+ }
24
+ /** Fires per selected repository on a schedule, catching up only the latest missed Tick after downtime. */
25
+ export class ScheduleTrigger extends Schema.Class("@usine/config/ScheduleTrigger")({
26
+ on: Schema.Literal("schedule"),
27
+ if: Source,
28
+ cron: Cron,
29
+ tz: TimeZone.pipe(Schema.withDecodingDefaultKey(Effect.succeed("UTC"))),
30
+ }) {
31
+ }
32
+ /** The standing Item condition or schedule that produces Events for a Loop. */
33
+ export const Trigger = Schema.Union([IssueTrigger, PullRequestTrigger, ScheduleTrigger]);
34
+ //# sourceMappingURL=trigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.js","sourceRoot":"","sources":["../src/trigger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qCAAqC,CAAC;AAC7D,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEtF,gFAAgF;AAChF,gFAAgF;AAChF,qDAAqD;AACrD,MAAM,eAAe,GAAG,CAAC,KAAa,EAAW,EAAE,CACjD,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAEvF,kEAAkE;AAClE,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACrC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC,CAC/F,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAI7B,MAAM,UAAU,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5F,8EAA8E;AAC9E,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CACzC,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAC9E,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAIjC,oFAAoF;AACpF,MAAM,OAAO,YAAa,SAAQ,MAAM,CAAC,KAAK,CAAe,4BAA4B,CAAC,CAAC;IACzF,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3B,EAAE,EAAE,MAAM;CACX,CAAC;CAAG;AAEL,2FAA2F;AAC3F,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAClD,kCAAkC,CACnC,CAAC;IACA,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;IACxB,EAAE,EAAE,MAAM;CACX,CAAC;CAAG;AAEL,2GAA2G;AAC3G,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,+BAA+B,CAAC,CACjG;IACE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;IAC9B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,IAAI;IACV,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;CACxE,CACF;CAAG;AAEJ,+EAA+E;AAC/E,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { Effect } from "effect";
2
2
  import { type Document } from "yaml";
3
- import { ConfigFileError, type InstancePath } from "../model.ts";
3
+ import { ConfigFileError, type InstancePath } from "../file.ts";
4
4
  /**
5
- * Parse YAML source into its Document AST, strictly (unique keys, warnings
6
- * are errors), with source tokens retained so surgical edits keep formatting.
5
+ * Parses YAML into a Document AST that keeps source tokens, so an edit through
6
+ * it preserves formatting. Duplicate keys and parser warnings are errors.
7
7
  */
8
8
  export declare const parseYamlDocument: (file: InstancePath, source: string) => Effect.Effect<Document.Parsed, ConfigFileError>;
9
9
  //# sourceMappingURL=document.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAWjE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SACtB,YAAY,UACV,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CA4B7C,CAAC"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAkB,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAiB,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAWhE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,SACtB,YAAY,UACV,MAAM,KACb,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,eAAe,CA4B7C,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { Effect, Option, Schema } from "effect";
2
2
  import { parseDocument } from "yaml";
3
- import { ConfigFileError } from "../model.js";
3
+ import { ConfigFileError } from "../file.js";
4
4
  const causeMessage = (cause) => Option.match(Schema.decodeUnknownOption(Schema.Struct({ message: Schema.NonEmptyString }))(cause), {
5
5
  onNone: () => "Unknown YAML parsing failure",
6
6
  onSome: ({ message }) => message,
7
7
  });
8
8
  /**
9
- * Parse YAML source into its Document AST, strictly (unique keys, warnings
10
- * are errors), with source tokens retained so surgical edits keep formatting.
9
+ * Parses YAML into a Document AST that keeps source tokens, so an edit through
10
+ * it preserves formatting. Duplicate keys and parser warnings are errors.
11
11
  */
12
12
  export const parseYamlDocument = (file, source) => Effect.gen(function* () {
13
13
  const document = yield* Effect.try({
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAiB,aAAa,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAEjE,MAAM,YAAY,GAAG,CAAC,KAAc,EAAU,EAAE,CAC9C,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACpF;IACE,MAAM,EAAE,GAAG,EAAE,CAAC,8BAA8B;IAC5C,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO;CACjC,CACF,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAkB,EAClB,MAAc,EACmC,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,GAAG,EAAE,CACR,aAAa,CAAC,MAAM,EAAE;YACpB,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;SACjB,CAAC;QACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,eAAe,CAAC;YAClB,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;SAC7B,CAAC;KACL,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/yaml/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChD,OAAO,EAAiB,aAAa,EAAE,MAAM,MAAM,CAAC;AACpD,OAAO,EAAE,eAAe,EAAqB,MAAM,YAAY,CAAC;AAEhE,MAAM,YAAY,GAAG,CAAC,KAAc,EAAU,EAAE,CAC9C,MAAM,CAAC,KAAK,CACV,MAAM,CAAC,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EACpF;IACE,MAAM,EAAE,GAAG,EAAE,CAAC,8BAA8B;IAC5C,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO;CACjC,CACF,CAAC;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAkB,EAClB,MAAc,EACmC,EAAE,CACnD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjC,GAAG,EAAE,GAAG,EAAE,CACR,aAAa,CAAC,MAAM,EAAE;YACpB,gBAAgB,EAAE,IAAI;YACtB,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;SACjB,CAAC;QACJ,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,eAAe,CAAC;YAClB,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC;SAC7B,CAAC;KACL,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC;YAChC,IAAI;YACJ,KAAK,EAAE,MAAM;YACb,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE;YACzB,OAAO,EAAE,WAAW,CAAC,OAAO;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,14 +1,16 @@
1
1
  import { Effect, Schema } from "effect";
2
- import type { ConfigFileError } from "../model.ts";
2
+ import type { ConfigFileError } from "../file.ts";
3
3
  declare const YamlEdit_base: Schema.Class<YamlEdit, Schema.Struct<{
4
+ /** Path in file-key spelling, for example `["settings", "max_children"]`. */
4
5
  readonly path: Schema.$Array<Schema.NonEmptyString>;
5
6
  readonly value: Schema.Codec<Schema.Json, Schema.Json, never, never>;
6
7
  }>, {}>;
8
+ /** One replacement in authored YAML, preserving the surrounding file. */
7
9
  export declare class YamlEdit extends YamlEdit_base {
8
10
  }
9
- /** Mutate one YAML path through the Document AST, retaining comments and key order. */
11
+ /** Sets one YAML path and returns the file with its comments, key order, and newline style intact. */
10
12
  export declare const updateYaml: (file: string & import("effect/Brand").Brand<"InstancePath">, source: string, edit: YamlEdit) => Effect.Effect<string, ConfigFileError, never>;
11
- /** Apply the same surgical mutation to the YAML half of a Markdown config file. */
13
+ /** Sets one YAML path in the frontmatter of a Markdown config file and returns the whole file. */
12
14
  export declare const updateFrontmatter: (file: string & import("effect/Brand").Brand<"InstancePath">, source: string, edit: YamlEdit) => Effect.Effect<string, ConfigFileError, never>;
13
15
  export {};
14
16
  //# sourceMappingURL=writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,aAAa,CAAC;;;;;AAIjE,qBAAa,QAAS,SAAQ,aAG5B;CAAG;AAOL,uFAAuF;AACvF,eAAO,MAAM,UAAU,gJAQtB,CAAC;AAEF,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,gJAe7B,CAAC"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,YAAY,CAAC;;IAM9D,6EAA6E;;;;AAF/E,yEAAyE;AACzE,qBAAa,QAAS,SAAQ,aAI5B;CAAG;AAOL,sGAAsG;AACtG,eAAO,MAAM,UAAU,gJAQtB,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,gJAe7B,CAAC"}
@@ -1,7 +1,9 @@
1
1
  import { Effect, Schema } from "effect";
2
2
  import { splitMarkdown } from "../frontmatter.js";
3
3
  import { parseYamlDocument } from "./document.js";
4
+ /** One replacement in authored YAML, preserving the surrounding file. */
4
5
  export class YamlEdit extends Schema.Class("@usine/config/YamlEdit")({
6
+ /** Path in file-key spelling, for example `["settings", "max_children"]`. */
5
7
  path: Schema.Array(Schema.NonEmptyString).check(Schema.isNonEmpty()),
6
8
  value: Schema.Json,
7
9
  }) {
@@ -10,18 +12,18 @@ const restoreNewlines = (text, newline) => {
10
12
  const normalized = text.replaceAll("\r\n", "\n");
11
13
  return newline === "\r\n" ? normalized.replaceAll("\n", "\r\n") : normalized;
12
14
  };
13
- /** Mutate one YAML path through the Document AST, retaining comments and key order. */
15
+ /** Sets one YAML path and returns the file with its comments, key order, and newline style intact. */
14
16
  export const updateYaml = Effect.fn("YamlWriter.updateYaml")((file, source, edit) => Effect.gen(function* () {
15
17
  const document = yield* parseYamlDocument(file, source);
16
18
  document.setIn(edit.path, edit.value);
17
- // The AST stringifier always emits LF; restore the authored style.
19
+ // The stringifier always emits LF.
18
20
  return restoreNewlines(document.toString(), source.includes("\r\n") ? "\r\n" : "\n");
19
21
  }));
20
- /** Apply the same surgical mutation to the YAML half of a Markdown config file. */
22
+ /** Sets one YAML path in the frontmatter of a Markdown config file and returns the whole file. */
21
23
  export const updateFrontmatter = Effect.fn("YamlWriter.updateFrontmatter")((file, source, edit) => Effect.gen(function* () {
22
24
  const markdown = yield* splitMarkdown(file, source);
23
- // A one-line YAML half carries no newline of its own, so the file's
24
- // delimiter style — not the half's content — decides the output style.
25
+ // A one-line YAML half has no newline to infer a style from, so the file's
26
+ // delimiter decides.
25
27
  const updated = restoreNewlines(yield* updateYaml(file, markdown.yaml, edit), markdown.newline);
26
28
  const yaml = updated.endsWith(markdown.newline)
27
29
  ? updated.slice(0, -markdown.newline.length)
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,wBAAwB,CAAC,CAAC;IAC7E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC,IAAI;CACnB,CAAC;CAAG;AAEL,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAsB,EAAU,EAAE;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/E,CAAC,CAAC;AAEF,uFAAuF;AACvF,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAC1D,CAAC,IAAkB,EAAE,MAAc,EAAE,IAAc,EAA0C,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,mEAAmE;IACnE,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvF,CAAC,CAAC,CACL,CAAC;AAEF,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CACxE,CAAC,IAAkB,EAAE,MAAc,EAAE,IAAc,EAA0C,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,oEAAoE;IACpE,uEAAuE;IACvE,MAAM,OAAO,GAAG,eAAe,CAC7B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAC5C,QAAQ,CAAC,OAAO,CACjB,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,MAAM,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClG,CAAC,CAAC,CACL,CAAC"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../src/yaml/writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,yEAAyE;AACzE,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,wBAAwB,CAAC,CAAC;IAC7E,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IACpE,KAAK,EAAE,MAAM,CAAC,IAAI;CACnB,CAAC;CAAG;AAEL,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,OAAsB,EAAU,EAAE;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;AAC/E,CAAC,CAAC;AAEF,sGAAsG;AACtG,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAC1D,CAAC,IAAkB,EAAE,MAAc,EAAE,IAAc,EAA0C,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,mCAAmC;IACnC,OAAO,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACvF,CAAC,CAAC,CACL,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,8BAA8B,CAAC,CACxE,CAAC,IAAkB,EAAE,MAAc,EAAE,IAAc,EAA0C,EAAE,CAC7F,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,2EAA2E;IAC3E,qBAAqB;IACrB,MAAM,OAAO,GAAG,eAAe,CAC7B,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAC5C,QAAQ,CAAC,OAAO,CACjB,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,CAAC,CAAC,OAAO,CAAC;IACZ,OAAO,MAAM,QAAQ,CAAC,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC,OAAO,MAAM,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;AAClG,CAAC,CAAC,CACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usine/config",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Config file machinery for usine: parse, validate, and surgically rewrite the instance repo's files — usine.yaml, loop files, agent files.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -14,9 +14,57 @@
14
14
  "type": "module",
15
15
  "sideEffects": false,
16
16
  "exports": {
17
- ".": {
18
- "types": "./dist/index.d.ts",
19
- "default": "./dist/index.js"
17
+ "./instance-folder": {
18
+ "types": "./dist/instance-folder.d.ts",
19
+ "default": "./dist/instance-folder.js"
20
+ },
21
+ "./parser": {
22
+ "types": "./dist/parser.d.ts",
23
+ "default": "./dist/parser.js"
24
+ },
25
+ "./payload-slices": {
26
+ "types": "./dist/payload-slices.d.ts",
27
+ "default": "./dist/payload-slices.js"
28
+ },
29
+ "./selector": {
30
+ "types": "./dist/selector.d.ts",
31
+ "default": "./dist/selector.js"
32
+ },
33
+ "./yaml/writer": {
34
+ "types": "./dist/yaml/writer.d.ts",
35
+ "default": "./dist/yaml/writer.js"
36
+ },
37
+ "./file": {
38
+ "types": "./dist/file.d.ts",
39
+ "default": "./dist/file.js"
40
+ },
41
+ "./board": {
42
+ "types": "./dist/board.d.ts",
43
+ "default": "./dist/board.js"
44
+ },
45
+ "./label": {
46
+ "types": "./dist/label.d.ts",
47
+ "default": "./dist/label.js"
48
+ },
49
+ "./factory": {
50
+ "types": "./dist/factory.d.ts",
51
+ "default": "./dist/factory.js"
52
+ },
53
+ "./loop": {
54
+ "types": "./dist/loop.d.ts",
55
+ "default": "./dist/loop.js"
56
+ },
57
+ "./trigger": {
58
+ "types": "./dist/trigger.d.ts",
59
+ "default": "./dist/trigger.js"
60
+ },
61
+ "./agent": {
62
+ "types": "./dist/agent.d.ts",
63
+ "default": "./dist/agent.js"
64
+ },
65
+ "./instance": {
66
+ "types": "./dist/instance/instance.d.ts",
67
+ "default": "./dist/instance/instance.js"
20
68
  }
21
69
  },
22
70
  "publishConfig": {
@@ -24,8 +72,8 @@
24
72
  },
25
73
  "dependencies": {
26
74
  "yaml": "2.8.1",
27
- "@usine/core": "0.1.0",
28
- "@usine/expression": "0.1.0"
75
+ "@usine/core": "0.2.0",
76
+ "@usine/expression": "0.2.0"
29
77
  },
30
78
  "devDependencies": {
31
79
  "@effect/platform-node": "4.0.0-rc.111",
package/dist/index.d.ts DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * @usine/config — strict schemas, CEL-aware parsing, per-loop quarantine,
3
- * instance-folder loading, payload descriptors, and surgical YAML edits.
4
- */
5
- export * from "./instance-folder.ts";
6
- export * from "./model.ts";
7
- export * from "./parser.ts";
8
- export * from "./payload-slices.ts";
9
- export * from "./selector.ts";
10
- export * from "./yaml/writer.ts";
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
package/dist/index.js DELETED
@@ -1,11 +0,0 @@
1
- /**
2
- * @usine/config — strict schemas, CEL-aware parsing, per-loop quarantine,
3
- * instance-folder loading, payload descriptors, and surgical YAML edits.
4
- */
5
- export * from "./instance-folder.js";
6
- export * from "./model.js";
7
- export * from "./parser.js";
8
- export * from "./payload-slices.js";
9
- export * from "./selector.js";
10
- export * from "./yaml/writer.js";
11
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}