@ontrails/core 1.0.0-beta.5 → 1.0.0-beta.50

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 (252) hide show
  1. package/CHANGELOG.md +459 -14
  2. package/README.md +103 -28
  3. package/package.json +16 -1
  4. package/src/activation-provenance.ts +116 -0
  5. package/src/activation-source-compatibility.ts +430 -0
  6. package/src/activation-source-derivation.ts +227 -0
  7. package/src/activation-source.ts +93 -0
  8. package/src/blob-ref.ts +51 -0
  9. package/src/branded.ts +1 -1
  10. package/src/compose-batch.ts +69 -0
  11. package/src/compose-schema.ts +36 -0
  12. package/src/context.ts +59 -11
  13. package/src/derive.ts +271 -19
  14. package/src/detours.ts +8 -0
  15. package/src/diagnostics.ts +21 -0
  16. package/src/draft.ts +350 -0
  17. package/src/entity.ts +346 -0
  18. package/src/error-rendering.ts +87 -0
  19. package/src/errors.ts +335 -48
  20. package/src/execute.ts +1577 -0
  21. package/src/fire.ts +1172 -0
  22. package/src/glob.ts +81 -0
  23. package/src/index.ts +569 -33
  24. package/src/internal/fork-ctx.ts +69 -0
  25. package/src/layer-field-rendering.ts +193 -0
  26. package/src/layer.ts +43 -6
  27. package/src/observe.ts +361 -0
  28. package/src/path-scope.ts +66 -0
  29. package/src/path-security.ts +11 -3
  30. package/src/permits.ts +12 -0
  31. package/src/queue.ts +163 -0
  32. package/src/redaction/patterns.ts +6 -3
  33. package/src/resilience.ts +11 -11
  34. package/src/resource-config.ts +804 -0
  35. package/src/resource.ts +194 -0
  36. package/src/result.ts +18 -0
  37. package/src/run.ts +76 -0
  38. package/src/runtime-builtins.ts +69 -0
  39. package/src/schedule-runtime.ts +689 -0
  40. package/src/schedule.ts +326 -0
  41. package/src/serialization.ts +92 -55
  42. package/src/sha256.ts +136 -0
  43. package/src/signal-diagnostics.ts +633 -0
  44. package/src/signal-ref.ts +111 -0
  45. package/src/signal.ts +104 -0
  46. package/src/store/accessor-protocol.ts +56 -0
  47. package/src/store/index.ts +4 -0
  48. package/src/structured-examples.ts +248 -0
  49. package/src/surface-derivation.ts +91 -0
  50. package/src/surface-filter.ts +101 -0
  51. package/src/surface-overlay.ts +694 -0
  52. package/src/surface-versioning.ts +42 -0
  53. package/src/topo.ts +762 -38
  54. package/src/tracing.ts +346 -0
  55. package/src/trail-id-glob.ts +15 -0
  56. package/src/trail.ts +1244 -34
  57. package/src/trails/derive-trail.ts +835 -0
  58. package/src/trails/index.ts +9 -0
  59. package/src/trails/ingest.ts +152 -0
  60. package/src/trails-db.ts +212 -0
  61. package/src/transport-error-map.ts +163 -0
  62. package/src/type-utils.ts +63 -10
  63. package/src/types.ts +254 -12
  64. package/src/validate-established-topo.ts +73 -0
  65. package/src/validate-topo.ts +569 -55
  66. package/src/validation.ts +152 -4
  67. package/src/version-marker.ts +716 -0
  68. package/src/version-resolution.ts +308 -0
  69. package/src/version-runtime.ts +120 -0
  70. package/src/webhook.ts +461 -0
  71. package/src/workspace.ts +183 -16
  72. package/src/zod-wrappers.ts +72 -0
  73. package/.turbo/turbo-build.log +0 -1
  74. package/.turbo/turbo-lint.log +0 -3
  75. package/.turbo/turbo-typecheck.log +0 -1
  76. package/dist/adapters.d.ts +0 -39
  77. package/dist/adapters.d.ts.map +0 -1
  78. package/dist/adapters.js +0 -2
  79. package/dist/adapters.js.map +0 -1
  80. package/dist/blob-ref.d.ts +0 -20
  81. package/dist/blob-ref.d.ts.map +0 -1
  82. package/dist/blob-ref.js +0 -22
  83. package/dist/blob-ref.js.map +0 -1
  84. package/dist/branded.d.ts +0 -36
  85. package/dist/branded.d.ts.map +0 -1
  86. package/dist/branded.js +0 -89
  87. package/dist/branded.js.map +0 -1
  88. package/dist/collections.d.ts +0 -31
  89. package/dist/collections.d.ts.map +0 -1
  90. package/dist/collections.js +0 -60
  91. package/dist/collections.js.map +0 -1
  92. package/dist/context.d.ts +0 -10
  93. package/dist/context.d.ts.map +0 -1
  94. package/dist/context.js +0 -15
  95. package/dist/context.js.map +0 -1
  96. package/dist/derive.d.ts +0 -33
  97. package/dist/derive.d.ts.map +0 -1
  98. package/dist/derive.js +0 -125
  99. package/dist/derive.js.map +0 -1
  100. package/dist/errors.d.ts +0 -83
  101. package/dist/errors.d.ts.map +0 -1
  102. package/dist/errors.js +0 -142
  103. package/dist/errors.js.map +0 -1
  104. package/dist/event.d.ts +0 -45
  105. package/dist/event.d.ts.map +0 -1
  106. package/dist/event.js +0 -17
  107. package/dist/event.js.map +0 -1
  108. package/dist/fetch.d.ts +0 -15
  109. package/dist/fetch.d.ts.map +0 -1
  110. package/dist/fetch.js +0 -102
  111. package/dist/fetch.js.map +0 -1
  112. package/dist/guards.d.ts +0 -17
  113. package/dist/guards.d.ts.map +0 -1
  114. package/dist/guards.js +0 -25
  115. package/dist/guards.js.map +0 -1
  116. package/dist/health.d.ts +0 -18
  117. package/dist/health.d.ts.map +0 -1
  118. package/dist/health.js +0 -5
  119. package/dist/health.js.map +0 -1
  120. package/dist/index.d.ts +0 -36
  121. package/dist/index.d.ts.map +0 -1
  122. package/dist/index.js +0 -39
  123. package/dist/index.js.map +0 -1
  124. package/dist/job.d.ts +0 -24
  125. package/dist/job.d.ts.map +0 -1
  126. package/dist/job.js +0 -17
  127. package/dist/job.js.map +0 -1
  128. package/dist/layer.d.ts +0 -17
  129. package/dist/layer.d.ts.map +0 -1
  130. package/dist/layer.js +0 -21
  131. package/dist/layer.js.map +0 -1
  132. package/dist/path-security.d.ts +0 -28
  133. package/dist/path-security.d.ts.map +0 -1
  134. package/dist/path-security.js +0 -63
  135. package/dist/path-security.js.map +0 -1
  136. package/dist/patterns/bulk.d.ts +0 -15
  137. package/dist/patterns/bulk.d.ts.map +0 -1
  138. package/dist/patterns/bulk.js +0 -14
  139. package/dist/patterns/bulk.js.map +0 -1
  140. package/dist/patterns/change.d.ts +0 -10
  141. package/dist/patterns/change.d.ts.map +0 -1
  142. package/dist/patterns/change.js +0 -10
  143. package/dist/patterns/change.js.map +0 -1
  144. package/dist/patterns/date-range.d.ts +0 -10
  145. package/dist/patterns/date-range.d.ts.map +0 -1
  146. package/dist/patterns/date-range.js +0 -10
  147. package/dist/patterns/date-range.js.map +0 -1
  148. package/dist/patterns/index.d.ts +0 -9
  149. package/dist/patterns/index.d.ts.map +0 -1
  150. package/dist/patterns/index.js +0 -9
  151. package/dist/patterns/index.js.map +0 -1
  152. package/dist/patterns/pagination.d.ts +0 -18
  153. package/dist/patterns/pagination.d.ts.map +0 -1
  154. package/dist/patterns/pagination.js +0 -18
  155. package/dist/patterns/pagination.js.map +0 -1
  156. package/dist/patterns/progress.d.ts +0 -11
  157. package/dist/patterns/progress.d.ts.map +0 -1
  158. package/dist/patterns/progress.js +0 -11
  159. package/dist/patterns/progress.js.map +0 -1
  160. package/dist/patterns/sorting.d.ts +0 -13
  161. package/dist/patterns/sorting.d.ts.map +0 -1
  162. package/dist/patterns/sorting.js +0 -10
  163. package/dist/patterns/sorting.js.map +0 -1
  164. package/dist/patterns/status.d.ts +0 -15
  165. package/dist/patterns/status.d.ts.map +0 -1
  166. package/dist/patterns/status.js +0 -9
  167. package/dist/patterns/status.js.map +0 -1
  168. package/dist/patterns/timestamps.d.ts +0 -10
  169. package/dist/patterns/timestamps.d.ts.map +0 -1
  170. package/dist/patterns/timestamps.js +0 -10
  171. package/dist/patterns/timestamps.js.map +0 -1
  172. package/dist/redaction/index.d.ts +0 -4
  173. package/dist/redaction/index.d.ts.map +0 -1
  174. package/dist/redaction/index.js +0 -3
  175. package/dist/redaction/index.js.map +0 -1
  176. package/dist/redaction/patterns.d.ts +0 -9
  177. package/dist/redaction/patterns.d.ts.map +0 -1
  178. package/dist/redaction/patterns.js +0 -39
  179. package/dist/redaction/patterns.js.map +0 -1
  180. package/dist/redaction/redactor.d.ts +0 -27
  181. package/dist/redaction/redactor.d.ts.map +0 -1
  182. package/dist/redaction/redactor.js +0 -89
  183. package/dist/redaction/redactor.js.map +0 -1
  184. package/dist/resilience.d.ts +0 -34
  185. package/dist/resilience.d.ts.map +0 -1
  186. package/dist/resilience.js +0 -164
  187. package/dist/resilience.js.map +0 -1
  188. package/dist/result.d.ts +0 -57
  189. package/dist/result.d.ts.map +0 -1
  190. package/dist/result.js +0 -156
  191. package/dist/result.js.map +0 -1
  192. package/dist/serialization.d.ts +0 -27
  193. package/dist/serialization.d.ts.map +0 -1
  194. package/dist/serialization.js +0 -153
  195. package/dist/serialization.js.map +0 -1
  196. package/dist/topo.d.ts +0 -16
  197. package/dist/topo.d.ts.map +0 -1
  198. package/dist/topo.js +0 -66
  199. package/dist/topo.js.map +0 -1
  200. package/dist/trail.d.ts +0 -89
  201. package/dist/trail.d.ts.map +0 -1
  202. package/dist/trail.js +0 -18
  203. package/dist/trail.js.map +0 -1
  204. package/dist/type-utils.d.ts +0 -14
  205. package/dist/type-utils.d.ts.map +0 -1
  206. package/dist/type-utils.js +0 -12
  207. package/dist/type-utils.js.map +0 -1
  208. package/dist/types.d.ts +0 -46
  209. package/dist/types.d.ts.map +0 -1
  210. package/dist/types.js +0 -2
  211. package/dist/types.js.map +0 -1
  212. package/dist/validate-topo.d.ts +0 -24
  213. package/dist/validate-topo.d.ts.map +0 -1
  214. package/dist/validate-topo.js +0 -158
  215. package/dist/validate-topo.js.map +0 -1
  216. package/dist/validation.d.ts +0 -27
  217. package/dist/validation.d.ts.map +0 -1
  218. package/dist/validation.js +0 -134
  219. package/dist/validation.js.map +0 -1
  220. package/dist/workspace.d.ts +0 -25
  221. package/dist/workspace.d.ts.map +0 -1
  222. package/dist/workspace.js +0 -57
  223. package/dist/workspace.js.map +0 -1
  224. package/src/__tests__/blob-ref.test.ts +0 -103
  225. package/src/__tests__/branded.test.ts +0 -148
  226. package/src/__tests__/collections.test.ts +0 -126
  227. package/src/__tests__/context.test.ts +0 -66
  228. package/src/__tests__/derive.test.ts +0 -203
  229. package/src/__tests__/errors.test.ts +0 -309
  230. package/src/__tests__/event.test.ts +0 -82
  231. package/src/__tests__/fetch.test.ts +0 -217
  232. package/src/__tests__/guards.test.ts +0 -102
  233. package/src/__tests__/job.test.ts +0 -98
  234. package/src/__tests__/layer.test.ts +0 -212
  235. package/src/__tests__/path-security.test.ts +0 -114
  236. package/src/__tests__/patterns.test.ts +0 -273
  237. package/src/__tests__/redaction.test.ts +0 -244
  238. package/src/__tests__/resilience.test.ts +0 -246
  239. package/src/__tests__/result.test.ts +0 -155
  240. package/src/__tests__/serialization.test.ts +0 -401
  241. package/src/__tests__/topo.test.ts +0 -181
  242. package/src/__tests__/trail.test.ts +0 -217
  243. package/src/__tests__/type-utils.test.ts +0 -63
  244. package/src/__tests__/validate-topo.test.ts +0 -278
  245. package/src/__tests__/validation.test.ts +0 -283
  246. package/src/__tests__/workspace.test.ts +0 -183
  247. package/src/adapters.ts +0 -68
  248. package/src/event.ts +0 -77
  249. package/src/health.ts +0 -23
  250. package/src/job.ts +0 -20
  251. package/tsconfig.json +0 -9
  252. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,101 @@
1
+ import type { Intent, Trail } from './trail.js';
2
+ import { matchesAnyTrailIdGlob, matchesTrailIdGlob } from './trail-id-glob.js';
3
+ import type { SurfaceSelectionOptions } from './surface-derivation.js';
4
+
5
+ // ---------------------------------------------------------------------------
6
+ // Public types
7
+ // ---------------------------------------------------------------------------
8
+
9
+ export type SurfaceFilterOptions = SurfaceSelectionOptions;
10
+
11
+ export const matchesTrailPattern = (
12
+ trailId: string,
13
+ pattern: string
14
+ ): boolean => matchesTrailIdGlob(trailId, pattern);
15
+
16
+ // ---------------------------------------------------------------------------
17
+ // Surface filtering
18
+ // ---------------------------------------------------------------------------
19
+
20
+ const matchesAnyPattern = (
21
+ trailId: string,
22
+ patterns: readonly string[] | undefined
23
+ ): boolean => matchesAnyTrailIdGlob(trailId, patterns);
24
+
25
+ const isExplicitInternalInclude = (
26
+ trailId: string,
27
+ include: readonly string[] | undefined
28
+ ): boolean => include !== undefined && include.includes(trailId);
29
+
30
+ /**
31
+ * Resolve the effective visibility for a trail.
32
+ *
33
+ * Returns `'internal'` when either the explicit `visibility` field is
34
+ * `'internal'` or the legacy `meta.internal === true` convention is set.
35
+ * Honoring the legacy flag keeps trails authored before the visibility
36
+ * field was introduced (e.g. `meta: { internal: true }`) off surfaces.
37
+ *
38
+ * The runtime always fills in `visibility: 'public'` when the spec did not
39
+ * declare it, so we cannot distinguish explicit `'public'` from the default.
40
+ * This means a trail that sets both `meta.internal = true` and
41
+ * `visibility: 'public'` will still be treated as internal — that
42
+ * combination has never been a documented override and, if the author
43
+ * really means "public", they should remove the legacy flag.
44
+ */
45
+ const effectiveVisibility = (
46
+ trail: Trail<unknown, unknown, unknown>
47
+ ): 'public' | 'internal' => {
48
+ if (trail.visibility === 'internal') {
49
+ return 'internal';
50
+ }
51
+ return trail.meta?.['internal'] === true ? 'internal' : 'public';
52
+ };
53
+
54
+ const isVisibleToSurfaces = (
55
+ trail: Trail<unknown, unknown, unknown>,
56
+ include: readonly string[] | undefined
57
+ ): boolean =>
58
+ effectiveVisibility(trail) !== 'internal' ||
59
+ isExplicitInternalInclude(trail.id, include);
60
+
61
+ const passesIncludeFilter = (
62
+ trailId: string,
63
+ include: readonly string[] | undefined
64
+ ): boolean =>
65
+ include === undefined ||
66
+ include.length === 0 ||
67
+ matchesAnyPattern(trailId, include);
68
+
69
+ const passesIntentFilter = (
70
+ trail: Trail<unknown, unknown, unknown>,
71
+ intent: readonly Intent[] | undefined
72
+ ): boolean =>
73
+ intent === undefined || intent.length === 0 || intent.includes(trail.intent);
74
+
75
+ export const shouldIncludeTrailForSurface = (
76
+ trail: Trail<unknown, unknown, unknown>,
77
+ options: SurfaceFilterOptions = {}
78
+ ): boolean => {
79
+ if (trail.activationSources.length > 0) {
80
+ return false;
81
+ }
82
+
83
+ const { exclude, include, intent } = options;
84
+ if (!isVisibleToSurfaces(trail, include)) {
85
+ return false;
86
+ }
87
+
88
+ if (matchesAnyPattern(trail.id, exclude)) {
89
+ return false;
90
+ }
91
+
92
+ return (
93
+ passesIncludeFilter(trail.id, include) && passesIntentFilter(trail, intent)
94
+ );
95
+ };
96
+
97
+ export const filterSurfaceTrails = (
98
+ trails: readonly Trail<unknown, unknown, unknown>[],
99
+ options: SurfaceFilterOptions = {}
100
+ ): Trail<unknown, unknown, unknown>[] =>
101
+ trails.filter((trail) => shouldIncludeTrailForSurface(trail, options));