@agentsean/actions 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +661 -0
  2. package/dist/executor.d.ts +46 -0
  3. package/dist/executor.d.ts.map +1 -0
  4. package/dist/executor.js +150 -0
  5. package/dist/executor.js.map +1 -0
  6. package/dist/hmac.d.ts +4 -0
  7. package/dist/hmac.d.ts.map +1 -0
  8. package/dist/hmac.js +23 -0
  9. package/dist/hmac.js.map +1 -0
  10. package/dist/html.d.ts +15 -0
  11. package/dist/html.d.ts.map +1 -0
  12. package/dist/html.js +52 -0
  13. package/dist/html.js.map +1 -0
  14. package/dist/index.d.ts +12 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +12 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/kinds.d.ts +12 -0
  19. package/dist/kinds.d.ts.map +1 -0
  20. package/dist/kinds.js +135 -0
  21. package/dist/kinds.js.map +1 -0
  22. package/dist/payloads.d.ts +13 -0
  23. package/dist/payloads.d.ts.map +1 -0
  24. package/dist/payloads.js +368 -0
  25. package/dist/payloads.js.map +1 -0
  26. package/dist/persist.d.ts +65 -0
  27. package/dist/persist.d.ts.map +1 -0
  28. package/dist/persist.js +362 -0
  29. package/dist/persist.js.map +1 -0
  30. package/dist/planner.d.ts +20 -0
  31. package/dist/planner.d.ts.map +1 -0
  32. package/dist/planner.js +115 -0
  33. package/dist/planner.js.map +1 -0
  34. package/dist/scan.d.ts +19 -0
  35. package/dist/scan.d.ts.map +1 -0
  36. package/dist/scan.js +210 -0
  37. package/dist/scan.js.map +1 -0
  38. package/dist/types.d.ts +227 -0
  39. package/dist/types.d.ts.map +1 -0
  40. package/dist/types.js +29 -0
  41. package/dist/types.js.map +1 -0
  42. package/dist/urls.d.ts +6 -0
  43. package/dist/urls.d.ts.map +1 -0
  44. package/dist/urls.js +74 -0
  45. package/dist/urls.js.map +1 -0
  46. package/dist/validator.d.ts +9 -0
  47. package/dist/validator.d.ts.map +1 -0
  48. package/dist/validator.js +398 -0
  49. package/dist/validator.js.map +1 -0
  50. package/package.json +51 -0
@@ -0,0 +1,368 @@
1
+ import { ACTION_KIND_SET, KIND_TIER, isActionKind } from "./kinds.js";
2
+ import { ALT_MAX, ANCHOR_MAX, META_MAX, TITLE_MAX, } from "./types.js";
3
+ const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
4
+ export function isPlainObject(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+ function keysOf(obj) {
8
+ return Object.keys(obj).toSorted();
9
+ }
10
+ function expectKeys(obj, allowed) {
11
+ const extra = keysOf(obj).filter((k) => !allowed.includes(k));
12
+ if (extra.length)
13
+ return `unknown keys: ${extra.join(",")}`;
14
+ return null;
15
+ }
16
+ function str(obj, key, min, max) {
17
+ const v = obj[key];
18
+ if (typeof v !== "string")
19
+ throw new Error(`${key} must be a string`);
20
+ if (v.length < min || v.length > max) {
21
+ throw new Error(`${key} length ${v.length} outside ${min}-${max}`);
22
+ }
23
+ return v;
24
+ }
25
+ function uuid(obj, key) {
26
+ const v = obj[key];
27
+ if (typeof v !== "string" || !UUID_RE.test(v))
28
+ throw new Error(`${key} must be a uuid`);
29
+ return v;
30
+ }
31
+ function absHttpUrl(obj, key) {
32
+ const v = obj[key];
33
+ if (typeof v !== "string")
34
+ throw new Error(`${key} must be a url`);
35
+ let u;
36
+ try {
37
+ u = new URL(v);
38
+ }
39
+ catch {
40
+ throw new Error(`${key} is not a URL`);
41
+ }
42
+ if (u.protocol !== "http:" && u.protocol !== "https:") {
43
+ throw new Error(`${key} must be http(s)`);
44
+ }
45
+ if (u.username || u.password)
46
+ throw new Error(`${key} must not carry credentials`);
47
+ return u.href;
48
+ }
49
+ function parsePayload(kind, raw) {
50
+ if (!isPlainObject(raw))
51
+ throw new Error("payload must be an object");
52
+ switch (kind) {
53
+ case "rewrite_title":
54
+ case "rewrite_og_title":
55
+ case "fix_title_length": {
56
+ const err = expectKeys(raw, ["title"]);
57
+ if (err)
58
+ throw new Error(err);
59
+ return { title: str(raw, "title", 1, TITLE_MAX) };
60
+ }
61
+ case "rewrite_meta_description":
62
+ case "rewrite_og_description":
63
+ case "fix_meta_length": {
64
+ const err = expectKeys(raw, ["metaDescription"]);
65
+ if (err)
66
+ throw new Error(err);
67
+ return { metaDescription: str(raw, "metaDescription", 1, META_MAX) };
68
+ }
69
+ case "rewrite_alt_text": {
70
+ const err = expectKeys(raw, ["selector", "alt"]);
71
+ if (err)
72
+ throw new Error(err);
73
+ return {
74
+ selector: str(raw, "selector", 1, 200),
75
+ alt: str(raw, "alt", 1, ALT_MAX),
76
+ };
77
+ }
78
+ case "fix_heading":
79
+ case "add_h1": {
80
+ const err = expectKeys(raw, ["level", "text"]);
81
+ if (err)
82
+ throw new Error(err);
83
+ const level = raw["level"];
84
+ if (level !== 1 &&
85
+ level !== 2 &&
86
+ level !== 3 &&
87
+ level !== 4 &&
88
+ level !== 5 &&
89
+ level !== 6) {
90
+ throw new Error("level must be 1-6");
91
+ }
92
+ return { level, text: str(raw, "text", 1, 200) };
93
+ }
94
+ case "insert_internal_link":
95
+ case "repair_broken_internal_link": {
96
+ const err = expectKeys(raw, ["hrefPageId", "hrefUrl", "anchor"]);
97
+ if (err)
98
+ throw new Error(err);
99
+ return {
100
+ hrefPageId: uuid(raw, "hrefPageId"),
101
+ hrefUrl: absHttpUrl(raw, "hrefUrl"),
102
+ anchor: str(raw, "anchor", 1, ANCHOR_MAX),
103
+ };
104
+ }
105
+ case "add_jsonld":
106
+ case "update_jsonld":
107
+ case "add_faq_schema":
108
+ case "add_article_schema":
109
+ case "add_product_schema":
110
+ case "add_breadcrumb": {
111
+ const err = expectKeys(raw, ["type", "json"]);
112
+ if (err)
113
+ throw new Error(err);
114
+ const type = str(raw, "type", 1, 80);
115
+ const json = raw["json"];
116
+ if (!isPlainObject(json))
117
+ throw new Error("json must be an object");
118
+ return { type, json };
119
+ }
120
+ case "remove_invalid_jsonld": {
121
+ const err = expectKeys(raw, ["type", "json"]);
122
+ if (err)
123
+ throw new Error(err);
124
+ const json = raw["json"];
125
+ if (!isPlainObject(json))
126
+ throw new Error("json must be an object");
127
+ return { type: str(raw, "type", 1, 80), json };
128
+ }
129
+ case "refresh_content": {
130
+ const err = expectKeys(raw, ["body"]);
131
+ if (err)
132
+ throw new Error(err);
133
+ return { body: str(raw, "body", 1, 40_000) };
134
+ }
135
+ case "create_page": {
136
+ const err = expectKeys(raw, ["path", "title", "body"]);
137
+ if (err)
138
+ throw new Error(err);
139
+ const path = str(raw, "path", 1, 200);
140
+ if (!path.startsWith("/"))
141
+ throw new Error("path must start with /");
142
+ return {
143
+ path,
144
+ title: str(raw, "title", 1, TITLE_MAX),
145
+ body: str(raw, "body", 1, 40_000),
146
+ };
147
+ }
148
+ case "edit_robots_txt":
149
+ case "edit_llms_txt": {
150
+ const err = expectKeys(raw, ["body"]);
151
+ if (err)
152
+ throw new Error(err);
153
+ return { body: str(raw, "body", 0, 20_000) };
154
+ }
155
+ case "edit_meta_robots": {
156
+ const err = expectKeys(raw, ["content"]);
157
+ if (err)
158
+ throw new Error(err);
159
+ return { content: str(raw, "content", 1, 200) };
160
+ }
161
+ case "add_redirect": {
162
+ const err = expectKeys(raw, [
163
+ "fromPageId",
164
+ "fromUrl",
165
+ "toPageId",
166
+ "toUrl",
167
+ "status",
168
+ ]);
169
+ if (err)
170
+ throw new Error(err);
171
+ const status = raw["status"];
172
+ if (status !== 301 && status !== 410)
173
+ throw new Error("status must be 301 or 410");
174
+ return {
175
+ fromPageId: uuid(raw, "fromPageId"),
176
+ fromUrl: absHttpUrl(raw, "fromUrl"),
177
+ toPageId: uuid(raw, "toPageId"),
178
+ toUrl: absHttpUrl(raw, "toUrl"),
179
+ status,
180
+ };
181
+ }
182
+ case "change_canonical": {
183
+ const err = expectKeys(raw, ["canonicalPageId", "canonicalUrl"]);
184
+ if (err)
185
+ throw new Error(err);
186
+ return {
187
+ canonicalPageId: uuid(raw, "canonicalPageId"),
188
+ canonicalUrl: absHttpUrl(raw, "canonicalUrl"),
189
+ };
190
+ }
191
+ case "change_hreflang": {
192
+ const err = expectKeys(raw, ["lang", "hrefPageId", "hrefUrl"]);
193
+ if (err)
194
+ throw new Error(err);
195
+ return {
196
+ lang: str(raw, "lang", 2, 20),
197
+ hrefPageId: uuid(raw, "hrefPageId"),
198
+ hrefUrl: absHttpUrl(raw, "hrefUrl"),
199
+ };
200
+ }
201
+ case "regenerate_sitemap":
202
+ case "submit_sitemap": {
203
+ const err = expectKeys(raw, ["sitemapUrl"]);
204
+ if (err)
205
+ throw new Error(err);
206
+ return { sitemapUrl: absHttpUrl(raw, "sitemapUrl") };
207
+ }
208
+ case "add_image_dimensions": {
209
+ const err = expectKeys(raw, ["selector", "width", "height"]);
210
+ if (err)
211
+ throw new Error(err);
212
+ const width = raw["width"];
213
+ const height = raw["height"];
214
+ if (typeof width !== "number" || typeof height !== "number") {
215
+ throw new Error("width/height must be numbers");
216
+ }
217
+ if (!Number.isInteger(width) ||
218
+ !Number.isInteger(height) ||
219
+ width < 1 ||
220
+ height < 1) {
221
+ throw new Error("width/height must be positive integers");
222
+ }
223
+ return { selector: str(raw, "selector", 1, 200), width, height };
224
+ }
225
+ case "add_lang": {
226
+ const err = expectKeys(raw, ["lang"]);
227
+ if (err)
228
+ throw new Error(err);
229
+ return { lang: str(raw, "lang", 2, 20) };
230
+ }
231
+ case "add_viewport": {
232
+ const err = expectKeys(raw, ["content"]);
233
+ if (err)
234
+ throw new Error(err);
235
+ return { content: str(raw, "content", 1, 120) };
236
+ }
237
+ case "add_og_image": {
238
+ const err = expectKeys(raw, ["hrefPageId", "hrefUrl", "anchor"]);
239
+ if (err)
240
+ throw new Error(err);
241
+ return {
242
+ hrefPageId: uuid(raw, "hrefPageId"),
243
+ hrefUrl: absHttpUrl(raw, "hrefUrl"),
244
+ anchor: str(raw, "anchor", 1, ANCHOR_MAX),
245
+ };
246
+ }
247
+ case "observe_snapshot":
248
+ case "record_finding":
249
+ case "inspect_indexation":
250
+ case "delete_page": {
251
+ const err = expectKeys(raw, []);
252
+ if (err)
253
+ throw new Error(err);
254
+ return {};
255
+ }
256
+ case "send_outreach_email":
257
+ case "submit_disavow":
258
+ case "buy_link":
259
+ case "build_pbn":
260
+ case "exchange_links":
261
+ case "cloak":
262
+ case "sneaky_redirect":
263
+ case "hide_text":
264
+ case "write_third_party":
265
+ case "gate_reviews":
266
+ case "incentivize_reviews":
267
+ case "scrape_serp":
268
+ case "generate_ymyl":
269
+ case "generate_affiliate":
270
+ case "create_city_service_page": {
271
+ const err = expectKeys(raw, ["reason"]);
272
+ if (err)
273
+ throw new Error(err);
274
+ return { reason: str(raw, "reason", 1, 200) };
275
+ }
276
+ default: {
277
+ kind;
278
+ throw new Error("unhandled kind");
279
+ }
280
+ }
281
+ }
282
+ function parseImpact(raw) {
283
+ if (!isPlainObject(raw))
284
+ throw new Error("estimatedImpact must be an object");
285
+ const extra = expectKeys(raw, ["metric", "estimate", "confidence"]);
286
+ if (extra)
287
+ throw new Error(extra);
288
+ if (raw["metric"] !== "clicks")
289
+ throw new Error("estimatedImpact.metric must be clicks");
290
+ const estimate = raw["estimate"];
291
+ const confidence = raw["confidence"];
292
+ if (typeof estimate !== "number" || !Number.isFinite(estimate) || estimate < 0) {
293
+ throw new Error("estimate must be a non-negative number");
294
+ }
295
+ if (typeof confidence !== "number" || confidence < 0 || confidence > 1) {
296
+ throw new Error("confidence must be 0-1");
297
+ }
298
+ return { metric: "clicks", estimate, confidence };
299
+ }
300
+ function parseTarget(raw) {
301
+ if (!isPlainObject(raw))
302
+ throw new Error("target must be an object");
303
+ const extra = expectKeys(raw, ["pageId", "url"]);
304
+ if (extra)
305
+ throw new Error(extra);
306
+ return { pageId: uuid(raw, "pageId"), url: absHttpUrl(raw, "url") };
307
+ }
308
+ const ACTION_KEYS = [
309
+ "id",
310
+ "siteId",
311
+ "kind",
312
+ "tier",
313
+ "target",
314
+ "payload",
315
+ "rationale",
316
+ "findingIds",
317
+ "estimatedImpact",
318
+ ];
319
+ /** Closed-schema parse. Unknown keys, open enums, and free-string URLs fail. */
320
+ export function parseAction(raw) {
321
+ try {
322
+ if (!isPlainObject(raw))
323
+ return { ok: false, error: "action must be an object" };
324
+ const extra = expectKeys(raw, ACTION_KEYS);
325
+ if (extra)
326
+ return { ok: false, error: extra };
327
+ const kindRaw = raw["kind"];
328
+ if (typeof kindRaw !== "string" || !isActionKind(kindRaw)) {
329
+ return { ok: false, error: `unknown kind ${String(kindRaw)}` };
330
+ }
331
+ const tier = raw["tier"];
332
+ if (tier !== 0 && tier !== 1 && tier !== 2 && tier !== 3 && tier !== 4) {
333
+ return { ok: false, error: "tier must be 0-4" };
334
+ }
335
+ if (tier !== KIND_TIER[kindRaw]) {
336
+ return { ok: false, error: `tier ${tier} does not match kind ${kindRaw}` };
337
+ }
338
+ const rationale = raw["rationale"];
339
+ if (!Array.isArray(rationale) || rationale.some((r) => typeof r !== "string")) {
340
+ return { ok: false, error: "rationale must be string[]" };
341
+ }
342
+ if (rationale.length < 1 || rationale.length > 12) {
343
+ return { ok: false, error: "rationale must have 1-12 bullets" };
344
+ }
345
+ const findingIds = raw["findingIds"];
346
+ if (!Array.isArray(findingIds) ||
347
+ findingIds.some((id) => typeof id !== "string" || !UUID_RE.test(id))) {
348
+ return { ok: false, error: "findingIds must be uuid[]" };
349
+ }
350
+ const action = {
351
+ id: uuid(raw, "id"),
352
+ siteId: uuid(raw, "siteId"),
353
+ kind: kindRaw,
354
+ tier: tier,
355
+ target: parseTarget(raw["target"]),
356
+ payload: parsePayload(kindRaw, raw["payload"]),
357
+ rationale: rationale,
358
+ findingIds: findingIds,
359
+ estimatedImpact: parseImpact(raw["estimatedImpact"]),
360
+ };
361
+ return { ok: true, action };
362
+ }
363
+ catch (e) {
364
+ return { ok: false, error: e instanceof Error ? e.message : String(e) };
365
+ }
366
+ }
367
+ export { ACTION_KIND_SET };
368
+ //# sourceMappingURL=payloads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payloads.js","sourceRoot":"","sources":["../src/payloads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,EAAmB,MAAM,YAAY,CAAC;AACvF,OAAO,EACL,OAAO,EACP,UAAU,EACV,QAAQ,EACR,SAAS,GAKV,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,GACX,4EAA4E,CAAC;AAE/E,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,GAA4B;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,GAA4B,EAAE,OAAiB;IACjE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,iBAAiB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,GAAG,CACV,GAA4B,EAC5B,GAAW,EACX,GAAW,EACX,GAAW;IAEX,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,CAAC;IACtE,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,IAAI,CAAC,GAA4B,EAAE,GAAW;IACrD,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,iBAAiB,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,UAAU,CAAC,GAA4B,EAAE,GAAW;IAC3D,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;IACnE,IAAI,CAAM,CAAC;IACX,IAAI,CAAC;QACH,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,6BAA6B,CAAC,CAAC;IACnF,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAgB,EAAE,GAAY;IAClD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACtE,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe,CAAC;QACrB,KAAK,kBAAkB,CAAC;QACxB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,0BAA0B,CAAC;QAChC,KAAK,wBAAwB,CAAC;QAC9B,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACjD,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,eAAe,EAAE,GAAG,CAAC,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvE,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACjD,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC;gBACtC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC;aACjC,CAAC;QACJ,CAAC;QACD,KAAK,aAAa,CAAC;QACnB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YAC/C,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,IACE,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,CAAC,EACX,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACnD,CAAC;QACD,KAAK,sBAAsB,CAAC;QAC5B,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjE,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;gBACnC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;gBACnC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC;aAC1C,CAAC;QACJ,CAAC;QACD,KAAK,YAAY,CAAC;QAClB,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB,CAAC;QACtB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACpE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,KAAK,uBAAuB,CAAC,CAAC,CAAC;YAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9C,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;YACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACpE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QACjD,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACvD,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACrE,OAAO;gBACL,IAAI;gBACJ,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,CAAC;gBACtC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;aAClC,CAAC;QACJ,CAAC;QACD,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;QAC/C,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,YAAY;gBACZ,SAAS;gBACT,UAAU;gBACV,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;YACH,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG;gBAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;gBACnC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;gBACnC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC;gBAC/B,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;gBAC/B,MAAM;aACP,CAAC;QACJ,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;YACjE,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC;gBAC7C,YAAY,EAAE,UAAU,CAAC,GAAG,EAAE,cAAc,CAAC;aAC9C,CAAC;QACJ,CAAC;QACD,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;YAC/D,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;gBACnC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;aACpC,CAAC;QACJ,CAAC;QACD,KAAK,oBAAoB,CAAC;QAC1B,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5C,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,UAAU,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;QACvD,CAAC;QACD,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC7D,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAClD,CAAC;YACD,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;gBACxB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACzB,KAAK,GAAG,CAAC;gBACT,MAAM,GAAG,CAAC,EACV,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACnE,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAC3C,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;YACzC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjE,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC;gBACnC,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;gBACnC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,UAAU,CAAC;aAC1C,CAAC;QACJ,CAAC;QACD,KAAK,kBAAkB,CAAC;QACxB,KAAK,gBAAgB,CAAC;QACtB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,KAAK,qBAAqB,CAAC;QAC3B,KAAK,gBAAgB,CAAC;QACtB,KAAK,UAAU,CAAC;QAChB,KAAK,WAAW,CAAC;QACjB,KAAK,gBAAgB,CAAC;QACtB,KAAK,OAAO,CAAC;QACb,KAAK,iBAAiB,CAAC;QACvB,KAAK,WAAW,CAAC;QACjB,KAAK,mBAAmB,CAAC;QACzB,KAAK,cAAc,CAAC;QACpB,KAAK,qBAAqB,CAAC;QAC3B,KAAK,aAAa,CAAC;QACnB,KAAK,eAAe,CAAC;QACrB,KAAK,oBAAoB,CAAC;QAC1B,KAAK,0BAA0B,CAAC,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,IAAI,GAAG;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QAChD,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,IAAoB,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,IAAI,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;QAC5B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED,SAAS,WAAW,CAAC,GAAY;IAC/B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI;IACJ,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,WAAW;IACX,YAAY;IACZ,iBAAiB;CAClB,CAAC;AAEF,gFAAgF;AAChF,MAAM,UAAU,WAAW,CACzB,GAAY;IAEZ,IAAI,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC;QACjF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3C,IAAI,KAAK;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QACjE,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACvE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,IAAI,wBAAwB,OAAO,EAAE,EAAE,CAAC;QAC7E,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC9E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;QAC5D,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAClD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EACpE,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC;QAC3D,CAAC;QACD,MAAM,MAAM,GAAW;YACrB,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;YAC3B,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,IAAoB;YAC1B,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO,EAAE,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,SAAS,EAAE,SAAqB;YAChC,UAAU,EAAE,UAAsB;YAClC,eAAe,EAAE,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;SACrD,CAAC;QACF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { SqliteDatabase } from "@agentsean/db";
2
+ import type { Action, AppliedChange, EntitySource, SitePolicy, TwoKeyApproval } from "./types.js";
3
+ import { BLAST } from "./types.js";
4
+ export type StoredActionState = "proposed" | "queued" | "approved" | "applied" | "rejected" | "reverted" | "failed";
5
+ export type Envelope = {
6
+ payload: Action["payload"];
7
+ rationale: string[];
8
+ findingIds: string[];
9
+ estimatedImpact: Action["estimatedImpact"];
10
+ kind: Action["kind"];
11
+ target: Action["target"];
12
+ };
13
+ export declare function envelopeOf(action: Action): Envelope;
14
+ export declare function actionFromRow(row: {
15
+ id: string;
16
+ siteId: string;
17
+ pageId: string | null;
18
+ actionType: string;
19
+ targetRef: string;
20
+ payload: string | null;
21
+ tier: string;
22
+ state: string;
23
+ }): Action | null;
24
+ export declare function saveAction(db: SqliteDatabase, action: Action, state: StoredActionState, extra?: {
25
+ error?: string | undefined;
26
+ approvedBy?: string | undefined;
27
+ }): void;
28
+ export declare function recordChange(db: SqliteDatabase, action: Action, applied: AppliedChange): {
29
+ changeId: string;
30
+ };
31
+ export declare function loadChange(db: SqliteDatabase, changeId: string): AppliedChange | null;
32
+ export declare function markReverted(db: SqliteDatabase, changeId: string): void;
33
+ export declare function loadSitePolicy(db: SqliteDatabase, siteId: string): SitePolicy | null;
34
+ export declare function loadPages(db: SqliteDatabase, siteId: string): {
35
+ id: string;
36
+ url: string;
37
+ title: string | null;
38
+ metaDescription: string | null;
39
+ h1: string | null;
40
+ }[];
41
+ export declare function loadAllowlist(db: SqliteDatabase, siteId: string): string[];
42
+ export declare function loadEntities(db: SqliteDatabase, siteId: string): {
43
+ entity: string;
44
+ source: EntitySource;
45
+ }[];
46
+ export declare function loadTwoKey(db: SqliteDatabase, actionId: string): TwoKeyApproval[];
47
+ export declare function addTwoKey(db: SqliteDatabase, actionId: string, actor: string, hmac: string): void;
48
+ export declare function recordEntity(db: SqliteDatabase, siteId: string, entity: string, entityKind: string, source: EntitySource): void;
49
+ export declare function upsertAdapterConnection(db: SqliteDatabase, siteId: string, kind: string, config: Record<string, unknown>): void;
50
+ export declare function loadAdapterConnection(db: SqliteDatabase, siteId: string, kind: string): Record<string, unknown> | null;
51
+ export declare function listAdapterConnections(db: SqliteDatabase, siteId: string): Array<{
52
+ kind: string;
53
+ config: Record<string, unknown>;
54
+ }>;
55
+ export declare function upsertGitConnection(db: SqliteDatabase, siteId: string, config: Record<string, unknown>): void;
56
+ export declare function loadGitConnection(db: SqliteDatabase, siteId: string): Record<string, unknown> | null;
57
+ export declare function countsForLedger(db: SqliteDatabase, siteId: string, now: Date): {
58
+ appliedThisHour: number;
59
+ appliedThisDay: number;
60
+ newPagesToday: number;
61
+ contentRefreshToday: number;
62
+ spentUsdToday: number;
63
+ };
64
+ export { BLAST };
65
+ //# sourceMappingURL=persist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persist.d.ts","sourceRoot":"","sources":["../src/persist.ts"],"names":[],"mappings":"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"}