@caelo-cms/shared 0.10.57 → 0.10.59

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 (64) hide show
  1. package/dist/ai-tools.d.ts +30 -0
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +26 -9
  4. package/dist/ai-tools.js.map +1 -1
  5. package/dist/bug-intake.d.ts +176 -0
  6. package/dist/bug-intake.d.ts.map +1 -0
  7. package/dist/bug-intake.js +200 -0
  8. package/dist/bug-intake.js.map +1 -0
  9. package/dist/content.js +7 -7
  10. package/dist/edit-markers.d.ts +49 -0
  11. package/dist/edit-markers.d.ts.map +1 -0
  12. package/dist/edit-markers.js +225 -0
  13. package/dist/edit-markers.js.map +1 -0
  14. package/dist/google-oauth.d.ts +22 -0
  15. package/dist/google-oauth.d.ts.map +1 -0
  16. package/dist/google-oauth.js +25 -0
  17. package/dist/google-oauth.js.map +1 -0
  18. package/dist/index.d.ts +4 -0
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/link-canonicalise.d.ts +109 -0
  23. package/dist/link-canonicalise.d.ts.map +1 -0
  24. package/dist/link-canonicalise.js +471 -0
  25. package/dist/link-canonicalise.js.map +1 -0
  26. package/dist/link-refs.d.ts +63 -8
  27. package/dist/link-refs.d.ts.map +1 -1
  28. package/dist/link-refs.js +80 -14
  29. package/dist/link-refs.js.map +1 -1
  30. package/dist/media.d.ts.map +1 -1
  31. package/dist/media.js +15 -0
  32. package/dist/media.js.map +1 -1
  33. package/dist/nested-module-render.d.ts +17 -0
  34. package/dist/nested-module-render.d.ts.map +1 -1
  35. package/dist/nested-module-render.js +45 -6
  36. package/dist/nested-module-render.js.map +1 -1
  37. package/dist/page-log.d.ts +1 -1
  38. package/dist/preview-compose.d.ts.map +1 -1
  39. package/dist/preview-compose.js +12 -2
  40. package/dist/preview-compose.js.map +1 -1
  41. package/dist/theme-normalize.d.ts.map +1 -1
  42. package/dist/theme-normalize.js +17 -2
  43. package/dist/theme-normalize.js.map +1 -1
  44. package/dist/version.d.ts +2 -2
  45. package/dist/version.js +1 -1
  46. package/package.json +1 -1
  47. package/src/ai-tools.ts +29 -11
  48. package/src/bug-intake.test.ts +154 -0
  49. package/src/bug-intake.ts +256 -0
  50. package/src/content.ts +7 -7
  51. package/src/edit-markers.test.ts +111 -0
  52. package/src/edit-markers.ts +244 -0
  53. package/src/google-oauth.ts +27 -0
  54. package/src/index.ts +4 -0
  55. package/src/link-canonicalise.test.ts +387 -0
  56. package/src/link-canonicalise.ts +598 -0
  57. package/src/link-refs.test.ts +206 -0
  58. package/src/link-refs.ts +119 -21
  59. package/src/media.ts +16 -0
  60. package/src/nested-module-render.ts +59 -4
  61. package/src/preview-compose.ts +11 -2
  62. package/src/theme-normalize-typography-subfields.test.ts +54 -0
  63. package/src/theme-normalize.ts +19 -2
  64. package/src/version.ts +1 -1
@@ -230,8 +230,12 @@ export function normalizeTokens(input) {
230
230
  // resulting document validates. applyDtcgWrites merges this into
231
231
  // any existing typography composite at the path so partial updates
232
232
  // don't erase sibling sub-fields.
233
+ // Numbers wrap too: the admin form coerces `.lineHeight` / `.fontWeight`
234
+ // to numbers, and an unwrapped `1.6` would replace the whole composite.
233
235
  let storedValue = rawValue;
234
- if (resolved.compositeWrap && typeof rawValue === "string" && !ALIAS_REGEX.test(rawValue)) {
236
+ if (resolved.compositeWrap &&
237
+ (typeof rawValue === "number" ||
238
+ (typeof rawValue === "string" && !ALIAS_REGEX.test(rawValue)))) {
235
239
  storedValue = { [resolved.compositeWrap]: rawValue };
236
240
  }
237
241
  else if (resolved.inferredType === "gradient" &&
@@ -248,11 +252,19 @@ export function normalizeTokens(input) {
248
252
  // rather than us silently inventing a gradient (CLAUDE.md §2).
249
253
  storedValue = gradientObjectToCss(rawValue) ?? rawValue;
250
254
  }
255
+ // Several sub-field inputs (`typography.body.fontSize` +
256
+ // `typography.body.lineHeight`) collapse onto the same composite
257
+ // path; merge them so the last one doesn't silently drop the others.
258
+ const prior = set[resolved.path];
259
+ if (resolved.compositeWrap && isPlainObject(prior) && isPlainObject(storedValue)) {
260
+ storedValue = { ...prior, ...storedValue };
261
+ }
251
262
  set[resolved.path] = storedValue;
252
263
  types[resolved.path] = resolved.inferredType;
253
264
  if (envelopeDescription !== undefined)
254
265
  descriptions[resolved.path] = envelopeDescription;
255
- paths.push(resolved.path);
266
+ if (!paths.includes(resolved.path))
267
+ paths.push(resolved.path);
256
268
  }
257
269
  return { set, types, descriptions, canonicalPaths: paths };
258
270
  }
@@ -643,4 +655,7 @@ function similarity(a, b) {
643
655
  function tokenise(s) {
644
656
  return s.split(/[.\-_]/).filter((p) => p.length > 0);
645
657
  }
658
+ function isPlainObject(v) {
659
+ return v !== null && typeof v === "object" && !Array.isArray(v);
660
+ }
646
661
  //# sourceMappingURL=theme-normalize.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-normalize.js","sourceRoot":"","sources":["../src/theme-normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-normalize.js","sourceRoot":"","sources":["../src/theme-normalize.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -19,7 +19,7 @@
19
19
  * Format: SemVer 2.0.0. Pre-1.0 minor bumps are breaking; post-1.0
20
20
  * follow standard SemVer.
21
21
  */
22
- export declare const CAELO_VERSION = "0.10.57";
22
+ export declare const CAELO_VERSION = "0.10.59";
23
23
  /**
24
24
  * Deprecated alias for back-compat — early P17 work spelled this
25
25
  * `CALEO_VERSION` (typo of "Caelo"). New code should import
@@ -31,7 +31,7 @@ export declare const CAELO_VERSION = "0.10.57";
31
31
  *
32
32
  * @deprecated use CAELO_VERSION
33
33
  */
34
- export declare const CALEO_VERSION = "0.10.57";
34
+ export declare const CALEO_VERSION = "0.10.59";
35
35
  /**
36
36
  * Parsed shape — major/minor/patch + optional pre-release tag.
37
37
  * Stable interface for callers that need to feature-gate (rare —
package/dist/version.js CHANGED
@@ -20,7 +20,7 @@
20
20
  * Format: SemVer 2.0.0. Pre-1.0 minor bumps are breaking; post-1.0
21
21
  * follow standard SemVer.
22
22
  */
23
- export const CAELO_VERSION = "0.10.57";
23
+ export const CAELO_VERSION = "0.10.59";
24
24
  /**
25
25
  * Deprecated alias for back-compat — early P17 work spelled this
26
26
  * `CALEO_VERSION` (typo of "Caelo"). New code should import
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caelo-cms/shared",
3
- "version": "0.10.57",
3
+ "version": "0.10.59",
4
4
  "private": false,
5
5
  "license": "MPL-2.0",
6
6
  "description": "Shared Zod schemas + types + the two-pass HTML composer used by every Caelo CMS workspace package. Stable enough for plugin authors and embedders to depend on directly.",
package/src/ai-tools.ts CHANGED
@@ -425,6 +425,34 @@ export type ChatAttachment = z.infer<typeof chatAttachmentSchema>;
425
425
  /** issue #190 — attachments-per-message cap; bounds provider payload size. */
426
426
  export const CHAT_MAX_ATTACHMENTS = 4;
427
427
 
428
+ /**
429
+ * An element reference riding a chat message. `selector` is empty for a
430
+ * module picked from the composer's module dropdown. `selectedText` and
431
+ * `context` come from a right-click / text selection in the live-edit
432
+ * preview (#916): what the operator selected and the text of the block
433
+ * around it, so the AI knows exactly what was meant. `blockName` /
434
+ * `position` / `field` / `index` (#917) name the placement field the text
435
+ * comes from when the preview marked it, so the AI can address it in
436
+ * `set_page_module_content` without inspecting the page first.
437
+ */
438
+ export const chatChipSchema = z
439
+ .object({
440
+ moduleId: z.string().uuid(),
441
+ selector: z.string().max(500),
442
+ label: z.string().min(1).max(200),
443
+ selectedText: z.string().min(1).max(2000).optional(),
444
+ context: z.string().min(1).max(500).optional(),
445
+ blockName: z.string().min(1).max(80).optional(),
446
+ position: z.number().int().nonnegative().optional(),
447
+ field: z.string().min(1).max(200).optional(),
448
+ index: z.number().int().nonnegative().optional(),
449
+ })
450
+ .strict();
451
+ export type ChatChip = z.infer<typeof chatChipSchema>;
452
+
453
+ /** Cap on chips per message; bounds the persisted user-message size. */
454
+ export const CHAT_MAX_CHIPS = 20;
455
+
428
456
  export const chatSendMessageInput = z
429
457
  .object({
430
458
  chatSessionId: z.string().uuid(),
@@ -434,17 +462,7 @@ export const chatSendMessageInput = z
434
462
  content: z.string().min(1).max(8000).optional(),
435
463
  previewSelection: pluginPreviewSelectionSchema.optional(),
436
464
  /** Element-reference chips appended to the message. */
437
- chips: z
438
- .array(
439
- z
440
- .object({
441
- moduleId: z.string().uuid(),
442
- selector: z.string().min(1).max(500),
443
- label: z.string().min(1).max(200),
444
- })
445
- .strict(),
446
- )
447
- .default([]),
465
+ chips: z.array(chatChipSchema).max(CHAT_MAX_CHIPS).default([]),
448
466
  /** issue #190 — operator-attached images (see chatAttachmentSchema). */
449
467
  attachments: z.array(chatAttachmentSchema).max(CHAT_MAX_ATTACHMENTS).default([]),
450
468
  /**
@@ -0,0 +1,154 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+
3
+ /**
4
+ * Epic #901 — the install↔intake contract. The fingerprint must merge the
5
+ * same defect across installs and versions while keeping different defects
6
+ * apart; redaction must strip everything personal or secret before a report
7
+ * is queued, without destroying what makes it triageable.
8
+ */
9
+
10
+ import { describe, expect, it } from "bun:test";
11
+ import {
12
+ bugIntakeReport,
13
+ bugIntakeSigningString,
14
+ computeBugFingerprint,
15
+ normalizeBugText,
16
+ redactBugReportFields,
17
+ redactBugText,
18
+ } from "./bug-intake.js";
19
+
20
+ describe("computeBugFingerprint", () => {
21
+ const auto = (whatHappened: string, suspectedTool = "build_page") =>
22
+ computeBugFingerprint({ source: "auto", suspectedTool, title: "x", whatHappened });
23
+
24
+ it("merges the same auto-captured error with different ids and values", async () => {
25
+ const a = await auto(
26
+ 'Page 7f3c2b9e-1d4a-4e8b-9c0f-2a1b3c4d5e6f not found (slug "pricing", 3 modules)',
27
+ );
28
+ const b = await auto(
29
+ 'Page 0a1b2c3d-4e5f-4a6b-8c7d-9e0f1a2b3c4d not found (slug "about-us", 12 modules)',
30
+ );
31
+ expect(a).toBe(b);
32
+ });
33
+
34
+ it("keeps different tools and different quoted field names apart", async () => {
35
+ expect(await auto("boom", "build_page")).not.toBe(await auto("boom", "edit_module"));
36
+ expect(await auto('Invalid input at "page.slug"')).not.toBe(
37
+ await auto('Invalid input at "page.title"'),
38
+ );
39
+ });
40
+
41
+ it("separates AI-filed from auto-captured reports and keys AI reports on the title", async () => {
42
+ const ai = (title: string) =>
43
+ computeBugFingerprint({
44
+ source: "ai",
45
+ suspectedTool: "screenshot_page",
46
+ title,
47
+ whatHappened: "prose",
48
+ });
49
+ expect(await ai("Selector crop ignored")).toBe(await ai("selector crop ignored"));
50
+ expect(await ai("Selector crop ignored")).not.toBe(
51
+ await computeBugFingerprint({
52
+ source: "auto",
53
+ suspectedTool: "screenshot_page",
54
+ title: "Selector crop ignored",
55
+ whatHappened: "Selector crop ignored",
56
+ }),
57
+ );
58
+ });
59
+
60
+ it("is a 64-char hex digest the report schema accepts", async () => {
61
+ expect(await auto("boom")).toMatch(/^[0-9a-f]{64}$/);
62
+ });
63
+ });
64
+
65
+ describe("normalizeBugText", () => {
66
+ it("strips urls, emails, numbers and paths", () => {
67
+ expect(
68
+ normalizeBugText(
69
+ "GET https://acme.com/a?b=1 for jo@acme.com failed after 1500ms at /srv/app/x.ts",
70
+ ),
71
+ ).toBe("get <url> for <email> failed after <n>ms at <path>");
72
+ });
73
+ });
74
+
75
+ describe("redactBugText", () => {
76
+ it("removes contact data, credentials and links", () => {
77
+ const out = redactBugText(
78
+ [
79
+ "Mail max.mustermann@example.de or call +49 30 1234567 / 030 1234567.",
80
+ "Key sk-ant-api03-abcdefghijklmnopqrstuvwxyz and ghp_abcdefghijklmnopqrstuvwxyz0123.",
81
+ "Authorization: Bearer abc.def.ghi-123456",
82
+ 'config {"password": "hunter2", "api_key": "k-123"}',
83
+ "Fetched https://kunde.example.de/preise?id=4 from 10.0.0.12",
84
+ "jwt eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.c2lnbmF0dXJl",
85
+ ].join("\n"),
86
+ );
87
+ for (const leaked of [
88
+ "max.mustermann",
89
+ "1234567",
90
+ "sk-ant",
91
+ "ghp_",
92
+ "abc.def.ghi",
93
+ "hunter2",
94
+ "k-123",
95
+ "kunde.example.de",
96
+ "10.0.0.12",
97
+ "eyJhbGci",
98
+ ]) {
99
+ expect(out).not.toContain(leaked);
100
+ }
101
+ });
102
+
103
+ it("keeps what makes a report triageable", () => {
104
+ const text =
105
+ "build_page failed in packages/admin-core/src/ai/tools/build-page-handler.ts on 2026-10-20 " +
106
+ "with set_page_module_content_many (version 0.10.55, 42 rows)";
107
+ expect(redactBugText(text)).toBe(text);
108
+ });
109
+ });
110
+
111
+ describe("redactBugReportFields", () => {
112
+ it("redacts every free-text field and caps evidence", () => {
113
+ const out = redactBugReportFields({
114
+ title: "Fails for a@b.de",
115
+ whatHappened: "see https://x.y/z",
116
+ expected: "ok",
117
+ evidence: "y".repeat(9000),
118
+ });
119
+ expect(out.title).toBe("Fails for [email]");
120
+ expect(out.whatHappened).toBe("see [url]");
121
+ expect(out.evidence?.length).toBe(4000);
122
+ });
123
+ });
124
+
125
+ describe("bugIntakeSigningString", () => {
126
+ it("binds method, path, timestamp and body", async () => {
127
+ const base = { method: "post", path: "/v1/reports", timestamp: "1", body: "{}" };
128
+ const s = await bugIntakeSigningString(base);
129
+ expect(s.startsWith("POST\n/v1/reports\n1\n")).toBe(true);
130
+ expect(await bugIntakeSigningString({ ...base, body: "{ }" })).not.toBe(s);
131
+ expect(await bugIntakeSigningString({ ...base, path: "/v1/installs" })).not.toBe(s);
132
+ });
133
+ });
134
+
135
+ describe("bugIntakeReport", () => {
136
+ it("rejects unknown fields so nothing unreviewed rides along", () => {
137
+ const parsed = bugIntakeReport.safeParse({
138
+ protocolVersion: 1,
139
+ reportId: "7f3c2b9e-1d4a-4e8b-9c0f-2a1b3c4d5e6f",
140
+ caeloVersion: "0.10.55",
141
+ fingerprint: "a".repeat(64),
142
+ source: "ai",
143
+ severity: "degraded",
144
+ blockedTask: false,
145
+ suspectedTool: null,
146
+ title: "t",
147
+ whatHappened: "w",
148
+ expected: "e",
149
+ evidence: null,
150
+ siteUrl: "https://leak.example",
151
+ });
152
+ expect(parsed.success).toBe(false);
153
+ });
154
+ });
@@ -0,0 +1,256 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+
3
+ /**
4
+ * The wire contract between a Caelo install and the Caelo-operated bug
5
+ * intake (epic #901). Both sides import this module, so the request shapes,
6
+ * the signature, the fingerprint and the redaction can never drift apart.
7
+ *
8
+ * Flow:
9
+ * 1. On opt-in the install generates an Ed25519 keypair and registers the
10
+ * public key under its `install_id` (`POST /v1/installs`). The intake
11
+ * pins the first key it sees for an id (trust on first use).
12
+ * 2. Every later request is signed: the install signs
13
+ * {@link bugIntakeSigningString} and sends the three
14
+ * {@link BUG_INTAKE_HEADERS}. The intake verifies against the pinned key
15
+ * and refuses timestamps outside {@link BUG_INTAKE_MAX_CLOCK_SKEW_MS}.
16
+ * 3. A report (`POST /v1/reports`) is answered with the status of the
17
+ * cluster it joined; `POST /v1/clusters/status` refreshes those
18
+ * statuses later, so the install learns "fixed in vX" without polling
19
+ * GitHub itself.
20
+ *
21
+ * Redaction runs on the install BEFORE a report is queued (the Owner's
22
+ * preview shows the redacted bytes) and again on the intake before anything
23
+ * reaches the public issue tracker.
24
+ */
25
+
26
+ import { z } from "zod";
27
+
28
+ /** Bumped on any breaking change to the request or response shapes below. */
29
+ export const BUG_INTAKE_PROTOCOL_VERSION = 1;
30
+
31
+ /** Header names carrying the install's identity and request signature. */
32
+ export const BUG_INTAKE_HEADERS = {
33
+ installId: "x-caelo-install-id",
34
+ timestamp: "x-caelo-timestamp",
35
+ signature: "x-caelo-signature",
36
+ } as const;
37
+
38
+ /** Requests signed further than this from the intake's clock are refused (replay window). */
39
+ export const BUG_INTAKE_MAX_CLOCK_SKEW_MS = 5 * 60 * 1000;
40
+
41
+ /** Hard caps on what a report may carry once redacted. */
42
+ export const BUG_INTAKE_LIMITS = {
43
+ title: 200,
44
+ whatHappened: 4000,
45
+ expected: 4000,
46
+ evidence: 4000,
47
+ } as const;
48
+
49
+ const fingerprintSchema = z.string().regex(/^[0-9a-f]{64}$/, "fingerprint must be 64 hex chars");
50
+
51
+ /** `POST /v1/installs` — registers the install's public key (unsigned; TOFU). */
52
+ export const bugIntakeRegisterRequest = z
53
+ .object({
54
+ protocolVersion: z.literal(BUG_INTAKE_PROTOCOL_VERSION),
55
+ installId: z.string().uuid(),
56
+ /** Raw 32-byte Ed25519 public key, base64. */
57
+ publicKey: z.string().regex(/^[A-Za-z0-9+/]{43}=$/, "publicKey must be a base64 Ed25519 key"),
58
+ caeloVersion: z.string().min(1).max(64),
59
+ })
60
+ .strict();
61
+ export type BugIntakeRegisterRequest = z.infer<typeof bugIntakeRegisterRequest>;
62
+
63
+ /** `POST /v1/reports` — one redacted bug report (signed). */
64
+ export const bugIntakeReport = z
65
+ .object({
66
+ protocolVersion: z.literal(BUG_INTAKE_PROTOCOL_VERSION),
67
+ /** The install's own `ai_bug_reports.id`; the intake dedups retries on it. */
68
+ reportId: z.string().uuid(),
69
+ caeloVersion: z.string().min(1).max(64),
70
+ fingerprint: fingerprintSchema,
71
+ source: z.enum(["ai", "auto"]),
72
+ severity: z.enum(["blocking", "degraded", "cosmetic"]),
73
+ blockedTask: z.boolean(),
74
+ suspectedTool: z.string().max(200).nullable(),
75
+ title: z.string().min(1).max(BUG_INTAKE_LIMITS.title),
76
+ whatHappened: z.string().min(1).max(BUG_INTAKE_LIMITS.whatHappened),
77
+ expected: z.string().min(1).max(BUG_INTAKE_LIMITS.expected),
78
+ evidence: z.string().max(BUG_INTAKE_LIMITS.evidence).nullable(),
79
+ })
80
+ .strict();
81
+ export type BugIntakeReport = z.infer<typeof bugIntakeReport>;
82
+
83
+ /**
84
+ * Upstream state of the defect a report belongs to.
85
+ * open — known, not fixed yet
86
+ * fixed — the issue was closed as fixed; `fixedInVersion` names the
87
+ * first release carrying the fix when it is known
88
+ * regression — fixed once, reported again from a version that has the fix
89
+ * wontfix — closed as not planned
90
+ */
91
+ export const bugClusterStatus = z.enum(["open", "fixed", "regression", "wontfix"]);
92
+ export type BugClusterStatus = z.infer<typeof bugClusterStatus>;
93
+
94
+ /**
95
+ * What the intake knows about one cluster (= one upstream issue). Also the
96
+ * `POST /v1/reports` response body: the cluster the report joined.
97
+ */
98
+ export const bugIntakeClusterInfo = z
99
+ .object({
100
+ clusterId: z.string().min(1).max(100),
101
+ status: bugClusterStatus,
102
+ /** Public issue URL; null while the cluster is below the issue threshold. */
103
+ issueUrl: z.string().url().nullable(),
104
+ fixedInVersion: z.string().max(64).nullable(),
105
+ })
106
+ .strict();
107
+ export type BugIntakeClusterInfo = z.infer<typeof bugIntakeClusterInfo>;
108
+
109
+ /** `POST /v1/clusters/status` — refresh the status of clusters this install reported into (signed). */
110
+ export const bugIntakeStatusRequest = z
111
+ .object({
112
+ protocolVersion: z.literal(BUG_INTAKE_PROTOCOL_VERSION),
113
+ clusterIds: z.array(z.string().min(1).max(100)).min(1).max(100),
114
+ })
115
+ .strict();
116
+ export type BugIntakeStatusRequest = z.infer<typeof bugIntakeStatusRequest>;
117
+
118
+ export const bugIntakeStatusResponse = z
119
+ .object({ clusters: z.array(bugIntakeClusterInfo) })
120
+ .strict();
121
+ export type BugIntakeStatusResponse = z.infer<typeof bugIntakeStatusResponse>;
122
+
123
+ /** Error body every non-2xx intake response carries. */
124
+ export const bugIntakeErrorResponse = z
125
+ .object({
126
+ error: z.string(),
127
+ /** true = retrying the same request later can succeed (rate limit, outage). */
128
+ retryable: z.boolean(),
129
+ })
130
+ .strict();
131
+ export type BugIntakeErrorResponse = z.infer<typeof bugIntakeErrorResponse>;
132
+
133
+ const encoder = new TextEncoder();
134
+
135
+ function bytesToHex(bytes: Uint8Array): string {
136
+ return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
137
+ }
138
+
139
+ async function sha256Hex(text: string): Promise<string> {
140
+ const digest = await crypto.subtle.digest("SHA-256", encoder.encode(text) as BufferSource);
141
+ return bytesToHex(new Uint8Array(digest));
142
+ }
143
+
144
+ /**
145
+ * The exact bytes an install signs for a request. Binding method, path and
146
+ * body hash means a captured signature cannot be replayed against another
147
+ * endpoint or with another body; the timestamp bounds replay in time.
148
+ */
149
+ export async function bugIntakeSigningString(args: {
150
+ method: string;
151
+ path: string;
152
+ timestamp: string;
153
+ body: string;
154
+ }): Promise<string> {
155
+ return `${args.method.toUpperCase()}\n${args.path}\n${args.timestamp}\n${await sha256Hex(args.body)}`;
156
+ }
157
+
158
+ /**
159
+ * Collapse the parts of an error text that differ between occurrences of the
160
+ * same defect (ids, numbers, quoted values, URLs, paths) so the same bug on
161
+ * two installs yields the same text.
162
+ */
163
+ export function normalizeBugText(text: string): string {
164
+ return (
165
+ text
166
+ .toLowerCase()
167
+ .replace(/https?:\/\/\S+/g, "<url>")
168
+ .replace(/[\w.+-]+@[\w-]+(\.[\w-]+)+/g, "<email>")
169
+ .replace(/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/g, "<id>")
170
+ .replace(/\b[0-9a-f]{12,}\b/g, "<id>")
171
+ // Quoted values (a slug, a title) vary per occurrence; a quoted field
172
+ // path or tool name (`page.slug`, `build_page`) tells two defects apart,
173
+ // so identifiers carrying `.`, `_` or `[` stay.
174
+ .replace(/(["'`])((?:(?!\1).){0,200})\1/g, (m, _q: string, inner: string) =>
175
+ /^[A-Za-z][\w.[\]-]{0,59}$/.test(inner) && /[._[]/.test(inner) ? m : "<v>",
176
+ )
177
+ .replace(/(?:\/[\w.-]+){2,}/g, "<path>")
178
+ .replace(/\d+(\.\d+)?/g, "<n>")
179
+ .replace(/\s+/g, " ")
180
+ .trim()
181
+ .slice(0, 300)
182
+ );
183
+ }
184
+
185
+ /**
186
+ * Deterministic identity of a defect, computed on the install. The Caelo
187
+ * version is deliberately NOT part of it, so one defect stays one cluster
188
+ * across releases (that is how a regression is recognised).
189
+ *
190
+ * Auto-captured reports carry the failing tool's error text as
191
+ * `whatHappened`, which is stable once normalised. AI-filed reports are free
192
+ * prose, so their fingerprint (tool + normalised title) only catches exact
193
+ * repeats; the intake clusters the rest semantically.
194
+ */
195
+ export async function computeBugFingerprint(args: {
196
+ source: "ai" | "auto";
197
+ suspectedTool: string | null;
198
+ title: string;
199
+ whatHappened: string;
200
+ }): Promise<string> {
201
+ const tool = (args.suspectedTool ?? "").trim().toLowerCase();
202
+ const signal = args.source === "auto" ? args.whatHappened : args.title;
203
+ return sha256Hex(`${args.source}\n${tool}\n${normalizeBugText(signal)}`);
204
+ }
205
+
206
+ /**
207
+ * Remove what must never leave an install inside a bug report: contact
208
+ * data, credentials, network addresses, and links (which name the site and
209
+ * its pages). Conservative by design: a report that lost a URL is still
210
+ * triageable, a leaked key is not recoverable.
211
+ */
212
+ export function redactBugText(text: string): string {
213
+ return (
214
+ text
215
+ // Credentials first, before the generic long-token rule eats their prefix.
216
+ .replace(/\beyJ[\w-]+\.[\w-]+\.[\w-]+/g, "[redacted-token]")
217
+ .replace(
218
+ /\b(?:sk|pk|rk)-[\w-]{16,}|\bgh[pousr]_[A-Za-z0-9]{20,}|\bAKIA[0-9A-Z]{16}\b|\bAIza[\w-]{30,}|\bxox[abpr]-[\w-]{10,}/g,
219
+ "[redacted-secret]",
220
+ )
221
+ .replace(/\b(Bearer|Basic)\s+[\w.~+/=-]{8,}/gi, "$1 [redacted-secret]")
222
+ .replace(
223
+ /\b(password|passwd|secret|token|api[_-]?key)(["']?\s*[:=]\s*["']?)[^\s"',}]+/gi,
224
+ "$1$2[redacted-secret]",
225
+ )
226
+ .replace(/https?:\/\/[^\s"'<>)]+/g, "[url]")
227
+ .replace(/[\w.+-]+@[\w-]+(\.[\w-]+)+/g, "[email]")
228
+ .replace(/\b(?:\d{1,3}\.){3}\d{1,3}\b/g, "[ip]")
229
+ // International (+49 …) or trunk-prefixed (030 …) numbers; plain digit
230
+ // runs and ISO dates are left alone.
231
+ .replace(/\+\d[\d\s()/-]{7,}\d|\b0\d{2,5}[\s/-]?\d{3,}[\d\s-]*\d/g, "[phone]")
232
+ // Long mixed-case alphanumerics are keys or encoded payloads; source
233
+ // paths and snake_case names (no uppercase+digit mix) survive.
234
+ .replace(
235
+ /\b(?=[A-Za-z0-9+/_-]*\d)(?=[A-Za-z0-9+/_-]*[A-Z])[A-Za-z0-9+/_-]{40,}={0,2}/g,
236
+ "[redacted-blob]",
237
+ )
238
+ );
239
+ }
240
+
241
+ /** Redact and cap one report's free-text fields (both sides run this). */
242
+ export function redactBugReportFields<
243
+ T extends { title: string; whatHappened: string; expected: string; evidence: string | null },
244
+ >(report: T): T {
245
+ const cap = (s: string, n: number) => (s.length > n ? `${s.slice(0, n - 1)}…` : s);
246
+ return {
247
+ ...report,
248
+ title: cap(redactBugText(report.title), BUG_INTAKE_LIMITS.title),
249
+ whatHappened: cap(redactBugText(report.whatHappened), BUG_INTAKE_LIMITS.whatHappened),
250
+ expected: cap(redactBugText(report.expected), BUG_INTAKE_LIMITS.expected),
251
+ evidence:
252
+ report.evidence === null
253
+ ? null
254
+ : cap(redactBugText(report.evidence), BUG_INTAKE_LIMITS.evidence),
255
+ };
256
+ }
package/src/content.ts CHANGED
@@ -609,14 +609,14 @@ export const pageUpdateSchema = z
609
609
  templateId: z.string().uuid().optional(),
610
610
  status: pageStatusSchema.optional(),
611
611
  /**
612
- * Only meaningful together with `slug`. A slug change rewrites the page's
613
- * public URL, so the op creates a 301 from the old path by default and
614
- * rewrites every nav-menu / link-list / module-body link that pointed at
615
- * it — all inside the same transaction as the slug write.
612
+ * Only meaningful together with `slug`. A slug change moves the page's
613
+ * public URL, so the op creates a 301 from the old path by default,
614
+ * inside the same transaction as the slug write. Links on the site are
615
+ * page references (epic #724) and follow the page without a rewrite;
616
+ * the 301 is for links from outside the site.
616
617
  *
617
- * `'skip'` suppresses ONLY the redirect (the link rewrites still run) and
618
- * is for the rare case where the operator explicitly says the old URL
619
- * should 404. Defaults to `'auto'`: silently dropping the 301 would strand
618
+ * `'skip'` suppresses the redirect and is for the rare case where the
619
+ * operator explicitly says the old URL should 404. Defaults to `'auto'`: silently dropping the 301 would strand
620
620
  * every inbound link, which is never a safe default (CLAUDE.md §2).
621
621
  */
622
622
  redirectFromOld: z.enum(["auto", "skip"]).optional(),