@wpkernel/pipeline 0.12.1-beta.0 → 0.12.2-beta.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 (43) hide show
  1. package/README.md +15 -0
  2. package/dist/createExtension.d.ts +4 -3
  3. package/dist/createExtension.d.ts.map +1 -1
  4. package/dist/createExtension.js +20 -11
  5. package/dist/createPipeline.d.ts +28 -188
  6. package/dist/createPipeline.d.ts.map +1 -1
  7. package/dist/createPipeline.js +81 -402
  8. package/dist/extensions/index.d.ts +3 -0
  9. package/dist/extensions/index.d.ts.map +1 -0
  10. package/dist/extensions/index.js +8 -0
  11. package/dist/extensions/official.d.ts +73 -0
  12. package/dist/extensions/official.d.ts.map +1 -0
  13. package/dist/extensions/official.js +111 -0
  14. package/dist/extensions.d.ts +6 -2
  15. package/dist/extensions.d.ts.map +1 -1
  16. package/dist/extensions.js +50 -45
  17. package/dist/index.d.ts +3 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +18 -16
  20. package/dist/internal/diagnostic-manager.d.ts +29 -0
  21. package/dist/internal/diagnostic-manager.d.ts.map +1 -0
  22. package/dist/internal/diagnostic-manager.js +94 -0
  23. package/dist/internal/diagnostic-manager.types.d.ts +70 -0
  24. package/dist/internal/diagnostic-manager.types.d.ts.map +1 -0
  25. package/dist/internal/extension-coordinator.d.ts +21 -0
  26. package/dist/internal/extension-coordinator.d.ts.map +1 -0
  27. package/dist/internal/extension-coordinator.js +55 -0
  28. package/dist/internal/extension-coordinator.types.d.ts +42 -0
  29. package/dist/internal/extension-coordinator.types.d.ts.map +1 -0
  30. package/dist/internal/helper-execution.d.ts +32 -0
  31. package/dist/internal/helper-execution.d.ts.map +1 -0
  32. package/dist/internal/helper-execution.js +37 -0
  33. package/dist/internal/pipeline-runner.d.ts +18 -0
  34. package/dist/internal/pipeline-runner.d.ts.map +1 -0
  35. package/dist/internal/pipeline-runner.js +261 -0
  36. package/dist/internal/pipeline-runner.types.d.ts +79 -0
  37. package/dist/internal/pipeline-runner.types.d.ts.map +1 -0
  38. package/dist/registration.d.ts +3 -2
  39. package/dist/registration.d.ts.map +1 -1
  40. package/dist/registration.js +38 -27
  41. package/dist/types.d.ts +14 -1
  42. package/dist/types.d.ts.map +1 -1
  43. package/package.json +8 -3
@@ -0,0 +1,111 @@
1
+ /**
2
+ * @wpkernel/pipeline
3
+ * @license EUPL-1.2
4
+ */
5
+ const e = [
6
+ {
7
+ id: "live-runner",
8
+ status: "in-development",
9
+ summary: "Provides live progress, retry orchestration, and interactive prompts powered by reporter events.",
10
+ factory: {
11
+ name: "createLivePipelineRunExtension",
12
+ slug: "live-runner",
13
+ options: {
14
+ renderer: "PipelineReporterRenderer",
15
+ retries: "{ default: number; helpers?: Record<string, number>; }",
16
+ prompts: "PromptAdapter"
17
+ }
18
+ },
19
+ behaviours: [
20
+ {
21
+ name: "Live progress renderer",
22
+ description: "Stream helper lifecycle events to a renderer so users can observe DAG execution in real time.",
23
+ reporterEvents: [
24
+ "pipeline:run:started",
25
+ "pipeline:helper:started",
26
+ "pipeline:helper:succeeded",
27
+ "pipeline:helper:failed"
28
+ ],
29
+ integrations: [
30
+ "Terminal renderers that consume structured pipeline reporter events.",
31
+ "Remote observability tools that aggregate helper lifecycle data."
32
+ ]
33
+ },
34
+ {
35
+ name: "Retry and recovery prompts",
36
+ description: "Allow helpers to declare retry policies and surface interactive prompts when failures occur.",
37
+ helperAnnotations: [
38
+ "helper.meta.retryPolicy",
39
+ "helper.meta.prompt"
40
+ ],
41
+ integrations: [
42
+ "Prompt adapters that negotiate stdin/stdout access for interactive CLIs."
43
+ ]
44
+ },
45
+ {
46
+ name: "Reporter-driven telemetry",
47
+ description: "Emit structured progress payloads so headless environments can capture telemetry without a TTY renderer.",
48
+ reporterEvents: [
49
+ "pipeline:progress:update",
50
+ "pipeline:retry:scheduled",
51
+ "pipeline:retry:completed"
52
+ ]
53
+ }
54
+ ],
55
+ pipelineTouchPoints: [
56
+ "Consumes helper-provided metadata via createHelper() options.",
57
+ "Subscribes to reporter hooks exposed on the pipeline context.",
58
+ "Registers a single extension hook through createPipelineExtension."
59
+ ],
60
+ rolloutNotes: [
61
+ "Full extension keys are constructed with the pipeline namespace constant from @wpkernel/core/contracts.",
62
+ "Initial milestone focuses on read-only telemetry to validate event semantics.",
63
+ "Interactive prompts ship once reporter transport supports stdin multiplexing.",
64
+ "Retries remain deterministic by respecting helper dependency ordering."
65
+ ]
66
+ },
67
+ {
68
+ id: "concurrency",
69
+ status: "planned",
70
+ summary: "Adds a scheduler that can run independent helper branches in parallel without violating dependency constraints.",
71
+ factory: {
72
+ name: "createDeterministicConcurrencyExtension",
73
+ slug: "concurrency",
74
+ options: {
75
+ maxConcurrency: 'number | "auto"',
76
+ groups: "Record<string, number>"
77
+ }
78
+ },
79
+ behaviours: [
80
+ {
81
+ name: "Deterministic worker pool",
82
+ description: "Implements a ready-queue executor that only schedules helpers whose dependencies have settled.",
83
+ helperAnnotations: ["helper.meta.concurrencyGroup"],
84
+ integrations: [
85
+ "Workload schedulers that expose capacity metrics or enforce rate limits."
86
+ ]
87
+ },
88
+ {
89
+ name: "Reporter integration",
90
+ description: "Propagates worker state (idle, busy, saturated) via reporter events so renderers can show resource usage.",
91
+ reporterEvents: [
92
+ "pipeline:concurrency:queue",
93
+ "pipeline:concurrency:worker-state"
94
+ ]
95
+ }
96
+ ],
97
+ pipelineTouchPoints: [
98
+ "Wraps executeHelpers() with a concurrency-aware scheduler.",
99
+ "Requires dependency graph snapshots for ready-queue calculation.",
100
+ "Extends helper registration validation to guard conflicting group caps."
101
+ ],
102
+ rolloutNotes: [
103
+ "Full extension keys are constructed with the pipeline namespace constant from @wpkernel/core/contracts.",
104
+ "Prototype with read-only metrics before enabling true parallel execution.",
105
+ "Guarantee stable helper ordering for equal-priority tasks to aid reproducibility."
106
+ ]
107
+ }
108
+ ];
109
+ export {
110
+ e as OFFICIAL_EXTENSION_BLUEPRINTS
111
+ };
@@ -1,4 +1,4 @@
1
- import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionRollbackErrorMetadata } from './types';
1
+ import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionRollbackErrorMetadata, PipelineExtensionLifecycle } from './types';
2
2
  /**
3
3
  * An extension hook entry with its unique key.
4
4
  *
@@ -6,6 +6,7 @@ import { MaybePromise, PipelineExtensionHook, PipelineExtensionHookOptions, Pipe
6
6
  */
7
7
  export interface ExtensionHookEntry<TContext, TOptions, TArtifact> {
8
8
  readonly key: string;
9
+ readonly lifecycle: PipelineExtensionLifecycle;
9
10
  readonly hook: PipelineExtensionHook<TContext, TOptions, TArtifact>;
10
11
  }
11
12
  /**
@@ -46,13 +47,14 @@ export declare function createRollbackErrorMetadata(error: unknown): PipelineExt
46
47
  * If any hook throws, automatically rolls back all previously executed hooks in reverse order.
47
48
  *
48
49
  * @param hooks - The extension hooks to run
50
+ * @param lifecycle
49
51
  * @param options - Context, options, and initial artifact
50
52
  * @param onRollbackError - Callback invoked if a rollback itself fails
51
53
  * @returns The final artifact and all hook execution results
52
54
  *
53
55
  * @internal
54
56
  */
55
- export declare function runExtensionHooks<TContext, TOptions, TArtifact>(hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[], options: PipelineExtensionHookOptions<TContext, TOptions, TArtifact>, onRollbackError: (args: RollbackErrorArgs) => void): MaybePromise<{
57
+ export declare function runExtensionHooks<TContext, TOptions, TArtifact>(hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[], lifecycle: PipelineExtensionLifecycle, options: PipelineExtensionHookOptions<TContext, TOptions, TArtifact>, onRollbackError: (args: RollbackErrorArgs) => void): MaybePromise<{
56
58
  artifact: TArtifact;
57
59
  results: ExtensionHookExecution<TContext, TOptions, TArtifact>[];
58
60
  }>;
@@ -80,4 +82,6 @@ export declare function commitExtensionResults<TContext, TOptions, TArtifact>(re
80
82
  * @internal
81
83
  */
82
84
  export declare function rollbackExtensionResults<TContext, TOptions, TArtifact>(results: readonly ExtensionHookExecution<TContext, TOptions, TArtifact>[], hooks: readonly ExtensionHookEntry<TContext, TOptions, TArtifact>[], onRollbackError: (args: RollbackErrorArgs) => void): MaybePromise<void>;
85
+ export { OFFICIAL_EXTENSION_BLUEPRINTS } from './extensions/official.js';
86
+ export type { OfficialExtensionBlueprint, ExtensionBlueprint, ExtensionBehaviour, ExtensionFactorySignature, } from './extensions/official.js';
83
87
  //# sourceMappingURL=extensions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,EACtC,MAAM,SAAS,CAAC;AAQjB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,OAAO,GACZ,sCAAsC,CAoBxC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC9D,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EACpE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;CACjE,CAAC,CAuDD;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACnE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GACvE,YAAY,CAAC,IAAI,CAAC,CAcpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACrE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACzE,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC,IAAI,CAAC,CA2BpB"}
1
+ {"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,YAAY,EACZ,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,sCAAsC,EACtC,0BAA0B,EAC1B,MAAM,SAAS,CAAC;AAQjB;;;;GAIG;AACH,MAAM,WAAW,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IAChE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC;IAC/C,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACpE;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS;IACpE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,OAAO,GACZ,sCAAsC,CAoBxC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAC9D,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,SAAS,EAAE,0BAA0B,EACrC,OAAO,EAAE,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EACpE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;CACjE,CAAC,CA8DD;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACnE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,GACvE,YAAY,CAAC,IAAI,CAAC,CAcpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACrE,OAAO,EAAE,SAAS,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACzE,KAAK,EAAE,SAAS,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EACnE,eAAe,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,GAChD,YAAY,CAAC,IAAI,CAAC,CA2BpB;AAED,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EACX,0BAA0B,EAC1B,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,0BAA0B,CAAC"}
@@ -1,78 +1,83 @@
1
- import { maybeTry as m, maybeThen as l, processSequentially as f, isPromiseLike as k } from "./async-utils.js";
1
+ import { processSequentially as l, isPromiseLike as k, maybeTry as h, maybeThen as m } from "./async-utils.js";
2
2
  /**
3
3
  * @wpkernel/pipeline
4
4
  * @license EUPL-1.2
5
5
  */
6
- function p(t) {
6
+ function x(t) {
7
7
  if (t instanceof Error) {
8
- const { name: o, message: r, stack: e } = t, n = t.cause;
8
+ const { name: n, message: o, stack: e } = t, r = t.cause;
9
9
  return {
10
- name: o,
11
- message: r,
10
+ name: n,
11
+ message: o,
12
12
  stack: e,
13
- cause: n
13
+ cause: r
14
14
  };
15
15
  }
16
16
  return typeof t == "string" ? {
17
17
  message: t
18
18
  } : {};
19
19
  }
20
- function v(t, o, r) {
21
- let e = o.artifact;
22
- const n = [], u = m(
23
- () => f(t, (s) => {
24
- const i = s.hook({
25
- context: o.context,
26
- options: o.options,
27
- artifact: e
20
+ function y(t, n, o, e) {
21
+ let r = o.artifact;
22
+ const s = [], u = t.filter(
23
+ (i) => i.lifecycle === n
24
+ ), f = {
25
+ context: o.context,
26
+ options: o.options,
27
+ lifecycle: n
28
+ }, p = h(
29
+ () => l(u, (i) => {
30
+ const c = i.hook({
31
+ ...f,
32
+ artifact: r
28
33
  });
29
- if (k(i))
30
- return Promise.resolve(i).then((a) => {
31
- a && (a.artifact !== void 0 && (e = a.artifact), n.push({
32
- hook: s,
34
+ if (k(c))
35
+ return Promise.resolve(c).then((a) => {
36
+ a && (a.artifact !== void 0 && (r = a.artifact), s.push({
37
+ hook: i,
33
38
  result: a
34
39
  }));
35
40
  });
36
- if (i)
37
- return i.artifact !== void 0 && (e = i.artifact), void n.push({
38
- hook: s,
39
- result: i
41
+ if (c)
42
+ return c.artifact !== void 0 && (r = c.artifact), void s.push({
43
+ hook: i,
44
+ result: c
40
45
  });
41
46
  }),
42
- (s) => l(
43
- h(n, t, r),
47
+ (i) => m(
48
+ d(s, u, e),
44
49
  () => {
45
- throw s;
50
+ throw i;
46
51
  }
47
52
  )
48
53
  );
49
- return l(u, () => ({ artifact: e, results: n }));
54
+ return m(p, () => ({ artifact: r, results: s }));
50
55
  }
51
- function x(t) {
52
- return f(t, (o) => {
53
- const r = o.result.commit;
54
- if (!r)
56
+ function E(t) {
57
+ return l(t, (n) => {
58
+ const o = n.result.commit;
59
+ if (!o)
55
60
  return;
56
- const e = r();
61
+ const e = o();
57
62
  if (k(e))
58
63
  return e.then(() => {
59
64
  });
60
65
  });
61
66
  }
62
- function h(t, o, r) {
63
- const e = o.map((c) => c.key), n = e;
64
- return f(
67
+ function d(t, n, o) {
68
+ const e = n.map((s) => s.key), r = e;
69
+ return l(
65
70
  [...t].reverse(),
66
- (c) => {
67
- const u = c.result.rollback;
71
+ (s) => {
72
+ const u = s.result.rollback;
68
73
  if (u)
69
- return m(
74
+ return h(
70
75
  () => u(),
71
- (s) => {
72
- r({
73
- error: s,
76
+ (f) => {
77
+ o({
78
+ error: f,
74
79
  extensionKeys: e,
75
- hookSequence: n
80
+ hookSequence: r
76
81
  });
77
82
  }
78
83
  );
@@ -81,8 +86,8 @@ function h(t, o, r) {
81
86
  );
82
87
  }
83
88
  export {
84
- x as commitExtensionResults,
85
- p as createRollbackErrorMetadata,
86
- h as rollbackExtensionResults,
87
- v as runExtensionHooks
89
+ E as commitExtensionResults,
90
+ x as createRollbackErrorMetadata,
91
+ d as rollbackExtensionResults,
92
+ y as runExtensionHooks
88
93
  };
package/dist/index.d.ts CHANGED
@@ -6,10 +6,12 @@ export { executeHelpers } from './executor';
6
6
  export type { ErrorFactory } from './error-factory';
7
7
  export { createDefaultError, createErrorFactory } from './error-factory';
8
8
  export { registerHelper, registerExtensionHook, handleExtensionRegisterResult, } from './registration';
9
- export type { Pipeline, CreatePipelineOptions, PipelineReporter, PipelineExtension, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineDiagnostic, ConflictDiagnostic, MissingDependencyDiagnostic, UnusedHelperDiagnostic, Helper, HelperApplyFn, HelperDescriptor, HelperKind, HelperMode, CreateHelperOptions, HelperApplyOptions, MaybePromise, PipelineStep, PipelineRunState, HelperExecutionSnapshot, PipelineExecutionMetadata, FragmentFinalizationMetadata, PipelineExtensionRollbackErrorMetadata, } from './types';
9
+ export type { Pipeline, CreatePipelineOptions, PipelineReporter, PipelineExtension, PipelineExtensionHook, PipelineExtensionHookOptions, PipelineExtensionHookResult, PipelineExtensionLifecycle, PipelineExtensionHookRegistration, PipelineExtensionRegisterOutput, PipelineDiagnostic, ConflictDiagnostic, MissingDependencyDiagnostic, UnusedHelperDiagnostic, Helper, HelperApplyFn, HelperDescriptor, HelperKind, HelperMode, CreateHelperOptions, HelperApplyOptions, MaybePromise, PipelineStep, PipelineRunState, HelperExecutionSnapshot, PipelineExecutionMetadata, FragmentFinalizationMetadata, PipelineExtensionRollbackErrorMetadata, } from './types';
10
10
  export type { RegisteredHelper, MissingDependencyIssue, } from './dependency-graph';
11
11
  export { createHelperId, compareHelpers } from './dependency-graph';
12
12
  export { isPromiseLike, maybeThen, maybeTry, processSequentially, } from './async-utils';
13
13
  export type { ExtensionHookEntry, ExtensionHookExecution, RollbackErrorArgs, } from './extensions';
14
14
  export { createRollbackErrorMetadata } from './extensions';
15
+ export { OFFICIAL_EXTENSION_BLUEPRINTS } from './extensions/official';
16
+ export type { OfficialExtensionBlueprint } from './extensions/official';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAEX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EAGtB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAGlB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,YAAY,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACN,cAAc,EACd,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAEX,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,0BAA0B,EAC1B,iCAAiC,EACjC,+BAA+B,EAC/B,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,sBAAsB,EAGtB,MAAM,EACN,aAAa,EACb,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAGlB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAC5B,sCAAsC,GACtC,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,gBAAgB,EAChB,sBAAsB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,EACN,aAAa,EACb,SAAS,EACT,QAAQ,EACR,mBAAmB,GACnB,MAAM,eAAe,CAAC;AAGvB,YAAY,EACX,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG3D,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,31 +1,33 @@
1
1
  import { createHelper as o } from "./helper.js";
2
- import { createPipeline as a } from "./createPipeline.js";
2
+ import { createPipeline as p } from "./createPipeline.js";
3
3
  import { createPipelineExtension as i } from "./createExtension.js";
4
4
  import { executeHelpers as m } from "./executor.js";
5
- import { createDefaultError as x, createErrorFactory as c } from "./error-factory.js";
6
- import { handleExtensionRegisterResult as f, registerExtensionHook as E, registerHelper as H } from "./registration.js";
7
- import { compareHelpers as u, createHelperId as b } from "./dependency-graph.js";
8
- import { isPromiseLike as g, maybeThen as k, maybeTry as P, processSequentially as R } from "./async-utils.js";
9
- import { createRollbackErrorMetadata as T } from "./extensions.js";
5
+ import { createDefaultError as s, createErrorFactory as c } from "./error-factory.js";
6
+ import { handleExtensionRegisterResult as n, registerExtensionHook as E, registerHelper as H } from "./registration.js";
7
+ import { compareHelpers as I, createHelperId as u } from "./dependency-graph.js";
8
+ import { isPromiseLike as R, maybeThen as T, maybeTry as b, processSequentially as d } from "./async-utils.js";
9
+ import { createRollbackErrorMetadata as k } from "./extensions.js";
10
+ import { OFFICIAL_EXTENSION_BLUEPRINTS as L } from "./extensions/official.js";
10
11
  /**
11
12
  * @wpkernel/pipeline
12
13
  * @license EUPL-1.2
13
14
  */
14
15
  export {
15
- u as compareHelpers,
16
- x as createDefaultError,
16
+ L as OFFICIAL_EXTENSION_BLUEPRINTS,
17
+ I as compareHelpers,
18
+ s as createDefaultError,
17
19
  c as createErrorFactory,
18
20
  o as createHelper,
19
- b as createHelperId,
20
- a as createPipeline,
21
+ u as createHelperId,
22
+ p as createPipeline,
21
23
  i as createPipelineExtension,
22
- T as createRollbackErrorMetadata,
24
+ k as createRollbackErrorMetadata,
23
25
  m as executeHelpers,
24
- f as handleExtensionRegisterResult,
25
- g as isPromiseLike,
26
- k as maybeThen,
27
- P as maybeTry,
28
- R as processSequentially,
26
+ n as handleExtensionRegisterResult,
27
+ R as isPromiseLike,
28
+ T as maybeThen,
29
+ b as maybeTry,
30
+ d as processSequentially,
29
31
  E as registerExtensionHook,
30
32
  H as registerHelper
31
33
  };
@@ -0,0 +1,29 @@
1
+ import { DiagnosticManager, DiagnosticManagerInitConfig } from './diagnostic-manager.types';
2
+ import { Helper, HelperKind, PipelineDiagnostic, PipelineReporter } from '../types';
3
+ /**
4
+ * Creates a diagnostic manager instance scoped to a pipeline.
5
+ *
6
+ * The manager collects helper registration conflicts, missing dependencies, unused helper
7
+ * notifications, and runtime diagnostics. It stores them until the reporter becomes available and
8
+ * replays the backlog immediately when one is provided. This keeps `createPipeline` focused on the
9
+ * high-level orchestration while the manager owns stateful bookkeeping concerns.
10
+ *
11
+ * @param params
12
+ * @example
13
+ * ```ts
14
+ * const manager = initDiagnosticManager({
15
+ * options,
16
+ * fragmentKind: 'fragment',
17
+ * builderKind: 'builder',
18
+ * });
19
+ * manager.flagUnusedHelper(helper, 'fragment', 'not executed', []);
20
+ * manager.record({ type: 'conflict', key: 'demo', mode: 'extend', helpers: [], message: '' });
21
+ * ```
22
+ *
23
+ * @category Pipeline
24
+ * @internal
25
+ */
26
+ export declare function initDiagnosticManager<TRunOptions, TBuildOptions, TContext extends {
27
+ reporter: TReporter;
28
+ }, TReporter extends PipelineReporter, TDraft, TArtifact, TDiagnostic extends PipelineDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind extends HelperKind, TBuilderKind extends HelperKind, TFragmentHelper extends Helper<TContext, TFragmentInput, TFragmentOutput, TReporter, TFragmentKind>, TBuilderHelper extends Helper<TContext, TBuilderInput, TBuilderOutput, TReporter, TBuilderKind>>(params: DiagnosticManagerInitConfig<TRunOptions, TBuildOptions, TContext, TReporter, TDraft, TArtifact, TDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind, TBuilderKind, TFragmentHelper, TBuilderHelper>): DiagnosticManager<TRunOptions, TBuildOptions, TContext, TReporter, TDraft, TArtifact, TDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind, TBuilderKind, TFragmentHelper, TBuilderHelper>;
29
+ //# sourceMappingURL=diagnostic-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-manager.d.ts","sourceRoot":"","sources":["../../src/internal/diagnostic-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,2BAA2B,EAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EACX,MAAM,EAEN,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CACpC,WAAW,EACX,aAAa,EACb,QAAQ,SAAS;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,EACxC,SAAS,SAAS,gBAAgB,EAClC,MAAM,EACN,SAAS,EACT,WAAW,SAAS,kBAAkB,EACtC,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,SAAS,UAAU,EAChC,YAAY,SAAS,UAAU,EAC/B,eAAe,SAAS,MAAM,CAC7B,QAAQ,EACR,cAAc,EACd,eAAe,EACf,SAAS,EACT,aAAa,CACb,EACD,cAAc,SAAS,MAAM,CAC5B,QAAQ,EACR,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,CACZ,EAED,MAAM,EAAE,2BAA2B,CAClC,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,CACd,GACC,iBAAiB,CACnB,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,MAAM,EACN,SAAS,EACT,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,eAAe,EACf,cAAc,CACd,CA6LA"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * @wpkernel/pipeline
3
+ * @license EUPL-1.2
4
+ */
5
+ function w(i) {
6
+ const g = [], a = /* @__PURE__ */ new WeakMap();
7
+ let s;
8
+ const d = (e, n) => e === i.fragmentKind ? `Fragment helper "${n.key}"` : e === i.builderKind ? `Builder helper "${n.key}"` : `Helper "${n.key}"`, u = (e) => {
9
+ if (!s || !i.options.onDiagnostic)
10
+ return;
11
+ const n = a.get(s);
12
+ if (n?.has(e))
13
+ return;
14
+ const t = n ?? /* @__PURE__ */ new Set();
15
+ i.options.onDiagnostic({
16
+ reporter: s,
17
+ diagnostic: e
18
+ }), t.add(e), n || a.set(s, t);
19
+ }, c = (e) => {
20
+ g.push(e), u(e);
21
+ }, y = (e, n, t, o) => {
22
+ const r = i.options.createConflictDiagnostic?.({
23
+ helper: e,
24
+ existing: n,
25
+ message: o
26
+ }) ?? {
27
+ type: "conflict",
28
+ key: e.key,
29
+ mode: e.mode,
30
+ helpers: [
31
+ n.origin ?? n.key,
32
+ e.origin ?? e.key
33
+ ],
34
+ message: o,
35
+ kind: t
36
+ };
37
+ c(r);
38
+ }, p = (e, n, t) => {
39
+ const o = `${d(
40
+ t,
41
+ e
42
+ )} depends on unknown helper "${n}".`, r = i.options.createMissingDependencyDiagnostic?.({
43
+ helper: e,
44
+ dependency: n,
45
+ message: o
46
+ }) ?? {
47
+ type: "missing-dependency",
48
+ key: e.key,
49
+ dependency: n,
50
+ message: o,
51
+ kind: t,
52
+ helper: e.origin ?? e.key
53
+ };
54
+ c(r);
55
+ }, f = (e, n, t, o) => {
56
+ const r = `${d(n, e)} ${t}.`, k = i.options.createUnusedHelperDiagnostic?.({
57
+ helper: e,
58
+ message: r
59
+ }) ?? {
60
+ type: "unused-helper",
61
+ key: e.key,
62
+ message: r,
63
+ kind: n,
64
+ helper: e.origin ?? e.key,
65
+ dependsOn: o
66
+ };
67
+ c(k);
68
+ };
69
+ return {
70
+ describeHelper: d,
71
+ flagConflict: y,
72
+ flagMissingDependency: p,
73
+ flagUnusedHelper: f,
74
+ reviewUnusedHelpers: (e, n, t) => {
75
+ for (const o of e)
76
+ n.has(o.id) || f(
77
+ o.helper,
78
+ t,
79
+ "was registered but never executed",
80
+ o.helper.dependsOn
81
+ );
82
+ },
83
+ setReporter: (e) => {
84
+ if (s = e, !!s)
85
+ for (const n of g)
86
+ u(n);
87
+ },
88
+ record: c,
89
+ readDiagnostics: () => g
90
+ };
91
+ }
92
+ export {
93
+ w as initDiagnosticManager
94
+ };
@@ -0,0 +1,70 @@
1
+ import { RegisteredHelper } from '../dependency-graph';
2
+ import { CreatePipelineOptions, Helper, HelperDescriptor, HelperKind, PipelineDiagnostic, PipelineReporter } from '../types';
3
+ /**
4
+ * Shared structural contract for the diagnostic subsystem used by {@link createPipeline}.
5
+ *
6
+ * The `DiagnosticManager` is intentionally generic so that downstream pipelines can customise
7
+ * context, helper kinds, artifact shapes, and reporter implementations without leaking internal
8
+ * types. All implementations produced by {@link initDiagnosticManager} honour this interface.
9
+ *
10
+ * @template TRunOptions - Options accepted by `pipeline.run()`
11
+ * @template TBuildOptions - Options produced by `createBuildOptions`
12
+ * @template TContext - Pipeline execution context, including the reporter instance
13
+ * @template TReporter - Reporter type used to publish diagnostics
14
+ * @template TDraft - Fragment draft produced before builders execute
15
+ * @template TArtifact - Final artifact emitted by the pipeline
16
+ * @template TDiagnostic - Diagnostic entry recorded during execution
17
+ * @template TRunResult - Result returned by `pipeline.run()`
18
+ * @template TFragmentInput - Input passed to fragment helpers
19
+ * @template TFragmentOutput - Output produced by fragment helpers
20
+ * @template TBuilderInput - Input passed to builder helpers
21
+ * @template TBuilderOutput - Output produced by builder helpers
22
+ * @template TFragmentKind - Helper kind identifier for fragment helpers
23
+ * @template TBuilderKind - Helper kind identifier for builder helpers
24
+ * @template TFragmentHelper - Helper implementation registered in the fragment stage
25
+ * @template TBuilderHelper - Helper implementation registered in the builder stage
26
+ *
27
+ * @category Pipeline
28
+ * @internal
29
+ */
30
+ export interface DiagnosticManager<TRunOptions, TBuildOptions, TContext extends {
31
+ reporter: TReporter;
32
+ }, TReporter extends PipelineReporter, TDraft, TArtifact, TDiagnostic extends PipelineDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind extends HelperKind, TBuilderKind extends HelperKind, TFragmentHelper extends Helper<TContext, TFragmentInput, TFragmentOutput, TReporter, TFragmentKind>, TBuilderHelper extends Helper<TContext, TBuilderInput, TBuilderOutput, TReporter, TBuilderKind>> {
33
+ readonly describeHelper: (kind: HelperKind, helper: HelperDescriptor) => string;
34
+ readonly flagConflict: (helper: HelperDescriptor, existing: HelperDescriptor, kind: HelperKind, message: string) => void;
35
+ readonly flagMissingDependency: (helper: HelperDescriptor, dependency: string, kind: HelperKind) => void;
36
+ readonly flagUnusedHelper: (helper: HelperDescriptor, kind: HelperKind, reason: string, dependsOn: readonly string[]) => void;
37
+ readonly reviewUnusedHelpers: <THelper extends HelperDescriptor>(entries: RegisteredHelper<THelper>[], visited: Set<string>, kind: HelperKind) => void;
38
+ readonly setReporter: (reporter: TReporter | undefined) => void;
39
+ readonly record: (diagnostic: TDiagnostic) => void;
40
+ readonly readDiagnostics: () => readonly TDiagnostic[];
41
+ readonly __types?: {
42
+ readonly runOptions: TRunOptions;
43
+ readonly buildOptions: TBuildOptions;
44
+ readonly draft: TDraft;
45
+ readonly artifact: TArtifact;
46
+ readonly runResult: TRunResult;
47
+ readonly fragmentInput: TFragmentInput;
48
+ readonly fragmentOutput: TFragmentOutput;
49
+ readonly builderInput: TBuilderInput;
50
+ readonly builderOutput: TBuilderOutput;
51
+ readonly fragmentHelper: TFragmentHelper;
52
+ readonly builderHelper: TBuilderHelper;
53
+ };
54
+ }
55
+ /**
56
+ * Configuration object consumed by {@link initDiagnosticManager}. Splitting the type from the
57
+ * implementation keeps the orchestration module lightweight while enabling re-use in tests.
58
+ *
59
+ * @category Pipeline
60
+ * @internal
61
+ */
62
+ export interface DiagnosticManagerInitConfig<TRunOptions, TBuildOptions, TContext extends {
63
+ reporter: TReporter;
64
+ }, TReporter extends PipelineReporter, TDraft, TArtifact, TDiagnostic extends PipelineDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind extends HelperKind, TBuilderKind extends HelperKind, TFragmentHelper extends Helper<TContext, TFragmentInput, TFragmentOutput, TReporter, TFragmentKind>, TBuilderHelper extends Helper<TContext, TBuilderInput, TBuilderOutput, TReporter, TBuilderKind>> {
65
+ readonly options: CreatePipelineOptions<TRunOptions, TBuildOptions, TContext, TReporter, TDraft, TArtifact, TDiagnostic, TRunResult, TFragmentInput, TFragmentOutput, TBuilderInput, TBuilderOutput, TFragmentKind, TBuilderKind, TFragmentHelper, TBuilderHelper>;
66
+ readonly fragmentKind: TFragmentKind;
67
+ readonly builderKind: TBuilderKind;
68
+ }
69
+ export type { ErrorFactory } from '../error-factory';
70
+ //# sourceMappingURL=diagnostic-manager.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-manager.types.d.ts","sourceRoot":"","sources":["../../src/internal/diagnostic-manager.types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { ExtensionCoordinator, ExtensionRollbackEvent } from './extension-coordinator.types';
2
+ /**
3
+ * Builds an {@link ExtensionCoordinator} tailored to the provided rollback handler.
4
+ *
5
+ * @param onRollbackError
6
+ * @example
7
+ * ```ts
8
+ * const coordinator = initExtensionCoordinator(({ error }) => console.warn(error));
9
+ * const state = await coordinator.runLifecycle('after-fragments', {
10
+ * hooks,
11
+ * options: hookOptions,
12
+ * });
13
+ * await coordinator.commit(state);
14
+ * ```
15
+ *
16
+ * @category Pipeline
17
+ * @internal
18
+ */
19
+ export declare function initExtensionCoordinator<TContext, TOptions, TArtifact>(onRollbackError: (event: ExtensionRollbackEvent<TContext, TOptions, TArtifact>) => void): ExtensionCoordinator<TContext, TOptions, TArtifact>;
20
+ export type { ExtensionLifecycleState, ExtensionHookEntry, } from './extension-coordinator.types';
21
+ //# sourceMappingURL=extension-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-coordinator.d.ts","sourceRoot":"","sources":["../../src/internal/extension-coordinator.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACX,oBAAoB,EAEpB,sBAAsB,EACtB,MAAM,+BAA+B,CAAC;AAGvC;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EACrE,eAAe,EAAE,CAChB,KAAK,EAAE,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,KACxD,IAAI,GACP,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CA+ErD;AAED,YAAY,EACX,uBAAuB,EACvB,kBAAkB,GAClB,MAAM,+BAA+B,CAAC"}