wicked-crew 0.7.46 → 0.7.48

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 (263) hide show
  1. package/dist/api/capture.d.ts +2 -2
  2. package/dist/api/chat-citations.d.ts +10 -1
  3. package/dist/api/chat-citations.d.ts.map +1 -1
  4. package/dist/api/chat-citations.js +28 -0
  5. package/dist/api/chat-citations.js.map +1 -1
  6. package/dist/api/chat-scope.d.ts +4 -2
  7. package/dist/api/chat-scope.d.ts.map +1 -1
  8. package/dist/api/chat-scope.js +35 -3
  9. package/dist/api/chat-scope.js.map +1 -1
  10. package/dist/api/chat-transcripts.d.ts +23 -1
  11. package/dist/api/chat-transcripts.d.ts.map +1 -1
  12. package/dist/api/chat-transcripts.js +61 -6
  13. package/dist/api/chat-transcripts.js.map +1 -1
  14. package/dist/api/delivery-index.d.ts +21 -0
  15. package/dist/api/delivery-index.d.ts.map +1 -1
  16. package/dist/api/delivery-index.js +36 -0
  17. package/dist/api/delivery-index.js.map +1 -1
  18. package/dist/api/elicitation-cache.d.ts +12 -0
  19. package/dist/api/elicitation-cache.d.ts.map +1 -1
  20. package/dist/api/elicitation-cache.js +17 -1
  21. package/dist/api/elicitation-cache.js.map +1 -1
  22. package/dist/api/eval-sample.d.ts +12 -12
  23. package/dist/api/governance-steering.d.ts.map +1 -1
  24. package/dist/api/governance-steering.js +1 -0
  25. package/dist/api/governance-steering.js.map +1 -1
  26. package/dist/api/mcp.d.ts +4 -4
  27. package/dist/api/policy-landing.d.ts +55 -0
  28. package/dist/api/policy-landing.d.ts.map +1 -0
  29. package/dist/api/policy-landing.js +174 -0
  30. package/dist/api/policy-landing.js.map +1 -0
  31. package/dist/api/recording.d.ts +228 -0
  32. package/dist/api/recording.d.ts.map +1 -0
  33. package/dist/api/recording.js +1140 -0
  34. package/dist/api/recording.js.map +1 -0
  35. package/dist/api/routes.d.ts +42 -39
  36. package/dist/api/routes.d.ts.map +1 -1
  37. package/dist/api/routes.js +362 -107
  38. package/dist/api/routes.js.map +1 -1
  39. package/dist/api/run-timing-index.d.ts +17 -0
  40. package/dist/api/run-timing-index.d.ts.map +1 -1
  41. package/dist/api/run-timing-index.js +43 -1
  42. package/dist/api/run-timing-index.js.map +1 -1
  43. package/dist/api/server.d.ts +27 -0
  44. package/dist/api/server.d.ts.map +1 -1
  45. package/dist/api/server.js +168 -4
  46. package/dist/api/server.js.map +1 -1
  47. package/dist/api/testing.d.ts +4 -4
  48. package/dist/api/testing.d.ts.map +1 -1
  49. package/dist/api/testing.js +3 -0
  50. package/dist/api/testing.js.map +1 -1
  51. package/dist/api/watch-routes.d.ts +30 -0
  52. package/dist/api/watch-routes.d.ts.map +1 -0
  53. package/dist/api/watch-routes.js +104 -0
  54. package/dist/api/watch-routes.js.map +1 -0
  55. package/dist/campaigns/routes.d.ts +2 -2
  56. package/dist/cli/index.d.ts.map +1 -1
  57. package/dist/cli/index.js +20 -2
  58. package/dist/cli/index.js.map +1 -1
  59. package/dist/core/adapter.d.ts +52 -1
  60. package/dist/core/adapter.d.ts.map +1 -1
  61. package/dist/core/adapter.js +193 -5
  62. package/dist/core/adapter.js.map +1 -1
  63. package/dist/core/run-identity.js +1 -1
  64. package/dist/core/run-identity.js.map +1 -1
  65. package/dist/core/walkthrough-root.d.ts +21 -0
  66. package/dist/core/walkthrough-root.d.ts.map +1 -0
  67. package/dist/core/walkthrough-root.js +66 -0
  68. package/dist/core/walkthrough-root.js.map +1 -0
  69. package/dist/decisions/chat-recorder.d.ts +129 -0
  70. package/dist/decisions/chat-recorder.d.ts.map +1 -0
  71. package/dist/decisions/chat-recorder.js +367 -0
  72. package/dist/decisions/chat-recorder.js.map +1 -0
  73. package/dist/decisions/consider.d.ts +102 -0
  74. package/dist/decisions/consider.d.ts.map +1 -0
  75. package/dist/decisions/consider.js +207 -0
  76. package/dist/decisions/consider.js.map +1 -0
  77. package/dist/decisions/derive.d.ts +79 -0
  78. package/dist/decisions/derive.d.ts.map +1 -0
  79. package/dist/decisions/derive.js +282 -0
  80. package/dist/decisions/derive.js.map +1 -0
  81. package/dist/decisions/events.d.ts +25 -0
  82. package/dist/decisions/events.d.ts.map +1 -0
  83. package/dist/decisions/events.js +24 -0
  84. package/dist/decisions/events.js.map +1 -0
  85. package/dist/decisions/ingest.d.ts +51 -0
  86. package/dist/decisions/ingest.d.ts.map +1 -0
  87. package/dist/decisions/ingest.js +100 -0
  88. package/dist/decisions/ingest.js.map +1 -0
  89. package/dist/decisions/land.d.ts +100 -0
  90. package/dist/decisions/land.d.ts.map +1 -0
  91. package/dist/decisions/land.js +466 -0
  92. package/dist/decisions/land.js.map +1 -0
  93. package/dist/decisions/ledger.d.ts +60 -0
  94. package/dist/decisions/ledger.d.ts.map +1 -0
  95. package/dist/decisions/ledger.js +246 -0
  96. package/dist/decisions/ledger.js.map +1 -0
  97. package/dist/decisions/routes.d.ts +10 -0
  98. package/dist/decisions/routes.d.ts.map +1 -0
  99. package/dist/decisions/routes.js +141 -0
  100. package/dist/decisions/routes.js.map +1 -0
  101. package/dist/decisions/rules-text.d.ts +21 -0
  102. package/dist/decisions/rules-text.d.ts.map +1 -0
  103. package/dist/decisions/rules-text.js +50 -0
  104. package/dist/decisions/rules-text.js.map +1 -0
  105. package/dist/decisions/types.d.ts +120 -0
  106. package/dist/decisions/types.d.ts.map +1 -0
  107. package/dist/decisions/types.js +19 -0
  108. package/dist/decisions/types.js.map +1 -0
  109. package/dist/editors/csp.d.ts +31 -0
  110. package/dist/editors/csp.d.ts.map +1 -0
  111. package/dist/editors/csp.js +46 -0
  112. package/dist/editors/csp.js.map +1 -0
  113. package/dist/editors/pack-install.d.ts +28 -0
  114. package/dist/editors/pack-install.d.ts.map +1 -0
  115. package/dist/editors/pack-install.js +153 -0
  116. package/dist/editors/pack-install.js.map +1 -0
  117. package/dist/editors/registry.d.ts +142 -0
  118. package/dist/editors/registry.d.ts.map +1 -0
  119. package/dist/editors/registry.js +255 -0
  120. package/dist/editors/registry.js.map +1 -0
  121. package/dist/editors/routes.d.ts +46 -0
  122. package/dist/editors/routes.d.ts.map +1 -0
  123. package/dist/editors/routes.js +166 -0
  124. package/dist/editors/routes.js.map +1 -0
  125. package/dist/interactive/bridge-pool.d.ts +7 -2
  126. package/dist/interactive/bridge-pool.d.ts.map +1 -1
  127. package/dist/interactive/bridge-pool.js +6 -1
  128. package/dist/interactive/bridge-pool.js.map +1 -1
  129. package/dist/interactive/draft-events.d.ts.map +1 -1
  130. package/dist/interactive/draft-events.js +1 -0
  131. package/dist/interactive/draft-events.js.map +1 -1
  132. package/dist/interactive/theme-events.d.ts +119 -0
  133. package/dist/interactive/theme-events.d.ts.map +1 -0
  134. package/dist/interactive/theme-events.js +606 -0
  135. package/dist/interactive/theme-events.js.map +1 -0
  136. package/dist/projects/events.d.ts.map +1 -1
  137. package/dist/projects/events.js +2 -1
  138. package/dist/projects/events.js.map +1 -1
  139. package/dist/projects/routes.d.ts +2 -2
  140. package/dist/projects/state-home-preflight.d.ts.map +1 -1
  141. package/dist/projects/state-home-preflight.js +3 -0
  142. package/dist/projects/state-home-preflight.js.map +1 -1
  143. package/dist/projects/state-home-registry.d.ts.map +1 -1
  144. package/dist/projects/state-home-registry.js +2 -0
  145. package/dist/projects/state-home-registry.js.map +1 -1
  146. package/dist/projects/state-home.d.ts +6 -0
  147. package/dist/projects/state-home.d.ts.map +1 -1
  148. package/dist/projects/state-home.js +28 -1
  149. package/dist/projects/state-home.js.map +1 -1
  150. package/dist/qe/acceptance.d.ts +45 -4
  151. package/dist/qe/acceptance.d.ts.map +1 -1
  152. package/dist/qe/acceptance.js +93 -4
  153. package/dist/qe/acceptance.js.map +1 -1
  154. package/dist/qe/ledger.d.ts +20 -0
  155. package/dist/qe/ledger.d.ts.map +1 -1
  156. package/dist/qe/ledger.js +34 -0
  157. package/dist/qe/ledger.js.map +1 -1
  158. package/dist/qe/walkthrough-acceptance.d.ts +82 -0
  159. package/dist/qe/walkthrough-acceptance.d.ts.map +1 -0
  160. package/dist/qe/walkthrough-acceptance.js +248 -0
  161. package/dist/qe/walkthrough-acceptance.js.map +1 -0
  162. package/dist/skills/base-skill.d.ts.map +1 -1
  163. package/dist/skills/base-skill.js +3 -2
  164. package/dist/skills/base-skill.js.map +1 -1
  165. package/dist/skills/plugin-source.d.ts +19 -1
  166. package/dist/skills/plugin-source.d.ts.map +1 -1
  167. package/dist/skills/plugin-source.js +31 -2
  168. package/dist/skills/plugin-source.js.map +1 -1
  169. package/dist/skills/runtime.d.ts +11 -2
  170. package/dist/skills/runtime.d.ts.map +1 -1
  171. package/dist/skills/runtime.js +29 -1
  172. package/dist/skills/runtime.js.map +1 -1
  173. package/dist/skills/store.d.ts +14 -1
  174. package/dist/skills/store.d.ts.map +1 -1
  175. package/dist/skills/store.js +19 -5
  176. package/dist/skills/store.js.map +1 -1
  177. package/dist/standing-orders/routes.d.ts +22 -22
  178. package/dist/standing-orders/store.d.ts +10 -10
  179. package/dist/watch/checks/check-failed.d.ts +24 -0
  180. package/dist/watch/checks/check-failed.d.ts.map +1 -0
  181. package/dist/watch/checks/check-failed.js +56 -0
  182. package/dist/watch/checks/check-failed.js.map +1 -0
  183. package/dist/watch/checks/claim-vs-evidence.d.ts +30 -0
  184. package/dist/watch/checks/claim-vs-evidence.d.ts.map +1 -0
  185. package/dist/watch/checks/claim-vs-evidence.js +152 -0
  186. package/dist/watch/checks/claim-vs-evidence.js.map +1 -0
  187. package/dist/watch/checks/deliver-audit.d.ts +19 -0
  188. package/dist/watch/checks/deliver-audit.d.ts.map +1 -0
  189. package/dist/watch/checks/deliver-audit.js +129 -0
  190. package/dist/watch/checks/deliver-audit.js.map +1 -0
  191. package/dist/watch/checks/index.d.ts +8 -0
  192. package/dist/watch/checks/index.d.ts.map +1 -0
  193. package/dist/watch/checks/index.js +24 -0
  194. package/dist/watch/checks/index.js.map +1 -0
  195. package/dist/watch/checks/lag.d.ts +24 -0
  196. package/dist/watch/checks/lag.d.ts.map +1 -0
  197. package/dist/watch/checks/lag.js +55 -0
  198. package/dist/watch/checks/lag.js.map +1 -0
  199. package/dist/watch/checks/quiet-after-claim.d.ts +17 -0
  200. package/dist/watch/checks/quiet-after-claim.d.ts.map +1 -0
  201. package/dist/watch/checks/quiet-after-claim.js +89 -0
  202. package/dist/watch/checks/quiet-after-claim.js.map +1 -0
  203. package/dist/watch/checks/ungated.d.ts +12 -0
  204. package/dist/watch/checks/ungated.d.ts.map +1 -0
  205. package/dist/watch/checks/ungated.js +64 -0
  206. package/dist/watch/checks/ungated.js.map +1 -0
  207. package/dist/watch/checks/warned-rule.d.ts +26 -0
  208. package/dist/watch/checks/warned-rule.d.ts.map +1 -0
  209. package/dist/watch/checks/warned-rule.js +126 -0
  210. package/dist/watch/checks/warned-rule.js.map +1 -0
  211. package/dist/watch/emit.d.ts +122 -0
  212. package/dist/watch/emit.d.ts.map +1 -0
  213. package/dist/watch/emit.js +443 -0
  214. package/dist/watch/emit.js.map +1 -0
  215. package/dist/watch/events.d.ts +21 -0
  216. package/dist/watch/events.d.ts.map +1 -0
  217. package/dist/watch/events.js +21 -0
  218. package/dist/watch/events.js.map +1 -0
  219. package/dist/watch/keys.d.ts +15 -0
  220. package/dist/watch/keys.d.ts.map +1 -0
  221. package/dist/watch/keys.js +23 -0
  222. package/dist/watch/keys.js.map +1 -0
  223. package/dist/watch/lanes.d.ts +41 -0
  224. package/dist/watch/lanes.d.ts.map +1 -0
  225. package/dist/watch/lanes.js +73 -0
  226. package/dist/watch/lanes.js.map +1 -0
  227. package/dist/watch/loader.d.ts +47 -0
  228. package/dist/watch/loader.d.ts.map +1 -0
  229. package/dist/watch/loader.js +178 -0
  230. package/dist/watch/loader.js.map +1 -0
  231. package/dist/watch/registry.d.ts +166 -0
  232. package/dist/watch/registry.d.ts.map +1 -0
  233. package/dist/watch/registry.js +589 -0
  234. package/dist/watch/registry.js.map +1 -0
  235. package/dist/watch/ring.d.ts +32 -0
  236. package/dist/watch/ring.d.ts.map +1 -0
  237. package/dist/watch/ring.js +90 -0
  238. package/dist/watch/ring.js.map +1 -0
  239. package/dist/watch/router.d.ts +25 -0
  240. package/dist/watch/router.d.ts.map +1 -0
  241. package/dist/watch/router.js +87 -0
  242. package/dist/watch/router.js.map +1 -0
  243. package/dist/watch/sources.d.ts +42 -0
  244. package/dist/watch/sources.d.ts.map +1 -0
  245. package/dist/watch/sources.js +104 -0
  246. package/dist/watch/sources.js.map +1 -0
  247. package/dist/watch/types.d.ts +129 -0
  248. package/dist/watch/types.d.ts.map +1 -0
  249. package/dist/watch/types.js +6 -0
  250. package/dist/watch/types.js.map +1 -0
  251. package/endpoint-manifest.json +272 -1
  252. package/package.json +3 -2
  253. package/watch/entries/claim-vs-evidence.json +13 -0
  254. package/watch/entries/deliver-audit.json +17 -0
  255. package/watch/entries/quiet-after-claim.json +16 -0
  256. package/watch/entries/registry-check-failed.json +12 -0
  257. package/watch/entries/registry-lagging.json +12 -0
  258. package/watch/entries/risky-call.json +12 -0
  259. package/watch/entries/ungated.json +13 -0
  260. package/dist/api/demo.d.ts +0 -90
  261. package/dist/api/demo.d.ts.map +0 -1
  262. package/dist/api/demo.js +0 -492
  263. package/dist/api/demo.js.map +0 -1
@@ -61,12 +61,6 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
61
61
  activeWhen: z.ZodEnum<["away", "always"]>;
62
62
  }, "strict", z.ZodTypeAny, {
63
63
  action: "hold" | "notify" | "approve";
64
- scope: {
65
- kind: "all";
66
- } | {
67
- kind: "project";
68
- projectId: string;
69
- };
70
64
  trigger: {
71
65
  kind: "gate";
72
66
  phase: string;
@@ -76,15 +70,15 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
76
70
  kind: "finding";
77
71
  severity: "*" | "high" | "medium";
78
72
  };
79
- activeWhen: "away" | "always";
80
- }, {
81
- action: "hold" | "notify" | "approve";
82
73
  scope: {
83
74
  kind: "all";
84
75
  } | {
85
76
  kind: "project";
86
77
  projectId: string;
87
78
  };
79
+ activeWhen: "always" | "away";
80
+ }, {
81
+ action: "hold" | "notify" | "approve";
88
82
  trigger: {
89
83
  kind: "gate";
90
84
  phase: string;
@@ -94,18 +88,18 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
94
88
  kind: "finding";
95
89
  severity: "*" | "high" | "medium";
96
90
  };
97
- activeWhen: "away" | "always";
98
- }>;
99
- }, "strict", z.ZodTypeAny, {
100
- text: string;
101
- rule: {
102
- action: "hold" | "notify" | "approve";
103
91
  scope: {
104
92
  kind: "all";
105
93
  } | {
106
94
  kind: "project";
107
95
  projectId: string;
108
96
  };
97
+ activeWhen: "always" | "away";
98
+ }>;
99
+ }, "strict", z.ZodTypeAny, {
100
+ text: string;
101
+ rule: {
102
+ action: "hold" | "notify" | "approve";
109
103
  trigger: {
110
104
  kind: "gate";
111
105
  phase: string;
@@ -115,18 +109,18 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
115
109
  kind: "finding";
116
110
  severity: "*" | "high" | "medium";
117
111
  };
118
- activeWhen: "away" | "always";
119
- };
120
- }, {
121
- text: string;
122
- rule: {
123
- action: "hold" | "notify" | "approve";
124
112
  scope: {
125
113
  kind: "all";
126
114
  } | {
127
115
  kind: "project";
128
116
  projectId: string;
129
117
  };
118
+ activeWhen: "always" | "away";
119
+ };
120
+ }, {
121
+ text: string;
122
+ rule: {
123
+ action: "hold" | "notify" | "approve";
130
124
  trigger: {
131
125
  kind: "gate";
132
126
  phase: string;
@@ -136,7 +130,13 @@ export declare const CreateStandingOrderSchema: z.ZodObject<{
136
130
  kind: "finding";
137
131
  severity: "*" | "high" | "medium";
138
132
  };
139
- activeWhen: "away" | "always";
133
+ scope: {
134
+ kind: "all";
135
+ } | {
136
+ kind: "project";
137
+ projectId: string;
138
+ };
139
+ activeWhen: "always" | "away";
140
140
  };
141
141
  }>;
142
142
  export declare const ParseStandingOrderSchema: z.ZodObject<{
@@ -64,12 +64,6 @@ export declare const StandingOrderRuleSchema: z.ZodObject<{
64
64
  activeWhen: z.ZodEnum<["away", "always"]>;
65
65
  }, "strict", z.ZodTypeAny, {
66
66
  action: "hold" | "notify" | "approve";
67
- scope: {
68
- kind: "all";
69
- } | {
70
- kind: "project";
71
- projectId: string;
72
- };
73
67
  trigger: {
74
68
  kind: "gate";
75
69
  phase: string;
@@ -79,15 +73,15 @@ export declare const StandingOrderRuleSchema: z.ZodObject<{
79
73
  kind: "finding";
80
74
  severity: "*" | "high" | "medium";
81
75
  };
82
- activeWhen: "away" | "always";
83
- }, {
84
- action: "hold" | "notify" | "approve";
85
76
  scope: {
86
77
  kind: "all";
87
78
  } | {
88
79
  kind: "project";
89
80
  projectId: string;
90
81
  };
82
+ activeWhen: "always" | "away";
83
+ }, {
84
+ action: "hold" | "notify" | "approve";
91
85
  trigger: {
92
86
  kind: "gate";
93
87
  phase: string;
@@ -97,7 +91,13 @@ export declare const StandingOrderRuleSchema: z.ZodObject<{
97
91
  kind: "finding";
98
92
  severity: "*" | "high" | "medium";
99
93
  };
100
- activeWhen: "away" | "always";
94
+ scope: {
95
+ kind: "all";
96
+ } | {
97
+ kind: "project";
98
+ projectId: string;
99
+ };
100
+ activeWhen: "always" | "away";
101
101
  }>;
102
102
  export type StandingOrderRule = z.infer<typeof StandingOrderRuleSchema>;
103
103
  export interface StandingOrder {
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `deterministic:check_failed` — a check that keeps throwing or timing out (entry
3
+ * `registry-check-failed`, §4.3, §6).
4
+ *
5
+ * The deterministic lane reports every throw and every timeout as an internal key point. Past
6
+ * `failures` of one entry inside `window_minutes`, one run-less flag for that entry's episode. A
7
+ * failed check never emits "fine": its runs' coverage already says it did not check.
8
+ */
9
+ import { z } from 'zod';
10
+ import type { WatchCheck } from '../types.js';
11
+ declare const Threshold: z.ZodObject<{
12
+ failures: z.ZodNumber;
13
+ window_minutes: z.ZodNumber;
14
+ }, "strict", z.ZodTypeAny, {
15
+ failures: number;
16
+ window_minutes: number;
17
+ }, {
18
+ failures: number;
19
+ window_minutes: number;
20
+ }>;
21
+ type Threshold = z.infer<typeof Threshold>;
22
+ export declare const checkFailedCheck: WatchCheck<Record<string, never>, Threshold>;
23
+ export {};
24
+ //# sourceMappingURL=check-failed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-failed.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/check-failed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAE3D,QAAA,MAAM,SAAS;;;;;;;;;EAKJ,CAAC;AACZ,KAAK,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAO3C,eAAO,MAAM,gBAAgB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,CAqCzE,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * `deterministic:check_failed` — a check that keeps throwing or timing out (entry
3
+ * `registry-check-failed`, §4.3, §6).
4
+ *
5
+ * The deterministic lane reports every throw and every timeout as an internal key point. Past
6
+ * `failures` of one entry inside `window_minutes`, one run-less flag for that entry's episode. A
7
+ * failed check never emits "fine": its runs' coverage already says it did not check.
8
+ */
9
+ import { z } from 'zod';
10
+ const Threshold = z
11
+ .object({
12
+ failures: z.number().int().min(1).max(1_000),
13
+ window_minutes: z.number().int().min(1).max(1_440),
14
+ })
15
+ .strict();
16
+ export const checkFailedCheck = {
17
+ name: 'deterministic:check_failed',
18
+ lane: 'deterministic',
19
+ paramsSchema: z.object({}).strict(),
20
+ thresholdSchema: Threshold,
21
+ evaluate(input, state, _params, t, ctx) {
22
+ const entryId = typeof input.event['entry_id'] === 'string' ? input.event['entry_id'] : null;
23
+ if (entryId === null)
24
+ return [];
25
+ const reason = input.event['reason'] === 'timeout' ? 'timed out' : 'failed';
26
+ const now = ctx.now();
27
+ const windowMs = t.window_minutes * 60_000;
28
+ const ep = state.bag.get(entryId) ?? { times: [], open: null };
29
+ state.bag.set(entryId, ep);
30
+ // A quiet window closes the episode AND clears its flag: the next burst is a new flag.
31
+ const out = [];
32
+ const last = ep.times[ep.times.length - 1];
33
+ if (ep.open !== null && last !== undefined && now - last > windowMs) {
34
+ out.push({ op: 'clear', subject: `check-failed:${entryId}:${ep.open}` });
35
+ ep.open = null;
36
+ }
37
+ ep.times = ep.times.filter((x) => now - x <= windowMs);
38
+ ep.times.push(now);
39
+ if (ep.open !== null || ep.times.length < t.failures)
40
+ return out;
41
+ ep.open = now;
42
+ return [
43
+ ...out,
44
+ {
45
+ op: 'raise',
46
+ subject: `check-failed:${entryId}:${ep.open}`,
47
+ sentence: `The "${entryId}" check ${reason} ${ep.times.length} times in ${t.window_minutes} min, so it is not checking right now.`,
48
+ facts: { entry_id: entryId, failures: ep.times.length, last: reason },
49
+ re: 'registry.check_failed',
50
+ },
51
+ ];
52
+ },
53
+ coverage: () => null,
54
+ describe: (t) => `When one check fails or times out ${t.failures} times within ${t.window_minutes} min`,
55
+ };
56
+ //# sourceMappingURL=check-failed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check-failed.js","sourceRoot":"","sources":["../../../src/watch/checks/check-failed.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `deterministic:claim_vs_evidence` (DES-trigger-registry §4.3 row 1, §4.4, §4.7; TR-W6).
3
+ *
4
+ * Reads only fields the engine computed — no regex over transcripts (laya's `RX_CLAIM` was a
5
+ * measurement baseline, not a detector). Two arms, because `evaluatorVerdict` is `null` for
6
+ * creator, neutral and tool units (B3):
7
+ *
8
+ * - **Evaluator arm.** `gateEvaluated.evaluatorVerdict === "PASS"` while the `repoChecksEvaluated`
9
+ * emitted just before that gate says `passed: false` → one HIGH finding: "Said it passed; its
10
+ * own checks failed (lint)". The join is the unit's `ord`; the attempt comes from the floor
11
+ * (N3: `gateEvaluated` carries no attempt). A floor is evidence for its OWN gate only: the gate
12
+ * consumes it, so a later gate with no fresh floor is never read against a stale one.
13
+ * - **Creator arm.** `repoChecksEvaluated{floor: "creator", passed: false}` → one MEDIUM finding:
14
+ * "Handed back as finished; its own checks failed (lint)". A creator that hands back output has
15
+ * claimed it is finished; the engine's creator floor failing is the structural contradiction.
16
+ *
17
+ * A floor that did not RUN (`outcome: "not_run"` — no write boundary could be armed) is not "its
18
+ * checks failed": neither arm speaks, and coverage says the checks could not run. A floor that hit
19
+ * its bound (`outcome: "timed_out"`) says "did not finish".
20
+ *
21
+ * Failing check names come from `repoChecksEvaluated.checks` (exit code, timeout or spawn error).
22
+ * Clearing (§4.7): a `gateEvaluated{combined: true}` for the unit means a later attempt passed —
23
+ * every finding this check holds open on that unit is cleared.
24
+ * Coverage: "not checked" when no floor ran for the run (the gate's `floorNote` says why).
25
+ */
26
+ import type { WatchCheck } from '../types.js';
27
+ /** The checks that failed, by name: a non-zero exit, a timeout or a spawn error. */
28
+ export declare function failingCheckNames(checks: unknown): string[];
29
+ export declare const claimVsEvidenceCheck: WatchCheck<Record<string, never>, Record<string, never>>;
30
+ //# sourceMappingURL=claim-vs-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-vs-evidence.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/claim-vs-evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AA8B3D,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,EAAE,CAY3D;AAoBD,eAAO,MAAM,oBAAoB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAkFzF,CAAC"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * `deterministic:claim_vs_evidence` (DES-trigger-registry §4.3 row 1, §4.4, §4.7; TR-W6).
3
+ *
4
+ * Reads only fields the engine computed — no regex over transcripts (laya's `RX_CLAIM` was a
5
+ * measurement baseline, not a detector). Two arms, because `evaluatorVerdict` is `null` for
6
+ * creator, neutral and tool units (B3):
7
+ *
8
+ * - **Evaluator arm.** `gateEvaluated.evaluatorVerdict === "PASS"` while the `repoChecksEvaluated`
9
+ * emitted just before that gate says `passed: false` → one HIGH finding: "Said it passed; its
10
+ * own checks failed (lint)". The join is the unit's `ord`; the attempt comes from the floor
11
+ * (N3: `gateEvaluated` carries no attempt). A floor is evidence for its OWN gate only: the gate
12
+ * consumes it, so a later gate with no fresh floor is never read against a stale one.
13
+ * - **Creator arm.** `repoChecksEvaluated{floor: "creator", passed: false}` → one MEDIUM finding:
14
+ * "Handed back as finished; its own checks failed (lint)". A creator that hands back output has
15
+ * claimed it is finished; the engine's creator floor failing is the structural contradiction.
16
+ *
17
+ * A floor that did not RUN (`outcome: "not_run"` — no write boundary could be armed) is not "its
18
+ * checks failed": neither arm speaks, and coverage says the checks could not run. A floor that hit
19
+ * its bound (`outcome: "timed_out"`) says "did not finish".
20
+ *
21
+ * Failing check names come from `repoChecksEvaluated.checks` (exit code, timeout or spawn error).
22
+ * Clearing (§4.7): a `gateEvaluated{combined: true}` for the unit means a later attempt passed —
23
+ * every finding this check holds open on that unit is cleared.
24
+ * Coverage: "not checked" when no floor ran for the run (the gate's `floorNote` says why).
25
+ */
26
+ import { z } from 'zod';
27
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : null);
28
+ const text = (v) => (typeof v === 'string' ? v : '');
29
+ /** The checks that failed, by name: a non-zero exit, a timeout or a spawn error. */
30
+ export function failingCheckNames(checks) {
31
+ if (!Array.isArray(checks))
32
+ return [];
33
+ const out = [];
34
+ for (const c of checks) {
35
+ if (typeof c !== 'object' || c === null)
36
+ continue;
37
+ const r = c;
38
+ const name = typeof r['name'] === 'string' && r['name'] !== '' ? r['name'] : 'check';
39
+ const exit = r['exitCode'];
40
+ const failed = (typeof exit === 'number' && exit !== 0) || r['timedOut'] === true || (typeof r['spawnError'] === 'string' && r['spawnError'] !== '');
41
+ if (failed && !out.includes(name))
42
+ out.push(name);
43
+ }
44
+ return out;
45
+ }
46
+ function named(failing) {
47
+ if (failing.length === 0)
48
+ return 'its checks';
49
+ const shown = failing.slice(0, 3).join(', ');
50
+ return failing.length > 3 ? `${shown}, +${failing.length - 3} more` : shown;
51
+ }
52
+ /** "its own checks failed (lint)" / "its own checks did not finish (test)". */
53
+ const evidence = (f) => `its own checks ${f.timedOut ? 'did not finish' : 'failed'} (${named(f.failing)})`;
54
+ function raise(bag, ord, out) {
55
+ if (bag.raised.has(out.subject))
56
+ return [];
57
+ bag.raised.add(out.subject);
58
+ const open = bag.open.get(ord) ?? new Set();
59
+ open.add(out.subject);
60
+ bag.open.set(ord, open);
61
+ return [out];
62
+ }
63
+ export const claimVsEvidenceCheck = {
64
+ name: 'deterministic:claim_vs_evidence',
65
+ lane: 'deterministic',
66
+ paramsSchema: z.object({}).strict(),
67
+ thresholdSchema: z.object({}).strict(),
68
+ evaluate(input, state) {
69
+ const bag = state.bag.get('claim') ??
70
+ { pending: new Map(), floors: 0, notRun: 0, notRunNote: null, gates: 0, floorNote: null, raised: new Set(), open: new Map() };
71
+ state.bag.set('claim', bag);
72
+ const e = input.event;
73
+ const ord = num(e['ord']);
74
+ if (ord === null)
75
+ return [];
76
+ if (input.type === 'repoChecksEvaluated') {
77
+ const attempt = num(e['attempt']) ?? 0;
78
+ const passed = e['passed'] === true;
79
+ const outcome = text(e['outcome']);
80
+ const floor = text(e['floor']);
81
+ const ran = outcome !== 'not_run';
82
+ const current = { attempt, passed, ran, timedOut: outcome === 'timed_out', failing: failingCheckNames(e['checks']), floor };
83
+ bag.pending.set(ord, current);
84
+ if (!ran) {
85
+ bag.notRun++;
86
+ bag.notRunNote = text(e['sandboxError']) || text(e['detectError']) || bag.notRunNote;
87
+ return [];
88
+ }
89
+ bag.floors++;
90
+ if (floor !== 'creator' || passed)
91
+ return [];
92
+ return raise(bag, ord, {
93
+ op: 'raise',
94
+ subject: `${ord}:${attempt}:creator-floor-failed`,
95
+ kind: 'finding',
96
+ severity: 'medium',
97
+ sentence: `Handed back as finished; ${evidence(current)}.`,
98
+ facts: { arm: 'creator', floor, passed: false, failing: current.failing, timed_out: current.timedOut },
99
+ ord,
100
+ attempt,
101
+ re: `repoChecksEvaluated#${ord}:${attempt}`,
102
+ });
103
+ }
104
+ if (input.type !== 'gateEvaluated')
105
+ return [];
106
+ bag.gates++;
107
+ if (typeof e['floorNote'] === 'string' && e['floorNote'] !== '')
108
+ bag.floorNote = e['floorNote'];
109
+ // The floor emitted just before this gate is this gate's evidence — and no later gate's.
110
+ const floor = bag.pending.get(ord);
111
+ bag.pending.delete(ord);
112
+ if (e['combined'] === true) {
113
+ // A later attempt of this unit passed its gate: what this check held open on it is resolved.
114
+ const open = bag.open.get(ord);
115
+ if (open === undefined || open.size === 0)
116
+ return [];
117
+ bag.open.delete(ord);
118
+ return [...open].map((subject) => ({ op: 'clear', subject }));
119
+ }
120
+ const verdict = text(e['evaluatorVerdict']).trim().toUpperCase();
121
+ if (verdict !== 'PASS' || floor === undefined || !floor.ran || floor.passed)
122
+ return [];
123
+ return raise(bag, ord, {
124
+ op: 'raise',
125
+ subject: `${ord}:${floor.attempt}:evaluator-pass-vs-floor`,
126
+ kind: 'finding',
127
+ severity: 'high',
128
+ sentence: `Said it passed; ${evidence(floor)}.`,
129
+ facts: { arm: 'evaluator', verdict: 'PASS', floor: floor.floor, passed: false, failing: floor.failing, timed_out: floor.timedOut },
130
+ ord,
131
+ attempt: floor.attempt,
132
+ re: `gateEvaluated#${ord}`,
133
+ });
134
+ },
135
+ coverage(state) {
136
+ const bag = state.bag.get('claim');
137
+ if (bag !== undefined && bag.floors > 0)
138
+ return { state: 'checked' };
139
+ if (bag !== undefined && bag.notRun > 0) {
140
+ return { state: 'not_checked', reason: `the step's checks could not run${bag.notRunNote !== null && bag.notRunNote !== '' ? `: ${bag.notRunNote.slice(0, 160)}` : ''}` };
141
+ }
142
+ if (bag !== undefined && bag.gates > 0) {
143
+ return {
144
+ state: 'not_checked',
145
+ reason: bag.floorNote !== null ? `no deterministic floor ran: ${bag.floorNote.slice(0, 160)}` : 'no step ran its checks — nothing to read the verdict against',
146
+ };
147
+ }
148
+ return { state: 'not_checked', reason: 'no step has run its checks yet' };
149
+ },
150
+ describe: () => 'When a step is handed back as finished, or an evaluator says PASS, while the step\'s own checks failed',
151
+ };
152
+ //# sourceMappingURL=claim-vs-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim-vs-evidence.js","sourceRoot":"","sources":["../../../src/watch/checks/claim-vs-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * `deterministic:deliver_audit` — entry `deliver-audit` (DES-TRIGGER-REGISTRY-001 §4.3 row 3, TR-W5b).
3
+ *
4
+ * A sequence check over the engine's own facts, nothing parsed: the deliver unit's
5
+ * `deliverLiftEvaluated.outcome`, joined to the same (session, ord, attempt)'s next
6
+ * `repoChecksEvaluated`, with the unit's end (`unitOutputCaptured` or `gateEvaluated` for that ord)
7
+ * closing the window.
8
+ *
9
+ * - `lifted` and the unit ends with NO re-check for that attempt → FINDING high: the tree that ships
10
+ * was moved onto the remote tip and never re-verified. (A re-check that ran and FAILED is not a
11
+ * finding: the engine failed the unit and pushed nothing.) A re-check arriving later clears it.
12
+ * - `skipped` → flag medium at once: the lift could not be decided, so the tree that ships was not
13
+ * re-verified on the remote tip (the deliver script's own rebase stands).
14
+ * - `conflict` / `failed` → flag info: the engine already failed the unit; this only names it.
15
+ * - `unchanged` → nothing.
16
+ */
17
+ import type { WatchCheck } from '../types.js';
18
+ export declare const deliverAuditCheck: WatchCheck<Record<string, never>, Record<string, never>>;
19
+ //# sourceMappingURL=deliver-audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver-audit.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/deliver-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAe,UAAU,EAAE,MAAM,aAAa,CAAC;AAiB3D,eAAO,MAAM,iBAAiB,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAuGtF,CAAC"}
@@ -0,0 +1,129 @@
1
+ /**
2
+ * `deterministic:deliver_audit` — entry `deliver-audit` (DES-TRIGGER-REGISTRY-001 §4.3 row 3, TR-W5b).
3
+ *
4
+ * A sequence check over the engine's own facts, nothing parsed: the deliver unit's
5
+ * `deliverLiftEvaluated.outcome`, joined to the same (session, ord, attempt)'s next
6
+ * `repoChecksEvaluated`, with the unit's end (`unitOutputCaptured` or `gateEvaluated` for that ord)
7
+ * closing the window.
8
+ *
9
+ * - `lifted` and the unit ends with NO re-check for that attempt → FINDING high: the tree that ships
10
+ * was moved onto the remote tip and never re-verified. (A re-check that ran and FAILED is not a
11
+ * finding: the engine failed the unit and pushed nothing.) A re-check arriving later clears it.
12
+ * - `skipped` → flag medium at once: the lift could not be decided, so the tree that ships was not
13
+ * re-verified on the remote tip (the deliver script's own rebase stands).
14
+ * - `conflict` / `failed` → flag info: the engine already failed the unit; this only names it.
15
+ * - `unchanged` → nothing.
16
+ */
17
+ import { z } from 'zod';
18
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : null);
19
+ const keyOf = (ord, attempt) => `${ord}:${attempt}`;
20
+ export const deliverAuditCheck = {
21
+ name: 'deterministic:deliver_audit',
22
+ lane: 'deterministic',
23
+ paramsSchema: z.object({}).strict(),
24
+ thresholdSchema: z.object({}).strict(),
25
+ evaluate(input, state) {
26
+ const bag = state.bag.get('deliver') ?? { lifts: new Map(), outcomes: 0 };
27
+ state.bag.set('deliver', bag);
28
+ const e = input.event;
29
+ const ord = num(e['ord']);
30
+ const attempt = num(e['attempt']);
31
+ switch (input.type) {
32
+ case 'deliverLiftEvaluated': {
33
+ if (ord === null || attempt === null)
34
+ return [];
35
+ bag.outcomes++;
36
+ const outcome = typeof e['outcome'] === 'string' ? e['outcome'] : '';
37
+ const re = `deliverLiftEvaluated#${ord}:${attempt}`;
38
+ if (outcome === 'lifted') {
39
+ bag.lifts.set(keyOf(ord, attempt), { ord, attempt, rechecked: false, raised: false });
40
+ return [];
41
+ }
42
+ if (outcome === 'skipped') {
43
+ const note = typeof e['note'] === 'string' && e['note'] !== '' ? ` (${e['note'].slice(0, 160)})` : '';
44
+ return [
45
+ {
46
+ op: 'raise',
47
+ subject: `${ord}:${attempt}:lift-skipped`,
48
+ kind: 'flag',
49
+ severity: 'medium',
50
+ sentence: `The tree that ships was not re-checked on the newest main: the lift was skipped${note}.`,
51
+ facts: { outcome, base_ref: e['baseRef'] ?? null },
52
+ ord,
53
+ attempt,
54
+ re,
55
+ },
56
+ ];
57
+ }
58
+ if (outcome === 'conflict' || outcome === 'failed') {
59
+ const conflicts = Array.isArray(e['conflicts']) ? e['conflicts'].filter((c) => typeof c === 'string').slice(0, 10) : [];
60
+ return [
61
+ {
62
+ op: 'raise',
63
+ subject: `${ord}:${attempt}:lift-${outcome}`,
64
+ kind: 'flag',
65
+ severity: 'info',
66
+ sentence: outcome === 'conflict'
67
+ ? `Delivery stopped: the work would conflict with the newest main${conflicts.length > 0 ? ` in ${conflicts.length} file${conflicts.length === 1 ? '' : 's'}` : ''}. Nothing was pushed.`
68
+ : 'Delivery stopped: moving the work onto the newest main failed part-way. Nothing was pushed.',
69
+ facts: { outcome, conflicts },
70
+ ord,
71
+ attempt,
72
+ re,
73
+ },
74
+ ];
75
+ }
76
+ return [];
77
+ }
78
+ case 'repoChecksEvaluated': {
79
+ if (ord === null || attempt === null)
80
+ return [];
81
+ const lift = bag.lifts.get(keyOf(ord, attempt));
82
+ if (lift === undefined)
83
+ return [];
84
+ lift.rechecked = true;
85
+ // A late re-check resolves a raised finding (passing or failing: either way it ran). Cleared
86
+ // unconditionally — a restart may hold the row open while this life never raised it; a
87
+ // clear naming no row is a no-op in the emitter.
88
+ lift.raised = false;
89
+ return [{ op: 'clear', subject: `${ord}:${attempt}:lift-unverified` }];
90
+ }
91
+ case 'unitOutputCaptured':
92
+ case 'gateEvaluated': {
93
+ if (ord === null)
94
+ return [];
95
+ const out = [];
96
+ for (const lift of bag.lifts.values()) {
97
+ if (lift.ord !== ord || lift.rechecked || lift.raised)
98
+ continue;
99
+ // `gateEvaluated` carries no attempt: it closes every open lift of its unit.
100
+ if (input.type === 'unitOutputCaptured' && attempt !== null && attempt !== lift.attempt)
101
+ continue;
102
+ lift.raised = true;
103
+ out.push({
104
+ op: 'raise',
105
+ subject: `${lift.ord}:${lift.attempt}:lift-unverified`,
106
+ kind: 'finding',
107
+ severity: 'high',
108
+ sentence: 'The work was moved onto the newest main before delivery, and the moved tree was never re-checked.',
109
+ facts: { outcome: 'lifted', rechecked: false },
110
+ ord: lift.ord,
111
+ attempt: lift.attempt,
112
+ re: `deliverLiftEvaluated#${lift.ord}:${lift.attempt}`,
113
+ });
114
+ }
115
+ return out;
116
+ }
117
+ default:
118
+ return [];
119
+ }
120
+ },
121
+ coverage(state) {
122
+ const bag = state.bag.get('deliver');
123
+ if (bag !== undefined && bag.outcomes > 0)
124
+ return { state: 'checked' };
125
+ return { state: 'not_checked', reason: 'nothing was delivered on this run yet' };
126
+ },
127
+ describe: () => 'When delivery moves the work onto the newest main and the moved tree is not re-checked, or the move is skipped, conflicts or fails',
128
+ };
129
+ //# sourceMappingURL=deliver-audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deliver-audit.js","sourceRoot":"","sources":["../../../src/watch/checks/deliver-audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The check map (DES-TRIGGER-REGISTRY-001 §4.4): name → implementation, the ONE place a check is
3
+ * named. Each crew slice adds one line here (TR-W5b, W6, W7, W9), which is why they land in
4
+ * sequence. An entry naming a check that is not here is refused at load.
5
+ */
6
+ import type { WatchCheck } from '../types.js';
7
+ export declare const SHIPPED_CHECKS: ReadonlyMap<string, WatchCheck>;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/watch/checks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAS9C,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAUzD,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The check map (DES-TRIGGER-REGISTRY-001 §4.4): name → implementation, the ONE place a check is
3
+ * named. Each crew slice adds one line here (TR-W5b, W6, W7, W9), which is why they land in
4
+ * sequence. An entry naming a check that is not here is refused at load.
5
+ */
6
+ import { checkFailedCheck } from './check-failed.js';
7
+ import { claimVsEvidenceCheck } from './claim-vs-evidence.js';
8
+ import { deliverAuditCheck } from './deliver-audit.js';
9
+ import { lagCheck } from './lag.js';
10
+ import { quietAfterClaimCheck } from './quiet-after-claim.js';
11
+ import { ungatedCheck } from './ungated.js';
12
+ import { warnedRuleCheck } from './warned-rule.js';
13
+ export const SHIPPED_CHECKS = new Map([
14
+ [lagCheck.name, lagCheck],
15
+ [checkFailedCheck.name, checkFailedCheck],
16
+ // TR-W5b
17
+ [deliverAuditCheck.name, deliverAuditCheck],
18
+ [ungatedCheck.name, ungatedCheck],
19
+ [quietAfterClaimCheck.name, quietAfterClaimCheck],
20
+ // TR-W6
21
+ [claimVsEvidenceCheck.name, claimVsEvidenceCheck],
22
+ [warnedRuleCheck.name, warnedRuleCheck],
23
+ ]);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/watch/checks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,MAAM,cAAc,GAAoC,IAAI,GAAG,CAAqB;IACzF,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAiC,CAAC;IAClD,CAAC,gBAAgB,CAAC,IAAI,EAAE,gBAAyC,CAAC;IAClE,SAAS;IACT,CAAC,iBAAiB,CAAC,IAAI,EAAE,iBAA0C,CAAC;IACpE,CAAC,YAAY,CAAC,IAAI,EAAE,YAAqC,CAAC;IAC1D,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAA6C,CAAC;IAC1E,QAAQ;IACR,CAAC,oBAAoB,CAAC,IAAI,EAAE,oBAA6C,CAAC;IAC1E,CAAC,eAAe,CAAC,IAAI,EAAE,eAAwC,CAAC;CACjE,CAAC,CAAC"}