@ontrails/core 1.0.0-beta.14 → 1.0.0-beta.16

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 (314) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/README.md +73 -24
  3. package/package.json +11 -4
  4. package/src/activation-provenance.ts +111 -0
  5. package/src/activation-source-compatibility.ts +430 -0
  6. package/src/activation-source-projection.ts +221 -0
  7. package/src/activation-source.ts +91 -0
  8. package/src/blob-ref.ts +51 -0
  9. package/src/branded.ts +1 -1
  10. package/src/context.ts +28 -4
  11. package/src/contour.ts +344 -0
  12. package/src/cross-batch.ts +69 -0
  13. package/src/cross-schema.ts +36 -0
  14. package/src/detours.ts +8 -0
  15. package/src/draft.ts +60 -52
  16. package/src/error-projection.ts +51 -0
  17. package/src/errors.ts +245 -48
  18. package/src/execute.ts +1250 -40
  19. package/src/fire.ts +1169 -0
  20. package/src/index.ts +383 -49
  21. package/src/internal/fork-ctx.ts +69 -0
  22. package/src/layer-projection.ts +192 -0
  23. package/src/layer.ts +81 -0
  24. package/src/observe.ts +361 -0
  25. package/src/path-security.ts +1 -1
  26. package/src/permits.ts +12 -0
  27. package/src/redaction/patterns.ts +6 -3
  28. package/src/resilience.ts +11 -11
  29. package/src/resource-config.ts +792 -0
  30. package/src/resource.ts +175 -0
  31. package/src/result.ts +18 -0
  32. package/src/run.ts +7 -6
  33. package/src/schedule-runtime.ts +689 -0
  34. package/src/schedule.ts +324 -0
  35. package/src/serialization.ts +90 -55
  36. package/src/signal-diagnostics.ts +633 -0
  37. package/src/signal-ref.ts +87 -0
  38. package/src/signal.ts +37 -0
  39. package/src/store/accessor-protocol.ts +56 -0
  40. package/src/store/index.ts +4 -0
  41. package/src/structured-examples.ts +245 -0
  42. package/src/surface-derivation.ts +91 -0
  43. package/src/surface-filter.ts +176 -0
  44. package/src/topo.ts +710 -59
  45. package/src/tracing.ts +345 -0
  46. package/src/trail.ts +347 -33
  47. package/src/trails/derive-trail.ts +842 -0
  48. package/src/trails/index.ts +9 -0
  49. package/src/trails/ingest.ts +138 -0
  50. package/src/{internal/trails-db.ts → trails-db.ts} +50 -31
  51. package/src/transport-error-map.ts +174 -0
  52. package/src/type-utils.ts +17 -2
  53. package/src/types.ts +208 -17
  54. package/src/validate-established-topo.ts +8 -2
  55. package/src/validate-topo.ts +244 -13
  56. package/src/validation.ts +58 -1
  57. package/src/webhook.ts +276 -0
  58. package/src/workspace.ts +1 -1
  59. package/src/zod-wrappers.ts +72 -0
  60. package/.turbo/turbo-build.log +0 -1
  61. package/.turbo/turbo-lint.log +0 -3
  62. package/.turbo/turbo-typecheck.log +0 -1
  63. package/dist/adapters.d.ts +0 -39
  64. package/dist/adapters.d.ts.map +0 -1
  65. package/dist/adapters.js +0 -2
  66. package/dist/adapters.js.map +0 -1
  67. package/dist/blob-ref.d.ts +0 -20
  68. package/dist/blob-ref.d.ts.map +0 -1
  69. package/dist/blob-ref.js +0 -22
  70. package/dist/blob-ref.js.map +0 -1
  71. package/dist/branded.d.ts +0 -36
  72. package/dist/branded.d.ts.map +0 -1
  73. package/dist/branded.js +0 -89
  74. package/dist/branded.js.map +0 -1
  75. package/dist/collections.d.ts +0 -31
  76. package/dist/collections.d.ts.map +0 -1
  77. package/dist/collections.js +0 -60
  78. package/dist/collections.js.map +0 -1
  79. package/dist/context.d.ts +0 -10
  80. package/dist/context.d.ts.map +0 -1
  81. package/dist/context.js +0 -21
  82. package/dist/context.js.map +0 -1
  83. package/dist/derive.d.ts +0 -44
  84. package/dist/derive.d.ts.map +0 -1
  85. package/dist/derive.js +0 -149
  86. package/dist/derive.js.map +0 -1
  87. package/dist/dispatch.d.ts +0 -27
  88. package/dist/dispatch.d.ts.map +0 -1
  89. package/dist/dispatch.js +0 -34
  90. package/dist/dispatch.js.map +0 -1
  91. package/dist/draft.d.ts +0 -28
  92. package/dist/draft.d.ts.map +0 -1
  93. package/dist/draft.js +0 -156
  94. package/dist/draft.js.map +0 -1
  95. package/dist/errors.d.ts +0 -83
  96. package/dist/errors.d.ts.map +0 -1
  97. package/dist/errors.js +0 -142
  98. package/dist/errors.js.map +0 -1
  99. package/dist/event.d.ts +0 -8
  100. package/dist/event.d.ts.map +0 -1
  101. package/dist/event.js +0 -7
  102. package/dist/event.js.map +0 -1
  103. package/dist/execute.d.ts +0 -35
  104. package/dist/execute.d.ts.map +0 -1
  105. package/dist/execute.js +0 -90
  106. package/dist/execute.js.map +0 -1
  107. package/dist/fetch.d.ts +0 -15
  108. package/dist/fetch.d.ts.map +0 -1
  109. package/dist/fetch.js +0 -102
  110. package/dist/fetch.js.map +0 -1
  111. package/dist/gate.d.ts +0 -17
  112. package/dist/gate.d.ts.map +0 -1
  113. package/dist/gate.js +0 -21
  114. package/dist/gate.js.map +0 -1
  115. package/dist/guards.d.ts +0 -17
  116. package/dist/guards.d.ts.map +0 -1
  117. package/dist/guards.js +0 -25
  118. package/dist/guards.js.map +0 -1
  119. package/dist/health.d.ts +0 -18
  120. package/dist/health.d.ts.map +0 -1
  121. package/dist/health.js +0 -5
  122. package/dist/health.js.map +0 -1
  123. package/dist/index.d.ts +0 -48
  124. package/dist/index.d.ts.map +0 -1
  125. package/dist/index.js +0 -51
  126. package/dist/index.js.map +0 -1
  127. package/dist/internal/topo-saves.d.ts +0 -47
  128. package/dist/internal/topo-saves.d.ts.map +0 -1
  129. package/dist/internal/topo-saves.js +0 -310
  130. package/dist/internal/topo-saves.js.map +0 -1
  131. package/dist/internal/topo-store-read.d.ts +0 -67
  132. package/dist/internal/topo-store-read.d.ts.map +0 -1
  133. package/dist/internal/topo-store-read.js +0 -222
  134. package/dist/internal/topo-store-read.js.map +0 -1
  135. package/dist/internal/topo-store.d.ts +0 -12
  136. package/dist/internal/topo-store.d.ts.map +0 -1
  137. package/dist/internal/topo-store.js +0 -571
  138. package/dist/internal/topo-store.js.map +0 -1
  139. package/dist/internal/trails-db.d.ts +0 -16
  140. package/dist/internal/trails-db.d.ts.map +0 -1
  141. package/dist/internal/trails-db.js +0 -118
  142. package/dist/internal/trails-db.js.map +0 -1
  143. package/dist/job.d.ts +0 -24
  144. package/dist/job.d.ts.map +0 -1
  145. package/dist/job.js +0 -17
  146. package/dist/job.js.map +0 -1
  147. package/dist/layer.d.ts +0 -6
  148. package/dist/layer.d.ts.map +0 -1
  149. package/dist/layer.js +0 -4
  150. package/dist/layer.js.map +0 -1
  151. package/dist/path-security.d.ts +0 -28
  152. package/dist/path-security.d.ts.map +0 -1
  153. package/dist/path-security.js +0 -63
  154. package/dist/path-security.js.map +0 -1
  155. package/dist/patterns/bulk.d.ts +0 -15
  156. package/dist/patterns/bulk.d.ts.map +0 -1
  157. package/dist/patterns/bulk.js +0 -14
  158. package/dist/patterns/bulk.js.map +0 -1
  159. package/dist/patterns/change.d.ts +0 -10
  160. package/dist/patterns/change.d.ts.map +0 -1
  161. package/dist/patterns/change.js +0 -10
  162. package/dist/patterns/change.js.map +0 -1
  163. package/dist/patterns/date-range.d.ts +0 -10
  164. package/dist/patterns/date-range.d.ts.map +0 -1
  165. package/dist/patterns/date-range.js +0 -10
  166. package/dist/patterns/date-range.js.map +0 -1
  167. package/dist/patterns/index.d.ts +0 -9
  168. package/dist/patterns/index.d.ts.map +0 -1
  169. package/dist/patterns/index.js +0 -9
  170. package/dist/patterns/index.js.map +0 -1
  171. package/dist/patterns/pagination.d.ts +0 -18
  172. package/dist/patterns/pagination.d.ts.map +0 -1
  173. package/dist/patterns/pagination.js +0 -18
  174. package/dist/patterns/pagination.js.map +0 -1
  175. package/dist/patterns/progress.d.ts +0 -11
  176. package/dist/patterns/progress.d.ts.map +0 -1
  177. package/dist/patterns/progress.js +0 -11
  178. package/dist/patterns/progress.js.map +0 -1
  179. package/dist/patterns/sorting.d.ts +0 -13
  180. package/dist/patterns/sorting.d.ts.map +0 -1
  181. package/dist/patterns/sorting.js +0 -10
  182. package/dist/patterns/sorting.js.map +0 -1
  183. package/dist/patterns/status.d.ts +0 -15
  184. package/dist/patterns/status.d.ts.map +0 -1
  185. package/dist/patterns/status.js +0 -9
  186. package/dist/patterns/status.js.map +0 -1
  187. package/dist/patterns/timestamps.d.ts +0 -10
  188. package/dist/patterns/timestamps.d.ts.map +0 -1
  189. package/dist/patterns/timestamps.js +0 -10
  190. package/dist/patterns/timestamps.js.map +0 -1
  191. package/dist/provision-config.d.ts +0 -22
  192. package/dist/provision-config.d.ts.map +0 -1
  193. package/dist/provision-config.js +0 -210
  194. package/dist/provision-config.js.map +0 -1
  195. package/dist/provision.d.ts +0 -71
  196. package/dist/provision.d.ts.map +0 -1
  197. package/dist/provision.js +0 -56
  198. package/dist/provision.js.map +0 -1
  199. package/dist/redaction/index.d.ts +0 -4
  200. package/dist/redaction/index.d.ts.map +0 -1
  201. package/dist/redaction/index.js +0 -3
  202. package/dist/redaction/index.js.map +0 -1
  203. package/dist/redaction/patterns.d.ts +0 -9
  204. package/dist/redaction/patterns.d.ts.map +0 -1
  205. package/dist/redaction/patterns.js +0 -39
  206. package/dist/redaction/patterns.js.map +0 -1
  207. package/dist/redaction/redactor.d.ts +0 -27
  208. package/dist/redaction/redactor.d.ts.map +0 -1
  209. package/dist/redaction/redactor.js +0 -89
  210. package/dist/redaction/redactor.js.map +0 -1
  211. package/dist/resilience.d.ts +0 -34
  212. package/dist/resilience.d.ts.map +0 -1
  213. package/dist/resilience.js +0 -164
  214. package/dist/resilience.js.map +0 -1
  215. package/dist/result.d.ts +0 -57
  216. package/dist/result.d.ts.map +0 -1
  217. package/dist/result.js +0 -156
  218. package/dist/result.js.map +0 -1
  219. package/dist/run.d.ts +0 -27
  220. package/dist/run.d.ts.map +0 -1
  221. package/dist/run.js +0 -34
  222. package/dist/run.js.map +0 -1
  223. package/dist/serialization.d.ts +0 -27
  224. package/dist/serialization.d.ts.map +0 -1
  225. package/dist/serialization.js +0 -153
  226. package/dist/serialization.js.map +0 -1
  227. package/dist/service-config.d.ts +0 -22
  228. package/dist/service-config.d.ts.map +0 -1
  229. package/dist/service-config.js +0 -210
  230. package/dist/service-config.js.map +0 -1
  231. package/dist/service.d.ts +0 -71
  232. package/dist/service.d.ts.map +0 -1
  233. package/dist/service.js +0 -56
  234. package/dist/service.js.map +0 -1
  235. package/dist/signal.d.ts +0 -33
  236. package/dist/signal.d.ts.map +0 -1
  237. package/dist/signal.js +0 -17
  238. package/dist/signal.js.map +0 -1
  239. package/dist/topo-store.d.ts +0 -48
  240. package/dist/topo-store.d.ts.map +0 -1
  241. package/dist/topo-store.js +0 -175
  242. package/dist/topo-store.js.map +0 -1
  243. package/dist/topo.d.ts +0 -25
  244. package/dist/topo.d.ts.map +0 -1
  245. package/dist/topo.js +0 -112
  246. package/dist/topo.js.map +0 -1
  247. package/dist/trail.d.ts +0 -96
  248. package/dist/trail.d.ts.map +0 -1
  249. package/dist/trail.js +0 -20
  250. package/dist/trail.js.map +0 -1
  251. package/dist/type-utils.d.ts +0 -24
  252. package/dist/type-utils.d.ts.map +0 -1
  253. package/dist/type-utils.js +0 -12
  254. package/dist/type-utils.js.map +0 -1
  255. package/dist/types.d.ts +0 -71
  256. package/dist/types.d.ts.map +0 -1
  257. package/dist/types.js +0 -3
  258. package/dist/types.js.map +0 -1
  259. package/dist/validate-established-topo.d.ts +0 -76
  260. package/dist/validate-established-topo.d.ts.map +0 -1
  261. package/dist/validate-established-topo.js +0 -43
  262. package/dist/validate-established-topo.js.map +0 -1
  263. package/dist/validate-topo.d.ts +0 -24
  264. package/dist/validate-topo.d.ts.map +0 -1
  265. package/dist/validate-topo.js +0 -176
  266. package/dist/validate-topo.js.map +0 -1
  267. package/dist/validation.d.ts +0 -27
  268. package/dist/validation.d.ts.map +0 -1
  269. package/dist/validation.js +0 -165
  270. package/dist/validation.js.map +0 -1
  271. package/dist/workspace.d.ts +0 -25
  272. package/dist/workspace.d.ts.map +0 -1
  273. package/dist/workspace.js +0 -57
  274. package/dist/workspace.js.map +0 -1
  275. package/src/__tests__/blob-ref.test.ts +0 -103
  276. package/src/__tests__/branded.test.ts +0 -148
  277. package/src/__tests__/collections.test.ts +0 -126
  278. package/src/__tests__/context.test.ts +0 -77
  279. package/src/__tests__/derive.test.ts +0 -260
  280. package/src/__tests__/errors.test.ts +0 -309
  281. package/src/__tests__/execute.test.ts +0 -525
  282. package/src/__tests__/fetch.test.ts +0 -217
  283. package/src/__tests__/gate.test.ts +0 -125
  284. package/src/__tests__/guards.test.ts +0 -102
  285. package/src/__tests__/path-security.test.ts +0 -114
  286. package/src/__tests__/patterns.test.ts +0 -273
  287. package/src/__tests__/redaction.test.ts +0 -244
  288. package/src/__tests__/resilience.test.ts +0 -246
  289. package/src/__tests__/result.test.ts +0 -155
  290. package/src/__tests__/run.test.ts +0 -181
  291. package/src/__tests__/serialization.test.ts +0 -401
  292. package/src/__tests__/service-config.test.ts +0 -228
  293. package/src/__tests__/service.test.ts +0 -197
  294. package/src/__tests__/signal.test.ts +0 -82
  295. package/src/__tests__/topo-store-read.test.ts +0 -251
  296. package/src/__tests__/topo-store.test.ts +0 -469
  297. package/src/__tests__/topo.test.ts +0 -277
  298. package/src/__tests__/trail-permit.test.ts +0 -60
  299. package/src/__tests__/trail.test.ts +0 -261
  300. package/src/__tests__/trails-db.test.ts +0 -191
  301. package/src/__tests__/type-utils.test.ts +0 -90
  302. package/src/__tests__/validate-topo.test.ts +0 -489
  303. package/src/__tests__/validation.test.ts +0 -336
  304. package/src/__tests__/workspace.test.ts +0 -183
  305. package/src/event.ts +0 -15
  306. package/src/gate.ts +0 -44
  307. package/src/internal/topo-saves.ts +0 -429
  308. package/src/internal/topo-store-read.ts +0 -473
  309. package/src/internal/topo-store.ts +0 -1087
  310. package/src/provision-config.ts +0 -373
  311. package/src/provision.ts +0 -148
  312. package/src/topo-store.ts +0 -301
  313. package/tsconfig.json +0 -9
  314. package/tsconfig.tsbuildinfo +0 -1
@@ -1,76 +0,0 @@
1
- import { ValidationError } from './errors.js';
2
- import { Result } from './result.js';
3
- import type { Topo } from './topo.js';
4
- /**
5
- * Validate that a topo is ready for established outputs.
6
- *
7
- * Established surfaces still require the authored graph to be structurally
8
- * valid, and they must also reject any remaining draft state.
9
- */
10
- export declare const validateEstablishedTopo: (topo: Topo) => {
11
- readonly error: ValidationError;
12
- isOk(): this is {
13
- readonly value: never;
14
- isOk(): this is /*elided*/ any;
15
- isErr(): this is /*elided*/ any;
16
- map<U>(fn: (value: never) => U): Result<U, ValidationError>;
17
- flatMap<U, F = ValidationError>(fn: (value: never) => Result<U, F>): Result<U, ValidationError | F>;
18
- mapErr<F>(_fn: (error: ValidationError) => F): Result<never, F>;
19
- match<U>(handlers: {
20
- ok: (value: never) => U;
21
- err: (error: ValidationError) => U;
22
- }): U;
23
- unwrap(): never;
24
- unwrapOr(_fallback: never): never;
25
- };
26
- isErr(): this is /*elided*/ any;
27
- map<U>(_fn: (value: never) => U): Result<U, ValidationError>;
28
- flatMap<U, F = ValidationError>(_fn: (value: never) => Result<U, F>): Result<U, ValidationError | F>;
29
- mapErr<F>(fn: (error: ValidationError) => F): Result<never, F>;
30
- match<U>(handlers: {
31
- ok: (value: never) => U;
32
- err: (error: ValidationError) => U;
33
- }): U;
34
- unwrap(): never;
35
- unwrapOr<T>(fallback: T): T;
36
- } | {
37
- readonly value: void;
38
- isOk(): this is /*elided*/ any;
39
- isErr(): this is {
40
- readonly error: never;
41
- isOk(): this is {
42
- readonly value: never;
43
- isOk(): this is /*elided*/ any;
44
- isErr(): this is /*elided*/ any;
45
- map<U>(fn: (value: never) => U): Result<U, never>;
46
- flatMap<U, F = never>(fn: (value: never) => Result<U, F>): Result<U, F>;
47
- mapErr<F>(_fn: (error: never) => F): Result<never, F>;
48
- match<U>(handlers: {
49
- ok: (value: never) => U;
50
- err: (error: never) => U;
51
- }): U;
52
- unwrap(): never;
53
- unwrapOr(_fallback: never): never;
54
- };
55
- isErr(): this is /*elided*/ any;
56
- map<U>(_fn: (value: never) => U): Result<U, never>;
57
- flatMap<U, F = never>(_fn: (value: never) => Result<U, F>): Result<U, F>;
58
- mapErr<F>(fn: (error: never) => F): Result<never, F>;
59
- match<U>(handlers: {
60
- ok: (value: never) => U;
61
- err: (error: never) => U;
62
- }): U;
63
- unwrap(): never;
64
- unwrapOr<T>(fallback: T): T;
65
- };
66
- map<U>(fn: (value: void) => U): Result<U, never>;
67
- flatMap<U, F = never>(fn: (value: void) => Result<U, F>): Result<U, F>;
68
- mapErr<F>(_fn: (error: never) => F): Result<void, F>;
69
- match<U>(handlers: {
70
- ok: (value: void) => U;
71
- err: (error: never) => U;
72
- }): U;
73
- unwrap(): void;
74
- unwrapOr(_fallback: void): void;
75
- };
76
- //# sourceMappingURL=validate-established-topo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-established-topo.d.ts","sourceRoot":"","sources":["../src/validate-established-topo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA0CtC;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAYjD,CAAC"}
@@ -1,43 +0,0 @@
1
- import { ValidationError } from './errors.js';
2
- import { Result } from './result.js';
3
- import { validateEstablishedTopo as validateDraftFreeTopo } from './draft.js';
4
- import { validateTopo } from './validate-topo.js';
5
- const PROJECTION_BLOCKING_RULES = new Set([
6
- 'cross-cycle',
7
- 'cross-exists',
8
- 'no-self-cross',
9
- 'provision-exists',
10
- 'signal-origin-exists',
11
- ]);
12
- const keepProjectionBlockingIssues = (result) => {
13
- if (result.isOk()) {
14
- return result;
15
- }
16
- const issues = result.error.context?.issues;
17
- const remainingIssues = issues?.filter((issue) => PROJECTION_BLOCKING_RULES.has(issue.rule));
18
- if (remainingIssues === undefined || remainingIssues.length === 0) {
19
- return Result.ok();
20
- }
21
- return Result.err(new ValidationError(`Topo validation failed with ${remainingIssues.length} issue(s)`, {
22
- cause: result.error,
23
- context: { issues: remainingIssues },
24
- }));
25
- };
26
- /**
27
- * Validate that a topo is ready for established outputs.
28
- *
29
- * Established surfaces still require the authored graph to be structurally
30
- * valid, and they must also reject any remaining draft state.
31
- */
32
- export const validateEstablishedTopo = (topo) => {
33
- const structural = keepProjectionBlockingIssues(validateTopo(topo));
34
- if (structural.isErr()) {
35
- return structural;
36
- }
37
- const established = validateDraftFreeTopo(topo);
38
- if (established.isErr()) {
39
- return established;
40
- }
41
- return Result.ok();
42
- };
43
- //# sourceMappingURL=validate-established-topo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-established-topo.js","sourceRoot":"","sources":["../src/validate-established-topo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,uBAAuB,IAAI,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,aAAa;IACb,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,CACnC,MAAuC,EACvC,EAAE;IACF,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAClB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GACV,MAAM,CAAC,KAAK,CAAC,OACd,EAAE,MAAM,CAAC;IACV,MAAM,eAAe,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/C,yBAAyB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAC1C,CAAC;IAEF,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClE,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC,GAAG,CACf,IAAI,eAAe,CACjB,+BAA+B,eAAe,CAAC,MAAM,WAAW,EAChE;QACE,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE;KACrC,CACF,CACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,IAAU,EAAE,EAAE;IACpD,MAAM,UAAU,GAAG,4BAA4B,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACpE,IAAI,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC;QACvB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,WAAW,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC;QACxB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;AACrB,CAAC,CAAC"}
@@ -1,24 +0,0 @@
1
- /**
2
- * Structural validation for a Topo graph.
3
- *
4
- * Checks trail crossing references, example input validity, event origin
5
- * references, and output schema completeness. Returns a Result with all
6
- * issues collected into a single ValidationError.
7
- */
8
- import { ValidationError } from './errors.js';
9
- import { Result } from './result.js';
10
- import type { Topo } from './topo.js';
11
- export interface TopoIssue {
12
- readonly trailId: string;
13
- readonly rule: string;
14
- readonly message: string;
15
- }
16
- /**
17
- * Validate the structural integrity of a Topo graph.
18
- *
19
- * Checks crossing references, example inputs, event origins, and output
20
- * schema presence. Returns `Result.ok()` when no issues are found, or
21
- * `Result.err(ValidationError)` with all issues in the error context.
22
- */
23
- export declare const validateTopo: (topo: Topo) => Result<void, ValidationError>;
24
- //# sourceMappingURL=validate-topo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-topo.d.ts","sourceRoot":"","sources":["../src/validate-topo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQtC,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAyLD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,IAAI,KAAG,MAAM,CAAC,IAAI,EAAE,eAAe,CAoBrE,CAAC"}
@@ -1,176 +0,0 @@
1
- /**
2
- * Structural validation for a Topo graph.
3
- *
4
- * Checks trail crossing references, example input validity, event origin
5
- * references, and output schema completeness. Returns a Result with all
6
- * issues collected into a single ValidationError.
7
- */
8
- import { ValidationError } from './errors.js';
9
- import { isDraftId } from './draft.js';
10
- import { Result } from './result.js';
11
- import { validateInput } from './validation.js';
12
- // ---------------------------------------------------------------------------
13
- // Validators
14
- // ---------------------------------------------------------------------------
15
- const WHITE = 0;
16
- const GRAY = 1;
17
- const BLACK = 2;
18
- /** Build an adjacency list and initial color map from trails with crossings. */
19
- const buildCrossGraph = (trails) => {
20
- const graph = new Map();
21
- for (const [id, t] of trails) {
22
- if (t.crosses.length > 0) {
23
- graph.set(id, t.crosses);
24
- }
25
- }
26
- const color = new Map();
27
- for (const id of graph.keys()) {
28
- color.set(id, WHITE);
29
- }
30
- return { color, graph };
31
- };
32
- /** Detect multi-node cycles in the trail crossing graph via DFS. */
33
- const detectCrossCycles = (trails) => {
34
- const issues = [];
35
- const { color, graph } = buildCrossGraph(trails);
36
- const dfs = (node, path) => {
37
- color.set(node, GRAY);
38
- for (const next of graph.get(node) ?? []) {
39
- if (!graph.has(next)) {
40
- continue;
41
- }
42
- const c = color.get(next) ?? WHITE;
43
- if (c === GRAY) {
44
- const cycle = [...path.slice(path.indexOf(next)), next];
45
- issues.push({
46
- message: `Cycle detected: ${cycle.join(' → ')}`,
47
- rule: 'cross-cycle',
48
- trailId: next,
49
- });
50
- }
51
- else if (c === WHITE) {
52
- dfs(next, [...path, next]);
53
- }
54
- }
55
- color.set(node, BLACK);
56
- };
57
- for (const id of graph.keys()) {
58
- if (color.get(id) === WHITE) {
59
- dfs(id, [id]);
60
- }
61
- }
62
- return issues;
63
- };
64
- const checkCrosses = (trails, topo) => {
65
- const issues = [];
66
- for (const [id, trail] of trails) {
67
- for (const crossedId of trail.crosses) {
68
- if (crossedId === id) {
69
- issues.push({
70
- message: `Trail crosses itself`,
71
- rule: 'no-self-cross',
72
- trailId: id,
73
- });
74
- }
75
- else if (!topo.has(crossedId) && !isDraftId(crossedId)) {
76
- issues.push({
77
- message: `Crosses "${crossedId}" which is not in the topo`,
78
- rule: 'cross-exists',
79
- trailId: id,
80
- });
81
- }
82
- }
83
- }
84
- issues.push(...detectCrossCycles(trails));
85
- return issues;
86
- };
87
- const checkProvisions = (trails, topo) => {
88
- const issues = [];
89
- for (const [id, trail] of trails) {
90
- for (const declaredProvision of trail.provisions) {
91
- if (!topo.hasProvision(declaredProvision.id) &&
92
- !isDraftId(declaredProvision.id)) {
93
- issues.push({
94
- message: `Provision "${declaredProvision.id}" is not in the topo`,
95
- rule: 'provision-exists',
96
- trailId: id,
97
- });
98
- }
99
- }
100
- }
101
- return issues;
102
- };
103
- const checkOneExample = (id, example, inputSchema, hasOutput) => {
104
- const issues = [];
105
- const result = validateInput(inputSchema, example.input);
106
- if (result.isErr() && example.error !== 'ValidationError') {
107
- issues.push({
108
- message: `Example "${example.name}" input does not parse against schema`,
109
- rule: 'example-input-valid',
110
- trailId: id,
111
- });
112
- }
113
- if (example.expected !== undefined && !hasOutput) {
114
- issues.push({
115
- message: `Example "${example.name}" has expected output but trail has no output schema`,
116
- rule: 'output-schema-present',
117
- trailId: id,
118
- });
119
- }
120
- return issues;
121
- };
122
- const checkExamples = (trails) => {
123
- const issues = [];
124
- for (const [id, trail] of trails) {
125
- if (!trail.examples) {
126
- continue;
127
- }
128
- for (const example of trail.examples) {
129
- issues.push(...checkOneExample(id, example, trail.input, !!trail.output));
130
- }
131
- }
132
- return issues;
133
- };
134
- const checkSignalOrigins = (signals, topo) => {
135
- const issues = [];
136
- for (const [id, evt] of signals) {
137
- if (!evt.from) {
138
- continue;
139
- }
140
- for (const originId of evt.from) {
141
- if (!topo.has(originId) && !isDraftId(originId)) {
142
- issues.push({
143
- message: `Signal origin "${originId}" is not in the topo`,
144
- rule: 'signal-origin-exists',
145
- trailId: id,
146
- });
147
- }
148
- }
149
- }
150
- return issues;
151
- };
152
- // ---------------------------------------------------------------------------
153
- // Public API
154
- // ---------------------------------------------------------------------------
155
- /**
156
- * Validate the structural integrity of a Topo graph.
157
- *
158
- * Checks crossing references, example inputs, event origins, and output
159
- * schema presence. Returns `Result.ok()` when no issues are found, or
160
- * `Result.err(ValidationError)` with all issues in the error context.
161
- */
162
- export const validateTopo = (topo) => {
163
- const issues = [
164
- ...checkCrosses(topo.trails, topo),
165
- ...checkProvisions(topo.trails, topo),
166
- ...checkExamples(topo.trails),
167
- ...checkSignalOrigins(topo.signals, topo),
168
- ];
169
- if (issues.length === 0) {
170
- return Result.ok();
171
- }
172
- return Result.err(new ValidationError(`Topo validation failed with ${issues.length} issue(s)`, {
173
- context: { issues },
174
- }));
175
- };
176
- //# sourceMappingURL=validate-topo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validate-topo.js","sourceRoot":"","sources":["../src/validate-topo.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Validation utilities for @ontrails/core
3
- *
4
- * Wraps Zod parsing into Result types and provides JSON Schema conversion
5
- * for trail input schemas.
6
- */
7
- import type { z } from 'zod';
8
- import { ValidationError } from './errors.js';
9
- import { Result } from './result.js';
10
- type JsonSchema = Record<string, unknown>;
11
- type JsonSchemaConverter = (schema: z.ZodType) => JsonSchema;
12
- /** Format each ZodIssue as "path: message" (or just "message" for root). */
13
- export declare const formatZodIssues: (issues: z.ZodIssue[]) => string[];
14
- /** Parse unknown data against a Zod schema, returning a Result. */
15
- export declare const validateInput: <T>(schema: z.ZodType<T>, data: unknown) => Result<T, ValidationError>;
16
- /** Parse unknown data against a Zod schema, returning a Result suitable for output validation. */
17
- export declare const validateOutput: <T>(schema: z.ZodType<T>, data: unknown) => Result<T, ValidationError>;
18
- /**
19
- * Convert common Zod types to a JSON Schema object.
20
- *
21
- * Uses Zod v4's `_zod.def` and `_zod.traits` for introspection.
22
- * Covers: string, number, boolean, object, array, enum, optional,
23
- * default, union, literal, nullable, and describe.
24
- */
25
- export declare const zodToJsonSchema: JsonSchemaConverter;
26
- export {};
27
- //# sourceMappingURL=validation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAerC,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC;AAe7D,4EAA4E;AAC5E,eAAO,MAAM,eAAe,GAAI,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAG,MAAM,EAIzD,CAAC;AAML,mEAAmE;AACnE,eAAO,MAAM,aAAa,GAAI,CAAC,EAC7B,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,OAAO,KACZ,MAAM,CAAC,CAAC,EAAE,eAAe,CAY3B,CAAC;AAMF,kGAAkG;AAClG,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,MAAM,OAAO,KACZ,MAAM,CAAC,CAAC,EAAE,eAAe,CAY3B,CAAC;AAkCF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,EAAE,mBAkF7B,CAAC"}
@@ -1,165 +0,0 @@
1
- /**
2
- * Validation utilities for @ontrails/core
3
- *
4
- * Wraps Zod parsing into Result types and provides JSON Schema conversion
5
- * for trail input schemas.
6
- */
7
- import { ValidationError } from './errors.js';
8
- import { Result } from './result.js';
9
- // ---------------------------------------------------------------------------
10
- // Internal helpers (defined before usage)
11
- // ---------------------------------------------------------------------------
12
- const isOptionalLike = (s) => {
13
- const defType = s._zod.def['type'];
14
- return defType === 'optional' || defType === 'default';
15
- };
16
- // ---------------------------------------------------------------------------
17
- // Issue formatting
18
- // ---------------------------------------------------------------------------
19
- /** Format each ZodIssue as "path: message" (or just "message" for root). */
20
- export const formatZodIssues = (issues) => issues.map((issue) => {
21
- const path = issue.path.join('.');
22
- return path ? `${path}: ${issue.message}` : issue.message;
23
- });
24
- // ---------------------------------------------------------------------------
25
- // Input validation
26
- // ---------------------------------------------------------------------------
27
- /** Parse unknown data against a Zod schema, returning a Result. */
28
- export const validateInput = (schema, data) => {
29
- const parsed = schema.safeParse(data);
30
- if (parsed.success) {
31
- return Result.ok(parsed.data);
32
- }
33
- const messages = formatZodIssues(parsed.error.issues);
34
- return Result.err(new ValidationError(messages.join('; '), {
35
- cause: parsed.error,
36
- context: { issues: parsed.error.issues },
37
- }));
38
- };
39
- // ---------------------------------------------------------------------------
40
- // Output validation
41
- // ---------------------------------------------------------------------------
42
- /** Parse unknown data against a Zod schema, returning a Result suitable for output validation. */
43
- export const validateOutput = (schema, data) => {
44
- const parsed = schema.safeParse(data);
45
- if (parsed.success) {
46
- return Result.ok(parsed.data);
47
- }
48
- const messages = formatZodIssues(parsed.error.issues);
49
- return Result.err(new ValidationError(`Output validation failed: ${messages.join('; ')}`, {
50
- cause: parsed.error,
51
- context: { issues: parsed.error.issues },
52
- }));
53
- };
54
- // ---------------------------------------------------------------------------
55
- // Zod → JSON Schema (public API)
56
- // ---------------------------------------------------------------------------
57
- /**
58
- * Sentinel indicating a dynamic default that should be omitted from schema
59
- * exports. Zod v4 wraps all defaults in getters; dynamic ones (functions)
60
- * produce new values on each access. We detect this by reading the getter
61
- * twice and comparing with `Object.is`. If values differ, the default is
62
- * dynamic and we cache this sentinel to skip it in future calls.
63
- */
64
- const DYNAMIC_DEFAULT = Symbol('DYNAMIC_DEFAULT');
65
- const defaultValueCache = new WeakMap();
66
- /** Read a Zod v4 default getter twice and decide if it's stable.
67
- * Uses Object.is for primitives and JSON.stringify for objects/arrays. */
68
- const resolveDefault = (def) => {
69
- try {
70
- const a = def['defaultValue'];
71
- const b = def['defaultValue'];
72
- if (Object.is(a, b)) {
73
- return a;
74
- }
75
- // Object/array defaults produce new references each call but may
76
- // still be structurally identical (e.g. `() => ({ key: 'val' })`).
77
- return JSON.stringify(a) === JSON.stringify(b) ? a : DYNAMIC_DEFAULT;
78
- }
79
- catch {
80
- // BigInt, circular refs, or other non-serializable defaults
81
- return DYNAMIC_DEFAULT;
82
- }
83
- };
84
- /**
85
- * Convert common Zod types to a JSON Schema object.
86
- *
87
- * Uses Zod v4's `_zod.def` and `_zod.traits` for introspection.
88
- * Covers: string, number, boolean, object, array, enum, optional,
89
- * default, union, literal, nullable, and describe.
90
- */
91
- export const zodToJsonSchema = (schema) => {
92
- const s = schema;
93
- const collectObjectFields = (shape) => {
94
- const properties = {};
95
- const required = [];
96
- for (const [key, value] of Object.entries(shape)) {
97
- properties[key] = zodToJsonSchema(value);
98
- if (!isOptionalLike(value)) {
99
- required.push(key);
100
- }
101
- }
102
- return { properties, required };
103
- };
104
- const convertObject = (value) => {
105
- const shape = value._zod.def['shape'];
106
- if (!shape) {
107
- return { type: 'object' };
108
- }
109
- const { properties, required } = collectObjectFields(shape);
110
- const result = { properties, type: 'object' };
111
- if (required.length > 0) {
112
- result['required'] = required;
113
- }
114
- return result;
115
- };
116
- const zodConverters = {
117
- array: (value) => {
118
- const element = value._zod.def['element'];
119
- return { items: zodToJsonSchema(element), type: 'array' };
120
- },
121
- boolean: () => ({ type: 'boolean' }),
122
- default: (value) => {
123
- const inner = value._zod.def['innerType'];
124
- const innerSchema = zodToJsonSchema(inner);
125
- if (!defaultValueCache.has(value._zod.def)) {
126
- defaultValueCache.set(value._zod.def, resolveDefault(value._zod.def));
127
- }
128
- const cached = defaultValueCache.get(value._zod.def);
129
- if (cached !== DYNAMIC_DEFAULT) {
130
- innerSchema['default'] = cached;
131
- }
132
- return innerSchema;
133
- },
134
- enum: (value) => {
135
- const entries = value._zod.def['entries'];
136
- return { enum: Object.values(entries), type: 'string' };
137
- },
138
- literal: (value) => {
139
- const values = value._zod.def['values'];
140
- return { const: values[0] };
141
- },
142
- nullable: (value) => {
143
- const inner = value._zod.def['innerType'];
144
- return { anyOf: [zodToJsonSchema(inner), { type: 'null' }] };
145
- },
146
- number: () => ({ type: 'number' }),
147
- object: convertObject,
148
- optional: (value) => {
149
- const inner = value._zod.def['innerType'];
150
- return zodToJsonSchema(inner);
151
- },
152
- string: () => ({ type: 'string' }),
153
- union: (value) => {
154
- const options = value._zod.def['options'];
155
- return { anyOf: options.map((option) => zodToJsonSchema(option)) };
156
- },
157
- };
158
- const converter = zodConverters[s._zod.def['type']];
159
- const base = converter ? converter(s) : {};
160
- if (s.description) {
161
- base['description'] = s.description;
162
- }
163
- return base;
164
- };
165
- //# sourceMappingURL=validation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Workspace detection utilities.
3
- *
4
- * Walks the filesystem to find monorepo workspace roots and provides
5
- * helpers for working with paths relative to a workspace.
6
- */
7
- import { NotFoundError } from './errors.js';
8
- import { Result } from './result.js';
9
- /**
10
- * Walks up from `startDir` (defaults to `process.cwd()`) looking for a
11
- * `package.json` that contains a `"workspaces"` field.
12
- *
13
- * Returns the directory path of the workspace root on success, or a
14
- * `NotFoundError` if no workspace root is found.
15
- */
16
- export declare const findWorkspaceRoot: (startDir?: string) => Promise<Result<string, NotFoundError>>;
17
- /**
18
- * Returns `true` if `filePath` is inside `workspaceRoot`.
19
- */
20
- export declare const isInsideWorkspace: (filePath: string, workspaceRoot: string) => boolean;
21
- /**
22
- * Returns the relative path from `workspaceRoot` to `filePath`.
23
- */
24
- export declare const getRelativePath: (filePath: string, workspaceRoot: string) => string;
25
- //# sourceMappingURL=workspace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAiBrC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAC5B,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAqBvC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,MAAM,EAChB,eAAe,MAAM,KACpB,OAGF,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,eAAe,MAAM,KACpB,MAA6D,CAAC"}
package/dist/workspace.js DELETED
@@ -1,57 +0,0 @@
1
- /**
2
- * Workspace detection utilities.
3
- *
4
- * Walks the filesystem to find monorepo workspace roots and provides
5
- * helpers for working with paths relative to a workspace.
6
- */
7
- import { resolve, relative, dirname, join, isAbsolute } from 'node:path';
8
- import { NotFoundError } from './errors.js';
9
- import { Result } from './result.js';
10
- /** Check if a directory has a package.json with a `workspaces` field. */
11
- const hasWorkspacesField = async (dir) => {
12
- const pkgPath = join(dir, 'package.json');
13
- const file = Bun.file(pkgPath);
14
- if (!(await file.exists())) {
15
- return false;
16
- }
17
- try {
18
- const pkg = await file.json();
19
- return typeof pkg === 'object' && pkg !== null && 'workspaces' in pkg;
20
- }
21
- catch {
22
- return false;
23
- }
24
- };
25
- /**
26
- * Walks up from `startDir` (defaults to `process.cwd()`) looking for a
27
- * `package.json` that contains a `"workspaces"` field.
28
- *
29
- * Returns the directory path of the workspace root on success, or a
30
- * `NotFoundError` if no workspace root is found.
31
- */
32
- export const findWorkspaceRoot = async (startDir) => {
33
- let current = resolve(startDir ?? process.cwd());
34
- // eslint-disable-next-line no-constant-condition
35
- while (true) {
36
- if (await hasWorkspacesField(current)) {
37
- return Result.ok(current);
38
- }
39
- const parent = dirname(current);
40
- if (parent === current) {
41
- return Result.err(new NotFoundError(`No workspace root found from "${startDir ?? process.cwd()}"`));
42
- }
43
- current = parent;
44
- }
45
- };
46
- /**
47
- * Returns `true` if `filePath` is inside `workspaceRoot`.
48
- */
49
- export const isInsideWorkspace = (filePath, workspaceRoot) => {
50
- const rel = relative(resolve(workspaceRoot), resolve(filePath));
51
- return rel !== '' && !rel.startsWith('..') && !isAbsolute(rel);
52
- };
53
- /**
54
- * Returns the relative path from `workspaceRoot` to `filePath`.
55
- */
56
- export const getRelativePath = (filePath, workspaceRoot) => relative(resolve(workspaceRoot), resolve(filePath));
57
- //# sourceMappingURL=workspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,yEAAyE;AACzE,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAY,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,YAAY,IAAI,GAAG,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,QAAiB,EACuB,EAAE;IAC1C,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEjD,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,MAAM,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,GAAG,CACf,IAAI,aAAa,CACf,iCAAiC,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,CAC9D,CACF,CAAC;QACJ,CAAC;QAED,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAgB,EAChB,aAAqB,EACZ,EAAE;IACX,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChE,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,QAAgB,EAChB,aAAqB,EACb,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC"}