@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,398 @@
1
+ import { CONTENT_GEN_KINDS, CONTENT_REFRESH_KINDS, KIND_TIER, NEW_PAGE_KINDS, TWO_KEY_KINDS, } from "./kinds.js";
2
+ import { parseAction } from "./payloads.js";
3
+ import { bannedHits, collectActionText, encodedPayloadHits, invisibleHits, } from "./scan.js";
4
+ import { verifyApproval } from "./hmac.js";
5
+ import { extractDomains, extractUrls, matchGlob, sameSite } from "./urls.js";
6
+ import { BLAST, DIFF_CAPS, META_MAX, TITLE_MAX, } from "./types.js";
7
+ function veto(check, code, detail) {
8
+ return { check, code, detail };
9
+ }
10
+ function afterLen(ctx) {
11
+ return Buffer.byteLength(ctx.afterText, "utf8");
12
+ }
13
+ function beforeLen(ctx) {
14
+ return Buffer.byteLength(ctx.beforeText, "utf8");
15
+ }
16
+ function changedBytes(ctx) {
17
+ const a = Buffer.from(ctx.beforeText, "utf8");
18
+ const b = Buffer.from(ctx.afterText, "utf8");
19
+ return (Math.abs(b.length - a.length) +
20
+ levenshteinCap(ctx.beforeText, ctx.afterText, 50_000));
21
+ }
22
+ function levenshteinCap(a, b, cap) {
23
+ if (a === b)
24
+ return 0;
25
+ if (Math.abs(a.length - b.length) > cap)
26
+ return cap + 1;
27
+ const m = a.length;
28
+ const n = b.length;
29
+ if (m * n > 400_000)
30
+ return Math.abs(m - n);
31
+ const prev = new Uint32Array(n + 1);
32
+ const cur = new Uint32Array(n + 1);
33
+ for (let j = 0; j <= n; j++)
34
+ prev[j] = j;
35
+ for (let i = 1; i <= m; i++) {
36
+ cur[0] = i;
37
+ const ca = a.charCodeAt(i - 1);
38
+ for (let j = 1; j <= n; j++) {
39
+ const cost = ca === b.charCodeAt(j - 1) ? 0 : 1;
40
+ cur[j] = Math.min((cur[j - 1] ?? 0) + 1, (prev[j] ?? 0) + 1, (prev[j - 1] ?? 0) + cost);
41
+ }
42
+ prev.set(cur);
43
+ }
44
+ return prev[n] ?? cap + 1;
45
+ }
46
+ function pageById(ctx, id) {
47
+ return ctx.pages.find((p) => p.id === id);
48
+ }
49
+ function pageByUrl(ctx, url) {
50
+ return ctx.pages.find((p) => p.url === url);
51
+ }
52
+ function urlAllowed(ctx, url) {
53
+ if (pageByUrl(ctx, url))
54
+ return true;
55
+ if (ctx.allowlist.includes(url))
56
+ return true;
57
+ return false;
58
+ }
59
+ function firstAppearanceOk(ctx, entity) {
60
+ const row = ctx.entities.find((e) => e.entity === entity);
61
+ if (!row)
62
+ return false;
63
+ return row.source === "crawl" || row.source === "user";
64
+ }
65
+ function payloadUrls(action) {
66
+ const fromPayload = extractUrls(action.payload);
67
+ const fromRationale = extractUrls(action.rationale);
68
+ return [...new Set([...fromPayload, ...fromRationale])];
69
+ }
70
+ function payloadDomains(action) {
71
+ return extractDomains({ payload: action.payload, rationale: action.rationale });
72
+ }
73
+ function checkSchema(raw) {
74
+ const parsed = parseAction(raw);
75
+ if (!parsed.ok) {
76
+ return { vetoes: [veto(1, "SCHEMA", parsed.error)] };
77
+ }
78
+ return { action: parsed.action };
79
+ }
80
+ function checkTarget(action, ctx) {
81
+ const page = pageById(ctx, action.target.pageId);
82
+ if (!page) {
83
+ return [
84
+ veto(2, "TARGET_BINDING", `pageId ${action.target.pageId} is not in the crawl table`),
85
+ ];
86
+ }
87
+ if (page.url !== action.target.url) {
88
+ return [
89
+ veto(2, "TARGET_BINDING", `target.url ${action.target.url} does not match crawled page ${page.url}`),
90
+ ];
91
+ }
92
+ if (pageByUrl(ctx, action.target.url)?.id !== action.target.pageId) {
93
+ return [veto(2, "TARGET_BINDING", "target url/pageId pair is inconsistent")];
94
+ }
95
+ if (!sameSite(action.target.url, ctx.site.origin)) {
96
+ return [veto(2, "TARGET_BINDING", "target url is off-site")];
97
+ }
98
+ for (const glob of ctx.site.neverTouchGlobs) {
99
+ if (matchGlob(action.target.url, glob)) {
100
+ return [veto(2, "TARGET_BINDING", `target matches never-touch glob ${glob}`)];
101
+ }
102
+ }
103
+ return [];
104
+ }
105
+ function checkUrlAllowlist(action, ctx) {
106
+ const urls = payloadUrls(action);
107
+ const out = [];
108
+ for (const url of urls) {
109
+ if (url === action.target.url)
110
+ continue;
111
+ if (!urlAllowed(ctx, url)) {
112
+ out.push(veto(3, "URL_ALLOWLIST", `payload url not crawled or allowlisted: ${url}`));
113
+ }
114
+ if (!sameSite(url, ctx.site.origin) && !ctx.allowlist.includes(url)) {
115
+ out.push(veto(3, "URL_ALLOWLIST", `off-site url requires allowlist: ${url}`));
116
+ }
117
+ }
118
+ return out;
119
+ }
120
+ function checkFirstAppearance(action, ctx) {
121
+ const out = [];
122
+ const urls = [action.target.url, ...payloadUrls(action)];
123
+ for (const url of urls) {
124
+ if (!firstAppearanceOk(ctx, url) &&
125
+ !pageByUrl(ctx, url) &&
126
+ !ctx.allowlist.includes(url)) {
127
+ out.push(veto(4, "FIRST_APPEARANCE", `url first appeared outside our crawl table: ${url}`));
128
+ }
129
+ const row = ctx.entities.find((e) => e.entity === url);
130
+ if (row?.source === "third_party") {
131
+ out.push(veto(4, "FIRST_APPEARANCE", `entity first seen in third-party content: ${url}`));
132
+ }
133
+ }
134
+ for (const domain of payloadDomains(action)) {
135
+ const originHost = new URL(ctx.site.origin).hostname.toLowerCase();
136
+ if (domain === originHost)
137
+ continue;
138
+ const asUrl = ctx.pages.some((p) => {
139
+ try {
140
+ return new URL(p.url).hostname.toLowerCase() === domain;
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ });
146
+ if (asUrl)
147
+ continue;
148
+ const row = ctx.entities.find((e) => e.entity === domain || e.entity.endsWith(`.${domain}`));
149
+ if (row?.source === "third_party") {
150
+ out.push(veto(4, "FIRST_APPEARANCE", `domain first seen in third-party content: ${domain}`));
151
+ }
152
+ else if (!row && !ctx.allowlist.some((u) => u.includes(domain))) {
153
+ const mentioned = collectActionText(action.payload);
154
+ if (mentioned.includes(domain) && domain !== originHost) {
155
+ out.push(veto(4, "FIRST_APPEARANCE", `untracked domain in payload: ${domain}`));
156
+ }
157
+ }
158
+ }
159
+ return out;
160
+ }
161
+ const FIELD_KINDS = new Set([
162
+ "rewrite_title",
163
+ "rewrite_meta_description",
164
+ "rewrite_og_title",
165
+ "rewrite_og_description",
166
+ "rewrite_alt_text",
167
+ "fix_heading",
168
+ "add_h1",
169
+ "fix_title_length",
170
+ "fix_meta_length",
171
+ ]);
172
+ function fieldDiff(action, ctx) {
173
+ const page = pageById(ctx, action.target.pageId);
174
+ if ("title" in action.payload) {
175
+ return { before: page?.title ?? "", after: action.payload.title };
176
+ }
177
+ if ("metaDescription" in action.payload) {
178
+ return {
179
+ before: page?.metaDescription ?? "",
180
+ after: action.payload.metaDescription,
181
+ };
182
+ }
183
+ if ("alt" in action.payload) {
184
+ return { before: "", after: action.payload.alt };
185
+ }
186
+ if ("text" in action.payload) {
187
+ return { before: page?.h1 ?? "", after: action.payload.text };
188
+ }
189
+ return null;
190
+ }
191
+ function checkDiffCaps(action, ctx) {
192
+ const cap = DIFF_CAPS[action.kind] ?? DIFF_CAPS["default"];
193
+ const field = FIELD_KINDS.has(action.kind) ? fieldDiff(action, ctx) : null;
194
+ const before = field ? Buffer.byteLength(field.before, "utf8") : beforeLen(ctx);
195
+ const after = field ? Buffer.byteLength(field.after, "utf8") : afterLen(ctx);
196
+ const changed = field
197
+ ? Math.abs(after - before) + levenshteinCap(field.before, field.after, cap.maxBytes)
198
+ : changedBytes(ctx);
199
+ if (changed > cap.maxBytes) {
200
+ return [veto(5, "DIFF_CAPS", `changed ${changed} bytes, cap ${cap.maxBytes}`)];
201
+ }
202
+ const contentKind = CONTENT_GEN_KINDS.has(action.kind);
203
+ if (!field && !contentKind && before > 0) {
204
+ const pct = (changed / before) * 100;
205
+ if (pct > cap.maxPct && changed > 40) {
206
+ return [
207
+ veto(5, "DIFF_CAPS", `changed ${pct.toFixed(1)}% of page, cap ${cap.maxPct}%`),
208
+ ];
209
+ }
210
+ }
211
+ if (!field && !contentKind && after > before * 1.5 + 200 && before > 0) {
212
+ return [veto(5, "DIFF_CAPS", "after is more than 1.5× before + 200 bytes")];
213
+ }
214
+ if ("title" in action.payload && action.payload.title.length > TITLE_MAX) {
215
+ return [veto(5, "DIFF_CAPS", `title longer than ${TITLE_MAX}`)];
216
+ }
217
+ if ("metaDescription" in action.payload &&
218
+ action.payload.metaDescription.length > META_MAX) {
219
+ return [veto(5, "DIFF_CAPS", `meta description longer than ${META_MAX}`)];
220
+ }
221
+ return [];
222
+ }
223
+ function checkBlast(action, ctx) {
224
+ if (ctx.halted || ctx.site.killswitch) {
225
+ return [veto(6, "BLAST_RADIUS", "kill switch is on; no writes")];
226
+ }
227
+ if (ctx.appliedThisRun >= BLAST.maxUrlsPerRun) {
228
+ return [veto(6, "BLAST_RADIUS", `run already touched ${BLAST.maxUrlsPerRun} URLs`)];
229
+ }
230
+ if (ctx.appliedThisHour >= BLAST.maxPerHour) {
231
+ return [veto(6, "BLAST_RADIUS", `hourly cap ${BLAST.maxPerHour} reached`)];
232
+ }
233
+ if (ctx.appliedThisDay >= BLAST.maxPerDay) {
234
+ return [veto(6, "BLAST_RADIUS", `daily cap ${BLAST.maxPerDay} reached`)];
235
+ }
236
+ return [];
237
+ }
238
+ function checkPolicy(action, ctx) {
239
+ const locked = KIND_TIER[action.kind];
240
+ if (action.tier !== locked) {
241
+ return [veto(7, "POLICY_TIER", `kind ${action.kind} is locked at T${locked}`)];
242
+ }
243
+ if (locked === 4) {
244
+ return [
245
+ veto(7, "POLICY_TIER", `kind ${action.kind} is T4 refused; no setting exists`),
246
+ ];
247
+ }
248
+ if (locked === 0) {
249
+ return [veto(7, "POLICY_TIER", "T0 observe actions must not write")];
250
+ }
251
+ if (ctx.site.autonomyMode === "observe" && locked >= 1) {
252
+ return [veto(7, "POLICY_TIER", "site is in observe mode")];
253
+ }
254
+ return [];
255
+ }
256
+ function checkBudget(ctx) {
257
+ if (ctx.estimatedCostUsd <= 0)
258
+ return [];
259
+ if (ctx.spentUsdToday + ctx.estimatedCostUsd > ctx.budgetUsdDaily) {
260
+ return [
261
+ veto(8, "BUDGET", `$${ctx.spentUsdToday + ctx.estimatedCostUsd} would exceed daily budget $${ctx.budgetUsdDaily}`),
262
+ ];
263
+ }
264
+ return [];
265
+ }
266
+ function checkInvisible(action) {
267
+ const text = collectActionText({
268
+ payload: action.payload,
269
+ rationale: action.rationale,
270
+ });
271
+ const hits = invisibleHits(text);
272
+ if (hits.count > 0) {
273
+ return [
274
+ veto(9, "INVISIBLE_CHARS", `output contains ${hits.count} invisible chars (${hits.kinds.join(",")})`),
275
+ ];
276
+ }
277
+ return [];
278
+ }
279
+ function checkEncoded(action) {
280
+ const text = collectActionText({
281
+ payload: action.payload,
282
+ rationale: action.rationale,
283
+ });
284
+ const hits = encodedPayloadHits(text);
285
+ if (hits.length) {
286
+ return [veto(10, "ENCODED_PAYLOAD", hits.join(","))];
287
+ }
288
+ return [];
289
+ }
290
+ function checkBanned(action) {
291
+ const text = collectActionText({
292
+ payload: action.payload,
293
+ rationale: action.rationale,
294
+ });
295
+ const hits = bannedHits(text);
296
+ if (hits.length) {
297
+ return [veto(11, "BANNED_SUBSTRING", hits.join(","))];
298
+ }
299
+ if ("title" in action.payload) {
300
+ if (/https?:\/\//i.test(action.payload.title) || /</.test(action.payload.title)) {
301
+ return [veto(11, "BANNED_SUBSTRING", "title must not contain a URL or HTML")];
302
+ }
303
+ }
304
+ if ("metaDescription" in action.payload) {
305
+ if (/</.test(action.payload.metaDescription)) {
306
+ return [veto(11, "BANNED_SUBSTRING", "meta description must not contain HTML")];
307
+ }
308
+ }
309
+ return [];
310
+ }
311
+ function checkTwoKey(action, ctx) {
312
+ if (!TWO_KEY_KINDS.has(action.kind) && action.tier !== 3)
313
+ return [];
314
+ const unique = new Map();
315
+ for (const a of ctx.twoKeyApprovals) {
316
+ if (!verifyApproval(ctx.approvalKey, action, a.actor, a.hmac)) {
317
+ return [veto(12, "TWO_KEY", `invalid hmac for actor ${a.actor}`)];
318
+ }
319
+ unique.set(a.actor, a.hmac);
320
+ }
321
+ if (unique.size < 2) {
322
+ return [
323
+ veto(12, "TWO_KEY", `${action.kind} requires two distinct HMAC-signed approvals (have ${unique.size})`),
324
+ ];
325
+ }
326
+ return [];
327
+ }
328
+ function checkVertical(action, ctx) {
329
+ const cat = (ctx.site.ymylCategory ?? "").toLowerCase();
330
+ if (!cat)
331
+ return [];
332
+ const blocked = cat === "ymyl" || cat === "affiliate" || cat === "yours-money-your-life";
333
+ if (blocked && CONTENT_GEN_KINDS.has(action.kind)) {
334
+ return [
335
+ veto(13, "VERTICAL_BLOCK", `content generation is T4-blocked for ${cat} sites`),
336
+ ];
337
+ }
338
+ return [];
339
+ }
340
+ function checkObserve(ctx) {
341
+ if (!ctx.site.observeUntil)
342
+ return [];
343
+ const until = Date.parse(ctx.site.observeUntil);
344
+ if (Number.isNaN(until))
345
+ return [veto(14, "OBSERVE_PERIOD", "observeUntil is not a date")];
346
+ if (ctx.now.getTime() < until) {
347
+ return [
348
+ veto(14, "OBSERVE_PERIOD", `site is in observe-only until ${ctx.site.observeUntil}; writes are queued`),
349
+ ];
350
+ }
351
+ return [];
352
+ }
353
+ function checkRate(action, ctx) {
354
+ if (NEW_PAGE_KINDS.has(action.kind) && ctx.newPagesToday >= BLAST.newPagesPerDay) {
355
+ return [veto(15, "RATE_LIMIT", `new-page cap is ${BLAST.newPagesPerDay}/day/site`)];
356
+ }
357
+ if (CONTENT_REFRESH_KINDS.has(action.kind) &&
358
+ ctx.contentRefreshToday >= BLAST.contentRefreshPerDay) {
359
+ return [
360
+ veto(15, "RATE_LIMIT", `content-refresh cap is ${BLAST.contentRefreshPerDay}/day/site`),
361
+ ];
362
+ }
363
+ return [];
364
+ }
365
+ /**
366
+ * Deterministic reference monitor. No network, no LLM. Every check can veto.
367
+ * Checks are independent: we collect all vetoes rather than failing closed on the first,
368
+ * so the red-team suite can assert on stable codes.
369
+ */
370
+ export function validateAction(raw, ctx) {
371
+ const schema = checkSchema(raw);
372
+ if ("vetoes" in schema)
373
+ return { ok: false, vetoes: schema.vetoes };
374
+ const action = schema.action;
375
+ const vetoes = [
376
+ ...checkTarget(action, ctx),
377
+ ...checkUrlAllowlist(action, ctx),
378
+ ...checkFirstAppearance(action, ctx),
379
+ ...checkDiffCaps(action, ctx),
380
+ ...checkBlast(action, ctx),
381
+ ...checkPolicy(action, ctx),
382
+ ...checkBudget(ctx),
383
+ ...checkInvisible(action),
384
+ ...checkEncoded(action),
385
+ ...checkBanned(action),
386
+ ...checkTwoKey(action, ctx),
387
+ ...checkVertical(action, ctx),
388
+ ...checkObserve(ctx),
389
+ ...checkRate(action, ctx),
390
+ ];
391
+ if (vetoes.length)
392
+ return { ok: false, vetoes };
393
+ return { ok: true };
394
+ }
395
+ export function validateParsed(action, ctx) {
396
+ return validateAction(action, ctx);
397
+ }
398
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../src/validator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@agentsean/actions",
3
+ "version": "1.0.0",
4
+ "license": "AGPL-3.0-only",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ }
11
+ },
12
+ "files": [
13
+ "dist"
14
+ ],
15
+ "engines": {
16
+ "node": ">=22.19.0"
17
+ },
18
+ "dependencies": {
19
+ "drizzle-orm": "0.45.2",
20
+ "@agentsean/db": "1.0.0"
21
+ },
22
+ "devDependencies": {
23
+ "typescript": "~5.9.3",
24
+ "vitest": "^4.1.11"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "git+https://github.com/seziro-team/agentsean.git",
32
+ "directory": "packages/actions"
33
+ },
34
+ "homepage": "https://github.com/seziro-team/agentsean#readme",
35
+ "bugs": {
36
+ "url": "https://github.com/seziro-team/agentsean/issues"
37
+ },
38
+ "author": "Seziro (https://seziro.com)",
39
+ "description": "Agent Sean — actions module",
40
+ "keywords": [
41
+ "seo",
42
+ "agent",
43
+ "agentsean",
44
+ "seo-automation"
45
+ ],
46
+ "scripts": {
47
+ "build": "tsc -p tsconfig.json",
48
+ "typecheck": "tsc -p tsconfig.json --noEmit",
49
+ "test": "vitest run --config ../../vitest.config.ts"
50
+ }
51
+ }